{ "version": 3, "sources": ["libs/galaxy/email-viewer/src/email-viewer.component.ts", "libs/galaxy/email-viewer/src/email-viewer.component.html", "libs/email-ui/email-activity/src/email-stats/utils.ts"], "sourcesContent": ["import { Component, ElementRef, HostBinding, Input, OnDestroy, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'glxy-email-viewer',\n templateUrl: './email-viewer.component.html',\n styleUrls: ['./email-viewer.component.scss'],\n})\nexport class EmailViewerComponent implements OnDestroy {\n @HostBinding('class') class = 'glxy-email-viewer';\n\n @Input({ required: true }) html = '';\n @Input() showDevicePreviewSizeButtons = true;\n @Input() showEmailInline = false;\n\n @ViewChild('iframePreview') iframePreview?: ElementRef;\n\n element = this.elementRef.nativeElement;\n emailPreviewWidth = '';\n iframeContentHeight = '';\n showDesktopButton = true;\n resizeObserver?: ResizeObserver;\n showDevicePreviewSizeButtonsOnResize = true;\n\n maxWidthDesktop = `100%`;\n maxWidthTablet = `600px`;\n maxWidthMobile = `320px`;\n\n constructor(private elementRef: ElementRef) {\n if (window.ResizeObserver) {\n this.resizeObserver = new ResizeObserver((entries) => {\n const entry = Array.isArray(entries) ? entries[0] : entries;\n const componentWidth = entry.contentRect.width;\n this.showDesktopButton = componentWidth > 600;\n this.showDevicePreviewSizeButtonsOnResize = componentWidth > 400;\n });\n this.resizeObserver.observe(this.element);\n }\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n }\n\n calculateIframeContentHeight(): void {\n window.setTimeout(() => {\n if (!this.iframePreview || !this.iframePreview.nativeElement.contentWindow) return;\n const iframeBody = this.iframePreview.nativeElement.contentWindow.document.body;\n if (iframeBody) {\n this.iframeContentHeight = iframeBody.offsetHeight + 40 + 'px';\n }\n }, 100);\n }\n}\n", "\n\n
\n \n \n \n \n \n
\n
\n\n\n
\n \n
\n\n\n \n\n", "export function formatTranslation(\n singularTranslation: string,\n pluralTranslation: string,\n comparisonValue: number,\n): string {\n return comparisonValue === 1 ? singularTranslation : pluralTranslation;\n}\n\nexport function buildEmailActivityPath(this): string[] {\n return ['../../../../email-activity', this.attribute.key, this.attribute.value];\n}\n\nexport function getPercentage(numerator = 0, denominator = 0): string {\n let formattedValue = '-';\n if (denominator) {\n // convert to a percentage then round to 1 decimal point\n const percentage = Math.round((numerator / denominator) * 100 * 10) / 10;\n formattedValue = percentage % 1 === 0 ? percentage.toFixed(0) + '%' : percentage.toFixed(1) + '%';\n }\n return formattedValue;\n}\n\nexport function formatPercentage(ratio: number): string {\n const percent = ratio * 100.0;\n if (percent <= 0.5) {\n return '<1%';\n } else if (percent <= 1.5) {\n return '1%';\n } else {\n return `${Math.round(percent)}%`;\n }\n}\n"], "mappings": "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", "names": ["\u0275\u0275elementStart", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r2", "ctx_r2", "\u0275\u0275nextContext", "\u0275\u0275resetView", "emailPreviewWidth", "maxWidthDesktop", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275elementContainerStart", "\u0275\u0275template", "EmailViewerComponent_ng_container_0_button_3_Template", "_r1", "maxWidthTablet", "maxWidthMobile", "\u0275\u0275advance", "\u0275\u0275property", "showDesktopButton", "_r4", "calculateIframeContentHeight", "\u0275\u0275styleProp", "showEmailInline", "iframeContentHeight", "\u0275\u0275pipeBind1", "html", "\u0275\u0275sanitizeHtml", "\u0275\u0275element", "EmailViewerComponent", "constructor", "elementRef", "class", "showDevicePreviewSizeButtons", "element", "nativeElement", "showDevicePreviewSizeButtonsOnResize", "window", "ResizeObserver", "resizeObserver", "entries", "componentWidth", "Array", "isArray", "contentRect", "width", "observe", "ngOnDestroy", "disconnect", "setTimeout", "iframePreview", "contentWindow", "iframeBody", "document", "body", "offsetHeight", "\u0275\u0275directiveInject", "ElementRef", "selectors", "viewQuery", "rf", "ctx", "\u0275\u0275classMap", "EmailViewerComponent_ng_container_0_Template", "EmailViewerComponent_div_1_Template", "EmailViewerComponent_ng_template_2_Template", "\u0275\u0275templateRefExtractor", "loading_r5", "_EmailViewerComponent", "formatTranslation", "singularTranslation", "pluralTranslation", "comparisonValue", "buildEmailActivityPath", "attribute", "key", "value", "getPercentage", "numerator", "denominator", "formattedValue", "percentage", "Math", "round", "toFixed", "formatPercentage", "ratio", "percent"] }