postext 1.29.0 → 1.29.2

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 (93) hide show
  1. package/dist/__tests__/arabicLocale.test.js +6 -4
  2. package/dist/__tests__/arabicLocale.test.js.map +1 -1
  3. package/dist/__tests__/bundle/shapingLanguagePin.test.js +11 -8
  4. package/dist/__tests__/bundle/shapingLanguagePin.test.js.map +1 -1
  5. package/dist/__tests__/chineseLocale.test.js +24 -7
  6. package/dist/__tests__/chineseLocale.test.js.map +1 -1
  7. package/dist/__tests__/cjk/japaneseHtml.test.js +10 -4
  8. package/dist/__tests__/cjk/japaneseHtml.test.js.map +1 -1
  9. package/dist/__tests__/cjk/japaneseSegmentLanguage.test.js +9 -2
  10. package/dist/__tests__/cjk/japaneseSegmentLanguage.test.js.map +1 -1
  11. package/dist/__tests__/contextState.test.d.ts +2 -0
  12. package/dist/__tests__/contextState.test.d.ts.map +1 -0
  13. package/dist/__tests__/contextState.test.js +478 -0
  14. package/dist/__tests__/contextState.test.js.map +1 -0
  15. package/dist/__tests__/rtl/htmlRtl.test.js +5 -3
  16. package/dist/__tests__/rtl/htmlRtl.test.js.map +1 -1
  17. package/dist/__tests__/shapingLanguage.test.js +52 -31
  18. package/dist/__tests__/shapingLanguage.test.js.map +1 -1
  19. package/dist/__tests__/trackedLigatures.test.js +6 -5
  20. package/dist/__tests__/trackedLigatures.test.js.map +1 -1
  21. package/dist/bundle/configVersion.d.ts +15 -10
  22. package/dist/bundle/configVersion.d.ts.map +1 -1
  23. package/dist/bundle/configVersion.js +15 -10
  24. package/dist/bundle/configVersion.js.map +1 -1
  25. package/dist/canvas-backend/annotations.d.ts.map +1 -1
  26. package/dist/canvas-backend/annotations.js +8 -7
  27. package/dist/canvas-backend/annotations.js.map +1 -1
  28. package/dist/canvas-backend/blockRender.d.ts.map +1 -1
  29. package/dist/canvas-backend/blockRender.js +23 -20
  30. package/dist/canvas-backend/blockRender.js.map +1 -1
  31. package/dist/canvas-backend/chip.d.ts.map +1 -1
  32. package/dist/canvas-backend/chip.js +10 -8
  33. package/dist/canvas-backend/chip.js.map +1 -1
  34. package/dist/canvas-backend/comic.d.ts.map +1 -1
  35. package/dist/canvas-backend/comic.js +9 -8
  36. package/dist/canvas-backend/comic.js.map +1 -1
  37. package/dist/canvas-backend/contextState.d.ts +62 -0
  38. package/dist/canvas-backend/contextState.d.ts.map +1 -0
  39. package/dist/canvas-backend/contextState.js +89 -0
  40. package/dist/canvas-backend/contextState.js.map +1 -0
  41. package/dist/canvas-backend/decorations.d.ts.map +1 -1
  42. package/dist/canvas-backend/decorations.js +11 -10
  43. package/dist/canvas-backend/decorations.js.map +1 -1
  44. package/dist/canvas-backend/headerFooter.d.ts.map +1 -1
  45. package/dist/canvas-backend/headerFooter.js +15 -14
  46. package/dist/canvas-backend/headerFooter.js.map +1 -1
  47. package/dist/canvas-backend/index.d.ts.map +1 -1
  48. package/dist/canvas-backend/index.js +35 -17
  49. package/dist/canvas-backend/index.js.map +1 -1
  50. package/dist/canvas-backend/mirrorFrame.d.ts.map +1 -1
  51. package/dist/canvas-backend/mirrorFrame.js +5 -4
  52. package/dist/canvas-backend/mirrorFrame.js.map +1 -1
  53. package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
  54. package/dist/canvas-backend/renderResourceBlock.js +24 -23
  55. package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
  56. package/dist/canvas-backend/runDirection.d.ts.map +1 -1
  57. package/dist/canvas-backend/runDirection.js +9 -5
  58. package/dist/canvas-backend/runDirection.js.map +1 -1
  59. package/dist/canvas-backend/scriptText.d.ts.map +1 -1
  60. package/dist/canvas-backend/scriptText.js +8 -7
  61. package/dist/canvas-backend/scriptText.js.map +1 -1
  62. package/dist/canvas-backend/segmentText.d.ts.map +1 -1
  63. package/dist/canvas-backend/segmentText.js +10 -3
  64. package/dist/canvas-backend/segmentText.js.map +1 -1
  65. package/dist/canvas-backend/swatch.d.ts.map +1 -1
  66. package/dist/canvas-backend/swatch.js +3 -2
  67. package/dist/canvas-backend/swatch.js.map +1 -1
  68. package/dist/canvas-backend/trackedText.d.ts.map +1 -1
  69. package/dist/canvas-backend/trackedText.js +9 -8
  70. package/dist/canvas-backend/trackedText.js.map +1 -1
  71. package/dist/canvas-backend/verticalText.d.ts +3 -2
  72. package/dist/canvas-backend/verticalText.d.ts.map +1 -1
  73. package/dist/canvas-backend/verticalText.js +35 -31
  74. package/dist/canvas-backend/verticalText.js.map +1 -1
  75. package/dist/canvas-backend/wordRuns.d.ts +10 -0
  76. package/dist/canvas-backend/wordRuns.d.ts.map +1 -1
  77. package/dist/canvas-backend/wordRuns.js +28 -17
  78. package/dist/canvas-backend/wordRuns.js.map +1 -1
  79. package/dist/defaults/bodyText.d.ts.map +1 -1
  80. package/dist/defaults/bodyText.js +8 -6
  81. package/dist/defaults/bodyText.js.map +1 -1
  82. package/dist/locale.d.ts +22 -18
  83. package/dist/locale.d.ts.map +1 -1
  84. package/dist/locale.js +24 -20
  85. package/dist/locale.js.map +1 -1
  86. package/dist/looseLines.d.ts.map +1 -1
  87. package/dist/looseLines.js +3 -2
  88. package/dist/looseLines.js.map +1 -1
  89. package/dist/pipeline/build.js +3 -3
  90. package/dist/pipeline/build.js.map +1 -1
  91. package/dist/types.d.ts +27 -17
  92. package/dist/types.d.ts.map +1 -1
  93. package/package.json +1 -1
@@ -0,0 +1,478 @@
1
+ import { describe, it, expect, beforeEach } from 'vitest';
2
+ // @ts-expect-error -- a Node built-in: the package compiles without @types/node.
3
+ import { readFileSync as readFile, readdirSync as readDir } from 'node:fs';
4
+ import { renderPageToCanvas } from '../canvas-backend';
5
+ import { renderBlock } from '../canvas-backend/blockRender';
6
+ import { renderComicBalloon } from '../canvas-backend/comic';
7
+ import { fillScriptWord } from '../canvas-backend/scriptText';
8
+ import { fillFlowText } from '../canvas-backend/verticalText';
9
+ import { languageOf, letterSpacingOf, resetContextState, restoreContext, saveContext, setLetterSpacing } from '../canvas-backend/contextState';
10
+ import { buildDocument } from '../pipeline';
11
+ import { clearMeasurementCache } from '../measure';
12
+ // #764, the paint side. Chrome (131 and 154, a DOM canvas and an
13
+ // OffscreenCanvas) makes every saved state with the language `inherit`,
14
+ // and answers `""` for the letter-spacing inside one until another value
15
+ // is set. The page painter saves before it paints any text, so a document
16
+ // measured in its own language was painted in the host's; and a painter
17
+ // that read the letter-spacing to put it back assigned `""`, which the
18
+ // canvas ignores. The backend saves through `saveContext`, which carries
19
+ // the language, and keeps the letter-spacing it sets (`contextState.ts`).
20
+ const readFileSync = readFile;
21
+ const readdirSync = readDir;
22
+ const SRC = new URL('../', import.meta.url);
23
+ const HELPER = 'canvas-backend/contextState.ts';
24
+ /** Every source file of the engine by its path under `src`, tests and
25
+ * benchmarks left out. */
26
+ function sources(dir = SRC, under = '') {
27
+ return readdirSync(dir, { withFileTypes: true }).flatMap((entry) => {
28
+ const rel = under + entry.name;
29
+ if (entry.isDirectory())
30
+ return entry.name === '__tests__' || entry.name === '__bench__' ? [] : sources(new URL(`${entry.name}/`, dir), `${rel}/`);
31
+ return /\.tsx?$/.test(entry.name) && !/\.test\.tsx?$/.test(entry.name) ? [{ rel, url: new URL(entry.name, dir) }] : [];
32
+ });
33
+ }
34
+ /** The code of a file, its comments blanked (the line numbers kept). */
35
+ function code(file) {
36
+ const text = readFileSync(file, 'utf-8')
37
+ .replace(/\/\*[\s\S]*?\*\//g, (comment) => comment.replace(/[^\n]/g, ' '))
38
+ .replace(/(^|[^:'"`\\])\/\/.*$/gm, '$1');
39
+ return text.split('\n');
40
+ }
41
+ function offences(files, pattern) {
42
+ const found = [];
43
+ for (const file of files) {
44
+ if (file.rel === HELPER)
45
+ continue;
46
+ code(file.url).forEach((line, i) => {
47
+ if (pattern.test(line))
48
+ found.push(`${file.rel}:${i + 1}: ${line.trim()}`);
49
+ });
50
+ }
51
+ return found;
52
+ }
53
+ describe('the paint code saves and spaces through contextState.ts', () => {
54
+ it('no source file of the engine calls save() or restore() on a context itself', () => {
55
+ const bare = offences(sources(), /\.\s*(save|restore)\s*\(/);
56
+ expect(bare, [
57
+ 'A 2D context is saved and restored through canvas-backend/contextState.ts:',
58
+ ' saveContext(ctx) in place of ctx.save(), restoreContext(ctx) in place of ctx.restore().',
59
+ 'A bare save() makes a state in the host page\'s language (Chrome sets `lang` back to `inherit`),',
60
+ 'so the text painted inside it has other glyphs than the layout measured (#764); and a bare',
61
+ 'restore() leaves the letter-spacing the backend remembers one state behind. Found:',
62
+ ...bare.map((o) => ` ${o}`),
63
+ ].join('\n')).toEqual([]);
64
+ });
65
+ it('no painter reads or writes the letter-spacing of a context itself', () => {
66
+ const painters = sources().filter((file) => file.rel.startsWith('canvas-backend/') || file.rel === 'looseLines.ts');
67
+ const direct = offences(painters, /\b(ctx|context|c)\s*\.\s*(letterSpacing|wordSpacing)\b/);
68
+ expect(direct, [
69
+ 'The letter-spacing of a painting context is set with setLetterSpacing(ctx, px) and asked with',
70
+ 'letterSpacingOf(ctx), both of canvas-backend/contextState.ts. Inside a saved state Chrome answers',
71
+ '`""` for ctx.letterSpacing whatever is in force, and ignores `""` assigned back: a painter that',
72
+ 'reads it leaves the rest of the state with no tracking (#764). Found:',
73
+ ...direct.map((o) => ` ${o}`),
74
+ ].join('\n')).toEqual([]);
75
+ });
76
+ });
77
+ // ─── A context as Chrome makes it ───────────────────────────────────────────
78
+ /** The language of the page that hosts the canvas (`inherit`). */
79
+ const HOST = 'en';
80
+ const primary = (lang) => lang.toLowerCase().split('-')[0];
81
+ const sizeOf = (font) => parseFloat(/(\d*\.?\d+)px/.exec(font)?.[1] ?? '10');
82
+ /** A face that draws by language, as the measured ones do: its digits are
83
+ * narrower in Chinese and Japanese, its full stop wider in Arabic. */
84
+ function advance(ch, lang) {
85
+ const language = primary(lang);
86
+ if (ch === ' ' || ch === '\u00A0')
87
+ return 0.25;
88
+ if (/[0-9]/.test(ch))
89
+ return language === 'zh' || language === 'ja' ? 0.471 : 0.55;
90
+ if (ch === '.')
91
+ return language === 'ar' ? 0.4 : 0.3;
92
+ if (/[\u2E80-\u9FFF\uFF00-\uFFEF]/.test(ch))
93
+ return 1;
94
+ return 0.5;
95
+ }
96
+ function widthOf(text, font, lang, spacing) {
97
+ let width = 0;
98
+ let letters = 0;
99
+ for (const ch of text) {
100
+ width += advance(ch, lang === 'inherit' ? HOST : lang) * sizeOf(font);
101
+ letters++;
102
+ }
103
+ return width + spacing * letters;
104
+ }
105
+ /** The measuring context of the layout: an `OffscreenCanvas` of the page. */
106
+ class MeasureContext {
107
+ shorthand = '10px Body';
108
+ lang = 'inherit';
109
+ letterSpacing = '0px';
110
+ // An accessor, as on a real context: the plain-paragraph breaker's own
111
+ // context is found through it (`measure/pretextLanguage.ts`).
112
+ get font() {
113
+ return this.shorthand;
114
+ }
115
+ set font(value) {
116
+ this.shorthand = value;
117
+ }
118
+ measureText(s) {
119
+ return { width: widthOf(s, this.shorthand, this.lang, 0) };
120
+ }
121
+ }
122
+ const globals = globalThis;
123
+ globals.OffscreenCanvasRenderingContext2D = MeasureContext;
124
+ globals.OffscreenCanvas = class {
125
+ getContext() {
126
+ return new MeasureContext();
127
+ }
128
+ };
129
+ /**
130
+ * A painting context that keeps its states as Chrome does: `save()` makes
131
+ * one with the language `inherit` and a letter-spacing that reads `""`
132
+ * (the spacing in force kept); the getter answers again once another
133
+ * value is set; a value that is no length is ignored; `restore()` brings
134
+ * the state saved back whole. Every text is recorded with the language and
135
+ * the letter-spacing in force when it was painted, and every read of the
136
+ * letter-spacing is counted.
137
+ */
138
+ function chromeContext() {
139
+ const painted = [];
140
+ let reads = 0;
141
+ let ignored = 0;
142
+ const stack = [];
143
+ let state = { lang: 'inherit', spacing: 0, spacingText: '0px', font: '10px Body', direction: 'ltr', textAlign: 'start', textBaseline: 'alphabetic', fillStyle: '' };
144
+ const record = (text, x) => {
145
+ if (text.trim())
146
+ painted.push({ text, x, lang: state.lang, spacing: state.spacing, font: state.font, depth: stack.length });
147
+ };
148
+ const api = {
149
+ save() {
150
+ stack.push(state);
151
+ state = { ...state, lang: 'inherit', spacingText: '' };
152
+ },
153
+ restore() {
154
+ const saved = stack.pop();
155
+ if (saved)
156
+ state = saved;
157
+ },
158
+ measureText: (s) => ({ width: widthOf(s, state.font, state.lang, state.spacing) }),
159
+ fillText: record,
160
+ strokeText: record,
161
+ };
162
+ // What the painter puts on the context itself stays on it (the mirrored
163
+ // flow sets its own `fillText` there, and takes it off again).
164
+ const ctx = new Proxy({}, {
165
+ get(own, key) {
166
+ if (typeof key === 'string' && Object.hasOwn(own, key))
167
+ return own[key];
168
+ if (key === 'letterSpacing') {
169
+ reads++;
170
+ return state.spacingText;
171
+ }
172
+ if (key === 'wordSpacing') {
173
+ reads++;
174
+ return stack.length ? '' : '0px';
175
+ }
176
+ if (typeof key === 'string' && key in api)
177
+ return api[key];
178
+ if (typeof key === 'string' && key in state)
179
+ return state[key];
180
+ return () => undefined;
181
+ },
182
+ set(own, key, value) {
183
+ if (key === 'letterSpacing') {
184
+ const m = /^(-?\d*\.?\d+(?:e[+-]?\d+)?)px$/.exec(String(value));
185
+ if (!m)
186
+ ignored++;
187
+ else if (Number(m[1]) !== state.spacing) {
188
+ state.spacing = Number(m[1]);
189
+ state.spacingText = `${state.spacing}px`;
190
+ }
191
+ return true;
192
+ }
193
+ if (typeof key === 'string' && key in state)
194
+ state[key] = value;
195
+ else if (typeof key === 'string')
196
+ own[key] = value;
197
+ return true;
198
+ },
199
+ has(_, key) {
200
+ return typeof key === 'string' && (key in api || key in state || key === 'letterSpacing');
201
+ },
202
+ });
203
+ return { ctx: ctx, painted, reads: () => reads, ignored: () => ignored };
204
+ }
205
+ function paintPage(doc, page = doc.pages[0]) {
206
+ const chrome = chromeContext();
207
+ const canvas = { width: 0, height: 0, getContext: () => chrome.ctx };
208
+ renderPageToCanvas(page, doc, canvas);
209
+ return chrome;
210
+ }
211
+ beforeEach(() => clearMeasurementCache());
212
+ const pt = (value) => ({ value, unit: 'pt' });
213
+ const OWN = { shapingLanguage: 'document' };
214
+ function config(locale, extra = {}) {
215
+ return {
216
+ locale,
217
+ page: { width: pt(260), height: pt(700), dpi: 72, margins: { top: pt(40), bottom: pt(40), left: pt(20), right: pt(20) } },
218
+ layout: { layoutType: 'single' },
219
+ header: { elements: [{ kind: 'text', id: 'rh', content: 'Running head 2026.', fontSize: pt(8), overflow: 'wrap', align: 'start', placement: { anchor: { to: 'container', edge: 'top-left' }, size: { width: 'fill' } } }] },
220
+ footer: { elements: [{ kind: 'text', id: 'folio', content: 'Page {page}.', fontSize: pt(8), overflow: 'wrap', align: 'start', placement: { anchor: { to: 'container', edge: 'bottom-left' }, size: { width: 'fill' } } }] },
221
+ chipStyles: [{ id: 'chip' }],
222
+ ...extra,
223
+ bodyText: { fontFamily: 'Body', fontSize: pt(10), lineHeight: pt(14), firstLineIndent: pt(0), textAlign: 'left', hyphenation: { enabled: false }, ...OWN, ...extra.bodyText },
224
+ };
225
+ }
226
+ const table = {
227
+ id: 't', typeId: 'table', kind: 'table', createdAt: 0, updatedAt: 0, placement: { position: 'here' },
228
+ caption: 'Prices in 2026.',
229
+ table: { model: { headerRowCount: 1, rows: [[{ content: 'Dish 1.' }, { content: 'Price 2.' }], [{ content: 'Soup 3.' }, { content: 'Cell 4.' }]] } },
230
+ };
231
+ const AR = '\u0633\u0644\u0627\u0645';
232
+ const AR2 = '\u0643\u062A\u0627\u0628';
233
+ /** Every kind of text a page paints: a heading, a paragraph with a chip, a
234
+ * list, a callout, a table with its caption. */
235
+ const PAGE = [
236
+ '# Heading 1.',
237
+ '',
238
+ 'A paragraph of 2026 with a :chip[chip 7.] in it.',
239
+ '',
240
+ '- First item 3.',
241
+ '- Second item 4.',
242
+ '',
243
+ '1. Numbered item 5.',
244
+ '',
245
+ ':::callout',
246
+ 'Callout text 6.',
247
+ ':::',
248
+ '',
249
+ '::resource{id="t"}',
250
+ '',
251
+ ].join('\n');
252
+ const build = (markdown, cfg, resources = [table]) => buildDocument({ markdown, resources }, cfg);
253
+ const textsOf = (painted) => painted.map((p) => p.text).join(' ');
254
+ describe('a page is painted in the language it was measured in, through every save()', () => {
255
+ it('a page of a document in its own language: columns, running heads, lists, chips, callouts, table cells and captions', () => {
256
+ const doc = build(PAGE, config('zh-Hans'));
257
+ const { painted, reads, ignored } = paintPage(doc);
258
+ const all = textsOf(painted);
259
+ for (const part of ['Running', 'Page', 'Heading', 'paragraph', 'chip', 'First', 'Numbered', 'Callout', 'Dish', 'Soup', 'Cell', 'Prices'])
260
+ expect(all).toContain(part);
261
+ // A list bullet and a number are text too.
262
+ expect(painted.some((p) => /^[\u2022\u00B7\-\u2013]$/.test(p.text.trim()) || p.text.trim() === '1.')).toBe(true);
263
+ // Nearly all of it is painted inside a saved state: the column's clip,
264
+ // a design text's own, a caption's.
265
+ expect(painted.filter((p) => p.depth > 0).length).toBeGreaterThan(painted.length / 2);
266
+ expect(new Set(painted.map((p) => p.lang))).toEqual(new Set(['zh-Hans']));
267
+ // And nothing asked the context for its letter-spacing.
268
+ expect(reads()).toBe(0);
269
+ expect(ignored()).toBe(0);
270
+ });
271
+ it('a right-to-left page, painted through the mirror that turns every text back', () => {
272
+ const doc = build(`# ${AR} ${AR2} 2026.\n\n${AR} ${AR2} 2026 ${AR}. :chip[${AR2} 7.] ${AR}\n\n- ${AR} 3.\n\n::resource{id="t"}\n`, config('ar', { direction: 'rtl' }));
273
+ expect(doc.pages[0].flow?.writingMode).toBe('horizontal-tb');
274
+ const { painted } = paintPage(doc);
275
+ expect(painted.length).toBeGreaterThan(10);
276
+ // The mirrored flow, a column and each text turned back: three states deep.
277
+ expect(Math.max(...painted.map((p) => p.depth))).toBeGreaterThanOrEqual(3);
278
+ expect(new Set(painted.map((p) => p.lang))).toEqual(new Set(['ar']));
279
+ });
280
+ it('a vertical page: cells, sideways runs and the digits set across the column', () => {
281
+ const han = '\u6392\u7248\u5F15\u64CE\u7684\u8BBE\u8BA1';
282
+ const doc = build(`# ${han}12\n\n${han}\uFF0C2016\u5E74 first ${han}\u2014\u2014${han}\u3002\n`, config('zh-Hant', { layout: { layoutType: 'single', writingMode: 'vertical-rl' } }), []);
283
+ expect(doc.pages[0].flow?.writingMode).toBe('vertical-rl');
284
+ const { painted, reads } = paintPage(doc);
285
+ expect(painted.length).toBeGreaterThan(10);
286
+ expect(new Set(painted.map((p) => p.lang))).toEqual(new Set(['zh-Hant']));
287
+ expect(reads()).toBe(0);
288
+ });
289
+ it('a run that names its language is painted in it, on a line set word by word and on a line of the CJK composer', () => {
290
+ const bare = { header: { elements: [] }, footer: { elements: [] } };
291
+ // Word by word (`fillSegmentWord`).
292
+ const latin = paintPage(build('In **2016** it ran, :ltr[dated 2016]{lang=en} and so on.\n', config('ca', bare), [])).painted;
293
+ expect(latin.filter((p) => p.text.includes('2016')).map((p) => p.lang)).toEqual(['ca', 'en']);
294
+ expect(latin[latin.length - 1].lang).toBe('ca');
295
+ // The composer's line (`fillSegmentText`): up to postext 1.29.1 its
296
+ // runs were painted in the document's language, measured in their own.
297
+ const doc = build('\u6392\u7248 2016 \u5F15\u64CE :ltr[dated 2016]{lang=en} \u8BBE\u8BA1\u3002\n', config('zh-Hans', bare), []);
298
+ expect(doc.blocks.find((b) => b.type === 'paragraph').lines[0].cjkComposed).toBe(true);
299
+ const { painted } = paintPage(doc);
300
+ expect(painted.filter((p) => p.text.includes('2016')).map((p) => p.lang)).toEqual(['zh-Hans', 'en']);
301
+ expect(painted.find((p) => p.text.includes('dated')).lang).toBe('en');
302
+ // The document's again after the run.
303
+ expect(painted[painted.length - 1].lang).toBe('zh-Hans');
304
+ expect(new Set(painted.map((p) => p.lang))).toEqual(new Set(['zh-Hans', 'en']));
305
+ });
306
+ it('and keeps it through the saves inside its word: a mirrored page\'s turn, a clip', () => {
307
+ // On a right-to-left page every text is turned back inside a state of
308
+ // its own.
309
+ const doc = build(`${AR} ${AR2} :ltr[dated 2016]{lang=en} ${AR}.\n`, config('ar', { direction: 'rtl', header: { elements: [] }, footer: { elements: [] } }), []);
310
+ const { painted } = paintPage(doc);
311
+ const run = painted.filter((p) => /dated|2016/.test(p.text));
312
+ expect(run.length).toBeGreaterThan(0);
313
+ expect(run.every((p) => p.lang === 'en' && p.depth >= 3)).toBe(true);
314
+ expect(painted.filter((p) => !/dated|2016/.test(p.text)).every((p) => p.lang === 'ar')).toBe(true);
315
+ // A word with no letter is painted beside a mark of its script, the
316
+ // mark clipped away (`fillScriptWord`): in the language of its run.
317
+ const { ctx, painted: clipped } = chromeContext();
318
+ ctx.lang = 'en';
319
+ fillScriptWord(ctx, '2016', 'Hani', false, 0, 0, (text, x, y) => ctx.fillText(text, x, y));
320
+ expect(clipped.map((p) => [p.lang, p.depth])).toEqual([['en', 1]]);
321
+ expect(clipped[0].text.startsWith('2016')).toBe(true);
322
+ });
323
+ it('each text is as wide painted as the layout measured it', () => {
324
+ // The digits of this face are 0.471 em wide in Chinese and 0.55 em in
325
+ // the host's English: painted in the host's, `2026` is 0.32 em wider
326
+ // than the box the layout holds for it.
327
+ const doc = build('In 2026 and 1024.\n', config('zh-Hans', { header: { elements: [] }, footer: { elements: [] } }), []);
328
+ const line = doc.blocks.find((b) => b.type === 'paragraph').lines[0];
329
+ const { painted } = paintPage(doc);
330
+ const whole = painted.find((p) => p.text.includes('2026'));
331
+ expect(widthOf(whole.text, whole.font, whole.lang, 0)).toBeCloseTo(line.bbox.width, 6);
332
+ expect(widthOf(whole.text, whole.font, 'inherit', 0) - line.bbox.width).toBeCloseTo(8 * (0.55 - 0.471) * 10, 6);
333
+ });
334
+ it('a document shaped in the host\'s language is painted in the host\'s: its context is left as it comes', () => {
335
+ for (const locale of ['zh-Hans', 'ar', 'ca']) {
336
+ const doc = build(PAGE, config(locale, { bodyText: { shapingLanguage: 'host' } }));
337
+ const { painted } = paintPage(doc);
338
+ expect(painted.length).toBeGreaterThan(10);
339
+ expect(new Set(painted.map((p) => p.lang))).toEqual(new Set(['inherit']));
340
+ }
341
+ });
342
+ it('gives the context back in the language it came in', () => {
343
+ const doc = build('In 2026.\n', config('ca'), []);
344
+ const chrome = chromeContext();
345
+ const canvas = { width: 0, height: 0, getContext: () => chrome.ctx };
346
+ renderPageToCanvas(doc.pages[0], doc, canvas);
347
+ expect(chrome.ctx.lang).toBe('inherit');
348
+ expect(chrome.painted.every((p) => p.lang === 'ca')).toBe(true);
349
+ });
350
+ it('a comic balloon lettered on a context in the document\'s language keeps it', () => {
351
+ const block = {
352
+ kind: 'text', bbox: { x: 10, y: 10, width: 120, height: 30 }, fontString: '10px Body', color: '#000000',
353
+ lines: [{ text: 'BOOM 2026.', xOffset: 0, baselineY: 24 }],
354
+ };
355
+ const balloon = {
356
+ id: 'b', panelIndex: 0, order: 0, kind: 'sfx', style: 'sfx', sourceStart: 0, sourceEnd: 0, group: 0,
357
+ text: [block], bbox: block.bbox, halo: { width: 1, color: '#ffffff' },
358
+ };
359
+ const { ctx, painted } = chromeContext();
360
+ ctx.lang = 'ja';
361
+ renderComicBalloon(ctx, balloon);
362
+ expect(painted.length).toBeGreaterThan(1);
363
+ expect(painted.every((p) => p.depth >= 2)).toBe(true);
364
+ expect(new Set(painted.map((p) => p.lang))).toEqual(new Set(['ja']));
365
+ });
366
+ });
367
+ describe('the helper', () => {
368
+ it('saveContext carries the language, restoreContext brings the outer one back', () => {
369
+ const { ctx } = chromeContext();
370
+ const c = ctx;
371
+ c.lang = 'ar';
372
+ saveContext(ctx);
373
+ expect(c.lang).toBe('ar');
374
+ c.lang = 'tr';
375
+ saveContext(ctx);
376
+ expect(c.lang).toBe('tr');
377
+ restoreContext(ctx);
378
+ restoreContext(ctx);
379
+ expect(c.lang).toBe('ar');
380
+ expect(languageOf(ctx)).toBe('ar');
381
+ });
382
+ it('a context in the host\'s language, or with none, is saved as it is', () => {
383
+ const { ctx } = chromeContext();
384
+ const set = [];
385
+ const watched = new Proxy(ctx, { set: (t, k, v) => { if (k === 'lang')
386
+ set.push(v); return Reflect.set(t, k, v); } });
387
+ saveContext(watched);
388
+ restoreContext(watched);
389
+ expect(set).toEqual([]);
390
+ expect(languageOf(ctx)).toBeUndefined();
391
+ // No `lang` at all (a browser before Chrome 136): nothing is set.
392
+ const old = { saved: 0, save() { this.saved++; }, restore() { this.saved--; } };
393
+ saveContext(old);
394
+ expect('lang' in old).toBe(false);
395
+ restoreContext(old);
396
+ expect(old.saved).toBe(0);
397
+ expect(languageOf(old)).toBeUndefined();
398
+ });
399
+ it('the letter-spacing set is the one answered, state by state, where the context answers ""', () => {
400
+ const { ctx, reads } = chromeContext();
401
+ expect(letterSpacingOf(ctx)).toBe(0);
402
+ setLetterSpacing(ctx, 1.5);
403
+ saveContext(ctx);
404
+ // Chrome's own answer here is `""`.
405
+ expect(ctx.letterSpacing).toBe('');
406
+ expect(letterSpacingOf(ctx)).toBe(1.5);
407
+ setLetterSpacing(ctx, 0);
408
+ saveContext(ctx);
409
+ expect(letterSpacingOf(ctx)).toBe(0);
410
+ restoreContext(ctx);
411
+ restoreContext(ctx);
412
+ expect(letterSpacingOf(ctx)).toBe(1.5);
413
+ expect(ctx.letterSpacing).toBe('1.5px');
414
+ expect(reads()).toBe(3 - 1);
415
+ resetContextState(ctx);
416
+ expect(letterSpacingOf(ctx)).toBe(0);
417
+ });
418
+ });
419
+ describe('tracked text keeps its letter-spacing inside a saved state', () => {
420
+ const tracked = (markdown, locale = 'en') => {
421
+ const doc = build(markdown, config(locale, { header: { elements: [] }, footer: { elements: [] } }), []);
422
+ const block = doc.blocks.find((b) => b.type === 'paragraph');
423
+ return { doc, block };
424
+ };
425
+ it('a chip of a tracked line: the run after its Arabic run is painted with the tracking', () => {
426
+ // The chip saves the context, lifts the tracking for its Arabic run
427
+ // (a joining script is never tracked) and puts it back for the next.
428
+ // Up to postext 1.29.1 it read the tracking after its save (`""` on
429
+ // Chrome) and assigned that back: `first` was painted with none.
430
+ const { block } = tracked(`A :chip[office *${AR}* first] here.\n`);
431
+ block.letterSpacing = 0.6;
432
+ const { ctx, painted, reads, ignored } = chromeContext();
433
+ renderBlock(ctx, block, block.bbox.width, block.bbox.x);
434
+ const chip = painted.filter((p) => p.depth > 0);
435
+ expect(chip.map((p) => [p.text.trim(), p.spacing])).toEqual([['office', 0.6], [AR, 0], ['first', 0.6]]);
436
+ expect(painted.filter((p) => p.depth === 0).every((p) => p.spacing === 0.6)).toBe(true);
437
+ expect(reads()).toBe(0);
438
+ expect(ignored()).toBe(0);
439
+ // The context is left with no tracking, as the block found it.
440
+ expect(letterSpacingOf(ctx)).toBe(0);
441
+ });
442
+ it('a tracked header cell with such a chip, as the layout measured it', () => {
443
+ const cell = {
444
+ ...table, caption: undefined,
445
+ table: { model: { headerRowCount: 1, rows: [[{ content: `:chip[office *${AR}* first]` }, { content: 'Price' }], [{ content: 'Soup' }, { content: '4' }]] } },
446
+ };
447
+ const doc = build('::resource{id="t"}\n', config('en', { header: { elements: [] }, footer: { elements: [] }, tableStyle: { headerLetterSpacing: pt(2) } }), [cell]);
448
+ const { painted, reads } = paintPage(doc);
449
+ const first = painted.find((p) => p.text.trim() === 'first');
450
+ expect(first.spacing).toBe(2);
451
+ expect(painted.find((p) => p.text.trim() === AR).spacing).toBe(0);
452
+ // The width the layout holds for the run is the one painted.
453
+ const chip = JSON.stringify(doc.pages[0]).match(/"text":" first","fontString":"[^"]*","width":([\d.]+)/);
454
+ expect(chip).not.toBeNull();
455
+ expect(widthOf(first.text, first.font, first.lang, first.spacing)).toBeCloseTo(Number(chip[1]), 2);
456
+ expect(painted.find((p) => p.text === 'Soup').spacing).toBe(0);
457
+ expect(reads()).toBe(0);
458
+ });
459
+ it('text cut at its CJK marks inside a saved state is set by the tracking in force', () => {
460
+ // Two marks that meet are painted apart, each piece after the one
461
+ // before by its measure and the tracking of its characters.
462
+ const { ctx, painted } = chromeContext();
463
+ ctx.font = '10px Body';
464
+ setLetterSpacing(ctx, 1);
465
+ saveContext(ctx);
466
+ fillFlowText(ctx, '\u6392\uFF09\u300A\u7248', 0, 0, 'fill', undefined, 'composed');
467
+ restoreContext(ctx);
468
+ expect(painted.length).toBeGreaterThan(1);
469
+ expect(painted.every((p) => p.spacing === 1)).toBe(true);
470
+ // Each piece starts where the one before ends, its tracking counted.
471
+ let x = 0;
472
+ for (const p of painted) {
473
+ expect(p.x).toBeCloseTo(x, 6);
474
+ x += widthOf(p.text, p.font, 'inherit', 1);
475
+ }
476
+ });
477
+ });
478
+ //# sourceMappingURL=contextState.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextState.test.js","sourceRoot":"","sources":["../../src/__tests__/contextState.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC1D,iFAAiF;AACjF,OAAO,EAAE,YAAY,IAAI,QAAQ,EAAE,WAAW,IAAI,OAAO,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAC/I,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAInD,iEAAiE;AACjE,wEAAwE;AACxE,yEAAyE;AACzE,0EAA0E;AAC1E,wEAAwE;AACxE,uEAAuE;AACvE,yEAAyE;AACzE,0EAA0E;AAE1E,MAAM,YAAY,GAAG,QAAoD,CAAC;AAC1E,MAAM,WAAW,GAAG,OAAsG,CAAC;AAC3H,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5C,MAAM,MAAM,GAAG,gCAAgC,CAAC;AAEhD;2BAC2B;AAC3B,SAAS,OAAO,CAAC,MAAW,GAAG,EAAE,KAAK,GAAG,EAAE;IACzC,OAAO,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACjE,MAAM,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;QAC/B,IAAI,KAAK,CAAC,WAAW,EAAE;YAAE,OAAO,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;QACnJ,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,wEAAwE;AACxE,SAAS,IAAI,CAAC,IAAS;IACrB,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;SACrC,OAAO,CAAC,mBAAmB,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;SACjF,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,QAAQ,CAAC,KAAkC,EAAE,OAAe;IACnE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM;YAAE,SAAS;QAClC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACjC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,QAAQ,CAAC,yDAAyD,EAAE,GAAG,EAAE;IACvE,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,0BAA0B,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,EAAE;YACX,4EAA4E;YAC5E,2FAA2F;YAC3F,kGAAkG;YAClG,4FAA4F;YAC5F,oFAAoF;YACpF,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;SAC7B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,eAAe,CAAC,CAAC;QACpH,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAE,wDAAwD,CAAC,CAAC;QAC5F,MAAM,CAAC,MAAM,EAAE;YACb,+FAA+F;YAC/F,mGAAmG;YACnG,iGAAiG;YACjG,uEAAuE;YACvE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;SAC/B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAE/E,kEAAkE;AAClE,MAAM,IAAI,GAAG,IAAI,CAAC;AAClB,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;AAC5E,MAAM,MAAM,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AAC7F;uEACuE;AACvE,SAAS,OAAO,CAAC,EAAU,EAAE,IAAY;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,OAAO,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACnF,IAAI,EAAE,KAAK,GAAG;QAAE,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACrD,IAAI,8BAA8B,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,OAAO,CAAC,CAAC;IACtD,OAAO,GAAG,CAAC;AACb,CAAC;AACD,SAAS,OAAO,CAAC,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,OAAe;IACxE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACtB,KAAK,IAAI,OAAO,CAAC,EAAE,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACtE,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;AACnC,CAAC;AAED,6EAA6E;AAC7E,MAAM,cAAc;IACV,SAAS,GAAG,WAAW,CAAC;IAChC,IAAI,GAAG,SAAS,CAAC;IACjB,aAAa,GAAG,KAAK,CAAC;IACtB,uEAAuE;IACvE,8DAA8D;IAC9D,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,IAAI,IAAI,CAAC,KAAa;QACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,WAAW,CAAC,CAAS;QACnB,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC;CACF;AACD,MAAM,OAAO,GAAG,UAAiG,CAAC;AAClH,OAAO,CAAC,iCAAiC,GAAG,cAAc,CAAC;AAC3D,OAAO,CAAC,eAAe,GAAG;IACxB,UAAU;QACR,OAAO,IAAI,cAAc,EAAE,CAAC;IAC9B,CAAC;CACF,CAAC;AAKF;;;;;;;;GAQG;AACH,SAAS,aAAa;IACpB,MAAM,OAAO,GAAc,EAAE,CAAC;IAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,KAAK,GAAY,EAAE,CAAC;IAC1B,IAAI,KAAK,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAC3K,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,CAAS,EAAQ,EAAE;QAC/C,IAAI,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9H,CAAC,CAAC;IACF,MAAM,GAAG,GAA4B;QACnC,IAAI;YACF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACzD,CAAC;QACD,OAAO;YACL,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI,KAAK;gBAAE,KAAK,GAAG,KAAK,CAAC;QAC3B,CAAC;QACD,WAAW,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1F,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,MAAM;KACnB,CAAC;IACF,wEAAwE;IACxE,+DAA+D;IAC/D,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,EAA6B,EAAE;QACnD,GAAG,CAAC,GAAG,EAAE,GAAG;YACV,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC;gBAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YACxE,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;gBAC5B,KAAK,EAAE,CAAC;gBACR,OAAO,KAAK,CAAC,WAAW,CAAC;YAC3B,CAAC;YACD,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;gBAC1B,KAAK,EAAE,CAAC;gBACR,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YACnC,CAAC;YACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC,GAAkB,CAAC,CAAC;YAC9E,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;QACzB,CAAC;QACD,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK;YACjB,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;gBAC5B,MAAM,CAAC,GAAG,iCAAiC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChE,IAAI,CAAC,CAAC;oBAAE,OAAO,EAAE,CAAC;qBACb,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;oBACxC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7B,KAAK,CAAC,WAAW,GAAG,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC;gBAC3C,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,KAAK;gBAAG,KAA4C,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;iBACnG,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,GAAG,CAAC,CAAC,EAAE,GAAG;YACR,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,KAAK,eAAe,CAAC,CAAC;QAC5F,CAAC;KACF,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,EAAE,GAA0C,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;AAClH,CAAC;AAED,SAAS,SAAS,CAAC,GAAgB,EAAE,OAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE;IAChE,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAkC,CAAC;IACrG,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,UAAU,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAE1C,MAAM,EAAE,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAa,EAAE,CAAC,CAAC;AAC/D,MAAM,GAAG,GAAG,EAAE,eAAe,EAAE,UAAmB,EAAE,CAAC;AACrD,SAAS,MAAM,CAAC,MAAc,EAAE,QAAuB,EAAE;IACvD,OAAO;QACL,MAAM;QACN,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QACzH,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE;QAChC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE;QAC3N,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE;QAC3N,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;QAC5B,GAAG,KAAK;QACR,QAAQ,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE;KAC9K,CAAC;AACJ,CAAC;AAED,MAAM,KAAK,GAAa;IACtB,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;IACpG,OAAO,EAAE,iBAAiB;IAC1B,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;CACzI,CAAC;AAEd,MAAM,EAAE,GAAG,0BAA0B,CAAC;AACtC,MAAM,GAAG,GAAG,0BAA0B,CAAC;AAEvC;iDACiD;AACjD,MAAM,IAAI,GAAG;IACX,cAAc;IACd,EAAE;IACF,kDAAkD;IAClD,EAAE;IACF,iBAAiB;IACjB,kBAAkB;IAClB,EAAE;IACF,qBAAqB;IACrB,EAAE;IACF,YAAY;IACZ,iBAAiB;IACjB,KAAK;IACL,EAAE;IACF,oBAAoB;IACpB,EAAE;CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,KAAK,GAAG,CAAC,QAAgB,EAAE,GAAkB,EAAE,YAAwB,CAAC,KAAK,CAAC,EAAe,EAAE,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC;AAClJ,MAAM,OAAO,GAAG,CAAC,OAAkB,EAAU,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAErF,QAAQ,CAAC,4EAA4E,EAAE,GAAG,EAAE;IAC1F,EAAE,CAAC,oHAAoH,EAAE,GAAG,EAAE;QAC5H,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3C,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtK,2CAA2C;QAC3C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjH,uEAAuE;QACvE,oCAAoC;QACpC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACtF,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1E,wDAAwD;QACxD,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,aAAa,EAAE,IAAI,GAAG,SAAS,EAAE,WAAW,GAAG,QAAQ,EAAE,SAAS,EAAE,6BAA6B,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACvK,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9D,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC3C,4EAA4E;QAC5E,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,GAAG,GAAG,4CAA4C,CAAC;QACzD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,SAAS,GAAG,0BAA0B,GAAG,eAAe,GAAG,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1L,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5D,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8GAA8G,EAAE,GAAG,EAAE;QACtH,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC;QACpE,oCAAoC;QACpC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,4DAA4D,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC7H,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9F,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,oEAAoE;QACpE,uEAAuE;QACvE,MAAM,GAAG,GAAG,KAAK,CAAC,+EAA+E,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAChI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAE,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzF,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;QACrG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvE,sCAAsC;QACtC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iFAAiF,EAAE,GAAG,EAAE;QACzF,sEAAsE;QACtE,WAAW;QACX,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,GAAG,8BAA8B,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACjK,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnG,oEAAoE;QACpE,oEAAoE;QACpE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC;QACjD,GAAmC,CAAC,IAAI,GAAG,IAAI,CAAC;QACjD,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3F,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,sEAAsE;QACtE,qEAAqE;QACrE,wCAAwC;QACxC,MAAM,GAAG,GAAG,KAAK,CAAC,qBAAqB,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACxH,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAE,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;QACvE,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAE,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvF,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAClH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sGAAsG,EAAE,GAAG,EAAE;QAC9G,KAAK,MAAM,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;YACnF,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAkC,CAAC;QACrG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,CAAE,MAAM,CAAC,GAAmC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,KAAK,GAAuB;YAChC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS;YACvG,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;SACrC,CAAC;QACxB,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;YACnG,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;SACnD,CAAC;QACrB,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC;QACxC,GAAmC,CAAC,IAAI,GAAG,IAAI,CAAC;QACjD,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACjC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,GAAkC,CAAC;QAC7C,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QACd,WAAW,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QACd,WAAW,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,GAAG,GAAc,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,MAAM;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtH,WAAW,CAAC,OAAO,CAAC,CAAC;QACrB,cAAc,CAAC,OAAO,CAAC,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACxC,kEAAkE;QAClE,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,WAAW,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0FAA0F,EAAE,GAAG,EAAE;QAClG,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,aAAa,EAAE,CAAC;QACvC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC3B,WAAW,CAAC,GAAG,CAAC,CAAC;QACjB,oCAAoC;QACpC,MAAM,CAAE,GAA4C,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7E,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACzB,WAAW,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,CAAE,GAA4C,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClF,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,4DAA4D,EAAE,GAAG,EAAE;IAC1E,MAAM,OAAO,GAAG,CAAC,QAAgB,EAAE,MAAM,GAAG,IAAI,EAAyC,EAAE;QACzF,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACxG,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAE,CAAC;QAC9D,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IACxB,CAAC,CAAC;IAEF,EAAE,CAAC,qFAAqF,EAAE,GAAG,EAAE;QAC7F,oEAAoE;QACpE,qEAAqE;QACrE,oEAAoE;QACpE,iEAAiE;QACjE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,CAAC;QACnE,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC1B,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC;QACzD,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACxG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxF,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,+DAA+D;QAC/D,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,IAAI,GAAa;YACrB,GAAG,KAAK,EAAE,OAAO,EAAE,SAAS;YAC5B,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;SACjJ,CAAC;QACd,MAAM,GAAG,GAAG,KAAK,CAAC,sBAAsB,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACpK,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,CAAE,CAAC;QAC9D,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnE,6DAA6D;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACzG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC5B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACxF,kEAAkE;QAClE,4DAA4D;QAC5D,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC;QACxC,GAAmC,CAAC,IAAI,GAAG,WAAW,CAAC;QACxD,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACzB,WAAW,CAAC,GAAG,CAAC,CAAC;QACjB,YAAY,CAAC,GAAG,EAAE,0BAA0B,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACnF,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,qEAAqE;QACrE,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9B,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -59,8 +59,9 @@ describe('document root and pages', () => {
59
59
  const doc = buildDocument({ markdown: AR }, config('rtl', { page: { ...config('rtl').page, binding: 'left' } }));
60
60
  expect(renderToHtml(doc, { mode: 'multi' })).toContain('flex-direction:row-reverse;');
61
61
  });
62
- it('a left-to-right document declares its language and no direction (#764)', () => {
63
- const doc = buildDocument({ markdown: 'Plain English words.' }, config('ltr'));
62
+ it('a left-to-right document shaped in its own language declares it, and no direction (#764)', () => {
63
+ const own = config('ltr');
64
+ const doc = buildDocument({ markdown: 'Plain English words.' }, { ...own, bodyText: { ...own.bodyText, shapingLanguage: 'document' } });
64
65
  const html = renderToHtml(doc);
65
66
  // No locale: the language of the hyphenation default.
66
67
  expect(html).toMatch(/^<div class="pt-doc" lang="en-US" data-mode="multi" style="/);
@@ -68,10 +69,11 @@ describe('document root and pages', () => {
68
69
  expect(html).toContain(HTML_TEXT_RESET);
69
70
  expect(html).not.toContain(' dir=');
70
71
  });
71
- it('a left-to-right document shaped in the language of the host is marked as before', () => {
72
+ it('a left-to-right document shaped in the language of the host, the default, is marked as before', () => {
72
73
  const base = config('ltr');
73
74
  const doc = buildDocument({ markdown: 'Plain English words.' }, { ...base, bodyText: { ...base.bodyText, shapingLanguage: 'host' } });
74
75
  const html = renderToHtml(doc);
76
+ expect(renderToHtml(buildDocument({ markdown: 'Plain English words.' }, base))).toBe(html);
75
77
  expect(html).toMatch(/^<div class="pt-doc" data-mode="multi" style="/);
76
78
  expect(html).toContain(HTML_TEXT_RESET);
77
79
  expect(html).not.toContain(' dir=');
@@ -1 +1 @@
1
- {"version":3,"file":"htmlRtl.test.js","sourceRoot":"","sources":["../../../src/__tests__/rtl/htmlRtl.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAIxF,4EAA4E;AAC5E,0EAA0E;AAC1E,uEAAuE;AACvE,qDAAqD;AAErD,uCAAuC;AACvC,MAAM,OAAO;IACX,IAAI,GAAG,EAAE,CAAC;IACV,WAAW,CAAC,CAAS;QACnB,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IACjC,CAAC;CACF;AACA,UAAsD,CAAC,eAAe,GAAG;IACxE,UAAU;QACR,OAAO,IAAI,OAAO,EAAE,CAAC;IACvB,CAAC;CACF,CAAC;AAEF,MAAM,EAAE,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAa,EAAE,CAAC,CAAC;AAC/D,MAAM,MAAM,GAAG,CAAC,SAAwB,EAAE,QAAgC,EAAE,EAAiB,EAAE,CAAC,CAAC;IAC/F,SAAS;IACT,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACzH,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE;IAChC,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxB,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxB,QAAQ,EAAE,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE;IAChG,GAAG,KAAK;CACT,CAAC,CAAC;AAEH,MAAM,EAAE,GAAG,mCAAmC,CAAC;AAK/C,SAAS,KAAK,CAAC,IAAY;IACzB,MAAM,GAAG,GAAU,EAAE,CAAC;IACtB,MAAM,EAAE,GAAG,8IAA8I,CAAC;IAC1J,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACrH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AACD,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,MAAc,EAAU,EAAE;IACxD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1D,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAE,CAAC;AAChD,CAAC,CAAC;AAEF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,oEAAoE,CAAC,CAAC;QAC3F,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC;QACpF,sEAAsE;QACtE,4CAA4C;QAC5C,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,8DAA8D,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QACjH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/E,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,sDAAsD;QACtD,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,6DAA6D,CAAC,CAAC;QACpF,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,oEAAoE,CAAC,CAAC;QAC3F,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iFAAiF,EAAE,GAAG,EAAE;QACzF,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACtI,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,2BAA2B,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7F,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;QAChD,qDAAqD;QACrD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QAC3G,wEAAwE;QACxE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,oEAAoE;QACpE,gEAAgE;QAChE,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8EAA8E,EAAE,GAAG,EAAE;QACtF,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC;QACpF,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,QAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAE,CAAC;QACtE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAE,CAAC;QACzE,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,qEAAqE,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,2BAA2B,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7F,MAAM,OAAO,GAAgB;YAC3B,GAAG,GAAG;YACN,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,CAAa,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SAC5J,CAAC;QACF,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAE,CAAC;QACzD,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,sGAAsG,CAAC,CAAC;QAC/J,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,MAAM,QAAQ,GAAG,CAAC,CAAW,EAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IACxE,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,2BAA2B,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7F,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,CAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,wDAAwD;QACxD,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,OAAQ,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,2BAA2B,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5J,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,CAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACvF,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACjG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,kDAAkD,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAChH,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,6DAA6D,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,KAAK,GAAa;YACtB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;YAC5F,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;YACpF,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;SAChC,CAAC;QACF,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,4BAA4B,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAClJ,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAE,CAAC,aAAc,CAAC;QACnE,MAAM,IAAI,GAAG,EAAE,CAAC,KAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAE,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAE,CAAC;QACzD,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;QACvC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,sEAAsE;QACtE,mEAAmE;QACnE,WAAW;QACX,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"htmlRtl.test.js","sourceRoot":"","sources":["../../../src/__tests__/rtl/htmlRtl.test.ts"],"names":[],"mappings":"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"}