@pdfme/schemas 0.0.0

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 (419) hide show
  1. package/README.md +8 -0
  2. package/dist/cjs/__tests__/barcode.test.js +354 -0
  3. package/dist/cjs/__tests__/barcode.test.js.map +1 -0
  4. package/dist/cjs/__tests__/multiVariableText.test.js +102 -0
  5. package/dist/cjs/__tests__/multiVariableText.test.js.map +1 -0
  6. package/dist/cjs/__tests__/text.test.js +419 -0
  7. package/dist/cjs/__tests__/text.test.js.map +1 -0
  8. package/dist/cjs/__tests__/utils.test.js +193 -0
  9. package/dist/cjs/__tests__/utils.test.js.map +1 -0
  10. package/dist/cjs/src/barcodes/constants.js +21 -0
  11. package/dist/cjs/src/barcodes/constants.js.map +1 -0
  12. package/dist/cjs/src/barcodes/helper.js +161 -0
  13. package/dist/cjs/src/barcodes/helper.js.map +1 -0
  14. package/dist/cjs/src/barcodes/index.js +18 -0
  15. package/dist/cjs/src/barcodes/index.js.map +1 -0
  16. package/dist/cjs/src/barcodes/pdfRender.js +29 -0
  17. package/dist/cjs/src/barcodes/pdfRender.js.map +1 -0
  18. package/dist/cjs/src/barcodes/propPanel.js +241 -0
  19. package/dist/cjs/src/barcodes/propPanel.js.map +1 -0
  20. package/dist/cjs/src/barcodes/types.js +3 -0
  21. package/dist/cjs/src/barcodes/types.js.map +1 -0
  22. package/dist/cjs/src/barcodes/uiRender.js +91 -0
  23. package/dist/cjs/src/barcodes/uiRender.js.map +1 -0
  24. package/dist/cjs/src/checkbox/index.js +62 -0
  25. package/dist/cjs/src/checkbox/index.js.map +1 -0
  26. package/dist/cjs/src/constants.js +6 -0
  27. package/dist/cjs/src/constants.js.map +1 -0
  28. package/dist/cjs/src/date/date.js +9 -0
  29. package/dist/cjs/src/date/date.js.map +1 -0
  30. package/dist/cjs/src/date/dateTime.js +9 -0
  31. package/dist/cjs/src/date/dateTime.js.map +1 -0
  32. package/dist/cjs/src/date/helper.js +462 -0
  33. package/dist/cjs/src/date/helper.js.map +1 -0
  34. package/dist/cjs/src/date/time.js +9 -0
  35. package/dist/cjs/src/date/time.js.map +1 -0
  36. package/dist/cjs/src/date/types.js +3 -0
  37. package/dist/cjs/src/date/types.js.map +1 -0
  38. package/dist/cjs/src/graphics/image.js +172 -0
  39. package/dist/cjs/src/graphics/image.js.map +1 -0
  40. package/dist/cjs/src/graphics/imagehelper.js +124 -0
  41. package/dist/cjs/src/graphics/imagehelper.js.map +1 -0
  42. package/dist/cjs/src/graphics/svg.js +109 -0
  43. package/dist/cjs/src/graphics/svg.js.map +1 -0
  44. package/dist/cjs/src/index.js +41 -0
  45. package/dist/cjs/src/index.js.map +1 -0
  46. package/dist/cjs/src/multiVariableText/helper.js +55 -0
  47. package/dist/cjs/src/multiVariableText/helper.js.map +1 -0
  48. package/dist/cjs/src/multiVariableText/index.js +16 -0
  49. package/dist/cjs/src/multiVariableText/index.js.map +1 -0
  50. package/dist/cjs/src/multiVariableText/pdfRender.js +20 -0
  51. package/dist/cjs/src/multiVariableText/pdfRender.js.map +1 -0
  52. package/dist/cjs/src/multiVariableText/propPanel.js +148 -0
  53. package/dist/cjs/src/multiVariableText/propPanel.js.map +1 -0
  54. package/dist/cjs/src/multiVariableText/types.js +3 -0
  55. package/dist/cjs/src/multiVariableText/types.js.map +1 -0
  56. package/dist/cjs/src/multiVariableText/uiRender.js +146 -0
  57. package/dist/cjs/src/multiVariableText/uiRender.js.map +1 -0
  58. package/dist/cjs/src/radioGroup/index.js +93 -0
  59. package/dist/cjs/src/radioGroup/index.js.map +1 -0
  60. package/dist/cjs/src/select/index.js +170 -0
  61. package/dist/cjs/src/select/index.js.map +1 -0
  62. package/dist/cjs/src/shapes/line.js +76 -0
  63. package/dist/cjs/src/shapes/line.js.map +1 -0
  64. package/dist/cjs/src/shapes/rectAndEllipse.js +140 -0
  65. package/dist/cjs/src/shapes/rectAndEllipse.js.map +1 -0
  66. package/dist/cjs/src/tables/cell.js +126 -0
  67. package/dist/cjs/src/tables/cell.js.map +1 -0
  68. package/dist/cjs/src/tables/classes.js +467 -0
  69. package/dist/cjs/src/tables/classes.js.map +1 -0
  70. package/dist/cjs/src/tables/dynamicTemplate.js +66 -0
  71. package/dist/cjs/src/tables/dynamicTemplate.js.map +1 -0
  72. package/dist/cjs/src/tables/helper.js +189 -0
  73. package/dist/cjs/src/tables/helper.js.map +1 -0
  74. package/dist/cjs/src/tables/index.js +15 -0
  75. package/dist/cjs/src/tables/index.js.map +1 -0
  76. package/dist/cjs/src/tables/pdfRender.js +109 -0
  77. package/dist/cjs/src/tables/pdfRender.js.map +1 -0
  78. package/dist/cjs/src/tables/propPanel.js +108 -0
  79. package/dist/cjs/src/tables/propPanel.js.map +1 -0
  80. package/dist/cjs/src/tables/tableHelper.js +200 -0
  81. package/dist/cjs/src/tables/tableHelper.js.map +1 -0
  82. package/dist/cjs/src/tables/types.js +3 -0
  83. package/dist/cjs/src/tables/types.js.map +1 -0
  84. package/dist/cjs/src/tables/uiRender.js +368 -0
  85. package/dist/cjs/src/tables/uiRender.js.map +1 -0
  86. package/dist/cjs/src/text/constants.js +97 -0
  87. package/dist/cjs/src/text/constants.js.map +1 -0
  88. package/dist/cjs/src/text/extraFormatter.js +49 -0
  89. package/dist/cjs/src/text/extraFormatter.js.map +1 -0
  90. package/dist/cjs/src/text/helper.js +498 -0
  91. package/dist/cjs/src/text/helper.js.map +1 -0
  92. package/dist/cjs/src/text/icons/index.js +16 -0
  93. package/dist/cjs/src/text/icons/index.js.map +1 -0
  94. package/dist/cjs/src/text/index.js +15 -0
  95. package/dist/cjs/src/text/index.js.map +1 -0
  96. package/dist/cjs/src/text/pdfRender.js +167 -0
  97. package/dist/cjs/src/text/pdfRender.js.map +1 -0
  98. package/dist/cjs/src/text/propPanel.js +161 -0
  99. package/dist/cjs/src/text/propPanel.js.map +1 -0
  100. package/dist/cjs/src/text/types.js +3 -0
  101. package/dist/cjs/src/text/types.js.map +1 -0
  102. package/dist/cjs/src/text/uiRender.js +224 -0
  103. package/dist/cjs/src/text/uiRender.js.map +1 -0
  104. package/dist/cjs/src/utils.js +230 -0
  105. package/dist/cjs/src/utils.js.map +1 -0
  106. package/dist/esm/__tests__/barcode.test.js +349 -0
  107. package/dist/esm/__tests__/barcode.test.js.map +1 -0
  108. package/dist/esm/__tests__/multiVariableText.test.js +100 -0
  109. package/dist/esm/__tests__/multiVariableText.test.js.map +1 -0
  110. package/dist/esm/__tests__/text.test.js +384 -0
  111. package/dist/esm/__tests__/text.test.js.map +1 -0
  112. package/dist/esm/__tests__/utils.test.js +191 -0
  113. package/dist/esm/__tests__/utils.test.js.map +1 -0
  114. package/dist/esm/src/barcodes/constants.js +18 -0
  115. package/dist/esm/src/barcodes/constants.js.map +1 -0
  116. package/dist/esm/src/barcodes/helper.js +151 -0
  117. package/dist/esm/src/barcodes/helper.js.map +1 -0
  118. package/dist/esm/src/barcodes/index.js +16 -0
  119. package/dist/esm/src/barcodes/index.js.map +1 -0
  120. package/dist/esm/src/barcodes/pdfRender.js +25 -0
  121. package/dist/esm/src/barcodes/pdfRender.js.map +1 -0
  122. package/dist/esm/src/barcodes/propPanel.js +237 -0
  123. package/dist/esm/src/barcodes/propPanel.js.map +1 -0
  124. package/dist/esm/src/barcodes/types.js +2 -0
  125. package/dist/esm/src/barcodes/types.js.map +1 -0
  126. package/dist/esm/src/barcodes/uiRender.js +87 -0
  127. package/dist/esm/src/barcodes/uiRender.js.map +1 -0
  128. package/dist/esm/src/checkbox/index.js +57 -0
  129. package/dist/esm/src/checkbox/index.js.map +1 -0
  130. package/dist/esm/src/constants.js +3 -0
  131. package/dist/esm/src/constants.js.map +1 -0
  132. package/dist/esm/src/date/date.js +7 -0
  133. package/dist/esm/src/date/date.js.map +1 -0
  134. package/dist/esm/src/date/dateTime.js +7 -0
  135. package/dist/esm/src/date/dateTime.js.map +1 -0
  136. package/dist/esm/src/date/helper.js +422 -0
  137. package/dist/esm/src/date/helper.js.map +1 -0
  138. package/dist/esm/src/date/time.js +7 -0
  139. package/dist/esm/src/date/time.js.map +1 -0
  140. package/dist/esm/src/date/types.js +2 -0
  141. package/dist/esm/src/date/types.js.map +1 -0
  142. package/dist/esm/src/graphics/image.js +170 -0
  143. package/dist/esm/src/graphics/image.js.map +1 -0
  144. package/dist/esm/src/graphics/imagehelper.js +120 -0
  145. package/dist/esm/src/graphics/imagehelper.js.map +1 -0
  146. package/dist/esm/src/graphics/svg.js +107 -0
  147. package/dist/esm/src/graphics/svg.js.map +1 -0
  148. package/dist/esm/src/index.js +21 -0
  149. package/dist/esm/src/index.js.map +1 -0
  150. package/dist/esm/src/multiVariableText/helper.js +50 -0
  151. package/dist/esm/src/multiVariableText/helper.js.map +1 -0
  152. package/dist/esm/src/multiVariableText/index.js +14 -0
  153. package/dist/esm/src/multiVariableText/index.js.map +1 -0
  154. package/dist/esm/src/multiVariableText/pdfRender.js +16 -0
  155. package/dist/esm/src/multiVariableText/pdfRender.js.map +1 -0
  156. package/dist/esm/src/multiVariableText/propPanel.js +145 -0
  157. package/dist/esm/src/multiVariableText/propPanel.js.map +1 -0
  158. package/dist/esm/src/multiVariableText/types.js +2 -0
  159. package/dist/esm/src/multiVariableText/types.js.map +1 -0
  160. package/dist/esm/src/multiVariableText/uiRender.js +142 -0
  161. package/dist/esm/src/multiVariableText/uiRender.js.map +1 -0
  162. package/dist/esm/src/radioGroup/index.js +88 -0
  163. package/dist/esm/src/radioGroup/index.js.map +1 -0
  164. package/dist/esm/src/select/index.js +165 -0
  165. package/dist/esm/src/select/index.js.map +1 -0
  166. package/dist/esm/src/shapes/line.js +74 -0
  167. package/dist/esm/src/shapes/line.js.map +1 -0
  168. package/dist/esm/src/shapes/rectAndEllipse.js +137 -0
  169. package/dist/esm/src/shapes/rectAndEllipse.js.map +1 -0
  170. package/dist/esm/src/tables/cell.js +121 -0
  171. package/dist/esm/src/tables/cell.js.map +1 -0
  172. package/dist/esm/src/tables/classes.js +460 -0
  173. package/dist/esm/src/tables/classes.js.map +1 -0
  174. package/dist/esm/src/tables/dynamicTemplate.js +62 -0
  175. package/dist/esm/src/tables/dynamicTemplate.js.map +1 -0
  176. package/dist/esm/src/tables/helper.js +181 -0
  177. package/dist/esm/src/tables/helper.js.map +1 -0
  178. package/dist/esm/src/tables/index.js +13 -0
  179. package/dist/esm/src/tables/index.js.map +1 -0
  180. package/dist/esm/src/tables/pdfRender.js +102 -0
  181. package/dist/esm/src/tables/pdfRender.js.map +1 -0
  182. package/dist/esm/src/tables/propPanel.js +105 -0
  183. package/dist/esm/src/tables/propPanel.js.map +1 -0
  184. package/dist/esm/src/tables/tableHelper.js +197 -0
  185. package/dist/esm/src/tables/tableHelper.js.map +1 -0
  186. package/dist/esm/src/tables/types.js +2 -0
  187. package/dist/esm/src/tables/types.js.map +1 -0
  188. package/dist/esm/src/tables/uiRender.js +361 -0
  189. package/dist/esm/src/tables/uiRender.js.map +1 -0
  190. package/dist/esm/src/text/constants.js +94 -0
  191. package/dist/esm/src/text/constants.js.map +1 -0
  192. package/dist/esm/src/text/extraFormatter.js +45 -0
  193. package/dist/esm/src/text/extraFormatter.js.map +1 -0
  194. package/dist/esm/src/text/helper.js +451 -0
  195. package/dist/esm/src/text/helper.js.map +1 -0
  196. package/dist/esm/src/text/icons/index.js +13 -0
  197. package/dist/esm/src/text/icons/index.js.map +1 -0
  198. package/dist/esm/src/text/index.js +13 -0
  199. package/dist/esm/src/text/index.js.map +1 -0
  200. package/dist/esm/src/text/pdfRender.js +163 -0
  201. package/dist/esm/src/text/pdfRender.js.map +1 -0
  202. package/dist/esm/src/text/propPanel.js +158 -0
  203. package/dist/esm/src/text/propPanel.js.map +1 -0
  204. package/dist/esm/src/text/types.js +2 -0
  205. package/dist/esm/src/text/types.js.map +1 -0
  206. package/dist/esm/src/text/uiRender.js +217 -0
  207. package/dist/esm/src/text/uiRender.js.map +1 -0
  208. package/dist/esm/src/utils.js +218 -0
  209. package/dist/esm/src/utils.js.map +1 -0
  210. package/dist/node/__tests__/barcode.test.js +354 -0
  211. package/dist/node/__tests__/barcode.test.js.map +1 -0
  212. package/dist/node/__tests__/multiVariableText.test.js +102 -0
  213. package/dist/node/__tests__/multiVariableText.test.js.map +1 -0
  214. package/dist/node/__tests__/text.test.js +419 -0
  215. package/dist/node/__tests__/text.test.js.map +1 -0
  216. package/dist/node/__tests__/utils.test.js +193 -0
  217. package/dist/node/__tests__/utils.test.js.map +1 -0
  218. package/dist/node/src/barcodes/constants.js +21 -0
  219. package/dist/node/src/barcodes/constants.js.map +1 -0
  220. package/dist/node/src/barcodes/helper.js +161 -0
  221. package/dist/node/src/barcodes/helper.js.map +1 -0
  222. package/dist/node/src/barcodes/index.js +18 -0
  223. package/dist/node/src/barcodes/index.js.map +1 -0
  224. package/dist/node/src/barcodes/pdfRender.js +29 -0
  225. package/dist/node/src/barcodes/pdfRender.js.map +1 -0
  226. package/dist/node/src/barcodes/propPanel.js +241 -0
  227. package/dist/node/src/barcodes/propPanel.js.map +1 -0
  228. package/dist/node/src/barcodes/types.js +3 -0
  229. package/dist/node/src/barcodes/types.js.map +1 -0
  230. package/dist/node/src/barcodes/uiRender.js +91 -0
  231. package/dist/node/src/barcodes/uiRender.js.map +1 -0
  232. package/dist/node/src/checkbox/index.js +62 -0
  233. package/dist/node/src/checkbox/index.js.map +1 -0
  234. package/dist/node/src/constants.js +6 -0
  235. package/dist/node/src/constants.js.map +1 -0
  236. package/dist/node/src/date/date.js +9 -0
  237. package/dist/node/src/date/date.js.map +1 -0
  238. package/dist/node/src/date/dateTime.js +9 -0
  239. package/dist/node/src/date/dateTime.js.map +1 -0
  240. package/dist/node/src/date/helper.js +462 -0
  241. package/dist/node/src/date/helper.js.map +1 -0
  242. package/dist/node/src/date/time.js +9 -0
  243. package/dist/node/src/date/time.js.map +1 -0
  244. package/dist/node/src/date/types.js +3 -0
  245. package/dist/node/src/date/types.js.map +1 -0
  246. package/dist/node/src/graphics/image.js +172 -0
  247. package/dist/node/src/graphics/image.js.map +1 -0
  248. package/dist/node/src/graphics/imagehelper.js +124 -0
  249. package/dist/node/src/graphics/imagehelper.js.map +1 -0
  250. package/dist/node/src/graphics/svg.js +109 -0
  251. package/dist/node/src/graphics/svg.js.map +1 -0
  252. package/dist/node/src/index.js +41 -0
  253. package/dist/node/src/index.js.map +1 -0
  254. package/dist/node/src/multiVariableText/helper.js +55 -0
  255. package/dist/node/src/multiVariableText/helper.js.map +1 -0
  256. package/dist/node/src/multiVariableText/index.js +16 -0
  257. package/dist/node/src/multiVariableText/index.js.map +1 -0
  258. package/dist/node/src/multiVariableText/pdfRender.js +20 -0
  259. package/dist/node/src/multiVariableText/pdfRender.js.map +1 -0
  260. package/dist/node/src/multiVariableText/propPanel.js +148 -0
  261. package/dist/node/src/multiVariableText/propPanel.js.map +1 -0
  262. package/dist/node/src/multiVariableText/types.js +3 -0
  263. package/dist/node/src/multiVariableText/types.js.map +1 -0
  264. package/dist/node/src/multiVariableText/uiRender.js +146 -0
  265. package/dist/node/src/multiVariableText/uiRender.js.map +1 -0
  266. package/dist/node/src/radioGroup/index.js +93 -0
  267. package/dist/node/src/radioGroup/index.js.map +1 -0
  268. package/dist/node/src/select/index.js +170 -0
  269. package/dist/node/src/select/index.js.map +1 -0
  270. package/dist/node/src/shapes/line.js +76 -0
  271. package/dist/node/src/shapes/line.js.map +1 -0
  272. package/dist/node/src/shapes/rectAndEllipse.js +140 -0
  273. package/dist/node/src/shapes/rectAndEllipse.js.map +1 -0
  274. package/dist/node/src/tables/cell.js +126 -0
  275. package/dist/node/src/tables/cell.js.map +1 -0
  276. package/dist/node/src/tables/classes.js +467 -0
  277. package/dist/node/src/tables/classes.js.map +1 -0
  278. package/dist/node/src/tables/dynamicTemplate.js +66 -0
  279. package/dist/node/src/tables/dynamicTemplate.js.map +1 -0
  280. package/dist/node/src/tables/helper.js +189 -0
  281. package/dist/node/src/tables/helper.js.map +1 -0
  282. package/dist/node/src/tables/index.js +15 -0
  283. package/dist/node/src/tables/index.js.map +1 -0
  284. package/dist/node/src/tables/pdfRender.js +109 -0
  285. package/dist/node/src/tables/pdfRender.js.map +1 -0
  286. package/dist/node/src/tables/propPanel.js +108 -0
  287. package/dist/node/src/tables/propPanel.js.map +1 -0
  288. package/dist/node/src/tables/tableHelper.js +200 -0
  289. package/dist/node/src/tables/tableHelper.js.map +1 -0
  290. package/dist/node/src/tables/types.js +3 -0
  291. package/dist/node/src/tables/types.js.map +1 -0
  292. package/dist/node/src/tables/uiRender.js +368 -0
  293. package/dist/node/src/tables/uiRender.js.map +1 -0
  294. package/dist/node/src/text/constants.js +97 -0
  295. package/dist/node/src/text/constants.js.map +1 -0
  296. package/dist/node/src/text/extraFormatter.js +49 -0
  297. package/dist/node/src/text/extraFormatter.js.map +1 -0
  298. package/dist/node/src/text/helper.js +498 -0
  299. package/dist/node/src/text/helper.js.map +1 -0
  300. package/dist/node/src/text/icons/index.js +16 -0
  301. package/dist/node/src/text/icons/index.js.map +1 -0
  302. package/dist/node/src/text/index.js +15 -0
  303. package/dist/node/src/text/index.js.map +1 -0
  304. package/dist/node/src/text/pdfRender.js +167 -0
  305. package/dist/node/src/text/pdfRender.js.map +1 -0
  306. package/dist/node/src/text/propPanel.js +161 -0
  307. package/dist/node/src/text/propPanel.js.map +1 -0
  308. package/dist/node/src/text/types.js +3 -0
  309. package/dist/node/src/text/types.js.map +1 -0
  310. package/dist/node/src/text/uiRender.js +224 -0
  311. package/dist/node/src/text/uiRender.js.map +1 -0
  312. package/dist/node/src/utils.js +230 -0
  313. package/dist/node/src/utils.js.map +1 -0
  314. package/dist/types/__tests__/barcode.test.d.ts +1 -0
  315. package/dist/types/__tests__/multiVariableText.test.d.ts +1 -0
  316. package/dist/types/__tests__/text.test.d.ts +1 -0
  317. package/dist/types/__tests__/utils.test.d.ts +1 -0
  318. package/dist/types/src/barcodes/constants.d.ts +4 -0
  319. package/dist/types/src/barcodes/helper.d.ts +21 -0
  320. package/dist/types/src/barcodes/index.d.ts +4 -0
  321. package/dist/types/src/barcodes/pdfRender.d.ts +3 -0
  322. package/dist/types/src/barcodes/propPanel.d.ts +3 -0
  323. package/dist/types/src/barcodes/types.d.ts +10 -0
  324. package/dist/types/src/barcodes/uiRender.d.ts +3 -0
  325. package/dist/types/src/checkbox/index.d.ts +6 -0
  326. package/dist/types/src/constants.d.ts +2 -0
  327. package/dist/types/src/date/date.d.ts +2 -0
  328. package/dist/types/src/date/dateTime.d.ts +2 -0
  329. package/dist/types/src/date/helper.d.ts +8 -0
  330. package/dist/types/src/date/time.d.ts +2 -0
  331. package/dist/types/src/date/types.d.ts +17 -0
  332. package/dist/types/src/graphics/image.d.ts +5 -0
  333. package/dist/types/src/graphics/imagehelper.d.ts +4 -0
  334. package/dist/types/src/graphics/svg.d.ts +4 -0
  335. package/dist/types/src/index.d.ts +19 -0
  336. package/dist/types/src/multiVariableText/helper.d.ts +3 -0
  337. package/dist/types/src/multiVariableText/index.d.ts +4 -0
  338. package/dist/types/src/multiVariableText/pdfRender.d.ts +3 -0
  339. package/dist/types/src/multiVariableText/propPanel.d.ts +3 -0
  340. package/dist/types/src/multiVariableText/types.d.ts +5 -0
  341. package/dist/types/src/multiVariableText/uiRender.d.ts +3 -0
  342. package/dist/types/src/radioGroup/index.d.ts +7 -0
  343. package/dist/types/src/select/index.d.ts +7 -0
  344. package/dist/types/src/shapes/line.d.ts +6 -0
  345. package/dist/types/src/shapes/rectAndEllipse.d.ts +175 -0
  346. package/dist/types/src/tables/cell.d.ts +4 -0
  347. package/dist/types/src/tables/classes.d.ts +69 -0
  348. package/dist/types/src/tables/dynamicTemplate.d.ts +7 -0
  349. package/dist/types/src/tables/helper.d.ts +265 -0
  350. package/dist/types/src/tables/index.d.ts +4 -0
  351. package/dist/types/src/tables/pdfRender.d.ts +3 -0
  352. package/dist/types/src/tables/propPanel.d.ts +3 -0
  353. package/dist/types/src/tables/tableHelper.d.ts +10 -0
  354. package/dist/types/src/tables/types.d.ts +88 -0
  355. package/dist/types/src/tables/uiRender.d.ts +3 -0
  356. package/dist/types/src/text/constants.d.ts +23 -0
  357. package/dist/types/src/text/extraFormatter.d.ts +25 -0
  358. package/dist/types/src/text/helper.d.ts +39 -0
  359. package/dist/types/src/text/icons/index.d.ts +9 -0
  360. package/dist/types/src/text/index.d.ts +4 -0
  361. package/dist/types/src/text/pdfRender.d.ts +3 -0
  362. package/dist/types/src/text/propPanel.d.ts +3 -0
  363. package/dist/types/src/text/types.d.ts +28 -0
  364. package/dist/types/src/text/uiRender.d.ts +11 -0
  365. package/dist/types/src/utils.d.ts +40 -0
  366. package/eslint.config.mjs +22 -0
  367. package/package.json +97 -0
  368. package/src/barcodes/constants.ts +20 -0
  369. package/src/barcodes/helper.ts +187 -0
  370. package/src/barcodes/index.ts +23 -0
  371. package/src/barcodes/pdfRender.ts +37 -0
  372. package/src/barcodes/propPanel.ts +249 -0
  373. package/src/barcodes/types.ts +12 -0
  374. package/src/barcodes/uiRender.ts +94 -0
  375. package/src/checkbox/index.ts +70 -0
  376. package/src/constants.ts +2 -0
  377. package/src/date/date.ts +9 -0
  378. package/src/date/dateTime.ts +9 -0
  379. package/src/date/helper.ts +496 -0
  380. package/src/date/time.ts +9 -0
  381. package/src/date/types.ts +19 -0
  382. package/src/graphics/image.ts +201 -0
  383. package/src/graphics/imagehelper.ts +156 -0
  384. package/src/graphics/svg.ts +118 -0
  385. package/src/index.ts +39 -0
  386. package/src/multiVariableText/helper.ts +65 -0
  387. package/src/multiVariableText/index.ts +16 -0
  388. package/src/multiVariableText/pdfRender.ts +21 -0
  389. package/src/multiVariableText/propPanel.ts +160 -0
  390. package/src/multiVariableText/types.ts +6 -0
  391. package/src/multiVariableText/uiRender.ts +170 -0
  392. package/src/radioGroup/index.ts +115 -0
  393. package/src/select/index.ts +204 -0
  394. package/src/shapes/line.ts +94 -0
  395. package/src/shapes/rectAndEllipse.ts +152 -0
  396. package/src/tables/cell.ts +152 -0
  397. package/src/tables/classes.ts +402 -0
  398. package/src/tables/dynamicTemplate.ts +88 -0
  399. package/src/tables/helper.ts +216 -0
  400. package/src/tables/index.ts +15 -0
  401. package/src/tables/pdfRender.ts +144 -0
  402. package/src/tables/propPanel.ts +111 -0
  403. package/src/tables/tableHelper.ts +288 -0
  404. package/src/tables/types.ts +87 -0
  405. package/src/tables/uiRender.ts +436 -0
  406. package/src/text/constants.ts +104 -0
  407. package/src/text/extraFormatter.ts +83 -0
  408. package/src/text/helper.ts +550 -0
  409. package/src/text/icons/index.ts +30 -0
  410. package/src/text/index.ts +16 -0
  411. package/src/text/pdfRender.ts +239 -0
  412. package/src/text/propPanel.ts +184 -0
  413. package/src/text/types.ts +30 -0
  414. package/src/text/uiRender.ts +288 -0
  415. package/src/utils.ts +281 -0
  416. package/tsconfig.cjs.json +10 -0
  417. package/tsconfig.esm.json +11 -0
  418. package/tsconfig.json +6 -0
  419. package/tsconfig.node.json +11 -0
@@ -0,0 +1,288 @@
1
+ import type * as CSS from 'csstype';
2
+ import type { Font as FontKitFont } from 'fontkit';
3
+ import { UIRenderProps, getDefaultFont } from '@pdfme/common';
4
+ import type { TextSchema } from './types.js';
5
+ import {
6
+ DEFAULT_FONT_SIZE,
7
+ DEFAULT_ALIGNMENT,
8
+ VERTICAL_ALIGN_TOP,
9
+ VERTICAL_ALIGN_MIDDLE,
10
+ VERTICAL_ALIGN_BOTTOM,
11
+ DEFAULT_VERTICAL_ALIGNMENT,
12
+ DEFAULT_LINE_HEIGHT,
13
+ DEFAULT_CHARACTER_SPACING,
14
+ DEFAULT_FONT_COLOR,
15
+ PLACEHOLDER_FONT_COLOR,
16
+ } from './constants.js';
17
+ import {
18
+ calculateDynamicFontSize,
19
+ getFontKitFont,
20
+ getBrowserVerticalFontAdjustments,
21
+ isFirefox,
22
+ } from './helper.js';
23
+ import { isEditable } from '../utils.js';
24
+
25
+ const replaceUnsupportedChars = (text: string, fontKitFont: FontKitFont): string => {
26
+ const charSupportCache: { [char: string]: boolean } = {};
27
+
28
+ const isCharSupported = (char: string): boolean => {
29
+ if (char in charSupportCache) {
30
+ return charSupportCache[char];
31
+ }
32
+ const isSupported = fontKitFont.hasGlyphForCodePoint(char.codePointAt(0) || 0);
33
+ charSupportCache[char] = isSupported;
34
+ return isSupported;
35
+ };
36
+
37
+ const segments = text.split(/(\r\n|\n|\r)/);
38
+
39
+ return segments
40
+ .map((segment) => {
41
+ if (/\r\n|\n|\r/.test(segment)) {
42
+ return segment;
43
+ }
44
+
45
+ return segment
46
+ .split('')
47
+ .map((char) => {
48
+ if (/\s/.test(char) || char.charCodeAt(0) < 32) {
49
+ return char;
50
+ }
51
+
52
+ return isCharSupported(char) ? char : '〿';
53
+ })
54
+ .join('');
55
+ })
56
+ .join('');
57
+ };
58
+
59
+ export const uiRender = async (arg: UIRenderProps<TextSchema>) => {
60
+ const { value, schema, mode, onChange, stopEditing, tabIndex, placeholder, options, _cache } =
61
+ arg;
62
+ const usePlaceholder = isEditable(mode, schema) && placeholder && !value;
63
+ const getText = (element: HTMLDivElement) => {
64
+ let text = element.innerText;
65
+ if (text.endsWith('\n')) {
66
+ // contenteditable adds additional newline char retrieved with innerText
67
+ text = text.slice(0, -1);
68
+ }
69
+ return text;
70
+ };
71
+ const font = options?.font || getDefaultFont();
72
+ const fontKitFont = await getFontKitFont(
73
+ schema.fontName,
74
+ font,
75
+ _cache as Map<string, import('fontkit').Font>,
76
+ );
77
+ const textBlock = buildStyledTextContainer(
78
+ arg,
79
+ fontKitFont,
80
+ usePlaceholder ? placeholder : value,
81
+ );
82
+
83
+ const processedText = replaceUnsupportedChars(value, fontKitFont);
84
+
85
+ if (!isEditable(mode, schema)) {
86
+ // Read-only mode
87
+ textBlock.innerHTML = processedText
88
+ .split('')
89
+ .map(
90
+ (l, i) =>
91
+ `<span style="letter-spacing:${
92
+ String(value).length === i + 1 ? 0 : 'inherit'
93
+ };">${l}</span>`,
94
+ )
95
+ .join('');
96
+ return;
97
+ }
98
+
99
+ makeElementPlainTextContentEditable(textBlock);
100
+ textBlock.tabIndex = tabIndex || 0;
101
+ textBlock.innerText = mode === 'designer' ? value : processedText;
102
+ textBlock.addEventListener('blur', (e: Event) => {
103
+ if (onChange) onChange({ key: 'content', value: getText(e.target as HTMLDivElement) });
104
+ if (stopEditing) stopEditing();
105
+ });
106
+
107
+ if (schema.dynamicFontSize) {
108
+ let dynamicFontSize: undefined | number = undefined;
109
+
110
+ textBlock.addEventListener('keyup', () => {
111
+ setTimeout(() => {
112
+ // Use a regular function instead of an async one since we don't need await
113
+ (() => {
114
+ if (!textBlock.textContent) return;
115
+ dynamicFontSize = calculateDynamicFontSize({
116
+ textSchema: schema,
117
+ fontKitFont,
118
+ value: getText(textBlock),
119
+ startingFontSize: dynamicFontSize,
120
+ });
121
+ textBlock.style.fontSize = `${dynamicFontSize}pt`;
122
+
123
+ const { topAdj: newTopAdj, bottomAdj: newBottomAdj } = getBrowserVerticalFontAdjustments(
124
+ fontKitFont,
125
+ dynamicFontSize ?? schema.fontSize ?? DEFAULT_FONT_SIZE,
126
+ schema.lineHeight ?? DEFAULT_LINE_HEIGHT,
127
+ schema.verticalAlignment ?? DEFAULT_VERTICAL_ALIGNMENT,
128
+ );
129
+ textBlock.style.paddingTop = `${newTopAdj}px`;
130
+ textBlock.style.marginBottom = `${newBottomAdj}px`;
131
+ })();
132
+ }, 0);
133
+ });
134
+ }
135
+
136
+ if (usePlaceholder) {
137
+ textBlock.style.color = PLACEHOLDER_FONT_COLOR;
138
+ textBlock.addEventListener('focus', () => {
139
+ if (textBlock.innerText === placeholder) {
140
+ textBlock.innerText = '';
141
+ textBlock.style.color = schema.fontColor ?? DEFAULT_FONT_COLOR;
142
+ }
143
+ });
144
+ }
145
+
146
+ if (mode === 'designer') {
147
+ setTimeout(() => {
148
+ textBlock.focus();
149
+ // Set the focus to the end of the editable element when you focus, as we would for a textarea
150
+ const selection = window.getSelection();
151
+ const range = document.createRange();
152
+ if (selection && range) {
153
+ range.selectNodeContents(textBlock);
154
+ range.collapse(false); // Collapse range to the end
155
+ selection?.removeAllRanges();
156
+ selection?.addRange(range);
157
+ }
158
+ });
159
+ }
160
+ };
161
+
162
+ export const buildStyledTextContainer = (
163
+ arg: UIRenderProps<TextSchema>,
164
+ fontKitFont: FontKitFont,
165
+ value: string,
166
+ ) => {
167
+ const { schema, rootElement, mode } = arg;
168
+
169
+ let dynamicFontSize: undefined | number = undefined;
170
+
171
+ if (schema.dynamicFontSize && value) {
172
+ dynamicFontSize = calculateDynamicFontSize({
173
+ textSchema: schema,
174
+ fontKitFont,
175
+ value,
176
+ startingFontSize: dynamicFontSize,
177
+ });
178
+ }
179
+
180
+ // Depending on vertical alignment, we need to move the top or bottom of the font to keep
181
+ // it within it's defined box and align it with the generated pdf.
182
+ const { topAdj, bottomAdj } = getBrowserVerticalFontAdjustments(
183
+ fontKitFont,
184
+ dynamicFontSize ?? schema.fontSize ?? DEFAULT_FONT_SIZE,
185
+ schema.lineHeight ?? DEFAULT_LINE_HEIGHT,
186
+ schema.verticalAlignment ?? DEFAULT_VERTICAL_ALIGNMENT,
187
+ );
188
+
189
+ const topAdjustment = topAdj.toString();
190
+ const bottomAdjustment = bottomAdj.toString();
191
+
192
+ const container = document.createElement('div');
193
+
194
+ const containerStyle: CSS.Properties = {
195
+ padding: 0,
196
+ resize: 'none',
197
+ backgroundColor: getBackgroundColor(value, schema),
198
+ border: 'none',
199
+ display: 'flex',
200
+ flexDirection: 'column',
201
+ justifyContent: mapVerticalAlignToFlex(schema.verticalAlignment),
202
+ width: '100%',
203
+ height: '100%',
204
+ cursor: isEditable(mode, schema) ? 'text' : 'default',
205
+ };
206
+ Object.assign(container.style, containerStyle);
207
+ rootElement.innerHTML = '';
208
+ rootElement.appendChild(container);
209
+
210
+ // text decoration
211
+ const textDecorations = [];
212
+ if (schema.strikethrough) textDecorations.push('line-through');
213
+ if (schema.underline) textDecorations.push('underline');
214
+
215
+ const textBlockStyle: CSS.Properties = {
216
+ // Font formatting styles
217
+ fontFamily: schema.fontName ? `'${schema.fontName}'` : 'inherit',
218
+ color: schema.fontColor ? schema.fontColor : DEFAULT_FONT_COLOR,
219
+ fontSize: `${dynamicFontSize ?? schema.fontSize ?? DEFAULT_FONT_SIZE}pt`,
220
+ letterSpacing: `${schema.characterSpacing ?? DEFAULT_CHARACTER_SPACING}pt`,
221
+ lineHeight: `${schema.lineHeight ?? DEFAULT_LINE_HEIGHT}em`,
222
+ textAlign: schema.alignment ?? DEFAULT_ALIGNMENT,
223
+ whiteSpace: 'pre-wrap',
224
+ wordBreak: 'break-word',
225
+ // Block layout styles
226
+ resize: 'none',
227
+ border: 'none',
228
+ outline: 'none',
229
+ marginBottom: `${bottomAdjustment}px`,
230
+ paddingTop: `${topAdjustment}px`,
231
+ backgroundColor: 'transparent',
232
+ textDecoration: textDecorations.join(' '),
233
+ };
234
+
235
+ const textBlock = document.createElement('div');
236
+ textBlock.id = 'text-' + String(schema.id);
237
+ Object.assign(textBlock.style, textBlockStyle);
238
+
239
+ container.appendChild(textBlock);
240
+
241
+ return textBlock;
242
+ };
243
+
244
+ /**
245
+ * Firefox doesn't support 'plaintext-only' contentEditable mode, which we want to avoid mark-up.
246
+ * This function adds a workaround for Firefox to make the contentEditable element behave like 'plaintext-only'.
247
+ */
248
+ export const makeElementPlainTextContentEditable = (element: HTMLElement) => {
249
+ if (!isFirefox()) {
250
+ element.contentEditable = 'plaintext-only';
251
+ return;
252
+ }
253
+
254
+ element.contentEditable = 'true';
255
+ element.addEventListener('keydown', (e: KeyboardEvent) => {
256
+ if (e.key === 'Enter' && !e.shiftKey) {
257
+ e.preventDefault();
258
+ document.execCommand('insertLineBreak', false, undefined);
259
+ }
260
+ });
261
+
262
+ element.addEventListener('paste', (e: ClipboardEvent) => {
263
+ e.preventDefault();
264
+ const paste = e.clipboardData?.getData('text');
265
+ const selection = window.getSelection();
266
+ if (!selection?.rangeCount) return;
267
+ selection.deleteFromDocument();
268
+ selection.getRangeAt(0).insertNode(document.createTextNode(paste || ''));
269
+ selection.collapseToEnd();
270
+ });
271
+ };
272
+
273
+ export const mapVerticalAlignToFlex = (verticalAlignmentValue: string | undefined) => {
274
+ switch (verticalAlignmentValue) {
275
+ case VERTICAL_ALIGN_TOP:
276
+ return 'flex-start';
277
+ case VERTICAL_ALIGN_MIDDLE:
278
+ return 'center';
279
+ case VERTICAL_ALIGN_BOTTOM:
280
+ return 'flex-end';
281
+ }
282
+ return 'flex-start';
283
+ };
284
+
285
+ const getBackgroundColor = (value: string, schema: { backgroundColor?: string }) => {
286
+ if (!value || !schema.backgroundColor) return 'transparent';
287
+ return schema.backgroundColor;
288
+ };
package/src/utils.ts ADDED
@@ -0,0 +1,281 @@
1
+ import type * as CSS from 'csstype';
2
+ import { cmyk, degrees, degreesToRadians, rgb, Color } from '@pdfme/pdf-lib';
3
+ import { Schema, mm2pt, Mode, isHexValid, ColorType } from '@pdfme/common';
4
+ import { IconNode } from 'lucide';
5
+ import { getDynamicHeightsForTable as _getDynamicHeightsForTable } from './tables/dynamicTemplate.js';
6
+ export const convertForPdfLayoutProps = ({
7
+ schema,
8
+ pageHeight,
9
+ applyRotateTranslate = true,
10
+ }: {
11
+ schema: Schema;
12
+ pageHeight: number;
13
+ applyRotateTranslate?: boolean;
14
+ }) => {
15
+ const { width: mmWidth, height: mmHeight, position, rotate, opacity } = schema;
16
+ const { x: mmX, y: mmY } = position;
17
+
18
+ const rotateDegrees = rotate ? -rotate : 0;
19
+ const width = mm2pt(mmWidth);
20
+ const height = mm2pt(mmHeight);
21
+ let x = mm2pt(mmX);
22
+ // PDF coordinate system is from bottom left, UI is top left, so we need to flip the y axis
23
+ let y = pageHeight - mm2pt(mmY) - height;
24
+
25
+ if (rotateDegrees && applyRotateTranslate) {
26
+ // If rotating we must pivot around the same point as the UI performs its rotation.
27
+ // The UI performs rotation around the objects center point (the pivot point below),
28
+ // pdflib rotates around the bottom left corner of the object.
29
+ // We must therefore adjust the X and Y by rotating the bottom left corner by this pivot point.
30
+ const pivotPoint = { x: x + width / 2, y: pageHeight - mm2pt(mmY) - height / 2 };
31
+ const rotatedPoint = rotatePoint({ x, y }, pivotPoint, rotateDegrees);
32
+ x = rotatedPoint.x;
33
+ y = rotatedPoint.y;
34
+ }
35
+
36
+ return {
37
+ position: { x, y },
38
+ height: height,
39
+ width: width,
40
+ rotate: degrees(rotateDegrees),
41
+ opacity,
42
+ };
43
+ };
44
+
45
+ export const rotatePoint = (
46
+ point: { x: number; y: number },
47
+ pivot: { x: number; y: number },
48
+ angleDegrees: number,
49
+ ): { x: number; y: number } => {
50
+ const angleRadians = degreesToRadians(angleDegrees);
51
+
52
+ const x =
53
+ Math.cos(angleRadians) * (point.x - pivot.x) -
54
+ Math.sin(angleRadians) * (point.y - pivot.y) +
55
+ pivot.x;
56
+ const y =
57
+ Math.sin(angleRadians) * (point.x - pivot.x) +
58
+ Math.cos(angleRadians) * (point.y - pivot.y) +
59
+ pivot.y;
60
+
61
+ return { x, y };
62
+ };
63
+
64
+ export const getDynamicHeightsForTable = _getDynamicHeightsForTable;
65
+
66
+ // ----------------------------------------
67
+
68
+ export const addAlphaToHex = (hex: string, alphaPercentage: number) => {
69
+ if (!/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/i.test(hex)) {
70
+ throw new Error('Invalid HEX color code');
71
+ }
72
+ const alphaValue = Math.round((alphaPercentage / 100) * 255);
73
+ let alphaHex = alphaValue.toString(16);
74
+ if (alphaHex.length === 1) alphaHex = '0' + alphaHex;
75
+ return hex + alphaHex;
76
+ };
77
+
78
+ export const isEditable = (mode: Mode, schema: Schema) =>
79
+ mode === 'designer' || (mode === 'form' && schema.readOnly !== true);
80
+
81
+ const hex2rgb = (hex: string) => {
82
+ if (hex.slice(0, 1) === '#') hex = hex.slice(1);
83
+ if (hex.length === 3)
84
+ hex =
85
+ hex.slice(0, 1) +
86
+ hex.slice(0, 1) +
87
+ hex.slice(1, 2) +
88
+ hex.slice(1, 2) +
89
+ hex.slice(2, 3) +
90
+ hex.slice(2, 3);
91
+
92
+ return [hex.slice(0, 2), hex.slice(2, 4), hex.slice(4, 6)].map((str) => parseInt(str, 16));
93
+ };
94
+
95
+ export const hex2RgbColor = (hexString: string | undefined) => {
96
+ if (hexString) {
97
+ const isValid = isHexValid(hexString);
98
+
99
+ if (!isValid) {
100
+ throw new Error(`Invalid hex color value ${hexString}`);
101
+ }
102
+
103
+ const [r, g, b] = hex2rgb(hexString);
104
+
105
+ return rgb(r / 255, g / 255, b / 255);
106
+ }
107
+
108
+ return undefined;
109
+ };
110
+
111
+ const hex2CmykColor = (hexString: string | undefined) => {
112
+ if (hexString) {
113
+ const isValid = isHexValid(hexString);
114
+
115
+ if (!isValid) {
116
+ throw new Error(`Invalid hex color value ${hexString}`);
117
+ }
118
+
119
+ // Remove the # if it's present
120
+ hexString = hexString.replace('#', '');
121
+
122
+ // Extract the hexadecimal color code and the opacity
123
+ const hexColor = hexString.substring(0, 6);
124
+ const opacityColor = hexString.substring(6, 8);
125
+ const opacity = opacityColor ? parseInt(opacityColor, 16) / 255 : 1;
126
+
127
+ // Convert the hex values to decimal
128
+ let r = parseInt(hexColor.substring(0, 2), 16) / 255;
129
+ let g = parseInt(hexColor.substring(2, 4), 16) / 255;
130
+ let b = parseInt(hexColor.substring(4, 6), 16) / 255;
131
+
132
+ // Apply the opacity
133
+ r = r * opacity + (1 - opacity);
134
+ g = g * opacity + (1 - opacity);
135
+ b = b * opacity + (1 - opacity);
136
+
137
+ // Calculate the CMYK values
138
+ const k = 1 - Math.max(r, g, b);
139
+ const c = r === 0 ? 0 : (1 - r - k) / (1 - k);
140
+ const m = g === 0 ? 0 : (1 - g - k) / (1 - k);
141
+ const y = b === 0 ? 0 : (1 - b - k) / (1 - k);
142
+
143
+ return cmyk(c, m, y, k);
144
+ }
145
+
146
+ return undefined;
147
+ };
148
+
149
+ export const hex2PrintingColor = (color?: string | Color, colorType?: ColorType) => {
150
+ // if color is already CMYK, RGB or Grayscale, does not required to convert
151
+ if (typeof color === 'object') return color;
152
+ return colorType?.toLowerCase() == 'cmyk' ? hex2CmykColor(color) : hex2RgbColor(color);
153
+ };
154
+
155
+ export const readFile = (input: File | FileList | null): Promise<string | ArrayBuffer> =>
156
+ new Promise((resolve, reject) => {
157
+ const fileReader = new FileReader();
158
+
159
+ fileReader.onload = (e) => {
160
+ if (e.target?.result) {
161
+ resolve(e.target.result);
162
+ }
163
+ };
164
+
165
+ fileReader.onerror = () => {
166
+ reject(new Error('[@pdfme/schemas] File reading failed'));
167
+ };
168
+
169
+ let file: File | null = null;
170
+ if (input instanceof FileList && input.length > 0) {
171
+ file = input[0];
172
+ } else if (input instanceof File) {
173
+ file = input;
174
+ }
175
+
176
+ if (file) {
177
+ fileReader.readAsDataURL(file);
178
+ } else {
179
+ reject(new Error('[@pdfme/schemas] No files provided'));
180
+ }
181
+ });
182
+
183
+ export const createErrorElm = () => {
184
+ const container = document.createElement('div');
185
+ const containerStyle: CSS.Properties = {
186
+ display: 'flex',
187
+ alignItems: 'center',
188
+ justifyContent: 'center',
189
+ width: '100%',
190
+ height: '100%',
191
+ };
192
+ Object.assign(container.style, containerStyle);
193
+
194
+ const span = document.createElement('span');
195
+ const spanStyle: CSS.Properties = {
196
+ color: 'white',
197
+ background: 'red',
198
+ padding: '0.25rem',
199
+ fontSize: '12pt',
200
+ fontWeight: 'bold',
201
+ borderRadius: '2px',
202
+ fontFamily: "'Open Sans', sans-serif",
203
+ };
204
+ Object.assign(span.style, spanStyle);
205
+
206
+ span.textContent = 'ERROR';
207
+ container.appendChild(span);
208
+
209
+ return container;
210
+ };
211
+
212
+ export const createSvgStr = (icon: IconNode, attrs?: Record<string, string>): string => {
213
+ // In lucide 0.475.0, the icon is an array of elements, not a single SVG element
214
+ // We need to create an SVG wrapper and add the elements as children
215
+
216
+ // Handle non-array input
217
+ if (!Array.isArray(icon)) {
218
+ return String(icon);
219
+ }
220
+
221
+ // Create default SVG attributes
222
+ const svgAttrs = {
223
+ xmlns: 'http://www.w3.org/2000/svg',
224
+ width: '24',
225
+ height: '24',
226
+ viewBox: '0 0 24 24',
227
+ fill: 'none',
228
+ stroke: 'currentColor',
229
+ 'stroke-width': '2',
230
+ 'stroke-linecap': 'round',
231
+ 'stroke-linejoin': 'round',
232
+ ...(attrs || {}),
233
+ };
234
+
235
+ // Format SVG attributes string
236
+ const svgAttrString = Object.entries(svgAttrs)
237
+ .map(([key, value]) => `${key}="${value}"`)
238
+ .join(' ');
239
+
240
+ // Helper function to process a single element
241
+ const processElement = (element: unknown): string => {
242
+ if (!Array.isArray(element)) {
243
+ return String(element);
244
+ }
245
+
246
+ const [tag, attributes = {}, children = []] = element as [
247
+ unknown,
248
+ Record<string, string>,
249
+ unknown[],
250
+ ];
251
+ const tagName = String(tag);
252
+
253
+ // Format attributes string
254
+ const attrString = Object.entries(attributes)
255
+ .map(([key, value]) => `${key}="${value}"`)
256
+ .join(' ');
257
+
258
+ // Process children recursively
259
+ let childrenString = '';
260
+
261
+ if (Array.isArray(children) && children.length > 0) {
262
+ childrenString = children.map((child) => processElement(child)).join('');
263
+ }
264
+
265
+ // Return properly formatted element string
266
+ if (childrenString) {
267
+ return `<${String(tagName)}${attrString ? ' ' + String(attrString) : ''}>${childrenString}</${String(tagName)}>`;
268
+ } else {
269
+ // Self-closing tag for empty children
270
+ return `<${String(tagName)}${attrString ? ' ' + String(attrString) : ''}/>`;
271
+ }
272
+ };
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
+ };
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "../../tsconfig.base",
3
+ "compilerOptions": {
4
+ "module": "commonjs",
5
+ "outDir": "./dist/cjs",
6
+ "declaration": true,
7
+ "declarationDir": "dist/types",
8
+ "skipLibCheck": true
9
+ }
10
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "extends": "../../tsconfig.base",
3
+ "compilerOptions": {
4
+ "module": "ESNext",
5
+ "moduleResolution": "bundler",
6
+ "outDir": "./dist/esm",
7
+ "declaration": true,
8
+ "declarationDir": "dist/types",
9
+ "skipLibCheck": true
10
+ }
11
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "extends": "./tsconfig.esm",
3
+ "compilerOptions": {
4
+ "outDir": "./dist",
5
+ }
6
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "extends": "../../tsconfig.base",
3
+ "compilerOptions": {
4
+ "module": "NodeNext",
5
+ "moduleResolution": "NodeNext",
6
+ "outDir": "./dist/node",
7
+ "declaration": true,
8
+ "declarationDir": "dist/types",
9
+ "skipLibCheck": true
10
+ }
11
+ }