Skip to content

Commit 258879e

Browse files
committed
fix(TS): 修复 TS 语法错误
1 parent 4026a71 commit 258879e

11 files changed

+149
-133
lines changed

packages/core/Instance.ts

+76-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,81 @@
22
* @Author: 秦少卫
33
* @Date: 2024-04-10 15:38:47
44
* @LastEditors: 秦少卫
5-
* @LastEditTime: 2024-04-10 15:38:48
5+
* @LastEditTime: 2024-07-22 11:56:28
66
* @Description: 类型文件
77
*/
8+
import Editor from './Editor';
9+
import DringPlugin from './plugin/DringPlugin';
10+
import AlignGuidLinePlugin from './plugin/AlignGuidLinePlugin';
11+
import ControlsPlugin from './plugin/ControlsPlugin';
12+
import ControlsRotatePlugin from './plugin/ControlsRotatePlugin';
13+
import CenterAlignPlugin from './plugin/CenterAlignPlugin';
14+
import LayerPlugin from './plugin/LayerPlugin';
15+
import CopyPlugin from './plugin/CopyPlugin';
16+
import MoveHotKeyPlugin from './plugin/MoveHotKeyPlugin';
17+
import DeleteHotKeyPlugin from './plugin/DeleteHotKeyPlugin';
18+
import GroupPlugin from './plugin/GroupPlugin';
19+
import DrawLinePlugin from './plugin/DrawLinePlugin';
20+
import GroupTextEditorPlugin from './plugin/GroupTextEditorPlugin';
21+
import GroupAlignPlugin from './plugin/GroupAlignPlugin';
22+
import WorkspacePlugin from './plugin/WorkspacePlugin';
23+
import MaskPlugin from './plugin/MaskPlugin';
24+
import HistoryPlugin from './plugin/HistoryPlugin';
25+
import FlipPlugin from './plugin/FlipPlugin';
26+
import RulerPlugin from './plugin/RulerPlugin';
27+
import MaterialPlugin from './plugin/MaterialPlugin';
28+
import WaterMarkPlugin from './plugin/WaterMarkPlugin';
29+
import FontPlugin from './plugin/FontPlugin';
30+
import PolygonModifyPlugin from './plugin/PolygonModifyPlugin';
31+
import DrawPolygonPlugin from './plugin/DrawPolygonPlugin';
32+
import FreeDrawPlugin from './plugin/FreeDrawPlugin';
33+
import PathTextPlugin from './plugin/PathTextPlugin';
34+
import PsdPlugin from './plugin/PsdPlugin';
35+
import SimpleClipImagePlugin from './plugin/SimpleClipImagePlugin';
36+
import BarCodePlugin from './plugin/BarCodePlugin';
37+
import QrCodePlugin from './plugin/QrCodePlugin';
38+
import ImageStroke from './plugin/ImageStroke';
39+
import ResizePlugin from './plugin/ResizePlugin';
40+
import LockPlugin from './plugin/LockPlugin';
41+
import AddBaseTypePlugin from './plugin/AddBaseTypePlugin';
42+
43+
const AllEditor = {
44+
Editor,
45+
DringPlugin,
46+
AlignGuidLinePlugin,
47+
ControlsPlugin,
48+
ControlsRotatePlugin,
49+
CenterAlignPlugin,
50+
LayerPlugin,
51+
CopyPlugin,
52+
MoveHotKeyPlugin,
53+
DeleteHotKeyPlugin,
54+
GroupPlugin,
55+
DrawLinePlugin,
56+
GroupTextEditorPlugin,
57+
GroupAlignPlugin,
58+
WorkspacePlugin,
59+
MaskPlugin,
60+
HistoryPlugin,
61+
FlipPlugin,
62+
RulerPlugin,
63+
MaterialPlugin,
64+
WaterMarkPlugin,
65+
FontPlugin,
66+
PolygonModifyPlugin,
67+
DrawPolygonPlugin,
68+
FreeDrawPlugin,
69+
PathTextPlugin,
70+
PsdPlugin,
71+
SimpleClipImagePlugin,
72+
BarCodePlugin,
73+
QrCodePlugin,
74+
ImageStroke,
75+
ResizePlugin,
76+
LockPlugin,
77+
AddBaseTypePlugin,
78+
};
79+
80+
declare type KuaituEditor = typeof AllEditor;
81+
82+
export default KuaituEditor;

packages/core/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
"license": "ISC",
2525
"devDependencies": {
2626
"@types/jsdom": "^21.1.6",
27+
"@types/qs": "^6.9.15",
2728
"jsdom": "^24.0.0",
2829
"vitest": "^1.6.0"
2930
}
30-
}
31+
}

packages/core/plugin/GroupAlignPlugin.ts

+15-82
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* @Author: 秦少卫
33
* @Date: 2023-06-22 16:19:46
44
* @LastEditors: 秦少卫
5-
* @LastEditTime: 2024-04-10 17:33:17
5+
* @LastEditTime: 2024-07-22 10:21:05
66
* @Description: 组对齐插件
77
*/
88

@@ -18,18 +18,6 @@ class GroupAlignPlugin implements IPluginTempl {
1818

1919
left() {
2020
const { canvas } = this;
21-
// const activeObject = canvas.getActiveObject();
22-
// if (activeObject && activeObject.type === 'activeSelection') {
23-
// const activeSelection = activeObject;
24-
// const activeObjectLeft = -(activeObject.width / 2);
25-
// activeSelection.forEachObject((item) => {
26-
// item.set({
27-
// left: activeObjectLeft,
28-
// });
29-
// item.setCoords();
30-
// canvas.renderAll();
31-
// });
32-
// }
3321

3422
const activeObject = canvas.getActiveObject();
3523
const selectObjects = canvas.getActiveObjects();
@@ -53,18 +41,6 @@ class GroupAlignPlugin implements IPluginTempl {
5341

5442
right() {
5543
const { canvas } = this;
56-
// const activeObject = canvas.getActiveObject();
57-
// if (activeObject && activeObject.type === 'activeSelection') {
58-
// const activeSelection = activeObject;
59-
// const activeObjectLeft = activeObject.width / 2;
60-
// activeSelection.forEachObject((item) => {
61-
// item.set({
62-
// left: activeObjectLeft - item.width * item.scaleX,
63-
// });
64-
// item.setCoords();
65-
// canvas.renderAll();
66-
// });
67-
// }
6844

6945
const activeObject = canvas.getActiveObject();
7046
const selectObjects = canvas.getActiveObjects();
@@ -87,17 +63,6 @@ class GroupAlignPlugin implements IPluginTempl {
8763

8864
xcenter() {
8965
const { canvas } = this;
90-
// const activeObject = canvas.getActiveObject();
91-
// if (activeObject && activeObject.type === 'activeSelection') {
92-
// const activeSelection = activeObject;
93-
// activeSelection.forEachObject((item) => {
94-
// item.set({
95-
// left: 0 - (item.width * item.scaleX) / 2,
96-
// });
97-
// item.setCoords();
98-
// canvas.renderAll();
99-
// });
100-
// }
10166

10267
const activeObject = canvas.getActiveObject();
10368
const selectObjects = canvas.getActiveObjects();
@@ -120,17 +85,6 @@ class GroupAlignPlugin implements IPluginTempl {
12085

12186
ycenter() {
12287
const { canvas } = this;
123-
// const activeObject = canvas.getActiveObject();
124-
// if (activeObject && activeObject.type === 'activeSelection') {
125-
// const activeSelection = activeObject;
126-
// activeSelection.forEachObject((item) => {
127-
// item.set({
128-
// top: 0 - (item.height * item.scaleY) / 2,
129-
// });
130-
// item.setCoords();
131-
// canvas.renderAll();
132-
// });
133-
// }
13488

13589
const activeObject = canvas.getActiveObject();
13690
const selectObjects = canvas.getActiveObjects();
@@ -153,18 +107,6 @@ class GroupAlignPlugin implements IPluginTempl {
153107

154108
top() {
155109
const { canvas } = this;
156-
// const activeObject = canvas.getActiveObject();
157-
// if (activeObject && activeObject.type === 'activeSelection') {
158-
// const activeSelection = activeObject;
159-
// const activeObjectTop = -(activeObject.height / 2);
160-
// activeSelection.forEachObject((item) => {
161-
// item.set({
162-
// top: activeObjectTop,
163-
// });
164-
// item.setCoords();
165-
// canvas.renderAll();
166-
// });
167-
// }
168110

169111
const activeObject = canvas.getActiveObject();
170112
const selectObjects = canvas.getActiveObjects();
@@ -187,18 +129,6 @@ class GroupAlignPlugin implements IPluginTempl {
187129

188130
bottom() {
189131
const { canvas } = this;
190-
// const activeObject = canvas.getActiveObject();
191-
// if (activeObject && activeObject.type === 'activeSelection') {
192-
// const activeSelection = activeObject;
193-
// const activeObjectTop = activeObject.height / 2;
194-
// activeSelection.forEachObject((item) => {
195-
// item.set({
196-
// top: activeObjectTop - item.height * item.scaleY,
197-
// });
198-
// item.setCoords();
199-
// canvas.renderAll();
200-
// });
201-
// }
202132

203133
const activeObject = canvas.getActiveObject();
204134
const selectObjects = canvas.getActiveObjects();
@@ -221,9 +151,9 @@ class GroupAlignPlugin implements IPluginTempl {
221151

222152
xequation() {
223153
const { canvas } = this;
224-
const activeObject = canvas.getActiveObject();
154+
const activeObject = canvas.getActiveObject() as fabric.ActiveSelection;
225155
// width属性不准确,需要坐标换算
226-
function getItemWidth(item) {
156+
function getItemWidth(item: fabric.Object) {
227157
let x1 = Infinity,
228158
x2 = -Infinity;
229159
for (const key in item.aCoords) {
@@ -241,7 +171,7 @@ class GroupAlignPlugin implements IPluginTempl {
241171
function getAllItemHeight() {
242172
let count = 0;
243173
if (activeObject) {
244-
activeObject.forEachObject((item) => {
174+
activeObject.forEachObject((item: fabric.Object) => {
245175
count += getItemWidth(item);
246176
});
247177
}
@@ -258,7 +188,7 @@ class GroupAlignPlugin implements IPluginTempl {
258188
}
259189

260190
// 获取当前元素之前所有元素的高度
261-
function getItemLeft(i) {
191+
function getItemLeft(i: number) {
262192
if (i === 0) return 0;
263193
let width = 0;
264194
if (activeObject) {
@@ -275,11 +205,11 @@ class GroupAlignPlugin implements IPluginTempl {
275205
activeSelection._objects.sort((a, b) => a.left - b.left);
276206

277207
// 平均间距计算
278-
const itemSpac = spacWidth();
208+
const itemSpac = spacWidth() as number;
279209
// 组原点高度
280210
const yHeight = Number(activeObject.width) / 2;
281211

282-
activeObject.forEachObject((item, i) => {
212+
activeObject.forEachObject((item: fabric.Object, i: number) => {
283213
// 获取当前元素之前所有元素的高度
284214
const preHeight = getItemLeft(i);
285215
// 顶部距离 间距 * 索引 + 之前元素高度 - 原点高度
@@ -290,7 +220,7 @@ class GroupAlignPlugin implements IPluginTempl {
290220

291221
const objecs = canvas.getActiveObjects();
292222
canvas.discardActiveObject();
293-
objecs.forEach((item) => {
223+
objecs.forEach((item: fabric.Object) => {
294224
let x = Infinity;
295225
for (const key in item.aCoords) {
296226
if (item.aCoords[key].x < x) {
@@ -309,9 +239,12 @@ class GroupAlignPlugin implements IPluginTempl {
309239

310240
yequation() {
311241
const { canvas } = this;
312-
const activeObject = canvas.getActiveObject() || { top: 0, height: 0 };
242+
const activeObject = (canvas.getActiveObject() as fabric.ActiveSelection) || {
243+
top: 0,
244+
height: 0,
245+
};
313246
// width属性不准确,需要坐标换算
314-
function getItemHeight(item) {
247+
function getItemHeight(item: fabric.Object) {
315248
let y1 = Infinity,
316249
y2 = -Infinity;
317250
for (const key in item.aCoords) {
@@ -327,7 +260,7 @@ class GroupAlignPlugin implements IPluginTempl {
327260
// 获取所有元素高度
328261
function getAllItemHeight() {
329262
let count = 0;
330-
activeObject.forEachObject((item) => {
263+
activeObject.forEachObject((item: fabric.Object) => {
331264
count += getItemHeight(item);
332265
});
333266
return count;
@@ -340,7 +273,7 @@ class GroupAlignPlugin implements IPluginTempl {
340273
}
341274

342275
// 获取当前元素之前所有元素的高度
343-
function getItemTop(i) {
276+
function getItemTop(i: number) {
344277
if (i === 0) return 0;
345278
let height = 0;
346279
for (let index = 0; index < i; index++) {

packages/core/plugin/LockPlugin.ts

+14-15
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,25 @@
22
* @Author: 秦少卫
33
* @Date: 2024-07-04 14:27:05
44
* @LastEditors: 秦少卫
5-
* @LastEditTime: 2024-07-06 17:49:01
5+
* @LastEditTime: 2024-07-22 10:11:29
66
* @Description: 锁定文件
77
*/
88
import { fabric } from 'fabric';
99
import type Editor from '../Editor';
1010
import { SelectMode } from '../eventType';
1111

12+
enum ItypeKey {
13+
lockMovementX = 'lockMovementX',
14+
lockMovementY = 'lockMovementY',
15+
lockRotation = 'lockRotation',
16+
lockScalingX = 'lockScalingX',
17+
lockScalingY = 'lockScalingY',
18+
}
19+
1220
export default class LockPlugin implements IPluginTempl {
1321
static pluginName = 'LockPlugin';
1422
static apis = ['lock', 'unLock'];
15-
lockAttrs: string[];
16-
constructor(public canvas: fabric.Canvas, public editor: Editor) {
17-
this.lockAttrs = [
18-
'lockMovementX',
19-
'lockMovementY',
20-
'lockRotation',
21-
'lockScalingX',
22-
'lockScalingY',
23-
];
24-
}
23+
constructor(public canvas: fabric.Canvas, public editor: Editor) {}
2524

2625
hookImportAfter() {
2726
this.canvas.forEachObject((obj) => {
@@ -34,27 +33,27 @@ export default class LockPlugin implements IPluginTempl {
3433
}
3534

3635
lock() {
37-
const activeObject = this.canvas.getActiveObject();
36+
const activeObject = this.canvas.getActiveObject() as fabric.Object;
3837
if (activeObject) {
3938
activeObject.hasControls = false;
4039
activeObject.selectable = false;
4140
activeObject.evented = false;
4241
// 修改默认属性
43-
this.lockAttrs.forEach((key) => {
42+
Object.values(ItypeKey).forEach((key: ItypeKey) => {
4443
activeObject[key] = true;
4544
});
4645
this.canvas.discardActiveObject().renderAll();
4746
}
4847
}
4948

5049
unLock() {
51-
const activeObject = this.canvas.getActiveObject();
50+
const activeObject = this.canvas.getActiveObject() as fabric.Object;
5251
if (activeObject) {
5352
activeObject.hasControls = true;
5453
activeObject.selectable = true;
5554
activeObject.evented = true;
5655
// 修改默认属性
57-
this.lockAttrs.forEach((key) => {
56+
Object.values(ItypeKey).forEach((key: ItypeKey) => {
5857
activeObject[key] = false;
5958
});
6059
this.canvas.discardActiveObject().renderAll();

packages/core/plugin/QrCodePlugin.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* @Author: 秦少卫
33
* @Date: 2024-06-06 19:58:26
44
* @LastEditors: 秦少卫
5-
* @LastEditTime: 2024-06-15 09:34:36
5+
* @LastEditTime: 2024-07-22 10:26:59
66
* @Description: 二维码生成工具
77
*/
88

@@ -55,11 +55,11 @@ class QrCodePlugin implements IPluginTempl {
5555
}
5656
}
5757

58-
async _getBase64Str(options: any) {
58+
async _getBase64Str(options: any): Promise<string> {
5959
const qrCode = new QRCodeStyling(options);
6060
const blob = await qrCode.getRawData('png');
6161
if (!blob) return '';
62-
const base64Str = await blobToBase64(blob);
62+
const base64Str = (await blobToBase64(blob)) as string;
6363
return base64Str || '';
6464
}
6565

0 commit comments

Comments
 (0)