UNPKG

fabric

Version:

Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.

1 lines 4.44 kB
{"version":3,"file":"dom.mjs","sources":["../../../../src/util/misc/dom.ts"],"sourcesContent":["import { getFabricDocument } from '../../env';\nimport type { ImageFormat, TSize } from '../../typedefs';\nimport { FabricError } from '../internals/console';\n/**\n * Creates canvas element\n * @return {CanvasElement} initialized canvas element\n */\nexport const createCanvasElement = (): HTMLCanvasElement => {\n const element = getFabricDocument().createElement('canvas');\n if (!element || typeof element.getContext === 'undefined') {\n throw new FabricError('Failed to create `canvas` element');\n }\n return element;\n};\n\n/**\n * Creates image element (works on client and node)\n * @return {HTMLImageElement} HTML image element\n */\nexport const createImage = (): HTMLImageElement =>\n getFabricDocument().createElement('img');\n\n/**\n * Creates a canvas element that is a copy of another and is also painted\n * @param {CanvasElement} canvas to copy size and content of\n * @return {CanvasElement} initialized canvas element\n */\nexport const copyCanvasElement = (\n canvas: HTMLCanvasElement,\n): HTMLCanvasElement => {\n const newCanvas = createCanvasElementFor(canvas);\n newCanvas.getContext('2d')?.drawImage(canvas, 0, 0);\n return newCanvas;\n};\n\n/**\n * Creates a canvas element as big as another\n * @param {CanvasElement} canvas to copy size and content of\n * @return {CanvasElement} initialized canvas element\n */\nexport const createCanvasElementFor = (\n canvas: HTMLCanvasElement | ImageData | HTMLImageElement | TSize,\n): HTMLCanvasElement => {\n const newCanvas = createCanvasElement();\n newCanvas.width = canvas.width;\n newCanvas.height = canvas.height;\n return newCanvas;\n};\n\n/**\n * since 2.6.0 moved from canvas instance to utility.\n * possibly useless\n * @param {CanvasElement} canvasEl to copy size and content of\n * @param {String} format 'jpeg' or 'png', in some browsers 'webp' is ok too\n * @param {number} quality <= 1 and > 0\n * @return {String} data url\n */\nexport const toDataURL = (\n canvasEl: HTMLCanvasElement,\n format: ImageFormat,\n quality: number,\n) => canvasEl.toDataURL(`image/${format}`, quality);\n\nexport const isHTMLCanvas = (\n canvas?: HTMLCanvasElement | string,\n): canvas is HTMLCanvasElement => {\n return !!canvas && (canvas as HTMLCanvasElement).getContext !== undefined;\n};\n\nexport const toBlob = (\n canvasEl: HTMLCanvasElement,\n format?: ImageFormat,\n quality?: number,\n) =>\n new Promise((resolve, _) => {\n canvasEl.toBlob(resolve, `image/${format}`, quality);\n }) as Promise<Blob | null>;\n"],"names":["createCanvasElement","element","getFabricDocument","createElement","getContext","FabricError","createImage","copyCanvasElement","canvas","_newCanvas$getContext","newCanvas","createCanvasElementFor","drawImage","width","height","toDataURL","canvasEl","format","quality","concat","isHTMLCanvas","undefined","toBlob","Promise","resolve","_"],"mappings":";;;AAGA;AACA;AACA;AACA;AACaA,MAAAA,mBAAmB,GAAGA,MAAyB;EAC1D,MAAMC,OAAO,GAAGC,iBAAiB,EAAE,CAACC,aAAa,CAAC,QAAQ,CAAC,CAAA;EAC3D,IAAI,CAACF,OAAO,IAAI,OAAOA,OAAO,CAACG,UAAU,KAAK,WAAW,EAAE;AACzD,IAAA,MAAM,IAAIC,WAAW,CAAC,mCAAmC,CAAC,CAAA;AAC5D,GAAA;AACA,EAAA,OAAOJ,OAAO,CAAA;AAChB,EAAC;;AAED;AACA;AACA;AACA;AACaK,MAAAA,WAAW,GAAGA,MACzBJ,iBAAiB,EAAE,CAACC,aAAa,CAAC,KAAK,EAAC;;AAE1C;AACA;AACA;AACA;AACA;AACaI,MAAAA,iBAAiB,GAC5BC,MAAyB,IACH;AAAA,EAAA,IAAAC,qBAAA,CAAA;AACtB,EAAA,MAAMC,SAAS,GAAGC,sBAAsB,CAACH,MAAM,CAAC,CAAA;EAChD,CAAAC,qBAAA,GAAAC,SAAS,CAACN,UAAU,CAAC,IAAI,CAAC,MAAAK,IAAAA,IAAAA,qBAAA,eAA1BA,qBAAA,CAA4BG,SAAS,CAACJ,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AACnD,EAAA,OAAOE,SAAS,CAAA;AAClB,EAAC;;AAED;AACA;AACA;AACA;AACA;AACaC,MAAAA,sBAAsB,GACjCH,MAAgE,IAC1C;AACtB,EAAA,MAAME,SAAS,GAAGV,mBAAmB,EAAE,CAAA;AACvCU,EAAAA,SAAS,CAACG,KAAK,GAAGL,MAAM,CAACK,KAAK,CAAA;AAC9BH,EAAAA,SAAS,CAACI,MAAM,GAAGN,MAAM,CAACM,MAAM,CAAA;AAChC,EAAA,OAAOJ,SAAS,CAAA;AAClB,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACaK,SAAS,GAAGA,CACvBC,QAA2B,EAC3BC,MAAmB,EACnBC,OAAe,KACZF,QAAQ,CAACD,SAAS,CAAAI,QAAAA,CAAAA,MAAA,CAAUF,MAAM,CAAA,EAAIC,OAAO,EAAC;AAEtCE,MAAAA,YAAY,GACvBZ,MAAmC,IACH;EAChC,OAAO,CAAC,CAACA,MAAM,IAAKA,MAAM,CAAuBJ,UAAU,KAAKiB,SAAS,CAAA;AAC3E,EAAC;MAEYC,MAAM,GAAGA,CACpBN,QAA2B,EAC3BC,MAAoB,EACpBC,OAAgB,KAEhB,IAAIK,OAAO,CAAC,CAACC,OAAO,EAAEC,CAAC,KAAK;EAC1BT,QAAQ,CAACM,MAAM,CAACE,OAAO,EAAA,QAAA,CAAAL,MAAA,CAAWF,MAAM,CAAIC,EAAAA,OAAO,CAAC,CAAA;AACtD,CAAC;;;;"}