postext 1.49.1 → 1.51.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.
- package/dist/__tests__/composed/fenceCondition.test.d.ts +2 -0
- package/dist/__tests__/composed/fenceCondition.test.d.ts.map +1 -0
- package/dist/__tests__/composed/fenceCondition.test.js +171 -0
- package/dist/__tests__/composed/fenceCondition.test.js.map +1 -0
- package/dist/__tests__/composed/fixtures/moduleNesting.d.ts +25 -0
- package/dist/__tests__/composed/fixtures/moduleNesting.d.ts.map +1 -0
- package/dist/__tests__/composed/fixtures/moduleNesting.js +36 -0
- package/dist/__tests__/composed/fixtures/moduleNesting.js.map +1 -0
- package/dist/__tests__/composed/fixtures/moduleRows.d.ts +40 -0
- package/dist/__tests__/composed/fixtures/moduleRows.d.ts.map +1 -0
- package/dist/__tests__/composed/fixtures/moduleRows.js +65 -0
- package/dist/__tests__/composed/fixtures/moduleRows.js.map +1 -0
- package/dist/__tests__/composed/frameLooks.test.d.ts +2 -0
- package/dist/__tests__/composed/frameLooks.test.d.ts.map +1 -0
- package/dist/__tests__/composed/frameLooks.test.js +151 -0
- package/dist/__tests__/composed/frameLooks.test.js.map +1 -0
- package/dist/__tests__/composed/moduleNesting.test.d.ts +2 -0
- package/dist/__tests__/composed/moduleNesting.test.d.ts.map +1 -0
- package/dist/__tests__/composed/moduleNesting.test.js +177 -0
- package/dist/__tests__/composed/moduleNesting.test.js.map +1 -0
- package/dist/__tests__/composed/moduleRows.test.d.ts +2 -0
- package/dist/__tests__/composed/moduleRows.test.d.ts.map +1 -0
- package/dist/__tests__/composed/moduleRows.test.js +239 -0
- package/dist/__tests__/composed/moduleRows.test.js.map +1 -0
- package/dist/__tests__/composed/modules.test.js +3 -2
- package/dist/__tests__/composed/modules.test.js.map +1 -1
- package/dist/__tests__/composed/pillWord.test.js +35 -0
- package/dist/__tests__/composed/pillWord.test.js.map +1 -1
- package/dist/__tests__/exports.test.js +9 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/composed/groups.d.ts.map +1 -1
- package/dist/composed/groups.js +9 -1
- package/dist/composed/groups.js.map +1 -1
- package/dist/composed/modules.d.ts +9 -0
- package/dist/composed/modules.d.ts.map +1 -1
- package/dist/composed/modules.js +43 -2
- package/dist/composed/modules.js.map +1 -1
- package/dist/composed/reflowLog.js +1 -1
- package/dist/composed/reflowLog.js.map +1 -1
- package/dist/composed/slotChecks.d.ts +10 -0
- package/dist/composed/slotChecks.d.ts.map +1 -1
- package/dist/composed/slotChecks.js +39 -0
- package/dist/composed/slotChecks.js.map +1 -1
- package/dist/composed/templates.d.ts +17 -1
- package/dist/composed/templates.d.ts.map +1 -1
- package/dist/composed/templates.js +82 -6
- package/dist/composed/templates.js.map +1 -1
- package/dist/composed/types.d.ts +76 -4
- package/dist/composed/types.d.ts.map +1 -1
- package/dist/composed/validate.d.ts.map +1 -1
- package/dist/composed/validate.js +79 -6
- package/dist/composed/validate.js.map +1 -1
- package/dist/configWarnings.d.ts +3 -1
- package/dist/configWarnings.d.ts.map +1 -1
- package/dist/configWarnings.js +32 -3
- package/dist/configWarnings.js.map +1 -1
- package/dist/defaults/headerFooter.d.ts +10 -0
- package/dist/defaults/headerFooter.d.ts.map +1 -1
- package/dist/defaults/headerFooter.js +21 -1
- package/dist/defaults/headerFooter.js.map +1 -1
- package/dist/design/fenceCondition.d.ts +45 -0
- package/dist/design/fenceCondition.d.ts.map +1 -0
- package/dist/design/fenceCondition.js +66 -0
- package/dist/design/fenceCondition.js.map +1 -0
- package/dist/design/layout.d.ts.map +1 -1
- package/dist/design/layout.js +33 -1
- package/dist/design/layout.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/pipeline/composedLayout.d.ts +5 -1
- package/dist/pipeline/composedLayout.d.ts.map +1 -1
- package/dist/pipeline/composedLayout.js +355 -83
- package/dist/pipeline/composedLayout.js.map +1 -1
- package/dist/pipeline/config.d.ts.map +1 -1
- package/dist/pipeline/config.js +8 -1
- package/dist/pipeline/config.js.map +1 -1
- package/dist/pipeline/contentWarnings.d.ts.map +1 -1
- package/dist/pipeline/contentWarnings.js +8 -1
- package/dist/pipeline/contentWarnings.js.map +1 -1
- package/dist/types.d.ts +68 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/vdt.d.ts +25 -2
- package/dist/vdt.d.ts.map +1 -1
- package/dist/vdt.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fenceCondition.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/composed/fenceCondition.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { buildDocument } from '../../pipeline/build';
|
|
3
|
+
import { createMeasurementCache } from '../../measure';
|
|
4
|
+
import { collectConfigWarnings } from '../../configWarnings';
|
|
5
|
+
import { stripPageTemplatesDefaults } from '../../composed/templates';
|
|
6
|
+
import { sourceAt } from '../../composed/sourceMap';
|
|
7
|
+
import { fenceAttributesSet, fenceConditionMet, fenceConditionUses, fenceConditionsNeverMet, fenceSetsAttribute, } from '../../design/fenceCondition';
|
|
8
|
+
// #1087: one page shell for every page. Decoration elements and the
|
|
9
|
+
// template's running heads carry `when` / `unless` on the page fence's
|
|
10
|
+
// attributes, so a front-matter page drops the folio and the band the body
|
|
11
|
+
// pages print.
|
|
12
|
+
class StubCtx {
|
|
13
|
+
font = '';
|
|
14
|
+
measureText(s) {
|
|
15
|
+
return { width: s.length * 7 };
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
globalThis.OffscreenCanvas = class {
|
|
19
|
+
getContext() {
|
|
20
|
+
return new StubCtx();
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const mm = (value) => ({ value, unit: 'mm' });
|
|
24
|
+
const PAGE = {
|
|
25
|
+
page: { width: mm(170), height: mm(240), dpi: 150, margins: { top: mm(20), bottom: mm(20), left: mm(18), right: mm(18) } },
|
|
26
|
+
};
|
|
27
|
+
const folio = (extra = {}) => ({
|
|
28
|
+
kind: 'text', id: 'folio', content: '{pageNumber}',
|
|
29
|
+
placement: { anchor: { to: 'page', edge: 'bottom-center' }, offset: { y: mm(-8) } },
|
|
30
|
+
...extra,
|
|
31
|
+
});
|
|
32
|
+
const band = (extra = {}) => ({
|
|
33
|
+
kind: 'box', id: 'band',
|
|
34
|
+
placement: { anchor: { to: 'page', edge: 'top-left' }, size: { width: 'fill', height: mm(12) } },
|
|
35
|
+
style: { backgroundColor: { hex: '#2a6f97' } },
|
|
36
|
+
...extra,
|
|
37
|
+
});
|
|
38
|
+
// Hangs from the band: goes when the band goes.
|
|
39
|
+
const bandLabel = {
|
|
40
|
+
kind: 'text', id: 'band-label', content: 'Unit',
|
|
41
|
+
placement: { anchor: { to: '#band', edge: 'bottom-left' } },
|
|
42
|
+
};
|
|
43
|
+
const runningHead = {
|
|
44
|
+
kind: 'text', id: 'head', content: '{chapterTitle}', when: 'folio',
|
|
45
|
+
placement: { anchor: { to: 'container', edge: 'top-right' } },
|
|
46
|
+
};
|
|
47
|
+
const SHELL = {
|
|
48
|
+
id: 'shell',
|
|
49
|
+
frames: [{ name: 'texto', flow: true }],
|
|
50
|
+
decoration: { elements: [band({ unless: 'frontmatter' }), bandLabel, folio({ when: 'folio' })] },
|
|
51
|
+
header: { elements: [runningHead] },
|
|
52
|
+
};
|
|
53
|
+
const MARKDOWN = [
|
|
54
|
+
'# Invented chapter',
|
|
55
|
+
'',
|
|
56
|
+
'::::page{template="shell" frontmatter}',
|
|
57
|
+
'',
|
|
58
|
+
'A title page with no folio and no band.',
|
|
59
|
+
'',
|
|
60
|
+
'::::',
|
|
61
|
+
'',
|
|
62
|
+
'::::page{template="shell" folio}',
|
|
63
|
+
'',
|
|
64
|
+
'The first body page prints its folio and its band.',
|
|
65
|
+
'',
|
|
66
|
+
'::::',
|
|
67
|
+
'',
|
|
68
|
+
'::::page{template="shell" folio=false}',
|
|
69
|
+
'',
|
|
70
|
+
'A fence that writes false sets nothing.',
|
|
71
|
+
'',
|
|
72
|
+
'::::',
|
|
73
|
+
].join('\n');
|
|
74
|
+
function build(templates = [SHELL], markdown = MARKDOWN) {
|
|
75
|
+
return buildDocument({ markdown }, { ...PAGE, pageTemplates: templates }, createMeasurementCache());
|
|
76
|
+
}
|
|
77
|
+
const composedPages = (doc) => doc.pages.filter((p) => p.composed);
|
|
78
|
+
const decoIds = (page) => (page.composed.decoration?.blocks ?? []).map((b) => b.elementId ?? '').filter(Boolean);
|
|
79
|
+
const headText = (page) => (page.header?.blocks ?? [])
|
|
80
|
+
.filter((b) => b.kind === 'text')
|
|
81
|
+
.flatMap((b) => b.lines.map((l) => l.text));
|
|
82
|
+
describe('page fence conditions (#1087)', () => {
|
|
83
|
+
it('reads an attribute as set when the fence writes it as a flag or with any value but false', () => {
|
|
84
|
+
expect(fenceSetsAttribute({ folio: '' }, 'folio')).toBe(true);
|
|
85
|
+
expect(fenceSetsAttribute({ folio: 'yes' }, 'folio')).toBe(true);
|
|
86
|
+
expect(fenceSetsAttribute({ folio: 'False' }, 'folio')).toBe(false);
|
|
87
|
+
expect(fenceSetsAttribute({}, 'folio')).toBe(false);
|
|
88
|
+
expect(fenceSetsAttribute(undefined, 'folio')).toBe(false);
|
|
89
|
+
// Not a key of Object.prototype.
|
|
90
|
+
expect(fenceSetsAttribute({}, 'toString')).toBe(false);
|
|
91
|
+
expect(fenceConditionMet({}, undefined)).toBe(true);
|
|
92
|
+
expect(fenceConditionMet({ when: 'folio' }, undefined)).toBe(false);
|
|
93
|
+
expect(fenceConditionMet({ unless: 'frontmatter' }, undefined)).toBe(true);
|
|
94
|
+
expect(fenceConditionMet({ when: 'a', unless: 'b' }, { a: '', b: '' })).toBe(false);
|
|
95
|
+
expect(fenceAttributesSet({ template: 'shell', folio: '', draft: 'false' })).toEqual(['template', 'folio']);
|
|
96
|
+
});
|
|
97
|
+
it('one shell: the front-matter page draws no band and no folio, the body page both', () => {
|
|
98
|
+
const [front, body, off] = composedPages(build());
|
|
99
|
+
expect(front && body && off).toBeTruthy();
|
|
100
|
+
expect(decoIds(front)).toEqual([]);
|
|
101
|
+
expect(decoIds(body)).toEqual(['band', 'band-label', 'folio']);
|
|
102
|
+
// folio=false: no folio; no frontmatter: the band and what hangs from it.
|
|
103
|
+
expect(decoIds(off)).toEqual(['band', 'band-label']);
|
|
104
|
+
});
|
|
105
|
+
it('the template running head follows the same rule', () => {
|
|
106
|
+
const [front, body, off] = composedPages(build());
|
|
107
|
+
expect(headText(front)).toEqual([]);
|
|
108
|
+
expect(headText(body)).toEqual(['Invented chapter']);
|
|
109
|
+
expect(headText(off)).toEqual([]);
|
|
110
|
+
});
|
|
111
|
+
it('the document running heads read it too: a page with no fence sets nothing', () => {
|
|
112
|
+
const doc = buildDocument({ markdown: '# Plain\n\nFlow page.\n\n::::page{template="bare" frontmatter}\n\nFront.\n\n::::' }, {
|
|
113
|
+
...PAGE,
|
|
114
|
+
pageTemplates: [{ id: 'bare', frames: [{ name: 'texto', flow: true }] }],
|
|
115
|
+
footer: { elements: [folio({ unless: 'frontmatter' }), { ...folio({ when: 'frontmatter' }), id: 'roman', content: 'front' }] },
|
|
116
|
+
}, createMeasurementCache());
|
|
117
|
+
const plain = doc.pages.find((p) => !p.composed);
|
|
118
|
+
const front = doc.pages.find((p) => p.composed);
|
|
119
|
+
const footIds = (p) => (p.footer?.blocks ?? []).map((b) => b.elementId);
|
|
120
|
+
expect(footIds(plain)).toEqual(['folio']);
|
|
121
|
+
expect(footIds(front)).toEqual(['roman']);
|
|
122
|
+
});
|
|
123
|
+
it('elements without a condition draw as before (same blocks as a shell with none)', () => {
|
|
124
|
+
const plain = { ...SHELL, decoration: { elements: [band(), bandLabel, folio()] }, header: { elements: [{ ...runningHead, when: undefined }] } };
|
|
125
|
+
const md = '# C\n\n::::page{template="shell" frontmatter}\n\nText.\n\n::::';
|
|
126
|
+
const a = composedPages(build([plain], md))[0];
|
|
127
|
+
expect(decoIds(a)).toEqual(['band', 'band-label', 'folio']);
|
|
128
|
+
expect(headText(a)).toEqual(['C']);
|
|
129
|
+
});
|
|
130
|
+
it('the source map of a drawn element keeps its config path; nothing answers where an element is not drawn', () => {
|
|
131
|
+
const doc = build();
|
|
132
|
+
const [front, body] = composedPages(doc);
|
|
133
|
+
const bandBlock = body.composed.decoration.blocks.find((b) => b.elementId === 'band');
|
|
134
|
+
const at = { x: bandBlock.bbox.x + bandBlock.bbox.width - 4, y: bandBlock.bbox.y + 2 };
|
|
135
|
+
const paths = (pageIndex) => sourceAt(doc, pageIndex, at.x, at.y)
|
|
136
|
+
.map((e) => (e.source.kind === 'config' ? e.source.path : undefined));
|
|
137
|
+
expect(paths(body.index)).toContain('/pageTemplates/0/decoration/elements/0');
|
|
138
|
+
expect(paths(front.index)).not.toContain('/pageTemplates/0/decoration/elements/0');
|
|
139
|
+
// The folio keeps its own path (its index in the template, not among
|
|
140
|
+
// the elements drawn).
|
|
141
|
+
const folioBlock = body.composed.decoration.blocks.find((b) => b.elementId === 'folio');
|
|
142
|
+
expect(folioBlock.configPath).toBe('/pageTemplates/0/decoration/elements/2');
|
|
143
|
+
});
|
|
144
|
+
it('survives stripping and the extends chain', () => {
|
|
145
|
+
expect(stripPageTemplatesDefaults([SHELL])[0].decoration.elements[0]).toMatchObject({ unless: 'frontmatter' });
|
|
146
|
+
const child = { id: 'child', extends: 'shell' };
|
|
147
|
+
const md = '::::page{template="child" frontmatter}\n\nText.\n\n::::';
|
|
148
|
+
expect(decoIds(composedPages(build([SHELL, child], md))[0])).toEqual([]);
|
|
149
|
+
});
|
|
150
|
+
it('validation: a value that names no attribute, and a condition a heading design ignores', () => {
|
|
151
|
+
const warnings = collectConfigWarnings({
|
|
152
|
+
header: { elements: [folio({ when: 7 })] },
|
|
153
|
+
pageTemplates: [{ ...SHELL, decoration: { elements: [band({ unless: '' })] } }],
|
|
154
|
+
headingStyles: [{ id: 'h', advancedDesign: { slot: { elements: [folio({ when: 'folio' })] } } }],
|
|
155
|
+
}).filter((w) => w.kind === 'unknownConfigValue');
|
|
156
|
+
expect(warnings).toEqual(expect.arrayContaining([
|
|
157
|
+
expect.objectContaining({ path: 'header.elements[0].when', value: '7', used: '' }),
|
|
158
|
+
expect.objectContaining({ path: 'pageTemplates[0].decoration.elements[0].unless', value: '', used: '' }),
|
|
159
|
+
expect.objectContaining({ path: 'headingStyles[0].advancedDesign.slot.elements[0].when', value: 'folio', used: '' }),
|
|
160
|
+
]));
|
|
161
|
+
// The shell itself is clean.
|
|
162
|
+
expect(collectConfigWarnings({ pageTemplates: [SHELL] }).filter((w) => w.kind === 'unknownConfigValue' || w.kind === 'unknownConfigKey')).toEqual([]);
|
|
163
|
+
});
|
|
164
|
+
it('conditionNeverMet: the conditions on attributes no page sets', () => {
|
|
165
|
+
const config = { pageTemplates: [SHELL] };
|
|
166
|
+
expect(fenceConditionUses(config).map((u) => `${u.condition}:${u.attribute}`)).toEqual(['unless:frontmatter', 'when:folio', 'when:folio']);
|
|
167
|
+
expect(fenceConditionsNeverMet(config, ['folio', 'frontmatter'])).toEqual([]);
|
|
168
|
+
expect(fenceConditionsNeverMet(config, ['folio']).map((u) => u.path)).toEqual(['pageTemplates[0].decoration.elements[0].unless']);
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
//# sourceMappingURL=fenceCondition.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fenceCondition.test.js","sourceRoot":"","sources":["../../../src/__tests__/composed/fenceCondition.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Modules nested more than one level and rows that share their room
|
|
3
|
+
* (#1095): a page shell whose modules stack holds a row (`banda`) of a
|
|
4
|
+
* notice box beside a column (`columna`, a stack inside the row) of photo
|
|
5
|
+
* cards, and, under it, a row of notice boxes whose widths are negotiated
|
|
6
|
+
* by `grow` and `shrink`. A note frame of the page hangs under the row it
|
|
7
|
+
* names (`#banda`). The words are written for this fixture, in Spanish and
|
|
8
|
+
* English; the pictures are the solid placeholders of `fixtures/page8`.
|
|
9
|
+
*/
|
|
10
|
+
import type { PostextConfig } from '../../../types';
|
|
11
|
+
import type { PageTemplate } from '../../../composed/types';
|
|
12
|
+
import { type RowsLocale } from './moduleRows';
|
|
13
|
+
/** The page shell: a title, the modules, and a note under the row. */
|
|
14
|
+
export declare const NESTED_TEMPLATE: PageTemplate;
|
|
15
|
+
/** A notice box 60 mm wide that takes twice its share of what is left. */
|
|
16
|
+
export declare const WIDE_MODULE: PageTemplate;
|
|
17
|
+
/** A notice box 30 mm wide that takes one share. */
|
|
18
|
+
export declare const NARROW_MODULE: PageTemplate;
|
|
19
|
+
export declare const NESTED_CONFIG: PostextConfig;
|
|
20
|
+
/** A notice box of another template, with the box words of `k`. */
|
|
21
|
+
export declare const boxOf: (template: string, lang: RowsLocale, k: number) => string;
|
|
22
|
+
/** The page: a box beside two cards stacked, a note under them, then a
|
|
23
|
+
* wide and a narrow box sharing a row. */
|
|
24
|
+
export declare const nestedPage: (lang: RowsLocale) => string;
|
|
25
|
+
//# sourceMappingURL=moduleNesting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moduleNesting.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/composed/fixtures/moduleNesting.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAoE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAEjH,sEAAsE;AACtE,eAAO,MAAM,eAAe,EAAE,YAgB7B,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,WAAW,EAAE,YAAwE,CAAC;AACnG,oDAAoD;AACpD,eAAO,MAAM,aAAa,EAAE,YAA2E,CAAC;AAExG,eAAO,MAAM,aAAa,EAAE,aAG3B,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,KAAK,GAAI,UAAU,MAAM,EAAE,MAAM,UAAU,EAAE,GAAG,MAAM,KAAG,MACO,CAAC;AAE9E;2CAC2C;AAC3C,eAAO,MAAM,UAAU,GAAI,MAAM,UAAU,KAAG,MAG4D,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { MODULE_CONFIG, mm } from './modules';
|
|
2
|
+
import { CARD_MODULE, NOTICE_MODULE, ROWS_WORDS, cardModule, noticeModule } from './moduleRows';
|
|
3
|
+
/** The page shell: a title, the modules, and a note under the row. */
|
|
4
|
+
export const NESTED_TEMPLATE = {
|
|
5
|
+
id: 'anidada',
|
|
6
|
+
header: false,
|
|
7
|
+
frames: [
|
|
8
|
+
{ name: 'titulo', takes: 'h1', placement: { anchor: { to: 'container', edge: 'top-left' } } },
|
|
9
|
+
{ name: 'nota', style: 'pastilla', width: 'auto', optional: true, placement: { anchor: { to: '#banda', edge: 'below' }, offset: { y: mm(3) } } },
|
|
10
|
+
],
|
|
11
|
+
groups: [
|
|
12
|
+
{ name: 'cuerpo', modules: true, gap: mm(14), placement: { anchor: { to: '#titulo', edge: 'below' }, offset: { y: mm(6) }, size: { width: 'fill', height: 'fill' } } },
|
|
13
|
+
// A row whose second cell is a column of cards: two levels inside the
|
|
14
|
+
// page's stack.
|
|
15
|
+
{ name: 'banda', modules: true, kind: 'row', within: 'cuerpo', templates: ['aviso'], gap: mm(6) },
|
|
16
|
+
{ name: 'columna', modules: true, within: 'banda', templates: ['tarjeta'], gap: mm(4) },
|
|
17
|
+
// A row of boxes that share the room by grow and shrink.
|
|
18
|
+
{ name: 'reparto', modules: true, kind: 'row', within: 'cuerpo', templates: ['ancho', 'estrecho'], gap: mm(5) },
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
/** A notice box 60 mm wide that takes twice its share of what is left. */
|
|
22
|
+
export const WIDE_MODULE = { ...NOTICE_MODULE, id: 'ancho', width: mm(60), grow: 2 };
|
|
23
|
+
/** A notice box 30 mm wide that takes one share. */
|
|
24
|
+
export const NARROW_MODULE = { ...NOTICE_MODULE, id: 'estrecho', width: mm(30), grow: 1 };
|
|
25
|
+
export const NESTED_CONFIG = {
|
|
26
|
+
...MODULE_CONFIG,
|
|
27
|
+
pageTemplates: [NESTED_TEMPLATE, NOTICE_MODULE, CARD_MODULE, WIDE_MODULE, NARROW_MODULE],
|
|
28
|
+
};
|
|
29
|
+
/** A notice box of another template, with the box words of `k`. */
|
|
30
|
+
export const boxOf = (template, lang, k) => noticeModule(lang, k).replace('template="aviso"', `template="${template}"`);
|
|
31
|
+
/** The page: a box beside two cards stacked, a note under them, then a
|
|
32
|
+
* wide and a narrow box sharing a row. */
|
|
33
|
+
export const nestedPage = (lang) => `::::page{template="anidada"}\n# ${ROWS_WORDS[lang].title}\n\n`
|
|
34
|
+
+ [noticeModule(lang, 0), cardModule(lang, 0), cardModule(lang, 1), boxOf('ancho', lang, 1), boxOf('estrecho', lang, 0)].join('\n')
|
|
35
|
+
+ `\n:::frame{slot="nota"}\n${lang === 'es' ? 'Fotos de la orilla' : 'Photos of the bank'}\n:::\n::::\n`;
|
|
36
|
+
//# sourceMappingURL=moduleNesting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moduleNesting.js","sourceRoot":"","sources":["../../../../src/__tests__/composed/fixtures/moduleNesting.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Modules side by side (#1088): a page shell whose modules stack holds a
|
|
3
|
+
* row of two boxes (`aviso`) over a 2 × 2 grid of photo cards (`tarjeta`),
|
|
4
|
+
* both groups inside the stack, so the Markdown writes modules alone. The
|
|
5
|
+
* words are written for this fixture, in Spanish and English (the Spanish
|
|
6
|
+
* first box is longer, so its row grows and the cards move down); the
|
|
7
|
+
* pictures are the solid placeholders of `fixtures/page8`.
|
|
8
|
+
*/
|
|
9
|
+
import type { PostextConfig } from '../../../types';
|
|
10
|
+
import type { PageTemplate } from '../../../composed/types';
|
|
11
|
+
/** The page shell: a title, then the modules; boxes go two to a row and
|
|
12
|
+
* cards two to a row, each where its first module comes. */
|
|
13
|
+
export declare const ROWS_TEMPLATE: PageTemplate;
|
|
14
|
+
/** A box with a tab over its text. */
|
|
15
|
+
export declare const NOTICE_MODULE: PageTemplate;
|
|
16
|
+
/** A photo card with a caption pill hanging under it. */
|
|
17
|
+
export declare const CARD_MODULE: PageTemplate;
|
|
18
|
+
export declare const ROWS_CONFIG: PostextConfig;
|
|
19
|
+
export declare const ROWS_WORDS: {
|
|
20
|
+
es: {
|
|
21
|
+
title: string;
|
|
22
|
+
tabs: string[];
|
|
23
|
+
boxes: string[];
|
|
24
|
+
captions: string[];
|
|
25
|
+
};
|
|
26
|
+
en: {
|
|
27
|
+
title: string;
|
|
28
|
+
tabs: string[];
|
|
29
|
+
boxes: string[];
|
|
30
|
+
captions: string[];
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
export type RowsLocale = keyof typeof ROWS_WORDS;
|
|
34
|
+
/** A box module's block. */
|
|
35
|
+
export declare const noticeModule: (lang: RowsLocale, k: number) => string;
|
|
36
|
+
/** A card module's block. */
|
|
37
|
+
export declare const cardModule: (lang: RowsLocale, k: number) => string;
|
|
38
|
+
/** The page: a title, two boxes, four cards: modules alone. */
|
|
39
|
+
export declare const rowsPage: (lang: RowsLocale, modules?: readonly string[]) => string;
|
|
40
|
+
//# sourceMappingURL=moduleRows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moduleRows.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/composed/fixtures/moduleRows.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAM5D;6DAC6D;AAC7D,eAAO,MAAM,aAAa,EAAE,YAW3B,CAAC;AAEF,sCAAsC;AACtC,eAAO,MAAM,aAAa,EAAE,YAM3B,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,WAAW,EAAE,YAOzB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,aAGzB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;CAmBtB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,UAAU,CAAC;AAEjD,4BAA4B;AAC5B,eAAO,MAAM,YAAY,GAAI,MAAM,UAAU,EAAE,GAAG,MAAM,KAAG,MAC0E,CAAC;AAEtI,6BAA6B;AAC7B,eAAO,MAAM,UAAU,GAAI,MAAM,UAAU,EAAE,GAAG,MAAM,KAAG,MAC4G,CAAC;AAEtK,+DAA+D;AAC/D,eAAO,MAAM,QAAQ,GAAI,MAAM,UAAU,EAAE,UAAS,SAAS,MAAM,EAAoG,KAAG,MAChF,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { MODULE_CONFIG, mm } from './modules';
|
|
2
|
+
import { PAGE8_RESOURCES } from './page8';
|
|
3
|
+
const PICTURES = PAGE8_RESOURCES.filter((r) => r.id.startsWith('foto-')).map((r) => r.id);
|
|
4
|
+
/** The page shell: a title, then the modules; boxes go two to a row and
|
|
5
|
+
* cards two to a row, each where its first module comes. */
|
|
6
|
+
export const ROWS_TEMPLATE = {
|
|
7
|
+
id: 'doble',
|
|
8
|
+
header: false,
|
|
9
|
+
frames: [
|
|
10
|
+
{ name: 'titulo', takes: 'h1', placement: { anchor: { to: 'container', edge: 'top-left' } } },
|
|
11
|
+
],
|
|
12
|
+
groups: [
|
|
13
|
+
{ name: 'cuerpo', modules: true, gap: mm(8), placement: { anchor: { to: '#titulo', edge: 'below' }, offset: { y: mm(6) }, size: { width: 'fill', height: 'fill' } } },
|
|
14
|
+
{ name: 'par', modules: true, kind: 'row', within: 'cuerpo', templates: ['aviso'], gap: mm(6) },
|
|
15
|
+
{ name: 'tarjetas', modules: true, kind: 'grid', within: 'cuerpo', templates: ['tarjeta'], columns: 2, columnGap: mm(6), rowGap: mm(6), rowAlign: 'start' },
|
|
16
|
+
],
|
|
17
|
+
};
|
|
18
|
+
/** A box with a tab over its text. */
|
|
19
|
+
export const NOTICE_MODULE = {
|
|
20
|
+
id: 'aviso',
|
|
21
|
+
role: 'module',
|
|
22
|
+
frames: [
|
|
23
|
+
{ name: 'texto', style: 'recuadro', placement: { anchor: { to: 'container', edge: 'top-left' }, offset: { y: mm(6.4) } } },
|
|
24
|
+
],
|
|
25
|
+
};
|
|
26
|
+
/** A photo card with a caption pill hanging under it. */
|
|
27
|
+
export const CARD_MODULE = {
|
|
28
|
+
id: 'tarjeta',
|
|
29
|
+
role: 'module',
|
|
30
|
+
frames: [
|
|
31
|
+
{ name: 'foto', style: 'marco', placement: { anchor: { to: 'container', edge: 'top-left' } } },
|
|
32
|
+
{ name: 'pie', style: 'pastilla', width: 'auto', layer: 2, overlap: 'allow', placement: { anchor: { to: '#foto', edge: 'bottom' }, offset: { y: mm(4) } } },
|
|
33
|
+
],
|
|
34
|
+
};
|
|
35
|
+
export const ROWS_CONFIG = {
|
|
36
|
+
...MODULE_CONFIG,
|
|
37
|
+
pageTemplates: [ROWS_TEMPLATE, NOTICE_MODULE, CARD_MODULE],
|
|
38
|
+
};
|
|
39
|
+
export const ROWS_WORDS = {
|
|
40
|
+
es: {
|
|
41
|
+
title: 'La orilla',
|
|
42
|
+
tabs: ['Observa', 'Piensa'],
|
|
43
|
+
boxes: [
|
|
44
|
+
'Junto al agua crecen juncos, cañas y sauces, que dan sombra y refugio a los animales pequeños. Muchas aves construyen allí sus nidos durante la primavera, cuando el río baja tranquilo y el suelo de la orilla está blando y húmedo.',
|
|
45
|
+
'¿Por qué crees que hay más plantas en la orilla que lejos del río?',
|
|
46
|
+
],
|
|
47
|
+
captions: ['El junco', 'El sauce', 'La rana', 'El martín pescador'],
|
|
48
|
+
},
|
|
49
|
+
en: {
|
|
50
|
+
title: 'The bank',
|
|
51
|
+
tabs: ['Look', 'Think'],
|
|
52
|
+
boxes: [
|
|
53
|
+
'Reeds and willows grow by the water and give shade to small animals.',
|
|
54
|
+
'Why do you think more plants grow on the bank than far from the river?',
|
|
55
|
+
],
|
|
56
|
+
captions: ['The reed', 'The willow', 'The frog', 'The kingfisher'],
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
/** A box module's block. */
|
|
60
|
+
export const noticeModule = (lang, k) => `:::module{template="aviso"}\n:::frame{slot="texto" label="${ROWS_WORDS[lang].tabs[k]}"}\n${ROWS_WORDS[lang].boxes[k]}\n:::\n:::\n`;
|
|
61
|
+
/** A card module's block. */
|
|
62
|
+
export const cardModule = (lang, k) => `:::module{template="tarjeta"}\n::resource{id="${PICTURES[k % PICTURES.length]}" slot="foto"}\n\n:::frame{slot="pie"}\n${ROWS_WORDS[lang].captions[k]}\n:::\n:::\n`;
|
|
63
|
+
/** The page: a title, two boxes, four cards: modules alone. */
|
|
64
|
+
export const rowsPage = (lang, modules = [noticeModule(lang, 0), noticeModule(lang, 1), ...[0, 1, 2, 3].map((k) => cardModule(lang, k))]) => `::::page{template="doble"}\n# ${ROWS_WORDS[lang].title}\n\n${modules.join('\n')}::::\n`;
|
|
65
|
+
//# sourceMappingURL=moduleRows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moduleRows.js","sourceRoot":"","sources":["../../../../src/__tests__/composed/fixtures/moduleRows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frameLooks.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/composed/frameLooks.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { buildDocument } from '../../pipeline/build';
|
|
3
|
+
import { createMeasurementCache } from '../../measure';
|
|
4
|
+
import { formatWarning } from '../../pipeline/contentWarnings';
|
|
5
|
+
import { validatePageTemplates } from '../../composed/validate';
|
|
6
|
+
import { lookOver, normalizeFrameLooks } from '../../composed/templates';
|
|
7
|
+
import { resolveAllConfig } from '../../pipeline/config';
|
|
8
|
+
import { CAPTIONS, GRID_CONFIG, GRID_RESOURCES, PHOTO_TEMPLATE } from './fixtures/grid';
|
|
9
|
+
// #1089: named frame looks. `frameLooks` defines them, a `:::frame{slot}`
|
|
10
|
+
// piece names one with `look="<id>"`, and each item of a repeating grid can
|
|
11
|
+
// so wear a colour of its own without leaving the grid.
|
|
12
|
+
class StubCtx {
|
|
13
|
+
font = '';
|
|
14
|
+
measureText(s) {
|
|
15
|
+
return { width: s.length * 7 };
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
globalThis.OffscreenCanvas = class {
|
|
19
|
+
getContext() {
|
|
20
|
+
return new StubCtx();
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const hex = (h, extra = {}) => ({ hex: h, model: 'hex', ...extra });
|
|
24
|
+
/** Nine pill colours, one per photo. */
|
|
25
|
+
const PILLS = ['#e63946', '#f4a261', '#e9c46a', '#2a9d8f', '#264653', '#8338ec', '#3a86ff', '#ff006e', '#6a994e'];
|
|
26
|
+
const LOOKS = PILLS.map((c, k) => ({ id: `pill-${k + 1}`, background: hex(c), body: { color: hex('#ffffff') } }));
|
|
27
|
+
const PICTURES = GRID_RESOURCES.filter((r) => r.id.startsWith('foto-')).map((r) => r.id);
|
|
28
|
+
/** A photo card whose pill (and, when given, photo frame) names a look. */
|
|
29
|
+
const item = (k, caption, pillLook, photoLook) => `:::frame{slot="foto"${photoLook ? ` look="${photoLook}"` : ''}}\n::resource{id="${PICTURES[k % PICTURES.length]}"}\n\n`
|
|
30
|
+
+ `:::frame{slot="pie"${pillLook ? ` look="${pillLook}"` : ''}}\n${caption}\n:::\n:::\n`;
|
|
31
|
+
const page = (items) => `::::page{template="fotos"}\n# Animals of the river\n\n${items.join('\n')}::::\n`;
|
|
32
|
+
const ninePills = () => page(CAPTIONS.en.map((c, k) => item(k, c, `pill-${k + 1}`)));
|
|
33
|
+
const build = (markdown, config = {}) => buildDocument({ markdown, resources: GRID_RESOURCES }, { ...GRID_CONFIG, frameLooks: LOOKS, ...config }, createMeasurementCache());
|
|
34
|
+
const composed = (doc) => doc.pages.find((p) => p.composed);
|
|
35
|
+
const frame = (p, name) => p.composed.frames.find((f) => f.name === name);
|
|
36
|
+
/** The fill and border of a frame's box. */
|
|
37
|
+
const box = (doc, name) => {
|
|
38
|
+
const p = composed(doc);
|
|
39
|
+
const f = frame(p, name);
|
|
40
|
+
const b = (p.floats ?? []).find((x) => x.id === f.blockIds[0]);
|
|
41
|
+
return b.designOverlay.blocks.find((x) => x.kind === 'box').box;
|
|
42
|
+
};
|
|
43
|
+
/** The colour of a frame's first line of text. */
|
|
44
|
+
const textColor = (doc, name) => {
|
|
45
|
+
const p = composed(doc);
|
|
46
|
+
const ids = new Set(frame(p, name).blockIds);
|
|
47
|
+
return (p.floats ?? []).find((b) => ids.has(b.id) && b.type === 'paragraph')?.color;
|
|
48
|
+
};
|
|
49
|
+
const warningsOf = (doc, kind) => (doc.contentWarnings ?? []).filter((w) => w.kind === kind);
|
|
50
|
+
describe('named frame looks (#1089)', () => {
|
|
51
|
+
it('gives each pill of a 3 × 3 photo grid its own colour', () => {
|
|
52
|
+
const doc = build(ninePills());
|
|
53
|
+
for (let k = 0; k < 9; k++) {
|
|
54
|
+
expect(box(doc, `pie[${k + 1}]`).backgroundColor).toBe(PILLS[k]);
|
|
55
|
+
expect(textColor(doc, `pie[${k + 1}]`)).toBe('#ffffff');
|
|
56
|
+
// The photo frames keep their style.
|
|
57
|
+
expect(box(doc, `foto[${k + 1}]`).borderColor).toBe('#2a6f97');
|
|
58
|
+
}
|
|
59
|
+
expect(warningsOf(doc, 'lookUnknown')).toEqual([]);
|
|
60
|
+
expect(warningsOf(doc, 'frameOverflow')).toEqual([]);
|
|
61
|
+
});
|
|
62
|
+
it('moves nothing: the grid is laid where it is without looks', () => {
|
|
63
|
+
const plain = build(page(CAPTIONS.en.map((c, k) => item(k, c))), { frameLooks: undefined });
|
|
64
|
+
const looked = build(ninePills());
|
|
65
|
+
const rects = (doc) => composed(doc).composed.frames.map((f) => [f.name, f.rect]);
|
|
66
|
+
expect(rects(looked)).toEqual(rects(plain));
|
|
67
|
+
expect(box(plain, 'pie[1]').backgroundColor).toBe('#f4a259');
|
|
68
|
+
});
|
|
69
|
+
it('dresses an item\'s main frame too', () => {
|
|
70
|
+
const doc = build(page([item(0, 'The heron', undefined, 'teal'), item(1, 'The otter')]), {
|
|
71
|
+
frameLooks: [{ id: 'teal', border: { color: hex('#008080') } }],
|
|
72
|
+
});
|
|
73
|
+
expect(box(doc, 'foto[1]').borderColor).toBe('#008080');
|
|
74
|
+
expect(box(doc, 'foto[2]').borderColor).toBe('#2a6f97');
|
|
75
|
+
expect(box(doc, 'pie[1]').backgroundColor).toBe('#f4a259');
|
|
76
|
+
});
|
|
77
|
+
it('lays the named look over the template frame\'s look, key by key', () => {
|
|
78
|
+
const template = {
|
|
79
|
+
...PHOTO_TEMPLATE,
|
|
80
|
+
frames: PHOTO_TEMPLATE.frames.map((f) => (f.name === 'pie' ? { ...f, look: { background: hex('#000000'), body: { color: hex('#ffff00') } } } : f)),
|
|
81
|
+
};
|
|
82
|
+
const doc = build(page([item(0, 'The heron', 'fill'), item(1, 'The otter')]), {
|
|
83
|
+
pageTemplates: [template],
|
|
84
|
+
frameLooks: [{ id: 'fill', background: hex('#123456') }],
|
|
85
|
+
});
|
|
86
|
+
// The named look's fill, the template look's text colour.
|
|
87
|
+
expect(box(doc, 'pie[1]').backgroundColor).toBe('#123456');
|
|
88
|
+
expect(textColor(doc, 'pie[1]')).toBe('#ffff00');
|
|
89
|
+
// An item that names none wears the template look.
|
|
90
|
+
expect(box(doc, 'pie[2]').backgroundColor).toBe('#000000');
|
|
91
|
+
expect(lookOver({ background: hex('#000000'), body: { color: hex('#ffff00') } }, { id: 'x', name: 'X', body: { boldColor: hex('#ff0000') } }))
|
|
92
|
+
.toEqual({ background: hex('#000000'), body: { color: hex('#ffff00'), boldColor: hex('#ff0000') } });
|
|
93
|
+
});
|
|
94
|
+
it('dresses a frame of a page with no grid', () => {
|
|
95
|
+
const config = {
|
|
96
|
+
pageTemplates: [{ id: 'ficha', header: false, frames: [{ name: 'caja', style: 'pastilla', flow: true, placement: { anchor: { to: 'container', edge: 'top-left' } } }] }],
|
|
97
|
+
frameLooks: [{ id: 'rosa', background: hex('#f6c3d0') }],
|
|
98
|
+
};
|
|
99
|
+
const doc = build('::::page{template="ficha"}\n\n:::frame{slot="caja" look="rosa"}\nThe text of the box.\n:::\n\n::::\n', config);
|
|
100
|
+
expect(box(doc, 'caja').backgroundColor).toBe('#f6c3d0');
|
|
101
|
+
});
|
|
102
|
+
it('warns of a look frameLooks lacks, at its value, and wears the style', () => {
|
|
103
|
+
const md = page([item(0, 'The heron', 'pill-01'), item(1, 'The otter', 'pill-2')]);
|
|
104
|
+
const doc = build(md);
|
|
105
|
+
const ws = warningsOf(doc, 'lookUnknown');
|
|
106
|
+
expect(ws).toHaveLength(1);
|
|
107
|
+
const w = ws[0];
|
|
108
|
+
expect(w).toMatchObject({ template: 'fotos', frame: 'pie', look: 'pill-01', suggestion: 'pill-1', fenceIndex: 0 });
|
|
109
|
+
expect(md.slice(w.sourceStart, w.sourceEnd)).toBe('pill-01');
|
|
110
|
+
expect(formatWarning(w)).toContain('names the look "pill-01", which frameLooks does not have (did you mean "pill-1"?)');
|
|
111
|
+
expect(box(doc, 'pie[1]').backgroundColor).toBe('#f4a259');
|
|
112
|
+
expect(box(doc, 'pie[2]').backgroundColor).toBe(PILLS[1]);
|
|
113
|
+
// With no frameLooks at all, every look is unknown.
|
|
114
|
+
expect(warningsOf(build(md, { frameLooks: undefined }), 'lookUnknown')).toHaveLength(2);
|
|
115
|
+
});
|
|
116
|
+
it('a part palette recolours a palette-linked look colour', () => {
|
|
117
|
+
const config = {
|
|
118
|
+
colorPalette: [{ id: 'tint', name: 'Tint', value: hex('#ffeb99') }],
|
|
119
|
+
pageTemplates: [{ ...PHOTO_TEMPLATE, palette: 'tint=#c3e0f6' }],
|
|
120
|
+
frameLooks: [{ id: 'linked', background: hex('#ffeb99', { paletteId: 'tint' }) }, { id: 'loose', background: hex('#abcdef') }],
|
|
121
|
+
};
|
|
122
|
+
const doc = build(page([item(0, 'The heron', 'linked'), item(1, 'The otter', 'loose')]), config);
|
|
123
|
+
expect(box(doc, 'pie[1]').backgroundColor).toBe('#c3e0f6');
|
|
124
|
+
expect(box(doc, 'pie[2]').backgroundColor).toBe('#abcdef');
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
describe('frameLooks in the config (#1089)', () => {
|
|
128
|
+
it('keeps what the engine can use, the first of each id', () => {
|
|
129
|
+
const looks = normalizeFrameLooks([
|
|
130
|
+
{ id: 'a', name: 'A', background: hex('#111111'), border: { color: { model: 'hex' } }, frobnicate: 1 },
|
|
131
|
+
{ id: 'a', background: hex('#222222') },
|
|
132
|
+
{ background: hex('#333333') },
|
|
133
|
+
{ id: 'b' },
|
|
134
|
+
]);
|
|
135
|
+
expect(looks).toEqual([{ id: 'a', name: 'A', background: hex('#111111') }, { id: 'b' }]);
|
|
136
|
+
expect(normalizeFrameLooks([])).toBeUndefined();
|
|
137
|
+
expect(resolveAllConfig({}).frameLooks).toBeUndefined();
|
|
138
|
+
expect(resolveAllConfig({ frameLooks: [{ id: 'a', background: hex('#111111') }] }).frameLooks).toEqual([{ id: 'a', background: hex('#111111') }]);
|
|
139
|
+
});
|
|
140
|
+
it('is validated as a frame\'s look', () => {
|
|
141
|
+
const w = validatePageTemplates({
|
|
142
|
+
frameLooks: [{ id: 'a', backgrnd: hex('#000000'), label: { colour: hex('#000000') } }, { background: hex('#000000') }],
|
|
143
|
+
});
|
|
144
|
+
expect(w.map((x) => `${x.kind} ${x.path}${x.suggestion ? ` → ${x.suggestion}` : ''}`).sort()).toEqual([
|
|
145
|
+
'unknownConfigKey /frameLooks/0/backgrnd → background',
|
|
146
|
+
'unknownConfigKey /frameLooks/0/label/colour → color',
|
|
147
|
+
'unknownConfigValue /frameLooks/1/id',
|
|
148
|
+
]);
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
//# sourceMappingURL=frameLooks.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frameLooks.test.js","sourceRoot":"","sources":["../../../src/__tests__/composed/frameLooks.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moduleNesting.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/composed/moduleNesting.test.ts"],"names":[],"mappings":""}
|