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.
Files changed (59) hide show
  1. package/dist/index.js +45 -21
  2. package/dist/index.js.map +1 -1
  3. package/dist/index.min.js +1 -1
  4. package/dist/index.min.js.map +1 -1
  5. package/dist/index.min.mjs +1 -1
  6. package/dist/index.min.mjs.map +1 -1
  7. package/dist/index.mjs +45 -21
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/index.node.cjs +45 -21
  10. package/dist/index.node.cjs.map +1 -1
  11. package/dist/index.node.mjs +45 -21
  12. package/dist/index.node.mjs.map +1 -1
  13. package/dist/package.json.min.mjs +1 -1
  14. package/dist/package.json.mjs +1 -1
  15. package/dist/src/Pattern/Pattern.d.ts.map +1 -1
  16. package/dist/src/Pattern/Pattern.min.mjs +1 -1
  17. package/dist/src/Pattern/Pattern.min.mjs.map +1 -1
  18. package/dist/src/Pattern/Pattern.mjs +5 -1
  19. package/dist/src/Pattern/Pattern.mjs.map +1 -1
  20. package/dist/src/canvas/StaticCanvas.d.ts.map +1 -1
  21. package/dist/src/canvas/StaticCanvas.min.mjs +1 -1
  22. package/dist/src/canvas/StaticCanvas.min.mjs.map +1 -1
  23. package/dist/src/canvas/StaticCanvas.mjs +15 -12
  24. package/dist/src/canvas/StaticCanvas.mjs.map +1 -1
  25. package/dist/src/shapes/Image.d.ts +2 -2
  26. package/dist/src/shapes/Image.d.ts.map +1 -1
  27. package/dist/src/shapes/Image.min.mjs +1 -1
  28. package/dist/src/shapes/Image.min.mjs.map +1 -1
  29. package/dist/src/shapes/Image.mjs +4 -2
  30. package/dist/src/shapes/Image.mjs.map +1 -1
  31. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +1 -1
  32. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs +1 -1
  33. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs.map +1 -1
  34. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs +5 -1
  35. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs.map +1 -1
  36. package/dist/src/util/misc/objectEnlive.d.ts +6 -1
  37. package/dist/src/util/misc/objectEnlive.d.ts.map +1 -1
  38. package/dist/src/util/misc/objectEnlive.min.mjs +1 -1
  39. package/dist/src/util/misc/objectEnlive.min.mjs.map +1 -1
  40. package/dist/src/util/misc/objectEnlive.mjs +16 -5
  41. package/dist/src/util/misc/objectEnlive.mjs.map +1 -1
  42. package/dist-extensions/src/Pattern/Pattern.d.ts.map +1 -1
  43. package/dist-extensions/src/canvas/StaticCanvas.d.ts.map +1 -1
  44. package/dist-extensions/src/shapes/Image.d.ts +2 -2
  45. package/dist-extensions/src/shapes/Image.d.ts.map +1 -1
  46. package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +1 -1
  47. package/dist-extensions/src/util/misc/objectEnlive.d.ts +6 -1
  48. package/dist-extensions/src/util/misc/objectEnlive.d.ts.map +1 -1
  49. package/package.json +33 -33
  50. package/src/Pattern/Pattern.spec.ts +63 -0
  51. package/src/Pattern/Pattern.ts +3 -1
  52. package/src/canvas/StaticCanvas.spec.ts +23 -0
  53. package/src/canvas/StaticCanvas.ts +19 -12
  54. package/src/shapes/Image.spec.ts +21 -2
  55. package/src/shapes/Image.ts +24 -12
  56. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +5 -1
  57. package/src/shapes/Text/TextSVGExportMixin.spec.ts +16 -0
  58. package/src/util/misc/objectEnlive.spec.ts +49 -2
  59. package/src/util/misc/objectEnlive.ts +29 -5
@@ -196,13 +196,17 @@ class FabricObjectSVGExportMixin {
196
196
  commonPieces = [styleInfo, vectorEffect, noStyle ? '' : this.addPaintOrder(), ' ', additionalTransform ? `transform="${additionalTransform}" ` : ''].join('');
197
197
 
198
198
  // James added shadow 放在上面
199
+ // 文本等调用方已经通过 withShadow 挂载 filter 时,避免再额外复制一份可见对象,
200
+ // 但仍然需要输出 filter 定义,否则普通 SVG 会丢失阴影。
199
201
  if (shadow) {
202
+ markup.push(shadow.toSVG(this));
203
+ }
204
+ if (shadow && !withShadow) {
200
205
  const styleInfoWithShadow = 'style="' + this.getSvgStyles(false) + '" ';
201
206
  const commonPiecesWithShadow = [styleInfoWithShadow, vectorEffect, noStyle ? '' : this.addPaintOrder(), ' ', additionalTransform ? 'transform="' + additionalTransform + '" ' : ''].join('');
202
207
  const objectMarkupCopy = JSON.parse(JSON.stringify(objectMarkup));
203
208
  objectMarkupCopy[index] = commonPiecesWithShadow;
204
209
  markup.push(objectMarkupCopy.join(''));
205
- markup.push(shadow.toSVG(this));
206
210
  }
207
211
  // objectMarkup中是导出主对象(如path)的svg,index下标是style,放在commonPieces
208
212
  objectMarkup[index] = commonPieces;
@@ -1 +1 @@
1
- {"version":3,"file":"FabricObjectSVGExportMixin.mjs","sources":["../../../../src/shapes/Object/FabricObjectSVGExportMixin.ts"],"sourcesContent":["import type { TSVGReviver } from '../../typedefs';\nimport { uid } from '../../util/internals/uid';\nimport { colorPropToSVG } from '../../util/misc/svgParsing';\nimport { FILL, NONE, STROKE } from '../../constants';\nimport type { FabricObject } from './FabricObject';\nimport { isFiller } from '../../util/typeAssertions';\nimport { Pattern } from '../../Pattern';\nimport { matrixToSVG } from '../../util/misc/svgExport';\n\nexport class FabricObjectSVGExportMixin {\n /**\n * When an object is being exported as SVG as a clippath, a reference inside the SVG is needed.\n * This reference is a UID in the fabric namespace and is temporary stored here.\n * @type {String}\n */\n declare clipPathId?: string;\n\n /**\n * James added, 增加clipPathPattern属性,用于导出svg时 Pattern转Image对象\n */\n declare clipPathPattern?: FabricObject | null;\n\n /**\n * Returns styles-string for svg-export\n * @param {Boolean} skipShadow a boolean to skip shadow filter output\n * @return {String}\n */\n getSvgStyles(\n this: FabricObjectSVGExportMixin & FabricObject,\n skipShadow?: boolean,\n ) {\n const fillRule = this.fillRule ? this.fillRule : 'nonzero',\n strokeWidth = this.strokeWidth ? this.strokeWidth : '0',\n strokeDashArray = this.strokeDashArray\n ? this.strokeDashArray.join(' ')\n : NONE,\n strokeDashOffset = this.strokeDashOffset ? this.strokeDashOffset : '0',\n strokeLineCap = this.strokeLineCap ? this.strokeLineCap : 'butt',\n strokeLineJoin = this.strokeLineJoin ? this.strokeLineJoin : 'miter',\n strokeMiterLimit = this.strokeMiterLimit ? this.strokeMiterLimit : '4',\n opacity = typeof this.opacity !== 'undefined' ? this.opacity : '1',\n visibility = this.visible ? '' : ' visibility: hidden;',\n filter = skipShadow ? '' : this.getSvgFilter(),\n // James modified, 非skipShadow 时候,fill和stroke都设置为白色\n fill = skipShadow ? colorPropToSVG(FILL, this.fill) : 'fill: white;',\n stroke = skipShadow\n ? colorPropToSVG(STROKE, this.stroke)\n : 'stroke:white;';\n\n return [\n stroke,\n 'stroke-width: ',\n strokeWidth,\n '; ',\n 'stroke-dasharray: ',\n strokeDashArray,\n '; ',\n 'stroke-linecap: ',\n strokeLineCap,\n '; ',\n 'stroke-dashoffset: ',\n strokeDashOffset,\n '; ',\n 'stroke-linejoin: ',\n strokeLineJoin,\n '; ',\n 'stroke-miterlimit: ',\n strokeMiterLimit,\n '; ',\n fill,\n 'fill-rule: ',\n fillRule,\n '; ',\n 'opacity: ',\n opacity,\n ';',\n filter,\n visibility,\n ].join('');\n }\n\n /**\n * Returns filter for svg shadow\n * @return {String}\n */\n getSvgFilter(this: FabricObjectSVGExportMixin & FabricObject) {\n return this.shadow ? `filter: url(#SVGID_${this.shadow.id});` : '';\n }\n\n /**\n * Returns id attribute for svg output\n * @return {String}\n */\n getSvgCommons(\n this: FabricObjectSVGExportMixin & FabricObject & { id?: string },\n ) {\n return [\n this.id ? `id=\"${this.id}\" ` : '',\n this.clipPath\n ? `clip-path=\"url(#${\n (this.clipPath as FabricObjectSVGExportMixin & FabricObject)\n .clipPathId\n })\" `\n : '',\n ].join('');\n }\n\n /**\n * Returns transform-string for svg-export\n * @param {Boolean} use the full transform or the single object one.\n * @return {String}\n */\n getSvgTransform(\n this: FabricObjectSVGExportMixin & FabricObject,\n full?: boolean,\n additionalTransform = '',\n ) {\n const transform = full ? this.calcTransformMatrix() : this.calcOwnMatrix(),\n svgTransform = `transform=\"${matrixToSVG(transform)}`;\n return `${svgTransform}${additionalTransform}\" `;\n }\n\n /**\n * Returns svg representation of an instance\n * This function is implemented in each subclass\n * This is just because typescript otherwise cryies all the time\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG(_reviver?: TSVGReviver): string[] {\n return [''];\n }\n\n /**\n * Returns svg representation of an instance\n * @param {TSVGReviver} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG(\n this: FabricObjectSVGExportMixin & FabricObject,\n reviver?: TSVGReviver,\n ) {\n return this._createBaseSVGMarkup(this._toSVG(reviver), {\n reviver,\n });\n }\n\n /**\n * Returns svg clipPath representation of an instance\n * @param {TSVGReviver} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toClipPathSVG(\n this: FabricObjectSVGExportMixin & FabricObject,\n reviver?: TSVGReviver,\n ) {\n return (\n '\\t' +\n this._createBaseClipPathSVGMarkup(this._toSVG(reviver), {\n reviver,\n })\n );\n }\n\n /**\n * James added\n * Returns pattern svg attributes string\n * @return {String}\n */\n getPatternSvgCommons(\n this: FabricObjectSVGExportMixin & FabricObject & { id?: string },\n ) {\n return [\n this.id ? 'id=\"' + this.id + '_clip\" ' : '',\n this.clipPathPattern\n ? 'clip-path=\"url(#' + this.clipPathPattern.clipPathId + ')\" '\n : '',\n ].join('');\n }\n\n /**\n * James added\n * Returns id attribute for svg clippath output\n * @return {String}\n */\n getSvgCommonsClipPath(\n this: FabricObjectSVGExportMixin & FabricObject & { id?: string },\n ) {\n if (this.clipPathPattern) {\n return [this.id ? 'id=\"' + this.id + '\" ' : ''].join('');\n } else {\n return this.getSvgCommons();\n }\n }\n\n /**\n * James added\n * 自定义clipPath的svg输出transform\n * @param {*} full\n * @param {*} additionalTransform\n */\n getSvgTransformClipPath(\n this: FabricObjectSVGExportMixin & FabricObject,\n full: boolean,\n additionalTransform = '',\n ) {\n // 如果是pattern,就不需要transform\n if (this.clipPathPattern) {\n return additionalTransform\n ? 'transform=\"' + additionalTransform + '\" '\n : '';\n } else {\n return this.getSvgTransform(full, additionalTransform);\n }\n }\n\n /**\n * @private\n */\n _createBaseClipPathSVGMarkup(\n this: FabricObjectSVGExportMixin & FabricObject,\n objectMarkup: string[],\n {\n reviver,\n additionalTransform = '',\n }: { reviver?: TSVGReviver; additionalTransform?: string } = {},\n ) {\n const commonPieces = [\n this.getSvgTransformClipPath(true, additionalTransform),\n this.getSvgCommonsClipPath(),\n ].join(''),\n // insert commons in the markup, style and svgCommons\n index = objectMarkup.indexOf('COMMON_PARTS');\n objectMarkup[index] = commonPieces;\n return reviver ? reviver(objectMarkup.join('')) : objectMarkup.join('');\n }\n\n /**\n * @private\n */\n _createBaseSVGMarkup(\n this: FabricObjectSVGExportMixin & FabricObject,\n objectMarkup: string[],\n {\n noStyle,\n reviver,\n withShadow,\n additionalTransform,\n }: {\n noStyle?: boolean;\n reviver?: TSVGReviver;\n withShadow?: boolean;\n additionalTransform?: string;\n } = {},\n ): string {\n var skipShadow = true;\n let clipPath = this.clipPath as FabricObjectSVGExportMixin & FabricObject;\n const styleInfo = noStyle\n ? ''\n : `style=\"${this.getSvgStyles(skipShadow)}\" `,\n shadowInfo = withShadow ? `style=\"${this.getSvgFilter()}\" ` : '',\n vectorEffect = this.strokeUniform\n ? 'vector-effect=\"non-scaling-stroke\" '\n : '',\n absoluteClipPath = clipPath && clipPath.absolutePositioned,\n stroke = this.stroke,\n fill = this.fill,\n shadow = this.shadow,\n markup = [],\n // insert commons in the markup, style and svgCommons\n index = objectMarkup.indexOf('COMMON_PARTS');\n // James added\n let commonPieces = '',\n clipPathMarkup = '';\n\n // 如果是pattern,就生成clipppath\n // 使用 clipPathPattern区别是否是pattern\n this.clipPathPattern = null;\n if (fill instanceof Pattern) {\n this.clipPathPattern = clipPath = this;\n }\n // James added end\n if (clipPath) {\n clipPath.clipPathId = `CLIPPATH_${uid()}`;\n clipPathMarkup = `<clipPath id=\"${\n clipPath.clipPathId\n }\" >\\n${clipPath.toClipPathSVG(reviver)}</clipPath>\\n`;\n }\n if (absoluteClipPath) {\n markup.push('<g ', shadowInfo, this.getSvgCommons(), ' >\\n');\n }\n markup.push(\n '<g ',\n this.getSvgTransform(false),\n !absoluteClipPath ? shadowInfo + this.getSvgCommons() : '',\n ' >\\n',\n );\n commonPieces = [\n styleInfo,\n vectorEffect,\n noStyle ? '' : this.addPaintOrder(),\n ' ',\n additionalTransform ? `transform=\"${additionalTransform}\" ` : '',\n ].join('');\n\n // James added shadow 放在上面\n if (shadow) {\n const styleInfoWithShadow = 'style=\"' + this.getSvgStyles(false) + '\" ';\n const commonPiecesWithShadow = [\n styleInfoWithShadow,\n vectorEffect,\n noStyle ? '' : this.addPaintOrder(),\n ' ',\n additionalTransform ? 'transform=\"' + additionalTransform + '\" ' : '',\n ].join('');\n const objectMarkupCopy = JSON.parse(JSON.stringify(objectMarkup));\n objectMarkupCopy[index] = commonPiecesWithShadow;\n\n markup.push(objectMarkupCopy.join(''));\n markup.push(shadow.toSVG(this));\n }\n // objectMarkup中是导出主对象(如path)的svg,index下标是style,放在commonPieces\n objectMarkup[index] = commonPieces;\n if (isFiller(fill)) {\n // James added clipPattern apply pattern clip path just for fill.\n if (this.clipPathPattern) {\n markup.push('<g ', shadowInfo, this.getPatternSvgCommons(), ' >\\n');\n }\n markup.push(fill.toSVG(this));\n // James added clipPattern\n if (this.clipPathPattern) {\n markup.push('</g>\\n');\n }\n }\n if (isFiller(stroke)) {\n markup.push(stroke.toSVG(this));\n }\n if (clipPath) {\n markup.push(clipPathMarkup);\n }\n // if use pattern, ignore objectMarkup, because pattern clipPath has been applied in pattern's svg, and objectMarkup is not needed anymore\n if (!this.clipPathPattern) {\n markup.push(objectMarkup.join(''));\n }\n markup.push('</g>\\n');\n absoluteClipPath && markup.push('</g>\\n');\n return reviver ? reviver(markup.join('')) : markup.join('');\n }\n\n addPaintOrder(this: FabricObjectSVGExportMixin & FabricObject) {\n return this.paintFirst !== FILL ? ` paint-order=\"${this.paintFirst}\" ` : '';\n }\n}\n"],"names":["FabricObjectSVGExportMixin","getSvgStyles","skipShadow","fillRule","strokeWidth","strokeDashArray","join","NONE","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","opacity","visibility","visible","filter","getSvgFilter","fill","colorPropToSVG","FILL","stroke","STROKE","shadow","id","getSvgCommons","clipPath","clipPathId","getSvgTransform","full","additionalTransform","arguments","length","undefined","transform","calcTransformMatrix","calcOwnMatrix","svgTransform","matrixToSVG","_toSVG","_reviver","toSVG","reviver","_createBaseSVGMarkup","toClipPathSVG","_createBaseClipPathSVGMarkup","getPatternSvgCommons","clipPathPattern","getSvgCommonsClipPath","getSvgTransformClipPath","objectMarkup","commonPieces","index","indexOf","noStyle","withShadow","styleInfo","shadowInfo","vectorEffect","strokeUniform","absoluteClipPath","absolutePositioned","markup","clipPathMarkup","Pattern","uid","push","addPaintOrder","styleInfoWithShadow","commonPiecesWithShadow","objectMarkupCopy","JSON","parse","stringify","isFiller","paintFirst"],"mappings":"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"}
1
+ {"version":3,"file":"FabricObjectSVGExportMixin.mjs","sources":["../../../../src/shapes/Object/FabricObjectSVGExportMixin.ts"],"sourcesContent":["import type { TSVGReviver } from '../../typedefs';\nimport { uid } from '../../util/internals/uid';\nimport { colorPropToSVG } from '../../util/misc/svgParsing';\nimport { FILL, NONE, STROKE } from '../../constants';\nimport type { FabricObject } from './FabricObject';\nimport { isFiller } from '../../util/typeAssertions';\nimport { Pattern } from '../../Pattern';\nimport { matrixToSVG } from '../../util/misc/svgExport';\n\nexport class FabricObjectSVGExportMixin {\n /**\n * When an object is being exported as SVG as a clippath, a reference inside the SVG is needed.\n * This reference is a UID in the fabric namespace and is temporary stored here.\n * @type {String}\n */\n declare clipPathId?: string;\n\n /**\n * James added, 增加clipPathPattern属性,用于导出svg时 Pattern转Image对象\n */\n declare clipPathPattern?: FabricObject | null;\n\n /**\n * Returns styles-string for svg-export\n * @param {Boolean} skipShadow a boolean to skip shadow filter output\n * @return {String}\n */\n getSvgStyles(\n this: FabricObjectSVGExportMixin & FabricObject,\n skipShadow?: boolean,\n ) {\n const fillRule = this.fillRule ? this.fillRule : 'nonzero',\n strokeWidth = this.strokeWidth ? this.strokeWidth : '0',\n strokeDashArray = this.strokeDashArray\n ? this.strokeDashArray.join(' ')\n : NONE,\n strokeDashOffset = this.strokeDashOffset ? this.strokeDashOffset : '0',\n strokeLineCap = this.strokeLineCap ? this.strokeLineCap : 'butt',\n strokeLineJoin = this.strokeLineJoin ? this.strokeLineJoin : 'miter',\n strokeMiterLimit = this.strokeMiterLimit ? this.strokeMiterLimit : '4',\n opacity = typeof this.opacity !== 'undefined' ? this.opacity : '1',\n visibility = this.visible ? '' : ' visibility: hidden;',\n filter = skipShadow ? '' : this.getSvgFilter(),\n // James modified, 非skipShadow 时候,fill和stroke都设置为白色\n fill = skipShadow ? colorPropToSVG(FILL, this.fill) : 'fill: white;',\n stroke = skipShadow\n ? colorPropToSVG(STROKE, this.stroke)\n : 'stroke:white;';\n\n return [\n stroke,\n 'stroke-width: ',\n strokeWidth,\n '; ',\n 'stroke-dasharray: ',\n strokeDashArray,\n '; ',\n 'stroke-linecap: ',\n strokeLineCap,\n '; ',\n 'stroke-dashoffset: ',\n strokeDashOffset,\n '; ',\n 'stroke-linejoin: ',\n strokeLineJoin,\n '; ',\n 'stroke-miterlimit: ',\n strokeMiterLimit,\n '; ',\n fill,\n 'fill-rule: ',\n fillRule,\n '; ',\n 'opacity: ',\n opacity,\n ';',\n filter,\n visibility,\n ].join('');\n }\n\n /**\n * Returns filter for svg shadow\n * @return {String}\n */\n getSvgFilter(this: FabricObjectSVGExportMixin & FabricObject) {\n return this.shadow ? `filter: url(#SVGID_${this.shadow.id});` : '';\n }\n\n /**\n * Returns id attribute for svg output\n * @return {String}\n */\n getSvgCommons(\n this: FabricObjectSVGExportMixin & FabricObject & { id?: string },\n ) {\n return [\n this.id ? `id=\"${this.id}\" ` : '',\n this.clipPath\n ? `clip-path=\"url(#${\n (this.clipPath as FabricObjectSVGExportMixin & FabricObject)\n .clipPathId\n })\" `\n : '',\n ].join('');\n }\n\n /**\n * Returns transform-string for svg-export\n * @param {Boolean} use the full transform or the single object one.\n * @return {String}\n */\n getSvgTransform(\n this: FabricObjectSVGExportMixin & FabricObject,\n full?: boolean,\n additionalTransform = '',\n ) {\n const transform = full ? this.calcTransformMatrix() : this.calcOwnMatrix(),\n svgTransform = `transform=\"${matrixToSVG(transform)}`;\n return `${svgTransform}${additionalTransform}\" `;\n }\n\n /**\n * Returns svg representation of an instance\n * This function is implemented in each subclass\n * This is just because typescript otherwise cryies all the time\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG(_reviver?: TSVGReviver): string[] {\n return [''];\n }\n\n /**\n * Returns svg representation of an instance\n * @param {TSVGReviver} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG(\n this: FabricObjectSVGExportMixin & FabricObject,\n reviver?: TSVGReviver,\n ) {\n return this._createBaseSVGMarkup(this._toSVG(reviver), {\n reviver,\n });\n }\n\n /**\n * Returns svg clipPath representation of an instance\n * @param {TSVGReviver} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toClipPathSVG(\n this: FabricObjectSVGExportMixin & FabricObject,\n reviver?: TSVGReviver,\n ) {\n return (\n '\\t' +\n this._createBaseClipPathSVGMarkup(this._toSVG(reviver), {\n reviver,\n })\n );\n }\n\n /**\n * James added\n * Returns pattern svg attributes string\n * @return {String}\n */\n getPatternSvgCommons(\n this: FabricObjectSVGExportMixin & FabricObject & { id?: string },\n ) {\n return [\n this.id ? 'id=\"' + this.id + '_clip\" ' : '',\n this.clipPathPattern\n ? 'clip-path=\"url(#' + this.clipPathPattern.clipPathId + ')\" '\n : '',\n ].join('');\n }\n\n /**\n * James added\n * Returns id attribute for svg clippath output\n * @return {String}\n */\n getSvgCommonsClipPath(\n this: FabricObjectSVGExportMixin & FabricObject & { id?: string },\n ) {\n if (this.clipPathPattern) {\n return [this.id ? 'id=\"' + this.id + '\" ' : ''].join('');\n } else {\n return this.getSvgCommons();\n }\n }\n\n /**\n * James added\n * 自定义clipPath的svg输出transform\n * @param {*} full\n * @param {*} additionalTransform\n */\n getSvgTransformClipPath(\n this: FabricObjectSVGExportMixin & FabricObject,\n full: boolean,\n additionalTransform = '',\n ) {\n // 如果是pattern,就不需要transform\n if (this.clipPathPattern) {\n return additionalTransform\n ? 'transform=\"' + additionalTransform + '\" '\n : '';\n } else {\n return this.getSvgTransform(full, additionalTransform);\n }\n }\n\n /**\n * @private\n */\n _createBaseClipPathSVGMarkup(\n this: FabricObjectSVGExportMixin & FabricObject,\n objectMarkup: string[],\n {\n reviver,\n additionalTransform = '',\n }: { reviver?: TSVGReviver; additionalTransform?: string } = {},\n ) {\n const commonPieces = [\n this.getSvgTransformClipPath(true, additionalTransform),\n this.getSvgCommonsClipPath(),\n ].join(''),\n // insert commons in the markup, style and svgCommons\n index = objectMarkup.indexOf('COMMON_PARTS');\n objectMarkup[index] = commonPieces;\n return reviver ? reviver(objectMarkup.join('')) : objectMarkup.join('');\n }\n\n /**\n * @private\n */\n _createBaseSVGMarkup(\n this: FabricObjectSVGExportMixin & FabricObject,\n objectMarkup: string[],\n {\n noStyle,\n reviver,\n withShadow,\n additionalTransform,\n }: {\n noStyle?: boolean;\n reviver?: TSVGReviver;\n withShadow?: boolean;\n additionalTransform?: string;\n } = {},\n ): string {\n var skipShadow = true;\n let clipPath = this.clipPath as FabricObjectSVGExportMixin & FabricObject;\n const styleInfo = noStyle\n ? ''\n : `style=\"${this.getSvgStyles(skipShadow)}\" `,\n shadowInfo = withShadow ? `style=\"${this.getSvgFilter()}\" ` : '',\n vectorEffect = this.strokeUniform\n ? 'vector-effect=\"non-scaling-stroke\" '\n : '',\n absoluteClipPath = clipPath && clipPath.absolutePositioned,\n stroke = this.stroke,\n fill = this.fill,\n shadow = this.shadow,\n markup = [],\n // insert commons in the markup, style and svgCommons\n index = objectMarkup.indexOf('COMMON_PARTS');\n // James added\n let commonPieces = '',\n clipPathMarkup = '';\n\n // 如果是pattern,就生成clipppath\n // 使用 clipPathPattern区别是否是pattern\n this.clipPathPattern = null;\n if (fill instanceof Pattern) {\n this.clipPathPattern = clipPath = this;\n }\n // James added end\n if (clipPath) {\n clipPath.clipPathId = `CLIPPATH_${uid()}`;\n clipPathMarkup = `<clipPath id=\"${\n clipPath.clipPathId\n }\" >\\n${clipPath.toClipPathSVG(reviver)}</clipPath>\\n`;\n }\n if (absoluteClipPath) {\n markup.push('<g ', shadowInfo, this.getSvgCommons(), ' >\\n');\n }\n markup.push(\n '<g ',\n this.getSvgTransform(false),\n !absoluteClipPath ? shadowInfo + this.getSvgCommons() : '',\n ' >\\n',\n );\n commonPieces = [\n styleInfo,\n vectorEffect,\n noStyle ? '' : this.addPaintOrder(),\n ' ',\n additionalTransform ? `transform=\"${additionalTransform}\" ` : '',\n ].join('');\n\n // James added shadow 放在上面\n // 文本等调用方已经通过 withShadow 挂载 filter 时,避免再额外复制一份可见对象,\n // 但仍然需要输出 filter 定义,否则普通 SVG 会丢失阴影。\n if (shadow) {\n markup.push(shadow.toSVG(this));\n }\n if (shadow && !withShadow) {\n const styleInfoWithShadow = 'style=\"' + this.getSvgStyles(false) + '\" ';\n const commonPiecesWithShadow = [\n styleInfoWithShadow,\n vectorEffect,\n noStyle ? '' : this.addPaintOrder(),\n ' ',\n additionalTransform ? 'transform=\"' + additionalTransform + '\" ' : '',\n ].join('');\n const objectMarkupCopy = JSON.parse(JSON.stringify(objectMarkup));\n objectMarkupCopy[index] = commonPiecesWithShadow;\n\n markup.push(objectMarkupCopy.join(''));\n }\n // objectMarkup中是导出主对象(如path)的svg,index下标是style,放在commonPieces\n objectMarkup[index] = commonPieces;\n if (isFiller(fill)) {\n // James added clipPattern apply pattern clip path just for fill.\n if (this.clipPathPattern) {\n markup.push('<g ', shadowInfo, this.getPatternSvgCommons(), ' >\\n');\n }\n markup.push(fill.toSVG(this));\n // James added clipPattern\n if (this.clipPathPattern) {\n markup.push('</g>\\n');\n }\n }\n if (isFiller(stroke)) {\n markup.push(stroke.toSVG(this));\n }\n if (clipPath) {\n markup.push(clipPathMarkup);\n }\n // if use pattern, ignore objectMarkup, because pattern clipPath has been applied in pattern's svg, and objectMarkup is not needed anymore\n if (!this.clipPathPattern) {\n markup.push(objectMarkup.join(''));\n }\n markup.push('</g>\\n');\n absoluteClipPath && markup.push('</g>\\n');\n return reviver ? reviver(markup.join('')) : markup.join('');\n }\n\n addPaintOrder(this: FabricObjectSVGExportMixin & FabricObject) {\n return this.paintFirst !== FILL ? ` paint-order=\"${this.paintFirst}\" ` : '';\n }\n}\n"],"names":["FabricObjectSVGExportMixin","getSvgStyles","skipShadow","fillRule","strokeWidth","strokeDashArray","join","NONE","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","opacity","visibility","visible","filter","getSvgFilter","fill","colorPropToSVG","FILL","stroke","STROKE","shadow","id","getSvgCommons","clipPath","clipPathId","getSvgTransform","full","additionalTransform","arguments","length","undefined","transform","calcTransformMatrix","calcOwnMatrix","svgTransform","matrixToSVG","_toSVG","_reviver","toSVG","reviver","_createBaseSVGMarkup","toClipPathSVG","_createBaseClipPathSVGMarkup","getPatternSvgCommons","clipPathPattern","getSvgCommonsClipPath","getSvgTransformClipPath","objectMarkup","commonPieces","index","indexOf","noStyle","withShadow","styleInfo","shadowInfo","vectorEffect","strokeUniform","absoluteClipPath","absolutePositioned","markup","clipPathMarkup","Pattern","uid","push","addPaintOrder","styleInfoWithShadow","commonPiecesWithShadow","objectMarkupCopy","JSON","parse","stringify","isFiller","paintFirst"],"mappings":"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"}
@@ -8,6 +8,11 @@ export type LoadImageOptions = Abortable & {
8
8
  * cors value for the image loading, default to anonymous
9
9
  */
10
10
  crossOrigin?: TCrossOrigin;
11
+ /**
12
+ * Resolve with an empty image instead of rejecting when the image fails to load.
13
+ * Useful for deserialization flows where one bad asset should not fail the entire document.
14
+ */
15
+ fallbackToEmptyImage?: boolean;
11
16
  };
12
17
  /**
13
18
  * Loads image element from given url and resolve it, or catch.
@@ -15,7 +20,7 @@ export type LoadImageOptions = Abortable & {
15
20
  * @param {LoadImageOptions} [options] image loading options
16
21
  * @returns {Promise<HTMLImageElement>} the loaded image.
17
22
  */
18
- export declare const loadImage: (url: string, { signal, crossOrigin }?: LoadImageOptions) => Promise<HTMLImageElement>;
23
+ export declare const loadImage: (url: string, { signal, crossOrigin, fallbackToEmptyImage, }?: LoadImageOptions) => Promise<HTMLImageElement>;
19
24
  export type EnlivenObjectOptions = Abortable & {
20
25
  /**
21
26
  * Method for further parsing of object elements,
@@ -1 +1 @@
1
- {"version":3,"file":"objectEnlive.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/objectEnlive.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EACV,SAAS,EAET,YAAY,EACZ,OAAO,EACR,MAAM,gBAAgB,CAAC;AAGxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG;IACzC;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,QACf,MAAM,4BACqB,gBAAgB,8BA+B9C,CAAC;AAEL,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG;IAC7C;;;OAGG;IACH,OAAO,CAAC,EAAE,CACR,CAAC,SACG,gBAAgB,GAChB,YAAY,GACZ,UAAU,CAAC,MAAM,CAAC,GAClB,MAAM,GACN,OAAO,EAEX,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAClC,QAAQ,EAAE,CAAC,KACR,IAAI,CAAC;CACX,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GACzB,CAAC,SACG,gBAAgB,GAChB,YAAY,GACZ,UAAU,CAAC,MAAM,CAAC,GAClB,MAAM,GACN,OAAO,WAEF,GAAG,EAAE,wBACc,oBAAoB,iBAiC9C,CAAC;AAEL;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,CAAC,yMAEiB,GAAG,eACT,SAAS,eA6CnB,CAAC"}
1
+ {"version":3,"file":"objectEnlive.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/objectEnlive.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EACV,SAAS,EAET,YAAY,EACZ,OAAO,EACR,MAAM,gBAAgB,CAAC;AAGxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG;IACzC;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;IAE3B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,QACf,MAAM,mDAKR,gBAAgB,8BA6CjB,CAAC;AAEL,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG;IAC7C;;;OAGG;IACH,OAAO,CAAC,EAAE,CACR,CAAC,SACG,gBAAgB,GAChB,YAAY,GACZ,UAAU,CAAC,MAAM,CAAC,GAClB,MAAM,GACN,OAAO,EAEX,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAClC,QAAQ,EAAE,CAAC,KACR,IAAI,CAAC;CACX,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GACzB,CAAC,SACG,gBAAgB,GAChB,YAAY,GACZ,UAAU,CAAC,MAAM,CAAC,GAClB,MAAM,GACN,OAAO,WAEF,GAAG,EAAE,wBACc,oBAAoB,iBAiC9C,CAAC;AAEL;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,CAAC,yMAEiB,GAAG,eACT,SAAS,eA6CnB,CAAC"}
@@ -1,2 +1,2 @@
1
- import{noop as e}from"../../constants.min.mjs";import{createImage as n}from"./dom.min.mjs";import{classRegistry as t}from"../../ClassRegistry.min.mjs";import{SignalAbortedError as o,FabricError as r}from"../internals/console.min.mjs";const s=function(e){let{signal:t,crossOrigin:s=null}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise((function(i,l){if(t&&t.aborted)return l(new o("loadImage"));const a=n();let c;t&&(c=function(e){a.src="",l(e)},t.addEventListener("abort",c,{once:!0}));const m=function(){a.onload=a.onerror=null,c&&(null==t||t.removeEventListener("abort",c)),i(a)};e?(a.onload=m,a.onerror=function(){c&&(null==t||t.removeEventListener("abort",c)),l(new r(`Error loading ${a.src}`))},s&&(a.crossOrigin=s),a.src=e):m()}))},i=function(n){let{signal:o,reviver:r=e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((e,s)=>{const i=[];o&&o.addEventListener("abort",s,{once:!0}),Promise.all(n.map((e=>t.getClass(e.type).fromObject(e,{signal:o}).then((n=>(r(e,n),i.push(n),n)))))).then(e).catch((e=>{i.forEach((e=>{e.dispose&&e.dispose()})),s(e)})).finally((()=>{o&&o.removeEventListener("abort",s)}))}))},l=function(e){let{signal:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((o,r)=>{const s=[];n&&n.addEventListener("abort",r,{once:!0});const l=Object.values(e).map((e=>e&&e.type&&t.has(e.type)?i([e],{signal:n}).then((e=>{let[n]=e;return s.push(n),n})):e)),a=Object.keys(e);Promise.all(l).then((e=>e.reduce(((e,n,t)=>(e[a[t]]=n,e)),{}))).then(o).catch((e=>{s.forEach((e=>{e.dispose&&e.dispose()})),r(e)})).finally((()=>{n&&n.removeEventListener("abort",r)}))}))};export{l as enlivenObjectEnlivables,i as enlivenObjects,s as loadImage};
1
+ import{noop as n}from"../../constants.min.mjs";import{createImage as e}from"./dom.min.mjs";import{classRegistry as t}from"../../ClassRegistry.min.mjs";import{SignalAbortedError as o,log as r,FabricError as s}from"../internals/console.min.mjs";const i=function(n){let{signal:t,crossOrigin:i=null,fallbackToEmptyImage:a=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise((function(l,c){if(t&&t.aborted)return c(new o("loadImage"));const m=e();let d;t&&(d=function(n){m.src="",c(n)},t.addEventListener("abort",d,{once:!0}));const u=function(){m.onload=m.onerror=null,d&&(null==t||t.removeEventListener("abort",d))},f=function(){u(),l(m)};n?(m.onload=f,m.onerror=function(){const n=m.src;if(u(),a)return r("warn","Image failed to load, continuing with an empty image source",n),m.src="",void l(m);c(new s(`Error loading ${n}`))},i&&(m.crossOrigin=i),m.src=n):f()}))},a=function(e){let{signal:o,reviver:r=n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((n,s)=>{const i=[];o&&o.addEventListener("abort",s,{once:!0}),Promise.all(e.map((n=>t.getClass(n.type).fromObject(n,{signal:o}).then((e=>(r(n,e),i.push(e),e)))))).then(n).catch((n=>{i.forEach((n=>{n.dispose&&n.dispose()})),s(n)})).finally((()=>{o&&o.removeEventListener("abort",s)}))}))},l=function(n){let{signal:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((o,r)=>{const s=[];e&&e.addEventListener("abort",r,{once:!0});const i=Object.values(n).map((n=>n&&n.type&&t.has(n.type)?a([n],{signal:e}).then((n=>{let[e]=n;return s.push(e),e})):n)),l=Object.keys(n);Promise.all(i).then((n=>n.reduce(((n,e,t)=>(n[l[t]]=e,n)),{}))).then(o).catch((n=>{s.forEach((n=>{n.dispose&&n.dispose()})),r(n)})).finally((()=>{e&&e.removeEventListener("abort",r)}))}))};export{l as enlivenObjectEnlivables,a as enlivenObjects,i as loadImage};
2
2
  //# sourceMappingURL=objectEnlive.min.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"objectEnlive.min.mjs","sources":["../../../../src/util/misc/objectEnlive.ts"],"sourcesContent":["import { noop } from '../../constants';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport type {\n Abortable,\n Constructor,\n TCrossOrigin,\n TFiller,\n} from '../../typedefs';\nimport { createImage } from './dom';\nimport { classRegistry } from '../../ClassRegistry';\nimport type { BaseFilter } from '../../filters/BaseFilter';\nimport type { FabricObject as BaseFabricObject } from '../../shapes/Object/Object';\nimport { FabricError, SignalAbortedError } from '../internals/console';\nimport type { Shadow } from '../../Shadow';\n\nexport type LoadImageOptions = Abortable & {\n /**\n * cors value for the image loading, default to anonymous\n */\n crossOrigin?: TCrossOrigin;\n};\n\n/**\n * Loads image element from given url and resolve it, or catch.\n * @param {String} url URL representing an image\n * @param {LoadImageOptions} [options] image loading options\n * @returns {Promise<HTMLImageElement>} the loaded image.\n */\nexport const loadImage = (\n url: string,\n { signal, crossOrigin = null }: LoadImageOptions = {},\n) =>\n new Promise<HTMLImageElement>(function (resolve, reject) {\n if (signal && signal.aborted) {\n return reject(new SignalAbortedError('loadImage'));\n }\n const img = createImage();\n let abort: EventListenerOrEventListenerObject;\n if (signal) {\n abort = function (err: Event) {\n img.src = '';\n reject(err);\n };\n signal.addEventListener('abort', abort, { once: true });\n }\n const done = function () {\n img.onload = img.onerror = null;\n abort && signal?.removeEventListener('abort', abort);\n resolve(img);\n };\n if (!url) {\n done();\n return;\n }\n img.onload = done;\n img.onerror = function () {\n abort && signal?.removeEventListener('abort', abort);\n reject(new FabricError(`Error loading ${img.src}`));\n };\n crossOrigin && (img.crossOrigin = crossOrigin);\n img.src = url;\n });\n\nexport type EnlivenObjectOptions = Abortable & {\n /**\n * Method for further parsing of object elements,\n * called after each fabric object created.\n */\n reviver?: <\n T extends\n | BaseFabricObject\n | FabricObject\n | BaseFilter<string>\n | Shadow\n | TFiller,\n >(\n serializedObj: Record<string, any>,\n instance: T,\n ) => void;\n};\n\n/**\n * @TODO type this correctly.\n * Creates corresponding fabric instances from their object representations\n * @param {Object[]} objects Objects to enliven\n * @param {EnlivenObjectOptions} [options]\n * @param {(serializedObj: object, instance: FabricObject) => any} [options.reviver] Method for further parsing of object elements,\n * called after each fabric object created.\n * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal\n * @returns {Promise<FabricObject[]>}\n */\nexport const enlivenObjects = <\n T extends\n | BaseFabricObject\n | FabricObject\n | BaseFilter<string>\n | Shadow\n | TFiller,\n>(\n objects: any[],\n { signal, reviver = noop }: EnlivenObjectOptions = {},\n) =>\n new Promise<T[]>((resolve, reject) => {\n const instances: T[] = [];\n signal && signal.addEventListener('abort', reject, { once: true });\n Promise.all(\n objects.map((obj) =>\n classRegistry\n .getClass<\n Constructor<T> & {\n fromObject(options: any, context: Abortable): Promise<T>;\n }\n >(obj.type)\n .fromObject(obj, { signal })\n .then((fabricInstance) => {\n reviver(obj, fabricInstance);\n instances.push(fabricInstance);\n return fabricInstance;\n }),\n ),\n )\n .then(resolve)\n .catch((error) => {\n // cleanup\n instances.forEach((instance) => {\n (instance as FabricObject).dispose &&\n (instance as FabricObject).dispose();\n });\n reject(error);\n })\n .finally(() => {\n signal && signal.removeEventListener('abort', reject);\n });\n });\n\n/**\n * Creates corresponding fabric instances residing in an object, e.g. `clipPath`\n * @param {Object} object with properties to enlive ( fill, stroke, clipPath, path )\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal\n * @returns {Promise<Record<string, FabricObject | TFiller | null>>} the input object with enlived values\n */\nexport const enlivenObjectEnlivables = <\n R = Record<string, FabricObject | TFiller | null>,\n>(\n serializedObject: any,\n { signal }: Abortable = {},\n) =>\n new Promise<R>((resolve, reject) => {\n const instances: (FabricObject | TFiller | Shadow)[] = [];\n signal && signal.addEventListener('abort', reject, { once: true });\n // enlive every possible property\n const promises = Object.values(serializedObject).map((value: any) => {\n if (!value) {\n return value;\n }\n /**\n * clipPath or shadow or gradient or text on a path or a pattern,\n * or the backgroundImage or overlayImage of canvas\n * If we have a type and there is a classe registered for it, we enlive it.\n * If there is no class registered for it we return the value as is\n * */\n if (value.type && classRegistry.has(value.type)) {\n return enlivenObjects<FabricObject | Shadow | TFiller>([value], {\n signal,\n }).then(([enlived]) => {\n instances.push(enlived);\n return enlived;\n });\n }\n return value;\n });\n const keys = Object.keys(serializedObject);\n Promise.all(promises)\n .then((enlived) => {\n return enlived.reduce((acc, instance, index) => {\n acc[keys[index]] = instance;\n return acc;\n }, {});\n })\n .then(resolve)\n .catch((error) => {\n // cleanup\n instances.forEach((instance: any) => {\n instance.dispose && instance.dispose();\n });\n reject(error);\n })\n .finally(() => {\n signal && signal.removeEventListener('abort', reject);\n });\n });\n"],"names":["loadImage","url","signal","crossOrigin","arguments","length","undefined","Promise","resolve","reject","aborted","SignalAbortedError","img","createImage","abort","err","src","addEventListener","once","done","onload","onerror","removeEventListener","FabricError","enlivenObjects","objects","reviver","noop","instances","all","map","obj","classRegistry","getClass","type","fromObject","then","fabricInstance","push","catch","error","forEach","instance","dispose","finally","enlivenObjectEnlivables","serializedObject","promises","Object","values","value","has","_ref","enlived","keys","reduce","acc","index"],"mappings":"0OA4BaA,MAAAA,EAAY,SACvBC,GAAW,IACXC,OAAEA,EAAMC,YAAEA,EAAc,MAAwBC,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAG,GAAA,CAAE,EAAA,OAErD,IAAIG,SAA0B,SAAUC,EAASC,GAC/C,GAAIP,GAAUA,EAAOQ,QACnB,OAAOD,EAAO,IAAIE,EAAmB,cAEvC,MAAMC,EAAMC,IACZ,IAAIC,EACAZ,IACFY,EAAQ,SAAUC,GAChBH,EAAII,IAAM,GACVP,EAAOM,EACR,EACDb,EAAOe,iBAAiB,QAASH,EAAO,CAAEI,MAAM,KAElD,MAAMC,EAAO,WACXP,EAAIQ,OAASR,EAAIS,QAAU,KAC3BP,IAASZ,SAAAA,EAAQoB,oBAAoB,QAASR,IAC9CN,EAAQI,EACT,EACIX,GAILW,EAAIQ,OAASD,EACbP,EAAIS,QAAU,WACZP,IAASZ,SAAAA,EAAQoB,oBAAoB,QAASR,IAC9CL,EAAO,IAAIc,EAAY,iBAAiBX,EAAII,OAC7C,EACDb,IAAgBS,EAAIT,YAAcA,GAClCS,EAAII,IAAMf,GATRkB,GAUJ,GAAE,EA8BSK,EAAiB,SAQ5BC,GAAc,IACdvB,OAAEA,EAAMwB,QAAEA,EAAUC,GAA4BvB,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAG,GAAA,CAAE,EAAA,OAErD,IAAIG,SAAa,CAACC,EAASC,KACzB,MAAMmB,EAAiB,GACvB1B,GAAUA,EAAOe,iBAAiB,QAASR,EAAQ,CAAES,MAAM,IAC3DX,QAAQsB,IACNJ,EAAQK,KAAKC,GACXC,EACGC,SAICF,EAAIG,MACLC,WAAWJ,EAAK,CAAE7B,WAClBkC,MAAMC,IACLX,EAAQK,EAAKM,GACbT,EAAUU,KAAKD,GACRA,QAIZD,KAAK5B,GACL+B,OAAOC,IAENZ,EAAUa,SAASC,IAChBA,EAA0BC,SACxBD,EAA0BC,SAAS,IAExClC,EAAO+B,EAAM,IAEdI,SAAQ,KACP1C,GAAUA,EAAOoB,oBAAoB,QAASb,EAAO,GACrD,GACJ,EASSoC,EAA0B,SAGrCC,GAAqB,IACrB5C,OAAEA,GAAmBE,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAG,GAAA,CAAE,EAAA,OAE1B,IAAIG,SAAW,CAACC,EAASC,KACvB,MAAMmB,EAAiD,GACvD1B,GAAUA,EAAOe,iBAAiB,QAASR,EAAQ,CAAES,MAAM,IAE3D,MAAM6B,EAAWC,OAAOC,OAAOH,GAAkBhB,KAAKoB,GAC/CA,GASDA,EAAMhB,MAAQF,EAAcmB,IAAID,EAAMhB,MACjCV,EAAgD,CAAC0B,GAAQ,CAC9DhD,WACCkC,MAAKgB,IAAe,IAAbC,GAAQD,EAEhB,OADAxB,EAAUU,KAAKe,GACRA,CAAO,IAbTH,IAkBLI,EAAON,OAAOM,KAAKR,GACzBvC,QAAQsB,IAAIkB,GACTX,MAAMiB,GACEA,EAAQE,QAAO,CAACC,EAAKd,EAAUe,KACpCD,EAAIF,EAAKG,IAAUf,EACZc,IACN,MAEJpB,KAAK5B,GACL+B,OAAOC,IAENZ,EAAUa,SAASC,IACjBA,EAASC,SAAWD,EAASC,SAAS,IAExClC,EAAO+B,EAAM,IAEdI,SAAQ,KACP1C,GAAUA,EAAOoB,oBAAoB,QAASb,EAAO,GACrD,GACJ"}
1
+ {"version":3,"file":"objectEnlive.min.mjs","sources":["../../../../src/util/misc/objectEnlive.ts"],"sourcesContent":["import { noop } from '../../constants';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport type {\n Abortable,\n Constructor,\n TCrossOrigin,\n TFiller,\n} from '../../typedefs';\nimport { createImage } from './dom';\nimport { classRegistry } from '../../ClassRegistry';\nimport type { BaseFilter } from '../../filters/BaseFilter';\nimport type { FabricObject as BaseFabricObject } from '../../shapes/Object/Object';\nimport { FabricError, SignalAbortedError, log } from '../internals/console';\nimport type { Shadow } from '../../Shadow';\n\nexport type LoadImageOptions = Abortable & {\n /**\n * cors value for the image loading, default to anonymous\n */\n crossOrigin?: TCrossOrigin;\n\n /**\n * Resolve with an empty image instead of rejecting when the image fails to load.\n * Useful for deserialization flows where one bad asset should not fail the entire document.\n */\n fallbackToEmptyImage?: boolean;\n};\n\n/**\n * Loads image element from given url and resolve it, or catch.\n * @param {String} url URL representing an image\n * @param {LoadImageOptions} [options] image loading options\n * @returns {Promise<HTMLImageElement>} the loaded image.\n */\nexport const loadImage = (\n url: string,\n {\n signal,\n crossOrigin = null,\n fallbackToEmptyImage = false,\n }: LoadImageOptions = {},\n) =>\n new Promise<HTMLImageElement>(function (resolve, reject) {\n if (signal && signal.aborted) {\n return reject(new SignalAbortedError('loadImage'));\n }\n const img = createImage();\n let abort: EventListenerOrEventListenerObject;\n if (signal) {\n abort = function (err: Event) {\n img.src = '';\n reject(err);\n };\n signal.addEventListener('abort', abort, { once: true });\n }\n const cleanup = function () {\n img.onload = img.onerror = null;\n abort && signal?.removeEventListener('abort', abort);\n };\n const done = function () {\n cleanup();\n resolve(img);\n };\n if (!url) {\n done();\n return;\n }\n img.onload = done;\n img.onerror = function () {\n const failedSrc = img.src;\n cleanup();\n if (fallbackToEmptyImage) {\n log(\n 'warn',\n 'Image failed to load, continuing with an empty image source',\n failedSrc,\n );\n img.src = '';\n resolve(img);\n return;\n }\n reject(new FabricError(`Error loading ${failedSrc}`));\n };\n crossOrigin && (img.crossOrigin = crossOrigin);\n img.src = url;\n });\n\nexport type EnlivenObjectOptions = Abortable & {\n /**\n * Method for further parsing of object elements,\n * called after each fabric object created.\n */\n reviver?: <\n T extends\n | BaseFabricObject\n | FabricObject\n | BaseFilter<string>\n | Shadow\n | TFiller,\n >(\n serializedObj: Record<string, any>,\n instance: T,\n ) => void;\n};\n\n/**\n * @TODO type this correctly.\n * Creates corresponding fabric instances from their object representations\n * @param {Object[]} objects Objects to enliven\n * @param {EnlivenObjectOptions} [options]\n * @param {(serializedObj: object, instance: FabricObject) => any} [options.reviver] Method for further parsing of object elements,\n * called after each fabric object created.\n * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal\n * @returns {Promise<FabricObject[]>}\n */\nexport const enlivenObjects = <\n T extends\n | BaseFabricObject\n | FabricObject\n | BaseFilter<string>\n | Shadow\n | TFiller,\n>(\n objects: any[],\n { signal, reviver = noop }: EnlivenObjectOptions = {},\n) =>\n new Promise<T[]>((resolve, reject) => {\n const instances: T[] = [];\n signal && signal.addEventListener('abort', reject, { once: true });\n Promise.all(\n objects.map((obj) =>\n classRegistry\n .getClass<\n Constructor<T> & {\n fromObject(options: any, context: Abortable): Promise<T>;\n }\n >(obj.type)\n .fromObject(obj, { signal })\n .then((fabricInstance) => {\n reviver(obj, fabricInstance);\n instances.push(fabricInstance);\n return fabricInstance;\n }),\n ),\n )\n .then(resolve)\n .catch((error) => {\n // cleanup\n instances.forEach((instance) => {\n (instance as FabricObject).dispose &&\n (instance as FabricObject).dispose();\n });\n reject(error);\n })\n .finally(() => {\n signal && signal.removeEventListener('abort', reject);\n });\n });\n\n/**\n * Creates corresponding fabric instances residing in an object, e.g. `clipPath`\n * @param {Object} object with properties to enlive ( fill, stroke, clipPath, path )\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal\n * @returns {Promise<Record<string, FabricObject | TFiller | null>>} the input object with enlived values\n */\nexport const enlivenObjectEnlivables = <\n R = Record<string, FabricObject | TFiller | null>,\n>(\n serializedObject: any,\n { signal }: Abortable = {},\n) =>\n new Promise<R>((resolve, reject) => {\n const instances: (FabricObject | TFiller | Shadow)[] = [];\n signal && signal.addEventListener('abort', reject, { once: true });\n // enlive every possible property\n const promises = Object.values(serializedObject).map((value: any) => {\n if (!value) {\n return value;\n }\n /**\n * clipPath or shadow or gradient or text on a path or a pattern,\n * or the backgroundImage or overlayImage of canvas\n * If we have a type and there is a classe registered for it, we enlive it.\n * If there is no class registered for it we return the value as is\n * */\n if (value.type && classRegistry.has(value.type)) {\n return enlivenObjects<FabricObject | Shadow | TFiller>([value], {\n signal,\n }).then(([enlived]) => {\n instances.push(enlived);\n return enlived;\n });\n }\n return value;\n });\n const keys = Object.keys(serializedObject);\n Promise.all(promises)\n .then((enlived) => {\n return enlived.reduce((acc, instance, index) => {\n acc[keys[index]] = instance;\n return acc;\n }, {});\n })\n .then(resolve)\n .catch((error) => {\n // cleanup\n instances.forEach((instance: any) => {\n instance.dispose && instance.dispose();\n });\n reject(error);\n })\n .finally(() => {\n signal && signal.removeEventListener('abort', reject);\n });\n });\n"],"names":["loadImage","url","signal","crossOrigin","fallbackToEmptyImage","arguments","length","undefined","Promise","resolve","reject","aborted","SignalAbortedError","img","createImage","abort","err","src","addEventListener","once","cleanup","onload","onerror","removeEventListener","done","failedSrc","log","FabricError","enlivenObjects","objects","reviver","noop","instances","all","map","obj","classRegistry","getClass","type","fromObject","then","fabricInstance","push","catch","error","forEach","instance","dispose","finally","enlivenObjectEnlivables","serializedObject","promises","Object","values","value","has","_ref","enlived","keys","reduce","acc","index"],"mappings":"mPAkCaA,MAAAA,EAAY,SACvBC,GAAW,IACXC,OACEA,EAAMC,YACNA,EAAc,KAAIC,qBAClBA,GAAuB,GACNC,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAG,GAAA,CAAE,EAAA,OAExB,IAAIG,SAA0B,SAAUC,EAASC,GAC/C,GAAIR,GAAUA,EAAOS,QACnB,OAAOD,EAAO,IAAIE,EAAmB,cAEvC,MAAMC,EAAMC,IACZ,IAAIC,EACAb,IACFa,EAAQ,SAAUC,GAChBH,EAAII,IAAM,GACVP,EAAOM,EACR,EACDd,EAAOgB,iBAAiB,QAASH,EAAO,CAAEI,MAAM,KAElD,MAAMC,EAAU,WACdP,EAAIQ,OAASR,EAAIS,QAAU,KAC3BP,IAASb,SAAAA,EAAQqB,oBAAoB,QAASR,GAC/C,EACKS,EAAO,WACXJ,IACAX,EAAQI,EACT,EACIZ,GAILY,EAAIQ,OAASG,EACbX,EAAIS,QAAU,WACZ,MAAMG,EAAYZ,EAAII,IAEtB,GADAG,IACIhB,EAQF,OAPAsB,EACE,OACA,8DACAD,GAEFZ,EAAII,IAAM,QACVR,EAAQI,GAGVH,EAAO,IAAIiB,EAAY,iBAAiBF,KACzC,EACDtB,IAAgBU,EAAIV,YAAcA,GAClCU,EAAII,IAAMhB,GApBRuB,GAqBJ,GAAE,EA8BSI,EAAiB,SAQ5BC,GAAc,IACd3B,OAAEA,EAAM4B,QAAEA,EAAUC,GAA4B1B,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAG,GAAA,CAAE,EAAA,OAErD,IAAIG,SAAa,CAACC,EAASC,KACzB,MAAMsB,EAAiB,GACvB9B,GAAUA,EAAOgB,iBAAiB,QAASR,EAAQ,CAAES,MAAM,IAC3DX,QAAQyB,IACNJ,EAAQK,KAAKC,GACXC,EACGC,SAICF,EAAIG,MACLC,WAAWJ,EAAK,CAAEjC,WAClBsC,MAAMC,IACLX,EAAQK,EAAKM,GACbT,EAAUU,KAAKD,GACRA,QAIZD,KAAK/B,GACLkC,OAAOC,IAENZ,EAAUa,SAASC,IAChBA,EAA0BC,SACxBD,EAA0BC,SAAS,IAExCrC,EAAOkC,EAAM,IAEdI,SAAQ,KACP9C,GAAUA,EAAOqB,oBAAoB,QAASb,EAAO,GACrD,GACJ,EASSuC,EAA0B,SAGrCC,GAAqB,IACrBhD,OAAEA,GAAmBG,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAG,GAAA,CAAE,EAAA,OAE1B,IAAIG,SAAW,CAACC,EAASC,KACvB,MAAMsB,EAAiD,GACvD9B,GAAUA,EAAOgB,iBAAiB,QAASR,EAAQ,CAAES,MAAM,IAE3D,MAAMgC,EAAWC,OAAOC,OAAOH,GAAkBhB,KAAKoB,GAC/CA,GASDA,EAAMhB,MAAQF,EAAcmB,IAAID,EAAMhB,MACjCV,EAAgD,CAAC0B,GAAQ,CAC9DpD,WACCsC,MAAKgB,IAAe,IAAbC,GAAQD,EAEhB,OADAxB,EAAUU,KAAKe,GACRA,CAAO,IAbTH,IAkBLI,EAAON,OAAOM,KAAKR,GACzB1C,QAAQyB,IAAIkB,GACTX,MAAMiB,GACEA,EAAQE,QAAO,CAACC,EAAKd,EAAUe,KACpCD,EAAIF,EAAKG,IAAUf,EACZc,IACN,MAEJpB,KAAK/B,GACLkC,OAAOC,IAENZ,EAAUa,SAASC,IACjBA,EAASC,SAAWD,EAASC,SAAS,IAExCrC,EAAOkC,EAAM,IAEdI,SAAQ,KACP9C,GAAUA,EAAOqB,oBAAoB,QAASb,EAAO,GACrD,GACJ"}
@@ -1,7 +1,7 @@
1
1
  import { noop } from '../../constants.mjs';
2
2
  import { createImage } from './dom.mjs';
3
3
  import { classRegistry } from '../../ClassRegistry.mjs';
4
- import { SignalAbortedError, FabricError } from '../internals/console.mjs';
4
+ import { SignalAbortedError, log, FabricError } from '../internals/console.mjs';
5
5
 
6
6
  /**
7
7
  * Loads image element from given url and resolve it, or catch.
@@ -12,7 +12,8 @@ import { SignalAbortedError, FabricError } from '../internals/console.mjs';
12
12
  const loadImage = function (url) {
13
13
  let {
14
14
  signal,
15
- crossOrigin = null
15
+ crossOrigin = null,
16
+ fallbackToEmptyImage = false
16
17
  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
17
18
  return new Promise(function (resolve, reject) {
18
19
  if (signal && signal.aborted) {
@@ -29,9 +30,12 @@ const loadImage = function (url) {
29
30
  once: true
30
31
  });
31
32
  }
32
- const done = function () {
33
+ const cleanup = function () {
33
34
  img.onload = img.onerror = null;
34
35
  abort && (signal === null || signal === void 0 ? void 0 : signal.removeEventListener('abort', abort));
36
+ };
37
+ const done = function () {
38
+ cleanup();
35
39
  resolve(img);
36
40
  };
37
41
  if (!url) {
@@ -40,8 +44,15 @@ const loadImage = function (url) {
40
44
  }
41
45
  img.onload = done;
42
46
  img.onerror = function () {
43
- abort && (signal === null || signal === void 0 ? void 0 : signal.removeEventListener('abort', abort));
44
- reject(new FabricError(`Error loading ${img.src}`));
47
+ const failedSrc = img.src;
48
+ cleanup();
49
+ if (fallbackToEmptyImage) {
50
+ log('warn', 'Image failed to load, continuing with an empty image source', failedSrc);
51
+ img.src = '';
52
+ resolve(img);
53
+ return;
54
+ }
55
+ reject(new FabricError(`Error loading ${failedSrc}`));
45
56
  };
46
57
  crossOrigin && (img.crossOrigin = crossOrigin);
47
58
  img.src = url;
@@ -1 +1 @@
1
- {"version":3,"file":"objectEnlive.mjs","sources":["../../../../src/util/misc/objectEnlive.ts"],"sourcesContent":["import { noop } from '../../constants';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport type {\n Abortable,\n Constructor,\n TCrossOrigin,\n TFiller,\n} from '../../typedefs';\nimport { createImage } from './dom';\nimport { classRegistry } from '../../ClassRegistry';\nimport type { BaseFilter } from '../../filters/BaseFilter';\nimport type { FabricObject as BaseFabricObject } from '../../shapes/Object/Object';\nimport { FabricError, SignalAbortedError } from '../internals/console';\nimport type { Shadow } from '../../Shadow';\n\nexport type LoadImageOptions = Abortable & {\n /**\n * cors value for the image loading, default to anonymous\n */\n crossOrigin?: TCrossOrigin;\n};\n\n/**\n * Loads image element from given url and resolve it, or catch.\n * @param {String} url URL representing an image\n * @param {LoadImageOptions} [options] image loading options\n * @returns {Promise<HTMLImageElement>} the loaded image.\n */\nexport const loadImage = (\n url: string,\n { signal, crossOrigin = null }: LoadImageOptions = {},\n) =>\n new Promise<HTMLImageElement>(function (resolve, reject) {\n if (signal && signal.aborted) {\n return reject(new SignalAbortedError('loadImage'));\n }\n const img = createImage();\n let abort: EventListenerOrEventListenerObject;\n if (signal) {\n abort = function (err: Event) {\n img.src = '';\n reject(err);\n };\n signal.addEventListener('abort', abort, { once: true });\n }\n const done = function () {\n img.onload = img.onerror = null;\n abort && signal?.removeEventListener('abort', abort);\n resolve(img);\n };\n if (!url) {\n done();\n return;\n }\n img.onload = done;\n img.onerror = function () {\n abort && signal?.removeEventListener('abort', abort);\n reject(new FabricError(`Error loading ${img.src}`));\n };\n crossOrigin && (img.crossOrigin = crossOrigin);\n img.src = url;\n });\n\nexport type EnlivenObjectOptions = Abortable & {\n /**\n * Method for further parsing of object elements,\n * called after each fabric object created.\n */\n reviver?: <\n T extends\n | BaseFabricObject\n | FabricObject\n | BaseFilter<string>\n | Shadow\n | TFiller,\n >(\n serializedObj: Record<string, any>,\n instance: T,\n ) => void;\n};\n\n/**\n * @TODO type this correctly.\n * Creates corresponding fabric instances from their object representations\n * @param {Object[]} objects Objects to enliven\n * @param {EnlivenObjectOptions} [options]\n * @param {(serializedObj: object, instance: FabricObject) => any} [options.reviver] Method for further parsing of object elements,\n * called after each fabric object created.\n * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal\n * @returns {Promise<FabricObject[]>}\n */\nexport const enlivenObjects = <\n T extends\n | BaseFabricObject\n | FabricObject\n | BaseFilter<string>\n | Shadow\n | TFiller,\n>(\n objects: any[],\n { signal, reviver = noop }: EnlivenObjectOptions = {},\n) =>\n new Promise<T[]>((resolve, reject) => {\n const instances: T[] = [];\n signal && signal.addEventListener('abort', reject, { once: true });\n Promise.all(\n objects.map((obj) =>\n classRegistry\n .getClass<\n Constructor<T> & {\n fromObject(options: any, context: Abortable): Promise<T>;\n }\n >(obj.type)\n .fromObject(obj, { signal })\n .then((fabricInstance) => {\n reviver(obj, fabricInstance);\n instances.push(fabricInstance);\n return fabricInstance;\n }),\n ),\n )\n .then(resolve)\n .catch((error) => {\n // cleanup\n instances.forEach((instance) => {\n (instance as FabricObject).dispose &&\n (instance as FabricObject).dispose();\n });\n reject(error);\n })\n .finally(() => {\n signal && signal.removeEventListener('abort', reject);\n });\n });\n\n/**\n * Creates corresponding fabric instances residing in an object, e.g. `clipPath`\n * @param {Object} object with properties to enlive ( fill, stroke, clipPath, path )\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal\n * @returns {Promise<Record<string, FabricObject | TFiller | null>>} the input object with enlived values\n */\nexport const enlivenObjectEnlivables = <\n R = Record<string, FabricObject | TFiller | null>,\n>(\n serializedObject: any,\n { signal }: Abortable = {},\n) =>\n new Promise<R>((resolve, reject) => {\n const instances: (FabricObject | TFiller | Shadow)[] = [];\n signal && signal.addEventListener('abort', reject, { once: true });\n // enlive every possible property\n const promises = Object.values(serializedObject).map((value: any) => {\n if (!value) {\n return value;\n }\n /**\n * clipPath or shadow or gradient or text on a path or a pattern,\n * or the backgroundImage or overlayImage of canvas\n * If we have a type and there is a classe registered for it, we enlive it.\n * If there is no class registered for it we return the value as is\n * */\n if (value.type && classRegistry.has(value.type)) {\n return enlivenObjects<FabricObject | Shadow | TFiller>([value], {\n signal,\n }).then(([enlived]) => {\n instances.push(enlived);\n return enlived;\n });\n }\n return value;\n });\n const keys = Object.keys(serializedObject);\n Promise.all(promises)\n .then((enlived) => {\n return enlived.reduce((acc, instance, index) => {\n acc[keys[index]] = instance;\n return acc;\n }, {});\n })\n .then(resolve)\n .catch((error) => {\n // cleanup\n instances.forEach((instance: any) => {\n instance.dispose && instance.dispose();\n });\n reject(error);\n })\n .finally(() => {\n signal && signal.removeEventListener('abort', reject);\n });\n });\n"],"names":["loadImage","url","signal","crossOrigin","arguments","length","undefined","Promise","resolve","reject","aborted","SignalAbortedError","img","createImage","abort","err","src","addEventListener","once","done","onload","onerror","removeEventListener","FabricError","enlivenObjects","objects","reviver","noop","instances","all","map","obj","classRegistry","getClass","type","fromObject","then","fabricInstance","push","catch","error","forEach","instance","dispose","finally","enlivenObjectEnlivables","serializedObject","promises","Object","values","value","has","_ref","enlived","keys","reduce","acc","index"],"mappings":"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"}
1
+ {"version":3,"file":"objectEnlive.mjs","sources":["../../../../src/util/misc/objectEnlive.ts"],"sourcesContent":["import { noop } from '../../constants';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport type {\n Abortable,\n Constructor,\n TCrossOrigin,\n TFiller,\n} from '../../typedefs';\nimport { createImage } from './dom';\nimport { classRegistry } from '../../ClassRegistry';\nimport type { BaseFilter } from '../../filters/BaseFilter';\nimport type { FabricObject as BaseFabricObject } from '../../shapes/Object/Object';\nimport { FabricError, SignalAbortedError, log } from '../internals/console';\nimport type { Shadow } from '../../Shadow';\n\nexport type LoadImageOptions = Abortable & {\n /**\n * cors value for the image loading, default to anonymous\n */\n crossOrigin?: TCrossOrigin;\n\n /**\n * Resolve with an empty image instead of rejecting when the image fails to load.\n * Useful for deserialization flows where one bad asset should not fail the entire document.\n */\n fallbackToEmptyImage?: boolean;\n};\n\n/**\n * Loads image element from given url and resolve it, or catch.\n * @param {String} url URL representing an image\n * @param {LoadImageOptions} [options] image loading options\n * @returns {Promise<HTMLImageElement>} the loaded image.\n */\nexport const loadImage = (\n url: string,\n {\n signal,\n crossOrigin = null,\n fallbackToEmptyImage = false,\n }: LoadImageOptions = {},\n) =>\n new Promise<HTMLImageElement>(function (resolve, reject) {\n if (signal && signal.aborted) {\n return reject(new SignalAbortedError('loadImage'));\n }\n const img = createImage();\n let abort: EventListenerOrEventListenerObject;\n if (signal) {\n abort = function (err: Event) {\n img.src = '';\n reject(err);\n };\n signal.addEventListener('abort', abort, { once: true });\n }\n const cleanup = function () {\n img.onload = img.onerror = null;\n abort && signal?.removeEventListener('abort', abort);\n };\n const done = function () {\n cleanup();\n resolve(img);\n };\n if (!url) {\n done();\n return;\n }\n img.onload = done;\n img.onerror = function () {\n const failedSrc = img.src;\n cleanup();\n if (fallbackToEmptyImage) {\n log(\n 'warn',\n 'Image failed to load, continuing with an empty image source',\n failedSrc,\n );\n img.src = '';\n resolve(img);\n return;\n }\n reject(new FabricError(`Error loading ${failedSrc}`));\n };\n crossOrigin && (img.crossOrigin = crossOrigin);\n img.src = url;\n });\n\nexport type EnlivenObjectOptions = Abortable & {\n /**\n * Method for further parsing of object elements,\n * called after each fabric object created.\n */\n reviver?: <\n T extends\n | BaseFabricObject\n | FabricObject\n | BaseFilter<string>\n | Shadow\n | TFiller,\n >(\n serializedObj: Record<string, any>,\n instance: T,\n ) => void;\n};\n\n/**\n * @TODO type this correctly.\n * Creates corresponding fabric instances from their object representations\n * @param {Object[]} objects Objects to enliven\n * @param {EnlivenObjectOptions} [options]\n * @param {(serializedObj: object, instance: FabricObject) => any} [options.reviver] Method for further parsing of object elements,\n * called after each fabric object created.\n * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal\n * @returns {Promise<FabricObject[]>}\n */\nexport const enlivenObjects = <\n T extends\n | BaseFabricObject\n | FabricObject\n | BaseFilter<string>\n | Shadow\n | TFiller,\n>(\n objects: any[],\n { signal, reviver = noop }: EnlivenObjectOptions = {},\n) =>\n new Promise<T[]>((resolve, reject) => {\n const instances: T[] = [];\n signal && signal.addEventListener('abort', reject, { once: true });\n Promise.all(\n objects.map((obj) =>\n classRegistry\n .getClass<\n Constructor<T> & {\n fromObject(options: any, context: Abortable): Promise<T>;\n }\n >(obj.type)\n .fromObject(obj, { signal })\n .then((fabricInstance) => {\n reviver(obj, fabricInstance);\n instances.push(fabricInstance);\n return fabricInstance;\n }),\n ),\n )\n .then(resolve)\n .catch((error) => {\n // cleanup\n instances.forEach((instance) => {\n (instance as FabricObject).dispose &&\n (instance as FabricObject).dispose();\n });\n reject(error);\n })\n .finally(() => {\n signal && signal.removeEventListener('abort', reject);\n });\n });\n\n/**\n * Creates corresponding fabric instances residing in an object, e.g. `clipPath`\n * @param {Object} object with properties to enlive ( fill, stroke, clipPath, path )\n * @param {object} [options]\n * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal\n * @returns {Promise<Record<string, FabricObject | TFiller | null>>} the input object with enlived values\n */\nexport const enlivenObjectEnlivables = <\n R = Record<string, FabricObject | TFiller | null>,\n>(\n serializedObject: any,\n { signal }: Abortable = {},\n) =>\n new Promise<R>((resolve, reject) => {\n const instances: (FabricObject | TFiller | Shadow)[] = [];\n signal && signal.addEventListener('abort', reject, { once: true });\n // enlive every possible property\n const promises = Object.values(serializedObject).map((value: any) => {\n if (!value) {\n return value;\n }\n /**\n * clipPath or shadow or gradient or text on a path or a pattern,\n * or the backgroundImage or overlayImage of canvas\n * If we have a type and there is a classe registered for it, we enlive it.\n * If there is no class registered for it we return the value as is\n * */\n if (value.type && classRegistry.has(value.type)) {\n return enlivenObjects<FabricObject | Shadow | TFiller>([value], {\n signal,\n }).then(([enlived]) => {\n instances.push(enlived);\n return enlived;\n });\n }\n return value;\n });\n const keys = Object.keys(serializedObject);\n Promise.all(promises)\n .then((enlived) => {\n return enlived.reduce((acc, instance, index) => {\n acc[keys[index]] = instance;\n return acc;\n }, {});\n })\n .then(resolve)\n .catch((error) => {\n // cleanup\n instances.forEach((instance: any) => {\n instance.dispose && instance.dispose();\n });\n reject(error);\n })\n .finally(() => {\n signal && signal.removeEventListener('abort', reject);\n });\n });\n"],"names":["loadImage","url","signal","crossOrigin","fallbackToEmptyImage","arguments","length","undefined","Promise","resolve","reject","aborted","SignalAbortedError","img","createImage","abort","err","src","addEventListener","once","cleanup","onload","onerror","removeEventListener","done","failedSrc","log","FabricError","enlivenObjects","objects","reviver","noop","instances","all","map","obj","classRegistry","getClass","type","fromObject","then","fabricInstance","push","catch","error","forEach","instance","dispose","finally","enlivenObjectEnlivables","serializedObject","promises","Object","values","value","has","_ref","enlived","keys","reduce","acc","index"],"mappings":";;;;;AA4BA;AACA;AACA;AACA;AACA;AACA;AACaA,MAAAA,SAAS,GAAG,UACvBC,GAAW,EAAA;EAAA,IACX;IACEC,MAAM;AACNC,IAAAA,WAAW,GAAG,IAAI;AAClBC,IAAAA,oBAAoB,GAAG;AACP,GAAC,GAAAC,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAG,CAAA,CAAA,GAAA,EAAE;AAAA,EAAA,OAExB,IAAIG,OAAO,CAAmB,UAAUC,OAAO,EAAEC,MAAM,EAAE;AACvD,IAAA,IAAIR,MAAM,IAAIA,MAAM,CAACS,OAAO,EAAE;AAC5B,MAAA,OAAOD,MAAM,CAAC,IAAIE,kBAAkB,CAAC,WAAW,CAAC,CAAC;AACpD;AACA,IAAA,MAAMC,GAAG,GAAGC,WAAW,EAAE;AACzB,IAAA,IAAIC,KAAyC;AAC7C,IAAA,IAAIb,MAAM,EAAE;AACVa,MAAAA,KAAK,GAAG,UAAUC,GAAU,EAAE;QAC5BH,GAAG,CAACI,GAAG,GAAG,EAAE;QACZP,MAAM,CAACM,GAAG,CAAC;OACZ;AACDd,MAAAA,MAAM,CAACgB,gBAAgB,CAAC,OAAO,EAAEH,KAAK,EAAE;AAAEI,QAAAA,IAAI,EAAE;AAAK,OAAC,CAAC;AACzD;AACA,IAAA,MAAMC,OAAO,GAAG,YAAY;AAC1BP,MAAAA,GAAG,CAACQ,MAAM,GAAGR,GAAG,CAACS,OAAO,GAAG,IAAI;AAC/BP,MAAAA,KAAK,KAAIb,MAAM,KAANA,IAAAA,IAAAA,MAAM,KAANA,MAAAA,GAAAA,MAAAA,GAAAA,MAAM,CAAEqB,mBAAmB,CAAC,OAAO,EAAER,KAAK,CAAC,CAAA;KACrD;AACD,IAAA,MAAMS,IAAI,GAAG,YAAY;AACvBJ,MAAAA,OAAO,EAAE;MACTX,OAAO,CAACI,GAAG,CAAC;KACb;IACD,IAAI,CAACZ,GAAG,EAAE;AACRuB,MAAAA,IAAI,EAAE;AACN,MAAA;AACF;IACAX,GAAG,CAACQ,MAAM,GAAGG,IAAI;IACjBX,GAAG,CAACS,OAAO,GAAG,YAAY;AACxB,MAAA,MAAMG,SAAS,GAAGZ,GAAG,CAACI,GAAG;AACzBG,MAAAA,OAAO,EAAE;AACT,MAAA,IAAIhB,oBAAoB,EAAE;AACxBsB,QAAAA,GAAG,CACD,MAAM,EACN,6DAA6D,EAC7DD,SACF,CAAC;QACDZ,GAAG,CAACI,GAAG,GAAG,EAAE;QACZR,OAAO,CAACI,GAAG,CAAC;AACZ,QAAA;AACF;MACAH,MAAM,CAAC,IAAIiB,WAAW,CAAC,iBAAiBF,SAAS,CAAA,CAAE,CAAC,CAAC;KACtD;AACDtB,IAAAA,WAAW,KAAKU,GAAG,CAACV,WAAW,GAAGA,WAAW,CAAC;IAC9CU,GAAG,CAACI,GAAG,GAAGhB,GAAG;AACf,GAAC,CAAC;AAAA;AAoBJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACa2B,MAAAA,cAAc,GAAG,UAQ5BC,OAAc,EAAA;EAAA,IACd;IAAE3B,MAAM;AAAE4B,IAAAA,OAAO,GAAGC;AAA2B,GAAC,GAAA1B,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAG,CAAA,CAAA,GAAA,EAAE;AAAA,EAAA,OAErD,IAAIG,OAAO,CAAM,CAACC,OAAO,EAAEC,MAAM,KAAK;IACpC,MAAMsB,SAAc,GAAG,EAAE;IACzB9B,MAAM,IAAIA,MAAM,CAACgB,gBAAgB,CAAC,OAAO,EAAER,MAAM,EAAE;AAAES,MAAAA,IAAI,EAAE;AAAK,KAAC,CAAC;IAClEX,OAAO,CAACyB,GAAG,CACTJ,OAAO,CAACK,GAAG,CAAEC,GAAG,IACdC,aAAa,CACVC,QAAQ,CAIPF,GAAG,CAACG,IAAI,CAAC,CACVC,UAAU,CAACJ,GAAG,EAAE;AAAEjC,MAAAA;AAAO,KAAC,CAAC,CAC3BsC,IAAI,CAAEC,cAAc,IAAK;AACxBX,MAAAA,OAAO,CAACK,GAAG,EAAEM,cAAc,CAAC;AAC5BT,MAAAA,SAAS,CAACU,IAAI,CAACD,cAAc,CAAC;AAC9B,MAAA,OAAOA,cAAc;AACvB,KAAC,CACL,CACF,CAAC,CACED,IAAI,CAAC/B,OAAO,CAAC,CACbkC,KAAK,CAAEC,KAAK,IAAK;AAChB;AACAZ,MAAAA,SAAS,CAACa,OAAO,CAAEC,QAAQ,IAAK;AAC7BA,QAAAA,QAAQ,CAAkBC,OAAO,IAC/BD,QAAQ,CAAkBC,OAAO,EAAE;AACxC,OAAC,CAAC;MACFrC,MAAM,CAACkC,KAAK,CAAC;AACf,KAAC,CAAC,CACDI,OAAO,CAAC,MAAM;MACb9C,MAAM,IAAIA,MAAM,CAACqB,mBAAmB,CAAC,OAAO,EAAEb,MAAM,CAAC;AACvD,KAAC,CAAC;AACN,GAAC,CAAC;AAAA;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACauC,MAAAA,uBAAuB,GAAG,UAGrCC,gBAAqB,EAAA;EAAA,IACrB;AAAEhD,IAAAA;AAAkB,GAAC,GAAAG,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAG,CAAA,CAAA,GAAA,EAAE;AAAA,EAAA,OAE1B,IAAIG,OAAO,CAAI,CAACC,OAAO,EAAEC,MAAM,KAAK;IAClC,MAAMsB,SAA8C,GAAG,EAAE;IACzD9B,MAAM,IAAIA,MAAM,CAACgB,gBAAgB,CAAC,OAAO,EAAER,MAAM,EAAE;AAAES,MAAAA,IAAI,EAAE;AAAK,KAAC,CAAC;AAClE;AACA,IAAA,MAAMgC,QAAQ,GAAGC,MAAM,CAACC,MAAM,CAACH,gBAAgB,CAAC,CAAChB,GAAG,CAAEoB,KAAU,IAAK;MACnE,IAAI,CAACA,KAAK,EAAE;AACV,QAAA,OAAOA,KAAK;AACd;AACA;AACN;AACA;AACA;AACA;AACA;AACM,MAAA,IAAIA,KAAK,CAAChB,IAAI,IAAIF,aAAa,CAACmB,GAAG,CAACD,KAAK,CAAChB,IAAI,CAAC,EAAE;AAC/C,QAAA,OAAOV,cAAc,CAAkC,CAAC0B,KAAK,CAAC,EAAE;AAC9DpD,UAAAA;AACF,SAAC,CAAC,CAACsC,IAAI,CAACgB,IAAA,IAAe;AAAA,UAAA,IAAd,CAACC,OAAO,CAAC,GAAAD,IAAA;AAChBxB,UAAAA,SAAS,CAACU,IAAI,CAACe,OAAO,CAAC;AACvB,UAAA,OAAOA,OAAO;AAChB,SAAC,CAAC;AACJ;AACA,MAAA,OAAOH,KAAK;AACd,KAAC,CAAC;AACF,IAAA,MAAMI,IAAI,GAAGN,MAAM,CAACM,IAAI,CAACR,gBAAgB,CAAC;IAC1C1C,OAAO,CAACyB,GAAG,CAACkB,QAAQ,CAAC,CAClBX,IAAI,CAAEiB,OAAO,IAAK;MACjB,OAAOA,OAAO,CAACE,MAAM,CAAC,CAACC,GAAG,EAAEd,QAAQ,EAAEe,KAAK,KAAK;AAC9CD,QAAAA,GAAG,CAACF,IAAI,CAACG,KAAK,CAAC,CAAC,GAAGf,QAAQ;AAC3B,QAAA,OAAOc,GAAG;OACX,EAAE,EAAE,CAAC;KACP,CAAC,CACDpB,IAAI,CAAC/B,OAAO,CAAC,CACbkC,KAAK,CAAEC,KAAK,IAAK;AAChB;AACAZ,MAAAA,SAAS,CAACa,OAAO,CAAEC,QAAa,IAAK;AACnCA,QAAAA,QAAQ,CAACC,OAAO,IAAID,QAAQ,CAACC,OAAO,EAAE;AACxC,OAAC,CAAC;MACFrC,MAAM,CAACkC,KAAK,CAAC;AACf,KAAC,CAAC,CACDI,OAAO,CAAC,MAAM;MACb9C,MAAM,IAAIA,MAAM,CAACqB,mBAAmB,CAAC,OAAO,EAAEb,MAAM,CAAC;AACvD,KAAC,CAAC;AACN,GAAC,CAAC;AAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Pattern.d.ts","sourceRoot":"","sources":["../../../src/Pattern/Pattern.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAO1E,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,wBAAwB,EACzB,MAAM,SAAS,CAAC;AAGjB;;;GAGG;AACH,qBAAa,OAAO;IAClB,MAAM,CAAC,IAAI,SAAa;IAExB;;;;;;;OAOG;IACH,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,CAAC,KAAK,QAAA,EAEb;IAED;;;OAGG;IACH,MAAM,EAAE,aAAa,CAAY;IAEjC;;;;OAIG;IACH,OAAO,SAAK;IAEZ;;;;OAIG;IACH,OAAO,SAAK;IAEZ;;;OAGG;IACH,WAAW,EAAE,YAAY,CAAM;IAE/B;;;;;OAKG;IACK,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAElC;;OAEG;IACK,MAAM,EAAE,iBAAiB,CAAC;IAElC;;;OAGG;IACK,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAEpC;;;OAGG;IACH,SAAiB,EAAE,EAAE,MAAM,CAAC;IAE5B;;;;OAIG;gBACS,OAAO,EAAE,cAAc;IAKnC;;OAEG;IACH,aAAa,IAAI,IAAI,IAAI;QAAE,MAAM,EAAE,gBAAgB,CAAA;KAAE;IAMrD;;OAEG;IACH,cAAc,IAAI,IAAI,IAAI;QAAE,MAAM,EAAE,iBAAiB,CAAA;KAAE;IAIvD,cAAc,IAAI,MAAM;IAQxB;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,wBAAwB,GAAG,aAAa,GAAG,IAAI;IAgB3D;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,GAAE,MAAM,EAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAiBjE;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,GAAG,MAAM;WAgC1B,UAAU,CACrB,EACE,IAAI,EACJ,MAAM,EACN,gBAAgB,EAChB,GAAG,YAAY,EAChB,EAAE,wBAAwB,EAC3B,OAAO,CAAC,EAAE,SAAS,GAClB,OAAO,CAAC,OAAO,CAAC;CAYpB"}
1
+ {"version":3,"file":"Pattern.d.ts","sourceRoot":"","sources":["../../../src/Pattern/Pattern.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAO1E,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,wBAAwB,EACzB,MAAM,SAAS,CAAC;AAGjB;;;GAGG;AACH,qBAAa,OAAO;IAClB,MAAM,CAAC,IAAI,SAAa;IAExB;;;;;;;OAOG;IACH,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,CAAC,KAAK,QAAA,EAEb;IAED;;;OAGG;IACH,MAAM,EAAE,aAAa,CAAY;IAEjC;;;;OAIG;IACH,OAAO,SAAK;IAEZ;;;;OAIG;IACH,OAAO,SAAK;IAEZ;;;OAGG;IACH,WAAW,EAAE,YAAY,CAAM;IAE/B;;;;;OAKG;IACK,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAElC;;OAEG;IACK,MAAM,EAAE,iBAAiB,CAAC;IAElC;;;OAGG;IACK,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAEpC;;;OAGG;IACH,SAAiB,EAAE,EAAE,MAAM,CAAC;IAE5B;;;;OAIG;gBACS,OAAO,EAAE,cAAc;IAKnC;;OAEG;IACH,aAAa,IAAI,IAAI,IAAI;QAAE,MAAM,EAAE,gBAAgB,CAAA;KAAE;IAMrD;;OAEG;IACH,cAAc,IAAI,IAAI,IAAI;QAAE,MAAM,EAAE,iBAAiB,CAAA;KAAE;IAIvD,cAAc,IAAI,MAAM;IAQxB;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,wBAAwB,GAAG,aAAa,GAAG,IAAI;IAgB3D;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,GAAE,MAAM,EAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAiBjE;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,GAAG,MAAM;WAgC1B,UAAU,CACrB,EACE,IAAI,EACJ,MAAM,EACN,gBAAgB,EAChB,GAAG,YAAY,EAChB,EAAE,wBAAwB,EAC3B,OAAO,CAAC,EAAE,SAAS,GAClB,OAAO,CAAC,OAAO,CAAC;CAcpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"StaticCanvas.d.ts","sourceRoot":"","sources":["../../../src/canvas/StaticCanvas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StaticCanvas.d.ts","sourceRoot":"","sources":["../../../src/canvas/StaticCanvas.ts"],"names":[],"mappings":"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"}
@@ -289,8 +289,8 @@ export declare class FabricImage<Props extends TOptions<ImageProps> = Partial<Im
289
289
  */
290
290
  static fromObject<T extends TOptions<SerializedImageProps>>({ filters: f, resizeFilter: rf, src, crossOrigin, type, ...object }: T, options?: Abortable): Promise<FabricImage<Omit<T, "type" | "filters" | "resizeFilter" | "src" | "crossOrigin"> & {
291
291
  src: string | undefined;
292
- filters: BaseFilter<string, object, object>[];
293
- resizeFilter: any;
292
+ filters: BaseFilter<string, Record<string, any>, Record<string, any>>[];
293
+ resizeFilter: Resize;
294
294
  }, SerializedImageProps, ObjectEvents>>;
295
295
  /**
296
296
  * Creates an instance of Image from an URL string
@@ -1 +1 @@
1
- {"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../src/shapes/Image.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../src/shapes/Image.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FabricObjectSVGExportMixin.d.ts","sourceRoot":"","sources":["../../../../src/shapes/Object/FabricObjectSVGExportMixin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAIlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAKnD,qBAAa,0BAA0B;IACrC;;;;OAIG;IACK,UAAU,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACK,eAAe,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAE9C;;;;OAIG;IACH,YAAY,CACV,IAAI,EAAE,0BAA0B,GAAG,YAAY,EAC/C,UAAU,CAAC,EAAE,OAAO;IAoDtB;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,0BAA0B,GAAG,YAAY;IAI5D;;;OAGG;IACH,aAAa,CACX,IAAI,EAAE,0BAA0B,GAAG,YAAY,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE;IAanE;;;;OAIG;IACH,eAAe,CACb,IAAI,EAAE,0BAA0B,GAAG,YAAY,EAC/C,IAAI,CAAC,EAAE,OAAO,EACd,mBAAmB,SAAK;IAO1B;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAIxC;;;;OAIG;IACH,KAAK,CACH,IAAI,EAAE,0BAA0B,GAAG,YAAY,EAC/C,OAAO,CAAC,EAAE,WAAW;IAOvB;;;;OAIG;IACH,aAAa,CACX,IAAI,EAAE,0BAA0B,GAAG,YAAY,EAC/C,OAAO,CAAC,EAAE,WAAW;IAUvB;;;;OAIG;IACH,oBAAoB,CAClB,IAAI,EAAE,0BAA0B,GAAG,YAAY,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE;IAUnE;;;;OAIG;IACH,qBAAqB,CACnB,IAAI,EAAE,0BAA0B,GAAG,YAAY,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE;IASnE;;;;;OAKG;IACH,uBAAuB,CACrB,IAAI,EAAE,0BAA0B,GAAG,YAAY,EAC/C,IAAI,EAAE,OAAO,EACb,mBAAmB,SAAK;IAY1B;;OAEG;IACH,4BAA4B,CAC1B,IAAI,EAAE,0BAA0B,GAAG,YAAY,EAC/C,YAAY,EAAE,MAAM,EAAE,EACtB,EACE,OAAO,EACP,mBAAwB,GACzB,GAAE;QAAE,OAAO,CAAC,EAAE,WAAW,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;KAAO;IAYjE;;OAEG;IACH,oBAAoB,CAClB,IAAI,EAAE,0BAA0B,GAAG,YAAY,EAC/C,YAAY,EAAE,MAAM,EAAE,EACtB,EACE,OAAO,EACP,OAAO,EACP,UAAU,EACV,mBAAmB,GACpB,GAAE;QACD,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,WAAW,CAAC;QACtB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KACzB,GACL,MAAM;IA+FT,aAAa,CAAC,IAAI,EAAE,0BAA0B,GAAG,YAAY;CAG9D"}
1
+ {"version":3,"file":"FabricObjectSVGExportMixin.d.ts","sourceRoot":"","sources":["../../../../src/shapes/Object/FabricObjectSVGExportMixin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAIlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAKnD,qBAAa,0BAA0B;IACrC;;;;OAIG;IACK,UAAU,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACK,eAAe,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAE9C;;;;OAIG;IACH,YAAY,CACV,IAAI,EAAE,0BAA0B,GAAG,YAAY,EAC/C,UAAU,CAAC,EAAE,OAAO;IAoDtB;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,0BAA0B,GAAG,YAAY;IAI5D;;;OAGG;IACH,aAAa,CACX,IAAI,EAAE,0BAA0B,GAAG,YAAY,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE;IAanE;;;;OAIG;IACH,eAAe,CACb,IAAI,EAAE,0BAA0B,GAAG,YAAY,EAC/C,IAAI,CAAC,EAAE,OAAO,EACd,mBAAmB,SAAK;IAO1B;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE;IAIxC;;;;OAIG;IACH,KAAK,CACH,IAAI,EAAE,0BAA0B,GAAG,YAAY,EAC/C,OAAO,CAAC,EAAE,WAAW;IAOvB;;;;OAIG;IACH,aAAa,CACX,IAAI,EAAE,0BAA0B,GAAG,YAAY,EAC/C,OAAO,CAAC,EAAE,WAAW;IAUvB;;;;OAIG;IACH,oBAAoB,CAClB,IAAI,EAAE,0BAA0B,GAAG,YAAY,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE;IAUnE;;;;OAIG;IACH,qBAAqB,CACnB,IAAI,EAAE,0BAA0B,GAAG,YAAY,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE;IASnE;;;;;OAKG;IACH,uBAAuB,CACrB,IAAI,EAAE,0BAA0B,GAAG,YAAY,EAC/C,IAAI,EAAE,OAAO,EACb,mBAAmB,SAAK;IAY1B;;OAEG;IACH,4BAA4B,CAC1B,IAAI,EAAE,0BAA0B,GAAG,YAAY,EAC/C,YAAY,EAAE,MAAM,EAAE,EACtB,EACE,OAAO,EACP,mBAAwB,GACzB,GAAE;QAAE,OAAO,CAAC,EAAE,WAAW,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;KAAO;IAYjE;;OAEG;IACH,oBAAoB,CAClB,IAAI,EAAE,0BAA0B,GAAG,YAAY,EAC/C,YAAY,EAAE,MAAM,EAAE,EACtB,EACE,OAAO,EACP,OAAO,EACP,UAAU,EACV,mBAAmB,GACpB,GAAE;QACD,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,WAAW,CAAC;QACtB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KACzB,GACL,MAAM;IAmGT,aAAa,CAAC,IAAI,EAAE,0BAA0B,GAAG,YAAY;CAG9D"}
@@ -8,6 +8,11 @@ export type LoadImageOptions = Abortable & {
8
8
  * cors value for the image loading, default to anonymous
9
9
  */
10
10
  crossOrigin?: TCrossOrigin;
11
+ /**
12
+ * Resolve with an empty image instead of rejecting when the image fails to load.
13
+ * Useful for deserialization flows where one bad asset should not fail the entire document.
14
+ */
15
+ fallbackToEmptyImage?: boolean;
11
16
  };
12
17
  /**
13
18
  * Loads image element from given url and resolve it, or catch.
@@ -15,7 +20,7 @@ export type LoadImageOptions = Abortable & {
15
20
  * @param {LoadImageOptions} [options] image loading options
16
21
  * @returns {Promise<HTMLImageElement>} the loaded image.
17
22
  */
18
- export declare const loadImage: (url: string, { signal, crossOrigin }?: LoadImageOptions) => Promise<HTMLImageElement>;
23
+ export declare const loadImage: (url: string, { signal, crossOrigin, fallbackToEmptyImage, }?: LoadImageOptions) => Promise<HTMLImageElement>;
19
24
  export type EnlivenObjectOptions = Abortable & {
20
25
  /**
21
26
  * Method for further parsing of object elements,
@@ -1 +1 @@
1
- {"version":3,"file":"objectEnlive.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/objectEnlive.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EACV,SAAS,EAET,YAAY,EACZ,OAAO,EACR,MAAM,gBAAgB,CAAC;AAGxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG;IACzC;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,QACf,MAAM,4BACqB,gBAAgB,8BA+B9C,CAAC;AAEL,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG;IAC7C;;;OAGG;IACH,OAAO,CAAC,EAAE,CACR,CAAC,SACG,gBAAgB,GAChB,YAAY,GACZ,UAAU,CAAC,MAAM,CAAC,GAClB,MAAM,GACN,OAAO,EAEX,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAClC,QAAQ,EAAE,CAAC,KACR,IAAI,CAAC;CACX,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GACzB,CAAC,SACG,gBAAgB,GAChB,YAAY,GACZ,UAAU,CAAC,MAAM,CAAC,GAClB,MAAM,GACN,OAAO,WAEF,GAAG,EAAE,wBACc,oBAAoB,iBAiC9C,CAAC;AAEL;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,CAAC,yMAEiB,GAAG,eACT,SAAS,eA6CnB,CAAC"}
1
+ {"version":3,"file":"objectEnlive.d.ts","sourceRoot":"","sources":["../../../../src/util/misc/objectEnlive.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EACV,SAAS,EAET,YAAY,EACZ,OAAO,EACR,MAAM,gBAAgB,CAAC;AAGxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG;IACzC;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;IAE3B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,QACf,MAAM,mDAKR,gBAAgB,8BA6CjB,CAAC;AAEL,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG;IAC7C;;;OAGG;IACH,OAAO,CAAC,EAAE,CACR,CAAC,SACG,gBAAgB,GAChB,YAAY,GACZ,UAAU,CAAC,MAAM,CAAC,GAClB,MAAM,GACN,OAAO,EAEX,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAClC,QAAQ,EAAE,CAAC,KACR,IAAI,CAAC;CACX,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GACzB,CAAC,SACG,gBAAgB,GAChB,YAAY,GACZ,UAAU,CAAC,MAAM,CAAC,GAClB,MAAM,GACN,OAAO,WAEF,GAAG,EAAE,wBACc,oBAAoB,iBAiC9C,CAAC;AAEL;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,CAAC,yMAEiB,GAAG,eACT,SAAS,eA6CnB,CAAC"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "fabric-vectr",
3
3
  "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.",
4
4
  "homepage": "http://fabricjs.com/",
5
- "version": "6.7.12",
5
+ "version": "6.7.14",
6
6
  "author": "Juriy Zaytsev <kangax@gmail.com>",
7
7
  "contributors": [
8
8
  {
@@ -39,37 +39,6 @@
39
39
  "url": "https://github.com/fabricjs/fabric.js/issues"
40
40
  },
41
41
  "license": "MIT",
42
- "scripts": {
43
- "docs": "typedoc",
44
- "cli": "node ./scripts/index.mjs",
45
- "sandboxscript": "node ./scripts/sandbox.mjs",
46
- "build": "npm run cli -- build",
47
- "build:fast": "npm run build -- -f",
48
- "yalc": "npm run build:fast && yalc push",
49
- "watch": "nodemon --ignore dist/ --ignore node_modules/ --watch src/ -C -e ts,tsx,scss --debug -x 'npm run yalc'",
50
- "dev": "npm run cli -- dev",
51
- "start": "npm run sandboxscript -- start",
52
- "export": "npm run cli -- website export",
53
- "build-tests": "rollup -c ./rollup.test.config.js",
54
- "test:vitest": "vitest --run",
55
- "test": "npm run cli -- test",
56
- "sandbox": "npm run sandboxscript -- sandbox",
57
- "test:unit-browser": "npm run cli -- test --suite unit --launch --context chrome",
58
- "test:visual-browser": "npm run test -- -s visual -p 8081 -l -c chrome firefox",
59
- "test:coverage": "nyc --silent qunit test/node_test_setup.js test/lib test/unit",
60
- "test:visual:coverage": "nyc --silent --no-clean qunit test/node_test_setup.js test/lib test/visual",
61
- "test:vitest:coverage": "vitest --coverage=true --run",
62
- "test:vitest:coverage:watch": "vitest --coverage=true",
63
- "coverage:merge": "nyc merge coveragefiles .nyc_output/merged-coverage.json",
64
- "local-server": "http-server ./ -d=false",
65
- "test:e2e": "npx playwright test --headed",
66
- "coverage:report": "nyc report --reporter=lcov --reporter=text",
67
- "lint": "eslint src extensions",
68
- "prettier:check": "prettier --check .",
69
- "prettier:write": "prettier --write .",
70
- "babel-constants": "babel --no-babelrc src/constants.ts --extensions '.ts' --out-dir dist/src/ --config-file ./.babelrcAlt --plugins=babel-plugin-import-json-value",
71
- "babel-src": "babel --no-babelrc src --extensions '.ts' --ignore 'src/constants.ts' --out-dir dist/src --config-file ./.babelrcAlt"
72
- },
73
42
  "devDependencies": {
74
43
  "@babel/cli": "^7.22.9",
75
44
  "@babel/core": "^7.22.9",
@@ -174,5 +143,36 @@
174
143
  "optionalDependencies": {
175
144
  "canvas": "^3.1.0",
176
145
  "jsdom": "^26.0.0"
146
+ },
147
+ "scripts": {
148
+ "docs": "typedoc",
149
+ "cli": "node ./scripts/index.mjs",
150
+ "sandboxscript": "node ./scripts/sandbox.mjs",
151
+ "build": "npm run cli -- build",
152
+ "build:fast": "npm run build -- -f",
153
+ "yalc": "npm run build:fast && yalc push",
154
+ "watch": "nodemon --ignore dist/ --ignore node_modules/ --watch src/ -C -e ts,tsx,scss --debug -x 'npm run yalc'",
155
+ "dev": "npm run cli -- dev",
156
+ "start": "npm run sandboxscript -- start",
157
+ "export": "npm run cli -- website export",
158
+ "build-tests": "rollup -c ./rollup.test.config.js",
159
+ "test:vitest": "vitest --run",
160
+ "test": "npm run cli -- test",
161
+ "sandbox": "npm run sandboxscript -- sandbox",
162
+ "test:unit-browser": "npm run cli -- test --suite unit --launch --context chrome",
163
+ "test:visual-browser": "npm run test -- -s visual -p 8081 -l -c chrome firefox",
164
+ "test:coverage": "nyc --silent qunit test/node_test_setup.js test/lib test/unit",
165
+ "test:visual:coverage": "nyc --silent --no-clean qunit test/node_test_setup.js test/lib test/visual",
166
+ "test:vitest:coverage": "vitest --coverage=true --run",
167
+ "test:vitest:coverage:watch": "vitest --coverage=true",
168
+ "coverage:merge": "nyc merge coveragefiles .nyc_output/merged-coverage.json",
169
+ "local-server": "http-server ./ -d=false",
170
+ "test:e2e": "npx playwright test --headed",
171
+ "coverage:report": "nyc report --reporter=lcov --reporter=text",
172
+ "lint": "eslint src extensions",
173
+ "prettier:check": "prettier --check .",
174
+ "prettier:write": "prettier --write .",
175
+ "babel-constants": "babel --no-babelrc src/constants.ts --extensions '.ts' --out-dir dist/src/ --config-file ./.babelrcAlt --plugins=babel-plugin-import-json-value",
176
+ "babel-src": "babel --no-babelrc src --extensions '.ts' --ignore 'src/constants.ts' --out-dir dist/src --config-file ./.babelrcAlt"
177
177
  }
178
- }
178
+ }