@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,496 @@
1
+ import type * as CSS from 'csstype';
2
+
3
+ import AirDatepicker from 'air-datepicker';
4
+ import type { AirDatepickerLocale, AirDatepickerButton, AirDatepickerDate } from 'air-datepicker';
5
+ import localeAr from 'air-datepicker/locale/ar';
6
+ import localeBg from 'air-datepicker/locale/bg';
7
+ import localeCa from 'air-datepicker/locale/ca';
8
+ import localeCs from 'air-datepicker/locale/cs';
9
+ import localeDa from 'air-datepicker/locale/da';
10
+ import localeDe from 'air-datepicker/locale/de';
11
+ import localeEl from 'air-datepicker/locale/el';
12
+ import localeEn from 'air-datepicker/locale/en';
13
+ import localeEs from 'air-datepicker/locale/es';
14
+ import localeEu from 'air-datepicker/locale/eu';
15
+ import localeFi from 'air-datepicker/locale/fi';
16
+ import localeFr from 'air-datepicker/locale/fr';
17
+ import localeHr from 'air-datepicker/locale/hr';
18
+ import localeHu from 'air-datepicker/locale/hu';
19
+ import localeId from 'air-datepicker/locale/id';
20
+ import localeIt from 'air-datepicker/locale/it';
21
+ import localeJa from 'air-datepicker/locale/ja';
22
+ import localeKo from 'air-datepicker/locale/ko';
23
+ import localeNb from 'air-datepicker/locale/nb';
24
+ import localeNl from 'air-datepicker/locale/nl';
25
+ import localeTh from 'air-datepicker/locale/th';
26
+ import localePl from 'air-datepicker/locale/pl';
27
+ import localePtBR from 'air-datepicker/locale/pt-BR';
28
+ import localePt from 'air-datepicker/locale/pt';
29
+ import localeRo from 'air-datepicker/locale/ro';
30
+ import localeRu from 'air-datepicker/locale/ru';
31
+ import localeSi from 'air-datepicker/locale/si';
32
+ import localeSk from 'air-datepicker/locale/sk';
33
+ import localeSl from 'air-datepicker/locale/sl';
34
+ import localeSv from 'air-datepicker/locale/sv';
35
+ import localeTr from 'air-datepicker/locale/tr';
36
+ import localeUk from 'air-datepicker/locale/uk';
37
+ import localeZh from 'air-datepicker/locale/zh';
38
+
39
+ import * as dateFns from 'date-fns/locale';
40
+ import { format } from 'date-fns';
41
+
42
+ import { Plugin, getFallbackFontName, DEFAULT_FONT_NAME, PropPanelSchema } from '@pdfme/common';
43
+ import text from '../text/index.js';
44
+ import { DEFAULT_OPACITY, HEX_COLOR_PATTERN } from '../constants.js';
45
+ import { mapVerticalAlignToFlex } from '../text/uiRender.js';
46
+ import {
47
+ DEFAULT_FONT_SIZE,
48
+ DEFAULT_ALIGNMENT,
49
+ VERTICAL_ALIGN_MIDDLE,
50
+ DEFAULT_LINE_HEIGHT,
51
+ DEFAULT_CHARACTER_SPACING,
52
+ DEFAULT_FONT_COLOR,
53
+ } from '../text/constants.js';
54
+ import { DateSchema } from './types.js';
55
+ import { getExtraFormatterSchema, Formatter } from '../text/extraFormatter.js';
56
+ import { isEditable } from '../utils.js';
57
+
58
+ interface AirDatepickerInstance {
59
+ selectedDates: Date[];
60
+ hide: () => void;
61
+ destroy: () => void;
62
+ show: () => void;
63
+ }
64
+
65
+ type PickerType = 'date' | 'time' | 'dateTime';
66
+
67
+ interface Locale {
68
+ label: string;
69
+ adLocale: AirDatepickerLocale;
70
+ formatLocale: dateFns.Locale;
71
+ }
72
+
73
+ const LOCALE_MAP: Record<string, Locale> = {
74
+ ar: { label: 'Arabic', adLocale: localeAr, formatLocale: dateFns.ar },
75
+ bg: { label: 'Bulgarian', adLocale: localeBg, formatLocale: dateFns.bg },
76
+ ca: { label: 'Catalan', adLocale: localeCa, formatLocale: dateFns.ca },
77
+ cs: { label: 'Czech', adLocale: localeCs, formatLocale: dateFns.cs },
78
+ da: { label: 'Danish', adLocale: localeDa, formatLocale: dateFns.da },
79
+ de: { label: 'German', adLocale: localeDe, formatLocale: dateFns.de },
80
+ el: { label: 'Greek', adLocale: localeEl, formatLocale: dateFns.el },
81
+ en: { label: 'English', adLocale: localeEn, formatLocale: dateFns.enUS },
82
+ es: { label: 'Spanish', adLocale: localeEs, formatLocale: dateFns.es },
83
+ eu: { label: 'Basque', adLocale: localeEu, formatLocale: dateFns.eu },
84
+ fi: { label: 'Finnish', adLocale: localeFi, formatLocale: dateFns.fi },
85
+ fr: { label: 'French', adLocale: localeFr, formatLocale: dateFns.fr },
86
+ hr: { label: 'Croatian', adLocale: localeHr, formatLocale: dateFns.hr },
87
+ hu: { label: 'Hungarian', adLocale: localeHu, formatLocale: dateFns.hu },
88
+ id: { label: 'Indonesian', adLocale: localeId, formatLocale: dateFns.id },
89
+ it: { label: 'Italian', adLocale: localeIt, formatLocale: dateFns.it },
90
+ ja: { label: 'Japanese', adLocale: localeJa, formatLocale: dateFns.ja },
91
+ ko: { label: 'Korean', adLocale: localeKo, formatLocale: dateFns.ko },
92
+ nb: { label: 'Norwegian Bokmål', adLocale: localeNb, formatLocale: dateFns.nb },
93
+ nl: { label: 'Dutch', adLocale: localeNl, formatLocale: dateFns.nl },
94
+ pl: { label: 'Polish', adLocale: localePl, formatLocale: dateFns.pl },
95
+ 'pt-Br': { label: 'Portuguese', adLocale: localePtBR, formatLocale: dateFns.ptBR },
96
+ pt: { label: 'Portuguese', adLocale: localePt, formatLocale: dateFns.pt },
97
+ ro: { label: 'Romanian', adLocale: localeRo, formatLocale: dateFns.ro },
98
+ ru: { label: 'Russian', adLocale: localeRu, formatLocale: dateFns.ru },
99
+ si: { label: 'Sinhala', adLocale: localeSi, formatLocale: dateFns.enUS },
100
+ sk: { label: 'Slovak', adLocale: localeSk, formatLocale: dateFns.sk },
101
+ sl: { label: 'Slovenian', adLocale: localeSl, formatLocale: dateFns.sl },
102
+ sv: { label: 'Swedish', adLocale: localeSv, formatLocale: dateFns.sv },
103
+ th: { label: 'Thai', adLocale: localeTh, formatLocale: dateFns.th },
104
+ tr: { label: 'Turkish', adLocale: localeTr, formatLocale: dateFns.tr },
105
+ uk: { label: 'Ukrainian', adLocale: localeUk, formatLocale: dateFns.uk },
106
+ zh: { label: 'Chinese', adLocale: localeZh, formatLocale: dateFns.zhCN },
107
+ };
108
+
109
+ const getAirDatepickerLocale = (locale: string) => {
110
+ const data = LOCALE_MAP[locale];
111
+ if (!data) {
112
+ throw new Error(`Unsupported locale: ${locale}`);
113
+ }
114
+ return data;
115
+ };
116
+
117
+ const airDatepickerCss = `.air-datepicker-cell.-year-.-other-decade-,.air-datepicker-cell.-day-.-other-month-{color:var(--adp-color-other-month)}.air-datepicker-cell.-year-.-other-decade-:hover,.air-datepicker-cell.-day-.-other-month-:hover{color:var(--adp-color-other-month-hover)}.-disabled-.-focus-.air-datepicker-cell.-year-.-other-decade-,.-disabled-.-focus-.air-datepicker-cell.-day-.-other-month-{color:var(--adp-color-other-month)}.-selected-.air-datepicker-cell.-year-.-other-decade-,.-selected-.air-datepicker-cell.-day-.-other-month-{color:#fff;background:var(--adp-background-color-selected-other-month)}.-selected-.-focus-.air-datepicker-cell.-year-.-other-decade-,.-selected-.-focus-.air-datepicker-cell.-day-.-other-month-{background:var(--adp-background-color-selected-other-month-focused)}.-in-range-.air-datepicker-cell.-year-.-other-decade-,.-in-range-.air-datepicker-cell.-day-.-other-month-{background-color:var(--adp-background-color-in-range);color:var(--adp-color)}.-in-range-.-focus-.air-datepicker-cell.-year-.-other-decade-,.-in-range-.-focus-.air-datepicker-cell.-day-.-other-month-{background-color:var(--adp-background-color-in-range-focused)}.air-datepicker-cell.-year-.-other-decade-:empty,.air-datepicker-cell.-day-.-other-month-:empty{background:none;border:none}.air-datepicker-cell{border-radius:var(--adp-cell-border-radius);box-sizing:border-box;cursor:pointer;display:flex;position:relative;align-items:center;justify-content:center;z-index:1}.air-datepicker-cell.-focus-{background:var(--adp-cell-background-color-hover)}.air-datepicker-cell.-current-{color:var(--adp-color-current-date)}.air-datepicker-cell.-current-.-focus-{color:var(--adp-color)}.air-datepicker-cell.-current-.-in-range-{color:var(--adp-color-current-date)}.air-datepicker-cell.-disabled-{cursor:default;color:var(--adp-color-disabled)}.air-datepicker-cell.-disabled-.-focus-{color:var(--adp-color-disabled)}.air-datepicker-cell.-disabled-.-in-range-{color:var(--adp-color-disabled-in-range)}.air-datepicker-cell.-disabled-.-current-.-focus-{color:var(--adp-color-disabled)}.air-datepicker-cell.-in-range-{background:var(--adp-cell-background-color-in-range);border-radius:0}.air-datepicker-cell.-in-range-:hover,.air-datepicker-cell.-in-range-.-focus-{background:var(--adp-cell-background-color-in-range-hover)}.air-datepicker-cell.-range-from-{border:1px solid var(--adp-cell-border-color-in-range);background-color:var(--adp-cell-background-color-in-range);border-radius:var(--adp-cell-border-radius) 0 0 var(--adp-cell-border-radius)}.air-datepicker-cell.-range-to-{border:1px solid var(--adp-cell-border-color-in-range);background-color:var(--adp-cell-background-color-in-range);border-radius:0 var(--adp-cell-border-radius) var(--adp-cell-border-radius) 0}.air-datepicker-cell.-range-to-.-range-from-{border-radius:var(--adp-cell-border-radius)}.air-datepicker-cell.-selected-{color:#fff;border:none;background:var(--adp-cell-background-color-selected)}.air-datepicker-cell.-selected-.-current-{color:#fff;background:var(--adp-cell-background-color-selected)}.air-datepicker-cell.-selected-.-focus-{background:var(--adp-cell-background-color-selected-hover)}
118
+ .air-datepicker-body{transition:all var(--adp-transition-duration) var(--adp-transition-ease)}.air-datepicker-body.-hidden-{display:none}.air-datepicker-body--day-names{display:grid;grid-template-columns:repeat(7, var(--adp-day-cell-width));margin:8px 0 3px}.air-datepicker-body--day-name{color:var(--adp-day-name-color);display:flex;align-items:center;justify-content:center;flex:1;text-align:center;text-transform:uppercase;font-size:.8em}.air-datepicker-body--day-name.-clickable-{cursor:pointer}.air-datepicker-body--day-name.-clickable-:hover{color:var(--adp-day-name-color-hover)}.air-datepicker-body--cells{display:grid}.air-datepicker-body--cells.-days-{grid-template-columns:repeat(7, var(--adp-day-cell-width));grid-auto-rows:var(--adp-day-cell-height)}.air-datepicker-body--cells.-months-{grid-template-columns:repeat(3, 1fr);grid-auto-rows:var(--adp-month-cell-height)}.air-datepicker-body--cells.-years-{grid-template-columns:repeat(4, 1fr);grid-auto-rows:var(--adp-year-cell-height)}
119
+ .air-datepicker-nav{display:flex;justify-content:space-between;border-bottom:1px solid var(--adp-border-color-inner);min-height:var(--adp-nav-height);padding:var(--adp-padding);box-sizing:content-box}.-only-timepicker- .air-datepicker-nav{display:none}.air-datepicker-nav--title,.air-datepicker-nav--action{display:flex;cursor:pointer;align-items:center;justify-content:center}.air-datepicker-nav--action{width:var(--adp-nav-action-size);border-radius:var(--adp-border-radius);-webkit-user-select:none;-moz-user-select:none;user-select:none}.air-datepicker-nav--action:hover{background:var(--adp-background-color-hover)}.air-datepicker-nav--action:active{background:var(--adp-background-color-active)}.air-datepicker-nav--action.-disabled-{visibility:hidden}.air-datepicker-nav--action svg{width:32px;height:32px}.air-datepicker-nav--action path{fill:none;stroke:var(--adp-nav-arrow-color);stroke-width:2px}.air-datepicker-nav--title{border-radius:var(--adp-border-radius);padding:0 8px}.air-datepicker-nav--title i{font-style:normal;color:var(--adp-nav-color-secondary);margin-left:.3em}.air-datepicker-nav--title:hover{background:var(--adp-background-color-hover)}.air-datepicker-nav--title:active{background:var(--adp-background-color-active)}.air-datepicker-nav--title.-disabled-{cursor:default;background:none}
120
+ .air-datepicker-buttons{display:grid;grid-auto-columns:1fr;grid-auto-flow:column}.air-datepicker-button{display:inline-flex;color:var(--adp-btn-color);border-radius:var(--adp-btn-border-radius);cursor:pointer;height:var(--adp-btn-height);border:none;background:rgba(255,255,255,0)}.air-datepicker-button:hover{color:var(--adp-btn-color-hover);background:var(--adp-btn-background-color-hover)}.air-datepicker-button:focus{color:var(--adp-btn-color-hover);background:var(--adp-btn-background-color-hover);outline:none}.air-datepicker-button:active{background:var(--adp-btn-background-color-active)}.air-datepicker-button span{outline:none;display:flex;align-items:center;justify-content:center;width:100%;height:100%}
121
+ .air-datepicker-time{display:grid;grid-template-columns:max-content 1fr;grid-column-gap:12px;align-items:center;position:relative;padding:0 var(--adp-time-padding-inner)}.-only-timepicker- .air-datepicker-time{border-top:none}.air-datepicker-time--current{display:flex;align-items:center;flex:1;font-size:14px;text-align:center}.air-datepicker-time--current-colon{margin:0 2px 3px;line-height:1}.air-datepicker-time--current-hours,.air-datepicker-time--current-minutes{line-height:1;font-size:19px;font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif;position:relative;z-index:1}.air-datepicker-time--current-hours:after,.air-datepicker-time--current-minutes:after{content:"";background:var(--adp-background-color-hover);border-radius:var(--adp-border-radius);position:absolute;left:-2px;top:-3px;right:-2px;bottom:-2px;z-index:-1;opacity:0}.air-datepicker-time--current-hours.-focus-:after,.air-datepicker-time--current-minutes.-focus-:after{opacity:1}.air-datepicker-time--current-ampm{text-transform:uppercase;align-self:flex-end;color:var(--adp-time-day-period-color);margin-left:6px;font-size:11px;margin-bottom:1px}.air-datepicker-time--row{display:flex;align-items:center;font-size:11px;height:17px;background:linear-gradient(to right, var(--adp-time-track-color), var(--adp-time-track-color)) left 50%/100% var(--adp-time-track-height) no-repeat}.air-datepicker-time--row:first-child{margin-bottom:4px}.air-datepicker-time--row input[type=range]{background:none;cursor:pointer;flex:1;height:100%;width:100%;padding:0;margin:0;-webkit-appearance:none}.air-datepicker-time--row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none}.air-datepicker-time--row input[type=range]::-ms-tooltip{display:none}.air-datepicker-time--row input[type=range]:hover::-webkit-slider-thumb{border-color:var(--adp-time-track-color-hover)}.air-datepicker-time--row input[type=range]:hover::-moz-range-thumb{border-color:var(--adp-time-track-color-hover)}.air-datepicker-time--row input[type=range]:hover::-ms-thumb{border-color:var(--adp-time-track-color-hover)}.air-datepicker-time--row input[type=range]:focus{outline:none}.air-datepicker-time--row input[type=range]:focus::-webkit-slider-thumb{background:var(--adp-cell-background-color-selected);border-color:var(--adp-cell-background-color-selected)}.air-datepicker-time--row input[type=range]:focus::-moz-range-thumb{background:var(--adp-cell-background-color-selected);border-color:var(--adp-cell-background-color-selected)}.air-datepicker-time--row input[type=range]:focus::-ms-thumb{background:var(--adp-cell-background-color-selected);border-color:var(--adp-cell-background-color-selected)}.air-datepicker-time--row input[type=range]::-webkit-slider-thumb{box-sizing:border-box;height:12px;width:12px;border-radius:3px;border:1px solid var(--adp-time-track-color);background:#fff;cursor:pointer;-webkit-transition:background var(--adp-transition-duration);transition:background var(--adp-transition-duration)}.air-datepicker-time--row input[type=range]::-moz-range-thumb{box-sizing:border-box;height:12px;width:12px;border-radius:3px;border:1px solid var(--adp-time-track-color);background:#fff;cursor:pointer;-moz-transition:background var(--adp-transition-duration);transition:background var(--adp-transition-duration)}.air-datepicker-time--row input[type=range]::-ms-thumb{box-sizing:border-box;height:12px;width:12px;border-radius:3px;border:1px solid var(--adp-time-track-color);background:#fff;cursor:pointer;-ms-transition:background var(--adp-transition-duration);transition:background var(--adp-transition-duration)}.air-datepicker-time--row input[type=range]::-webkit-slider-thumb{margin-top:calc(var(--adp-time-thumb-size)/2*-1)}.air-datepicker-time--row input[type=range]::-webkit-slider-runnable-track{border:none;height:var(--adp-time-track-height);cursor:pointer;color:rgba(0,0,0,0);background:rgba(0,0,0,0)}.air-datepicker-time--row input[type=range]::-moz-range-track{border:none;height:var(--adp-time-track-height);cursor:pointer;color:rgba(0,0,0,0);background:rgba(0,0,0,0)}.air-datepicker-time--row input[type=range]::-ms-track{border:none;height:var(--adp-time-track-height);cursor:pointer;color:rgba(0,0,0,0);background:rgba(0,0,0,0)}.air-datepicker-time--row input[type=range]::-ms-fill-lower{background:rgba(0,0,0,0)}.air-datepicker-time--row input[type=range]::-ms-fill-upper{background:rgba(0,0,0,0)}
122
+ .air-datepicker{--adp-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--adp-font-size: 14px;--adp-width: 246px;--adp-z-index: 100;--adp-padding: 4px;--adp-grid-areas: "nav" "body" "timepicker" "buttons";--adp-transition-duration: .3s;--adp-transition-ease: ease-out;--adp-transition-offset: 8px;--adp-background-color: #fff;--adp-background-color-hover: #f0f0f0;--adp-background-color-active: #eaeaea;--adp-background-color-in-range: rgba(92, 196, 239, .1);--adp-background-color-in-range-focused: rgba(92, 196, 239, .2);--adp-background-color-selected-other-month-focused: #8ad5f4;--adp-background-color-selected-other-month: #a2ddf6;--adp-color: #4a4a4a;--adp-color-secondary: #9c9c9c;--adp-accent-color: #4eb5e6;--adp-color-current-date: var(--adp-accent-color);--adp-color-other-month: #dedede;--adp-color-disabled: #aeaeae;--adp-color-disabled-in-range: #939393;--adp-color-other-month-hover: #c5c5c5;--adp-border-color: #dbdbdb;--adp-border-color-inner: #efefef;--adp-border-radius: 4px;--adp-border-color-inline: #d7d7d7;--adp-nav-height: 32px;--adp-nav-arrow-color: var(--adp-color-secondary);--adp-nav-action-size: 32px;--adp-nav-color-secondary: var(--adp-color-secondary);--adp-day-name-color: #ff9a19;--adp-day-name-color-hover: #8ad5f4;--adp-day-cell-width: 1fr;--adp-day-cell-height: 32px;--adp-month-cell-height: 42px;--adp-year-cell-height: 56px;--adp-pointer-size: 10px;--adp-poiner-border-radius: 2px;--adp-pointer-offset: 14px;--adp-cell-border-radius: 4px;--adp-cell-background-color-hover: var(--adp-background-color-hover);--adp-cell-background-color-selected: #5cc4ef;--adp-cell-background-color-selected-hover: #45bced;--adp-cell-background-color-in-range: rgba(92, 196, 239, 0.1);--adp-cell-background-color-in-range-hover: rgba(92, 196, 239, 0.2);--adp-cell-border-color-in-range: var(--adp-cell-background-color-selected);--adp-btn-height: 32px;--adp-btn-color: var(--adp-accent-color);--adp-btn-color-hover: var(--adp-color);--adp-btn-border-radius: var(--adp-border-radius);--adp-btn-background-color-hover: var(--adp-background-color-hover);--adp-btn-background-color-active: var(--adp-background-color-active);--adp-time-track-height: 1px;--adp-time-track-color: #dedede;--adp-time-track-color-hover: #b1b1b1;--adp-time-thumb-size: 12px;--adp-time-padding-inner: 10px;--adp-time-day-period-color: var(--adp-color-secondary);--adp-mobile-font-size: 16px;--adp-mobile-nav-height: 40px;--adp-mobile-width: 320px;--adp-mobile-day-cell-height: 38px;--adp-mobile-month-cell-height: 48px;--adp-mobile-year-cell-height: 64px}.air-datepicker-overlay{--adp-overlay-background-color: rgba(0, 0, 0, .3);--adp-overlay-transition-duration: .3s;--adp-overlay-transition-ease: ease-out;--adp-overlay-z-index: 99}
123
+ .air-datepicker{background:var(--adp-background-color);border:1px solid var(--adp-border-color);box-shadow:0 4px 12px rgba(0,0,0,.15);border-radius:var(--adp-border-radius);box-sizing:content-box;display:grid;grid-template-columns:1fr;grid-template-rows:repeat(4, max-content);grid-template-areas:var(--adp-grid-areas);font-family:var(--adp-font-family),sans-serif;font-size:var(--adp-font-size);color:var(--adp-color);width:var(--adp-width);position:absolute;transition:opacity var(--adp-transition-duration) var(--adp-transition-ease),transform var(--adp-transition-duration) var(--adp-transition-ease);z-index:var(--adp-z-index)}.air-datepicker:not(.-custom-position-){opacity:0}.air-datepicker.-from-top-{transform:translateY(calc(var(--adp-transition-offset) * -1))}.air-datepicker.-from-right-{transform:translateX(var(--adp-transition-offset))}.air-datepicker.-from-bottom-{transform:translateY(var(--adp-transition-offset))}.air-datepicker.-from-left-{transform:translateX(calc(var(--adp-transition-offset) * -1))}.air-datepicker.-active-:not(.-custom-position-){transform:translate(0, 0);opacity:1}.air-datepicker.-active-.-custom-position-{transition:none}.air-datepicker.-inline-{border-color:var(--adp-border-color-inline);box-shadow:none;position:static;left:auto;right:auto;opacity:1;transform:none}.air-datepicker.-inline- .air-datepicker--pointer{display:none}.air-datepicker.-is-mobile-{--adp-font-size: var(--adp-mobile-font-size);--adp-day-cell-height: var(--adp-mobile-day-cell-height);--adp-month-cell-height: var(--adp-mobile-month-cell-height);--adp-year-cell-height: var(--adp-mobile-year-cell-height);--adp-nav-height: var(--adp-mobile-nav-height);--adp-nav-action-size: var(--adp-mobile-nav-height);position:fixed;width:var(--adp-mobile-width);border:none}.air-datepicker.-is-mobile- *{-webkit-tap-highlight-color:rgba(0,0,0,0)}.air-datepicker.-is-mobile- .air-datepicker--pointer{display:none}.air-datepicker.-is-mobile-:not(.-custom-position-){transform:translate(-50%, calc(-50% + var(--adp-transition-offset)))}.air-datepicker.-is-mobile-.-active-:not(.-custom-position-){transform:translate(-50%, -50%)}.air-datepicker.-custom-position-{transition:none}.air-datepicker-global-container{position:absolute;left:0;top:0}.air-datepicker--pointer{--pointer-half-size: calc(var(--adp-pointer-size) / 2);position:absolute;width:var(--adp-pointer-size);height:var(--adp-pointer-size);z-index:-1}.air-datepicker--pointer:after{content:"";position:absolute;background:#fff;border-top:1px solid var(--adp-border-color-inline);border-right:1px solid var(--adp-border-color-inline);border-top-right-radius:var(--adp-poiner-border-radius);width:var(--adp-pointer-size);height:var(--adp-pointer-size);box-sizing:border-box}.-top-left- .air-datepicker--pointer,.-top-center- .air-datepicker--pointer,.-top-right- .air-datepicker--pointer,[data-popper-placement^=top] .air-datepicker--pointer{top:calc(100% - var(--pointer-half-size) + 1px)}.-top-left- .air-datepicker--pointer:after,.-top-center- .air-datepicker--pointer:after,.-top-right- .air-datepicker--pointer:after,[data-popper-placement^=top] .air-datepicker--pointer:after{transform:rotate(135deg)}.-right-top- .air-datepicker--pointer,.-right-center- .air-datepicker--pointer,.-right-bottom- .air-datepicker--pointer,[data-popper-placement^=right] .air-datepicker--pointer{right:calc(100% - var(--pointer-half-size) + 1px)}.-right-top- .air-datepicker--pointer:after,.-right-center- .air-datepicker--pointer:after,.-right-bottom- .air-datepicker--pointer:after,[data-popper-placement^=right] .air-datepicker--pointer:after{transform:rotate(225deg)}.-bottom-left- .air-datepicker--pointer,.-bottom-center- .air-datepicker--pointer,.-bottom-right- .air-datepicker--pointer,[data-popper-placement^=bottom] .air-datepicker--pointer{bottom:calc(100% - var(--pointer-half-size) + 1px)}.-bottom-left- .air-datepicker--pointer:after,.-bottom-center- .air-datepicker--pointer:after,.-bottom-right- .air-datepicker--pointer:after,[data-popper-placement^=bottom] .air-datepicker--pointer:after{transform:rotate(315deg)}.-left-top- .air-datepicker--pointer,.-left-center- .air-datepicker--pointer,.-left-bottom- .air-datepicker--pointer,[data-popper-placement^=left] .air-datepicker--pointer{left:calc(100% - var(--pointer-half-size) + 1px)}.-left-top- .air-datepicker--pointer:after,.-left-center- .air-datepicker--pointer:after,.-left-bottom- .air-datepicker--pointer:after,[data-popper-placement^=left] .air-datepicker--pointer:after{transform:rotate(45deg)}.-top-left- .air-datepicker--pointer,.-bottom-left- .air-datepicker--pointer{left:var(--adp-pointer-offset)}.-top-right- .air-datepicker--pointer,.-bottom-right- .air-datepicker--pointer{right:var(--adp-pointer-offset)}.-top-center- .air-datepicker--pointer,.-bottom-center- .air-datepicker--pointer{left:calc(50% - var(--adp-pointer-size)/2)}.-left-top- .air-datepicker--pointer,.-right-top- .air-datepicker--pointer{top:var(--adp-pointer-offset)}.-left-bottom- .air-datepicker--pointer,.-right-bottom- .air-datepicker--pointer{bottom:var(--adp-pointer-offset)}.-left-center- .air-datepicker--pointer,.-right-center- .air-datepicker--pointer{top:calc(50% - var(--adp-pointer-size)/2)}.air-datepicker--navigation{grid-area:nav}.air-datepicker--content{box-sizing:content-box;padding:var(--adp-padding);grid-area:body}.-only-timepicker- .air-datepicker--content{display:none}.air-datepicker--time{grid-area:timepicker}.air-datepicker--buttons{grid-area:buttons}.air-datepicker--buttons,.air-datepicker--time{padding:var(--adp-padding);border-top:1px solid var(--adp-border-color-inner)}.air-datepicker-overlay{position:fixed;background:var(--adp-overlay-background-color);left:0;top:0;width:0;height:0;opacity:0;transition:opacity var(--adp-overlay-transition-duration) var(--adp-overlay-transition-ease),left 0s,height 0s,width 0s;transition-delay:0s,var(--adp-overlay-transition-duration),var(--adp-overlay-transition-duration),var(--adp-overlay-transition-duration);z-index:var(--adp-overlay-z-index)}.air-datepicker-overlay.-active-{opacity:1;width:100%;height:100%;transition:opacity var(--adp-overlay-transition-duration) var(--adp-overlay-transition-ease),height 0s,width 0s}`;
124
+
125
+ const injectStyles = (css: string) => {
126
+ if (typeof document !== 'undefined') {
127
+ const styleElementId = 'pdfme-air-datepicker-styles';
128
+ if (!document.getElementById(styleElementId)) {
129
+ const style = document.createElement('style');
130
+ style.id = styleElementId;
131
+ style.type = 'text/css';
132
+ style.appendChild(document.createTextNode(css));
133
+ document.head.appendChild(style);
134
+ }
135
+ }
136
+ };
137
+
138
+ const strDateToDate = (strDate: string, type: PickerType): Date => {
139
+ if (!strDate.trim()) {
140
+ return new Date();
141
+ }
142
+
143
+ if (type === 'time') {
144
+ const dateTimePattern = /^\d{4}\/\d{2}\/\d{2} \d{2}:\d{2}$/;
145
+ if (dateTimePattern.test(strDate)) {
146
+ return new Date(strDate.replace(/\//g, '-').replace(' ', 'T'));
147
+ }
148
+ return new Date(`2021-01-01T${strDate}`);
149
+ }
150
+
151
+ return new Date(strDate);
152
+ };
153
+
154
+ const getFormat = (type: PickerType, locale: Locale): string => {
155
+ switch (type) {
156
+ case 'date': {
157
+ return locale.adLocale.dateFormat;
158
+ }
159
+ case 'time': {
160
+ return 'HH:mm';
161
+ }
162
+ case 'dateTime': {
163
+ return `${locale.adLocale.dateFormat} ${locale.adLocale.timeFormat}`;
164
+ }
165
+ }
166
+ };
167
+
168
+ const getFmtValue = (
169
+ value: string,
170
+ type: PickerType,
171
+ schema: DateSchema,
172
+ locale: Locale,
173
+ ): string => {
174
+ return value
175
+ ? format(strDateToDate(value, type), schema.format, {
176
+ locale: locale.formatLocale,
177
+ })
178
+ : '';
179
+ };
180
+
181
+ const getFmtContent = (date: Date | null, type: PickerType) => {
182
+ const fmt = (() => {
183
+ switch (type) {
184
+ case 'date': {
185
+ return 'yyyy/MM/dd';
186
+ }
187
+ case 'time': {
188
+ return 'HH:mm';
189
+ }
190
+ case 'dateTime': {
191
+ return 'yyyy/MM/dd HH:mm';
192
+ }
193
+ }
194
+ })();
195
+ return date ? format(date, fmt) : '';
196
+ };
197
+
198
+ export const getPlugin = ({ type, icon }: { type: PickerType; icon: string }) => {
199
+ const defaultLocale = 'en';
200
+ const defaultFormat = getFormat(type, getAirDatepickerLocale(defaultLocale));
201
+
202
+ const plugin: Plugin<DateSchema> = {
203
+ ui: async (arg) => {
204
+ const { schema, value, onChange, rootElement, mode, options, i18n } = arg;
205
+
206
+ const locale = getAirDatepickerLocale(schema.locale || options.lang || defaultLocale);
207
+
208
+ const textElement = document.createElement('div');
209
+ const textElementStyle: CSS.Properties = {
210
+ width: `${schema.width}mm`,
211
+ height: `${schema.height}mm`,
212
+ display: 'flex',
213
+ flexDirection: 'column',
214
+ justifyContent: mapVerticalAlignToFlex(VERTICAL_ALIGN_MIDDLE),
215
+ };
216
+ Object.assign(textElement.style, textElementStyle);
217
+
218
+ await text.ui({
219
+ ...arg,
220
+ rootElement: textElement,
221
+ mode: 'viewer',
222
+ value: getFmtValue(value, type, schema, locale),
223
+ schema: {
224
+ ...schema,
225
+ verticalAlignment: VERTICAL_ALIGN_MIDDLE,
226
+ lineHeight: DEFAULT_LINE_HEIGHT,
227
+ },
228
+ });
229
+
230
+ injectStyles(airDatepickerCss);
231
+
232
+ const beforeRemoveEvent = new Event('beforeRemove');
233
+ rootElement.dispatchEvent(beforeRemoveEvent);
234
+
235
+ const input = document.createElement('input');
236
+ Object.assign(input.style, { visibility: 'hidden', position: 'absolute' });
237
+
238
+ const commitChange = (date: Date | null) => {
239
+ if (onChange) {
240
+ onChange({ key: 'content', value: getFmtContent(date, type) });
241
+ }
242
+ };
243
+
244
+ const adButtons: AirDatepickerButton[] = [
245
+ {
246
+ content: i18n('cancel'),
247
+ onClick: (datepicker) => {
248
+ datepicker.hide();
249
+ },
250
+ },
251
+ {
252
+ content: i18n('clear'),
253
+ onClick: (datepicker) => {
254
+ datepicker.hide();
255
+ commitChange(null);
256
+ },
257
+ },
258
+ ];
259
+ if (type !== 'date') {
260
+ adButtons.push({
261
+ content: i18n('set'),
262
+ onClick: (datepicker) => {
263
+ datepicker.hide();
264
+ const date = datepicker.selectedDates.length ? datepicker.selectedDates[0] : null;
265
+ commitChange(date);
266
+ },
267
+ });
268
+ }
269
+ const airDatepicker = new AirDatepicker(input, {
270
+ locale: locale.adLocale,
271
+ selectedDates: value.trim() ? [strDateToDate(value, type)] : [],
272
+ dateFormat: (date: AirDatepickerDate) =>
273
+ format(date, schema.format, { locale: locale.formatLocale }),
274
+ timepicker: type !== 'date',
275
+ onlyTimepicker: type === 'time',
276
+ isMobile: window.innerWidth < 768,
277
+ buttons: adButtons,
278
+ position({ $datepicker, $target, $pointer, done }) {
279
+ $datepicker.style.position = 'fixed';
280
+ const offset = 5;
281
+ const scrollY = window.scrollY;
282
+ const scrollX = window.scrollX;
283
+
284
+ const targetRect = $target.getBoundingClientRect();
285
+ const dpHeight = $datepicker.offsetHeight;
286
+ const dpWidth = $datepicker.offsetWidth;
287
+
288
+ const spaceBelow = window.innerHeight - targetRect.bottom;
289
+ const spaceAbove = targetRect.top;
290
+
291
+ const showAbove = spaceBelow < dpHeight + offset && spaceAbove > dpHeight;
292
+
293
+ let top = showAbove
294
+ ? targetRect.top + scrollY - dpHeight - offset
295
+ : targetRect.bottom + scrollY + offset;
296
+
297
+ let left = targetRect.left + scrollX;
298
+
299
+ if (left + dpWidth > window.innerWidth) {
300
+ left = window.innerWidth - dpWidth - 10;
301
+ }
302
+
303
+ $datepicker.style.position = 'absolute';
304
+ $datepicker.style.top = `${top}px`;
305
+ $datepicker.style.left = `${left}px`;
306
+ if ($pointer) {
307
+ $pointer.style.display = 'block';
308
+ $pointer.style.position = 'absolute';
309
+ $pointer.style.left = '10px';
310
+ $pointer.style.top = showAbove ? 'calc(100% - 5px)' : '-5px';
311
+ $pointer.style.transform = showAbove ? 'rotate(135deg)' : 'rotate(-45deg)';
312
+ }
313
+ return function completeHide() {
314
+ done();
315
+ };
316
+ },
317
+ onSelect: ({ datepicker }: { datepicker: AirDatepickerInstance }) => {
318
+ if (type === 'date') {
319
+ commitChange(datepicker.selectedDates.length ? datepicker.selectedDates[0] : null);
320
+ datepicker.hide();
321
+ }
322
+ },
323
+ });
324
+
325
+ rootElement.addEventListener('beforeRemove', () => {
326
+ if (isEditable(mode, schema)) {
327
+ airDatepicker.destroy();
328
+ }
329
+ });
330
+ textElement.addEventListener('click', () => {
331
+ if (isEditable(mode, schema)) {
332
+ airDatepicker.show();
333
+ }
334
+ });
335
+
336
+ rootElement.appendChild(input);
337
+ rootElement.appendChild(textElement);
338
+ },
339
+ pdf: (arg) => {
340
+ const { schema, value, options } = arg;
341
+ if (!value) return void 0;
342
+ const locale = getAirDatepickerLocale(schema.locale || options.lang || defaultLocale);
343
+ return text.pdf({
344
+ ...arg,
345
+ value: getFmtValue(value, type, schema, locale),
346
+ schema: {
347
+ ...schema,
348
+ verticalAlignment: VERTICAL_ALIGN_MIDDLE,
349
+ lineHeight: DEFAULT_LINE_HEIGHT,
350
+ },
351
+ });
352
+ },
353
+ propPanel: {
354
+ schema: ({ options, i18n, activeSchema, changeSchemas }) => {
355
+ const font = options.font || { [DEFAULT_FONT_NAME]: { data: '', fallback: true } };
356
+ const fontNames = Object.keys(font);
357
+ const fallbackFontName = getFallbackFontName(font);
358
+
359
+ const locale = getAirDatepickerLocale(
360
+ (activeSchema as { locale?: string }).locale || options.lang || defaultLocale,
361
+ );
362
+
363
+ if (
364
+ (activeSchema as { locale?: string }).locale === undefined &&
365
+ (activeSchema as { locale?: string }).locale !== options.lang
366
+ ) {
367
+ changeSchemas([
368
+ { schemaId: activeSchema.id, key: 'locale', value: options.lang },
369
+ { schemaId: activeSchema.id, key: 'format', value: getFormat(type, locale) },
370
+ ]);
371
+ }
372
+
373
+ const formatter = getExtraFormatterSchema(i18n);
374
+ formatter.buttons = formatter.buttons.filter(
375
+ (button) => button.key === Formatter.ALIGNMENT,
376
+ );
377
+
378
+ const validateDateTimeFormat = (_rule: unknown, formatString: string): boolean => {
379
+ try {
380
+ format('Thu Jan 01 1970 00:00:00 GMT+0000', formatString, {
381
+ locale: locale.formatLocale,
382
+ });
383
+ return true;
384
+ } catch {
385
+ return false;
386
+ }
387
+ };
388
+
389
+ const localeOptions = Object.keys(LOCALE_MAP).map((lc) => ({
390
+ label: `${lc} (${LOCALE_MAP[lc].label})`,
391
+ value: lc,
392
+ }));
393
+
394
+ const dateSchema: Record<string, PropPanelSchema> = {
395
+ format: {
396
+ title: i18n('schemas.date.format'),
397
+ type: 'string',
398
+ default: getFormat(type, locale),
399
+ placeholder: getFormat(type, locale),
400
+ rules: [
401
+ {
402
+ validator: validateDateTimeFormat,
403
+ message: i18n('validation.dateTimeFormat'),
404
+ },
405
+ ],
406
+ span: 24,
407
+ },
408
+ fontName: {
409
+ title: i18n('schemas.text.fontName'),
410
+ type: 'string',
411
+ widget: 'select',
412
+ default: fallbackFontName,
413
+ placeholder: fallbackFontName,
414
+ props: { options: fontNames.map((name) => ({ label: name, value: name })) },
415
+ span: 12,
416
+ },
417
+ fontSize: {
418
+ title: i18n('schemas.text.size'),
419
+ type: 'number',
420
+ widget: 'inputNumber',
421
+ span: 6,
422
+ props: { min: 0 },
423
+ },
424
+ characterSpacing: {
425
+ title: i18n('schemas.text.spacing'),
426
+ type: 'number',
427
+ widget: 'inputNumber',
428
+ span: 6,
429
+ props: { min: 0 },
430
+ },
431
+ formatter,
432
+ fontColor: {
433
+ title: i18n('schemas.textColor'),
434
+ type: 'string',
435
+ widget: 'color',
436
+ props: {
437
+ disabledAlpha: true,
438
+ },
439
+ rules: [
440
+ {
441
+ pattern: HEX_COLOR_PATTERN,
442
+ message: i18n('validation.hexColor'),
443
+ },
444
+ ],
445
+ },
446
+ backgroundColor: {
447
+ title: i18n('schemas.bgColor'),
448
+ type: 'string',
449
+ widget: 'color',
450
+ props: {
451
+ disabledAlpha: true,
452
+ },
453
+ rules: [
454
+ {
455
+ pattern: HEX_COLOR_PATTERN,
456
+ message: i18n('validation.hexColor'),
457
+ },
458
+ ],
459
+ },
460
+ locale: {
461
+ title: i18n('schemas.date.locale'),
462
+ type: 'string',
463
+ widget: 'select',
464
+ props: {
465
+ options: localeOptions,
466
+ },
467
+ span: 16,
468
+ },
469
+ };
470
+
471
+ return dateSchema;
472
+ },
473
+ defaultSchema: {
474
+ name: '',
475
+ format: defaultFormat,
476
+ type,
477
+ content: getFmtContent(new Date(), type),
478
+ position: { x: 0, y: 0 },
479
+ width: 50,
480
+ height: 10,
481
+ rotate: 0,
482
+ alignment: DEFAULT_ALIGNMENT,
483
+ fontSize: DEFAULT_FONT_SIZE,
484
+ characterSpacing: DEFAULT_CHARACTER_SPACING,
485
+ fontColor: DEFAULT_FONT_COLOR,
486
+ fontName: undefined,
487
+ backgroundColor: '',
488
+ locale: undefined,
489
+ opacity: DEFAULT_OPACITY,
490
+ } as DateSchema,
491
+ },
492
+ icon,
493
+ };
494
+
495
+ return plugin;
496
+ };
@@ -0,0 +1,9 @@
1
+ import { getPlugin } from './helper.js';
2
+ import { createSvgStr } from '../utils.js';
3
+ import { Clock } from 'lucide';
4
+
5
+ const type = 'time';
6
+
7
+ const icon = createSvgStr(Clock);
8
+
9
+ export default getPlugin({ type, icon });
@@ -0,0 +1,19 @@
1
+ import { Schema } from '@pdfme/common';
2
+ import { ALIGNMENT } from '../text/types.js';
3
+
4
+ export interface DateSchema extends Schema {
5
+ format: string;
6
+ fontName?: string;
7
+ alignment: ALIGNMENT;
8
+ fontSize: number;
9
+ characterSpacing: number;
10
+ fontColor: string;
11
+ backgroundColor: string;
12
+ locale?: string;
13
+ // Explicitly include these properties from Schema for TypeScript
14
+ width: number;
15
+ height: number;
16
+ name: string;
17
+ type: string;
18
+ content?: string;
19
+ }