@hprint/plugins 0.0.10 → 0.0.11-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,4 +5,6 @@ declare const pluginsObject: {
5
5
  };
6
6
  declare const pluginsList: IPluginTempl[];
7
7
  export { pluginsObject, pluginsList, SelectEvent, SelectMode };
8
+ export type { ITableItem, TableColumn, TableOptions, TableGroup, } from './plugins/TablePlugin';
9
+ export { normalizeTableColumns } from './plugins/TablePlugin';
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA0C5D,QAAA,MAAM,aAAa,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAA;CAuCjD,CAAC;AAGF,QAAA,MAAM,WAAW,EAAE,YAAY,EAuC9B,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA2C5D,QAAA,MAAM,aAAa,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAA;CAwCjD,CAAC;AAGF,QAAA,MAAM,WAAW,EAAE,YAAY,EAwC9B,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAC/D,YAAY,EACR,UAAU,EACV,WAAW,EACX,YAAY,EACZ,UAAU,GACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ActualContentLayoutPlugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/ActualContentLayoutPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,WAAW,2BAA2B;IACxC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CACpC;AAED,KAAK,OAAO,GAAG,IAAI,CAAC,yBAAyB,EAAE,0BAA0B,CAAC,CAAC;AAE3E,OAAO,QAAQ,cAAc,CAAC;IAC1B,UAAU,OAAQ,SAAQ,OAAO;KAAG;CACvC;AASD,cAAM,yBAA0B,YAAW,YAAY;IAKxC,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,MAAM,EAAE,OAAO;IAL1B,MAAM,CAAC,UAAU,SAA+B;IAChD,MAAM,CAAC,IAAI,WAAgC;gBAGhC,MAAM,EAAE,MAAM,CAAC,MAAM,EACrB,MAAM,EAAE,OAAO;IAG1B,OAAO,CAAC,aAAa,CAGjB;IAEE,sBAAsB,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE;IAkB/C,wBAAwB,CAAC,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM;IA4GrE,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,qBAAqB;CAyBhC;AAED,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"ActualContentLayoutPlugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/ActualContentLayoutPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,WAAW,2BAA2B;IACxC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CACpC;AAED,KAAK,OAAO,GAAG,IAAI,CAAC,yBAAyB,EAAE,0BAA0B,CAAC,CAAC;AAE3E,OAAO,QAAQ,cAAc,CAAC;IAC1B,UAAU,OAAQ,SAAQ,OAAO;KAAG;CACvC;AASD,cAAM,yBAA0B,YAAW,YAAY;IAKxC,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,MAAM,EAAE,OAAO;IAL1B,MAAM,CAAC,UAAU,SAA+B;IAChD,MAAM,CAAC,IAAI,WAAgC;gBAGhC,MAAM,EAAE,MAAM,CAAC,MAAM,EACrB,MAAM,EAAE,OAAO;IAG1B,OAAO,CAAC,aAAa,CAGjB;IAEE,sBAAsB,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE;IAkB/C,wBAAwB,CAAC,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM;IAoHrE,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,qBAAqB;CAyBhC;AAED,eAAe,yBAAyB,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { fabric, IEditor, IPluginTempl } from '@hprint/core';
2
+ export interface TableColumn {
3
+ title: string;
4
+ field: string;
5
+ width: number | `${number}%`;
6
+ }
7
+ export interface ITableItem {
8
+ type: 'table';
9
+ key: string;
10
+ title: string;
11
+ columns: TableColumn[];
12
+ data?: Array<Record<string, unknown>>;
13
+ headerHeight?: number;
14
+ rowHeight?: number;
15
+ height?: number;
16
+ heightAllocationMode?: 'stretch' | 'grow';
17
+ cellPaddingHorizontal?: number;
18
+ cellPaddingVertical?: number;
19
+ textOverflow?: 'wrap' | 'ellipsis';
20
+ textAlign?: 'left' | 'center' | 'right' | 'justify';
21
+ }
22
+ export interface TableOptions {
23
+ width?: number;
24
+ height?: number;
25
+ headerHeight?: number;
26
+ rowHeight?: number;
27
+ heightAllocationMode?: 'stretch' | 'grow';
28
+ borderWidth?: number;
29
+ fontFamily?: string;
30
+ fontSize?: number;
31
+ fontWeight?: string;
32
+ fontStyle?: string;
33
+ underline?: boolean | string;
34
+ linethrough?: boolean | string;
35
+ textOverflow?: 'wrap' | 'ellipsis';
36
+ textAlign?: 'left' | 'center' | 'right' | 'justify';
37
+ lineHeight?: number;
38
+ charSpacing?: number;
39
+ color?: string;
40
+ cellPadding?: number;
41
+ cellPaddingHorizontal?: number;
42
+ cellPaddingVertical?: number;
43
+ data?: Array<Record<string, unknown>>;
44
+ _field_?: string;
45
+ _renderRows?: Array<Record<string, unknown>>;
46
+ _clipContent?: boolean;
47
+ _actualContentLayout?: boolean;
48
+ [key: string]: any;
49
+ }
50
+ export type TableGroup = fabric.Group & {
51
+ extensionType?: string;
52
+ extension?: TableOptions & {
53
+ columns: TableColumn[];
54
+ };
55
+ _originSize?: Record<string, any>;
56
+ setExtension?: (fields: Record<string, any>) => Promise<void>;
57
+ setExtensionByUnit?: (fields: Record<string, any>) => Promise<void>;
58
+ setByUnit?: (field: string, value: any) => Promise<any>;
59
+ __tableModified?: () => void;
60
+ };
61
+ type IPlugin = Pick<TablePlugin, 'createTable' | 'initTableEvents' | 'refreshTable'>;
62
+ declare module '@hprint/core' {
63
+ interface IEditor extends IPlugin {
64
+ }
65
+ }
66
+ export declare function normalizeTableColumns(columns: TableColumn[]): {
67
+ ratio: number;
68
+ title: string;
69
+ field: string;
70
+ width: number | `${number}%`;
71
+ }[];
72
+ declare class TablePlugin implements IPluginTempl {
73
+ canvas: fabric.Canvas;
74
+ editor: IEditor;
75
+ static pluginName: string;
76
+ static apis: string[];
77
+ constructor(canvas: fabric.Canvas, editor: IEditor);
78
+ hookTransform(object: any): Promise<void>;
79
+ hookTransformObjectEnd(...args: unknown[]): Promise<void>;
80
+ createTable(columns: TableColumn[], options?: TableOptions): TableGroup;
81
+ initTableEvents(group: TableGroup): void;
82
+ refreshTable(group: TableGroup): Promise<void>;
83
+ private normalizeOptions;
84
+ private positiveNumber;
85
+ private nonNegativeNumber;
86
+ private toPx;
87
+ private buildGroup;
88
+ private createCellText;
89
+ private measureCellTextHeight;
90
+ private ellipsizeCellText;
91
+ private updateOriginSize;
92
+ destroy(): void;
93
+ }
94
+ export default TablePlugin;
95
+ //# sourceMappingURL=TablePlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TablePlugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/TablePlugin.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hprint/plugins",
3
- "version": "0.0.10",
3
+ "version": "0.0.11-alpha.1",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -22,8 +22,8 @@
22
22
  "qs": "~6.12.3",
23
23
  "socket.io-client": "^4.8.1",
24
24
  "uuid": "~8.3.2",
25
- "@hprint/shared": "0.0.10",
26
- "@hprint/core": "0.0.10"
25
+ "@hprint/core": "0.0.11-alpha.1",
26
+ "@hprint/shared": "0.0.11-alpha.1"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@types/bwip-js": "^3.2.3",
package/src/index.ts CHANGED
@@ -36,9 +36,10 @@ import ResizePlugin from './plugins/ResizePlugin';
36
36
  import LockPlugin from './plugins/LockPlugin';
37
37
  import AddBaseTypePlugin from './plugins/AddBaseTypePlugin';
38
38
  import PrintPlugin from './plugins/PrintPlugin';
39
- import CreateElementPlugin from './plugins/CreateElementPlugin';
40
- import ImageTextListPlugin from './plugins/ImageTextListPlugin';
41
- import ActualContentLayoutPlugin from './plugins/ActualContentLayoutPlugin';
39
+ import CreateElementPlugin from './plugins/CreateElementPlugin';
40
+ import ImageTextListPlugin from './plugins/ImageTextListPlugin';
41
+ import ActualContentLayoutPlugin from './plugins/ActualContentLayoutPlugin';
42
+ import TablePlugin from './plugins/TablePlugin';
42
43
 
43
44
  // 对象形式导出所有插件
44
45
  const pluginsObject: { [key: string]: IPluginTempl } = {
@@ -77,10 +78,11 @@ const pluginsObject: { [key: string]: IPluginTempl } = {
77
78
  LockPlugin,
78
79
  AddBaseTypePlugin,
79
80
  PrintPlugin,
80
- CreateElementPlugin,
81
- ImageTextListPlugin,
82
- ActualContentLayoutPlugin,
83
- };
81
+ CreateElementPlugin,
82
+ ImageTextListPlugin,
83
+ ActualContentLayoutPlugin,
84
+ TablePlugin,
85
+ };
84
86
 
85
87
  // 数组形式导出所有插件
86
88
  const pluginsList: IPluginTempl[] = [
@@ -119,9 +121,17 @@ const pluginsList: IPluginTempl[] = [
119
121
  LockPlugin,
120
122
  AddBaseTypePlugin,
121
123
  PrintPlugin,
122
- CreateElementPlugin,
123
- ImageTextListPlugin,
124
- ActualContentLayoutPlugin,
125
- ];
124
+ CreateElementPlugin,
125
+ ImageTextListPlugin,
126
+ ActualContentLayoutPlugin,
127
+ TablePlugin,
128
+ ];
126
129
 
127
130
  export { pluginsObject, pluginsList, SelectEvent, SelectMode };
131
+ export type {
132
+ ITableItem,
133
+ TableColumn,
134
+ TableOptions,
135
+ TableGroup,
136
+ } from './plugins/TablePlugin';
137
+ export { normalizeTableColumns } from './plugins/TablePlugin';
@@ -60,7 +60,9 @@ class ActualContentLayoutPlugin implements IPluginTempl {
60
60
  .getObjects()
61
61
  .filter(this.isPrintableObject);
62
62
  const mmPerPx = Number(this.editor.getSizeByUnit?.(1, 'mm')) || 1;
63
- const sourceObjects = this.getTemplateSourceObjects(templateContent);
63
+ const sourceObjects = this.getTemplateSourceObjects(templateContent);
64
+ const unitFactor = mmPerPx;
65
+ const tolerance = 0.01;
64
66
 
65
67
  fabricObjects.forEach((object) => this.preparePrintLayoutObject(object));
66
68
 
@@ -143,8 +145,14 @@ class ActualContentLayoutPlugin implements IPluginTempl {
143
145
  });
144
146
 
145
147
  this.canvas.requestRenderAll();
148
+ const hasExpandedTable = entries.some(
149
+ (entry) =>
150
+ (entry.object as any)?.extensionType === 'table' &&
151
+ this.getActualLayoutHeight(entry.object) * unitFactor >
152
+ entry.originalBottom - entry.originalTop + tolerance
153
+ );
146
154
  if (
147
- settings.overflowMode !== 'expand' ||
155
+ (!hasExpandedTable && settings.overflowMode !== 'expand') ||
148
156
  previousActualBottom === undefined
149
157
  ) {
150
158
  return templateHeight;
@@ -232,7 +240,7 @@ class ActualContentLayoutPlugin implements IPluginTempl {
232
240
  }
233
241
 
234
242
  private preparePrintLayoutObject(object: any) {
235
- if (object?.extensionType !== 'imageTextList') return;
243
+ if (!['imageTextList', 'table'].includes(object?.extensionType)) return;
236
244
  if (object.extension?._clipContent === true) return;
237
245
 
238
246
  // Design canvases can opt into clipping, but print/layout canvases should