postext 0.3.15 → 0.3.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/createLayout.test.js +12 -13
- package/dist/__tests__/createLayout.test.js.map +1 -1
- package/dist/__tests__/defaults/resourceTypes.test.d.ts +2 -0
- package/dist/__tests__/defaults/resourceTypes.test.d.ts.map +1 -0
- package/dist/__tests__/defaults/resourceTypes.test.js +69 -0
- package/dist/__tests__/defaults/resourceTypes.test.js.map +1 -0
- package/dist/__tests__/exports.test.js +54 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/__tests__/parse/inlineRef.test.d.ts +2 -0
- package/dist/__tests__/parse/inlineRef.test.d.ts.map +1 -0
- package/dist/__tests__/parse/inlineRef.test.js +83 -0
- package/dist/__tests__/parse/inlineRef.test.js.map +1 -0
- package/dist/__tests__/parse/resourceDirective.test.d.ts +2 -0
- package/dist/__tests__/parse/resourceDirective.test.d.ts.map +1 -0
- package/dist/__tests__/parse/resourceDirective.test.js +55 -0
- package/dist/__tests__/parse/resourceDirective.test.js.map +1 -0
- package/dist/__tests__/pipeline/floatPlacement.test.d.ts +2 -0
- package/dist/__tests__/pipeline/floatPlacement.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/floatPlacement.test.js +141 -0
- package/dist/__tests__/pipeline/floatPlacement.test.js.map +1 -0
- package/dist/__tests__/pipeline/inlineRefRender.test.d.ts +2 -0
- package/dist/__tests__/pipeline/inlineRefRender.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/inlineRefRender.test.js +107 -0
- package/dist/__tests__/pipeline/inlineRefRender.test.js.map +1 -0
- package/dist/__tests__/pipeline/resourceNumbering.test.d.ts +2 -0
- package/dist/__tests__/pipeline/resourceNumbering.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/resourceNumbering.test.js +186 -0
- package/dist/__tests__/pipeline/resourceNumbering.test.js.map +1 -0
- package/dist/__tests__/table/model.test.d.ts +2 -0
- package/dist/__tests__/table/model.test.d.ts.map +1 -0
- package/dist/__tests__/table/model.test.js +187 -0
- package/dist/__tests__/table/model.test.js.map +1 -0
- package/dist/canvas-backend/blockRender.d.ts.map +1 -1
- package/dist/canvas-backend/blockRender.js +25 -6
- package/dist/canvas-backend/blockRender.js.map +1 -1
- package/dist/canvas-backend/headerFooter.d.ts +3 -2
- package/dist/canvas-backend/headerFooter.d.ts.map +1 -1
- package/dist/canvas-backend/headerFooter.js +63 -2
- package/dist/canvas-backend/headerFooter.js.map +1 -1
- package/dist/canvas-backend/index.d.ts +2 -0
- package/dist/canvas-backend/index.d.ts.map +1 -1
- package/dist/canvas-backend/index.js +11 -0
- package/dist/canvas-backend/index.js.map +1 -1
- package/dist/canvas-backend/renderResourceBlock.d.ts +28 -0
- package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -0
- package/dist/canvas-backend/renderResourceBlock.js +146 -0
- package/dist/canvas-backend/renderResourceBlock.js.map +1 -0
- package/dist/defaults/bodyText.d.ts.map +1 -1
- package/dist/defaults/bodyText.js +30 -0
- package/dist/defaults/bodyText.js.map +1 -1
- package/dist/defaults/captionStyle.d.ts +9 -0
- package/dist/defaults/captionStyle.d.ts.map +1 -0
- package/dist/defaults/captionStyle.js +74 -0
- package/dist/defaults/captionStyle.js.map +1 -0
- package/dist/defaults/debug.d.ts.map +1 -1
- package/dist/defaults/debug.js +6 -0
- package/dist/defaults/debug.js.map +1 -1
- package/dist/defaults/headerFooter.d.ts +20 -18
- package/dist/defaults/headerFooter.d.ts.map +1 -1
- package/dist/defaults/headerFooter.js +269 -165
- package/dist/defaults/headerFooter.js.map +1 -1
- package/dist/defaults/headings.d.ts.map +1 -1
- package/dist/defaults/headings.js +29 -6
- package/dist/defaults/headings.js.map +1 -1
- package/dist/defaults/index.d.ts +3 -0
- package/dist/defaults/index.d.ts.map +1 -1
- package/dist/defaults/index.js +19 -0
- package/dist/defaults/index.js.map +1 -1
- package/dist/defaults/resourceTypes.d.ts +8 -0
- package/dist/defaults/resourceTypes.d.ts.map +1 -0
- package/dist/defaults/resourceTypes.js +43 -0
- package/dist/defaults/resourceTypes.js.map +1 -0
- package/dist/defaults/shared.d.ts.map +1 -1
- package/dist/defaults/shared.js +30 -0
- package/dist/defaults/shared.js.map +1 -1
- package/dist/defaults/tableStyle.d.ts +11 -0
- package/dist/defaults/tableStyle.d.ts.map +1 -0
- package/dist/defaults/tableStyle.js +114 -0
- package/dist/defaults/tableStyle.js.map +1 -0
- package/dist/design/layout.d.ts +94 -0
- package/dist/design/layout.d.ts.map +1 -0
- package/dist/design/layout.js +642 -0
- package/dist/design/layout.js.map +1 -0
- package/dist/design/placeholders.d.ts +29 -0
- package/dist/design/placeholders.d.ts.map +1 -0
- package/dist/design/placeholders.js +126 -0
- package/dist/design/placeholders.js.map +1 -0
- package/dist/html-backend.d.ts.map +1 -1
- package/dist/html-backend.js +91 -1
- package/dist/html-backend.js.map +1 -1
- package/dist/index.d.ts +12 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/knuthPlass/richAdapter.d.ts +1 -0
- package/dist/knuthPlass/richAdapter.d.ts.map +1 -1
- package/dist/knuthPlass/richAdapter.js +2 -1
- package/dist/knuthPlass/richAdapter.js.map +1 -1
- package/dist/measure/cache.js +1 -1
- package/dist/measure/cache.js.map +1 -1
- package/dist/measure/rich.d.ts +7 -0
- package/dist/measure/rich.d.ts.map +1 -1
- package/dist/measure/rich.js +30 -0
- package/dist/measure/rich.js.map +1 -1
- package/dist/numbering.d.ts +16 -0
- package/dist/numbering.d.ts.map +1 -1
- package/dist/numbering.js +28 -18
- package/dist/numbering.js.map +1 -1
- package/dist/parse/blockParser.d.ts.map +1 -1
- package/dist/parse/blockParser.js +37 -9
- package/dist/parse/blockParser.js.map +1 -1
- package/dist/parse/inlineFormatting.d.ts +38 -0
- package/dist/parse/inlineFormatting.d.ts.map +1 -1
- package/dist/parse/inlineFormatting.js +84 -0
- package/dist/parse/inlineFormatting.js.map +1 -1
- package/dist/parse/sourceMapping.d.ts.map +1 -1
- package/dist/parse/sourceMapping.js +20 -0
- package/dist/parse/sourceMapping.js.map +1 -1
- package/dist/parse/types.d.ts +20 -1
- package/dist/parse/types.d.ts.map +1 -1
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +389 -17
- package/dist/pipeline/build.js.map +1 -1
- package/dist/pipeline/buildBlockKind.d.ts +14 -0
- package/dist/pipeline/buildBlockKind.d.ts.map +1 -1
- package/dist/pipeline/buildBlockKind.js +16 -1
- package/dist/pipeline/buildBlockKind.js.map +1 -1
- package/dist/pipeline/buildHelpers.d.ts.map +1 -1
- package/dist/pipeline/buildHelpers.js +7 -1
- package/dist/pipeline/buildHelpers.js.map +1 -1
- package/dist/pipeline/buildMeasurement.d.ts +17 -1
- package/dist/pipeline/buildMeasurement.d.ts.map +1 -1
- package/dist/pipeline/buildMeasurement.js +32 -0
- package/dist/pipeline/buildMeasurement.js.map +1 -1
- package/dist/pipeline/config.d.ts.map +1 -1
- package/dist/pipeline/config.js +3 -1
- package/dist/pipeline/config.js.map +1 -1
- package/dist/pipeline/floatPlacement.d.ts +45 -0
- package/dist/pipeline/floatPlacement.d.ts.map +1 -0
- package/dist/pipeline/floatPlacement.js +68 -0
- package/dist/pipeline/floatPlacement.js.map +1 -0
- package/dist/pipeline/headerFooter.d.ts +23 -7
- package/dist/pipeline/headerFooter.d.ts.map +1 -1
- package/dist/pipeline/headerFooter.js +258 -100
- package/dist/pipeline/headerFooter.js.map +1 -1
- package/dist/pipeline/placeholders.d.ts +6 -0
- package/dist/pipeline/placeholders.d.ts.map +1 -1
- package/dist/pipeline/placeholders.js +46 -0
- package/dist/pipeline/placeholders.js.map +1 -1
- package/dist/pipeline/placement.d.ts +15 -2
- package/dist/pipeline/placement.d.ts.map +1 -1
- package/dist/pipeline/placement.js +38 -3
- package/dist/pipeline/placement.js.map +1 -1
- package/dist/pipeline/resourceLayout.d.ts +58 -0
- package/dist/pipeline/resourceLayout.d.ts.map +1 -0
- package/dist/pipeline/resourceLayout.js +338 -0
- package/dist/pipeline/resourceLayout.js.map +1 -0
- package/dist/pipeline/resourceNumbering.d.ts +54 -0
- package/dist/pipeline/resourceNumbering.d.ts.map +1 -0
- package/dist/pipeline/resourceNumbering.js +218 -0
- package/dist/pipeline/resourceNumbering.js.map +1 -0
- package/dist/pipeline/styles.d.ts +6 -0
- package/dist/pipeline/styles.d.ts.map +1 -1
- package/dist/pipeline/styles.js +1 -1
- package/dist/pipeline/styles.js.map +1 -1
- package/dist/table/model.d.ts +53 -0
- package/dist/table/model.d.ts.map +1 -0
- package/dist/table/model.js +253 -0
- package/dist/table/model.js.map +1 -0
- package/dist/types.d.ts +397 -41
- package/dist/types.d.ts.map +1 -1
- package/dist/vdt.d.ts +165 -18
- package/dist/vdt.d.ts.map +1 -1
- package/dist/vdt.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/defaults/debug.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAwB,MAAM,UAAU,CAAC;AAGvF,eAAO,MAAM,oBAAoB,EAAE,
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/defaults/debug.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAwB,MAAM,UAAU,CAAC;AAGvF,eAAO,MAAM,oBAAoB,EAAE,mBAiBlC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,mBAAmB,CAoC7E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,CAsF/E"}
|
package/dist/defaults/debug.js
CHANGED
|
@@ -14,6 +14,7 @@ export const DEFAULT_DEBUG_CONFIG = {
|
|
|
14
14
|
headingHierarchy: true,
|
|
15
15
|
consecutiveHeadings: false,
|
|
16
16
|
listAfterHeading: false,
|
|
17
|
+
designIssues: true,
|
|
17
18
|
},
|
|
18
19
|
};
|
|
19
20
|
export function resolveDebugConfig(partial) {
|
|
@@ -49,6 +50,7 @@ export function resolveDebugConfig(partial) {
|
|
|
49
50
|
headingHierarchy: partial.warnings?.headingHierarchy ?? DEFAULT_DEBUG_CONFIG.warnings.headingHierarchy,
|
|
50
51
|
consecutiveHeadings: partial.warnings?.consecutiveHeadings ?? DEFAULT_DEBUG_CONFIG.warnings.consecutiveHeadings,
|
|
51
52
|
listAfterHeading: partial.warnings?.listAfterHeading ?? DEFAULT_DEBUG_CONFIG.warnings.listAfterHeading,
|
|
53
|
+
designIssues: partial.warnings?.designIssues ?? DEFAULT_DEBUG_CONFIG.warnings.designIssues,
|
|
52
54
|
},
|
|
53
55
|
};
|
|
54
56
|
}
|
|
@@ -125,6 +127,10 @@ export function stripDebugDefaults(debug) {
|
|
|
125
127
|
out.listAfterHeading = w.listAfterHeading;
|
|
126
128
|
warnHas = true;
|
|
127
129
|
}
|
|
130
|
+
if (w.designIssues !== undefined && w.designIssues !== def.designIssues) {
|
|
131
|
+
out.designIssues = w.designIssues;
|
|
132
|
+
warnHas = true;
|
|
133
|
+
}
|
|
128
134
|
if (warnHas) {
|
|
129
135
|
result.warnings = out;
|
|
130
136
|
hasOverride = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/defaults/debug.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,CAAC,MAAM,oBAAoB,GAAwB;IACvD,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IACtE,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAC3E,kBAAkB,EAAE;QAClB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE;QACzC,SAAS,EAAE,CAAC;KACb;IACD,YAAY,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;IAChC,QAAQ,EAAE;QACR,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,IAAI;QAChB,gBAAgB,EAAE,IAAI;QACtB,mBAAmB,EAAE,KAAK;QAC1B,gBAAgB,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/defaults/debug.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,24 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { DesignSlot, LegacyHeaderFooterSlot, ResolvedDesignBoxElement, ResolvedDesignRuleElement, ResolvedDesignSlot, ResolvedDesignTextElement } from '../types';
|
|
2
2
|
export type HeaderFooterSlotKind = 'header' | 'footer';
|
|
3
|
-
export declare const DEFAULT_HEADER_FOOTER_SLOT:
|
|
4
|
-
|
|
5
|
-
export declare const
|
|
3
|
+
export declare const DEFAULT_HEADER_FOOTER_SLOT: ResolvedDesignSlot;
|
|
4
|
+
/** Reference defaults for a freshly-created text element. */
|
|
5
|
+
export declare const DEFAULT_TEXT_ELEMENT: ResolvedDesignTextElement;
|
|
6
|
+
export declare const DEFAULT_RULE_ELEMENT: ResolvedDesignRuleElement;
|
|
7
|
+
export declare const DEFAULT_BOX_ELEMENT: ResolvedDesignBoxElement;
|
|
6
8
|
/** Built-in default header: book title (right, odd) + chapter title (left,
|
|
7
9
|
* even) + full-width rule. Applied when `config.header` is `undefined`. */
|
|
8
|
-
export declare const DEFAULT_HEADER_SLOT:
|
|
9
|
-
/** Built-in default footer: centered page number on every page.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
*
|
|
15
|
-
export declare function
|
|
16
|
-
/**
|
|
17
|
-
*
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
export declare
|
|
10
|
+
export declare const DEFAULT_HEADER_SLOT: ResolvedDesignSlot;
|
|
11
|
+
/** Built-in default footer: centered page number on every page. */
|
|
12
|
+
export declare const DEFAULT_FOOTER_SLOT: ResolvedDesignSlot;
|
|
13
|
+
/** Returns true when the slot uses the legacy `align`/`marginFromBody` shape. */
|
|
14
|
+
export declare function isLegacyHeaderFooterSlot(slot: unknown): slot is LegacyHeaderFooterSlot;
|
|
15
|
+
/** Convert a legacy-shaped header/footer slot to a `DesignSlot`. Safe to
|
|
16
|
+
* call on already-migrated slots (returns them unchanged). */
|
|
17
|
+
export declare function migrateLegacyHeaderFooterConfig(slot: unknown, kind: HeaderFooterSlotKind): DesignSlot | undefined;
|
|
18
|
+
/** Resolve a design slot used for header/footer. `undefined` returns the
|
|
19
|
+
* built-in default for `kind`. Legacy slots are migrated on the fly. */
|
|
20
|
+
export declare function resolveDesignSlot(slot: DesignSlot | undefined, kind?: HeaderFooterSlotKind): ResolvedDesignSlot;
|
|
21
|
+
export declare const resolveHeaderFooterConfig: typeof resolveDesignSlot;
|
|
22
|
+
export declare function stripDesignSlotDefaults(slot: DesignSlot | undefined, kind?: HeaderFooterSlotKind): DesignSlot | undefined;
|
|
23
|
+
export declare const stripHeaderFooterDefaults: typeof stripDesignSlotDefaults;
|
|
22
24
|
//# sourceMappingURL=headerFooter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headerFooter.d.ts","sourceRoot":"","sources":["../../src/defaults/headerFooter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"headerFooter.d.ts","sourceRoot":"","sources":["../../src/defaults/headerFooter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAMV,UAAU,EAEV,sBAAsB,EAGtB,wBAAwB,EAExB,yBAAyB,EACzB,kBAAkB,EAClB,yBAAyB,EAC1B,MAAM,UAAU,CAAC;AAGlB,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAQvD,eAAO,MAAM,0BAA0B,EAAE,kBAAqC,CAAC;AAE/E,6DAA6D;AAC7D,eAAO,MAAM,oBAAoB,EAAE,yBAmBlC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,yBAYlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,wBAajC,CAAC;AAEF;4EAC4E;AAC5E,eAAO,MAAM,mBAAmB,EAAE,kBAwDjC,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,EAAE,kBAuBjC,CAAC;AAyBF,iFAAiF;AACjF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,sBAAsB,CAKtF;AAyFD;+DAC+D;AAC/D,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,oBAAoB,GACzB,UAAU,GAAG,SAAS,CAUxB;AAoED;yEACyE;AACzE,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,GAAG,SAAS,EAC5B,IAAI,GAAE,oBAA+B,GACpC,kBAAkB,CAQpB;AAED,eAAO,MAAM,yBAAyB,0BAAoB,CAAC;AAc3D,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,GAAG,SAAS,EAC5B,IAAI,GAAE,oBAA+B,GACpC,UAAU,GAAG,SAAS,CAQxB;AAED,eAAO,MAAM,yBAAyB,gCAA0B,CAAC"}
|
|
@@ -1,34 +1,56 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DEFAULT_MAIN_COLOR } from './shared';
|
|
2
2
|
const DEFAULT_MARGIN_FROM_BODY = { value: 6, unit: 'pt' };
|
|
3
|
-
const DEFAULT_MARGIN_FROM_EDGE = { value: 0, unit: 'pt' };
|
|
4
3
|
function mainColor() {
|
|
5
4
|
return { ...DEFAULT_MAIN_COLOR };
|
|
6
5
|
}
|
|
7
|
-
export const DEFAULT_HEADER_FOOTER_SLOT = {
|
|
8
|
-
|
|
9
|
-
};
|
|
6
|
+
export const DEFAULT_HEADER_FOOTER_SLOT = { elements: [] };
|
|
7
|
+
/** Reference defaults for a freshly-created text element. */
|
|
10
8
|
export const DEFAULT_TEXT_ELEMENT = {
|
|
11
9
|
kind: 'text',
|
|
12
|
-
|
|
13
|
-
content: '',
|
|
10
|
+
id: 'text',
|
|
14
11
|
parity: 'all',
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
placement: {
|
|
13
|
+
anchor: { to: 'container', edge: 'bottom' },
|
|
14
|
+
offset: { x: { value: 0, unit: 'pt' }, y: { value: 0, unit: 'pt' } },
|
|
15
|
+
size: { width: 'auto', height: 'auto' },
|
|
16
|
+
},
|
|
17
|
+
content: '',
|
|
17
18
|
fontFamily: 'EB Garamond',
|
|
18
19
|
fontSize: { value: 8, unit: 'pt' },
|
|
19
20
|
fontWeight: 400,
|
|
20
21
|
italic: false,
|
|
21
22
|
color: { hex: '#000000', model: 'hex' },
|
|
23
|
+
align: 'center',
|
|
24
|
+
verticalAlign: 'middle',
|
|
25
|
+
lineHeight: 1.2,
|
|
26
|
+
overflow: 'ellipsis-end',
|
|
22
27
|
};
|
|
23
28
|
export const DEFAULT_RULE_ELEMENT = {
|
|
24
29
|
kind: 'rule',
|
|
30
|
+
id: 'rule',
|
|
31
|
+
parity: 'all',
|
|
32
|
+
placement: {
|
|
33
|
+
anchor: { to: 'container', edge: 'bottom' },
|
|
34
|
+
offset: { x: { value: 0, unit: 'pt' }, y: { value: 0, unit: 'pt' } },
|
|
35
|
+
size: { width: 'fill' },
|
|
36
|
+
},
|
|
37
|
+
direction: 'horizontal',
|
|
25
38
|
color: { hex: '#000000', model: 'hex' },
|
|
26
39
|
thickness: { value: 0.5, unit: 'pt' },
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
40
|
+
};
|
|
41
|
+
export const DEFAULT_BOX_ELEMENT = {
|
|
42
|
+
kind: 'box',
|
|
43
|
+
id: 'box',
|
|
31
44
|
parity: 'all',
|
|
45
|
+
placement: {
|
|
46
|
+
anchor: { to: 'container', edge: 'top-left' },
|
|
47
|
+
offset: { x: { value: 0, unit: 'pt' }, y: { value: 0, unit: 'pt' } },
|
|
48
|
+
size: { width: { value: 20, unit: 'pt' }, height: { value: 20, unit: 'pt' } },
|
|
49
|
+
},
|
|
50
|
+
style: {
|
|
51
|
+
backgroundColor: mainColor(),
|
|
52
|
+
borderRadius: { value: 4, unit: 'pt' },
|
|
53
|
+
},
|
|
32
54
|
};
|
|
33
55
|
/** Built-in default header: book title (right, odd) + chapter title (left,
|
|
34
56
|
* even) + full-width rule. Applied when `config.header` is `undefined`. */
|
|
@@ -36,223 +58,305 @@ export const DEFAULT_HEADER_SLOT = {
|
|
|
36
58
|
elements: [
|
|
37
59
|
{
|
|
38
60
|
kind: 'text',
|
|
39
|
-
|
|
40
|
-
content: '{title}',
|
|
61
|
+
id: 'titleOdd',
|
|
41
62
|
parity: 'odd',
|
|
42
|
-
|
|
43
|
-
|
|
63
|
+
placement: {
|
|
64
|
+
anchor: { to: 'container', edge: 'bottom-right' },
|
|
65
|
+
offset: { x: { value: 0, unit: 'pt' }, y: { value: -16, unit: 'pt' } },
|
|
66
|
+
size: { width: 'auto', height: 'auto' },
|
|
67
|
+
},
|
|
68
|
+
content: '{title}',
|
|
44
69
|
fontFamily: 'Open Sans',
|
|
45
70
|
fontSize: { value: 8, unit: 'pt' },
|
|
46
71
|
fontWeight: 600,
|
|
47
72
|
italic: false,
|
|
48
73
|
color: mainColor(),
|
|
74
|
+
align: 'right',
|
|
75
|
+
verticalAlign: 'middle',
|
|
76
|
+
lineHeight: 1.2,
|
|
77
|
+
overflow: 'ellipsis-end',
|
|
49
78
|
},
|
|
50
79
|
{
|
|
51
80
|
kind: 'text',
|
|
52
|
-
|
|
53
|
-
content: '{chapterTitle}',
|
|
81
|
+
id: 'chapterEven',
|
|
54
82
|
parity: 'even',
|
|
55
|
-
|
|
56
|
-
|
|
83
|
+
placement: {
|
|
84
|
+
anchor: { to: 'container', edge: 'bottom-left' },
|
|
85
|
+
offset: { x: { value: 0, unit: 'pt' }, y: { value: -16, unit: 'pt' } },
|
|
86
|
+
size: { width: 'auto', height: 'auto' },
|
|
87
|
+
},
|
|
88
|
+
content: '{chapterTitle}',
|
|
57
89
|
fontFamily: 'Open Sans',
|
|
58
90
|
fontSize: { value: 8, unit: 'pt' },
|
|
59
91
|
fontWeight: 600,
|
|
60
92
|
italic: false,
|
|
61
93
|
color: mainColor(),
|
|
94
|
+
align: 'left',
|
|
95
|
+
verticalAlign: 'middle',
|
|
96
|
+
lineHeight: 1.2,
|
|
97
|
+
overflow: 'ellipsis-end',
|
|
62
98
|
},
|
|
63
99
|
{
|
|
64
100
|
kind: 'rule',
|
|
101
|
+
id: 'rule',
|
|
102
|
+
parity: 'all',
|
|
103
|
+
placement: {
|
|
104
|
+
anchor: { to: 'container', edge: 'bottom' },
|
|
105
|
+
offset: { x: { value: 0, unit: 'pt' }, y: { value: -13, unit: 'pt' } },
|
|
106
|
+
size: { width: 'fill' },
|
|
107
|
+
},
|
|
108
|
+
direction: 'horizontal',
|
|
65
109
|
color: mainColor(),
|
|
66
110
|
thickness: { value: 1, unit: 'pt' },
|
|
67
|
-
width: 'full',
|
|
68
|
-
align: 'center',
|
|
69
|
-
marginFromBody: { value: 13, unit: 'pt' },
|
|
70
|
-
marginFromEdge: { value: 0, unit: 'pt' },
|
|
71
|
-
parity: 'all',
|
|
72
111
|
},
|
|
73
112
|
],
|
|
74
113
|
};
|
|
75
|
-
/** Built-in default footer: centered page number on every page.
|
|
76
|
-
* `config.footer` is `undefined`. */
|
|
114
|
+
/** Built-in default footer: centered page number on every page. */
|
|
77
115
|
export const DEFAULT_FOOTER_SLOT = {
|
|
78
116
|
elements: [
|
|
79
117
|
{
|
|
80
118
|
kind: 'text',
|
|
81
|
-
|
|
82
|
-
content: '{pageNumber}',
|
|
119
|
+
id: 'pageNumber',
|
|
83
120
|
parity: 'all',
|
|
84
|
-
|
|
85
|
-
|
|
121
|
+
placement: {
|
|
122
|
+
anchor: { to: 'container', edge: 'top' },
|
|
123
|
+
offset: { x: { value: 0, unit: 'pt' }, y: { value: 16, unit: 'pt' } },
|
|
124
|
+
size: { width: 'auto', height: 'auto' },
|
|
125
|
+
},
|
|
126
|
+
content: '{pageNumber}',
|
|
86
127
|
fontFamily: 'Open Sans',
|
|
87
128
|
fontSize: { value: 8, unit: 'pt' },
|
|
88
129
|
fontWeight: 600,
|
|
89
130
|
italic: false,
|
|
90
131
|
color: mainColor(),
|
|
132
|
+
align: 'center',
|
|
133
|
+
verticalAlign: 'middle',
|
|
134
|
+
lineHeight: 1.2,
|
|
135
|
+
overflow: 'ellipsis-end',
|
|
91
136
|
},
|
|
92
137
|
],
|
|
93
138
|
};
|
|
94
139
|
function defaultSlotFor(kind) {
|
|
95
140
|
return kind === 'header' ? DEFAULT_HEADER_SLOT : DEFAULT_FOOTER_SLOT;
|
|
96
141
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
142
|
+
// ---------------------------------------------------------------------------
|
|
143
|
+
// Legacy detection + migration
|
|
144
|
+
// ---------------------------------------------------------------------------
|
|
145
|
+
function isLegacyTextElement(el) {
|
|
146
|
+
if (!el || typeof el !== 'object')
|
|
147
|
+
return false;
|
|
148
|
+
const o = el;
|
|
149
|
+
if (o.kind !== 'text')
|
|
150
|
+
return false;
|
|
151
|
+
// Legacy has `align` at the top level and no `placement`.
|
|
152
|
+
return 'align' in o && !('placement' in o);
|
|
153
|
+
}
|
|
154
|
+
function isLegacyRuleElement(el) {
|
|
155
|
+
if (!el || typeof el !== 'object')
|
|
156
|
+
return false;
|
|
157
|
+
const o = el;
|
|
158
|
+
if (o.kind !== 'rule')
|
|
159
|
+
return false;
|
|
160
|
+
return 'align' in o && !('placement' in o);
|
|
116
161
|
}
|
|
117
|
-
|
|
162
|
+
/** Returns true when the slot uses the legacy `align`/`marginFromBody` shape. */
|
|
163
|
+
export function isLegacyHeaderFooterSlot(slot) {
|
|
164
|
+
if (!slot || typeof slot !== 'object')
|
|
165
|
+
return false;
|
|
166
|
+
const elements = slot.elements;
|
|
167
|
+
if (!Array.isArray(elements))
|
|
168
|
+
return false;
|
|
169
|
+
return elements.some((e) => isLegacyTextElement(e) || isLegacyRuleElement(e));
|
|
170
|
+
}
|
|
171
|
+
function anchorFromLegacy(kind, align) {
|
|
172
|
+
const side = kind === 'header' ? 'bottom' : 'top';
|
|
173
|
+
if (align === 'left')
|
|
174
|
+
return { edge: `${side}-left` };
|
|
175
|
+
if (align === 'right')
|
|
176
|
+
return { edge: `${side}-right` };
|
|
177
|
+
return { edge: side };
|
|
178
|
+
}
|
|
179
|
+
function migrateTextElement(el, kind, idx) {
|
|
180
|
+
const anchor = anchorFromLegacy(kind, el.align);
|
|
181
|
+
const yOffsetVal = el.marginFromBody?.value ?? DEFAULT_MARGIN_FROM_BODY.value;
|
|
182
|
+
const yUnit = el.marginFromBody?.unit ?? DEFAULT_MARGIN_FROM_BODY.unit;
|
|
183
|
+
// Header anchors to bottom and moves UP (negative y); footer anchors to top
|
|
184
|
+
// and moves DOWN (positive y).
|
|
185
|
+
const y = {
|
|
186
|
+
value: kind === 'header' ? -yOffsetVal : yOffsetVal,
|
|
187
|
+
unit: yUnit,
|
|
188
|
+
};
|
|
189
|
+
const edgeInset = el.marginFromEdge;
|
|
190
|
+
let x;
|
|
191
|
+
if (el.align === 'left' && edgeInset)
|
|
192
|
+
x = edgeInset;
|
|
193
|
+
else if (el.align === 'right' && edgeInset)
|
|
194
|
+
x = { value: -edgeInset.value, unit: edgeInset.unit };
|
|
195
|
+
else
|
|
196
|
+
x = undefined;
|
|
118
197
|
return {
|
|
119
198
|
kind: 'text',
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
199
|
+
id: `text-${idx + 1}`,
|
|
200
|
+
parity: el.parity,
|
|
201
|
+
placement: {
|
|
202
|
+
anchor: { to: 'container', edge: anchor.edge },
|
|
203
|
+
offset: { x, y },
|
|
204
|
+
size: { width: 'auto', height: 'auto' },
|
|
205
|
+
},
|
|
206
|
+
content: el.content,
|
|
207
|
+
fontFamily: el.fontFamily,
|
|
126
208
|
fontSize: el.fontSize ?? DEFAULT_TEXT_ELEMENT.fontSize,
|
|
127
|
-
fontWeight: el.fontWeight
|
|
128
|
-
italic: el.italic
|
|
129
|
-
color: el.color
|
|
209
|
+
fontWeight: el.fontWeight,
|
|
210
|
+
italic: el.italic,
|
|
211
|
+
color: el.color,
|
|
212
|
+
align: el.align,
|
|
213
|
+
verticalAlign: 'middle',
|
|
214
|
+
lineHeight: 1.2,
|
|
215
|
+
overflow: 'ellipsis-end',
|
|
130
216
|
};
|
|
131
217
|
}
|
|
132
|
-
function
|
|
218
|
+
function migrateRuleElement(el, kind, idx) {
|
|
219
|
+
const anchor = anchorFromLegacy(kind, el.align);
|
|
220
|
+
const yOffsetVal = el.marginFromBody?.value ?? DEFAULT_MARGIN_FROM_BODY.value;
|
|
221
|
+
const yUnit = el.marginFromBody?.unit ?? DEFAULT_MARGIN_FROM_BODY.unit;
|
|
222
|
+
const y = {
|
|
223
|
+
value: kind === 'header' ? -yOffsetVal : yOffsetVal,
|
|
224
|
+
unit: yUnit,
|
|
225
|
+
};
|
|
226
|
+
const widthSize = el.width === 'full' ? 'fill' : el.width;
|
|
227
|
+
const edgeInset = el.align !== 'center' && el.width !== 'full' ? el.marginFromEdge : undefined;
|
|
228
|
+
let x;
|
|
229
|
+
if (el.align === 'left' && edgeInset)
|
|
230
|
+
x = edgeInset;
|
|
231
|
+
else if (el.align === 'right' && edgeInset)
|
|
232
|
+
x = { value: -edgeInset.value, unit: edgeInset.unit };
|
|
133
233
|
return {
|
|
134
234
|
kind: 'rule',
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
235
|
+
id: `rule-${idx + 1}`,
|
|
236
|
+
parity: el.parity,
|
|
237
|
+
placement: {
|
|
238
|
+
anchor: { to: 'container', edge: anchor.edge },
|
|
239
|
+
offset: { x, y },
|
|
240
|
+
size: { width: widthSize },
|
|
241
|
+
},
|
|
242
|
+
direction: 'horizontal',
|
|
243
|
+
color: el.color,
|
|
244
|
+
thickness: el.thickness,
|
|
142
245
|
};
|
|
143
246
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
247
|
+
/** Convert a legacy-shaped header/footer slot to a `DesignSlot`. Safe to
|
|
248
|
+
* call on already-migrated slots (returns them unchanged). */
|
|
249
|
+
export function migrateLegacyHeaderFooterConfig(slot, kind) {
|
|
250
|
+
if (!slot || typeof slot !== 'object')
|
|
251
|
+
return undefined;
|
|
252
|
+
const elements = slot.elements;
|
|
253
|
+
if (!Array.isArray(elements))
|
|
254
|
+
return { elements: [] };
|
|
255
|
+
const migrated = elements.map((raw, i) => {
|
|
256
|
+
if (isLegacyTextElement(raw))
|
|
257
|
+
return migrateTextElement(raw, kind, i);
|
|
258
|
+
if (isLegacyRuleElement(raw))
|
|
259
|
+
return migrateRuleElement(raw, kind, i);
|
|
260
|
+
return raw;
|
|
261
|
+
});
|
|
262
|
+
return { elements: migrated };
|
|
148
263
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
if (slot === undefined)
|
|
154
|
-
return cloneResolvedSlot(defaultSlotFor(kind));
|
|
264
|
+
// ---------------------------------------------------------------------------
|
|
265
|
+
// Resolve / strip
|
|
266
|
+
// ---------------------------------------------------------------------------
|
|
267
|
+
function resolveTextElement(el, idx) {
|
|
155
268
|
return {
|
|
156
|
-
elements: (slot.elements ?? []).map(resolveElement),
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
function stripTextElement(el) {
|
|
160
|
-
const out = {
|
|
161
269
|
kind: 'text',
|
|
162
|
-
|
|
270
|
+
id: el.id ?? `text-${idx + 1}`,
|
|
271
|
+
parity: el.parity ?? 'all',
|
|
272
|
+
placement: {
|
|
273
|
+
anchor: el.placement.anchor,
|
|
274
|
+
offset: el.placement.offset ?? {},
|
|
275
|
+
size: el.placement.size ?? { width: 'auto', height: 'auto' },
|
|
276
|
+
},
|
|
163
277
|
content: el.content,
|
|
164
|
-
|
|
278
|
+
fontFamily: el.fontFamily ?? DEFAULT_TEXT_ELEMENT.fontFamily,
|
|
279
|
+
fontSize: el.fontSize,
|
|
280
|
+
fontWeight: el.fontWeight ?? DEFAULT_TEXT_ELEMENT.fontWeight,
|
|
281
|
+
italic: el.italic ?? DEFAULT_TEXT_ELEMENT.italic,
|
|
282
|
+
color: el.color ?? DEFAULT_TEXT_ELEMENT.color,
|
|
283
|
+
align: el.align ?? DEFAULT_TEXT_ELEMENT.align,
|
|
284
|
+
verticalAlign: el.verticalAlign ?? DEFAULT_TEXT_ELEMENT.verticalAlign,
|
|
285
|
+
lineHeight: el.lineHeight ?? DEFAULT_TEXT_ELEMENT.lineHeight,
|
|
286
|
+
letterSpacing: el.letterSpacing,
|
|
287
|
+
overflow: el.overflow ?? DEFAULT_TEXT_ELEMENT.overflow,
|
|
288
|
+
hyphenate: el.hyphenate,
|
|
289
|
+
box: el.box,
|
|
165
290
|
};
|
|
166
|
-
if (el.marginFromBody !== undefined && !dimensionsEqual(el.marginFromBody, DEFAULT_TEXT_ELEMENT.marginFromBody))
|
|
167
|
-
out.marginFromBody = el.marginFromBody;
|
|
168
|
-
if (el.marginFromEdge !== undefined && !dimensionsEqual(el.marginFromEdge, DEFAULT_TEXT_ELEMENT.marginFromEdge))
|
|
169
|
-
out.marginFromEdge = el.marginFromEdge;
|
|
170
|
-
if (el.fontFamily !== undefined && el.fontFamily !== DEFAULT_TEXT_ELEMENT.fontFamily)
|
|
171
|
-
out.fontFamily = el.fontFamily;
|
|
172
|
-
if (el.fontSize !== undefined && !dimensionsEqual(el.fontSize, DEFAULT_TEXT_ELEMENT.fontSize))
|
|
173
|
-
out.fontSize = el.fontSize;
|
|
174
|
-
if (el.fontWeight !== undefined && el.fontWeight !== DEFAULT_TEXT_ELEMENT.fontWeight)
|
|
175
|
-
out.fontWeight = el.fontWeight;
|
|
176
|
-
if (el.italic !== undefined && el.italic !== DEFAULT_TEXT_ELEMENT.italic)
|
|
177
|
-
out.italic = el.italic;
|
|
178
|
-
if (el.color !== undefined && !colorsEqual(el.color, DEFAULT_TEXT_ELEMENT.color))
|
|
179
|
-
out.color = el.color;
|
|
180
|
-
return out;
|
|
181
291
|
}
|
|
182
|
-
function
|
|
183
|
-
|
|
292
|
+
function resolveRuleElement(el, idx) {
|
|
293
|
+
return {
|
|
184
294
|
kind: 'rule',
|
|
295
|
+
id: el.id ?? `rule-${idx + 1}`,
|
|
296
|
+
parity: el.parity ?? 'all',
|
|
297
|
+
placement: {
|
|
298
|
+
anchor: el.placement.anchor,
|
|
299
|
+
offset: el.placement.offset ?? {},
|
|
300
|
+
size: el.placement.size ?? {},
|
|
301
|
+
},
|
|
302
|
+
direction: el.direction ?? 'horizontal',
|
|
185
303
|
color: el.color,
|
|
186
304
|
thickness: el.thickness,
|
|
187
|
-
width: el.width,
|
|
188
|
-
align: el.align,
|
|
189
|
-
parity: el.parity,
|
|
190
305
|
};
|
|
191
|
-
if (el.marginFromBody !== undefined && !dimensionsEqual(el.marginFromBody, DEFAULT_RULE_ELEMENT.marginFromBody))
|
|
192
|
-
out.marginFromBody = el.marginFromBody;
|
|
193
|
-
if (el.marginFromEdge !== undefined && !dimensionsEqual(el.marginFromEdge, DEFAULT_RULE_ELEMENT.marginFromEdge))
|
|
194
|
-
out.marginFromEdge = el.marginFromEdge;
|
|
195
|
-
return out;
|
|
196
306
|
}
|
|
197
|
-
function
|
|
198
|
-
return
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
307
|
+
function resolveBoxElement(el, idx) {
|
|
308
|
+
return {
|
|
309
|
+
kind: 'box',
|
|
310
|
+
id: el.id ?? `box-${idx + 1}`,
|
|
311
|
+
parity: el.parity ?? 'all',
|
|
312
|
+
placement: {
|
|
313
|
+
anchor: el.placement.anchor,
|
|
314
|
+
offset: el.placement.offset ?? {},
|
|
315
|
+
size: el.placement.size ?? {},
|
|
316
|
+
},
|
|
317
|
+
style: el.style,
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
function resolveElement(el, idx) {
|
|
321
|
+
if (el.kind === 'text')
|
|
322
|
+
return resolveTextElement(el, idx);
|
|
323
|
+
if (el.kind === 'rule')
|
|
324
|
+
return resolveRuleElement(el, idx);
|
|
325
|
+
return resolveBoxElement(el, idx);
|
|
326
|
+
}
|
|
327
|
+
/** Resolve a design slot used for header/footer. `undefined` returns the
|
|
328
|
+
* built-in default for `kind`. Legacy slots are migrated on the fly. */
|
|
329
|
+
export function resolveDesignSlot(slot, kind = 'header') {
|
|
330
|
+
if (slot === undefined)
|
|
331
|
+
return cloneResolvedSlot(defaultSlotFor(kind));
|
|
332
|
+
const maybeMigrated = isLegacyHeaderFooterSlot(slot)
|
|
333
|
+
? migrateLegacyHeaderFooterConfig(slot, kind) ?? slot
|
|
334
|
+
: slot;
|
|
335
|
+
return {
|
|
336
|
+
elements: (maybeMigrated.elements ?? []).map(resolveElement),
|
|
337
|
+
};
|
|
209
338
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
: typeof a.width !== 'string' && typeof b.width !== 'string'
|
|
214
|
-
? dimensionsEqual(a.width, b.width)
|
|
215
|
-
: false;
|
|
216
|
-
return (a.kind === 'rule' &&
|
|
217
|
-
colorsEqual(a.color, b.color) &&
|
|
218
|
-
dimensionsEqual(a.thickness, b.thickness) &&
|
|
219
|
-
widthEq &&
|
|
220
|
-
a.align === b.align &&
|
|
221
|
-
dimensionsEqual(a.marginFromBody ?? DEFAULT_RULE_ELEMENT.marginFromBody, b.marginFromBody) &&
|
|
222
|
-
dimensionsEqual(a.marginFromEdge ?? DEFAULT_RULE_ELEMENT.marginFromEdge, b.marginFromEdge) &&
|
|
223
|
-
a.parity === b.parity);
|
|
339
|
+
export const resolveHeaderFooterConfig = resolveDesignSlot;
|
|
340
|
+
function cloneResolvedSlot(slot) {
|
|
341
|
+
return { elements: slot.elements.map((el) => deepClone(el)) };
|
|
224
342
|
}
|
|
225
|
-
function
|
|
226
|
-
|
|
227
|
-
if (els.length !== def.elements.length)
|
|
228
|
-
return false;
|
|
229
|
-
for (let i = 0; i < els.length; i++) {
|
|
230
|
-
const a = els[i];
|
|
231
|
-
const b = def.elements[i];
|
|
232
|
-
if (a.kind !== b.kind)
|
|
233
|
-
return false;
|
|
234
|
-
if (a.kind === 'text' && b.kind === 'text') {
|
|
235
|
-
if (!textElementsEqual(a, b))
|
|
236
|
-
return false;
|
|
237
|
-
}
|
|
238
|
-
else if (a.kind === 'rule' && b.kind === 'rule') {
|
|
239
|
-
if (!ruleElementsEqual(a, b))
|
|
240
|
-
return false;
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
return true;
|
|
343
|
+
function deepClone(v) {
|
|
344
|
+
return JSON.parse(JSON.stringify(v));
|
|
244
345
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
export function stripHeaderFooterDefaults(slot, kind = 'header') {
|
|
346
|
+
// Strip is intentionally minimal: only returns `undefined` when the slot
|
|
347
|
+
// deep-equals the default (so persisted configs omit it entirely). Per-field
|
|
348
|
+
// stripping across the new union is not worth the complexity — the slot is
|
|
349
|
+
// stored as-is otherwise.
|
|
350
|
+
export function stripDesignSlotDefaults(slot, kind = 'header') {
|
|
251
351
|
if (!slot)
|
|
252
352
|
return undefined;
|
|
253
|
-
|
|
353
|
+
const def = defaultSlotFor(kind);
|
|
354
|
+
const migrated = isLegacyHeaderFooterSlot(slot)
|
|
355
|
+
? migrateLegacyHeaderFooterConfig(slot, kind) ?? slot
|
|
356
|
+
: slot;
|
|
357
|
+
if (JSON.stringify(migrated) === JSON.stringify(def))
|
|
254
358
|
return undefined;
|
|
255
|
-
|
|
256
|
-
return { elements };
|
|
359
|
+
return migrated;
|
|
257
360
|
}
|
|
361
|
+
export const stripHeaderFooterDefaults = stripDesignSlotDefaults;
|
|
258
362
|
//# sourceMappingURL=headerFooter.js.map
|