@privyid/persona 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/avatar/Avatar.vue +1 -0
- package/dist/components/avatar/Avatar.vue.d.ts +13 -13
- package/dist/components/avatar/index.d.ts +2 -2
- package/dist/components/badge/Badge.vue +48 -8
- package/dist/components/badge/Badge.vue.d.ts +2 -1
- package/dist/components/badge/index.d.ts +1 -2
- package/dist/components/banner/Banner.vue +19 -7
- package/dist/components/banner/Banner.vue.d.ts +1 -1
- package/dist/components/banner/index.d.ts +1 -1
- package/dist/components/breadcrumbs/Breadcrumb.vue +60 -0
- package/dist/components/breadcrumbs/Breadcrumb.vue.d.ts +41 -0
- package/dist/components/breadcrumbs/BreadcrumbItem.vue +87 -0
- package/dist/components/breadcrumbs/BreadcrumbItem.vue.d.ts +28 -0
- package/dist/components/breadcrumbs/BreadcrumbItemDropdown.vue +68 -0
- package/dist/components/breadcrumbs/BreadcrumbItemDropdown.vue.d.ts +25 -0
- package/dist/components/breadcrumbs/index.d.ts +11 -0
- package/dist/components/breadcrumbs/index.mjs +3 -0
- package/dist/components/button/Button.vue +84 -14
- package/dist/components/button/Button.vue.d.ts +12 -2
- package/dist/components/button/index.d.ts +4 -3
- package/dist/components/button-group/ButtonGroup.vue +11 -18
- package/dist/components/button-group/index.d.ts +6 -0
- package/dist/components/button-group/index.mjs +1 -0
- package/dist/components/calendar/Calendar.vue +8 -3
- package/dist/components/calendar/Calendar.vue.d.ts +31 -31
- package/dist/components/calendar/adapter/adapter.d.ts +1 -1
- package/dist/components/calendar/adapter/date.mjs +1 -1
- package/dist/components/camera/Camera.vue +7 -3
- package/dist/components/camera/Camera.vue.d.ts +19 -19
- package/dist/components/camera/adapter/adapter.d.ts +2 -2
- package/dist/components/camera/adapter/liveness.mjs +1 -1
- package/dist/components/caption/Caption.vue +1 -0
- package/dist/components/caption/index.d.ts +1 -1
- package/dist/components/card/Card.vue +9 -3
- package/dist/components/card/Card.vue.d.ts +5 -5
- package/dist/components/card/CardSection.vue.d.ts +2 -2
- package/dist/components/card/index.d.ts +1 -1
- package/dist/components/chart/Chart.vue +1 -0
- package/dist/components/chart/ChartVal.vue.d.ts +2 -2
- package/dist/components/chart/adapter/index.d.ts +1 -1
- package/dist/components/chart/index.d.ts +1 -1
- package/dist/components/checkbox/Checkbox.vue +14 -5
- package/dist/components/checkbox/Checkbox.vue.d.ts +13 -13
- package/dist/components/collapse/Collapse.vue +2 -1
- package/dist/components/collapse/Collapse.vue.d.ts +1 -1
- package/dist/components/contextual-bar/ContextualBar.vue +15 -3
- package/dist/components/contextual-bar/ContextualBar.vue.d.ts +11 -11
- package/dist/components/contextual-bar/index.d.ts +1 -1
- package/dist/components/cropper/Cropper.vue +3 -2
- package/dist/components/cropper/Cropper.vue.d.ts +20 -20
- package/dist/components/cropper/utils/use-pinch.mjs +10 -2
- package/dist/components/datepicker/Datepicker.vue +1 -0
- package/dist/components/datepicker/Datepicker.vue.d.ts +16 -16
- package/dist/components/dialog/Dialog.vue.d.ts +2 -2
- package/dist/components/dialog/DialogFooter.vue +2 -2
- package/dist/components/dialog/DialogFooter.vue.d.ts +7 -7
- package/dist/components/dialog/index.d.ts +11 -16
- package/dist/components/divider/Divider.vue +12 -2
- package/dist/components/dot/Dot.vue +12 -2
- package/dist/components/dot/Dot.vue.d.ts +2 -1
- package/dist/components/dot/index.d.ts +1 -2
- package/dist/components/dropdown/Dropdown.vue +5 -3
- package/dist/components/dropdown/Dropdown.vue.d.ts +8 -8
- package/dist/components/dropdown/DropdownItem.vue +49 -6
- package/dist/components/dropdown/DropdownItem.vue.d.ts +22 -1
- package/dist/components/dropdown-subitem/DropdownSubitem.vue.d.ts +3 -3
- package/dist/components/dropzone/Dropzone.vue.d.ts +12 -12
- package/dist/components/dropzone/index.d.ts +1 -1
- package/dist/components/filterbar/Filterbar.vue +7 -6
- package/dist/components/filterbar/Filterbar.vue.d.ts +3 -3
- package/dist/components/filterbar/index.d.ts +1 -1
- package/dist/components/filterbar/pinned/{Date.vue.d.ts → PinnedDate.vue.d.ts} +8 -8
- package/dist/components/filterbar/pinned/{Multiselect.vue.d.ts → PinnedMultiselect.vue.d.ts} +5 -5
- package/dist/components/filterbar/pinned/{Select.vue.d.ts → PinnedSelect.vue.d.ts} +10 -10
- package/dist/components/filterbar/pinned/{Toggle.vue.d.ts → PinnedToggle.vue.d.ts} +11 -11
- package/dist/components/form-group/FormGroup.vue +9 -4
- package/dist/components/form-group/FormGroup.vue.d.ts +2 -2
- package/dist/components/global/context.d.ts +1 -1
- package/dist/components/global/use-singleton.d.ts +2 -2
- package/dist/components/global/utils/queue.d.ts +2 -2
- package/dist/components/heading/Heading.vue +6 -0
- package/dist/components/heading/index.d.ts +3 -3
- package/dist/components/input/Input.vue +27 -19
- package/dist/components/input/Input.vue.d.ts +4 -4
- package/dist/components/input-file/InputFile.vue +42 -6
- package/dist/components/input-file/InputFile.vue.d.ts +24 -9
- package/dist/components/input-group/InputGroup.vue +55 -41
- package/dist/components/input-group/InputGroupAddon.vue +10 -11
- package/dist/components/input-group/index.d.ts +6 -0
- package/dist/components/input-group/index.mjs +1 -0
- package/dist/components/input-password/InputPassword.vue +3 -1
- package/dist/components/input-pin/InputPin.vue +3 -3
- package/dist/components/input-pin/InputPin.vue.d.ts +3 -3
- package/dist/components/input-range/InputRange.vue +8 -5
- package/dist/components/input-range/InputRange.vue.d.ts +11 -11
- package/dist/components/input-range/utils/use-drag.mjs +5 -1
- package/dist/components/label/Label.vue +34 -7
- package/dist/components/label/Label.vue.d.ts +3 -4
- package/dist/components/label/index.d.ts +1 -0
- package/dist/components/label/index.mjs +0 -0
- package/dist/components/main/Main.vue +7 -3
- package/dist/components/modal/Modal.vue +19 -6
- package/dist/components/modal/Modal.vue.d.ts +9 -9
- package/dist/components/nav/Nav.vue +24 -8
- package/dist/components/nav/Nav.vue.d.ts +2 -2
- package/dist/components/nav/NavForm.vue +1 -1
- package/dist/components/nav/NavItem.vue +2 -0
- package/dist/components/nav/NavItem.vue.d.ts +8 -8
- package/dist/components/nav/NavItemDropdown.vue.d.ts +1 -1
- package/dist/components/nav/NavSubItem.vue +4 -0
- package/dist/components/nav/NavSubItem.vue.d.ts +2 -2
- package/dist/components/nav/index.d.ts +2 -2
- package/dist/components/navbar/Navbar.vue +6 -3
- package/dist/components/navbar/Navbar.vue.d.ts +5 -5
- package/dist/components/navbar/NavbarBrand.vue +2 -1
- package/dist/components/navbar/NavbarBrand.vue.d.ts +2 -2
- package/dist/components/navbar/NavbarNav.vue +16 -5
- package/dist/components/navbar/NavbarNav.vue.d.ts +2 -2
- package/dist/components/navbar/NavbarToggle.vue +2 -1
- package/dist/components/navbar/index.d.ts +1 -1
- package/dist/components/overlay/Overlay.vue +2 -1
- package/dist/components/page/Page.vue +13 -9
- package/dist/components/page/Page.vue.d.ts +3 -3
- package/dist/components/pagination/Pagination.vue +16 -9
- package/dist/components/pagination/Pagination.vue.d.ts +5 -5
- package/dist/components/pagination/index.d.ts +1 -1
- package/dist/components/pagination/index.mjs +1 -1
- package/dist/components/pagination/utils/calculate-page.d.ts +1 -1
- package/dist/components/pdf-helipad/PdfHelipad.vue +134 -0
- package/dist/components/pdf-helipad/PdfHelipad.vue.d.ts +45 -0
- package/dist/components/pdf-helipad/index.d.ts +7 -0
- package/dist/components/pdf-helipad/index.mjs +0 -0
- package/dist/components/pdf-helipad/utils/use-drag.d.ts +8 -0
- package/dist/components/pdf-helipad/utils/use-drag.mjs +38 -0
- package/dist/components/pdf-object/PdfObject.vue +3 -1
- package/dist/components/pdf-object/PdfObject.vue.d.ts +20 -20
- package/dist/components/pdf-object/PdfObjectDebugger.vue +4 -1
- package/dist/components/pdf-object/PdfObjectDebugger.vue.d.ts +5 -5
- package/dist/components/pdf-object/PdfObjects.vue +1 -0
- package/dist/components/pdf-object/index.d.ts +5 -5
- package/dist/components/pdf-object/utils/overlap.d.ts +1 -1
- package/dist/components/pdf-object/utils/position.d.ts +1 -1
- package/dist/components/pdf-object/utils/use-drop.mjs +1 -1
- package/dist/components/pdf-text/PdfText.vue +129 -0
- package/dist/components/pdf-text/PdfText.vue.d.ts +168 -0
- package/dist/components/pdf-text/utils/text-to-image.d.ts +68 -0
- package/dist/components/pdf-text/utils/text-to-image.mjs +118 -0
- package/dist/components/pdf-viewer/PdfError.vue +20 -3
- package/dist/components/pdf-viewer/PdfLoading.vue +1 -1
- package/dist/components/pdf-viewer/PdfNavigation.vue +9 -5
- package/dist/components/pdf-viewer/PdfViewer.vue +11 -3
- package/dist/components/pdf-viewer/PdfViewer.vue.d.ts +12 -12
- package/dist/components/pdf-viewer/assets/pdf-loading.svg +1 -100
- package/dist/components/pdf-viewer/index.d.ts +1 -1
- package/dist/components/pdf-viewer/utils/use-viewer.d.ts +7 -7
- package/dist/components/progress/Progress.vue +15 -7
- package/dist/components/progress/Progress.vue.d.ts +2 -2
- package/dist/components/progress/ProgressItem.vue.d.ts +1 -1
- package/dist/components/radio/Radio.vue +17 -6
- package/dist/components/radio/Radio.vue.d.ts +9 -9
- package/dist/components/radio/index.d.ts +1 -1
- package/dist/components/select/Select.vue +10 -1
- package/dist/components/select/Select.vue.d.ts +11 -11
- package/dist/components/select/adapter/async-adapter.d.ts +2 -2
- package/dist/components/sidebar/Sidebar.vue +10 -4
- package/dist/components/sidebar/Sidebar.vue.d.ts +3 -3
- package/dist/components/sidebar/SidebarBrand.vue +2 -1
- package/dist/components/sidebar/SidebarBrand.vue.d.ts +2 -2
- package/dist/components/sidebar/SidebarNav.vue +5 -17
- package/dist/components/sidebar/SidebarNav.vue.d.ts +4 -4
- package/dist/components/sidebar/index.d.ts +1 -1
- package/dist/components/sidebar-menu/SidebarMenu.vue +1 -1
- package/dist/components/sidebar-menu/SidebarMenu.vue.d.ts +4 -4
- package/dist/components/signature-draw/SignatureDraw.vue.d.ts +3 -3
- package/dist/components/signature-draw/SignatureDrawDesktop.vue +4 -1
- package/dist/components/signature-draw/SignatureDrawDesktop.vue.d.ts +3 -3
- package/dist/components/signature-draw/SignatureDrawMobile.vue +5 -0
- package/dist/components/signature-draw/SignatureDrawMobile.vue.d.ts +3 -3
- package/dist/components/signature-draw/utils/canvas.d.ts +1 -1
- package/dist/components/signature-draw/utils/smooth-line.mjs +15 -0
- package/dist/components/signature-draw/utils/use-draw.mjs +5 -1
- package/dist/components/signature-text/SignatureText.vue +9 -4
- package/dist/components/signature-text/SignatureText.vue.d.ts +17 -8
- package/dist/components/steps/Step.vue.d.ts +5 -5
- package/dist/components/steps/Steps.vue.d.ts +1 -1
- package/dist/components/steps/index.d.ts +9 -9
- package/dist/components/steps/utils/hook.d.ts +1 -1
- package/dist/components/strengthbar/Strengthbar.vue +4 -0
- package/dist/components/subheading/Subheading.vue +1 -1
- package/dist/components/subheading/Subheading.vue.d.ts +2 -2
- package/dist/components/subheading/index.d.ts +1 -1
- package/dist/components/table/Table.vue +82 -6
- package/dist/components/table/Table.vue.d.ts +19 -10
- package/dist/components/tabs/Tabs.vue +4 -1
- package/dist/components/tabs/Tabs.vue.d.ts +2 -2
- package/dist/components/text/Text.vue.d.ts +2 -2
- package/dist/components/text/index.d.ts +1 -1
- package/dist/components/textarea/Textarea.vue +8 -7
- package/dist/components/textarea/Textarea.vue.d.ts +5 -5
- package/dist/components/toast/Toast.vue +17 -3
- package/dist/components/toast/Toast.vue.d.ts +1 -1
- package/dist/components/toast/ToastContainer.vue.d.ts +4 -4
- package/dist/components/toast/index.d.ts +2 -2
- package/dist/components/toggle/Toggle.vue +26 -8
- package/dist/components/toggle/Toggle.vue.d.ts +12 -12
- package/dist/components/tooltip/Tooltip.vue +6 -2
- package/dist/components/tooltip/Tooltip.vue.d.ts +7 -7
- package/dist/components/tooltip/index.d.ts +1 -1
- package/dist/components/tooltip/index.mjs +1 -1
- package/dist/components/tooltip/utils/create-handler.d.ts +1 -1
- package/dist/components/tour/Tour.vue.d.ts +3 -3
- package/dist/components/tour/TourDialog.vue +9 -1
- package/dist/components/tour/TourDialog.vue.d.ts +8 -8
- package/dist/components/tour/TourHighlight.vue.d.ts +2 -2
- package/dist/components/tour/core/base.d.ts +1 -1
- package/dist/components/tour/core/base.mjs +15 -0
- package/dist/components/tour/core/step/action.d.ts +4 -4
- package/dist/components/tour/core/step.d.ts +3 -3
- package/dist/components/tour/core/step.mjs +19 -0
- package/dist/components/tour/core/story.d.ts +1 -1
- package/dist/components/tour/core/story.mjs +81 -0
- package/dist/components/tour/core/tour.d.ts +1 -1
- package/dist/components/tour/core/tour.mjs +55 -1
- package/dist/components/truncate/Truncate.vue +8 -0
- package/dist/components/utils/base64.mjs +1 -1
- package/dist/components/utils/value.d.ts +4 -4
- package/dist/components/wizard/Wizard.vue.d.ts +6 -6
- package/dist/components/wizard/WizardBody.vue.d.ts +1 -1
- package/dist/components/wizard/WizardStep.vue.d.ts +4 -4
- package/dist/core/index.d.ts +3 -1
- package/dist/core/index.mjs +4 -1
- package/dist/module.json +1 -1
- package/dist/module.mjs +1 -0
- package/dist/types.d.ts +1 -1
- package/package.json +14 -12
- package/dist/components/badge/assets/images/img-guide-badge.svg +0 -1
- package/dist/components/card/assets/images/img-card-callout-01.svg +0 -1
- package/dist/components/contextual-bar/assets/images/img-background-contextualbar.svg +0 -14
- package/dist/components/contextual-bar/assets/images/img-bg-contextualbar.svg +0 -19
- package/dist/components/cropper/assets/sample-1.jpg +0 -0
- package/dist/components/modal/assets/images/img-modal-banner-sheet.jpg +0 -0
- package/dist/components/pdf-object-text/PdfObjectText.vue +0 -170
- package/dist/components/pdf-object-text/PdfObjectText.vue.d.ts +0 -140
- package/dist/components/pdf-object-text/utils/text-to-image.d.ts +0 -51
- package/dist/components/pdf-object-text/utils/text-to-image.mjs +0 -77
- package/dist/components/pdf-viewer/assets/Calibrator-v3.pdf +8 -99519
- package/dist/components/pdf-viewer/assets/Calibrator-v3_protected.pdf +0 -0
- package/dist/components/pdf-viewer/assets/fixed-vs-fit.svg +0 -186
- package/dist/components/pdf-viewer/assets/sample-3.pdf +0 -0
- package/dist/components/pdf-viewer/assets/sample-with-sign.pdf +0 -0
- package/dist/components/pdf-viewer/assets/sample.pdf +0 -18304
- package/dist/components/sidebar/assets/images/icon-flag.svg +0 -1
- package/dist/components/sidebar/assets/images/logo-privy-icon.svg +0 -1
- package/dist/components/sidebar/assets/images/logo-privy.svg +0 -1
- package/dist/components/sidebar-menu/assets/images/img-flag.svg +0 -1
- package/dist/components/signature-draw/assets/empty-img.png +0 -0
- package/dist/components/signature-text/sample/sample-signature.png +0 -0
- /package/dist/components/filterbar/pinned/{Date.vue → PinnedDate.vue} +0 -0
- /package/dist/components/filterbar/pinned/{Multiselect.vue → PinnedMultiselect.vue} +0 -0
- /package/dist/components/filterbar/pinned/{Select.vue → PinnedSelect.vue} +0 -0
- /package/dist/components/filterbar/pinned/{Toggle.vue → PinnedToggle.vue} +0 -0
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
declare const _default: import("vue-demi").DefineComponent<{
|
|
3
3
|
x: {
|
|
4
4
|
type: NumberConstructor;
|
|
5
|
-
default:
|
|
5
|
+
default: undefined;
|
|
6
6
|
};
|
|
7
7
|
y: {
|
|
8
8
|
type: NumberConstructor;
|
|
9
|
-
default:
|
|
9
|
+
default: undefined;
|
|
10
10
|
};
|
|
11
11
|
page: {
|
|
12
12
|
type: NumberConstructor;
|
|
13
|
-
default:
|
|
13
|
+
default: undefined;
|
|
14
14
|
};
|
|
15
15
|
width: {
|
|
16
16
|
type: NumberConstructor;
|
|
@@ -22,19 +22,19 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
22
22
|
};
|
|
23
23
|
minWidth: {
|
|
24
24
|
type: NumberConstructor;
|
|
25
|
-
default:
|
|
25
|
+
default: undefined;
|
|
26
26
|
};
|
|
27
27
|
minHeight: {
|
|
28
28
|
type: NumberConstructor;
|
|
29
|
-
default:
|
|
29
|
+
default: undefined;
|
|
30
30
|
};
|
|
31
31
|
maxWidth: {
|
|
32
32
|
type: NumberConstructor;
|
|
33
|
-
default:
|
|
33
|
+
default: undefined;
|
|
34
34
|
};
|
|
35
35
|
maxHeight: {
|
|
36
36
|
type: NumberConstructor;
|
|
37
|
-
default:
|
|
37
|
+
default: undefined;
|
|
38
38
|
};
|
|
39
39
|
moveable: {
|
|
40
40
|
type: BooleanConstructor;
|
|
@@ -58,15 +58,15 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
58
58
|
}, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, ("update:x" | "update:y" | "update:page" | "update:width" | "update:height")[], "update:x" | "update:y" | "update:page" | "update:width" | "update:height", import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
|
|
59
59
|
x: {
|
|
60
60
|
type: NumberConstructor;
|
|
61
|
-
default:
|
|
61
|
+
default: undefined;
|
|
62
62
|
};
|
|
63
63
|
y: {
|
|
64
64
|
type: NumberConstructor;
|
|
65
|
-
default:
|
|
65
|
+
default: undefined;
|
|
66
66
|
};
|
|
67
67
|
page: {
|
|
68
68
|
type: NumberConstructor;
|
|
69
|
-
default:
|
|
69
|
+
default: undefined;
|
|
70
70
|
};
|
|
71
71
|
width: {
|
|
72
72
|
type: NumberConstructor;
|
|
@@ -78,19 +78,19 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
78
78
|
};
|
|
79
79
|
minWidth: {
|
|
80
80
|
type: NumberConstructor;
|
|
81
|
-
default:
|
|
81
|
+
default: undefined;
|
|
82
82
|
};
|
|
83
83
|
minHeight: {
|
|
84
84
|
type: NumberConstructor;
|
|
85
|
-
default:
|
|
85
|
+
default: undefined;
|
|
86
86
|
};
|
|
87
87
|
maxWidth: {
|
|
88
88
|
type: NumberConstructor;
|
|
89
|
-
default:
|
|
89
|
+
default: undefined;
|
|
90
90
|
};
|
|
91
91
|
maxHeight: {
|
|
92
92
|
type: NumberConstructor;
|
|
93
|
-
default:
|
|
93
|
+
default: undefined;
|
|
94
94
|
};
|
|
95
95
|
moveable: {
|
|
96
96
|
type: BooleanConstructor;
|
|
@@ -109,15 +109,15 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
109
109
|
default: boolean;
|
|
110
110
|
};
|
|
111
111
|
}>> & {
|
|
112
|
-
"onUpdate:x"?: (...args: any[]) => any;
|
|
113
|
-
"onUpdate:y"?: (...args: any[]) => any;
|
|
114
|
-
"onUpdate:page"?: (...args: any[]) => any;
|
|
115
|
-
"onUpdate:width"?: (...args: any[]) => any;
|
|
116
|
-
"onUpdate:height"?: (...args: any[]) => any;
|
|
112
|
+
"onUpdate:x"?: ((...args: any[]) => any) | undefined;
|
|
113
|
+
"onUpdate:y"?: ((...args: any[]) => any) | undefined;
|
|
114
|
+
"onUpdate:page"?: ((...args: any[]) => any) | undefined;
|
|
115
|
+
"onUpdate:width"?: ((...args: any[]) => any) | undefined;
|
|
116
|
+
"onUpdate:height"?: ((...args: any[]) => any) | undefined;
|
|
117
117
|
}, {
|
|
118
118
|
x: number;
|
|
119
|
-
y: number;
|
|
120
119
|
width: number;
|
|
120
|
+
y: number;
|
|
121
121
|
height: number;
|
|
122
122
|
autofocus: boolean;
|
|
123
123
|
maxHeight: number;
|
|
@@ -64,8 +64,11 @@ export default defineComponent({
|
|
|
64
64
|
|
|
65
65
|
<style lang="postcss">
|
|
66
66
|
.pdf-object {
|
|
67
|
+
--p-pdf-debugger-size: 198px;
|
|
68
|
+
|
|
67
69
|
&__debugger {
|
|
68
|
-
@apply grid grid-cols-1 p-4 bg-
|
|
70
|
+
@apply grid grid-cols-1 p-4 bg-inverse text-on-emphasis absolute rounded w-[var(--p-pdf-debugger-size)];
|
|
71
|
+
@apply dark:bg-dark-inverse dark:text-dark-on-emphasis;
|
|
69
72
|
|
|
70
73
|
> pre {
|
|
71
74
|
@apply truncate;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
declare const _default: import("vue-demi").DefineComponent<{}, {
|
|
2
|
-
x:
|
|
3
|
-
y:
|
|
4
|
-
page:
|
|
5
|
-
width:
|
|
6
|
-
height:
|
|
2
|
+
x: any;
|
|
3
|
+
y: any;
|
|
4
|
+
page: any;
|
|
5
|
+
width: any;
|
|
6
|
+
height: any;
|
|
7
7
|
}, {}, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, {}, string, import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{}>>, {}>;
|
|
8
8
|
export default _default;
|
|
@@ -23,7 +23,7 @@ export interface PdfObjectSize {
|
|
|
23
23
|
maxWidth?: number;
|
|
24
24
|
maxHeight?: number;
|
|
25
25
|
}
|
|
26
|
-
export
|
|
26
|
+
export type PdfObjectProp = PdfObjectSize & Omit<PdfObject, 'id'>;
|
|
27
27
|
export declare const PDF_OBJECTS_CONTEXT: InjectionKey<PdfObjects>;
|
|
28
28
|
export declare const PDF_OBJECT_CONTEXT: InjectionKey<ReturnType<typeof useObjectModel>>;
|
|
29
29
|
export declare function useSizeModel(props: PdfObjectSize): {
|
|
@@ -41,9 +41,9 @@ export declare function useSizeModel(props: PdfObjectSize): {
|
|
|
41
41
|
*/
|
|
42
42
|
export declare function useObjectModel(props: PdfObjectProp): {
|
|
43
43
|
id: symbol;
|
|
44
|
-
x: Ref<number>;
|
|
45
|
-
y: Ref<number>;
|
|
46
|
-
page:
|
|
44
|
+
x: Ref<number | undefined>;
|
|
45
|
+
y: Ref<number | undefined>;
|
|
46
|
+
page: any;
|
|
47
47
|
width: Ref<number>;
|
|
48
48
|
height: Ref<number>;
|
|
49
49
|
minWidth: Ref<number>;
|
|
@@ -54,4 +54,4 @@ export declare function useObjectModel(props: PdfObjectProp): {
|
|
|
54
54
|
};
|
|
55
55
|
export declare function usePage(page: MaybeRef<number>): Readonly<Ref<HTMLElement>>;
|
|
56
56
|
export declare const focus: import("lodash").DebouncedFunc<typeof focus_>;
|
|
57
|
-
export
|
|
57
|
+
export type AddonPositionVariant = 'top' | 'left' | 'right' | 'bottom';
|
|
@@ -6,7 +6,7 @@ export interface ObjectPosition {
|
|
|
6
6
|
x: number;
|
|
7
7
|
y: number;
|
|
8
8
|
}
|
|
9
|
-
export
|
|
9
|
+
export type CheckOverlapFn = (object: ObjectPosition, objects: Iterable<ObjectPosition>) => boolean;
|
|
10
10
|
export interface GetEmptyPositionOptions {
|
|
11
11
|
/**
|
|
12
12
|
* Other objects position
|
|
@@ -43,7 +43,7 @@ interface GetPosition {
|
|
|
43
43
|
* @param element Element to search
|
|
44
44
|
* @param container Maximum search element
|
|
45
45
|
*/
|
|
46
|
-
export declare function findRelativeParent(element: HTMLElement, container?: HTMLElement): HTMLElement;
|
|
46
|
+
export declare function findRelativeParent(element: HTMLElement, container?: HTMLElement): HTMLElement | null;
|
|
47
47
|
/**
|
|
48
48
|
* Computed X, Y position to Top, Left position
|
|
49
49
|
* @param context
|
|
@@ -20,7 +20,7 @@ export default function useDrop(target, dropTarget) {
|
|
|
20
20
|
overlap: 0.95,
|
|
21
21
|
enabled: enable.value,
|
|
22
22
|
checker(dragEvent, event, dropped, dropzone2, dropzoneElement, draggable, draggableElement) {
|
|
23
|
-
return dropped && (target.value
|
|
23
|
+
return dropped && (target.value?.contains(draggableElement) || draggableElement.classList.contains("pdf-object--external"));
|
|
24
24
|
},
|
|
25
25
|
ondragenter(event) {
|
|
26
26
|
hoverzone.value = event.target;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<img
|
|
3
|
+
class="pdf-text"
|
|
4
|
+
:width="width"
|
|
5
|
+
:height="height"
|
|
6
|
+
:src="preview"
|
|
7
|
+
:alt="text">
|
|
8
|
+
</template>
|
|
9
|
+
|
|
10
|
+
<script>
|
|
11
|
+
import {
|
|
12
|
+
defineComponent,
|
|
13
|
+
onMounted
|
|
14
|
+
} from "vue-demi";
|
|
15
|
+
import { createSpinner } from "../avatar/utils/create-image";
|
|
16
|
+
import { usePreview } from "../cropper";
|
|
17
|
+
import { useVModel } from "../input";
|
|
18
|
+
import { fromBase64 } from "../utils/base64";
|
|
19
|
+
import { watchDebounced } from "@vueuse/core";
|
|
20
|
+
import generate from "./utils/text-to-image";
|
|
21
|
+
export default defineComponent({
|
|
22
|
+
props: {
|
|
23
|
+
modelValue: {
|
|
24
|
+
type: [String, globalThis.File],
|
|
25
|
+
default: ""
|
|
26
|
+
},
|
|
27
|
+
modelModifiers: {
|
|
28
|
+
type: Object,
|
|
29
|
+
default: () => ({})
|
|
30
|
+
},
|
|
31
|
+
text: {
|
|
32
|
+
type: String,
|
|
33
|
+
default: ""
|
|
34
|
+
},
|
|
35
|
+
width: {
|
|
36
|
+
type: Number,
|
|
37
|
+
default: 198
|
|
38
|
+
},
|
|
39
|
+
height: {
|
|
40
|
+
type: Number,
|
|
41
|
+
default: 106
|
|
42
|
+
},
|
|
43
|
+
color: {
|
|
44
|
+
type: String,
|
|
45
|
+
default: "#4a5362"
|
|
46
|
+
},
|
|
47
|
+
size: {
|
|
48
|
+
type: Number,
|
|
49
|
+
default: 16
|
|
50
|
+
},
|
|
51
|
+
minSize: {
|
|
52
|
+
type: Number,
|
|
53
|
+
default: 11
|
|
54
|
+
},
|
|
55
|
+
maxSize: {
|
|
56
|
+
type: Number,
|
|
57
|
+
default: 72
|
|
58
|
+
},
|
|
59
|
+
fixedSize: {
|
|
60
|
+
type: Boolean,
|
|
61
|
+
default: false
|
|
62
|
+
},
|
|
63
|
+
font: {
|
|
64
|
+
type: String,
|
|
65
|
+
default: "DM Sans"
|
|
66
|
+
},
|
|
67
|
+
lineHeight: {
|
|
68
|
+
type: Number,
|
|
69
|
+
default: 1.5
|
|
70
|
+
},
|
|
71
|
+
padding: {
|
|
72
|
+
type: Number,
|
|
73
|
+
default: 12
|
|
74
|
+
},
|
|
75
|
+
label: {
|
|
76
|
+
type: String,
|
|
77
|
+
default: ""
|
|
78
|
+
},
|
|
79
|
+
labelColor: {
|
|
80
|
+
type: String,
|
|
81
|
+
default: "#9EA0A2"
|
|
82
|
+
},
|
|
83
|
+
labelFont: {
|
|
84
|
+
type: String,
|
|
85
|
+
default: void 0
|
|
86
|
+
},
|
|
87
|
+
labelSize: {
|
|
88
|
+
type: Number,
|
|
89
|
+
default: 12
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
setup(props) {
|
|
93
|
+
const model = useVModel(props);
|
|
94
|
+
const preview = usePreview(model, createSpinner(props.width, props.height));
|
|
95
|
+
watchDebounced(() => [
|
|
96
|
+
props.text,
|
|
97
|
+
props.width,
|
|
98
|
+
props.height,
|
|
99
|
+
props.color,
|
|
100
|
+
props.size,
|
|
101
|
+
props.fixedSize,
|
|
102
|
+
props.font,
|
|
103
|
+
props.lineHeight,
|
|
104
|
+
props.padding,
|
|
105
|
+
props.label,
|
|
106
|
+
props.labelColor,
|
|
107
|
+
props.labelFont,
|
|
108
|
+
props.labelSize
|
|
109
|
+
], () => {
|
|
110
|
+
load();
|
|
111
|
+
}, { debounce: 300 });
|
|
112
|
+
onMounted(() => {
|
|
113
|
+
load();
|
|
114
|
+
});
|
|
115
|
+
async function load() {
|
|
116
|
+
const result = await generate(props);
|
|
117
|
+
const value = props.modelModifiers.base64 ? result : fromBase64(result);
|
|
118
|
+
model.value = value;
|
|
119
|
+
}
|
|
120
|
+
return { preview };
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
</script>
|
|
124
|
+
|
|
125
|
+
<style lang="postcss">
|
|
126
|
+
.pdf-object .pdf-text {
|
|
127
|
+
@apply w-full h-full;
|
|
128
|
+
}
|
|
129
|
+
</style>
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { PropType } from 'vue-demi';
|
|
2
|
+
import { ModelModifier } from '../dropzone';
|
|
3
|
+
declare const _default: import("vue-demi").DefineComponent<{
|
|
4
|
+
modelValue: {
|
|
5
|
+
type: (StringConstructor | {
|
|
6
|
+
new (fileBits: BlobPart[], fileName: string, options?: FilePropertyBag | undefined): File;
|
|
7
|
+
prototype: File;
|
|
8
|
+
})[];
|
|
9
|
+
default: string;
|
|
10
|
+
};
|
|
11
|
+
modelModifiers: {
|
|
12
|
+
type: PropType<ModelModifier>;
|
|
13
|
+
default: () => ModelModifier;
|
|
14
|
+
};
|
|
15
|
+
text: {
|
|
16
|
+
type: StringConstructor;
|
|
17
|
+
default: string;
|
|
18
|
+
};
|
|
19
|
+
width: {
|
|
20
|
+
type: NumberConstructor;
|
|
21
|
+
default: number;
|
|
22
|
+
};
|
|
23
|
+
height: {
|
|
24
|
+
type: NumberConstructor;
|
|
25
|
+
default: number;
|
|
26
|
+
};
|
|
27
|
+
color: {
|
|
28
|
+
type: StringConstructor;
|
|
29
|
+
default: string;
|
|
30
|
+
};
|
|
31
|
+
size: {
|
|
32
|
+
type: NumberConstructor;
|
|
33
|
+
default: number;
|
|
34
|
+
};
|
|
35
|
+
minSize: {
|
|
36
|
+
type: NumberConstructor;
|
|
37
|
+
default: number;
|
|
38
|
+
};
|
|
39
|
+
maxSize: {
|
|
40
|
+
type: NumberConstructor;
|
|
41
|
+
default: number;
|
|
42
|
+
};
|
|
43
|
+
fixedSize: {
|
|
44
|
+
type: BooleanConstructor;
|
|
45
|
+
default: boolean;
|
|
46
|
+
};
|
|
47
|
+
font: {
|
|
48
|
+
type: StringConstructor;
|
|
49
|
+
default: string;
|
|
50
|
+
};
|
|
51
|
+
lineHeight: {
|
|
52
|
+
type: NumberConstructor;
|
|
53
|
+
default: number;
|
|
54
|
+
};
|
|
55
|
+
padding: {
|
|
56
|
+
type: NumberConstructor;
|
|
57
|
+
default: number;
|
|
58
|
+
};
|
|
59
|
+
label: {
|
|
60
|
+
type: StringConstructor;
|
|
61
|
+
default: string;
|
|
62
|
+
};
|
|
63
|
+
labelColor: {
|
|
64
|
+
type: StringConstructor;
|
|
65
|
+
default: string;
|
|
66
|
+
};
|
|
67
|
+
labelFont: {
|
|
68
|
+
type: StringConstructor;
|
|
69
|
+
default: undefined;
|
|
70
|
+
};
|
|
71
|
+
labelSize: {
|
|
72
|
+
type: NumberConstructor;
|
|
73
|
+
default: number;
|
|
74
|
+
};
|
|
75
|
+
}, {
|
|
76
|
+
preview: import("vue-demi").Ref<string>;
|
|
77
|
+
}, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, {}, string, import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
|
|
78
|
+
modelValue: {
|
|
79
|
+
type: (StringConstructor | {
|
|
80
|
+
new (fileBits: BlobPart[], fileName: string, options?: FilePropertyBag | undefined): File;
|
|
81
|
+
prototype: File;
|
|
82
|
+
})[];
|
|
83
|
+
default: string;
|
|
84
|
+
};
|
|
85
|
+
modelModifiers: {
|
|
86
|
+
type: PropType<ModelModifier>;
|
|
87
|
+
default: () => ModelModifier;
|
|
88
|
+
};
|
|
89
|
+
text: {
|
|
90
|
+
type: StringConstructor;
|
|
91
|
+
default: string;
|
|
92
|
+
};
|
|
93
|
+
width: {
|
|
94
|
+
type: NumberConstructor;
|
|
95
|
+
default: number;
|
|
96
|
+
};
|
|
97
|
+
height: {
|
|
98
|
+
type: NumberConstructor;
|
|
99
|
+
default: number;
|
|
100
|
+
};
|
|
101
|
+
color: {
|
|
102
|
+
type: StringConstructor;
|
|
103
|
+
default: string;
|
|
104
|
+
};
|
|
105
|
+
size: {
|
|
106
|
+
type: NumberConstructor;
|
|
107
|
+
default: number;
|
|
108
|
+
};
|
|
109
|
+
minSize: {
|
|
110
|
+
type: NumberConstructor;
|
|
111
|
+
default: number;
|
|
112
|
+
};
|
|
113
|
+
maxSize: {
|
|
114
|
+
type: NumberConstructor;
|
|
115
|
+
default: number;
|
|
116
|
+
};
|
|
117
|
+
fixedSize: {
|
|
118
|
+
type: BooleanConstructor;
|
|
119
|
+
default: boolean;
|
|
120
|
+
};
|
|
121
|
+
font: {
|
|
122
|
+
type: StringConstructor;
|
|
123
|
+
default: string;
|
|
124
|
+
};
|
|
125
|
+
lineHeight: {
|
|
126
|
+
type: NumberConstructor;
|
|
127
|
+
default: number;
|
|
128
|
+
};
|
|
129
|
+
padding: {
|
|
130
|
+
type: NumberConstructor;
|
|
131
|
+
default: number;
|
|
132
|
+
};
|
|
133
|
+
label: {
|
|
134
|
+
type: StringConstructor;
|
|
135
|
+
default: string;
|
|
136
|
+
};
|
|
137
|
+
labelColor: {
|
|
138
|
+
type: StringConstructor;
|
|
139
|
+
default: string;
|
|
140
|
+
};
|
|
141
|
+
labelFont: {
|
|
142
|
+
type: StringConstructor;
|
|
143
|
+
default: undefined;
|
|
144
|
+
};
|
|
145
|
+
labelSize: {
|
|
146
|
+
type: NumberConstructor;
|
|
147
|
+
default: number;
|
|
148
|
+
};
|
|
149
|
+
}>>, {
|
|
150
|
+
size: number;
|
|
151
|
+
text: string;
|
|
152
|
+
color: string;
|
|
153
|
+
modelValue: string | File;
|
|
154
|
+
label: string;
|
|
155
|
+
modelModifiers: ModelModifier;
|
|
156
|
+
font: string;
|
|
157
|
+
padding: number;
|
|
158
|
+
lineHeight: number;
|
|
159
|
+
width: number;
|
|
160
|
+
height: number;
|
|
161
|
+
labelColor: string;
|
|
162
|
+
minSize: number;
|
|
163
|
+
maxSize: number;
|
|
164
|
+
fixedSize: boolean;
|
|
165
|
+
labelFont: string;
|
|
166
|
+
labelSize: number;
|
|
167
|
+
}>;
|
|
168
|
+
export default _default;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
interface GenerateOptions {
|
|
2
|
+
/**
|
|
3
|
+
* Canvas's element
|
|
4
|
+
*/
|
|
5
|
+
canvas?: HTMLCanvasElement;
|
|
6
|
+
/**
|
|
7
|
+
* Text to be generated
|
|
8
|
+
*/
|
|
9
|
+
text: string;
|
|
10
|
+
/**
|
|
11
|
+
* Image width
|
|
12
|
+
*/
|
|
13
|
+
width: number;
|
|
14
|
+
/**
|
|
15
|
+
* Image height
|
|
16
|
+
*/
|
|
17
|
+
height: number;
|
|
18
|
+
/**
|
|
19
|
+
* Text color
|
|
20
|
+
*/
|
|
21
|
+
color: string;
|
|
22
|
+
/**
|
|
23
|
+
* Text font size
|
|
24
|
+
*/
|
|
25
|
+
size: number;
|
|
26
|
+
/**
|
|
27
|
+
* Minimum font size
|
|
28
|
+
*/
|
|
29
|
+
minSize: number;
|
|
30
|
+
/**
|
|
31
|
+
* Maximum font size
|
|
32
|
+
*/
|
|
33
|
+
maxSize: number;
|
|
34
|
+
/**
|
|
35
|
+
* Autofit mode
|
|
36
|
+
*/
|
|
37
|
+
fixedSize: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Text font family
|
|
40
|
+
*/
|
|
41
|
+
font: string;
|
|
42
|
+
/**
|
|
43
|
+
* Text line height
|
|
44
|
+
*/
|
|
45
|
+
lineHeight: number;
|
|
46
|
+
/**
|
|
47
|
+
* Text box padding
|
|
48
|
+
*/
|
|
49
|
+
padding: number;
|
|
50
|
+
/**
|
|
51
|
+
* Label text
|
|
52
|
+
*/
|
|
53
|
+
label?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Label color
|
|
56
|
+
*/
|
|
57
|
+
labelColor?: string;
|
|
58
|
+
/**
|
|
59
|
+
* Label font family
|
|
60
|
+
*/
|
|
61
|
+
labelFont?: string;
|
|
62
|
+
/**
|
|
63
|
+
* Label font size
|
|
64
|
+
*/
|
|
65
|
+
labelSize?: number;
|
|
66
|
+
}
|
|
67
|
+
export default function generate(options: GenerateOptions): Promise<string>;
|
|
68
|
+
export {};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { createCanvas } from "../../signature-draw/utils/canvas.mjs";
|
|
2
|
+
import loadFont from "../../signature-text/utils/load-font.mjs";
|
|
3
|
+
import { clamp } from "lodash-es";
|
|
4
|
+
function wrapText(context, text, fontSize, lineHeight, fontFamily, maxWidth) {
|
|
5
|
+
const lines = [];
|
|
6
|
+
context.font = `${fontSize}px ${JSON.stringify(fontFamily)}`;
|
|
7
|
+
context.textBaseline = "top";
|
|
8
|
+
let line = "";
|
|
9
|
+
let i;
|
|
10
|
+
let test;
|
|
11
|
+
let metrics;
|
|
12
|
+
for (const paragraph of text.split("\n")) {
|
|
13
|
+
const words = paragraph.split(" ");
|
|
14
|
+
for (i = 0; i < words.length; i++) {
|
|
15
|
+
test = words[i];
|
|
16
|
+
metrics = context.measureText(test);
|
|
17
|
+
while (metrics.width > maxWidth) {
|
|
18
|
+
test = test.slice(0, Math.max(0, test.length - 1));
|
|
19
|
+
metrics = context.measureText(test);
|
|
20
|
+
}
|
|
21
|
+
if (words[i] !== test) {
|
|
22
|
+
words.splice(i + 1, 0, words[i].slice(test.length));
|
|
23
|
+
words[i] = test;
|
|
24
|
+
}
|
|
25
|
+
test = `${line + words[i]} `;
|
|
26
|
+
metrics = context.measureText(test);
|
|
27
|
+
if (metrics.width > maxWidth && i > 0) {
|
|
28
|
+
lines.push(line);
|
|
29
|
+
line = `${words[i]} `;
|
|
30
|
+
} else
|
|
31
|
+
line = test;
|
|
32
|
+
}
|
|
33
|
+
lines.push(line);
|
|
34
|
+
line = "";
|
|
35
|
+
}
|
|
36
|
+
return lines;
|
|
37
|
+
}
|
|
38
|
+
export default async function generate(options) {
|
|
39
|
+
const {
|
|
40
|
+
text,
|
|
41
|
+
color,
|
|
42
|
+
padding,
|
|
43
|
+
font,
|
|
44
|
+
height,
|
|
45
|
+
width,
|
|
46
|
+
size,
|
|
47
|
+
minSize,
|
|
48
|
+
maxSize,
|
|
49
|
+
fixedSize,
|
|
50
|
+
label
|
|
51
|
+
} = options;
|
|
52
|
+
await loadFont(font);
|
|
53
|
+
const canvas = options.canvas ?? createCanvas(width, height);
|
|
54
|
+
const context = canvas.getContext("2d");
|
|
55
|
+
let y = padding;
|
|
56
|
+
if (label) {
|
|
57
|
+
const labelSize = options.labelSize ?? size;
|
|
58
|
+
const labelFont = options.labelFont ?? font;
|
|
59
|
+
const labelColor = options.labelColor ?? color;
|
|
60
|
+
context.font = `${labelSize}px ${JSON.stringify(labelFont)}`;
|
|
61
|
+
context.textBaseline = "top";
|
|
62
|
+
context.textAlign = "start";
|
|
63
|
+
context.fillStyle = labelColor;
|
|
64
|
+
context.fillText(label, padding, y);
|
|
65
|
+
y += labelSize * options.lineHeight;
|
|
66
|
+
}
|
|
67
|
+
if (text) {
|
|
68
|
+
const maxWidth = width - padding * 2;
|
|
69
|
+
const maxHeight = height - (y + padding);
|
|
70
|
+
let fontSize = size;
|
|
71
|
+
let lineHeight = fontSize * options.lineHeight;
|
|
72
|
+
let lines = wrapText(
|
|
73
|
+
context,
|
|
74
|
+
text,
|
|
75
|
+
fontSize,
|
|
76
|
+
lineHeight,
|
|
77
|
+
font,
|
|
78
|
+
maxWidth
|
|
79
|
+
);
|
|
80
|
+
if (!fixedSize) {
|
|
81
|
+
let textHeight = lines.length * lineHeight;
|
|
82
|
+
let count = 0;
|
|
83
|
+
do {
|
|
84
|
+
const newFontSize = clamp(
|
|
85
|
+
Math.round((maxHeight / textHeight * fontSize + fontSize) / 2),
|
|
86
|
+
minSize,
|
|
87
|
+
maxSize
|
|
88
|
+
);
|
|
89
|
+
if (newFontSize === fontSize)
|
|
90
|
+
break;
|
|
91
|
+
fontSize = newFontSize;
|
|
92
|
+
lineHeight = fontSize * options.lineHeight;
|
|
93
|
+
lines = wrapText(
|
|
94
|
+
context,
|
|
95
|
+
text,
|
|
96
|
+
fontSize,
|
|
97
|
+
lineHeight,
|
|
98
|
+
font,
|
|
99
|
+
maxWidth
|
|
100
|
+
);
|
|
101
|
+
textHeight = lines.length * lineHeight;
|
|
102
|
+
} while (textHeight > maxHeight && ++count < 5);
|
|
103
|
+
}
|
|
104
|
+
context.font = `${fontSize}px ${JSON.stringify(font)}`;
|
|
105
|
+
context.textBaseline = "top";
|
|
106
|
+
context.textAlign = "start";
|
|
107
|
+
context.fillStyle = color;
|
|
108
|
+
context.font = `${fontSize}px ${JSON.stringify(font)}`;
|
|
109
|
+
context.textBaseline = "top";
|
|
110
|
+
context.textAlign = "start";
|
|
111
|
+
context.fillStyle = color;
|
|
112
|
+
for (const line of lines) {
|
|
113
|
+
context.fillText(line, padding, y);
|
|
114
|
+
y += lineHeight;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return canvas.toDataURL("image/png");
|
|
118
|
+
}
|