postext 0.1.3 → 0.1.4
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__/exports.test.js +25 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/canvas-backend.d.ts +5 -0
- package/dist/canvas-backend.d.ts.map +1 -0
- package/dist/canvas-backend.js +156 -0
- package/dist/canvas-backend.js.map +1 -0
- package/dist/createLayout.d.ts +2 -2
- package/dist/createLayout.d.ts.map +1 -1
- package/dist/createLayout.js +25 -2
- package/dist/createLayout.js.map +1 -1
- package/dist/defaults.d.ts +15 -3
- package/dist/defaults.d.ts.map +1 -1
- package/dist/defaults.js +276 -8
- package/dist/defaults.js.map +1 -1
- package/dist/hyphenate.d.ts +11 -0
- package/dist/hyphenate.d.ts.map +1 -0
- package/dist/hyphenate.js +140 -0
- package/dist/hyphenate.js.map +1 -0
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/measure.d.ts +40 -0
- package/dist/measure.d.ts.map +1 -0
- package/dist/measure.js +267 -0
- package/dist/measure.js.map +1 -0
- package/dist/parse.d.ts +17 -0
- package/dist/parse.d.ts.map +1 -0
- package/dist/parse.js +152 -0
- package/dist/parse.js.map +1 -0
- package/dist/pipeline.d.ts +4 -0
- package/dist/pipeline.d.ts.map +1 -0
- package/dist/pipeline.js +324 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/types.d.ts +111 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/units.d.ts +9 -0
- package/dist/units.d.ts.map +1 -0
- package/dist/units.js +27 -0
- package/dist/units.js.map +1 -0
- package/dist/vdt.d.ts +83 -0
- package/dist/vdt.d.ts.map +1 -0
- package/dist/vdt.js +50 -0
- package/dist/vdt.js.map +1 -0
- package/package.json +4 -1
package/dist/types.d.ts
CHANGED
|
@@ -62,24 +62,30 @@ export interface ReferenceConfig {
|
|
|
62
62
|
tableNumbering?: boolean;
|
|
63
63
|
marginNotes?: boolean;
|
|
64
64
|
}
|
|
65
|
-
export type
|
|
65
|
+
export type ColorModel = 'hex' | 'rgb' | 'cmyk' | 'hsl';
|
|
66
|
+
export interface ColorValue {
|
|
67
|
+
hex: string;
|
|
68
|
+
model: ColorModel;
|
|
69
|
+
}
|
|
70
|
+
export type DimensionUnit = 'cm' | 'mm' | 'in' | 'pt' | 'px' | 'em' | 'rem';
|
|
66
71
|
export interface Dimension {
|
|
67
72
|
value: number;
|
|
68
73
|
unit: DimensionUnit;
|
|
69
74
|
}
|
|
70
75
|
export type PageSizePreset = '11x17' | '12x19' | '17x24' | '21x28' | 'custom';
|
|
71
76
|
export interface PageMargins {
|
|
72
|
-
top
|
|
73
|
-
bottom
|
|
74
|
-
left
|
|
75
|
-
right
|
|
77
|
+
top?: Dimension;
|
|
78
|
+
bottom?: Dimension;
|
|
79
|
+
left?: Dimension;
|
|
80
|
+
right?: Dimension;
|
|
76
81
|
}
|
|
77
82
|
export interface BaselineGridConfig {
|
|
78
83
|
enabled: boolean;
|
|
79
|
-
color?:
|
|
84
|
+
color?: ColorValue;
|
|
85
|
+
lineWidth?: Dimension;
|
|
80
86
|
}
|
|
81
87
|
export interface PageConfig {
|
|
82
|
-
backgroundColor?:
|
|
88
|
+
backgroundColor?: ColorValue;
|
|
83
89
|
sizePreset?: PageSizePreset;
|
|
84
90
|
width?: Dimension;
|
|
85
91
|
height?: Dimension;
|
|
@@ -88,6 +94,101 @@ export interface PageConfig {
|
|
|
88
94
|
cutLines?: boolean;
|
|
89
95
|
baselineGrid?: BaselineGridConfig;
|
|
90
96
|
}
|
|
97
|
+
export interface ResolvedPageConfig {
|
|
98
|
+
backgroundColor: ColorValue;
|
|
99
|
+
sizePreset: PageSizePreset;
|
|
100
|
+
width: Dimension;
|
|
101
|
+
height: Dimension;
|
|
102
|
+
margins: Required<PageMargins>;
|
|
103
|
+
dpi: number;
|
|
104
|
+
cutLines: boolean;
|
|
105
|
+
baselineGrid: {
|
|
106
|
+
enabled: boolean;
|
|
107
|
+
color: ColorValue;
|
|
108
|
+
lineWidth: Dimension;
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
export type LayoutType = 'single' | 'double' | 'oneAndHalf';
|
|
112
|
+
export interface LayoutConfig {
|
|
113
|
+
layoutType?: LayoutType;
|
|
114
|
+
gutterWidth?: Dimension;
|
|
115
|
+
sideColumnPercent?: number;
|
|
116
|
+
}
|
|
117
|
+
export interface ResolvedLayoutConfig {
|
|
118
|
+
layoutType: LayoutType;
|
|
119
|
+
gutterWidth: Dimension;
|
|
120
|
+
sideColumnPercent: number;
|
|
121
|
+
}
|
|
122
|
+
export type TextAlign = 'left' | 'justify';
|
|
123
|
+
export type HyphenationLocale = 'en-us' | 'es' | 'fr' | 'de' | 'it' | 'pt' | 'ca' | 'nl';
|
|
124
|
+
export interface HyphenationConfig {
|
|
125
|
+
enabled?: boolean;
|
|
126
|
+
locale?: HyphenationLocale;
|
|
127
|
+
}
|
|
128
|
+
export interface ResolvedHyphenationConfig {
|
|
129
|
+
enabled: boolean;
|
|
130
|
+
locale: HyphenationLocale;
|
|
131
|
+
}
|
|
132
|
+
export interface BodyTextConfig {
|
|
133
|
+
fontFamily?: string;
|
|
134
|
+
fontSize?: Dimension;
|
|
135
|
+
lineHeight?: Dimension;
|
|
136
|
+
color?: ColorValue;
|
|
137
|
+
textAlign?: TextAlign;
|
|
138
|
+
fontWeight?: number;
|
|
139
|
+
boldFontWeight?: number;
|
|
140
|
+
hyphenation?: HyphenationConfig;
|
|
141
|
+
}
|
|
142
|
+
export interface ResolvedBodyTextConfig {
|
|
143
|
+
fontFamily: string;
|
|
144
|
+
fontSize: Dimension;
|
|
145
|
+
lineHeight: Dimension;
|
|
146
|
+
color: ColorValue;
|
|
147
|
+
textAlign: TextAlign;
|
|
148
|
+
fontWeight: number;
|
|
149
|
+
boldFontWeight: number;
|
|
150
|
+
hyphenation: ResolvedHyphenationConfig;
|
|
151
|
+
}
|
|
152
|
+
export interface HeadingLevelConfig {
|
|
153
|
+
level: number;
|
|
154
|
+
fontSize?: Dimension;
|
|
155
|
+
lineHeight?: Dimension;
|
|
156
|
+
fontFamily?: string;
|
|
157
|
+
color?: ColorValue;
|
|
158
|
+
fontWeight?: number;
|
|
159
|
+
marginTop?: Dimension;
|
|
160
|
+
marginBottom?: Dimension;
|
|
161
|
+
}
|
|
162
|
+
export interface ResolvedHeadingLevelConfig {
|
|
163
|
+
level: number;
|
|
164
|
+
fontSize: Dimension;
|
|
165
|
+
lineHeight: Dimension;
|
|
166
|
+
fontFamily: string;
|
|
167
|
+
color: ColorValue;
|
|
168
|
+
fontWeight: number;
|
|
169
|
+
marginTop: Dimension;
|
|
170
|
+
marginBottom: Dimension;
|
|
171
|
+
}
|
|
172
|
+
export interface HeadingsConfig {
|
|
173
|
+
fontFamily?: string;
|
|
174
|
+
lineHeight?: Dimension;
|
|
175
|
+
color?: ColorValue;
|
|
176
|
+
textAlign?: TextAlign;
|
|
177
|
+
fontWeight?: number;
|
|
178
|
+
marginTop?: Dimension;
|
|
179
|
+
marginBottom?: Dimension;
|
|
180
|
+
levels?: HeadingLevelConfig[];
|
|
181
|
+
}
|
|
182
|
+
export interface ResolvedHeadingsConfig {
|
|
183
|
+
fontFamily: string;
|
|
184
|
+
lineHeight: Dimension;
|
|
185
|
+
color: ColorValue;
|
|
186
|
+
textAlign: TextAlign;
|
|
187
|
+
fontWeight: number;
|
|
188
|
+
marginTop: Dimension;
|
|
189
|
+
marginBottom: Dimension;
|
|
190
|
+
levels: ResolvedHeadingLevelConfig[];
|
|
191
|
+
}
|
|
91
192
|
export interface PostextSectionOverride {
|
|
92
193
|
selector: string;
|
|
93
194
|
columns?: ColumnConfig;
|
|
@@ -96,6 +197,9 @@ export interface PostextSectionOverride {
|
|
|
96
197
|
}
|
|
97
198
|
export interface PostextConfig {
|
|
98
199
|
page?: PageConfig;
|
|
200
|
+
layout?: LayoutConfig;
|
|
201
|
+
bodyText?: BodyTextConfig;
|
|
202
|
+
headings?: HeadingsConfig;
|
|
99
203
|
columns?: number;
|
|
100
204
|
gutter?: string;
|
|
101
205
|
columnConfig?: ColumnConfig;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,MAAM,MAAM,iBAAiB,GACzB,aAAa,GACb,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,gBAAgB,GAChB,QAAQ,CAAC;AAEb,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE;QACX,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,eAAe,CAAC,EAAE,iBAAiB,CAAC;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,YAAY,CAAC,EAAE;QACb,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE;QACV,SAAS,CAAC,EAAE,cAAc,GAAG,YAAY,GAAG,cAAc,CAAC;QAC3D,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;KACzC,CAAC;IACF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/units.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Dimension } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Convert a Dimension to pixels at a given DPI.
|
|
4
|
+
*
|
|
5
|
+
* For relative units (em, rem) the caller must supply baseFontSizePx —
|
|
6
|
+
* the resolved font-size of the element the dimension is relative to.
|
|
7
|
+
*/
|
|
8
|
+
export declare function dimensionToPx(dim: Dimension, dpi: number, baseFontSizePx?: number): number;
|
|
9
|
+
//# sourceMappingURL=units.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"units.d.ts","sourceRoot":"","sources":["../src/units.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAqBR"}
|
package/dist/units.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert a Dimension to pixels at a given DPI.
|
|
3
|
+
*
|
|
4
|
+
* For relative units (em, rem) the caller must supply baseFontSizePx —
|
|
5
|
+
* the resolved font-size of the element the dimension is relative to.
|
|
6
|
+
*/
|
|
7
|
+
export function dimensionToPx(dim, dpi, baseFontSizePx) {
|
|
8
|
+
switch (dim.unit) {
|
|
9
|
+
case 'cm':
|
|
10
|
+
return (dim.value / 2.54) * dpi;
|
|
11
|
+
case 'mm':
|
|
12
|
+
return (dim.value / 25.4) * dpi;
|
|
13
|
+
case 'in':
|
|
14
|
+
return dim.value * dpi;
|
|
15
|
+
case 'pt':
|
|
16
|
+
return (dim.value / 72) * dpi;
|
|
17
|
+
case 'px':
|
|
18
|
+
return dim.value;
|
|
19
|
+
case 'em':
|
|
20
|
+
case 'rem':
|
|
21
|
+
if (baseFontSizePx === undefined) {
|
|
22
|
+
throw new Error(`dimensionToPx: baseFontSizePx is required for unit "${dim.unit}"`);
|
|
23
|
+
}
|
|
24
|
+
return dim.value * baseFontSizePx;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=units.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"units.js","sourceRoot":"","sources":["../src/units.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,GAAc,EACd,GAAW,EACX,cAAuB;IAEvB,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QAClC,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QAClC,KAAK,IAAI;YACP,OAAO,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;QACzB,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;QAChC,KAAK,IAAI;YACP,OAAO,GAAG,CAAC,KAAK,CAAC;QACnB,KAAK,IAAI,CAAC;QACV,KAAK,KAAK;YACR,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CACb,uDAAuD,GAAG,CAAC,IAAI,GAAG,CACnE,CAAC;YACJ,CAAC;YACD,OAAO,GAAG,CAAC,KAAK,GAAG,cAAc,CAAC;IACtC,CAAC;AACH,CAAC"}
|
package/dist/vdt.d.ts
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { PostextResource, ResolvedPageConfig, ResolvedLayoutConfig, ResolvedBodyTextConfig, ResolvedHeadingsConfig } from './types';
|
|
2
|
+
export interface BoundingBox {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
}
|
|
8
|
+
export interface ResolvedConfig {
|
|
9
|
+
page: ResolvedPageConfig;
|
|
10
|
+
layout: ResolvedLayoutConfig;
|
|
11
|
+
bodyText: ResolvedBodyTextConfig;
|
|
12
|
+
headings: ResolvedHeadingsConfig;
|
|
13
|
+
}
|
|
14
|
+
export type VDTBlockType = 'paragraph' | 'heading' | 'resource' | 'blockquote' | 'listItem' | 'footnoteRef';
|
|
15
|
+
export type TextAlign = 'left' | 'justify';
|
|
16
|
+
export interface VDTLineSegment {
|
|
17
|
+
kind: 'text' | 'space';
|
|
18
|
+
text: string;
|
|
19
|
+
width: number;
|
|
20
|
+
bold?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface VDTLine {
|
|
23
|
+
text: string;
|
|
24
|
+
bbox: BoundingBox;
|
|
25
|
+
baseline: number;
|
|
26
|
+
hyphenated: boolean;
|
|
27
|
+
/** Per-segment data for justified rendering */
|
|
28
|
+
segments?: VDTLineSegment[];
|
|
29
|
+
/** Whether this is the last line of the paragraph (ragged even when justified) */
|
|
30
|
+
isLastLine?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface VDTBlock {
|
|
33
|
+
id: string;
|
|
34
|
+
type: VDTBlockType;
|
|
35
|
+
bbox: BoundingBox;
|
|
36
|
+
lines: VDTLine[];
|
|
37
|
+
resource?: PostextResource;
|
|
38
|
+
pageIndex: number;
|
|
39
|
+
columnIndex: number;
|
|
40
|
+
dirty: boolean;
|
|
41
|
+
snappedToGrid: boolean;
|
|
42
|
+
headingLevel?: number;
|
|
43
|
+
fontString: string;
|
|
44
|
+
boldFontString?: string;
|
|
45
|
+
color: string;
|
|
46
|
+
textAlign: TextAlign;
|
|
47
|
+
}
|
|
48
|
+
export interface VDTColumn {
|
|
49
|
+
index: number;
|
|
50
|
+
bbox: BoundingBox;
|
|
51
|
+
blocks: VDTBlock[];
|
|
52
|
+
availableHeight: number;
|
|
53
|
+
baselineOffset: number;
|
|
54
|
+
}
|
|
55
|
+
export interface VDTFootnoteArea {
|
|
56
|
+
bbox: BoundingBox;
|
|
57
|
+
notes: VDTBlock[];
|
|
58
|
+
separator: boolean;
|
|
59
|
+
}
|
|
60
|
+
export interface VDTPage {
|
|
61
|
+
index: number;
|
|
62
|
+
width: number;
|
|
63
|
+
height: number;
|
|
64
|
+
columns: VDTColumn[];
|
|
65
|
+
header?: VDTBlock;
|
|
66
|
+
footer?: VDTBlock;
|
|
67
|
+
marginNotes: VDTBlock[];
|
|
68
|
+
footnoteArea?: VDTFootnoteArea;
|
|
69
|
+
}
|
|
70
|
+
export interface VDTDocument {
|
|
71
|
+
pages: VDTPage[];
|
|
72
|
+
blocks: VDTBlock[];
|
|
73
|
+
config: ResolvedConfig;
|
|
74
|
+
baselineGrid: number;
|
|
75
|
+
converged: boolean;
|
|
76
|
+
iterationCount: number;
|
|
77
|
+
}
|
|
78
|
+
export declare function createBoundingBox(x: number, y: number, width: number, height: number): BoundingBox;
|
|
79
|
+
export declare function createVDTDocument(config: ResolvedConfig, baselineGrid: number): VDTDocument;
|
|
80
|
+
export declare function createVDTPage(index: number, width: number, height: number): VDTPage;
|
|
81
|
+
export declare function createVDTColumn(index: number, bbox: BoundingBox): VDTColumn;
|
|
82
|
+
export declare function createVDTBlock(id: string, type: VDTBlockType, fontString: string, color: string, textAlign?: TextAlign): VDTBlock;
|
|
83
|
+
//# sourceMappingURL=vdt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vdt.d.ts","sourceRoot":"","sources":["../src/vdt.ts"],"names":[],"mappings":"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"}
|
package/dist/vdt.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Factory functions
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
export function createBoundingBox(x, y, width, height) {
|
|
5
|
+
return { x, y, width, height };
|
|
6
|
+
}
|
|
7
|
+
export function createVDTDocument(config, baselineGrid) {
|
|
8
|
+
return {
|
|
9
|
+
pages: [],
|
|
10
|
+
blocks: [],
|
|
11
|
+
config,
|
|
12
|
+
baselineGrid,
|
|
13
|
+
converged: false,
|
|
14
|
+
iterationCount: 0,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function createVDTPage(index, width, height) {
|
|
18
|
+
return {
|
|
19
|
+
index,
|
|
20
|
+
width,
|
|
21
|
+
height,
|
|
22
|
+
columns: [],
|
|
23
|
+
marginNotes: [],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function createVDTColumn(index, bbox) {
|
|
27
|
+
return {
|
|
28
|
+
index,
|
|
29
|
+
bbox,
|
|
30
|
+
blocks: [],
|
|
31
|
+
availableHeight: bbox.height,
|
|
32
|
+
baselineOffset: 0,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export function createVDTBlock(id, type, fontString, color, textAlign = 'left') {
|
|
36
|
+
return {
|
|
37
|
+
id,
|
|
38
|
+
type,
|
|
39
|
+
bbox: { x: 0, y: 0, width: 0, height: 0 },
|
|
40
|
+
lines: [],
|
|
41
|
+
pageIndex: -1,
|
|
42
|
+
columnIndex: -1,
|
|
43
|
+
dirty: true,
|
|
44
|
+
snappedToGrid: false,
|
|
45
|
+
fontString,
|
|
46
|
+
color,
|
|
47
|
+
textAlign,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=vdt.js.map
|
package/dist/vdt.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vdt.js","sourceRoot":"","sources":["../src/vdt.ts"],"names":[],"mappings":"AAiHA,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,UAAU,iBAAiB,CAC/B,CAAS,EACT,CAAS,EACT,KAAa,EACb,MAAc;IAEd,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAsB,EACtB,YAAoB;IAEpB,OAAO;QACL,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,MAAM;QACN,YAAY;QACZ,SAAS,EAAE,KAAK;QAChB,cAAc,EAAE,CAAC;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,KAAa,EACb,KAAa,EACb,MAAc;IAEd,OAAO;QACL,KAAK;QACL,KAAK;QACL,MAAM;QACN,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,EAAE;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,KAAa,EACb,IAAiB;IAEjB,OAAO;QACL,KAAK;QACL,IAAI;QACJ,MAAM,EAAE,EAAE;QACV,eAAe,EAAE,IAAI,CAAC,MAAM;QAC5B,cAAc,EAAE,CAAC;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,EAAU,EACV,IAAkB,EAClB,UAAkB,EAClB,KAAa,EACb,YAAuB,MAAM;IAE7B,OAAO;QACL,EAAE;QACF,IAAI;QACJ,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QACzC,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,CAAC,CAAC;QACb,WAAW,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,IAAI;QACX,aAAa,EAAE,KAAK;QACpB,UAAU;QACV,KAAK;QACL,SAAS;KACV,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "postext",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "A programmable typesetter for the web. Layout engine that applies professional editorial rules — columns, orphan/widow prevention, resource placement, footnotes — to semantic content. Built on @chenglou/pretext for DOM-free text measurement.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -32,6 +32,9 @@
|
|
|
32
32
|
"vitest": "^4.1.3",
|
|
33
33
|
"@postext/typescript-config": "0.0.0"
|
|
34
34
|
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@chenglou/pretext": "^0.0.5"
|
|
37
|
+
},
|
|
35
38
|
"scripts": {
|
|
36
39
|
"build": "tsc",
|
|
37
40
|
"dev": "tsc --watch",
|