fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
1 lines • 6.07 kB
Source Map (JSON)
{"version":3,"file":"util.mjs","sources":["../../../../src/canvas/DOMManagers/util.ts"],"sourcesContent":["import { NONE } from '../../constants';\nimport type { TSize } from '../../typedefs';\nimport {\n getDocumentFromElement,\n getWindowFromElement,\n getScrollLeftTop,\n} from '../../util/dom_misc';\n\nexport const setCanvasDimensions = (\n el: HTMLCanvasElement,\n ctx: CanvasRenderingContext2D,\n { width, height }: TSize,\n retinaScaling = 1,\n) => {\n el.width = width;\n el.height = height;\n if (retinaScaling > 1) {\n el.setAttribute('width', (width * retinaScaling).toString());\n el.setAttribute('height', (height * retinaScaling).toString());\n ctx.scale(retinaScaling, retinaScaling);\n }\n};\n\nexport type CSSDimensions = {\n width: number | string;\n height: number | string;\n};\n\nexport const setCSSDimensions = (\n el: HTMLElement,\n { width, height }: Partial<CSSDimensions>,\n) => {\n width && (el.style.width = typeof width === 'number' ? `${width}px` : width);\n height &&\n (el.style.height = typeof height === 'number' ? `${height}px` : height);\n};\n\n/**\n * Returns offset for a given element\n * @param {HTMLElement} element Element to get offset for\n * @return {Object} Object with \"left\" and \"top\" properties\n */\nexport function getElementOffset(element: HTMLElement) {\n const doc = element && getDocumentFromElement(element),\n offset = { left: 0, top: 0 };\n\n if (!doc) {\n return offset;\n }\n const elemStyle: CSSStyleDeclaration =\n getWindowFromElement(element)?.getComputedStyle(element, null) ||\n ({} as CSSStyleDeclaration);\n offset.left += parseInt(elemStyle.borderLeftWidth, 10) || 0;\n offset.top += parseInt(elemStyle.borderTopWidth, 10) || 0;\n offset.left += parseInt(elemStyle.paddingLeft, 10) || 0;\n offset.top += parseInt(elemStyle.paddingTop, 10) || 0;\n\n let box = { left: 0, top: 0 };\n\n const docElem = doc.documentElement;\n if (typeof element.getBoundingClientRect !== 'undefined') {\n box = element.getBoundingClientRect();\n }\n\n const scrollLeftTop = getScrollLeftTop(element);\n\n return {\n left:\n box.left + scrollLeftTop.left - (docElem.clientLeft || 0) + offset.left,\n top: box.top + scrollLeftTop.top - (docElem.clientTop || 0) + offset.top,\n };\n}\n\n/**\n * Makes element unselectable\n * @param {HTMLElement} element Element to make unselectable\n * @return {HTMLElement} Element that was passed in\n */\nexport function makeElementUnselectable(element: HTMLElement) {\n if (typeof element.onselectstart !== 'undefined') {\n element.onselectstart = () => false;\n }\n element.style.userSelect = NONE;\n return element;\n}\n"],"names":["setCanvasDimensions","el","ctx","_ref","width","height","retinaScaling","arguments","length","undefined","setAttribute","toString","scale","setCSSDimensions","_ref2","style","concat","getElementOffset","element","_getWindowFromElement","doc","getDocumentFromElement","offset","left","top","elemStyle","getWindowFromElement","getComputedStyle","parseInt","borderLeftWidth","borderTopWidth","paddingLeft","paddingTop","box","docElem","documentElement","getBoundingClientRect","scrollLeftTop","getScrollLeftTop","clientLeft","clientTop","makeElementUnselectable","onselectstart","userSelect","NONE"],"mappings":"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"}