@pdfme/schemas 5.3.11-dev.1 → 5.3.11-dev.11
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/cjs/src/barcodes/helper.js +6 -3
- package/dist/cjs/src/barcodes/helper.js.map +1 -1
- package/dist/cjs/src/barcodes/pdfRender.js +5 -1
- package/dist/cjs/src/barcodes/pdfRender.js.map +1 -1
- package/dist/cjs/src/barcodes/uiRender.js +5 -3
- package/dist/cjs/src/barcodes/uiRender.js.map +1 -1
- package/dist/cjs/src/checkbox/index.js +2 -1
- package/dist/cjs/src/checkbox/index.js.map +1 -1
- package/dist/cjs/src/date/helper.js +1 -1
- package/dist/cjs/src/date/helper.js.map +1 -1
- package/dist/cjs/src/graphics/image.js +6 -3
- package/dist/cjs/src/graphics/image.js.map +1 -1
- package/dist/cjs/src/graphics/svg.js +3 -2
- package/dist/cjs/src/graphics/svg.js.map +1 -1
- package/dist/cjs/src/multiVariableText/helper.js +3 -3
- package/dist/cjs/src/multiVariableText/helper.js.map +1 -1
- package/dist/cjs/src/multiVariableText/propPanel.js +25 -12
- package/dist/cjs/src/multiVariableText/propPanel.js.map +1 -1
- package/dist/cjs/src/multiVariableText/uiRender.js +14 -11
- package/dist/cjs/src/multiVariableText/uiRender.js.map +1 -1
- package/dist/cjs/src/radioGroup/index.js.map +1 -1
- package/dist/cjs/src/select/index.js +20 -8
- package/dist/cjs/src/select/index.js.map +1 -1
- package/dist/cjs/src/shapes/rectAndEllipse.js.map +1 -1
- package/dist/cjs/src/tables/classes.js.map +1 -1
- package/dist/cjs/src/tables/pdfRender.js +16 -2
- package/dist/cjs/src/tables/pdfRender.js.map +1 -1
- package/dist/cjs/src/tables/propPanel.js +1 -1
- package/dist/cjs/src/tables/propPanel.js.map +1 -1
- package/dist/cjs/src/tables/tableHelper.js +1 -1
- package/dist/cjs/src/tables/tableHelper.js.map +1 -1
- package/dist/cjs/src/tables/uiRender.js +4 -2
- package/dist/cjs/src/tables/uiRender.js.map +1 -1
- package/dist/cjs/src/text/extraFormatter.js +1 -0
- package/dist/cjs/src/text/extraFormatter.js.map +1 -1
- package/dist/cjs/src/text/helper.js +19 -3
- package/dist/cjs/src/text/helper.js.map +1 -1
- package/dist/cjs/src/text/pdfRender.js +1 -1
- package/dist/cjs/src/text/pdfRender.js.map +1 -1
- package/dist/cjs/src/text/propPanel.js.map +1 -1
- package/dist/cjs/src/text/uiRender.js +9 -8
- package/dist/cjs/src/text/uiRender.js.map +1 -1
- package/dist/cjs/src/utils.js +3 -3
- package/dist/cjs/src/utils.js.map +1 -1
- package/dist/esm/src/barcodes/helper.js +6 -3
- package/dist/esm/src/barcodes/helper.js.map +1 -1
- package/dist/esm/src/barcodes/pdfRender.js +5 -1
- package/dist/esm/src/barcodes/pdfRender.js.map +1 -1
- package/dist/esm/src/barcodes/uiRender.js +5 -3
- package/dist/esm/src/barcodes/uiRender.js.map +1 -1
- package/dist/esm/src/checkbox/index.js +2 -1
- package/dist/esm/src/checkbox/index.js.map +1 -1
- package/dist/esm/src/date/helper.js +2 -2
- package/dist/esm/src/date/helper.js.map +1 -1
- package/dist/esm/src/graphics/image.js +6 -3
- package/dist/esm/src/graphics/image.js.map +1 -1
- package/dist/esm/src/graphics/svg.js +3 -2
- package/dist/esm/src/graphics/svg.js.map +1 -1
- package/dist/esm/src/multiVariableText/helper.js +3 -3
- package/dist/esm/src/multiVariableText/helper.js.map +1 -1
- package/dist/esm/src/multiVariableText/propPanel.js +25 -12
- package/dist/esm/src/multiVariableText/propPanel.js.map +1 -1
- package/dist/esm/src/multiVariableText/uiRender.js +14 -11
- package/dist/esm/src/multiVariableText/uiRender.js.map +1 -1
- package/dist/esm/src/radioGroup/index.js.map +1 -1
- package/dist/esm/src/select/index.js +20 -8
- package/dist/esm/src/select/index.js.map +1 -1
- package/dist/esm/src/shapes/rectAndEllipse.js.map +1 -1
- package/dist/esm/src/tables/classes.js.map +1 -1
- package/dist/esm/src/tables/pdfRender.js +16 -2
- package/dist/esm/src/tables/pdfRender.js.map +1 -1
- package/dist/esm/src/tables/propPanel.js +1 -1
- package/dist/esm/src/tables/propPanel.js.map +1 -1
- package/dist/esm/src/tables/tableHelper.js +1 -1
- package/dist/esm/src/tables/tableHelper.js.map +1 -1
- package/dist/esm/src/tables/uiRender.js +4 -2
- package/dist/esm/src/tables/uiRender.js.map +1 -1
- package/dist/esm/src/text/extraFormatter.js +1 -0
- package/dist/esm/src/text/extraFormatter.js.map +1 -1
- package/dist/esm/src/text/helper.js +19 -3
- package/dist/esm/src/text/helper.js.map +1 -1
- package/dist/esm/src/text/pdfRender.js +1 -1
- package/dist/esm/src/text/pdfRender.js.map +1 -1
- package/dist/esm/src/text/propPanel.js.map +1 -1
- package/dist/esm/src/text/uiRender.js +8 -6
- package/dist/esm/src/text/uiRender.js.map +1 -1
- package/dist/esm/src/utils.js +3 -3
- package/dist/esm/src/utils.js.map +1 -1
- package/dist/node/src/barcodes/helper.js +6 -3
- package/dist/node/src/barcodes/helper.js.map +1 -1
- package/dist/node/src/barcodes/pdfRender.js +5 -1
- package/dist/node/src/barcodes/pdfRender.js.map +1 -1
- package/dist/node/src/barcodes/uiRender.js +5 -3
- package/dist/node/src/barcodes/uiRender.js.map +1 -1
- package/dist/node/src/checkbox/index.js +2 -1
- package/dist/node/src/checkbox/index.js.map +1 -1
- package/dist/node/src/date/helper.js +1 -1
- package/dist/node/src/date/helper.js.map +1 -1
- package/dist/node/src/graphics/image.js +6 -3
- package/dist/node/src/graphics/image.js.map +1 -1
- package/dist/node/src/graphics/svg.js +3 -2
- package/dist/node/src/graphics/svg.js.map +1 -1
- package/dist/node/src/multiVariableText/helper.js +3 -3
- package/dist/node/src/multiVariableText/helper.js.map +1 -1
- package/dist/node/src/multiVariableText/propPanel.js +25 -12
- package/dist/node/src/multiVariableText/propPanel.js.map +1 -1
- package/dist/node/src/multiVariableText/uiRender.js +14 -11
- package/dist/node/src/multiVariableText/uiRender.js.map +1 -1
- package/dist/node/src/radioGroup/index.js.map +1 -1
- package/dist/node/src/select/index.js +20 -8
- package/dist/node/src/select/index.js.map +1 -1
- package/dist/node/src/shapes/rectAndEllipse.js.map +1 -1
- package/dist/node/src/tables/classes.js.map +1 -1
- package/dist/node/src/tables/pdfRender.js +16 -2
- package/dist/node/src/tables/pdfRender.js.map +1 -1
- package/dist/node/src/tables/propPanel.js +1 -1
- package/dist/node/src/tables/propPanel.js.map +1 -1
- package/dist/node/src/tables/tableHelper.js +1 -1
- package/dist/node/src/tables/tableHelper.js.map +1 -1
- package/dist/node/src/tables/uiRender.js +4 -2
- package/dist/node/src/tables/uiRender.js.map +1 -1
- package/dist/node/src/text/extraFormatter.js +1 -0
- package/dist/node/src/text/extraFormatter.js.map +1 -1
- package/dist/node/src/text/helper.js +19 -3
- package/dist/node/src/text/helper.js.map +1 -1
- package/dist/node/src/text/pdfRender.js +1 -1
- package/dist/node/src/text/pdfRender.js.map +1 -1
- package/dist/node/src/text/propPanel.js.map +1 -1
- package/dist/node/src/text/uiRender.js +9 -8
- package/dist/node/src/text/uiRender.js.map +1 -1
- package/dist/node/src/utils.js +3 -3
- package/dist/node/src/utils.js.map +1 -1
- package/dist/types/src/barcodes/helper.d.ts +22 -0
- package/dist/types/src/checkbox/index.d.ts +1 -2
- package/dist/types/src/graphics/image.d.ts +1 -2
- package/dist/types/src/graphics/svg.d.ts +1 -2
- package/dist/types/src/radioGroup/index.d.ts +1 -2
- package/dist/types/src/shapes/rectAndEllipse.d.ts +91 -7
- package/dist/types/src/tables/classes.d.ts +2 -1
- package/dist/types/src/tables/dynamicTemplate.d.ts +1 -1
- package/dist/types/src/tables/tableHelper.d.ts +1 -1
- package/dist/types/src/text/extraFormatter.d.ts +2 -3
- package/dist/types/src/text/helper.d.ts +1 -1
- package/dist/types/src/text/uiRender.d.ts +0 -3
- package/dist/types/src/utils.d.ts +1 -1
- package/package.json +2 -2
- package/src/barcodes/helper.ts +35 -5
- package/src/barcodes/pdfRender.ts +7 -4
- package/src/barcodes/uiRender.ts +3 -3
- package/src/checkbox/index.ts +4 -5
- package/src/date/helper.ts +15 -8
- package/src/graphics/image.ts +4 -4
- package/src/graphics/svg.ts +7 -6
- package/src/multiVariableText/helper.ts +4 -4
- package/src/multiVariableText/propPanel.ts +28 -14
- package/src/multiVariableText/uiRender.ts +16 -15
- package/src/radioGroup/index.ts +3 -4
- package/src/select/index.ts +23 -10
- package/src/shapes/rectAndEllipse.ts +3 -3
- package/src/tables/classes.ts +2 -2
- package/src/tables/dynamicTemplate.ts +1 -1
- package/src/tables/pdfRender.ts +28 -3
- package/src/tables/propPanel.ts +1 -1
- package/src/tables/tableHelper.ts +3 -2
- package/src/tables/uiRender.ts +2 -2
- package/src/text/extraFormatter.ts +3 -3
- package/src/text/helper.ts +19 -6
- package/src/text/pdfRender.ts +3 -3
- package/src/text/propPanel.ts +4 -4
- package/src/text/uiRender.ts +7 -7
- package/src/utils.ts +5 -5
- package/dist/cjs/src/graphics/cacheKey.js +0 -6
- package/dist/cjs/src/graphics/cacheKey.js.map +0 -1
- package/dist/esm/src/graphics/cacheKey.js +0 -2
- package/dist/esm/src/graphics/cacheKey.js.map +0 -1
- package/dist/node/src/graphics/cacheKey.js +0 -6
- package/dist/node/src/graphics/cacheKey.js.map +0 -1
- package/dist/types/src/graphics/cacheKey.d.ts +0 -2
- package/src/graphics/cacheKey.ts +0 -3
@@ -1,4 +1,26 @@
|
|
1
1
|
import { Buffer } from 'buffer';
|
2
|
+
export interface BarcodeRenderOptions {
|
3
|
+
bcid: string;
|
4
|
+
text: string;
|
5
|
+
scale?: number;
|
6
|
+
width?: number;
|
7
|
+
height?: number;
|
8
|
+
includetext?: boolean;
|
9
|
+
textxalign?: 'center' | 'offleft' | 'left' | 'right' | 'offright' | 'justify';
|
10
|
+
backgroundcolor?: string;
|
11
|
+
barcolor?: string;
|
12
|
+
textcolor?: string;
|
13
|
+
[key: string]: unknown;
|
14
|
+
}
|
15
|
+
declare module 'bwip-js' {
|
16
|
+
interface BwipJs {
|
17
|
+
toCanvas(canvas: HTMLCanvasElement, options: BarcodeRenderOptions): void;
|
18
|
+
}
|
19
|
+
export default interface BwipJsModule {
|
20
|
+
toCanvas(canvas: HTMLCanvasElement, options: BarcodeRenderOptions): void;
|
21
|
+
toBuffer(options: BarcodeRenderOptions): Promise<Buffer>;
|
22
|
+
}
|
23
|
+
}
|
2
24
|
import { BarcodeTypes } from './types.js';
|
3
25
|
export declare const validateBarcodeInput: (type: BarcodeTypes, input: string) => boolean;
|
4
26
|
/**
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { Schema } from '@pdfme/common';
|
1
|
+
import { Schema, UIRenderProps, PDFRenderProps } from '@pdfme/common';
|
2
2
|
interface ShapeSchema extends Schema {
|
3
3
|
type: 'ellipse' | 'rectangle';
|
4
4
|
borderWidth: number;
|
@@ -38,13 +38,55 @@ export declare const rectangle: {
|
|
38
38
|
schemas: import("@pdfme/common").SchemaForUI[];
|
39
39
|
options: import("@pdfme/common").UIOptions;
|
40
40
|
theme: import("antd").GlobalToken;
|
41
|
-
i18n: (key:
|
41
|
+
i18n: (key: string) => string;
|
42
42
|
}, "rootElement">) => Record<string, import("@pdfme/common").PropPanelSchema>) | Record<string, import("@pdfme/common").PropPanelSchema>;
|
43
43
|
widgets?: Record<string, (props: import("@pdfme/common").PropPanelWidgetProps) => void>;
|
44
44
|
};
|
45
45
|
icon: string;
|
46
|
-
pdf: (arg:
|
47
|
-
|
46
|
+
pdf: (arg: PDFRenderProps<ShapeSchema & {
|
47
|
+
name: string;
|
48
|
+
type: string;
|
49
|
+
position: {
|
50
|
+
x: number;
|
51
|
+
y: number;
|
52
|
+
};
|
53
|
+
width: number;
|
54
|
+
height: number;
|
55
|
+
content?: string | undefined;
|
56
|
+
rotate?: number | undefined;
|
57
|
+
opacity?: number | undefined;
|
58
|
+
readOnly?: boolean | undefined;
|
59
|
+
required?: boolean | undefined;
|
60
|
+
__bodyRange?: {
|
61
|
+
start: number;
|
62
|
+
end?: number | undefined;
|
63
|
+
} | undefined;
|
64
|
+
__isSplit?: boolean | undefined;
|
65
|
+
} & {
|
66
|
+
[k: string]: unknown;
|
67
|
+
}>) => Promise<void> | void;
|
68
|
+
ui: (arg: UIRenderProps<ShapeSchema & {
|
69
|
+
name: string;
|
70
|
+
type: string;
|
71
|
+
position: {
|
72
|
+
x: number;
|
73
|
+
y: number;
|
74
|
+
};
|
75
|
+
width: number;
|
76
|
+
height: number;
|
77
|
+
content?: string | undefined;
|
78
|
+
rotate?: number | undefined;
|
79
|
+
opacity?: number | undefined;
|
80
|
+
readOnly?: boolean | undefined;
|
81
|
+
required?: boolean | undefined;
|
82
|
+
__bodyRange?: {
|
83
|
+
start: number;
|
84
|
+
end?: number | undefined;
|
85
|
+
} | undefined;
|
86
|
+
__isSplit?: boolean | undefined;
|
87
|
+
} & {
|
88
|
+
[k: string]: unknown;
|
89
|
+
}>) => Promise<void> | void;
|
48
90
|
uninterruptedEditMode?: boolean;
|
49
91
|
};
|
50
92
|
export declare const ellipse: {
|
@@ -80,13 +122,55 @@ export declare const ellipse: {
|
|
80
122
|
schemas: import("@pdfme/common").SchemaForUI[];
|
81
123
|
options: import("@pdfme/common").UIOptions;
|
82
124
|
theme: import("antd").GlobalToken;
|
83
|
-
i18n: (key:
|
125
|
+
i18n: (key: string) => string;
|
84
126
|
}, "rootElement">) => Record<string, import("@pdfme/common").PropPanelSchema>) | Record<string, import("@pdfme/common").PropPanelSchema>;
|
85
127
|
widgets?: Record<string, (props: import("@pdfme/common").PropPanelWidgetProps) => void>;
|
86
128
|
};
|
87
129
|
icon: string;
|
88
|
-
pdf: (arg:
|
89
|
-
|
130
|
+
pdf: (arg: PDFRenderProps<ShapeSchema & {
|
131
|
+
name: string;
|
132
|
+
type: string;
|
133
|
+
position: {
|
134
|
+
x: number;
|
135
|
+
y: number;
|
136
|
+
};
|
137
|
+
width: number;
|
138
|
+
height: number;
|
139
|
+
content?: string | undefined;
|
140
|
+
rotate?: number | undefined;
|
141
|
+
opacity?: number | undefined;
|
142
|
+
readOnly?: boolean | undefined;
|
143
|
+
required?: boolean | undefined;
|
144
|
+
__bodyRange?: {
|
145
|
+
start: number;
|
146
|
+
end?: number | undefined;
|
147
|
+
} | undefined;
|
148
|
+
__isSplit?: boolean | undefined;
|
149
|
+
} & {
|
150
|
+
[k: string]: unknown;
|
151
|
+
}>) => Promise<void> | void;
|
152
|
+
ui: (arg: UIRenderProps<ShapeSchema & {
|
153
|
+
name: string;
|
154
|
+
type: string;
|
155
|
+
position: {
|
156
|
+
x: number;
|
157
|
+
y: number;
|
158
|
+
};
|
159
|
+
width: number;
|
160
|
+
height: number;
|
161
|
+
content?: string | undefined;
|
162
|
+
rotate?: number | undefined;
|
163
|
+
opacity?: number | undefined;
|
164
|
+
readOnly?: boolean | undefined;
|
165
|
+
required?: boolean | undefined;
|
166
|
+
__bodyRange?: {
|
167
|
+
start: number;
|
168
|
+
end?: number | undefined;
|
169
|
+
} | undefined;
|
170
|
+
__isSplit?: boolean | undefined;
|
171
|
+
} & {
|
172
|
+
[k: string]: unknown;
|
173
|
+
}>) => Promise<void> | void;
|
90
174
|
uninterruptedEditMode?: boolean;
|
91
175
|
};
|
92
176
|
export {};
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { Font } from '@pdfme/common';
|
2
|
+
import type { Font as FontKitFont } from 'fontkit';
|
2
3
|
import type { Styles, TableInput, Settings, Section, StylesProps } from './types.js';
|
3
4
|
type ContentSettings = {
|
4
5
|
body: Row[];
|
@@ -57,7 +58,7 @@ export declare class Table {
|
|
57
58
|
input: TableInput;
|
58
59
|
content: ContentSettings;
|
59
60
|
font: Font;
|
60
|
-
_cache: Map<
|
61
|
+
_cache: Map<string | number, FontKitFont>;
|
61
62
|
}): Promise<Table>;
|
62
63
|
getHeadHeight(): number;
|
63
64
|
getBodyHeight(): number;
|
@@ -4,7 +4,7 @@ interface CreateTableArgs {
|
|
4
4
|
schema: Schema;
|
5
5
|
basePdf: BasePdf;
|
6
6
|
options: CommonOptions;
|
7
|
-
_cache: Map<
|
7
|
+
_cache: Map<string | number, unknown>;
|
8
8
|
}
|
9
9
|
export declare function createSingleTable(body: string[][], args: CreateTableArgs): Promise<Table>;
|
10
10
|
export {};
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import { Dict } from '@pdfme/common';
|
2
1
|
export declare enum Formatter {
|
3
2
|
STRIKETHROUGH = "strikethrough",
|
4
3
|
UNDERLINE = "underline",
|
@@ -16,8 +15,8 @@ interface GroupButtonString {
|
|
16
15
|
type: 'select';
|
17
16
|
value: string;
|
18
17
|
}
|
19
|
-
|
20
|
-
export declare function getExtraFormatterSchema(i18n: (key:
|
18
|
+
type GroupButton = GroupButtonBoolean | GroupButtonString;
|
19
|
+
export declare function getExtraFormatterSchema(i18n: (key: string) => string): {
|
21
20
|
title: string;
|
22
21
|
widget: string;
|
23
22
|
buttons: GroupButton[];
|
@@ -9,7 +9,7 @@ export declare const getBrowserVerticalFontAdjustments: (fontKitFont: FontKitFon
|
|
9
9
|
export declare const getFontDescentInPt: (fontKitFont: FontKitFont, fontSize: number) => number;
|
10
10
|
export declare const heightOfFontAtSize: (fontKitFont: FontKitFont, fontSize: number) => number;
|
11
11
|
export declare const widthOfTextAtSize: (text: string, fontKitFont: FontKitFont, fontSize: number, characterSpacing: number) => number;
|
12
|
-
export declare const getFontKitFont: (fontName: string | undefined, font: Font, _cache: Map<
|
12
|
+
export declare const getFontKitFont: (fontName: string | undefined, font: Font, _cache: Map<string | number, fontkit.Font>) => Promise<fontkit.Font>;
|
13
13
|
/**
|
14
14
|
* Recursively splits the line at getSplitPosition.
|
15
15
|
* If there is some leftover, split the rest again in the same manner.
|
@@ -9,6 +9,3 @@ export declare const buildStyledTextContainer: (arg: UIRenderProps<TextSchema>,
|
|
9
9
|
*/
|
10
10
|
export declare const makeElementPlainTextContentEditable: (element: HTMLElement) => void;
|
11
11
|
export declare const mapVerticalAlignToFlex: (verticalAlignmentValue: string | undefined) => "center" | "flex-end" | "flex-start";
|
12
|
-
export declare const getBackgroundColor: (value: string, schema: {
|
13
|
-
backgroundColor?: string;
|
14
|
-
}) => string;
|
@@ -29,7 +29,7 @@ export declare const getDynamicHeightsForTable: (value: string, args: {
|
|
29
29
|
schema: Schema;
|
30
30
|
basePdf: import("@pdfme/common").BasePdf;
|
31
31
|
options: import("@pdfme/common").CommonOptions;
|
32
|
-
_cache: Map<
|
32
|
+
_cache: Map<string | number, unknown>;
|
33
33
|
}) => Promise<number[]>;
|
34
34
|
export declare const addAlphaToHex: (hex: string, alphaPercentage: number) => string;
|
35
35
|
export declare const isEditable: (mode: Mode, schema: Schema) => boolean;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@pdfme/schemas",
|
3
|
-
"version": "5.3.11-dev.
|
3
|
+
"version": "5.3.11-dev.11",
|
4
4
|
"sideEffects": false,
|
5
5
|
"author": "hand-dot",
|
6
6
|
"license": "MIT",
|
@@ -49,7 +49,7 @@
|
|
49
49
|
"build:esm": "tsc -p tsconfig.esm.json",
|
50
50
|
"build:node": "tsc -p tsconfig.node.json",
|
51
51
|
"clean": "rimraf dist",
|
52
|
-
"lint": "eslint --ext .ts src --config eslint.config.mjs
|
52
|
+
"lint": "eslint --ext .ts src --config eslint.config.mjs",
|
53
53
|
"test": "jest",
|
54
54
|
"prune": "ts-prune src",
|
55
55
|
"prettier": "prettier --write 'src/**/*.ts'"
|
package/src/barcodes/helper.ts
CHANGED
@@ -1,6 +1,33 @@
|
|
1
1
|
import { b64toUint8Array } from '@pdfme/common';
|
2
|
-
import bwipjs
|
2
|
+
import bwipjs from 'bwip-js';
|
3
3
|
import { Buffer } from 'buffer';
|
4
|
+
|
5
|
+
// Define a public interface for the options to avoid using the private RenderOptions
|
6
|
+
export interface BarcodeRenderOptions {
|
7
|
+
bcid: string;
|
8
|
+
text: string;
|
9
|
+
scale?: number;
|
10
|
+
width?: number;
|
11
|
+
height?: number;
|
12
|
+
includetext?: boolean;
|
13
|
+
textxalign?: 'center' | 'offleft' | 'left' | 'right' | 'offright' | 'justify';
|
14
|
+
backgroundcolor?: string;
|
15
|
+
barcolor?: string;
|
16
|
+
textcolor?: string;
|
17
|
+
[key: string]: unknown;
|
18
|
+
}
|
19
|
+
|
20
|
+
// Extend the bwipjs type to include browser-specific methods
|
21
|
+
declare module 'bwip-js' {
|
22
|
+
interface BwipJs {
|
23
|
+
toCanvas(canvas: HTMLCanvasElement, options: BarcodeRenderOptions): void;
|
24
|
+
}
|
25
|
+
|
26
|
+
export default interface BwipJsModule {
|
27
|
+
toCanvas(canvas: HTMLCanvasElement, options: BarcodeRenderOptions): void;
|
28
|
+
toBuffer(options: BarcodeRenderOptions): Promise<Buffer>;
|
29
|
+
}
|
30
|
+
}
|
4
31
|
import { BARCODE_TYPES, DEFAULT_BARCODE_INCLUDETEXT } from './constants.js';
|
5
32
|
import { BarcodeTypes } from './types.js';
|
6
33
|
|
@@ -148,7 +175,7 @@ export const createBarCode = async (arg: {
|
|
148
175
|
|
149
176
|
const bcid = barCodeType2Bcid(type);
|
150
177
|
const scale = 5;
|
151
|
-
const bwipjsArg:
|
178
|
+
const bwipjsArg: BarcodeRenderOptions = {
|
152
179
|
bcid,
|
153
180
|
text: input,
|
154
181
|
width,
|
@@ -166,12 +193,15 @@ export const createBarCode = async (arg: {
|
|
166
193
|
|
167
194
|
if (typeof window !== 'undefined') {
|
168
195
|
const canvas = document.createElement('canvas');
|
169
|
-
//
|
170
|
-
bwipjs
|
196
|
+
// Use a type assertion to safely call toCanvas
|
197
|
+
const bwipjsModule = bwipjs as unknown as { toCanvas(canvas: HTMLCanvasElement, options: BarcodeRenderOptions): void };
|
198
|
+
bwipjsModule.toCanvas(canvas, bwipjsArg);
|
171
199
|
const dataUrl = canvas.toDataURL('image/png');
|
172
200
|
res = Buffer.from(b64toUint8Array(dataUrl).buffer);
|
173
201
|
} else {
|
174
|
-
|
202
|
+
// Use a type assertion to safely call toBuffer
|
203
|
+
const bwipjsModule = bwipjs as unknown as { toBuffer(options: BarcodeRenderOptions): Promise<Buffer> };
|
204
|
+
res = await bwipjsModule.toBuffer(bwipjsArg);
|
175
205
|
}
|
176
206
|
|
177
207
|
return res;
|
@@ -2,6 +2,7 @@ import { PDFRenderProps } from '@pdfme/common';
|
|
2
2
|
import { convertForPdfLayoutProps } from '../utils.js';
|
3
3
|
import type { BarcodeSchema } from './types.js';
|
4
4
|
import { createBarCode, validateBarcodeInput } from './helper.js';
|
5
|
+
import { PDFImage } from '@pdfme/pdf-lib';
|
5
6
|
|
6
7
|
const getBarcodeCacheKey = (schema: BarcodeSchema, value: string) => {
|
7
8
|
return `${schema.type}${schema.backgroundColor}${schema.barColor}${schema.textColor}${value}${schema.includetext}`;
|
@@ -12,11 +13,13 @@ export const pdfRender = async (arg: PDFRenderProps<BarcodeSchema>) => {
|
|
12
13
|
if (!validateBarcodeInput(schema.type, value)) return;
|
13
14
|
|
14
15
|
const inputBarcodeCacheKey = getBarcodeCacheKey(schema, value);
|
15
|
-
let image = _cache.get(inputBarcodeCacheKey);
|
16
|
+
let image = _cache.get(inputBarcodeCacheKey) as PDFImage | undefined;
|
16
17
|
if (!image) {
|
17
|
-
const imageBuf = await createBarCode(
|
18
|
-
|
19
|
-
|
18
|
+
const imageBuf = await createBarCode({
|
19
|
+
...schema,
|
20
|
+
type: schema.type,
|
21
|
+
input: value,
|
22
|
+
});
|
20
23
|
image = await pdfDoc.embedPng(imageBuf);
|
21
24
|
_cache.set(inputBarcodeCacheKey, image);
|
22
25
|
}
|
package/src/barcodes/uiRender.ts
CHANGED
@@ -69,10 +69,10 @@ export const uiRender = async (arg: UIRenderProps<BarcodeSchema>) => {
|
|
69
69
|
input.placeholder = placeholder || '';
|
70
70
|
input.tabIndex = tabIndex || 0;
|
71
71
|
input.addEventListener('change', (e: Event) => {
|
72
|
-
onChange
|
72
|
+
if (onChange) onChange({ key: 'content', value: (e.target as HTMLInputElement).value });
|
73
73
|
});
|
74
74
|
input.addEventListener('blur', () => {
|
75
|
-
stopEditing
|
75
|
+
if (stopEditing) stopEditing();
|
76
76
|
});
|
77
77
|
container.appendChild(input);
|
78
78
|
input.setSelectionRange(value.length, value.length);
|
@@ -88,7 +88,7 @@ export const uiRender = async (arg: UIRenderProps<BarcodeSchema>) => {
|
|
88
88
|
const imgElm = await createBarcodeImageElm(schema, value);
|
89
89
|
container.appendChild(imgElm);
|
90
90
|
} catch (err) {
|
91
|
-
console.error(`[@pdfme/ui] ${err}`);
|
91
|
+
console.error(`[@pdfme/ui] ${String(err)}`);
|
92
92
|
container.appendChild(createErrorElm());
|
93
93
|
}
|
94
94
|
};
|
package/src/checkbox/index.ts
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
import { Plugin } from '@pdfme/common';
|
2
|
-
import { Schema } from '@pdfme/common';
|
1
|
+
import { Plugin, Schema, UIRenderProps, PDFRenderProps } from '@pdfme/common';
|
3
2
|
import svg from '../graphics/svg.js';
|
4
3
|
import { isEditable } from '../utils.js';
|
5
4
|
import { HEX_COLOR_PATTERN } from '../constants.js';
|
@@ -19,7 +18,7 @@ const getIcon = ({ value, color }: { value: string; color: string }) =>
|
|
19
18
|
value === 'true' ? getCheckedIcon(color) : getUncheckedIcon(color);
|
20
19
|
|
21
20
|
const schema: Plugin<Checkbox> = {
|
22
|
-
ui: (arg) => {
|
21
|
+
ui: (arg: UIRenderProps<Checkbox>) => {
|
23
22
|
const { schema, value, onChange, rootElement, mode } = arg;
|
24
23
|
const container = document.createElement('div');
|
25
24
|
container.style.width = '100%';
|
@@ -27,7 +26,7 @@ const schema: Plugin<Checkbox> = {
|
|
27
26
|
|
28
27
|
if (isEditable(mode, schema)) {
|
29
28
|
container.addEventListener('click', () => {
|
30
|
-
onChange
|
29
|
+
if (onChange) onChange({ key: 'content', value: value === 'true' ? 'false' : 'true' });
|
31
30
|
});
|
32
31
|
}
|
33
32
|
|
@@ -40,7 +39,7 @@ const schema: Plugin<Checkbox> = {
|
|
40
39
|
|
41
40
|
rootElement.appendChild(container);
|
42
41
|
},
|
43
|
-
pdf: (arg) =>
|
42
|
+
pdf: (arg: PDFRenderProps<Checkbox>) =>
|
44
43
|
svg.pdf(Object.assign(arg, { value: getIcon({ value: arg.value, color: arg.schema.color }) })),
|
45
44
|
propPanel: {
|
46
45
|
schema: ({ i18n }) => ({
|
package/src/date/helper.ts
CHANGED
@@ -39,7 +39,14 @@ import localeZh from 'air-datepicker/locale/zh';
|
|
39
39
|
import * as dateFns from 'date-fns/locale';
|
40
40
|
import { format } from 'date-fns';
|
41
41
|
|
42
|
-
import {
|
42
|
+
import {
|
43
|
+
Plugin,
|
44
|
+
getFallbackFontName,
|
45
|
+
DEFAULT_FONT_NAME,
|
46
|
+
PropPanelSchema,
|
47
|
+
UIRenderProps,
|
48
|
+
PDFRenderProps,
|
49
|
+
} from '@pdfme/common';
|
43
50
|
import text from '../text/index.js';
|
44
51
|
import { DEFAULT_OPACITY, HEX_COLOR_PATTERN } from '../constants.js';
|
45
52
|
import { mapVerticalAlignToFlex } from '../text/uiRender.js';
|
@@ -200,7 +207,7 @@ export const getPlugin = ({ type, icon }: { type: PickerType; icon: string }) =>
|
|
200
207
|
const defaultFormat = getFormat(type, getAirDatepickerLocale(defaultLocale));
|
201
208
|
|
202
209
|
const plugin: Plugin<DateSchema> = {
|
203
|
-
ui: async (arg) => {
|
210
|
+
ui: async (arg: UIRenderProps<DateSchema>) => {
|
204
211
|
const { schema, value, onChange, rootElement, mode, options, i18n } = arg;
|
205
212
|
|
206
213
|
const locale = getAirDatepickerLocale(schema.locale || options.lang || defaultLocale);
|
@@ -297,7 +304,7 @@ export const getPlugin = ({ type, icon }: { type: PickerType; icon: string }) =>
|
|
297
304
|
rootElement.appendChild(input);
|
298
305
|
rootElement.appendChild(textElement);
|
299
306
|
},
|
300
|
-
pdf: (arg) => {
|
307
|
+
pdf: (arg: PDFRenderProps<DateSchema>) => {
|
301
308
|
const { schema, value, options } = arg;
|
302
309
|
if (!value) return void 0;
|
303
310
|
const locale = getAirDatepickerLocale(schema.locale || options.lang || defaultLocale);
|
@@ -318,12 +325,12 @@ export const getPlugin = ({ type, icon }: { type: PickerType; icon: string }) =>
|
|
318
325
|
const fallbackFontName = getFallbackFontName(font);
|
319
326
|
|
320
327
|
const locale = getAirDatepickerLocale(
|
321
|
-
(activeSchema as
|
328
|
+
(activeSchema as { locale?: string }).locale || options.lang || defaultLocale,
|
322
329
|
);
|
323
330
|
|
324
331
|
if (
|
325
|
-
(activeSchema as
|
326
|
-
(activeSchema as
|
332
|
+
(activeSchema as { locale?: string }).locale === undefined &&
|
333
|
+
(activeSchema as { locale?: string }).locale !== options.lang
|
327
334
|
) {
|
328
335
|
changeSchemas([
|
329
336
|
{ schemaId: activeSchema.id, key: 'locale', value: options.lang },
|
@@ -336,13 +343,13 @@ export const getPlugin = ({ type, icon }: { type: PickerType; icon: string }) =>
|
|
336
343
|
(button) => button.key === Formatter.ALIGNMENT,
|
337
344
|
);
|
338
345
|
|
339
|
-
const validateDateTimeFormat = (_rule:
|
346
|
+
const validateDateTimeFormat = (_rule: unknown, formatString: string): boolean => {
|
340
347
|
try {
|
341
348
|
format('Thu Jan 01 1970 00:00:00 GMT+0000', formatString, {
|
342
349
|
locale: locale.formatLocale,
|
343
350
|
});
|
344
351
|
return true;
|
345
|
-
} catch
|
352
|
+
} catch {
|
346
353
|
return false;
|
347
354
|
}
|
348
355
|
};
|
package/src/graphics/image.ts
CHANGED
@@ -20,7 +20,7 @@ const fullSize = { width: '100%', height: '100%' };
|
|
20
20
|
const defaultValue =
|
21
21
|
'data:image/png;base64,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';
|
22
22
|
|
23
|
-
|
23
|
+
type ImageSchema = Schema;
|
24
24
|
|
25
25
|
const imageSchema: Plugin<ImageSchema> = {
|
26
26
|
pdf: async (arg: PDFRenderProps<ImageSchema>) => {
|
@@ -131,7 +131,7 @@ const imageSchema: Plugin<ImageSchema> = {
|
|
131
131
|
};
|
132
132
|
Object.assign(button.style, buttonStyle);
|
133
133
|
button.addEventListener('click', () => {
|
134
|
-
onChange
|
134
|
+
if (onChange) onChange({ key: 'content', value: '' });
|
135
135
|
});
|
136
136
|
container.appendChild(button);
|
137
137
|
}
|
@@ -168,13 +168,13 @@ const imageSchema: Plugin<ImageSchema> = {
|
|
168
168
|
const changeEvent = event as unknown as ChangeEvent<HTMLInputElement>;
|
169
169
|
readFile(changeEvent.target.files)
|
170
170
|
.then((result) => {
|
171
|
-
onChange
|
171
|
+
if (onChange) onChange({ key: 'content', value: result as string });
|
172
172
|
})
|
173
173
|
.catch((error) => {
|
174
174
|
console.error('Error reading file:', error);
|
175
175
|
});
|
176
176
|
});
|
177
|
-
input.addEventListener('blur', () =>
|
177
|
+
input.addEventListener('blur', () => { if (stopEditing) stopEditing(); });
|
178
178
|
label.appendChild(input);
|
179
179
|
}
|
180
180
|
},
|
package/src/graphics/svg.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { Plugin, Schema } from '@pdfme/common';
|
1
|
+
import { Plugin, Schema, UIRenderProps, PDFRenderProps } from '@pdfme/common';
|
2
2
|
import {
|
3
3
|
convertForPdfLayoutProps,
|
4
4
|
isEditable,
|
@@ -31,7 +31,7 @@ const isValidSVG = (svgString: string): boolean => {
|
|
31
31
|
}
|
32
32
|
|
33
33
|
return true;
|
34
|
-
} catch
|
34
|
+
} catch {
|
35
35
|
return false;
|
36
36
|
}
|
37
37
|
};
|
@@ -42,10 +42,11 @@ const defaultValue = `<svg viewBox="0 0 488 600" version="1.1" xmlns="http://www
|
|
42
42
|
</g>
|
43
43
|
</svg>`;
|
44
44
|
|
45
|
-
interface
|
45
|
+
// This interface extends Schema with no additional properties
|
46
|
+
export type SVGSchema = Schema;
|
46
47
|
|
47
48
|
const svgSchema: Plugin<SVGSchema> = {
|
48
|
-
ui: (arg) => {
|
49
|
+
ui: (arg: UIRenderProps<SVGSchema>) => {
|
49
50
|
const { rootElement, value, mode, onChange, theme, schema } = arg;
|
50
51
|
const container = document.createElement(isEditable(mode, schema) ? 'textarea' : 'div');
|
51
52
|
container.style.width = '100%';
|
@@ -73,7 +74,7 @@ const svgSchema: Plugin<SVGSchema> = {
|
|
73
74
|
|
74
75
|
textarea.addEventListener('change', (e: Event) => {
|
75
76
|
const newValue = (e.target as HTMLTextAreaElement).value;
|
76
|
-
onChange
|
77
|
+
if (onChange) onChange({ key: 'content', value: newValue });
|
77
78
|
});
|
78
79
|
rootElement.appendChild(container);
|
79
80
|
textarea.setSelectionRange(value.length, value.length);
|
@@ -93,7 +94,7 @@ const svgSchema: Plugin<SVGSchema> = {
|
|
93
94
|
}
|
94
95
|
}
|
95
96
|
},
|
96
|
-
pdf: async (arg) => {
|
97
|
+
pdf: async (arg: PDFRenderProps<SVGSchema>) => {
|
97
98
|
const { page, schema, value } = arg;
|
98
99
|
if (!value || !isValidSVG(value)) return;
|
99
100
|
const pageHeight = page.getHeight();
|
@@ -12,7 +12,7 @@ export const substituteVariables = (
|
|
12
12
|
|
13
13
|
if (variablesIn) {
|
14
14
|
const variables: Record<string, string> =
|
15
|
-
typeof variablesIn === 'string' ? JSON.parse(variablesIn
|
15
|
+
typeof variablesIn === 'string' ? JSON.parse(variablesIn || '{}') as Record<string, string> : variablesIn;
|
16
16
|
|
17
17
|
Object.keys(variables).forEach((variableName) => {
|
18
18
|
// handle special characters in variable name
|
@@ -29,14 +29,14 @@ export const substituteVariables = (
|
|
29
29
|
};
|
30
30
|
|
31
31
|
export const validateVariables = (value: string, schema: MultiVariableTextSchema): boolean => {
|
32
|
-
if (schema.variables.length
|
32
|
+
if (schema.variables.length === 0) {
|
33
33
|
return true;
|
34
34
|
}
|
35
35
|
|
36
36
|
let values;
|
37
37
|
try {
|
38
|
-
values = value ? JSON.parse(value) : {};
|
39
|
-
} catch
|
38
|
+
values = value ? JSON.parse(value) as Record<string, string> : {};
|
39
|
+
} catch {
|
40
40
|
throw new SyntaxError(
|
41
41
|
`[@pdfme/generator] invalid JSON string '${value}' for variables in field ${schema.name}`,
|
42
42
|
);
|