{ "version": 3, "sources": ["src/app/shared/helpers/download.helper.ts"], "sourcesContent": ["declare let saveSvgAsPng: any;\n\nexport class DownloadHelper {\n static downloadSvgToImg(nativeElement: any, fileName: string): void {\n const htmlElement = nativeElement as HTMLElement;\n const svgElement = htmlElement.cloneNode(true) as HTMLElement;\n svgElement.innerHTML = htmlElement.innerHTML.replace(/ng-reflect-tooltip-value=([\"'])(?:(?=(\\\\?))\\2.)*?\\1/g, '').trim();\n const { width, height } = nativeElement.getBBox();\n\n saveSvgAsPng(svgElement, fileName || 'pointee-image.png', {\n scale: 1,\n backgroundColor: 'white',\n height: height + 50,\n width: width + 50,\n excludeUnusedCss: true,\n top: -20,\n left: 8,\n });\n }\n\n static downloadSvgToImgBlob(nativeElement: any) {\n const htmlElement = nativeElement as HTMLElement;\n const svgBlob = DownloadHelper.svgToBlob(htmlElement);\n const blobURL = URL.createObjectURL(svgBlob);\n const { width, height } = nativeElement.getBBox();\n DownloadHelper.downloadPNGFromAnyImageSrc(blobURL, width, height);\n }\n\n static downloadPNGFromAnyImageSrc = (src: string, width?: number, height?: number) => {\n //recreate the image with src received\n const image = new Image();\n //when image loaded (to know width and height)\n image.onload = function () {\n //drow image inside a canvas\n const canvas = DownloadHelper.convertImageToCanvas(image, width, height);\n //get image/png from canvas\n const pngImage = DownloadHelper.convertCanvasToImage(canvas);\n //download\n DownloadHelper.download(pngImage.src, 'image.png');\n };\n image.onerror = err => {\n throw new Error(`Could not load ${src}`);\n };\n image.src = src;\n };\n\n private static svgToBlob(svgElement: any): Blob {\n const clonedSvgElement = svgElement.cloneNode(true) as SVGElement;\n let outerHTML = clonedSvgElement.outerHTML;\n if (outerHTML) {\n outerHTML = outerHTML.replace(/\\r?\\n|\\r/g, '').trim();\n }\n const svgBlob = new Blob([outerHTML], { type: 'image/svg+xml;charset=utf-8' });\n return svgBlob;\n }\n\n private static convertCanvasToImage(canvas: HTMLCanvasElement): HTMLImageElement {\n const image = new Image();\n image.src = canvas.toDataURL('image/png');\n return image;\n }\n\n private static convertImageToCanvas(image: HTMLImageElement, width?: number, height?: number) {\n const width$ = image.width || width;\n const height$ = image.height || height;\n const canvas = document.createElement('canvas');\n canvas.width = width$;\n canvas.height = height$;\n canvas.getContext('2d').clearRect(0, 0, canvas.width, canvas.height);\n canvas.getContext('2d').drawImage(image, 0, 0, width$, height$);\n return canvas;\n }\n\n static download(href: string, name: string) {\n const link = document.createElement('a');\n document.body.appendChild(link);\n link.download = name;\n link.setAttribute('type', 'hidden');\n link.style.display = 'none';\n link.href = href;\n link.click();\n link.remove();\n }\n}\n"], "mappings": "AAEA,IAAaA,GAAc,IAAA,CAArB,IAAOA,EAAP,MAAOA,CAAc,CACzB,OAAOC,iBAAiBC,EAAoBC,EAAgB,CAC1D,IAAMC,EAAcF,EACdG,EAAaD,EAAYE,UAAU,EAAI,EAC7CD,EAAWE,UAAYH,EAAYG,UAAUC,QAAQ,uDAAwD,EAAE,EAAEC,KAAI,EACrH,GAAM,CAAEC,MAAAA,EAAOC,OAAAA,CAAM,EAAKT,EAAcU,QAAO,EAE/CC,aAAaR,EAAYF,GAAY,oBAAqB,CACxDW,MAAO,EACPC,gBAAiB,QACjBJ,OAAQA,EAAS,GACjBD,MAAOA,EAAQ,GACfM,iBAAkB,GAClBC,IAAK,IACLC,KAAM,EACP,CACH,CAEA,OAAOC,qBAAqBjB,EAAkB,CAC5C,IAAME,EAAcF,EACdkB,EAAUpB,EAAeqB,UAAUjB,CAAW,EAC9CkB,EAAUC,IAAIC,gBAAgBJ,CAAO,EACrC,CAAEV,MAAAA,EAAOC,OAAAA,CAAM,EAAKT,EAAcU,QAAO,EAC/CZ,EAAeyB,2BAA2BH,EAASZ,EAAOC,CAAM,CAClE,CAoBQ,OAAOU,UAAUhB,EAAe,CAEtC,IAAIqB,EADqBrB,EAAWC,UAAU,EAAI,EACjBoB,UACjC,OAAIA,IACFA,EAAYA,EAAUlB,QAAQ,YAAa,EAAE,EAAEC,KAAI,GAErC,IAAIkB,KAAK,CAACD,CAAS,EAAG,CAAEE,KAAM,6BAA6B,CAAE,CAE/E,CAEQ,OAAOC,qBAAqBC,EAAyB,CAC3D,IAAMC,EAAQ,IAAIC,MAClBD,OAAAA,EAAME,IAAMH,EAAOI,UAAU,WAAW,EACjCH,CACT,CAEQ,OAAOI,qBAAqBJ,EAAyBrB,EAAgBC,EAAe,CAC1F,IAAMyB,EAASL,EAAMrB,OAASA,EACxB2B,EAAUN,EAAMpB,QAAUA,EAC1BmB,EAASQ,SAASC,cAAc,QAAQ,EAC9CT,OAAAA,EAAOpB,MAAQ0B,EACfN,EAAOnB,OAAS0B,EAChBP,EAAOU,WAAW,IAAI,EAAEC,UAAU,EAAG,EAAGX,EAAOpB,MAAOoB,EAAOnB,MAAM,EACnEmB,EAAOU,WAAW,IAAI,EAAEE,UAAUX,EAAO,EAAG,EAAGK,EAAQC,CAAO,EACvDP,CACT,CAEA,OAAOa,SAASC,EAAcC,EAAY,CACxC,IAAMC,EAAOR,SAASC,cAAc,GAAG,EACvCD,SAASS,KAAKC,YAAYF,CAAI,EAC9BA,EAAKH,SAAWE,EAChBC,EAAKG,aAAa,OAAQ,QAAQ,EAClCH,EAAKI,MAAMC,QAAU,OACrBL,EAAKF,KAAOA,EACZE,EAAKM,MAAK,EACVN,EAAKO,OAAM,CACb,GAtDOC,EAAA7B,2BAA6B,CAACQ,EAAavB,EAAgBC,IAAmB,CAEnF,IAAMoB,EAAQ,IAAIC,MAElBD,EAAMwB,OAAS,UAAA,CAEb,IAAMzB,EAAS9B,EAAemC,qBAAqBJ,EAAOrB,EAAOC,CAAM,EAEjE6C,EAAWxD,EAAe6B,qBAAqBC,CAAM,EAE3D9B,EAAe2C,SAASa,EAASvB,IAAK,WAAW,CACnD,EACAF,EAAM0B,QAAUC,GAAM,CACpB,MAAM,IAAIC,MAAM,kBAAkB1B,CAAG,EAAE,CACzC,EACAF,EAAME,IAAMA,CACd,EA1CI,IAAOjC,EAAPsD,SAAOtD,CAAc,GAAA", "names": ["DownloadHelper", "downloadSvgToImg", "nativeElement", "fileName", "htmlElement", "svgElement", "cloneNode", "innerHTML", "replace", "trim", "width", "height", "getBBox", "saveSvgAsPng", "scale", "backgroundColor", "excludeUnusedCss", "top", "left", "downloadSvgToImgBlob", "svgBlob", "svgToBlob", "blobURL", "URL", "createObjectURL", "downloadPNGFromAnyImageSrc", "outerHTML", "Blob", "type", "convertCanvasToImage", "canvas", "image", "Image", "src", "toDataURL", "convertImageToCanvas", "width$", "height$", "document", "createElement", "getContext", "clearRect", "drawImage", "download", "href", "name", "link", "body", "appendChild", "setAttribute", "style", "display", "click", "remove", "_DownloadHelper", "onload", "pngImage", "onerror", "err", "Error"] }