customized-fabric 1.3.0 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/ClipartObject/index.d.ts +2 -2
- package/lib/ClipartObject/index.js +22 -19
- package/lib/ClipartObject/interfaces.d.ts +1 -1
- package/lib/ImagePlaceholderObject/index.d.ts +1 -0
- package/lib/ImagePlaceholderObject/index.js +3 -3
- package/lib/ImagePlaceholderObject/interfaces.d.ts +2 -1
- package/lib/TextInputObject/index.js +8 -6
- package/lib/TextInputObject/interfaces.d.ts +1 -1
- package/lib/utils/index.d.ts +1 -1
- package/lib/utils/index.js +12 -6
- package/package.json +1 -1
@@ -28,12 +28,12 @@ export default class Clipart extends fabric.Group {
|
|
28
28
|
clipartOptionId?: number;
|
29
29
|
clipartUrl?: string;
|
30
30
|
imageObject?: fabric.Image;
|
31
|
-
|
32
|
-
loadImageFromUrl?: (imageUrl: string) => void;
|
31
|
+
loadImage?: (imageFile: File | string) => Promise<void>;
|
33
32
|
getSettings?: (attribute: string) => any;
|
34
33
|
setSizes?: (options: {
|
35
34
|
width?: number;
|
36
35
|
height?: number;
|
37
36
|
}) => void;
|
37
|
+
loadCustomizedClipart?: (clipartUrl: string) => Promise<fabric.Image>;
|
38
38
|
constructor(options?: IClipartOptions);
|
39
39
|
}
|
@@ -47,28 +47,17 @@ const ClipartClass = fabric_1.fabric.util.createClass(fabric_1.fabric.Group, {
|
|
47
47
|
layerId: options?.personalizeId ?? options?.layerId,
|
48
48
|
objectCaching: false,
|
49
49
|
});
|
50
|
-
if (options?.
|
51
|
-
this.loadImageFromUrl(options.clipartUrl);
|
52
|
-
}
|
53
|
-
if (options?.clipartFile) {
|
54
|
-
this.loadImageFromFile(options.clipartFile);
|
55
|
-
}
|
56
|
-
if (options?.hideStroke) {
|
50
|
+
if (options?.isOriginal) {
|
57
51
|
this.rectObject.set({ strokeWidth: 0 });
|
58
52
|
}
|
53
|
+
else {
|
54
|
+
if (options?.clipartFile || options?.clipartUrl) {
|
55
|
+
this.loadImage(options?.clipartFile ?? options.clipartUrl);
|
56
|
+
}
|
57
|
+
}
|
59
58
|
},
|
60
|
-
|
61
|
-
|
62
|
-
this.loadImage(loadedImage);
|
63
|
-
}, {
|
64
|
-
crossOrigin: "anonymous",
|
65
|
-
});
|
66
|
-
},
|
67
|
-
loadImageFromFile: async function (imageFile) {
|
68
|
-
const loadedImage = await (0, utils_1.loadImageFromFile)(imageFile);
|
69
|
-
this.loadImage(loadedImage);
|
70
|
-
},
|
71
|
-
loadImage: function (image) {
|
59
|
+
loadImage: async function (imageInput) {
|
60
|
+
const image = await (0, utils_1.loadImage)(imageInput);
|
72
61
|
if (image.width && image.height) {
|
73
62
|
image.set({
|
74
63
|
originX: "center",
|
@@ -119,6 +108,20 @@ const ClipartClass = fabric_1.fabric.util.createClass(fabric_1.fabric.Group, {
|
|
119
108
|
this.set(attributes);
|
120
109
|
this.rectObject.set(attributes);
|
121
110
|
},
|
111
|
+
loadCustomizedClipart: async function (clipartUrl) {
|
112
|
+
const image = await (0, utils_1.loadImageFromUrl)(clipartUrl);
|
113
|
+
if (image.width && image.height) {
|
114
|
+
image.scaleToWidth(this.width);
|
115
|
+
image.set({
|
116
|
+
originX: "center",
|
117
|
+
originY: "center",
|
118
|
+
top: this.top,
|
119
|
+
left: this.left,
|
120
|
+
angle: this.angle,
|
121
|
+
});
|
122
|
+
return image;
|
123
|
+
}
|
124
|
+
},
|
122
125
|
});
|
123
126
|
const toClipartObject = (clipartObject) => {
|
124
127
|
return {
|
@@ -35,12 +35,12 @@ const ImagePlaceholderClass = fabric_1.fabric.util.createClass(fabric_1.fabric.G
|
|
35
35
|
if (options?.imageFile) {
|
36
36
|
this.loadImage(options?.imageFile);
|
37
37
|
}
|
38
|
-
if (options?.
|
38
|
+
if (options?.isOriginal) {
|
39
39
|
this.rectObject.set({ strokeWidth: 0 });
|
40
40
|
}
|
41
41
|
else {
|
42
|
-
if (options?.maskUrl) {
|
43
|
-
this.loadMask(options?.maskUrl);
|
42
|
+
if (options?.maskFile || options?.maskUrl) {
|
43
|
+
this.loadMask(options?.maskFile ?? options?.maskUrl);
|
44
44
|
}
|
45
45
|
}
|
46
46
|
},
|
@@ -41,8 +41,9 @@ export interface IImagePlaceholderOptions extends fabric.IGroupOptions {
|
|
41
41
|
personalizeId?: number;
|
42
42
|
layerId: number;
|
43
43
|
imageFile?: File;
|
44
|
-
|
44
|
+
isOriginal?: boolean;
|
45
45
|
isAdditional?: boolean;
|
46
46
|
image?: IImageOptions;
|
47
47
|
maskUrl?: string;
|
48
|
+
maskFile?: File;
|
48
49
|
}
|
@@ -55,14 +55,16 @@ const TextInputClass = fabric_1.fabric.util.createClass(fabric_1.fabric.Group, {
|
|
55
55
|
this.textObject.set({
|
56
56
|
width: this.width,
|
57
57
|
});
|
58
|
-
if (options?.
|
59
|
-
(0, utils_1.loadFontFromUrl)(options?.fontUrl, text?.fontFamily ?? "").then(() => {
|
60
|
-
this.canvas?.renderAll?.();
|
61
|
-
});
|
62
|
-
}
|
63
|
-
if (options?.hideStroke) {
|
58
|
+
if (options?.isOriginal) {
|
64
59
|
this.rectObject.set({ strokeWidth: 0 });
|
65
60
|
}
|
61
|
+
else {
|
62
|
+
if (options?.fontUrl) {
|
63
|
+
(0, utils_1.loadFontFromUrl)(options?.fontUrl, text?.fontFamily ?? "").then(() => {
|
64
|
+
this.canvas?.renderAll?.();
|
65
|
+
});
|
66
|
+
}
|
67
|
+
}
|
66
68
|
},
|
67
69
|
autoChangeFontSize: function (changeSpeed) {
|
68
70
|
if (this.width <= this.textObject.__lineWidths ||
|
package/lib/utils/index.d.ts
CHANGED
@@ -14,5 +14,5 @@ export declare const getObject: (object: any, options?: {
|
|
14
14
|
}) => Clipart | ImagePlaceholder | TextInput | undefined;
|
15
15
|
export declare const asyncGetObject: (object: any, options?: {
|
16
16
|
isOriginal?: boolean;
|
17
|
-
}) => Promise<Clipart | ImagePlaceholder | TextInput | undefined>;
|
17
|
+
}) => Promise<fabric.Image | Clipart | ImagePlaceholder | TextInput | undefined>;
|
18
18
|
export default fabric;
|
package/lib/utils/index.js
CHANGED
@@ -114,21 +114,21 @@ const getObject = (object, options) => {
|
|
114
114
|
case constants_1.OBJECT_TYPES.textInput: {
|
115
115
|
const textInputObject = new TextInputObject_1.default({
|
116
116
|
...object,
|
117
|
-
|
117
|
+
isOriginal: options?.isOriginal,
|
118
118
|
});
|
119
119
|
return textInputObject;
|
120
120
|
}
|
121
121
|
case constants_1.OBJECT_TYPES.clipart: {
|
122
122
|
const clipartObject = new ClipartObject_1.default({
|
123
123
|
...object,
|
124
|
-
|
124
|
+
isOriginal: options?.isOriginal,
|
125
125
|
});
|
126
126
|
return clipartObject;
|
127
127
|
}
|
128
128
|
case constants_1.OBJECT_TYPES.imagePlaceHolder: {
|
129
129
|
const imagePlaceHolderObject = new ImagePlaceholderObject_1.default({
|
130
130
|
...object,
|
131
|
-
|
131
|
+
isOriginal: options?.isOriginal,
|
132
132
|
});
|
133
133
|
return imagePlaceHolderObject;
|
134
134
|
}
|
@@ -142,21 +142,27 @@ const asyncGetObject = async (object, options) => {
|
|
142
142
|
case constants_1.OBJECT_TYPES.textInput: {
|
143
143
|
const textInputObject = new TextInputObject_1.default({
|
144
144
|
...object,
|
145
|
-
|
145
|
+
isOriginal: options?.isOriginal,
|
146
146
|
});
|
147
147
|
return textInputObject;
|
148
148
|
}
|
149
149
|
case constants_1.OBJECT_TYPES.clipart: {
|
150
150
|
const clipartObject = new ClipartObject_1.default({
|
151
151
|
...object,
|
152
|
-
|
152
|
+
isOriginal: options?.isOriginal,
|
153
153
|
});
|
154
|
+
if (object?.clipartUrl) {
|
155
|
+
const clipart = await clipartObject?.loadCustomizedClipart?.(object?.clipartUrl);
|
156
|
+
if (clipart) {
|
157
|
+
return clipart;
|
158
|
+
}
|
159
|
+
}
|
154
160
|
return clipartObject;
|
155
161
|
}
|
156
162
|
case constants_1.OBJECT_TYPES.imagePlaceHolder: {
|
157
163
|
const imagePlaceHolderObject = new ImagePlaceholderObject_1.default({
|
158
164
|
...object,
|
159
|
-
|
165
|
+
isOriginal: options?.isOriginal,
|
160
166
|
});
|
161
167
|
if (object?.image) {
|
162
168
|
const image = await imagePlaceHolderObject?.loadCustomizedImage?.(object?.image);
|