@pdfme/ui 6.1.2-dev.25 → 6.1.2-dev.27
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/Designer.d.ts +8 -0
- package/dist/components/Designer/index.d.ts +4 -1
- package/dist/designerSelection.d.ts +45 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +149 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/Designer.d.ts
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { Template, DesignerProps } from '@pdfme/common';
|
|
2
2
|
import { BaseUIClass } from './class.js';
|
|
3
|
+
import { type DesignerSelectSchemasOptions, type DesignerSchemaSelectionTarget, type DesignerSelectedSchema, type DesignerSelection, type DesignerSelectionChangeCallback } from './designerSelection.js';
|
|
3
4
|
declare class Designer extends BaseUIClass {
|
|
4
5
|
private onSaveTemplateCallback?;
|
|
5
6
|
private onChangeTemplateCallback?;
|
|
6
7
|
private onPageChangeCallback?;
|
|
8
|
+
private onChangeSelectionCallback?;
|
|
7
9
|
private pageCursor;
|
|
10
|
+
private selection;
|
|
11
|
+
private selectSchemasHandler;
|
|
8
12
|
constructor(props: DesignerProps);
|
|
9
13
|
saveTemplate(): void;
|
|
10
14
|
updateTemplate(template: Template): void;
|
|
@@ -14,6 +18,10 @@ declare class Designer extends BaseUIClass {
|
|
|
14
18
|
currentPage: number;
|
|
15
19
|
totalPages: number;
|
|
16
20
|
}) => void): void;
|
|
21
|
+
onChangeSelection(cb: DesignerSelectionChangeCallback): void;
|
|
22
|
+
getSelection(): DesignerSelection;
|
|
23
|
+
getSelectedSchemas(): DesignerSelectedSchema[];
|
|
24
|
+
selectSchemas(targets: DesignerSchemaSelectionTarget | DesignerSchemaSelectionTarget[], options?: DesignerSelectSchemasOptions): void;
|
|
17
25
|
getPageCursor(): number;
|
|
18
26
|
getTotalPages(): number;
|
|
19
27
|
protected render(): void;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Template, DesignerProps, Size } from '@pdfme/common';
|
|
3
|
-
|
|
3
|
+
import { type DesignerSelectSchemas, type DesignerSelection } from '../../designerSelection.js';
|
|
4
|
+
declare const TemplateEditor: ({ template, size, onSaveTemplate, onChangeTemplate, onPageCursorChange, onChangeSelection, onRegisterSchemaSelectionHandler, }: Omit<DesignerProps, "domContainer"> & {
|
|
4
5
|
size: Size;
|
|
5
6
|
onSaveTemplate: (t: Template) => void;
|
|
6
7
|
onChangeTemplate: (t: Template) => void;
|
|
8
|
+
onChangeSelection?: (selection: DesignerSelection) => void;
|
|
9
|
+
onRegisterSchemaSelectionHandler?: (handler: DesignerSelectSchemas | null) => void;
|
|
7
10
|
} & {
|
|
8
11
|
onChangeTemplate: (t: Template) => void;
|
|
9
12
|
onPageCursorChange: (newPageCursor: number, totalPages: number) => void;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type Schema, type SchemaForUI } from '@pdfme/common';
|
|
2
|
+
export type DesignerSelectionBounds = {
|
|
3
|
+
height: number;
|
|
4
|
+
width: number;
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
};
|
|
8
|
+
export type DesignerSelectedSchema = {
|
|
9
|
+
name: string;
|
|
10
|
+
pageIndex: number;
|
|
11
|
+
schema: Schema;
|
|
12
|
+
schemaId: string;
|
|
13
|
+
schemaIndex: number;
|
|
14
|
+
type: string;
|
|
15
|
+
};
|
|
16
|
+
export type DesignerSelection = {
|
|
17
|
+
bounds: DesignerSelectionBounds | null;
|
|
18
|
+
pageIndex: number;
|
|
19
|
+
schemas: DesignerSelectedSchema[];
|
|
20
|
+
};
|
|
21
|
+
export type DesignerSelectionChangeCallback = (selection: DesignerSelection) => void;
|
|
22
|
+
export type DesignerSchemaSelectionTarget = string | {
|
|
23
|
+
name?: string;
|
|
24
|
+
pageIndex?: number;
|
|
25
|
+
schemaId?: string;
|
|
26
|
+
schemaIndex?: number;
|
|
27
|
+
};
|
|
28
|
+
export type DesignerSelectSchemasOptions = {
|
|
29
|
+
pageIndex?: number;
|
|
30
|
+
scroll?: boolean;
|
|
31
|
+
};
|
|
32
|
+
export type DesignerSelectSchemas = (targets: DesignerSchemaSelectionTarget | DesignerSchemaSelectionTarget[], options?: DesignerSelectSchemasOptions) => void;
|
|
33
|
+
export declare const EMPTY_DESIGNER_SELECTION: DesignerSelection;
|
|
34
|
+
export declare const createDesignerSelection: ({ activeSchemaIds, pageIndex, schemasList, }: {
|
|
35
|
+
activeSchemaIds: string[];
|
|
36
|
+
pageIndex: number;
|
|
37
|
+
schemasList: SchemaForUI[][];
|
|
38
|
+
}) => DesignerSelection;
|
|
39
|
+
export declare const normalizeDesignerSchemaSelectionTargets: (targets: DesignerSchemaSelectionTarget | DesignerSchemaSelectionTarget[]) => DesignerSchemaSelectionTarget[];
|
|
40
|
+
export declare const getDesignerSelectionPageIndex: (targets: DesignerSchemaSelectionTarget[], fallbackPageIndex: number, options?: DesignerSelectSchemasOptions) => number;
|
|
41
|
+
export declare const getSelectedSchemaIds: ({ pageIndex, schemas, targets, }: {
|
|
42
|
+
pageIndex: number;
|
|
43
|
+
schemas: SchemaForUI[];
|
|
44
|
+
targets: DesignerSchemaSelectionTarget[];
|
|
45
|
+
}) => string[];
|
package/dist/index.d.ts
CHANGED
|
@@ -2,3 +2,4 @@ import Designer from './Designer.js';
|
|
|
2
2
|
import Form from './Form.js';
|
|
3
3
|
import Viewer from './Viewer.js';
|
|
4
4
|
export { Designer, Viewer, Form };
|
|
5
|
+
export type { DesignerSchemaSelectionTarget, DesignerSelectSchemas, DesignerSelectSchemasOptions, DesignerSelectedSchema, DesignerSelection, DesignerSelectionBounds, DesignerSelectionChangeCallback, } from './designerSelection.js';
|
package/dist/index.js
CHANGED
|
@@ -235269,6 +235269,81 @@ var Canvas = (props, ref) => {
|
|
|
235269
235269
|
};
|
|
235270
235270
|
var Canvas_default = (0, import_react$9.forwardRef)(Canvas);
|
|
235271
235271
|
//#endregion
|
|
235272
|
+
//#region src/designerSelection.ts
|
|
235273
|
+
var EMPTY_DESIGNER_SELECTION = {
|
|
235274
|
+
bounds: null,
|
|
235275
|
+
pageIndex: 0,
|
|
235276
|
+
schemas: []
|
|
235277
|
+
};
|
|
235278
|
+
var toPersistedSchema = (schema) => {
|
|
235279
|
+
const cloned = cloneDeep$1(schema);
|
|
235280
|
+
delete cloned.id;
|
|
235281
|
+
return cloned;
|
|
235282
|
+
};
|
|
235283
|
+
var getSelectionBounds = (schemas) => {
|
|
235284
|
+
if (schemas.length === 0) return null;
|
|
235285
|
+
const left = Math.min(...schemas.map(({ schema }) => schema.position.x));
|
|
235286
|
+
const top = Math.min(...schemas.map(({ schema }) => schema.position.y));
|
|
235287
|
+
const right = Math.max(...schemas.map(({ schema }) => schema.position.x + schema.width));
|
|
235288
|
+
return {
|
|
235289
|
+
height: Math.max(...schemas.map(({ schema }) => schema.position.y + schema.height)) - top,
|
|
235290
|
+
width: right - left,
|
|
235291
|
+
x: left,
|
|
235292
|
+
y: top
|
|
235293
|
+
};
|
|
235294
|
+
};
|
|
235295
|
+
var createDesignerSelection = ({ activeSchemaIds, pageIndex, schemasList }) => {
|
|
235296
|
+
const pageSchemas = schemasList[pageIndex] ?? [];
|
|
235297
|
+
const selectedSchemas = activeSchemaIds.flatMap((schemaId) => {
|
|
235298
|
+
const schemaIndex = pageSchemas.findIndex((schema) => schema.id === schemaId);
|
|
235299
|
+
const schema = pageSchemas[schemaIndex];
|
|
235300
|
+
if (schemaIndex === -1 || !schema) return [];
|
|
235301
|
+
return [{
|
|
235302
|
+
name: schema.name,
|
|
235303
|
+
pageIndex,
|
|
235304
|
+
schema: toPersistedSchema(schema),
|
|
235305
|
+
schemaId: schema.id,
|
|
235306
|
+
schemaIndex,
|
|
235307
|
+
type: schema.type
|
|
235308
|
+
}];
|
|
235309
|
+
});
|
|
235310
|
+
return {
|
|
235311
|
+
bounds: getSelectionBounds(selectedSchemas),
|
|
235312
|
+
pageIndex,
|
|
235313
|
+
schemas: selectedSchemas
|
|
235314
|
+
};
|
|
235315
|
+
};
|
|
235316
|
+
var normalizeDesignerSchemaSelectionTargets = (targets) => Array.isArray(targets) ? targets : [targets];
|
|
235317
|
+
var getDesignerSelectionPageIndex = (targets, fallbackPageIndex, options = {}) => {
|
|
235318
|
+
const optionPageIndex = options.pageIndex;
|
|
235319
|
+
if (Number.isInteger(optionPageIndex) && optionPageIndex !== void 0 && optionPageIndex >= 0) return optionPageIndex;
|
|
235320
|
+
const targetPageIndex = targets.find((target) => typeof target === "object" && target !== null)?.pageIndex;
|
|
235321
|
+
return Number.isInteger(targetPageIndex) && targetPageIndex !== void 0 && targetPageIndex >= 0 ? targetPageIndex : fallbackPageIndex;
|
|
235322
|
+
};
|
|
235323
|
+
var getSelectedSchemaIds = ({ pageIndex, schemas, targets }) => {
|
|
235324
|
+
const selectedIds = /* @__PURE__ */ new Set();
|
|
235325
|
+
targets.forEach((target) => {
|
|
235326
|
+
schemas.forEach((schema, schemaIndex) => {
|
|
235327
|
+
if (typeof target === "string") {
|
|
235328
|
+
if (schema.id === target || schema.name === target) selectedIds.add(schema.id);
|
|
235329
|
+
return;
|
|
235330
|
+
}
|
|
235331
|
+
if (Number.isInteger(target.pageIndex) && target.pageIndex !== void 0 && target.pageIndex !== pageIndex) return;
|
|
235332
|
+
if (!(target.schemaId !== void 0 || target.schemaIndex !== void 0 || target.name !== void 0)) return;
|
|
235333
|
+
if (target.schemaId !== void 0 && target.schemaId === schema.id) {
|
|
235334
|
+
selectedIds.add(schema.id);
|
|
235335
|
+
return;
|
|
235336
|
+
}
|
|
235337
|
+
if (target.schemaIndex !== void 0 && target.schemaIndex === schemaIndex) {
|
|
235338
|
+
selectedIds.add(schema.id);
|
|
235339
|
+
return;
|
|
235340
|
+
}
|
|
235341
|
+
if (target.name !== void 0 && target.name === schema.name) selectedIds.add(schema.id);
|
|
235342
|
+
});
|
|
235343
|
+
});
|
|
235344
|
+
return [...selectedIds];
|
|
235345
|
+
};
|
|
235346
|
+
//#endregion
|
|
235272
235347
|
//#region src/components/Spinner.tsx
|
|
235273
235348
|
var Spinner = () => {
|
|
235274
235349
|
const { token } = theme_default.useToken();
|
|
@@ -235544,7 +235619,7 @@ var scaleDragPosAdjustment = (adjustment, scale) => {
|
|
|
235544
235619
|
if (scale < 1) return adjustment * -(1 - scale);
|
|
235545
235620
|
return 0;
|
|
235546
235621
|
};
|
|
235547
|
-
var TemplateEditor = ({ template, size, onSaveTemplate, onChangeTemplate, onPageCursorChange }) => {
|
|
235622
|
+
var TemplateEditor = ({ template, size, onSaveTemplate, onChangeTemplate, onPageCursorChange, onChangeSelection, onRegisterSchemaSelectionHandler }) => {
|
|
235548
235623
|
const past = (0, import_react$9.useRef)([]);
|
|
235549
235624
|
const future = (0, import_react$9.useRef)([]);
|
|
235550
235625
|
const canvasRef = (0, import_react$9.useRef)(null);
|
|
@@ -235567,10 +235642,59 @@ var TemplateEditor = ({ template, size, onSaveTemplate, onChangeTemplate, onPage
|
|
|
235567
235642
|
zoomLevel,
|
|
235568
235643
|
maxZoom
|
|
235569
235644
|
});
|
|
235645
|
+
const getElementsByIds = (ids) => ids.map((id) => document.getElementById(id)).filter((element) => element instanceof HTMLElement);
|
|
235570
235646
|
const onEdit = (targets) => {
|
|
235571
235647
|
setActiveElements(targets.filter((target) => target instanceof HTMLElement));
|
|
235572
235648
|
setHoveringSchemaId(null);
|
|
235573
235649
|
};
|
|
235650
|
+
const selectSchemas = (0, import_react$9.useCallback)((targets, options = {}) => {
|
|
235651
|
+
const normalizedTargets = normalizeDesignerSchemaSelectionTargets(targets);
|
|
235652
|
+
if (normalizedTargets.length === 0) {
|
|
235653
|
+
onEditEnd();
|
|
235654
|
+
return;
|
|
235655
|
+
}
|
|
235656
|
+
const targetPageIndex = getDesignerSelectionPageIndex(normalizedTargets, pageCursor, options);
|
|
235657
|
+
const selectedSchemaIds = getSelectedSchemaIds({
|
|
235658
|
+
pageIndex: targetPageIndex,
|
|
235659
|
+
schemas: schemasList[targetPageIndex] ?? [],
|
|
235660
|
+
targets: normalizedTargets
|
|
235661
|
+
});
|
|
235662
|
+
const editSelectedSchemas = () => onEdit(getElementsByIds(selectedSchemaIds));
|
|
235663
|
+
if (selectedSchemaIds.length === 0) {
|
|
235664
|
+
onEditEnd();
|
|
235665
|
+
return;
|
|
235666
|
+
}
|
|
235667
|
+
if (targetPageIndex !== pageCursor) {
|
|
235668
|
+
setPageCursor(targetPageIndex);
|
|
235669
|
+
onPageCursorChange(targetPageIndex, schemasList.length);
|
|
235670
|
+
if (options.scroll !== false && canvasRef.current) canvasRef.current.scrollTop = getPagesScrollTopByIndex(pageSizes, targetPageIndex, scale);
|
|
235671
|
+
setTimeout(editSelectedSchemas);
|
|
235672
|
+
return;
|
|
235673
|
+
}
|
|
235674
|
+
editSelectedSchemas();
|
|
235675
|
+
}, [
|
|
235676
|
+
pageCursor,
|
|
235677
|
+
pageSizes,
|
|
235678
|
+
scale,
|
|
235679
|
+
schemasList,
|
|
235680
|
+
onPageCursorChange
|
|
235681
|
+
]);
|
|
235682
|
+
(0, import_react$9.useEffect)(() => {
|
|
235683
|
+
onRegisterSchemaSelectionHandler?.(selectSchemas);
|
|
235684
|
+
return () => onRegisterSchemaSelectionHandler?.(null);
|
|
235685
|
+
}, [onRegisterSchemaSelectionHandler, selectSchemas]);
|
|
235686
|
+
(0, import_react$9.useEffect)(() => {
|
|
235687
|
+
onChangeSelection?.(createDesignerSelection({
|
|
235688
|
+
activeSchemaIds: activeElements.map((element) => element.id),
|
|
235689
|
+
pageIndex: pageCursor,
|
|
235690
|
+
schemasList
|
|
235691
|
+
}));
|
|
235692
|
+
}, [
|
|
235693
|
+
activeElements,
|
|
235694
|
+
onChangeSelection,
|
|
235695
|
+
pageCursor,
|
|
235696
|
+
schemasList
|
|
235697
|
+
]);
|
|
235574
235698
|
const onEditEnd = () => {
|
|
235575
235699
|
setActiveElements([]);
|
|
235576
235700
|
setHoveringSchemaId(null);
|
|
@@ -235916,7 +236040,10 @@ var Designer = class extends BaseUIClass {
|
|
|
235916
236040
|
_defineProperty$14(this, "onSaveTemplateCallback", void 0);
|
|
235917
236041
|
_defineProperty$14(this, "onChangeTemplateCallback", void 0);
|
|
235918
236042
|
_defineProperty$14(this, "onPageChangeCallback", void 0);
|
|
236043
|
+
_defineProperty$14(this, "onChangeSelectionCallback", void 0);
|
|
235919
236044
|
_defineProperty$14(this, "pageCursor", 0);
|
|
236045
|
+
_defineProperty$14(this, "selection", EMPTY_DESIGNER_SELECTION);
|
|
236046
|
+
_defineProperty$14(this, "selectSchemasHandler", null);
|
|
235920
236047
|
checkDesignerProps(props);
|
|
235921
236048
|
}
|
|
235922
236049
|
saveTemplate() {
|
|
@@ -235939,6 +236066,20 @@ var Designer = class extends BaseUIClass {
|
|
|
235939
236066
|
onPageChange(cb) {
|
|
235940
236067
|
this.onPageChangeCallback = cb;
|
|
235941
236068
|
}
|
|
236069
|
+
onChangeSelection(cb) {
|
|
236070
|
+
this.onChangeSelectionCallback = cb;
|
|
236071
|
+
}
|
|
236072
|
+
getSelection() {
|
|
236073
|
+
if (!this.domContainer) throw Error(DESTROYED_ERR_MSG);
|
|
236074
|
+
return cloneDeep$1(this.selection);
|
|
236075
|
+
}
|
|
236076
|
+
getSelectedSchemas() {
|
|
236077
|
+
return this.getSelection().schemas;
|
|
236078
|
+
}
|
|
236079
|
+
selectSchemas(targets, options) {
|
|
236080
|
+
if (!this.domContainer) throw Error(DESTROYED_ERR_MSG);
|
|
236081
|
+
this.selectSchemasHandler?.(targets, options);
|
|
236082
|
+
}
|
|
235942
236083
|
getPageCursor() {
|
|
235943
236084
|
return this.pageCursor;
|
|
235944
236085
|
}
|
|
@@ -235972,6 +236113,13 @@ var Designer = class extends BaseUIClass {
|
|
|
235972
236113
|
totalPages
|
|
235973
236114
|
});
|
|
235974
236115
|
},
|
|
236116
|
+
onChangeSelection: (selection) => {
|
|
236117
|
+
this.selection = cloneDeep$1(selection);
|
|
236118
|
+
if (this.onChangeSelectionCallback) this.onChangeSelectionCallback(cloneDeep$1(selection));
|
|
236119
|
+
},
|
|
236120
|
+
onRegisterSchemaSelectionHandler: (handler) => {
|
|
236121
|
+
this.selectSchemasHandler = handler;
|
|
236122
|
+
},
|
|
235975
236123
|
size: this.size
|
|
235976
236124
|
})
|
|
235977
236125
|
}));
|