goatdee-canvas 0.0.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.
- package/README.md +536 -0
- package/dist/ZHCanvasCore.js +18 -0
- package/dist/ZHCanvasCore.wasm +0 -0
- package/dist/bind/binding.d.ts +2 -0
- package/dist/bind/constant.d.ts +1 -0
- package/dist/bind/core/bitmap-image.d.ts +5 -0
- package/dist/bind/core/matrix.d.ts +45 -0
- package/dist/bind/core/scaler-context.d.ts +29 -0
- package/dist/bind/core/web-mask.d.ts +26 -0
- package/dist/bind/tgfx-module.d.ts +4 -0
- package/dist/bind/tgfx.d.ts +15 -0
- package/dist/bind/types.d.ts +133 -0
- package/dist/bind/utils/canvas.d.ts +8 -0
- package/dist/bind/utils/decorators.d.ts +3 -0
- package/dist/bind/utils/font-family.d.ts +2 -0
- package/dist/bind/utils/measure-text.d.ts +10 -0
- package/dist/bind/utils/type-utils.d.ts +1 -0
- package/dist/bind/utils/ua.d.ts +7 -0
- package/dist/index.cjs +17631 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +1250 -0
- package/dist/index.js +17585 -0
- package/dist/index.js.map +1 -0
- package/dist/src/CanvasOverlay.d.ts +8 -0
- package/dist/src/OverlayItem.d.ts +51 -0
- package/dist/src/canvas-overlay/index.d.ts +9 -0
- package/dist/src/canvas-overlay/utils.d.ts +50 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/listener.d.ts +30 -0
- package/dist/src/manager.d.ts +108 -0
- package/dist/src/services/pasteService.d.ts +4 -0
- package/dist/src/static/cursor.icon.d.ts +6 -0
- package/dist/src/types.d.ts +72 -0
- package/dist/src/utils/clipboard/core.d.ts +31 -0
- package/dist/src/utils/clipboard/index.d.ts +3 -0
- package/dist/src/utils/clipboard/read.d.ts +17 -0
- package/dist/src/utils/clipboard/transform.d.ts +10 -0
- package/dist/src/utils/clipboard.d.ts +1 -0
- package/dist/src/utils/fabricConverter.d.ts +23 -0
- package/dist/src/utils/fontLoader.d.ts +50 -0
- package/dist/src/utils/html2json/converters.d.ts +47 -0
- package/dist/src/utils/html2json/element-helpers.d.ts +60 -0
- package/dist/src/utils/html2json/index.d.ts +16 -0
- package/dist/src/utils/html2json/parsers.d.ts +47 -0
- package/dist/src/utils/html2json/renderers.d.ts +95 -0
- package/dist/src/utils/html2json/types.d.ts +104 -0
- package/dist/src/utils/html2json/utils.d.ts +68 -0
- package/dist/src/utils/imageLoader.d.ts +10 -0
- package/dist/src/utils/imageLoader.example.d.ts +17 -0
- package/dist/src/utils/imageLoader.worker.d.ts +15 -0
- package/dist/src/utils/imageUpload.d.ts +1 -0
- package/dist/src/utils/index.d.ts +7 -0
- package/dist/src/utils/safariCompatibility.d.ts +71 -0
- package/dist/src/utils/safariDataCloneFix.d.ts +32 -0
- package/dist/src/utils/styles.d.ts +4 -0
- package/dist/src/utils/utils.d.ts +23 -0
- package/dist/src/utils/viewState.d.ts +9 -0
- package/dist/wasm/ZHCanvasCore.d.ts +2 -0
- package/package.json +58 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,1250 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 画布支持的元素类型。
|
|
5
|
+
* @category 数据
|
|
6
|
+
*/
|
|
7
|
+
type CanvasElementType = 'textbox' | 'image' | 'circle' | 'rectangle' | 'triangle' | 'group' | 'frame' | 'slide' | 'path';
|
|
8
|
+
/**
|
|
9
|
+
* 线性渐变配置。
|
|
10
|
+
* @category 样式
|
|
11
|
+
*/
|
|
12
|
+
interface CanvasLinearGradient {
|
|
13
|
+
/** 固定值 'linear' */
|
|
14
|
+
type: "linear";
|
|
15
|
+
/** 渐变起止坐标(相对元素宽高的 0–1 比例),x1/y1 为起点,x2/y2 为终点 */
|
|
16
|
+
coords: {
|
|
17
|
+
x1: number;
|
|
18
|
+
y1: number;
|
|
19
|
+
x2: number;
|
|
20
|
+
y2: number;
|
|
21
|
+
};
|
|
22
|
+
/** 色标数组,每项包含 offset(位置 0–1)和 color(颜色字符串如 'rgba(255,0,0,1)') */
|
|
23
|
+
colorStops: {
|
|
24
|
+
offset: number;
|
|
25
|
+
color: string;
|
|
26
|
+
}[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 填充值:纯色字符串(如 '#ff0000'、'rgba(0,0,0,0.5)')或线性渐变对象;null 表示不填充。
|
|
30
|
+
* @category 样式
|
|
31
|
+
*/
|
|
32
|
+
type CanvasFill = string | CanvasLinearGradient | null;
|
|
33
|
+
/**
|
|
34
|
+
* 描边值:与填充格式一致——纯色字符串或线性渐变对象;null 表示不描边。
|
|
35
|
+
* @category 样式
|
|
36
|
+
*/
|
|
37
|
+
type CanvasStroke = string | CanvasLinearGradient | null;
|
|
38
|
+
/**
|
|
39
|
+
* 阴影配置。
|
|
40
|
+
* @category 样式
|
|
41
|
+
*/
|
|
42
|
+
interface CanvasShadow {
|
|
43
|
+
/** 模糊半径 */
|
|
44
|
+
blur: number;
|
|
45
|
+
/** 颜色字符串,如 'rgba(0,0,0,0.5)' */
|
|
46
|
+
color: string;
|
|
47
|
+
/** X 偏移 */
|
|
48
|
+
offsetX: number;
|
|
49
|
+
/** Y 偏移 */
|
|
50
|
+
offsetY: number;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* 画布完整数据,用于 loadFromJSON / exportToJSON。
|
|
54
|
+
* @category 数据
|
|
55
|
+
*/
|
|
56
|
+
interface CanvasData {
|
|
57
|
+
/** 画布宽度 */
|
|
58
|
+
width: number;
|
|
59
|
+
/** 画布高度 */
|
|
60
|
+
height: number;
|
|
61
|
+
/** 缩略图 */
|
|
62
|
+
thumb?: string;
|
|
63
|
+
/** 对象列表 */
|
|
64
|
+
objects: CanvasObjectData[];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 粘贴操作的返回结果。
|
|
68
|
+
* @category 数据
|
|
69
|
+
*/
|
|
70
|
+
interface PasteResult {
|
|
71
|
+
/** 粘贴的元素数量,-1 表示使用了内部粘贴(无法确定具体数量) */
|
|
72
|
+
count: number;
|
|
73
|
+
/** 提示信息,例如不支持的文件类型 */
|
|
74
|
+
message?: string;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* 文本对象。
|
|
78
|
+
* @category 对象类型
|
|
79
|
+
*/
|
|
80
|
+
interface CanvasTextboxObject {
|
|
81
|
+
/** 对象类型标识 */
|
|
82
|
+
type: "textbox";
|
|
83
|
+
/** 唯一 ID。默认 '' */
|
|
84
|
+
id: string;
|
|
85
|
+
/** 对象名称。默认 '' */
|
|
86
|
+
name?: string;
|
|
87
|
+
/** X 坐标。默认 0 */
|
|
88
|
+
left?: number;
|
|
89
|
+
/** Y 坐标。默认 0 */
|
|
90
|
+
top?: number;
|
|
91
|
+
/** 宽度。默认 0 */
|
|
92
|
+
width?: number;
|
|
93
|
+
/** 高度。默认 0 */
|
|
94
|
+
height?: number;
|
|
95
|
+
/** X 缩放。默认 1 */
|
|
96
|
+
scaleX?: number;
|
|
97
|
+
/** Y 缩放。默认 1 */
|
|
98
|
+
scaleY?: number;
|
|
99
|
+
/** 旋转角度(度)。默认 0 */
|
|
100
|
+
angle?: number;
|
|
101
|
+
/** 描边宽度。默认 0 */
|
|
102
|
+
strokeWidth?: number;
|
|
103
|
+
/** 不透明度 0–1。默认 1 */
|
|
104
|
+
opacity?: number;
|
|
105
|
+
/** 是否可见。默认 true */
|
|
106
|
+
visible?: boolean;
|
|
107
|
+
/** 是否锁定。默认 false */
|
|
108
|
+
locked?: boolean;
|
|
109
|
+
/** 锁定水平移动。默认 false */
|
|
110
|
+
lockMovementX?: boolean;
|
|
111
|
+
/** 锁定垂直移动。默认 false */
|
|
112
|
+
lockMovementY?: boolean;
|
|
113
|
+
/** 锁定旋转。默认 false */
|
|
114
|
+
lockRotation?: boolean;
|
|
115
|
+
/** 锁定水平缩放。默认 false */
|
|
116
|
+
lockScalingX?: boolean;
|
|
117
|
+
/** 锁定垂直缩放。默认 false */
|
|
118
|
+
lockScalingY?: boolean;
|
|
119
|
+
/** 锁定等比缩放。默认 true */
|
|
120
|
+
lockUniScaling?: boolean;
|
|
121
|
+
/** 是否可选中。默认 true */
|
|
122
|
+
selectable?: boolean;
|
|
123
|
+
/** 文本内容。默认 '输入文本' */
|
|
124
|
+
text?: string;
|
|
125
|
+
/** 字号。默认 32 */
|
|
126
|
+
fontSize?: number;
|
|
127
|
+
/** 行高,0 表示自动。默认 0 */
|
|
128
|
+
lineHeight?: number;
|
|
129
|
+
/** 字体名称。默认 'SourceHanSansCN-Normal' */
|
|
130
|
+
fontFamily?: string;
|
|
131
|
+
/** 填充(纯色字符串或渐变对象)。默认黑色 */
|
|
132
|
+
fill?: CanvasFill;
|
|
133
|
+
/** 描边(纯色字符串或渐变对象)。默认黑色 */
|
|
134
|
+
stroke?: CanvasStroke;
|
|
135
|
+
/** 阴影。默认 - */
|
|
136
|
+
shadow?: CanvasShadow;
|
|
137
|
+
/** 水平对齐:'left'、'center'、'right'。默认 'left' */
|
|
138
|
+
textAlign?: string;
|
|
139
|
+
/** 字符间距(千分之一 em)。默认 0 */
|
|
140
|
+
charSpacing?: number;
|
|
141
|
+
/** 下划线。默认 false */
|
|
142
|
+
underline?: boolean;
|
|
143
|
+
/** 删除线。默认 false */
|
|
144
|
+
linethrough?: boolean;
|
|
145
|
+
/** 粗体。默认 false */
|
|
146
|
+
bold?: boolean;
|
|
147
|
+
/** 斜体。默认 false */
|
|
148
|
+
italic?: boolean;
|
|
149
|
+
/** 富文本样式(按字符/段落的样式覆盖)。默认 - */
|
|
150
|
+
styles?: unknown;
|
|
151
|
+
/** 是否可编辑。默认 true */
|
|
152
|
+
editable?: boolean;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* 图片对象。
|
|
156
|
+
* @category 对象类型
|
|
157
|
+
*/
|
|
158
|
+
interface CanvasImageObject {
|
|
159
|
+
/** 对象类型标识 */
|
|
160
|
+
type: "image";
|
|
161
|
+
/** 唯一 ID。默认 '' */
|
|
162
|
+
id: string;
|
|
163
|
+
/** 对象名称。默认 '' */
|
|
164
|
+
name?: string;
|
|
165
|
+
/** X 坐标。默认 0 */
|
|
166
|
+
left?: number;
|
|
167
|
+
/** Y 坐标。默认 0 */
|
|
168
|
+
top?: number;
|
|
169
|
+
/** 宽度。默认 0 */
|
|
170
|
+
width?: number;
|
|
171
|
+
/** 高度。默认 0 */
|
|
172
|
+
height?: number;
|
|
173
|
+
/** X 缩放。默认 1 */
|
|
174
|
+
scaleX?: number;
|
|
175
|
+
/** Y 缩放。默认 1 */
|
|
176
|
+
scaleY?: number;
|
|
177
|
+
/** 旋转角度(度)。默认 0 */
|
|
178
|
+
angle?: number;
|
|
179
|
+
/** 描边宽度。默认 0 */
|
|
180
|
+
strokeWidth?: number;
|
|
181
|
+
/** 不透明度 0–1。默认 1 */
|
|
182
|
+
opacity?: number;
|
|
183
|
+
/** 是否可见。默认 true */
|
|
184
|
+
visible?: boolean;
|
|
185
|
+
/** 是否锁定。默认 false */
|
|
186
|
+
locked?: boolean;
|
|
187
|
+
/** 锁定水平移动。默认 false */
|
|
188
|
+
lockMovementX?: boolean;
|
|
189
|
+
/** 锁定垂直移动。默认 false */
|
|
190
|
+
lockMovementY?: boolean;
|
|
191
|
+
/** 锁定旋转。默认 false */
|
|
192
|
+
lockRotation?: boolean;
|
|
193
|
+
/** 锁定水平缩放。默认 false */
|
|
194
|
+
lockScalingX?: boolean;
|
|
195
|
+
/** 锁定垂直缩放。默认 false */
|
|
196
|
+
lockScalingY?: boolean;
|
|
197
|
+
/** 锁定等比缩放。默认 true */
|
|
198
|
+
lockUniScaling?: boolean;
|
|
199
|
+
/** 是否可选中。默认 true */
|
|
200
|
+
selectable?: boolean;
|
|
201
|
+
/** 图片地址。默认 '' */
|
|
202
|
+
src?: string;
|
|
203
|
+
/** 适配方式:`fill`、`contain`、`cover`、`none`、`scale-down`。默认 'fill' */
|
|
204
|
+
objectFit?: string;
|
|
205
|
+
/** 裁切偏移 X。默认 0 */
|
|
206
|
+
cropX?: number;
|
|
207
|
+
/** 裁切偏移 Y。默认 0 */
|
|
208
|
+
cropY?: number;
|
|
209
|
+
/** 是否加载中。默认 false */
|
|
210
|
+
loading?: boolean;
|
|
211
|
+
/** 圆角 X。默认 0 */
|
|
212
|
+
rx?: number;
|
|
213
|
+
/** 圆角 Y。默认 0 */
|
|
214
|
+
ry?: number;
|
|
215
|
+
/** 背景色(纯色字符串或渐变对象)。默认 - */
|
|
216
|
+
backgroundColor?: CanvasFill;
|
|
217
|
+
/** 描边(纯色字符串或渐变对象)。默认 - */
|
|
218
|
+
stroke?: CanvasStroke;
|
|
219
|
+
/** 阴影。默认 - */
|
|
220
|
+
shadow?: CanvasShadow;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* 圆形对象。
|
|
224
|
+
* @category 对象类型
|
|
225
|
+
*/
|
|
226
|
+
interface CanvasCircleObject {
|
|
227
|
+
/** 对象类型标识 */
|
|
228
|
+
type: "circle";
|
|
229
|
+
/** 唯一 ID。默认 '' */
|
|
230
|
+
id: string;
|
|
231
|
+
/** 对象名称。默认 '' */
|
|
232
|
+
name?: string;
|
|
233
|
+
/** X 坐标。默认 0 */
|
|
234
|
+
left?: number;
|
|
235
|
+
/** Y 坐标。默认 0 */
|
|
236
|
+
top?: number;
|
|
237
|
+
/** 宽度(等于 radius × 2)。默认 0 */
|
|
238
|
+
width?: number;
|
|
239
|
+
/** 高度(等于 radius × 2)。默认 0 */
|
|
240
|
+
height?: number;
|
|
241
|
+
/** X 缩放。默认 1 */
|
|
242
|
+
scaleX?: number;
|
|
243
|
+
/** Y 缩放。默认 1 */
|
|
244
|
+
scaleY?: number;
|
|
245
|
+
/** 旋转角度(度)。默认 0 */
|
|
246
|
+
angle?: number;
|
|
247
|
+
/** 描边宽度。默认 0 */
|
|
248
|
+
strokeWidth?: number;
|
|
249
|
+
/** 不透明度 0–1。默认 1 */
|
|
250
|
+
opacity?: number;
|
|
251
|
+
/** 是否可见。默认 true */
|
|
252
|
+
visible?: boolean;
|
|
253
|
+
/** 是否锁定。默认 false */
|
|
254
|
+
locked?: boolean;
|
|
255
|
+
/** 锁定水平移动。默认 false */
|
|
256
|
+
lockMovementX?: boolean;
|
|
257
|
+
/** 锁定垂直移动。默认 false */
|
|
258
|
+
lockMovementY?: boolean;
|
|
259
|
+
/** 锁定旋转。默认 false */
|
|
260
|
+
lockRotation?: boolean;
|
|
261
|
+
/** 锁定水平缩放。默认 false */
|
|
262
|
+
lockScalingX?: boolean;
|
|
263
|
+
/** 锁定垂直缩放。默认 false */
|
|
264
|
+
lockScalingY?: boolean;
|
|
265
|
+
/** 锁定等比缩放。默认 true */
|
|
266
|
+
lockUniScaling?: boolean;
|
|
267
|
+
/** 是否可选中。默认 true */
|
|
268
|
+
selectable?: boolean;
|
|
269
|
+
/** 填充(纯色字符串或渐变对象)。默认 - */
|
|
270
|
+
fill?: CanvasFill;
|
|
271
|
+
/** 描边(纯色字符串或渐变对象)。默认 - */
|
|
272
|
+
stroke?: CanvasStroke;
|
|
273
|
+
/** 阴影。默认 - */
|
|
274
|
+
shadow?: CanvasShadow;
|
|
275
|
+
/** 虚线长度数组,如 \[5, 3\]。默认 [] */
|
|
276
|
+
borderDashArray?: number[];
|
|
277
|
+
/** 半径。默认 50 */
|
|
278
|
+
radius?: number;
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* 矩形对象。
|
|
282
|
+
* @category 对象类型
|
|
283
|
+
*/
|
|
284
|
+
interface CanvasRectangleObject {
|
|
285
|
+
/** 对象类型标识 */
|
|
286
|
+
type: "rectangle";
|
|
287
|
+
/** 唯一 ID。默认 '' */
|
|
288
|
+
id: string;
|
|
289
|
+
/** 对象名称。默认 '' */
|
|
290
|
+
name?: string;
|
|
291
|
+
/** X 坐标。默认 0 */
|
|
292
|
+
left?: number;
|
|
293
|
+
/** Y 坐标。默认 0 */
|
|
294
|
+
top?: number;
|
|
295
|
+
/** 宽度。默认 0 */
|
|
296
|
+
width?: number;
|
|
297
|
+
/** 高度。默认 0 */
|
|
298
|
+
height?: number;
|
|
299
|
+
/** X 缩放。默认 1 */
|
|
300
|
+
scaleX?: number;
|
|
301
|
+
/** Y 缩放。默认 1 */
|
|
302
|
+
scaleY?: number;
|
|
303
|
+
/** 旋转角度(度)。默认 0 */
|
|
304
|
+
angle?: number;
|
|
305
|
+
/** 描边宽度。默认 0 */
|
|
306
|
+
strokeWidth?: number;
|
|
307
|
+
/** 不透明度 0–1。默认 1 */
|
|
308
|
+
opacity?: number;
|
|
309
|
+
/** 是否可见。默认 true */
|
|
310
|
+
visible?: boolean;
|
|
311
|
+
/** 是否锁定。默认 false */
|
|
312
|
+
locked?: boolean;
|
|
313
|
+
/** 锁定水平移动。默认 false */
|
|
314
|
+
lockMovementX?: boolean;
|
|
315
|
+
/** 锁定垂直移动。默认 false */
|
|
316
|
+
lockMovementY?: boolean;
|
|
317
|
+
/** 锁定旋转。默认 false */
|
|
318
|
+
lockRotation?: boolean;
|
|
319
|
+
/** 锁定水平缩放。默认 false */
|
|
320
|
+
lockScalingX?: boolean;
|
|
321
|
+
/** 锁定垂直缩放。默认 false */
|
|
322
|
+
lockScalingY?: boolean;
|
|
323
|
+
/** 锁定等比缩放。默认 false */
|
|
324
|
+
lockUniScaling?: boolean;
|
|
325
|
+
/** 是否可选中。默认 true */
|
|
326
|
+
selectable?: boolean;
|
|
327
|
+
/** 填充(纯色字符串或渐变对象)。默认 - */
|
|
328
|
+
fill?: CanvasFill;
|
|
329
|
+
/** 描边(纯色字符串或渐变对象)。默认 - */
|
|
330
|
+
stroke?: CanvasStroke;
|
|
331
|
+
/** 阴影。默认 - */
|
|
332
|
+
shadow?: CanvasShadow;
|
|
333
|
+
/** 虚线长度数组。默认 [] */
|
|
334
|
+
borderDashArray?: number[];
|
|
335
|
+
/** 圆角 X。默认 0 */
|
|
336
|
+
rx?: number;
|
|
337
|
+
/** 圆角 Y。默认 0 */
|
|
338
|
+
ry?: number;
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* 三角形对象。
|
|
342
|
+
* @category 对象类型
|
|
343
|
+
*/
|
|
344
|
+
interface CanvasTriangleObject {
|
|
345
|
+
/** 对象类型标识 */
|
|
346
|
+
type: "triangle";
|
|
347
|
+
/** 唯一 ID。默认 '' */
|
|
348
|
+
id: string;
|
|
349
|
+
/** 对象名称。默认 '' */
|
|
350
|
+
name?: string;
|
|
351
|
+
/** X 坐标。默认 0 */
|
|
352
|
+
left?: number;
|
|
353
|
+
/** Y 坐标。默认 0 */
|
|
354
|
+
top?: number;
|
|
355
|
+
/** 宽度。默认 0 */
|
|
356
|
+
width?: number;
|
|
357
|
+
/** 高度。默认 0 */
|
|
358
|
+
height?: number;
|
|
359
|
+
/** X 缩放。默认 1 */
|
|
360
|
+
scaleX?: number;
|
|
361
|
+
/** Y 缩放。默认 1 */
|
|
362
|
+
scaleY?: number;
|
|
363
|
+
/** 旋转角度(度)。默认 0 */
|
|
364
|
+
angle?: number;
|
|
365
|
+
/** 描边宽度。默认 0 */
|
|
366
|
+
strokeWidth?: number;
|
|
367
|
+
/** 不透明度 0–1。默认 1 */
|
|
368
|
+
opacity?: number;
|
|
369
|
+
/** 是否可见。默认 true */
|
|
370
|
+
visible?: boolean;
|
|
371
|
+
/** 是否锁定。默认 false */
|
|
372
|
+
locked?: boolean;
|
|
373
|
+
/** 锁定水平移动。默认 false */
|
|
374
|
+
lockMovementX?: boolean;
|
|
375
|
+
/** 锁定垂直移动。默认 false */
|
|
376
|
+
lockMovementY?: boolean;
|
|
377
|
+
/** 锁定旋转。默认 false */
|
|
378
|
+
lockRotation?: boolean;
|
|
379
|
+
/** 锁定水平缩放。默认 false */
|
|
380
|
+
lockScalingX?: boolean;
|
|
381
|
+
/** 锁定垂直缩放。默认 false */
|
|
382
|
+
lockScalingY?: boolean;
|
|
383
|
+
/** 锁定等比缩放。默认 false */
|
|
384
|
+
lockUniScaling?: boolean;
|
|
385
|
+
/** 是否可选中。默认 true */
|
|
386
|
+
selectable?: boolean;
|
|
387
|
+
/** 填充(纯色字符串或渐变对象)。默认 - */
|
|
388
|
+
fill?: CanvasFill;
|
|
389
|
+
/** 描边(纯色字符串或渐变对象)。默认 - */
|
|
390
|
+
stroke?: CanvasStroke;
|
|
391
|
+
/** 阴影。默认 - */
|
|
392
|
+
shadow?: CanvasShadow;
|
|
393
|
+
/** 虚线长度数组。默认 [] */
|
|
394
|
+
borderDashArray?: number[];
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* 组对象(多个对象成组)。
|
|
398
|
+
* @category 对象类型
|
|
399
|
+
*/
|
|
400
|
+
interface CanvasGroupObject {
|
|
401
|
+
/** 对象类型标识 */
|
|
402
|
+
type: "group";
|
|
403
|
+
/** 唯一 ID。默认 '' */
|
|
404
|
+
id: string;
|
|
405
|
+
/** 对象名称。默认 '' */
|
|
406
|
+
name?: string;
|
|
407
|
+
/** X 坐标。默认 0 */
|
|
408
|
+
left?: number;
|
|
409
|
+
/** Y 坐标。默认 0 */
|
|
410
|
+
top?: number;
|
|
411
|
+
/** 宽度。默认 0 */
|
|
412
|
+
width?: number;
|
|
413
|
+
/** 高度。默认 0 */
|
|
414
|
+
height?: number;
|
|
415
|
+
/** X 缩放。默认 1 */
|
|
416
|
+
scaleX?: number;
|
|
417
|
+
/** Y 缩放。默认 1 */
|
|
418
|
+
scaleY?: number;
|
|
419
|
+
/** 旋转角度(度)。默认 0 */
|
|
420
|
+
angle?: number;
|
|
421
|
+
/** 描边宽度。默认 0 */
|
|
422
|
+
strokeWidth?: number;
|
|
423
|
+
/** 不透明度 0–1。默认 1 */
|
|
424
|
+
opacity?: number;
|
|
425
|
+
/** 是否可见。默认 true */
|
|
426
|
+
visible?: boolean;
|
|
427
|
+
/** 是否锁定。默认 false */
|
|
428
|
+
locked?: boolean;
|
|
429
|
+
/** 锁定水平移动。默认 false */
|
|
430
|
+
lockMovementX?: boolean;
|
|
431
|
+
/** 锁定垂直移动。默认 false */
|
|
432
|
+
lockMovementY?: boolean;
|
|
433
|
+
/** 锁定旋转。默认 false */
|
|
434
|
+
lockRotation?: boolean;
|
|
435
|
+
/** 锁定水平缩放。默认 false */
|
|
436
|
+
lockScalingX?: boolean;
|
|
437
|
+
/** 锁定垂直缩放。默认 false */
|
|
438
|
+
lockScalingY?: boolean;
|
|
439
|
+
/** 锁定等比缩放。默认 true */
|
|
440
|
+
lockUniScaling?: boolean;
|
|
441
|
+
/** 是否可选中。默认 true */
|
|
442
|
+
selectable?: boolean;
|
|
443
|
+
/** 子对象列表 */
|
|
444
|
+
objects?: CanvasObjectData[];
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* 画框对象(可包含子元素、裁切内容)。
|
|
448
|
+
* @category 对象类型
|
|
449
|
+
*/
|
|
450
|
+
interface CanvasFrameObject {
|
|
451
|
+
/** 对象类型标识 */
|
|
452
|
+
type: "frame";
|
|
453
|
+
/** 唯一 ID。默认 '' */
|
|
454
|
+
id: string;
|
|
455
|
+
/** 对象名称。默认 '' */
|
|
456
|
+
name?: string;
|
|
457
|
+
/** X 坐标。默认 0 */
|
|
458
|
+
left?: number;
|
|
459
|
+
/** Y 坐标。默认 0 */
|
|
460
|
+
top?: number;
|
|
461
|
+
/** 宽度。默认 0 */
|
|
462
|
+
width?: number;
|
|
463
|
+
/** 高度。默认 0 */
|
|
464
|
+
height?: number;
|
|
465
|
+
/** X 缩放。默认 1 */
|
|
466
|
+
scaleX?: number;
|
|
467
|
+
/** Y 缩放。默认 1 */
|
|
468
|
+
scaleY?: number;
|
|
469
|
+
/** 旋转角度(度)。默认 0 */
|
|
470
|
+
angle?: number;
|
|
471
|
+
/** 描边宽度。默认 0 */
|
|
472
|
+
strokeWidth?: number;
|
|
473
|
+
/** 不透明度 0–1。默认 1 */
|
|
474
|
+
opacity?: number;
|
|
475
|
+
/** 是否可见。默认 true */
|
|
476
|
+
visible?: boolean;
|
|
477
|
+
/** 是否锁定。默认 false */
|
|
478
|
+
locked?: boolean;
|
|
479
|
+
/** 锁定水平移动。默认 false */
|
|
480
|
+
lockMovementX?: boolean;
|
|
481
|
+
/** 锁定垂直移动。默认 false */
|
|
482
|
+
lockMovementY?: boolean;
|
|
483
|
+
/** 锁定旋转。默认 true */
|
|
484
|
+
lockRotation?: boolean;
|
|
485
|
+
/** 锁定水平缩放。默认 false */
|
|
486
|
+
lockScalingX?: boolean;
|
|
487
|
+
/** 锁定垂直缩放。默认 false */
|
|
488
|
+
lockScalingY?: boolean;
|
|
489
|
+
/** 锁定等比缩放。默认 false */
|
|
490
|
+
lockUniScaling?: boolean;
|
|
491
|
+
/** 是否可选中。默认 true */
|
|
492
|
+
selectable?: boolean;
|
|
493
|
+
/** 背景色(纯色字符串或渐变对象)。默认白色 */
|
|
494
|
+
backgroundColor?: CanvasFill;
|
|
495
|
+
/** 描边(纯色字符串或渐变对象)。默认 - */
|
|
496
|
+
stroke?: CanvasStroke;
|
|
497
|
+
/** 背景是否跟随缩放。默认 true */
|
|
498
|
+
autoScaleBg?: boolean;
|
|
499
|
+
/** 是否允许跨层拖入。默认 true */
|
|
500
|
+
crossable?: boolean;
|
|
501
|
+
/** 是否裁切溢出内容。默认 true */
|
|
502
|
+
clipContent?: boolean;
|
|
503
|
+
/** 是否显示名称标签。默认 true */
|
|
504
|
+
showName?: boolean;
|
|
505
|
+
/** 是否显示尺寸标签。默认 true */
|
|
506
|
+
showSize?: boolean;
|
|
507
|
+
/** 子对象列表 */
|
|
508
|
+
objects?: CanvasObjectData[];
|
|
509
|
+
}
|
|
510
|
+
/**
|
|
511
|
+
* 幻灯片容器对象。
|
|
512
|
+
* @category 对象类型
|
|
513
|
+
*/
|
|
514
|
+
interface CanvasSlideObject {
|
|
515
|
+
/** 对象类型标识 */
|
|
516
|
+
type: "slide";
|
|
517
|
+
/** 唯一 ID。默认 '' */
|
|
518
|
+
id: string;
|
|
519
|
+
/** 对象名称。默认 '' */
|
|
520
|
+
name?: string;
|
|
521
|
+
/** X 坐标。默认 0 */
|
|
522
|
+
left?: number;
|
|
523
|
+
/** Y 坐标。默认 0 */
|
|
524
|
+
top?: number;
|
|
525
|
+
/** 宽度。默认 0 */
|
|
526
|
+
width?: number;
|
|
527
|
+
/** 高度。默认 0 */
|
|
528
|
+
height?: number;
|
|
529
|
+
/** X 缩放。默认 1 */
|
|
530
|
+
scaleX?: number;
|
|
531
|
+
/** Y 缩放。默认 1 */
|
|
532
|
+
scaleY?: number;
|
|
533
|
+
/** 旋转角度(度)。默认 0 */
|
|
534
|
+
angle?: number;
|
|
535
|
+
/** 描边宽度。默认 0 */
|
|
536
|
+
strokeWidth?: number;
|
|
537
|
+
/** 不透明度 0–1。默认 1 */
|
|
538
|
+
opacity?: number;
|
|
539
|
+
/** 是否可见。默认 true */
|
|
540
|
+
visible?: boolean;
|
|
541
|
+
/** 是否锁定。默认 false */
|
|
542
|
+
locked?: boolean;
|
|
543
|
+
/** 锁定水平移动。默认 false */
|
|
544
|
+
lockMovementX?: boolean;
|
|
545
|
+
/** 锁定垂直移动。默认 false */
|
|
546
|
+
lockMovementY?: boolean;
|
|
547
|
+
/** 锁定旋转。默认 true */
|
|
548
|
+
lockRotation?: boolean;
|
|
549
|
+
/** 锁定水平缩放。默认 true */
|
|
550
|
+
lockScalingX?: boolean;
|
|
551
|
+
/** 锁定垂直缩放。默认 true */
|
|
552
|
+
lockScalingY?: boolean;
|
|
553
|
+
/** 锁定等比缩放。默认 true */
|
|
554
|
+
lockUniScaling?: boolean;
|
|
555
|
+
/** 是否可选中。默认 true */
|
|
556
|
+
selectable?: boolean;
|
|
557
|
+
/** 背景色(纯色字符串或渐变对象)。默认白色 */
|
|
558
|
+
backgroundColor?: CanvasFill;
|
|
559
|
+
/** 描边(纯色字符串或渐变对象)。默认 - */
|
|
560
|
+
stroke?: CanvasStroke;
|
|
561
|
+
/** 内容区域背景色。默认白色 */
|
|
562
|
+
contentBackgroundColor?: CanvasFill;
|
|
563
|
+
/** 内容区域描边宽度。默认 0 */
|
|
564
|
+
contentStrokeWidth?: number;
|
|
565
|
+
/** 内容区域描边。默认 - */
|
|
566
|
+
contentStroke?: CanvasStroke;
|
|
567
|
+
/** 水平内边距。默认 0 */
|
|
568
|
+
paddingX?: number;
|
|
569
|
+
/** 垂直内边距。默认 0 */
|
|
570
|
+
paddingY?: number;
|
|
571
|
+
/** 圆角 X。默认 0 */
|
|
572
|
+
rx?: number;
|
|
573
|
+
/** 圆角 Y。默认 0 */
|
|
574
|
+
ry?: number;
|
|
575
|
+
/** 是否允许跨层拖入。默认 true */
|
|
576
|
+
crossable?: boolean;
|
|
577
|
+
/** 是否显示名称标签。默认 true */
|
|
578
|
+
showName?: boolean;
|
|
579
|
+
/** 是否显示尺寸标签。默认 true */
|
|
580
|
+
showSize?: boolean;
|
|
581
|
+
/** 子对象列表 */
|
|
582
|
+
objects?: CanvasObjectData[];
|
|
583
|
+
}
|
|
584
|
+
/**
|
|
585
|
+
* 占位对象(内部 overlay 等使用,不对外暴露)。
|
|
586
|
+
* @internal
|
|
587
|
+
*/
|
|
588
|
+
interface CanvasPlaceholderObject {
|
|
589
|
+
/** 对象类型标识 */
|
|
590
|
+
type: "placeholder";
|
|
591
|
+
/** 唯一 ID。默认 '' */
|
|
592
|
+
id: string;
|
|
593
|
+
/** 对象名称。默认 '' */
|
|
594
|
+
name?: string;
|
|
595
|
+
/** X 坐标。默认 0 */
|
|
596
|
+
left?: number;
|
|
597
|
+
/** Y 坐标。默认 0 */
|
|
598
|
+
top?: number;
|
|
599
|
+
/** 宽度。默认 0 */
|
|
600
|
+
width?: number;
|
|
601
|
+
/** 高度。默认 0 */
|
|
602
|
+
height?: number;
|
|
603
|
+
/** 是否参与导出。默认 false */
|
|
604
|
+
export?: boolean;
|
|
605
|
+
/** 是否锁定。默认 false */
|
|
606
|
+
locked?: boolean;
|
|
607
|
+
/** 锁定水平移动。默认 true */
|
|
608
|
+
lockMovementX?: boolean;
|
|
609
|
+
/** 锁定垂直移动。默认 true */
|
|
610
|
+
lockMovementY?: boolean;
|
|
611
|
+
/** 锁定旋转。默认 true */
|
|
612
|
+
lockRotation?: boolean;
|
|
613
|
+
/** 锁定水平缩放。默认 true */
|
|
614
|
+
lockScalingX?: boolean;
|
|
615
|
+
/** 锁定垂直缩放。默认 true */
|
|
616
|
+
lockScalingY?: boolean;
|
|
617
|
+
/** 锁定等比缩放。默认 true */
|
|
618
|
+
lockUniScaling?: boolean;
|
|
619
|
+
/** 是否可选中。默认 false */
|
|
620
|
+
selectable?: boolean;
|
|
621
|
+
/** 是否可见。默认 true */
|
|
622
|
+
visible?: boolean;
|
|
623
|
+
}
|
|
624
|
+
/**
|
|
625
|
+
* 路径(折线/曲线)对象。
|
|
626
|
+
* @category 对象类型
|
|
627
|
+
*/
|
|
628
|
+
interface CanvasPathObject {
|
|
629
|
+
/** 对象类型标识 */
|
|
630
|
+
type: "path";
|
|
631
|
+
/** 唯一 ID。默认 '' */
|
|
632
|
+
id: string;
|
|
633
|
+
/** 对象名称。默认 '' */
|
|
634
|
+
name?: string;
|
|
635
|
+
/** X 坐标。默认 0 */
|
|
636
|
+
left?: number;
|
|
637
|
+
/** Y 坐标。默认 0 */
|
|
638
|
+
top?: number;
|
|
639
|
+
/** 宽度。默认 0 */
|
|
640
|
+
width?: number;
|
|
641
|
+
/** 高度。默认 0 */
|
|
642
|
+
height?: number;
|
|
643
|
+
/** X 缩放。默认 1 */
|
|
644
|
+
scaleX?: number;
|
|
645
|
+
/** Y 缩放。默认 1 */
|
|
646
|
+
scaleY?: number;
|
|
647
|
+
/** 旋转角度(度)。默认 0 */
|
|
648
|
+
angle?: number;
|
|
649
|
+
/** 描边宽度。默认 0 */
|
|
650
|
+
strokeWidth?: number;
|
|
651
|
+
/** 不透明度 0–1。默认 1 */
|
|
652
|
+
opacity?: number;
|
|
653
|
+
/** 是否可见。默认 true */
|
|
654
|
+
visible?: boolean;
|
|
655
|
+
/** 是否锁定。默认 false */
|
|
656
|
+
locked?: boolean;
|
|
657
|
+
/** 锁定水平移动。默认 false */
|
|
658
|
+
lockMovementX?: boolean;
|
|
659
|
+
/** 锁定垂直移动。默认 false */
|
|
660
|
+
lockMovementY?: boolean;
|
|
661
|
+
/** 锁定旋转。默认 false */
|
|
662
|
+
lockRotation?: boolean;
|
|
663
|
+
/** 锁定水平缩放。默认 false */
|
|
664
|
+
lockScalingX?: boolean;
|
|
665
|
+
/** 锁定垂直缩放。默认 false */
|
|
666
|
+
lockScalingY?: boolean;
|
|
667
|
+
/** 锁定等比缩放。默认 true */
|
|
668
|
+
lockUniScaling?: boolean;
|
|
669
|
+
/** 是否可选中。默认 true */
|
|
670
|
+
selectable?: boolean;
|
|
671
|
+
/** 描边(纯色字符串或渐变对象)。默认黑色 */
|
|
672
|
+
stroke?: CanvasStroke;
|
|
673
|
+
/** 路径顶点 \[x, y\][] */
|
|
674
|
+
points?: [number, number][];
|
|
675
|
+
}
|
|
676
|
+
/**
|
|
677
|
+
* grid / line / grid-cell(暂不展开字段)。
|
|
678
|
+
* @internal
|
|
679
|
+
*/
|
|
680
|
+
interface CanvasGridLineCellLoose {
|
|
681
|
+
type: "grid" | "line" | "grid-cell";
|
|
682
|
+
id: string;
|
|
683
|
+
objects?: CanvasObjectData[];
|
|
684
|
+
src?: string;
|
|
685
|
+
[key: string]: unknown;
|
|
686
|
+
}
|
|
687
|
+
/**
|
|
688
|
+
* 画布中单个对象的数据(由 `type` 字段区分具体类型)。
|
|
689
|
+
* @category 数据
|
|
690
|
+
*/
|
|
691
|
+
type CanvasObjectData = CanvasTextboxObject | CanvasImageObject | CanvasCircleObject | CanvasRectangleObject | CanvasTriangleObject | CanvasGroupObject | CanvasFrameObject | CanvasSlideObject | CanvasPlaceholderObject | CanvasPathObject | CanvasGridLineCellLoose;
|
|
692
|
+
/**
|
|
693
|
+
* 画布组件 props。
|
|
694
|
+
* @category 组件
|
|
695
|
+
*/
|
|
696
|
+
interface CanvasProps {
|
|
697
|
+
/**
|
|
698
|
+
* 画布内部事件回调。`action` / `data` 见 {@link CanvasOnActionEventMap}。
|
|
699
|
+
*/
|
|
700
|
+
onAction?: (action: string, data?: unknown) => void;
|
|
701
|
+
/** 画布与 WASM 初始化完成回调 */
|
|
702
|
+
onLoad?: () => void;
|
|
703
|
+
/** 图片上传接口 URL */
|
|
704
|
+
uploadAction?: string;
|
|
705
|
+
/** 图片上传请求头 */
|
|
706
|
+
uploadHeader?: Record<string, string>;
|
|
707
|
+
/**
|
|
708
|
+
* 画布 overlay DOM 插槽(内部使用)。
|
|
709
|
+
* @internal
|
|
710
|
+
*/
|
|
711
|
+
renderOverlay?: () => any;
|
|
712
|
+
}
|
|
713
|
+
/**
|
|
714
|
+
* **`onAction` 的 action 与 data 对照**。
|
|
715
|
+
*
|
|
716
|
+
* 下表为`action`和`data`的有效取值,无载荷时为 `null`。
|
|
717
|
+
*
|
|
718
|
+
* | action | data 说明 |
|
|
719
|
+
* |--------|-----------|
|
|
720
|
+
* | `afterrender` | 每帧绘制结束;无 `data` |
|
|
721
|
+
* | `loaded` | `loadFromJSON` 完成并清空剪贴板后;无 `data` |
|
|
722
|
+
* | `select` | 当前选中对象列表,与 `getActiveObjects()` 相同结构 |
|
|
723
|
+
* | `pan` | 画布偏移 `{ offsetX, offsetY }`(屏幕逻辑坐标) |
|
|
724
|
+
* | `scale` | 当前画布缩放系数 `number` |
|
|
725
|
+
* | `dblclick` | 双击目标对象(多为 textbox)的序列化数据,单对象 |
|
|
726
|
+
* | `add` | 绘制完成后的新建元素 JSON(已转为屏幕坐标) |
|
|
727
|
+
* | `remove` | 被删元素:单个为对象;多选批量删除为对象数组 |
|
|
728
|
+
* | `unmark` | 取消图片标注 `{ id, index }` |
|
|
729
|
+
* | `drop` | 拖拽放置结束;`null` |
|
|
730
|
+
* | `paste` | 粘贴后的对象 JSON 数组 |
|
|
731
|
+
* | `undo` | 是否仍可撤销 `boolean`(`history.canUndo()`) |
|
|
732
|
+
* | `redo` | 是否仍可重做 `boolean` |
|
|
733
|
+
* | `group` | 成组结果对象 JSON;失败时可能含 `message` |
|
|
734
|
+
* | `ungroup` | 取消成组后;一般无 `data` |
|
|
735
|
+
* | `move` | 键盘方向键移动:选中子元素数组;鼠标拖拽结束:当前选中解析后的列表 |
|
|
736
|
+
* | `scale element` | 缩放控制点拖拽过程中:当前选中对象列表 |
|
|
737
|
+
* | `editing` | 文本编辑时文本框图层 JSON(屏幕坐标) |
|
|
738
|
+
* | `mark` | 新增标注:`{ x, y, index, object }`;超限则 `index: -1` 且含 `message` |
|
|
739
|
+
* | `activate mark` / `deactivate mark` | `{ id, index }`(图片 id 与标注序号) |
|
|
740
|
+
* | `click` | 网格单元格点击(内部);含点击相关字段 |
|
|
741
|
+
*
|
|
742
|
+
* @category 组件
|
|
743
|
+
*/
|
|
744
|
+
type CanvasOnActionEventMap = never;
|
|
745
|
+
/**
|
|
746
|
+
* 画布 ref 暴露的方法,与包导出的函数一一对应。
|
|
747
|
+
* @internal
|
|
748
|
+
*/
|
|
749
|
+
interface CanvasRef {
|
|
750
|
+
pan: (deltaX: number, deltaY: number) => void;
|
|
751
|
+
scale: (scale: number, x: number, y: number) => void;
|
|
752
|
+
centerObjects: (ids: string[], duration?: number) => void;
|
|
753
|
+
fitToScreen: (screen?: {
|
|
754
|
+
x: number;
|
|
755
|
+
y: number;
|
|
756
|
+
width: number;
|
|
757
|
+
height: number;
|
|
758
|
+
}) => void;
|
|
759
|
+
worldToCanvas: (x: number, y: number) => {
|
|
760
|
+
x: number;
|
|
761
|
+
y: number;
|
|
762
|
+
} | null;
|
|
763
|
+
canvasToWorld: (x: number, y: number) => {
|
|
764
|
+
x: number;
|
|
765
|
+
y: number;
|
|
766
|
+
} | null;
|
|
767
|
+
getScale: () => number;
|
|
768
|
+
getActiveObjects: () => CanvasObjectData[] | null;
|
|
769
|
+
getObject: (id: string) => CanvasObjectData | null;
|
|
770
|
+
getBounds: () => {
|
|
771
|
+
left: number;
|
|
772
|
+
top: number;
|
|
773
|
+
width: number;
|
|
774
|
+
height: number;
|
|
775
|
+
} | null;
|
|
776
|
+
setObjectProperties: (id: string, properties: Record<string, any>) => Promise<void>;
|
|
777
|
+
registerFonts: (fonts: {
|
|
778
|
+
fontName: string;
|
|
779
|
+
url: string;
|
|
780
|
+
}[]) => Promise<void>;
|
|
781
|
+
switchToCreatingElement: (creating: boolean, type?: CanvasElementType | '', options?: Record<string, any>) => Promise<void>;
|
|
782
|
+
unmark: (id: string, index: number) => void;
|
|
783
|
+
add: (type: CanvasElementType, properties: Record<string, any>) => Promise<string | null>;
|
|
784
|
+
copy: () => Promise<void>;
|
|
785
|
+
paste: (x: number, y: number, clipboardEvent?: ClipboardEvent) => Promise<PasteResult>;
|
|
786
|
+
cut: () => Promise<void>;
|
|
787
|
+
remove: (id?: string) => void;
|
|
788
|
+
select: (ids: string[]) => void;
|
|
789
|
+
canUndo: () => boolean;
|
|
790
|
+
canRedo: () => boolean;
|
|
791
|
+
undo: () => void;
|
|
792
|
+
redo: () => void;
|
|
793
|
+
getParentLayer: (id: string) => string;
|
|
794
|
+
getIndex: (id: string) => number;
|
|
795
|
+
moveUp: (id: string) => void;
|
|
796
|
+
moveDown: (id: string) => void;
|
|
797
|
+
moveTo: (parentId: string, index: number) => void;
|
|
798
|
+
bringToFront: (id: string) => void;
|
|
799
|
+
sendToBack: (id: string) => void;
|
|
800
|
+
canGroup: (ids: string[]) => boolean;
|
|
801
|
+
group: (ids: string[]) => string | null;
|
|
802
|
+
ungroup: (id: string) => void;
|
|
803
|
+
align: (alignment: "left" | "right" | "top" | "bottom" | "center" | "middle") => void;
|
|
804
|
+
arrange: (arrangement: 'horizontal' | 'vertical' | 'auto') => void;
|
|
805
|
+
switchToPan: (isPan: boolean) => void;
|
|
806
|
+
loadFromJSON: (json: CanvasData) => Promise<void>;
|
|
807
|
+
addFabricJSON: (fabricJSON: Record<string, any>, x?: number, y?: number) => Promise<string | null>;
|
|
808
|
+
exportToJSON: () => CanvasData | null;
|
|
809
|
+
exportImage: (type?: string, multiple?: number, quality?: number) => string | string[] | null;
|
|
810
|
+
refreshOverlay?: () => void;
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
/**
|
|
814
|
+
* 画布 React 组件,通过 ref 调用画布方法。
|
|
815
|
+
* @internal 不纳入 API 文档,仅作为组件使用
|
|
816
|
+
*/
|
|
817
|
+
declare const GoatdeeCanvas: React.ForwardRefExoticComponent<CanvasProps & React.RefAttributes<CanvasRef>>;
|
|
818
|
+
|
|
819
|
+
/**
|
|
820
|
+
* 平移画布。
|
|
821
|
+
* @category 画布操作
|
|
822
|
+
* @param deltaX - 水平偏移量(像素),正值向右
|
|
823
|
+
* @param deltaY - 垂直偏移量(像素),正值向下
|
|
824
|
+
*/
|
|
825
|
+
declare const pan: (deltaX: number, deltaY: number) => void;
|
|
826
|
+
/**
|
|
827
|
+
* 缩放画布。
|
|
828
|
+
* @category 画布操作
|
|
829
|
+
* @param scale - 目标缩放倍数
|
|
830
|
+
* @param x - 缩放中心 X(画布坐标)
|
|
831
|
+
* @param y - 缩放中心 Y(画布坐标)
|
|
832
|
+
*/
|
|
833
|
+
declare const scale: (scale: number, x: number, y: number) => void;
|
|
834
|
+
/**
|
|
835
|
+
* 将指定对象居中到视口。
|
|
836
|
+
* @category 画布操作
|
|
837
|
+
* @param ids - 需要居中的对象 ID 数组
|
|
838
|
+
* @param duration - 动画时长(毫秒),默认 0 表示无动画
|
|
839
|
+
*/
|
|
840
|
+
declare const centerObjects: (ids: string[], duration?: number) => void;
|
|
841
|
+
/**
|
|
842
|
+
* 将画布内容自适应到视口。
|
|
843
|
+
* @category 画布操作
|
|
844
|
+
* @param screen - 可选,自定义视口区域 \{ x, y, width, height \};不传则使用当前视口
|
|
845
|
+
*/
|
|
846
|
+
declare const fitToScreen: (screen?: {
|
|
847
|
+
x: number;
|
|
848
|
+
y: number;
|
|
849
|
+
width: number;
|
|
850
|
+
height: number;
|
|
851
|
+
}) => void;
|
|
852
|
+
/**
|
|
853
|
+
* 世界坐标转画布(视口)坐标。
|
|
854
|
+
* @category 画布操作
|
|
855
|
+
* @param x - 世界坐标 X
|
|
856
|
+
* @param y - 世界坐标 Y
|
|
857
|
+
* @returns 画布坐标;失败时返回 null
|
|
858
|
+
*/
|
|
859
|
+
declare const worldToCanvas: (x: number, y: number) => {
|
|
860
|
+
x: number;
|
|
861
|
+
y: number;
|
|
862
|
+
} | null;
|
|
863
|
+
/**
|
|
864
|
+
* 画布(视口)坐标转世界坐标。
|
|
865
|
+
* @category 画布操作
|
|
866
|
+
* @param x - 画布坐标 X
|
|
867
|
+
* @param y - 画布坐标 Y
|
|
868
|
+
* @returns 世界坐标;失败时返回 null
|
|
869
|
+
*/
|
|
870
|
+
declare const canvasToWorld: (x: number, y: number) => {
|
|
871
|
+
x: number;
|
|
872
|
+
y: number;
|
|
873
|
+
} | null;
|
|
874
|
+
/**
|
|
875
|
+
* 获取当前画布缩放比例。
|
|
876
|
+
* @category 画布操作
|
|
877
|
+
* @returns 当前缩放值
|
|
878
|
+
*/
|
|
879
|
+
declare const getScale: () => number;
|
|
880
|
+
/**
|
|
881
|
+
* 获取当前选中的对象列表。
|
|
882
|
+
* @category 对象操作
|
|
883
|
+
* @returns 选中对象数组;无选中时返回 null
|
|
884
|
+
*/
|
|
885
|
+
declare const getActiveObjects: () => CanvasObjectData[] | null;
|
|
886
|
+
/**
|
|
887
|
+
* 根据 ID 获取单个对象的数据。
|
|
888
|
+
* @category 对象操作
|
|
889
|
+
* @param id - 对象 ID
|
|
890
|
+
* @returns 对象数据;未找到或 id 为空时返回 null
|
|
891
|
+
*/
|
|
892
|
+
declare const getObject: (id: string) => CanvasObjectData | null;
|
|
893
|
+
/**
|
|
894
|
+
* 获取当前选中对象的外接矩形。
|
|
895
|
+
* @category 对象操作
|
|
896
|
+
* @returns 选中对象的包围盒;无选中时返回 null
|
|
897
|
+
*/
|
|
898
|
+
declare const getBounds: () => {
|
|
899
|
+
left: number;
|
|
900
|
+
top: number;
|
|
901
|
+
width: number;
|
|
902
|
+
height: number;
|
|
903
|
+
} | null;
|
|
904
|
+
/**
|
|
905
|
+
* 设置指定对象的属性。若包含图片 src,会自动预注册图片资源。
|
|
906
|
+
* @category 对象操作
|
|
907
|
+
* @param id - 对象 ID
|
|
908
|
+
* @param properties - 要设置的属性键值对,字段参考对应的对象类型定义(如 CanvasTextboxObject、CanvasImageObject 等)
|
|
909
|
+
*/
|
|
910
|
+
declare const setObjectProperties: (id: string, properties: Record<string, any>) => Promise<void>;
|
|
911
|
+
/**
|
|
912
|
+
* 注册字体,供画布文本渲染使用。支持 TTF、OTF、WOFF2 格式,自动检测并解码 WOFF2。
|
|
913
|
+
* @category 字体
|
|
914
|
+
* @param fonts - 字体数组,每项包含 fontName(字体名)和 url(字体文件地址)
|
|
915
|
+
*/
|
|
916
|
+
declare const registerFonts: (fonts: {
|
|
917
|
+
fontName: string;
|
|
918
|
+
url: string;
|
|
919
|
+
}[]) => Promise<void>;
|
|
920
|
+
/**
|
|
921
|
+
* 切换「创建元素」模式,开启后点击画布可直接添加指定图形。
|
|
922
|
+
* @category 对象操作
|
|
923
|
+
* @param creating - 是否开启创建模式
|
|
924
|
+
* @param type - 元素类型
|
|
925
|
+
* @param options - 创建时的默认属性,字段参考对应的对象类型定义
|
|
926
|
+
*/
|
|
927
|
+
declare const switchToCreatingElement: (creating: boolean, type?: CanvasElementType | "", options?: Record<string, any>) => Promise<void>;
|
|
928
|
+
/**
|
|
929
|
+
* 取消指定对象在指定索引处的标记。
|
|
930
|
+
* @category 对象操作
|
|
931
|
+
* @param id - 对象 ID
|
|
932
|
+
* @param index - 标记索引
|
|
933
|
+
*/
|
|
934
|
+
declare const unmark: (id: string, index: number) => void;
|
|
935
|
+
/**
|
|
936
|
+
* 向画布添加对象。
|
|
937
|
+
* @category 对象操作
|
|
938
|
+
* @param type - 元素类型
|
|
939
|
+
* @param properties - 对象初始属性,字段参考对应的对象类型定义(如 CanvasTextboxObject、CanvasImageObject 等)
|
|
940
|
+
* @returns 新创建对象的 ID;失败时返回 null
|
|
941
|
+
*/
|
|
942
|
+
declare const add: (type: CanvasElementType, properties: Record<string, any>) => Promise<string | null>;
|
|
943
|
+
/**
|
|
944
|
+
* 删除对象。不传 id 时删除当前选中的对象。
|
|
945
|
+
* @category 对象操作
|
|
946
|
+
* @param id - 对象 ID;默认为空字符串,表示删除当前选中
|
|
947
|
+
*/
|
|
948
|
+
declare const remove: (id?: string) => void;
|
|
949
|
+
/**
|
|
950
|
+
* 选中指定 ID 的对象。
|
|
951
|
+
* @category 对象操作
|
|
952
|
+
* @param ids - 要选中的对象 ID 数组
|
|
953
|
+
*/
|
|
954
|
+
declare const select: (ids: string[]) => void;
|
|
955
|
+
/**
|
|
956
|
+
* 将当前选中对象复制到剪贴板。
|
|
957
|
+
* @category 剪贴板
|
|
958
|
+
*/
|
|
959
|
+
declare const copy: () => Promise<void>;
|
|
960
|
+
/**
|
|
961
|
+
* 在指定位置粘贴剪贴板内容。支持序列化数据、文本、图片等多种格式。
|
|
962
|
+
* @category 剪贴板
|
|
963
|
+
* @param x - 粘贴位置 X(世界坐标)
|
|
964
|
+
* @param y - 粘贴位置 Y(世界坐标)
|
|
965
|
+
* @param clipboardEvent - 可选,浏览器原始 ClipboardEvent,用于读取系统剪贴板
|
|
966
|
+
* @returns 粘贴结果
|
|
967
|
+
*/
|
|
968
|
+
declare const paste: (x: number, y: number, clipboardEvent?: ClipboardEvent) => Promise<PasteResult>;
|
|
969
|
+
/**
|
|
970
|
+
* 剪切当前选中对象(先复制到剪贴板,再删除)。
|
|
971
|
+
* @category 剪贴板
|
|
972
|
+
*/
|
|
973
|
+
declare const cut: () => Promise<void>;
|
|
974
|
+
/**
|
|
975
|
+
* 判断当前是否可撤销。
|
|
976
|
+
* @category 历史
|
|
977
|
+
* @returns true 表示可撤销
|
|
978
|
+
*/
|
|
979
|
+
declare const canUndo: () => boolean;
|
|
980
|
+
/**
|
|
981
|
+
* 判断当前是否可重做。
|
|
982
|
+
* @category 历史
|
|
983
|
+
* @returns true 表示可重做
|
|
984
|
+
*/
|
|
985
|
+
declare const canRedo: () => boolean;
|
|
986
|
+
/**
|
|
987
|
+
* 撤销上一步操作。
|
|
988
|
+
* @category 历史
|
|
989
|
+
*/
|
|
990
|
+
declare const undo: () => void;
|
|
991
|
+
/**
|
|
992
|
+
* 重做上一步被撤销的操作。
|
|
993
|
+
* @category 历史
|
|
994
|
+
*/
|
|
995
|
+
declare const redo: () => void;
|
|
996
|
+
/**
|
|
997
|
+
* 获取对象的父层 ID。
|
|
998
|
+
* @category 层级操作
|
|
999
|
+
* @param id - 对象 ID
|
|
1000
|
+
* @returns 父层 ID;无父层时返回空字符串
|
|
1001
|
+
*/
|
|
1002
|
+
declare const getParentLayer: (id: string) => string;
|
|
1003
|
+
/**
|
|
1004
|
+
* 获取对象在父层中的索引位置。
|
|
1005
|
+
* @category 层级操作
|
|
1006
|
+
* @param id - 对象 ID
|
|
1007
|
+
* @returns 索引位置;未找到时返回 -1
|
|
1008
|
+
*/
|
|
1009
|
+
declare const getIndex: (id: string) => number;
|
|
1010
|
+
/**
|
|
1011
|
+
* 将对象上移一层。
|
|
1012
|
+
* @category 层级操作
|
|
1013
|
+
* @param id - 对象 ID
|
|
1014
|
+
*/
|
|
1015
|
+
declare const moveUp: (id: string) => void;
|
|
1016
|
+
/**
|
|
1017
|
+
* 将对象下移一层。
|
|
1018
|
+
* @category 层级操作
|
|
1019
|
+
* @param id - 对象 ID
|
|
1020
|
+
*/
|
|
1021
|
+
declare const moveDown: (id: string) => void;
|
|
1022
|
+
/**
|
|
1023
|
+
* 将对象移动到指定父层的指定索引位置。
|
|
1024
|
+
* @category 层级操作
|
|
1025
|
+
* @param parentId - 目标父层 ID
|
|
1026
|
+
* @param index - 目标索引,-1 表示移到末尾
|
|
1027
|
+
*/
|
|
1028
|
+
declare const moveTo: (parentId: string, index: number) => void;
|
|
1029
|
+
/**
|
|
1030
|
+
* 将对象置于最顶层。
|
|
1031
|
+
* @category 层级操作
|
|
1032
|
+
* @param id - 对象 ID
|
|
1033
|
+
*/
|
|
1034
|
+
declare const bringToFront: (id: string) => void;
|
|
1035
|
+
/**
|
|
1036
|
+
* 将对象置于最底层。
|
|
1037
|
+
* @category 层级操作
|
|
1038
|
+
* @param id - 对象 ID
|
|
1039
|
+
*/
|
|
1040
|
+
declare const sendToBack: (id: string) => void;
|
|
1041
|
+
/**
|
|
1042
|
+
* 判断指定对象是否可以成组。
|
|
1043
|
+
* @category 组合
|
|
1044
|
+
* @param ids - 对象 ID 数组
|
|
1045
|
+
* @returns true 表示可以成组
|
|
1046
|
+
*/
|
|
1047
|
+
declare const canGroup: (ids: string[]) => boolean;
|
|
1048
|
+
/**
|
|
1049
|
+
* 将指定对象成组。
|
|
1050
|
+
* @category 组合
|
|
1051
|
+
* @param ids - 要成组的对象 ID 数组
|
|
1052
|
+
* @returns 新组的 ID;失败时返回 null
|
|
1053
|
+
*/
|
|
1054
|
+
declare const group: (ids: string[]) => string | null;
|
|
1055
|
+
/**
|
|
1056
|
+
* 解散组,将组内对象还原为独立对象。
|
|
1057
|
+
* @category 组合
|
|
1058
|
+
* @param id - 组对象 ID
|
|
1059
|
+
*/
|
|
1060
|
+
declare const ungroup: (id: string) => void;
|
|
1061
|
+
/**
|
|
1062
|
+
* 对齐当前选中对象。
|
|
1063
|
+
* @category 对齐与排列
|
|
1064
|
+
* @param alignment - 对齐方式(相对当前选中范围)
|
|
1065
|
+
*/
|
|
1066
|
+
declare const align: (alignment: "left" | "right" | "top" | "bottom" | "center" | "middle") => void;
|
|
1067
|
+
/**
|
|
1068
|
+
* 排列当前选中对象(如均匀分布)。
|
|
1069
|
+
* @category 对齐与排列
|
|
1070
|
+
* @param arrangement - 排列方式
|
|
1071
|
+
*/
|
|
1072
|
+
declare const arrange: (arrangement: "horizontal" | "vertical" | "auto") => void;
|
|
1073
|
+
/**
|
|
1074
|
+
* 切换平移模式(拖拽画布而非选择对象)。
|
|
1075
|
+
* @category 画布操作
|
|
1076
|
+
* @param isPan - true 进入平移模式,false 退出
|
|
1077
|
+
*/
|
|
1078
|
+
declare const switchToPan: (isPan: boolean) => void;
|
|
1079
|
+
/**
|
|
1080
|
+
* 从 JSON 加载画布内容(会覆盖当前画布)。自动预注册 JSON 中的图片资源。
|
|
1081
|
+
* @category 数据
|
|
1082
|
+
* @param json - 画布数据,格式为 \{ width, height, objects \}
|
|
1083
|
+
*/
|
|
1084
|
+
declare const loadFromJSON: (json: CanvasData) => Promise<void>;
|
|
1085
|
+
/**
|
|
1086
|
+
* 将 Fabric.js 格式的 JSON 转为画布对象并添加到画布中。
|
|
1087
|
+
* @category 数据
|
|
1088
|
+
* @param fabricJSON - Fabric.js 导出的 JSON 数据
|
|
1089
|
+
* @param x - 放置位置 X,默认 0
|
|
1090
|
+
* @param y - 放置位置 Y,默认 0
|
|
1091
|
+
* @returns 新建 frame 的 ID;失败时返回 null
|
|
1092
|
+
*/
|
|
1093
|
+
declare const addFabricJSON: (fabricJSON: Record<string, any>, x?: number, y?: number) => Promise<string | null>;
|
|
1094
|
+
/**
|
|
1095
|
+
* 导出当前画布为 JSON 数据。
|
|
1096
|
+
* @category 数据
|
|
1097
|
+
* @returns 画布数据;失败时返回 null
|
|
1098
|
+
*/
|
|
1099
|
+
declare const exportToJSON: () => CanvasData | null;
|
|
1100
|
+
/**
|
|
1101
|
+
* 导出图片。选中单图/多图时返回图片 URL 或 URL 数组;否则导出整画布为 base64 等。
|
|
1102
|
+
* @category 数据
|
|
1103
|
+
* @param type - MIME 类型,如 'image/png'
|
|
1104
|
+
* @param multiple - 导出倍率(如 devicePixelRatio),默认 2
|
|
1105
|
+
* @param quality - 质量 0–1,默认 1
|
|
1106
|
+
* @returns 选中图片时返回原始 src;否则返回画布导出的 base64。失败返回 null
|
|
1107
|
+
*/
|
|
1108
|
+
declare const exportImage: (type?: string, multiple?: number, quality?: number) => string | string[] | null;
|
|
1109
|
+
/**
|
|
1110
|
+
* 获取文本对象的选区范围。
|
|
1111
|
+
* @category 对象操作
|
|
1112
|
+
* @param id - 文本对象 ID
|
|
1113
|
+
* @returns 文本选区;无选区时返回 null
|
|
1114
|
+
*/
|
|
1115
|
+
declare const getTextLayerSelection: (id: string) => {
|
|
1116
|
+
start: number;
|
|
1117
|
+
end: number;
|
|
1118
|
+
} | null;
|
|
1119
|
+
|
|
1120
|
+
/**
|
|
1121
|
+
* HTML to EditorJSON Converter - Type Definitions
|
|
1122
|
+
*/
|
|
1123
|
+
interface ColorStop {
|
|
1124
|
+
offset: number;
|
|
1125
|
+
color: string;
|
|
1126
|
+
}
|
|
1127
|
+
interface LinearGradient {
|
|
1128
|
+
type: "linear";
|
|
1129
|
+
coords: {
|
|
1130
|
+
x1: number;
|
|
1131
|
+
y1: number;
|
|
1132
|
+
x2: number;
|
|
1133
|
+
y2: number;
|
|
1134
|
+
};
|
|
1135
|
+
colorStops: ColorStop[];
|
|
1136
|
+
}
|
|
1137
|
+
interface Shadow {
|
|
1138
|
+
blur?: number;
|
|
1139
|
+
color?: string;
|
|
1140
|
+
offsetX?: number;
|
|
1141
|
+
offsetY?: number;
|
|
1142
|
+
}
|
|
1143
|
+
interface CharacterStyle {
|
|
1144
|
+
fill?: string | LinearGradient;
|
|
1145
|
+
fontSize?: number;
|
|
1146
|
+
fontFamily?: string;
|
|
1147
|
+
bold?: boolean;
|
|
1148
|
+
italic?: boolean;
|
|
1149
|
+
underline?: boolean;
|
|
1150
|
+
linethrough?: boolean;
|
|
1151
|
+
charSpacing?: number;
|
|
1152
|
+
stroke?: string;
|
|
1153
|
+
verticalAlign?: 'baseline' | 'super' | 'sub';
|
|
1154
|
+
}
|
|
1155
|
+
interface CommonLayerFields {
|
|
1156
|
+
id: string;
|
|
1157
|
+
name?: string;
|
|
1158
|
+
left: number;
|
|
1159
|
+
top: number;
|
|
1160
|
+
width: number;
|
|
1161
|
+
height: number;
|
|
1162
|
+
scaleX?: number;
|
|
1163
|
+
scaleY?: number;
|
|
1164
|
+
angle?: number;
|
|
1165
|
+
strokeWidth?: number;
|
|
1166
|
+
opacity?: number;
|
|
1167
|
+
visible?: boolean;
|
|
1168
|
+
locked?: boolean;
|
|
1169
|
+
}
|
|
1170
|
+
interface TextLayer extends CommonLayerFields, CharacterStyle {
|
|
1171
|
+
type: "textbox";
|
|
1172
|
+
text: string;
|
|
1173
|
+
lineHeight?: number;
|
|
1174
|
+
shadow?: Shadow;
|
|
1175
|
+
textAlign?: string;
|
|
1176
|
+
styles?: {
|
|
1177
|
+
[lineIndex: string]: {
|
|
1178
|
+
[charIndex: string]: CharacterStyle;
|
|
1179
|
+
};
|
|
1180
|
+
};
|
|
1181
|
+
}
|
|
1182
|
+
interface ImageLayer extends CommonLayerFields {
|
|
1183
|
+
type: "image";
|
|
1184
|
+
src: string;
|
|
1185
|
+
prompt?: string;
|
|
1186
|
+
objectFit?: string;
|
|
1187
|
+
rx?: number;
|
|
1188
|
+
ry?: number;
|
|
1189
|
+
backgroundColor?: string | LinearGradient;
|
|
1190
|
+
stroke?: string;
|
|
1191
|
+
shadow?: Shadow;
|
|
1192
|
+
}
|
|
1193
|
+
interface RectangleLayer extends CommonLayerFields {
|
|
1194
|
+
type: "rectangle";
|
|
1195
|
+
rx?: number;
|
|
1196
|
+
ry?: number;
|
|
1197
|
+
fill?: string | LinearGradient;
|
|
1198
|
+
stroke?: string;
|
|
1199
|
+
shadow?: Shadow;
|
|
1200
|
+
borderDashArray?: number[];
|
|
1201
|
+
}
|
|
1202
|
+
interface CircleLayer extends CommonLayerFields {
|
|
1203
|
+
type: "circle";
|
|
1204
|
+
radius?: number;
|
|
1205
|
+
fill?: string | LinearGradient;
|
|
1206
|
+
stroke?: string;
|
|
1207
|
+
shadow?: Shadow;
|
|
1208
|
+
borderDashArray?: number[];
|
|
1209
|
+
}
|
|
1210
|
+
interface FrameLayer extends CommonLayerFields {
|
|
1211
|
+
type: "frame";
|
|
1212
|
+
backgroundColor?: string | LinearGradient;
|
|
1213
|
+
objects: Layer[];
|
|
1214
|
+
}
|
|
1215
|
+
interface SlideLayer extends CommonLayerFields {
|
|
1216
|
+
type: "slide";
|
|
1217
|
+
paddingX?: number;
|
|
1218
|
+
paddingY?: number;
|
|
1219
|
+
backgroundColor?: string | LinearGradient;
|
|
1220
|
+
stroke?: string;
|
|
1221
|
+
contentBackgroundColor?: string | LinearGradient;
|
|
1222
|
+
contentStrokeWidth?: number;
|
|
1223
|
+
contentStroke?: string;
|
|
1224
|
+
showName?: boolean;
|
|
1225
|
+
showSize?: boolean;
|
|
1226
|
+
objects: Layer[];
|
|
1227
|
+
}
|
|
1228
|
+
interface GroupLayer extends CommonLayerFields {
|
|
1229
|
+
type: "group";
|
|
1230
|
+
objects: Layer[];
|
|
1231
|
+
}
|
|
1232
|
+
type Layer = TextLayer | ImageLayer | RectangleLayer | CircleLayer | FrameLayer | SlideLayer | GroupLayer;
|
|
1233
|
+
|
|
1234
|
+
/**
|
|
1235
|
+
* HTML to EditorJSON Converter
|
|
1236
|
+
*/
|
|
1237
|
+
|
|
1238
|
+
/**
|
|
1239
|
+
* 将 HTML 字符串转换为 FrameLayer 或 SlideLayer(仅支持浏览器环境)。
|
|
1240
|
+
*
|
|
1241
|
+
* 在隐藏 iframe 中加载并执行 HTML(含脚本与动态样式),再按
|
|
1242
|
+
* CSS 绘制顺序解析为 JSON。
|
|
1243
|
+
*
|
|
1244
|
+
* @param html - HTML 字符串
|
|
1245
|
+
* @param containerType - 输出容器类型,默认 "frame"
|
|
1246
|
+
*/
|
|
1247
|
+
declare function html2json(html: string, containerType?: "frame" | "slide"): Promise<FrameLayer | SlideLayer>;
|
|
1248
|
+
|
|
1249
|
+
export { GoatdeeCanvas, add, addFabricJSON, align, arrange, bringToFront, canGroup, canRedo, canUndo, canvasToWorld, centerObjects, copy, cut, exportImage, exportToJSON, fitToScreen, getActiveObjects, getBounds, getIndex, getObject, getParentLayer, getScale, getTextLayerSelection, group, html2json, loadFromJSON, moveDown, moveTo, moveUp, pan, paste, redo, registerFonts, remove, scale, select, sendToBack, setObjectProperties, switchToCreatingElement, switchToPan, undo, ungroup, unmark, worldToCanvas };
|
|
1250
|
+
export type { CanvasCircleObject, CanvasData, CanvasElementType, CanvasFill, CanvasFrameObject, CanvasGroupObject, CanvasImageObject, CanvasLinearGradient, CanvasObjectData, CanvasOnActionEventMap, CanvasPathObject, CanvasProps, CanvasRectangleObject, CanvasRef, CanvasShadow, CanvasSlideObject, CanvasStroke, CanvasTextboxObject, CanvasTriangleObject, PasteResult };
|