@servicetitan/dte-pdf-editor 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +356 -0
- package/dist/components/data-model-field-type-list.d.ts +11 -0
- package/dist/components/data-model-field-type-list.d.ts.map +1 -0
- package/dist/components/data-model-field-type-list.js +23 -0
- package/dist/components/data-model-field-type-list.js.map +1 -0
- package/dist/components/e-sign-field-type-list.d.ts +9 -0
- package/dist/components/e-sign-field-type-list.d.ts.map +1 -0
- package/dist/components/e-sign-field-type-list.js +12 -0
- package/dist/components/e-sign-field-type-list.js.map +1 -0
- package/dist/components/field-config-panel-overlay.d.ts +13 -0
- package/dist/components/field-config-panel-overlay.d.ts.map +1 -0
- package/dist/components/field-config-panel-overlay.js +8 -0
- package/dist/components/field-config-panel-overlay.js.map +1 -0
- package/dist/components/field-config-panel.d.ts +12 -0
- package/dist/components/field-config-panel.d.ts.map +1 -0
- package/dist/components/field-config-panel.js +38 -0
- package/dist/components/field-config-panel.js.map +1 -0
- package/dist/components/field-sidebar.d.ts +10 -0
- package/dist/components/field-sidebar.d.ts.map +1 -0
- package/dist/components/field-sidebar.js +25 -0
- package/dist/components/field-sidebar.js.map +1 -0
- package/dist/components/field-type.d.ts +9 -0
- package/dist/components/field-type.d.ts.map +1 -0
- package/dist/components/field-type.js +12 -0
- package/dist/components/field-type.js.map +1 -0
- package/dist/components/fillable-field-type-list.d.ts +10 -0
- package/dist/components/fillable-field-type-list.d.ts.map +1 -0
- package/dist/components/fillable-field-type-list.js +17 -0
- package/dist/components/fillable-field-type-list.js.map +1 -0
- package/dist/components/pdf-canvas.d.ts +22 -0
- package/dist/components/pdf-canvas.d.ts.map +1 -0
- package/dist/components/pdf-canvas.js +14 -0
- package/dist/components/pdf-canvas.js.map +1 -0
- package/dist/components/pdf-document-renderer.d.ts +16 -0
- package/dist/components/pdf-document-renderer.d.ts.map +1 -0
- package/dist/components/pdf-document-renderer.js +28 -0
- package/dist/components/pdf-document-renderer.js.map +1 -0
- package/dist/components/pdf-editor.d.ts +21 -0
- package/dist/components/pdf-editor.d.ts.map +1 -0
- package/dist/components/pdf-editor.js +108 -0
- package/dist/components/pdf-editor.js.map +1 -0
- package/dist/components/pdf-field-overlay.d.ts +14 -0
- package/dist/components/pdf-field-overlay.d.ts.map +1 -0
- package/dist/components/pdf-field-overlay.js +32 -0
- package/dist/components/pdf-field-overlay.js.map +1 -0
- package/dist/constants/field.constants.d.ts +16 -0
- package/dist/constants/field.constants.d.ts.map +1 -0
- package/dist/constants/field.constants.js +28 -0
- package/dist/constants/field.constants.js.map +1 -0
- package/dist/constants/index.d.ts +3 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +3 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/pdf-editor.constants.d.ts +2 -0
- package/dist/constants/pdf-editor.constants.d.ts.map +1 -0
- package/dist/constants/pdf-editor.constants.js +2 -0
- package/dist/constants/pdf-editor.constants.js.map +1 -0
- package/dist/hooks/index.d.ts +4 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +4 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useFieldDrag.d.ts +24 -0
- package/dist/hooks/useFieldDrag.d.ts.map +1 -0
- package/dist/hooks/useFieldDrag.js +34 -0
- package/dist/hooks/useFieldDrag.js.map +1 -0
- package/dist/hooks/useFieldResize.d.ts +17 -0
- package/dist/hooks/useFieldResize.d.ts.map +1 -0
- package/dist/hooks/useFieldResize.js +58 -0
- package/dist/hooks/useFieldResize.js.map +1 -0
- package/dist/hooks/usePdfDocumentRenderer.d.ts +9 -0
- package/dist/hooks/usePdfDocumentRenderer.d.ts.map +1 -0
- package/dist/hooks/usePdfDocumentRenderer.js +13 -0
- package/dist/hooks/usePdfDocumentRenderer.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/interface/pdf-editor.d.ts +64 -0
- package/dist/interface/pdf-editor.d.ts.map +1 -0
- package/dist/interface/pdf-editor.js +14 -0
- package/dist/interface/pdf-editor.js.map +1 -0
- package/dist/utils/calculate-drop-coordinates.utils.d.ts +15 -0
- package/dist/utils/calculate-drop-coordinates.utils.d.ts.map +1 -0
- package/dist/utils/calculate-drop-coordinates.utils.js +48 -0
- package/dist/utils/calculate-drop-coordinates.utils.js.map +1 -0
- package/dist/utils/extract-grouped-fields-from-data-model.utils.d.ts +7 -0
- package/dist/utils/extract-grouped-fields-from-data-model.utils.d.ts.map +1 -0
- package/dist/utils/extract-grouped-fields-from-data-model.utils.js +57 -0
- package/dist/utils/extract-grouped-fields-from-data-model.utils.js.map +1 -0
- package/dist/utils/generate-e-sign-path.d.ts +3 -0
- package/dist/utils/generate-e-sign-path.d.ts.map +1 -0
- package/dist/utils/generate-e-sign-path.js +4 -0
- package/dist/utils/generate-e-sign-path.js.map +1 -0
- package/dist/utils/get-page-dimensions.utils.d.ts +12 -0
- package/dist/utils/get-page-dimensions.utils.d.ts.map +1 -0
- package/dist/utils/get-page-dimensions.utils.js +31 -0
- package/dist/utils/get-page-dimensions.utils.js.map +1 -0
- package/dist/utils/get-page-number-from-client-y.utils.d.ts +9 -0
- package/dist/utils/get-page-number-from-client-y.utils.d.ts.map +1 -0
- package/dist/utils/get-page-number-from-client-y.utils.js +24 -0
- package/dist/utils/get-page-number-from-client-y.utils.js.map +1 -0
- package/dist/utils/get-page-position.utils.d.ts +12 -0
- package/dist/utils/get-page-position.utils.d.ts.map +1 -0
- package/dist/utils/get-page-position.utils.js +22 -0
- package/dist/utils/get-page-position.utils.js.map +1 -0
- package/dist/utils/handle-field-drag-start.utils.d.ts +16 -0
- package/dist/utils/handle-field-drag-start.utils.d.ts.map +1 -0
- package/dist/utils/handle-field-drag-start.utils.js +41 -0
- package/dist/utils/handle-field-drag-start.utils.js.map +1 -0
- package/dist/utils/handle-field-drag.utils.d.ts +19 -0
- package/dist/utils/handle-field-drag.utils.d.ts.map +1 -0
- package/dist/utils/handle-field-drag.utils.js +36 -0
- package/dist/utils/handle-field-drag.utils.js.map +1 -0
- package/dist/utils/handle-field-resize.utils.d.ts +35 -0
- package/dist/utils/handle-field-resize.utils.d.ts.map +1 -0
- package/dist/utils/handle-field-resize.utils.js +66 -0
- package/dist/utils/handle-field-resize.utils.js.map +1 -0
- package/dist/utils/index.d.ts +13 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +13 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/is-drag-over-canvas.utils.d.ts +9 -0
- package/dist/utils/is-drag-over-canvas.utils.d.ts.map +1 -0
- package/dist/utils/is-drag-over-canvas.utils.js +26 -0
- package/dist/utils/is-drag-over-canvas.utils.js.map +1 -0
- package/dist/utils/map-colors-to-recipients.d.ts +3 -0
- package/dist/utils/map-colors-to-recipients.d.ts.map +1 -0
- package/dist/utils/map-colors-to-recipients.js +35 -0
- package/dist/utils/map-colors-to-recipients.js.map +1 -0
- package/dist/utils/pdfjs-init.d.ts +6 -0
- package/dist/utils/pdfjs-init.d.ts.map +1 -0
- package/dist/utils/pdfjs-init.js +25 -0
- package/dist/utils/pdfjs-init.js.map +1 -0
- package/package.json +28 -0
- package/src/components/data-model-field-type-list.tsx +58 -0
- package/src/components/e-sign-field-type-list.tsx +27 -0
- package/src/components/field-config-panel-overlay.tsx +51 -0
- package/src/components/field-config-panel.tsx +142 -0
- package/src/components/field-sidebar.tsx +93 -0
- package/src/components/field-type.tsx +28 -0
- package/src/components/fillable-field-type-list.tsx +42 -0
- package/src/components/pdf-canvas.tsx +81 -0
- package/src/components/pdf-document-renderer.tsx +78 -0
- package/src/components/pdf-editor.tsx +216 -0
- package/src/components/pdf-field-overlay.tsx +83 -0
- package/src/constants/field.constants.ts +31 -0
- package/src/constants/index.ts +2 -0
- package/src/constants/pdf-editor.constants.ts +1 -0
- package/src/hooks/index.ts +3 -0
- package/src/hooks/useFieldDrag.ts +56 -0
- package/src/hooks/useFieldResize.ts +95 -0
- package/src/hooks/usePdfDocumentRenderer.ts +21 -0
- package/src/index.ts +2 -0
- package/src/interface/pdf-editor.ts +74 -0
- package/src/styles/field-config-panel-overlay.css +33 -0
- package/src/styles/field-sidebar.css +31 -0
- package/src/styles/field-type-list.css +8 -0
- package/src/styles/field-type.css +10 -0
- package/src/styles/generic.css +3 -0
- package/src/styles/index.css +10 -0
- package/src/styles/pdf-canvas.css +9 -0
- package/src/styles/pdf-document-renderer.css +4 -0
- package/src/styles/pdf-editor.css +14 -0
- package/src/styles/pdf-field-overlay.css +54 -0
- package/src/styles/variables.css +26 -0
- package/src/utils/calculate-drop-coordinates.utils.ts +68 -0
- package/src/utils/extract-grouped-fields-from-data-model.utils.ts +73 -0
- package/src/utils/generate-e-sign-path.ts +5 -0
- package/src/utils/get-page-dimensions.utils.ts +39 -0
- package/src/utils/get-page-number-from-client-y.utils.ts +31 -0
- package/src/utils/get-page-position.utils.ts +30 -0
- package/src/utils/handle-field-drag-start.utils.ts +52 -0
- package/src/utils/handle-field-drag.utils.ts +55 -0
- package/src/utils/handle-field-resize.utils.ts +102 -0
- package/src/utils/index.ts +12 -0
- package/src/utils/is-drag-over-canvas.utils.ts +35 -0
- package/src/utils/map-colors-to-recipients.ts +37 -0
- package/src/utils/pdfjs-init.ts +27 -0
- package/src/vite-env.d.ts +16 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePdfDocumentRenderer.d.ts","sourceRoot":"","sources":["../../src/hooks/usePdfDocumentRenderer.ts"],"names":[],"mappings":"AAEA,UAAU,4BAA4B;IAClC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,yBAAyB,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACnE;AAED,eAAO,MAAM,sBAAsB,QAAO,4BAazC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useMemo, useState } from 'react';
|
|
2
|
+
export const usePdfDocumentRenderer = () => {
|
|
3
|
+
const [numPages, setNumPages] = useState(0);
|
|
4
|
+
const handleDocumentLoadSuccess = ({ numPages }) => {
|
|
5
|
+
setNumPages(numPages);
|
|
6
|
+
};
|
|
7
|
+
const pages = useMemo(() => Array.from({ length: numPages }, (_, i) => i + 1), [numPages]);
|
|
8
|
+
return {
|
|
9
|
+
pages,
|
|
10
|
+
handleDocumentLoadSuccess,
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=usePdfDocumentRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePdfDocumentRenderer.js","sourceRoot":"","sources":["../../src/hooks/usePdfDocumentRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAO1C,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAiC,EAAE;IACrE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAS,CAAC,CAAC,CAAC;IAEpD,MAAM,yBAAyB,GAAG,CAAC,EAAE,QAAQ,EAAwB,EAAE,EAAE;QACrE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE3F,OAAO;QACH,KAAK;QACL,yBAAyB;KAC5B,CAAC;AACN,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,wBAAwB,CAAC;AAC5C,cAAc,yBAAyB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export declare enum FieldTypeEnum {
|
|
2
|
+
dataModel = "data-model",
|
|
3
|
+
eSign = "e-sign",
|
|
4
|
+
fillable = "fillable"
|
|
5
|
+
}
|
|
6
|
+
export declare enum ESignFieldType {
|
|
7
|
+
signature = "signature",
|
|
8
|
+
initials = "initials",
|
|
9
|
+
dateSigned = "dateSigned",
|
|
10
|
+
fullName = "fullName"
|
|
11
|
+
}
|
|
12
|
+
export type FillableFieldType = 'text' | 'date' | 'checkbox' | 'e-sign';
|
|
13
|
+
export interface PdfField {
|
|
14
|
+
id: string;
|
|
15
|
+
type: FieldTypeEnum;
|
|
16
|
+
subType?: FillableFieldType | ESignFieldType;
|
|
17
|
+
x: number;
|
|
18
|
+
y: number;
|
|
19
|
+
page: number;
|
|
20
|
+
label: string;
|
|
21
|
+
width: number;
|
|
22
|
+
height: number;
|
|
23
|
+
required?: boolean;
|
|
24
|
+
path?: string;
|
|
25
|
+
recipient?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface FieldTypeOption {
|
|
28
|
+
label: string;
|
|
29
|
+
type: FieldTypeEnum;
|
|
30
|
+
subType?: FillableFieldType | ESignFieldType;
|
|
31
|
+
path?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface DataModelFieldGroup {
|
|
34
|
+
groupName: string;
|
|
35
|
+
fields: FieldTypeOption[];
|
|
36
|
+
}
|
|
37
|
+
export interface SchemaFieldBaseOptions {
|
|
38
|
+
placeholder?: any;
|
|
39
|
+
description?: any;
|
|
40
|
+
sampleData?: any;
|
|
41
|
+
showInEditor?: boolean;
|
|
42
|
+
isHighlighted?: boolean;
|
|
43
|
+
}
|
|
44
|
+
interface SchemaNodeProps {
|
|
45
|
+
title?: string;
|
|
46
|
+
options?: SchemaFieldBaseOptions;
|
|
47
|
+
}
|
|
48
|
+
export interface SchemaObject extends SchemaNodeProps {
|
|
49
|
+
type: 'object';
|
|
50
|
+
properties: Record<string, SchemaNode>;
|
|
51
|
+
}
|
|
52
|
+
export type SchemaNode = SchemaObject | SchemaArray | SchemaSimple;
|
|
53
|
+
export interface SchemaArray extends SchemaNodeProps {
|
|
54
|
+
type: 'array';
|
|
55
|
+
items: SchemaNode;
|
|
56
|
+
}
|
|
57
|
+
export type SchemaNodeStringSubTypes = 'string' | 'text' | 'html' | 'image';
|
|
58
|
+
export interface SchemaSimpleString extends SchemaNodeProps {
|
|
59
|
+
type: 'string';
|
|
60
|
+
subType?: SchemaNodeStringSubTypes;
|
|
61
|
+
}
|
|
62
|
+
export type SchemaSimple = SchemaSimpleString;
|
|
63
|
+
export {};
|
|
64
|
+
//# sourceMappingURL=pdf-editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-editor.d.ts","sourceRoot":"","sources":["../../src/interface/pdf-editor.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IACrB,SAAS,eAAe;IACxB,KAAK,WAAW;IAChB,QAAQ,aAAa;CACxB;AAED,oBAAY,cAAc;IACtB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,QAAQ,aAAa;CACxB;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAAC;IAC7C,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAAC;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACnC,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,UAAU,eAAe;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,sBAAsB,CAAC;CACpC;AAED,MAAM,WAAW,YAAa,SAAQ,eAAe;IACjD,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CAC1C;AAED,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,CAAC;AAEnE,MAAM,WAAW,WAAY,SAAQ,eAAe;IAChD,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,UAAU,CAAC;CACrB;AACD,MAAM,MAAM,wBAAwB,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE5E,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACvD,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,wBAAwB,CAAC;CACtC;AAED,MAAM,MAAM,YAAY,GAAG,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export var FieldTypeEnum;
|
|
2
|
+
(function (FieldTypeEnum) {
|
|
3
|
+
FieldTypeEnum["dataModel"] = "data-model";
|
|
4
|
+
FieldTypeEnum["eSign"] = "e-sign";
|
|
5
|
+
FieldTypeEnum["fillable"] = "fillable";
|
|
6
|
+
})(FieldTypeEnum || (FieldTypeEnum = {}));
|
|
7
|
+
export var ESignFieldType;
|
|
8
|
+
(function (ESignFieldType) {
|
|
9
|
+
ESignFieldType["signature"] = "signature";
|
|
10
|
+
ESignFieldType["initials"] = "initials";
|
|
11
|
+
ESignFieldType["dateSigned"] = "dateSigned";
|
|
12
|
+
ESignFieldType["fullName"] = "fullName";
|
|
13
|
+
})(ESignFieldType || (ESignFieldType = {}));
|
|
14
|
+
//# sourceMappingURL=pdf-editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-editor.js","sourceRoot":"","sources":["../../src/interface/pdf-editor.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACrB,yCAAwB,CAAA;IACxB,iCAAgB,CAAA;IAChB,sCAAqB,CAAA;AACzB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,MAAM,CAAN,IAAY,cAKX;AALD,WAAY,cAAc;IACtB,yCAAuB,CAAA;IACvB,uCAAqB,CAAA;IACrB,2CAAyB,CAAA;IACzB,uCAAqB,CAAA;AACzB,CAAC,EALW,cAAc,KAAd,cAAc,QAKzB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DragEvent, RefObject } from 'react';
|
|
2
|
+
interface DropCoordinates {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Calculates field coordinates from a drop event on a PDF page
|
|
8
|
+
* @param e - The drag event
|
|
9
|
+
* @param pageNumber - The page number where the drop occurred
|
|
10
|
+
* @param pdfWrapperRef - Reference to the PDF wrapper element
|
|
11
|
+
* @returns Drop coordinates (x, y) or null if a drop is invalid
|
|
12
|
+
*/
|
|
13
|
+
export declare const calculateDropCoordinates: (e: DragEvent<HTMLDivElement>, pageNumber: number, pdfWrapperRef: RefObject<HTMLDivElement>) => DropCoordinates | null;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=calculate-drop-coordinates.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculate-drop-coordinates.utils.d.ts","sourceRoot":"","sources":["../../src/utils/calculate-drop-coordinates.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAG7C,UAAU,eAAe;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,GACjC,GAAG,SAAS,CAAC,cAAc,CAAC,EAC5B,YAAY,MAAM,EAClB,eAAe,SAAS,CAAC,cAAc,CAAC,KACzC,eAAe,GAAG,IAgDpB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { FIELD_CONSTANTS } from '../constants';
|
|
2
|
+
/**
|
|
3
|
+
* Calculates field coordinates from a drop event on a PDF page
|
|
4
|
+
* @param e - The drag event
|
|
5
|
+
* @param pageNumber - The page number where the drop occurred
|
|
6
|
+
* @param pdfWrapperRef - Reference to the PDF wrapper element
|
|
7
|
+
* @returns Drop coordinates (x, y) or null if a drop is invalid
|
|
8
|
+
*/
|
|
9
|
+
export const calculateDropCoordinates = (e, pageNumber, pdfWrapperRef) => {
|
|
10
|
+
if (!pdfWrapperRef.current) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
const pageElement = pdfWrapperRef.current.querySelector(`[data-page-number="${pageNumber}"]`);
|
|
14
|
+
if (!pageElement) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
const canvas = pageElement.querySelector('canvas');
|
|
18
|
+
if (!canvas) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const canvasRect = canvas.getBoundingClientRect();
|
|
22
|
+
const pageRect = pageElement.getBoundingClientRect();
|
|
23
|
+
const wrapperRect = pdfWrapperRef.current.getBoundingClientRect();
|
|
24
|
+
/*
|
|
25
|
+
* Strictly check if the drop is within the actual PDF canvas boundaries
|
|
26
|
+
* Only allow drops directly on the canvas, not on the page wrapper outside the canvas
|
|
27
|
+
*/
|
|
28
|
+
const isWithinCanvas = e.clientX >= canvasRect.left &&
|
|
29
|
+
e.clientX <= canvasRect.right &&
|
|
30
|
+
e.clientY >= canvasRect.top &&
|
|
31
|
+
e.clientY <= canvasRect.bottom;
|
|
32
|
+
if (!isWithinCanvas) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
/*
|
|
36
|
+
* Calculate coordinates relative to the page element (matching the overlay's coordinate system).
|
|
37
|
+
* This matches how pdf-field-overlay.tsx calculates positions: pagePos.left + field.x
|
|
38
|
+
*/
|
|
39
|
+
const pagePosLeft = pageRect.left - wrapperRect.left;
|
|
40
|
+
const pagePosTop = pageRect.top - wrapperRect.top;
|
|
41
|
+
const x = e.clientX - wrapperRect.left - pagePosLeft;
|
|
42
|
+
const y = e.clientY - wrapperRect.top - pagePosTop;
|
|
43
|
+
// Center the field on the drop point (half of width/height)
|
|
44
|
+
const fieldX = Math.max(0, x - FIELD_CONSTANTS.dropOffsetX);
|
|
45
|
+
const fieldY = Math.max(0, y - FIELD_CONSTANTS.dropOffsetY);
|
|
46
|
+
return { x: fieldX, y: fieldY };
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=calculate-drop-coordinates.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculate-drop-coordinates.utils.js","sourceRoot":"","sources":["../../src/utils/calculate-drop-coordinates.utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAO/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACpC,CAA4B,EAC5B,UAAkB,EAClB,aAAwC,EAClB,EAAE;IACxB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,sBAAsB,UAAU,IAAI,CAAC,CAAC;IAE9F,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;IAClD,MAAM,QAAQ,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC;IACrD,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAElE;;;OAGG;IACH,MAAM,cAAc,GAChB,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,IAAI;QAC5B,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,KAAK;QAC7B,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,GAAG;QAC3B,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC;IAEnC,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;IACrD,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC;IAClD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC;IACrD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,GAAG,UAAU,CAAC;IAEnD,4DAA4D;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAE5D,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AACpC,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DataModelFieldGroup, SchemaObject } from '../interface/pdf-editor';
|
|
2
|
+
/**
|
|
3
|
+
* Utility function to extract grouped fields from DataModel structure
|
|
4
|
+
* Filters out array types and only processes object properties, generating correct paths for data replacement
|
|
5
|
+
*/
|
|
6
|
+
export declare const extractGroupedFieldsFromDataModel: (dataModel: SchemaObject) => DataModelFieldGroup[];
|
|
7
|
+
//# sourceMappingURL=extract-grouped-fields-from-data-model.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-grouped-fields-from-data-model.utils.d.ts","sourceRoot":"","sources":["../../src/utils/extract-grouped-fields-from-data-model.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EAGnB,YAAY,EACf,MAAM,yBAAyB,CAAC;AAEjC;;;GAGG;AACH,eAAO,MAAM,iCAAiC,GAC1C,WAAW,YAAY,KACxB,mBAAmB,EA0BrB,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { FieldTypeEnum, } from '../interface/pdf-editor';
|
|
2
|
+
/**
|
|
3
|
+
* Utility function to extract grouped fields from DataModel structure
|
|
4
|
+
* Filters out array types and only processes object properties, generating correct paths for data replacement
|
|
5
|
+
*/
|
|
6
|
+
export const extractGroupedFieldsFromDataModel = (dataModel) => {
|
|
7
|
+
const groups = [];
|
|
8
|
+
if (!(dataModel === null || dataModel === void 0 ? void 0 : dataModel.properties)) {
|
|
9
|
+
return groups;
|
|
10
|
+
}
|
|
11
|
+
Object.keys(dataModel.properties).forEach(key => {
|
|
12
|
+
var _a;
|
|
13
|
+
const property = dataModel.properties[key];
|
|
14
|
+
if (property.type === 'object' && property.properties) {
|
|
15
|
+
const fields = [];
|
|
16
|
+
extractFieldsRecursive(property.properties, key, fields, key);
|
|
17
|
+
if (fields.length > 0) {
|
|
18
|
+
groups.push({
|
|
19
|
+
groupName: (_a = property.title) !== null && _a !== void 0 ? _a : key,
|
|
20
|
+
fields,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
else if (property.type === 'array' && property.items) {
|
|
25
|
+
// Skip array types - filter them out from the data model
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
return groups;
|
|
29
|
+
};
|
|
30
|
+
// Recursive function to extract fields from nested structures
|
|
31
|
+
const extractFieldsRecursive = (properties, basePath, fields, groupName) => {
|
|
32
|
+
Object.keys(properties).forEach(fieldKey => {
|
|
33
|
+
var _a;
|
|
34
|
+
const fieldProperty = properties[fieldKey];
|
|
35
|
+
const currentPath = basePath.includes('[]')
|
|
36
|
+
? `${basePath}.${fieldKey}`
|
|
37
|
+
: `${basePath}.${fieldKey}`;
|
|
38
|
+
if (fieldProperty.type === 'string' ||
|
|
39
|
+
fieldProperty.type === 'number' ||
|
|
40
|
+
fieldProperty.type === 'boolean') {
|
|
41
|
+
// Leaf property - add as a field
|
|
42
|
+
const label = (_a = fieldProperty.title) !== null && _a !== void 0 ? _a : fieldKey;
|
|
43
|
+
fields.push({
|
|
44
|
+
label,
|
|
45
|
+
type: FieldTypeEnum.dataModel,
|
|
46
|
+
path: currentPath,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
else if (fieldProperty.type === 'object' && fieldProperty.properties) {
|
|
50
|
+
extractFieldsRecursive(fieldProperty.properties, currentPath, fields, groupName);
|
|
51
|
+
}
|
|
52
|
+
else if (fieldProperty.type === 'array' && fieldProperty.items) {
|
|
53
|
+
// Skip array types - filter them out from the data model
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=extract-grouped-fields-from-data-model.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-grouped-fields-from-data-model.utils.js","sourceRoot":"","sources":["../../src/utils/extract-grouped-fields-from-data-model.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,aAAa,GAGhB,MAAM,yBAAyB,CAAC;AAEjC;;;GAGG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAC7C,SAAuB,EACF,EAAE;IACvB,MAAM,MAAM,GAA0B,EAAE,CAAC;IAEzC,IAAI,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,CAAA,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;;QAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAE3C,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACpD,MAAM,MAAM,GAAsB,EAAE,CAAC;YACrC,sBAAsB,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YAE9D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC;oBACR,SAAS,EAAE,MAAA,QAAQ,CAAC,KAAK,mCAAI,GAAG;oBAChC,MAAM;iBACT,CAAC,CAAC;YACP,CAAC;QACL,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACrD,yDAAyD;QAC7D,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,8DAA8D;AAC9D,MAAM,sBAAsB,GAAG,CAC3B,UAAe,EACf,QAAgB,EAChB,MAAyB,EACzB,SAAiB,EACb,EAAE;IACN,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;;QACvC,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACvC,CAAC,CAAC,GAAG,QAAQ,IAAI,QAAQ,EAAE;YAC3B,CAAC,CAAC,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAEhC,IACI,aAAa,CAAC,IAAI,KAAK,QAAQ;YAC/B,aAAa,CAAC,IAAI,KAAK,QAAQ;YAC/B,aAAa,CAAC,IAAI,KAAK,SAAS,EAClC,CAAC;YACC,iCAAiC;YACjC,MAAM,KAAK,GAAG,MAAA,aAAa,CAAC,KAAK,mCAAI,QAAQ,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC;gBACR,KAAK;gBACL,IAAI,EAAE,aAAa,CAAC,SAAS;gBAC7B,IAAI,EAAE,WAAW;aACpB,CAAC,CAAC;QACP,CAAC;aAAM,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;YACrE,sBAAsB,CAAC,aAAa,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QACrF,CAAC;aAAM,IAAI,aAAa,CAAC,IAAI,KAAK,OAAO,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;YAC/D,yDAAyD;QAC7D,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-e-sign-path.d.ts","sourceRoot":"","sources":["../../src/utils/generate-e-sign-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,eAAO,MAAM,iBAAiB,GAAI,WAAW,MAAM,EAAE,SAAS,cAAc,KAAG,MAE9E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-e-sign-path.js","sourceRoot":"","sources":["../../src/utils/generate-e-sign-path.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAiB,EAAE,OAAuB,EAAU,EAAE;IACpF,OAAO,SAAS,SAAS,IAAI,OAAO,EAAE,CAAC;AAC3C,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Gets the dimensions of a PDF page (width and height)
|
|
4
|
+
* @param pageNumber - The page number to get dimensions for
|
|
5
|
+
* @param pdfWrapperRef - Reference to the PDF wrapper element
|
|
6
|
+
* @returns Dimensions object with width and height, or { width: 0, height: 0 } if not found
|
|
7
|
+
*/
|
|
8
|
+
export declare const getPageDimensions: (pageNumber: number, pdfWrapperRef: RefObject<HTMLDivElement>) => {
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=get-page-dimensions.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-page-dimensions.utils.d.ts","sourceRoot":"","sources":["../../src/utils/get-page-dimensions.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAC1B,YAAY,MAAM,EAClB,eAAe,SAAS,CAAC,cAAc,CAAC,KACzC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CA2BjC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gets the dimensions of a PDF page (width and height)
|
|
3
|
+
* @param pageNumber - The page number to get dimensions for
|
|
4
|
+
* @param pdfWrapperRef - Reference to the PDF wrapper element
|
|
5
|
+
* @returns Dimensions object with width and height, or { width: 0, height: 0 } if not found
|
|
6
|
+
*/
|
|
7
|
+
export const getPageDimensions = (pageNumber, pdfWrapperRef) => {
|
|
8
|
+
if (!pdfWrapperRef.current) {
|
|
9
|
+
return { width: 0, height: 0 };
|
|
10
|
+
}
|
|
11
|
+
const pageElement = pdfWrapperRef.current.querySelector(`[data-page-number="${pageNumber}"]`);
|
|
12
|
+
if (!pageElement) {
|
|
13
|
+
return { width: 0, height: 0 };
|
|
14
|
+
}
|
|
15
|
+
// Get the canvas element inside the page to get actual PDF dimensions
|
|
16
|
+
const canvas = pageElement.querySelector('canvas');
|
|
17
|
+
if (canvas) {
|
|
18
|
+
const canvasRect = canvas.getBoundingClientRect();
|
|
19
|
+
return {
|
|
20
|
+
width: canvasRect.width,
|
|
21
|
+
height: canvasRect.height,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
// Fallback to page element dimensions
|
|
25
|
+
const pageRect = pageElement.getBoundingClientRect();
|
|
26
|
+
return {
|
|
27
|
+
width: pageRect.width,
|
|
28
|
+
height: pageRect.height,
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=get-page-dimensions.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-page-dimensions.utils.js","sourceRoot":"","sources":["../../src/utils/get-page-dimensions.utils.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC7B,UAAkB,EAClB,aAAwC,EACP,EAAE;IACnC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,sBAAsB,UAAU,IAAI,CAAC,CAAC;IAE9F,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACnC,CAAC;IAED,sEAAsE;IACtE,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,MAAM,EAAE,CAAC;QACT,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAClD,OAAO;YACH,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,MAAM,EAAE,UAAU,CAAC,MAAM;SAC5B,CAAC;IACN,CAAC;IAED,sCAAsC;IACtC,MAAM,QAAQ,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC;IACrD,OAAO;QACH,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;KAC1B,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Determines which page number a client Y coordinate falls within
|
|
4
|
+
* @param clientY - The client Y coordinate to check
|
|
5
|
+
* @param pdfWrapperRef - Reference to the PDF wrapper element
|
|
6
|
+
* @returns The page number (defaults to 1 if not found or wrapper is null)
|
|
7
|
+
*/
|
|
8
|
+
export declare const getPageNumberFromClientY: (clientY: number, pdfWrapperRef: RefObject<HTMLDivElement>) => number;
|
|
9
|
+
//# sourceMappingURL=get-page-number-from-client-y.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-page-number-from-client-y.utils.d.ts","sourceRoot":"","sources":["../../src/utils/get-page-number-from-client-y.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GACjC,SAAS,MAAM,EACf,eAAe,SAAS,CAAC,cAAc,CAAC,KACzC,MAmBF,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Determines which page number a client Y coordinate falls within
|
|
3
|
+
* @param clientY - The client Y coordinate to check
|
|
4
|
+
* @param pdfWrapperRef - Reference to the PDF wrapper element
|
|
5
|
+
* @returns The page number (defaults to 1 if not found or wrapper is null)
|
|
6
|
+
*/
|
|
7
|
+
export const getPageNumberFromClientY = (clientY, pdfWrapperRef) => {
|
|
8
|
+
if (!pdfWrapperRef.current) {
|
|
9
|
+
return 1;
|
|
10
|
+
}
|
|
11
|
+
const pageElements = pdfWrapperRef.current.querySelectorAll('[data-page-number]');
|
|
12
|
+
let targetPage = 1;
|
|
13
|
+
pageElements.forEach(pageElement => {
|
|
14
|
+
const rect = pageElement.getBoundingClientRect();
|
|
15
|
+
if (clientY >= rect.top && clientY <= rect.bottom) {
|
|
16
|
+
const pageNumber = pageElement.getAttribute('data-page-number');
|
|
17
|
+
if (pageNumber) {
|
|
18
|
+
targetPage = parseInt(pageNumber, 10);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
return targetPage;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=get-page-number-from-client-y.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-page-number-from-client-y.utils.js","sourceRoot":"","sources":["../../src/utils/get-page-number-from-client-y.utils.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACpC,OAAe,EACf,aAAwC,EAClC,EAAE;IACR,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,CAAC,CAAC;IACb,CAAC;IAED,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;IAClF,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC;QACjD,IAAI,OAAO,IAAI,IAAI,CAAC,GAAG,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChD,MAAM,UAAU,GAAG,WAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;YAChE,IAAI,UAAU,EAAE,CAAC;gBACb,UAAU,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC1C,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Gets the position of a PDF page relative to the wrapper element
|
|
4
|
+
* @param pageNumber - The page number to get the position for
|
|
5
|
+
* @param pdfWrapperRef - Reference to the PDF wrapper element
|
|
6
|
+
* @returns Position object with top and left coordinates, or { top: 0, left: 0 } if not found
|
|
7
|
+
*/
|
|
8
|
+
export declare const getPagePosition: (pageNumber: number, pdfWrapperRef: RefObject<HTMLDivElement>) => {
|
|
9
|
+
top: number;
|
|
10
|
+
left: number;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=get-page-position.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-page-position.utils.d.ts","sourceRoot":"","sources":["../../src/utils/get-page-position.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GACxB,YAAY,MAAM,EAClB,eAAe,SAAS,CAAC,cAAc,CAAC,KACzC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAkB7B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gets the position of a PDF page relative to the wrapper element
|
|
3
|
+
* @param pageNumber - The page number to get the position for
|
|
4
|
+
* @param pdfWrapperRef - Reference to the PDF wrapper element
|
|
5
|
+
* @returns Position object with top and left coordinates, or { top: 0, left: 0 } if not found
|
|
6
|
+
*/
|
|
7
|
+
export const getPagePosition = (pageNumber, pdfWrapperRef) => {
|
|
8
|
+
if (!pdfWrapperRef.current) {
|
|
9
|
+
return { top: 0, left: 0 };
|
|
10
|
+
}
|
|
11
|
+
const pageElement = pdfWrapperRef.current.querySelector(`[data-page-number="${pageNumber}"]`);
|
|
12
|
+
if (!pageElement) {
|
|
13
|
+
return { top: 0, left: 0 };
|
|
14
|
+
}
|
|
15
|
+
const wrapperRect = pdfWrapperRef.current.getBoundingClientRect();
|
|
16
|
+
const pageRect = pageElement.getBoundingClientRect();
|
|
17
|
+
return {
|
|
18
|
+
top: pageRect.top - wrapperRect.top,
|
|
19
|
+
left: pageRect.left - wrapperRect.left,
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=get-page-position.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-page-position.utils.js","sourceRoot":"","sources":["../../src/utils/get-page-position.utils.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC3B,UAAkB,EAClB,aAAwC,EACX,EAAE;IAC/B,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,sBAAsB,UAAU,IAAI,CAAC,CAAC;IAE9F,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAClE,MAAM,QAAQ,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC;IAErD,OAAO;QACH,GAAG,EAAE,QAAQ,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG;QACnC,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI;KACzC,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { DragEvent, RefObject } from 'react';
|
|
2
|
+
import { PdfField } from '../interface/pdf-editor';
|
|
3
|
+
/**
|
|
4
|
+
* Handles the drag start event for a PDF field
|
|
5
|
+
* Calculates drag offset and sets up drag data transfer
|
|
6
|
+
* @param e - The drag event
|
|
7
|
+
* @param field - The field being dragged
|
|
8
|
+
* @param pdfWrapperRef - Reference to the PDF wrapper element
|
|
9
|
+
* @returns The drag offset object or null if wrapper is not available
|
|
10
|
+
*/
|
|
11
|
+
export declare const handleFieldDragStart: (e: DragEvent<HTMLDivElement>, field: PdfField, pdfWrapperRef: RefObject<HTMLDivElement>) => {
|
|
12
|
+
x: number;
|
|
13
|
+
y: number;
|
|
14
|
+
page: number;
|
|
15
|
+
} | null;
|
|
16
|
+
//# sourceMappingURL=handle-field-drag-start.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-field-drag-start.utils.d.ts","sourceRoot":"","sources":["../../src/utils/handle-field-drag-start.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAC7B,GAAG,SAAS,CAAC,cAAc,CAAC,EAC5B,OAAO,QAAQ,EACf,eAAe,SAAS,CAAC,cAAc,CAAC,KACzC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAmC3C,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { getPagePosition } from './get-page-position.utils';
|
|
2
|
+
/**
|
|
3
|
+
* Handles the drag start event for a PDF field
|
|
4
|
+
* Calculates drag offset and sets up drag data transfer
|
|
5
|
+
* @param e - The drag event
|
|
6
|
+
* @param field - The field being dragged
|
|
7
|
+
* @param pdfWrapperRef - Reference to the PDF wrapper element
|
|
8
|
+
* @returns The drag offset object or null if wrapper is not available
|
|
9
|
+
*/
|
|
10
|
+
export const handleFieldDragStart = (e, field, pdfWrapperRef) => {
|
|
11
|
+
if (!pdfWrapperRef.current) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
/*
|
|
15
|
+
* Calculate drag offset in page-relative coordinates
|
|
16
|
+
*/
|
|
17
|
+
const startPagePos = getPagePosition(field.page, pdfWrapperRef);
|
|
18
|
+
const wrapperRect = pdfWrapperRef.current.getBoundingClientRect();
|
|
19
|
+
const cursorXInPage = e.clientX - wrapperRect.left - startPagePos.left;
|
|
20
|
+
const cursorYInPage = e.clientY - wrapperRect.top - startPagePos.top;
|
|
21
|
+
const dragOffset = {
|
|
22
|
+
x: cursorXInPage - field.x,
|
|
23
|
+
y: cursorYInPage - field.y,
|
|
24
|
+
page: field.page,
|
|
25
|
+
};
|
|
26
|
+
// Mark that we're dragging an existing field, not a new field type
|
|
27
|
+
e.dataTransfer.effectAllowed = 'move';
|
|
28
|
+
e.dataTransfer.setData('text/plain', 'existing-field');
|
|
29
|
+
// Create a transparent drag image to hide the default browser drag image
|
|
30
|
+
const dragImage = document.createElement('div');
|
|
31
|
+
dragImage.style.position = 'absolute';
|
|
32
|
+
dragImage.style.top = '-9999px';
|
|
33
|
+
dragImage.style.width = '1px';
|
|
34
|
+
dragImage.style.height = '1px';
|
|
35
|
+
dragImage.style.opacity = '0';
|
|
36
|
+
document.body.appendChild(dragImage);
|
|
37
|
+
e.dataTransfer.setDragImage(dragImage, 0, 0);
|
|
38
|
+
setTimeout(() => document.body.removeChild(dragImage), 0);
|
|
39
|
+
return dragOffset;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=handle-field-drag-start.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-field-drag-start.utils.js","sourceRoot":"","sources":["../../src/utils/handle-field-drag-start.utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAChC,CAA4B,EAC5B,KAAe,EACf,aAAwC,EACK,EAAE;IAC/C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAClE,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;IACvE,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;IAErE,MAAM,UAAU,GAAG;QACf,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC,CAAC;QAC1B,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC,CAAC;QAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;KACnB,CAAC;IAEF,mEAAmE;IACnE,CAAC,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM,CAAC;IACtC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAEvD,yEAAyE;IACzE,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAChD,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;IACtC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9B,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;IAC/B,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAE1D,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DragEvent, RefObject } from 'react';
|
|
2
|
+
import { PdfField } from '../interface/pdf-editor';
|
|
3
|
+
interface DragOffset {
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
page: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Handles the drag event for a PDF field
|
|
10
|
+
* Calculates new position and clamps it to page boundaries
|
|
11
|
+
* @param e - The drag event
|
|
12
|
+
* @param field - The field being dragged
|
|
13
|
+
* @param dragOffset - The drag offset from drag start
|
|
14
|
+
* @param pdfWrapperRef - Reference to the PDF wrapper element
|
|
15
|
+
* @param onFieldMove - Callback to update field position
|
|
16
|
+
*/
|
|
17
|
+
export declare const handleFieldDrag: (e: DragEvent<HTMLDivElement>, field: PdfField, dragOffset: DragOffset, pdfWrapperRef: RefObject<HTMLDivElement>, onFieldMove: (fieldId: string, newX: number, newY: number, pageNumber: number) => void) => void;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=handle-field-drag.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-field-drag.utils.d.ts","sourceRoot":"","sources":["../../src/utils/handle-field-drag.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAKnD,UAAU,UAAU;IAChB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GACxB,GAAG,SAAS,CAAC,cAAc,CAAC,EAC5B,OAAO,QAAQ,EACf,YAAY,UAAU,EACtB,eAAe,SAAS,CAAC,cAAc,CAAC,EACxC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,KACvF,IA2BF,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { getPageDimensions } from './get-page-dimensions.utils';
|
|
2
|
+
import { getPageNumberFromClientY } from './get-page-number-from-client-y.utils';
|
|
3
|
+
import { getPagePosition } from './get-page-position.utils';
|
|
4
|
+
/**
|
|
5
|
+
* Handles the drag event for a PDF field
|
|
6
|
+
* Calculates new position and clamps it to page boundaries
|
|
7
|
+
* @param e - The drag event
|
|
8
|
+
* @param field - The field being dragged
|
|
9
|
+
* @param dragOffset - The drag offset from drag start
|
|
10
|
+
* @param pdfWrapperRef - Reference to the PDF wrapper element
|
|
11
|
+
* @param onFieldMove - Callback to update field position
|
|
12
|
+
*/
|
|
13
|
+
export const handleFieldDrag = (e, field, dragOffset, pdfWrapperRef, onFieldMove) => {
|
|
14
|
+
if (!pdfWrapperRef.current || e.clientX === 0 || e.clientY === 0) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const currentPage = getPageNumberFromClientY(e.clientY, pdfWrapperRef);
|
|
18
|
+
const currentPagePos = getPagePosition(currentPage, pdfWrapperRef);
|
|
19
|
+
const wrapperRect = pdfWrapperRef.current.getBoundingClientRect();
|
|
20
|
+
const pageDimensions = getPageDimensions(currentPage, pdfWrapperRef);
|
|
21
|
+
// Calculate position in page coordinates
|
|
22
|
+
const x = e.clientX - wrapperRect.left - currentPagePos.left - dragOffset.x;
|
|
23
|
+
const y = e.clientY - wrapperRect.top - currentPagePos.top - dragOffset.y;
|
|
24
|
+
/*
|
|
25
|
+
* Clamp x and y to stay within page boundaries.
|
|
26
|
+
* Account for field width and height to prevent dragging outside.
|
|
27
|
+
*/
|
|
28
|
+
const minX = 0;
|
|
29
|
+
const minY = 0;
|
|
30
|
+
const maxX = Math.max(0, pageDimensions.width - field.width);
|
|
31
|
+
const maxY = Math.max(0, pageDimensions.height - field.height);
|
|
32
|
+
const clampedX = Math.max(minX, Math.min(maxX, x));
|
|
33
|
+
const clampedY = Math.max(minY, Math.min(maxY, y));
|
|
34
|
+
onFieldMove(field.id, clampedX, clampedY, currentPage);
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=handle-field-drag.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-field-drag.utils.js","sourceRoot":"","sources":["../../src/utils/handle-field-drag.utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAQ5D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC3B,CAA4B,EAC5B,KAAe,EACf,UAAsB,EACtB,aAAwC,EACxC,WAAsF,EAClF,EAAE;IACN,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QAC/D,OAAO;IACX,CAAC;IAED,MAAM,WAAW,GAAG,wBAAwB,CAAC,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACvE,MAAM,cAAc,GAAG,eAAe,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAClE,MAAM,cAAc,GAAG,iBAAiB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAErE,yCAAyC;IACzC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC;IAC5E,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,GAAG,cAAc,CAAC,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC;IAE1E;;;OAGG;IACH,MAAM,IAAI,GAAG,CAAC,CAAC;IACf,MAAM,IAAI,GAAG,CAAC,CAAC;IACf,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAE/D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnD,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AAC3D,CAAC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
import { PdfField } from '../interface/pdf-editor';
|
|
3
|
+
interface ResizeStartData {
|
|
4
|
+
startX: number;
|
|
5
|
+
startY: number;
|
|
6
|
+
startWidth: number;
|
|
7
|
+
startHeight: number;
|
|
8
|
+
page: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Calculates the initial resize data when user starts resizing
|
|
12
|
+
* @param e - Mouse event
|
|
13
|
+
* @param field - The field being resized
|
|
14
|
+
* @param pdfWrapperRef - Reference to the PDF wrapper element
|
|
15
|
+
* @returns Resize start data or null if calculation fails
|
|
16
|
+
*/
|
|
17
|
+
export declare const handleFieldResizeStart: (e: {
|
|
18
|
+
clientX: number;
|
|
19
|
+
clientY: number;
|
|
20
|
+
}, field: PdfField, pdfWrapperRef: RefObject<HTMLDivElement>) => ResizeStartData | null;
|
|
21
|
+
/**
|
|
22
|
+
* Handles the resize event for a PDF field from bottom-right corner
|
|
23
|
+
* Only changes width and height, keeping x and y coordinates unchanged
|
|
24
|
+
* @param e - Mouse event
|
|
25
|
+
* @param field - The field being resized
|
|
26
|
+
* @param resizeStartData - Data from resize start
|
|
27
|
+
* @param pdfWrapperRef - Reference to the PDF wrapper element
|
|
28
|
+
* @param onFieldResize - Callback to update field dimensions
|
|
29
|
+
*/
|
|
30
|
+
export declare const handleFieldResize: (e: {
|
|
31
|
+
clientX: number;
|
|
32
|
+
clientY: number;
|
|
33
|
+
}, field: PdfField, resizeStartData: ResizeStartData, pdfWrapperRef: RefObject<HTMLDivElement>, onFieldResize: (fieldId: string, newWidth: number, newHeight: number, pageNumber: number) => void) => void;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=handle-field-resize.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-field-resize.utils.d.ts","sourceRoot":"","sources":["../../src/utils/handle-field-resize.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAInD,UAAU,eAAe;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GAC/B,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACvC,OAAO,QAAQ,EACf,eAAe,SAAS,CAAC,cAAc,CAAC,KACzC,eAAe,GAAG,IAmBpB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAC1B,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACvC,OAAO,QAAQ,EACf,iBAAiB,eAAe,EAChC,eAAe,SAAS,CAAC,cAAc,CAAC,EACxC,eAAe,CACX,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,KACjB,IAAI,KACV,IAmCF,CAAC"}
|