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.mjs
CHANGED
|
@@ -360,7 +360,7 @@ class Cache {
|
|
|
360
360
|
}
|
|
361
361
|
const cache = new Cache();
|
|
362
362
|
|
|
363
|
-
var version = "6.7.
|
|
363
|
+
var version = "6.7.14";
|
|
364
364
|
|
|
365
365
|
// use this syntax so babel plugin see this import here
|
|
366
366
|
const VERSION = version;
|
|
@@ -1808,7 +1808,8 @@ const composeMatrix = options => {
|
|
|
1808
1808
|
const loadImage = function (url) {
|
|
1809
1809
|
let {
|
|
1810
1810
|
signal,
|
|
1811
|
-
crossOrigin = null
|
|
1811
|
+
crossOrigin = null,
|
|
1812
|
+
fallbackToEmptyImage = false
|
|
1812
1813
|
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1813
1814
|
return new Promise(function (resolve, reject) {
|
|
1814
1815
|
if (signal && signal.aborted) {
|
|
@@ -1825,9 +1826,12 @@ const loadImage = function (url) {
|
|
|
1825
1826
|
once: true
|
|
1826
1827
|
});
|
|
1827
1828
|
}
|
|
1828
|
-
const
|
|
1829
|
+
const cleanup = function () {
|
|
1829
1830
|
img.onload = img.onerror = null;
|
|
1830
1831
|
abort && (signal === null || signal === void 0 ? void 0 : signal.removeEventListener('abort', abort));
|
|
1832
|
+
};
|
|
1833
|
+
const done = function () {
|
|
1834
|
+
cleanup();
|
|
1831
1835
|
resolve(img);
|
|
1832
1836
|
};
|
|
1833
1837
|
if (!url) {
|
|
@@ -1836,8 +1840,15 @@ const loadImage = function (url) {
|
|
|
1836
1840
|
}
|
|
1837
1841
|
img.onload = done;
|
|
1838
1842
|
img.onerror = function () {
|
|
1839
|
-
|
|
1840
|
-
|
|
1843
|
+
const failedSrc = img.src;
|
|
1844
|
+
cleanup();
|
|
1845
|
+
if (fallbackToEmptyImage) {
|
|
1846
|
+
log('warn', 'Image failed to load, continuing with an empty image source', failedSrc);
|
|
1847
|
+
img.src = '';
|
|
1848
|
+
resolve(img);
|
|
1849
|
+
return;
|
|
1850
|
+
}
|
|
1851
|
+
reject(new FabricError(`Error loading ${failedSrc}`));
|
|
1841
1852
|
};
|
|
1842
1853
|
crossOrigin && (img.crossOrigin = crossOrigin);
|
|
1843
1854
|
img.src = url;
|
|
@@ -3063,25 +3074,28 @@ class StaticCanvas extends createCollectionMixin(CommonMethods) {
|
|
|
3063
3074
|
*/
|
|
3064
3075
|
_createPathForText() {
|
|
3065
3076
|
const pathMarkups = [];
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3077
|
+
const objects = [];
|
|
3078
|
+
this._objects.forEach(function add(object) {
|
|
3079
|
+
objects.push(object);
|
|
3080
|
+
if (isCollection(object)) {
|
|
3081
|
+
object._objects.forEach(add);
|
|
3082
|
+
}
|
|
3083
|
+
});
|
|
3084
|
+
objects.forEach(instance => {
|
|
3072
3085
|
if (instance.excludeFromExport) {
|
|
3073
|
-
|
|
3086
|
+
return;
|
|
3074
3087
|
}
|
|
3075
3088
|
if (!isTextObject(instance) || !instance.path) {
|
|
3076
|
-
|
|
3089
|
+
return;
|
|
3077
3090
|
}
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
|
|
3091
|
+
const pathId = `TEXTPATH_${instance.id}`;
|
|
3092
|
+
const pathMarkup = instance.path._toSVG();
|
|
3093
|
+
const index = pathMarkup.indexOf('COMMON_PARTS');
|
|
3094
|
+
|
|
3081
3095
|
// 加上id, 和路径偏移
|
|
3082
3096
|
pathMarkup[index] = ['id="' + pathId + '" ', 'transform="translate(' + -instance.path.pathOffset.x + ',' + -instance.path.pathOffset.y + ')" '].join('');
|
|
3083
3097
|
pathMarkups.push(pathMarkup.join(''));
|
|
3084
|
-
}
|
|
3098
|
+
});
|
|
3085
3099
|
return pathMarkups.join('\n');
|
|
3086
3100
|
}
|
|
3087
3101
|
createSVGClipPathMarkup(options) {
|
|
@@ -4040,9 +4054,13 @@ class Pattern {
|
|
|
4040
4054
|
patternTransform,
|
|
4041
4055
|
...otherOptions
|
|
4042
4056
|
} = _ref2;
|
|
4057
|
+
const {
|
|
4058
|
+
crossOrigin
|
|
4059
|
+
} = otherOptions;
|
|
4043
4060
|
const img = await loadImage(source, {
|
|
4044
4061
|
...options,
|
|
4045
|
-
crossOrigin
|
|
4062
|
+
crossOrigin,
|
|
4063
|
+
fallbackToEmptyImage: true
|
|
4046
4064
|
});
|
|
4047
4065
|
return new this({
|
|
4048
4066
|
...otherOptions,
|
|
@@ -5030,13 +5048,17 @@ class FabricObjectSVGExportMixin {
|
|
|
5030
5048
|
commonPieces = [styleInfo, vectorEffect, noStyle ? '' : this.addPaintOrder(), ' ', additionalTransform ? `transform="${additionalTransform}" ` : ''].join('');
|
|
5031
5049
|
|
|
5032
5050
|
// James added shadow 放在上面
|
|
5051
|
+
// 文本等调用方已经通过 withShadow 挂载 filter 时,避免再额外复制一份可见对象,
|
|
5052
|
+
// 但仍然需要输出 filter 定义,否则普通 SVG 会丢失阴影。
|
|
5033
5053
|
if (shadow) {
|
|
5054
|
+
markup.push(shadow.toSVG(this));
|
|
5055
|
+
}
|
|
5056
|
+
if (shadow && !withShadow) {
|
|
5034
5057
|
const styleInfoWithShadow = 'style="' + this.getSvgStyles(false) + '" ';
|
|
5035
5058
|
const commonPiecesWithShadow = [styleInfoWithShadow, vectorEffect, noStyle ? '' : this.addPaintOrder(), ' ', additionalTransform ? 'transform="' + additionalTransform + '" ' : ''].join('');
|
|
5036
5059
|
const objectMarkupCopy = JSON.parse(JSON.stringify(objectMarkup));
|
|
5037
5060
|
objectMarkupCopy[index] = commonPiecesWithShadow;
|
|
5038
5061
|
markup.push(objectMarkupCopy.join(''));
|
|
5039
|
-
markup.push(shadow.toSVG(this));
|
|
5040
5062
|
}
|
|
5041
5063
|
// objectMarkup中是导出主对象(如path)的svg,index下标是style,放在commonPieces
|
|
5042
5064
|
objectMarkup[index] = commonPieces;
|
|
@@ -25944,11 +25966,13 @@ class FabricImage extends FabricObject {
|
|
|
25944
25966
|
} = _ref;
|
|
25945
25967
|
return Promise.all([loadImage(src, {
|
|
25946
25968
|
...options,
|
|
25947
|
-
crossOrigin
|
|
25969
|
+
crossOrigin,
|
|
25970
|
+
fallbackToEmptyImage: true
|
|
25948
25971
|
}), f && enlivenObjects(f, options),
|
|
25949
25972
|
// TODO: redundant - handled by enlivenObjectEnlivables
|
|
25950
25973
|
rf && enlivenObjects([rf], options), enlivenObjectEnlivables(object, options)]).then(_ref2 => {
|
|
25951
|
-
let [el, filters = [],
|
|
25974
|
+
let [el, filters = [], resizeFilters = [], hydratedProps = {}] = _ref2;
|
|
25975
|
+
const [resizeFilter] = resizeFilters;
|
|
25952
25976
|
return new this(el, {
|
|
25953
25977
|
...object,
|
|
25954
25978
|
// TODO: this creates a difference between image creation and restoring from JSON
|