postext 1.34.1 → 1.35.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 (94) hide show
  1. package/dist/__tests__/composed/fixtures/page8.d.ts.map +1 -1
  2. package/dist/__tests__/composed/fixtures/page8.js +6 -3
  3. package/dist/__tests__/composed/fixtures/page8.js.map +1 -1
  4. package/dist/__tests__/composed/fixtures/timeline.d.ts +26 -0
  5. package/dist/__tests__/composed/fixtures/timeline.d.ts.map +1 -0
  6. package/dist/__tests__/composed/fixtures/timeline.js +153 -0
  7. package/dist/__tests__/composed/fixtures/timeline.js.map +1 -0
  8. package/dist/__tests__/composed/groups.test.d.ts +2 -0
  9. package/dist/__tests__/composed/groups.test.d.ts.map +1 -0
  10. package/dist/__tests__/composed/groups.test.js +361 -0
  11. package/dist/__tests__/composed/groups.test.js.map +1 -0
  12. package/dist/__tests__/composed/outsidePrint.test.d.ts +2 -0
  13. package/dist/__tests__/composed/outsidePrint.test.d.ts.map +1 -0
  14. package/dist/__tests__/composed/outsidePrint.test.js +116 -0
  15. package/dist/__tests__/composed/outsidePrint.test.js.map +1 -0
  16. package/dist/__tests__/composed/spread.test.d.ts +2 -0
  17. package/dist/__tests__/composed/spread.test.d.ts.map +1 -0
  18. package/dist/__tests__/composed/spread.test.js +475 -0
  19. package/dist/__tests__/composed/spread.test.js.map +1 -0
  20. package/dist/__tests__/composedPaint.test.js +10 -2
  21. package/dist/__tests__/composedPaint.test.js.map +1 -1
  22. package/dist/__tests__/exports.test.js +13 -0
  23. package/dist/__tests__/exports.test.js.map +1 -1
  24. package/dist/canvas-backend/composed.d.ts +5 -1
  25. package/dist/canvas-backend/composed.d.ts.map +1 -1
  26. package/dist/canvas-backend/composed.js +28 -1
  27. package/dist/canvas-backend/composed.js.map +1 -1
  28. package/dist/canvas-backend/index.js +2 -2
  29. package/dist/canvas-backend/index.js.map +1 -1
  30. package/dist/composed/groups.d.ts +95 -0
  31. package/dist/composed/groups.d.ts.map +1 -0
  32. package/dist/composed/groups.js +359 -0
  33. package/dist/composed/groups.js.map +1 -0
  34. package/dist/composed/labelText.d.ts +15 -0
  35. package/dist/composed/labelText.d.ts.map +1 -0
  36. package/dist/composed/labelText.js +16 -0
  37. package/dist/composed/labelText.js.map +1 -0
  38. package/dist/composed/paint.d.ts +25 -2
  39. package/dist/composed/paint.d.ts.map +1 -1
  40. package/dist/composed/paint.js +46 -1
  41. package/dist/composed/paint.js.map +1 -1
  42. package/dist/composed/reflowLog.d.ts +39 -0
  43. package/dist/composed/reflowLog.d.ts.map +1 -0
  44. package/dist/composed/reflowLog.js +123 -0
  45. package/dist/composed/reflowLog.js.map +1 -0
  46. package/dist/composed/slotChecks.d.ts +7 -2
  47. package/dist/composed/slotChecks.d.ts.map +1 -1
  48. package/dist/composed/slotChecks.js +21 -0
  49. package/dist/composed/slotChecks.js.map +1 -1
  50. package/dist/composed/spread.d.ts +106 -0
  51. package/dist/composed/spread.d.ts.map +1 -0
  52. package/dist/composed/spread.js +178 -0
  53. package/dist/composed/spread.js.map +1 -0
  54. package/dist/defaults/headerFooter.d.ts.map +1 -1
  55. package/dist/defaults/headerFooter.js +4 -0
  56. package/dist/defaults/headerFooter.js.map +1 -1
  57. package/dist/design/layout.d.ts +9 -0
  58. package/dist/design/layout.d.ts.map +1 -1
  59. package/dist/design/layout.js +1 -1
  60. package/dist/design/layout.js.map +1 -1
  61. package/dist/html-backend.d.ts.map +1 -1
  62. package/dist/html-backend.js +56 -26
  63. package/dist/html-backend.js.map +1 -1
  64. package/dist/index.d.ts +9 -2
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +9 -1
  67. package/dist/index.js.map +1 -1
  68. package/dist/pipeline/build.d.ts.map +1 -1
  69. package/dist/pipeline/build.js +76 -20
  70. package/dist/pipeline/build.js.map +1 -1
  71. package/dist/pipeline/buildMeasurement.d.ts +4 -1
  72. package/dist/pipeline/buildMeasurement.d.ts.map +1 -1
  73. package/dist/pipeline/buildMeasurement.js +19 -1
  74. package/dist/pipeline/buildMeasurement.js.map +1 -1
  75. package/dist/pipeline/calloutLayout.d.ts +3 -1
  76. package/dist/pipeline/calloutLayout.d.ts.map +1 -1
  77. package/dist/pipeline/calloutLayout.js +2 -1
  78. package/dist/pipeline/calloutLayout.js.map +1 -1
  79. package/dist/pipeline/composedLayout.d.ts +6 -1
  80. package/dist/pipeline/composedLayout.d.ts.map +1 -1
  81. package/dist/pipeline/composedLayout.js +223 -23
  82. package/dist/pipeline/composedLayout.js.map +1 -1
  83. package/dist/pipeline/contentWarnings.d.ts.map +1 -1
  84. package/dist/pipeline/contentWarnings.js +7 -1
  85. package/dist/pipeline/contentWarnings.js.map +1 -1
  86. package/dist/pipeline/headerFooter.d.ts.map +1 -1
  87. package/dist/pipeline/headerFooter.js +55 -7
  88. package/dist/pipeline/headerFooter.js.map +1 -1
  89. package/dist/types.d.ts +20 -0
  90. package/dist/types.d.ts.map +1 -1
  91. package/dist/vdt.d.ts +83 -5
  92. package/dist/vdt.d.ts.map +1 -1
  93. package/dist/vdt.js.map +1 -1
  94. package/package.json +1 -1
@@ -0,0 +1,359 @@
1
+ import { anchorTarget } from './templates';
2
+ import { nextFrameOf } from './geometry';
3
+ const EPS = 0.5;
4
+ const clamp = (v, min, max) => Math.max(min, Math.min(v, max));
5
+ /** Share `amount` among `items` in proportion to `weight`, none past its
6
+ * `room`; what an item cannot take goes to the others. Returns each one's
7
+ * share, in `items` order. */
8
+ export function shareOut(amount, items) {
9
+ const out = items.map(() => 0);
10
+ let left = amount;
11
+ let open = items.map((it, i) => (it.weight > 0 && it.room > EPS ? i : -1)).filter((i) => i >= 0);
12
+ while (left > EPS && open.length > 0) {
13
+ const total = open.reduce((s, i) => s + items[i].weight, 0);
14
+ let used = 0;
15
+ const still = [];
16
+ for (const i of open) {
17
+ const want = (left * items[i].weight) / total;
18
+ const room = items[i].room - out[i];
19
+ const take = Math.min(want, room);
20
+ out[i] += take;
21
+ used += take;
22
+ if (room - take > EPS)
23
+ still.push(i);
24
+ }
25
+ left -= used;
26
+ if (still.length === open.length)
27
+ break;
28
+ open = still;
29
+ }
30
+ return out;
31
+ }
32
+ /** Tiers of the frames that yield, lowest priority first. */
33
+ function yieldTiers(items) {
34
+ const by = new Map();
35
+ for (const it of items)
36
+ if (it.shrink > 0)
37
+ (by.get(it.priority) ?? by.set(it.priority, []).get(it.priority)).push(it);
38
+ return [...by.keys()].sort((a, b) => a - b).map((k) => by.get(k));
39
+ }
40
+ const overlapsX = (a, b) => a.x < b.x + b.width && b.x < a.x + a.width;
41
+ const overlapsY = (a, b) => a.y < b.y + b.height && b.y < a.y + a.height;
42
+ /** The boxes of a group's frames, by name. */
43
+ export function layoutGroup(input) {
44
+ return input.kind === 'row' ? layoutRow(input) : layoutStack(input);
45
+ }
46
+ function layoutStack(input) {
47
+ const { box, gap } = input;
48
+ const flow = input.items.filter((i) => !i.pin);
49
+ const pins = input.items.filter((i) => i.pin).map((i) => i.own);
50
+ const obstacles = [...(input.obstacles ?? []), ...pins];
51
+ const heights = flow.map((i) => clamp(i.want, i.min, i.max));
52
+ const place = (hs, lead = 0, extraGap = 0) => {
53
+ const out = [];
54
+ let cursor = box.y + lead;
55
+ flow.forEach((it, k) => {
56
+ let y = cursor;
57
+ const h = hs[k];
58
+ // Skip the band of every pinned frame the box would meet.
59
+ for (let moved = true, guard = 0; moved && guard < obstacles.length + 1; guard++) {
60
+ moved = false;
61
+ for (const o of obstacles) {
62
+ if (overlapsX(it.own, o) && overlapsY({ y: y - gap, height: h + 2 * gap }, o) && o.y + o.height + gap > y) {
63
+ y = o.y + o.height + gap;
64
+ moved = true;
65
+ }
66
+ }
67
+ }
68
+ out.push({ x: it.own.x, y, width: it.own.width, height: h });
69
+ cursor = y + h + gap + extraGap;
70
+ });
71
+ return out;
72
+ };
73
+ const bottomOf = (rs) => (rs.length > 0 ? Math.max(...rs.map((r) => r.y + r.height)) : box.y);
74
+ const foot = input.elastic ? Math.max(input.limit.y + input.limit.height, box.y) : box.y + box.height;
75
+ let rects = place(heights);
76
+ // Too tall: the frames that yield give space back, lowest priority
77
+ // first, in proportion to `shrink` within a priority, down to their
78
+ // minimum (their content may then run past their foot).
79
+ for (const tier of yieldTiers(flow.map((it, k) => ({ ...it, k })))) {
80
+ const excess = bottomOf(rects) - foot;
81
+ if (excess <= EPS)
82
+ break;
83
+ const shares = shareOut(excess, tier.map((t) => ({ weight: t.shrink, room: heights[t.k] - t.min })));
84
+ tier.forEach((t, j) => (heights[t.k] = heights[t.k] - shares[j]));
85
+ rects = place(heights);
86
+ }
87
+ if (bottomOf(rects) - foot > EPS) {
88
+ // Nothing more yields: no frame runs past the group's foot.
89
+ rects = rects.map((r) => ({ ...r, height: Math.max(0, Math.min(r.height, foot - r.y)) }));
90
+ return named(flow, rects, input.items);
91
+ }
92
+ if (input.elastic)
93
+ return named(flow, rects, input.items);
94
+ // Spare space: to the frames that grow, in proportion to `grow`, up to
95
+ // their maximum; what is left follows `align`.
96
+ const spare = foot - bottomOf(rects);
97
+ if (spare > EPS) {
98
+ const shares = shareOut(spare, flow.map((it, k) => ({ weight: it.grow, room: it.max - heights[k] })));
99
+ if (shares.some((s) => s > 0)) {
100
+ shares.forEach((s, k) => (heights[k] = heights[k] + s));
101
+ rects = place(heights);
102
+ }
103
+ const rest = foot - bottomOf(rects);
104
+ // Pinned frames hold their place: spare space then stays at the foot.
105
+ if (rest > EPS && obstacles.length === 0 && flow.length > 0) {
106
+ if (input.align === 'end')
107
+ rects = place(heights, rest);
108
+ else if (input.align === 'center')
109
+ rects = place(heights, rest / 2);
110
+ else if (input.align === 'space-between' && flow.length > 1)
111
+ rects = place(heights, 0, rest / (flow.length - 1));
112
+ }
113
+ }
114
+ return named(flow, rects, input.items);
115
+ }
116
+ function layoutRow(input) {
117
+ const { box, gap, mmPx } = input;
118
+ const flow = input.items.filter((i) => !i.pin);
119
+ const pins = input.items.filter((i) => i.pin).map((i) => i.own);
120
+ const obstacles = [...(input.obstacles ?? []), ...pins];
121
+ const widths = flow.map((i) => clamp(i.own.width, i.minWidth, i.maxWidth));
122
+ const declaredH = flow.map((i) => clamp(i.fixedHeight ? i.own.height : i.want, i.min, i.max));
123
+ /** The row's height: its box's, or the tallest frame's. */
124
+ const rowH = input.elastic ? Math.max(0, ...declaredH) : box.height;
125
+ /** The height a frame has in the row: a fixed one its own, the others
126
+ * the row's. */
127
+ const heightIn = (k, h) => (flow[k].fixedHeight ? Math.min(declaredH[k], h) : clamp(h, flow[k].min, flow[k].max));
128
+ const fits = (k, w) => !flow[k].need || flow[k].need(w) <= heightIn(k, rowH) + EPS;
129
+ const used = () => widths.reduce((s, w) => s + w, 0) + gap * Math.max(0, flow.length - 1);
130
+ let spare = input.elastic ? 0 : box.width - used();
131
+ if (input.negotiate) {
132
+ /** The narrowest width, in whole mm below `w`, at which frame `k`'s
133
+ * content still fits the row (`w` itself when no narrower one does). */
134
+ const narrowest = (k, w) => {
135
+ const floor = Math.max(flow[k].minWidth, mmPx);
136
+ let hi = Math.floor((w - floor) / mmPx); // millimetres it may give
137
+ if (hi <= 0 || !fits(k, w))
138
+ return w;
139
+ let lo = 0;
140
+ while (lo < hi) {
141
+ const mid = Math.ceil((lo + hi) / 2);
142
+ if (fits(k, w - mid * mmPx))
143
+ lo = mid;
144
+ else
145
+ hi = mid - 1;
146
+ }
147
+ return w - lo * mmPx;
148
+ };
149
+ flow.forEach((it, k) => {
150
+ if (fits(k, widths[k]))
151
+ return;
152
+ const rooms = flow.map((s, j) => (j === k || s.shrink <= 0 ? 0 : widths[j] - narrowest(j, widths[j])));
153
+ const free = Math.max(0, spare) + rooms.reduce((s, r) => s + r, 0);
154
+ const cap = Math.min(it.maxWidth, widths[k] + free);
155
+ const most = Math.floor((cap - widths[k] + EPS) / mmPx);
156
+ // The fewest whole millimetres that make the content fit, by
157
+ // bisection; none when even all the room does not.
158
+ if (most <= 0 || !fits(k, widths[k] + most * mmPx))
159
+ return;
160
+ let lo = 1;
161
+ let hi = most;
162
+ while (lo < hi) {
163
+ const mid = Math.floor((lo + hi) / 2);
164
+ if (fits(k, widths[k] + mid * mmPx))
165
+ hi = mid;
166
+ else
167
+ lo = mid + 1;
168
+ }
169
+ let need = lo * mmPx;
170
+ widths[k] += need;
171
+ const fromSpare = Math.min(Math.max(0, spare), need);
172
+ spare -= fromSpare;
173
+ need -= fromSpare;
174
+ // The rest from the siblings that yield, lowest priority first, in
175
+ // whole millimetres, in proportion to `shrink` within a priority.
176
+ for (const tier of yieldTiers(flow.map((s, j) => ({ ...s, j })).filter((s) => s.j !== k && rooms[s.j] > EPS))) {
177
+ if (need <= EPS)
178
+ break;
179
+ const shares = shareOut(need, tier.map((t) => ({ weight: t.shrink, room: rooms[t.j] })));
180
+ let mmLeft = Math.ceil(need / mmPx - 1e-6);
181
+ const whole = shares.map((s) => Math.min(Math.floor((s + EPS) / mmPx), mmLeft));
182
+ mmLeft -= whole.reduce((s, v) => s + v, 0);
183
+ // Rounding: the remaining millimetres from the last frames first.
184
+ for (let j = tier.length - 1; j >= 0 && mmLeft > 0; j--) {
185
+ const roomMm = Math.floor((rooms[tier[j].j] + EPS) / mmPx) - whole[j];
186
+ const add = Math.min(roomMm, mmLeft);
187
+ whole[j] += add;
188
+ mmLeft -= add;
189
+ }
190
+ tier.forEach((t, j) => {
191
+ widths[t.j] -= whole[j] * mmPx;
192
+ need -= whole[j] * mmPx;
193
+ });
194
+ }
195
+ // Whole millimetres may give a little more than the frame took.
196
+ if (need < 0)
197
+ spare -= need;
198
+ });
199
+ }
200
+ // Spare width: to the frames that grow, then `align`.
201
+ if (!input.elastic && spare > EPS) {
202
+ const shares = shareOut(spare, flow.map((it, k) => ({ weight: it.grow, room: it.maxWidth - widths[k] })));
203
+ shares.forEach((s, k) => (widths[k] += s));
204
+ spare -= shares.reduce((s, v) => s + v, 0);
205
+ }
206
+ // An elastic row grows as tall as its tallest frame now needs.
207
+ let height = rowH;
208
+ if (input.elastic && input.negotiate) {
209
+ const tallest = Math.max(rowH, ...flow.map((it, k) => (it.fixedHeight || !it.need ? 0 : clamp(it.need(widths[k]), it.min, it.max))));
210
+ height = Math.min(tallest, Math.max(rowH, input.limit.y + input.limit.height - box.y));
211
+ }
212
+ let lead = 0;
213
+ let extraGap = 0;
214
+ if (spare > EPS && obstacles.length === 0 && flow.length > 0) {
215
+ if (input.align === 'end')
216
+ lead = spare;
217
+ else if (input.align === 'center')
218
+ lead = spare / 2;
219
+ else if (input.align === 'space-between' && flow.length > 1)
220
+ extraGap = spare / (flow.length - 1);
221
+ }
222
+ const rects = [];
223
+ let cursor = box.x + lead;
224
+ flow.forEach((_it, k) => {
225
+ const w = widths[k];
226
+ const h = heightIn(k, height);
227
+ let x = cursor;
228
+ for (let moved = true, guard = 0; moved && guard < obstacles.length + 1; guard++) {
229
+ moved = false;
230
+ for (const o of obstacles) {
231
+ if (overlapsY({ y: box.y, height: h }, o) && overlapsX({ x: x - gap, width: w + 2 * gap }, o) && o.x + o.width + gap > x) {
232
+ x = o.x + o.width + gap;
233
+ moved = true;
234
+ }
235
+ }
236
+ }
237
+ rects.push({ x, y: box.y, width: w, height: h });
238
+ cursor = x + w + gap + extraGap;
239
+ });
240
+ return named(flow, rects, input.items);
241
+ }
242
+ function named(flow, rects, all) {
243
+ const out = new Map();
244
+ for (const it of all) {
245
+ const k = flow.indexOf(it);
246
+ out.set(it.name, k >= 0 ? rects[k] : { ...it.own });
247
+ }
248
+ return out;
249
+ }
250
+ /** The group each frame belongs to (its first, when validation found it
251
+ * in two). Groups with no frame are left out. */
252
+ export function groupOfFrames(template) {
253
+ const names = new Set(template.frames.map((f) => f.name));
254
+ const out = new Map();
255
+ for (const g of template.groups)
256
+ for (const m of g.frames)
257
+ if (names.has(m) && !out.has(m))
258
+ out.set(m, g);
259
+ return out;
260
+ }
261
+ /**
262
+ * The order a composed page is placed and filled in: P4's
263
+ * {@link frameOrder} rules (a frame after what it anchors to and after the
264
+ * frame its chain comes from, frames that push text first, else template
265
+ * order), with each group a single step. A group comes after everything
266
+ * its frames and its own box anchor to; anything anchored to the group or
267
+ * to one of its frames comes after it. Its frames are filled in group
268
+ * order. Loops (a group's frame anchored to a frame anchored back into the
269
+ * group) are broken where they close, as P4 breaks anchor loops.
270
+ */
271
+ export function composedOrder(template) {
272
+ const byName = new Map(template.frames.map((f) => [f.name, f]));
273
+ const groupOf = groupOfFrames(template);
274
+ const groups = new Map(template.groups.map((g) => [g.name, g]));
275
+ const prev = new Map();
276
+ for (const f of template.frames) {
277
+ const n = nextFrameOf(f);
278
+ if (n && byName.has(n) && !prev.has(n))
279
+ prev.set(n, f.name);
280
+ }
281
+ /** The step a frame or group name is placed in. */
282
+ const stepKey = (name) => {
283
+ if (byName.has(name)) {
284
+ const g = groupOf.get(name);
285
+ return g ? `g:${g.name}` : `f:${name}`;
286
+ }
287
+ const g = groups.get(name);
288
+ if (!g)
289
+ return undefined;
290
+ if (g.frames.some((m) => groupOf.get(m) === g))
291
+ return `g:${g.name}`;
292
+ return undefined;
293
+ };
294
+ /** Steps a group with no frame stands for: its own anchor. */
295
+ const targetKeys = (target, seen) => {
296
+ if (!target)
297
+ return [];
298
+ const k = stepKey(target);
299
+ if (k)
300
+ return [k];
301
+ const g = groups.get(target);
302
+ if (!g || seen.has(g.name))
303
+ return [];
304
+ seen.add(g.name);
305
+ if (g.grid)
306
+ return [];
307
+ if (g.placement)
308
+ return targetKeys(anchorTarget(g.placement), seen);
309
+ return g.frames.flatMap((m) => targetKeys(m, seen));
310
+ };
311
+ const frameDeps = (f) => {
312
+ const out = f.grid ? [] : targetKeys(anchorTarget(f.placement), new Set());
313
+ const p = prev.get(f.name);
314
+ if (p)
315
+ out.push(...targetKeys(p, new Set()));
316
+ return out;
317
+ };
318
+ const steps = new Map();
319
+ const deps = new Map();
320
+ for (const f of template.frames) {
321
+ const g = groupOf.get(f.name);
322
+ const key = g ? `g:${g.name}` : `f:${f.name}`;
323
+ if (!steps.has(key)) {
324
+ steps.set(key, g
325
+ ? { kind: 'group', group: g, frames: g.frames.filter((m) => groupOf.get(m) === g).map((m) => byName.get(m)) }
326
+ : { kind: 'frame', frame: f });
327
+ deps.set(key, []);
328
+ }
329
+ deps.get(key).push(...frameDeps(f).filter((d) => d !== key));
330
+ }
331
+ for (const [key, step] of steps) {
332
+ if (step.kind !== 'group' || step.group.grid)
333
+ continue;
334
+ deps.get(key).push(...targetKeys(anchorTarget(step.group.placement), new Set([step.group.name])).filter((d) => d !== key));
335
+ }
336
+ const out = [];
337
+ const state = new Map();
338
+ const visit = (key) => {
339
+ if (state.has(key))
340
+ return;
341
+ state.set(key, 'visiting');
342
+ for (const d of deps.get(key) ?? [])
343
+ if (steps.has(d))
344
+ visit(d);
345
+ state.set(key, 'done');
346
+ out.push(steps.get(key));
347
+ };
348
+ const keyOf = (f) => {
349
+ const g = groupOf.get(f.name);
350
+ return g ? `g:${g.name}` : `f:${f.name}`;
351
+ };
352
+ for (const f of template.frames)
353
+ if (f.exclude === 'push')
354
+ visit(keyOf(f));
355
+ for (const f of template.frames)
356
+ visit(keyOf(f));
357
+ return out;
358
+ }
359
+ //# sourceMappingURL=groups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groups.js","sourceRoot":"","sources":["../../src/composed/groups.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAoDzC,MAAM,GAAG,GAAG,GAAG,CAAC;AAEhB,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,GAAW,EAAE,GAAW,EAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAE/F;;+BAE+B;AAC/B,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,KAAkD;IACzF,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,IAAI,GAAG,MAAM,CAAC;IAClB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACjG,OAAO,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7D,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;YAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAClC,GAAG,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC;YAChB,IAAI,IAAI,IAAI,CAAC;YACb,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,IAAI,IAAI,CAAC;QACb,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YAAE,MAAM;QACxC,IAAI,GAAG,KAAK,CAAC;IACf,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6DAA6D;AAC7D,SAAS,UAAU,CAAiD,KAAmB;IACrF,MAAM,EAAE,GAAG,IAAI,GAAG,EAAe,CAAC;IAClC,KAAK,MAAM,EAAE,IAAI,KAAK;QAAE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvH,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,CAA+B,EAAE,CAAO,EAAW,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AACpH,MAAM,SAAS,GAAG,CAAC,CAAgC,EAAE,CAAO,EAAW,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAEvH,8CAA8C;AAC9C,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,OAAO,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,WAAW,CAAC,KAAuB;IAC1C,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,CAAC,EAAqB,EAAE,IAAI,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAU,EAAE;QACtE,MAAM,GAAG,GAAW,EAAE,CAAC;QACvB,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACrB,IAAI,CAAC,GAAG,MAAM,CAAC;YACf,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC;YACjB,0DAA0D;YAC1D,KAAK,IAAI,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;gBACjF,KAAK,GAAG,KAAK,CAAC;gBACd,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;oBAC1B,IAAI,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC;wBAC1G,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC;wBACzB,KAAK,GAAG,IAAI,CAAC;oBACf,CAAC;gBACH,CAAC;YACH,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YAC7D,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,EAAmB,EAAU,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvH,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;IACtG,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,mEAAmE;IACnE,oEAAoE;IACpE,wDAAwD;IACxD,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QACtC,IAAI,MAAM,IAAI,GAAG;YAAE,MAAM;QACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;QACpE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC;QACjC,4DAA4D;QAC5D,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1F,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,KAAK,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1D,uEAAuE;IACvE,+CAA+C;IAC/C,MAAM,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACvG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACzD,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpC,sEAAsE;QACtE,IAAI,IAAI,GAAG,GAAG,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5D,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK;gBAAE,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;iBACnD,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ;gBAAE,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;iBAC/D,IAAI,KAAK,CAAC,KAAK,KAAK,eAAe,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACnH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,SAAS,CAAC,KAAuB;IACxC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACjC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9F,2DAA2D;IAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;IACpE;qBACiB;IACjB,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9I,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,CAAS,EAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAE,CAAC,IAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;IAC/G,MAAM,IAAI,GAAG,GAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClG,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC;IACnD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB;iFACyE;QACzE,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;YACjD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAChD,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,0BAA0B;YACnE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;YACrC,IAAI,EAAE,GAAG,CAAC,CAAC;YACX,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC;gBACf,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;oBAAE,EAAE,GAAG,GAAG,CAAC;;oBACjC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACpB,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QACvB,CAAC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACrB,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC;gBAAE,OAAO;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;YACzG,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACnE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YACzD,6DAA6D;YAC7D,mDAAmD;YACnD,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAE,GAAG,IAAI,GAAG,IAAI,CAAC;gBAAE,OAAO;YAC5D,IAAI,EAAE,GAAG,CAAC,CAAC;YACX,IAAI,EAAE,GAAG,IAAI,CAAC;YACd,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC;gBACf,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAE,GAAG,GAAG,GAAG,IAAI,CAAC;oBAAE,EAAE,GAAG,GAAG,CAAC;;oBAC1C,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;YACrB,MAAM,CAAC,CAAC,CAAE,IAAI,IAAI,CAAC;YACnB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;YACrD,KAAK,IAAI,SAAS,CAAC;YACnB,IAAI,IAAI,SAAS,CAAC;YAClB,mEAAmE;YACnE,kEAAkE;YAClE,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC/G,IAAI,IAAI,IAAI,GAAG;oBAAE,MAAM;gBACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC1F,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;gBAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChF,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3C,kEAAkE;gBAClE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBACxD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;oBACzE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBACrC,KAAK,CAAC,CAAC,CAAE,IAAI,GAAG,CAAC;oBACjB,MAAM,IAAI,GAAG,CAAC;gBAChB,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBACpB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAE,IAAI,KAAK,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC;oBACjC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC;gBAC3B,CAAC,CAAC,CAAC;YACL,CAAC;YACD,gEAAgE;YAChE,IAAI,IAAI,GAAG,CAAC;gBAAE,KAAK,IAAI,IAAI,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;IACD,sDAAsD;IACtD,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3G,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5C,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,+DAA+D;IAC/D,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,KAAK,GAAG,GAAG,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7D,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK;YAAE,IAAI,GAAG,KAAK,CAAC;aACnC,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ;YAAE,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;aAC/C,IAAI,KAAK,CAAC,KAAK,KAAK,eAAe,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,QAAQ,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACtB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACrB,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG,MAAM,CAAC;QACf,KAAK,IAAI,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACjF,KAAK,GAAG,KAAK,CAAC;YACd,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC;oBACzH,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC;oBACxB,KAAK,GAAG,IAAI,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,KAAK,CAAC,IAA0B,EAAE,KAAsB,EAAE,GAAyB;IAC1F,MAAM,GAAG,GAAG,IAAI,GAAG,EAAgB,CAAC;IACpC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAWD;kDACkD;AAClD,MAAM,UAAU,aAAa,CAAC,QAAyD;IACrF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,IAAI,GAAG,EAA8B,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM;QAAE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM;YAAE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1G,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,QAAyD;IACrF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IACD,mDAAmD;IACnD,MAAM,OAAO,GAAG,CAAC,IAAY,EAAsB,EAAE;QACnD,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5B,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACzC,CAAC;QACD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QACzB,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IACF,8DAA8D;IAC9D,MAAM,UAAU,GAAG,CAAC,MAA0B,EAAE,IAAiB,EAAY,EAAE;QAC7E,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,SAAS;YAAE,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;QACpE,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,CAAC,CAAgB,EAAY,EAAE;QAC/C,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3E,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7C,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC9C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAoB,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBACd,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,EAAE;gBAC9G,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,SAAS;QACvD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC9H,CAAC;IACD,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,GAAG,EAA+B,CAAC;IACrD,MAAM,KAAK,GAAG,CAAC,GAAW,EAAQ,EAAE;QAClC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC3B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;YAAE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAChE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC;IAC5B,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,CAAgB,EAAU,EAAE;QACzC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM;QAAE,IAAI,CAAC,CAAC,OAAO,KAAK,MAAM;YAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM;QAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * A figure's labels as text (#862): what the outputs that do not draw a
3
+ * `:::figure`'s `::label` lines on its picture read instead. The tagged
4
+ * PDF's `Alt` and the HTML viewer's `alt` give the picture's alternative
5
+ * text followed by its labels; the reflowable EPUB lists them after the
6
+ * picture.
7
+ */
8
+ import type { VDTFigureLabel } from '../vdt';
9
+ /** A figure's alternative text followed by its labels, in the order
10
+ * written: `Alt (Label, Label)`; the full-width brackets and the
11
+ * enumeration comma for Chinese and Japanese labels, the Arabic comma for
12
+ * Arabic ones. The labels alone when there is no alternative text; the
13
+ * text as it is when there are no labels. */
14
+ export declare function altWithLabels(alt: string, labels: readonly Pick<VDTFigureLabel, 'text'>[] | undefined): string;
15
+ //# sourceMappingURL=labelText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labelText.d.ts","sourceRoot":"","sources":["../../src/composed/labelText.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAE7C;;;;8CAI8C;AAC9C,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,GAAG,SAAS,GAAG,MAAM,CAO9G"}
@@ -0,0 +1,16 @@
1
+ /** A figure's alternative text followed by its labels, in the order
2
+ * written: `Alt (Label, Label)`; the full-width brackets and the
3
+ * enumeration comma for Chinese and Japanese labels, the Arabic comma for
4
+ * Arabic ones. The labels alone when there is no alternative text; the
5
+ * text as it is when there are no labels. */
6
+ export function altWithLabels(alt, labels) {
7
+ const texts = (labels ?? []).map((l) => l.text.replace(/\s+/g, ' ').trim()).filter(Boolean);
8
+ if (texts.length === 0)
9
+ return alt;
10
+ const all = texts.join('');
11
+ if (/[぀-ヿ㐀-鿿]/.test(all))
12
+ return alt ? `${alt}(${texts.join('、')})` : texts.join('、');
13
+ const list = texts.join(/[؀-ۿ]/.test(all) ? '، ' : ', ');
14
+ return alt ? `${alt} (${list})` : list;
15
+ }
16
+ //# sourceMappingURL=labelText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labelText.js","sourceRoot":"","sources":["../../src/composed/labelText.ts"],"names":[],"mappings":"AASA;;;;8CAI8C;AAC9C,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,MAA2D;IACpG,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5F,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACnC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3B,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzD,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC"}
@@ -2,14 +2,19 @@
2
2
  * How the backends paint a composed page (#855, DESIGN §4): the frames in
3
3
  * layer order with the template's decoration at layer 0, each frame's
4
4
  * blocks turned by its matrix and clipped to its box when its content
5
- * overflows. Shared by canvas, PDF and HTML so the three agree.
5
+ * overflows; on a page of a spread (#861) all of it clipped to the page's
6
+ * share of the sheet. Shared by canvas, PDF and HTML so the three agree.
6
7
  */
7
8
  import type { VDTBlock, VDTComposedPage, VDTFrame, VDTPage } from '../vdt';
8
9
  /** One step of a composed page's paint order. */
9
- export type ComposedPaintItem = {
10
+ export type ComposedPaintItem =
11
+ /** `facing`: the half of a frame read on the facing page of a spread
12
+ * (`VDTFrame.facingBlocks`, #861): painted, never read. */
13
+ {
10
14
  kind: 'frame';
11
15
  frame: VDTFrame;
12
16
  blocks: VDTBlock[];
17
+ facing: boolean;
13
18
  } | {
14
19
  kind: 'decoration';
15
20
  };
@@ -22,6 +27,24 @@ export declare function composedFrameBlockIds(page: VDTPage): Set<string>;
22
27
  * one layer in template order. Each frame comes with its blocks, in
23
28
  * `page.floats` order (its box first). */
24
29
  export declare function composedPaintOrder(page: VDTPage): ComposedPaintItem[];
30
+ /** The items of a paint order (`composedPaintOrder`) in reading order
31
+ * (#862): the decoration first, then the frames by the Markdown order of
32
+ * their content (the lowest content index of their blocks; a frame with
33
+ * no content keeps its place after those that have some). The pieces of
34
+ * one story (`next`) follow each other, as their content does. What the
35
+ * HTML writes in this order and paints by `z-index`; the tagged PDF reads
36
+ * the same order (`readFloat`'s `readAt`). */
37
+ export declare function composedReadingOrder(paint: readonly ComposedPaintItem[]): ComposedPaintItem[];
38
+ /** On a page of a spread (#861): the box the page's frames and decoration
39
+ * are painted clipped to (`VDTComposedPage.sheetClip`), so what crosses
40
+ * the spine shows its own half on each page; undefined on any other
41
+ * page. */
42
+ export declare function composedSheetClip(page: Pick<VDTPage, 'composed'>): {
43
+ x: number;
44
+ y: number;
45
+ width: number;
46
+ height: number;
47
+ } | undefined;
25
48
  /** The affine matrix `[a, b, c, d, e, f]` (canvas `transform` order,
26
49
  * y down) that turns a frame `rotate` degrees clockwise about the centre
27
50
  * of its box; undefined for an upright frame. */
@@ -1 +1 @@
1
- {"version":3,"file":"paint.d.ts","sourceRoot":"","sources":["../../src/composed/paint.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAE3E,iDAAiD;AACjD,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,QAAQ,EAAE,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC;AAE3B;;qDAEqD;AACrD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAIhE;AAED;;;2CAG2C;AAC3C,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,iBAAiB,EAAE,CAwBrE;AAED;;kDAEkD;AAClD,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CASlI;AAED;wBACwB;AACxB,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,GAAG,OAAO,CAEvE;AAED,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAa7H;AAED,0DAA0D;AAC1D,wBAAgB,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAEpG"}
1
+ {"version":3,"file":"paint.d.ts","sourceRoot":"","sources":["../../src/composed/paint.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAE3E,iDAAiD;AACjD,MAAM,MAAM,iBAAiB;AAC3B;4DAC4D;AAC1D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC;AAE3B;;qDAEqD;AACrD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAIhE;AAED;;;2CAG2C;AAC3C,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,iBAAiB,EAAE,CA4BrE;AAED;;;;;;+CAM+C;AAC/C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,iBAAiB,EAAE,GAAG,iBAAiB,EAAE,CAoB7F;AAED;;;YAGY;AACZ,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAEtI;AAED;;kDAEkD;AAClD,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CASlI;AAED;wBACwB;AACxB,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,GAAG,OAAO,CAEvE;AAED,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAa7H;AAED,0DAA0D;AAC1D,wBAAgB,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAEpG"}
@@ -29,18 +29,63 @@ export function composedPaintOrder(page) {
29
29
  out.push({ kind: 'decoration' });
30
30
  decorated = true;
31
31
  }
32
+ if (frame.facingBlocks) {
33
+ out.push({ kind: 'frame', frame, blocks: frame.facingBlocks, facing: true });
34
+ continue;
35
+ }
32
36
  const blocks = [];
33
37
  for (const id of frame.blockIds) {
34
38
  const b = byId.get(id);
35
39
  if (b)
36
40
  blocks.push(b);
37
41
  }
38
- out.push({ kind: 'frame', frame, blocks });
42
+ out.push({ kind: 'frame', frame, blocks, facing: false });
39
43
  }
40
44
  if (!decorated)
41
45
  out.push({ kind: 'decoration' });
42
46
  return out;
43
47
  }
48
+ /** The items of a paint order (`composedPaintOrder`) in reading order
49
+ * (#862): the decoration first, then the frames by the Markdown order of
50
+ * their content (the lowest content index of their blocks; a frame with
51
+ * no content keeps its place after those that have some). The pieces of
52
+ * one story (`next`) follow each other, as their content does. What the
53
+ * HTML writes in this order and paints by `z-index`; the tagged PDF reads
54
+ * the same order (`readFloat`'s `readAt`). */
55
+ export function composedReadingOrder(paint) {
56
+ const byId = new Map();
57
+ for (const item of paint)
58
+ if (item.kind === 'frame')
59
+ byId.set(item.frame.id, item.frame);
60
+ /** How many frames a chain passes through before this one: a piece of a
61
+ * paragraph cut at a frame's foot has the head's content index. */
62
+ const depth = (frame) => {
63
+ let n = 0;
64
+ for (let f = frame.continuedFrom ? byId.get(frame.continuedFrom) : undefined; f && n < byId.size; f = f.continuedFrom ? byId.get(f.continuedFrom) : undefined)
65
+ n++;
66
+ return n;
67
+ };
68
+ const firstIndex = (item) => {
69
+ if (item.kind === 'decoration')
70
+ return -Infinity;
71
+ let min = Infinity;
72
+ for (const b of item.blocks)
73
+ if (b.contentIndex !== undefined && b.contentIndex < min)
74
+ min = b.contentIndex;
75
+ return min + depth(item.frame) / 1000;
76
+ };
77
+ return paint
78
+ .map((item, order) => ({ item, order, at: firstIndex(item) }))
79
+ .sort((a, b) => (a.at === b.at ? a.order - b.order : a.at - b.at))
80
+ .map((e) => e.item);
81
+ }
82
+ /** On a page of a spread (#861): the box the page's frames and decoration
83
+ * are painted clipped to (`VDTComposedPage.sheetClip`), so what crosses
84
+ * the spine shows its own half on each page; undefined on any other
85
+ * page. */
86
+ export function composedSheetClip(page) {
87
+ return page.composed?.sheetClip;
88
+ }
44
89
  /** The affine matrix `[a, b, c, d, e, f]` (canvas `transform` order,
45
90
  * y down) that turns a frame `rotate` degrees clockwise about the centre
46
91
  * of its box; undefined for an upright frame. */
@@ -1 +1 @@
1
- {"version":3,"file":"paint.js","sourceRoot":"","sources":["../../src/composed/paint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paint.js","sourceRoot":"","sources":["../../src/composed/paint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * The reflow log of a composed page (#856, DESIGN §5.5): what the layout
3
+ * changed from the template's own drawing so the page's content fits —
4
+ * «dinero grew 8 mm; gasto moved down 8 mm». Each frame's box as the
5
+ * template declares it (its fixed size, or its `minHeight` when its height
6
+ * follows its content) is compared with the box the layout gave it.
7
+ */
8
+ import type { ReflowEvent, VDTDocument } from '../vdt';
9
+ import type { Rect } from './geometry';
10
+ /** A frame's declared and final boxes, and the names whose change moves
11
+ * it (what it anchors to, the frames before it in its group), nearest
12
+ * first. */
13
+ export interface FrameMotion {
14
+ name: string;
15
+ declared: Rect;
16
+ final: Rect;
17
+ deps: readonly string[];
18
+ }
19
+ /** The events of a page's frames, in `motions` order (template order):
20
+ * per frame its size first (height, then width), then its moves. */
21
+ export declare function reflowEvents(motions: readonly FrameMotion[], pxPerMm: number): ReflowEvent[];
22
+ /** One event in words, in English (the command line's language):
23
+ * «dinero grew 8 mm», «gasto moved down 8 mm», «foto narrowed 4 mm». */
24
+ export declare function describeReflowEvent(e: ReflowEvent): string;
25
+ /** A composed page's log, for the command line and the Sandbox. */
26
+ export interface ComposedPageReflow {
27
+ /** Book-absolute page index (`VDTPage.index`). */
28
+ pageIndex: number;
29
+ /** The page's printed number. */
30
+ pageLabel: string;
31
+ template: string;
32
+ fenceIndex: number;
33
+ events: ReflowEvent[];
34
+ /** The events in words ({@link describeReflowEvent}). */
35
+ lines: string[];
36
+ }
37
+ /** The reflow log of every composed page of `doc` that has one. */
38
+ export declare function composedReflowLog(doc: Pick<VDTDocument, 'pages'>): ComposedPageReflow[];
39
+ //# sourceMappingURL=reflowLog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflowLog.d.ts","sourceRoot":"","sources":["../../src/composed/reflowLog.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC;;aAEa;AACb,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,IAAI,CAAC;IACf,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB;AASD;qEACqE;AACrE,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CA0D5F;AAID;yEACyE;AACzE,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CA0B1D;AAED,mEAAmE;AACnE,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,yDAAyD;IACzD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,mEAAmE;AACnE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,kBAAkB,EAAE,CAevF"}