@pdfme/schemas 5.3.11-dev.2 → 5.3.11-dev.21

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 (201) hide show
  1. package/dist/cjs/__tests__/barcode.test.js +37 -14
  2. package/dist/cjs/__tests__/barcode.test.js.map +1 -1
  3. package/dist/cjs/src/barcodes/constants.js +1 -0
  4. package/dist/cjs/src/barcodes/constants.js.map +1 -1
  5. package/dist/cjs/src/barcodes/helper.js +31 -16
  6. package/dist/cjs/src/barcodes/helper.js.map +1 -1
  7. package/dist/cjs/src/barcodes/pdfRender.js +5 -1
  8. package/dist/cjs/src/barcodes/pdfRender.js.map +1 -1
  9. package/dist/cjs/src/barcodes/propPanel.js +14 -1
  10. package/dist/cjs/src/barcodes/propPanel.js.map +1 -1
  11. package/dist/cjs/src/barcodes/uiRender.js +5 -3
  12. package/dist/cjs/src/barcodes/uiRender.js.map +1 -1
  13. package/dist/cjs/src/checkbox/index.js +2 -1
  14. package/dist/cjs/src/checkbox/index.js.map +1 -1
  15. package/dist/cjs/src/date/helper.js +1 -1
  16. package/dist/cjs/src/date/helper.js.map +1 -1
  17. package/dist/cjs/src/graphics/image.js +8 -3
  18. package/dist/cjs/src/graphics/image.js.map +1 -1
  19. package/dist/cjs/src/graphics/svg.js +3 -2
  20. package/dist/cjs/src/graphics/svg.js.map +1 -1
  21. package/dist/cjs/src/multiVariableText/helper.js +5 -3
  22. package/dist/cjs/src/multiVariableText/helper.js.map +1 -1
  23. package/dist/cjs/src/multiVariableText/propPanel.js +24 -12
  24. package/dist/cjs/src/multiVariableText/propPanel.js.map +1 -1
  25. package/dist/cjs/src/multiVariableText/uiRender.js +17 -12
  26. package/dist/cjs/src/multiVariableText/uiRender.js.map +1 -1
  27. package/dist/cjs/src/radioGroup/index.js.map +1 -1
  28. package/dist/cjs/src/select/index.js +9 -3
  29. package/dist/cjs/src/select/index.js.map +1 -1
  30. package/dist/cjs/src/shapes/rectAndEllipse.js.map +1 -1
  31. package/dist/cjs/src/tables/classes.js.map +1 -1
  32. package/dist/cjs/src/tables/pdfRender.js +16 -2
  33. package/dist/cjs/src/tables/pdfRender.js.map +1 -1
  34. package/dist/cjs/src/tables/propPanel.js +1 -1
  35. package/dist/cjs/src/tables/propPanel.js.map +1 -1
  36. package/dist/cjs/src/tables/tableHelper.js +6 -1
  37. package/dist/cjs/src/tables/tableHelper.js.map +1 -1
  38. package/dist/cjs/src/tables/uiRender.js +4 -2
  39. package/dist/cjs/src/tables/uiRender.js.map +1 -1
  40. package/dist/cjs/src/text/extraFormatter.js +1 -0
  41. package/dist/cjs/src/text/extraFormatter.js.map +1 -1
  42. package/dist/cjs/src/text/helper.js +19 -3
  43. package/dist/cjs/src/text/helper.js.map +1 -1
  44. package/dist/cjs/src/text/pdfRender.js +5 -1
  45. package/dist/cjs/src/text/pdfRender.js.map +1 -1
  46. package/dist/cjs/src/text/propPanel.js.map +1 -1
  47. package/dist/cjs/src/text/uiRender.js +9 -8
  48. package/dist/cjs/src/text/uiRender.js.map +1 -1
  49. package/dist/cjs/src/utils.js +3 -3
  50. package/dist/cjs/src/utils.js.map +1 -1
  51. package/dist/esm/__tests__/barcode.test.js +37 -14
  52. package/dist/esm/__tests__/barcode.test.js.map +1 -1
  53. package/dist/esm/src/barcodes/constants.js +1 -0
  54. package/dist/esm/src/barcodes/constants.js.map +1 -1
  55. package/dist/esm/src/barcodes/helper.js +31 -16
  56. package/dist/esm/src/barcodes/helper.js.map +1 -1
  57. package/dist/esm/src/barcodes/pdfRender.js +5 -1
  58. package/dist/esm/src/barcodes/pdfRender.js.map +1 -1
  59. package/dist/esm/src/barcodes/propPanel.js +14 -1
  60. package/dist/esm/src/barcodes/propPanel.js.map +1 -1
  61. package/dist/esm/src/barcodes/uiRender.js +5 -3
  62. package/dist/esm/src/barcodes/uiRender.js.map +1 -1
  63. package/dist/esm/src/checkbox/index.js +2 -1
  64. package/dist/esm/src/checkbox/index.js.map +1 -1
  65. package/dist/esm/src/date/helper.js +2 -2
  66. package/dist/esm/src/date/helper.js.map +1 -1
  67. package/dist/esm/src/graphics/image.js +8 -3
  68. package/dist/esm/src/graphics/image.js.map +1 -1
  69. package/dist/esm/src/graphics/svg.js +3 -2
  70. package/dist/esm/src/graphics/svg.js.map +1 -1
  71. package/dist/esm/src/multiVariableText/helper.js +5 -3
  72. package/dist/esm/src/multiVariableText/helper.js.map +1 -1
  73. package/dist/esm/src/multiVariableText/propPanel.js +24 -12
  74. package/dist/esm/src/multiVariableText/propPanel.js.map +1 -1
  75. package/dist/esm/src/multiVariableText/uiRender.js +17 -12
  76. package/dist/esm/src/multiVariableText/uiRender.js.map +1 -1
  77. package/dist/esm/src/radioGroup/index.js.map +1 -1
  78. package/dist/esm/src/select/index.js +9 -3
  79. package/dist/esm/src/select/index.js.map +1 -1
  80. package/dist/esm/src/shapes/rectAndEllipse.js.map +1 -1
  81. package/dist/esm/src/tables/classes.js.map +1 -1
  82. package/dist/esm/src/tables/pdfRender.js +16 -2
  83. package/dist/esm/src/tables/pdfRender.js.map +1 -1
  84. package/dist/esm/src/tables/propPanel.js +1 -1
  85. package/dist/esm/src/tables/propPanel.js.map +1 -1
  86. package/dist/esm/src/tables/tableHelper.js +6 -1
  87. package/dist/esm/src/tables/tableHelper.js.map +1 -1
  88. package/dist/esm/src/tables/uiRender.js +4 -2
  89. package/dist/esm/src/tables/uiRender.js.map +1 -1
  90. package/dist/esm/src/text/extraFormatter.js +1 -0
  91. package/dist/esm/src/text/extraFormatter.js.map +1 -1
  92. package/dist/esm/src/text/helper.js +19 -3
  93. package/dist/esm/src/text/helper.js.map +1 -1
  94. package/dist/esm/src/text/pdfRender.js +5 -1
  95. package/dist/esm/src/text/pdfRender.js.map +1 -1
  96. package/dist/esm/src/text/propPanel.js.map +1 -1
  97. package/dist/esm/src/text/uiRender.js +8 -6
  98. package/dist/esm/src/text/uiRender.js.map +1 -1
  99. package/dist/esm/src/utils.js +3 -3
  100. package/dist/esm/src/utils.js.map +1 -1
  101. package/dist/node/__tests__/barcode.test.js +37 -14
  102. package/dist/node/__tests__/barcode.test.js.map +1 -1
  103. package/dist/node/src/barcodes/constants.js +1 -0
  104. package/dist/node/src/barcodes/constants.js.map +1 -1
  105. package/dist/node/src/barcodes/helper.js +31 -16
  106. package/dist/node/src/barcodes/helper.js.map +1 -1
  107. package/dist/node/src/barcodes/pdfRender.js +5 -1
  108. package/dist/node/src/barcodes/pdfRender.js.map +1 -1
  109. package/dist/node/src/barcodes/propPanel.js +14 -1
  110. package/dist/node/src/barcodes/propPanel.js.map +1 -1
  111. package/dist/node/src/barcodes/uiRender.js +5 -3
  112. package/dist/node/src/barcodes/uiRender.js.map +1 -1
  113. package/dist/node/src/checkbox/index.js +2 -1
  114. package/dist/node/src/checkbox/index.js.map +1 -1
  115. package/dist/node/src/date/helper.js +1 -1
  116. package/dist/node/src/date/helper.js.map +1 -1
  117. package/dist/node/src/graphics/image.js +8 -3
  118. package/dist/node/src/graphics/image.js.map +1 -1
  119. package/dist/node/src/graphics/svg.js +3 -2
  120. package/dist/node/src/graphics/svg.js.map +1 -1
  121. package/dist/node/src/multiVariableText/helper.js +5 -3
  122. package/dist/node/src/multiVariableText/helper.js.map +1 -1
  123. package/dist/node/src/multiVariableText/propPanel.js +24 -12
  124. package/dist/node/src/multiVariableText/propPanel.js.map +1 -1
  125. package/dist/node/src/multiVariableText/uiRender.js +17 -12
  126. package/dist/node/src/multiVariableText/uiRender.js.map +1 -1
  127. package/dist/node/src/radioGroup/index.js.map +1 -1
  128. package/dist/node/src/select/index.js +9 -3
  129. package/dist/node/src/select/index.js.map +1 -1
  130. package/dist/node/src/shapes/rectAndEllipse.js.map +1 -1
  131. package/dist/node/src/tables/classes.js.map +1 -1
  132. package/dist/node/src/tables/pdfRender.js +16 -2
  133. package/dist/node/src/tables/pdfRender.js.map +1 -1
  134. package/dist/node/src/tables/propPanel.js +1 -1
  135. package/dist/node/src/tables/propPanel.js.map +1 -1
  136. package/dist/node/src/tables/tableHelper.js +6 -1
  137. package/dist/node/src/tables/tableHelper.js.map +1 -1
  138. package/dist/node/src/tables/uiRender.js +4 -2
  139. package/dist/node/src/tables/uiRender.js.map +1 -1
  140. package/dist/node/src/text/extraFormatter.js +1 -0
  141. package/dist/node/src/text/extraFormatter.js.map +1 -1
  142. package/dist/node/src/text/helper.js +19 -3
  143. package/dist/node/src/text/helper.js.map +1 -1
  144. package/dist/node/src/text/pdfRender.js +5 -1
  145. package/dist/node/src/text/pdfRender.js.map +1 -1
  146. package/dist/node/src/text/propPanel.js.map +1 -1
  147. package/dist/node/src/text/uiRender.js +9 -8
  148. package/dist/node/src/text/uiRender.js.map +1 -1
  149. package/dist/node/src/utils.js +3 -3
  150. package/dist/node/src/utils.js.map +1 -1
  151. package/dist/types/src/barcodes/constants.d.ts +1 -1
  152. package/dist/types/src/barcodes/helper.d.ts +1 -1
  153. package/dist/types/src/barcodes/index.d.ts +1 -1
  154. package/dist/types/src/checkbox/index.d.ts +1 -2
  155. package/dist/types/src/graphics/image.d.ts +1 -2
  156. package/dist/types/src/graphics/svg.d.ts +1 -2
  157. package/dist/types/src/radioGroup/index.d.ts +1 -2
  158. package/dist/types/src/shapes/rectAndEllipse.d.ts +91 -7
  159. package/dist/types/src/tables/classes.d.ts +2 -1
  160. package/dist/types/src/tables/dynamicTemplate.d.ts +1 -1
  161. package/dist/types/src/tables/tableHelper.d.ts +1 -1
  162. package/dist/types/src/text/extraFormatter.d.ts +2 -3
  163. package/dist/types/src/text/helper.d.ts +1 -1
  164. package/dist/types/src/text/uiRender.d.ts +0 -3
  165. package/dist/types/src/utils.d.ts +1 -1
  166. package/package.json +2 -2
  167. package/src/barcodes/constants.ts +1 -0
  168. package/src/barcodes/helper.ts +35 -26
  169. package/src/barcodes/pdfRender.ts +7 -4
  170. package/src/barcodes/propPanel.ts +14 -1
  171. package/src/barcodes/uiRender.ts +3 -3
  172. package/src/checkbox/index.ts +4 -5
  173. package/src/date/helper.ts +15 -8
  174. package/src/graphics/image.ts +6 -4
  175. package/src/graphics/svg.ts +6 -6
  176. package/src/multiVariableText/helper.ts +6 -4
  177. package/src/multiVariableText/propPanel.ts +29 -14
  178. package/src/multiVariableText/uiRender.ts +22 -15
  179. package/src/radioGroup/index.ts +3 -4
  180. package/src/select/index.ts +12 -6
  181. package/src/shapes/rectAndEllipse.ts +4 -4
  182. package/src/tables/classes.ts +6 -2
  183. package/src/tables/dynamicTemplate.ts +1 -1
  184. package/src/tables/pdfRender.ts +28 -3
  185. package/src/tables/propPanel.ts +1 -1
  186. package/src/tables/tableHelper.ts +8 -2
  187. package/src/tables/uiRender.ts +2 -2
  188. package/src/text/extraFormatter.ts +3 -3
  189. package/src/text/helper.ts +19 -6
  190. package/src/text/pdfRender.ts +7 -3
  191. package/src/text/propPanel.ts +6 -4
  192. package/src/text/uiRender.ts +11 -7
  193. package/src/utils.ts +9 -5
  194. package/dist/cjs/src/graphics/cacheKey.js +0 -6
  195. package/dist/cjs/src/graphics/cacheKey.js.map +0 -1
  196. package/dist/esm/src/graphics/cacheKey.js +0 -2
  197. package/dist/esm/src/graphics/cacheKey.js.map +0 -1
  198. package/dist/node/src/graphics/cacheKey.js +0 -6
  199. package/dist/node/src/graphics/cacheKey.js.map +0 -1
  200. package/dist/types/src/graphics/cacheKey.d.ts +0 -2
  201. package/src/graphics/cacheKey.ts +0 -3
@@ -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.2",
3
+ "version": "5.3.11-dev.21",
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 --no-error-on-unmatched-pattern",
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'"
@@ -10,6 +10,7 @@ export const BARCODE_TYPES = [
10
10
  'upca',
11
11
  'upce',
12
12
  'gs1datamatrix',
13
+ 'pdf417',
13
14
  ] as const;
14
15
 
15
16
  export const DEFAULT_BARCODE_BG_COLOR = '#ffffff';
@@ -25,76 +25,74 @@ const validateCheckDigit = (input: string, checkDigitPos: number) => {
25
25
 
26
26
  return passCheckDigit;
27
27
  };
28
-
29
28
  export const validateBarcodeInput = (type: BarcodeTypes, input: string) => {
30
29
  if (!input) return false;
31
30
 
32
31
  if (!BARCODE_TYPES.includes(type)) return false;
33
32
 
34
33
  if (type === 'qrcode') {
35
- // 500文字以下
34
+ // Up to 500 characters
36
35
  return input.length < 500;
37
36
  }
38
37
  if (type === 'japanpost') {
39
- // 郵便番号は数字(0-9)のみ。住所表示番号は英数字(0-9,A-Z)とハイフン(-)が使用可能です。
38
+ // For Japan Post: Postal codes must be digits (0-9) only.
39
+ // Address display numbers can use alphanumeric characters (0-9, A-Z) and hyphen (-).
40
40
  const regexp = /^(\d{7})(\d|[A-Z]|-)+$/;
41
-
42
41
  return regexp.test(input);
43
42
  }
44
43
  if (type === 'ean13') {
45
- // 有効文字は数値(0-9)のみ。チェックデジットを含まない12桁orチェックデジットを含む13桁。
44
+ // For EAN-13: Valid characters are digits (0-9) only.
45
+ // Either 12 digits (without check digit) or 13 digits (with check digit).
46
46
  const regexp = /^\d{12}$|^\d{13}$/;
47
-
48
47
  return regexp.test(input) && validateCheckDigit(input, 13);
49
48
  }
50
49
  if (type === 'ean8') {
51
- // 有効文字は数値(0-9)のみ。チェックデジットを含まない7桁orチェックデジットを含む8桁。
50
+ // For EAN-8: Valid characters are digits (0-9) only.
51
+ // Either 7 digits (without check digit) or 8 digits (with check digit).
52
52
  const regexp = /^\d{7}$|^\d{8}$/;
53
-
54
53
  return regexp.test(input) && validateCheckDigit(input, 8);
55
54
  }
56
55
  if (type === 'code39') {
57
- // 有効文字は数字(0-9)。アルファベット大文字(A-Z)、記号(-.$/+%)、半角スペース。
56
+ // For Code39: Valid characters are digits (0-9), uppercase alphabets (A-Z),
57
+ // symbols (-, ., $, /, +, %), and space.
58
58
  const regexp = /^(\d|[A-Z]|\-|\.|\$|\/|\+|\%|\s)+$/;
59
-
60
59
  return regexp.test(input);
61
60
  }
62
61
  if (type === 'code128') {
63
- // 有効文字は漢字、ひらがな、カタカナ以外。
62
+ // For Code128: Valid characters are all except Kanji, Hiragana, and Katakana.
64
63
  // https://qiita.com/graminume/items/2ac8dd9c32277fa9da64
65
64
  return !input.match(
66
65
  /([\u30a0-\u30ff\u3040-\u309f\u3005-\u3006\u30e0-\u9fcf]|[A-Za-z0-9!"#$%&'()*+,-./:;<=>?@[\]^_`{|}〜 ])+/,
67
66
  );
68
67
  }
69
68
  if (type === 'nw7') {
70
- // 有効文字はNW-7は数字(0-9)と記号(-.$:/+)
71
- // スタートコード/ストップコードとして、コードの始まりと終わりはアルファベット(A-D)のいずれかを使用してください。
69
+ // For NW-7: Valid characters are digits (0-9) and symbols (-, ., $, :, /, +).
70
+ // The first and last characters must be one of the alphabets A-D (start/stop codes).
72
71
  const regexp = /^[A-Da-d]([0-9\-\.\$\:\/\+])+[A-Da-d]$/;
73
-
74
72
  return regexp.test(input);
75
73
  }
76
74
  if (type === 'itf14') {
77
- // 有効文字は数値(0-9)のみ。 チェックデジットを含まない13桁orチェックデジットを含む14桁。
75
+ // For ITF-14: Valid characters are digits (0-9) only.
76
+ // Either 13 digits (without check digit) or 14 digits (with check digit).
78
77
  const regexp = /^\d{13}$|^\d{14}$/;
79
-
80
78
  return regexp.test(input) && validateCheckDigit(input, 14);
81
79
  }
82
80
  if (type === 'upca') {
83
- // 有効文字は数値(0-9)のみ。 チェックデジットを含まない11桁orチェックデジットを含む12桁。
81
+ // For UPCA: Valid characters are digits (0-9) only.
82
+ // Either 11 digits (without check digit) or 12 digits (with check digit).
84
83
  const regexp = /^\d{11}$|^\d{12}$/;
85
-
86
84
  return regexp.test(input) && validateCheckDigit(input, 12);
87
85
  }
88
86
  if (type === 'upce') {
89
- // 有効文字は数値(0-9)のみ。 1桁目に指定できる数字(ナンバーシステムキャラクタ)は0のみ。
90
- // チェックデジットを含まない7桁orチェックデジットを含む8桁。
87
+ // For UPCE: Valid characters are digits (0-9) only.
88
+ // The first digit (number system character) must be 0.
89
+ // Either 7 digits (without check digit) or 8 digits (with check digit).
91
90
  const regexp = /^0(\d{6}$|\d{7}$)/;
92
-
93
91
  return regexp.test(input) && validateCheckDigit(input, 8);
94
92
  }
95
93
  if (type === 'gs1datamatrix') {
96
94
  let ret = false;
97
- // find the GTIN application identifier, regex for "(01)" and the digits after it until another "("
95
+ // Find the GTIN application identifier: regex for "(01)" and the digits following it until another "(".
98
96
  const regexp = /\((01)\)(\d*)(\(|$)/;
99
97
  let res = input.match(regexp);
100
98
  if (
@@ -106,9 +104,13 @@ export const validateBarcodeInput = (type: BarcodeTypes, input: string) => {
106
104
  let gtin = res[2];
107
105
  ret = validateCheckDigit(gtin, gtin.length);
108
106
  }
109
-
110
107
  return ret;
111
108
  }
109
+ if (type === 'pdf417') {
110
+ // PDF417 can encode a wide range of characters,
111
+ // but considering performance and library limitations, the maximum number of characters is limited (up to 1000 characters here).
112
+ return input.length > 0 && input.length <= 1000;
113
+ }
112
114
 
113
115
  return false;
114
116
  };
@@ -166,12 +168,19 @@ export const createBarCode = async (arg: {
166
168
 
167
169
  if (typeof window !== 'undefined') {
168
170
  const canvas = document.createElement('canvas');
169
- // @ts-ignore
170
- bwipjs.toCanvas(canvas, bwipjsArg);
171
+ // Use a type assertion to safely call toCanvas
172
+ const bwipjsModule = bwipjs as unknown as {
173
+ toCanvas(canvas: HTMLCanvasElement, options: RenderOptions): void;
174
+ };
175
+ bwipjsModule.toCanvas(canvas, bwipjsArg);
171
176
  const dataUrl = canvas.toDataURL('image/png');
172
177
  res = Buffer.from(b64toUint8Array(dataUrl).buffer);
173
178
  } else {
174
- res = await bwipjs.toBuffer(bwipjsArg);
179
+ // Use a type assertion to safely call toBuffer
180
+ const bwipjsModule = bwipjs as unknown as {
181
+ toBuffer(options: RenderOptions): Promise<Buffer>;
182
+ };
183
+ res = await bwipjsModule.toBuffer(bwipjsArg);
175
184
  }
176
185
 
177
186
  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
  }
@@ -172,10 +172,23 @@ const barcodeDefaults: { defaultSchema: BarcodeSchema }[] = [
172
172
  opacity: DEFAULT_OPACITY,
173
173
  },
174
174
  },
175
+ {
176
+ defaultSchema: {
177
+ name: '',
178
+ type: 'pdf417',
179
+ content: 'This is PDF417!',
180
+ position,
181
+ ...defaultColors,
182
+ width: 40,
183
+ height: 16,
184
+ rotate: 0,
185
+ opacity: DEFAULT_OPACITY,
186
+ },
187
+ },
175
188
  ];
176
189
 
177
190
  export const getPropPanelByBarcodeType = (barcodeType: string): PropPanel<BarcodeSchema> => {
178
- const barcodeHasText = barcodeType !== 'qrcode' && barcodeType !== 'gs1datamatrix';
191
+ const barcodeHasText = barcodeType !== 'qrcode' && barcodeType !== 'gs1datamatrix' && barcodeType !== 'pdf417';
179
192
 
180
193
  const defaults = barcodeDefaults.find(({ defaultSchema }) => defaultSchema.type === barcodeType);
181
194
 
@@ -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,15 @@ 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', () => {
178
+ if (stopEditing) stopEditing();
179
+ });
178
180
  label.appendChild(input);
179
181
  }
180
182
  },
@@ -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,10 @@ 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
+ export type SVGSchema = Schema;
46
46
 
47
47
  const svgSchema: Plugin<SVGSchema> = {
48
- ui: (arg) => {
48
+ ui: (arg: UIRenderProps<SVGSchema>) => {
49
49
  const { rootElement, value, mode, onChange, theme, schema } = arg;
50
50
  const container = document.createElement(isEditable(mode, schema) ? 'textarea' : 'div');
51
51
  container.style.width = '100%';
@@ -73,7 +73,7 @@ const svgSchema: Plugin<SVGSchema> = {
73
73
 
74
74
  textarea.addEventListener('change', (e: Event) => {
75
75
  const newValue = (e.target as HTMLTextAreaElement).value;
76
- onChange && onChange({ key: 'content', value: newValue });
76
+ if (onChange) onChange({ key: 'content', value: newValue });
77
77
  });
78
78
  rootElement.appendChild(container);
79
79
  textarea.setSelectionRange(value.length, value.length);
@@ -93,7 +93,7 @@ const svgSchema: Plugin<SVGSchema> = {
93
93
  }
94
94
  }
95
95
  },
96
- pdf: async (arg) => {
96
+ pdf: async (arg: PDFRenderProps<SVGSchema>) => {
97
97
  const { page, schema, value } = arg;
98
98
  if (!value || !isValidSVG(value)) return;
99
99
  const pageHeight = page.getHeight();
@@ -12,7 +12,9 @@ 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'
16
+ ? (JSON.parse(variablesIn || '{}') as Record<string, string>)
17
+ : variablesIn;
16
18
 
17
19
  Object.keys(variables).forEach((variableName) => {
18
20
  // handle special characters in variable name
@@ -29,14 +31,14 @@ export const substituteVariables = (
29
31
  };
30
32
 
31
33
  export const validateVariables = (value: string, schema: MultiVariableTextSchema): boolean => {
32
- if (schema.variables.length == 0) {
34
+ if (schema.variables.length === 0) {
33
35
  return true;
34
36
  }
35
37
 
36
38
  let values;
37
39
  try {
38
- values = value ? JSON.parse(value) : {};
39
- } catch (e) {
40
+ values = value ? (JSON.parse(value) as Record<string, string>) : {};
41
+ } catch {
40
42
  throw new SyntaxError(
41
43
  `[@pdfme/generator] invalid JSON string '${value}' for variables in field ${schema.name}`,
42
44
  );