@pdfme/schemas 5.5.10-dev.11 → 5.5.10-dev.127

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 (399) hide show
  1. package/package.json +44 -60
  2. package/src/barcodes/helper.ts +2 -2
  3. package/src/barcodes/types.ts +2 -2
  4. package/src/builtins.ts +8 -0
  5. package/src/date/helper.ts +118 -70
  6. package/src/graphics/image.ts +3 -3
  7. package/src/graphics/signature.ts +136 -0
  8. package/src/index.ts +4 -4
  9. package/src/multiVariableText/propPanel.ts +17 -8
  10. package/src/multiVariableText/types.ts +2 -2
  11. package/src/multiVariableText/uiRender.ts +18 -31
  12. package/src/multiVariableText/variables.ts +63 -0
  13. package/src/shapes/rectAndEllipse.ts +2 -2
  14. package/src/tables/tableHelper.ts +3 -2
  15. package/src/tables/types.ts +2 -2
  16. package/src/tables/uiRender.ts +1 -1
  17. package/src/tables.ts +1 -0
  18. package/src/text/helper.ts +22 -5
  19. package/src/text/pdfRender.ts +2 -5
  20. package/src/text/types.ts +2 -2
  21. package/src/utils.ts +87 -14
  22. package/tsconfig.build.json +14 -0
  23. package/tsconfig.json +14 -4
  24. package/vite.config.mts +51 -0
  25. package/dist/cjs/__tests__/barcode.test.js +0 -354
  26. package/dist/cjs/__tests__/barcode.test.js.map +0 -1
  27. package/dist/cjs/__tests__/multiVariableText.test.js +0 -102
  28. package/dist/cjs/__tests__/multiVariableText.test.js.map +0 -1
  29. package/dist/cjs/__tests__/text.test.js +0 -419
  30. package/dist/cjs/__tests__/text.test.js.map +0 -1
  31. package/dist/cjs/__tests__/utils.test.js +0 -193
  32. package/dist/cjs/__tests__/utils.test.js.map +0 -1
  33. package/dist/cjs/src/barcodes/constants.js +0 -21
  34. package/dist/cjs/src/barcodes/constants.js.map +0 -1
  35. package/dist/cjs/src/barcodes/helper.js +0 -161
  36. package/dist/cjs/src/barcodes/helper.js.map +0 -1
  37. package/dist/cjs/src/barcodes/index.js +0 -18
  38. package/dist/cjs/src/barcodes/index.js.map +0 -1
  39. package/dist/cjs/src/barcodes/pdfRender.js +0 -29
  40. package/dist/cjs/src/barcodes/pdfRender.js.map +0 -1
  41. package/dist/cjs/src/barcodes/propPanel.js +0 -241
  42. package/dist/cjs/src/barcodes/propPanel.js.map +0 -1
  43. package/dist/cjs/src/barcodes/types.js +0 -3
  44. package/dist/cjs/src/barcodes/types.js.map +0 -1
  45. package/dist/cjs/src/barcodes/uiRender.js +0 -91
  46. package/dist/cjs/src/barcodes/uiRender.js.map +0 -1
  47. package/dist/cjs/src/checkbox/index.js +0 -62
  48. package/dist/cjs/src/checkbox/index.js.map +0 -1
  49. package/dist/cjs/src/constants.js +0 -6
  50. package/dist/cjs/src/constants.js.map +0 -1
  51. package/dist/cjs/src/date/date.js +0 -9
  52. package/dist/cjs/src/date/date.js.map +0 -1
  53. package/dist/cjs/src/date/dateTime.js +0 -9
  54. package/dist/cjs/src/date/dateTime.js.map +0 -1
  55. package/dist/cjs/src/date/helper.js +0 -462
  56. package/dist/cjs/src/date/helper.js.map +0 -1
  57. package/dist/cjs/src/date/time.js +0 -9
  58. package/dist/cjs/src/date/time.js.map +0 -1
  59. package/dist/cjs/src/date/types.js +0 -3
  60. package/dist/cjs/src/date/types.js.map +0 -1
  61. package/dist/cjs/src/graphics/image.js +0 -172
  62. package/dist/cjs/src/graphics/image.js.map +0 -1
  63. package/dist/cjs/src/graphics/imagehelper.js +0 -124
  64. package/dist/cjs/src/graphics/imagehelper.js.map +0 -1
  65. package/dist/cjs/src/graphics/svg.js +0 -112
  66. package/dist/cjs/src/graphics/svg.js.map +0 -1
  67. package/dist/cjs/src/index.js +0 -41
  68. package/dist/cjs/src/index.js.map +0 -1
  69. package/dist/cjs/src/multiVariableText/helper.js +0 -55
  70. package/dist/cjs/src/multiVariableText/helper.js.map +0 -1
  71. package/dist/cjs/src/multiVariableText/index.js +0 -16
  72. package/dist/cjs/src/multiVariableText/index.js.map +0 -1
  73. package/dist/cjs/src/multiVariableText/pdfRender.js +0 -20
  74. package/dist/cjs/src/multiVariableText/pdfRender.js.map +0 -1
  75. package/dist/cjs/src/multiVariableText/propPanel.js +0 -148
  76. package/dist/cjs/src/multiVariableText/propPanel.js.map +0 -1
  77. package/dist/cjs/src/multiVariableText/types.js +0 -3
  78. package/dist/cjs/src/multiVariableText/types.js.map +0 -1
  79. package/dist/cjs/src/multiVariableText/uiRender.js +0 -146
  80. package/dist/cjs/src/multiVariableText/uiRender.js.map +0 -1
  81. package/dist/cjs/src/radioGroup/index.js +0 -93
  82. package/dist/cjs/src/radioGroup/index.js.map +0 -1
  83. package/dist/cjs/src/sanitize.js +0 -57
  84. package/dist/cjs/src/sanitize.js.map +0 -1
  85. package/dist/cjs/src/select/index.js +0 -175
  86. package/dist/cjs/src/select/index.js.map +0 -1
  87. package/dist/cjs/src/shapes/line.js +0 -76
  88. package/dist/cjs/src/shapes/line.js.map +0 -1
  89. package/dist/cjs/src/shapes/rectAndEllipse.js +0 -140
  90. package/dist/cjs/src/shapes/rectAndEllipse.js.map +0 -1
  91. package/dist/cjs/src/tables/cell.js +0 -126
  92. package/dist/cjs/src/tables/cell.js.map +0 -1
  93. package/dist/cjs/src/tables/classes.js +0 -467
  94. package/dist/cjs/src/tables/classes.js.map +0 -1
  95. package/dist/cjs/src/tables/dynamicTemplate.js +0 -66
  96. package/dist/cjs/src/tables/dynamicTemplate.js.map +0 -1
  97. package/dist/cjs/src/tables/helper.js +0 -189
  98. package/dist/cjs/src/tables/helper.js.map +0 -1
  99. package/dist/cjs/src/tables/index.js +0 -15
  100. package/dist/cjs/src/tables/index.js.map +0 -1
  101. package/dist/cjs/src/tables/pdfRender.js +0 -109
  102. package/dist/cjs/src/tables/pdfRender.js.map +0 -1
  103. package/dist/cjs/src/tables/propPanel.js +0 -108
  104. package/dist/cjs/src/tables/propPanel.js.map +0 -1
  105. package/dist/cjs/src/tables/tableHelper.js +0 -200
  106. package/dist/cjs/src/tables/tableHelper.js.map +0 -1
  107. package/dist/cjs/src/tables/types.js +0 -3
  108. package/dist/cjs/src/tables/types.js.map +0 -1
  109. package/dist/cjs/src/tables/uiRender.js +0 -368
  110. package/dist/cjs/src/tables/uiRender.js.map +0 -1
  111. package/dist/cjs/src/text/constants.js +0 -97
  112. package/dist/cjs/src/text/constants.js.map +0 -1
  113. package/dist/cjs/src/text/extraFormatter.js +0 -49
  114. package/dist/cjs/src/text/extraFormatter.js.map +0 -1
  115. package/dist/cjs/src/text/helper.js +0 -504
  116. package/dist/cjs/src/text/helper.js.map +0 -1
  117. package/dist/cjs/src/text/icons/index.js +0 -16
  118. package/dist/cjs/src/text/icons/index.js.map +0 -1
  119. package/dist/cjs/src/text/index.js +0 -15
  120. package/dist/cjs/src/text/index.js.map +0 -1
  121. package/dist/cjs/src/text/pdfRender.js +0 -170
  122. package/dist/cjs/src/text/pdfRender.js.map +0 -1
  123. package/dist/cjs/src/text/propPanel.js +0 -161
  124. package/dist/cjs/src/text/propPanel.js.map +0 -1
  125. package/dist/cjs/src/text/types.js +0 -3
  126. package/dist/cjs/src/text/types.js.map +0 -1
  127. package/dist/cjs/src/text/uiRender.js +0 -231
  128. package/dist/cjs/src/text/uiRender.js.map +0 -1
  129. package/dist/cjs/src/utils.js +0 -230
  130. package/dist/cjs/src/utils.js.map +0 -1
  131. package/dist/esm/__tests__/barcode.test.js +0 -349
  132. package/dist/esm/__tests__/barcode.test.js.map +0 -1
  133. package/dist/esm/__tests__/multiVariableText.test.js +0 -100
  134. package/dist/esm/__tests__/multiVariableText.test.js.map +0 -1
  135. package/dist/esm/__tests__/text.test.js +0 -384
  136. package/dist/esm/__tests__/text.test.js.map +0 -1
  137. package/dist/esm/__tests__/utils.test.js +0 -191
  138. package/dist/esm/__tests__/utils.test.js.map +0 -1
  139. package/dist/esm/src/barcodes/constants.js +0 -18
  140. package/dist/esm/src/barcodes/constants.js.map +0 -1
  141. package/dist/esm/src/barcodes/helper.js +0 -151
  142. package/dist/esm/src/barcodes/helper.js.map +0 -1
  143. package/dist/esm/src/barcodes/index.js +0 -16
  144. package/dist/esm/src/barcodes/index.js.map +0 -1
  145. package/dist/esm/src/barcodes/pdfRender.js +0 -25
  146. package/dist/esm/src/barcodes/pdfRender.js.map +0 -1
  147. package/dist/esm/src/barcodes/propPanel.js +0 -237
  148. package/dist/esm/src/barcodes/propPanel.js.map +0 -1
  149. package/dist/esm/src/barcodes/types.js +0 -2
  150. package/dist/esm/src/barcodes/types.js.map +0 -1
  151. package/dist/esm/src/barcodes/uiRender.js +0 -87
  152. package/dist/esm/src/barcodes/uiRender.js.map +0 -1
  153. package/dist/esm/src/checkbox/index.js +0 -57
  154. package/dist/esm/src/checkbox/index.js.map +0 -1
  155. package/dist/esm/src/constants.js +0 -3
  156. package/dist/esm/src/constants.js.map +0 -1
  157. package/dist/esm/src/date/date.js +0 -7
  158. package/dist/esm/src/date/date.js.map +0 -1
  159. package/dist/esm/src/date/dateTime.js +0 -7
  160. package/dist/esm/src/date/dateTime.js.map +0 -1
  161. package/dist/esm/src/date/helper.js +0 -422
  162. package/dist/esm/src/date/helper.js.map +0 -1
  163. package/dist/esm/src/date/time.js +0 -7
  164. package/dist/esm/src/date/time.js.map +0 -1
  165. package/dist/esm/src/date/types.js +0 -2
  166. package/dist/esm/src/date/types.js.map +0 -1
  167. package/dist/esm/src/graphics/image.js +0 -170
  168. package/dist/esm/src/graphics/image.js.map +0 -1
  169. package/dist/esm/src/graphics/imagehelper.js +0 -120
  170. package/dist/esm/src/graphics/imagehelper.js.map +0 -1
  171. package/dist/esm/src/graphics/svg.js +0 -110
  172. package/dist/esm/src/graphics/svg.js.map +0 -1
  173. package/dist/esm/src/index.js +0 -21
  174. package/dist/esm/src/index.js.map +0 -1
  175. package/dist/esm/src/multiVariableText/helper.js +0 -50
  176. package/dist/esm/src/multiVariableText/helper.js.map +0 -1
  177. package/dist/esm/src/multiVariableText/index.js +0 -14
  178. package/dist/esm/src/multiVariableText/index.js.map +0 -1
  179. package/dist/esm/src/multiVariableText/pdfRender.js +0 -16
  180. package/dist/esm/src/multiVariableText/pdfRender.js.map +0 -1
  181. package/dist/esm/src/multiVariableText/propPanel.js +0 -145
  182. package/dist/esm/src/multiVariableText/propPanel.js.map +0 -1
  183. package/dist/esm/src/multiVariableText/types.js +0 -2
  184. package/dist/esm/src/multiVariableText/types.js.map +0 -1
  185. package/dist/esm/src/multiVariableText/uiRender.js +0 -142
  186. package/dist/esm/src/multiVariableText/uiRender.js.map +0 -1
  187. package/dist/esm/src/radioGroup/index.js +0 -88
  188. package/dist/esm/src/radioGroup/index.js.map +0 -1
  189. package/dist/esm/src/sanitize.js +0 -50
  190. package/dist/esm/src/sanitize.js.map +0 -1
  191. package/dist/esm/src/select/index.js +0 -170
  192. package/dist/esm/src/select/index.js.map +0 -1
  193. package/dist/esm/src/shapes/line.js +0 -74
  194. package/dist/esm/src/shapes/line.js.map +0 -1
  195. package/dist/esm/src/shapes/rectAndEllipse.js +0 -137
  196. package/dist/esm/src/shapes/rectAndEllipse.js.map +0 -1
  197. package/dist/esm/src/tables/cell.js +0 -121
  198. package/dist/esm/src/tables/cell.js.map +0 -1
  199. package/dist/esm/src/tables/classes.js +0 -460
  200. package/dist/esm/src/tables/classes.js.map +0 -1
  201. package/dist/esm/src/tables/dynamicTemplate.js +0 -62
  202. package/dist/esm/src/tables/dynamicTemplate.js.map +0 -1
  203. package/dist/esm/src/tables/helper.js +0 -181
  204. package/dist/esm/src/tables/helper.js.map +0 -1
  205. package/dist/esm/src/tables/index.js +0 -13
  206. package/dist/esm/src/tables/index.js.map +0 -1
  207. package/dist/esm/src/tables/pdfRender.js +0 -102
  208. package/dist/esm/src/tables/pdfRender.js.map +0 -1
  209. package/dist/esm/src/tables/propPanel.js +0 -105
  210. package/dist/esm/src/tables/propPanel.js.map +0 -1
  211. package/dist/esm/src/tables/tableHelper.js +0 -197
  212. package/dist/esm/src/tables/tableHelper.js.map +0 -1
  213. package/dist/esm/src/tables/types.js +0 -2
  214. package/dist/esm/src/tables/types.js.map +0 -1
  215. package/dist/esm/src/tables/uiRender.js +0 -361
  216. package/dist/esm/src/tables/uiRender.js.map +0 -1
  217. package/dist/esm/src/text/constants.js +0 -94
  218. package/dist/esm/src/text/constants.js.map +0 -1
  219. package/dist/esm/src/text/extraFormatter.js +0 -45
  220. package/dist/esm/src/text/extraFormatter.js.map +0 -1
  221. package/dist/esm/src/text/helper.js +0 -457
  222. package/dist/esm/src/text/helper.js.map +0 -1
  223. package/dist/esm/src/text/icons/index.js +0 -13
  224. package/dist/esm/src/text/icons/index.js.map +0 -1
  225. package/dist/esm/src/text/index.js +0 -13
  226. package/dist/esm/src/text/index.js.map +0 -1
  227. package/dist/esm/src/text/pdfRender.js +0 -166
  228. package/dist/esm/src/text/pdfRender.js.map +0 -1
  229. package/dist/esm/src/text/propPanel.js +0 -158
  230. package/dist/esm/src/text/propPanel.js.map +0 -1
  231. package/dist/esm/src/text/types.js +0 -2
  232. package/dist/esm/src/text/types.js.map +0 -1
  233. package/dist/esm/src/text/uiRender.js +0 -224
  234. package/dist/esm/src/text/uiRender.js.map +0 -1
  235. package/dist/esm/src/utils.js +0 -218
  236. package/dist/esm/src/utils.js.map +0 -1
  237. package/dist/node/__tests__/barcode.test.js +0 -354
  238. package/dist/node/__tests__/barcode.test.js.map +0 -1
  239. package/dist/node/__tests__/multiVariableText.test.js +0 -102
  240. package/dist/node/__tests__/multiVariableText.test.js.map +0 -1
  241. package/dist/node/__tests__/text.test.js +0 -419
  242. package/dist/node/__tests__/text.test.js.map +0 -1
  243. package/dist/node/__tests__/utils.test.js +0 -193
  244. package/dist/node/__tests__/utils.test.js.map +0 -1
  245. package/dist/node/src/barcodes/constants.js +0 -21
  246. package/dist/node/src/barcodes/constants.js.map +0 -1
  247. package/dist/node/src/barcodes/helper.js +0 -161
  248. package/dist/node/src/barcodes/helper.js.map +0 -1
  249. package/dist/node/src/barcodes/index.js +0 -18
  250. package/dist/node/src/barcodes/index.js.map +0 -1
  251. package/dist/node/src/barcodes/pdfRender.js +0 -29
  252. package/dist/node/src/barcodes/pdfRender.js.map +0 -1
  253. package/dist/node/src/barcodes/propPanel.js +0 -241
  254. package/dist/node/src/barcodes/propPanel.js.map +0 -1
  255. package/dist/node/src/barcodes/types.js +0 -3
  256. package/dist/node/src/barcodes/types.js.map +0 -1
  257. package/dist/node/src/barcodes/uiRender.js +0 -91
  258. package/dist/node/src/barcodes/uiRender.js.map +0 -1
  259. package/dist/node/src/checkbox/index.js +0 -62
  260. package/dist/node/src/checkbox/index.js.map +0 -1
  261. package/dist/node/src/constants.js +0 -6
  262. package/dist/node/src/constants.js.map +0 -1
  263. package/dist/node/src/date/date.js +0 -9
  264. package/dist/node/src/date/date.js.map +0 -1
  265. package/dist/node/src/date/dateTime.js +0 -9
  266. package/dist/node/src/date/dateTime.js.map +0 -1
  267. package/dist/node/src/date/helper.js +0 -462
  268. package/dist/node/src/date/helper.js.map +0 -1
  269. package/dist/node/src/date/time.js +0 -9
  270. package/dist/node/src/date/time.js.map +0 -1
  271. package/dist/node/src/date/types.js +0 -3
  272. package/dist/node/src/date/types.js.map +0 -1
  273. package/dist/node/src/graphics/image.js +0 -172
  274. package/dist/node/src/graphics/image.js.map +0 -1
  275. package/dist/node/src/graphics/imagehelper.js +0 -124
  276. package/dist/node/src/graphics/imagehelper.js.map +0 -1
  277. package/dist/node/src/graphics/svg.js +0 -112
  278. package/dist/node/src/graphics/svg.js.map +0 -1
  279. package/dist/node/src/index.js +0 -41
  280. package/dist/node/src/index.js.map +0 -1
  281. package/dist/node/src/multiVariableText/helper.js +0 -55
  282. package/dist/node/src/multiVariableText/helper.js.map +0 -1
  283. package/dist/node/src/multiVariableText/index.js +0 -16
  284. package/dist/node/src/multiVariableText/index.js.map +0 -1
  285. package/dist/node/src/multiVariableText/pdfRender.js +0 -20
  286. package/dist/node/src/multiVariableText/pdfRender.js.map +0 -1
  287. package/dist/node/src/multiVariableText/propPanel.js +0 -148
  288. package/dist/node/src/multiVariableText/propPanel.js.map +0 -1
  289. package/dist/node/src/multiVariableText/types.js +0 -3
  290. package/dist/node/src/multiVariableText/types.js.map +0 -1
  291. package/dist/node/src/multiVariableText/uiRender.js +0 -146
  292. package/dist/node/src/multiVariableText/uiRender.js.map +0 -1
  293. package/dist/node/src/radioGroup/index.js +0 -93
  294. package/dist/node/src/radioGroup/index.js.map +0 -1
  295. package/dist/node/src/sanitize.js +0 -57
  296. package/dist/node/src/sanitize.js.map +0 -1
  297. package/dist/node/src/select/index.js +0 -175
  298. package/dist/node/src/select/index.js.map +0 -1
  299. package/dist/node/src/shapes/line.js +0 -76
  300. package/dist/node/src/shapes/line.js.map +0 -1
  301. package/dist/node/src/shapes/rectAndEllipse.js +0 -140
  302. package/dist/node/src/shapes/rectAndEllipse.js.map +0 -1
  303. package/dist/node/src/tables/cell.js +0 -126
  304. package/dist/node/src/tables/cell.js.map +0 -1
  305. package/dist/node/src/tables/classes.js +0 -467
  306. package/dist/node/src/tables/classes.js.map +0 -1
  307. package/dist/node/src/tables/dynamicTemplate.js +0 -66
  308. package/dist/node/src/tables/dynamicTemplate.js.map +0 -1
  309. package/dist/node/src/tables/helper.js +0 -189
  310. package/dist/node/src/tables/helper.js.map +0 -1
  311. package/dist/node/src/tables/index.js +0 -15
  312. package/dist/node/src/tables/index.js.map +0 -1
  313. package/dist/node/src/tables/pdfRender.js +0 -109
  314. package/dist/node/src/tables/pdfRender.js.map +0 -1
  315. package/dist/node/src/tables/propPanel.js +0 -108
  316. package/dist/node/src/tables/propPanel.js.map +0 -1
  317. package/dist/node/src/tables/tableHelper.js +0 -200
  318. package/dist/node/src/tables/tableHelper.js.map +0 -1
  319. package/dist/node/src/tables/types.js +0 -3
  320. package/dist/node/src/tables/types.js.map +0 -1
  321. package/dist/node/src/tables/uiRender.js +0 -368
  322. package/dist/node/src/tables/uiRender.js.map +0 -1
  323. package/dist/node/src/text/constants.js +0 -97
  324. package/dist/node/src/text/constants.js.map +0 -1
  325. package/dist/node/src/text/extraFormatter.js +0 -49
  326. package/dist/node/src/text/extraFormatter.js.map +0 -1
  327. package/dist/node/src/text/helper.js +0 -504
  328. package/dist/node/src/text/helper.js.map +0 -1
  329. package/dist/node/src/text/icons/index.js +0 -16
  330. package/dist/node/src/text/icons/index.js.map +0 -1
  331. package/dist/node/src/text/index.js +0 -15
  332. package/dist/node/src/text/index.js.map +0 -1
  333. package/dist/node/src/text/pdfRender.js +0 -170
  334. package/dist/node/src/text/pdfRender.js.map +0 -1
  335. package/dist/node/src/text/propPanel.js +0 -161
  336. package/dist/node/src/text/propPanel.js.map +0 -1
  337. package/dist/node/src/text/types.js +0 -3
  338. package/dist/node/src/text/types.js.map +0 -1
  339. package/dist/node/src/text/uiRender.js +0 -231
  340. package/dist/node/src/text/uiRender.js.map +0 -1
  341. package/dist/node/src/utils.js +0 -230
  342. package/dist/node/src/utils.js.map +0 -1
  343. package/dist/types/__tests__/barcode.test.d.ts +0 -1
  344. package/dist/types/__tests__/multiVariableText.test.d.ts +0 -1
  345. package/dist/types/__tests__/text.test.d.ts +0 -1
  346. package/dist/types/__tests__/utils.test.d.ts +0 -1
  347. package/dist/types/src/barcodes/constants.d.ts +0 -4
  348. package/dist/types/src/barcodes/helper.d.ts +0 -21
  349. package/dist/types/src/barcodes/index.d.ts +0 -4
  350. package/dist/types/src/barcodes/pdfRender.d.ts +0 -3
  351. package/dist/types/src/barcodes/propPanel.d.ts +0 -3
  352. package/dist/types/src/barcodes/types.d.ts +0 -10
  353. package/dist/types/src/barcodes/uiRender.d.ts +0 -3
  354. package/dist/types/src/checkbox/index.d.ts +0 -6
  355. package/dist/types/src/constants.d.ts +0 -2
  356. package/dist/types/src/date/date.d.ts +0 -2
  357. package/dist/types/src/date/dateTime.d.ts +0 -2
  358. package/dist/types/src/date/helper.d.ts +0 -8
  359. package/dist/types/src/date/time.d.ts +0 -2
  360. package/dist/types/src/date/types.d.ts +0 -17
  361. package/dist/types/src/graphics/image.d.ts +0 -5
  362. package/dist/types/src/graphics/imagehelper.d.ts +0 -4
  363. package/dist/types/src/graphics/svg.d.ts +0 -4
  364. package/dist/types/src/index.d.ts +0 -19
  365. package/dist/types/src/multiVariableText/helper.d.ts +0 -3
  366. package/dist/types/src/multiVariableText/index.d.ts +0 -4
  367. package/dist/types/src/multiVariableText/pdfRender.d.ts +0 -3
  368. package/dist/types/src/multiVariableText/propPanel.d.ts +0 -3
  369. package/dist/types/src/multiVariableText/types.d.ts +0 -5
  370. package/dist/types/src/multiVariableText/uiRender.d.ts +0 -3
  371. package/dist/types/src/radioGroup/index.d.ts +0 -7
  372. package/dist/types/src/sanitize.d.ts +0 -1
  373. package/dist/types/src/select/index.d.ts +0 -7
  374. package/dist/types/src/shapes/line.d.ts +0 -6
  375. package/dist/types/src/shapes/rectAndEllipse.d.ts +0 -175
  376. package/dist/types/src/tables/cell.d.ts +0 -4
  377. package/dist/types/src/tables/classes.d.ts +0 -69
  378. package/dist/types/src/tables/dynamicTemplate.d.ts +0 -7
  379. package/dist/types/src/tables/helper.d.ts +0 -265
  380. package/dist/types/src/tables/index.d.ts +0 -4
  381. package/dist/types/src/tables/pdfRender.d.ts +0 -3
  382. package/dist/types/src/tables/propPanel.d.ts +0 -3
  383. package/dist/types/src/tables/tableHelper.d.ts +0 -10
  384. package/dist/types/src/tables/types.d.ts +0 -88
  385. package/dist/types/src/tables/uiRender.d.ts +0 -3
  386. package/dist/types/src/text/constants.d.ts +0 -23
  387. package/dist/types/src/text/extraFormatter.d.ts +0 -25
  388. package/dist/types/src/text/helper.d.ts +0 -39
  389. package/dist/types/src/text/icons/index.d.ts +0 -9
  390. package/dist/types/src/text/index.d.ts +0 -4
  391. package/dist/types/src/text/pdfRender.d.ts +0 -3
  392. package/dist/types/src/text/propPanel.d.ts +0 -3
  393. package/dist/types/src/text/types.d.ts +0 -28
  394. package/dist/types/src/text/uiRender.d.ts +0 -11
  395. package/dist/types/src/utils.d.ts +0 -40
  396. package/eslint.config.mjs +0 -22
  397. package/tsconfig.cjs.json +0 -10
  398. package/tsconfig.esm.json +0 -11
  399. package/tsconfig.node.json +0 -11
@@ -1,13 +1,22 @@
1
1
  import { propPanel as parentPropPanel } from '../text/propPanel.js';
2
2
  import { PropPanel, PropPanelWidgetProps } from '@pdfme/common';
3
3
  import { MultiVariableTextSchema } from './types.js';
4
+ import { getVariableNames } from './variables.js';
4
5
 
5
6
  const mapDynamicVariables = (props: PropPanelWidgetProps) => {
6
7
  const { rootElement, changeSchemas, activeSchema, i18n, options } = props;
7
8
 
8
9
  const mvtSchema = activeSchema as unknown as MultiVariableTextSchema;
9
10
  const text = mvtSchema.text || '';
10
- const variables = JSON.parse(mvtSchema.content || '{}') as Record<string, string>;
11
+ let variables: Record<string, string> = {};
12
+ try {
13
+ const parsed = JSON.parse(mvtSchema.content || '{}');
14
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
15
+ variables = parsed as Record<string, string>;
16
+ }
17
+ } catch {
18
+ // content is not valid JSON (e.g. a plain string value) — start fresh
19
+ }
11
20
  const variablesChanged = updateVariablesFromText(text, variables);
12
21
  const varNames = Object.keys(variables);
13
22
 
@@ -113,7 +122,7 @@ export const propPanel: PropPanel<MultiVariableTextSchema> = {
113
122
  },
114
123
  };
115
124
  },
116
- widgets: { ...(parentPropPanel.widgets || {}), mapDynamicVariables },
125
+ widgets: { ...parentPropPanel.widgets, mapDynamicVariables },
117
126
  defaultSchema: {
118
127
  ...parentPropPanel.defaultSchema,
119
128
  readOnly: false,
@@ -127,14 +136,14 @@ export const propPanel: PropPanel<MultiVariableTextSchema> = {
127
136
  };
128
137
 
129
138
  const updateVariablesFromText = (text: string, variables: Record<string, string>): boolean => {
130
- const regex = /\{([^{}]+)}/g;
131
- const matches = text.match(regex);
139
+ const matches = getVariableNames(text);
132
140
  let changed = false;
133
141
 
134
- if (matches) {
142
+ if (matches.length > 0) {
143
+ const uniqueMatches = new Set(matches);
144
+
135
145
  // Add any new variables
136
- for (const match of matches) {
137
- const variableName = match.replace('{', '').replace('}', '');
146
+ for (const variableName of uniqueMatches) {
138
147
  if (!(variableName in variables)) {
139
148
  // NOTE: We upper case the variable name as the default value
140
149
  variables[variableName] = variableName.toUpperCase();
@@ -143,7 +152,7 @@ const updateVariablesFromText = (text: string, variables: Record<string, string>
143
152
  }
144
153
  // Remove any that no longer exist
145
154
  Object.keys(variables).forEach((variableName) => {
146
- if (!matches.includes('{' + variableName + '}')) {
155
+ if (!uniqueMatches.has(variableName)) {
147
156
  delete variables[variableName];
148
157
  changed = true;
149
158
  }
@@ -1,6 +1,6 @@
1
1
  import type { TextSchema } from '../text/types.js';
2
2
 
3
- export interface MultiVariableTextSchema extends TextSchema {
3
+ export type MultiVariableTextSchema = TextSchema & {
4
4
  text: string;
5
5
  variables: string[];
6
- }
6
+ };
@@ -8,6 +8,7 @@ import {
8
8
  import { isEditable } from '../utils.js';
9
9
  import { getFontKitFont } from '../text/helper.js';
10
10
  import { substituteVariables } from './helper.js';
11
+ import { countUniqueVariableNames, getVariableIndices } from './variables.js';
11
12
 
12
13
  export const uiRender = async (arg: UIRenderProps<MultiVariableTextSchema>) => {
13
14
  const { value, schema, rootElement, mode, onChange, ...rest } = arg;
@@ -68,9 +69,17 @@ const formUiRender = async (arg: UIRenderProps<MultiVariableTextSchema>) => {
68
69
  rootElement.parentElement.style.outline = '';
69
70
  }
70
71
 
71
- const variables: Record<string, string> = value
72
- ? (JSON.parse(value) as Record<string, string>) || {}
73
- : {};
72
+ let variables: Record<string, string> = {};
73
+ if (value) {
74
+ try {
75
+ const parsed = JSON.parse(value);
76
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
77
+ variables = parsed as Record<string, string>;
78
+ }
79
+ } catch {
80
+ // value is not valid JSON — use empty variables
81
+ }
82
+ }
74
83
  const variableIndices = getVariableIndices(rawText);
75
84
  const substitutedText = substituteVariables(rawText, variables);
76
85
  const font = options?.font || getDefaultFont();
@@ -86,16 +95,18 @@ const formUiRender = async (arg: UIRenderProps<MultiVariableTextSchema>) => {
86
95
  let inVarString = false;
87
96
 
88
97
  for (let i = 0; i < rawText.length; i++) {
89
- if (variableIndices[i]) {
98
+ const variableName = variableIndices.get(i);
99
+
100
+ if (variableName) {
90
101
  inVarString = true;
91
102
  let span = document.createElement('span');
92
103
  span.style.outline = `${theme.colorPrimary} dashed 1px`;
93
104
  makeElementPlainTextContentEditable(span);
94
- span.textContent = variables[variableIndices[i]];
105
+ span.textContent = variables[variableName];
95
106
  span.addEventListener('blur', (e: Event) => {
96
107
  const newValue = (e.target as HTMLSpanElement).textContent || '';
97
- if (newValue !== variables[variableIndices[i]]) {
98
- variables[variableIndices[i]] = newValue;
108
+ if (newValue !== variables[variableName]) {
109
+ variables[variableName] = newValue;
99
110
  if (onChange) onChange({ key: 'content', value: JSON.stringify(variables) });
100
111
  if (stopEditing) stopEditing();
101
112
  }
@@ -114,30 +125,6 @@ const formUiRender = async (arg: UIRenderProps<MultiVariableTextSchema>) => {
114
125
  }
115
126
  };
116
127
 
117
- const getVariableIndices = (content: string) => {
118
- const regex = /\{([^}]+)}/g;
119
- const indices = [];
120
- let match;
121
-
122
- while ((match = regex.exec(content)) !== null) {
123
- indices[match.index] = match[1];
124
- }
125
-
126
- return indices;
127
- };
128
-
129
- const countUniqueVariableNames = (content: string) => {
130
- const regex = /\{([^}]+)}/g;
131
- const uniqueMatchesSet = new Set();
132
- let match;
133
-
134
- while ((match = regex.exec(content)) !== null) {
135
- uniqueMatchesSet.add(match[1]);
136
- }
137
-
138
- return uniqueMatchesSet.size;
139
- };
140
-
141
128
  /**
142
129
  * An optimisation to try to minimise jank while typing.
143
130
  * Only check whether variables were modified based on certain key presses.
@@ -0,0 +1,63 @@
1
+ export type VariableMatch = {
2
+ name: string;
3
+ startIndex: number;
4
+ endIndex: number;
5
+ };
6
+
7
+ export type VariableIndices = Map<number, string>;
8
+
9
+ export const visitVariables = (
10
+ content: string,
11
+ visitor: (match: VariableMatch) => void,
12
+ ): void => {
13
+ let startIndex = -1;
14
+
15
+ for (let i = 0; i < content.length; i++) {
16
+ const char = content[i];
17
+
18
+ if (char === '{') {
19
+ // Restart from the latest opener so malformed input behaves like /{([^{}]+)}/g
20
+ // without requiring backtracking.
21
+ startIndex = i;
22
+ continue;
23
+ }
24
+
25
+ if (char === '}' && startIndex !== -1) {
26
+ const name = content.slice(startIndex + 1, i);
27
+ if (name.length > 0) {
28
+ visitor({ name, startIndex, endIndex: i });
29
+ }
30
+ startIndex = -1;
31
+ }
32
+ }
33
+ };
34
+
35
+ export const getVariableIndices = (content: string): VariableIndices => {
36
+ const indices: VariableIndices = new Map();
37
+
38
+ visitVariables(content, ({ name, startIndex }) => {
39
+ indices.set(startIndex, name);
40
+ });
41
+
42
+ return indices;
43
+ };
44
+
45
+ export const countUniqueVariableNames = (content: string): number => {
46
+ const variableNames = new Set<string>();
47
+
48
+ visitVariables(content, ({ name }) => {
49
+ variableNames.add(name);
50
+ });
51
+
52
+ return variableNames.size;
53
+ };
54
+
55
+ export const getVariableNames = (content: string): string[] => {
56
+ const variableNames: string[] = [];
57
+
58
+ visitVariables(content, ({ name }) => {
59
+ variableNames.push(name);
60
+ });
61
+
62
+ return variableNames;
63
+ };
@@ -139,13 +139,13 @@ const getPropPanelSchema = (type: 'rectangle' | 'ellipse') => ({
139
139
  },
140
140
  });
141
141
 
142
- export const rectangle = {
142
+ export const rectangle: Plugin<ShapeSchema> = {
143
143
  ...shape,
144
144
  propPanel: getPropPanelSchema('rectangle'),
145
145
  icon: createSvgStr(Square),
146
146
  };
147
147
 
148
- export const ellipse = {
148
+ export const ellipse: Plugin<ShapeSchema> = {
149
149
  ...shape,
150
150
  propPanel: getPropPanelSchema('ellipse'),
151
151
  icon: createSvgStr(Circle),
@@ -123,7 +123,7 @@ function cellStyles(
123
123
  }
124
124
  const otherStyles = Object.assign({}, styles.styles, sectionStyles);
125
125
 
126
- const colStyles = styles.columnStyles[column.index] || styles.columnStyles[column.index] || {};
126
+ const colStyles = styles.columnStyles[column.index] || {};
127
127
 
128
128
  const rowStyles =
129
129
  sectionName === 'body' && rowIndex % 2 === 0
@@ -269,7 +269,8 @@ export function createSingleTable(body: string[][], args: CreateTableArgs) {
269
269
  schema.bodyStyles.alternateBackgroundColor = schema.bodyStyles.backgroundColor;
270
270
  schema.bodyStyles.backgroundColor = alternateBackgroundColor;
271
271
  }
272
- schema.showHead = schema.showHead === false ? false : (!schema.__isSplit || schema.repeatHead === true);
272
+ schema.showHead =
273
+ schema.showHead === false ? false : !schema.__isSplit || schema.repeatHead === true;
273
274
 
274
275
  const input = parseInput(schema, body);
275
276
 
@@ -21,7 +21,7 @@ export interface CellStyle {
21
21
 
22
22
  export type CellSchema = Schema & CellStyle;
23
23
 
24
- export interface TableSchema extends Schema {
24
+ export type TableSchema = Schema & {
25
25
  showHead: boolean;
26
26
  head: string[];
27
27
  headWidthPercentages: number[];
@@ -36,7 +36,7 @@ export interface TableSchema extends Schema {
36
36
  columnStyles: {
37
37
  alignment?: { [colIndex: number]: ALIGNMENT };
38
38
  };
39
- }
39
+ };
40
40
 
41
41
  export interface Styles {
42
42
  fontName: string | undefined;
@@ -203,7 +203,7 @@ const resetEditingPosition = () => {
203
203
  };
204
204
 
205
205
  export const uiRender = async (arg: UIRenderProps<TableSchema>) => {
206
- const { rootElement, onChange, schema, value, mode, scale} = arg;
206
+ const { rootElement, onChange, schema, value, mode, scale } = arg;
207
207
  const body = getBody(value);
208
208
  const bodyWidthRange = getBodyWithRange(value, schema.__bodyRange);
209
209
  const table = await createSingleTable(bodyWidthRange, arg);
package/src/tables.ts ADDED
@@ -0,0 +1 @@
1
+ export { getDynamicHeightsForTable } from './tables/dynamicTemplate.js';
@@ -110,6 +110,26 @@ const getFallbackFont = (font: Font) => {
110
110
 
111
111
  const getCacheKey = (fontName: string) => `getFontKitFont-${fontName}`;
112
112
 
113
+ export const fetchRemoteFontData = async (url: string): Promise<ArrayBuffer> => {
114
+ if (!isUrlSafeToFetch(url)) {
115
+ throw Error(
116
+ '[@pdfme/schemas] Invalid or unsafe URL for font data. Only http: and https: URLs pointing to public hosts are allowed.',
117
+ );
118
+ }
119
+
120
+ try {
121
+ const response = await fetch(url);
122
+ if (!response.ok) {
123
+ throw new Error(`HTTP ${response.status}`);
124
+ }
125
+
126
+ return await response.arrayBuffer();
127
+ } catch (error) {
128
+ const reason = error instanceof Error ? error.message : String(error);
129
+ throw Error(`[@pdfme/schemas] Failed to fetch remote font data from ${url}. ${reason}`);
130
+ }
131
+ };
132
+
113
133
  export const getFontKitFont = async (
114
134
  fontName: string | undefined,
115
135
  font: Font,
@@ -125,10 +145,7 @@ export const getFontKitFont = async (
125
145
  let fontData = currentFont.data;
126
146
  if (typeof fontData === 'string') {
127
147
  if (fontData.startsWith('http')) {
128
- if (!isUrlSafeToFetch(fontData)) {
129
- throw Error('[@pdfme/schemas] Invalid or unsafe URL for font data. Only http: and https: URLs pointing to public hosts are allowed.');
130
- }
131
- fontData = await fetch(fontData).then((res) => res.arrayBuffer());
148
+ fontData = await fetchRemoteFontData(fontData);
132
149
  } else {
133
150
  fontData = b64toUint8Array(fontData);
134
151
  }
@@ -373,7 +390,7 @@ export const splitTextToSize = (arg: {
373
390
  boxWidthInPt,
374
391
  };
375
392
  let lines: string[] = [];
376
- value.split(/\r\n|\r|\n|\f|\u000B/g).forEach((line: string) => {
393
+ value.split(/\r\n|\r|\n|\f|\v/g).forEach((line: string) => {
377
394
  lines = lines.concat(getSplittedLinesBySegmenter(line, fontWidthCalcValues));
378
395
  });
379
396
  return lines;
@@ -8,7 +8,6 @@ import {
8
8
  getDefaultFont,
9
9
  getFallbackFontName,
10
10
  mm2pt,
11
- isUrlSafeToFetch,
12
11
  } from '@pdfme/common';
13
12
  import {
14
13
  VERTICAL_ALIGN_TOP,
@@ -26,6 +25,7 @@ import {
26
25
  heightOfFontAtSize,
27
26
  getFontDescentInPt,
28
27
  getFontKitFont,
28
+ fetchRemoteFontData,
29
29
  widthOfTextAtSize,
30
30
  splitTextToSize,
31
31
  } from './helper.js';
@@ -45,10 +45,7 @@ const embedAndGetFontObj = async (arg: {
45
45
  Object.values(font).map(async (v) => {
46
46
  let fontData = v.data;
47
47
  if (typeof fontData === 'string' && fontData.startsWith('http')) {
48
- if (!isUrlSafeToFetch(fontData)) {
49
- throw Error('[@pdfme/schemas] Invalid or unsafe URL for font data. Only http: and https: URLs pointing to public hosts are allowed.');
50
- }
51
- fontData = await fetch(fontData).then((res) => res.arrayBuffer());
48
+ fontData = await fetchRemoteFontData(fontData);
52
49
  }
53
50
  return pdfDoc.embedFont(fontData, {
54
51
  subset: typeof v.subset === 'undefined' ? true : v.subset,
package/src/text/types.ts CHANGED
@@ -11,7 +11,7 @@ export type FontWidthCalcValues = {
11
11
  characterSpacing: number;
12
12
  boxWidthInPt: number;
13
13
  };
14
- export interface TextSchema extends Schema {
14
+ export type TextSchema = Schema & {
15
15
  fontName?: string;
16
16
  alignment: ALIGNMENT;
17
17
  verticalAlignment: VERTICAL_ALIGNMENT;
@@ -27,4 +27,4 @@ export interface TextSchema extends Schema {
27
27
  };
28
28
  fontColor: string;
29
29
  backgroundColor: string;
30
- }
30
+ };
package/src/utils.ts CHANGED
@@ -213,9 +213,90 @@ export const createSvgStr = (icon: IconNode, attrs?: Record<string, string>): st
213
213
  // In lucide 0.475.0, the icon is an array of elements, not a single SVG element
214
214
  // We need to create an SVG wrapper and add the elements as children
215
215
 
216
+ const safeTagNames = new Set([
217
+ 'svg',
218
+ 'circle',
219
+ 'ellipse',
220
+ 'g',
221
+ 'line',
222
+ 'path',
223
+ 'polygon',
224
+ 'polyline',
225
+ 'rect',
226
+ ]);
227
+ const safeAttributeNames = new Set([
228
+ 'aria-hidden',
229
+ 'aria-label',
230
+ 'class',
231
+ 'clip-rule',
232
+ 'cx',
233
+ 'cy',
234
+ 'd',
235
+ 'fill',
236
+ 'fill-opacity',
237
+ 'fill-rule',
238
+ 'focusable',
239
+ 'height',
240
+ 'id',
241
+ 'opacity',
242
+ 'points',
243
+ 'preserveAspectRatio',
244
+ 'r',
245
+ 'role',
246
+ 'rx',
247
+ 'ry',
248
+ 'stroke',
249
+ 'stroke-dasharray',
250
+ 'stroke-dashoffset',
251
+ 'stroke-linecap',
252
+ 'stroke-linejoin',
253
+ 'stroke-miterlimit',
254
+ 'stroke-opacity',
255
+ 'stroke-width',
256
+ 'transform',
257
+ 'vector-effect',
258
+ 'viewBox',
259
+ 'width',
260
+ 'x',
261
+ 'x1',
262
+ 'x2',
263
+ 'xmlns',
264
+ 'xmlns:xlink',
265
+ 'y',
266
+ 'y1',
267
+ 'y2',
268
+ ]);
269
+ const escapeHtmlAttribute = (value: string): string =>
270
+ value
271
+ .replaceAll('&', '&amp;')
272
+ .replaceAll('"', '&quot;')
273
+ .replaceAll("'", '&#39;')
274
+ .replaceAll('<', '&lt;')
275
+ .replaceAll('>', '&gt;');
276
+ const escapeHtmlText = (value: string): string =>
277
+ value.replaceAll('&', '&amp;').replaceAll('<', '&lt;').replaceAll('>', '&gt;');
278
+ const toSafeAttributeString = (attributes: Record<string, string>): string =>
279
+ Object.entries(attributes)
280
+ .filter(
281
+ ([key, value]) =>
282
+ safeAttributeNames.has(key) &&
283
+ value !== undefined &&
284
+ value !== null &&
285
+ !key.toLowerCase().startsWith('on'),
286
+ )
287
+ .map(([key, value]) => `${key}="${escapeHtmlAttribute(String(value))}"`)
288
+ .join(' ');
289
+ const toSafeTagName = (tag: unknown): string => {
290
+ const tagName = String(tag);
291
+ if (!safeTagNames.has(tagName)) {
292
+ throw new Error(`Invalid SVG tag name: ${tagName}`);
293
+ }
294
+ return tagName;
295
+ };
296
+
216
297
  // Handle non-array input
217
298
  if (!Array.isArray(icon)) {
218
- return String(icon);
299
+ return escapeHtmlText(String(icon));
219
300
  }
220
301
 
221
302
  // Create default SVG attributes
@@ -229,18 +310,14 @@ export const createSvgStr = (icon: IconNode, attrs?: Record<string, string>): st
229
310
  'stroke-width': '2',
230
311
  'stroke-linecap': 'round',
231
312
  'stroke-linejoin': 'round',
232
- ...(attrs || {}),
313
+ ...attrs,
233
314
  };
234
-
235
- // Format SVG attributes string
236
- const svgAttrString = Object.entries(svgAttrs)
237
- .map(([key, value]) => `${key}="${value}"`)
238
- .join(' ');
315
+ const svgAttrString = toSafeAttributeString(svgAttrs);
239
316
 
240
317
  // Helper function to process a single element
241
318
  const processElement = (element: unknown): string => {
242
319
  if (!Array.isArray(element)) {
243
- return String(element);
320
+ return escapeHtmlText(String(element));
244
321
  }
245
322
 
246
323
  const [tag, attributes = {}, children = []] = element as [
@@ -248,12 +325,8 @@ export const createSvgStr = (icon: IconNode, attrs?: Record<string, string>): st
248
325
  Record<string, string>,
249
326
  unknown[],
250
327
  ];
251
- const tagName = String(tag);
252
-
253
- // Format attributes string
254
- const attrString = Object.entries(attributes)
255
- .map(([key, value]) => `${key}="${value}"`)
256
- .join(' ');
328
+ const tagName = toSafeTagName(tag);
329
+ const attrString = toSafeAttributeString(attributes);
257
330
 
258
331
  // Process children recursively
259
332
  let childrenString = '';
@@ -0,0 +1,14 @@
1
+ {
2
+ "extends": "../../tsconfig.build.base.json",
3
+ "compilerOptions": {
4
+ "declaration": true,
5
+ "declarationDir": "./dist",
6
+ "emitDeclarationOnly": true,
7
+ "module": "ESNext",
8
+ "moduleResolution": "bundler",
9
+ "outDir": "./dist",
10
+ "rootDir": "./src",
11
+ "skipLibCheck": true
12
+ },
13
+ "include": ["src/**/*.ts"]
14
+ }
package/tsconfig.json CHANGED
@@ -1,6 +1,16 @@
1
1
  {
2
- "extends": "./tsconfig.esm",
2
+ "extends": "../../tsconfig.base.json",
3
3
  "compilerOptions": {
4
- "outDir": "./dist",
5
- }
6
- }
4
+ "composite": true,
5
+ "declaration": true,
6
+ "declarationDir": "./dist/typecheck",
7
+ "emitDeclarationOnly": true,
8
+ "module": "ESNext",
9
+ "moduleResolution": "bundler",
10
+ "outDir": "./dist/typecheck",
11
+ "tsBuildInfoFile": "./dist/typecheck/tsconfig.tsbuildinfo",
12
+ "skipLibCheck": true
13
+ },
14
+ "include": ["src/**/*.ts"],
15
+ "references": [{ "path": "../common" }, { "path": "../pdf-lib" }]
16
+ }
@@ -0,0 +1,51 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { builtinModules } from 'node:module';
3
+ import { dirname, resolve } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { defineConfig } from 'vite';
6
+
7
+ const __dirname = dirname(fileURLToPath(import.meta.url));
8
+ const packageJson = JSON.parse(readFileSync(resolve(__dirname, 'package.json'), 'utf8')) as {
9
+ dependencies?: Record<string, string>;
10
+ peerDependencies?: Record<string, string>;
11
+ };
12
+
13
+ const builtinModuleSet = new Set([
14
+ ...builtinModules,
15
+ ...builtinModules.map((moduleName) => `node:${moduleName}`),
16
+ ]);
17
+ const packageDependencies = [
18
+ ...Object.keys(packageJson.dependencies ?? {}),
19
+ ...Object.keys(packageJson.peerDependencies ?? {}),
20
+ ];
21
+
22
+ const isExternal = (id: string) => {
23
+ if (id.startsWith('air-datepicker/locale/')) {
24
+ return false;
25
+ }
26
+
27
+ return (
28
+ builtinModuleSet.has(id) ||
29
+ packageDependencies.some((dependency) => id === dependency || id.startsWith(`${dependency}/`))
30
+ );
31
+ };
32
+
33
+ export default defineConfig({
34
+ build: {
35
+ lib: {
36
+ entry: {
37
+ builtins: resolve(__dirname, 'src/builtins.ts'),
38
+ index: resolve(__dirname, 'src/index.ts'),
39
+ tables: resolve(__dirname, 'src/tables.ts'),
40
+ utils: resolve(__dirname, 'src/utils.ts'),
41
+ },
42
+ fileName: (_, entryName) => `${entryName}.js`,
43
+ formats: ['es'],
44
+ },
45
+ minify: false,
46
+ outDir: 'dist',
47
+ rollupOptions: { external: isExternal },
48
+ sourcemap: true,
49
+ target: 'es2020',
50
+ },
51
+ });