@pdfme/schemas 5.5.10-dev.5 → 6.0.0-dev.1
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.
- package/package.json +44 -60
- package/src/barcodes/helper.ts +2 -2
- package/src/barcodes/types.ts +2 -2
- package/src/builtins.ts +8 -0
- package/src/date/helper.ts +118 -70
- package/src/graphics/image.ts +3 -3
- package/src/graphics/signature.ts +136 -0
- package/src/index.ts +4 -4
- package/src/multiVariableText/propPanel.ts +17 -8
- package/src/multiVariableText/types.ts +2 -2
- package/src/multiVariableText/uiRender.ts +18 -31
- package/src/multiVariableText/variables.ts +63 -0
- package/src/shapes/rectAndEllipse.ts +2 -2
- package/src/tables/tableHelper.ts +3 -2
- package/src/tables/types.ts +2 -2
- package/src/tables/uiRender.ts +1 -1
- package/src/tables.ts +1 -0
- package/src/text/helper.ts +22 -5
- package/src/text/pdfRender.ts +2 -5
- package/src/text/types.ts +2 -2
- package/src/utils.ts +87 -14
- package/tsconfig.build.json +14 -0
- package/tsconfig.json +14 -4
- package/vite.config.mts +51 -0
- package/dist/cjs/__tests__/barcode.test.js +0 -354
- package/dist/cjs/__tests__/barcode.test.js.map +0 -1
- package/dist/cjs/__tests__/multiVariableText.test.js +0 -102
- package/dist/cjs/__tests__/multiVariableText.test.js.map +0 -1
- package/dist/cjs/__tests__/text.test.js +0 -419
- package/dist/cjs/__tests__/text.test.js.map +0 -1
- package/dist/cjs/__tests__/utils.test.js +0 -193
- package/dist/cjs/__tests__/utils.test.js.map +0 -1
- package/dist/cjs/src/barcodes/constants.js +0 -21
- package/dist/cjs/src/barcodes/constants.js.map +0 -1
- package/dist/cjs/src/barcodes/helper.js +0 -161
- package/dist/cjs/src/barcodes/helper.js.map +0 -1
- package/dist/cjs/src/barcodes/index.js +0 -18
- package/dist/cjs/src/barcodes/index.js.map +0 -1
- package/dist/cjs/src/barcodes/pdfRender.js +0 -29
- package/dist/cjs/src/barcodes/pdfRender.js.map +0 -1
- package/dist/cjs/src/barcodes/propPanel.js +0 -241
- package/dist/cjs/src/barcodes/propPanel.js.map +0 -1
- package/dist/cjs/src/barcodes/types.js +0 -3
- package/dist/cjs/src/barcodes/types.js.map +0 -1
- package/dist/cjs/src/barcodes/uiRender.js +0 -91
- package/dist/cjs/src/barcodes/uiRender.js.map +0 -1
- package/dist/cjs/src/checkbox/index.js +0 -62
- package/dist/cjs/src/checkbox/index.js.map +0 -1
- package/dist/cjs/src/constants.js +0 -6
- package/dist/cjs/src/constants.js.map +0 -1
- package/dist/cjs/src/date/date.js +0 -9
- package/dist/cjs/src/date/date.js.map +0 -1
- package/dist/cjs/src/date/dateTime.js +0 -9
- package/dist/cjs/src/date/dateTime.js.map +0 -1
- package/dist/cjs/src/date/helper.js +0 -462
- package/dist/cjs/src/date/helper.js.map +0 -1
- package/dist/cjs/src/date/time.js +0 -9
- package/dist/cjs/src/date/time.js.map +0 -1
- package/dist/cjs/src/date/types.js +0 -3
- package/dist/cjs/src/date/types.js.map +0 -1
- package/dist/cjs/src/graphics/image.js +0 -172
- package/dist/cjs/src/graphics/image.js.map +0 -1
- package/dist/cjs/src/graphics/imagehelper.js +0 -124
- package/dist/cjs/src/graphics/imagehelper.js.map +0 -1
- package/dist/cjs/src/graphics/svg.js +0 -112
- package/dist/cjs/src/graphics/svg.js.map +0 -1
- package/dist/cjs/src/index.js +0 -41
- package/dist/cjs/src/index.js.map +0 -1
- package/dist/cjs/src/multiVariableText/helper.js +0 -55
- package/dist/cjs/src/multiVariableText/helper.js.map +0 -1
- package/dist/cjs/src/multiVariableText/index.js +0 -16
- package/dist/cjs/src/multiVariableText/index.js.map +0 -1
- package/dist/cjs/src/multiVariableText/pdfRender.js +0 -20
- package/dist/cjs/src/multiVariableText/pdfRender.js.map +0 -1
- package/dist/cjs/src/multiVariableText/propPanel.js +0 -148
- package/dist/cjs/src/multiVariableText/propPanel.js.map +0 -1
- package/dist/cjs/src/multiVariableText/types.js +0 -3
- package/dist/cjs/src/multiVariableText/types.js.map +0 -1
- package/dist/cjs/src/multiVariableText/uiRender.js +0 -146
- package/dist/cjs/src/multiVariableText/uiRender.js.map +0 -1
- package/dist/cjs/src/radioGroup/index.js +0 -93
- package/dist/cjs/src/radioGroup/index.js.map +0 -1
- package/dist/cjs/src/sanitize.js +0 -57
- package/dist/cjs/src/sanitize.js.map +0 -1
- package/dist/cjs/src/select/index.js +0 -175
- package/dist/cjs/src/select/index.js.map +0 -1
- package/dist/cjs/src/shapes/line.js +0 -76
- package/dist/cjs/src/shapes/line.js.map +0 -1
- package/dist/cjs/src/shapes/rectAndEllipse.js +0 -140
- package/dist/cjs/src/shapes/rectAndEllipse.js.map +0 -1
- package/dist/cjs/src/tables/cell.js +0 -126
- package/dist/cjs/src/tables/cell.js.map +0 -1
- package/dist/cjs/src/tables/classes.js +0 -467
- package/dist/cjs/src/tables/classes.js.map +0 -1
- package/dist/cjs/src/tables/dynamicTemplate.js +0 -66
- package/dist/cjs/src/tables/dynamicTemplate.js.map +0 -1
- package/dist/cjs/src/tables/helper.js +0 -189
- package/dist/cjs/src/tables/helper.js.map +0 -1
- package/dist/cjs/src/tables/index.js +0 -15
- package/dist/cjs/src/tables/index.js.map +0 -1
- package/dist/cjs/src/tables/pdfRender.js +0 -109
- package/dist/cjs/src/tables/pdfRender.js.map +0 -1
- package/dist/cjs/src/tables/propPanel.js +0 -108
- package/dist/cjs/src/tables/propPanel.js.map +0 -1
- package/dist/cjs/src/tables/tableHelper.js +0 -200
- package/dist/cjs/src/tables/tableHelper.js.map +0 -1
- package/dist/cjs/src/tables/types.js +0 -3
- package/dist/cjs/src/tables/types.js.map +0 -1
- package/dist/cjs/src/tables/uiRender.js +0 -368
- package/dist/cjs/src/tables/uiRender.js.map +0 -1
- package/dist/cjs/src/text/constants.js +0 -97
- package/dist/cjs/src/text/constants.js.map +0 -1
- package/dist/cjs/src/text/extraFormatter.js +0 -49
- package/dist/cjs/src/text/extraFormatter.js.map +0 -1
- package/dist/cjs/src/text/helper.js +0 -504
- package/dist/cjs/src/text/helper.js.map +0 -1
- package/dist/cjs/src/text/icons/index.js +0 -16
- package/dist/cjs/src/text/icons/index.js.map +0 -1
- package/dist/cjs/src/text/index.js +0 -15
- package/dist/cjs/src/text/index.js.map +0 -1
- package/dist/cjs/src/text/pdfRender.js +0 -170
- package/dist/cjs/src/text/pdfRender.js.map +0 -1
- package/dist/cjs/src/text/propPanel.js +0 -161
- package/dist/cjs/src/text/propPanel.js.map +0 -1
- package/dist/cjs/src/text/types.js +0 -3
- package/dist/cjs/src/text/types.js.map +0 -1
- package/dist/cjs/src/text/uiRender.js +0 -231
- package/dist/cjs/src/text/uiRender.js.map +0 -1
- package/dist/cjs/src/utils.js +0 -230
- package/dist/cjs/src/utils.js.map +0 -1
- package/dist/esm/__tests__/barcode.test.js +0 -349
- package/dist/esm/__tests__/barcode.test.js.map +0 -1
- package/dist/esm/__tests__/multiVariableText.test.js +0 -100
- package/dist/esm/__tests__/multiVariableText.test.js.map +0 -1
- package/dist/esm/__tests__/text.test.js +0 -384
- package/dist/esm/__tests__/text.test.js.map +0 -1
- package/dist/esm/__tests__/utils.test.js +0 -191
- package/dist/esm/__tests__/utils.test.js.map +0 -1
- package/dist/esm/src/barcodes/constants.js +0 -18
- package/dist/esm/src/barcodes/constants.js.map +0 -1
- package/dist/esm/src/barcodes/helper.js +0 -151
- package/dist/esm/src/barcodes/helper.js.map +0 -1
- package/dist/esm/src/barcodes/index.js +0 -16
- package/dist/esm/src/barcodes/index.js.map +0 -1
- package/dist/esm/src/barcodes/pdfRender.js +0 -25
- package/dist/esm/src/barcodes/pdfRender.js.map +0 -1
- package/dist/esm/src/barcodes/propPanel.js +0 -237
- package/dist/esm/src/barcodes/propPanel.js.map +0 -1
- package/dist/esm/src/barcodes/types.js +0 -2
- package/dist/esm/src/barcodes/types.js.map +0 -1
- package/dist/esm/src/barcodes/uiRender.js +0 -87
- package/dist/esm/src/barcodes/uiRender.js.map +0 -1
- package/dist/esm/src/checkbox/index.js +0 -57
- package/dist/esm/src/checkbox/index.js.map +0 -1
- package/dist/esm/src/constants.js +0 -3
- package/dist/esm/src/constants.js.map +0 -1
- package/dist/esm/src/date/date.js +0 -7
- package/dist/esm/src/date/date.js.map +0 -1
- package/dist/esm/src/date/dateTime.js +0 -7
- package/dist/esm/src/date/dateTime.js.map +0 -1
- package/dist/esm/src/date/helper.js +0 -422
- package/dist/esm/src/date/helper.js.map +0 -1
- package/dist/esm/src/date/time.js +0 -7
- package/dist/esm/src/date/time.js.map +0 -1
- package/dist/esm/src/date/types.js +0 -2
- package/dist/esm/src/date/types.js.map +0 -1
- package/dist/esm/src/graphics/image.js +0 -170
- package/dist/esm/src/graphics/image.js.map +0 -1
- package/dist/esm/src/graphics/imagehelper.js +0 -120
- package/dist/esm/src/graphics/imagehelper.js.map +0 -1
- package/dist/esm/src/graphics/svg.js +0 -110
- package/dist/esm/src/graphics/svg.js.map +0 -1
- package/dist/esm/src/index.js +0 -21
- package/dist/esm/src/index.js.map +0 -1
- package/dist/esm/src/multiVariableText/helper.js +0 -50
- package/dist/esm/src/multiVariableText/helper.js.map +0 -1
- package/dist/esm/src/multiVariableText/index.js +0 -14
- package/dist/esm/src/multiVariableText/index.js.map +0 -1
- package/dist/esm/src/multiVariableText/pdfRender.js +0 -16
- package/dist/esm/src/multiVariableText/pdfRender.js.map +0 -1
- package/dist/esm/src/multiVariableText/propPanel.js +0 -145
- package/dist/esm/src/multiVariableText/propPanel.js.map +0 -1
- package/dist/esm/src/multiVariableText/types.js +0 -2
- package/dist/esm/src/multiVariableText/types.js.map +0 -1
- package/dist/esm/src/multiVariableText/uiRender.js +0 -142
- package/dist/esm/src/multiVariableText/uiRender.js.map +0 -1
- package/dist/esm/src/radioGroup/index.js +0 -88
- package/dist/esm/src/radioGroup/index.js.map +0 -1
- package/dist/esm/src/sanitize.js +0 -50
- package/dist/esm/src/sanitize.js.map +0 -1
- package/dist/esm/src/select/index.js +0 -170
- package/dist/esm/src/select/index.js.map +0 -1
- package/dist/esm/src/shapes/line.js +0 -74
- package/dist/esm/src/shapes/line.js.map +0 -1
- package/dist/esm/src/shapes/rectAndEllipse.js +0 -137
- package/dist/esm/src/shapes/rectAndEllipse.js.map +0 -1
- package/dist/esm/src/tables/cell.js +0 -121
- package/dist/esm/src/tables/cell.js.map +0 -1
- package/dist/esm/src/tables/classes.js +0 -460
- package/dist/esm/src/tables/classes.js.map +0 -1
- package/dist/esm/src/tables/dynamicTemplate.js +0 -62
- package/dist/esm/src/tables/dynamicTemplate.js.map +0 -1
- package/dist/esm/src/tables/helper.js +0 -181
- package/dist/esm/src/tables/helper.js.map +0 -1
- package/dist/esm/src/tables/index.js +0 -13
- package/dist/esm/src/tables/index.js.map +0 -1
- package/dist/esm/src/tables/pdfRender.js +0 -102
- package/dist/esm/src/tables/pdfRender.js.map +0 -1
- package/dist/esm/src/tables/propPanel.js +0 -105
- package/dist/esm/src/tables/propPanel.js.map +0 -1
- package/dist/esm/src/tables/tableHelper.js +0 -197
- package/dist/esm/src/tables/tableHelper.js.map +0 -1
- package/dist/esm/src/tables/types.js +0 -2
- package/dist/esm/src/tables/types.js.map +0 -1
- package/dist/esm/src/tables/uiRender.js +0 -361
- package/dist/esm/src/tables/uiRender.js.map +0 -1
- package/dist/esm/src/text/constants.js +0 -94
- package/dist/esm/src/text/constants.js.map +0 -1
- package/dist/esm/src/text/extraFormatter.js +0 -45
- package/dist/esm/src/text/extraFormatter.js.map +0 -1
- package/dist/esm/src/text/helper.js +0 -457
- package/dist/esm/src/text/helper.js.map +0 -1
- package/dist/esm/src/text/icons/index.js +0 -13
- package/dist/esm/src/text/icons/index.js.map +0 -1
- package/dist/esm/src/text/index.js +0 -13
- package/dist/esm/src/text/index.js.map +0 -1
- package/dist/esm/src/text/pdfRender.js +0 -166
- package/dist/esm/src/text/pdfRender.js.map +0 -1
- package/dist/esm/src/text/propPanel.js +0 -158
- package/dist/esm/src/text/propPanel.js.map +0 -1
- package/dist/esm/src/text/types.js +0 -2
- package/dist/esm/src/text/types.js.map +0 -1
- package/dist/esm/src/text/uiRender.js +0 -224
- package/dist/esm/src/text/uiRender.js.map +0 -1
- package/dist/esm/src/utils.js +0 -218
- package/dist/esm/src/utils.js.map +0 -1
- package/dist/node/__tests__/barcode.test.js +0 -354
- package/dist/node/__tests__/barcode.test.js.map +0 -1
- package/dist/node/__tests__/multiVariableText.test.js +0 -102
- package/dist/node/__tests__/multiVariableText.test.js.map +0 -1
- package/dist/node/__tests__/text.test.js +0 -419
- package/dist/node/__tests__/text.test.js.map +0 -1
- package/dist/node/__tests__/utils.test.js +0 -193
- package/dist/node/__tests__/utils.test.js.map +0 -1
- package/dist/node/src/barcodes/constants.js +0 -21
- package/dist/node/src/barcodes/constants.js.map +0 -1
- package/dist/node/src/barcodes/helper.js +0 -161
- package/dist/node/src/barcodes/helper.js.map +0 -1
- package/dist/node/src/barcodes/index.js +0 -18
- package/dist/node/src/barcodes/index.js.map +0 -1
- package/dist/node/src/barcodes/pdfRender.js +0 -29
- package/dist/node/src/barcodes/pdfRender.js.map +0 -1
- package/dist/node/src/barcodes/propPanel.js +0 -241
- package/dist/node/src/barcodes/propPanel.js.map +0 -1
- package/dist/node/src/barcodes/types.js +0 -3
- package/dist/node/src/barcodes/types.js.map +0 -1
- package/dist/node/src/barcodes/uiRender.js +0 -91
- package/dist/node/src/barcodes/uiRender.js.map +0 -1
- package/dist/node/src/checkbox/index.js +0 -62
- package/dist/node/src/checkbox/index.js.map +0 -1
- package/dist/node/src/constants.js +0 -6
- package/dist/node/src/constants.js.map +0 -1
- package/dist/node/src/date/date.js +0 -9
- package/dist/node/src/date/date.js.map +0 -1
- package/dist/node/src/date/dateTime.js +0 -9
- package/dist/node/src/date/dateTime.js.map +0 -1
- package/dist/node/src/date/helper.js +0 -462
- package/dist/node/src/date/helper.js.map +0 -1
- package/dist/node/src/date/time.js +0 -9
- package/dist/node/src/date/time.js.map +0 -1
- package/dist/node/src/date/types.js +0 -3
- package/dist/node/src/date/types.js.map +0 -1
- package/dist/node/src/graphics/image.js +0 -172
- package/dist/node/src/graphics/image.js.map +0 -1
- package/dist/node/src/graphics/imagehelper.js +0 -124
- package/dist/node/src/graphics/imagehelper.js.map +0 -1
- package/dist/node/src/graphics/svg.js +0 -112
- package/dist/node/src/graphics/svg.js.map +0 -1
- package/dist/node/src/index.js +0 -41
- package/dist/node/src/index.js.map +0 -1
- package/dist/node/src/multiVariableText/helper.js +0 -55
- package/dist/node/src/multiVariableText/helper.js.map +0 -1
- package/dist/node/src/multiVariableText/index.js +0 -16
- package/dist/node/src/multiVariableText/index.js.map +0 -1
- package/dist/node/src/multiVariableText/pdfRender.js +0 -20
- package/dist/node/src/multiVariableText/pdfRender.js.map +0 -1
- package/dist/node/src/multiVariableText/propPanel.js +0 -148
- package/dist/node/src/multiVariableText/propPanel.js.map +0 -1
- package/dist/node/src/multiVariableText/types.js +0 -3
- package/dist/node/src/multiVariableText/types.js.map +0 -1
- package/dist/node/src/multiVariableText/uiRender.js +0 -146
- package/dist/node/src/multiVariableText/uiRender.js.map +0 -1
- package/dist/node/src/radioGroup/index.js +0 -93
- package/dist/node/src/radioGroup/index.js.map +0 -1
- package/dist/node/src/sanitize.js +0 -57
- package/dist/node/src/sanitize.js.map +0 -1
- package/dist/node/src/select/index.js +0 -175
- package/dist/node/src/select/index.js.map +0 -1
- package/dist/node/src/shapes/line.js +0 -76
- package/dist/node/src/shapes/line.js.map +0 -1
- package/dist/node/src/shapes/rectAndEllipse.js +0 -140
- package/dist/node/src/shapes/rectAndEllipse.js.map +0 -1
- package/dist/node/src/tables/cell.js +0 -126
- package/dist/node/src/tables/cell.js.map +0 -1
- package/dist/node/src/tables/classes.js +0 -467
- package/dist/node/src/tables/classes.js.map +0 -1
- package/dist/node/src/tables/dynamicTemplate.js +0 -66
- package/dist/node/src/tables/dynamicTemplate.js.map +0 -1
- package/dist/node/src/tables/helper.js +0 -189
- package/dist/node/src/tables/helper.js.map +0 -1
- package/dist/node/src/tables/index.js +0 -15
- package/dist/node/src/tables/index.js.map +0 -1
- package/dist/node/src/tables/pdfRender.js +0 -109
- package/dist/node/src/tables/pdfRender.js.map +0 -1
- package/dist/node/src/tables/propPanel.js +0 -108
- package/dist/node/src/tables/propPanel.js.map +0 -1
- package/dist/node/src/tables/tableHelper.js +0 -200
- package/dist/node/src/tables/tableHelper.js.map +0 -1
- package/dist/node/src/tables/types.js +0 -3
- package/dist/node/src/tables/types.js.map +0 -1
- package/dist/node/src/tables/uiRender.js +0 -368
- package/dist/node/src/tables/uiRender.js.map +0 -1
- package/dist/node/src/text/constants.js +0 -97
- package/dist/node/src/text/constants.js.map +0 -1
- package/dist/node/src/text/extraFormatter.js +0 -49
- package/dist/node/src/text/extraFormatter.js.map +0 -1
- package/dist/node/src/text/helper.js +0 -504
- package/dist/node/src/text/helper.js.map +0 -1
- package/dist/node/src/text/icons/index.js +0 -16
- package/dist/node/src/text/icons/index.js.map +0 -1
- package/dist/node/src/text/index.js +0 -15
- package/dist/node/src/text/index.js.map +0 -1
- package/dist/node/src/text/pdfRender.js +0 -170
- package/dist/node/src/text/pdfRender.js.map +0 -1
- package/dist/node/src/text/propPanel.js +0 -161
- package/dist/node/src/text/propPanel.js.map +0 -1
- package/dist/node/src/text/types.js +0 -3
- package/dist/node/src/text/types.js.map +0 -1
- package/dist/node/src/text/uiRender.js +0 -231
- package/dist/node/src/text/uiRender.js.map +0 -1
- package/dist/node/src/utils.js +0 -230
- package/dist/node/src/utils.js.map +0 -1
- package/dist/types/__tests__/barcode.test.d.ts +0 -1
- package/dist/types/__tests__/multiVariableText.test.d.ts +0 -1
- package/dist/types/__tests__/text.test.d.ts +0 -1
- package/dist/types/__tests__/utils.test.d.ts +0 -1
- package/dist/types/src/barcodes/constants.d.ts +0 -4
- package/dist/types/src/barcodes/helper.d.ts +0 -21
- package/dist/types/src/barcodes/index.d.ts +0 -4
- package/dist/types/src/barcodes/pdfRender.d.ts +0 -3
- package/dist/types/src/barcodes/propPanel.d.ts +0 -3
- package/dist/types/src/barcodes/types.d.ts +0 -10
- package/dist/types/src/barcodes/uiRender.d.ts +0 -3
- package/dist/types/src/checkbox/index.d.ts +0 -6
- package/dist/types/src/constants.d.ts +0 -2
- package/dist/types/src/date/date.d.ts +0 -2
- package/dist/types/src/date/dateTime.d.ts +0 -2
- package/dist/types/src/date/helper.d.ts +0 -8
- package/dist/types/src/date/time.d.ts +0 -2
- package/dist/types/src/date/types.d.ts +0 -17
- package/dist/types/src/graphics/image.d.ts +0 -5
- package/dist/types/src/graphics/imagehelper.d.ts +0 -4
- package/dist/types/src/graphics/svg.d.ts +0 -4
- package/dist/types/src/index.d.ts +0 -19
- package/dist/types/src/multiVariableText/helper.d.ts +0 -3
- package/dist/types/src/multiVariableText/index.d.ts +0 -4
- package/dist/types/src/multiVariableText/pdfRender.d.ts +0 -3
- package/dist/types/src/multiVariableText/propPanel.d.ts +0 -3
- package/dist/types/src/multiVariableText/types.d.ts +0 -5
- package/dist/types/src/multiVariableText/uiRender.d.ts +0 -3
- package/dist/types/src/radioGroup/index.d.ts +0 -7
- package/dist/types/src/sanitize.d.ts +0 -1
- package/dist/types/src/select/index.d.ts +0 -7
- package/dist/types/src/shapes/line.d.ts +0 -6
- package/dist/types/src/shapes/rectAndEllipse.d.ts +0 -175
- package/dist/types/src/tables/cell.d.ts +0 -4
- package/dist/types/src/tables/classes.d.ts +0 -69
- package/dist/types/src/tables/dynamicTemplate.d.ts +0 -7
- package/dist/types/src/tables/helper.d.ts +0 -265
- package/dist/types/src/tables/index.d.ts +0 -4
- package/dist/types/src/tables/pdfRender.d.ts +0 -3
- package/dist/types/src/tables/propPanel.d.ts +0 -3
- package/dist/types/src/tables/tableHelper.d.ts +0 -10
- package/dist/types/src/tables/types.d.ts +0 -88
- package/dist/types/src/tables/uiRender.d.ts +0 -3
- package/dist/types/src/text/constants.d.ts +0 -23
- package/dist/types/src/text/extraFormatter.d.ts +0 -25
- package/dist/types/src/text/helper.d.ts +0 -39
- package/dist/types/src/text/icons/index.d.ts +0 -9
- package/dist/types/src/text/index.d.ts +0 -4
- package/dist/types/src/text/pdfRender.d.ts +0 -3
- package/dist/types/src/text/propPanel.d.ts +0 -3
- package/dist/types/src/text/types.d.ts +0 -28
- package/dist/types/src/text/uiRender.d.ts +0 -11
- package/dist/types/src/utils.d.ts +0 -40
- package/eslint.config.mjs +0 -22
- package/tsconfig.cjs.json +0 -10
- package/tsconfig.esm.json +0 -11
- package/tsconfig.node.json +0 -11
package/package.json
CHANGED
|
@@ -1,99 +1,83 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pdfme/schemas",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"author": "hand-dot",
|
|
6
|
-
"license": "MIT",
|
|
3
|
+
"version": "6.0.0-dev.1",
|
|
4
|
+
"description": "TypeScript base PDF generator and React base UI. Open source, developed by the community, and completely free to use under the MIT license!",
|
|
7
5
|
"keywords": [
|
|
8
6
|
"pdf",
|
|
9
|
-
"pdf-generation",
|
|
10
7
|
"pdf-designer",
|
|
8
|
+
"pdf-generation",
|
|
11
9
|
"pdf-viewer",
|
|
12
|
-
"
|
|
13
|
-
"
|
|
10
|
+
"react",
|
|
11
|
+
"typescript"
|
|
14
12
|
],
|
|
15
|
-
"description": "TypeScript base PDF generator and React base UI. Open source, developed by the community, and completely free to use under the MIT license!",
|
|
16
13
|
"homepage": "https://pdfme.com",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/pdfme/pdfme/issues"
|
|
16
|
+
},
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"author": "hand-dot",
|
|
17
19
|
"repository": {
|
|
18
20
|
"type": "git",
|
|
19
21
|
"url": "git@github.com:pdfme/pdfme.git"
|
|
20
22
|
},
|
|
21
|
-
"
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"types": "dist/types/src/index.d.ts",
|
|
23
|
+
"type": "module",
|
|
24
|
+
"sideEffects": false,
|
|
25
|
+
"main": "./dist/index.js",
|
|
26
|
+
"module": "./dist/index.js",
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
27
28
|
"exports": {
|
|
28
29
|
".": {
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"types": "./dist/
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"import": "./dist/index.js",
|
|
32
|
+
"default": "./dist/index.js"
|
|
33
|
+
},
|
|
34
|
+
"./builtins": {
|
|
35
|
+
"types": "./dist/builtins.d.ts",
|
|
36
|
+
"import": "./dist/builtins.js",
|
|
37
|
+
"default": "./dist/builtins.js"
|
|
38
|
+
},
|
|
39
|
+
"./tables": {
|
|
40
|
+
"types": "./dist/tables.d.ts",
|
|
41
|
+
"import": "./dist/tables.js",
|
|
42
|
+
"default": "./dist/tables.js"
|
|
35
43
|
},
|
|
36
44
|
"./utils": {
|
|
37
|
-
"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
},
|
|
41
|
-
"require": "./dist/cjs/src/utils.js",
|
|
42
|
-
"types": "./dist/types/src/utils.d.ts"
|
|
45
|
+
"types": "./dist/utils.d.ts",
|
|
46
|
+
"import": "./dist/utils.js",
|
|
47
|
+
"default": "./dist/utils.js"
|
|
43
48
|
}
|
|
44
49
|
},
|
|
50
|
+
"publishConfig": {
|
|
51
|
+
"access": "public"
|
|
52
|
+
},
|
|
45
53
|
"scripts": {
|
|
46
|
-
"dev": "
|
|
47
|
-
"build": "
|
|
48
|
-
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
49
|
-
"build:esm": "tsc -p tsconfig.esm.json",
|
|
50
|
-
"build:node": "tsc -p tsconfig.node.json",
|
|
54
|
+
"dev": "vite build --watch",
|
|
55
|
+
"build": "vite build && tsc -p tsconfig.build.json",
|
|
51
56
|
"clean": "rimraf dist",
|
|
52
|
-
"lint": "
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"prettier": "prettier --write 'src/**/*.ts'"
|
|
57
|
+
"lint": "vp lint -c ../../.oxlintrc.json src",
|
|
58
|
+
"fmt": "vp fmt -c ../../.oxfmtrc.json src --write",
|
|
59
|
+
"test": "vitest run --config ../../vitest.config.ts"
|
|
56
60
|
},
|
|
57
61
|
"dependencies": {
|
|
58
62
|
"@pdfme/pdf-lib": "*",
|
|
59
63
|
"air-datepicker": "^3.6.0",
|
|
60
|
-
"bwip-js": "^4.
|
|
64
|
+
"bwip-js": "^4.9.0",
|
|
61
65
|
"date-fns": "^4.1.0",
|
|
62
|
-
"fontkit": "^2.0.2",
|
|
63
66
|
"dompurify": "^3.3.3",
|
|
64
|
-
"
|
|
67
|
+
"fontkit": "^2.0.2",
|
|
68
|
+
"lucide": "^1.7.0",
|
|
69
|
+
"signature_pad": "^4.2.0"
|
|
65
70
|
},
|
|
66
71
|
"devDependencies": {
|
|
67
72
|
"@pdfme/common": "*",
|
|
68
|
-
"@types/dompurify": "^3.2.0",
|
|
69
73
|
"@types/bwip-js": "^3.2.1",
|
|
70
74
|
"@types/fontkit": "^2.0.9",
|
|
71
75
|
"@types/pngjs": "^6.0.2",
|
|
76
|
+
"csstype": "^3.2.3",
|
|
72
77
|
"jsqr": "^1.4.0",
|
|
73
78
|
"pngjs": "^7.0.0"
|
|
74
79
|
},
|
|
75
80
|
"peerDependencies": {
|
|
76
81
|
"@pdfme/common": "latest"
|
|
77
|
-
},
|
|
78
|
-
"jest": {
|
|
79
|
-
"resolver": "ts-jest-resolver",
|
|
80
|
-
"moduleFileExtensions": [
|
|
81
|
-
"js",
|
|
82
|
-
"ts"
|
|
83
|
-
],
|
|
84
|
-
"transform": {
|
|
85
|
-
"^.+\\.ts?$": [
|
|
86
|
-
"ts-jest",
|
|
87
|
-
{
|
|
88
|
-
"tsconfig": "tsconfig.esm.json"
|
|
89
|
-
}
|
|
90
|
-
]
|
|
91
|
-
},
|
|
92
|
-
"testMatch": [
|
|
93
|
-
"**/*.test.ts"
|
|
94
|
-
]
|
|
95
|
-
},
|
|
96
|
-
"publishConfig": {
|
|
97
|
-
"access": "public"
|
|
98
82
|
}
|
|
99
83
|
}
|
package/src/barcodes/helper.ts
CHANGED
|
@@ -55,7 +55,7 @@ export const validateBarcodeInput = (type: BarcodeTypes, input: string) => {
|
|
|
55
55
|
if (type === 'code39') {
|
|
56
56
|
// For Code39: Valid characters are digits (0-9), uppercase alphabets (A-Z),
|
|
57
57
|
// symbols (-, ., $, /, +, %), and space.
|
|
58
|
-
const regexp = /^(\d|[A-Z]
|
|
58
|
+
const regexp = /^(\d|[A-Z]|[-.$/+%]|\s)+$/;
|
|
59
59
|
return regexp.test(input);
|
|
60
60
|
}
|
|
61
61
|
if (type === 'code128') {
|
|
@@ -68,7 +68,7 @@ export const validateBarcodeInput = (type: BarcodeTypes, input: string) => {
|
|
|
68
68
|
if (type === 'nw7') {
|
|
69
69
|
// For NW-7: Valid characters are digits (0-9) and symbols (-, ., $, :, /, +).
|
|
70
70
|
// The first and last characters must be one of the alphabets A-D (start/stop codes).
|
|
71
|
-
const regexp = /^[A-Da-d]([0-9
|
|
71
|
+
const regexp = /^[A-Da-d]([0-9.$:/+-])+[A-Da-d]$/;
|
|
72
72
|
return regexp.test(input);
|
|
73
73
|
}
|
|
74
74
|
if (type === 'itf14') {
|
package/src/barcodes/types.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Schema } from '@pdfme/common';
|
|
2
2
|
import { BARCODE_TYPES } from './constants.js';
|
|
3
3
|
|
|
4
|
-
export
|
|
4
|
+
export type BarcodeSchema = Schema & {
|
|
5
5
|
type: (typeof BARCODE_TYPES)[number];
|
|
6
6
|
backgroundColor: string;
|
|
7
7
|
barColor: string;
|
|
8
8
|
textColor?: string;
|
|
9
9
|
includetext?: boolean;
|
|
10
|
-
}
|
|
10
|
+
};
|
|
11
11
|
|
|
12
12
|
export type BarcodeTypes = (typeof BARCODE_TYPES)[number];
|
package/src/builtins.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import text from './text/index.js';
|
|
2
|
+
|
|
3
|
+
// The default built-in plugin surface is intentionally limited to text.
|
|
4
|
+
// Generator/UI consumers that need image, barcode, table, or other schema types
|
|
5
|
+
// must import and pass those plugins explicitly from `@pdfme/schemas`.
|
|
6
|
+
const builtInPlugins = { Text: text };
|
|
7
|
+
|
|
8
|
+
export { builtInPlugins };
|
package/src/date/helper.ts
CHANGED
|
@@ -70,43 +70,55 @@ interface Locale {
|
|
|
70
70
|
formatLocale: dateFns.Locale;
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
+
const normalizeAdLocale = (
|
|
74
|
+
locale: AirDatepickerLocale | { default: AirDatepickerLocale },
|
|
75
|
+
): AirDatepickerLocale => {
|
|
76
|
+
// Air Datepicker locales can arrive as either the locale object itself or as an
|
|
77
|
+
// ESM default export shim when bundlers interop with the package's CJS build.
|
|
78
|
+
return 'default' in locale ? locale.default : locale;
|
|
79
|
+
};
|
|
80
|
+
|
|
73
81
|
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': {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
82
|
+
ar: { label: 'Arabic', adLocale: normalizeAdLocale(localeAr), formatLocale: dateFns.ar },
|
|
83
|
+
bg: { label: 'Bulgarian', adLocale: normalizeAdLocale(localeBg), formatLocale: dateFns.bg },
|
|
84
|
+
ca: { label: 'Catalan', adLocale: normalizeAdLocale(localeCa), formatLocale: dateFns.ca },
|
|
85
|
+
cs: { label: 'Czech', adLocale: normalizeAdLocale(localeCs), formatLocale: dateFns.cs },
|
|
86
|
+
da: { label: 'Danish', adLocale: normalizeAdLocale(localeDa), formatLocale: dateFns.da },
|
|
87
|
+
de: { label: 'German', adLocale: normalizeAdLocale(localeDe), formatLocale: dateFns.de },
|
|
88
|
+
el: { label: 'Greek', adLocale: normalizeAdLocale(localeEl), formatLocale: dateFns.el },
|
|
89
|
+
en: { label: 'English', adLocale: normalizeAdLocale(localeEn), formatLocale: dateFns.enUS },
|
|
90
|
+
es: { label: 'Spanish', adLocale: normalizeAdLocale(localeEs), formatLocale: dateFns.es },
|
|
91
|
+
eu: { label: 'Basque', adLocale: normalizeAdLocale(localeEu), formatLocale: dateFns.eu },
|
|
92
|
+
fi: { label: 'Finnish', adLocale: normalizeAdLocale(localeFi), formatLocale: dateFns.fi },
|
|
93
|
+
fr: { label: 'French', adLocale: normalizeAdLocale(localeFr), formatLocale: dateFns.fr },
|
|
94
|
+
hr: { label: 'Croatian', adLocale: normalizeAdLocale(localeHr), formatLocale: dateFns.hr },
|
|
95
|
+
hu: { label: 'Hungarian', adLocale: normalizeAdLocale(localeHu), formatLocale: dateFns.hu },
|
|
96
|
+
id: { label: 'Indonesian', adLocale: normalizeAdLocale(localeId), formatLocale: dateFns.id },
|
|
97
|
+
it: { label: 'Italian', adLocale: normalizeAdLocale(localeIt), formatLocale: dateFns.it },
|
|
98
|
+
ja: { label: 'Japanese', adLocale: normalizeAdLocale(localeJa), formatLocale: dateFns.ja },
|
|
99
|
+
ko: { label: 'Korean', adLocale: normalizeAdLocale(localeKo), formatLocale: dateFns.ko },
|
|
100
|
+
nb: { label: 'Norwegian Bokmål', adLocale: normalizeAdLocale(localeNb), formatLocale: dateFns.nb },
|
|
101
|
+
nl: { label: 'Dutch', adLocale: normalizeAdLocale(localeNl), formatLocale: dateFns.nl },
|
|
102
|
+
pl: { label: 'Polish', adLocale: normalizeAdLocale(localePl), formatLocale: dateFns.pl },
|
|
103
|
+
'pt-Br': {
|
|
104
|
+
label: 'Portuguese',
|
|
105
|
+
adLocale: normalizeAdLocale(localePtBR),
|
|
106
|
+
formatLocale: dateFns.ptBR,
|
|
107
|
+
},
|
|
108
|
+
pt: { label: 'Portuguese', adLocale: normalizeAdLocale(localePt), formatLocale: dateFns.pt },
|
|
109
|
+
ro: { label: 'Romanian', adLocale: normalizeAdLocale(localeRo), formatLocale: dateFns.ro },
|
|
110
|
+
ru: { label: 'Russian', adLocale: normalizeAdLocale(localeRu), formatLocale: dateFns.ru },
|
|
111
|
+
si: { label: 'Sinhala', adLocale: normalizeAdLocale(localeSi), formatLocale: dateFns.enUS },
|
|
112
|
+
sk: { label: 'Slovak', adLocale: normalizeAdLocale(localeSk), formatLocale: dateFns.sk },
|
|
113
|
+
sl: { label: 'Slovenian', adLocale: normalizeAdLocale(localeSl), formatLocale: dateFns.sl },
|
|
114
|
+
sv: { label: 'Swedish', adLocale: normalizeAdLocale(localeSv), formatLocale: dateFns.sv },
|
|
115
|
+
th: { label: 'Thai', adLocale: normalizeAdLocale(localeTh), formatLocale: dateFns.th },
|
|
116
|
+
tr: { label: 'Turkish', adLocale: normalizeAdLocale(localeTr), formatLocale: dateFns.tr },
|
|
117
|
+
uk: { label: 'Ukrainian', adLocale: normalizeAdLocale(localeUk), formatLocale: dateFns.uk },
|
|
118
|
+
zh: { label: 'Chinese', adLocale: normalizeAdLocale(localeZh), formatLocale: dateFns.zhCN },
|
|
107
119
|
};
|
|
108
120
|
|
|
109
|
-
const getAirDatepickerLocale = (locale: string) => {
|
|
121
|
+
export const getAirDatepickerLocale = (locale: string) => {
|
|
110
122
|
const data = LOCALE_MAP[locale];
|
|
111
123
|
if (!data) {
|
|
112
124
|
throw new Error(`Unsupported locale: ${locale}`);
|
|
@@ -151,7 +163,7 @@ const strDateToDate = (strDate: string, type: PickerType): Date => {
|
|
|
151
163
|
return new Date(strDate);
|
|
152
164
|
};
|
|
153
165
|
|
|
154
|
-
const getFormat = (type: PickerType, locale: Locale): string => {
|
|
166
|
+
export const getFormat = (type: PickerType, locale: Locale): string => {
|
|
155
167
|
switch (type) {
|
|
156
168
|
case 'date': {
|
|
157
169
|
return locale.adLocale.dateFormat;
|
|
@@ -165,14 +177,49 @@ const getFormat = (type: PickerType, locale: Locale): string => {
|
|
|
165
177
|
}
|
|
166
178
|
};
|
|
167
179
|
|
|
168
|
-
const
|
|
180
|
+
export const isValidDateFormat = (
|
|
181
|
+
formatString: string | undefined,
|
|
182
|
+
locale: Locale,
|
|
183
|
+
): formatString is string => {
|
|
184
|
+
if (typeof formatString !== 'string') {
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
const normalizedFormat = formatString.trim();
|
|
189
|
+
if (!normalizedFormat || normalizedFormat === 'undefined') {
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
try {
|
|
194
|
+
format(new Date(0), normalizedFormat, {
|
|
195
|
+
locale: locale.formatLocale,
|
|
196
|
+
});
|
|
197
|
+
return true;
|
|
198
|
+
} catch {
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
export const getSafeFormat = (
|
|
204
|
+
type: PickerType,
|
|
205
|
+
schema: Pick<DateSchema, 'format'>,
|
|
206
|
+
locale: Locale,
|
|
207
|
+
): string => {
|
|
208
|
+
return isValidDateFormat(schema.format, locale)
|
|
209
|
+
? schema.format.trim()
|
|
210
|
+
: getFormat(type, locale);
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
export const getFmtValue = (
|
|
169
214
|
value: string,
|
|
170
215
|
type: PickerType,
|
|
171
216
|
schema: DateSchema,
|
|
172
217
|
locale: Locale,
|
|
173
218
|
): string => {
|
|
219
|
+
const formatString = getSafeFormat(type, schema, locale);
|
|
220
|
+
|
|
174
221
|
return value
|
|
175
|
-
? format(strDateToDate(value, type),
|
|
222
|
+
? format(strDateToDate(value, type), formatString, {
|
|
176
223
|
locale: locale.formatLocale,
|
|
177
224
|
})
|
|
178
225
|
: '';
|
|
@@ -204,6 +251,7 @@ export const getPlugin = ({ type, icon }: { type: PickerType; icon: string }) =>
|
|
|
204
251
|
const { schema, value, onChange, rootElement, mode, options, i18n } = arg;
|
|
205
252
|
|
|
206
253
|
const locale = getAirDatepickerLocale(schema.locale || options.lang || defaultLocale);
|
|
254
|
+
const formatString = getSafeFormat(type, schema, locale);
|
|
207
255
|
|
|
208
256
|
const textElement = document.createElement('div');
|
|
209
257
|
const textElementStyle: CSS.Properties = {
|
|
@@ -270,14 +318,14 @@ export const getPlugin = ({ type, icon }: { type: PickerType; icon: string }) =>
|
|
|
270
318
|
locale: locale.adLocale,
|
|
271
319
|
selectedDates: value.trim() ? [strDateToDate(value, type)] : [],
|
|
272
320
|
dateFormat: (date: AirDatepickerDate) =>
|
|
273
|
-
format(date,
|
|
321
|
+
format(date, formatString, { locale: locale.formatLocale }),
|
|
274
322
|
timepicker: type !== 'date',
|
|
275
323
|
onlyTimepicker: type === 'time',
|
|
276
324
|
isMobile: window.innerWidth < 768,
|
|
277
325
|
buttons: adButtons,
|
|
278
326
|
position({ $datepicker, $target, $pointer, done }) {
|
|
279
327
|
$datepicker.style.position = 'fixed';
|
|
280
|
-
const offset = 5;
|
|
328
|
+
const offset = 5;
|
|
281
329
|
const scrollY = window.scrollY;
|
|
282
330
|
const scrollX = window.scrollX;
|
|
283
331
|
|
|
@@ -291,29 +339,29 @@ export const getPlugin = ({ type, icon }: { type: PickerType; icon: string }) =>
|
|
|
291
339
|
const showAbove = spaceBelow < dpHeight + offset && spaceAbove > dpHeight;
|
|
292
340
|
|
|
293
341
|
let top = showAbove
|
|
294
|
-
|
|
295
|
-
|
|
342
|
+
? targetRect.top + scrollY - dpHeight - offset
|
|
343
|
+
: targetRect.bottom + scrollY + offset;
|
|
296
344
|
|
|
297
345
|
let left = targetRect.left + scrollX;
|
|
298
346
|
|
|
299
347
|
if (left + dpWidth > window.innerWidth) {
|
|
300
|
-
|
|
348
|
+
left = window.innerWidth - dpWidth - 10;
|
|
301
349
|
}
|
|
302
350
|
|
|
303
351
|
$datepicker.style.position = 'absolute';
|
|
304
352
|
$datepicker.style.top = `${top}px`;
|
|
305
353
|
$datepicker.style.left = `${left}px`;
|
|
306
354
|
if ($pointer) {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
355
|
+
$pointer.style.display = 'block';
|
|
356
|
+
$pointer.style.position = 'absolute';
|
|
357
|
+
$pointer.style.left = '10px';
|
|
358
|
+
$pointer.style.top = showAbove ? 'calc(100% - 5px)' : '-5px';
|
|
359
|
+
$pointer.style.transform = showAbove ? 'rotate(135deg)' : 'rotate(-45deg)';
|
|
312
360
|
}
|
|
313
361
|
return function completeHide() {
|
|
314
|
-
|
|
362
|
+
done();
|
|
315
363
|
};
|
|
316
|
-
|
|
364
|
+
},
|
|
317
365
|
onSelect: ({ datepicker }: { datepicker: AirDatepickerInstance }) => {
|
|
318
366
|
if (type === 'date') {
|
|
319
367
|
commitChange(datepicker.selectedDates.length ? datepicker.selectedDates[0] : null);
|
|
@@ -355,19 +403,27 @@ export const getPlugin = ({ type, icon }: { type: PickerType; icon: string }) =>
|
|
|
355
403
|
const font = options.font || { [DEFAULT_FONT_NAME]: { data: '', fallback: true } };
|
|
356
404
|
const fontNames = Object.keys(font);
|
|
357
405
|
const fallbackFontName = getFallbackFontName(font);
|
|
406
|
+
const activeDateSchema = activeSchema as { locale?: string; format?: string };
|
|
358
407
|
|
|
359
408
|
const locale = getAirDatepickerLocale(
|
|
360
|
-
|
|
409
|
+
activeDateSchema.locale || options.lang || defaultLocale,
|
|
361
410
|
);
|
|
411
|
+
const defaultFormat = getFormat(type, locale);
|
|
412
|
+
const safeFormat = getSafeFormat(
|
|
413
|
+
type,
|
|
414
|
+
activeDateSchema as Pick<DateSchema, 'format'>,
|
|
415
|
+
locale,
|
|
416
|
+
);
|
|
417
|
+
const schemaChanges = [];
|
|
362
418
|
|
|
363
|
-
if (
|
|
364
|
-
(activeSchema
|
|
365
|
-
|
|
366
|
-
) {
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
419
|
+
if (activeDateSchema.locale === undefined && activeDateSchema.locale !== options.lang) {
|
|
420
|
+
schemaChanges.push({ schemaId: activeSchema.id, key: 'locale', value: options.lang });
|
|
421
|
+
}
|
|
422
|
+
if (activeDateSchema.format !== safeFormat) {
|
|
423
|
+
schemaChanges.push({ schemaId: activeSchema.id, key: 'format', value: safeFormat });
|
|
424
|
+
}
|
|
425
|
+
if (schemaChanges.length > 0) {
|
|
426
|
+
changeSchemas(schemaChanges);
|
|
371
427
|
}
|
|
372
428
|
|
|
373
429
|
const formatter = getExtraFormatterSchema(i18n);
|
|
@@ -375,16 +431,8 @@ export const getPlugin = ({ type, icon }: { type: PickerType; icon: string }) =>
|
|
|
375
431
|
(button) => button.key === Formatter.ALIGNMENT,
|
|
376
432
|
);
|
|
377
433
|
|
|
378
|
-
const validateDateTimeFormat = (_rule: unknown, formatString: string): boolean =>
|
|
379
|
-
|
|
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
|
-
};
|
|
434
|
+
const validateDateTimeFormat = (_rule: unknown, formatString: string): boolean =>
|
|
435
|
+
isValidDateFormat(formatString, locale);
|
|
388
436
|
|
|
389
437
|
const localeOptions = Object.keys(LOCALE_MAP).map((lc) => ({
|
|
390
438
|
label: `${lc} (${LOCALE_MAP[lc].label})`,
|
|
@@ -395,8 +443,8 @@ export const getPlugin = ({ type, icon }: { type: PickerType; icon: string }) =>
|
|
|
395
443
|
format: {
|
|
396
444
|
title: i18n('schemas.date.format'),
|
|
397
445
|
type: 'string',
|
|
398
|
-
default:
|
|
399
|
-
placeholder:
|
|
446
|
+
default: safeFormat,
|
|
447
|
+
placeholder: defaultFormat,
|
|
400
448
|
rules: [
|
|
401
449
|
{
|
|
402
450
|
validator: validateDateTimeFormat,
|
package/src/graphics/image.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { ChangeEvent } from 'react';
|
|
2
1
|
import type { PDFImage } from '@pdfme/pdf-lib';
|
|
3
2
|
import type { Plugin } from '@pdfme/common';
|
|
4
3
|
import type { Schema } from '@pdfme/common';
|
|
@@ -165,8 +164,9 @@ const imageSchema: Plugin<ImageSchema> = {
|
|
|
165
164
|
input.type = 'file';
|
|
166
165
|
input.accept = 'image/jpeg, image/png';
|
|
167
166
|
input.addEventListener('change', (event: Event) => {
|
|
168
|
-
const
|
|
169
|
-
|
|
167
|
+
const target = event.target;
|
|
168
|
+
const files = target instanceof HTMLInputElement ? target.files : null;
|
|
169
|
+
readFile(files)
|
|
170
170
|
.then((result) => {
|
|
171
171
|
if (onChange) onChange({ key: 'content', value: result as string });
|
|
172
172
|
})
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import type { Plugin, Schema } from '@pdfme/common';
|
|
2
|
+
import { ZOOM } from '@pdfme/common';
|
|
3
|
+
import image from './image.js';
|
|
4
|
+
|
|
5
|
+
type SignatureSchema = Schema;
|
|
6
|
+
|
|
7
|
+
const createLoadErrorBadge = (message: string) => {
|
|
8
|
+
const badge = document.createElement('div');
|
|
9
|
+
badge.setAttribute('role', 'alert');
|
|
10
|
+
badge.textContent = message;
|
|
11
|
+
badge.style.position = 'absolute';
|
|
12
|
+
badge.style.left = '4px';
|
|
13
|
+
badge.style.right = '4px';
|
|
14
|
+
badge.style.bottom = '4px';
|
|
15
|
+
badge.style.zIndex = '2';
|
|
16
|
+
badge.style.padding = '4px 6px';
|
|
17
|
+
badge.style.borderRadius = '4px';
|
|
18
|
+
badge.style.background = 'rgba(176, 0, 32, 0.92)';
|
|
19
|
+
badge.style.color = '#ffffff';
|
|
20
|
+
badge.style.fontSize = '11px';
|
|
21
|
+
badge.style.lineHeight = '1.25';
|
|
22
|
+
badge.style.pointerEvents = 'none';
|
|
23
|
+
return badge;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const getEffectiveScale = (element: HTMLElement | null) => {
|
|
27
|
+
let scale = 1;
|
|
28
|
+
while (element && element !== document.body) {
|
|
29
|
+
const style = window.getComputedStyle(element);
|
|
30
|
+
const transform = style.transform;
|
|
31
|
+
if (transform && transform !== 'none') {
|
|
32
|
+
const localScale = parseFloat(transform.match(/matrix\((.+)\)/)?.[1].split(', ')[3] || '1');
|
|
33
|
+
scale *= localScale;
|
|
34
|
+
}
|
|
35
|
+
element = element.parentElement;
|
|
36
|
+
}
|
|
37
|
+
return scale;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const signature: Plugin<SignatureSchema> = {
|
|
41
|
+
ui: async (arg) => {
|
|
42
|
+
const { schema, value, onChange, rootElement, mode, i18n } = arg;
|
|
43
|
+
const { default: SignaturePad } = await import('signature_pad');
|
|
44
|
+
|
|
45
|
+
const canvas = document.createElement('canvas');
|
|
46
|
+
canvas.width = schema.width * ZOOM;
|
|
47
|
+
canvas.height = schema.height * ZOOM;
|
|
48
|
+
|
|
49
|
+
const context = canvas.getContext('2d');
|
|
50
|
+
if (context) {
|
|
51
|
+
const resetScale = 1 / getEffectiveScale(rootElement);
|
|
52
|
+
context.scale(resetScale, resetScale);
|
|
53
|
+
|
|
54
|
+
const signaturePad = new SignaturePad(canvas);
|
|
55
|
+
const loadErrorMessage =
|
|
56
|
+
i18n('signature.invalidData') || 'Saved signature could not be loaded.';
|
|
57
|
+
let loadErrorBadge: HTMLDivElement | null = null;
|
|
58
|
+
const clearLoadError = () => {
|
|
59
|
+
loadErrorBadge?.remove();
|
|
60
|
+
loadErrorBadge = null;
|
|
61
|
+
};
|
|
62
|
+
const showLoadError = () => {
|
|
63
|
+
if (loadErrorBadge) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
loadErrorBadge = createLoadErrorBadge(loadErrorMessage);
|
|
67
|
+
rootElement.appendChild(loadErrorBadge);
|
|
68
|
+
};
|
|
69
|
+
const handleEndStroke = () => {
|
|
70
|
+
clearLoadError();
|
|
71
|
+
const data = signaturePad.toDataURL('image/png');
|
|
72
|
+
if (onChange && data) {
|
|
73
|
+
onChange({ key: 'content', value: data });
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
try {
|
|
78
|
+
if (value) {
|
|
79
|
+
signaturePad.fromDataURL(value, { ratio: resetScale });
|
|
80
|
+
} else {
|
|
81
|
+
signaturePad.clear();
|
|
82
|
+
}
|
|
83
|
+
} catch (error) {
|
|
84
|
+
signaturePad.clear();
|
|
85
|
+
showLoadError();
|
|
86
|
+
console.error('[@pdfme/schemas] Failed to restore saved signature data.', error);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (mode === 'viewer' || (mode === 'form' && schema.readOnly)) {
|
|
90
|
+
signaturePad.off();
|
|
91
|
+
} else {
|
|
92
|
+
signaturePad.on();
|
|
93
|
+
const clearButton = document.createElement('button');
|
|
94
|
+
const handleClear = () => {
|
|
95
|
+
clearLoadError();
|
|
96
|
+
if (onChange) {
|
|
97
|
+
onChange({ key: 'content', value: '' });
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
const cleanup = () => {
|
|
101
|
+
clearLoadError();
|
|
102
|
+
signaturePad.off();
|
|
103
|
+
signaturePad.removeEventListener('endStroke', handleEndStroke);
|
|
104
|
+
clearButton.removeEventListener('click', handleClear);
|
|
105
|
+
clearButton.remove();
|
|
106
|
+
rootElement.removeEventListener('beforeRemove', cleanup);
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
rootElement.addEventListener('beforeRemove', cleanup);
|
|
110
|
+
clearButton.type = 'button';
|
|
111
|
+
clearButton.style.position = 'absolute';
|
|
112
|
+
clearButton.style.zIndex = '1';
|
|
113
|
+
clearButton.textContent = i18n('signature.clear') || 'x';
|
|
114
|
+
clearButton.addEventListener('click', handleClear);
|
|
115
|
+
rootElement.appendChild(clearButton);
|
|
116
|
+
signaturePad.addEventListener('endStroke', handleEndStroke);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
rootElement.appendChild(canvas);
|
|
121
|
+
},
|
|
122
|
+
pdf: image.pdf,
|
|
123
|
+
propPanel: {
|
|
124
|
+
schema: {},
|
|
125
|
+
defaultSchema: {
|
|
126
|
+
name: '',
|
|
127
|
+
type: 'signature',
|
|
128
|
+
content: '',
|
|
129
|
+
position: { x: 0, y: 0 },
|
|
130
|
+
width: 62.5,
|
|
131
|
+
height: 37.5,
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
export default signature;
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import multiVariableText from './multiVariableText/index.js';
|
|
2
2
|
import text from './text/index.js';
|
|
3
3
|
import image from './graphics/image.js';
|
|
4
|
+
import signature from './graphics/signature.js';
|
|
4
5
|
import svg from './graphics/svg.js';
|
|
5
6
|
import barcodes from './barcodes/index.js';
|
|
6
7
|
import line from './shapes/line.js';
|
|
@@ -12,15 +13,14 @@ import time from './date/time.js';
|
|
|
12
13
|
import select from './select/index.js';
|
|
13
14
|
import radioGroup from './radioGroup/index.js';
|
|
14
15
|
import checkbox from './checkbox/index.js';
|
|
15
|
-
|
|
16
|
-
const builtInPlugins = { Text: text };
|
|
16
|
+
export { builtInPlugins } from './builtins.js';
|
|
17
17
|
|
|
18
18
|
export {
|
|
19
|
-
builtInPlugins,
|
|
20
19
|
// schemas
|
|
21
20
|
text,
|
|
22
21
|
multiVariableText,
|
|
23
22
|
image,
|
|
23
|
+
signature,
|
|
24
24
|
svg,
|
|
25
25
|
table,
|
|
26
26
|
barcodes,
|
|
@@ -36,4 +36,4 @@ export {
|
|
|
36
36
|
};
|
|
37
37
|
|
|
38
38
|
// Export utility functions
|
|
39
|
-
export { getDynamicHeightsForTable } from './tables
|
|
39
|
+
export { getDynamicHeightsForTable } from './tables.js';
|