@hprint/plugins 0.0.7 → 0.0.8

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 (37) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/index.mjs +1 -1
  3. package/package.json +3 -3
  4. package/src/assets/style/resizePlugin.css +27 -27
  5. package/src/objects/Arrow.js +47 -47
  6. package/src/objects/ThinTailArrow.js +50 -50
  7. package/src/plugins/ControlsPlugin.ts +413 -413
  8. package/src/plugins/ControlsRotatePlugin.ts +111 -111
  9. package/src/plugins/CopyPlugin.ts +261 -261
  10. package/src/plugins/DeleteHotKeyPlugin.ts +57 -57
  11. package/src/plugins/DrawLinePlugin.ts +162 -162
  12. package/src/plugins/DrawPolygonPlugin.ts +205 -205
  13. package/src/plugins/DringPlugin.ts +125 -125
  14. package/src/plugins/FlipPlugin.ts +59 -59
  15. package/src/plugins/FontPlugin.ts +165 -165
  16. package/src/plugins/FreeDrawPlugin.ts +49 -49
  17. package/src/plugins/GroupPlugin.ts +82 -82
  18. package/src/plugins/GroupTextEditorPlugin.ts +198 -198
  19. package/src/plugins/HistoryPlugin.ts +181 -181
  20. package/src/plugins/ImageStroke.ts +121 -121
  21. package/src/plugins/LayerPlugin.ts +108 -108
  22. package/src/plugins/MaskPlugin.ts +155 -155
  23. package/src/plugins/MaterialPlugin.ts +224 -224
  24. package/src/plugins/MiddleMousePlugin.ts +45 -45
  25. package/src/plugins/MoveHotKeyPlugin.ts +46 -46
  26. package/src/plugins/PathTextPlugin.ts +89 -89
  27. package/src/plugins/PolygonModifyPlugin.ts +224 -224
  28. package/src/plugins/PrintPlugin.ts +81 -81
  29. package/src/plugins/PsdPlugin.ts +52 -52
  30. package/src/plugins/SimpleClipImagePlugin.ts +244 -244
  31. package/src/types/eventType.ts +11 -11
  32. package/src/utils/psd.js +432 -432
  33. package/src/utils/ruler/guideline.ts +145 -145
  34. package/src/utils/ruler/index.ts +91 -91
  35. package/src/utils/ruler/utils.ts +162 -162
  36. package/tsconfig.json +10 -10
  37. 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;