@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
@@ -0,0 +1,3 @@
1
+ import type { Renderer } from './types';
2
+ declare const renderer: Renderer;
3
+ export default renderer;
@@ -1,3 +1,4 @@
1
+ import type { Renderer } from './types';
1
2
  import { Template, Size, UIProps, UIOptions, PreviewProps } from '@pdfme/common';
2
3
  export declare abstract class BaseUIClass {
3
4
  protected domContainer: HTMLElement | null;
@@ -5,15 +6,19 @@ export declare abstract class BaseUIClass {
5
6
  protected size: Size;
6
7
  private lang;
7
8
  private font;
9
+ private rendererRegistry;
10
+ private options;
8
11
  private readonly setSize;
9
12
  resizeObserver: ResizeObserver;
10
13
  constructor(props: UIProps);
11
- protected getI18n(): (key: "type" | "field" | "cancel" | "fieldName" | "require" | "uniq" | "inputExample" | "edit" | "plsInputName" | "fieldMustUniq" | "notUniq" | "noKeyName" | "fieldsList" | "addNewField" | "editField" | "errorOccurred" | "errorBulkUpdateFieldName" | "commitBulkUpdateFieldName" | "bulkUpdateFieldName") => string;
14
+ protected getI18n(): (key: "type" | "field" | "cancel" | "fieldName" | "require" | "uniq" | "inputExample" | "edit" | "plsInputName" | "fieldMustUniq" | "notUniq" | "noKeyName" | "fieldsList" | "addNewField" | "editField" | "errorOccurred" | "errorBulkUpdateFieldName" | "commitBulkUpdateFieldName" | "bulkUpdateFieldName" | "barColor" | "textColor" | "bgColor") => string;
12
15
  protected getFont(): Record<string, {
13
16
  data: (string | ArrayBuffer | Uint8Array) & (string | ArrayBuffer | Uint8Array | undefined);
14
17
  fallback?: boolean | undefined;
15
18
  subset?: boolean | undefined;
16
19
  }>;
20
+ protected getRendererRegistry(): Renderer;
21
+ protected getOptions(): {};
17
22
  getTemplate(): {
18
23
  schemas: Record<string, {
19
24
  type: "text";
@@ -25,6 +30,7 @@ export declare abstract class BaseUIClass {
25
30
  };
26
31
  rotate?: number | undefined;
27
32
  alignment?: "center" | "left" | "right" | undefined;
33
+ verticalAlignment?: "top" | "bottom" | "middle" | undefined;
28
34
  fontSize?: number | undefined;
29
35
  fontName?: string | undefined;
30
36
  fontColor?: string | undefined;
@@ -54,6 +60,9 @@ export declare abstract class BaseUIClass {
54
60
  y: number;
55
61
  };
56
62
  rotate?: number | undefined;
63
+ backgroundcolor?: string | undefined;
64
+ barcolor?: string | undefined;
65
+ textcolor?: string | undefined;
57
66
  }>[];
58
67
  basePdf: (string | ArrayBuffer | Uint8Array) & (string | ArrayBuffer | Uint8Array | undefined);
59
68
  sampledata?: Record<string, string>[] | undefined;
@@ -1,7 +1,8 @@
1
- declare type Props = {
1
+ import React from 'react';
2
+ type Props = {
2
3
  pageCursor: number;
3
4
  pageNum: number;
4
5
  setPageCursor: (page: number) => void;
5
6
  };
6
- declare const Pager: ({ pageCursor, pageNum, setPageCursor }: Props) => JSX.Element;
7
+ declare const Pager: ({ pageCursor, pageNum, setPageCursor }: Props) => React.JSX.Element;
7
8
  export default Pager;
@@ -1,6 +1,7 @@
1
- declare type Props = {
1
+ import React from 'react';
2
+ type Props = {
2
3
  zoomLevel: number;
3
4
  setZoomLevel: (zoom: number) => void;
4
5
  };
5
- declare const Pager: ({ zoomLevel, setZoomLevel }: Props) => JSX.Element;
6
+ declare const Pager: ({ zoomLevel, setZoomLevel }: Props) => React.JSX.Element;
6
7
  export default Pager;
@@ -1,5 +1,6 @@
1
+ import React from 'react';
1
2
  import { Size } from '@pdfme/common';
2
- declare type Props = {
3
+ type Props = {
3
4
  size: Size;
4
5
  pageCursor: number;
5
6
  pageNum: number;
@@ -7,5 +8,5 @@ declare type Props = {
7
8
  zoomLevel: number;
8
9
  setZoomLevel: (zoom: number) => void;
9
10
  };
10
- declare const CtlBar: (props: Props) => JSX.Element;
11
+ declare const CtlBar: (props: Props) => React.JSX.Element;
11
12
  export default CtlBar;
@@ -1,9 +1,9 @@
1
- import { Ref } from 'react';
1
+ import React, { Ref } from 'react';
2
2
  import Guides from '@scena/react-guides';
3
3
  import { Size } from '@pdfme/common';
4
4
  declare const _Guides: ({ paperSize, horizontalRef, verticalRef, }: {
5
5
  paperSize: Size;
6
6
  horizontalRef: Ref<Guides> | undefined;
7
7
  verticalRef: Ref<Guides> | undefined;
8
- }) => JSX.Element;
8
+ }) => React.JSX.Element;
9
9
  export default _Guides;
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import { Size } from '@pdfme/common';
2
- declare const Mask: ({ width, height }: Size) => JSX.Element;
3
+ declare const Mask: ({ width, height }: Size) => React.JSX.Element;
3
4
  export default Mask;
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { OnDrag, OnResize, OnDragEnd, OnDragGroupEnd, OnResizeEnd, OnResizeGroupEnd, OnClick } from 'react-moveable';
3
- declare type Props = {
3
+ type Props = {
4
4
  target: HTMLElement[];
5
5
  bounds: {
6
6
  left: number;
@@ -1,8 +1,9 @@
1
+ import React from 'react';
1
2
  import { OnDragStart as _OnDragStart, OnSelect as _OnSelect } from 'react-selecto';
2
3
  declare const _Selecto: ({ container, continueSelect, onDragStart, onSelect, }: {
3
4
  container: HTMLElement | null;
4
5
  continueSelect: boolean;
5
6
  onDragStart: (e: _OnDragStart) => void;
6
7
  onSelect: (e: _OnSelect) => void;
7
- }) => JSX.Element;
8
+ }) => React.JSX.Element;
8
9
  export default _Selecto;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { SchemaForUI } from '@pdfme/common';
3
+ import { SidebarProps } from '..';
4
+ declare const BarcodePropEditor: (props: Pick<SidebarProps, 'changeSchemas'> & {
5
+ activeSchema: SchemaForUI;
6
+ }) => React.JSX.Element;
7
+ export default BarcodePropEditor;
@@ -1,6 +1,7 @@
1
+ import React from 'react';
1
2
  import { SchemaForUI } from '@pdfme/common';
2
3
  import { SidebarProps } from '..';
3
4
  declare const ExampleInputEditor: (props: Pick<SidebarProps, 'changeSchemas'> & {
4
5
  activeSchema: SchemaForUI;
5
- }) => JSX.Element;
6
+ }) => React.JSX.Element;
6
7
  export default ExampleInputEditor;
@@ -0,0 +1,9 @@
1
+ import React, { ChangeEvent, CSSProperties } from 'react';
2
+ declare const ColorInputSet: (props: {
3
+ label: string;
4
+ value: string;
5
+ onChange: (e: ChangeEvent<HTMLInputElement>) => void;
6
+ onClear: () => void;
7
+ extraStyle?: React.CSSProperties | undefined;
8
+ }) => React.JSX.Element;
9
+ export default ColorInputSet;
@@ -1,6 +1,7 @@
1
+ import React from 'react';
1
2
  import { SchemaForUI } from '@pdfme/common';
2
3
  import { SidebarProps } from '../index';
3
4
  declare const PositionAndSizeEditor: (props: Pick<SidebarProps, 'pageSize' | 'schemas' | 'changeSchemas' | 'activeElements'> & {
4
5
  activeSchema: SchemaForUI;
5
- }) => JSX.Element;
6
+ }) => React.JSX.Element;
6
7
  export default PositionAndSizeEditor;
@@ -1,6 +1,7 @@
1
+ import React from 'react';
1
2
  import { SchemaForUI } from '@pdfme/common';
2
3
  import { SidebarProps } from '..';
3
4
  declare const TextPropEditor: (props: Pick<SidebarProps, 'changeSchemas'> & {
4
5
  activeSchema: SchemaForUI;
5
- }) => JSX.Element;
6
+ }) => React.JSX.Element;
6
7
  export default TextPropEditor;
@@ -1,6 +1,7 @@
1
+ import React from 'react';
1
2
  import { SchemaForUI } from '@pdfme/common';
2
3
  import { SidebarProps } from '../index';
3
4
  declare const TypeAndKeyEditor: (props: Pick<SidebarProps, 'schemas' | 'changeSchemas'> & {
4
5
  activeSchema: SchemaForUI;
5
- }) => JSX.Element;
6
+ }) => React.JSX.Element;
6
7
  export default TypeAndKeyEditor;
@@ -1,6 +1,7 @@
1
+ import React from 'react';
1
2
  import { SchemaForUI } from '@pdfme/common';
2
3
  import { SidebarProps } from '../index';
3
- declare const DetailView: (props: Pick<SidebarProps, 'schemas' | 'pageSize' | 'changeSchemas' | 'activeElements'> & {
4
+ declare const DetailView: (props: Pick<SidebarProps, 'schemas' | 'pageSize' | 'changeSchemas' | 'activeElements' | 'deselectSchema'> & {
4
5
  activeSchema: SchemaForUI;
5
- }) => JSX.Element;
6
+ }) => React.JSX.Element;
6
7
  export default DetailView;
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import { SidebarProps } from '../index';
2
- declare const SelectableSortableContainer: (props: Pick<SidebarProps, 'schemas' | 'onEdit' | 'onSortEnd' | 'height' | 'hoveringSchemaId' | 'onChangeHoveringSchemaId'>) => JSX.Element;
3
+ declare const SelectableSortableContainer: (props: Pick<SidebarProps, 'schemas' | 'onEdit' | 'onSortEnd' | 'height' | 'hoveringSchemaId' | 'onChangeHoveringSchemaId'>) => React.JSX.Element;
3
4
  export default SelectableSortableContainer;
@@ -10,5 +10,5 @@ interface Props {
10
10
  onMouseEnter: () => void;
11
11
  onMouseLeave: () => void;
12
12
  }
13
- declare const SelectableSortableItem: ({ isSelected, style, onSelect, onEdit, schema, schemas, onMouseEnter, onMouseLeave, }: Props) => JSX.Element;
13
+ declare const SelectableSortableItem: ({ isSelected, style, onSelect, onEdit, schema, schemas, onMouseEnter, onMouseLeave, }: Props) => React.JSX.Element;
14
14
  export default SelectableSortableItem;
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import { SidebarProps } from '../index';
2
- declare const ListView: (props: Pick<SidebarProps, 'schemas' | 'onSortEnd' | 'onEdit' | 'size' | 'hoveringSchemaId' | 'onChangeHoveringSchemaId' | 'changeSchemas'>) => JSX.Element;
3
+ declare const ListView: (props: Pick<SidebarProps, 'schemas' | 'onSortEnd' | 'onEdit' | 'size' | 'hoveringSchemaId' | 'onChangeHoveringSchemaId' | 'changeSchemas'>) => React.JSX.Element;
3
4
  export default ListView;
@@ -1,5 +1,6 @@
1
+ import React from 'react';
1
2
  import { SchemaForUI, Size } from '@pdfme/common';
2
- export declare type SidebarProps = {
3
+ export type SidebarProps = {
3
4
  height: number;
4
5
  hoveringSchemaId: string | null;
5
6
  onChangeHoveringSchemaId: (id: string | null) => void;
@@ -19,6 +20,7 @@ export declare type SidebarProps = {
19
20
  schemaId: string;
20
21
  }[]) => void;
21
22
  addSchema: () => void;
23
+ deselectSchema: () => void;
22
24
  };
23
- declare const Sidebar: (props: SidebarProps) => JSX.Element;
25
+ declare const Sidebar: (props: SidebarProps) => React.JSX.Element;
24
26
  export default Sidebar;
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import { DesignerReactProps, Template } from '@pdfme/common';
2
3
  declare const TemplateEditor: ({ template, size, onSaveTemplate, onChangeTemplate, }: {
3
4
  template: {
@@ -11,6 +12,7 @@ declare const TemplateEditor: ({ template, size, onSaveTemplate, onChangeTemplat
11
12
  };
12
13
  rotate?: number | undefined;
13
14
  alignment?: "center" | "left" | "right" | undefined;
15
+ verticalAlignment?: "top" | "bottom" | "middle" | undefined;
14
16
  fontSize?: number | undefined;
15
17
  fontName?: string | undefined;
16
18
  fontColor?: string | undefined;
@@ -40,6 +42,9 @@ declare const TemplateEditor: ({ template, size, onSaveTemplate, onChangeTemplat
40
42
  y: number;
41
43
  };
42
44
  rotate?: number | undefined;
45
+ backgroundcolor?: string | undefined;
46
+ barcolor?: string | undefined;
47
+ textcolor?: string | undefined;
43
48
  }>[];
44
49
  basePdf: (string | ArrayBuffer | Uint8Array) & (string | ArrayBuffer | Uint8Array | undefined);
45
50
  sampledata?: Record<string, string>[] | undefined;
@@ -60,6 +65,7 @@ declare const TemplateEditor: ({ template, size, onSaveTemplate, onChangeTemplat
60
65
  };
61
66
  rotate?: number | undefined;
62
67
  alignment?: "center" | "left" | "right" | undefined;
68
+ verticalAlignment?: "top" | "bottom" | "middle" | undefined;
63
69
  fontSize?: number | undefined;
64
70
  fontName?: string | undefined;
65
71
  fontColor?: string | undefined;
@@ -89,6 +95,9 @@ declare const TemplateEditor: ({ template, size, onSaveTemplate, onChangeTemplat
89
95
  y: number;
90
96
  };
91
97
  rotate?: number | undefined;
98
+ backgroundcolor?: string | undefined;
99
+ barcolor?: string | undefined;
100
+ textcolor?: string | undefined;
92
101
  }>[];
93
102
  basePdf: (string | ArrayBuffer | Uint8Array) & (string | ArrayBuffer | Uint8Array | undefined);
94
103
  sampledata?: Record<string, string>[] | undefined;
@@ -100,9 +109,9 @@ declare const TemplateEditor: ({ template, size, onSaveTemplate, onChangeTemplat
100
109
  fallback?: boolean | undefined;
101
110
  subset?: boolean | undefined;
102
111
  }> | undefined;
103
- lang?: "th" | "en" | "ja" | "ar" | "pl" | undefined;
112
+ lang?: "th" | "en" | "ja" | "ar" | "pl" | "it" | undefined;
104
113
  } | undefined;
105
114
  } & {
106
115
  onChangeTemplate: (t: Template) => void;
107
- }) => JSX.Element;
116
+ }) => React.JSX.Element;
108
117
  export default TemplateEditor;
@@ -1,2 +1,3 @@
1
- declare const Divider: () => JSX.Element;
1
+ import React from 'react';
2
+ declare const Divider: () => React.JSX.Element;
2
3
  export default Divider;
@@ -1,6 +1,7 @@
1
+ import React from 'react';
1
2
  import { Size } from '@pdfme/common';
2
3
  declare const Error: ({ size, error }: {
3
4
  size: Size;
4
5
  error: Error;
5
- }) => JSX.Element;
6
+ }) => React.JSX.Element;
6
7
  export default Error;
@@ -1,4 +1,4 @@
1
- import { MutableRefObject, ReactNode } from 'react';
1
+ import React, { MutableRefObject, ReactNode } from 'react';
2
2
  import { SchemaForUI, Size } from '@pdfme/common';
3
3
  declare const Paper: (props: {
4
4
  paperRefs: MutableRefObject<HTMLDivElement[]>;
@@ -15,5 +15,5 @@ declare const Paper: (props: {
15
15
  index: number;
16
16
  schema: SchemaForUI;
17
17
  }) => ReactNode;
18
- }) => JSX.Element | null;
18
+ }) => React.JSX.Element | null;
19
19
  export default Paper;
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import { PreviewReactProps } from '@pdfme/common';
2
- declare const Preview: ({ template, inputs, size, onChangeInput }: PreviewReactProps) => JSX.Element;
3
+ declare const Preview: ({ template, inputs, size, onChangeInput }: PreviewReactProps) => React.JSX.Element;
3
4
  export default Preview;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { RendererProps } from "../types";
3
+ declare const Renderer: (props: RendererProps) => React.JSX.Element;
4
+ export default Renderer;
@@ -1,6 +1,6 @@
1
1
  import React, { ReactNode } from 'react';
2
2
  import { Size } from '@pdfme/common';
3
- declare type Props = {
3
+ type Props = {
4
4
  size: Size;
5
5
  scale: number;
6
6
  children: ReactNode;
@@ -1,2 +1,3 @@
1
- declare const Spinner: () => JSX.Element;
1
+ import React from 'react';
2
+ declare const Spinner: () => React.JSX.Element;
2
3
  export default Spinner;
@@ -1,9 +1,10 @@
1
+ import React from 'react';
1
2
  import { Size } from '@pdfme/common';
2
- declare type Props = {
3
+ type Props = {
3
4
  size: Size;
4
5
  unitCursor: number;
5
6
  unitNum: number;
6
7
  setUnitCursor: (page: number) => void;
7
8
  };
8
- declare const UnitPager: ({ size, unitCursor, unitNum, setUnitCursor }: Props) => JSX.Element;
9
+ declare const UnitPager: ({ size, unitCursor, unitNum, setUnitCursor }: Props) => React.JSX.Element;
9
10
  export default UnitPager;
@@ -1,7 +1,9 @@
1
1
  /// <reference types="react" />
2
- export declare const I18nContext: import("react").Context<(key: "type" | "field" | "cancel" | "fieldName" | "require" | "uniq" | "inputExample" | "edit" | "plsInputName" | "fieldMustUniq" | "notUniq" | "noKeyName" | "fieldsList" | "addNewField" | "editField" | "errorOccurred" | "errorBulkUpdateFieldName" | "commitBulkUpdateFieldName" | "bulkUpdateFieldName") => string>;
2
+ export declare const I18nContext: import("react").Context<(key: "type" | "field" | "cancel" | "fieldName" | "require" | "uniq" | "inputExample" | "edit" | "plsInputName" | "fieldMustUniq" | "notUniq" | "noKeyName" | "fieldsList" | "addNewField" | "editField" | "errorOccurred" | "errorBulkUpdateFieldName" | "commitBulkUpdateFieldName" | "bulkUpdateFieldName" | "barColor" | "textColor" | "bgColor") => string>;
3
3
  export declare const FontContext: import("react").Context<Record<string, {
4
4
  data: (string | ArrayBuffer | Uint8Array) & (string | ArrayBuffer | Uint8Array | undefined);
5
5
  fallback?: boolean | undefined;
6
6
  subset?: boolean | undefined;
7
7
  }>>;
8
+ export declare const RendererRegistry: import("react").Context<import("./types").Renderer>;
9
+ export declare const OptionsContext: import("react").Context<{}>;
@@ -18,6 +18,7 @@ export declare const initShortCuts: (arg: {
18
18
  selectAll: () => void;
19
19
  }) => void;
20
20
  export declare const destroyShortCuts: () => void;
21
+ export declare const blobToDataURL: (blob: Blob) => Promise<string>;
21
22
  export declare const readFiles: (files: FileList | null, type: 'text' | 'dataURL' | 'arrayBuffer') => Promise<string | ArrayBuffer>;
22
23
  export declare const px2mm: (px: number) => number;
23
24
  export declare const getPdfPageSizes: (pdfBlob: Blob) => Promise<{
@@ -42,6 +43,7 @@ export declare const templateSchemas2SchemasList: (_template: Template) => Promi
42
43
  lineHeight?: number | undefined;
43
44
  rotate?: number | undefined;
44
45
  alignment?: "center" | "left" | "right" | undefined;
46
+ verticalAlignment?: "top" | "bottom" | "middle" | undefined;
45
47
  fontName?: string | undefined;
46
48
  fontColor?: string | undefined;
47
49
  characterSpacing?: number | undefined;
@@ -74,6 +76,9 @@ export declare const templateSchemas2SchemasList: (_template: Template) => Promi
74
76
  y: number;
75
77
  };
76
78
  rotate?: number | undefined;
79
+ backgroundcolor?: string | undefined;
80
+ barcolor?: string | undefined;
81
+ textcolor?: string | undefined;
77
82
  })[][]>;
78
83
  export declare const fmtTemplate: (template: Template, schemasList: SchemaForUI[][]) => Template;
79
84
  export declare const getInitialSchema: () => SchemaForUI;
@@ -1,7 +1,7 @@
1
1
  import { RefObject } from 'react';
2
2
  import { Template, Size } from '@pdfme/common';
3
3
  export declare const usePrevious: <T>(value: T) => T | null;
4
- declare type UIPreProcessorProps = {
4
+ type UIPreProcessorProps = {
5
5
  template: Template;
6
6
  size: Size;
7
7
  zoomLevel: number;
@@ -15,7 +15,7 @@ export declare const useUIPreProcessor: ({ template, size, zoomLevel }: UIPrePro
15
15
  scale: number;
16
16
  error: Error | null;
17
17
  };
18
- declare type ScrollPageCursorProps = {
18
+ type ScrollPageCursorProps = {
19
19
  ref: RefObject<HTMLDivElement>;
20
20
  pageSizes: Size[];
21
21
  scale: number;
@@ -1,5 +1,5 @@
1
1
  import { Lang } from '@pdfme/common';
2
- declare type DictEn = typeof dictEn;
2
+ type DictEn = typeof dictEn;
3
3
  declare const dictEn: {
4
4
  cancel: string;
5
5
  field: string;
@@ -20,6 +20,9 @@ declare const dictEn: {
20
20
  errorBulkUpdateFieldName: string;
21
21
  commitBulkUpdateFieldName: string;
22
22
  bulkUpdateFieldName: string;
23
+ barColor: string;
24
+ textColor: string;
25
+ bgColor: string;
23
26
  };
24
27
  export declare const curriedI18n: (lang: Lang) => (key: keyof DictEn) => string;
25
28
  export {};
@@ -0,0 +1,2 @@
1
+ import type { RenderProps } from "../types";
2
+ export declare const renderBarcode: (arg: RenderProps) => Promise<void>;
@@ -0,0 +1,2 @@
1
+ import type { RenderProps } from "../types";
2
+ export declare const renderImage: (arg: RenderProps) => Promise<void>;
@@ -0,0 +1,2 @@
1
+ import type { RenderProps } from "../types";
2
+ export declare const renderText: (arg: RenderProps) => Promise<void>;
@@ -0,0 +1,25 @@
1
+ import type { UIOptions, SchemaForUI } from '@pdfme/common';
2
+ interface RenderBaseProps {
3
+ schema: SchemaForUI;
4
+ mode: 'viewer' | 'form';
5
+ tabIndex?: number;
6
+ placeholder?: string;
7
+ stopEditing?: () => void;
8
+ }
9
+ export type RendererProps = RenderBaseProps & {
10
+ onChange: (value: string) => void;
11
+ outline: string;
12
+ onChangeHoveringSchemaId?: (id: string | null) => void;
13
+ };
14
+ export type RenderProps = RenderBaseProps & {
15
+ onChange?: (value: string) => void;
16
+ value: string;
17
+ rootElement: HTMLDivElement;
18
+ options: UIOptions;
19
+ };
20
+ export interface Renderer {
21
+ [key: string]: {
22
+ render: (arg: RenderProps) => Promise<void>;
23
+ } | undefined;
24
+ }
25
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pdfme/ui",
3
- "version": "2.1.0",
3
+ "version": "2.2.1",
4
4
  "sideEffects": false,
5
5
  "author": "hand-dot",
6
6
  "license": "MIT",
@@ -56,6 +56,7 @@
56
56
  "@types/pdfjs-dist": "^2.10.378",
57
57
  "@types/react": "^17.0.52",
58
58
  "@types/react-dom": "^17.0.18",
59
+ "csstype": "^3.1.2",
59
60
  "eslint-plugin-react": "^7.28.0",
60
61
  "eslint-plugin-react-hooks": "^4.3.0",
61
62
  "jest-canvas-mock": "^2.3.1",
package/src/Designer.tsx CHANGED
@@ -3,7 +3,7 @@ import ReactDOM from 'react-dom';
3
3
  import { Template, DesignerProps, checkDesignerProps, checkTemplate } from '@pdfme/common';
4
4
  import { BaseUIClass } from './class';
5
5
  import { DESTROYED_ERR_MSG } from './constants';
6
- import { I18nContext, FontContext } from './contexts';
6
+ import { I18nContext, FontContext, RendererRegistry, OptionsContext } from './contexts';
7
7
  import DesignerComponent from './components/Designer/index';
8
8
  import { cloneDeep } from './helper';
9
9
 
@@ -48,22 +48,26 @@ class Designer extends BaseUIClass {
48
48
  ReactDOM.render(
49
49
  <I18nContext.Provider value={this.getI18n()}>
50
50
  <FontContext.Provider value={this.getFont()}>
51
- <DesignerComponent
52
- template={this.template}
53
- onSaveTemplate={(template) => {
54
- this.template = template;
55
- if (this.onSaveTemplateCallback) {
56
- this.onSaveTemplateCallback(template);
57
- }
58
- }}
59
- onChangeTemplate={(template) => {
60
- this.template = template;
61
- if (this.onChangeTemplateCallback) {
62
- this.onChangeTemplateCallback(template);
63
- }
64
- }}
65
- size={this.size}
66
- />
51
+ <RendererRegistry.Provider value={this.getRendererRegistry()}>
52
+ <OptionsContext.Provider value={this.getOptions()}>
53
+ <DesignerComponent
54
+ template={this.template}
55
+ onSaveTemplate={(template) => {
56
+ this.template = template;
57
+ if (this.onSaveTemplateCallback) {
58
+ this.onSaveTemplateCallback(template);
59
+ }
60
+ }}
61
+ onChangeTemplate={(template) => {
62
+ this.template = template;
63
+ if (this.onChangeTemplateCallback) {
64
+ this.onChangeTemplateCallback(template);
65
+ }
66
+ }}
67
+ size={this.size}
68
+ />
69
+ </OptionsContext.Provider>
70
+ </RendererRegistry.Provider>
67
71
  </FontContext.Provider>
68
72
  </I18nContext.Provider>,
69
73
  this.domContainer
package/src/Form.tsx CHANGED
@@ -3,7 +3,7 @@ import ReactDOM from 'react-dom';
3
3
  import { PreviewProps } from '@pdfme/common';
4
4
  import { PreviewUI } from './class';
5
5
  import { DESTROYED_ERR_MSG } from './constants';
6
- import { I18nContext, FontContext } from './contexts';
6
+ import { I18nContext, FontContext, RendererRegistry, OptionsContext } from './contexts';
7
7
  import Preview from './components/Preview';
8
8
 
9
9
  class Form extends PreviewUI {
@@ -23,19 +23,23 @@ class Form extends PreviewUI {
23
23
  ReactDOM.render(
24
24
  <I18nContext.Provider value={this.getI18n()}>
25
25
  <FontContext.Provider value={this.getFont()}>
26
- <Preview
27
- template={this.template}
28
- size={this.size}
29
- inputs={this.inputs}
30
- onChangeInput={(arg: { index: number; value: string; key: string }) => {
31
- const { index, value, key } = arg;
32
- if (this.onChangeInputCallback) {
33
- this.onChangeInputCallback({ index, value, key });
34
- }
35
- this.inputs[index][key] = value;
36
- this.render();
37
- }}
38
- />
26
+ <RendererRegistry.Provider value={this.getRendererRegistry()}>
27
+ <OptionsContext.Provider value={this.getOptions()}>
28
+ <Preview
29
+ template={this.template}
30
+ size={this.size}
31
+ inputs={this.inputs}
32
+ onChangeInput={(arg: { index: number; value: string; key: string }) => {
33
+ const { index, value, key } = arg;
34
+ if (this.onChangeInputCallback) {
35
+ this.onChangeInputCallback({ index, value, key });
36
+ }
37
+ this.inputs[index][key] = value;
38
+ this.render();
39
+ }}
40
+ />
41
+ </OptionsContext.Provider>
42
+ </RendererRegistry.Provider>
39
43
  </FontContext.Provider>
40
44
  </I18nContext.Provider>,
41
45
  this.domContainer
package/src/Viewer.tsx CHANGED
@@ -3,7 +3,7 @@ import ReactDOM from 'react-dom';
3
3
  import { PreviewProps } from '@pdfme/common';
4
4
  import { PreviewUI } from './class';
5
5
  import { DESTROYED_ERR_MSG } from './constants';
6
- import { I18nContext, FontContext } from './contexts';
6
+ import { I18nContext, FontContext, RendererRegistry, OptionsContext } from './contexts';
7
7
  import Preview from './components/Preview';
8
8
 
9
9
  class Viewer extends PreviewUI {
@@ -17,7 +17,11 @@ class Viewer extends PreviewUI {
17
17
  ReactDOM.render(
18
18
  <I18nContext.Provider value={this.getI18n()}>
19
19
  <FontContext.Provider value={this.getFont()}>
20
- <Preview template={this.template} size={this.size} inputs={this.inputs} />
20
+ <RendererRegistry.Provider value={this.getRendererRegistry()}>
21
+ <OptionsContext.Provider value={this.getOptions()}>
22
+ <Preview template={this.template} size={this.size} inputs={this.inputs} />
23
+ </OptionsContext.Provider>
24
+ </RendererRegistry.Provider>
21
25
  </FontContext.Provider>
22
26
  </I18nContext.Provider>,
23
27
  this.domContainer
@@ -0,0 +1,14 @@
1
+ import type { BarCodeType } from '@pdfme/common';
2
+ import type { Renderer } from './types';
3
+ import { renderText } from './renders/text';
4
+ import { renderImage } from './renders/image';
5
+ import { renderBarcode } from './renders/barcodes';
6
+
7
+ const barCodeTypes: BarCodeType[] = ['qrcode', 'japanpost', 'ean13', 'ean8', 'code39', 'code128', 'nw7', 'itf14', 'upca', 'upce', 'gs1datamatrix']
8
+
9
+ const renderer: Renderer = {
10
+ text: { render: renderText, },
11
+ image: { render: renderImage, },
12
+ ...barCodeTypes.reduce((acc, barcodeType) => Object.assign(acc, { [barcodeType]: { render: renderBarcode } }), {}),
13
+ }
14
+ export default renderer