{"version":3,"sources":["QueryCanvas.ts","QueryCanvasHelper.ts"],"names":[],"mappings":"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","file":"../QueryTs.SVG.js","sourcesContent":["/// \n\ninterface IQueryCanvasDimensions {\n width: number,\n height: number,\n scale: number\n}\n\ninterface IQueryCanvasFont {\n fontFamily: string;\n fontStyle?: string;\n fontWeight?: number;\n url: string;\n}\n\nclass QueryCanvas\n extends QueryElement {\n\n private _styleSheets: string[]\n = [];\n\n constructor() {\n super(document.createElement(\"CANVAS\") as HTMLCanvasElement)\n\n let elem = this.get();\n if(elem === null)\n return;\n\n elem.width = 300;\n elem.height = 300;\n }\n async addFont(font: IQueryCanvasFont) {\n let request = await new QueryRequest(font.url, { useCache: true }).request();\n let base64 = await QueryCanvasHelper.blobToBase64(await request.blob());\n\n let addStyle = \"\";\n\n addStyle += `@font-face{font-family:'${font.fontFamily}';`\n if(font.fontStyle !== null)\n addStyle += `font-style:${font.fontStyle};`\n if(font.fontWeight !== null)\n addStyle += `font-weight:${font.fontWeight};`\n addStyle += `src: url(${base64});}`;\n\n this._styleSheets.push(addStyle);\n \n return this;\n }\n async addStyleSheet(src: string) {\n let request = await new QueryRequest(src).request();\n this._styleSheets.push(await request.text());\n \n return this;\n }\n async addStyle(style: string) {\n this._styleSheets.push(style);\n return this;\n }\n\n async set(element: IQueryElement, dimensions: IQueryCanvasDimensions) {\n \n let elem = this.get();\n let displayElem = element.get();\n if(elem === null || displayElem === null)\n return;\n\n \n elem.width = dimensions.width * dimensions.scale;\n elem.height = dimensions.height * dimensions.scale;\n\n let serializer = new XMLSerializer();\n let serialized = serializer.serializeToString(displayElem);\n\n let styleSheets = this._styleSheets\n .map(a => ``)\n .join(\"\");\n let startObj = `\n `;\n\n let svg = new Blob([startObj], {type: 'image/svg+xml;charset=utf-8'});\n let url = window.URL.createObjectURL(svg);\n let ctx = elem.getContext('2d');\n\n if(ctx === null)\n return;\n\n try {\n let img = await QueryCanvasHelper.loadImage(url, dimensions.width, dimensions.height);\n ctx.drawImage(img, 0, 0, elem.width, elem.height);\n } catch {\n \n }\n window.URL.revokeObjectURL(url);\n }\n}","class QueryCanvasHelper {\n static blobToBase64(data: Blob) {\n return new Promise((resolve, reject) => {\n let reader = new FileReader();\n reader.readAsDataURL(data);\n reader.onload = () => {\n resolve(reader.result as string);\n }\n })\n }\n\n static loadImage(url: string, width: number, height: number) {\n return new Promise((resolve, reject) => {\n let image = new Image(width, height);\n\n image.addEventListener('load', () => {\n resolve(image);\n });\n image.addEventListener('error', (ev) => {\n reject(ev);\n });\n image.src = url;\n });\n }\n}"],"sourceRoot":"../../src/ts/QueryTs.SVG/"}