UNPKG

10.9 kBSource Map (JSON)View Raw
1{"version":3,"file":"Utils.web.js","sourceRoot":"","sources":["../../src/takeSnapshotAsync/Utils.web.ts"],"names":[],"mappings":"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","sourcesContent":["function parseExtension(url: string): string {\n const match = /\\.([^\\.\\/]*?)$/g.exec(url);\n if (match) {\n return match[1].toLowerCase();\n }\n return '';\n}\n\nconst WOFF = 'application/font-woff';\nconst JPEG = 'image/jpeg';\n\nconst MIME_TYPES = {\n woff: WOFF,\n woff2: WOFF,\n ttf: 'application/font-truetype',\n eot: 'application/vnd.ms-fontobject',\n otf: 'application/font-opentype',\n png: 'image/png',\n jpg: JPEG,\n jpeg: JPEG,\n gif: 'image/gif',\n tiff: 'image/tiff',\n svg: 'image/svg+xml',\n};\n\nexport function getMimeTypeFromSource(url: string): string {\n const extension = parseExtension(url);\n if (extension in MIME_TYPES) {\n return MIME_TYPES[extension];\n }\n throw new Error(`No valid MIME type (${extension}) for url: ${url}`);\n}\n\nexport function isDataUrl(url: string): boolean {\n return url.search(/^(data:)/) !== -1;\n}\n\nfunction getBlobFromCanvasElement(canvas: HTMLCanvasElement): Blob {\n const binaryString = window.atob(canvas.toDataURL().split(',')[1]);\n const length = binaryString.length;\n const binaryArray = new Uint8Array(length);\n\n for (let i = 0; i < length; i++) {\n binaryArray[i] = binaryString.charCodeAt(i);\n }\n\n return new Blob([binaryArray], {\n type: 'image/png',\n });\n}\n\nexport async function getBlobFromCanvasAsync(\n canvas: HTMLCanvasElement,\n quality?: number\n): Promise<Blob> {\n if (canvas.toBlob) {\n return new Promise((resolve, reject) => {\n canvas.toBlob(\n blob => {\n if (blob == null) {\n reject('Failed to convert canvas to blob!');\n } else {\n resolve(blob);\n }\n },\n '2d',\n quality\n );\n });\n }\n return getBlobFromCanvasElement(canvas);\n}\n\nexport function resolveUrl(url: string, baseUrl: string): string {\n const doc = document.implementation.createHTMLDocument();\n const base = doc.createElement('base');\n doc.head.appendChild(base);\n const a = doc.createElement('a');\n doc.body.appendChild(a);\n base.href = baseUrl;\n a.href = url;\n return a.href;\n}\n\nexport function getImageElementFromURIAsync(uri: string): Promise<HTMLImageElement> {\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.onload = () => {\n resolve(image);\n };\n image.onerror = () => {\n reject(`Image could not be loaded ${image.src}`);\n };\n image.src = uri;\n });\n}\n\nexport function getSourceAndEncodeAsync(\n url: string,\n preventCaching: boolean = false,\n missingImageSource: string | undefined = undefined\n): Promise<string> {\n const TIMEOUT = 30000;\n if (preventCaching) {\n // Cache bypass so we dont have CORS issues with cached images\n // Source: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n url += (/\\?/.test(url) ? '&' : '?') + Date.now();\n }\n\n return new Promise(resolve => {\n const request = new XMLHttpRequest();\n\n request.onreadystatechange = done;\n request.ontimeout = timeout;\n request.responseType = 'blob';\n request.timeout = TIMEOUT;\n request.open('GET', url, true);\n request.send();\n\n let placeholder;\n if (missingImageSource) {\n const split = missingImageSource.split(/,/);\n if (split && split[1]) {\n placeholder = split[1];\n }\n }\n\n function done() {\n if (request.readyState !== 4) {\n return;\n }\n\n if (request.status !== 200) {\n if (placeholder) {\n resolve(placeholder);\n } else {\n fail(`cannot fetch resource: ${url}, status: ${request.status}`);\n }\n\n return;\n }\n\n const encoder = new FileReader();\n\n encoder.onloadend = () => {\n const { result } = encoder;\n if (typeof result === 'string') {\n const content = result.split(/,/)[1];\n resolve(content);\n } else {\n resolve('');\n }\n };\n encoder.readAsDataURL(request.response);\n }\n\n function timeout(): void {\n if (placeholder) {\n resolve(placeholder);\n } else {\n fail(`timeout of ${TIMEOUT}ms occured while fetching resource: ${url}`);\n }\n }\n\n function fail(message: string): void {\n throw new Error(message);\n }\n });\n}\n\nexport function formatDataAsUrl(content: string, type: string): string {\n return `data:${type};base64,${content}`;\n}\n\nexport function getEscapedString(string: string): string {\n return string.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n}\n\nexport function getEscapedXHTMLString(input: string): string {\n return input.replace(/#/g, '%23').replace(/\\n/g, '%0A');\n}\n\nexport function getWidthForElement(element: Element): number {\n const rightBorder = getPixelSizeForStyleProperty(element, 'border-right-width');\n const leftBorder = getPixelSizeForStyleProperty(element, 'border-left-width');\n return element.scrollWidth + rightBorder + leftBorder;\n}\n\nexport function getHeightForElement(element: Element): number {\n const bottomBorder = getPixelSizeForStyleProperty(element, 'border-bottom-width');\n const topBorder = getPixelSizeForStyleProperty(element, 'border-top-width');\n return element.scrollHeight + bottomBorder + topBorder;\n}\n\nfunction getPixelSizeForStyleProperty(element: Element, styleProperty: string): number {\n const value = window.getComputedStyle(element).getPropertyValue(styleProperty);\n return parseFloat(value.replace('px', ''));\n}\n"]}
\No newline at end of file