@pdfme/ui 2.1.0 → 2.2.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.
Files changed (73) hide show
  1. package/README.md +7 -3
  2. package/dist/index.js +1 -1
  3. package/dist/index.js.LICENSE.txt +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/types/builtInRenderer.d.ts +3 -0
  6. package/dist/types/class.d.ts +10 -1
  7. package/dist/types/components/CtlBar/Pager.d.ts +3 -2
  8. package/dist/types/components/CtlBar/Zoom.d.ts +3 -2
  9. package/dist/types/components/CtlBar/index.d.ts +3 -2
  10. package/dist/types/components/Designer/Main/Guides.d.ts +2 -2
  11. package/dist/types/components/Designer/Main/Mask.d.ts +2 -1
  12. package/dist/types/components/Designer/Main/Moveable.d.ts +1 -1
  13. package/dist/types/components/Designer/Main/Selecto.d.ts +2 -1
  14. package/dist/types/components/Designer/Sidebar/DetailView/BarCodePropEditor.d.ts +7 -0
  15. package/dist/types/components/Designer/Sidebar/DetailView/ExampleInputEditor.d.ts +2 -1
  16. package/dist/types/components/Designer/Sidebar/DetailView/FormComponents/ColorInputSet.d.ts +9 -0
  17. package/dist/types/components/Designer/Sidebar/DetailView/PositionAndSizeEditor.d.ts +2 -1
  18. package/dist/types/components/Designer/Sidebar/DetailView/TextPropEditor.d.ts +2 -1
  19. package/dist/types/components/Designer/Sidebar/DetailView/TypeAndKeyEditor.d.ts +2 -1
  20. package/dist/types/components/Designer/Sidebar/DetailView/index.d.ts +3 -2
  21. package/dist/types/components/Designer/Sidebar/ListView/SelectableSortableContainer.d.ts +2 -1
  22. package/dist/types/components/Designer/Sidebar/ListView/SelectableSortableItem.d.ts +1 -1
  23. package/dist/types/components/Designer/Sidebar/ListView/index.d.ts +2 -1
  24. package/dist/types/components/Designer/Sidebar/index.d.ts +4 -2
  25. package/dist/types/components/Designer/index.d.ts +11 -2
  26. package/dist/types/components/Divider.d.ts +2 -1
  27. package/dist/types/components/Error.d.ts +2 -1
  28. package/dist/types/components/Paper.d.ts +2 -2
  29. package/dist/types/components/Preview.d.ts +2 -1
  30. package/dist/types/components/Renderer.d.ts +4 -0
  31. package/dist/types/components/Root.d.ts +1 -1
  32. package/dist/types/components/Spinner.d.ts +2 -1
  33. package/dist/types/components/UnitPager.d.ts +3 -2
  34. package/dist/types/contexts.d.ts +3 -1
  35. package/dist/types/helper.d.ts +5 -0
  36. package/dist/types/hooks.d.ts +2 -2
  37. package/dist/types/i18n.d.ts +4 -1
  38. package/dist/types/renders/barcodes.d.ts +2 -0
  39. package/dist/types/renders/image.d.ts +2 -0
  40. package/dist/types/renders/text.d.ts +2 -0
  41. package/dist/types/types.d.ts +25 -0
  42. package/package.json +2 -1
  43. package/src/Designer.tsx +21 -17
  44. package/src/Form.tsx +18 -14
  45. package/src/Viewer.tsx +6 -2
  46. package/src/builtInRenderer.ts +14 -0
  47. package/src/class.ts +22 -2
  48. package/src/components/Designer/Main/index.tsx +4 -15
  49. package/src/components/Designer/Sidebar/DetailView/BarCodePropEditor.tsx +81 -0
  50. package/src/components/Designer/Sidebar/DetailView/ExampleInputEditor.tsx +1 -2
  51. package/src/components/Designer/Sidebar/DetailView/FormComponents/ColorInputSet.tsx +50 -0
  52. package/src/components/Designer/Sidebar/DetailView/PositionAndSizeEditor.tsx +1 -3
  53. package/src/components/Designer/Sidebar/DetailView/TextPropEditor.tsx +189 -209
  54. package/src/components/Designer/Sidebar/DetailView/index.tsx +16 -8
  55. package/src/components/Designer/Sidebar/index.tsx +3 -2
  56. package/src/components/Designer/index.tsx +1 -0
  57. package/src/components/Preview.tsx +6 -6
  58. package/src/components/Renderer.tsx +80 -0
  59. package/src/contexts.ts +5 -0
  60. package/src/helper.ts +8 -0
  61. package/src/i18n.ts +44 -1
  62. package/src/renders/barcodes.ts +117 -0
  63. package/src/renders/image.ts +101 -0
  64. package/src/renders/text.ts +138 -0
  65. package/src/types.ts +28 -0
  66. package/dist/types/components/Schemas/BarcodeSchema.d.ts +0 -15
  67. package/dist/types/components/Schemas/ImageSchema.d.ts +0 -15
  68. package/dist/types/components/Schemas/SchemaUI.d.ts +0 -15
  69. package/dist/types/components/Schemas/TextSchema.d.ts +0 -27
  70. package/src/components/Schemas/BarcodeSchema.tsx +0 -124
  71. package/src/components/Schemas/ImageSchema.tsx +0 -87
  72. package/src/components/Schemas/SchemaUI.tsx +0 -62
  73. package/src/components/Schemas/TextSchema.tsx +0 -117
@@ -1,124 +0,0 @@
1
- import React, { forwardRef, Ref } from 'react';
2
- import { validateBarcodeInput, BarCodeType, BarcodeSchema, } from '@pdfme/common';
3
- import { ZOOM } from '../../constants';
4
- import { SchemaUIProps } from './SchemaUI';
5
-
6
- const barcodeExampleImageObj: { [K in BarCodeType]: string } = {
7
- qrcode:
8
- 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AQMAAACyIsh+AAAABlBMVEVHcEwAAACfKoRRAAAAAXRSTlMAQObYZgAAAUBJREFUaN7t2UEOxCAIBVASD9Aj9eoeqQdowqiAYhsbTGb5u2gm9s2GIFBLrNdNnI+biI72y5YzAURBJpJlOstCuXVaLoAdUMOaLcCiWrwl/AD7QKJclwH+AUYNANgFtv0lyudFq/oA8A3mljQKwaJnAazAdKW6kpiWF8Aa2H7XRmSpmrQvZYAwGJteM7fV1drmr8QAO6A8c7Mms85KvSUBxIDkaw2r2/Ityu2fBBAHdavrwK75KkmrhQAgDFojv/qs1Da9gMQAcdCe+VlTIt8neYAoGNv/8Yr+rg8An0A6j9ykOWlfstETIAjcjO4z198AQsC/TlpsNXMB9sA4Cpbz4Es7Vc9qgCjox27a5pM73ZjP5QDCQFPVzt74FWqACJDYajVNGvQMEAfTJzOhbDVgrg8An+DxGXd8o9A2DxADPwiEPe8Jo46KAAAAAElFTkSuQmCC',
9
- japanpost:
10
- 'data:image/png;base64,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',
11
- ean13:
12
- 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAg0AAAGBBAMAAAAXrJ+ZAAAAG1BMVEVHcEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABp4cHsAAAACHRSTlMAgeljyj4bqDBh0ogAAAqiSURBVHja7drPd9PGFsBxK45llqHwgpctDUHLUErxElJKvHQTQr00lD6yDDTN85I4NtGf/SR5ZnTvzEj5ddrzzjtfL3ISZ3Rn9NGdn3anc5XXnbx4fTG/Ve+Ub9jfvsgi5h+2XF3ElOvIIkGUhitkvDtBvbKRqnLzRl2urcqml2zKP+QQ+/E3OwQV4YADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjj8Xzv8Q6//ySpxwAEHHHDAAYd4lb8/2N36tHNJo9L7e2Nd5N2rv+SfOkp68sq+ZKn0gaznV1tkp8Hhnbu2V8d7der+/+Sz1/De8929Z1NZ4ZOTrU8/ee3cuzeN3OVv1SJrPm532M/zbVWil+VzUaMXZS2vX6JUP1+KEJktcRZ3SLPcxjsS8Vy1P5R/LQREt4r4vYgwqy7YrN/5WIX4bhrc5Y8m+sW0zaFblDhXDsPinboJfpShaPdGfdEkvxCSrsQi7vChvnYg4tlq983F9ROcrd557d4wl81dQxMT4nv/Ltdd9O02h5l9avWTlXcYRJHP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',
13
- ean8: 'data:image/png;base64,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',
14
- code39:
15
- 'data:image/png;base64,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',
16
- code128:
17
- 'data:image/png;base64,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',
18
- nw7: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAt8AAAGUBAMAAAAfU1PFAAAAGFBMVEVHcEwAAAAAAAAAAAAAAAAAAAAAAAAAAABoAtTLAAAAB3RSTlMAJebEnUtzc/SoGAAACbRJREFUeNrt28FT20YYxmHLtszVgRBfCYT4SoDUVwgkvpo0DFfapPWVyIb99ytZkk2C3neNM53pTH86pJnKK+0+2v1295PSCuGu1Qrlkf9tcfz0t5/+qE7UJR7/8fQqT4rd/VjWlXjyY3mVu+Y6P7no8y/lWrlGUxvuATjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444IADDjjggAMOOOCAAw444P8HcA4ODg4ODg4ODo7nHLt9e/rFZmWTF+VhLq5PJdGysaKmsG9vrEWR23f3Dyb+F6+GIbwxVfgcDmUNvuqy6bDaEGTy/jszedNRWXZmGiau2wv1IQr3Rq69veMQTvvuym+85ziEPf9EysrpGuhmJ+NF2YfGk+1lw/d03VTd07qsbtw0HDX+/63lfcOt7ghz1aRRvEWZHSD55e9jT6Q4XpvzmS/a3PLOst1qz5uE0NdPuTxcPziLPOhm8KmpczGctcYgBFu2bpR4XquKZ6cnuhcXbpm+dnZ6LLpLcnFSHMe6h/d0xOiGbFH6vaz3jepo1X1PTpqfVjF23oxUe4uzRYsyCz6znpk9n4/ALO8IL0V3aCVDC/6+7BQmqm2rKxe3vtfgD37iSc2YXNZOtPeq1foiarW9GDc7zaNnEF7nc+b1BzW26po333g1wl6X0WFPDbFDGVJ+P6+ilhljIxkuZRReB3zbPuVyaM6aR0bV3rPmIHlY/ue+EXyvatKdvm07fB+Fvo3xk/J392rGTCT4sg17ptm6Owy1WScy8eSNjvwgr9X35qd89hjvybi51Q+rLtN2985/NJVjejHwskp23lzrcBYFbzc3LdbBe+a6MfBucI2qYuHZs8G7FXRzOKrL9Nzwy69/40Z8XThpHoDj/HQU3Oh0zJTeNvWOgU/1c1zdud/cA490OFvedthUuAZP3aw4DrdbbiHeXd2isYfnu4so+Jbu4WNTt6mplxs0ZQ88ioCP5WL6Qff/5W1HTdFuLfD8UXVc5TurWzR1iGTSioNP5STSdTBDExVylivbfbN+dBVzZILRTnP/H9QtGTfVbRVS5jZE2xm/vbrFJBLmTZw+ko9C72BTd9liu5j9ZrpvbMocyLXsMK9TT2xOttYC3zagxd4idfFu69fBe3ICy8/M+5uE8Gp//lZHlIPj0798J1DL9Lxzz4aiyssY7kJKOjQhoxub9JYBfiwHeAx8KkNascue3T5v2fZDXuDQpX90Tm3xi4nNix2KYnMzow3C/PLy8mToNj6LJaNbiA9+GTzvMd8dmwoqo6LaqTiZXFxeDGWaqN5jn5tF+Nw/TJlpnOgV63Jrn7lQducsH4FPNwTPB5icwJIPujOli2lr7DaUn9XEN47mNNzmd1H6neoFh3rQLsHv3XbrqPjj7N/r4WOb1HjxRWX8Oos+6PM8arWdX/N9f/dPvflJTZoxH5GZ7OK56cf+7rfmOXWd5NWCcWAWvI96+Nkm4Dsule66aRnCfbTqNaeBeuV0moxMLHswO9Bwu6N6ac/l8AdhVqY/TQdepCvcLuIXe3g6jO6xxRJuEcIj4M0bvuWM2JZdbaBb3FmEk6nq4p9NKr2yejXUMSVfP+3v7w/NAswv9aPgUxkNf4odDTXrx8Gb16p1aimVeVA9XPNLzsuO0hwIq5dYmeuc2zqm1G+q5uuswzcA7+q18qM6zHSaKLrivFVLLz0A1DK6ftBV8kp0wuTb8cGo+WQNnuiEdze6jlmCjzYBn0a32Kp6W+HhOj9Cdt234Ecud6NcbReZuemhvu6eDb96nd2Ovhpsxyrvqp/GA4rOvK2xqBXDLhoGu3pIPxodEzNXTzac7/KB83d+6N67ms/1Q9HgnTU6uMwt+1e9TmUrDn7/CyFU7prWAK/exZg5pO4MJi5p8EHsRZiO4at3+mYbLCoVHZUmP7oGWv6Y93xZPTqqN3fmHVi6fOMzez74NJqVbqnXk8m3y/y4COHyoy4qlgPd2KhcpkA3CqHq1cWjfHiIDEnzhiCphrTJ3WnwkXt9vXoqZifsVykj9aI1q+CzSEZOPyzzTYx6dbHGsrC+qtl41XnMsXsmGvx2jYjiXjhZcLV3r5d2MkM10COvnhC35Z31S5MK/Iv+0if1b4jr2WuyuMvZJuB/vJDfN6b7n/ILpyM7sbpN7IVMWkzDbLL4lubo2eD5oC9S9KneLY7N/nVeZmelVT0jupcrxVL99KtJ+Rnw+nPNxsVhsSR9c+JzaxK8d3FsvinrFF98fdDzrcvWbRdlL3ROu6ffCsaTV2us+aqvF102fw3wB7MH0B/PGnD3leiqzm+ftUH9cfOtu/GsFQN/p8G/x7ZGdYLMsCSyCmOXIK4/V7Zhfjgzj9J8U+y/+L1xX2W99NW6cZzl8d5YVqPjxqWdX+ajd+a64VT1/lfVZ5MnjbUvvsMOB+d+CXMok2Kzj67O+bX1d+8dm2X/UrxKOtdldTAoPhM9/eQ+J9ite9vENnv3yu8VWxseu9dXG5ZMrmP/0MD+K4Z+rF79jcty/HeOfwDgBtP8vd4ErwAAAABJRU5ErkJggg==',
19
- itf14:
20
- 'data:image/png;base64,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',
21
- upca: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAiEAAAGBBAMAAABCzXzHAAAAG1BMVEVHcEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABp4cHsAAAACHRSTlMAZYI/6MobpgcQHGEAAAl4SURBVHja7drLcxrHFsBhEGLkJY7vTVgqVYnFEpfihKXvjR8sVRXHZsl1UKyl49gxSyMhMX925tHd031ODwNjaZP7a1dZEhw4Pd/0Gzqd/cq9NCufzW/Vf6Z8NlHFH+bZ4GVbQjruTTsuJHiFSOnHpebP6k39xz53vqzE0gYOty9Se6W3JuLXWbwVIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggiiCCCCCKIIIIIIogggggi/y8id1L2qV67gggiiCCCCCKI/NNEku9fj8WrkhP/keSrj8/ef+0//7+Tl6+/ndeE+NmSj7/a8mf57Fv3QJg1TKlr5ae8a5Ef0vS5eNUivfLqtszj1w+rR94Wa8j/zuMhfrbDtCpl+LR64KY2pa5VkPKORbrZHyvRRGbpZfXXqKz/emAfODBX9J94iJ9t6Ikc22y2XNamVLUKU96xyFLULSv91Lth7hrcQ+4yx9EQP9uFB/CuuHLvgU1dSl2rMOXdipynWmRpql+USX7zX+b/GYBe/opneev/ORriZ+u9fDot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',
22
- upce: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUUAAAGBBAMAAAADI77MAAAAGFBMVEVHcEwAAAAAAAAAAAAAAAAAAAAAAAAAAABoAtTLAAAAB3RSTlMAgipazeqqIjjTawAABk9JREFUeNrt2E13mzgUgGHA2N66H1O2NEnrLem04236FW8n7WnZutPMeFs7dvT3B4NAukLC6aSn53TOq02CLeDx1ZV0IYrCbapU/Vc17Zv+zPxnvjVfqK75LmC6OPf4vjbtrv7TjP1bYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSIESNGjBgxYsSI8X9q/GkNI0aMGH9J4+mT95ePZJfk8WVuH55ff7K6PH3XNtEr/iquoLu8/RHG5/WucCW6vFLqT3M0WtddPrbHpdlqttZJa2WJx12X2f2Nsb7UR6vHqDremKOl7vKX+bZtGytySq3M0aLrcnF/Y3ex3I6IffeWqPa6i2W8NSdNlCp8xvvHsQ7KuwPjQ9chFRGqe+wvSx2Sqr381LRSxHGu9tZNMqWaTlf3z8cqb26rn/+HUrtu0EphrJJh/7DJ0Y280ELk41p8namb757XJ7nfuNAjlJnBrjB7+4blrmgzIBeTv7RHNxHT7A7G5EQ3fdG4GszPuc+41Ji4y/jDJHqzsOeMPvGZSLj6+Eak40xM8u2wMS5lTjfHt3nfmHRJVjaFbR2uXbRwx7VJzJUTxpmdjiLKR41TM/HagTy0N31j3MWmHZy4noo+o/k9bRhlAoozjhpTaTxk/eV1NyvsvpMuPeb6Hmk9gj6jCXUtXoowJnI9r3LoiDG51htRE/+x2hf1flL0jONuOrf/xfUyGDBasyIVi6OVz63x293mddJ8kDVr31rfwu477W6Utsvb44dRFBrrlY0QqLEz6cu7GtNGUDYBTHXG2X3nnWUiTvYZY3twnTBWcRCH0SG9Hr24g3FRJ0WiIxTr+9p9jSUWgfAZ5/bas5YTqIrD1jEe2tujxmp1WNVrxkaP1c5jvLmrsbrazl4N1VcZ4wuPsUWGjWlz20nrKFXPmNnGYtAolux6dbvK7XQU63tXiLw5YtRLVtoOw7KJ1H8zjkp7kkydymxhxbhuZ2pfd9kNG9t9YWx2kHsY12KS6KpzZdLxcJ3nt6J6P32sS7Ow8ZmeK1NjLNwBNMbRsPGVkmvN0+vSqihHTUGRiS27OetmsAZb6pJw2i692ZBxOI6x6lVmNjttTl46EydK1t3P8LauLp4b4yzqjaAVx1nYWE2BvecHtmcvmiFbivLMO5fcxXETHTWKOIaNz8zTTCS27H1kV3h9o/zlnt314juNwbEeOc9k7qqu09FjjNx10/0F+Y8yZqb49O6Oqf7rMXo+stNxEx03Lu5inPiS0a4y2vrWa9yGjfOu8Bg2bgKPnhvxbPXBfxM9kpnaPTi0Ul09KNxJOWDMuuXMWh89xlu5cXqMVbR2eSjnv1l1vrWxBGq0XpCLvrHoR9vUuKHabKJCsWifHtaWUd4jGZoziXkiH5v9umccW88K+4BxHlw/2t12YRvzYM3Zn3IbU/50dU8eXOitUXeNmTt+vbMnFvHKLZaKgWm9dbmJ5xWBqfuWYme1jWvfs00ryO3n+VJ9OHHTcR9Ox9QYR10dvvON1lb+0zeWobqg2md2w4vh2WBNMTbzKdHxHvvisdSb/lgmtzQGpkxP4BpjNbgVTq3uugDKfPfSa9/haTkPGJUbnd8+F+3L1dmQ8bx0Hsx6i8qF/dat6D8Bm9cFly9O/3auJo3d2lfocdl/eXR+rXoC6wF8dP5kqdTgbl25VuIB6fWT0lvKJeJ96xFjQ4iV/xw7jqP+O1TfGK7Eaw+lAhvaWRujPArmY9du5AebXnJfyNfh+2LYOHOfPgIVcSZednfDsHU7mLi9bIOU9yrmlTDuBomV0f7+6fvwCUmVBc2bWjEjzTCM/mnbF/3JH/WzzOvebz7rBuMQld3XfPiFcuqshacvBjp7vkyGL3/6u/d6udXh5Phb7zz6ddq/Dfnb7iZBOsMAAAAASUVORK5CYII=',
23
- gs1datamatrix: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANoAAADYCAYAAACN1f3QAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9btSIVQTuICGaoTnZRKY61CkWoEGqFVh1MLv2CJg1Jiouj4Fpw8GOx6uDirKuDqyAIfoC4ujgpukiJ/0sKLWI8OO7Hu3uPu3eAv1FhqtkVB1TNMtLJhJDNrQrBV/RgEAGMISYxU58TxRQ8x9c9fHy9i/Is73N/jn4lbzLAJxDHmW5YxBvEsU1L57xPHGYlSSE+J5406ILEj1yXXX7jXHTYzzPDRiY9TxwmFoodLHcwKxkq8QxxRFE1yvdnXVY4b3FWKzXWuid/YSivrSxzneYokljEEkQIkFFDGRVYiNKqkWIiTfsJD/+I4xfJJZOrDEaOBVShQnL84H/wu1uzMD3lJoUSQPeLbX+MA8FdoFm37e9j226eAIFn4Epr+6sNYPaT9HpbixwBA9vAxXVbk/eAyx1g+EmXDMmRAjT9hQLwfkbflAOGboG+Nbe31j5OH4AMdZW6AQ4OgYkiZa97vLu3s7d/z7T6+wGyunLA/6T1MgAAAAlwSFlzAAAN1wAADdcBQiibeAAAA29JREFUeNrt3VtqLSEURVEN1f8umwYcAiXZYe3oGN+XemZSwvHqHGOs8c588W8qj9X9eDfd69vjudcffA3gzwkNhAZCA4QGQgOhAUIDoQGfno1/W/5recB0bS2u74R73ZqN4osGho4gNEBoIDQQGiA0EBrwaecH63nA/a7CY3X/b/uJZzdD72t2v1dfNDB0BKEBQgOhgdAAoYHQAKFBxFN8vNX8fhOzL1IzSDq/s+6bXFjKAAwdAaGB0EBogNBAaIDQQGhwhjkyMwO6z5b479fW3QnrqFgzBAwdQWiA0EBogNBAaCA0QGjQ3xM677roGVff6wmzam56r9YMAUNHEBogNBAaCA0QGggNEBrkVK8Zkpq10HkNitTMi8SMlHXIMym/Pl80MHQEoQFCA6GB0AChgdAAoUHEc8h9zAPO2X1tkc73mnhn1gwBQ0cQGiA0EBogNBAaCA34pZ2lDBI/Cqd+xK28tuv+235jljIAQ0dAaCA0QGggNBAaIDQQGtxlZymDN7+qpzalGM3Pm7iHzteWer6WMgBDR0BoIDRAaCA0EBogNBAa3GVnZsgJsyUqZ66cMLshdW3rgOvbeg++aGDoCEIDhAZCA6EBQgOhAUKDiJ3dZN4e7xZ2k+lzbYldh6wZAoaOIDRAaCA0QGggNBAaIDTo7wmdNzUzILFmRPdZEKPxeTs/O2uGgKEjCA0QGggNEBoIDYQGCA36S+0m031tkcS9njCDJHVt7Wet+KKBoSMIDRAaCA2EBggNhAYIDSJ2dpOpnC3RfSeWhMSOKH9x3sR7bf/35IsGQgOhAUIDoYHQAKGB0IBPOz9Yp64vIbHJxQnPpPv7j92DLxoYOoLQAKGB0EBogNBAaIDQICK1ycVq/lxm4T1UzyBJnXc2fq+JZ7LVgy8aGDqC0AChgdBAaIDQQGiA0CDiKT7eOuS5lM8MKJSY8TEueq9vn8nWsXzRwNARhAYIDYQGQgOEBkIDhAYR1TNDUrt/pHZ2uclNuw5ZMwQMHQGhgdBAaIDQQGiA0EBocIY5an/x776eReK8K/huu15f6tpm6m/JFw0MHUFogNBAaCA0QGggNEBoELGzZkj5DhuNnbCbTOfznrB2izVDwNARhAYIDYQGCA2EBkIDfql6KQPgszFfNDB0BKEBQgOhgdAAoYHQAKFBxjdAx3fMRvuQ1QAAAABJRU5ErkJggg==',
24
- };
25
-
26
- const SampleBarcode = ({ schema }: { schema: BarcodeSchema }) => (
27
- <img
28
- style={{
29
- width: schema.width * ZOOM,
30
- height: schema.height * ZOOM,
31
- position: 'absolute',
32
- borderRadius: 0,
33
- opacity: 0.5,
34
- }}
35
- src={barcodeExampleImageObj[schema.type]}
36
- />
37
- );
38
-
39
- const ErrorBarcode = () => (
40
- <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', height: '100%' }}>
41
- <span
42
- style={{
43
- color: 'white',
44
- background: 'red',
45
- padding: '0.25rem',
46
- fontSize: '12pt',
47
- fontWeight: 'bold',
48
- borderRadius: 2,
49
- }}
50
- >
51
- ERROR
52
- </span>
53
- </div>
54
- );
55
-
56
- const BarcodePreview = (props: { schema: BarcodeSchema; value: string }) => {
57
- const { schema, value } = props;
58
-
59
- if (value.length === 0) {
60
- return null;
61
- }
62
-
63
- return validateBarcodeInput(schema.type as BarCodeType, value) ? (
64
- <SampleBarcode schema={schema} />
65
- ) : (
66
- <ErrorBarcode />
67
- );
68
- };
69
- type Props = SchemaUIProps & { schema: BarcodeSchema };
70
-
71
- const BarcodeSchemaUI = (
72
- { schema, editable, placeholder, tabIndex, onChange, onStopEditing }: Props,
73
- ref: Ref<HTMLInputElement>
74
- ) => {
75
- const value = schema.data;
76
-
77
- const style: React.CSSProperties = {
78
- textAlign: 'center',
79
- position: 'absolute',
80
- zIndex: 2,
81
- fontSize: '1rem',
82
- color: '#000',
83
- height: Number(schema.height) * ZOOM,
84
- width: Number(schema.width) * ZOOM,
85
- backgroundColor: editable || value ? 'rgb(242 244 255 / 75%)' : 'none',
86
- border: 'none',
87
- display: 'flex',
88
- alignItems: 'center',
89
- justifyContent: 'center',
90
- overflow: 'auto',
91
- };
92
-
93
- return (
94
- <div
95
- style={{
96
- width: '100%',
97
- height: '100%',
98
- display: 'flex',
99
- alignItems: 'center',
100
- justifyContent: 'center',
101
- fontFamily: "'Open Sans', sans-serif",
102
- }}
103
- >
104
- {editable ? (
105
- <input
106
- ref={ref}
107
- tabIndex={tabIndex}
108
- placeholder={placeholder}
109
- style={style}
110
- value={value}
111
- onChange={(e) => onChange(e.target.value)}
112
- onBlur={onStopEditing}
113
- />
114
- ) : (
115
- <div style={style}>
116
- <span>{value}</span>
117
- </div>
118
- )}
119
- <BarcodePreview value={value} schema={schema} />
120
- </div>
121
- );
122
- };
123
-
124
- export default forwardRef<HTMLInputElement, Props>(BarcodeSchemaUI);
@@ -1,87 +0,0 @@
1
- import React, { useState, forwardRef, ChangeEvent, Ref } from 'react';
2
- import { ImageSchema } from '@pdfme/common';
3
- import { SchemaUIProps } from './SchemaUI';
4
- import { readFiles } from '../../helper';
5
- import { ZOOM } from '../../constants';
6
- import { XMarkIcon } from '@heroicons/react/24/outline';
7
-
8
- type Props = SchemaUIProps & { schema: ImageSchema };
9
-
10
- const ImageSchemaUI = (props: Props, ref: Ref<HTMLInputElement>) => {
11
- const { editable, placeholder, tabIndex, schema, onChange, onStopEditing } = props;
12
- const [fileName, setFileName] = useState<string>('');
13
- const hasData = Boolean(schema.data);
14
-
15
- const size: React.CSSProperties = { width: schema.width * ZOOM, height: schema.height * ZOOM };
16
-
17
- return (
18
- <>
19
- <div
20
- style={{
21
- ...size,
22
- opacity: hasData ? 1 : 0.5,
23
- backgroundImage: hasData || !editable ? 'none' : `url(${placeholder})`,
24
- backgroundSize: `${size.width}px ${size.height}px`,
25
- }}
26
- onClick={(e) => {
27
- if (editable) {
28
- e.stopPropagation();
29
- }
30
- }}
31
- >
32
- {hasData && <img style={{ ...size, borderRadius: 0 }} src={schema.data} />}
33
- {hasData && editable && (
34
- <button
35
- tabIndex={tabIndex}
36
- style={{
37
- position: 'absolute',
38
- top: 0,
39
- left: 0,
40
- zIndex: 1,
41
- display: 'flex',
42
- justifyContent: 'center',
43
- alignItems: 'center',
44
- color: '#333',
45
- background: '#f2f2f2',
46
- borderRadius: 2,
47
- border: '1px solid #767676',
48
- cursor: 'pointer',
49
- height: 24,
50
- width: 24,
51
- }}
52
- aria-label="close"
53
- onClick={() => {
54
- setFileName('');
55
- onChange('');
56
- }}
57
- >
58
- <XMarkIcon width={10} height={10} />
59
- </button>
60
- )}
61
- </div>
62
- <label
63
- style={{
64
- display: editable ? 'flex' : 'none',
65
- position: 'absolute',
66
- top: '50%',
67
- width: '100%',
68
- cursor: 'pointer',
69
- }}
70
- >
71
- <input
72
- ref={ref}
73
- tabIndex={tabIndex}
74
- value={fileName}
75
- onChange={(event: ChangeEvent<HTMLInputElement>) =>
76
- readFiles(event.target.files, 'dataURL').then((result) => onChange(result as string))
77
- }
78
- onBlur={onStopEditing}
79
- type="file"
80
- accept="image/jpeg, image/png"
81
- />
82
- </label>
83
- </>
84
- );
85
- };
86
-
87
- export default forwardRef<HTMLInputElement, Props>(ImageSchemaUI);
@@ -1,62 +0,0 @@
1
- import React, { forwardRef, RefObject, Ref, ReactNode } from 'react';
2
- import { SchemaForUI, isTextSchema, isImageSchema, isBarcodeSchema } from '@pdfme/common';
3
- import { ZOOM, SELECTABLE_CLASSNAME } from '../../constants';
4
- import TextSchema from './TextSchema';
5
- import ImageSchema from './ImageSchema';
6
- import BarcodeSchema from './BarcodeSchema';
7
-
8
- export interface SchemaUIProps {
9
- schema: SchemaForUI;
10
- editable: boolean;
11
- onChange: (value: string) => void;
12
- onStopEditing: () => void;
13
- tabIndex?: number;
14
- placeholder?: string;
15
- }
16
-
17
- type Props = SchemaUIProps & {
18
- outline: string;
19
- onChangeHoveringSchemaId?: (id: string | null) => void;
20
- };
21
-
22
- const Wrapper = ({
23
- children,
24
- outline,
25
- onChangeHoveringSchemaId,
26
- schema,
27
- }: Props & { children: ReactNode }) => (
28
- <div
29
- title={schema.key}
30
- onMouseEnter={() => onChangeHoveringSchemaId && onChangeHoveringSchemaId(schema.id)}
31
- onMouseLeave={() => onChangeHoveringSchemaId && onChangeHoveringSchemaId(null)}
32
- className={SELECTABLE_CLASSNAME}
33
- id={schema.id}
34
- style={{
35
- position: 'absolute',
36
- cursor: 'pointer',
37
- height: schema.height * ZOOM,
38
- width: schema.width * ZOOM,
39
- top: schema.position.y * ZOOM,
40
- left: schema.position.x * ZOOM,
41
- outline,
42
- }}
43
- >
44
- {children}
45
- </div>
46
- );
47
-
48
- const SchemaUI = (props: Props, ref: Ref<HTMLTextAreaElement | HTMLInputElement>) => {
49
- const r = {
50
- [props.editable ? 'ref' : '']: ref as RefObject<HTMLTextAreaElement | HTMLInputElement>,
51
- };
52
- const { schema } = props;
53
-
54
- return (
55
- <Wrapper {...props}>
56
- {isTextSchema(schema) && <TextSchema {...r} {...props} schema={schema} />}
57
- {isImageSchema(schema) && <ImageSchema {...r} {...props} schema={schema} />}
58
- {isBarcodeSchema(schema) && <BarcodeSchema {...r} {...props} schema={schema} />}
59
- </Wrapper>
60
- );
61
- };
62
- export default forwardRef<HTMLTextAreaElement | HTMLInputElement, Props>(SchemaUI);
@@ -1,117 +0,0 @@
1
- import React, { useContext, forwardRef, Ref, useState, useEffect } from 'react';
2
- import {
3
- DEFAULT_FONT_SIZE,
4
- DEFAULT_ALIGNMENT,
5
- DEFAULT_LINE_HEIGHT,
6
- DEFAULT_CHARACTER_SPACING,
7
- DEFAULT_FONT_COLOR,
8
- TextSchema,
9
- calculateDynamicFontSize,
10
- getFontKitFont,
11
- getFontAlignmentValue,
12
- } from '@pdfme/common';
13
- import { SchemaUIProps } from './SchemaUI';
14
- import { ZOOM } from '../../constants';
15
- import { FontContext } from '../../contexts';
16
-
17
- type Props = SchemaUIProps & { schema: TextSchema };
18
-
19
- const TextSchemaUI = (
20
- { schema, editable, placeholder, tabIndex, onChange, onStopEditing }: Props,
21
- ref: Ref<HTMLTextAreaElement>
22
- ) => {
23
- const font = useContext(FontContext);
24
- const [dynamicFontSize, setDynamicFontSize] = useState<number | undefined>(undefined);
25
- const [fontAlignmentValue, setFontAlignmentValue] = useState<number>(0);
26
-
27
-
28
- useEffect(() => {
29
- if (schema.dynamicFontSize && schema.data) {
30
- calculateDynamicFontSize({
31
- textSchema: schema,
32
- font,
33
- input: schema.data,
34
- startingFontSize: dynamicFontSize,
35
- }).then(setDynamicFontSize);
36
- } else {
37
- setDynamicFontSize(undefined);
38
- }
39
- }, [
40
- schema.data,
41
- schema.width,
42
- schema.height,
43
- schema.dynamicFontSize?.min,
44
- schema.dynamicFontSize?.max,
45
- schema.dynamicFontSize?.fit,
46
- schema.characterSpacing,
47
- schema.lineHeight,
48
- font
49
- ]);
50
-
51
- useEffect(() => {
52
- getFontKitFont(schema, font).then(fontKitFont => {
53
- const fav = getFontAlignmentValue(fontKitFont, dynamicFontSize ?? schema.fontSize ?? DEFAULT_FONT_SIZE);
54
- setFontAlignmentValue(fav);
55
- });
56
- }, [
57
- schema.width,
58
- schema.height,
59
- schema.fontName,
60
- schema.fontSize,
61
- schema.dynamicFontSize?.max,
62
- schema.dynamicFontSize?.min,
63
- schema.dynamicFontSize?.fit,
64
- schema.characterSpacing,
65
- schema.lineHeight,
66
- font,
67
- dynamicFontSize
68
- ]);
69
-
70
-
71
- const style: React.CSSProperties = {
72
- position: 'absolute',
73
- top: 0,
74
- padding: 0,
75
- height: fontAlignmentValue < 0 ? schema.height * ZOOM + Math.abs(fontAlignmentValue) : schema.height * ZOOM,
76
- width: schema.width * ZOOM,
77
- resize: 'none',
78
- marginTop: fontAlignmentValue < 0 ? fontAlignmentValue : 0,
79
- paddingTop: fontAlignmentValue >= 0 ? fontAlignmentValue : 0,
80
- fontFamily: schema.fontName ? `'${schema.fontName}'` : 'inherit',
81
- color: schema.fontColor ? schema.fontColor : DEFAULT_FONT_COLOR,
82
- fontSize: `${dynamicFontSize ?? schema.fontSize ?? DEFAULT_FONT_SIZE}pt`,
83
- letterSpacing: `${schema.characterSpacing ?? DEFAULT_CHARACTER_SPACING}pt`,
84
- lineHeight: `${schema.lineHeight ?? DEFAULT_LINE_HEIGHT}em`,
85
- textAlign: schema.alignment ?? DEFAULT_ALIGNMENT,
86
- whiteSpace: 'pre-wrap',
87
- wordBreak: 'break-word',
88
- backgroundColor:
89
- schema.data && schema.backgroundColor ? schema.backgroundColor : 'rgb(242 244 255 / 75%)',
90
- border: 'none',
91
- };
92
-
93
- return editable ? (
94
- <textarea
95
- ref={ref}
96
- placeholder={placeholder}
97
- tabIndex={tabIndex}
98
- style={style}
99
- onChange={(e) => onChange(e.target.value)}
100
- onBlur={onStopEditing}
101
- value={schema.data}
102
- ></textarea>
103
- ) : (
104
- <div style={{ ...style, height: schema.height * ZOOM, marginTop: 0, paddingTop: 0 }}>
105
- <div style={{ marginTop: style.marginTop, paddingTop: style.paddingTop }}>
106
- {/* Set the letterSpacing of the last character to 0. */}
107
- {schema.data.split('').map((l, i) => (
108
- <span key={i} style={{ letterSpacing: String(schema.data).length === i + 1 ? 0 : 'inherit', }} >
109
- {l}
110
- </span>
111
- ))}
112
- </div>
113
- </div>
114
- );
115
- };
116
-
117
- export default forwardRef<HTMLTextAreaElement, Props>(TextSchemaUI);