@pdfme/schemas 5.3.8-dev.3 → 5.3.8-dev.36

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 (272) hide show
  1. package/dist/cjs/__tests__/barcode.test.js +115 -113
  2. package/dist/cjs/__tests__/barcode.test.js.map +1 -1
  3. package/dist/cjs/__tests__/multiVariableText.test.js +15 -15
  4. package/dist/cjs/__tests__/multiVariableText.test.js.map +1 -1
  5. package/dist/cjs/__tests__/text.test.js +71 -71
  6. package/dist/cjs/__tests__/text.test.js.map +1 -1
  7. package/dist/cjs/__tests__/utils.test.js +76 -15
  8. package/dist/cjs/__tests__/utils.test.js.map +1 -1
  9. package/dist/cjs/src/checkbox/index.js +3 -3
  10. package/dist/cjs/src/checkbox/index.js.map +1 -1
  11. package/dist/cjs/src/date/date.js +2 -2
  12. package/dist/cjs/src/date/date.js.map +1 -1
  13. package/dist/cjs/src/date/dateTime.js +2 -2
  14. package/dist/cjs/src/date/dateTime.js.map +1 -1
  15. package/dist/cjs/src/date/helper.js +110 -78
  16. package/dist/cjs/src/date/helper.js.map +1 -1
  17. package/dist/cjs/src/date/time.js +2 -2
  18. package/dist/cjs/src/date/time.js.map +1 -1
  19. package/dist/cjs/src/graphics/svg.js +25 -2
  20. package/dist/cjs/src/graphics/svg.js.map +1 -1
  21. package/dist/cjs/src/index.js +30 -30
  22. package/dist/cjs/src/index.js.map +1 -1
  23. package/dist/cjs/src/multiVariableText/helper.js +2 -2
  24. package/dist/cjs/src/multiVariableText/helper.js.map +1 -1
  25. package/dist/cjs/src/multiVariableText/pdfRender.js +5 -5
  26. package/dist/cjs/src/multiVariableText/pdfRender.js.map +1 -1
  27. package/dist/cjs/src/multiVariableText/propPanel.js +5 -5
  28. package/dist/cjs/src/multiVariableText/propPanel.js.map +1 -1
  29. package/dist/cjs/src/multiVariableText/uiRender.js +10 -10
  30. package/dist/cjs/src/multiVariableText/uiRender.js.map +1 -1
  31. package/dist/cjs/src/radioGroup/index.js +3 -3
  32. package/dist/cjs/src/radioGroup/index.js.map +1 -1
  33. package/dist/cjs/src/select/index.js +9 -9
  34. package/dist/cjs/src/select/index.js.map +1 -1
  35. package/dist/cjs/src/tables/classes.js +4 -4
  36. package/dist/cjs/src/tables/classes.js.map +1 -1
  37. package/dist/cjs/src/tables/dynamicTemplate.js +2 -2
  38. package/dist/cjs/src/tables/dynamicTemplate.js.map +1 -1
  39. package/dist/cjs/src/tables/helper.js +21 -21
  40. package/dist/cjs/src/tables/helper.js.map +1 -1
  41. package/dist/cjs/src/tables/pdfRender.js +8 -8
  42. package/dist/cjs/src/tables/pdfRender.js.map +1 -1
  43. package/dist/cjs/src/tables/tableHelper.js +5 -5
  44. package/dist/cjs/src/tables/tableHelper.js.map +1 -1
  45. package/dist/cjs/src/text/extraFormatter.js +14 -14
  46. package/dist/cjs/src/text/extraFormatter.js.map +1 -1
  47. package/dist/cjs/src/text/propPanel.js +2 -2
  48. package/dist/cjs/src/text/propPanel.js.map +1 -1
  49. package/dist/cjs/src/utils.js +53 -9
  50. package/dist/cjs/src/utils.js.map +1 -1
  51. package/dist/esm/__tests__/barcode.test.js +8 -6
  52. package/dist/esm/__tests__/barcode.test.js.map +1 -1
  53. package/dist/esm/__tests__/multiVariableText.test.js +1 -1
  54. package/dist/esm/__tests__/multiVariableText.test.js.map +1 -1
  55. package/dist/esm/__tests__/text.test.js +2 -2
  56. package/dist/esm/__tests__/text.test.js.map +1 -1
  57. package/dist/esm/__tests__/utils.test.js +65 -4
  58. package/dist/esm/__tests__/utils.test.js.map +1 -1
  59. package/dist/esm/src/checkbox/index.js +1 -1
  60. package/dist/esm/src/checkbox/index.js.map +1 -1
  61. package/dist/esm/src/date/date.js +1 -1
  62. package/dist/esm/src/date/date.js.map +1 -1
  63. package/dist/esm/src/date/dateTime.js +1 -1
  64. package/dist/esm/src/date/dateTime.js.map +1 -1
  65. package/dist/esm/src/date/helper.js +70 -38
  66. package/dist/esm/src/date/helper.js.map +1 -1
  67. package/dist/esm/src/date/time.js +1 -1
  68. package/dist/esm/src/date/time.js.map +1 -1
  69. package/dist/esm/src/graphics/svg.js +25 -2
  70. package/dist/esm/src/graphics/svg.js.map +1 -1
  71. package/dist/esm/src/index.js +14 -14
  72. package/dist/esm/src/index.js.map +1 -1
  73. package/dist/esm/src/multiVariableText/helper.js +2 -2
  74. package/dist/esm/src/multiVariableText/helper.js.map +1 -1
  75. package/dist/esm/src/multiVariableText/pdfRender.js +2 -2
  76. package/dist/esm/src/multiVariableText/pdfRender.js.map +1 -1
  77. package/dist/esm/src/multiVariableText/propPanel.js +1 -1
  78. package/dist/esm/src/multiVariableText/propPanel.js.map +1 -1
  79. package/dist/esm/src/multiVariableText/uiRender.js +4 -4
  80. package/dist/esm/src/multiVariableText/uiRender.js.map +1 -1
  81. package/dist/esm/src/radioGroup/index.js +1 -1
  82. package/dist/esm/src/radioGroup/index.js.map +1 -1
  83. package/dist/esm/src/select/index.js +2 -2
  84. package/dist/esm/src/select/index.js.map +1 -1
  85. package/dist/esm/src/tables/classes.js +1 -1
  86. package/dist/esm/src/tables/classes.js.map +1 -1
  87. package/dist/esm/src/tables/dynamicTemplate.js +1 -1
  88. package/dist/esm/src/tables/dynamicTemplate.js.map +1 -1
  89. package/dist/esm/src/tables/helper.js +1 -1
  90. package/dist/esm/src/tables/helper.js.map +1 -1
  91. package/dist/esm/src/tables/pdfRender.js +4 -4
  92. package/dist/esm/src/tables/pdfRender.js.map +1 -1
  93. package/dist/esm/src/tables/tableHelper.js +1 -1
  94. package/dist/esm/src/tables/tableHelper.js.map +1 -1
  95. package/dist/esm/src/text/extraFormatter.js +2 -2
  96. package/dist/esm/src/text/extraFormatter.js.map +1 -1
  97. package/dist/esm/src/text/propPanel.js +1 -1
  98. package/dist/esm/src/text/propPanel.js.map +1 -1
  99. package/dist/esm/src/utils.js +53 -9
  100. package/dist/esm/src/utils.js.map +1 -1
  101. package/dist/node/__tests__/barcode.test.js +121 -124
  102. package/dist/node/__tests__/barcode.test.js.map +1 -1
  103. package/dist/node/__tests__/multiVariableText.test.js +15 -17
  104. package/dist/node/__tests__/multiVariableText.test.js.map +1 -1
  105. package/dist/node/__tests__/text.test.js +77 -102
  106. package/dist/node/__tests__/text.test.js.map +1 -1
  107. package/dist/node/__tests__/utils.test.js +90 -31
  108. package/dist/node/__tests__/utils.test.js.map +1 -1
  109. package/dist/node/src/barcodes/constants.js +4 -7
  110. package/dist/node/src/barcodes/constants.js.map +1 -1
  111. package/dist/node/src/barcodes/helper.js +16 -26
  112. package/dist/node/src/barcodes/helper.js.map +1 -1
  113. package/dist/node/src/barcodes/index.js +12 -14
  114. package/dist/node/src/barcodes/index.js.map +1 -1
  115. package/dist/node/src/barcodes/pdfRender.js +6 -10
  116. package/dist/node/src/barcodes/pdfRender.js.map +1 -1
  117. package/dist/node/src/barcodes/propPanel.js +20 -24
  118. package/dist/node/src/barcodes/propPanel.js.map +1 -1
  119. package/dist/node/src/barcodes/types.js +1 -2
  120. package/dist/node/src/barcodes/uiRender.js +8 -12
  121. package/dist/node/src/barcodes/uiRender.js.map +1 -1
  122. package/dist/node/src/checkbox/index.js +12 -17
  123. package/dist/node/src/checkbox/index.js.map +1 -1
  124. package/dist/node/src/constants.js +2 -5
  125. package/dist/node/src/constants.js.map +1 -1
  126. package/dist/node/src/date/date.js +5 -7
  127. package/dist/node/src/date/date.js.map +1 -1
  128. package/dist/node/src/date/dateTime.js +5 -7
  129. package/dist/node/src/date/dateTime.js.map +1 -1
  130. package/dist/node/src/date/helper.js +135 -133
  131. package/dist/node/src/date/helper.js.map +1 -1
  132. package/dist/node/src/date/time.js +5 -7
  133. package/dist/node/src/date/time.js.map +1 -1
  134. package/dist/node/src/date/types.js +1 -2
  135. package/dist/node/src/graphics/cacheKey.js +1 -5
  136. package/dist/node/src/graphics/cacheKey.js.map +1 -1
  137. package/dist/node/src/graphics/image.js +15 -17
  138. package/dist/node/src/graphics/image.js.map +1 -1
  139. package/dist/node/src/graphics/imagehelper.js +3 -7
  140. package/dist/node/src/graphics/imagehelper.js.map +1 -1
  141. package/dist/node/src/graphics/svg.js +35 -14
  142. package/dist/node/src/graphics/svg.js.map +1 -1
  143. package/dist/node/src/index.js +18 -37
  144. package/dist/node/src/index.js.map +1 -1
  145. package/dist/node/src/multiVariableText/helper.js +4 -9
  146. package/dist/node/src/multiVariableText/helper.js.map +1 -1
  147. package/dist/node/src/multiVariableText/index.js +10 -12
  148. package/dist/node/src/multiVariableText/index.js.map +1 -1
  149. package/dist/node/src/multiVariableText/pdfRender.js +6 -10
  150. package/dist/node/src/multiVariableText/pdfRender.js.map +1 -1
  151. package/dist/node/src/multiVariableText/propPanel.js +6 -9
  152. package/dist/node/src/multiVariableText/propPanel.js.map +1 -1
  153. package/dist/node/src/multiVariableText/types.js +1 -2
  154. package/dist/node/src/multiVariableText/uiRender.js +13 -17
  155. package/dist/node/src/multiVariableText/uiRender.js.map +1 -1
  156. package/dist/node/src/radioGroup/index.js +11 -16
  157. package/dist/node/src/radioGroup/index.js.map +1 -1
  158. package/dist/node/src/select/index.js +13 -18
  159. package/dist/node/src/select/index.js.map +1 -1
  160. package/dist/node/src/shapes/line.js +10 -12
  161. package/dist/node/src/shapes/line.js.map +1 -1
  162. package/dist/node/src/shapes/rectAndEllipse.js +18 -21
  163. package/dist/node/src/shapes/rectAndEllipse.js.map +1 -1
  164. package/dist/node/src/tables/cell.js +15 -20
  165. package/dist/node/src/tables/cell.js.map +1 -1
  166. package/dist/node/src/tables/classes.js +11 -18
  167. package/dist/node/src/tables/classes.js.map +1 -1
  168. package/dist/node/src/tables/dynamicTemplate.js +5 -9
  169. package/dist/node/src/tables/dynamicTemplate.js.map +1 -1
  170. package/dist/node/src/tables/helper.js +27 -35
  171. package/dist/node/src/tables/helper.js.map +1 -1
  172. package/dist/node/src/tables/index.js +10 -12
  173. package/dist/node/src/tables/index.js.map +1 -1
  174. package/dist/node/src/tables/pdfRender.js +9 -16
  175. package/dist/node/src/tables/pdfRender.js.map +1 -1
  176. package/dist/node/src/tables/propPanel.js +12 -15
  177. package/dist/node/src/tables/propPanel.js.map +1 -1
  178. package/dist/node/src/tables/tableHelper.js +11 -15
  179. package/dist/node/src/tables/tableHelper.js.map +1 -1
  180. package/dist/node/src/tables/types.js +1 -2
  181. package/dist/node/src/tables/uiRender.js +15 -22
  182. package/dist/node/src/tables/uiRender.js.map +1 -1
  183. package/dist/node/src/text/constants.js +22 -25
  184. package/dist/node/src/text/constants.js.map +1 -1
  185. package/dist/node/src/text/extraFormatter.js +17 -21
  186. package/dist/node/src/text/extraFormatter.js.map +1 -1
  187. package/dist/node/src/text/helper.js +48 -85
  188. package/dist/node/src/text/helper.js.map +1 -1
  189. package/dist/node/src/text/icons/index.js +11 -14
  190. package/dist/node/src/text/icons/index.js.map +1 -1
  191. package/dist/node/src/text/index.js +10 -12
  192. package/dist/node/src/text/index.js.map +1 -1
  193. package/dist/node/src/text/pdfRender.js +32 -36
  194. package/dist/node/src/text/pdfRender.js.map +1 -1
  195. package/dist/node/src/text/propPanel.js +22 -25
  196. package/dist/node/src/text/propPanel.js.map +1 -1
  197. package/dist/node/src/text/types.js +1 -2
  198. package/dist/node/src/text/uiRender.js +34 -42
  199. package/dist/node/src/text/uiRender.js.map +1 -1
  200. package/dist/node/src/utils.js +79 -47
  201. package/dist/node/src/utils.js.map +1 -1
  202. package/dist/types/src/barcodes/helper.d.ts +1 -1
  203. package/dist/types/src/barcodes/index.d.ts +1 -1
  204. package/dist/types/src/barcodes/pdfRender.d.ts +1 -1
  205. package/dist/types/src/barcodes/propPanel.d.ts +1 -1
  206. package/dist/types/src/barcodes/uiRender.d.ts +1 -1
  207. package/dist/types/src/date/date.d.ts +1 -1
  208. package/dist/types/src/date/dateTime.d.ts +1 -1
  209. package/dist/types/src/date/helper.d.ts +1 -1
  210. package/dist/types/src/date/time.d.ts +1 -1
  211. package/dist/types/src/date/types.d.ts +6 -1
  212. package/dist/types/src/index.d.ts +15 -15
  213. package/dist/types/src/multiVariableText/helper.d.ts +1 -1
  214. package/dist/types/src/multiVariableText/index.d.ts +1 -1
  215. package/dist/types/src/multiVariableText/pdfRender.d.ts +1 -1
  216. package/dist/types/src/multiVariableText/propPanel.d.ts +1 -1
  217. package/dist/types/src/multiVariableText/types.d.ts +1 -1
  218. package/dist/types/src/multiVariableText/uiRender.d.ts +1 -1
  219. package/dist/types/src/select/index.d.ts +1 -1
  220. package/dist/types/src/tables/cell.d.ts +1 -1
  221. package/dist/types/src/tables/classes.d.ts +1 -1
  222. package/dist/types/src/tables/helper.d.ts +4 -4
  223. package/dist/types/src/tables/pdfRender.d.ts +1 -1
  224. package/dist/types/src/tables/propPanel.d.ts +1 -1
  225. package/dist/types/src/tables/tableHelper.d.ts +1 -1
  226. package/dist/types/src/tables/types.d.ts +1 -1
  227. package/dist/types/src/text/constants.d.ts +1 -1
  228. package/dist/types/src/text/helper.d.ts +1 -1
  229. package/dist/types/src/text/index.d.ts +1 -1
  230. package/dist/types/src/text/pdfRender.d.ts +1 -1
  231. package/dist/types/src/text/propPanel.d.ts +1 -1
  232. package/dist/types/src/text/uiRender.d.ts +1 -1
  233. package/package.json +3 -3
  234. package/src/barcodes/helper.ts +1 -1
  235. package/src/barcodes/index.ts +1 -1
  236. package/src/barcodes/pdfRender.ts +1 -1
  237. package/src/barcodes/propPanel.ts +1 -1
  238. package/src/barcodes/uiRender.ts +1 -1
  239. package/src/checkbox/index.ts +1 -1
  240. package/src/date/date.ts +1 -1
  241. package/src/date/dateTime.ts +1 -1
  242. package/src/date/helper.ts +84 -43
  243. package/src/date/time.ts +1 -1
  244. package/src/date/types.ts +7 -1
  245. package/src/graphics/svg.ts +27 -2
  246. package/src/index.ts +14 -14
  247. package/src/multiVariableText/helper.ts +15 -7
  248. package/src/multiVariableText/index.ts +1 -1
  249. package/src/multiVariableText/pdfRender.ts +3 -3
  250. package/src/multiVariableText/propPanel.ts +2 -2
  251. package/src/multiVariableText/types.ts +1 -1
  252. package/src/multiVariableText/uiRender.ts +5 -5
  253. package/src/radioGroup/index.ts +1 -1
  254. package/src/select/index.ts +3 -3
  255. package/src/tables/cell.ts +1 -1
  256. package/src/tables/classes.ts +2 -2
  257. package/src/tables/dynamicTemplate.ts +2 -2
  258. package/src/tables/helper.ts +1 -1
  259. package/src/tables/pdfRender.ts +6 -6
  260. package/src/tables/propPanel.ts +1 -1
  261. package/src/tables/tableHelper.ts +2 -2
  262. package/src/tables/types.ts +1 -1
  263. package/src/tables/uiRender.ts +1 -1
  264. package/src/text/constants.ts +1 -1
  265. package/src/text/extraFormatter.ts +2 -2
  266. package/src/text/helper.ts +1 -1
  267. package/src/text/index.ts +1 -1
  268. package/src/text/pdfRender.ts +1 -1
  269. package/src/text/propPanel.ts +2 -2
  270. package/src/text/uiRender.ts +1 -1
  271. package/src/utils.ts +64 -15
  272. package/tsconfig.esm.json +2 -1
@@ -1,5 +1,4 @@
1
1
  import { Plugin, Schema } from '@pdfme/common';
2
- import { XMLValidator } from 'fast-xml-parser';
3
2
  import {
4
3
  convertForPdfLayoutProps,
5
4
  isEditable,
@@ -9,7 +8,33 @@ import {
9
8
  } from '../utils.js';
10
9
  import { Route } from 'lucide';
11
10
 
12
- const isValidSVG = (svgString: string) => XMLValidator.validate(svgString) === true;
11
+ const isValidSVG = (svgString: string): boolean => {
12
+ try {
13
+ // Basic validation checks that work in both Node.js and browser
14
+ if (!svgString || typeof svgString !== 'string') {
15
+ return false;
16
+ }
17
+
18
+ // Check for basic SVG structure
19
+ if (!svgString.includes('<svg') || !svgString.includes('</svg>')) {
20
+ return false;
21
+ }
22
+
23
+ // Additional browser-specific validation if DOMParser is available
24
+ if (typeof DOMParser !== 'undefined') {
25
+ const parser = new DOMParser();
26
+ const doc = parser.parseFromString(svgString, 'image/svg+xml');
27
+ const parserError = doc.querySelector('parsererror');
28
+ if (parserError !== null) {
29
+ return false;
30
+ }
31
+ }
32
+
33
+ return true;
34
+ } catch (error) {
35
+ return false;
36
+ }
37
+ };
13
38
 
14
39
  const defaultValue = `<svg viewBox="0 0 488 600" version="1.1" xmlns="http://www.w3.org/2000/svg">
15
40
  <g transform="matrix(1,0,0,1,-56,0)" fill="#000000" stroke="none">
package/src/index.ts CHANGED
@@ -1,17 +1,17 @@
1
- import multiVariableText from './multiVariableText/index';
2
- import text from './text/index';
3
- import image from './graphics/image';
4
- import svg from './graphics/svg';
5
- import barcodes from './barcodes/index';
6
- import line from './shapes/line';
7
- import table from './tables/index';
8
- import { rectangle, ellipse } from './shapes/rectAndEllipse';
9
- import dateTime from './date/dateTime';
10
- import date from './date/date';
11
- import time from './date/time';
12
- import select from './select/index';
13
- import radioGroup from './radioGroup/index';
14
- import checkbox from './checkbox/index';
1
+ import multiVariableText from './multiVariableText/index.js';
2
+ import text from './text/index.js';
3
+ import image from './graphics/image.js';
4
+ import svg from './graphics/svg.js';
5
+ import barcodes from './barcodes/index.js';
6
+ import line from './shapes/line.js';
7
+ import table from './tables/index.js';
8
+ import { rectangle, ellipse } from './shapes/rectAndEllipse.js';
9
+ import dateTime from './date/dateTime.js';
10
+ import date from './date/date.js';
11
+ import time from './date/time.js';
12
+ import select from './select/index.js';
13
+ import radioGroup from './radioGroup/index.js';
14
+ import checkbox from './checkbox/index.js';
15
15
 
16
16
  const builtInPlugins = { Text: text };
17
17
 
@@ -1,14 +1,18 @@
1
- import { MultiVariableTextSchema } from "./types";
1
+ import { MultiVariableTextSchema } from './types.js';
2
2
 
3
- export const substituteVariables = (text: string, variablesIn: string | Record<string, string>): string => {
3
+ export const substituteVariables = (
4
+ text: string,
5
+ variablesIn: string | Record<string, string>
6
+ ): string => {
4
7
  if (!text) {
5
- return "";
8
+ return '';
6
9
  }
7
10
 
8
11
  let substitutedText = text;
9
12
 
10
13
  if (variablesIn) {
11
- const variables: Record<string, string> = (typeof variablesIn === "string") ? JSON.parse(variablesIn) || {} : variablesIn;
14
+ const variables: Record<string, string> =
15
+ typeof variablesIn === 'string' ? JSON.parse(variablesIn) || {} : variablesIn;
12
16
 
13
17
  Object.keys(variables).forEach((variableName) => {
14
18
  // handle special characters in variable name
@@ -33,13 +37,17 @@ export const validateVariables = (value: string, schema: MultiVariableTextSchema
33
37
  try {
34
38
  values = value ? JSON.parse(value) : {};
35
39
  } catch (e) {
36
- throw new SyntaxError(`[@pdfme/generator] invalid JSON string '${value}' for variables in field ${schema.name}`);
40
+ throw new SyntaxError(
41
+ `[@pdfme/generator] invalid JSON string '${value}' for variables in field ${schema.name}`
42
+ );
37
43
  }
38
44
 
39
45
  for (const variable of schema.variables) {
40
46
  if (!values[variable]) {
41
47
  if (schema.required) {
42
- throw new Error(`[@pdfme/generator] variable ${variable} is missing for field ${schema.name}`);
48
+ throw new Error(
49
+ `[@pdfme/generator] variable ${variable} is missing for field ${schema.name}`
50
+ );
43
51
  }
44
52
  // If not required, then simply don't render this field if an input is missing
45
53
  return false;
@@ -47,4 +55,4 @@ export const validateVariables = (value: string, schema: MultiVariableTextSchema
47
55
  }
48
56
 
49
57
  return true;
50
- }
58
+ };
@@ -2,7 +2,7 @@ import type { Plugin } from '@pdfme/common';
2
2
  import { pdfRender } from './pdfRender.js';
3
3
  import { propPanel } from './propPanel.js';
4
4
  import { uiRender } from './uiRender.js';
5
- import type { MultiVariableTextSchema } from './types';
5
+ import type { MultiVariableTextSchema } from './types.js';
6
6
  import { Type } from 'lucide';
7
7
  import { createSvgStr } from '../utils.js';
8
8
 
@@ -1,7 +1,7 @@
1
1
  import { PDFRenderProps } from '@pdfme/common';
2
- import { MultiVariableTextSchema } from './types';
3
- import { pdfRender as parentPdfRender } from '../text/pdfRender';
4
- import { substituteVariables, validateVariables } from './helper';
2
+ import { MultiVariableTextSchema } from './types.js';
3
+ import { pdfRender as parentPdfRender } from '../text/pdfRender.js';
4
+ import { substituteVariables, validateVariables } from './helper.js';
5
5
 
6
6
  export const pdfRender = async (arg: PDFRenderProps<MultiVariableTextSchema>) => {
7
7
  const { value, schema, ...rest } = arg;
@@ -1,6 +1,6 @@
1
- import { propPanel as parentPropPanel } from '../text/propPanel';
1
+ import { propPanel as parentPropPanel } from '../text/propPanel.js';
2
2
  import { PropPanel, PropPanelWidgetProps } from '@pdfme/common';
3
- import { MultiVariableTextSchema } from './types';
3
+ import { MultiVariableTextSchema } from './types.js';
4
4
 
5
5
  const mapDynamicVariables = (props: PropPanelWidgetProps) => {
6
6
  const { rootElement, changeSchemas, activeSchema, i18n, options } = props;
@@ -1,4 +1,4 @@
1
- import type { TextSchema } from '../text/types';
1
+ import type { TextSchema } from '../text/types.js';
2
2
 
3
3
  export interface MultiVariableTextSchema extends TextSchema {
4
4
  text: string;
@@ -1,13 +1,13 @@
1
1
  import { getDefaultFont, UIRenderProps } from '@pdfme/common';
2
- import { MultiVariableTextSchema } from './types';
2
+ import { MultiVariableTextSchema } from './types.js';
3
3
  import {
4
4
  uiRender as parentUiRender,
5
5
  buildStyledTextContainer,
6
6
  makeElementPlainTextContentEditable
7
- } from '../text/uiRender';
8
- import { isEditable } from '../utils';
9
- import { getFontKitFont } from '../text/helper';
10
- import { substituteVariables } from './helper';
7
+ } from '../text/uiRender.js';
8
+ import { isEditable } from '../utils.js';
9
+ import { getFontKitFont } from '../text/helper.js';
10
+ import { substituteVariables } from './helper.js';
11
11
 
12
12
  export const uiRender = async (arg: UIRenderProps<MultiVariableTextSchema>) => {
13
13
  const { value, schema, rootElement, mode, onChange, ...rest } = arg;
@@ -1,7 +1,7 @@
1
1
  import { Plugin } from '@pdfme/common';
2
2
  import { Schema } from '@pdfme/common';
3
3
  import { Circle, CircleDot } from 'lucide';
4
- import svg from '../graphics/svg';
4
+ import svg from '../graphics/svg.js';
5
5
  import { isEditable, createSvgStr } from '../utils.js';
6
6
  import { HEX_COLOR_PATTERN } from '../constants.js';
7
7
 
@@ -1,8 +1,8 @@
1
1
  import type * as CSS from 'csstype';
2
- import { propPanel as parentPropPanel } from '../text/propPanel';
2
+ import { propPanel as parentPropPanel } from '../text/propPanel.js';
3
3
  import { Plugin, PropPanelWidgetProps, SchemaForUI } from '@pdfme/common';
4
- import text from '../text';
5
- import { TextSchema } from '../text/types';
4
+ import text from '../text/index.js';
5
+ import { TextSchema } from '../text/types.js';
6
6
  import { ChevronDown } from 'lucide';
7
7
  import { createSvgStr } from '../utils.js';
8
8
 
@@ -9,7 +9,7 @@ import { uiRender as textUiRender } from '../text/uiRender.js';
9
9
  import { pdfRender as textPdfRender } from '../text/pdfRender.js';
10
10
  import line from '../shapes/line.js';
11
11
  import { rectangle } from '../shapes/rectAndEllipse.js';
12
- import type { CellSchema } from './types';
12
+ import type { CellSchema } from './types.js';
13
13
  import { getCellPropPanelSchema, getDefaultCellStyles } from './helper.js';
14
14
  const linePdfRender = line.pdf;
15
15
  const rectanglePdfRender = rectangle.pdf;
@@ -1,7 +1,7 @@
1
1
  import { Font, mm2pt, pt2mm } from '@pdfme/common';
2
2
  import type { Font as FontKitFont } from 'fontkit';
3
- import { splitTextToSize, getFontKitFont, widthOfTextAtSize } from '../text/helper';
4
- import type { Styles, TableInput, Settings, Section, StylesProps } from './types';
3
+ import { splitTextToSize, getFontKitFont, widthOfTextAtSize } from '../text/helper.js';
4
+ import type { Styles, TableInput, Settings, Section, StylesProps } from './types.js';
5
5
 
6
6
  type ContentSettings = { body: Row[]; head: Row[]; columns: Column[] };
7
7
 
@@ -1,7 +1,7 @@
1
1
  import { Schema, BasePdf, CommonOptions } from '@pdfme/common';
2
- import { createSingleTable } from './tableHelper';
2
+ import { createSingleTable } from './tableHelper.js';
3
3
  import { getBodyWithRange, getBody } from './helper.js';
4
- import { TableSchema } from './types';
4
+ import { TableSchema } from './types.js';
5
5
 
6
6
  export const getDynamicHeightsForTable = async (
7
7
  value: string,
@@ -10,7 +10,7 @@ import {
10
10
  VERTICAL_ALIGN_TOP,
11
11
  VERTICAL_ALIGN_MIDDLE,
12
12
  VERTICAL_ALIGN_BOTTOM,
13
- } from '../text/constants';
13
+ } from '../text/constants.js';
14
14
  import { HEX_COLOR_PATTERN } from '../constants.js';
15
15
 
16
16
  export const getDefaultCellStyles = () => ({
@@ -1,10 +1,10 @@
1
- import type { TableSchema } from './types';
1
+ import type { TableSchema } from './types.js';
2
2
  import type { PDFRenderProps } from '@pdfme/common';
3
- import { Cell, Table, Row, Column } from './classes';
4
- import { rectangle } from '../shapes/rectAndEllipse';
5
- import cell from './cell';
6
- import { getBodyWithRange } from './helper';
7
- import { createSingleTable } from './tableHelper';
3
+ import { Cell, Table, Row, Column } from './classes.js';
4
+ import { rectangle } from '../shapes/rectAndEllipse.js';
5
+ import cell from './cell.js';
6
+ import { getBodyWithRange } from './helper.js';
7
+ import { createSingleTable } from './tableHelper.js';
8
8
 
9
9
  type Pos = { x: number; y: number };
10
10
 
@@ -1,5 +1,5 @@
1
1
  import type { PropPanel } from '@pdfme/common';
2
- import type { TableSchema } from './types';
2
+ import type { TableSchema } from './types.js';
3
3
  import { getFallbackFontName, DEFAULT_FONT_NAME } from '@pdfme/common';
4
4
  import {
5
5
  getDefaultCellStyles,
@@ -15,8 +15,8 @@ import type {
15
15
  TableInput,
16
16
  StylesProps,
17
17
  Section,
18
- } from './types';
19
- import { Cell, Column, Row, Table } from './classes';
18
+ } from './types.js';
19
+ import { Cell, Column, Row, Table } from './classes.js';
20
20
 
21
21
  type StyleProp = 'styles' | 'headStyles' | 'bodyStyles' | 'alternateRowStyles' | 'columnStyles';
22
22
 
@@ -1,4 +1,4 @@
1
- import type { ALIGNMENT, VERTICAL_ALIGNMENT } from '../text/types';
1
+ import type { ALIGNMENT, VERTICAL_ALIGNMENT } from '../text/types.js';
2
2
  import type { Schema } from '@pdfme/common';
3
3
 
4
4
  export type Spacing = { top: number; right: number; bottom: number; left: number };
@@ -4,7 +4,7 @@ import { px2mm } from '@pdfme/common';
4
4
  import { createSingleTable } from './tableHelper.js';
5
5
  import { getBody, getBodyWithRange } from './helper.js';
6
6
  import cell from './cell.js';
7
- import { Row } from './classes';
7
+ import { Row } from './classes.js';
8
8
 
9
9
  const buttonSize = 30;
10
10
 
@@ -1,4 +1,4 @@
1
- import { ALIGNMENT, VERTICAL_ALIGNMENT, DYNAMIC_FONT_SIZE_FIT } from './types';
1
+ import { ALIGNMENT, VERTICAL_ALIGNMENT, DYNAMIC_FONT_SIZE_FIT } from './types.js';
2
2
 
3
3
  export const DEFAULT_FONT_SIZE = 13;
4
4
 
@@ -9,7 +9,7 @@ import {
9
9
  TextVerticalAlignBottomIcon,
10
10
  TextVerticalAlignMiddleIcon,
11
11
  TextVerticalAlignTopIcon,
12
- } from './icons';
12
+ } from './icons/index.js';
13
13
  import {
14
14
  ALIGN_CENTER,
15
15
  ALIGN_RIGHT,
@@ -18,7 +18,7 @@ import {
18
18
  VERTICAL_ALIGN_BOTTOM,
19
19
  VERTICAL_ALIGN_MIDDLE,
20
20
  ALIGN_JUSTIFY,
21
- } from './constants';
21
+ } from './constants.js';
22
22
 
23
23
  export enum Formatter {
24
24
  STRIKETHROUGH = 'strikethrough',
@@ -11,7 +11,7 @@ import {
11
11
  DEFAULT_FONT_NAME,
12
12
  } from '@pdfme/common';
13
13
  import { Buffer } from 'buffer';
14
- import type { TextSchema, FontWidthCalcValues } from './types';
14
+ import type { TextSchema, FontWidthCalcValues } from './types.js';
15
15
  import {
16
16
  DEFAULT_FONT_SIZE,
17
17
  DEFAULT_CHARACTER_SPACING,
package/src/text/index.ts CHANGED
@@ -2,7 +2,7 @@ import type { Plugin } from '@pdfme/common';
2
2
  import { pdfRender } from './pdfRender.js';
3
3
  import { propPanel } from './propPanel.js';
4
4
  import { uiRender } from './uiRender.js';
5
- import type { TextSchema } from './types';
5
+ import type { TextSchema } from './types.js';
6
6
  import { TextCursorInput } from 'lucide';
7
7
  import { createSvgStr } from '../utils.js';
8
8
 
@@ -1,6 +1,6 @@
1
1
  import { PDFFont, PDFDocument } from '@pdfme/pdf-lib';
2
2
  import type { Font as FontKitFont } from 'fontkit';
3
- import type { TextSchema } from './types';
3
+ import type { TextSchema } from './types.js';
4
4
  import {
5
5
  PDFRenderProps,
6
6
  ColorType,
@@ -5,7 +5,7 @@ import {
5
5
  PropPanelSchema,
6
6
  getFallbackFontName,
7
7
  } from '@pdfme/common';
8
- import type { TextSchema } from './types';
8
+ import type { TextSchema } from './types.js';
9
9
  import {
10
10
  DEFAULT_FONT_SIZE,
11
11
  DEFAULT_ALIGNMENT,
@@ -20,7 +20,7 @@ import {
20
20
  DEFAULT_DYNAMIC_MAX_FONT_SIZE,
21
21
  } from './constants.js';
22
22
  import { DEFAULT_OPACITY, HEX_COLOR_PATTERN } from '../constants.js';
23
- import { getExtraFormatterSchema } from './extraFormatter';
23
+ import { getExtraFormatterSchema } from './extraFormatter.js';
24
24
 
25
25
  const UseDynamicFontSize = (props: PropPanelWidgetProps) => {
26
26
  const { rootElement, changeSchemas, activeSchema, i18n } = props;
@@ -1,7 +1,7 @@
1
1
  import type * as CSS from 'csstype';
2
2
  import type { Font as FontKitFont } from 'fontkit';
3
3
  import { UIRenderProps, getDefaultFont } from '@pdfme/common';
4
- import type { TextSchema } from './types';
4
+ import type { TextSchema } from './types.js';
5
5
  import {
6
6
  DEFAULT_FONT_SIZE,
7
7
  DEFAULT_ALIGNMENT,
package/src/utils.ts CHANGED
@@ -212,21 +212,70 @@ export const createErrorElm = () => {
212
212
  };
213
213
 
214
214
  export const createSvgStr = (icon: IconNode, attrs?: Record<string, string>): string => {
215
- const createElementString = (node: IconNode): string => {
216
- const [tag, attributes, children = []] = node;
217
-
218
- const mergedAttributes = tag === 'svg' ? { ...attributes, ...attrs } : attributes;
219
-
220
- const attrString = Object.entries(mergedAttributes)
215
+ // In lucide 0.475.0, the icon is an array of elements, not a single SVG element
216
+ // We need to create an SVG wrapper and add the elements as children
217
+
218
+ // Handle non-array input
219
+ if (!Array.isArray(icon)) {
220
+ return String(icon);
221
+ }
222
+
223
+ // Create default SVG attributes
224
+ const svgAttrs = {
225
+ xmlns: "http://www.w3.org/2000/svg",
226
+ width: "24",
227
+ height: "24",
228
+ viewBox: "0 0 24 24",
229
+ fill: "none",
230
+ stroke: "currentColor",
231
+ "stroke-width": "2",
232
+ "stroke-linecap": "round",
233
+ "stroke-linejoin": "round",
234
+ ...(attrs || {})
235
+ };
236
+
237
+ // Format SVG attributes string
238
+ const svgAttrString = Object.entries(svgAttrs)
239
+ .map(([key, value]) => `${key}="${value}"`)
240
+ .join(' ');
241
+
242
+ // Helper function to process a single element
243
+ const processElement = (element: any): string => {
244
+ if (!Array.isArray(element)) {
245
+ return String(element);
246
+ }
247
+
248
+ const [tag, attributes = {}, children = []] = element;
249
+ const tagName = String(tag);
250
+
251
+ // Format attributes string
252
+ const attrString = Object.entries(attributes)
221
253
  .map(([key, value]) => `${key}="${value}"`)
222
254
  .join(' ');
223
-
224
- const childrenString = children
225
- .map((child) => createElementString(child))
226
- .join('');
227
-
228
- return `<${tag} ${attrString}>${childrenString}</${tag}>`;
255
+
256
+ // Process children recursively
257
+ let childrenString = '';
258
+
259
+ if (Array.isArray(children) && children.length > 0) {
260
+ childrenString = children
261
+ .map(child => processElement(child))
262
+ .join('');
263
+ }
264
+
265
+ // Return properly formatted element string
266
+ if (childrenString) {
267
+ return `<${tagName}${attrString ? ' ' + attrString : ''}>${childrenString}</${tagName}>`;
268
+ } else {
269
+ // Self-closing tag for empty children
270
+ return `<${tagName}${attrString ? ' ' + attrString : ''}/>`;
271
+ }
229
272
  };
230
-
231
- return createElementString(icon);
232
- };
273
+
274
+ // Process all elements and join them
275
+ const elementsString = Array.isArray(icon)
276
+ ? icon.map(element => processElement(element)).join('')
277
+ : processElement(icon);
278
+
279
+ // Return the complete SVG string
280
+ return `<svg ${svgAttrString}>${elementsString}</svg>`;
281
+ };
package/tsconfig.esm.json CHANGED
@@ -2,9 +2,10 @@
2
2
  "extends": "../../tsconfig.base",
3
3
  "compilerOptions": {
4
4
  "module": "ESNext",
5
+ "moduleResolution": "nodenext",
5
6
  "outDir": "./dist/esm",
6
7
  "declaration": true,
7
8
  "declarationDir": "dist/types",
8
9
  "skipLibCheck": true
9
10
  }
10
- }
11
+ }