UNPKG

fabric

Version:

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

1 lines 4.22 kB
{"version":3,"file":"StaticCanvasDOMManager.min.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","this","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":"qZAaO,MAAMA,EAUXC,WAAAA,CAAYC,GATZC,EAAAC,KAAA,4BAAA,GAAAD,EAAAC,KAAA,aAAA,GAUE,MAAMC,EAAKD,KAAKE,kBAAkBJ,GAClCE,KAAKG,MAAQ,CAAEF,KAAIG,IAAKH,EAAGI,WAAW,MACxC,CAEUH,iBAAAA,CAAkBJ,GAE1B,MAAMG,EAAKK,EAAaR,GACpBA,EACCA,GACES,IAAoBC,eAAeV,IACtCW,IACJ,GAAIR,EAAGS,aAAa,eAClB,MAAM,IAAIC,EACR,0GAMJ,OAHAX,KAAKY,qBAAuBX,EAAGY,MAAMC,QACrCb,EAAGc,aAAa,cAAe,QAC/Bd,EAAGe,UAAUC,IAAI,gBACVhB,CACT,CAEAiB,UAAAA,CAAUC,GAA2B,IAA1BC,MAAEA,EAAKC,OAAEA,GAAeF,EACjC,MAAMlB,GAAEA,GAAOD,KAAKG,MAEpBF,EAAGe,UAAUM,OAAO,gBACpBrB,EAAGsB,gBAAgB,eAEnBtB,EAAGc,aAAa,WAAOS,OAAKJ,IAC5BnB,EAAGc,aAAa,YAAQS,OAAKH,IAC7BpB,EAAGY,MAAMC,QAAUd,KAAKY,sBAAwB,GAChDZ,KAAKY,0BAAuBa,CAC9B,CAEAC,aAAAA,CAAcC,EAAaC,GACzB,MAAM3B,GAAEA,EAAEG,IAAEA,GAAQJ,KAAKG,MACzB0B,EAAoB5B,EAAIG,EAAKuB,EAAMC,EACrC,CAEAE,gBAAAA,CAAiBH,GACfG,EAAiB9B,KAAKG,MAAMF,GAAI0B,EAClC,CAKAI,UAAAA,GACE,OAAOC,EAAiBhC,KAAKG,MAAMF,GACrC,CAEAgC,OAAAA,GACEC,IAASD,QAAQjC,KAAKG,MAAMF,WAErBD,KAAKG,KACd"}