@jieyin/editor-sdk 0.1.0

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.

Potentially problematic release.


This version of @jieyin/editor-sdk might be problematic. Click here for more details.

package/README.md ADDED
@@ -0,0 +1,75 @@
1
+ # Editor SDK
2
+
3
+ ## 模式 A:编辑器内拉取产品(支持切换产品)
4
+ ```vue
5
+ <script setup lang="ts">
6
+ import { Editor } from '@sdk/index'
7
+ import { fetch, fetchBasic, fetchDiecut, fetchDeformation } from '@/api/product'
8
+
9
+ const fetchProductList = async (page: number, pageSize: number) => {
10
+ const res = await fetch(page, pageSize)
11
+ const data = res?.data ?? res
12
+ return {
13
+ rows: data?.rows ?? [],
14
+ total: data?.total ?? 0
15
+ }
16
+ }
17
+
18
+ const fetchProductDetail = async (productId: number | string) => {
19
+ const [basicRes, diecutRes, deformationRes] = await Promise.all([
20
+ fetchBasic(Number(productId)),
21
+ fetchDiecut(Number(productId)),
22
+ fetchDeformation(Number(productId))
23
+ ])
24
+
25
+ return {
26
+ basicInfo: basicRes?.data ?? basicRes,
27
+ diecutData: diecutRes?.data ?? diecutRes,
28
+ deformationData: deformationRes?.data ?? deformationRes
29
+ }
30
+ }
31
+ </script>
32
+
33
+ <template>
34
+ <Editor
35
+ :product-list-api="fetchProductList"
36
+ :product-detail-api="fetchProductDetail"
37
+ :product-list-page-size="8"
38
+ />
39
+ </template>
40
+ ```
41
+
42
+ ## 模式 B:传入单个产品(不显示产品面板)
43
+ ```vue
44
+ <script setup lang="ts">
45
+ import { Editor } from '@sdk/index'
46
+
47
+ const product = {
48
+ id: 1,
49
+ name: '示例产品'
50
+ }
51
+
52
+ const basicInfo = {
53
+ id: 1,
54
+ name: '示例产品',
55
+ sizes: ['1600x1600']
56
+ }
57
+
58
+ const diecutData = {
59
+ data: []
60
+ }
61
+
62
+ const deformationData = {
63
+ data: []
64
+ }
65
+ </script>
66
+
67
+ <template>
68
+ <Editor
69
+ :product="product"
70
+ :basic-info="basicInfo"
71
+ :diecut-data="diecutData"
72
+ :deformation-data="deformationData"
73
+ />
74
+ </template>
75
+ ```
@@ -0,0 +1,90 @@
1
+ import { type PropType } from 'vue';
2
+ type DiecutOption = {
3
+ id: string;
4
+ name: string;
5
+ url?: string;
6
+ };
7
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
8
+ sizeOptions: {
9
+ type: PropType<string[]>;
10
+ default: () => any[];
11
+ };
12
+ selectedSize: {
13
+ type: StringConstructor;
14
+ default: string;
15
+ };
16
+ loadingTemplate: {
17
+ type: BooleanConstructor;
18
+ default: boolean;
19
+ };
20
+ templateError: {
21
+ type: StringConstructor;
22
+ default: string;
23
+ };
24
+ diecutOptions: {
25
+ type: PropType<DiecutOption[]>;
26
+ default: () => any[];
27
+ };
28
+ selectedDiecutId: {
29
+ type: StringConstructor;
30
+ default: string;
31
+ };
32
+ zoom: {
33
+ type: NumberConstructor;
34
+ default: number;
35
+ };
36
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
37
+ "update:selectedSize": (...args: any[]) => void;
38
+ "update:selectedDiecutId": (...args: any[]) => void;
39
+ "canvas-ready": (...args: any[]) => void;
40
+ "zoom-in": (...args: any[]) => void;
41
+ "zoom-out": (...args: any[]) => void;
42
+ "fit-canvas": (...args: any[]) => void;
43
+ "copy-to-diecuts": (...args: any[]) => void;
44
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
45
+ sizeOptions: {
46
+ type: PropType<string[]>;
47
+ default: () => any[];
48
+ };
49
+ selectedSize: {
50
+ type: StringConstructor;
51
+ default: string;
52
+ };
53
+ loadingTemplate: {
54
+ type: BooleanConstructor;
55
+ default: boolean;
56
+ };
57
+ templateError: {
58
+ type: StringConstructor;
59
+ default: string;
60
+ };
61
+ diecutOptions: {
62
+ type: PropType<DiecutOption[]>;
63
+ default: () => any[];
64
+ };
65
+ selectedDiecutId: {
66
+ type: StringConstructor;
67
+ default: string;
68
+ };
69
+ zoom: {
70
+ type: NumberConstructor;
71
+ default: number;
72
+ };
73
+ }>> & Readonly<{
74
+ "onUpdate:selectedSize"?: (...args: any[]) => any;
75
+ "onUpdate:selectedDiecutId"?: (...args: any[]) => any;
76
+ "onCanvas-ready"?: (...args: any[]) => any;
77
+ "onZoom-in"?: (...args: any[]) => any;
78
+ "onZoom-out"?: (...args: any[]) => any;
79
+ "onFit-canvas"?: (...args: any[]) => any;
80
+ "onCopy-to-diecuts"?: (...args: any[]) => any;
81
+ }>, {
82
+ sizeOptions: string[];
83
+ selectedSize: string;
84
+ loadingTemplate: boolean;
85
+ templateError: string;
86
+ diecutOptions: DiecutOption[];
87
+ selectedDiecutId: string;
88
+ zoom: number;
89
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
90
+ export default _default;
@@ -0,0 +1,316 @@
1
+ import type { ProductItem } from '../../../types';
2
+ interface Layer {
3
+ id: string | number;
4
+ name: string;
5
+ object?: any;
6
+ visible?: boolean;
7
+ locked?: boolean;
8
+ }
9
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
10
+ activeTab: {
11
+ type: StringConstructor;
12
+ default: string;
13
+ };
14
+ visibleTabs: {
15
+ type: () => string[];
16
+ default: () => string[];
17
+ };
18
+ showNav: {
19
+ type: BooleanConstructor;
20
+ default: boolean;
21
+ };
22
+ urlInput: {
23
+ type: StringConstructor;
24
+ default: string;
25
+ };
26
+ productItems: {
27
+ type: () => ProductItem[];
28
+ default: () => any[];
29
+ };
30
+ productTotal: {
31
+ type: NumberConstructor;
32
+ default: number;
33
+ };
34
+ productPage: {
35
+ type: NumberConstructor;
36
+ default: number;
37
+ };
38
+ productPageSize: {
39
+ type: NumberConstructor;
40
+ default: number;
41
+ };
42
+ productHasPrev: {
43
+ type: BooleanConstructor;
44
+ default: boolean;
45
+ };
46
+ productHasNext: {
47
+ type: BooleanConstructor;
48
+ default: boolean;
49
+ };
50
+ selectedProductIndex: {
51
+ type: NumberConstructor;
52
+ default: number;
53
+ };
54
+ layers: {
55
+ type: () => Layer[];
56
+ default: () => any[];
57
+ };
58
+ activeLayerId: {
59
+ type: (NumberConstructor | StringConstructor)[];
60
+ default: any;
61
+ };
62
+ showImageTools: {
63
+ type: BooleanConstructor;
64
+ default: boolean;
65
+ };
66
+ imagePatternMode: {
67
+ type: StringConstructor;
68
+ default: string;
69
+ };
70
+ imagePatternScale: {
71
+ type: NumberConstructor;
72
+ default: number;
73
+ };
74
+ imagePatternScaleEnabled: {
75
+ type: BooleanConstructor;
76
+ default: boolean;
77
+ };
78
+ showLayerTools: {
79
+ type: BooleanConstructor;
80
+ default: boolean;
81
+ };
82
+ layerOpacity: {
83
+ type: NumberConstructor;
84
+ default: number;
85
+ };
86
+ showTextTools: {
87
+ type: BooleanConstructor;
88
+ default: boolean;
89
+ };
90
+ textFontFamily: {
91
+ type: StringConstructor;
92
+ default: string;
93
+ };
94
+ textFontSize: {
95
+ type: NumberConstructor;
96
+ default: number;
97
+ };
98
+ textCharSpacing: {
99
+ type: NumberConstructor;
100
+ default: number;
101
+ };
102
+ textLineHeight: {
103
+ type: NumberConstructor;
104
+ default: number;
105
+ };
106
+ textFill: {
107
+ type: StringConstructor;
108
+ default: string;
109
+ };
110
+ textStrokeWidth: {
111
+ type: NumberConstructor;
112
+ default: number;
113
+ };
114
+ textStroke: {
115
+ type: StringConstructor;
116
+ default: string;
117
+ };
118
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
119
+ "add-text": (...args: any[]) => void;
120
+ "add-label": (...args: any[]) => void;
121
+ upload: (...args: any[]) => void;
122
+ "update:activeTab": (...args: any[]) => void;
123
+ "update:urlInput": (...args: any[]) => void;
124
+ "update:selectedProductIndex": (...args: any[]) => void;
125
+ "change-product-page": (...args: any[]) => void;
126
+ "add-rect": (...args: any[]) => void;
127
+ "add-circle": (...args: any[]) => void;
128
+ "remove-selected": (...args: any[]) => void;
129
+ "add-image-url": (...args: any[]) => void;
130
+ "paste-url": (...args: any[]) => void;
131
+ "select-layer": (...args: any[]) => void;
132
+ "apply-image-pattern": (...args: any[]) => void;
133
+ "update-image-pattern-scale": (...args: any[]) => void;
134
+ "move-layer": (...args: any[]) => void;
135
+ "flip-layer": (...args: any[]) => void;
136
+ "rotate-layer": (...args: any[]) => void;
137
+ "center-layer": (...args: any[]) => void;
138
+ "update-layer-opacity": (...args: any[]) => void;
139
+ "update-text-prop": (...args: any[]) => void;
140
+ "align-layer": (...args: any[]) => void;
141
+ "scale-layer": (...args: any[]) => void;
142
+ "duplicate-layer": (...args: any[]) => void;
143
+ "toggle-layer-visibility": (...args: any[]) => void;
144
+ "toggle-layer-lock": (...args: any[]) => void;
145
+ "delete-layer": (...args: any[]) => void;
146
+ "move-layer-by-id": (...args: any[]) => void;
147
+ "duplicate-layer-by-id": (...args: any[]) => void;
148
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
149
+ activeTab: {
150
+ type: StringConstructor;
151
+ default: string;
152
+ };
153
+ visibleTabs: {
154
+ type: () => string[];
155
+ default: () => string[];
156
+ };
157
+ showNav: {
158
+ type: BooleanConstructor;
159
+ default: boolean;
160
+ };
161
+ urlInput: {
162
+ type: StringConstructor;
163
+ default: string;
164
+ };
165
+ productItems: {
166
+ type: () => ProductItem[];
167
+ default: () => any[];
168
+ };
169
+ productTotal: {
170
+ type: NumberConstructor;
171
+ default: number;
172
+ };
173
+ productPage: {
174
+ type: NumberConstructor;
175
+ default: number;
176
+ };
177
+ productPageSize: {
178
+ type: NumberConstructor;
179
+ default: number;
180
+ };
181
+ productHasPrev: {
182
+ type: BooleanConstructor;
183
+ default: boolean;
184
+ };
185
+ productHasNext: {
186
+ type: BooleanConstructor;
187
+ default: boolean;
188
+ };
189
+ selectedProductIndex: {
190
+ type: NumberConstructor;
191
+ default: number;
192
+ };
193
+ layers: {
194
+ type: () => Layer[];
195
+ default: () => any[];
196
+ };
197
+ activeLayerId: {
198
+ type: (NumberConstructor | StringConstructor)[];
199
+ default: any;
200
+ };
201
+ showImageTools: {
202
+ type: BooleanConstructor;
203
+ default: boolean;
204
+ };
205
+ imagePatternMode: {
206
+ type: StringConstructor;
207
+ default: string;
208
+ };
209
+ imagePatternScale: {
210
+ type: NumberConstructor;
211
+ default: number;
212
+ };
213
+ imagePatternScaleEnabled: {
214
+ type: BooleanConstructor;
215
+ default: boolean;
216
+ };
217
+ showLayerTools: {
218
+ type: BooleanConstructor;
219
+ default: boolean;
220
+ };
221
+ layerOpacity: {
222
+ type: NumberConstructor;
223
+ default: number;
224
+ };
225
+ showTextTools: {
226
+ type: BooleanConstructor;
227
+ default: boolean;
228
+ };
229
+ textFontFamily: {
230
+ type: StringConstructor;
231
+ default: string;
232
+ };
233
+ textFontSize: {
234
+ type: NumberConstructor;
235
+ default: number;
236
+ };
237
+ textCharSpacing: {
238
+ type: NumberConstructor;
239
+ default: number;
240
+ };
241
+ textLineHeight: {
242
+ type: NumberConstructor;
243
+ default: number;
244
+ };
245
+ textFill: {
246
+ type: StringConstructor;
247
+ default: string;
248
+ };
249
+ textStrokeWidth: {
250
+ type: NumberConstructor;
251
+ default: number;
252
+ };
253
+ textStroke: {
254
+ type: StringConstructor;
255
+ default: string;
256
+ };
257
+ }>> & Readonly<{
258
+ "onAdd-text"?: (...args: any[]) => any;
259
+ "onAdd-label"?: (...args: any[]) => any;
260
+ onUpload?: (...args: any[]) => any;
261
+ "onUpdate:activeTab"?: (...args: any[]) => any;
262
+ "onUpdate:urlInput"?: (...args: any[]) => any;
263
+ "onUpdate:selectedProductIndex"?: (...args: any[]) => any;
264
+ "onChange-product-page"?: (...args: any[]) => any;
265
+ "onAdd-rect"?: (...args: any[]) => any;
266
+ "onAdd-circle"?: (...args: any[]) => any;
267
+ "onRemove-selected"?: (...args: any[]) => any;
268
+ "onAdd-image-url"?: (...args: any[]) => any;
269
+ "onPaste-url"?: (...args: any[]) => any;
270
+ "onSelect-layer"?: (...args: any[]) => any;
271
+ "onApply-image-pattern"?: (...args: any[]) => any;
272
+ "onUpdate-image-pattern-scale"?: (...args: any[]) => any;
273
+ "onMove-layer"?: (...args: any[]) => any;
274
+ "onFlip-layer"?: (...args: any[]) => any;
275
+ "onRotate-layer"?: (...args: any[]) => any;
276
+ "onCenter-layer"?: (...args: any[]) => any;
277
+ "onUpdate-layer-opacity"?: (...args: any[]) => any;
278
+ "onUpdate-text-prop"?: (...args: any[]) => any;
279
+ "onAlign-layer"?: (...args: any[]) => any;
280
+ "onScale-layer"?: (...args: any[]) => any;
281
+ "onDuplicate-layer"?: (...args: any[]) => any;
282
+ "onToggle-layer-visibility"?: (...args: any[]) => any;
283
+ "onToggle-layer-lock"?: (...args: any[]) => any;
284
+ "onDelete-layer"?: (...args: any[]) => any;
285
+ "onMove-layer-by-id"?: (...args: any[]) => any;
286
+ "onDuplicate-layer-by-id"?: (...args: any[]) => any;
287
+ }>, {
288
+ activeTab: string;
289
+ visibleTabs: string[];
290
+ showNav: boolean;
291
+ urlInput: string;
292
+ productItems: ProductItem[];
293
+ productTotal: number;
294
+ productPage: number;
295
+ productPageSize: number;
296
+ productHasPrev: boolean;
297
+ productHasNext: boolean;
298
+ selectedProductIndex: number;
299
+ layers: Layer[];
300
+ activeLayerId: string | number;
301
+ showImageTools: boolean;
302
+ imagePatternMode: string;
303
+ imagePatternScale: number;
304
+ imagePatternScaleEnabled: boolean;
305
+ showLayerTools: boolean;
306
+ layerOpacity: number;
307
+ showTextTools: boolean;
308
+ textFontFamily: string;
309
+ textFontSize: number;
310
+ textCharSpacing: number;
311
+ textLineHeight: number;
312
+ textFill: string;
313
+ textStrokeWidth: number;
314
+ textStroke: string;
315
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
316
+ export default _default;
@@ -0,0 +1,37 @@
1
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
2
+ productName: {
3
+ type: StringConstructor;
4
+ default: string;
5
+ };
6
+ showGrid: {
7
+ type: BooleanConstructor;
8
+ default: boolean;
9
+ };
10
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ "add-text": (...args: any[]) => void;
12
+ "add-label": (...args: any[]) => void;
13
+ "toggle-grid": (...args: any[]) => void;
14
+ "clear-canvas": (...args: any[]) => void;
15
+ "download-png": (...args: any[]) => void;
16
+ upload: (...args: any[]) => void;
17
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
18
+ productName: {
19
+ type: StringConstructor;
20
+ default: string;
21
+ };
22
+ showGrid: {
23
+ type: BooleanConstructor;
24
+ default: boolean;
25
+ };
26
+ }>> & Readonly<{
27
+ "onAdd-text"?: (...args: any[]) => any;
28
+ "onAdd-label"?: (...args: any[]) => any;
29
+ "onToggle-grid"?: (...args: any[]) => any;
30
+ "onClear-canvas"?: (...args: any[]) => any;
31
+ "onDownload-png"?: (...args: any[]) => any;
32
+ onUpload?: (...args: any[]) => any;
33
+ }>, {
34
+ productName: string;
35
+ showGrid: boolean;
36
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
37
+ export default _default;
@@ -0,0 +1,67 @@
1
+ import { type PropType } from 'vue';
2
+ import { type IRenderByJson } from '../../../utils/renderService';
3
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
4
+ renderData: {
5
+ type: PropType<IRenderByJson | null>;
6
+ default: any;
7
+ };
8
+ previewTitle: {
9
+ type: StringConstructor;
10
+ default: string;
11
+ };
12
+ templateIndex: {
13
+ type: NumberConstructor;
14
+ default: number;
15
+ };
16
+ templateTotal: {
17
+ type: NumberConstructor;
18
+ default: number;
19
+ };
20
+ getRenderDataForIndex: {
21
+ type: PropType<(index: number) => Promise<IRenderByJson | null>>;
22
+ default: any;
23
+ };
24
+ getAllDiecutFabricData: {
25
+ type: PropType<() => Promise<Record<string, unknown>>>;
26
+ default: any;
27
+ };
28
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
29
+ "prev-template": (...args: any[]) => void;
30
+ "next-template": (...args: any[]) => void;
31
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
32
+ renderData: {
33
+ type: PropType<IRenderByJson | null>;
34
+ default: any;
35
+ };
36
+ previewTitle: {
37
+ type: StringConstructor;
38
+ default: string;
39
+ };
40
+ templateIndex: {
41
+ type: NumberConstructor;
42
+ default: number;
43
+ };
44
+ templateTotal: {
45
+ type: NumberConstructor;
46
+ default: number;
47
+ };
48
+ getRenderDataForIndex: {
49
+ type: PropType<(index: number) => Promise<IRenderByJson | null>>;
50
+ default: any;
51
+ };
52
+ getAllDiecutFabricData: {
53
+ type: PropType<() => Promise<Record<string, unknown>>>;
54
+ default: any;
55
+ };
56
+ }>> & Readonly<{
57
+ "onPrev-template"?: (...args: any[]) => any;
58
+ "onNext-template"?: (...args: any[]) => any;
59
+ }>, {
60
+ renderData: IRenderByJson;
61
+ previewTitle: string;
62
+ templateIndex: number;
63
+ templateTotal: number;
64
+ getRenderDataForIndex: (index: number) => Promise<IRenderByJson | null>;
65
+ getAllDiecutFabricData: () => Promise<Record<string, unknown>>;
66
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
67
+ export default _default;
@@ -0,0 +1,35 @@
1
+ import type { PropType } from 'vue';
2
+ type TemplateModeOption = {
3
+ type: string;
4
+ label: string;
5
+ size?: string;
6
+ };
7
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
8
+ templateModeOptions: {
9
+ type: PropType<TemplateModeOption[]>;
10
+ default: () => any[];
11
+ };
12
+ selectedMode: {
13
+ type: StringConstructor;
14
+ default: string;
15
+ };
16
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
17
+ close: (...args: any[]) => void;
18
+ "update:selected-mode": (...args: any[]) => void;
19
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
20
+ templateModeOptions: {
21
+ type: PropType<TemplateModeOption[]>;
22
+ default: () => any[];
23
+ };
24
+ selectedMode: {
25
+ type: StringConstructor;
26
+ default: string;
27
+ };
28
+ }>> & Readonly<{
29
+ onClose?: (...args: any[]) => any;
30
+ "onUpdate:selected-mode"?: (...args: any[]) => any;
31
+ }>, {
32
+ templateModeOptions: TemplateModeOption[];
33
+ selectedMode: string;
34
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
35
+ export default _default;
@@ -0,0 +1,21 @@
1
+ import type { ProductItem, BasicInfo, DiecutResponse, DeformationResponse, EditorOptions, ProductListApi, ProductDetailApi } from '../../types';
2
+ import './editor.css';
3
+ type EditorProps = {
4
+ product?: ProductItem | null;
5
+ basicInfo?: BasicInfo | null;
6
+ diecutData?: DiecutResponse | null;
7
+ deformationData?: DeformationResponse | null;
8
+ options?: EditorOptions;
9
+ productListApi?: ProductListApi;
10
+ productDetailApi?: ProductDetailApi;
11
+ productListPageSize?: number;
12
+ productListInitialPage?: number;
13
+ };
14
+ declare const _default: import("vue").DefineComponent<EditorProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<EditorProps> & Readonly<{}>, {
15
+ product: ProductItem | null;
16
+ basicInfo: BasicInfo | null;
17
+ diecutData: DiecutResponse | null;
18
+ deformationData: DeformationResponse | null;
19
+ options: EditorOptions;
20
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
21
+ export default _default;
@@ -0,0 +1,14 @@
1
+ type CopyDiecutsWorkerRequest = {
2
+ id: number;
3
+ sourceObjects: any[];
4
+ targetJsonMap: Record<string, any>;
5
+ objectIndex: number;
6
+ };
7
+ declare const cloneForCopy: (obj: any, startId: number) => {
8
+ cloned: any;
9
+ nextId: number;
10
+ };
11
+ declare const processCopy: (payload: CopyDiecutsWorkerRequest) => {
12
+ updates: Record<string, any>;
13
+ nextObjectIndex: number;
14
+ };
@@ -0,0 +1,13 @@
1
+ type MaskWorkerRequest = {
2
+ id: number;
3
+ baseBlob: Blob;
4
+ maskBlob: Blob;
5
+ maskWidth: number;
6
+ maskHeight: number;
7
+ left: number;
8
+ top: number;
9
+ canvasWidth: number;
10
+ canvasHeight: number;
11
+ };
12
+ declare const loadBitmap: (blob: Blob) => Promise<ImageBitmap>;
13
+ declare const cropAndMask: (payload: MaskWorkerRequest) => Promise<Blob>;
@@ -0,0 +1 @@
1
+ export {};