fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
1 lines • 5.29 kB
Source Map (JSON)
{"version":3,"file":"StaticCanvasDOMManager.mjs","sources":["../../../../src/canvas/DOMManagers/StaticCanvasDOMManager.ts"],"sourcesContent":["import { getEnv, getFabricDocument } from '../../env';\nimport type { TSize } from '../../typedefs';\nimport type { CSSDimensions } from './util';\nimport { setCSSDimensions, getElementOffset } from './util';\nimport { createCanvasElement, isHTMLCanvas } from '../../util/misc/dom';\nimport { setCanvasDimensions } from './util';\nimport { FabricError } from '../../util/internals/console';\n\nexport type CanvasItem = {\n el: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n};\n\nexport class StaticCanvasDOMManager {\n /**\n * Keeps a copy of the canvas style before setting retina scaling and other potions\n * in order to return it to original state on dispose\n * @type string\n */\n private _originalCanvasStyle?: string;\n\n lower: CanvasItem;\n\n constructor(arg0?: string | HTMLCanvasElement) {\n const el = this.createLowerCanvas(arg0);\n this.lower = { el, ctx: el.getContext('2d')! };\n }\n\n protected createLowerCanvas(arg0?: HTMLCanvasElement | string) {\n // canvasEl === 'HTMLCanvasElement' does not work on jsdom/node\n const el = isHTMLCanvas(arg0)\n ? arg0\n : (arg0 &&\n (getFabricDocument().getElementById(arg0) as HTMLCanvasElement)) ||\n createCanvasElement();\n if (el.hasAttribute('data-fabric')) {\n throw new FabricError(\n 'Trying to initialize a canvas that has already been initialized. Did you forget to dispose the canvas?',\n );\n }\n this._originalCanvasStyle = el.style.cssText;\n el.setAttribute('data-fabric', 'main');\n el.classList.add('lower-canvas');\n return el;\n }\n\n cleanupDOM({ width, height }: TSize) {\n const { el } = this.lower;\n // restore canvas style and attributes\n el.classList.remove('lower-canvas');\n el.removeAttribute('data-fabric');\n // restore canvas size to original size in case retina scaling was applied\n el.setAttribute('width', `${width}`);\n el.setAttribute('height', `${height}`);\n el.style.cssText = this._originalCanvasStyle || '';\n this._originalCanvasStyle = undefined;\n }\n\n setDimensions(size: TSize, retinaScaling: number) {\n const { el, ctx } = this.lower;\n setCanvasDimensions(el, ctx, size, retinaScaling);\n }\n\n setCSSDimensions(size: Partial<CSSDimensions>) {\n setCSSDimensions(this.lower.el, size);\n }\n\n /**\n * Calculates canvas element offset relative to the document\n */\n calcOffset() {\n return getElementOffset(this.lower.el);\n }\n\n dispose() {\n getEnv().dispose(this.lower.el);\n // @ts-expect-error disposing\n delete this.lower;\n }\n}\n"],"names":["StaticCanvasDOMManager","constructor","arg0","_defineProperty","el","createLowerCanvas","lower","ctx","getContext","isHTMLCanvas","getFabricDocument","getElementById","createCanvasElement","hasAttribute","FabricError","_originalCanvasStyle","style","cssText","setAttribute","classList","add","cleanupDOM","_ref","width","height","remove","removeAttribute","concat","undefined","setDimensions","size","retinaScaling","setCanvasDimensions","setCSSDimensions","calcOffset","getElementOffset","dispose","getEnv"],"mappings":"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"}