@pdfme/schemas 5.3.11-dev.1 → 5.3.11-dev.10

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 (179) hide show
  1. package/dist/cjs/src/barcodes/helper.js +6 -3
  2. package/dist/cjs/src/barcodes/helper.js.map +1 -1
  3. package/dist/cjs/src/barcodes/pdfRender.js +5 -1
  4. package/dist/cjs/src/barcodes/pdfRender.js.map +1 -1
  5. package/dist/cjs/src/barcodes/uiRender.js +5 -3
  6. package/dist/cjs/src/barcodes/uiRender.js.map +1 -1
  7. package/dist/cjs/src/checkbox/index.js +2 -1
  8. package/dist/cjs/src/checkbox/index.js.map +1 -1
  9. package/dist/cjs/src/date/helper.js +1 -1
  10. package/dist/cjs/src/date/helper.js.map +1 -1
  11. package/dist/cjs/src/graphics/image.js +6 -3
  12. package/dist/cjs/src/graphics/image.js.map +1 -1
  13. package/dist/cjs/src/graphics/svg.js +3 -2
  14. package/dist/cjs/src/graphics/svg.js.map +1 -1
  15. package/dist/cjs/src/multiVariableText/helper.js +3 -3
  16. package/dist/cjs/src/multiVariableText/helper.js.map +1 -1
  17. package/dist/cjs/src/multiVariableText/propPanel.js +25 -12
  18. package/dist/cjs/src/multiVariableText/propPanel.js.map +1 -1
  19. package/dist/cjs/src/multiVariableText/uiRender.js +14 -11
  20. package/dist/cjs/src/multiVariableText/uiRender.js.map +1 -1
  21. package/dist/cjs/src/radioGroup/index.js.map +1 -1
  22. package/dist/cjs/src/select/index.js +20 -8
  23. package/dist/cjs/src/select/index.js.map +1 -1
  24. package/dist/cjs/src/shapes/rectAndEllipse.js.map +1 -1
  25. package/dist/cjs/src/tables/classes.js.map +1 -1
  26. package/dist/cjs/src/tables/pdfRender.js +16 -2
  27. package/dist/cjs/src/tables/pdfRender.js.map +1 -1
  28. package/dist/cjs/src/tables/propPanel.js +1 -1
  29. package/dist/cjs/src/tables/propPanel.js.map +1 -1
  30. package/dist/cjs/src/tables/tableHelper.js +1 -1
  31. package/dist/cjs/src/tables/tableHelper.js.map +1 -1
  32. package/dist/cjs/src/tables/uiRender.js +4 -2
  33. package/dist/cjs/src/tables/uiRender.js.map +1 -1
  34. package/dist/cjs/src/text/extraFormatter.js +1 -0
  35. package/dist/cjs/src/text/extraFormatter.js.map +1 -1
  36. package/dist/cjs/src/text/helper.js +19 -3
  37. package/dist/cjs/src/text/helper.js.map +1 -1
  38. package/dist/cjs/src/text/pdfRender.js +1 -1
  39. package/dist/cjs/src/text/pdfRender.js.map +1 -1
  40. package/dist/cjs/src/text/propPanel.js.map +1 -1
  41. package/dist/cjs/src/text/uiRender.js +9 -8
  42. package/dist/cjs/src/text/uiRender.js.map +1 -1
  43. package/dist/cjs/src/utils.js +3 -3
  44. package/dist/cjs/src/utils.js.map +1 -1
  45. package/dist/esm/src/barcodes/helper.js +6 -3
  46. package/dist/esm/src/barcodes/helper.js.map +1 -1
  47. package/dist/esm/src/barcodes/pdfRender.js +5 -1
  48. package/dist/esm/src/barcodes/pdfRender.js.map +1 -1
  49. package/dist/esm/src/barcodes/uiRender.js +5 -3
  50. package/dist/esm/src/barcodes/uiRender.js.map +1 -1
  51. package/dist/esm/src/checkbox/index.js +2 -1
  52. package/dist/esm/src/checkbox/index.js.map +1 -1
  53. package/dist/esm/src/date/helper.js +2 -2
  54. package/dist/esm/src/date/helper.js.map +1 -1
  55. package/dist/esm/src/graphics/image.js +6 -3
  56. package/dist/esm/src/graphics/image.js.map +1 -1
  57. package/dist/esm/src/graphics/svg.js +3 -2
  58. package/dist/esm/src/graphics/svg.js.map +1 -1
  59. package/dist/esm/src/multiVariableText/helper.js +3 -3
  60. package/dist/esm/src/multiVariableText/helper.js.map +1 -1
  61. package/dist/esm/src/multiVariableText/propPanel.js +25 -12
  62. package/dist/esm/src/multiVariableText/propPanel.js.map +1 -1
  63. package/dist/esm/src/multiVariableText/uiRender.js +14 -11
  64. package/dist/esm/src/multiVariableText/uiRender.js.map +1 -1
  65. package/dist/esm/src/radioGroup/index.js.map +1 -1
  66. package/dist/esm/src/select/index.js +20 -8
  67. package/dist/esm/src/select/index.js.map +1 -1
  68. package/dist/esm/src/shapes/rectAndEllipse.js.map +1 -1
  69. package/dist/esm/src/tables/classes.js.map +1 -1
  70. package/dist/esm/src/tables/pdfRender.js +16 -2
  71. package/dist/esm/src/tables/pdfRender.js.map +1 -1
  72. package/dist/esm/src/tables/propPanel.js +1 -1
  73. package/dist/esm/src/tables/propPanel.js.map +1 -1
  74. package/dist/esm/src/tables/tableHelper.js +1 -1
  75. package/dist/esm/src/tables/tableHelper.js.map +1 -1
  76. package/dist/esm/src/tables/uiRender.js +4 -2
  77. package/dist/esm/src/tables/uiRender.js.map +1 -1
  78. package/dist/esm/src/text/extraFormatter.js +1 -0
  79. package/dist/esm/src/text/extraFormatter.js.map +1 -1
  80. package/dist/esm/src/text/helper.js +19 -3
  81. package/dist/esm/src/text/helper.js.map +1 -1
  82. package/dist/esm/src/text/pdfRender.js +1 -1
  83. package/dist/esm/src/text/pdfRender.js.map +1 -1
  84. package/dist/esm/src/text/propPanel.js.map +1 -1
  85. package/dist/esm/src/text/uiRender.js +8 -6
  86. package/dist/esm/src/text/uiRender.js.map +1 -1
  87. package/dist/esm/src/utils.js +3 -3
  88. package/dist/esm/src/utils.js.map +1 -1
  89. package/dist/node/src/barcodes/helper.js +6 -3
  90. package/dist/node/src/barcodes/helper.js.map +1 -1
  91. package/dist/node/src/barcodes/pdfRender.js +5 -1
  92. package/dist/node/src/barcodes/pdfRender.js.map +1 -1
  93. package/dist/node/src/barcodes/uiRender.js +5 -3
  94. package/dist/node/src/barcodes/uiRender.js.map +1 -1
  95. package/dist/node/src/checkbox/index.js +2 -1
  96. package/dist/node/src/checkbox/index.js.map +1 -1
  97. package/dist/node/src/date/helper.js +1 -1
  98. package/dist/node/src/date/helper.js.map +1 -1
  99. package/dist/node/src/graphics/image.js +6 -3
  100. package/dist/node/src/graphics/image.js.map +1 -1
  101. package/dist/node/src/graphics/svg.js +3 -2
  102. package/dist/node/src/graphics/svg.js.map +1 -1
  103. package/dist/node/src/multiVariableText/helper.js +3 -3
  104. package/dist/node/src/multiVariableText/helper.js.map +1 -1
  105. package/dist/node/src/multiVariableText/propPanel.js +25 -12
  106. package/dist/node/src/multiVariableText/propPanel.js.map +1 -1
  107. package/dist/node/src/multiVariableText/uiRender.js +14 -11
  108. package/dist/node/src/multiVariableText/uiRender.js.map +1 -1
  109. package/dist/node/src/radioGroup/index.js.map +1 -1
  110. package/dist/node/src/select/index.js +20 -8
  111. package/dist/node/src/select/index.js.map +1 -1
  112. package/dist/node/src/shapes/rectAndEllipse.js.map +1 -1
  113. package/dist/node/src/tables/classes.js.map +1 -1
  114. package/dist/node/src/tables/pdfRender.js +16 -2
  115. package/dist/node/src/tables/pdfRender.js.map +1 -1
  116. package/dist/node/src/tables/propPanel.js +1 -1
  117. package/dist/node/src/tables/propPanel.js.map +1 -1
  118. package/dist/node/src/tables/tableHelper.js +1 -1
  119. package/dist/node/src/tables/tableHelper.js.map +1 -1
  120. package/dist/node/src/tables/uiRender.js +4 -2
  121. package/dist/node/src/tables/uiRender.js.map +1 -1
  122. package/dist/node/src/text/extraFormatter.js +1 -0
  123. package/dist/node/src/text/extraFormatter.js.map +1 -1
  124. package/dist/node/src/text/helper.js +19 -3
  125. package/dist/node/src/text/helper.js.map +1 -1
  126. package/dist/node/src/text/pdfRender.js +1 -1
  127. package/dist/node/src/text/pdfRender.js.map +1 -1
  128. package/dist/node/src/text/propPanel.js.map +1 -1
  129. package/dist/node/src/text/uiRender.js +9 -8
  130. package/dist/node/src/text/uiRender.js.map +1 -1
  131. package/dist/node/src/utils.js +3 -3
  132. package/dist/node/src/utils.js.map +1 -1
  133. package/dist/types/src/barcodes/helper.d.ts +22 -0
  134. package/dist/types/src/checkbox/index.d.ts +1 -2
  135. package/dist/types/src/graphics/image.d.ts +1 -2
  136. package/dist/types/src/graphics/svg.d.ts +1 -2
  137. package/dist/types/src/radioGroup/index.d.ts +1 -2
  138. package/dist/types/src/shapes/rectAndEllipse.d.ts +91 -7
  139. package/dist/types/src/tables/classes.d.ts +2 -1
  140. package/dist/types/src/tables/dynamicTemplate.d.ts +1 -1
  141. package/dist/types/src/tables/tableHelper.d.ts +1 -1
  142. package/dist/types/src/text/extraFormatter.d.ts +2 -3
  143. package/dist/types/src/text/helper.d.ts +1 -1
  144. package/dist/types/src/text/uiRender.d.ts +0 -3
  145. package/dist/types/src/utils.d.ts +1 -1
  146. package/package.json +1 -1
  147. package/src/barcodes/helper.ts +35 -5
  148. package/src/barcodes/pdfRender.ts +7 -4
  149. package/src/barcodes/uiRender.ts +3 -3
  150. package/src/checkbox/index.ts +4 -5
  151. package/src/date/helper.ts +15 -8
  152. package/src/graphics/image.ts +4 -4
  153. package/src/graphics/svg.ts +7 -6
  154. package/src/multiVariableText/helper.ts +4 -4
  155. package/src/multiVariableText/propPanel.ts +28 -14
  156. package/src/multiVariableText/uiRender.ts +16 -15
  157. package/src/radioGroup/index.ts +3 -4
  158. package/src/select/index.ts +23 -10
  159. package/src/shapes/rectAndEllipse.ts +3 -3
  160. package/src/tables/classes.ts +2 -2
  161. package/src/tables/dynamicTemplate.ts +1 -1
  162. package/src/tables/pdfRender.ts +28 -3
  163. package/src/tables/propPanel.ts +1 -1
  164. package/src/tables/tableHelper.ts +3 -2
  165. package/src/tables/uiRender.ts +2 -2
  166. package/src/text/extraFormatter.ts +3 -3
  167. package/src/text/helper.ts +19 -6
  168. package/src/text/pdfRender.ts +3 -3
  169. package/src/text/propPanel.ts +4 -4
  170. package/src/text/uiRender.ts +7 -7
  171. package/src/utils.ts +5 -5
  172. package/dist/cjs/src/graphics/cacheKey.js +0 -6
  173. package/dist/cjs/src/graphics/cacheKey.js.map +0 -1
  174. package/dist/esm/src/graphics/cacheKey.js +0 -2
  175. package/dist/esm/src/graphics/cacheKey.js.map +0 -1
  176. package/dist/node/src/graphics/cacheKey.js +0 -6
  177. package/dist/node/src/graphics/cacheKey.js.map +0 -1
  178. package/dist/types/src/graphics/cacheKey.d.ts +0 -2
  179. 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,5 +1,4 @@
1
- import { Plugin } from '@pdfme/common';
2
- import { Schema } from '@pdfme/common';
1
+ import { Plugin, Schema } from '@pdfme/common';
3
2
  interface Checkbox extends Schema {
4
3
  color: string;
5
4
  }
@@ -1,6 +1,5 @@
1
1
  import type { Plugin } from '@pdfme/common';
2
2
  import type { Schema } from '@pdfme/common';
3
- export interface ImageSchema extends Schema {
4
- }
3
+ type ImageSchema = Schema;
5
4
  declare const imageSchema: Plugin<ImageSchema>;
6
5
  export default imageSchema;
@@ -1,5 +1,4 @@
1
1
  import { Plugin, Schema } from '@pdfme/common';
2
- interface SVGSchema extends Schema {
3
- }
2
+ export type SVGSchema = Schema;
4
3
  declare const svgSchema: Plugin<SVGSchema>;
5
4
  export default svgSchema;
@@ -1,5 +1,4 @@
1
- import { Plugin } from '@pdfme/common';
2
- import { Schema } from '@pdfme/common';
1
+ import { Plugin, Schema } from '@pdfme/common';
3
2
  interface RadioGroup extends Schema {
4
3
  group: string;
5
4
  color: string;
@@ -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: keyof import("@pdfme/common").Dict | string) => string;
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: import("@pdfme/common").PDFRenderProps<ShapeSchema>) => Promise<void> | void;
47
- ui: (arg: import("@pdfme/common").UIRenderProps<ShapeSchema>) => Promise<void> | void;
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: keyof import("@pdfme/common").Dict | string) => string;
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: import("@pdfme/common").PDFRenderProps<ShapeSchema>) => Promise<void> | void;
89
- ui: (arg: import("@pdfme/common").UIRenderProps<ShapeSchema>) => Promise<void> | void;
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<any, any>;
61
+ _cache: Map<string | number, FontKitFont>;
61
62
  }): Promise<Table>;
62
63
  getHeadHeight(): number;
63
64
  getBodyHeight(): number;
@@ -3,5 +3,5 @@ export declare const getDynamicHeightsForTable: (value: string, args: {
3
3
  schema: Schema;
4
4
  basePdf: BasePdf;
5
5
  options: CommonOptions;
6
- _cache: Map<any, any>;
6
+ _cache: Map<string | number, unknown>;
7
7
  }) => Promise<number[]>;
@@ -4,7 +4,7 @@ interface CreateTableArgs {
4
4
  schema: Schema;
5
5
  basePdf: BasePdf;
6
6
  options: CommonOptions;
7
- _cache: Map<any, any>;
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
- export type GroupButton = GroupButtonBoolean | GroupButtonString;
20
- export declare function getExtraFormatterSchema(i18n: (key: keyof Dict | string) => string): {
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<any, any>) => Promise<fontkit.Font>;
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<any, any>;
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.1",
3
+ "version": "5.3.11-dev.10",
4
4
  "sideEffects": false,
5
5
  "author": "hand-dot",
6
6
  "license": "MIT",
@@ -1,6 +1,33 @@
1
1
  import { b64toUint8Array } from '@pdfme/common';
2
- import bwipjs, { RenderOptions } from 'bwip-js';
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: RenderOptions = {
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
- // @ts-ignore
170
- bwipjs.toCanvas(canvas, bwipjsArg);
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
- res = await bwipjs.toBuffer(bwipjsArg);
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
- Object.assign(schema, { type: schema.type, input: value }),
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
  }
@@ -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 && onChange({ key: 'content', value: (e.target as HTMLInputElement).value });
72
+ if (onChange) onChange({ key: 'content', value: (e.target as HTMLInputElement).value });
73
73
  });
74
74
  input.addEventListener('blur', () => {
75
- stopEditing && 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
  };
@@ -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 && onChange({ key: 'content', value: value === 'true' ? 'false' : 'true' });
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 }) => ({
@@ -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 { Plugin, getFallbackFontName, DEFAULT_FONT_NAME, PropPanelSchema } from '@pdfme/common';
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 any).locale || options.lang || defaultLocale,
328
+ (activeSchema as { locale?: string }).locale || options.lang || defaultLocale,
322
329
  );
323
330
 
324
331
  if (
325
- (activeSchema as any).locale === undefined &&
326
- (activeSchema as any).locale !== options.lang
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: any, formatString: string): boolean => {
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 (_err) {
352
+ } catch {
346
353
  return false;
347
354
  }
348
355
  };
@@ -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
- export interface ImageSchema extends Schema {}
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 && onChange({ key: 'content', value: '' });
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 && onChange({ key: 'content', value: result as string });
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', () => stopEditing && stopEditing());
177
+ input.addEventListener('blur', () => { if (stopEditing) stopEditing(); });
178
178
  label.appendChild(input);
179
179
  }
180
180
  },
@@ -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 (error) {
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 SVGSchema extends Schema {}
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 && onChange({ key: 'content', value: newValue });
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) || {} : 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 == 0) {
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 (e) {
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
  );