@hprint/plugins 0.0.1-alpha.1 → 0.0.1-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/index.js +122 -117
  2. package/dist/index.mjs +41257 -21115
  3. package/dist/src/plugins/AlignGuidLinePlugin.d.ts +7 -2
  4. package/dist/src/plugins/AlignGuidLinePlugin.d.ts.map +1 -1
  5. package/dist/src/plugins/BarCodePlugin.d.ts +4 -0
  6. package/dist/src/plugins/BarCodePlugin.d.ts.map +1 -1
  7. package/dist/src/plugins/CreateElementPlugin.d.ts +3 -9
  8. package/dist/src/plugins/CreateElementPlugin.d.ts.map +1 -1
  9. package/dist/src/plugins/GroupAlignPlugin.d.ts.map +1 -1
  10. package/dist/src/plugins/LockPlugin.d.ts.map +1 -1
  11. package/dist/src/plugins/QrCodePlugin.d.ts +19 -97
  12. package/dist/src/plugins/QrCodePlugin.d.ts.map +1 -1
  13. package/dist/src/plugins/ResizePlugin.d.ts.map +1 -1
  14. package/dist/src/plugins/UnitPlugin.d.ts.map +1 -1
  15. package/dist/src/plugins/WorkspacePlugin.d.ts.map +1 -1
  16. package/dist/src/utils/units.d.ts.map +1 -1
  17. package/package.json +5 -4
  18. package/src/assets/style/resizePlugin.css +27 -27
  19. package/src/objects/Arrow.js +47 -47
  20. package/src/objects/ThinTailArrow.js +50 -50
  21. package/src/plugins/AlignGuidLinePlugin.ts +1152 -1141
  22. package/src/plugins/BarCodePlugin.ts +33 -27
  23. package/src/plugins/ControlsPlugin.ts +251 -251
  24. package/src/plugins/ControlsRotatePlugin.ts +111 -111
  25. package/src/plugins/CopyPlugin.ts +255 -255
  26. package/src/plugins/CreateElementPlugin.ts +14 -10
  27. package/src/plugins/DeleteHotKeyPlugin.ts +57 -57
  28. package/src/plugins/DrawLinePlugin.ts +162 -162
  29. package/src/plugins/DrawPolygonPlugin.ts +205 -205
  30. package/src/plugins/DringPlugin.ts +125 -125
  31. package/src/plugins/FlipPlugin.ts +59 -59
  32. package/src/plugins/FontPlugin.ts +165 -165
  33. package/src/plugins/FreeDrawPlugin.ts +49 -49
  34. package/src/plugins/GroupAlignPlugin.ts +365 -365
  35. package/src/plugins/GroupPlugin.ts +82 -82
  36. package/src/plugins/GroupTextEditorPlugin.ts +198 -198
  37. package/src/plugins/HistoryPlugin.ts +181 -181
  38. package/src/plugins/ImageStroke.ts +121 -121
  39. package/src/plugins/LayerPlugin.ts +108 -108
  40. package/src/plugins/LockPlugin.ts +242 -240
  41. package/src/plugins/MaskPlugin.ts +155 -155
  42. package/src/plugins/MaterialPlugin.ts +224 -224
  43. package/src/plugins/MiddleMousePlugin.ts +45 -45
  44. package/src/plugins/MoveHotKeyPlugin.ts +46 -46
  45. package/src/plugins/PathTextPlugin.ts +89 -89
  46. package/src/plugins/PolygonModifyPlugin.ts +224 -224
  47. package/src/plugins/PrintPlugin.ts +81 -81
  48. package/src/plugins/PsdPlugin.ts +52 -52
  49. package/src/plugins/QrCodePlugin.ts +322 -393
  50. package/src/plugins/ResizePlugin.ts +278 -274
  51. package/src/plugins/RulerPlugin.ts +78 -78
  52. package/src/plugins/SimpleClipImagePlugin.ts +244 -244
  53. package/src/plugins/UnitPlugin.ts +326 -327
  54. package/src/plugins/WaterMarkPlugin.ts +257 -257
  55. package/src/plugins/WorkspacePlugin.ts +10 -6
  56. package/src/types/eventType.ts +11 -11
  57. package/src/utils/psd.js +432 -432
  58. package/src/utils/ruler/guideline.ts +145 -145
  59. package/src/utils/ruler/index.ts +91 -91
  60. package/src/utils/ruler/ruler.ts +924 -924
  61. package/src/utils/ruler/utils.ts +162 -162
  62. package/src/utils/units.ts +4 -2
  63. package/tsconfig.json +10 -10
  64. package/vite.config.ts +29 -29
@@ -1,145 +1,145 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- /* eslint-disable @typescript-eslint/no-unused-vars */
3
- import { fabric } from '@hprint/core';
4
-
5
- export function setupGuideLine() {
6
- if (fabric.GuideLine) {
7
- return;
8
- }
9
-
10
- fabric.GuideLine = fabric.util.createClass(fabric.Line, {
11
- type: 'GuideLine',
12
- selectable: false,
13
- hasControls: false,
14
- hasBorders: false,
15
- stroke: '#4bec13',
16
- originX: 'center',
17
- originY: 'center',
18
- padding: 4, // 填充,让辅助线选择范围更大,方便选中
19
- globalCompositeOperation: 'difference',
20
- axis: 'horizontal',
21
- // excludeFromExport: true,
22
-
23
- initialize(points: number, options: fabric.IGuideLineOptions) {
24
- const isHorizontal = options.axis === 'horizontal';
25
- // 指针
26
- this.hoverCursor = isHorizontal ? 'ns-resize' : 'ew-resize';
27
- // 设置新的点
28
- const newPoints = isHorizontal
29
- ? [-999999, points, 999999, points]
30
- : [points, -999999, points, 999999];
31
- // 锁定移动
32
- options[isHorizontal ? 'lockMovementX' : 'lockMovementY'] = true;
33
- // 调用父类初始化
34
- this.callSuper('initialize', newPoints, options);
35
-
36
- // 绑定事件
37
- this.on('mousedown:before', (e: fabric.IEvent<MouseEvent>) => {
38
- if (this.activeOn === 'down') {
39
- // 设置selectable:false后激活对象才能进行移动
40
- this.canvas && this.canvas.setActiveObject(this, e.e);
41
- }
42
- });
43
-
44
- this.on('moving', (e) => {
45
- if (
46
- this.canvas &&
47
- this.canvas.ruler.options.enabled &&
48
- this.isPointOnRuler(e.e)
49
- ) {
50
- this.moveCursor = 'not-allowed';
51
- } else {
52
- this.moveCursor = this.isHorizontal()
53
- ? 'ns-resize'
54
- : 'ew-resize';
55
- }
56
- this.canvas &&
57
- this.canvas.fire('guideline:moving', {
58
- target: this,
59
- e: e.e,
60
- });
61
- });
62
-
63
- this.on('mouseup', (e) => {
64
- // 移动到标尺上,移除辅助线
65
- if (
66
- this.canvas &&
67
- this.canvas.ruler.options.enabled &&
68
- this.isPointOnRuler(e.e)
69
- ) {
70
- // console.log('移除辅助线', this);
71
- this.canvas.remove(this);
72
- return;
73
- }
74
- this.moveCursor = this.isHorizontal()
75
- ? 'ns-resize'
76
- : 'ew-resize';
77
- this.canvas &&
78
- this.canvas.fire('guideline:mouseup', {
79
- target: this,
80
- e: e.e,
81
- });
82
- });
83
-
84
- this.on('removed', () => {
85
- this.off('removed');
86
- this.off('mousedown:before');
87
- this.off('moving');
88
- this.off('mouseup');
89
- });
90
- },
91
-
92
- getBoundingRect(absolute, calculate) {
93
- this.bringToFront();
94
-
95
- const isHorizontal = this.isHorizontal();
96
- const rect = this.callSuper('getBoundingRect', absolute, calculate);
97
- rect[isHorizontal ? 'top' : 'left'] +=
98
- rect[isHorizontal ? 'height' : 'width'] / 2;
99
- rect[isHorizontal ? 'height' : 'width'] = 0;
100
- return rect;
101
- },
102
-
103
- isPointOnRuler(e) {
104
- const isHorizontal = this.isHorizontal();
105
- const hoveredRuler =
106
- this.canvas &&
107
- this.canvas.ruler.isPointOnRuler(
108
- new fabric.Point(e.offsetX, e.offsetY)
109
- );
110
- if (
111
- (isHorizontal && hoveredRuler === 'horizontal') ||
112
- (!isHorizontal && hoveredRuler === 'vertical')
113
- ) {
114
- return hoveredRuler;
115
- }
116
- return false;
117
- },
118
-
119
- isHorizontal() {
120
- return this.height === 0;
121
- },
122
- } as fabric.GuideLine);
123
-
124
- fabric.GuideLine.fromObject = function (object, callback) {
125
- const clone = fabric.util.object.clone as (
126
- object: any,
127
- deep: boolean
128
- ) => any;
129
-
130
- function _callback(instance: any) {
131
- delete instance.xy;
132
- callback && callback(instance);
133
- }
134
-
135
- const options = clone(object, true);
136
- const isHorizontal = options.height === 0;
137
-
138
- options.xy = isHorizontal ? options.y1 : options.x1;
139
- options.axis = isHorizontal ? 'horizontal' : 'vertical';
140
-
141
- fabric.Object._fromObject(options.type, options, _callback, 'xy');
142
- };
143
- }
144
-
145
- export default fabric.GuideLine;
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* eslint-disable @typescript-eslint/no-unused-vars */
3
+ import { fabric } from '@hprint/core';
4
+
5
+ export function setupGuideLine() {
6
+ if (fabric.GuideLine) {
7
+ return;
8
+ }
9
+
10
+ fabric.GuideLine = fabric.util.createClass(fabric.Line, {
11
+ type: 'GuideLine',
12
+ selectable: false,
13
+ hasControls: false,
14
+ hasBorders: false,
15
+ stroke: '#4bec13',
16
+ originX: 'center',
17
+ originY: 'center',
18
+ padding: 4, // 填充,让辅助线选择范围更大,方便选中
19
+ globalCompositeOperation: 'difference',
20
+ axis: 'horizontal',
21
+ // excludeFromExport: true,
22
+
23
+ initialize(points: number, options: fabric.IGuideLineOptions) {
24
+ const isHorizontal = options.axis === 'horizontal';
25
+ // 指针
26
+ this.hoverCursor = isHorizontal ? 'ns-resize' : 'ew-resize';
27
+ // 设置新的点
28
+ const newPoints = isHorizontal
29
+ ? [-999999, points, 999999, points]
30
+ : [points, -999999, points, 999999];
31
+ // 锁定移动
32
+ options[isHorizontal ? 'lockMovementX' : 'lockMovementY'] = true;
33
+ // 调用父类初始化
34
+ this.callSuper('initialize', newPoints, options);
35
+
36
+ // 绑定事件
37
+ this.on('mousedown:before', (e: fabric.IEvent<MouseEvent>) => {
38
+ if (this.activeOn === 'down') {
39
+ // 设置selectable:false后激活对象才能进行移动
40
+ this.canvas && this.canvas.setActiveObject(this, e.e);
41
+ }
42
+ });
43
+
44
+ this.on('moving', (e) => {
45
+ if (
46
+ this.canvas &&
47
+ this.canvas.ruler.options.enabled &&
48
+ this.isPointOnRuler(e.e)
49
+ ) {
50
+ this.moveCursor = 'not-allowed';
51
+ } else {
52
+ this.moveCursor = this.isHorizontal()
53
+ ? 'ns-resize'
54
+ : 'ew-resize';
55
+ }
56
+ this.canvas &&
57
+ this.canvas.fire('guideline:moving', {
58
+ target: this,
59
+ e: e.e,
60
+ });
61
+ });
62
+
63
+ this.on('mouseup', (e) => {
64
+ // 移动到标尺上,移除辅助线
65
+ if (
66
+ this.canvas &&
67
+ this.canvas.ruler.options.enabled &&
68
+ this.isPointOnRuler(e.e)
69
+ ) {
70
+ // console.log('移除辅助线', this);
71
+ this.canvas.remove(this);
72
+ return;
73
+ }
74
+ this.moveCursor = this.isHorizontal()
75
+ ? 'ns-resize'
76
+ : 'ew-resize';
77
+ this.canvas &&
78
+ this.canvas.fire('guideline:mouseup', {
79
+ target: this,
80
+ e: e.e,
81
+ });
82
+ });
83
+
84
+ this.on('removed', () => {
85
+ this.off('removed');
86
+ this.off('mousedown:before');
87
+ this.off('moving');
88
+ this.off('mouseup');
89
+ });
90
+ },
91
+
92
+ getBoundingRect(absolute, calculate) {
93
+ this.bringToFront();
94
+
95
+ const isHorizontal = this.isHorizontal();
96
+ const rect = this.callSuper('getBoundingRect', absolute, calculate);
97
+ rect[isHorizontal ? 'top' : 'left'] +=
98
+ rect[isHorizontal ? 'height' : 'width'] / 2;
99
+ rect[isHorizontal ? 'height' : 'width'] = 0;
100
+ return rect;
101
+ },
102
+
103
+ isPointOnRuler(e) {
104
+ const isHorizontal = this.isHorizontal();
105
+ const hoveredRuler =
106
+ this.canvas &&
107
+ this.canvas.ruler.isPointOnRuler(
108
+ new fabric.Point(e.offsetX, e.offsetY)
109
+ );
110
+ if (
111
+ (isHorizontal && hoveredRuler === 'horizontal') ||
112
+ (!isHorizontal && hoveredRuler === 'vertical')
113
+ ) {
114
+ return hoveredRuler;
115
+ }
116
+ return false;
117
+ },
118
+
119
+ isHorizontal() {
120
+ return this.height === 0;
121
+ },
122
+ } as fabric.GuideLine);
123
+
124
+ fabric.GuideLine.fromObject = function (object, callback) {
125
+ const clone = fabric.util.object.clone as (
126
+ object: any,
127
+ deep: boolean
128
+ ) => any;
129
+
130
+ function _callback(instance: any) {
131
+ delete instance.xy;
132
+ callback && callback(instance);
133
+ }
134
+
135
+ const options = clone(object, true);
136
+ const isHorizontal = options.height === 0;
137
+
138
+ options.xy = isHorizontal ? options.y1 : options.x1;
139
+ options.axis = isHorizontal ? 'horizontal' : 'vertical';
140
+
141
+ fabric.Object._fromObject(options.type, options, _callback, 'xy');
142
+ };
143
+ }
144
+
145
+ export default fabric.GuideLine;
@@ -1,91 +1,91 @@
1
- import { fabric, Canvas, IEditor } from '@hprint/core';
2
- import CanvasRuler, { RulerOptions } from './ruler';
3
-
4
- function initRuler(canvas: Canvas, editor: IEditor, options?: RulerOptions) {
5
- const ruler = new CanvasRuler({
6
- canvas,
7
- editor,
8
- ...options,
9
- });
10
-
11
- // 辅助线移动到画板外删除
12
- let workspace: fabric.Object | undefined = undefined;
13
-
14
- /**
15
- * 获取workspace
16
- */
17
- const getWorkspace = () => {
18
- workspace = canvas.getObjects().find((item) => item.id === 'workspace');
19
- };
20
-
21
- /**
22
- * 判断target是否在object矩形外
23
- * @param object
24
- * @param target
25
- * @returns
26
- */
27
- const isRectOut = (
28
- object: fabric.Object,
29
- target: fabric.GuideLine
30
- ): boolean => {
31
- const { top, height, left, width } = object;
32
-
33
- if (
34
- top === undefined ||
35
- height === undefined ||
36
- left === undefined ||
37
- width === undefined
38
- ) {
39
- return false;
40
- }
41
-
42
- const targetRect = target.getBoundingRect(true, true);
43
- const {
44
- top: targetTop,
45
- height: targetHeight,
46
- left: targetLeft,
47
- width: targetWidth,
48
- } = targetRect;
49
-
50
- if (
51
- target.isHorizontal() &&
52
- (top > targetTop + 1 || top + height < targetTop + targetHeight - 1)
53
- ) {
54
- return true;
55
- } else if (
56
- !target.isHorizontal() &&
57
- (left > targetLeft + 1 ||
58
- left + width < targetLeft + targetWidth - 1)
59
- ) {
60
- return true;
61
- }
62
-
63
- return false;
64
- };
65
-
66
- canvas.on('guideline:moving', (e) => {
67
- if (!workspace) {
68
- getWorkspace();
69
- return;
70
- }
71
- const { target } = e;
72
- if (isRectOut(workspace, target)) {
73
- target.moveCursor = 'not-allowed';
74
- }
75
- });
76
-
77
- canvas.on('guideline:mouseup', (e) => {
78
- if (!workspace) {
79
- getWorkspace();
80
- return;
81
- }
82
- const { target } = e;
83
- if (isRectOut(workspace, target)) {
84
- canvas.remove(target);
85
- canvas.setCursor(canvas.defaultCursor ?? '');
86
- }
87
- });
88
- return ruler;
89
- }
90
-
91
- export default initRuler;
1
+ import { fabric, Canvas, IEditor } from '@hprint/core';
2
+ import CanvasRuler, { RulerOptions } from './ruler';
3
+
4
+ function initRuler(canvas: Canvas, editor: IEditor, options?: RulerOptions) {
5
+ const ruler = new CanvasRuler({
6
+ canvas,
7
+ editor,
8
+ ...options,
9
+ });
10
+
11
+ // 辅助线移动到画板外删除
12
+ let workspace: fabric.Object | undefined = undefined;
13
+
14
+ /**
15
+ * 获取workspace
16
+ */
17
+ const getWorkspace = () => {
18
+ workspace = canvas.getObjects().find((item) => item.id === 'workspace');
19
+ };
20
+
21
+ /**
22
+ * 判断target是否在object矩形外
23
+ * @param object
24
+ * @param target
25
+ * @returns
26
+ */
27
+ const isRectOut = (
28
+ object: fabric.Object,
29
+ target: fabric.GuideLine
30
+ ): boolean => {
31
+ const { top, height, left, width } = object;
32
+
33
+ if (
34
+ top === undefined ||
35
+ height === undefined ||
36
+ left === undefined ||
37
+ width === undefined
38
+ ) {
39
+ return false;
40
+ }
41
+
42
+ const targetRect = target.getBoundingRect(true, true);
43
+ const {
44
+ top: targetTop,
45
+ height: targetHeight,
46
+ left: targetLeft,
47
+ width: targetWidth,
48
+ } = targetRect;
49
+
50
+ if (
51
+ target.isHorizontal() &&
52
+ (top > targetTop + 1 || top + height < targetTop + targetHeight - 1)
53
+ ) {
54
+ return true;
55
+ } else if (
56
+ !target.isHorizontal() &&
57
+ (left > targetLeft + 1 ||
58
+ left + width < targetLeft + targetWidth - 1)
59
+ ) {
60
+ return true;
61
+ }
62
+
63
+ return false;
64
+ };
65
+
66
+ canvas.on('guideline:moving', (e) => {
67
+ if (!workspace) {
68
+ getWorkspace();
69
+ return;
70
+ }
71
+ const { target } = e;
72
+ if (isRectOut(workspace, target)) {
73
+ target.moveCursor = 'not-allowed';
74
+ }
75
+ });
76
+
77
+ canvas.on('guideline:mouseup', (e) => {
78
+ if (!workspace) {
79
+ getWorkspace();
80
+ return;
81
+ }
82
+ const { target } = e;
83
+ if (isRectOut(workspace, target)) {
84
+ canvas.remove(target);
85
+ canvas.setCursor(canvas.defaultCursor ?? '');
86
+ }
87
+ });
88
+ return ruler;
89
+ }
90
+
91
+ export default initRuler;