postext 1.37.0 → 1.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/dist/__tests__/comics/frames.test.d.ts +2 -0
  2. package/dist/__tests__/comics/frames.test.d.ts.map +1 -0
  3. package/dist/__tests__/comics/frames.test.js +251 -0
  4. package/dist/__tests__/comics/frames.test.js.map +1 -0
  5. package/dist/__tests__/composed/continuationRules.test.d.ts +2 -0
  6. package/dist/__tests__/composed/continuationRules.test.d.ts.map +1 -0
  7. package/dist/__tests__/composed/continuationRules.test.js +389 -0
  8. package/dist/__tests__/composed/continuationRules.test.js.map +1 -0
  9. package/dist/__tests__/composed/coverImages.test.d.ts +2 -0
  10. package/dist/__tests__/composed/coverImages.test.d.ts.map +1 -0
  11. package/dist/__tests__/composed/coverImages.test.js +75 -0
  12. package/dist/__tests__/composed/coverImages.test.js.map +1 -0
  13. package/dist/__tests__/composed/decorationSize.test.d.ts +2 -0
  14. package/dist/__tests__/composed/decorationSize.test.d.ts.map +1 -0
  15. package/dist/__tests__/composed/decorationSize.test.js +79 -0
  16. package/dist/__tests__/composed/decorationSize.test.js.map +1 -0
  17. package/dist/__tests__/composed/emptyFrames.test.d.ts +2 -0
  18. package/dist/__tests__/composed/emptyFrames.test.d.ts.map +1 -0
  19. package/dist/__tests__/composed/emptyFrames.test.js +129 -0
  20. package/dist/__tests__/composed/emptyFrames.test.js.map +1 -0
  21. package/dist/__tests__/composed/fit.test.js +10 -4
  22. package/dist/__tests__/composed/fit.test.js.map +1 -1
  23. package/dist/__tests__/composed/groups.test.js +20 -0
  24. package/dist/__tests__/composed/groups.test.js.map +1 -1
  25. package/dist/__tests__/composed/ruledFrames.test.d.ts +2 -0
  26. package/dist/__tests__/composed/ruledFrames.test.d.ts.map +1 -0
  27. package/dist/__tests__/composed/ruledFrames.test.js +93 -0
  28. package/dist/__tests__/composed/ruledFrames.test.js.map +1 -0
  29. package/dist/__tests__/composed/spread.test.js +82 -0
  30. package/dist/__tests__/composed/spread.test.js.map +1 -1
  31. package/dist/__tests__/exports.test.js +12 -0
  32. package/dist/__tests__/exports.test.js.map +1 -1
  33. package/dist/__tests__/migrate/labelsOnPictures.test.d.ts +2 -0
  34. package/dist/__tests__/migrate/labelsOnPictures.test.d.ts.map +1 -0
  35. package/dist/__tests__/migrate/labelsOnPictures.test.js +114 -0
  36. package/dist/__tests__/migrate/labelsOnPictures.test.js.map +1 -0
  37. package/dist/__tests__/paragraphDropCap.test.js +38 -0
  38. package/dist/__tests__/paragraphDropCap.test.js.map +1 -1
  39. package/dist/__tests__/resourceTypePartial.test.d.ts +2 -0
  40. package/dist/__tests__/resourceTypePartial.test.d.ts.map +1 -0
  41. package/dist/__tests__/resourceTypePartial.test.js +60 -0
  42. package/dist/__tests__/resourceTypePartial.test.js.map +1 -0
  43. package/dist/canvas-backend/composed.d.ts +3 -0
  44. package/dist/canvas-backend/composed.d.ts.map +1 -1
  45. package/dist/canvas-backend/composed.js +47 -26
  46. package/dist/canvas-backend/composed.js.map +1 -1
  47. package/dist/canvas-backend/headerFooter.d.ts.map +1 -1
  48. package/dist/canvas-backend/headerFooter.js +13 -0
  49. package/dist/canvas-backend/headerFooter.js.map +1 -1
  50. package/dist/canvas-backend/index.d.ts.map +1 -1
  51. package/dist/canvas-backend/index.js +16 -5
  52. package/dist/canvas-backend/index.js.map +1 -1
  53. package/dist/comics/frames.d.ts +82 -0
  54. package/dist/comics/frames.d.ts.map +1 -0
  55. package/dist/comics/frames.js +182 -0
  56. package/dist/comics/frames.js.map +1 -0
  57. package/dist/comics/index.d.ts +4 -1
  58. package/dist/comics/index.d.ts.map +1 -1
  59. package/dist/comics/index.js +3 -1
  60. package/dist/comics/index.js.map +1 -1
  61. package/dist/comics/layoutPage.d.ts +9 -0
  62. package/dist/comics/layoutPage.d.ts.map +1 -1
  63. package/dist/comics/layoutPage.js +53 -68
  64. package/dist/comics/layoutPage.js.map +1 -1
  65. package/dist/comics/page.d.ts.map +1 -1
  66. package/dist/comics/page.js +10 -1
  67. package/dist/comics/page.js.map +1 -1
  68. package/dist/comics/sourceMap.d.ts +60 -0
  69. package/dist/comics/sourceMap.d.ts.map +1 -0
  70. package/dist/comics/sourceMap.js +166 -0
  71. package/dist/comics/sourceMap.js.map +1 -0
  72. package/dist/comics/spread.d.ts.map +1 -1
  73. package/dist/comics/spread.js +6 -0
  74. package/dist/comics/spread.js.map +1 -1
  75. package/dist/comics/textPanels.d.ts +113 -0
  76. package/dist/comics/textPanels.d.ts.map +1 -0
  77. package/dist/comics/textPanels.js +327 -0
  78. package/dist/comics/textPanels.js.map +1 -0
  79. package/dist/comics/transform.d.ts +6 -2
  80. package/dist/comics/transform.d.ts.map +1 -1
  81. package/dist/comics/transform.js +14 -1
  82. package/dist/comics/transform.js.map +1 -1
  83. package/dist/comics/types.d.ts +10 -0
  84. package/dist/comics/types.d.ts.map +1 -1
  85. package/dist/composed/continuation.d.ts +55 -5
  86. package/dist/composed/continuation.d.ts.map +1 -1
  87. package/dist/composed/continuation.js +118 -16
  88. package/dist/composed/continuation.js.map +1 -1
  89. package/dist/composed/groups.d.ts +3 -0
  90. package/dist/composed/groups.d.ts.map +1 -1
  91. package/dist/composed/groups.js +34 -4
  92. package/dist/composed/groups.js.map +1 -1
  93. package/dist/composed/paint.d.ts +20 -1
  94. package/dist/composed/paint.d.ts.map +1 -1
  95. package/dist/composed/paint.js +40 -0
  96. package/dist/composed/paint.js.map +1 -1
  97. package/dist/composed/rules.d.ts +31 -0
  98. package/dist/composed/rules.d.ts.map +1 -0
  99. package/dist/composed/rules.js +45 -0
  100. package/dist/composed/rules.js.map +1 -0
  101. package/dist/composed/slotChecks.d.ts +2 -1
  102. package/dist/composed/slotChecks.d.ts.map +1 -1
  103. package/dist/composed/slotChecks.js +56 -2
  104. package/dist/composed/slotChecks.js.map +1 -1
  105. package/dist/composed/sourceMap.d.ts.map +1 -1
  106. package/dist/composed/sourceMap.js +15 -1
  107. package/dist/composed/sourceMap.js.map +1 -1
  108. package/dist/composed/spread.d.ts +20 -5
  109. package/dist/composed/spread.d.ts.map +1 -1
  110. package/dist/composed/spread.js +51 -26
  111. package/dist/composed/spread.js.map +1 -1
  112. package/dist/composed/templates.d.ts +11 -0
  113. package/dist/composed/templates.d.ts.map +1 -1
  114. package/dist/composed/templates.js +51 -2
  115. package/dist/composed/templates.js.map +1 -1
  116. package/dist/composed/types.d.ts +43 -3
  117. package/dist/composed/types.d.ts.map +1 -1
  118. package/dist/composed/validate.d.ts.map +1 -1
  119. package/dist/composed/validate.js +5 -3
  120. package/dist/composed/validate.js.map +1 -1
  121. package/dist/configWarnings.d.ts.map +1 -1
  122. package/dist/configWarnings.js +11 -1
  123. package/dist/configWarnings.js.map +1 -1
  124. package/dist/defaults/headerFooter.d.ts.map +1 -1
  125. package/dist/defaults/headerFooter.js +4 -0
  126. package/dist/defaults/headerFooter.js.map +1 -1
  127. package/dist/defaults/resourceTypes.d.ts +15 -0
  128. package/dist/defaults/resourceTypes.d.ts.map +1 -1
  129. package/dist/defaults/resourceTypes.js +39 -1
  130. package/dist/defaults/resourceTypes.js.map +1 -1
  131. package/dist/design/layout.d.ts +7 -0
  132. package/dist/design/layout.d.ts.map +1 -1
  133. package/dist/design/layout.js +109 -16
  134. package/dist/design/layout.js.map +1 -1
  135. package/dist/html-backend.d.ts.map +1 -1
  136. package/dist/html-backend.js +43 -5
  137. package/dist/html-backend.js.map +1 -1
  138. package/dist/htmlComic.d.ts +3 -0
  139. package/dist/htmlComic.d.ts.map +1 -1
  140. package/dist/htmlComic.js +2 -0
  141. package/dist/htmlComic.js.map +1 -1
  142. package/dist/index.d.ts +5 -5
  143. package/dist/index.d.ts.map +1 -1
  144. package/dist/index.js +2 -2
  145. package/dist/index.js.map +1 -1
  146. package/dist/migrate/pageDesign.d.ts +35 -2
  147. package/dist/migrate/pageDesign.d.ts.map +1 -1
  148. package/dist/migrate/pageDesign.js +134 -7
  149. package/dist/migrate/pageDesign.js.map +1 -1
  150. package/dist/migrate/textToMarkdown.d.ts +33 -1
  151. package/dist/migrate/textToMarkdown.d.ts.map +1 -1
  152. package/dist/migrate/textToMarkdown.js +206 -9
  153. package/dist/migrate/textToMarkdown.js.map +1 -1
  154. package/dist/parse/blockParser.js +26 -0
  155. package/dist/parse/blockParser.js.map +1 -1
  156. package/dist/pipeline/build.d.ts.map +1 -1
  157. package/dist/pipeline/build.js +219 -40
  158. package/dist/pipeline/build.js.map +1 -1
  159. package/dist/pipeline/calloutLayout.d.ts +5 -0
  160. package/dist/pipeline/calloutLayout.d.ts.map +1 -1
  161. package/dist/pipeline/calloutLayout.js +70 -0
  162. package/dist/pipeline/calloutLayout.js.map +1 -1
  163. package/dist/pipeline/composedLayout.d.ts.map +1 -1
  164. package/dist/pipeline/composedLayout.js +246 -49
  165. package/dist/pipeline/composedLayout.js.map +1 -1
  166. package/dist/pipeline/contentWarnings.d.ts.map +1 -1
  167. package/dist/pipeline/contentWarnings.js +21 -1
  168. package/dist/pipeline/contentWarnings.js.map +1 -1
  169. package/dist/pipeline/dropCap.d.ts +5 -0
  170. package/dist/pipeline/dropCap.d.ts.map +1 -1
  171. package/dist/pipeline/dropCap.js +23 -2
  172. package/dist/pipeline/dropCap.js.map +1 -1
  173. package/dist/pipeline/frameLayout.d.ts +17 -2
  174. package/dist/pipeline/frameLayout.d.ts.map +1 -1
  175. package/dist/pipeline/frameLayout.js +47 -2
  176. package/dist/pipeline/frameLayout.js.map +1 -1
  177. package/dist/pipeline/headerFooter.d.ts.map +1 -1
  178. package/dist/pipeline/headerFooter.js +41 -2
  179. package/dist/pipeline/headerFooter.js.map +1 -1
  180. package/dist/pipeline/measureContentBlock.d.ts +1 -1
  181. package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
  182. package/dist/pipeline/measureContentBlock.js +4 -1
  183. package/dist/pipeline/measureContentBlock.js.map +1 -1
  184. package/dist/pipeline/resourceNumbering.d.ts.map +1 -1
  185. package/dist/pipeline/resourceNumbering.js +13 -4
  186. package/dist/pipeline/resourceNumbering.js.map +1 -1
  187. package/dist/preflight.js +5 -1
  188. package/dist/preflight.js.map +1 -1
  189. package/dist/types.d.ts +32 -2
  190. package/dist/types.d.ts.map +1 -1
  191. package/dist/vdt.d.ts +90 -2
  192. package/dist/vdt.d.ts.map +1 -1
  193. package/dist/vdt.js.map +1 -1
  194. package/package.json +1 -1
@@ -0,0 +1,327 @@
1
+ /**
2
+ * Text panels (`::panel{text}`, #885, DESIGN §7): a panel whose body is
3
+ * Markdown, poured into the frame the split generated for it the way a
4
+ * composed page pours a slot into a frame.
5
+ *
6
+ * The block parser reads the body as any text and sets its blocks right
7
+ * after the comic's directive. Before layout, {@link wrapComicTextPanels}
8
+ * puts each panel's blocks in one frameless story box (the composed pages'
9
+ * {@link FRAME_STYLE_ID} box); the comic page's layout then sets each story
10
+ * in its panel's frame with the composed pages' frame layout
11
+ * (`layoutComposedPage`, one frame filling the panel's text area), so a
12
+ * text panel has real paragraphs: selectable, searchable, read in order by
13
+ * tagged PDF and EPUB. Where a frame cannot take the text (a strip, a
14
+ * spread, a page whose flow is turned or mirrored), the blocks stay
15
+ * unwrapped and are set in the flow after the comic, never lost
16
+ * (`comicPanelFrame`).
17
+ */
18
+ import { pageIsMirrored, pageIsVertical } from '../vdt';
19
+ import { FRAME_ATTR, FRAME_STYLE_ID } from '../composed/wrap';
20
+ import { normalizeFrame } from '../composed/templates';
21
+ import { composedStories, layoutComposedPage } from '../pipeline/composedLayout';
22
+ import { resolvedDirection } from '../pipeline/config';
23
+ import { dimensionToPx } from '../units';
24
+ import { resolvedComics } from '../defaults/comics';
25
+ import { isComicSpread } from './spread';
26
+ import { comicBoxStyle, isComicTextPanel } from './frames';
27
+ import { comicPanelSources, setComicLayoutWarnings, comicPageLayoutWarnings } from './layoutPage';
28
+ /** `containerAttrs` key of a text panel's story box: the panel's index in
29
+ * its page's source (`ComicPanelSource.index`). */
30
+ export const COMIC_PANEL_ATTR = '__comicPanel';
31
+ /** Container ids of the text panels' story boxes: past any id the parser
32
+ * hands out and clear of the other synthetic boxes'. */
33
+ const COMIC_TEXT_CONTAINER_BASE = 1_900_000_000;
34
+ /** The story key of a text panel (its box's `FRAME_ATTR`). */
35
+ export const comicTextStoryKey = (panelIndex) => `comic:${panelIndex}`;
36
+ /** Whether text panels can be set in their frames in a document: frames
37
+ * take text on pages whose flow is the sheet (horizontal, left to right).
38
+ * On a vertical or right-to-left document the text is set in the flow
39
+ * after the comic. */
40
+ export function comicTextPanelsSupported(resolved) {
41
+ return resolved.layout.writingMode !== 'vertical-rl' && resolvedDirection(resolved) !== 'rtl';
42
+ }
43
+ /** Why a text panel's Markdown is set in the flow instead of its frame:
44
+ * the comic is a strip or a spread, or the document's flow is turned or
45
+ * mirrored. Undefined when its frame takes it. */
46
+ export function comicTextPanelFallback(source, supported) {
47
+ if (source.kind === 'strip')
48
+ return 'strip';
49
+ if (isComicSpread(source))
50
+ return 'spread';
51
+ if (!supported)
52
+ return 'flow';
53
+ return undefined;
54
+ }
55
+ /**
56
+ * `blocks` with the Markdown of every text panel of a comic page set in
57
+ * its frame regrouped in a story box of its own (see the module comment).
58
+ * Only comics outside any container and whose frame takes text
59
+ * ({@link comicTextPanelFallback}). The same array comes back when there
60
+ * is nothing to wrap.
61
+ */
62
+ export function wrapComicTextPanels(blocks, supported) {
63
+ let out;
64
+ let next = 0;
65
+ let depth = 0;
66
+ for (let i = 0; i < blocks.length; i++) {
67
+ const b = blocks[i];
68
+ if (b.type === 'containerStart')
69
+ depth++;
70
+ else if (b.type === 'containerEnd')
71
+ depth = Math.max(0, depth - 1);
72
+ const comic = b.type === 'directive' && depth === 0 ? b.comic : undefined;
73
+ const texts = comic && comicTextPanelFallback(comic, supported) === undefined ? comic.panels.filter((p) => p.text && p.text.end > p.text.start && isComicTextPanel(p)) : [];
74
+ if (texts.length === 0) {
75
+ out?.push(b);
76
+ continue;
77
+ }
78
+ out ??= blocks.slice(0, i);
79
+ out.push(b);
80
+ // The panels' blocks follow the directive, panel after panel.
81
+ let k = i + 1;
82
+ for (const panel of texts) {
83
+ const range = panel.text;
84
+ const start = k;
85
+ while (k < blocks.length && blocks[k].sourceStart >= range.start && blocks[k].sourceEnd <= range.end)
86
+ k++;
87
+ if (k === start)
88
+ continue;
89
+ const first = blocks[start];
90
+ const last = blocks[k - 1];
91
+ const id = COMIC_TEXT_CONTAINER_BASE + next++;
92
+ out.push({
93
+ type: 'containerStart',
94
+ text: '',
95
+ spans: [],
96
+ containerName: 'callout',
97
+ containerAttrs: { type: FRAME_STYLE_ID, placement: 'here', span: 'column', [FRAME_ATTR]: comicTextStoryKey(panel.index), [COMIC_PANEL_ATTR]: String(panel.index) },
98
+ containerId: id,
99
+ sourceStart: first.sourceStart,
100
+ sourceEnd: first.sourceStart,
101
+ sourceMap: [],
102
+ });
103
+ for (let j = start; j < k; j++)
104
+ out.push(blocks[j]);
105
+ out.push({ type: 'containerEnd', text: '', spans: [], containerName: 'callout', containerId: id, sourceStart: last.sourceEnd, sourceEnd: last.sourceEnd, sourceMap: [] });
106
+ }
107
+ i = k - 1;
108
+ }
109
+ return out ? { blocks: out, wrapped: next > 0 } : { blocks: blocks, wrapped: false };
110
+ }
111
+ /** The text panels' stories of every comic page of the pass, by the index
112
+ * of its directive: the markers they span (the directive to the closing
113
+ * marker of the last story) and the stories by key
114
+ * ({@link comicTextStoryKey}). */
115
+ export function planComicTextPanels(blocks, plans) {
116
+ const out = new Map();
117
+ for (let i = 0; i < blocks.length; i++) {
118
+ const b = blocks[i];
119
+ if (b.type !== 'directive' || !b.comic)
120
+ continue;
121
+ let end = i;
122
+ for (let plan = plans.get(end + 1); plan && plan.attrs[COMIC_PANEL_ATTR] !== undefined; plan = plans.get(end + 1))
123
+ end = plan.endIdx;
124
+ if (end === i)
125
+ continue;
126
+ const stories = composedStories(i, end + 1, plans);
127
+ const list = [...stories.values()];
128
+ out.set(i, {
129
+ startIdx: i,
130
+ endIdx: end,
131
+ stories,
132
+ storyAt: (idx) => list.find((s) => idx > s.startIdx && idx < s.plan.endIdx),
133
+ });
134
+ i = end;
135
+ }
136
+ return out;
137
+ }
138
+ const px = (v) => ({ value: v, unit: 'px' });
139
+ /**
140
+ * Set the text panels of a laid-out comic page in their frames: each text
141
+ * frame of `comic.frames` gets the blocks its story was set in
142
+ * (`blockIds`), its overflow and its scale; a frame its text does not fit
143
+ * clips it (`comicPanelFrame`, reason `textOverflow`). The frame's text
144
+ * area is the panel's box inside its border and the lettering's inset;
145
+ * with a `box` style, the panel's box (the style's padding keeps the text
146
+ * off its edges).
147
+ */
148
+ export function layoutComicTextFrames(input) {
149
+ const { comic, page, plan, resolved, dpi } = input;
150
+ const blocks = [];
151
+ const laid = new Set();
152
+ if (!comic.frames || pageIsVertical(page) || pageIsMirrored(page))
153
+ return { blocks, laid };
154
+ const sources = comicPanelSources(comic);
155
+ const insetPx = dimensionToPx(resolvedComics(resolved).lettering.inset, dpi);
156
+ const warnings = [];
157
+ const fence = Number(/^cm(\d+)$/.exec(comic.id ?? '')?.[1] ?? 0);
158
+ comic.frames.forEach((frame, fi) => {
159
+ const panelIndex = frame.panel ?? fi;
160
+ const src = sources[panelIndex];
161
+ if (!src || !isComicTextPanel(src))
162
+ return;
163
+ const key = comicTextStoryKey(src.index);
164
+ const story = plan.stories.get(key);
165
+ if (!story)
166
+ return;
167
+ const panel = comic.panels[panelIndex];
168
+ const box = comicBoxStyle(resolved, src.attrs.box);
169
+ const edge = box ? 0 : panel.border.width + insetPx;
170
+ // A slanted cell: the widest box with straight sides inside its outline,
171
+ // so that no line runs past the slant.
172
+ const r = frame.polygon ? innerBox(frame.polygon, panel.bbox) : panel.bbox;
173
+ const area = { x: r.x + edge, y: r.y + edge, width: Math.max(1, r.width - 2 * edge), height: Math.max(1, r.height - 2 * edge) };
174
+ const valign = src.attrs.valign?.trim().toLowerCase();
175
+ const padding = box ? undefined : { top: px(0), right: px(0), bottom: px(0), left: px(0) };
176
+ const resolvedFrame = normalizeFrame({
177
+ name: frame.name,
178
+ width: 'fill',
179
+ height: 'fill',
180
+ ...(box ? { style: box.id } : {}),
181
+ ...(valign === 'middle' || valign === 'bottom' ? { verticalAlign: valign } : {}),
182
+ ...(padding ? { padding } : {}),
183
+ });
184
+ const template = {
185
+ id: comic.id ?? 'comic',
186
+ area: 'content',
187
+ frames: [resolvedFrame],
188
+ groups: [],
189
+ decoration: { elements: [] },
190
+ decorationPaths: [],
191
+ spread: false,
192
+ gutter: px(0),
193
+ role: 'comic',
194
+ chain: [comic.id ?? 'comic'],
195
+ configPath: '',
196
+ };
197
+ const out = layoutComposedPage({
198
+ pass: input.pass,
199
+ page,
200
+ template,
201
+ fence: { template: template.id, spread: false, attrs: {}, attrSources: {}, fenceIndex: fence, colons: 4 },
202
+ startIdx: plan.startIdx,
203
+ endIdx: plan.endIdx,
204
+ stories: new Map([[frame.name, story]]),
205
+ styleOf: input.styleOf,
206
+ areas: { area, page: area, bleed: area },
207
+ dpi,
208
+ emPx: input.emPx,
209
+ bodyOffset: input.bodyOffset,
210
+ mirrored: input.mirrored,
211
+ pushGapPx: input.pushGapPx,
212
+ ...(input.locale ? { locale: input.locale } : {}),
213
+ });
214
+ const set = out.composed.frames[0];
215
+ if (!set || !out.laid.has(frame.name))
216
+ return;
217
+ laid.add(key);
218
+ // The composed pages' ids (`cp<n>:…`) as the comic's (`cm<n>:…`).
219
+ const from = `cp${fence}:`;
220
+ const to = `cm${fence}:`;
221
+ const rename = (id) => (id.startsWith(from) ? to + id.slice(from.length) : id);
222
+ for (const b of out.blocks) {
223
+ b.id = rename(b.id);
224
+ if (b.callout)
225
+ b.callout.childIds = b.callout.childIds.map(rename);
226
+ blocks.push(b);
227
+ }
228
+ comic.frames[fi] = {
229
+ ...frame,
230
+ blockIds: set.blockIds.map(rename),
231
+ overflowPx: set.overflowPx,
232
+ scale: set.scale,
233
+ ...(set.imageScale !== undefined ? { imageScale: set.imageScale } : {}),
234
+ ...(box ? { styleId: box.id } : {}),
235
+ };
236
+ if (set.overflowPx > 0.5) {
237
+ warnings.push({
238
+ kind: 'comicPanelFrame',
239
+ reason: 'textOverflow',
240
+ panel: src.index,
241
+ overflowMm: Math.round((set.overflowPx / dpi) * 254) / 10,
242
+ sourceStart: src.text.start + input.bodyOffset,
243
+ sourceEnd: src.text.end + input.bodyOffset,
244
+ pageIndex: page.index,
245
+ });
246
+ }
247
+ });
248
+ if (warnings.length > 0)
249
+ setComicLayoutWarnings(comic, [...comicPageLayoutWarnings(comic), ...warnings]);
250
+ return { blocks, laid };
251
+ }
252
+ /** Where a horizontal (`axis: 'y'`, at height `at`) or vertical line
253
+ * crosses a convex polygon: the interval it lies in, or undefined. */
254
+ function crossing(poly, axis, at) {
255
+ let lo = Infinity;
256
+ let hi = -Infinity;
257
+ for (let i = 0; i < poly.length; i++) {
258
+ const a = poly[i];
259
+ const b = poly[(i + 1) % poly.length];
260
+ const [a0, a1, b0, b1] = axis === 'y' ? [a.y, a.x, b.y, b.x] : [a.x, a.y, b.x, b.y];
261
+ if ((a0 - at) * (b0 - at) > 0 || a0 === b0) {
262
+ if (a0 === at) {
263
+ lo = Math.min(lo, a1);
264
+ hi = Math.max(hi, a1);
265
+ }
266
+ continue;
267
+ }
268
+ const v = a1 + ((at - a0) / (b0 - a0)) * (b1 - a1);
269
+ lo = Math.min(lo, v);
270
+ hi = Math.max(hi, v);
271
+ }
272
+ return lo <= hi ? [lo, hi] : undefined;
273
+ }
274
+ /** The box with straight sides inside a convex polygon (a cell cut by
275
+ * slanted lines), so that text keeps off the slants: the larger of the box
276
+ * that keeps the whole height and the width every row of it shares (then
277
+ * the height every column of that width shares), and the box that keeps
278
+ * the whole width first. Falls back to `box` when both are degenerate. */
279
+ export function innerBox(poly, box) {
280
+ const N = 16;
281
+ /** The interval every line across `axis` shares, sampled over [a, b]. */
282
+ const shared = (axis, a, b, lo, hi) => {
283
+ for (let i = 0; i <= N && hi > lo; i++) {
284
+ const c = crossing(poly, axis, a + 0.001 + ((b - a - 0.002) * i) / N);
285
+ if (!c)
286
+ continue;
287
+ lo = Math.max(lo, c[0]);
288
+ hi = Math.min(hi, c[1]);
289
+ }
290
+ return [lo, hi];
291
+ };
292
+ const X0 = box.x;
293
+ const X1 = box.x + box.width;
294
+ const Y0 = box.y;
295
+ const Y1 = box.y + box.height;
296
+ // Rows first: the width all rows share, then the height its columns share.
297
+ const [ax0, ax1] = shared('y', Y0, Y1, X0, X1);
298
+ const [ay0, ay1] = ax1 - ax0 > 1 ? shared('x', ax0, ax1, Y0, Y1) : [0, 0];
299
+ // Columns first.
300
+ const [by0, by1] = shared('x', X0, X1, Y0, Y1);
301
+ const [bx0, bx1] = by1 - by0 > 1 ? shared('y', by0, by1, X0, X1) : [0, 0];
302
+ const area = (w, h) => (w > 1 && h > 1 ? w * h : 0);
303
+ const a = area(ax1 - ax0, ay1 - ay0);
304
+ const b = area(bx1 - bx0, by1 - by0);
305
+ if (a === 0 && b === 0)
306
+ return { ...box };
307
+ return a >= b ? { x: ax0, y: ay0, width: ax1 - ax0, height: ay1 - ay0 } : { x: bx0, y: by0, width: bx1 - bx0, height: by1 - by0 };
308
+ }
309
+ /** The source warnings of a comic's frames (#885): a `box` that names no
310
+ * callout style, and text panels whose Markdown is set in the flow
311
+ * ({@link comicTextPanelFallback}). Offsets as in `source`. */
312
+ export function comicFrameSourceWarnings(source, calloutStyles, supported) {
313
+ const out = [];
314
+ const fallback = comicTextPanelFallback(source, supported);
315
+ for (const panel of source.panels) {
316
+ const box = panel.attrs.box?.trim();
317
+ if (box && !calloutStyles.has(box)) {
318
+ const r = panel.attrSources.box ?? { start: panel.lineStart, end: panel.lineEnd };
319
+ out.push({ kind: 'comicPanelFrame', reason: 'unknownBox', panel: panel.index, style: box, sourceStart: r.start, sourceEnd: r.end });
320
+ }
321
+ if (fallback && isComicTextPanel(panel) && panel.text && panel.text.end > panel.text.start) {
322
+ out.push({ kind: 'comicPanelFrame', reason: fallback, panel: panel.index, sourceStart: panel.lineStart, sourceEnd: panel.lineEnd });
323
+ }
324
+ }
325
+ return out;
326
+ }
327
+ //# sourceMappingURL=textPanels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textPanels.js","sourceRoot":"","sources":["../../src/comics/textPanels.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * across both sheets, onto the sheet of their page. Pure: every function
5
5
  * returns a new comic and leaves its input as it was.
6
6
  */
7
- import type { VDTBlock, VDTComicBalloon, VDTComicPage, VDTComicPanel, VDTComicSplitter, VDTPage } from '../vdt';
7
+ import type { VDTBlock, VDTComicBalloon, VDTComicPage, VDTComicPanel, VDTComicSplitter, VDTFrame, VDTPage } from '../vdt';
8
8
  /**
9
9
  * An SVG path moved by `(dx, dy)`: the absolute commands' coordinates are
10
10
  * shifted; relative commands are kept, except a relative `m` that opens
@@ -18,7 +18,11 @@ export declare function translateComicPanel(panel: VDTComicPanel, dx: number, dy
18
18
  export declare function translateComicSplitter(s: VDTComicSplitter, dx: number, dy: number): VDTComicSplitter;
19
19
  /** A balloon moved by `(dx, dy)`: its outline, box, tail tip and lines. */
20
20
  export declare function translateComicBalloon(b: VDTComicBalloon, dx: number, dy: number): VDTComicBalloon;
21
- /** A comic moved by `(dx, dy)`: frame, panels, split lines and balloons. */
21
+ /** A frame the split generated (#885) moved by `(dx, dy)`: its box and
22
+ * outline (a text frame's blocks are the page's, where they stand). */
23
+ export declare function translateComicFrame(f: VDTFrame, dx: number, dy: number): VDTFrame;
24
+ /** A comic moved by `(dx, dy)`: frame, panels, split lines, balloons and
25
+ * the frames the split generated. */
22
26
  export declare function translateComicPage(comic: VDTComicPage, dx: number, dy: number): VDTComicPage;
23
27
  /**
24
28
  * The comic of a strip block (`VDTBlock.comic`, #566) on the sheet of
@@ -1 +1 @@
1
- {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/comics/transform.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAe,QAAQ,EAAe,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAsB,OAAO,EAAY,MAAM,QAAQ,CAAC;AA0BxK;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CA8B1E;AASD,mCAAmC;AACnC,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,aAAa,CAS/F;AAED;8CAC8C;AAC9C,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,gBAAgB,CAEpG;AAYD,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,eAAe,CAQjG;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,YAAY,CAQ5F;AAKD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,YAAY,GAAG,SAAS,CAShI;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC,GAAG,YAAY,EAAE,CAYvG"}
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/comics/transform.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAe,QAAQ,EAAe,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAsB,QAAQ,EAAE,OAAO,EAAY,MAAM,QAAQ,CAAC;AA0BlL;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CA8B1E;AASD,mCAAmC;AACnC,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,aAAa,CAS/F;AAED;8CAC8C;AAC9C,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,gBAAgB,CAEpG;AAYD,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,eAAe,CAQjG;AAED;wEACwE;AACxE,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,QAAQ,CAQjF;AAED;sCACsC;AACtC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,YAAY,CAS5F;AAKD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,YAAY,GAAG,SAAS,CAShI;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC,GAAG,YAAY,EAAE,CAYvG"}
@@ -104,7 +104,19 @@ export function translateComicBalloon(b, dx, dy) {
104
104
  ...(b.tailTip ? { tailTip: movePoint(b.tailTip, dx, dy) } : {}),
105
105
  };
106
106
  }
107
- /** A comic moved by `(dx, dy)`: frame, panels, split lines and balloons. */
107
+ /** A frame the split generated (#885) moved by `(dx, dy)`: its box and
108
+ * outline (a text frame's blocks are the page's, where they stand). */
109
+ export function translateComicFrame(f, dx, dy) {
110
+ return {
111
+ ...f,
112
+ rect: moveRect(f.rect, dx, dy),
113
+ ...(f.declaredRect ? { declaredRect: moveRect(f.declaredRect, dx, dy) } : {}),
114
+ ...(f.polygon ? { polygon: f.polygon.map((p) => movePoint(p, dx, dy)) } : {}),
115
+ blockIds: [...f.blockIds],
116
+ };
117
+ }
118
+ /** A comic moved by `(dx, dy)`: frame, panels, split lines, balloons and
119
+ * the frames the split generated. */
108
120
  export function translateComicPage(comic, dx, dy) {
109
121
  return {
110
122
  ...comic,
@@ -112,6 +124,7 @@ export function translateComicPage(comic, dx, dy) {
112
124
  panels: comic.panels.map((p) => translateComicPanel(p, dx, dy)),
113
125
  splitters: comic.splitters.map((s) => translateComicSplitter(s, dx, dy)),
114
126
  balloons: comic.balloons.map((b) => translateComicBalloon(b, dx, dy)),
127
+ ...(comic.frames ? { frames: comic.frames.map((f) => translateComicFrame(f, dx, dy)) } : {}),
115
128
  };
116
129
  }
117
130
  /** Strip comics moved onto the sheet, kept while their block stays put. */
@@ -1 +1 @@
1
- {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../src/comics/transform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../src/comics/transform.ts"],"names":[],"mappings":"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"}
@@ -119,6 +119,12 @@ export interface ComicPanelSource {
119
119
  * in a page that has none. */
120
120
  implicit?: true;
121
121
  items: ComicScriptItem[];
122
+ /** A text panel (`::panel{text}`, #885): the range of its body, the
123
+ * Markdown poured into its frame (absolute; from the line after the
124
+ * `::panel` line to the end of its last line with text). Its lines are
125
+ * no script: `items` is empty. Absent for a panel lettered from a
126
+ * script. */
127
+ text?: ComicSourceRange;
122
128
  }
123
129
  /** A comic page or strip as written. */
124
130
  export interface ComicPageSource {
@@ -144,6 +150,10 @@ export interface ComicPageSource {
144
150
  stray: ComicSourceRange[];
145
151
  /** The closing `:::` was found (an unclosed page runs to the end). */
146
152
  closed: boolean;
153
+ /** Ordinal of the fence among the comic fences of its text (`:::page`
154
+ * and `:::strip` counted together, from 0), set by the block parser: the
155
+ * stable ids of the comic's frames and balloons (#885). */
156
+ fenceIndex?: number;
147
157
  sourceStart: number;
148
158
  sourceEnd: number;
149
159
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/comics/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/comics/types.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@
22
22
  */
23
23
  import type { CalloutCut } from '../pipeline/frameLayout';
24
24
  import type { PlannedCallout } from '../pipeline/calloutLayout';
25
- import type { ResolvedPageTemplate } from './types';
25
+ import type { ResolvedFrame, ResolvedPageTemplate } from './types';
26
26
  /** How many pages, one after another, the content of one composed page may
27
27
  * go on to: the generation of added pages after which what still does not
28
28
  * fit is cut (`frameContinuationLimit`). */
@@ -38,7 +38,12 @@ export interface ComposedContinuation {
38
38
  * id (`VDTFrame.id`). */
39
39
  frame: string;
40
40
  fromFrameId: string;
41
- /** Where it goes on: `'next-page'` or `'template:<id>'`. */
41
+ /** The first frame of the sending frame's chain on its page (the frame
42
+ * itself when no frame comes before it): a story threaded through
43
+ * frames goes on in the frame its chain starts in (#919). */
44
+ head: string;
45
+ /** Where it goes on: `'next-page'`, `'template:<id>'` or `'page:<id>'`
46
+ * (its `{attr.x}` read from the fence). */
42
47
  rule: string;
43
48
  /** The template of the page it comes from (`'next-page'` reads its
44
49
  * `overflowTemplate`). */
@@ -56,6 +61,12 @@ export interface ComposedContinuation {
56
61
  /** The frame of the fence's own page that first sent it on: the pieces
57
62
  * on later pages are `cp<fence>:<slot>~<k>`. */
58
63
  slot: string;
64
+ /** Empty frames that follow the sending frame in its stack and go with
65
+ * the rest to the added page (#912): on a template laid again for what
66
+ * goes on, they keep their size after the frame that takes it. */
67
+ trailing?: readonly string[];
68
+ /** The sending frame's `overflow.fromMark` (#917). */
69
+ fromMark?: string;
59
70
  }
60
71
  /** What a page added by continuation receives. */
61
72
  export interface ComposedContinuationInput {
@@ -71,6 +82,10 @@ export interface ComposedContinuationInput {
71
82
  /** The last page continuation may add: what still does not fit stays
72
83
  * here, cut at the frame's foot. */
73
84
  last: boolean;
85
+ /** A later page fence a story jumps to (#917, `'page:<id>'`): the page
86
+ * is the fence's own, with its own content and frame ids; the frames
87
+ * that take the story go on to pages added after it (`'next-page'`). */
88
+ jump?: true;
74
89
  }
75
90
  /** `continueIn` sends content to another page. */
76
91
  export declare function continuesOffPage(continueIn: string | undefined): boolean;
@@ -83,8 +98,10 @@ export declare function continuationTarget(c: Pick<ComposedContinuation, 'rule'
83
98
  /**
84
99
  * The frames of `template` that take `list`, in order: each goes on in
85
100
  * the frame of its name, else the flow frame, else the first frame no
86
- * other continuation took. Those that find no free frame are `left` for
87
- * another page.
101
+ * other continuation took. A story threaded through a chain of frames
102
+ * goes on where its chain starts (#919): in the frame of the chain head's
103
+ * name, else the flow frame, else the frame of the sending frame's name.
104
+ * Those that find no free frame are `left` for another page.
88
105
  */
89
106
  export declare function assignReceivers(template: Pick<ResolvedPageTemplate, 'frames'>, list: readonly ComposedContinuation[]): {
90
107
  receivers: Map<string, ComposedContinuation>;
@@ -95,8 +112,41 @@ export declare function assignReceivers(template: Pick<ResolvedPageTemplate, 'fr
95
112
  * their chains go on in on that page) continue as the rule that brought
96
113
  * the content, unless they send content off the page themselves; on the
97
114
  * last page allowed nothing goes on; with `collapse`, every other frame
98
- * takes no room and leaves its group.
115
+ * takes no room and leaves its group, but the empty frames that came
116
+ * along with the content (`trailing`, #912).
99
117
  */
118
+ /**
119
+ * The frames of a later page fence that take the stories jumping to it
120
+ * (#917), in order: the frame `'page:<id>#<frame>'` names, else the frame
121
+ * of the sending chain's head name, else the first frame of the page its
122
+ * own content leaves empty (`holds`: the frame's chain holds a story of
123
+ * the fence). Those that find none are `left`: they go on after it.
124
+ */
125
+ export declare function assignJumpReceivers(template: Pick<ResolvedPageTemplate, 'frames'>, list: readonly ComposedContinuation[], holds: (name: string) => boolean): {
126
+ receivers: Map<string, ComposedContinuation>;
127
+ left: ComposedContinuation[];
128
+ };
129
+ /** Whether content `frame` sends on lands on the same template laid again
130
+ * with its other frames collapsed (`'next-page'` with no other
131
+ * `overflowTemplate`), as {@link continuationTarget} decides. */
132
+ export declare function continuesCollapsed(template: Pick<ResolvedPageTemplate, 'id' | 'overflowTemplate'>, frame: Pick<ResolvedFrame, 'overflow'>, collapsed: boolean): boolean;
133
+ /**
134
+ * The empty frames that go with the rest of `frame` to the page it goes
135
+ * on to (#912): those right after it in its stack that hold no story
136
+ * (`holds` says which do) and are not pinned, up to the first that holds
137
+ * one. An answer space under an activity box follows the end of its text.
138
+ */
139
+ export declare function trailingFrames(template: Pick<ResolvedPageTemplate, 'frames' | 'groups'>, frame: string, holds: (name: string) => boolean): string[];
140
+ /** `template` with `names` taking no room: `'auto'` (`empty`: no height
141
+ * at all, for a frame whose content goes on whole) with no min/max and
142
+ * out of their groups (#859, #912). A group's frames that stay start
143
+ * where its first frame did when that one leaves and they have no
144
+ * placement of their own. */
145
+ export declare function collapseFrames(template: ResolvedPageTemplate, names: ReadonlySet<string>, empty?: ReadonlySet<string>): ResolvedPageTemplate;
146
+ /** The frames a page added by continuation lays with no room: with
147
+ * `collapse`, every frame that neither receives content (nor is in the
148
+ * chain it goes on in) nor came along with it (`trailing`, #912). */
149
+ export declare function collapsedOnAddedPage(template: Pick<ResolvedPageTemplate, 'frames'>, input: ComposedContinuationInput): Set<string>;
100
150
  export declare function continuationTemplate(template: ResolvedPageTemplate, input: ComposedContinuationInput): ResolvedPageTemplate;
101
151
  export {};
102
152
  //# sourceMappingURL=continuation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"continuation.d.ts","sourceRoot":"","sources":["../../src/composed/continuation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,KAAK,EAAiB,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEnE;;6CAE6C;AAC7C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,0EAA0E;AAC1E,UAAU,KAAK;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,cAAc,CAAC;CACtB;AAED,gDAAgD;AAChD,MAAM,WAAW,oBAAoB;IACnC;8BAC0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb;+BAC2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB;;kCAE8B;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB;8DAC0D;IAC1D,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,UAAU,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB;qDACiD;IACjD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,kDAAkD;AAClD,MAAM,WAAW,yBAAyB;IACxC,qDAAqD;IACrD,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACrD;sCACkC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB;;gBAEY;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB;yCACqC;IACrC,IAAI,EAAE,OAAO,CAAC;CACf;AAED,kDAAkD;AAClD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAExE;AAED;mEACmE;AACnE,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,IAAI,CAAC,oBAAoB,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC,EAChE,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GACrD;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAOzC;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,EAC9C,IAAI,EAAE,SAAS,oBAAoB,EAAE,GACpC;IAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAAC,IAAI,EAAE,oBAAoB,EAAE,CAAA;CAAE,CAWhF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,yBAAyB,GAAG,oBAAoB,CAiC3H"}
1
+ {"version":3,"file":"continuation.d.ts","sourceRoot":"","sources":["../../src/composed/continuation.ts"],"names":[],"mappings":"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"}