postext 0.1.10 → 0.1.12

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__/exports.test.js +5 -0
  2. package/dist/__tests__/exports.test.js.map +1 -1
  3. package/dist/canvas-backend.d.ts.map +1 -1
  4. package/dist/canvas-backend.js +30 -2
  5. package/dist/canvas-backend.js.map +1 -1
  6. package/dist/defaults/bodyText.d.ts +7 -0
  7. package/dist/defaults/bodyText.d.ts.map +1 -0
  8. package/dist/defaults/bodyText.js +120 -0
  9. package/dist/defaults/bodyText.js.map +1 -0
  10. package/dist/defaults/debug.d.ts +5 -0
  11. package/dist/defaults/debug.d.ts.map +1 -0
  12. package/dist/defaults/debug.js +78 -0
  13. package/dist/defaults/debug.js.map +1 -0
  14. package/dist/defaults/headings.d.ts +5 -0
  15. package/dist/defaults/headings.d.ts.map +1 -0
  16. package/dist/defaults/headings.js +142 -0
  17. package/dist/defaults/headings.js.map +1 -0
  18. package/dist/defaults/index.d.ts +11 -0
  19. package/dist/defaults/index.d.ts.map +1 -0
  20. package/dist/defaults/index.js +69 -0
  21. package/dist/defaults/index.js.map +1 -0
  22. package/dist/defaults/layout.d.ts +16 -0
  23. package/dist/defaults/layout.d.ts.map +1 -0
  24. package/dist/defaults/layout.js +68 -0
  25. package/dist/defaults/layout.js.map +1 -0
  26. package/dist/defaults/lists-shared.d.ts +15 -0
  27. package/dist/defaults/lists-shared.d.ts.map +1 -0
  28. package/dist/defaults/lists-shared.js +14 -0
  29. package/dist/defaults/lists-shared.js.map +1 -0
  30. package/dist/defaults/orderedLists.d.ts +18 -0
  31. package/dist/defaults/orderedLists.d.ts.map +1 -0
  32. package/dist/defaults/orderedLists.js +174 -0
  33. package/dist/defaults/orderedLists.js.map +1 -0
  34. package/dist/defaults/page.d.ts +32 -0
  35. package/dist/defaults/page.d.ts.map +1 -0
  36. package/dist/defaults/page.js +147 -0
  37. package/dist/defaults/page.js.map +1 -0
  38. package/dist/defaults/shared.d.ts +7 -0
  39. package/dist/defaults/shared.d.ts.map +1 -0
  40. package/dist/defaults/shared.js +97 -0
  41. package/dist/defaults/shared.js.map +1 -0
  42. package/dist/defaults/unorderedLists.d.ts +21 -0
  43. package/dist/defaults/unorderedLists.d.ts.map +1 -0
  44. package/dist/defaults/unorderedLists.js +188 -0
  45. package/dist/defaults/unorderedLists.js.map +1 -0
  46. package/dist/index.d.ts +3 -3
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +1 -1
  49. package/dist/index.js.map +1 -1
  50. package/dist/measure.d.ts.map +1 -1
  51. package/dist/measure.js +112 -12
  52. package/dist/measure.js.map +1 -1
  53. package/dist/parse.d.ts +7 -0
  54. package/dist/parse.d.ts.map +1 -1
  55. package/dist/parse.js +53 -17
  56. package/dist/parse.js.map +1 -1
  57. package/dist/pipeline/build.d.ts +4 -0
  58. package/dist/pipeline/build.d.ts.map +1 -0
  59. package/dist/{pipeline.js → pipeline/build.js} +52 -246
  60. package/dist/pipeline/build.js.map +1 -0
  61. package/dist/pipeline/config.d.ts +6 -0
  62. package/dist/pipeline/config.d.ts.map +1 -0
  63. package/dist/pipeline/config.js +48 -0
  64. package/dist/pipeline/config.js.map +1 -0
  65. package/dist/pipeline/index.d.ts +2 -0
  66. package/dist/pipeline/index.d.ts.map +1 -0
  67. package/dist/pipeline/index.js +2 -0
  68. package/dist/pipeline/index.js.map +1 -0
  69. package/dist/pipeline/lists.d.ts +54 -0
  70. package/dist/pipeline/lists.d.ts.map +1 -0
  71. package/dist/pipeline/lists.js +298 -0
  72. package/dist/pipeline/lists.js.map +1 -0
  73. package/dist/pipeline/placement.d.ts +11 -0
  74. package/dist/pipeline/placement.d.ts.map +1 -0
  75. package/dist/pipeline/placement.js +48 -0
  76. package/dist/pipeline/placement.js.map +1 -0
  77. package/dist/pipeline/styles.d.ts +23 -0
  78. package/dist/pipeline/styles.d.ts.map +1 -0
  79. package/dist/pipeline/styles.js +62 -0
  80. package/dist/pipeline/styles.js.map +1 -0
  81. package/dist/types.d.ts +103 -0
  82. package/dist/types.d.ts.map +1 -1
  83. package/dist/vdt.d.ts +11 -1
  84. package/dist/vdt.d.ts.map +1 -1
  85. package/dist/vdt.js.map +1 -1
  86. package/package.json +2 -2
  87. package/dist/defaults.d.ts +0 -76
  88. package/dist/defaults.d.ts.map +0 -1
  89. package/dist/defaults.js +0 -719
  90. package/dist/defaults.js.map +0 -1
  91. package/dist/pipeline.d.ts +0 -4
  92. package/dist/pipeline.d.ts.map +0 -1
  93. package/dist/pipeline.js.map +0 -1
@@ -0,0 +1,97 @@
1
+ export function dimensionsEqual(a, b) {
2
+ return a.value === b.value && a.unit === b.unit;
3
+ }
4
+ export function colorsEqual(a, b) {
5
+ return a.hex === b.hex && a.model === b.model && a.paletteId === b.paletteId;
6
+ }
7
+ export function resolveColorValue(value, palette, fallback) {
8
+ if (!value)
9
+ return fallback;
10
+ if (value.paletteId) {
11
+ const entry = palette?.find((e) => e.id === value.paletteId);
12
+ if (entry)
13
+ return { hex: entry.value.hex, model: entry.value.model, paletteId: value.paletteId };
14
+ return { hex: value.hex, model: value.model };
15
+ }
16
+ return value;
17
+ }
18
+ export function resolveColor(value, palette) {
19
+ if (!value || !value.paletteId)
20
+ return value;
21
+ const entry = palette?.find((e) => e.id === value.paletteId);
22
+ if (!entry)
23
+ return { hex: value.hex, model: value.model };
24
+ return { hex: entry.value.hex, model: entry.value.model };
25
+ }
26
+ export function applyPaletteToConfig(config) {
27
+ if (!config)
28
+ return config;
29
+ const palette = config.colorPalette;
30
+ if (!palette || palette.length === 0)
31
+ return config;
32
+ const next = { ...config };
33
+ if (config.page) {
34
+ next.page = {
35
+ ...config.page,
36
+ backgroundColor: resolveColor(config.page.backgroundColor, palette),
37
+ cutLines: config.page.cutLines
38
+ ? { ...config.page.cutLines, color: resolveColor(config.page.cutLines.color, palette) }
39
+ : config.page.cutLines,
40
+ baselineGrid: config.page.baselineGrid
41
+ ? { ...config.page.baselineGrid, color: resolveColor(config.page.baselineGrid.color, palette) }
42
+ : config.page.baselineGrid,
43
+ };
44
+ }
45
+ if (config.layout?.columnRule) {
46
+ next.layout = {
47
+ ...config.layout,
48
+ columnRule: { ...config.layout.columnRule, color: resolveColor(config.layout.columnRule.color, palette) },
49
+ };
50
+ }
51
+ if (config.bodyText) {
52
+ next.bodyText = {
53
+ ...config.bodyText,
54
+ color: resolveColor(config.bodyText.color, palette),
55
+ boldColor: resolveColor(config.bodyText.boldColor, palette),
56
+ italicColor: resolveColor(config.bodyText.italicColor, palette),
57
+ };
58
+ }
59
+ if (config.headings) {
60
+ next.headings = {
61
+ ...config.headings,
62
+ color: resolveColor(config.headings.color, palette),
63
+ levels: config.headings.levels?.map((l) => ({ ...l, color: resolveColor(l.color, palette) })),
64
+ };
65
+ }
66
+ if (config.unorderedLists) {
67
+ next.unorderedLists = {
68
+ ...config.unorderedLists,
69
+ color: resolveColor(config.unorderedLists.color, palette),
70
+ taskCompletedColor: resolveColor(config.unorderedLists.taskCompletedColor, palette),
71
+ levels: config.unorderedLists.levels?.map((l) => ({ ...l, color: resolveColor(l.color, palette) })),
72
+ };
73
+ }
74
+ if (config.orderedLists) {
75
+ next.orderedLists = {
76
+ ...config.orderedLists,
77
+ color: resolveColor(config.orderedLists.color, palette),
78
+ levels: config.orderedLists.levels?.map((l) => ({ ...l, color: resolveColor(l.color, palette) })),
79
+ };
80
+ }
81
+ if (config.debug) {
82
+ next.debug = {
83
+ ...config.debug,
84
+ cursorSync: config.debug.cursorSync
85
+ ? { ...config.debug.cursorSync, color: resolveColor(config.debug.cursorSync.color, palette) }
86
+ : config.debug.cursorSync,
87
+ selectionSync: config.debug.selectionSync
88
+ ? { ...config.debug.selectionSync, color: resolveColor(config.debug.selectionSync.color, palette) }
89
+ : config.debug.selectionSync,
90
+ looseLineHighlight: config.debug.looseLineHighlight
91
+ ? { ...config.debug.looseLineHighlight, color: resolveColor(config.debug.looseLineHighlight.color, palette) }
92
+ : config.debug.looseLineHighlight,
93
+ };
94
+ }
95
+ return next;
96
+ }
97
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/defaults/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { ResolvedBodyTextConfig, UnorderedListsConfig, ResolvedUnorderedListsConfig } from '../types';
2
+ export declare function resolveUnorderedListsConfig(partial: UnorderedListsConfig | undefined, bodyText: ResolvedBodyTextConfig): ResolvedUnorderedListsConfig;
3
+ /** Default values for fields that have a fixed (non-inherited) default. */
4
+ export declare const DEFAULT_UNORDERED_LISTS_STATIC: {
5
+ fontWeight: number;
6
+ italic: boolean;
7
+ bulletChar: string;
8
+ bulletFontSize: import("..").Dimension;
9
+ gap: import("..").Dimension;
10
+ indent: import("..").Dimension;
11
+ bulletVerticalOffset: import("..").Dimension;
12
+ marginTop: import("..").Dimension;
13
+ marginBottom: import("..").Dimension;
14
+ itemSpacing: import("..").Dimension;
15
+ hangingIndent: boolean;
16
+ taskCheckboxChar: string;
17
+ taskCheckedChar: string;
18
+ taskCompletedStrikethrough: boolean;
19
+ };
20
+ export declare function stripUnorderedListsDefaults(lists?: UnorderedListsConfig): UnorderedListsConfig | undefined;
21
+ //# sourceMappingURL=unorderedLists.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unorderedLists.d.ts","sourceRoot":"","sources":["../../src/defaults/unorderedLists.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,oBAAoB,EAA4B,4BAA4B,EAAoC,MAAM,UAAU,CAAC;AAkBvK,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,QAAQ,EAAE,sBAAsB,GAC/B,4BAA4B,CAiD9B;AAED,2EAA2E;AAC3E,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;CAe1C,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,KAAK,CAAC,EAAE,oBAAoB,GAC3B,oBAAoB,GAAG,SAAS,CA2HlC"}
@@ -0,0 +1,188 @@
1
+ import { dimensionsEqual } from './shared';
2
+ import { DEFAULT_LIST_BULLET_CHAR, DEFAULT_LIST_FONT_WEIGHT, DEFAULT_LIST_BULLET_FONT_SIZE, DEFAULT_LIST_GAP, DEFAULT_LIST_INDENT, DEFAULT_LIST_VERTICAL_OFFSET, DEFAULT_LIST_MARGIN_TOP, DEFAULT_LIST_MARGIN_BOTTOM, DEFAULT_LIST_ITEM_SPACING, DEFAULT_LIST_HANGING_INDENT, DEFAULT_TASK_CHECKBOX_CHAR, DEFAULT_TASK_CHECKED_CHAR, DEFAULT_TASK_COMPLETED_STRIKETHROUGH, } from './lists-shared';
3
+ export function resolveUnorderedListsConfig(partial, bodyText) {
4
+ const generalFont = partial?.fontFamily ?? bodyText.fontFamily;
5
+ const generalColor = partial?.color ?? bodyText.color;
6
+ const generalFontWeight = partial?.fontWeight ?? DEFAULT_LIST_FONT_WEIGHT;
7
+ const generalItalic = partial?.italic ?? false;
8
+ const generalBulletChar = partial?.bulletChar ?? DEFAULT_LIST_BULLET_CHAR;
9
+ const generalFontSize = partial?.bulletFontSize ?? DEFAULT_LIST_BULLET_FONT_SIZE;
10
+ const generalIndent = partial?.indent ?? DEFAULT_LIST_INDENT;
11
+ const generalVerticalOffset = partial?.bulletVerticalOffset ?? DEFAULT_LIST_VERTICAL_OFFSET;
12
+ const levels = [1, 2, 3, 4, 5].map((level) => {
13
+ const override = partial?.levels?.find((l) => l.level === level);
14
+ return {
15
+ level,
16
+ bulletChar: override?.bulletChar ?? generalBulletChar,
17
+ fontFamily: override?.fontFamily ?? generalFont,
18
+ fontSize: override?.fontSize ?? generalFontSize,
19
+ color: override?.color ?? generalColor,
20
+ fontWeight: override?.fontWeight ?? generalFontWeight,
21
+ italic: override?.italic ?? generalItalic,
22
+ indent: override?.indent,
23
+ verticalOffset: override?.verticalOffset ?? generalVerticalOffset,
24
+ };
25
+ });
26
+ const resolved = {
27
+ fontFamily: generalFont,
28
+ color: generalColor,
29
+ fontWeight: generalFontWeight,
30
+ italic: generalItalic,
31
+ bulletChar: generalBulletChar,
32
+ bulletFontSize: generalFontSize,
33
+ gap: partial?.gap ?? DEFAULT_LIST_GAP,
34
+ indent: generalIndent,
35
+ bulletVerticalOffset: generalVerticalOffset,
36
+ marginTop: partial?.marginTop ?? DEFAULT_LIST_MARGIN_TOP,
37
+ marginBottom: partial?.marginBottom ?? DEFAULT_LIST_MARGIN_BOTTOM,
38
+ itemSpacing: partial?.itemSpacing ?? DEFAULT_LIST_ITEM_SPACING,
39
+ hangingIndent: partial?.hangingIndent ?? DEFAULT_LIST_HANGING_INDENT,
40
+ levels,
41
+ taskCheckboxChar: partial?.taskCheckboxChar ?? DEFAULT_TASK_CHECKBOX_CHAR,
42
+ taskCheckedChar: partial?.taskCheckedChar ?? DEFAULT_TASK_CHECKED_CHAR,
43
+ taskCompletedStrikethrough: partial?.taskCompletedStrikethrough ?? DEFAULT_TASK_COMPLETED_STRIKETHROUGH,
44
+ };
45
+ if (partial?.taskCompletedColor !== undefined) {
46
+ resolved.taskCompletedColor = partial.taskCompletedColor;
47
+ }
48
+ return resolved;
49
+ }
50
+ /** Default values for fields that have a fixed (non-inherited) default. */
51
+ export const DEFAULT_UNORDERED_LISTS_STATIC = {
52
+ fontWeight: DEFAULT_LIST_FONT_WEIGHT,
53
+ italic: false,
54
+ bulletChar: DEFAULT_LIST_BULLET_CHAR,
55
+ bulletFontSize: DEFAULT_LIST_BULLET_FONT_SIZE,
56
+ gap: DEFAULT_LIST_GAP,
57
+ indent: DEFAULT_LIST_INDENT,
58
+ bulletVerticalOffset: DEFAULT_LIST_VERTICAL_OFFSET,
59
+ marginTop: DEFAULT_LIST_MARGIN_TOP,
60
+ marginBottom: DEFAULT_LIST_MARGIN_BOTTOM,
61
+ itemSpacing: DEFAULT_LIST_ITEM_SPACING,
62
+ hangingIndent: DEFAULT_LIST_HANGING_INDENT,
63
+ taskCheckboxChar: DEFAULT_TASK_CHECKBOX_CHAR,
64
+ taskCheckedChar: DEFAULT_TASK_CHECKED_CHAR,
65
+ taskCompletedStrikethrough: DEFAULT_TASK_COMPLETED_STRIKETHROUGH,
66
+ };
67
+ export function stripUnorderedListsDefaults(lists) {
68
+ if (!lists)
69
+ return undefined;
70
+ const result = {};
71
+ let hasOverride = false;
72
+ if (lists.fontFamily !== undefined) {
73
+ result.fontFamily = lists.fontFamily;
74
+ hasOverride = true;
75
+ }
76
+ if (lists.color !== undefined) {
77
+ result.color = lists.color;
78
+ hasOverride = true;
79
+ }
80
+ if (lists.fontWeight !== undefined && lists.fontWeight !== DEFAULT_LIST_FONT_WEIGHT) {
81
+ result.fontWeight = lists.fontWeight;
82
+ hasOverride = true;
83
+ }
84
+ if (lists.italic !== undefined && lists.italic !== false) {
85
+ result.italic = lists.italic;
86
+ hasOverride = true;
87
+ }
88
+ if (lists.bulletChar !== undefined && lists.bulletChar !== DEFAULT_LIST_BULLET_CHAR) {
89
+ result.bulletChar = lists.bulletChar;
90
+ hasOverride = true;
91
+ }
92
+ if (lists.bulletFontSize !== undefined && !dimensionsEqual(lists.bulletFontSize, DEFAULT_LIST_BULLET_FONT_SIZE)) {
93
+ result.bulletFontSize = lists.bulletFontSize;
94
+ hasOverride = true;
95
+ }
96
+ if (lists.gap !== undefined && !dimensionsEqual(lists.gap, DEFAULT_LIST_GAP)) {
97
+ result.gap = lists.gap;
98
+ hasOverride = true;
99
+ }
100
+ if (lists.indent !== undefined && !dimensionsEqual(lists.indent, DEFAULT_LIST_INDENT)) {
101
+ result.indent = lists.indent;
102
+ hasOverride = true;
103
+ }
104
+ if (lists.bulletVerticalOffset !== undefined && !dimensionsEqual(lists.bulletVerticalOffset, DEFAULT_LIST_VERTICAL_OFFSET)) {
105
+ result.bulletVerticalOffset = lists.bulletVerticalOffset;
106
+ hasOverride = true;
107
+ }
108
+ if (lists.marginTop !== undefined && !dimensionsEqual(lists.marginTop, DEFAULT_LIST_MARGIN_TOP)) {
109
+ result.marginTop = lists.marginTop;
110
+ hasOverride = true;
111
+ }
112
+ if (lists.marginBottom !== undefined && !dimensionsEqual(lists.marginBottom, DEFAULT_LIST_MARGIN_BOTTOM)) {
113
+ result.marginBottom = lists.marginBottom;
114
+ hasOverride = true;
115
+ }
116
+ if (lists.itemSpacing !== undefined && !dimensionsEqual(lists.itemSpacing, DEFAULT_LIST_ITEM_SPACING)) {
117
+ result.itemSpacing = lists.itemSpacing;
118
+ hasOverride = true;
119
+ }
120
+ if (lists.hangingIndent !== undefined && lists.hangingIndent !== DEFAULT_LIST_HANGING_INDENT) {
121
+ result.hangingIndent = lists.hangingIndent;
122
+ hasOverride = true;
123
+ }
124
+ if (lists.levels && lists.levels.length > 0) {
125
+ const strippedLevels = [];
126
+ for (const lvl of lists.levels) {
127
+ const entry = { level: lvl.level };
128
+ let levelHasOverride = false;
129
+ if (lvl.bulletChar !== undefined) {
130
+ entry.bulletChar = lvl.bulletChar;
131
+ levelHasOverride = true;
132
+ }
133
+ if (lvl.fontFamily !== undefined) {
134
+ entry.fontFamily = lvl.fontFamily;
135
+ levelHasOverride = true;
136
+ }
137
+ if (lvl.fontSize !== undefined) {
138
+ entry.fontSize = lvl.fontSize;
139
+ levelHasOverride = true;
140
+ }
141
+ if (lvl.color !== undefined) {
142
+ entry.color = lvl.color;
143
+ levelHasOverride = true;
144
+ }
145
+ if (lvl.fontWeight !== undefined) {
146
+ entry.fontWeight = lvl.fontWeight;
147
+ levelHasOverride = true;
148
+ }
149
+ if (lvl.italic !== undefined) {
150
+ entry.italic = lvl.italic;
151
+ levelHasOverride = true;
152
+ }
153
+ if (lvl.indent !== undefined) {
154
+ entry.indent = lvl.indent;
155
+ levelHasOverride = true;
156
+ }
157
+ if (lvl.verticalOffset !== undefined) {
158
+ entry.verticalOffset = lvl.verticalOffset;
159
+ levelHasOverride = true;
160
+ }
161
+ if (levelHasOverride)
162
+ strippedLevels.push(entry);
163
+ }
164
+ if (strippedLevels.length > 0) {
165
+ result.levels = strippedLevels;
166
+ hasOverride = true;
167
+ }
168
+ }
169
+ if (lists.taskCheckboxChar !== undefined && lists.taskCheckboxChar !== DEFAULT_TASK_CHECKBOX_CHAR) {
170
+ result.taskCheckboxChar = lists.taskCheckboxChar;
171
+ hasOverride = true;
172
+ }
173
+ if (lists.taskCheckedChar !== undefined && lists.taskCheckedChar !== DEFAULT_TASK_CHECKED_CHAR) {
174
+ result.taskCheckedChar = lists.taskCheckedChar;
175
+ hasOverride = true;
176
+ }
177
+ if (lists.taskCompletedStrikethrough !== undefined &&
178
+ lists.taskCompletedStrikethrough !== DEFAULT_TASK_COMPLETED_STRIKETHROUGH) {
179
+ result.taskCompletedStrikethrough = lists.taskCompletedStrikethrough;
180
+ hasOverride = true;
181
+ }
182
+ if (lists.taskCompletedColor !== undefined) {
183
+ result.taskCompletedColor = lists.taskCompletedColor;
184
+ hasOverride = true;
185
+ }
186
+ return hasOverride ? result : undefined;
187
+ }
188
+ //# sourceMappingURL=unorderedLists.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unorderedLists.js","sourceRoot":"","sources":["../../src/defaults/unorderedLists.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,8 +8,8 @@ export { hyphenateText, setHyphenationLocale } from './hyphenate';
8
8
  export { parseMarkdown } from './parse';
9
9
  export { extractFrontmatter } from './frontmatter';
10
10
  export type { ParsedFrontmatter } from './frontmatter';
11
- export { DEFAULT_PAGE_CONFIG, DEFAULT_CUT_LINES, PAGE_SIZE_PRESETS, resolvePageConfig, DEFAULT_LAYOUT_CONFIG, DEFAULT_COLUMN_RULE, resolveLayoutConfig, stripLayoutDefaults, DEFAULT_BODY_TEXT_CONFIG, DEFAULT_HYPHENATION_CONFIG, resolveBodyTextConfig, stripBodyTextDefaults, hyphenationEqual, DEFAULT_HEADINGS_CONFIG, resolveHeadingsConfig, stripHeadingsDefaults, DEFAULT_UNORDERED_LISTS_STATIC, resolveUnorderedListsConfig, stripUnorderedListsDefaults, dimensionsEqual, colorsEqual, stripPageDefaults, stripConfigDefaults, DEFAULT_DEBUG_CONFIG, resolveDebugConfig, stripDebugDefaults } from './defaults';
12
- export type { PostextContent, DocumentMetadata, PostextResource, PostextNote, PostextConfig, PostextSectionOverride, ColumnConfig, ResourcePlacementConfig, TypographyConfig, ReferenceConfig, PlacementStrategy, ColorModel, ColorValue, DimensionUnit, Dimension, PageSizePreset, PageMargins, BaselineGridConfig, CutLinesConfig, PageConfig, ResolvedPageConfig, LayoutType, ColumnRuleConfig, LayoutConfig, ResolvedLayoutConfig, TextAlign, HyphenationLocale, HyphenationConfig, ResolvedHyphenationConfig, BodyTextConfig, ResolvedBodyTextConfig, HeadingLevelConfig, ResolvedHeadingLevelConfig, HeadingsConfig, ResolvedHeadingsConfig, UnorderedListLevelConfig, ResolvedUnorderedListLevelConfig, UnorderedListsConfig, ResolvedUnorderedListsConfig, SyncIndicatorConfig, DebugConfig, ResolvedDebugConfig, } from './types';
11
+ export { DEFAULT_PAGE_CONFIG, DEFAULT_CUT_LINES, PAGE_SIZE_PRESETS, resolvePageConfig, DEFAULT_LAYOUT_CONFIG, DEFAULT_COLUMN_RULE, resolveLayoutConfig, stripLayoutDefaults, DEFAULT_BODY_TEXT_CONFIG, DEFAULT_HYPHENATION_CONFIG, resolveBodyTextConfig, stripBodyTextDefaults, hyphenationEqual, DEFAULT_HEADINGS_CONFIG, resolveHeadingsConfig, stripHeadingsDefaults, DEFAULT_UNORDERED_LISTS_STATIC, resolveUnorderedListsConfig, stripUnorderedListsDefaults, DEFAULT_ORDERED_LISTS_STATIC, resolveOrderedListsConfig, stripOrderedListsDefaults, dimensionsEqual, colorsEqual, resolveColorValue, applyPaletteToConfig, stripPageDefaults, stripConfigDefaults, DEFAULT_DEBUG_CONFIG, resolveDebugConfig, stripDebugDefaults } from './defaults';
12
+ export type { PostextContent, DocumentMetadata, PostextResource, PostextNote, PostextConfig, PostextSectionOverride, ColumnConfig, ResourcePlacementConfig, TypographyConfig, ReferenceConfig, PlacementStrategy, ColorModel, ColorValue, ColorPaletteEntry, DimensionUnit, Dimension, PageSizePreset, PageMargins, BaselineGridConfig, CutLinesConfig, PageConfig, ResolvedPageConfig, LayoutType, ColumnRuleConfig, LayoutConfig, ResolvedLayoutConfig, TextAlign, HyphenationLocale, HyphenationConfig, ResolvedHyphenationConfig, BodyTextConfig, ResolvedBodyTextConfig, HeadingLevelConfig, ResolvedHeadingLevelConfig, HeadingsConfig, ResolvedHeadingsConfig, UnorderedListLevelConfig, ResolvedUnorderedListLevelConfig, UnorderedListsConfig, ResolvedUnorderedListsConfig, OrderedListLevelConfig, ResolvedOrderedListLevelConfig, OrderedListsConfig, ResolvedOrderedListsConfig, OrderedListNumberFormat, SyncIndicatorConfig, DebugConfig, ResolvedDebugConfig, } from './types';
13
13
  export type { BoundingBox, ResolvedConfig, VDTBlockType, VDTLineSegment, VDTLine, VDTBlock, VDTColumn, VDTFootnoteArea, VDTPage, VDTDocument, } from './vdt';
14
- export type { ContentBlock, ContentBlockType, InlineSpan } from './parse';
14
+ export type { ContentBlock, ContentBlockType, InlineSpan, ListKind } from './parse';
15
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACtI,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC3lB,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,EACzB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,0BAA0B,EAC1B,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,gCAAgC,EAChC,oBAAoB,EACpB,4BAA4B,EAC5B,mBAAmB,EACnB,WAAW,EACX,mBAAmB,GACpB,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,WAAW,EACX,cAAc,EACd,YAAY,EACZ,cAAc,EACd,OAAO,EACP,QAAQ,EACR,SAAS,EACT,eAAe,EACf,OAAO,EACP,WAAW,GACZ,MAAM,OAAO,CAAC;AACf,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACtI,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACxtB,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,EACzB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,0BAA0B,EAC1B,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,gCAAgC,EAChC,oBAAoB,EACpB,4BAA4B,EAC5B,sBAAsB,EACtB,8BAA8B,EAC9B,kBAAkB,EAClB,0BAA0B,EAC1B,uBAAuB,EACvB,mBAAmB,EACnB,WAAW,EACX,mBAAmB,GACpB,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,WAAW,EACX,cAAc,EACd,YAAY,EACZ,cAAc,EACd,OAAO,EACP,QAAQ,EACR,SAAS,EACT,eAAe,EACf,OAAO,EACP,WAAW,GACZ,MAAM,OAAO,CAAC;AACf,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -6,5 +6,5 @@ export { buildFontString, measureBlock, measureRichBlock, measureGlyphWidth, ini
6
6
  export { hyphenateText, setHyphenationLocale } from './hyphenate';
7
7
  export { parseMarkdown } from './parse';
8
8
  export { extractFrontmatter } from './frontmatter';
9
- export { DEFAULT_PAGE_CONFIG, DEFAULT_CUT_LINES, PAGE_SIZE_PRESETS, resolvePageConfig, DEFAULT_LAYOUT_CONFIG, DEFAULT_COLUMN_RULE, resolveLayoutConfig, stripLayoutDefaults, DEFAULT_BODY_TEXT_CONFIG, DEFAULT_HYPHENATION_CONFIG, resolveBodyTextConfig, stripBodyTextDefaults, hyphenationEqual, DEFAULT_HEADINGS_CONFIG, resolveHeadingsConfig, stripHeadingsDefaults, DEFAULT_UNORDERED_LISTS_STATIC, resolveUnorderedListsConfig, stripUnorderedListsDefaults, dimensionsEqual, colorsEqual, stripPageDefaults, stripConfigDefaults, DEFAULT_DEBUG_CONFIG, resolveDebugConfig, stripDebugDefaults } from './defaults';
9
+ export { DEFAULT_PAGE_CONFIG, DEFAULT_CUT_LINES, PAGE_SIZE_PRESETS, resolvePageConfig, DEFAULT_LAYOUT_CONFIG, DEFAULT_COLUMN_RULE, resolveLayoutConfig, stripLayoutDefaults, DEFAULT_BODY_TEXT_CONFIG, DEFAULT_HYPHENATION_CONFIG, resolveBodyTextConfig, stripBodyTextDefaults, hyphenationEqual, DEFAULT_HEADINGS_CONFIG, resolveHeadingsConfig, stripHeadingsDefaults, DEFAULT_UNORDERED_LISTS_STATIC, resolveUnorderedListsConfig, stripUnorderedListsDefaults, DEFAULT_ORDERED_LISTS_STATIC, resolveOrderedListsConfig, stripOrderedListsDefaults, dimensionsEqual, colorsEqual, resolveColorValue, applyPaletteToConfig, stripPageDefaults, stripConfigDefaults, DEFAULT_DEBUG_CONFIG, resolveDebugConfig, stripDebugDefaults } from './defaults';
10
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEtI,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEtI,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"measure.d.ts","sourceRoot":"","sources":["../src/measure.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAS1C;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,MAAiB,EACzB,KAAK,GAAE,MAAiB,GACvB,MAAM,CAOR;AAkDD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAE9D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAMD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,aAAa,CA2Df;AAyDD,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpE;AA8CD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,UAAU,EAAE,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,aAAa,CA2Ff"}
1
+ {"version":3,"file":"measure.d.ts","sourceRoot":"","sources":["../src/measure.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAS1C;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,MAAiB,EACzB,KAAK,GAAE,MAAiB,GACvB,MAAM,CAOR;AAkDD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAE9D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAMD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAQD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,aAAa,CAsEf;AAmFD,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpE;AAwED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,UAAU,EAAE,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,aAAa,CAoJf"}
package/dist/measure.js CHANGED
@@ -70,6 +70,11 @@ export function initHyphenator(locale) {
70
70
  export function clearMeasurementCache() {
71
71
  clearCache();
72
72
  }
73
+ /** Compute the normal space width for a given font, used to express justified
74
+ * spacing as a multiplier of the natural space. */
75
+ function normalSpaceWidthFor(font) {
76
+ return measureTextWidth(' ', font);
77
+ }
73
78
  /**
74
79
  * Measure a text block: break it into lines within maxWidthPx
75
80
  * and return VDTLine data with bounding boxes.
@@ -84,12 +89,14 @@ export function measureBlock(text, font, maxWidthPx, lineHeightPx, options) {
84
89
  const shouldHyphenate = options?.hyphenate ?? false;
85
90
  const indentPx = options?.firstLineIndentPx ?? 0;
86
91
  const hanging = options?.hangingIndent ?? false;
92
+ const textAlign = options?.textAlign ?? 'left';
87
93
  const processedText = shouldHyphenate ? hyphenateText(text) : text;
88
94
  const prepared = prepareWithSegments(processedText, font);
89
95
  const lines = [];
90
96
  let cursor = { segmentIndex: 0, graphemeIndex: 0 };
91
97
  let y = 0;
92
98
  let lineIndex = 0;
99
+ const normalSpaceWidth = textAlign === 'justify' ? normalSpaceWidthFor(font) : 0;
93
100
  while (true) {
94
101
  // First line indent: indent line 0 only. Hanging indent: indent all lines except 0.
95
102
  const isFirstLine = lineIndex === 0;
@@ -114,6 +121,7 @@ export function measureBlock(text, font, maxWidthPx, lineHeightPx, options) {
114
121
  };
115
122
  }
116
123
  }
124
+ const justifiedSpaceRatio = computeJustifiedSpaceRatio(segments, lineMaxWidth, normalSpaceWidth, textAlign, isLastLine);
117
125
  lines.push({
118
126
  text: hyphenated ? cleanSoftHyphens(line.text) + '-' : cleanSoftHyphens(line.text),
119
127
  bbox: createBoundingBox(lineIndent, y, line.width, lineHeightPx),
@@ -121,6 +129,7 @@ export function measureBlock(text, font, maxWidthPx, lineHeightPx, options) {
121
129
  hyphenated,
122
130
  segments,
123
131
  isLastLine,
132
+ ...(justifiedSpaceRatio !== undefined ? { justifiedSpaceRatio } : {}),
124
133
  });
125
134
  cursor = nextCursor;
126
135
  y += lineHeightPx;
@@ -128,6 +137,22 @@ export function measureBlock(text, font, maxWidthPx, lineHeightPx, options) {
128
137
  }
129
138
  return { lines, totalHeight: y };
130
139
  }
140
+ function computeJustifiedSpaceRatio(segments, lineMaxWidth, normalSpaceWidth, textAlign, isLastLine) {
141
+ if (textAlign !== 'justify' || isLastLine || normalSpaceWidth <= 0)
142
+ return undefined;
143
+ let wordWidth = 0;
144
+ let spaceCount = 0;
145
+ for (const s of segments) {
146
+ if (s.kind === 'space')
147
+ spaceCount++;
148
+ else
149
+ wordWidth += s.width;
150
+ }
151
+ if (spaceCount === 0)
152
+ return undefined;
153
+ const justifiedSpaceWidth = (lineMaxWidth - wordWidth) / spaceCount;
154
+ return justifiedSpaceWidth / normalSpaceWidth;
155
+ }
131
156
  // ---------------------------------------------------------------------------
132
157
  // Helpers
133
158
  // ---------------------------------------------------------------------------
@@ -192,13 +217,40 @@ function tokenizeSpans(spans, normalFont, boldFont, italicFont, boldItalicFont,
192
217
  continue;
193
218
  for (const part of parts) {
194
219
  const isSpace = part.trim().length === 0;
195
- tokens.push({
196
- text: part,
197
- bold: span.bold,
198
- italic: span.italic,
199
- kind: isSpace ? 'space' : 'text',
200
- width: measureTextWidth(part, font),
201
- });
220
+ if (!isSpace && part.includes(SOFT_HYPHEN)) {
221
+ const clean = part.replace(/\u00AD/g, '');
222
+ const cleanWidth = measureTextWidth(clean, font);
223
+ const breakPoints = [];
224
+ let priorSoft = 0;
225
+ for (let i = 0; i < part.length; i++) {
226
+ if (part[i] === SOFT_HYPHEN) {
227
+ const cleanIdx = i - priorSoft;
228
+ breakPoints.push({
229
+ charIndex: cleanIdx,
230
+ widthBefore: measureTextWidth(clean.slice(0, cleanIdx), font),
231
+ });
232
+ priorSoft++;
233
+ }
234
+ }
235
+ tokens.push({
236
+ text: clean,
237
+ bold: span.bold,
238
+ italic: span.italic,
239
+ kind: 'text',
240
+ width: cleanWidth,
241
+ breakPoints,
242
+ hyphenWidth: measureTextWidth('-', font),
243
+ });
244
+ }
245
+ else {
246
+ tokens.push({
247
+ text: part,
248
+ bold: span.bold,
249
+ italic: span.italic,
250
+ kind: isSpace ? 'space' : 'text',
251
+ width: measureTextWidth(part, font),
252
+ });
253
+ }
202
254
  }
203
255
  }
204
256
  return tokens;
@@ -215,7 +267,9 @@ export function measureRichBlock(spans, normalFont, boldFont, italicFont, boldIt
215
267
  const shouldHyphenate = options?.hyphenate ?? false;
216
268
  const indentPx = options?.firstLineIndentPx ?? 0;
217
269
  const hanging = options?.hangingIndent ?? false;
270
+ const textAlign = options?.textAlign ?? 'left';
218
271
  const tokens = tokenizeSpans(spans, normalFont, boldFont, italicFont, boldItalicFont, shouldHyphenate);
272
+ const normalSpaceWidth = textAlign === 'justify' ? normalSpaceWidthFor(normalFont) : 0;
219
273
  if (tokens.length === 0) {
220
274
  return { lines: [], totalHeight: 0 };
221
275
  }
@@ -231,6 +285,7 @@ export function measureRichBlock(spans, normalFont, boldFont, italicFont, boldIt
231
285
  const lineMaxWidth = maxWidthPx - lineIndent;
232
286
  const lineTokens = [];
233
287
  let lineWidth = 0;
288
+ let lineHyphenated = false;
234
289
  // Consume leading spaces at line start (skip them)
235
290
  while (tokenIdx < tokens.length && tokens[tokenIdx].kind === 'space') {
236
291
  tokenIdx++;
@@ -238,15 +293,58 @@ export function measureRichBlock(spans, normalFont, boldFont, italicFont, boldIt
238
293
  // Greedy: add tokens until we overflow
239
294
  while (tokenIdx < tokens.length) {
240
295
  const token = tokens[tokenIdx];
241
- if (lineWidth + token.width <= lineMaxWidth || lineTokens.length === 0) {
296
+ if (lineWidth + token.width <= lineMaxWidth) {
242
297
  lineTokens.push(token);
243
298
  lineWidth += token.width;
244
299
  tokenIdx++;
300
+ continue;
245
301
  }
246
- else {
247
- // Doesn't fit break here (before this token)
248
- break;
302
+ // Doesn't fit. Try to split at a soft-hyphen.
303
+ if (token.kind === 'text' && token.breakPoints && token.breakPoints.length > 0) {
304
+ const remaining = lineMaxWidth - lineWidth;
305
+ const hyphenW = token.hyphenWidth ?? 0;
306
+ let chosen = null;
307
+ for (const bp of token.breakPoints) {
308
+ if (bp.widthBefore + hyphenW <= remaining)
309
+ chosen = bp;
310
+ else
311
+ break;
312
+ }
313
+ if (chosen) {
314
+ lineTokens.push({
315
+ text: token.text.slice(0, chosen.charIndex) + '-',
316
+ bold: token.bold,
317
+ italic: token.italic,
318
+ kind: 'text',
319
+ width: chosen.widthBefore + hyphenW,
320
+ });
321
+ lineWidth += chosen.widthBefore + hyphenW;
322
+ lineHyphenated = true;
323
+ const chosenIdx = chosen.charIndex;
324
+ const chosenWidth = chosen.widthBefore;
325
+ const residualBreakPoints = token.breakPoints
326
+ .filter((bp) => bp.charIndex > chosenIdx)
327
+ .map((bp) => ({ charIndex: bp.charIndex - chosenIdx, widthBefore: bp.widthBefore - chosenWidth }));
328
+ tokens[tokenIdx] = {
329
+ text: token.text.slice(chosenIdx),
330
+ bold: token.bold,
331
+ italic: token.italic,
332
+ kind: 'text',
333
+ width: token.width - chosenWidth,
334
+ ...(residualBreakPoints.length > 0
335
+ ? { breakPoints: residualBreakPoints, hyphenWidth: token.hyphenWidth }
336
+ : {}),
337
+ };
338
+ break;
339
+ }
340
+ }
341
+ // No viable split. If line is empty, force-fit this token; else break to next line.
342
+ if (lineTokens.length === 0) {
343
+ lineTokens.push(token);
344
+ lineWidth += token.width;
345
+ tokenIdx++;
249
346
  }
347
+ break;
250
348
  }
251
349
  if (lineTokens.length === 0)
252
350
  break;
@@ -272,13 +370,15 @@ export function measureRichBlock(spans, normalFont, boldFont, italicFont, boldIt
272
370
  }));
273
371
  const lineText = lineTokens.map((t) => cleanSoftHyphens(t.text)).join('');
274
372
  const contentWidth = lineTokens.reduce((sum, t) => sum + t.width, 0);
373
+ const justifiedSpaceRatio = computeJustifiedSpaceRatio(segments, lineMaxWidth, normalSpaceWidth, textAlign, isLastLine);
275
374
  lines.push({
276
375
  text: lineText,
277
376
  bbox: createBoundingBox(lineIndent, y, contentWidth, lineHeightPx),
278
377
  baseline: y + lineHeightPx * 0.8,
279
- hyphenated: false,
378
+ hyphenated: lineHyphenated,
280
379
  segments,
281
380
  isLastLine,
381
+ ...(justifiedSpaceRatio !== undefined ? { justifiedSpaceRatio } : {}),
282
382
  });
283
383
  y += lineHeightPx;
284
384
  lineIndex++;