fabric-vectr 6.7.12 → 6.7.14
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/dist/index.js +45 -21
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/index.min.mjs +1 -1
- package/dist/index.min.mjs.map +1 -1
- package/dist/index.mjs +45 -21
- package/dist/index.mjs.map +1 -1
- package/dist/index.node.cjs +45 -21
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.mjs +45 -21
- package/dist/index.node.mjs.map +1 -1
- package/dist/package.json.min.mjs +1 -1
- package/dist/package.json.mjs +1 -1
- package/dist/src/Pattern/Pattern.d.ts.map +1 -1
- package/dist/src/Pattern/Pattern.min.mjs +1 -1
- package/dist/src/Pattern/Pattern.min.mjs.map +1 -1
- package/dist/src/Pattern/Pattern.mjs +5 -1
- package/dist/src/Pattern/Pattern.mjs.map +1 -1
- package/dist/src/canvas/StaticCanvas.d.ts.map +1 -1
- package/dist/src/canvas/StaticCanvas.min.mjs +1 -1
- package/dist/src/canvas/StaticCanvas.min.mjs.map +1 -1
- package/dist/src/canvas/StaticCanvas.mjs +15 -12
- package/dist/src/canvas/StaticCanvas.mjs.map +1 -1
- package/dist/src/shapes/Image.d.ts +2 -2
- package/dist/src/shapes/Image.d.ts.map +1 -1
- package/dist/src/shapes/Image.min.mjs +1 -1
- package/dist/src/shapes/Image.min.mjs.map +1 -1
- package/dist/src/shapes/Image.mjs +4 -2
- package/dist/src/shapes/Image.mjs.map +1 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +1 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs +1 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs.map +1 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs +5 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs.map +1 -1
- package/dist/src/util/misc/objectEnlive.d.ts +6 -1
- package/dist/src/util/misc/objectEnlive.d.ts.map +1 -1
- package/dist/src/util/misc/objectEnlive.min.mjs +1 -1
- package/dist/src/util/misc/objectEnlive.min.mjs.map +1 -1
- package/dist/src/util/misc/objectEnlive.mjs +16 -5
- package/dist/src/util/misc/objectEnlive.mjs.map +1 -1
- package/dist-extensions/src/Pattern/Pattern.d.ts.map +1 -1
- package/dist-extensions/src/canvas/StaticCanvas.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Image.d.ts +2 -2
- package/dist-extensions/src/shapes/Image.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +1 -1
- package/dist-extensions/src/util/misc/objectEnlive.d.ts +6 -1
- package/dist-extensions/src/util/misc/objectEnlive.d.ts.map +1 -1
- package/package.json +33 -33
- package/src/Pattern/Pattern.spec.ts +63 -0
- package/src/Pattern/Pattern.ts +3 -1
- package/src/canvas/StaticCanvas.spec.ts +23 -0
- package/src/canvas/StaticCanvas.ts +19 -12
- package/src/shapes/Image.spec.ts +21 -2
- package/src/shapes/Image.ts +24 -12
- package/src/shapes/Object/FabricObjectSVGExportMixin.ts +5 -1
- package/src/shapes/Text/TextSVGExportMixin.spec.ts +16 -0
- package/src/util/misc/objectEnlive.spec.ts +49 -2
- package/src/util/misc/objectEnlive.ts +29 -5
package/dist/index.js
CHANGED
|
@@ -366,7 +366,7 @@
|
|
|
366
366
|
}
|
|
367
367
|
const cache = new Cache();
|
|
368
368
|
|
|
369
|
-
var version = "6.7.
|
|
369
|
+
var version = "6.7.14";
|
|
370
370
|
|
|
371
371
|
// use this syntax so babel plugin see this import here
|
|
372
372
|
const VERSION = version;
|
|
@@ -1814,7 +1814,8 @@
|
|
|
1814
1814
|
const loadImage = function (url) {
|
|
1815
1815
|
let {
|
|
1816
1816
|
signal,
|
|
1817
|
-
crossOrigin = null
|
|
1817
|
+
crossOrigin = null,
|
|
1818
|
+
fallbackToEmptyImage = false
|
|
1818
1819
|
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1819
1820
|
return new Promise(function (resolve, reject) {
|
|
1820
1821
|
if (signal && signal.aborted) {
|
|
@@ -1831,9 +1832,12 @@
|
|
|
1831
1832
|
once: true
|
|
1832
1833
|
});
|
|
1833
1834
|
}
|
|
1834
|
-
const
|
|
1835
|
+
const cleanup = function () {
|
|
1835
1836
|
img.onload = img.onerror = null;
|
|
1836
1837
|
abort && (signal === null || signal === void 0 ? void 0 : signal.removeEventListener('abort', abort));
|
|
1838
|
+
};
|
|
1839
|
+
const done = function () {
|
|
1840
|
+
cleanup();
|
|
1837
1841
|
resolve(img);
|
|
1838
1842
|
};
|
|
1839
1843
|
if (!url) {
|
|
@@ -1842,8 +1846,15 @@
|
|
|
1842
1846
|
}
|
|
1843
1847
|
img.onload = done;
|
|
1844
1848
|
img.onerror = function () {
|
|
1845
|
-
|
|
1846
|
-
|
|
1849
|
+
const failedSrc = img.src;
|
|
1850
|
+
cleanup();
|
|
1851
|
+
if (fallbackToEmptyImage) {
|
|
1852
|
+
log('warn', 'Image failed to load, continuing with an empty image source', failedSrc);
|
|
1853
|
+
img.src = '';
|
|
1854
|
+
resolve(img);
|
|
1855
|
+
return;
|
|
1856
|
+
}
|
|
1857
|
+
reject(new FabricError(`Error loading ${failedSrc}`));
|
|
1847
1858
|
};
|
|
1848
1859
|
crossOrigin && (img.crossOrigin = crossOrigin);
|
|
1849
1860
|
img.src = url;
|
|
@@ -3069,25 +3080,28 @@
|
|
|
3069
3080
|
*/
|
|
3070
3081
|
_createPathForText() {
|
|
3071
3082
|
const pathMarkups = [];
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3083
|
+
const objects = [];
|
|
3084
|
+
this._objects.forEach(function add(object) {
|
|
3085
|
+
objects.push(object);
|
|
3086
|
+
if (isCollection(object)) {
|
|
3087
|
+
object._objects.forEach(add);
|
|
3088
|
+
}
|
|
3089
|
+
});
|
|
3090
|
+
objects.forEach(instance => {
|
|
3078
3091
|
if (instance.excludeFromExport) {
|
|
3079
|
-
|
|
3092
|
+
return;
|
|
3080
3093
|
}
|
|
3081
3094
|
if (!isTextObject(instance) || !instance.path) {
|
|
3082
|
-
|
|
3095
|
+
return;
|
|
3083
3096
|
}
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3097
|
+
const pathId = `TEXTPATH_${instance.id}`;
|
|
3098
|
+
const pathMarkup = instance.path._toSVG();
|
|
3099
|
+
const index = pathMarkup.indexOf('COMMON_PARTS');
|
|
3100
|
+
|
|
3087
3101
|
// 加上id, 和路径偏移
|
|
3088
3102
|
pathMarkup[index] = ['id="' + pathId + '" ', 'transform="translate(' + -instance.path.pathOffset.x + ',' + -instance.path.pathOffset.y + ')" '].join('');
|
|
3089
3103
|
pathMarkups.push(pathMarkup.join(''));
|
|
3090
|
-
}
|
|
3104
|
+
});
|
|
3091
3105
|
return pathMarkups.join('\n');
|
|
3092
3106
|
}
|
|
3093
3107
|
createSVGClipPathMarkup(options) {
|
|
@@ -4046,9 +4060,13 @@
|
|
|
4046
4060
|
patternTransform,
|
|
4047
4061
|
...otherOptions
|
|
4048
4062
|
} = _ref2;
|
|
4063
|
+
const {
|
|
4064
|
+
crossOrigin
|
|
4065
|
+
} = otherOptions;
|
|
4049
4066
|
const img = await loadImage(source, {
|
|
4050
4067
|
...options,
|
|
4051
|
-
crossOrigin
|
|
4068
|
+
crossOrigin,
|
|
4069
|
+
fallbackToEmptyImage: true
|
|
4052
4070
|
});
|
|
4053
4071
|
return new this({
|
|
4054
4072
|
...otherOptions,
|
|
@@ -5036,13 +5054,17 @@
|
|
|
5036
5054
|
commonPieces = [styleInfo, vectorEffect, noStyle ? '' : this.addPaintOrder(), ' ', additionalTransform ? `transform="${additionalTransform}" ` : ''].join('');
|
|
5037
5055
|
|
|
5038
5056
|
// James added shadow 放在上面
|
|
5057
|
+
// 文本等调用方已经通过 withShadow 挂载 filter 时,避免再额外复制一份可见对象,
|
|
5058
|
+
// 但仍然需要输出 filter 定义,否则普通 SVG 会丢失阴影。
|
|
5039
5059
|
if (shadow) {
|
|
5060
|
+
markup.push(shadow.toSVG(this));
|
|
5061
|
+
}
|
|
5062
|
+
if (shadow && !withShadow) {
|
|
5040
5063
|
const styleInfoWithShadow = 'style="' + this.getSvgStyles(false) + '" ';
|
|
5041
5064
|
const commonPiecesWithShadow = [styleInfoWithShadow, vectorEffect, noStyle ? '' : this.addPaintOrder(), ' ', additionalTransform ? 'transform="' + additionalTransform + '" ' : ''].join('');
|
|
5042
5065
|
const objectMarkupCopy = JSON.parse(JSON.stringify(objectMarkup));
|
|
5043
5066
|
objectMarkupCopy[index] = commonPiecesWithShadow;
|
|
5044
5067
|
markup.push(objectMarkupCopy.join(''));
|
|
5045
|
-
markup.push(shadow.toSVG(this));
|
|
5046
5068
|
}
|
|
5047
5069
|
// objectMarkup中是导出主对象(如path)的svg,index下标是style,放在commonPieces
|
|
5048
5070
|
objectMarkup[index] = commonPieces;
|
|
@@ -25950,11 +25972,13 @@
|
|
|
25950
25972
|
} = _ref;
|
|
25951
25973
|
return Promise.all([loadImage(src, {
|
|
25952
25974
|
...options,
|
|
25953
|
-
crossOrigin
|
|
25975
|
+
crossOrigin,
|
|
25976
|
+
fallbackToEmptyImage: true
|
|
25954
25977
|
}), f && enlivenObjects(f, options),
|
|
25955
25978
|
// TODO: redundant - handled by enlivenObjectEnlivables
|
|
25956
25979
|
rf && enlivenObjects([rf], options), enlivenObjectEnlivables(object, options)]).then(_ref2 => {
|
|
25957
|
-
let [el, filters = [],
|
|
25980
|
+
let [el, filters = [], resizeFilters = [], hydratedProps = {}] = _ref2;
|
|
25981
|
+
const [resizeFilter] = resizeFilters;
|
|
25958
25982
|
return new this(el, {
|
|
25959
25983
|
...object,
|
|
25960
25984
|
// TODO: this creates a difference between image creation and restoring from JSON
|