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
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var r="6.7.
|
|
1
|
+
var r="6.7.14";export{r as version};
|
|
2
2
|
//# sourceMappingURL=package.json.min.mjs.map
|
package/dist/package.json.mjs
CHANGED
|
@@ -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;
|
|
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,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as t}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{config as e}from"../config.min.mjs";import{ifNaN as s}from"../util/internals/ifNaN.min.mjs";import{uid as r}from"../util/internals/uid.min.mjs";import{loadImage as i}from"../util/misc/objectEnlive.min.mjs";import{pick as o}from"../util/misc/pick.min.mjs";import{toFixed as n}from"../util/misc/toFixed.min.mjs";import{classRegistry as a}from"../ClassRegistry.min.mjs";import{log as h}from"../util/internals/console.min.mjs";class c{get type(){return"pattern"}set type(t){h("warn","Setting type has no effect",t)}constructor(e){t(this,"repeat","repeat"),t(this,"offsetX",0),t(this,"offsetY",0),t(this,"crossOrigin",""),this.id=r(),Object.assign(this,e)}isImageSource(){return!!this.source&&"string"==typeof this.source.src}isCanvasSource(){return!!this.source&&!!this.source.toDataURL}sourceToString(){return this.isImageSource()?this.source.src:this.isCanvasSource()?this.source.toDataURL():""}toLive(t){return this.source&&(!this.isImageSource()||this.source.complete&&0!==this.source.naturalWidth&&0!==this.source.naturalHeight)?t.createPattern(this.source,this.repeat):null}toObject(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const{repeat:s,crossOrigin:r}=this;return{...o(this,t),type:"pattern",source:this.sourceToString(),repeat:s,crossOrigin:r,offsetX:n(this.offsetX,e.NUM_FRACTION_DIGITS),offsetY:n(this.offsetY,e.NUM_FRACTION_DIGITS),patternTransform:this.patternTransform?[...this.patternTransform]:null}}toSVG(t){let{width:e,height:r}=t;const{source:i,repeat:o,id:n}=this,a=s(this.offsetX/e,0),h=s(this.offsetY/r,0);return[`<pattern id="SVGID_${n}" x="${a}" y="${h}" width="${"repeat-y"===o||"no-repeat"===o?1+Math.abs(a||0):s(i.width/e,0)}" height="${"repeat-x"===o||"no-repeat"===o?1+Math.abs(h||0):s(i.height/r,0)}">`,`<image x="0" y="0" width="${i.width}" height="${i.height}" xlink:href="${this.sourceToString()}"></image>`,"</pattern>",""].join("\n")}static async fromObject(t,e){let{type:s,source:r,patternTransform:o,...n}=t;const
|
|
1
|
+
import{defineProperty as t}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{config as e}from"../config.min.mjs";import{ifNaN as s}from"../util/internals/ifNaN.min.mjs";import{uid as r}from"../util/internals/uid.min.mjs";import{loadImage as i}from"../util/misc/objectEnlive.min.mjs";import{pick as o}from"../util/misc/pick.min.mjs";import{toFixed as n}from"../util/misc/toFixed.min.mjs";import{classRegistry as a}from"../ClassRegistry.min.mjs";import{log as h}from"../util/internals/console.min.mjs";class c{get type(){return"pattern"}set type(t){h("warn","Setting type has no effect",t)}constructor(e){t(this,"repeat","repeat"),t(this,"offsetX",0),t(this,"offsetY",0),t(this,"crossOrigin",""),this.id=r(),Object.assign(this,e)}isImageSource(){return!!this.source&&"string"==typeof this.source.src}isCanvasSource(){return!!this.source&&!!this.source.toDataURL}sourceToString(){return this.isImageSource()?this.source.src:this.isCanvasSource()?this.source.toDataURL():""}toLive(t){return this.source&&(!this.isImageSource()||this.source.complete&&0!==this.source.naturalWidth&&0!==this.source.naturalHeight)?t.createPattern(this.source,this.repeat):null}toObject(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const{repeat:s,crossOrigin:r}=this;return{...o(this,t),type:"pattern",source:this.sourceToString(),repeat:s,crossOrigin:r,offsetX:n(this.offsetX,e.NUM_FRACTION_DIGITS),offsetY:n(this.offsetY,e.NUM_FRACTION_DIGITS),patternTransform:this.patternTransform?[...this.patternTransform]:null}}toSVG(t){let{width:e,height:r}=t;const{source:i,repeat:o,id:n}=this,a=s(this.offsetX/e,0),h=s(this.offsetY/r,0);return[`<pattern id="SVGID_${n}" x="${a}" y="${h}" width="${"repeat-y"===o||"no-repeat"===o?1+Math.abs(a||0):s(i.width/e,0)}" height="${"repeat-x"===o||"no-repeat"===o?1+Math.abs(h||0):s(i.height/r,0)}">`,`<image x="0" y="0" width="${i.width}" height="${i.height}" xlink:href="${this.sourceToString()}"></image>`,"</pattern>",""].join("\n")}static async fromObject(t,e){let{type:s,source:r,patternTransform:o,...n}=t;const{crossOrigin:a}=n,h=await i(r,{...e,crossOrigin:a,fallbackToEmptyImage:!0});return new this({...n,patternTransform:o&&o.slice(0),source:h})}}t(c,"type","Pattern"),a.setClass(c),a.setClass(c,"pattern");export{c as Pattern};
|
|
2
2
|
//# sourceMappingURL=Pattern.min.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pattern.min.mjs","sources":["../../../src/Pattern/Pattern.ts"],"sourcesContent":["import { config } from '../config';\nimport type { Abortable, TCrossOrigin, TMat2D, TSize } from '../typedefs';\nimport { ifNaN } from '../util/internals/ifNaN';\nimport { uid } from '../util/internals/uid';\nimport { loadImage } from '../util/misc/objectEnlive';\nimport { pick } from '../util/misc/pick';\nimport { toFixed } from '../util/misc/toFixed';\nimport { classRegistry } from '../ClassRegistry';\nimport type {\n PatternRepeat,\n PatternOptions,\n SerializedPatternOptions,\n} from './types';\nimport { log } from '../util/internals/console';\n\n/**\n * @see {@link http://fabricjs.com/patterns demo}\n * @see {@link http://fabricjs.com/dynamic-patterns demo}\n */\nexport class Pattern {\n static type = 'Pattern';\n\n /**\n * Legacy identifier of the class. Prefer using this.constructor.type 'Pattern'\n * or utils like isPattern, or instance of to indentify a pattern in your code.\n * Will be removed in future versiones\n * @TODO add sustainable warning message\n * @type string\n * @deprecated\n */\n get type() {\n return 'pattern';\n }\n\n set type(value) {\n log('warn', 'Setting type has no effect', value);\n }\n\n /**\n * @type PatternRepeat\n * @defaults\n */\n repeat: PatternRepeat = 'repeat';\n\n /**\n * Pattern horizontal offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetX = 0;\n\n /**\n * Pattern vertical offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetY = 0;\n\n /**\n * @type TCrossOrigin\n * @default\n */\n crossOrigin: TCrossOrigin = '';\n\n /**\n * transform matrix to change the pattern, imported from svgs.\n * @todo verify if using the identity matrix as default makes the rest of the code more easy\n * @type Array\n * @default\n */\n declare patternTransform?: TMat2D;\n\n /**\n * The actual pixel source of the pattern\n */\n declare source: CanvasImageSource;\n\n /**\n * If true, this object will not be exported during the serialization of a canvas\n * @type boolean\n */\n declare excludeFromExport?: boolean;\n\n /**\n * ID used for SVG export functionalities\n * @type number\n */\n declare readonly id: number;\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @param {option.source} [source] the pattern source, eventually empty or a drawable\n */\n constructor(options: PatternOptions) {\n this.id = uid();\n Object.assign(this, options);\n }\n\n /**\n * @returns true if {@link source} is an <img> element\n */\n isImageSource(): this is { source: HTMLImageElement } {\n return (\n !!this.source && typeof (this.source as HTMLImageElement).src === 'string'\n );\n }\n\n /**\n * @returns true if {@link source} is a <canvas> element\n */\n isCanvasSource(): this is { source: HTMLCanvasElement } {\n return !!this.source && !!(this.source as HTMLCanvasElement).toDataURL;\n }\n\n sourceToString(): string {\n return this.isImageSource()\n ? this.source.src\n : this.isCanvasSource()\n ? this.source.toDataURL()\n : '';\n }\n\n /**\n * Returns an instance of CanvasPattern\n * @param {CanvasRenderingContext2D} ctx Context to create pattern\n * @return {CanvasPattern}\n */\n toLive(ctx: CanvasRenderingContext2D): CanvasPattern | null {\n if (\n // if the image failed to load, return, and allow rest to continue loading\n !this.source ||\n // if an image\n (this.isImageSource() &&\n (!this.source.complete ||\n this.source.naturalWidth === 0 ||\n this.source.naturalHeight === 0))\n ) {\n return null;\n }\n\n return ctx.createPattern(this.source, this.repeat)!;\n }\n\n /**\n * Returns object representation of a pattern\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {object} Object representation of a pattern instance\n */\n toObject(propertiesToInclude: string[] = []): Record<string, any> {\n const { repeat, crossOrigin } = this;\n return {\n ...pick(this, propertiesToInclude as (keyof this)[]),\n type: 'pattern',\n source: this.sourceToString(),\n repeat,\n crossOrigin,\n offsetX: toFixed(this.offsetX, config.NUM_FRACTION_DIGITS),\n offsetY: toFixed(this.offsetY, config.NUM_FRACTION_DIGITS),\n patternTransform: this.patternTransform\n ? [...this.patternTransform]\n : null,\n };\n }\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of a pattern\n */\n toSVG({ width, height }: TSize): string {\n const { source: patternSource, repeat, id } = this,\n patternOffsetX = ifNaN(this.offsetX / width, 0),\n patternOffsetY = ifNaN(this.offsetY / height, 0),\n patternWidth =\n repeat === 'repeat-y' || repeat === 'no-repeat'\n ? 1 + Math.abs(patternOffsetX || 0)\n : ifNaN(\n ((patternSource as HTMLImageElement).width as number) / width,\n 0,\n ),\n patternHeight =\n repeat === 'repeat-x' || repeat === 'no-repeat'\n ? 1 + Math.abs(patternOffsetY || 0)\n : ifNaN(\n ((patternSource as HTMLImageElement).height as number) / height,\n 0,\n );\n\n return [\n `<pattern id=\"SVGID_${id}\" x=\"${patternOffsetX}\" y=\"${patternOffsetY}\" width=\"${patternWidth}\" height=\"${patternHeight}\">`,\n `<image x=\"0\" y=\"0\" width=\"${\n (patternSource as HTMLImageElement).width\n }\" height=\"${\n (patternSource as HTMLImageElement).height\n }\" xlink:href=\"${this.sourceToString()}\"></image>`,\n `</pattern>`,\n '',\n ].join('\\n');\n }\n /* _TO_SVG_END_ */\n\n static async fromObject(\n {\n type,\n source,\n patternTransform,\n ...otherOptions\n }: SerializedPatternOptions,\n options?: Abortable,\n ): Promise<Pattern> {\n const img = await loadImage(source, {\n ...options,\n crossOrigin:
|
|
1
|
+
{"version":3,"file":"Pattern.min.mjs","sources":["../../../src/Pattern/Pattern.ts"],"sourcesContent":["import { config } from '../config';\nimport type { Abortable, TCrossOrigin, TMat2D, TSize } from '../typedefs';\nimport { ifNaN } from '../util/internals/ifNaN';\nimport { uid } from '../util/internals/uid';\nimport { loadImage } from '../util/misc/objectEnlive';\nimport { pick } from '../util/misc/pick';\nimport { toFixed } from '../util/misc/toFixed';\nimport { classRegistry } from '../ClassRegistry';\nimport type {\n PatternRepeat,\n PatternOptions,\n SerializedPatternOptions,\n} from './types';\nimport { log } from '../util/internals/console';\n\n/**\n * @see {@link http://fabricjs.com/patterns demo}\n * @see {@link http://fabricjs.com/dynamic-patterns demo}\n */\nexport class Pattern {\n static type = 'Pattern';\n\n /**\n * Legacy identifier of the class. Prefer using this.constructor.type 'Pattern'\n * or utils like isPattern, or instance of to indentify a pattern in your code.\n * Will be removed in future versiones\n * @TODO add sustainable warning message\n * @type string\n * @deprecated\n */\n get type() {\n return 'pattern';\n }\n\n set type(value) {\n log('warn', 'Setting type has no effect', value);\n }\n\n /**\n * @type PatternRepeat\n * @defaults\n */\n repeat: PatternRepeat = 'repeat';\n\n /**\n * Pattern horizontal offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetX = 0;\n\n /**\n * Pattern vertical offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetY = 0;\n\n /**\n * @type TCrossOrigin\n * @default\n */\n crossOrigin: TCrossOrigin = '';\n\n /**\n * transform matrix to change the pattern, imported from svgs.\n * @todo verify if using the identity matrix as default makes the rest of the code more easy\n * @type Array\n * @default\n */\n declare patternTransform?: TMat2D;\n\n /**\n * The actual pixel source of the pattern\n */\n declare source: CanvasImageSource;\n\n /**\n * If true, this object will not be exported during the serialization of a canvas\n * @type boolean\n */\n declare excludeFromExport?: boolean;\n\n /**\n * ID used for SVG export functionalities\n * @type number\n */\n declare readonly id: number;\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @param {option.source} [source] the pattern source, eventually empty or a drawable\n */\n constructor(options: PatternOptions) {\n this.id = uid();\n Object.assign(this, options);\n }\n\n /**\n * @returns true if {@link source} is an <img> element\n */\n isImageSource(): this is { source: HTMLImageElement } {\n return (\n !!this.source && typeof (this.source as HTMLImageElement).src === 'string'\n );\n }\n\n /**\n * @returns true if {@link source} is a <canvas> element\n */\n isCanvasSource(): this is { source: HTMLCanvasElement } {\n return !!this.source && !!(this.source as HTMLCanvasElement).toDataURL;\n }\n\n sourceToString(): string {\n return this.isImageSource()\n ? this.source.src\n : this.isCanvasSource()\n ? this.source.toDataURL()\n : '';\n }\n\n /**\n * Returns an instance of CanvasPattern\n * @param {CanvasRenderingContext2D} ctx Context to create pattern\n * @return {CanvasPattern}\n */\n toLive(ctx: CanvasRenderingContext2D): CanvasPattern | null {\n if (\n // if the image failed to load, return, and allow rest to continue loading\n !this.source ||\n // if an image\n (this.isImageSource() &&\n (!this.source.complete ||\n this.source.naturalWidth === 0 ||\n this.source.naturalHeight === 0))\n ) {\n return null;\n }\n\n return ctx.createPattern(this.source, this.repeat)!;\n }\n\n /**\n * Returns object representation of a pattern\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {object} Object representation of a pattern instance\n */\n toObject(propertiesToInclude: string[] = []): Record<string, any> {\n const { repeat, crossOrigin } = this;\n return {\n ...pick(this, propertiesToInclude as (keyof this)[]),\n type: 'pattern',\n source: this.sourceToString(),\n repeat,\n crossOrigin,\n offsetX: toFixed(this.offsetX, config.NUM_FRACTION_DIGITS),\n offsetY: toFixed(this.offsetY, config.NUM_FRACTION_DIGITS),\n patternTransform: this.patternTransform\n ? [...this.patternTransform]\n : null,\n };\n }\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of a pattern\n */\n toSVG({ width, height }: TSize): string {\n const { source: patternSource, repeat, id } = this,\n patternOffsetX = ifNaN(this.offsetX / width, 0),\n patternOffsetY = ifNaN(this.offsetY / height, 0),\n patternWidth =\n repeat === 'repeat-y' || repeat === 'no-repeat'\n ? 1 + Math.abs(patternOffsetX || 0)\n : ifNaN(\n ((patternSource as HTMLImageElement).width as number) / width,\n 0,\n ),\n patternHeight =\n repeat === 'repeat-x' || repeat === 'no-repeat'\n ? 1 + Math.abs(patternOffsetY || 0)\n : ifNaN(\n ((patternSource as HTMLImageElement).height as number) / height,\n 0,\n );\n\n return [\n `<pattern id=\"SVGID_${id}\" x=\"${patternOffsetX}\" y=\"${patternOffsetY}\" width=\"${patternWidth}\" height=\"${patternHeight}\">`,\n `<image x=\"0\" y=\"0\" width=\"${\n (patternSource as HTMLImageElement).width\n }\" height=\"${\n (patternSource as HTMLImageElement).height\n }\" xlink:href=\"${this.sourceToString()}\"></image>`,\n `</pattern>`,\n '',\n ].join('\\n');\n }\n /* _TO_SVG_END_ */\n\n static async fromObject(\n {\n type,\n source,\n patternTransform,\n ...otherOptions\n }: SerializedPatternOptions,\n options?: Abortable,\n ): Promise<Pattern> {\n const { crossOrigin } = otherOptions;\n const img = await loadImage(source, {\n ...options,\n crossOrigin,\n fallbackToEmptyImage: true,\n });\n return new this({\n ...otherOptions,\n patternTransform:\n patternTransform && (patternTransform.slice(0) as TMat2D),\n source: img,\n });\n }\n}\n\nclassRegistry.setClass(Pattern);\n// kept for compatibility reason\nclassRegistry.setClass(Pattern, 'pattern');\n"],"names":["Pattern","type","value","log","constructor","options","_defineProperty","this","id","uid","Object","assign","isImageSource","source","src","isCanvasSource","toDataURL","sourceToString","toLive","ctx","complete","naturalWidth","naturalHeight","createPattern","repeat","toObject","propertiesToInclude","arguments","length","undefined","crossOrigin","pick","offsetX","toFixed","config","NUM_FRACTION_DIGITS","offsetY","patternTransform","toSVG","_ref","width","height","patternSource","patternOffsetX","ifNaN","patternOffsetY","Math","abs","join","fromObject","_ref2","otherOptions","img","loadImage","fallbackToEmptyImage","slice","classRegistry","setClass"],"mappings":"ggBAmBO,MAAMA,EAWX,QAAIC,GACF,MAAO,SACT,CAEA,QAAIA,CAAKC,GACPC,EAAI,OAAQ,6BAA8BD,EAC5C,CA0DAE,WAAAA,CAAYC,GAAyBC,gBApDb,UAExBA,iBAKU,GAEVA,iBAKU,GAEVA,qBAI4B,IAiC1BC,KAAKC,GAAKC,IACVC,OAAOC,OAAOJ,KAAMF,EACtB,CAKAO,aAAAA,GACE,QACIL,KAAKM,QAA2D,iBAAzCN,KAAKM,OAA4BC,GAE9D,CAKAC,cAAAA,GACE,QAASR,KAAKM,UAAaN,KAAKM,OAA6BG,SAC/D,CAEAC,cAAAA,GACE,OAAOV,KAAKK,gBACRL,KAAKM,OAAOC,IACZP,KAAKQ,iBACHR,KAAKM,OAAOG,YACZ,EACR,CAOAE,MAAAA,CAAOC,GACL,OAEGZ,KAAKM,UAELN,KAAKK,iBACFL,KAAKM,OAAOO,UACiB,IAA7Bb,KAAKM,OAAOQ,cACkB,IAA9Bd,KAAKM,OAAOS,eAKXH,EAAII,cAAchB,KAAKM,OAAQN,KAAKiB,QAHlC,IAIX,CAOAC,QAAAA,GAAkE,IAAzDC,EAA6BC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GACvC,MAAMH,OAAEA,EAAMM,YAAEA,GAAgBvB,KAChC,MAAO,IACFwB,EAAKxB,KAAMmB,GACdzB,KAAM,UACNY,OAAQN,KAAKU,iBACbO,SACAM,cACAE,QAASC,EAAQ1B,KAAKyB,QAASE,EAAOC,qBACtCC,QAASH,EAAQ1B,KAAK6B,QAASF,EAAOC,qBACtCE,iBAAkB9B,KAAK8B,iBACnB,IAAI9B,KAAK8B,kBACT,KAER,CAMAC,KAAAA,CAAKC,GAAmC,IAAlCC,MAAEA,EAAKC,OAAEA,GAAeF,EAC5B,MAAQ1B,OAAQ6B,EAAalB,OAAEA,EAAMhB,GAAEA,GAAOD,KAC5CoC,EAAiBC,EAAMrC,KAAKyB,QAAUQ,EAAO,GAC7CK,EAAiBD,EAAMrC,KAAK6B,QAAUK,EAAQ,GAgBhD,MAAO,CACL,sBAAsBjC,SAAUmC,SAAsBE,aAfzC,aAAXrB,GAAoC,cAAXA,EACrB,EAAIsB,KAAKC,IAAIJ,GAAkB,GAC/BC,EACIF,EAAmCF,MAAmBA,EACxD,eAGK,aAAXhB,GAAoC,cAAXA,EACrB,EAAIsB,KAAKC,IAAIF,GAAkB,GAC/BD,EACIF,EAAmCD,OAAoBA,EACzD,OAKR,6BACGC,EAAmCF,kBAEnCE,EAAmCD,uBACrBlC,KAAKU,6BACtB,aACA,IACA+B,KAAK,KACT,CAGA,uBAAaC,CAAUC,EAOrB7C,GACkB,IAPlBJ,KACEA,EAAIY,OACJA,EAAMwB,iBACNA,KACGc,GACsBD,EAG3B,MAAMpB,YAAEA,GAAgBqB,EAClBC,QAAYC,EAAUxC,EAAQ,IAC/BR,EACHyB,cACAwB,sBAAsB,IAExB,OAAO,IAAI/C,KAAK,IACX4C,EACHd,iBACEA,GAAqBA,EAAiBkB,MAAM,GAC9C1C,OAAQuC,GAEZ,EACD9C,EA5MYN,EAAO,OACJ,WA6MhBwD,EAAcC,SAASzD,GAEvBwD,EAAcC,SAASzD,EAAS"}
|
|
@@ -167,9 +167,13 @@ class Pattern {
|
|
|
167
167
|
patternTransform,
|
|
168
168
|
...otherOptions
|
|
169
169
|
} = _ref2;
|
|
170
|
+
const {
|
|
171
|
+
crossOrigin
|
|
172
|
+
} = otherOptions;
|
|
170
173
|
const img = await loadImage(source, {
|
|
171
174
|
...options,
|
|
172
|
-
crossOrigin
|
|
175
|
+
crossOrigin,
|
|
176
|
+
fallbackToEmptyImage: true
|
|
173
177
|
});
|
|
174
178
|
return new this({
|
|
175
179
|
...otherOptions,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pattern.mjs","sources":["../../../src/Pattern/Pattern.ts"],"sourcesContent":["import { config } from '../config';\nimport type { Abortable, TCrossOrigin, TMat2D, TSize } from '../typedefs';\nimport { ifNaN } from '../util/internals/ifNaN';\nimport { uid } from '../util/internals/uid';\nimport { loadImage } from '../util/misc/objectEnlive';\nimport { pick } from '../util/misc/pick';\nimport { toFixed } from '../util/misc/toFixed';\nimport { classRegistry } from '../ClassRegistry';\nimport type {\n PatternRepeat,\n PatternOptions,\n SerializedPatternOptions,\n} from './types';\nimport { log } from '../util/internals/console';\n\n/**\n * @see {@link http://fabricjs.com/patterns demo}\n * @see {@link http://fabricjs.com/dynamic-patterns demo}\n */\nexport class Pattern {\n static type = 'Pattern';\n\n /**\n * Legacy identifier of the class. Prefer using this.constructor.type 'Pattern'\n * or utils like isPattern, or instance of to indentify a pattern in your code.\n * Will be removed in future versiones\n * @TODO add sustainable warning message\n * @type string\n * @deprecated\n */\n get type() {\n return 'pattern';\n }\n\n set type(value) {\n log('warn', 'Setting type has no effect', value);\n }\n\n /**\n * @type PatternRepeat\n * @defaults\n */\n repeat: PatternRepeat = 'repeat';\n\n /**\n * Pattern horizontal offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetX = 0;\n\n /**\n * Pattern vertical offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetY = 0;\n\n /**\n * @type TCrossOrigin\n * @default\n */\n crossOrigin: TCrossOrigin = '';\n\n /**\n * transform matrix to change the pattern, imported from svgs.\n * @todo verify if using the identity matrix as default makes the rest of the code more easy\n * @type Array\n * @default\n */\n declare patternTransform?: TMat2D;\n\n /**\n * The actual pixel source of the pattern\n */\n declare source: CanvasImageSource;\n\n /**\n * If true, this object will not be exported during the serialization of a canvas\n * @type boolean\n */\n declare excludeFromExport?: boolean;\n\n /**\n * ID used for SVG export functionalities\n * @type number\n */\n declare readonly id: number;\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @param {option.source} [source] the pattern source, eventually empty or a drawable\n */\n constructor(options: PatternOptions) {\n this.id = uid();\n Object.assign(this, options);\n }\n\n /**\n * @returns true if {@link source} is an <img> element\n */\n isImageSource(): this is { source: HTMLImageElement } {\n return (\n !!this.source && typeof (this.source as HTMLImageElement).src === 'string'\n );\n }\n\n /**\n * @returns true if {@link source} is a <canvas> element\n */\n isCanvasSource(): this is { source: HTMLCanvasElement } {\n return !!this.source && !!(this.source as HTMLCanvasElement).toDataURL;\n }\n\n sourceToString(): string {\n return this.isImageSource()\n ? this.source.src\n : this.isCanvasSource()\n ? this.source.toDataURL()\n : '';\n }\n\n /**\n * Returns an instance of CanvasPattern\n * @param {CanvasRenderingContext2D} ctx Context to create pattern\n * @return {CanvasPattern}\n */\n toLive(ctx: CanvasRenderingContext2D): CanvasPattern | null {\n if (\n // if the image failed to load, return, and allow rest to continue loading\n !this.source ||\n // if an image\n (this.isImageSource() &&\n (!this.source.complete ||\n this.source.naturalWidth === 0 ||\n this.source.naturalHeight === 0))\n ) {\n return null;\n }\n\n return ctx.createPattern(this.source, this.repeat)!;\n }\n\n /**\n * Returns object representation of a pattern\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {object} Object representation of a pattern instance\n */\n toObject(propertiesToInclude: string[] = []): Record<string, any> {\n const { repeat, crossOrigin } = this;\n return {\n ...pick(this, propertiesToInclude as (keyof this)[]),\n type: 'pattern',\n source: this.sourceToString(),\n repeat,\n crossOrigin,\n offsetX: toFixed(this.offsetX, config.NUM_FRACTION_DIGITS),\n offsetY: toFixed(this.offsetY, config.NUM_FRACTION_DIGITS),\n patternTransform: this.patternTransform\n ? [...this.patternTransform]\n : null,\n };\n }\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of a pattern\n */\n toSVG({ width, height }: TSize): string {\n const { source: patternSource, repeat, id } = this,\n patternOffsetX = ifNaN(this.offsetX / width, 0),\n patternOffsetY = ifNaN(this.offsetY / height, 0),\n patternWidth =\n repeat === 'repeat-y' || repeat === 'no-repeat'\n ? 1 + Math.abs(patternOffsetX || 0)\n : ifNaN(\n ((patternSource as HTMLImageElement).width as number) / width,\n 0,\n ),\n patternHeight =\n repeat === 'repeat-x' || repeat === 'no-repeat'\n ? 1 + Math.abs(patternOffsetY || 0)\n : ifNaN(\n ((patternSource as HTMLImageElement).height as number) / height,\n 0,\n );\n\n return [\n `<pattern id=\"SVGID_${id}\" x=\"${patternOffsetX}\" y=\"${patternOffsetY}\" width=\"${patternWidth}\" height=\"${patternHeight}\">`,\n `<image x=\"0\" y=\"0\" width=\"${\n (patternSource as HTMLImageElement).width\n }\" height=\"${\n (patternSource as HTMLImageElement).height\n }\" xlink:href=\"${this.sourceToString()}\"></image>`,\n `</pattern>`,\n '',\n ].join('\\n');\n }\n /* _TO_SVG_END_ */\n\n static async fromObject(\n {\n type,\n source,\n patternTransform,\n ...otherOptions\n }: SerializedPatternOptions,\n options?: Abortable,\n ): Promise<Pattern> {\n const img = await loadImage(source, {\n ...options,\n crossOrigin: otherOptions.crossOrigin,\n });\n return new this({\n ...otherOptions,\n patternTransform:\n patternTransform && (patternTransform.slice(0) as TMat2D),\n source: img,\n });\n }\n}\n\nclassRegistry.setClass(Pattern);\n// kept for compatibility reason\nclassRegistry.setClass(Pattern, 'pattern');\n"],"names":["Pattern","type","value","log","constructor","options","_defineProperty","id","uid","Object","assign","isImageSource","source","src","isCanvasSource","toDataURL","sourceToString","toLive","ctx","complete","naturalWidth","naturalHeight","createPattern","repeat","toObject","propertiesToInclude","arguments","length","undefined","crossOrigin","pick","offsetX","toFixed","config","NUM_FRACTION_DIGITS","offsetY","patternTransform","toSVG","_ref","width","height","patternSource","patternOffsetX","ifNaN","patternOffsetY","patternWidth","Math","abs","patternHeight","join","fromObject","_ref2","otherOptions","img","loadImage","slice","classRegistry","setClass"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Pattern.mjs","sources":["../../../src/Pattern/Pattern.ts"],"sourcesContent":["import { config } from '../config';\nimport type { Abortable, TCrossOrigin, TMat2D, TSize } from '../typedefs';\nimport { ifNaN } from '../util/internals/ifNaN';\nimport { uid } from '../util/internals/uid';\nimport { loadImage } from '../util/misc/objectEnlive';\nimport { pick } from '../util/misc/pick';\nimport { toFixed } from '../util/misc/toFixed';\nimport { classRegistry } from '../ClassRegistry';\nimport type {\n PatternRepeat,\n PatternOptions,\n SerializedPatternOptions,\n} from './types';\nimport { log } from '../util/internals/console';\n\n/**\n * @see {@link http://fabricjs.com/patterns demo}\n * @see {@link http://fabricjs.com/dynamic-patterns demo}\n */\nexport class Pattern {\n static type = 'Pattern';\n\n /**\n * Legacy identifier of the class. Prefer using this.constructor.type 'Pattern'\n * or utils like isPattern, or instance of to indentify a pattern in your code.\n * Will be removed in future versiones\n * @TODO add sustainable warning message\n * @type string\n * @deprecated\n */\n get type() {\n return 'pattern';\n }\n\n set type(value) {\n log('warn', 'Setting type has no effect', value);\n }\n\n /**\n * @type PatternRepeat\n * @defaults\n */\n repeat: PatternRepeat = 'repeat';\n\n /**\n * Pattern horizontal offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetX = 0;\n\n /**\n * Pattern vertical offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetY = 0;\n\n /**\n * @type TCrossOrigin\n * @default\n */\n crossOrigin: TCrossOrigin = '';\n\n /**\n * transform matrix to change the pattern, imported from svgs.\n * @todo verify if using the identity matrix as default makes the rest of the code more easy\n * @type Array\n * @default\n */\n declare patternTransform?: TMat2D;\n\n /**\n * The actual pixel source of the pattern\n */\n declare source: CanvasImageSource;\n\n /**\n * If true, this object will not be exported during the serialization of a canvas\n * @type boolean\n */\n declare excludeFromExport?: boolean;\n\n /**\n * ID used for SVG export functionalities\n * @type number\n */\n declare readonly id: number;\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @param {option.source} [source] the pattern source, eventually empty or a drawable\n */\n constructor(options: PatternOptions) {\n this.id = uid();\n Object.assign(this, options);\n }\n\n /**\n * @returns true if {@link source} is an <img> element\n */\n isImageSource(): this is { source: HTMLImageElement } {\n return (\n !!this.source && typeof (this.source as HTMLImageElement).src === 'string'\n );\n }\n\n /**\n * @returns true if {@link source} is a <canvas> element\n */\n isCanvasSource(): this is { source: HTMLCanvasElement } {\n return !!this.source && !!(this.source as HTMLCanvasElement).toDataURL;\n }\n\n sourceToString(): string {\n return this.isImageSource()\n ? this.source.src\n : this.isCanvasSource()\n ? this.source.toDataURL()\n : '';\n }\n\n /**\n * Returns an instance of CanvasPattern\n * @param {CanvasRenderingContext2D} ctx Context to create pattern\n * @return {CanvasPattern}\n */\n toLive(ctx: CanvasRenderingContext2D): CanvasPattern | null {\n if (\n // if the image failed to load, return, and allow rest to continue loading\n !this.source ||\n // if an image\n (this.isImageSource() &&\n (!this.source.complete ||\n this.source.naturalWidth === 0 ||\n this.source.naturalHeight === 0))\n ) {\n return null;\n }\n\n return ctx.createPattern(this.source, this.repeat)!;\n }\n\n /**\n * Returns object representation of a pattern\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {object} Object representation of a pattern instance\n */\n toObject(propertiesToInclude: string[] = []): Record<string, any> {\n const { repeat, crossOrigin } = this;\n return {\n ...pick(this, propertiesToInclude as (keyof this)[]),\n type: 'pattern',\n source: this.sourceToString(),\n repeat,\n crossOrigin,\n offsetX: toFixed(this.offsetX, config.NUM_FRACTION_DIGITS),\n offsetY: toFixed(this.offsetY, config.NUM_FRACTION_DIGITS),\n patternTransform: this.patternTransform\n ? [...this.patternTransform]\n : null,\n };\n }\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of a pattern\n */\n toSVG({ width, height }: TSize): string {\n const { source: patternSource, repeat, id } = this,\n patternOffsetX = ifNaN(this.offsetX / width, 0),\n patternOffsetY = ifNaN(this.offsetY / height, 0),\n patternWidth =\n repeat === 'repeat-y' || repeat === 'no-repeat'\n ? 1 + Math.abs(patternOffsetX || 0)\n : ifNaN(\n ((patternSource as HTMLImageElement).width as number) / width,\n 0,\n ),\n patternHeight =\n repeat === 'repeat-x' || repeat === 'no-repeat'\n ? 1 + Math.abs(patternOffsetY || 0)\n : ifNaN(\n ((patternSource as HTMLImageElement).height as number) / height,\n 0,\n );\n\n return [\n `<pattern id=\"SVGID_${id}\" x=\"${patternOffsetX}\" y=\"${patternOffsetY}\" width=\"${patternWidth}\" height=\"${patternHeight}\">`,\n `<image x=\"0\" y=\"0\" width=\"${\n (patternSource as HTMLImageElement).width\n }\" height=\"${\n (patternSource as HTMLImageElement).height\n }\" xlink:href=\"${this.sourceToString()}\"></image>`,\n `</pattern>`,\n '',\n ].join('\\n');\n }\n /* _TO_SVG_END_ */\n\n static async fromObject(\n {\n type,\n source,\n patternTransform,\n ...otherOptions\n }: SerializedPatternOptions,\n options?: Abortable,\n ): Promise<Pattern> {\n const { crossOrigin } = otherOptions;\n const img = await loadImage(source, {\n ...options,\n crossOrigin,\n fallbackToEmptyImage: true,\n });\n return new this({\n ...otherOptions,\n patternTransform:\n patternTransform && (patternTransform.slice(0) as TMat2D),\n source: img,\n });\n }\n}\n\nclassRegistry.setClass(Pattern);\n// kept for compatibility reason\nclassRegistry.setClass(Pattern, 'pattern');\n"],"names":["Pattern","type","value","log","constructor","options","_defineProperty","id","uid","Object","assign","isImageSource","source","src","isCanvasSource","toDataURL","sourceToString","toLive","ctx","complete","naturalWidth","naturalHeight","createPattern","repeat","toObject","propertiesToInclude","arguments","length","undefined","crossOrigin","pick","offsetX","toFixed","config","NUM_FRACTION_DIGITS","offsetY","patternTransform","toSVG","_ref","width","height","patternSource","patternOffsetX","ifNaN","patternOffsetY","patternWidth","Math","abs","patternHeight","join","fromObject","_ref2","otherOptions","img","loadImage","fallbackToEmptyImage","slice","classRegistry","setClass"],"mappings":";;;;;;;;;;AAeA;AACA;AACA;AACA;AACO,MAAMA,OAAO,CAAC;AAGnB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAIC,IAAIA,GAAG;AACT,IAAA,OAAO,SAAS;AAClB;EAEA,IAAIA,IAAIA,CAACC,KAAK,EAAE;AACdC,IAAAA,GAAG,CAAC,MAAM,EAAE,4BAA4B,EAAED,KAAK,CAAC;AAClD;;AAEA;AACF;AACA;AACA;;AAuBE;AACF;AACA;AACA;AACA;AACA;;AAGE;AACF;AACA;;AAGE;AACF;AACA;AACA;;AAGE;AACF;AACA;AACA;;AAGE;AACF;AACA;AACA;AACA;EACEE,WAAWA,CAACC,OAAuB,EAAE;AAAAC,IAAAA,eAAA,iBApDb,QAAQ,CAAA;AAEhC;AACF;AACA;AACA;AACA;AAJEA,IAAAA,eAAA,kBAKU,CAAC,CAAA;AAEX;AACF;AACA;AACA;AACA;AAJEA,IAAAA,eAAA,kBAKU,CAAC,CAAA;AAEX;AACF;AACA;AACA;AAHEA,IAAAA,eAAA,sBAI4B,EAAE,CAAA;AAiC5B,IAAA,IAAI,CAACC,EAAE,GAAGC,GAAG,EAAE;AACfC,IAAAA,MAAM,CAACC,MAAM,CAAC,IAAI,EAAEL,OAAO,CAAC;AAC9B;;AAEA;AACF;AACA;AACEM,EAAAA,aAAaA,GAAyC;AACpD,IAAA,OACE,CAAC,CAAC,IAAI,CAACC,MAAM,IAAI,OAAQ,IAAI,CAACA,MAAM,CAAsBC,GAAG,KAAK,QAAQ;AAE9E;;AAEA;AACF;AACA;AACEC,EAAAA,cAAcA,GAA0C;AACtD,IAAA,OAAO,CAAC,CAAC,IAAI,CAACF,MAAM,IAAI,CAAC,CAAE,IAAI,CAACA,MAAM,CAAuBG,SAAS;AACxE;AAEAC,EAAAA,cAAcA,GAAW;IACvB,OAAO,IAAI,CAACL,aAAa,EAAE,GACvB,IAAI,CAACC,MAAM,CAACC,GAAG,GACf,IAAI,CAACC,cAAc,EAAE,GACnB,IAAI,CAACF,MAAM,CAACG,SAAS,EAAE,GACvB,EAAE;AACV;;AAEA;AACF;AACA;AACA;AACA;EACEE,MAAMA,CAACC,GAA6B,EAAwB;AAC1D,IAAA;AACE;IACA,CAAC,IAAI,CAACN,MAAM;AACZ;AACC,IAAA,IAAI,CAACD,aAAa,EAAE,KAClB,CAAC,IAAI,CAACC,MAAM,CAACO,QAAQ,IACpB,IAAI,CAACP,MAAM,CAACQ,YAAY,KAAK,CAAC,IAC9B,IAAI,CAACR,MAAM,CAACS,aAAa,KAAK,CAAC,CAAE,EACrC;AACA,MAAA,OAAO,IAAI;AACb;IAEA,OAAOH,GAAG,CAACI,aAAa,CAAC,IAAI,CAACV,MAAM,EAAE,IAAI,CAACW,MAAM,CAAC;AACpD;;AAEA;AACF;AACA;AACA;AACA;AACEC,EAAAA,QAAQA,GAA0D;AAAA,IAAA,IAAzDC,mBAA6B,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;IACzC,MAAM;MAAEH,MAAM;AAAEM,MAAAA;AAAY,KAAC,GAAG,IAAI;IACpC,OAAO;AACL,MAAA,GAAGC,IAAI,CAAC,IAAI,EAAEL,mBAAqC,CAAC;AACpDxB,MAAAA,IAAI,EAAE,SAAS;AACfW,MAAAA,MAAM,EAAE,IAAI,CAACI,cAAc,EAAE;MAC7BO,MAAM;MACNM,WAAW;MACXE,OAAO,EAAEC,OAAO,CAAC,IAAI,CAACD,OAAO,EAAEE,MAAM,CAACC,mBAAmB,CAAC;MAC1DC,OAAO,EAAEH,OAAO,CAAC,IAAI,CAACG,OAAO,EAAEF,MAAM,CAACC,mBAAmB,CAAC;MAC1DE,gBAAgB,EAAE,IAAI,CAACA,gBAAgB,GACnC,CAAC,GAAG,IAAI,CAACA,gBAAgB,CAAC,GAC1B;KACL;AACH;;AAEA;AACA;AACF;AACA;EACEC,KAAKA,CAAAC,IAAA,EAAmC;IAAA,IAAlC;MAAEC,KAAK;AAAEC,MAAAA;AAAc,KAAC,GAAAF,IAAA;IAC5B,MAAM;AAAE1B,QAAAA,MAAM,EAAE6B,aAAa;QAAElB,MAAM;AAAEhB,QAAAA;AAAG,OAAC,GAAG,IAAI;MAChDmC,cAAc,GAAGC,KAAK,CAAC,IAAI,CAACZ,OAAO,GAAGQ,KAAK,EAAE,CAAC,CAAC;MAC/CK,cAAc,GAAGD,KAAK,CAAC,IAAI,CAACR,OAAO,GAAGK,MAAM,EAAE,CAAC,CAAC;AAChDK,MAAAA,YAAY,GACVtB,MAAM,KAAK,UAAU,IAAIA,MAAM,KAAK,WAAW,GAC3C,CAAC,GAAGuB,IAAI,CAACC,GAAG,CAACL,cAAc,IAAI,CAAC,CAAC,GACjCC,KAAK,CACDF,aAAa,CAAsBF,KAAK,GAAcA,KAAK,EAC7D,CACF,CAAC;AACPS,MAAAA,aAAa,GACXzB,MAAM,KAAK,UAAU,IAAIA,MAAM,KAAK,WAAW,GAC3C,CAAC,GAAGuB,IAAI,CAACC,GAAG,CAACH,cAAc,IAAI,CAAC,CAAC,GACjCD,KAAK,CACDF,aAAa,CAAsBD,MAAM,GAAcA,MAAM,EAC/D,CACF,CAAC;AAET,IAAA,OAAO,CACL,CAAsBjC,mBAAAA,EAAAA,EAAE,CAAQmC,KAAAA,EAAAA,cAAc,QAAQE,cAAc,CAAA,SAAA,EAAYC,YAAY,CAAA,UAAA,EAAaG,aAAa,CAAI,EAAA,CAAA,EAC1H,CACGP,0BAAAA,EAAAA,aAAa,CAAsBF,KAAK,CAAA,UAAA,EAExCE,aAAa,CAAsBD,MAAM,CAC3B,cAAA,EAAA,IAAI,CAACxB,cAAc,EAAE,CAAA,UAAA,CAAY,EAClD,CAAA,UAAA,CAAY,EACZ,EAAE,CACH,CAACiC,IAAI,CAAC,IAAI,CAAC;AACd;AACA;;AAEA,EAAA,aAAaC,UAAUA,CAAAC,KAAA,EAOrB9C,OAAmB,EACD;IAAA,IAPlB;MACEJ,IAAI;MACJW,MAAM;MACNwB,gBAAgB;MAChB,GAAGgB;AACqB,KAAC,GAAAD,KAAA;IAG3B,MAAM;AAAEtB,MAAAA;AAAY,KAAC,GAAGuB,YAAY;AACpC,IAAA,MAAMC,GAAG,GAAG,MAAMC,SAAS,CAAC1C,MAAM,EAAE;AAClC,MAAA,GAAGP,OAAO;MACVwB,WAAW;AACX0B,MAAAA,oBAAoB,EAAE;AACxB,KAAC,CAAC;IACF,OAAO,IAAI,IAAI,CAAC;AACd,MAAA,GAAGH,YAAY;MACfhB,gBAAgB,EACdA,gBAAgB,IAAKA,gBAAgB,CAACoB,KAAK,CAAC,CAAC,CAAY;AAC3D5C,MAAAA,MAAM,EAAEyC;AACV,KAAC,CAAC;AACJ;AACF;AAAC/C,eAAA,CA5MYN,OAAO,EAAA,MAAA,EACJ,SAAS,CAAA;AA6MzByD,aAAa,CAACC,QAAQ,CAAC1D,OAAO,CAAC;AAC/B;AACAyD,aAAa,CAACC,QAAQ,CAAC1D,OAAO,EAAE,SAAS,CAAC;;;;"}
|
|
@@ -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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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as t}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{config as e}from"../config.min.mjs";import{CENTER as i,VERSION as s}from"../constants.min.mjs";import{createCollectionMixin as r,isCollection as n}from"../Collection.min.mjs";import{CommonMethods as o}from"../CommonMethods.min.mjs";import{Point as h}from"../Point.min.mjs";import{requestAnimFrame as a,cancelAnimFrame as l}from"../util/animation/AnimationFrameProvider.min.mjs";import{runningAnimations as c}from"../util/animation/AnimationRegistry.min.mjs";import{uid as d}from"../util/internals/uid.min.mjs";import{createCanvasElementFor as m,toDataURL as g,toBlob as u}from"../util/misc/dom.min.mjs";import{transformPoint as p,invertTransform as v}from"../util/misc/matrix.min.mjs";import{enlivenObjects as f,enlivenObjectEnlivables as w}from"../util/misc/objectEnlive.min.mjs";import{pick as b}from"../util/misc/pick.min.mjs";import{matrixToSVG as O}from"../util/misc/svgExport.min.mjs";import{toFixed as j}from"../util/misc/toFixed.min.mjs";import{isFiller as C,isTextObject as _,isPattern as y}from"../util/typeAssertions.min.mjs";import{StaticCanvasDOMManager as x}from"./DOMManagers/StaticCanvasDOMManager.min.mjs";import{staticCanvasDefaults as S}from"./StaticCanvasOptions.min.mjs";import{log as T,FabricError as P}from"../util/internals/console.min.mjs";import{getDevicePixelRatio as V}from"../env/index.min.mjs";class R extends(r(o)){get lowerCanvasEl(){var t;return null===(t=this.elements.lower)||void 0===t?void 0:t.el}get contextContainer(){var t;return null===(t=this.elements.lower)||void 0===t?void 0:t.ctx}static getDefaults(){return R.ownDefaults}constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),Object.assign(this,this.constructor.getDefaults()),this.set(e),this.initElements(t),this._setDimensionsImpl({width:this.width||this.elements.lower.el.width||0,height:this.height||this.elements.lower.el.height||0}),this.skipControlsDrawing=!1,this.viewportTransform=[...this.viewportTransform],this.calcViewportBoundaries()}initElements(t){this.elements=new x(t)}add(){const t=super.add(...arguments);return arguments.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),t}insertAt(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),s=1;s<e;s++)i[s-1]=arguments[s];const r=super.insertAt(t,...i);return i.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),r}remove(){const t=super.remove(...arguments);return t.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),t}_onObjectAdded(t){t.canvas&&t.canvas!==this&&(T("warn","Canvas is trying to add an object that belongs to a different canvas.\nResulting to default behavior: removing object from previous canvas and adding to new canvas"),t.canvas.remove(t)),t._set("canvas",this),t.setCoords(),this.fire("object:added",{target:t}),t.fire("added",{target:this})}_onObjectRemoved(t){t._set("canvas",void 0),this.fire("object:removed",{target:t}),t.fire("removed",{target:this})}_onStackOrderChanged(){this.renderOnAddRemove&&this.requestRenderAll()}getRetinaScaling(){return this.enableRetinaScaling?V():1}calcOffset(){return this._offset=this.elements.calcOffset()}getWidth(){return this.width}getHeight(){return this.height}setWidth(t,e){return this.setDimensions({width:t},e)}setHeight(t,e){return this.setDimensions({height:t},e)}_setDimensionsImpl(t){let{cssOnly:e=!1,backstoreOnly:i=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e){const e={width:this.width,height:this.height,...t};this.elements.setDimensions(e,this.getRetinaScaling()),this.hasLostContext=!0,this.width=e.width,this.height=e.height}i||this.elements.setCSSDimensions(t),this.calcOffset()}setDimensions(t,e){this._setDimensionsImpl(t,e),e&&e.cssOnly||this.requestRenderAll()}getZoom(){return this.viewportTransform[0]}setViewportTransform(t){this.viewportTransform=t,this.calcViewportBoundaries(),this.renderOnAddRemove&&this.requestRenderAll()}zoomToPoint(t,e){const i=t,s=[...this.viewportTransform],r=p(t,v(s));s[0]=e,s[3]=e;const n=p(r,s);s[4]+=i.x-n.x,s[5]+=i.y-n.y,this.setViewportTransform(s)}setZoom(t){this.zoomToPoint(new h(0,0),t)}absolutePan(t){const e=[...this.viewportTransform];return e[4]=-t.x,e[5]=-t.y,this.setViewportTransform(e)}relativePan(t){return this.absolutePan(new h(-t.x-this.viewportTransform[4],-t.y-this.viewportTransform[5]))}getElement(){return this.elements.lower.el}clearContext(t){t.clearRect(0,0,this.width,this.height)}getContext(){return this.elements.lower.ctx}clear(){this.remove(...this.getObjects()),this.backgroundImage=void 0,this.overlayImage=void 0,this.backgroundColor="",this.overlayColor="",this.clearContext(this.getContext()),this.fire("canvas:cleared"),this.renderOnAddRemove&&this.requestRenderAll()}renderAll(){this.cancelRequestedRender(),this.destroyed||this.renderCanvas(this.getContext(),this._objects)}renderAndReset(){this.nextRenderHandle=0,this.renderAll()}requestRenderAll(){this.nextRenderHandle||this.disposed||this.destroyed||(this.nextRenderHandle=a((()=>this.renderAndReset())))}calcViewportBoundaries(){const t=this.width,e=this.height,i=v(this.viewportTransform),s=p({x:0,y:0},i),r=p({x:t,y:e},i),n=s.min(r),o=s.max(r);return this.vptCoords={tl:n,tr:new h(o.x,n.y),bl:new h(n.x,o.y),br:o}}cancelRequestedRender(){this.nextRenderHandle&&(l(this.nextRenderHandle),this.nextRenderHandle=0)}drawControls(t){}renderCanvas(t,e){if(this.destroyed)return;const i=this.viewportTransform,s=this.clipPath;this.calcViewportBoundaries(),this.clearContext(t),t.imageSmoothingEnabled=this.imageSmoothingEnabled,t.patternQuality="best",this.fire("before:render",{ctx:t}),this._renderBackground(t),t.save(),t.transform(i[0],i[1],i[2],i[3],i[4],i[5]),this._renderObjects(t,e),t.restore(),this.controlsAboveOverlay||this.skipControlsDrawing||this.drawControls(t),s&&(s._set("canvas",this),s.shouldCache(),s._transformDone=!0,s.renderCache({forClipping:!0}),this.drawClipPathOnCanvas(t,s)),this._renderOverlay(t),this.controlsAboveOverlay&&!this.skipControlsDrawing&&this.drawControls(t),this.fire("after:render",{ctx:t}),this.__cleanupTask&&(this.__cleanupTask(),this.__cleanupTask=void 0)}drawClipPathOnCanvas(t,e){const i=this.viewportTransform;t.save(),t.transform(...i),t.globalCompositeOperation="destination-in",e.transform(t),t.scale(1/e.zoomX,1/e.zoomY),t.drawImage(e._cacheCanvas,-e.cacheTranslationX,-e.cacheTranslationY),t.restore()}_renderObjects(t,e){for(let i=0,s=e.length;i<s;++i)e[i]&&e[i].render(t)}_renderBackgroundOrOverlay(t,e){const i=this[`${e}Color`],s=this[`${e}Image`],r=this.viewportTransform,n=this[`${e}Vpt`];if(!i&&!s)return;const o=C(i);if(i){if(t.save(),t.beginPath(),t.moveTo(0,0),t.lineTo(this.width,0),t.lineTo(this.width,this.height),t.lineTo(0,this.height),t.closePath(),t.fillStyle=o?i.toLive(t):i,n&&t.transform(...r),o){t.transform(1,0,0,1,i.offsetX||0,i.offsetY||0);const e=i.gradientTransform||i.patternTransform;e&&t.transform(...e)}t.fill(),t.restore()}if(s){t.save();const{skipOffscreen:e}=this;this.skipOffscreen=n,n&&t.transform(...r),s.render(t),this.skipOffscreen=e,t.restore()}}_renderBackground(t){this._renderBackgroundOrOverlay(t,"background")}_renderOverlay(t){this._renderBackgroundOrOverlay(t,"overlay")}getCenter(){return{top:this.height/2,left:this.width/2}}getCenterPoint(){return new h(this.width/2,this.height/2)}centerObjectH(t){return this._centerObject(t,new h(this.getCenterPoint().x,t.getCenterPoint().y))}centerObjectV(t){return this._centerObject(t,new h(t.getCenterPoint().x,this.getCenterPoint().y))}centerObject(t){return this._centerObject(t,this.getCenterPoint())}viewportCenterObject(t){return this._centerObject(t,this.getVpCenter())}viewportCenterObjectH(t){return this._centerObject(t,new h(this.getVpCenter().x,t.getCenterPoint().y))}viewportCenterObjectV(t){return this._centerObject(t,new h(t.getCenterPoint().x,this.getVpCenter().y))}getVpCenter(){return p(this.getCenterPoint(),v(this.viewportTransform))}_centerObject(t,e){t.setXY(e,i,i),t.setCoords(),this.renderOnAddRemove&&this.requestRenderAll()}toDatalessJSON(t){return this.toDatalessObject(t)}toObject(t){return this._toObjectMethod("toObject",t)}toJSON(){return this.toObject()}toDatalessObject(t){return this._toObjectMethod("toDatalessObject",t)}_toObjectMethod(t,e){const i=this.clipPath,r=i&&!i.excludeFromExport?this._toObject(i,t,e):null;return{version:s,...b(this,e),objects:this._objects.filter((t=>!t.excludeFromExport)).map((i=>this._toObject(i,t,e))),...this.__serializeBgOverlay(t,e),...r?{clipPath:r}:null}}_toObject(t,e,i){let s;this.includeDefaultValues||(s=t.includeDefaultValues,t.includeDefaultValues=!1);const r=t[e](i);return this.includeDefaultValues||(t.includeDefaultValues=!!s),r}__serializeBgOverlay(t,e){const i={},s=this.backgroundImage,r=this.overlayImage,n=this.backgroundColor,o=this.overlayColor;return C(n)?n.excludeFromExport||(i.background=n.toObject(e)):n&&(i.background=n),C(o)?o.excludeFromExport||(i.overlay=o.toObject(e)):o&&(i.overlay=o),s&&!s.excludeFromExport&&(i.backgroundImage=this._toObject(s,t,e)),r&&!r.excludeFromExport&&(i.overlayImage=this._toObject(r,t,e)),i}toSVG(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;t.reviver=e;const i=[];return this._setSVGPreamble(i,t),this._setSVGHeader(i,t),this.clipPath&&i.push(`<g clip-path="url(#${this.clipPath.clipPathId})" >\n`),this._setSVGBgOverlayColor(i,"background"),this._setSVGBgOverlayImage(i,"backgroundImage",e),this._setSVGObjects(i,e),this.clipPath&&i.push("</g>\n"),this._setSVGBgOverlayColor(i,"overlay"),this._setSVGBgOverlayImage(i,"overlayImage",e),i.push("</svg>"),i.join("")}_setSVGPreamble(t,e){e.suppressPreamble||t.push('<?xml version="1.0" encoding="',e.encoding||"UTF-8",'" standalone="no" ?>\n','<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" ','"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')}_setSVGHeader(t,i){const r=i.width||`${this.width}`,n=i.height||`${this.height}`,o=e.NUM_FRACTION_DIGITS,h=i.viewBox;let a;if(h)a=`viewBox="${h.x} ${h.y} ${h.width} ${h.height}" `;else if(this.svgViewportTransformation){const t=this.viewportTransform;a=`viewBox="${j(-t[4]/t[0],o)} ${j(-t[5]/t[3],o)} ${j(this.width/t[0],o)} ${j(this.height/t[3],o)}" `}else a=`viewBox="0 0 ${this.width} ${this.height}" `;t.push("<svg ",'xmlns="http://www.w3.org/2000/svg" ','xmlns:xlink="http://www.w3.org/1999/xlink" ','version="1.1" ','width="',r,'" ','height="',n,'" ',a,'xml:space="preserve">\n',"<desc>Created with Fabric.js ",s,"</desc>\n","<defs>\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(i),this._createPathForText(),"</defs>\n")}_createPathForText(){const t=[];let e,i,s,r=this._objects;for(i=0,s=r.length;i<s;i++){if(e=r[i],e.excludeFromExport)continue;if(!_(e)||!e.path)continue;let s=`TEXTPATH_${e.id}`,n=e.path._toSVG(),o=n.indexOf("COMMON_PARTS");n[o]=['id="'+s+'" ','transform="translate('+-e.path.pathOffset.x+","+-e.path.pathOffset.y+')" '].join(""),t.push(n.join(""))}return t.join("\n")}createSVGClipPathMarkup(t){const e=this.clipPath;return e?(e.clipPathId=`CLIPPATH_${d()}`,`<clipPath id="${e.clipPathId}" >\n${e.toClipPathSVG(t.reviver)}</clipPath>\n`):""}createSVGRefElementsMarkup(){return["background","overlay"].map((t=>{const e=this[`${t}Color`];if(C(e)){const i=this[`${t}Vpt`],s=this.viewportTransform,r={isType:()=>!1,width:this.width/(i?s[0]:1),height:this.height/(i?s[3]:1)};return e.toSVG(r,{additionalTransform:i?O(s):""})}})).join("")}createSVGFontFacesMarkup(){const t=[],i={},s=e.fontPaths;this._objects.forEach((function e(i){t.push(i),n(i)&&i._objects.forEach(e)})),t.forEach((t=>{if(!_(t))return;const{styles:e,fontFamily:r}=t;!i[r]&&s[r]&&(i[r]=!0,e&&Object.values(e).forEach((t=>{Object.values(t).forEach((t=>{let{fontFamily:e=""}=t;!i[e]&&s[e]&&(i[e]=!0)}))})))}));const r=Object.keys(i).map((t=>`\t\t@font-face {\n\t\t\tfont-family: '${t}';\n\t\t\tsrc: url('${s[t]}');\n\t\t}\n`)).join("");return r?`\t<style type="text/css"><![CDATA[\n${r}]]></style>\n`:""}_setSVGObjects(t,e){this.forEachObject((i=>{i.excludeFromExport||this._setSVGObject(t,i,e)}))}_setSVGObject(t,e,i){t.push(e.toSVG(i))}_setSVGBgOverlayImage(t,e,i){const s=this[e];s&&!s.excludeFromExport&&s.toSVG&&t.push(s.toSVG(i))}_setSVGBgOverlayColor(t,e){const i=this[`${e}Color`];if(i)if(C(i)){const s=i.repeat||"",r=this.width,n=this.height,o=this[`${e}Vpt`]?O(v(this.viewportTransform)):"";t.push(`<rect transform="${o} translate(${r/2},${n/2})" x="${i.offsetX-r/2}" y="${i.offsetY-n/2}" width="${"repeat-y"!==s&&"no-repeat"!==s||!y(i)?r:i.source.width}" height="${"repeat-x"!==s&&"no-repeat"!==s||!y(i)?n:i.source.height}" fill="url(#SVGID_${i.id})"></rect>\n`)}else t.push('<rect x="0" y="0" width="100%" height="100%" ','fill="',i,'"',"></rect>\n")}loadFromJSON(t,e){let{signal:i}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!t)return Promise.reject(new P("`json` is undefined"));const s="string"==typeof t?JSON.parse(t):t,{objects:r=[],backgroundImage:n,background:o,overlayImage:h,overlay:a,clipPath:l}=s,c=this.renderOnAddRemove;return this.renderOnAddRemove=!1,Promise.all([f(r,{reviver:e,signal:i}),w({backgroundImage:n,backgroundColor:o,overlayImage:h,overlayColor:a,clipPath:l},{signal:i})]).then((t=>{let[e,i]=t;return this.clear(),this.add(...e),this.set(s),this.set(i),this.renderOnAddRemove=c,this}))}clone(t){const e=this.toObject(t);return this.cloneWithoutData().loadFromJSON(e)}cloneWithoutData(){const t=m(this);return new this.constructor(t)}toDataURL(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{format:e="png",quality:i=1,multiplier:s=1,enableRetinaScaling:r=!1}=t,n=s*(r?this.getRetinaScaling():1);return g(this.toCanvasElement(n,t),e,i)}toBlob(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{format:e="png",quality:i=1,multiplier:s=1,enableRetinaScaling:r=!1}=t,n=s*(r?this.getRetinaScaling():1);return u(this.toCanvasElement(n,t),e,i)}toCanvasElement(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,{width:e,height:i,left:s,top:r,filter:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=(e||this.width)*t,h=(i||this.height)*t,a=this.getZoom(),l=this.width,c=this.height,d=this.skipControlsDrawing,g=a*t,u=this.viewportTransform,p=[g,0,0,g,(u[4]-(s||0))*t,(u[5]-(r||0))*t],v=this.enableRetinaScaling,f=m({width:o,height:h}),w=n?this._objects.filter((t=>n(t))):this._objects;return this.enableRetinaScaling=!1,this.viewportTransform=p,this.width=o,this.height=h,this.skipControlsDrawing=!0,this.calcViewportBoundaries(),this.renderCanvas(f.getContext("2d"),w),this.viewportTransform=u,this.width=l,this.height=c,this.calcViewportBoundaries(),this.enableRetinaScaling=v,this.skipControlsDrawing=d,f}dispose(){return!this.disposed&&this.elements.cleanupDOM({width:this.width,height:this.height}),c.cancelByCanvas(this),this.disposed=!0,new Promise(((t,e)=>{const i=()=>{this.destroy(),t(!0)};i.kill=e,this.__cleanupTask&&this.__cleanupTask.kill("aborted"),this.destroyed?t(!1):this.nextRenderHandle?this.__cleanupTask=i:i()}))}destroy(){this.destroyed=!0,this.cancelRequestedRender(),this.forEachObject((t=>t.dispose())),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose(),this.backgroundImage=void 0,this.overlayImage&&this.overlayImage.dispose(),this.overlayImage=void 0,this.elements.dispose()}toString(){return`#<Canvas (${this.complexity()}): { objects: ${this._objects.length} }>`}}t(R,"ownDefaults",S);export{R as StaticCanvas};
|
|
1
|
+
import{defineProperty as t}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{config as e}from"../config.min.mjs";import{CENTER as i,VERSION as s}from"../constants.min.mjs";import{createCollectionMixin as r,isCollection as n}from"../Collection.min.mjs";import{CommonMethods as o}from"../CommonMethods.min.mjs";import{Point as h}from"../Point.min.mjs";import{requestAnimFrame as a,cancelAnimFrame as l}from"../util/animation/AnimationFrameProvider.min.mjs";import{runningAnimations as c}from"../util/animation/AnimationRegistry.min.mjs";import{uid as d}from"../util/internals/uid.min.mjs";import{createCanvasElementFor as m,toDataURL as g,toBlob as u}from"../util/misc/dom.min.mjs";import{transformPoint as p,invertTransform as f}from"../util/misc/matrix.min.mjs";import{enlivenObjects as v,enlivenObjectEnlivables as w}from"../util/misc/objectEnlive.min.mjs";import{pick as b}from"../util/misc/pick.min.mjs";import{matrixToSVG as O}from"../util/misc/svgExport.min.mjs";import{toFixed as j}from"../util/misc/toFixed.min.mjs";import{isFiller as _,isTextObject as C,isPattern as y}from"../util/typeAssertions.min.mjs";import{StaticCanvasDOMManager as x}from"./DOMManagers/StaticCanvasDOMManager.min.mjs";import{staticCanvasDefaults as S}from"./StaticCanvasOptions.min.mjs";import{log as T,FabricError as P}from"../util/internals/console.min.mjs";import{getDevicePixelRatio as V}from"../env/index.min.mjs";class R extends(r(o)){get lowerCanvasEl(){var t;return null===(t=this.elements.lower)||void 0===t?void 0:t.el}get contextContainer(){var t;return null===(t=this.elements.lower)||void 0===t?void 0:t.ctx}static getDefaults(){return R.ownDefaults}constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),Object.assign(this,this.constructor.getDefaults()),this.set(e),this.initElements(t),this._setDimensionsImpl({width:this.width||this.elements.lower.el.width||0,height:this.height||this.elements.lower.el.height||0}),this.skipControlsDrawing=!1,this.viewportTransform=[...this.viewportTransform],this.calcViewportBoundaries()}initElements(t){this.elements=new x(t)}add(){const t=super.add(...arguments);return arguments.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),t}insertAt(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),s=1;s<e;s++)i[s-1]=arguments[s];const r=super.insertAt(t,...i);return i.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),r}remove(){const t=super.remove(...arguments);return t.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),t}_onObjectAdded(t){t.canvas&&t.canvas!==this&&(T("warn","Canvas is trying to add an object that belongs to a different canvas.\nResulting to default behavior: removing object from previous canvas and adding to new canvas"),t.canvas.remove(t)),t._set("canvas",this),t.setCoords(),this.fire("object:added",{target:t}),t.fire("added",{target:this})}_onObjectRemoved(t){t._set("canvas",void 0),this.fire("object:removed",{target:t}),t.fire("removed",{target:this})}_onStackOrderChanged(){this.renderOnAddRemove&&this.requestRenderAll()}getRetinaScaling(){return this.enableRetinaScaling?V():1}calcOffset(){return this._offset=this.elements.calcOffset()}getWidth(){return this.width}getHeight(){return this.height}setWidth(t,e){return this.setDimensions({width:t},e)}setHeight(t,e){return this.setDimensions({height:t},e)}_setDimensionsImpl(t){let{cssOnly:e=!1,backstoreOnly:i=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e){const e={width:this.width,height:this.height,...t};this.elements.setDimensions(e,this.getRetinaScaling()),this.hasLostContext=!0,this.width=e.width,this.height=e.height}i||this.elements.setCSSDimensions(t),this.calcOffset()}setDimensions(t,e){this._setDimensionsImpl(t,e),e&&e.cssOnly||this.requestRenderAll()}getZoom(){return this.viewportTransform[0]}setViewportTransform(t){this.viewportTransform=t,this.calcViewportBoundaries(),this.renderOnAddRemove&&this.requestRenderAll()}zoomToPoint(t,e){const i=t,s=[...this.viewportTransform],r=p(t,f(s));s[0]=e,s[3]=e;const n=p(r,s);s[4]+=i.x-n.x,s[5]+=i.y-n.y,this.setViewportTransform(s)}setZoom(t){this.zoomToPoint(new h(0,0),t)}absolutePan(t){const e=[...this.viewportTransform];return e[4]=-t.x,e[5]=-t.y,this.setViewportTransform(e)}relativePan(t){return this.absolutePan(new h(-t.x-this.viewportTransform[4],-t.y-this.viewportTransform[5]))}getElement(){return this.elements.lower.el}clearContext(t){t.clearRect(0,0,this.width,this.height)}getContext(){return this.elements.lower.ctx}clear(){this.remove(...this.getObjects()),this.backgroundImage=void 0,this.overlayImage=void 0,this.backgroundColor="",this.overlayColor="",this.clearContext(this.getContext()),this.fire("canvas:cleared"),this.renderOnAddRemove&&this.requestRenderAll()}renderAll(){this.cancelRequestedRender(),this.destroyed||this.renderCanvas(this.getContext(),this._objects)}renderAndReset(){this.nextRenderHandle=0,this.renderAll()}requestRenderAll(){this.nextRenderHandle||this.disposed||this.destroyed||(this.nextRenderHandle=a((()=>this.renderAndReset())))}calcViewportBoundaries(){const t=this.width,e=this.height,i=f(this.viewportTransform),s=p({x:0,y:0},i),r=p({x:t,y:e},i),n=s.min(r),o=s.max(r);return this.vptCoords={tl:n,tr:new h(o.x,n.y),bl:new h(n.x,o.y),br:o}}cancelRequestedRender(){this.nextRenderHandle&&(l(this.nextRenderHandle),this.nextRenderHandle=0)}drawControls(t){}renderCanvas(t,e){if(this.destroyed)return;const i=this.viewportTransform,s=this.clipPath;this.calcViewportBoundaries(),this.clearContext(t),t.imageSmoothingEnabled=this.imageSmoothingEnabled,t.patternQuality="best",this.fire("before:render",{ctx:t}),this._renderBackground(t),t.save(),t.transform(i[0],i[1],i[2],i[3],i[4],i[5]),this._renderObjects(t,e),t.restore(),this.controlsAboveOverlay||this.skipControlsDrawing||this.drawControls(t),s&&(s._set("canvas",this),s.shouldCache(),s._transformDone=!0,s.renderCache({forClipping:!0}),this.drawClipPathOnCanvas(t,s)),this._renderOverlay(t),this.controlsAboveOverlay&&!this.skipControlsDrawing&&this.drawControls(t),this.fire("after:render",{ctx:t}),this.__cleanupTask&&(this.__cleanupTask(),this.__cleanupTask=void 0)}drawClipPathOnCanvas(t,e){const i=this.viewportTransform;t.save(),t.transform(...i),t.globalCompositeOperation="destination-in",e.transform(t),t.scale(1/e.zoomX,1/e.zoomY),t.drawImage(e._cacheCanvas,-e.cacheTranslationX,-e.cacheTranslationY),t.restore()}_renderObjects(t,e){for(let i=0,s=e.length;i<s;++i)e[i]&&e[i].render(t)}_renderBackgroundOrOverlay(t,e){const i=this[`${e}Color`],s=this[`${e}Image`],r=this.viewportTransform,n=this[`${e}Vpt`];if(!i&&!s)return;const o=_(i);if(i){if(t.save(),t.beginPath(),t.moveTo(0,0),t.lineTo(this.width,0),t.lineTo(this.width,this.height),t.lineTo(0,this.height),t.closePath(),t.fillStyle=o?i.toLive(t):i,n&&t.transform(...r),o){t.transform(1,0,0,1,i.offsetX||0,i.offsetY||0);const e=i.gradientTransform||i.patternTransform;e&&t.transform(...e)}t.fill(),t.restore()}if(s){t.save();const{skipOffscreen:e}=this;this.skipOffscreen=n,n&&t.transform(...r),s.render(t),this.skipOffscreen=e,t.restore()}}_renderBackground(t){this._renderBackgroundOrOverlay(t,"background")}_renderOverlay(t){this._renderBackgroundOrOverlay(t,"overlay")}getCenter(){return{top:this.height/2,left:this.width/2}}getCenterPoint(){return new h(this.width/2,this.height/2)}centerObjectH(t){return this._centerObject(t,new h(this.getCenterPoint().x,t.getCenterPoint().y))}centerObjectV(t){return this._centerObject(t,new h(t.getCenterPoint().x,this.getCenterPoint().y))}centerObject(t){return this._centerObject(t,this.getCenterPoint())}viewportCenterObject(t){return this._centerObject(t,this.getVpCenter())}viewportCenterObjectH(t){return this._centerObject(t,new h(this.getVpCenter().x,t.getCenterPoint().y))}viewportCenterObjectV(t){return this._centerObject(t,new h(t.getCenterPoint().x,this.getVpCenter().y))}getVpCenter(){return p(this.getCenterPoint(),f(this.viewportTransform))}_centerObject(t,e){t.setXY(e,i,i),t.setCoords(),this.renderOnAddRemove&&this.requestRenderAll()}toDatalessJSON(t){return this.toDatalessObject(t)}toObject(t){return this._toObjectMethod("toObject",t)}toJSON(){return this.toObject()}toDatalessObject(t){return this._toObjectMethod("toDatalessObject",t)}_toObjectMethod(t,e){const i=this.clipPath,r=i&&!i.excludeFromExport?this._toObject(i,t,e):null;return{version:s,...b(this,e),objects:this._objects.filter((t=>!t.excludeFromExport)).map((i=>this._toObject(i,t,e))),...this.__serializeBgOverlay(t,e),...r?{clipPath:r}:null}}_toObject(t,e,i){let s;this.includeDefaultValues||(s=t.includeDefaultValues,t.includeDefaultValues=!1);const r=t[e](i);return this.includeDefaultValues||(t.includeDefaultValues=!!s),r}__serializeBgOverlay(t,e){const i={},s=this.backgroundImage,r=this.overlayImage,n=this.backgroundColor,o=this.overlayColor;return _(n)?n.excludeFromExport||(i.background=n.toObject(e)):n&&(i.background=n),_(o)?o.excludeFromExport||(i.overlay=o.toObject(e)):o&&(i.overlay=o),s&&!s.excludeFromExport&&(i.backgroundImage=this._toObject(s,t,e)),r&&!r.excludeFromExport&&(i.overlayImage=this._toObject(r,t,e)),i}toSVG(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;t.reviver=e;const i=[];return this._setSVGPreamble(i,t),this._setSVGHeader(i,t),this.clipPath&&i.push(`<g clip-path="url(#${this.clipPath.clipPathId})" >\n`),this._setSVGBgOverlayColor(i,"background"),this._setSVGBgOverlayImage(i,"backgroundImage",e),this._setSVGObjects(i,e),this.clipPath&&i.push("</g>\n"),this._setSVGBgOverlayColor(i,"overlay"),this._setSVGBgOverlayImage(i,"overlayImage",e),i.push("</svg>"),i.join("")}_setSVGPreamble(t,e){e.suppressPreamble||t.push('<?xml version="1.0" encoding="',e.encoding||"UTF-8",'" standalone="no" ?>\n','<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" ','"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')}_setSVGHeader(t,i){const r=i.width||`${this.width}`,n=i.height||`${this.height}`,o=e.NUM_FRACTION_DIGITS,h=i.viewBox;let a;if(h)a=`viewBox="${h.x} ${h.y} ${h.width} ${h.height}" `;else if(this.svgViewportTransformation){const t=this.viewportTransform;a=`viewBox="${j(-t[4]/t[0],o)} ${j(-t[5]/t[3],o)} ${j(this.width/t[0],o)} ${j(this.height/t[3],o)}" `}else a=`viewBox="0 0 ${this.width} ${this.height}" `;t.push("<svg ",'xmlns="http://www.w3.org/2000/svg" ','xmlns:xlink="http://www.w3.org/1999/xlink" ','version="1.1" ','width="',r,'" ','height="',n,'" ',a,'xml:space="preserve">\n',"<desc>Created with Fabric.js ",s,"</desc>\n","<defs>\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(i),this._createPathForText(),"</defs>\n")}_createPathForText(){const t=[],e=[];return this._objects.forEach((function t(i){e.push(i),n(i)&&i._objects.forEach(t)})),e.forEach((e=>{if(e.excludeFromExport)return;if(!C(e)||!e.path)return;const i=`TEXTPATH_${e.id}`,s=e.path._toSVG(),r=s.indexOf("COMMON_PARTS");s[r]=['id="'+i+'" ','transform="translate('+-e.path.pathOffset.x+","+-e.path.pathOffset.y+')" '].join(""),t.push(s.join(""))})),t.join("\n")}createSVGClipPathMarkup(t){const e=this.clipPath;return e?(e.clipPathId=`CLIPPATH_${d()}`,`<clipPath id="${e.clipPathId}" >\n${e.toClipPathSVG(t.reviver)}</clipPath>\n`):""}createSVGRefElementsMarkup(){return["background","overlay"].map((t=>{const e=this[`${t}Color`];if(_(e)){const i=this[`${t}Vpt`],s=this.viewportTransform,r={isType:()=>!1,width:this.width/(i?s[0]:1),height:this.height/(i?s[3]:1)};return e.toSVG(r,{additionalTransform:i?O(s):""})}})).join("")}createSVGFontFacesMarkup(){const t=[],i={},s=e.fontPaths;this._objects.forEach((function e(i){t.push(i),n(i)&&i._objects.forEach(e)})),t.forEach((t=>{if(!C(t))return;const{styles:e,fontFamily:r}=t;!i[r]&&s[r]&&(i[r]=!0,e&&Object.values(e).forEach((t=>{Object.values(t).forEach((t=>{let{fontFamily:e=""}=t;!i[e]&&s[e]&&(i[e]=!0)}))})))}));const r=Object.keys(i).map((t=>`\t\t@font-face {\n\t\t\tfont-family: '${t}';\n\t\t\tsrc: url('${s[t]}');\n\t\t}\n`)).join("");return r?`\t<style type="text/css"><![CDATA[\n${r}]]></style>\n`:""}_setSVGObjects(t,e){this.forEachObject((i=>{i.excludeFromExport||this._setSVGObject(t,i,e)}))}_setSVGObject(t,e,i){t.push(e.toSVG(i))}_setSVGBgOverlayImage(t,e,i){const s=this[e];s&&!s.excludeFromExport&&s.toSVG&&t.push(s.toSVG(i))}_setSVGBgOverlayColor(t,e){const i=this[`${e}Color`];if(i)if(_(i)){const s=i.repeat||"",r=this.width,n=this.height,o=this[`${e}Vpt`]?O(f(this.viewportTransform)):"";t.push(`<rect transform="${o} translate(${r/2},${n/2})" x="${i.offsetX-r/2}" y="${i.offsetY-n/2}" width="${"repeat-y"!==s&&"no-repeat"!==s||!y(i)?r:i.source.width}" height="${"repeat-x"!==s&&"no-repeat"!==s||!y(i)?n:i.source.height}" fill="url(#SVGID_${i.id})"></rect>\n`)}else t.push('<rect x="0" y="0" width="100%" height="100%" ','fill="',i,'"',"></rect>\n")}loadFromJSON(t,e){let{signal:i}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!t)return Promise.reject(new P("`json` is undefined"));const s="string"==typeof t?JSON.parse(t):t,{objects:r=[],backgroundImage:n,background:o,overlayImage:h,overlay:a,clipPath:l}=s,c=this.renderOnAddRemove;return this.renderOnAddRemove=!1,Promise.all([v(r,{reviver:e,signal:i}),w({backgroundImage:n,backgroundColor:o,overlayImage:h,overlayColor:a,clipPath:l},{signal:i})]).then((t=>{let[e,i]=t;return this.clear(),this.add(...e),this.set(s),this.set(i),this.renderOnAddRemove=c,this}))}clone(t){const e=this.toObject(t);return this.cloneWithoutData().loadFromJSON(e)}cloneWithoutData(){const t=m(this);return new this.constructor(t)}toDataURL(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{format:e="png",quality:i=1,multiplier:s=1,enableRetinaScaling:r=!1}=t,n=s*(r?this.getRetinaScaling():1);return g(this.toCanvasElement(n,t),e,i)}toBlob(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{format:e="png",quality:i=1,multiplier:s=1,enableRetinaScaling:r=!1}=t,n=s*(r?this.getRetinaScaling():1);return u(this.toCanvasElement(n,t),e,i)}toCanvasElement(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,{width:e,height:i,left:s,top:r,filter:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=(e||this.width)*t,h=(i||this.height)*t,a=this.getZoom(),l=this.width,c=this.height,d=this.skipControlsDrawing,g=a*t,u=this.viewportTransform,p=[g,0,0,g,(u[4]-(s||0))*t,(u[5]-(r||0))*t],f=this.enableRetinaScaling,v=m({width:o,height:h}),w=n?this._objects.filter((t=>n(t))):this._objects;return this.enableRetinaScaling=!1,this.viewportTransform=p,this.width=o,this.height=h,this.skipControlsDrawing=!0,this.calcViewportBoundaries(),this.renderCanvas(v.getContext("2d"),w),this.viewportTransform=u,this.width=l,this.height=c,this.calcViewportBoundaries(),this.enableRetinaScaling=f,this.skipControlsDrawing=d,v}dispose(){return!this.disposed&&this.elements.cleanupDOM({width:this.width,height:this.height}),c.cancelByCanvas(this),this.disposed=!0,new Promise(((t,e)=>{const i=()=>{this.destroy(),t(!0)};i.kill=e,this.__cleanupTask&&this.__cleanupTask.kill("aborted"),this.destroyed?t(!1):this.nextRenderHandle?this.__cleanupTask=i:i()}))}destroy(){this.destroyed=!0,this.cancelRequestedRender(),this.forEachObject((t=>t.dispose())),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose(),this.backgroundImage=void 0,this.overlayImage&&this.overlayImage.dispose(),this.overlayImage=void 0,this.elements.dispose()}toString(){return`#<Canvas (${this.complexity()}): { objects: ${this._objects.length} }>`}}t(R,"ownDefaults",S);export{R as StaticCanvas};
|
|
2
2
|
//# sourceMappingURL=StaticCanvas.min.mjs.map
|