@jsonpdf/plugins 0.1.0-alpha.1

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 (135) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +59 -0
  3. package/dist/barcode/barcode-generator.d.ts +18 -0
  4. package/dist/barcode/barcode-generator.d.ts.map +1 -0
  5. package/dist/barcode/barcode-generator.js +94 -0
  6. package/dist/barcode/barcode-generator.js.map +1 -0
  7. package/dist/barcode/barcode-plugin.d.ts +4 -0
  8. package/dist/barcode/barcode-plugin.d.ts.map +1 -0
  9. package/dist/barcode/barcode-plugin.js +70 -0
  10. package/dist/barcode/barcode-plugin.js.map +1 -0
  11. package/dist/barcode/barcode-types.d.ts +29 -0
  12. package/dist/barcode/barcode-types.d.ts.map +1 -0
  13. package/dist/barcode/barcode-types.js +60 -0
  14. package/dist/barcode/barcode-types.js.map +1 -0
  15. package/dist/chart/chart-generator.d.ts +17 -0
  16. package/dist/chart/chart-generator.d.ts.map +1 -0
  17. package/dist/chart/chart-generator.js +77 -0
  18. package/dist/chart/chart-generator.js.map +1 -0
  19. package/dist/chart/chart-plugin.d.ts +4 -0
  20. package/dist/chart/chart-plugin.d.ts.map +1 -0
  21. package/dist/chart/chart-plugin.js +65 -0
  22. package/dist/chart/chart-plugin.js.map +1 -0
  23. package/dist/chart/chart-types.d.ts +18 -0
  24. package/dist/chart/chart-types.d.ts.map +1 -0
  25. package/dist/chart/chart-types.js +18 -0
  26. package/dist/chart/chart-types.js.map +1 -0
  27. package/dist/container/container-plugin.d.ts +15 -0
  28. package/dist/container/container-plugin.d.ts.map +1 -0
  29. package/dist/container/container-plugin.js +190 -0
  30. package/dist/container/container-plugin.js.map +1 -0
  31. package/dist/frame/frame-plugin.d.ts +4 -0
  32. package/dist/frame/frame-plugin.d.ts.map +1 -0
  33. package/dist/frame/frame-plugin.js +52 -0
  34. package/dist/frame/frame-plugin.js.map +1 -0
  35. package/dist/frame/frame-types.d.ts +8 -0
  36. package/dist/frame/frame-types.d.ts.map +1 -0
  37. package/dist/frame/frame-types.js +17 -0
  38. package/dist/frame/frame-types.js.map +1 -0
  39. package/dist/image/image-loader.d.ts +13 -0
  40. package/dist/image/image-loader.d.ts.map +1 -0
  41. package/dist/image/image-loader.js +73 -0
  42. package/dist/image/image-loader.js.map +1 -0
  43. package/dist/image/image-plugin.d.ts +19 -0
  44. package/dist/image/image-plugin.d.ts.map +1 -0
  45. package/dist/image/image-plugin.js +112 -0
  46. package/dist/image/image-plugin.js.map +1 -0
  47. package/dist/image/svg-rasterizer.d.ts +30 -0
  48. package/dist/image/svg-rasterizer.d.ts.map +1 -0
  49. package/dist/image/svg-rasterizer.js +97 -0
  50. package/dist/image/svg-rasterizer.js.map +1 -0
  51. package/dist/index.d.ts +32 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +38 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/line/line-plugin.d.ts +11 -0
  56. package/dist/line/line-plugin.d.ts.map +1 -0
  57. package/dist/line/line-plugin.js +68 -0
  58. package/dist/line/line-plugin.js.map +1 -0
  59. package/dist/list/list-plugin.d.ts +13 -0
  60. package/dist/list/list-plugin.d.ts.map +1 -0
  61. package/dist/list/list-plugin.js +194 -0
  62. package/dist/list/list-plugin.js.map +1 -0
  63. package/dist/list/list-types.d.ts +9 -0
  64. package/dist/list/list-types.d.ts.map +1 -0
  65. package/dist/list/list-types.js +9 -0
  66. package/dist/list/list-types.js.map +1 -0
  67. package/dist/platform/base64.d.ts +7 -0
  68. package/dist/platform/base64.d.ts.map +1 -0
  69. package/dist/platform/base64.js +17 -0
  70. package/dist/platform/base64.js.map +1 -0
  71. package/dist/platform/font-store.d.ts +3 -0
  72. package/dist/platform/font-store.d.ts.map +1 -0
  73. package/dist/platform/font-store.js +8 -0
  74. package/dist/platform/font-store.js.map +1 -0
  75. package/dist/platform/fs.browser.d.ts +6 -0
  76. package/dist/platform/fs.browser.d.ts.map +1 -0
  77. package/dist/platform/fs.browser.js +10 -0
  78. package/dist/platform/fs.browser.js.map +1 -0
  79. package/dist/platform/fs.d.ts +5 -0
  80. package/dist/platform/fs.d.ts.map +1 -0
  81. package/dist/platform/fs.js +10 -0
  82. package/dist/platform/fs.js.map +1 -0
  83. package/dist/platform/init.browser.d.ts +10 -0
  84. package/dist/platform/init.browser.d.ts.map +1 -0
  85. package/dist/platform/init.browser.js +24 -0
  86. package/dist/platform/init.browser.js.map +1 -0
  87. package/dist/platform/init.d.ts +6 -0
  88. package/dist/platform/init.d.ts.map +1 -0
  89. package/dist/platform/init.js +12 -0
  90. package/dist/platform/init.js.map +1 -0
  91. package/dist/platform/svg-rasterizer.browser.d.ts +2 -0
  92. package/dist/platform/svg-rasterizer.browser.d.ts.map +1 -0
  93. package/dist/platform/svg-rasterizer.browser.js +2 -0
  94. package/dist/platform/svg-rasterizer.browser.js.map +1 -0
  95. package/dist/platform/svg-rasterizer.d.ts +2 -0
  96. package/dist/platform/svg-rasterizer.d.ts.map +1 -0
  97. package/dist/platform/svg-rasterizer.js +2 -0
  98. package/dist/platform/svg-rasterizer.js.map +1 -0
  99. package/dist/registry.d.ts +32 -0
  100. package/dist/registry.d.ts.map +1 -0
  101. package/dist/registry.js +67 -0
  102. package/dist/registry.js.map +1 -0
  103. package/dist/shape/shape-plugin.d.ts +21 -0
  104. package/dist/shape/shape-plugin.d.ts.map +1 -0
  105. package/dist/shape/shape-plugin.js +148 -0
  106. package/dist/shape/shape-plugin.js.map +1 -0
  107. package/dist/table/table-plugin.d.ts +4 -0
  108. package/dist/table/table-plugin.d.ts.map +1 -0
  109. package/dist/table/table-plugin.js +232 -0
  110. package/dist/table/table-plugin.js.map +1 -0
  111. package/dist/table/table-types.d.ts +50 -0
  112. package/dist/table/table-types.d.ts.map +1 -0
  113. package/dist/table/table-types.js +129 -0
  114. package/dist/table/table-types.js.map +1 -0
  115. package/dist/text/text-decoration.d.ts +22 -0
  116. package/dist/text/text-decoration.d.ts.map +1 -0
  117. package/dist/text/text-decoration.js +43 -0
  118. package/dist/text/text-decoration.js.map +1 -0
  119. package/dist/text/text-plugin.d.ts +9 -0
  120. package/dist/text/text-plugin.d.ts.map +1 -0
  121. package/dist/text/text-plugin.js +496 -0
  122. package/dist/text/text-plugin.js.map +1 -0
  123. package/dist/text/word-wrap.d.ts +41 -0
  124. package/dist/text/word-wrap.d.ts.map +1 -0
  125. package/dist/text/word-wrap.js +149 -0
  126. package/dist/text/word-wrap.js.map +1 -0
  127. package/dist/types.d.ts +96 -0
  128. package/dist/types.d.ts.map +1 -0
  129. package/dist/types.js +5 -0
  130. package/dist/types.js.map +1 -0
  131. package/dist/utils.d.ts +8 -0
  132. package/dist/utils.d.ts.map +1 -0
  133. package/dist/utils.js +27 -0
  134. package/dist/utils.js.map +1 -0
  135. package/package.json +62 -0
@@ -0,0 +1,232 @@
1
+ import { rgb, pushGraphicsState, popGraphicsState, setCharacterSpacing } from 'pdf-lib';
2
+ import { parseColor, isGradient } from '@jsonpdf/core';
3
+ import { getFont, getLineHeight } from '../utils.js';
4
+ import { wrapText, measureTextWidth } from '../text/word-wrap.js';
5
+ import { drawTextDecoration } from '../text/text-decoration.js';
6
+ import { tablePropsSchema, TABLE_DEFAULTS, measureAllRows, } from './table-types.js';
7
+ export const tablePlugin = {
8
+ type: 'table',
9
+ propsSchema: tablePropsSchema,
10
+ defaultProps: TABLE_DEFAULTS,
11
+ canSplit: true,
12
+ resolveProps(raw) {
13
+ return { ...TABLE_DEFAULTS, ...raw };
14
+ },
15
+ validate(props) {
16
+ const errors = [];
17
+ if (!Array.isArray(props.columns) || props.columns.length === 0) {
18
+ errors.push({ path: '/columns', message: 'must have at least one column' });
19
+ }
20
+ if (!Array.isArray(props.rows)) {
21
+ errors.push({ path: '/rows', message: 'must be an array' });
22
+ }
23
+ return errors;
24
+ },
25
+ measure(props, ctx) {
26
+ if (props.columns.length === 0) {
27
+ return Promise.resolve({ width: ctx.availableWidth, height: 0 });
28
+ }
29
+ const m = measureAllRows(props, ctx);
30
+ return Promise.resolve({ width: ctx.availableWidth, height: m.totalHeight });
31
+ },
32
+ render(props, ctx) {
33
+ if (props.columns.length === 0 || (props.rows.length === 0 && props.showHeader === false)) {
34
+ return Promise.resolve();
35
+ }
36
+ const m = measureAllRows(props, ctx);
37
+ const cellPadding = props.cellPadding ?? 4;
38
+ const borderWidth = props.borderWidth ?? 0.5;
39
+ const borderColor = borderWidth > 0 ? parseColor(props.borderColor ?? '#000000') : { r: 0, g: 0, b: 0 };
40
+ const showHeader = props.showHeader !== false;
41
+ let cursorY = 0; // offset from ctx.y going downward
42
+ // Render header row
43
+ if (showHeader) {
44
+ const headerStyle = props.headerStyle
45
+ ? { ...ctx.elementStyle, ...ctx.resolveStyle(props.headerStyle) }
46
+ : ctx.elementStyle;
47
+ // Header background
48
+ if (headerStyle.backgroundColor && !isGradient(headerStyle.backgroundColor)) {
49
+ const bg = parseColor(headerStyle.backgroundColor);
50
+ ctx.page.drawRectangle({
51
+ x: ctx.x,
52
+ y: ctx.y - cursorY - m.headerHeight,
53
+ width: ctx.width,
54
+ height: m.headerHeight,
55
+ color: rgb(bg.r, bg.g, bg.b),
56
+ opacity: ctx.opacity,
57
+ });
58
+ }
59
+ // Header cell text
60
+ renderRowCells(props.columns.map((col) => col.header ?? col.key), props.columns, m.columnWidths, m.headerHeight, cellPadding, headerStyle, ctx, cursorY);
61
+ // Header borders (top + verticals)
62
+ if (borderWidth > 0) {
63
+ drawRowTopAndVerticals(ctx, cursorY, m.headerHeight, m.columnWidths, borderWidth, borderColor);
64
+ }
65
+ cursorY += m.headerHeight;
66
+ }
67
+ // Render data rows
68
+ const rowStyle = props.rowStyle
69
+ ? { ...ctx.elementStyle, ...ctx.resolveStyle(props.rowStyle) }
70
+ : ctx.elementStyle;
71
+ const altStyle = props.alternateRowStyle
72
+ ? { ...ctx.elementStyle, ...ctx.resolveStyle(props.alternateRowStyle) }
73
+ : rowStyle;
74
+ for (let r = 0; r < props.rows.length; r++) {
75
+ const style = r % 2 === 0 ? rowStyle : altStyle;
76
+ const rowHeight = m.rowHeights[r];
77
+ // Row background
78
+ if (style.backgroundColor && !isGradient(style.backgroundColor)) {
79
+ const bg = parseColor(style.backgroundColor);
80
+ ctx.page.drawRectangle({
81
+ x: ctx.x,
82
+ y: ctx.y - cursorY - rowHeight,
83
+ width: ctx.width,
84
+ height: rowHeight,
85
+ color: rgb(bg.r, bg.g, bg.b),
86
+ opacity: ctx.opacity,
87
+ });
88
+ }
89
+ // Cell text
90
+ const cells = props.columns.map((col) => props.rows[r][col.key] ?? '');
91
+ renderRowCells(cells, props.columns, m.columnWidths, rowHeight, cellPadding, style, ctx, cursorY);
92
+ // Row borders (top + verticals; no header? first row draws the top border)
93
+ if (borderWidth > 0) {
94
+ drawRowTopAndVerticals(ctx, cursorY, rowHeight, m.columnWidths, borderWidth, borderColor);
95
+ }
96
+ cursorY += rowHeight;
97
+ }
98
+ // Final bottom border
99
+ if (borderWidth > 0 && (showHeader || props.rows.length > 0)) {
100
+ drawTableBottomBorder(ctx, cursorY, borderWidth, borderColor);
101
+ }
102
+ return Promise.resolve();
103
+ },
104
+ split(props, ctx, availableHeight) {
105
+ if (props.columns.length === 0 || props.rows.length === 0) {
106
+ return Promise.resolve(null);
107
+ }
108
+ const m = measureAllRows(props, ctx);
109
+ const showHeader = props.showHeader !== false;
110
+ let consumed = 0;
111
+ if (showHeader) {
112
+ consumed += m.headerHeight;
113
+ if (consumed > availableHeight) {
114
+ return Promise.resolve(null); // can't even fit the header
115
+ }
116
+ }
117
+ let fitRowCount = 0;
118
+ for (let r = 0; r < props.rows.length; r++) {
119
+ if (consumed + m.rowHeights[r] > availableHeight)
120
+ break;
121
+ consumed += m.rowHeights[r];
122
+ fitRowCount++;
123
+ }
124
+ if (fitRowCount === 0)
125
+ return Promise.resolve(null);
126
+ if (fitRowCount === props.rows.length)
127
+ return Promise.resolve(null);
128
+ const fit = {
129
+ ...props,
130
+ rows: props.rows.slice(0, fitRowCount),
131
+ };
132
+ const overflow = {
133
+ ...props,
134
+ rows: props.rows.slice(fitRowCount),
135
+ showHeader: props.headerRepeat !== false ? props.showHeader !== false : false,
136
+ };
137
+ return Promise.resolve({ fit, overflow });
138
+ },
139
+ };
140
+ /** Render text in each cell of a row. */
141
+ function renderRowCells(cells, columns, columnWidths, rowHeight, cellPadding, style, ctx, offsetY) {
142
+ const font = getFont(ctx.fonts, style);
143
+ const fontSize = style.fontSize ?? 12;
144
+ const lineHeight = getLineHeight(style);
145
+ const color = parseColor(style.color ?? '#000000');
146
+ const ascent = font.heightAtSize(fontSize, { descender: false });
147
+ const ls = style.letterSpacing ?? 0;
148
+ const decoration = style.textDecoration;
149
+ const needsCharSpacing = ls !== 0;
150
+ let colX = 0;
151
+ for (let c = 0; c < cells.length; c++) {
152
+ const contentWidth = Math.max(0, columnWidths[c] - 2 * cellPadding);
153
+ const wrapped = wrapText(cells[c], font, fontSize, contentWidth, lineHeight, undefined, ls || undefined);
154
+ const align = columns[c]?.align ?? style.textAlign ?? 'left';
155
+ for (let i = 0; i < wrapped.lines.length; i++) {
156
+ const line = wrapped.lines[i];
157
+ if (line === '')
158
+ continue;
159
+ let lineX = ctx.x + colX + cellPadding;
160
+ if (align === 'center' || align === 'right') {
161
+ const lineWidth = measureTextWidth(line, font, fontSize, ls || undefined);
162
+ if (align === 'center') {
163
+ lineX += (contentWidth - lineWidth) / 2;
164
+ }
165
+ else {
166
+ lineX += contentWidth - lineWidth;
167
+ }
168
+ }
169
+ const lineY = ctx.y - offsetY - cellPadding - ascent - i * lineHeight;
170
+ if (needsCharSpacing) {
171
+ ctx.page.pushOperators(pushGraphicsState(), setCharacterSpacing(ls));
172
+ }
173
+ ctx.page.drawText(line, {
174
+ x: lineX,
175
+ y: lineY,
176
+ font,
177
+ size: fontSize,
178
+ color: rgb(color.r, color.g, color.b),
179
+ opacity: ctx.opacity,
180
+ });
181
+ if (needsCharSpacing) {
182
+ ctx.page.pushOperators(popGraphicsState());
183
+ }
184
+ // Text decoration
185
+ if (decoration && decoration !== 'none') {
186
+ const lineWidth = measureTextWidth(line, font, fontSize, ls || undefined);
187
+ drawTextDecoration(ctx.page, decoration, lineX, lineY, lineWidth, font, fontSize, color, ctx.opacity);
188
+ }
189
+ }
190
+ colX += columnWidths[c];
191
+ }
192
+ }
193
+ /** Draw the top border and vertical borders for a row. */
194
+ function drawRowTopAndVerticals(ctx, offsetY, rowHeight, columnWidths, borderWidth, borderColor) {
195
+ const pdfColor = rgb(borderColor.r, borderColor.g, borderColor.b);
196
+ const topY = ctx.y - offsetY;
197
+ const bottomY = topY - rowHeight;
198
+ // Top border
199
+ ctx.page.drawLine({
200
+ start: { x: ctx.x, y: topY },
201
+ end: { x: ctx.x + ctx.width, y: topY },
202
+ thickness: borderWidth,
203
+ color: pdfColor,
204
+ opacity: ctx.opacity,
205
+ });
206
+ // Vertical borders (left edge + column separators + right edge)
207
+ let colX = 0;
208
+ for (let c = 0; c <= columnWidths.length; c++) {
209
+ ctx.page.drawLine({
210
+ start: { x: ctx.x + colX, y: topY },
211
+ end: { x: ctx.x + colX, y: bottomY },
212
+ thickness: borderWidth,
213
+ color: pdfColor,
214
+ opacity: ctx.opacity,
215
+ });
216
+ if (c < columnWidths.length)
217
+ colX += columnWidths[c];
218
+ }
219
+ }
220
+ /** Draw the bottom border of the table. */
221
+ function drawTableBottomBorder(ctx, offsetY, borderWidth, borderColor) {
222
+ const pdfColor = rgb(borderColor.r, borderColor.g, borderColor.b);
223
+ const bottomY = ctx.y - offsetY;
224
+ ctx.page.drawLine({
225
+ start: { x: ctx.x, y: bottomY },
226
+ end: { x: ctx.x + ctx.width, y: bottomY },
227
+ thickness: borderWidth,
228
+ color: pdfColor,
229
+ opacity: ctx.opacity,
230
+ });
231
+ }
232
+ //# sourceMappingURL=table-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-plugin.js","sourceRoot":"","sources":["../../src/table/table-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import type { JSONSchema } from '@jsonpdf/core';
2
+ import type { MeasureContext } from '../types.js';
3
+ export interface TableColumn {
4
+ /** Key in each row object to extract cell data. */
5
+ key: string;
6
+ /** Column header label. Defaults to key. */
7
+ header?: string;
8
+ /** Fixed width in points. */
9
+ width?: number;
10
+ /** Flex factor for distributing remaining space. Default 1. */
11
+ flex?: number;
12
+ /** Horizontal alignment for cell content. Default 'left'. */
13
+ align?: 'left' | 'center' | 'right';
14
+ }
15
+ export interface TableProps {
16
+ /** Column definitions. */
17
+ columns: TableColumn[];
18
+ /** Row data. Each object maps column keys to string values. */
19
+ rows: Record<string, string>[];
20
+ /** Show the header row. Default true. */
21
+ showHeader?: boolean;
22
+ /** Named style for header cells. */
23
+ headerStyle?: string;
24
+ /** Named style for body rows. */
25
+ rowStyle?: string;
26
+ /** Named style for alternating body rows (striping). */
27
+ alternateRowStyle?: string;
28
+ /** Border width for cell borders in points. Default 0.5. */
29
+ borderWidth?: number;
30
+ /** Border color as hex string. Default '#000000'. */
31
+ borderColor?: string;
32
+ /** Cell padding in points (uniform all sides). Default 4. */
33
+ cellPadding?: number;
34
+ /** Repeat header row when table splits across pages. Default true. */
35
+ headerRepeat?: boolean;
36
+ }
37
+ export declare const tablePropsSchema: JSONSchema;
38
+ export declare const TABLE_DEFAULTS: TableProps;
39
+ /** Result of measuring all table rows. */
40
+ export interface TableMeasurement {
41
+ columnWidths: number[];
42
+ headerHeight: number;
43
+ rowHeights: number[];
44
+ totalHeight: number;
45
+ }
46
+ /** Compute column widths from column definitions and available width. */
47
+ export declare function computeColumnWidths(columns: TableColumn[], availableWidth: number): number[];
48
+ /** Measure all rows and the header, returning per-row heights and totals. */
49
+ export declare function measureAllRows(props: TableProps, ctx: MeasureContext): TableMeasurement;
50
+ //# sourceMappingURL=table-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-types.d.ts","sourceRoot":"","sources":["../../src/table/table-types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAS,UAAU,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlD,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAC;IACZ,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACzB,0BAA0B;IAC1B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAC/B,yCAAyC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,gBAAgB,EAAE,UAkC9B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,UAQ5B,CAAC;AAEF,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CAkC5F;AA6BD,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc,GAAG,gBAAgB,CA8DvF"}
@@ -0,0 +1,129 @@
1
+ import { getFont, getLineHeight } from '../utils.js';
2
+ import { wrapText } from '../text/word-wrap.js';
3
+ export const tablePropsSchema = {
4
+ type: 'object',
5
+ required: ['columns', 'rows'],
6
+ additionalProperties: false,
7
+ properties: {
8
+ columns: {
9
+ type: 'array',
10
+ minItems: 1,
11
+ items: {
12
+ type: 'object',
13
+ required: ['key'],
14
+ additionalProperties: false,
15
+ properties: {
16
+ key: { type: 'string' },
17
+ header: { type: 'string' },
18
+ width: { type: 'number', minimum: 0 },
19
+ flex: { type: 'number', minimum: 0 },
20
+ align: { type: 'string', enum: ['left', 'center', 'right'] },
21
+ },
22
+ },
23
+ },
24
+ rows: {
25
+ type: 'array',
26
+ items: { type: 'object' },
27
+ },
28
+ showHeader: { type: 'boolean' },
29
+ headerStyle: { type: 'string' },
30
+ rowStyle: { type: 'string' },
31
+ alternateRowStyle: { type: 'string' },
32
+ borderWidth: { type: 'number', minimum: 0 },
33
+ borderColor: { type: 'string' },
34
+ cellPadding: { type: 'number', minimum: 0 },
35
+ headerRepeat: { type: 'boolean' },
36
+ },
37
+ };
38
+ export const TABLE_DEFAULTS = {
39
+ columns: [],
40
+ rows: [],
41
+ showHeader: true,
42
+ borderWidth: 0.5,
43
+ borderColor: '#000000',
44
+ cellPadding: 4,
45
+ headerRepeat: true,
46
+ };
47
+ /** Compute column widths from column definitions and available width. */
48
+ export function computeColumnWidths(columns, availableWidth) {
49
+ if (columns.length === 0)
50
+ return [];
51
+ const widths = new Array(columns.length).fill(0);
52
+ let totalFixed = 0;
53
+ const flexIndices = [];
54
+ for (let i = 0; i < columns.length; i++) {
55
+ const colWidth = columns[i].width;
56
+ if (colWidth !== undefined) {
57
+ widths[i] = colWidth;
58
+ totalFixed += widths[i];
59
+ }
60
+ else {
61
+ flexIndices.push(i);
62
+ }
63
+ }
64
+ if (flexIndices.length === 0) {
65
+ return widths;
66
+ }
67
+ const remaining = Math.max(0, availableWidth - totalFixed);
68
+ let totalFlex = 0;
69
+ for (const idx of flexIndices) {
70
+ totalFlex += columns[idx].flex ?? 1;
71
+ }
72
+ for (const idx of flexIndices) {
73
+ const flexVal = columns[idx].flex ?? 1;
74
+ widths[idx] =
75
+ totalFlex > 0 ? (remaining * flexVal) / totalFlex : remaining / flexIndices.length;
76
+ }
77
+ return widths;
78
+ }
79
+ /** Measure a single row's height by wrapping text in each cell. */
80
+ function measureRowHeight(cells, columnWidths, cellPadding, font, fontSize, lineHeight, letterSpacing) {
81
+ let maxCellHeight = 0;
82
+ for (let c = 0; c < cells.length; c++) {
83
+ const contentWidth = Math.max(0, columnWidths[c] - 2 * cellPadding);
84
+ const wrapped = wrapText(cells[c], font, fontSize, contentWidth, lineHeight, undefined, letterSpacing);
85
+ maxCellHeight = Math.max(maxCellHeight, wrapped.height);
86
+ }
87
+ return maxCellHeight + 2 * cellPadding;
88
+ }
89
+ /** Measure all rows and the header, returning per-row heights and totals. */
90
+ export function measureAllRows(props, ctx) {
91
+ const columnWidths = computeColumnWidths(props.columns, ctx.availableWidth);
92
+ const cellPadding = props.cellPadding ?? 4;
93
+ const showHeader = props.showHeader !== false;
94
+ // Resolve header style
95
+ const headerStyle = props.headerStyle
96
+ ? { ...ctx.elementStyle, ...ctx.resolveStyle(props.headerStyle) }
97
+ : ctx.elementStyle;
98
+ const headerFont = getFont(ctx.fonts, headerStyle);
99
+ const headerFontSize = headerStyle.fontSize ?? 12;
100
+ const headerLineHeight = getLineHeight(headerStyle);
101
+ // Measure header
102
+ let headerHeight = 0;
103
+ if (showHeader) {
104
+ const headerCells = props.columns.map((col) => col.header ?? col.key);
105
+ const headerLs = headerStyle.letterSpacing ?? 0;
106
+ headerHeight = measureRowHeight(headerCells, columnWidths, cellPadding, headerFont, headerFontSize, headerLineHeight, headerLs || undefined);
107
+ }
108
+ // Resolve row styles
109
+ const rowStyle = props.rowStyle
110
+ ? { ...ctx.elementStyle, ...ctx.resolveStyle(props.rowStyle) }
111
+ : ctx.elementStyle;
112
+ const altStyle = props.alternateRowStyle
113
+ ? { ...ctx.elementStyle, ...ctx.resolveStyle(props.alternateRowStyle) }
114
+ : rowStyle;
115
+ // Measure each data row
116
+ const rowHeights = [];
117
+ for (let r = 0; r < props.rows.length; r++) {
118
+ const style = r % 2 === 0 ? rowStyle : altStyle;
119
+ const font = getFont(ctx.fonts, style);
120
+ const fontSize = style.fontSize ?? 12;
121
+ const lineHeight = getLineHeight(style);
122
+ const ls = style.letterSpacing ?? 0;
123
+ const cells = props.columns.map((col) => props.rows[r][col.key] ?? '');
124
+ rowHeights.push(measureRowHeight(cells, columnWidths, cellPadding, font, fontSize, lineHeight, ls || undefined));
125
+ }
126
+ const totalHeight = headerHeight + rowHeights.reduce((sum, h) => sum + h, 0);
127
+ return { columnWidths, headerHeight, rowHeights, totalHeight };
128
+ }
129
+ //# sourceMappingURL=table-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-types.js","sourceRoot":"","sources":["../../src/table/table-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { PDFFont, PDFPage } from 'pdf-lib';
2
+ interface DecorationColor {
3
+ r: number;
4
+ g: number;
5
+ b: number;
6
+ }
7
+ /**
8
+ * Draw text decoration lines (underline, line-through) for a rendered text segment.
9
+ *
10
+ * @param page - The pdf-lib page to draw on
11
+ * @param decoration - The textDecoration value ('underline', 'line-through', 'underline line-through')
12
+ * @param x - Left edge X position
13
+ * @param baselineY - Y position of the text baseline (in pdf-lib coordinates)
14
+ * @param width - Width of the text segment
15
+ * @param font - The PDFFont used for the text
16
+ * @param fontSize - Font size in points
17
+ * @param color - Text color as {r, g, b} (0-1 range)
18
+ * @param opacity - Optional opacity (0-1)
19
+ */
20
+ export declare function drawTextDecoration(page: PDFPage, decoration: string, x: number, baselineY: number, width: number, font: PDFFont, fontSize: number, color: DecorationColor, opacity?: number): void;
21
+ export {};
22
+ //# sourceMappingURL=text-decoration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-decoration.d.ts","sourceRoot":"","sources":["../../src/text/text-decoration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEhD,UAAU,eAAe;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,EACb,UAAU,EAAE,MAAM,EAClB,CAAC,EAAE,MAAM,EACT,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CA6BN"}
@@ -0,0 +1,43 @@
1
+ import { rgb } from 'pdf-lib';
2
+ /**
3
+ * Draw text decoration lines (underline, line-through) for a rendered text segment.
4
+ *
5
+ * @param page - The pdf-lib page to draw on
6
+ * @param decoration - The textDecoration value ('underline', 'line-through', 'underline line-through')
7
+ * @param x - Left edge X position
8
+ * @param baselineY - Y position of the text baseline (in pdf-lib coordinates)
9
+ * @param width - Width of the text segment
10
+ * @param font - The PDFFont used for the text
11
+ * @param fontSize - Font size in points
12
+ * @param color - Text color as {r, g, b} (0-1 range)
13
+ * @param opacity - Optional opacity (0-1)
14
+ */
15
+ export function drawTextDecoration(page, decoration, x, baselineY, width, font, fontSize, color, opacity) {
16
+ if (!decoration || decoration === 'none')
17
+ return;
18
+ const thickness = Math.max(fontSize / 18, 0.5);
19
+ const ascent = font.heightAtSize(fontSize, { descender: false });
20
+ const descent = font.heightAtSize(fontSize) - ascent;
21
+ const pdfColor = rgb(color.r, color.g, color.b);
22
+ if (decoration.includes('underline')) {
23
+ const underlineY = baselineY - descent * 0.3;
24
+ page.drawLine({
25
+ start: { x, y: underlineY },
26
+ end: { x: x + width, y: underlineY },
27
+ thickness,
28
+ color: pdfColor,
29
+ opacity,
30
+ });
31
+ }
32
+ if (decoration.includes('line-through')) {
33
+ const strikeY = baselineY + ascent * 0.35;
34
+ page.drawLine({
35
+ start: { x, y: strikeY },
36
+ end: { x: x + width, y: strikeY },
37
+ thickness,
38
+ color: pdfColor,
39
+ opacity,
40
+ });
41
+ }
42
+ }
43
+ //# sourceMappingURL=text-decoration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-decoration.js","sourceRoot":"","sources":["../../src/text/text-decoration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAS9B;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAa,EACb,UAAkB,EAClB,CAAS,EACT,SAAiB,EACjB,KAAa,EACb,IAAa,EACb,QAAgB,EAChB,KAAsB,EACtB,OAAgB;IAEhB,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO;IAEjD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;IACrD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAEhD,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,GAAG,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC;YACZ,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE;YAC3B,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE;YACpC,SAAS;YACT,KAAK,EAAE,QAAQ;YACf,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC;YACZ,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;YACxB,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE;YACjC,SAAS;YACT,KAAK,EAAE,QAAQ;YACf,OAAO;SACR,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { RichContent, JSONSchema } from '@jsonpdf/core';
2
+ import type { Plugin } from '../types.js';
3
+ export interface TextProps {
4
+ content: RichContent;
5
+ autoHeight?: boolean;
6
+ }
7
+ export declare const textPropsSchema: JSONSchema;
8
+ export declare const textPlugin: Plugin<TextProps>;
9
+ //# sourceMappingURL=text-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-plugin.d.ts","sourceRoot":"","sources":["../../src/text/text-plugin.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAqC,UAAU,EAAE,MAAM,eAAe,CAAC;AAChG,OAAO,KAAK,EAAE,MAAM,EAAiC,MAAM,aAAa,CAAC;AAKzE,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,EAAE,UAwB7B,CAAC;AAIF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,SAAS,CAiGxC,CAAC"}