@eternalheart/angular-file-preview 1.6.5 → 1.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-UobTf36G.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-RPRQhVCg.mjs} +39 -32
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-RPRQhVCg.mjs.map +1 -0
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-pG0Ko5mI-DthQJg-X.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-3-0UYUJy-CD5hv6Xd.mjs} +27 -8
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-3-0UYUJy-CD5hv6Xd.mjs.map +1 -0
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D35x1nwM-CugEEXjg.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-5zqP72gq-lAwuxCQV.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D35x1nwM-CugEEXjg.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-5zqP72gq-lAwuxCQV.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CDjKPqyW-CmX5sdkL.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-71x_jK0V-BwzFr9L0.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CDjKPqyW-CmX5sdkL.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-71x_jK0V-BwzFr9L0.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Bv3JRXKn-B4Wewc-4.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-7KavuB8u-CFBWzMGm.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Bv3JRXKn-B4Wewc-4.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-7KavuB8u-CFBWzMGm.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DsNNZ59Q-C8MaSME6.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B-TVstXS-Dh1KMX_8.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DsNNZ59Q-C8MaSME6.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B-TVstXS-Dh1KMX_8.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-6dZS_Cfs-B1itLV5R.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B4L1kfY--BHy3x_oj.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-6dZS_Cfs-B1itLV5R.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B4L1kfY--BHy3x_oj.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D9jJNzeM-mWX59Aj2.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B56pscOG-ClsvukS5.mjs} +4 -5
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B56pscOG-ClsvukS5.mjs.map +1 -0
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DbmuvdvN-C29uLyt2.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BNU3NWQp-C5U5krn9.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DbmuvdvN-C29uLyt2.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BNU3NWQp-C5U5krn9.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B1ANUCTy-BRs7TMLn.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BbRwLog8-B9Sw6HEr.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B1ANUCTy-BRs7TMLn.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BbRwLog8-B9Sw6HEr.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BGqTRZbm-CAOLRw20.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BeL4xzpS-eYswtncp.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BGqTRZbm-CAOLRw20.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BeL4xzpS-eYswtncp.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C518mdUd-B5SCzrzU.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BeTNUne--CwUzGLn3.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C518mdUd-B5SCzrzU.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BeTNUne--CwUzGLn3.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DufW2Fuc-CTosCut6.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C3uCX4wD-CoZ795pn.mjs} +3 -3
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DufW2Fuc-CTosCut6.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C3uCX4wD-CoZ795pn.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C0McUoqT-DJ35bhIz.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CBbnvps8-ClkiJKQ9.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C0McUoqT-DJ35bhIz.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CBbnvps8-ClkiJKQ9.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cb1RLXeO-Bj9gjS1Z.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CMeATokn-iD-SSbnK.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cb1RLXeO-Bj9gjS1Z.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CMeATokn-iD-SSbnK.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CHi9tOe0-NOeQYAnM.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CZQnGY6g-DexFUJLU.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CHi9tOe0-NOeQYAnM.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CZQnGY6g-DexFUJLU.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-TSTa_Q7E-DBhkL6pV.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cjjsjooa-24Qg-LjD.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-TSTa_Q7E-DBhkL6pV.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cjjsjooa-24Qg-LjD.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CSCTj7ft-BfqruUyY.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CpiK7yUb-T48dTv66.mjs} +3 -3
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CSCTj7ft-BfqruUyY.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CpiK7yUb-T48dTv66.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index--7d8Hgi0-D-sg24Qs.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CyO8N29I-CMesNfcT.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index--7d8Hgi0-D-sg24Qs.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CyO8N29I-CMesNfcT.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cw90Kdyg-BzrW_cyx.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D6UfVKL_-CAqlAQIN.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cw90Kdyg-BzrW_cyx.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D6UfVKL_-CAqlAQIN.mjs.map} +1 -1
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DWe1kVtU-CJlU6sOy.mjs +597 -0
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DWe1kVtU-CJlU6sOy.mjs.map +1 -0
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BEaqpRV8-BidVIVlO.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-QydIBtJH-Dw052TRv.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BEaqpRV8-BidVIVlO.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-QydIBtJH-Dw052TRv.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-CL9cG481-BKfwdOpN.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-CE3FZF7D-BjdXRpvN.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-CL9cG481-BKfwdOpN.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-CE3FZF7D-BjdXRpvN.mjs.map} +1 -1
- package/lib/fesm2022/eternalheart-angular-file-preview.mjs +1 -1
- package/lib/index.css +340 -60
- package/lib/index.d.ts +1 -1
- package/lib/renderers/Audio/index.d.ts +1 -18
- package/lib/renderers/Cad/index.d.ts +1 -0
- package/lib/version.d.ts +1 -0
- package/package.json +2 -1
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-UobTf36G.mjs.map +0 -1
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CQwhffym-DAGw4Xy_.mjs +0 -823
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CQwhffym-DAGw4Xy_.mjs.map +0 -1
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D9jJNzeM-mWX59Aj2.mjs.map +0 -1
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-pG0Ko5mI-DthQJg-X.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DsNNZ59Q-C8MaSME6.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-DsNNZ59Q.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { input, inject, signal, computed, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport MsgReader from '@kenjiuno/msgreader';\nimport * as i1 from 'lucide-angular';\nimport { User, Users, Paperclip, Calendar, Mail, Tag, Clock, Hash, LucideAngularModule } from 'lucide-angular';\nimport { L as LocaleService, R as RequestService, g as getFallbackTranslator } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-DXwNhxAB.mjs';\nimport { R as RendererError } from './eternalheart-angular-file-preview-RendererError-DtNihCIX.mjs';\n\nfunction formatRecipients(recipients, type) {\n if (!recipients)\n return '';\n return recipients\n .filter((r) => r.recipType === type)\n .map((r) => {\n const name = r.name || '';\n const email = r.smtpAddress || r.email || '';\n if (name && email && name !== email)\n return `${name} <${email}>`;\n return name || email;\n })\n .filter(Boolean)\n .join('; ');\n}\nfunction formatDate(dateStr) {\n if (!dateStr)\n return '';\n try {\n const date = new Date(dateStr);\n if (isNaN(date.getTime()))\n return dateStr;\n return date.toLocaleString();\n }\n catch {\n return dateStr;\n }\n}\nfunction decodeHtmlBody(f, emptyBodyText) {\n if (f.bodyHtml)\n return f.bodyHtml;\n if (f.html) {\n try {\n const decoder = new TextDecoder('utf-8');\n return decoder.decode(f.html);\n }\n catch {\n // fallback\n }\n }\n if (f.body) {\n return `<pre style=\"white-space: pre-wrap; word-wrap: break-word; font-family: system-ui, sans-serif;\">${f.body\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')}</pre>`;\n }\n return `<p style=\"color: var(--fp-fg-muted);\">${emptyBodyText}</p>`;\n}\nfunction formatMessageClass(messageClass) {\n if (!messageClass)\n return '';\n const classMap = {\n 'IPM.Note': 'Email',\n 'IPM.Note.SMIME': 'Encrypted Email',\n 'IPM.Note.SMIME.MultipartSigned': 'Signed Email',\n 'IPM.Appointment': 'Appointment',\n 'IPM.Schedule.Meeting.Request': 'Meeting Request',\n 'IPM.Schedule.Meeting.Canceled': 'Meeting Cancellation',\n 'IPM.Contact': 'Contact',\n 'IPM.Task': 'Task',\n 'IPM.StickyNote': 'Sticky Note',\n };\n return classMap[messageClass] || messageClass;\n}\nclass MsgRenderer {\n constructor() {\n this.url = input.required();\n this.locale = inject(LocaleService, { optional: true });\n this.request = inject(RequestService, { optional: true });\n this.sanitizer = inject(DomSanitizer);\n this.t = this.locale?.t() ?? getFallbackTranslator();\n this.userIcon = User;\n this.usersIcon = Users;\n this.paperclipIcon = Paperclip;\n this.calendarIcon = Calendar;\n this.mailIcon = Mail;\n this.tagIcon = Tag;\n this.clockIcon = Clock;\n this.hashIcon = Hash;\n this.unknownFileLabel = '未知文件';\n this.loading = signal(true);\n this.error = signal(null);\n this.fields = signal(null);\n this.subject = computed(() => this.fields()?.subject || '(无主题)');\n this.sender = computed(() => {\n const f = this.fields();\n if (!f)\n return '';\n const senderName = f.senderName || '';\n const senderEmail = f.senderSmtpAddress || f.senderEmail || '';\n if (senderName && senderEmail && senderName !== senderEmail) {\n return `${senderName} <${senderEmail}>`;\n }\n return senderName || senderEmail;\n });\n this.toStr = computed(() => formatRecipients(this.fields()?.recipients, 'to'));\n this.ccStr = computed(() => formatRecipients(this.fields()?.recipients, 'cc'));\n this.bccStr = computed(() => formatRecipients(this.fields()?.recipients, 'bcc'));\n this.sentDate = computed(() => formatDate(this.fields()?.clientSubmitTime));\n this.receivedDate = computed(() => formatDate(this.fields()?.messageDeliveryTime));\n this.createdDate = computed(() => formatDate(this.fields()?.creationTime));\n this.lastModified = computed(() => formatDate(this.fields()?.lastModificationTime));\n this.attachments = computed(() => (this.fields()?.attachments || []).filter((a) => !a.attachmentHidden));\n this.bodyHtml = computed(() => {\n const f = this.fields();\n return f ? decodeHtmlBody(f, this.t('msg.empty_body')) : '';\n });\n this.messageClass = computed(() => formatMessageClass(this.fields()?.messageClass));\n this.messageId = computed(() => this.fields()?.messageId || '');\n this.importance = computed(() => {\n const f = this.fields();\n return f && typeof f.importance === 'number' ? f.importance : undefined;\n });\n this.importanceLabel = computed(() => {\n if (this.importance() === 2)\n return 'High';\n if (this.importance() === 0)\n return 'Low';\n return '';\n });\n this.sensitivity = computed(() => {\n const f = this.fields();\n return f && typeof f.sensitivity === 'number' ? f.sensitivity : undefined;\n });\n this.sensitivityLabel = computed(() => {\n if (this.sensitivity() === undefined || this.sensitivity() === 0)\n return '';\n const labels = {\n 1: 'Personal',\n 2: 'Private',\n 3: 'Confidential',\n };\n return labels[this.sensitivity()] || '';\n });\n this.getToolbarGroups = () => [];\n effect(() => {\n const newUrl = this.url();\n if (newUrl) {\n untracked(() => {\n void this.loadMsg();\n });\n }\n });\n }\n trust(html) {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n formatAttachmentSize(size) {\n if (!size)\n return '';\n if (size > 1048576)\n return `${(size / 1048576).toFixed(1)} MB`;\n if (size > 1024)\n return `${(size / 1024).toFixed(0)} KB`;\n return `${size} B`;\n }\n async loadMsg() {\n this.loading.set(true);\n this.error.set(null);\n this.fields.set(null);\n try {\n const fetcher = this.request?.fetcher() ?? ((u, init) => fetch(u, init));\n const response = await fetcher(this.url());\n if (!response.ok)\n throw new Error('文件加载失败');\n const arrayBuffer = await response.arrayBuffer();\n const msgReader = new MsgReader(arrayBuffer);\n this.fields.set(msgReader.getFileData());\n }\n catch (err) {\n console.error('MSG 解析错误:', err);\n this.error.set(this.t('msg.parse_failed'));\n }\n finally {\n this.loading.set(false);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: MsgRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: MsgRenderer, isStandalone: true, selector: \"afp-msg-renderer\", inputs: { url: { classPropertyName: \"url\", publicName: \"url\", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: \"afp-block afp-w-full afp-h-full\" }, ngImport: i0, template: `\n @if (loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full\">\n <div\n class=\"afp-w-12 afp-h-12 afp-border-4 afp-border-line-strong afp-border-t-spinner-head afp-rounded-full afp-animate-spin\"\n ></div>\n </div>\n } @else if (error() || !fields()) {\n <afp-renderer-error [message]=\"error() || t('msg.parse_failed_short')\" />\n } @else {\n <div class=\"afp-w-full afp-h-full afp-overflow-auto msg-root\">\n <div class=\"msg-container\">\n <div class=\"msg-header\">\n <h2 class=\"msg-subject\">{{ subject() }}</h2>\n\n <div class=\"msg-meta\">\n @if (sender()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"userIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">From</span><span class=\"msg-value\">{{ sender() }}</span></div>\n </div>\n }\n\n @if (toStr()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"usersIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">To</span><span class=\"msg-value\">{{ toStr() }}</span></div>\n </div>\n }\n\n @if (ccStr()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"usersIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Cc</span><span class=\"msg-value\">{{ ccStr() }}</span></div>\n </div>\n }\n\n @if (bccStr()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"usersIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Bcc</span><span class=\"msg-value\">{{ bccStr() }}</span></div>\n </div>\n }\n\n @if (sentDate()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"calendarIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Sent</span><span class=\"msg-value\">{{ sentDate() }}</span></div>\n </div>\n }\n\n @if (receivedDate() && receivedDate() !== sentDate()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"clockIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Received</span><span class=\"msg-value\">{{ receivedDate() }}</span></div>\n </div>\n }\n\n @if (!sentDate() && !receivedDate() && createdDate()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"calendarIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Date</span><span class=\"msg-value\">{{ createdDate() }}</span></div>\n </div>\n }\n\n @if (importanceLabel()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"tagIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Importance</span>\n <span class=\"msg-value\" [class.msg-importance-high]=\"importance() === 2\" [class.msg-importance-low]=\"importance() !== 2\">\n {{ importanceLabel() }}\n </span>\n </div>\n </div>\n }\n\n @if (sensitivityLabel()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"tagIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Sensitivity</span><span class=\"msg-value\">{{ sensitivityLabel() }}</span></div>\n </div>\n }\n\n @if (messageClass() && messageClass() !== 'Email') {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"mailIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Type</span><span class=\"msg-value\">{{ messageClass() }}</span></div>\n </div>\n }\n\n @if (attachments().length > 0) {\n <div class=\"msg-row msg-row-bordered\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"paperclipIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Attachments</span>\n <div class=\"msg-value msg-attachments\">\n @for (a of attachments(); track $index) {\n <span class=\"msg-attachment\">\n {{ a.fileName || a.name || unknownFileLabel }}\n @if (formatAttachmentSize(a.contentLength); as size) {\n <span class=\"msg-attachment-size\">({{ size }})</span>\n }\n </span>\n }\n </div>\n </div>\n </div>\n }\n\n @if (messageId()) {\n <div class=\"msg-row\" [class.msg-row-bordered]=\"attachments().length === 0\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"hashIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Message-ID</span>\n <span class=\"msg-value msg-id\">{{ messageId() }}</span>\n </div>\n </div>\n }\n\n @if (lastModified() && lastModified() !== sentDate() && lastModified() !== receivedDate()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"clockIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Modified</span>\n <span class=\"msg-value msg-id\">{{ lastModified() }}</span>\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"msg-body\" [innerHTML]=\"trust(bodyHtml())\"></div>\n </div>\n </div>\n }\n `, isInline: true, styles: [\".msg-root{background:var(--fp-code-bg)}.msg-container{width:100%;background:var(--fp-code-bg);min-height:100%}.msg-header{border-bottom:1px solid var(--fp-line);padding:clamp(12px,3vw,24px) clamp(16px,3vw,28px);background:var(--fp-surface-1)}.msg-subject{margin:0 0 16px;font-size:clamp(16px,2.5vw,20px);font-weight:600;color:var(--fp-fg-primary);line-height:1.4}.msg-meta{display:flex;flex-direction:column;font-size:clamp(12px,1.8vw,14px);color:var(--fp-fg-secondary)}.msg-row{display:flex;align-items:flex-start;gap:8px;padding:6px 0}.msg-row-bordered{border-top:1px solid var(--fp-line);margin-top:4px;padding-top:10px}.msg-icon-wrap{flex-shrink:0;display:flex;align-items:center;height:1.4em}.msg-icon{flex-shrink:0;color:var(--fp-fg-muted)}.msg-row-content{display:flex;flex:1}.msg-label{flex-shrink:0;color:var(--fp-fg-tertiary);font-weight:500;margin-right:8px;white-space:nowrap}.msg-value{color:var(--fp-fg-primary);word-break:break-word;flex:1}.msg-id{font-size:12px;color:var(--fp-fg-muted);font-family:monospace}.msg-attachments{display:flex;flex-wrap:wrap;gap:6px}.msg-attachment{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:var(--fp-surface-2);border-radius:4px;font-size:13px;color:var(--fp-fg-secondary);border:1px solid var(--fp-line)}.msg-attachment-size{color:var(--fp-fg-muted);font-size:12px}.msg-body{padding:clamp(12px,3vw,24px) clamp(16px,3vw,28px);font-family:system-ui,-apple-system,sans-serif;line-height:1.6;color:var(--fp-fg-primary);overflow-x:auto}.msg-importance-high{color:#dc2626;font-weight:500}.msg-importance-low{color:#2563eb;font-weight:500}\\n\"], dependencies: [{ kind: \"component\", type: RendererError, selector: \"afp-renderer-error\", inputs: [\"message\", \"detail\", \"showIcon\"] }, { kind: \"ngmodule\", type: LucideAngularModule }, { kind: \"component\", type: i1.LucideAngularComponent, selector: \"lucide-angular, lucide-icon, i-lucide, span-lucide\", inputs: [\"class\", \"name\", \"img\", \"color\", \"absoluteStrokeWidth\", \"size\", \"strokeWidth\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: MsgRenderer, decorators: [{\n type: Component,\n args: [{ selector: 'afp-msg-renderer', standalone: true, imports: [RendererError, LucideAngularModule], changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'afp-block afp-w-full afp-h-full' }, template: `\n @if (loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full\">\n <div\n class=\"afp-w-12 afp-h-12 afp-border-4 afp-border-line-strong afp-border-t-spinner-head afp-rounded-full afp-animate-spin\"\n ></div>\n </div>\n } @else if (error() || !fields()) {\n <afp-renderer-error [message]=\"error() || t('msg.parse_failed_short')\" />\n } @else {\n <div class=\"afp-w-full afp-h-full afp-overflow-auto msg-root\">\n <div class=\"msg-container\">\n <div class=\"msg-header\">\n <h2 class=\"msg-subject\">{{ subject() }}</h2>\n\n <div class=\"msg-meta\">\n @if (sender()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"userIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">From</span><span class=\"msg-value\">{{ sender() }}</span></div>\n </div>\n }\n\n @if (toStr()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"usersIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">To</span><span class=\"msg-value\">{{ toStr() }}</span></div>\n </div>\n }\n\n @if (ccStr()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"usersIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Cc</span><span class=\"msg-value\">{{ ccStr() }}</span></div>\n </div>\n }\n\n @if (bccStr()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"usersIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Bcc</span><span class=\"msg-value\">{{ bccStr() }}</span></div>\n </div>\n }\n\n @if (sentDate()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"calendarIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Sent</span><span class=\"msg-value\">{{ sentDate() }}</span></div>\n </div>\n }\n\n @if (receivedDate() && receivedDate() !== sentDate()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"clockIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Received</span><span class=\"msg-value\">{{ receivedDate() }}</span></div>\n </div>\n }\n\n @if (!sentDate() && !receivedDate() && createdDate()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"calendarIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Date</span><span class=\"msg-value\">{{ createdDate() }}</span></div>\n </div>\n }\n\n @if (importanceLabel()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"tagIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Importance</span>\n <span class=\"msg-value\" [class.msg-importance-high]=\"importance() === 2\" [class.msg-importance-low]=\"importance() !== 2\">\n {{ importanceLabel() }}\n </span>\n </div>\n </div>\n }\n\n @if (sensitivityLabel()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"tagIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Sensitivity</span><span class=\"msg-value\">{{ sensitivityLabel() }}</span></div>\n </div>\n }\n\n @if (messageClass() && messageClass() !== 'Email') {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"mailIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Type</span><span class=\"msg-value\">{{ messageClass() }}</span></div>\n </div>\n }\n\n @if (attachments().length > 0) {\n <div class=\"msg-row msg-row-bordered\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"paperclipIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Attachments</span>\n <div class=\"msg-value msg-attachments\">\n @for (a of attachments(); track $index) {\n <span class=\"msg-attachment\">\n {{ a.fileName || a.name || unknownFileLabel }}\n @if (formatAttachmentSize(a.contentLength); as size) {\n <span class=\"msg-attachment-size\">({{ size }})</span>\n }\n </span>\n }\n </div>\n </div>\n </div>\n }\n\n @if (messageId()) {\n <div class=\"msg-row\" [class.msg-row-bordered]=\"attachments().length === 0\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"hashIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Message-ID</span>\n <span class=\"msg-value msg-id\">{{ messageId() }}</span>\n </div>\n </div>\n }\n\n @if (lastModified() && lastModified() !== sentDate() && lastModified() !== receivedDate()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"clockIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Modified</span>\n <span class=\"msg-value msg-id\">{{ lastModified() }}</span>\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"msg-body\" [innerHTML]=\"trust(bodyHtml())\"></div>\n </div>\n </div>\n }\n `, styles: [\".msg-root{background:var(--fp-code-bg)}.msg-container{width:100%;background:var(--fp-code-bg);min-height:100%}.msg-header{border-bottom:1px solid var(--fp-line);padding:clamp(12px,3vw,24px) clamp(16px,3vw,28px);background:var(--fp-surface-1)}.msg-subject{margin:0 0 16px;font-size:clamp(16px,2.5vw,20px);font-weight:600;color:var(--fp-fg-primary);line-height:1.4}.msg-meta{display:flex;flex-direction:column;font-size:clamp(12px,1.8vw,14px);color:var(--fp-fg-secondary)}.msg-row{display:flex;align-items:flex-start;gap:8px;padding:6px 0}.msg-row-bordered{border-top:1px solid var(--fp-line);margin-top:4px;padding-top:10px}.msg-icon-wrap{flex-shrink:0;display:flex;align-items:center;height:1.4em}.msg-icon{flex-shrink:0;color:var(--fp-fg-muted)}.msg-row-content{display:flex;flex:1}.msg-label{flex-shrink:0;color:var(--fp-fg-tertiary);font-weight:500;margin-right:8px;white-space:nowrap}.msg-value{color:var(--fp-fg-primary);word-break:break-word;flex:1}.msg-id{font-size:12px;color:var(--fp-fg-muted);font-family:monospace}.msg-attachments{display:flex;flex-wrap:wrap;gap:6px}.msg-attachment{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:var(--fp-surface-2);border-radius:4px;font-size:13px;color:var(--fp-fg-secondary);border:1px solid var(--fp-line)}.msg-attachment-size{color:var(--fp-fg-muted);font-size:12px}.msg-body{padding:clamp(12px,3vw,24px) clamp(16px,3vw,28px);font-family:system-ui,-apple-system,sans-serif;line-height:1.6;color:var(--fp-fg-primary);overflow-x:auto}.msg-importance-high{color:#dc2626;font-weight:500}.msg-importance-low{color:#2563eb;font-weight:500}\\n\"] }]\n }], ctorParameters: () => [] });\n\nexport { MsgRenderer };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-DsNNZ59Q.mjs.map\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B-TVstXS-Dh1KMX_8.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-B-TVstXS.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { input, inject, signal, computed, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport MsgReader from '@kenjiuno/msgreader';\nimport * as i1 from 'lucide-angular';\nimport { User, Users, Paperclip, Calendar, Mail, Tag, Clock, Hash, LucideAngularModule } from 'lucide-angular';\nimport { L as LocaleService, R as RequestService, g as getFallbackTranslator } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-Dnuf7kun.mjs';\nimport { R as RendererError } from './eternalheart-angular-file-preview-RendererError-DtNihCIX.mjs';\n\nfunction formatRecipients(recipients, type) {\n if (!recipients)\n return '';\n return recipients\n .filter((r) => r.recipType === type)\n .map((r) => {\n const name = r.name || '';\n const email = r.smtpAddress || r.email || '';\n if (name && email && name !== email)\n return `${name} <${email}>`;\n return name || email;\n })\n .filter(Boolean)\n .join('; ');\n}\nfunction formatDate(dateStr) {\n if (!dateStr)\n return '';\n try {\n const date = new Date(dateStr);\n if (isNaN(date.getTime()))\n return dateStr;\n return date.toLocaleString();\n }\n catch {\n return dateStr;\n }\n}\nfunction decodeHtmlBody(f, emptyBodyText) {\n if (f.bodyHtml)\n return f.bodyHtml;\n if (f.html) {\n try {\n const decoder = new TextDecoder('utf-8');\n return decoder.decode(f.html);\n }\n catch {\n // fallback\n }\n }\n if (f.body) {\n return `<pre style=\"white-space: pre-wrap; word-wrap: break-word; font-family: system-ui, sans-serif;\">${f.body\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')}</pre>`;\n }\n return `<p style=\"color: var(--fp-fg-muted);\">${emptyBodyText}</p>`;\n}\nfunction formatMessageClass(messageClass) {\n if (!messageClass)\n return '';\n const classMap = {\n 'IPM.Note': 'Email',\n 'IPM.Note.SMIME': 'Encrypted Email',\n 'IPM.Note.SMIME.MultipartSigned': 'Signed Email',\n 'IPM.Appointment': 'Appointment',\n 'IPM.Schedule.Meeting.Request': 'Meeting Request',\n 'IPM.Schedule.Meeting.Canceled': 'Meeting Cancellation',\n 'IPM.Contact': 'Contact',\n 'IPM.Task': 'Task',\n 'IPM.StickyNote': 'Sticky Note',\n };\n return classMap[messageClass] || messageClass;\n}\nclass MsgRenderer {\n constructor() {\n this.url = input.required();\n this.locale = inject(LocaleService, { optional: true });\n this.request = inject(RequestService, { optional: true });\n this.sanitizer = inject(DomSanitizer);\n this.t = this.locale?.t() ?? getFallbackTranslator();\n this.userIcon = User;\n this.usersIcon = Users;\n this.paperclipIcon = Paperclip;\n this.calendarIcon = Calendar;\n this.mailIcon = Mail;\n this.tagIcon = Tag;\n this.clockIcon = Clock;\n this.hashIcon = Hash;\n this.unknownFileLabel = '未知文件';\n this.loading = signal(true);\n this.error = signal(null);\n this.fields = signal(null);\n this.subject = computed(() => this.fields()?.subject || '(无主题)');\n this.sender = computed(() => {\n const f = this.fields();\n if (!f)\n return '';\n const senderName = f.senderName || '';\n const senderEmail = f.senderSmtpAddress || f.senderEmail || '';\n if (senderName && senderEmail && senderName !== senderEmail) {\n return `${senderName} <${senderEmail}>`;\n }\n return senderName || senderEmail;\n });\n this.toStr = computed(() => formatRecipients(this.fields()?.recipients, 'to'));\n this.ccStr = computed(() => formatRecipients(this.fields()?.recipients, 'cc'));\n this.bccStr = computed(() => formatRecipients(this.fields()?.recipients, 'bcc'));\n this.sentDate = computed(() => formatDate(this.fields()?.clientSubmitTime));\n this.receivedDate = computed(() => formatDate(this.fields()?.messageDeliveryTime));\n this.createdDate = computed(() => formatDate(this.fields()?.creationTime));\n this.lastModified = computed(() => formatDate(this.fields()?.lastModificationTime));\n this.attachments = computed(() => (this.fields()?.attachments || []).filter((a) => !a.attachmentHidden));\n this.bodyHtml = computed(() => {\n const f = this.fields();\n return f ? decodeHtmlBody(f, this.t('msg.empty_body')) : '';\n });\n this.messageClass = computed(() => formatMessageClass(this.fields()?.messageClass));\n this.messageId = computed(() => this.fields()?.messageId || '');\n this.importance = computed(() => {\n const f = this.fields();\n return f && typeof f.importance === 'number' ? f.importance : undefined;\n });\n this.importanceLabel = computed(() => {\n if (this.importance() === 2)\n return 'High';\n if (this.importance() === 0)\n return 'Low';\n return '';\n });\n this.sensitivity = computed(() => {\n const f = this.fields();\n return f && typeof f.sensitivity === 'number' ? f.sensitivity : undefined;\n });\n this.sensitivityLabel = computed(() => {\n if (this.sensitivity() === undefined || this.sensitivity() === 0)\n return '';\n const labels = {\n 1: 'Personal',\n 2: 'Private',\n 3: 'Confidential',\n };\n return labels[this.sensitivity()] || '';\n });\n this.getToolbarGroups = () => [];\n effect(() => {\n const newUrl = this.url();\n if (newUrl) {\n untracked(() => {\n void this.loadMsg();\n });\n }\n });\n }\n trust(html) {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n formatAttachmentSize(size) {\n if (!size)\n return '';\n if (size > 1048576)\n return `${(size / 1048576).toFixed(1)} MB`;\n if (size > 1024)\n return `${(size / 1024).toFixed(0)} KB`;\n return `${size} B`;\n }\n async loadMsg() {\n this.loading.set(true);\n this.error.set(null);\n this.fields.set(null);\n try {\n const fetcher = this.request?.fetcher() ?? ((u, init) => fetch(u, init));\n const response = await fetcher(this.url());\n if (!response.ok)\n throw new Error('文件加载失败');\n const arrayBuffer = await response.arrayBuffer();\n const msgReader = new MsgReader(arrayBuffer);\n this.fields.set(msgReader.getFileData());\n }\n catch (err) {\n console.error('MSG 解析错误:', err);\n this.error.set(this.t('msg.parse_failed'));\n }\n finally {\n this.loading.set(false);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: MsgRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: MsgRenderer, isStandalone: true, selector: \"afp-msg-renderer\", inputs: { url: { classPropertyName: \"url\", publicName: \"url\", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: \"afp-block afp-w-full afp-h-full\" }, ngImport: i0, template: `\n @if (loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full\">\n <div\n class=\"afp-w-12 afp-h-12 afp-border-4 afp-border-line-strong afp-border-t-spinner-head afp-rounded-full afp-animate-spin\"\n ></div>\n </div>\n } @else if (error() || !fields()) {\n <afp-renderer-error [message]=\"error() || t('msg.parse_failed_short')\" />\n } @else {\n <div class=\"afp-w-full afp-h-full afp-overflow-auto msg-root\">\n <div class=\"msg-container\">\n <div class=\"msg-header\">\n <h2 class=\"msg-subject\">{{ subject() }}</h2>\n\n <div class=\"msg-meta\">\n @if (sender()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"userIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">From</span><span class=\"msg-value\">{{ sender() }}</span></div>\n </div>\n }\n\n @if (toStr()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"usersIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">To</span><span class=\"msg-value\">{{ toStr() }}</span></div>\n </div>\n }\n\n @if (ccStr()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"usersIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Cc</span><span class=\"msg-value\">{{ ccStr() }}</span></div>\n </div>\n }\n\n @if (bccStr()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"usersIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Bcc</span><span class=\"msg-value\">{{ bccStr() }}</span></div>\n </div>\n }\n\n @if (sentDate()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"calendarIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Sent</span><span class=\"msg-value\">{{ sentDate() }}</span></div>\n </div>\n }\n\n @if (receivedDate() && receivedDate() !== sentDate()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"clockIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Received</span><span class=\"msg-value\">{{ receivedDate() }}</span></div>\n </div>\n }\n\n @if (!sentDate() && !receivedDate() && createdDate()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"calendarIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Date</span><span class=\"msg-value\">{{ createdDate() }}</span></div>\n </div>\n }\n\n @if (importanceLabel()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"tagIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Importance</span>\n <span class=\"msg-value\" [class.msg-importance-high]=\"importance() === 2\" [class.msg-importance-low]=\"importance() !== 2\">\n {{ importanceLabel() }}\n </span>\n </div>\n </div>\n }\n\n @if (sensitivityLabel()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"tagIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Sensitivity</span><span class=\"msg-value\">{{ sensitivityLabel() }}</span></div>\n </div>\n }\n\n @if (messageClass() && messageClass() !== 'Email') {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"mailIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Type</span><span class=\"msg-value\">{{ messageClass() }}</span></div>\n </div>\n }\n\n @if (attachments().length > 0) {\n <div class=\"msg-row msg-row-bordered\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"paperclipIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Attachments</span>\n <div class=\"msg-value msg-attachments\">\n @for (a of attachments(); track $index) {\n <span class=\"msg-attachment\">\n {{ a.fileName || a.name || unknownFileLabel }}\n @if (formatAttachmentSize(a.contentLength); as size) {\n <span class=\"msg-attachment-size\">({{ size }})</span>\n }\n </span>\n }\n </div>\n </div>\n </div>\n }\n\n @if (messageId()) {\n <div class=\"msg-row\" [class.msg-row-bordered]=\"attachments().length === 0\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"hashIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Message-ID</span>\n <span class=\"msg-value msg-id\">{{ messageId() }}</span>\n </div>\n </div>\n }\n\n @if (lastModified() && lastModified() !== sentDate() && lastModified() !== receivedDate()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"clockIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Modified</span>\n <span class=\"msg-value msg-id\">{{ lastModified() }}</span>\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"msg-body\" [innerHTML]=\"trust(bodyHtml())\"></div>\n </div>\n </div>\n }\n `, isInline: true, styles: [\".msg-root{background:var(--fp-code-bg)}.msg-container{width:100%;background:var(--fp-code-bg);min-height:100%}.msg-header{border-bottom:1px solid var(--fp-line);padding:clamp(12px,3vw,24px) clamp(16px,3vw,28px);background:var(--fp-surface-1)}.msg-subject{margin:0 0 16px;font-size:clamp(16px,2.5vw,20px);font-weight:600;color:var(--fp-fg-primary);line-height:1.4}.msg-meta{display:flex;flex-direction:column;font-size:clamp(12px,1.8vw,14px);color:var(--fp-fg-secondary)}.msg-row{display:flex;align-items:flex-start;gap:8px;padding:6px 0}.msg-row-bordered{border-top:1px solid var(--fp-line);margin-top:4px;padding-top:10px}.msg-icon-wrap{flex-shrink:0;display:flex;align-items:center;height:1.4em}.msg-icon{flex-shrink:0;color:var(--fp-fg-muted)}.msg-row-content{display:flex;flex:1}.msg-label{flex-shrink:0;color:var(--fp-fg-tertiary);font-weight:500;margin-right:8px;white-space:nowrap}.msg-value{color:var(--fp-fg-primary);word-break:break-word;flex:1}.msg-id{font-size:12px;color:var(--fp-fg-muted);font-family:monospace}.msg-attachments{display:flex;flex-wrap:wrap;gap:6px}.msg-attachment{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:var(--fp-surface-2);border-radius:4px;font-size:13px;color:var(--fp-fg-secondary);border:1px solid var(--fp-line)}.msg-attachment-size{color:var(--fp-fg-muted);font-size:12px}.msg-body{padding:clamp(12px,3vw,24px) clamp(16px,3vw,28px);font-family:system-ui,-apple-system,sans-serif;line-height:1.6;color:var(--fp-fg-primary);overflow-x:auto}.msg-importance-high{color:#dc2626;font-weight:500}.msg-importance-low{color:#2563eb;font-weight:500}\\n\"], dependencies: [{ kind: \"component\", type: RendererError, selector: \"afp-renderer-error\", inputs: [\"message\", \"detail\", \"showIcon\"] }, { kind: \"ngmodule\", type: LucideAngularModule }, { kind: \"component\", type: i1.LucideAngularComponent, selector: \"lucide-angular, lucide-icon, i-lucide, span-lucide\", inputs: [\"class\", \"name\", \"img\", \"color\", \"absoluteStrokeWidth\", \"size\", \"strokeWidth\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: MsgRenderer, decorators: [{\n type: Component,\n args: [{ selector: 'afp-msg-renderer', standalone: true, imports: [RendererError, LucideAngularModule], changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'afp-block afp-w-full afp-h-full' }, template: `\n @if (loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full\">\n <div\n class=\"afp-w-12 afp-h-12 afp-border-4 afp-border-line-strong afp-border-t-spinner-head afp-rounded-full afp-animate-spin\"\n ></div>\n </div>\n } @else if (error() || !fields()) {\n <afp-renderer-error [message]=\"error() || t('msg.parse_failed_short')\" />\n } @else {\n <div class=\"afp-w-full afp-h-full afp-overflow-auto msg-root\">\n <div class=\"msg-container\">\n <div class=\"msg-header\">\n <h2 class=\"msg-subject\">{{ subject() }}</h2>\n\n <div class=\"msg-meta\">\n @if (sender()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"userIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">From</span><span class=\"msg-value\">{{ sender() }}</span></div>\n </div>\n }\n\n @if (toStr()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"usersIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">To</span><span class=\"msg-value\">{{ toStr() }}</span></div>\n </div>\n }\n\n @if (ccStr()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"usersIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Cc</span><span class=\"msg-value\">{{ ccStr() }}</span></div>\n </div>\n }\n\n @if (bccStr()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"usersIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Bcc</span><span class=\"msg-value\">{{ bccStr() }}</span></div>\n </div>\n }\n\n @if (sentDate()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"calendarIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Sent</span><span class=\"msg-value\">{{ sentDate() }}</span></div>\n </div>\n }\n\n @if (receivedDate() && receivedDate() !== sentDate()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"clockIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Received</span><span class=\"msg-value\">{{ receivedDate() }}</span></div>\n </div>\n }\n\n @if (!sentDate() && !receivedDate() && createdDate()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"calendarIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Date</span><span class=\"msg-value\">{{ createdDate() }}</span></div>\n </div>\n }\n\n @if (importanceLabel()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"tagIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Importance</span>\n <span class=\"msg-value\" [class.msg-importance-high]=\"importance() === 2\" [class.msg-importance-low]=\"importance() !== 2\">\n {{ importanceLabel() }}\n </span>\n </div>\n </div>\n }\n\n @if (sensitivityLabel()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"tagIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Sensitivity</span><span class=\"msg-value\">{{ sensitivityLabel() }}</span></div>\n </div>\n }\n\n @if (messageClass() && messageClass() !== 'Email') {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"mailIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\"><span class=\"msg-label\">Type</span><span class=\"msg-value\">{{ messageClass() }}</span></div>\n </div>\n }\n\n @if (attachments().length > 0) {\n <div class=\"msg-row msg-row-bordered\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"paperclipIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Attachments</span>\n <div class=\"msg-value msg-attachments\">\n @for (a of attachments(); track $index) {\n <span class=\"msg-attachment\">\n {{ a.fileName || a.name || unknownFileLabel }}\n @if (formatAttachmentSize(a.contentLength); as size) {\n <span class=\"msg-attachment-size\">({{ size }})</span>\n }\n </span>\n }\n </div>\n </div>\n </div>\n }\n\n @if (messageId()) {\n <div class=\"msg-row\" [class.msg-row-bordered]=\"attachments().length === 0\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"hashIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Message-ID</span>\n <span class=\"msg-value msg-id\">{{ messageId() }}</span>\n </div>\n </div>\n }\n\n @if (lastModified() && lastModified() !== sentDate() && lastModified() !== receivedDate()) {\n <div class=\"msg-row\">\n <span class=\"msg-icon-wrap\"><i-lucide [img]=\"clockIcon\" [size]=\"16\" class=\"msg-icon\" /></span>\n <div class=\"msg-row-content\">\n <span class=\"msg-label\">Modified</span>\n <span class=\"msg-value msg-id\">{{ lastModified() }}</span>\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"msg-body\" [innerHTML]=\"trust(bodyHtml())\"></div>\n </div>\n </div>\n }\n `, styles: [\".msg-root{background:var(--fp-code-bg)}.msg-container{width:100%;background:var(--fp-code-bg);min-height:100%}.msg-header{border-bottom:1px solid var(--fp-line);padding:clamp(12px,3vw,24px) clamp(16px,3vw,28px);background:var(--fp-surface-1)}.msg-subject{margin:0 0 16px;font-size:clamp(16px,2.5vw,20px);font-weight:600;color:var(--fp-fg-primary);line-height:1.4}.msg-meta{display:flex;flex-direction:column;font-size:clamp(12px,1.8vw,14px);color:var(--fp-fg-secondary)}.msg-row{display:flex;align-items:flex-start;gap:8px;padding:6px 0}.msg-row-bordered{border-top:1px solid var(--fp-line);margin-top:4px;padding-top:10px}.msg-icon-wrap{flex-shrink:0;display:flex;align-items:center;height:1.4em}.msg-icon{flex-shrink:0;color:var(--fp-fg-muted)}.msg-row-content{display:flex;flex:1}.msg-label{flex-shrink:0;color:var(--fp-fg-tertiary);font-weight:500;margin-right:8px;white-space:nowrap}.msg-value{color:var(--fp-fg-primary);word-break:break-word;flex:1}.msg-id{font-size:12px;color:var(--fp-fg-muted);font-family:monospace}.msg-attachments{display:flex;flex-wrap:wrap;gap:6px}.msg-attachment{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:var(--fp-surface-2);border-radius:4px;font-size:13px;color:var(--fp-fg-secondary);border:1px solid var(--fp-line)}.msg-attachment-size{color:var(--fp-fg-muted);font-size:12px}.msg-body{padding:clamp(12px,3vw,24px) clamp(16px,3vw,28px);font-family:system-ui,-apple-system,sans-serif;line-height:1.6;color:var(--fp-fg-primary);overflow-x:auto}.msg-importance-high{color:#dc2626;font-weight:500}.msg-importance-low{color:#2563eb;font-weight:500}\\n\"] }]\n }], ctorParameters: () => [] });\n\nexport { MsgRenderer };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-B-TVstXS.mjs.map\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { input, inject, DestroyRef, signal, viewChild, computed, afterNextRender, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
3
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
|
-
import { L as LocaleService, g as getFallbackTranslator, Y as Yg, A as Ag, b as i0$1 } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-
|
|
4
|
+
import { L as LocaleService, g as getFallbackTranslator, Y as Yg, A as Ag, b as i0$1 } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-RPRQhVCg.mjs';
|
|
5
5
|
import * as pdfjsLib from 'pdfjs-dist/legacy/build/pdf.mjs';
|
|
6
6
|
import * as i1 from 'lucide-angular';
|
|
7
7
|
import { X, Menu, ChevronLeft, ChevronRight, ZoomOut, ZoomIn, RefreshCw, LucideAngularModule } from 'lucide-angular';
|
|
@@ -700,4 +700,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
700
700
|
}], ctorParameters: () => [] });
|
|
701
701
|
|
|
702
702
|
export { PdfRenderer };
|
|
703
|
-
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-
|
|
703
|
+
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B4L1kfY--BHy3x_oj.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-6dZS_Cfs-B1itLV5R.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-6dZS_Cfs.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { input, inject, DestroyRef, signal, viewChild, computed, afterNextRender, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { L as LocaleService, g as getFallbackTranslator } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-DXwNhxAB.mjs';\nimport * as pdfjsLib from 'pdfjs-dist/legacy/build/pdf.mjs';\nimport * as i1 from 'lucide-angular';\nimport { X, Menu, ChevronLeft, ChevronRight, ZoomOut, ZoomIn, RefreshCw, LucideAngularModule } from 'lucide-angular';\nimport { R as RendererError } from './eternalheart-angular-file-preview-RendererError-DtNihCIX.mjs';\nimport { T as ToolbarEventEmitter } from './eternalheart-angular-file-preview-base.types-D5x7QPey.mjs';\nimport { installUint8ArrayHexBase64Polyfill, getPdfDocumentOptions, configurePdfWorker } from '@eternalheart/file-preview-core';\n\ninstallUint8ArrayHexBase64Polyfill();\n/**\n * 准备 PDF worker。\n * - 浏览器:使用 CDN 上的 legacy worker(独立 worker 线程,性能好)。\n * - Electron:worker 独立作用域缺 Uint8Array hex/base64 polyfill,会抛 `toHex is not a function`。\n * 将 worker 模块挂到 `globalThis.pdfjsWorker`,强制 pdfjs 主线程执行 worker 逻辑,\n * 复用主线程已装的 polyfill,并绕开 CDN / worker 作用域问题。\n */\nlet pdfWorkerPrepared = null;\nfunction preparePdfWorker() {\n if (pdfWorkerPrepared)\n return pdfWorkerPrepared;\n pdfWorkerPrepared = (async () => {\n const isElectron = typeof navigator !== 'undefined' && /electron/i.test(navigator.userAgent);\n if (isElectron) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const g = globalThis;\n if (typeof globalThis !== 'undefined' && !g.pdfjsWorker) {\n // @ts-ignore - pdfjs worker 无类型声明\n const workerModule = await import(/* webpackChunkName: \"pdf.worker\" */ /* @vite-ignore */ 'pdfjs-dist/legacy/build/pdf.worker.mjs');\n g.pdfjsWorker = workerModule;\n }\n }\n const configuredOptions = getPdfDocumentOptions();\n configurePdfWorker(pdfjsLib, {\n ...configuredOptions,\n workerSrc: pdfjsLib.GlobalWorkerOptions.workerSrc || undefined,\n });\n })();\n return pdfWorkerPrepared;\n}\nclass PdfRenderer {\n constructor() {\n this.url = input.required();\n this.emitter = new ToolbarEventEmitter();\n this.locale = inject(LocaleService, { optional: true });\n this.sanitizer = inject(DomSanitizer);\n this.destroyRef = inject(DestroyRef);\n this.t = this.locale?.t() ?? getFallbackTranslator();\n this.xIcon = X;\n this.zoom = signal(1);\n this.currentPage = signal(1);\n this.showOutline = signal(false);\n this.numPages = signal(0);\n this.error = signal(null);\n this.loading = signal(true);\n this.outline = signal([]);\n this.activeOutlineItem = signal(null);\n this.scrollContainerRef = viewChild('scrollContainerRef');\n this.outlinePageMap = new Map();\n this.pdfDoc = null;\n this.pageStates = new Map();\n this.observer = null;\n this.zoomWatchReady = false;\n this.outlineHtml = computed(() => {\n const items = this.outline();\n this.activeOutlineItem();\n if (items.length === 0)\n return '';\n return `<ul>${this.renderOutlineItemsHtml(items)}</ul>`;\n });\n this.getToolbarGroups = () => {\n const groups = [];\n if (this.numPages() === 0)\n return groups;\n if (this.outline().length > 0) {\n groups.push({\n items: [\n {\n type: 'button',\n icon: Menu,\n tooltip: this.t('toolbar.outline'),\n action: this.handleToggleOutline,\n active: this.showOutline(),\n },\n ],\n });\n }\n groups.push({\n items: [\n {\n type: 'button',\n icon: ChevronLeft,\n tooltip: this.t('toolbar.prev_page'),\n action: this.handlePrevPage,\n disabled: this.currentPage() <= 1,\n },\n {\n type: 'text',\n content: `${this.currentPage()} / ${this.numPages()}`,\n minWidth: '4rem',\n },\n {\n type: 'button',\n icon: ChevronRight,\n tooltip: this.t('toolbar.next_page'),\n action: this.handleNextPage,\n disabled: this.currentPage() >= this.numPages(),\n },\n ],\n });\n groups.push({\n items: [\n {\n type: 'button',\n icon: ZoomOut,\n tooltip: this.t('toolbar.zoom_out'),\n action: this.handleZoomOut,\n disabled: this.zoom() <= 0.5,\n },\n {\n type: 'text',\n content: `${Math.round(this.zoom() * 100)}%`,\n minWidth: '3rem',\n },\n {\n type: 'button',\n icon: ZoomIn,\n tooltip: this.t('toolbar.zoom_in'),\n action: this.handleZoomIn,\n disabled: this.zoom() >= 3,\n },\n ],\n });\n groups.push({\n items: [\n {\n type: 'button',\n icon: RefreshCw,\n tooltip: this.t('toolbar.reset'),\n action: this.handleReset,\n },\n ],\n });\n return groups;\n };\n this.onToolbarChange = (listener) => this.emitter.subscribe(listener);\n this.handleZoomIn = () => {\n this.zoom.update((v) => Math.min(3, v + 0.1));\n };\n this.handleZoomOut = () => {\n this.zoom.update((v) => Math.max(0.5, v - 0.1));\n };\n this.handleReset = () => {\n this.zoom.set(1);\n };\n this.handlePrevPage = () => {\n const container = this.scrollContainerRef()?.nativeElement;\n if (!container)\n return;\n const pages = container.querySelectorAll('[data-page-number]');\n const targetPage = pages[Math.max(0, this.currentPage() - 2)];\n if (targetPage) {\n targetPage.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n };\n this.handleNextPage = () => {\n const container = this.scrollContainerRef()?.nativeElement;\n if (!container)\n return;\n const pages = container.querySelectorAll('[data-page-number]');\n const targetPage = pages[Math.min(pages.length - 1, this.currentPage())];\n if (targetPage) {\n targetPage.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n };\n this.handleToggleOutline = () => {\n this.showOutline.update((v) => !v);\n };\n this.handleScroll = () => {\n if (!this.scrollContainerRef()?.nativeElement || this.pageStates.size === 0)\n return;\n const container = this.scrollContainerRef().nativeElement;\n const scrollTop = container.scrollTop;\n const containerHeight = container.clientHeight;\n const scrollCenter = scrollTop + containerHeight / 2;\n let currentVisiblePage = 1;\n let minDistance = Infinity;\n this.pageStates.forEach((state, pageNumber) => {\n const rect = state.element.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n const pageCenter = rect.top - containerRect.top + rect.height / 2 + scrollTop;\n const distance = Math.abs(scrollCenter - pageCenter);\n if (distance < minDistance) {\n minDistance = distance;\n currentVisiblePage = pageNumber;\n }\n });\n if (currentVisiblePage !== this.currentPage()) {\n this.currentPage.set(currentVisiblePage);\n if (this.outlinePageMap.size > 0) {\n this.updateActiveOutlineByPage(currentVisiblePage);\n }\n }\n };\n afterNextRender(() => {\n this.observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n const pageNumber = Number(entry.target.getAttribute('data-page-number'));\n if (!pageNumber)\n return;\n if (entry.isIntersecting) {\n void this.renderPage(pageNumber, this.zoom());\n }\n else {\n const state = this.pageStates.get(pageNumber);\n if (state && state.rendered) {\n this.clearPageCanvas(pageNumber);\n }\n }\n });\n }, {\n root: this.scrollContainerRef()?.nativeElement ?? null,\n rootMargin: '500px 0px',\n threshold: 0,\n });\n const container = this.scrollContainerRef()?.nativeElement;\n if (container) {\n container.addEventListener('scroll', this.handleScroll);\n }\n if (this.numPages() > 0) {\n this.initPagePlaceholders();\n }\n });\n this.destroyRef.onDestroy(() => {\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n const container = this.scrollContainerRef()?.nativeElement;\n if (container) {\n container.removeEventListener('scroll', this.handleScroll);\n }\n this.pageStates.forEach((state) => {\n if (state.renderTask) {\n state.renderTask.cancel();\n }\n });\n this.pageStates.clear();\n if (this.pdfDoc) {\n try {\n this.pdfDoc.destroy();\n }\n catch {\n // ignore\n }\n this.pdfDoc = null;\n }\n });\n effect(() => {\n this.zoom();\n this.currentPage();\n this.numPages();\n this.showOutline();\n this.outline().length;\n this.emitter.notify();\n });\n effect(() => {\n const url = this.url();\n if (url) {\n untracked(() => {\n void this.loadPdf();\n });\n }\n });\n effect(() => {\n const val = this.numPages();\n if (val > 0) {\n untracked(() => {\n queueMicrotask(() => this.initPagePlaceholders());\n });\n }\n });\n effect(() => {\n this.zoom();\n if (!this.zoomWatchReady) {\n this.zoomWatchReady = true;\n return;\n }\n untracked(() => {\n this.pageStates.forEach((state, pageNumber) => {\n if (state.rendered) {\n this.clearPageCanvas(pageNumber);\n }\n });\n window.setTimeout(() => {\n if (this.observer && this.scrollContainerRef()?.nativeElement) {\n this.pageStates.forEach((state) => {\n this.observer?.unobserve(state.element);\n this.observer?.observe(state.element);\n });\n }\n }, 150);\n });\n });\n }\n trust(html) {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n onOutlineClick(e) {\n const target = e.target;\n const button = target.closest('[data-outline-key]');\n if (!button)\n return;\n const itemKey = button.getAttribute('data-outline-key');\n const destStr = button.getAttribute('data-outline-dest');\n if (!itemKey || !destStr)\n return;\n try {\n const dest = JSON.parse(destStr);\n void this.handleOutlineClick(dest, itemKey);\n }\n catch (err) {\n console.error('解析大纲目标失败:', err);\n }\n }\n async buildOutlinePageMap(items, pdfDocument, depth = 0) {\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const itemKey = `${item.title}-${i}-${depth}`;\n try {\n let pageNumber = null;\n const dest = item.dest;\n if (typeof dest === 'string') {\n const namedDest = await pdfDocument.getDestination?.(dest);\n if (Array.isArray(namedDest) && namedDest[0] && typeof namedDest[0] === 'object') {\n const idx = await pdfDocument.getPageIndex?.(namedDest[0]);\n if (idx != null)\n pageNumber = idx + 1;\n }\n }\n else if (Array.isArray(dest) && dest[0] && typeof dest[0] === 'object') {\n const idx = await pdfDocument.getPageIndex?.(dest[0]);\n if (idx != null)\n pageNumber = idx + 1;\n }\n if (pageNumber !== null && pageNumber > 0) {\n this.outlinePageMap.set(itemKey, pageNumber);\n }\n if (item.items && item.items.length > 0) {\n await this.buildOutlinePageMap(item.items, pdfDocument, depth + 1);\n }\n }\n catch {\n // 静默失败\n }\n }\n }\n updateActiveOutlineByPage(page) {\n let closestItem = null;\n let closestDistance = Infinity;\n this.outlinePageMap.forEach((itemPage, itemKey) => {\n if (itemPage <= page) {\n const distance = page - itemPage;\n if (distance < closestDistance) {\n closestDistance = distance;\n closestItem = itemKey;\n }\n }\n });\n if (closestItem !== this.activeOutlineItem()) {\n this.activeOutlineItem.set(closestItem);\n }\n }\n async handleOutlineClick(dest, itemKey) {\n if (!this.pdfDoc || !this.scrollContainerRef()?.nativeElement)\n return;\n try {\n let pageNumber;\n if (typeof dest === 'string') {\n const namedDest = await this.pdfDoc.getDestination?.(dest);\n if (Array.isArray(namedDest) && namedDest[0]) {\n const idx = await this.pdfDoc.getPageIndex?.(namedDest[0]);\n if (idx == null)\n return;\n pageNumber = idx + 1;\n }\n else {\n return;\n }\n }\n else if (Array.isArray(dest) && dest[0]) {\n const idx = await this.pdfDoc.getPageIndex?.(dest[0]);\n if (idx == null)\n return;\n pageNumber = idx + 1;\n }\n else {\n return;\n }\n this.activeOutlineItem.set(itemKey);\n const pages = this.scrollContainerRef().nativeElement.querySelectorAll('[data-page-number]');\n const targetPage = pages[pageNumber - 1];\n if (targetPage) {\n targetPage.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n window.setTimeout(() => {\n this.showOutline.set(false);\n }, 300);\n }\n catch (err) {\n console.error('大纲跳转失败:', err);\n }\n }\n renderOutlineItemsHtml(items, depth = 0) {\n return items.map((item, i) => {\n const itemKey = `${item.title}-${i}-${depth}`;\n const isActive = this.activeOutlineItem() === itemKey;\n const activeClass = isActive\n ? 'afp-bg-surface-2 afp-text-fg-primary afp-font-medium'\n : 'afp-text-fg-secondary hover:afp-text-fg-primary hover:afp-bg-surface-2';\n let html = `<li style=\"margin-left: ${depth > 0 ? 16 : 0}px;\">\n <button\n data-outline-key=\"${itemKey}\"\n data-outline-dest=\"${JSON.stringify(item.dest).replace(/\"/g, '"')}\"\n class=\"afp-w-full afp-text-left afp-py-2 afp-px-3 afp-text-sm afp-rounded afp-transition-all afp-truncate ${activeClass}\"\n title=\"${item.title}\"\n >\n ${item.title}\n </button>`;\n if (item.items && item.items.length > 0) {\n html += `<ul>${this.renderOutlineItemsHtml(item.items, depth + 1)}</ul>`;\n }\n html += '</li>';\n return html;\n }).join('');\n }\n async renderPage(pageNumber, scale) {\n if (!this.pdfDoc)\n return;\n const state = this.pageStates.get(pageNumber);\n if (!state || state.rendering)\n return;\n state.rendering = true;\n try {\n const page = await this.pdfDoc.getPage(pageNumber);\n const viewport = page.getViewport({ scale });\n const outputScale = typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\n // 页面盒子使用当前 PDF viewport 的真实尺寸;容器不足时再等比缩小。\n // Angular 模板中的 pdf-pages 是全宽容器,若不覆盖页面宽度,所有页面都会被撑成容器宽度。\n state.element.style.width = `${viewport.width}px`;\n state.element.style.maxWidth = '100%';\n state.element.style.aspectRatio = `${viewport.width} / ${viewport.height}`;\n state.element.style.minHeight = '0';\n const canvas = document.createElement('canvas');\n // Canvas 位图按 DPR 放大,避免 Retina 等高 DPI 屏幕把 1x 位图插值放大后发糊。\n canvas.width = Math.ceil(viewport.width * outputScale);\n canvas.height = Math.ceil(viewport.height * outputScale);\n // Canvas 填满与 PDF 同比例的页面盒子,高度由自身宽高比自动计算。\n canvas.style.width = '100%';\n canvas.style.maxWidth = '100%';\n canvas.style.height = 'auto';\n canvas.style.borderRadius = '0';\n canvas.style.display = 'block';\n const ctx = canvas.getContext('2d');\n if (!ctx)\n return;\n const renderTask = page.render({\n canvasContext: ctx,\n viewport,\n transform: outputScale === 1 ? undefined : [outputScale, 0, 0, outputScale, 0, 0],\n });\n state.renderTask = renderTask;\n await renderTask.promise;\n state.element.innerHTML = '';\n state.element.appendChild(canvas);\n state.rendered = true;\n }\n catch (err) {\n if (err?.name !== 'RenderingCancelledException') {\n console.error(`渲染页面 ${pageNumber} 失败:`, err);\n }\n }\n finally {\n state.rendering = false;\n state.renderTask = null;\n }\n }\n clearPageCanvas(pageNumber) {\n const state = this.pageStates.get(pageNumber);\n if (!state)\n return;\n if (state.renderTask) {\n state.renderTask.cancel();\n state.renderTask = null;\n }\n const canvas = state.element.querySelector('canvas');\n if (canvas) {\n const ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n }\n }\n state.element.innerHTML = '';\n state.rendered = false;\n state.rendering = false;\n }\n initPagePlaceholders() {\n if (!this.pdfDoc || !this.scrollContainerRef()?.nativeElement)\n return;\n const wrapper = this.scrollContainerRef().nativeElement.querySelector('.pdf-pages');\n if (!wrapper)\n return;\n wrapper.innerHTML = '';\n this.pageStates.clear();\n for (let i = 1; i <= this.numPages(); i++) {\n const pageDiv = document.createElement('div');\n pageDiv.className = 'afp-pdf-page-placeholder afp-relative afp-flex afp-justify-center';\n pageDiv.setAttribute('data-page-number', String(i));\n wrapper.appendChild(pageDiv);\n this.pageStates.set(i, {\n element: pageDiv,\n rendered: false,\n rendering: false,\n renderTask: null,\n });\n if (this.observer) {\n this.observer.observe(pageDiv);\n }\n }\n }\n async loadPdf() {\n this.error.set(null);\n this.loading.set(true);\n this.numPages.set(0);\n if (this.pdfDoc) {\n try {\n this.pdfDoc.destroy();\n }\n catch {\n // ignore\n }\n this.pdfDoc = null;\n }\n try {\n await preparePdfWorker();\n const loadingTask = pdfjsLib.getDocument({\n url: this.url(),\n ...getPdfDocumentOptions(),\n });\n this.pdfDoc = await loadingTask.promise;\n const total = this.pdfDoc.numPages;\n this.numPages.set(total);\n this.currentPage.set(1);\n try {\n const outlineData = await this.pdfDoc.getOutline();\n if (outlineData) {\n this.outline.set(outlineData);\n this.outlinePageMap.clear();\n await this.buildOutlinePageMap(outlineData, this.pdfDoc);\n this.updateActiveOutlineByPage(this.currentPage());\n }\n }\n catch (err) {\n console.warn('PDF 大纲提取失败:', err);\n }\n this.loading.set(false);\n }\n catch (err) {\n console.error('PDF 加载错误:', err);\n this.error.set(this.t('pdf.load_failed'));\n this.loading.set(false);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: PdfRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: PdfRenderer, isStandalone: true, selector: \"afp-pdf-renderer\", inputs: { url: { classPropertyName: \"url\", publicName: \"url\", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: \"afp-block afp-w-full afp-h-full\" }, viewQueries: [{ propertyName: \"scrollContainerRef\", first: true, predicate: [\"scrollContainerRef\"], descendants: true, isSignal: true }], ngImport: i0, template: `\n <div #containerRef class=\"afp-relative afp-w-full afp-h-full\">\n @if (outline().length > 0) {\n <div\n class=\"afp-absolute afp-inset-0 afp-z-20 afp-flex afp-transition-opacity afp-duration-300\"\n [style.opacity]=\"showOutline() ? 1 : 0\"\n [style.pointer-events]=\"showOutline() ? 'auto' : 'none'\"\n >\n <div\n class=\"afp-w-72 afp-max-w-[80%] afp-h-full afp-bg-surface-overlay afp-backdrop-blur-xl afp-border-r afp-border-line-weak afp-flex afp-flex-col afp-shadow-2xl afp-transition-transform afp-duration-300\"\n [style.transform]=\"showOutline() ? 'translateX(0)' : 'translateX(-100%)'\"\n >\n <div class=\"afp-flex afp-items-center afp-justify-between afp-px-4 afp-py-3 afp-border-b afp-border-line-weak afp-flex-shrink-0\">\n <span class=\"afp-text-fg-primary afp-font-medium afp-text-sm\">{{ t('toolbar.outline') }}</span>\n <button\n type=\"button\"\n class=\"afp-text-fg-tertiary hover:afp-text-fg-primary afp-transition-colors\"\n (click)=\"showOutline.set(false)\"\n >\n <i-lucide [img]=\"xIcon\" class=\"afp-w-4 afp-h-4\" />\n </button>\n </div>\n <div\n class=\"afp-flex-1 afp-overflow-y-auto afp-py-4 afp-px-1 outline-items\"\n [innerHTML]=\"trust(outlineHtml())\"\n (click)=\"onOutlineClick($event)\"\n ></div>\n </div>\n <div\n class=\"afp-flex-1 afp-transition-opacity afp-duration-300\"\n [style.background]=\"showOutline() ? 'rgba(0,0,0,0.3)' : 'transparent'\"\n (click)=\"showOutline.set(false)\"\n ></div>\n </div>\n }\n\n <div #scrollContainerRef class=\"afp-pdf-container afp-w-full afp-h-full afp-overflow-auto\">\n @if (error()) {\n <afp-renderer-error [message]=\"error()!\" />\n }\n\n @if (!error() && loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-min-h-screen\">\n <div\n class=\"afp-w-12 afp-h-12 afp-border-4 afp-border-line-strong afp-border-t-spinner-head afp-rounded-full afp-animate-spin\"\n ></div>\n </div>\n }\n\n @if (!error()) {\n <div class=\"afp-flex afp-flex-col afp-items-center afp-w-full\">\n <div class=\"pdf-pages afp-flex afp-flex-col afp-gap-4 afp-w-full afp-items-center\"></div>\n </div>\n }\n </div>\n </div>\n `, isInline: true, dependencies: [{ kind: \"component\", type: RendererError, selector: \"afp-renderer-error\", inputs: [\"message\", \"detail\", \"showIcon\"] }, { kind: \"ngmodule\", type: LucideAngularModule }, { kind: \"component\", type: i1.LucideAngularComponent, selector: \"lucide-angular, lucide-icon, i-lucide, span-lucide\", inputs: [\"class\", \"name\", \"img\", \"color\", \"absoluteStrokeWidth\", \"size\", \"strokeWidth\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: PdfRenderer, decorators: [{\n type: Component,\n args: [{\n selector: 'afp-pdf-renderer',\n standalone: true,\n imports: [RendererError, LucideAngularModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'afp-block afp-w-full afp-h-full' },\n template: `\n <div #containerRef class=\"afp-relative afp-w-full afp-h-full\">\n @if (outline().length > 0) {\n <div\n class=\"afp-absolute afp-inset-0 afp-z-20 afp-flex afp-transition-opacity afp-duration-300\"\n [style.opacity]=\"showOutline() ? 1 : 0\"\n [style.pointer-events]=\"showOutline() ? 'auto' : 'none'\"\n >\n <div\n class=\"afp-w-72 afp-max-w-[80%] afp-h-full afp-bg-surface-overlay afp-backdrop-blur-xl afp-border-r afp-border-line-weak afp-flex afp-flex-col afp-shadow-2xl afp-transition-transform afp-duration-300\"\n [style.transform]=\"showOutline() ? 'translateX(0)' : 'translateX(-100%)'\"\n >\n <div class=\"afp-flex afp-items-center afp-justify-between afp-px-4 afp-py-3 afp-border-b afp-border-line-weak afp-flex-shrink-0\">\n <span class=\"afp-text-fg-primary afp-font-medium afp-text-sm\">{{ t('toolbar.outline') }}</span>\n <button\n type=\"button\"\n class=\"afp-text-fg-tertiary hover:afp-text-fg-primary afp-transition-colors\"\n (click)=\"showOutline.set(false)\"\n >\n <i-lucide [img]=\"xIcon\" class=\"afp-w-4 afp-h-4\" />\n </button>\n </div>\n <div\n class=\"afp-flex-1 afp-overflow-y-auto afp-py-4 afp-px-1 outline-items\"\n [innerHTML]=\"trust(outlineHtml())\"\n (click)=\"onOutlineClick($event)\"\n ></div>\n </div>\n <div\n class=\"afp-flex-1 afp-transition-opacity afp-duration-300\"\n [style.background]=\"showOutline() ? 'rgba(0,0,0,0.3)' : 'transparent'\"\n (click)=\"showOutline.set(false)\"\n ></div>\n </div>\n }\n\n <div #scrollContainerRef class=\"afp-pdf-container afp-w-full afp-h-full afp-overflow-auto\">\n @if (error()) {\n <afp-renderer-error [message]=\"error()!\" />\n }\n\n @if (!error() && loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-min-h-screen\">\n <div\n class=\"afp-w-12 afp-h-12 afp-border-4 afp-border-line-strong afp-border-t-spinner-head afp-rounded-full afp-animate-spin\"\n ></div>\n </div>\n }\n\n @if (!error()) {\n <div class=\"afp-flex afp-flex-col afp-items-center afp-w-full\">\n <div class=\"pdf-pages afp-flex afp-flex-col afp-gap-4 afp-w-full afp-items-center\"></div>\n </div>\n }\n </div>\n </div>\n `,\n }]\n }], ctorParameters: () => [] });\n\nexport { PdfRenderer };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-6dZS_Cfs.mjs.map\n"],"names":["installUint8ArrayHexBase64Polyfill","getPdfDocumentOptions","configurePdfWorker"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B4L1kfY--BHy3x_oj.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-B4L1kfY-.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { input, inject, DestroyRef, signal, viewChild, computed, afterNextRender, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { L as LocaleService, g as getFallbackTranslator } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-Dnuf7kun.mjs';\nimport * as pdfjsLib from 'pdfjs-dist/legacy/build/pdf.mjs';\nimport * as i1 from 'lucide-angular';\nimport { X, Menu, ChevronLeft, ChevronRight, ZoomOut, ZoomIn, RefreshCw, LucideAngularModule } from 'lucide-angular';\nimport { R as RendererError } from './eternalheart-angular-file-preview-RendererError-DtNihCIX.mjs';\nimport { T as ToolbarEventEmitter } from './eternalheart-angular-file-preview-base.types-D5x7QPey.mjs';\nimport { installUint8ArrayHexBase64Polyfill, getPdfDocumentOptions, configurePdfWorker } from '@eternalheart/file-preview-core';\n\ninstallUint8ArrayHexBase64Polyfill();\n/**\n * 准备 PDF worker。\n * - 浏览器:使用 CDN 上的 legacy worker(独立 worker 线程,性能好)。\n * - Electron:worker 独立作用域缺 Uint8Array hex/base64 polyfill,会抛 `toHex is not a function`。\n * 将 worker 模块挂到 `globalThis.pdfjsWorker`,强制 pdfjs 主线程执行 worker 逻辑,\n * 复用主线程已装的 polyfill,并绕开 CDN / worker 作用域问题。\n */\nlet pdfWorkerPrepared = null;\nfunction preparePdfWorker() {\n if (pdfWorkerPrepared)\n return pdfWorkerPrepared;\n pdfWorkerPrepared = (async () => {\n const isElectron = typeof navigator !== 'undefined' && /electron/i.test(navigator.userAgent);\n if (isElectron) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const g = globalThis;\n if (typeof globalThis !== 'undefined' && !g.pdfjsWorker) {\n // @ts-ignore - pdfjs worker 无类型声明\n const workerModule = await import(/* webpackChunkName: \"pdf.worker\" */ /* @vite-ignore */ 'pdfjs-dist/legacy/build/pdf.worker.mjs');\n g.pdfjsWorker = workerModule;\n }\n }\n const configuredOptions = getPdfDocumentOptions();\n configurePdfWorker(pdfjsLib, {\n ...configuredOptions,\n workerSrc: pdfjsLib.GlobalWorkerOptions.workerSrc || undefined,\n });\n })();\n return pdfWorkerPrepared;\n}\nclass PdfRenderer {\n constructor() {\n this.url = input.required();\n this.emitter = new ToolbarEventEmitter();\n this.locale = inject(LocaleService, { optional: true });\n this.sanitizer = inject(DomSanitizer);\n this.destroyRef = inject(DestroyRef);\n this.t = this.locale?.t() ?? getFallbackTranslator();\n this.xIcon = X;\n this.zoom = signal(1);\n this.currentPage = signal(1);\n this.showOutline = signal(false);\n this.numPages = signal(0);\n this.error = signal(null);\n this.loading = signal(true);\n this.outline = signal([]);\n this.activeOutlineItem = signal(null);\n this.scrollContainerRef = viewChild('scrollContainerRef');\n this.outlinePageMap = new Map();\n this.pdfDoc = null;\n this.pageStates = new Map();\n this.observer = null;\n this.zoomWatchReady = false;\n this.outlineHtml = computed(() => {\n const items = this.outline();\n this.activeOutlineItem();\n if (items.length === 0)\n return '';\n return `<ul>${this.renderOutlineItemsHtml(items)}</ul>`;\n });\n this.getToolbarGroups = () => {\n const groups = [];\n if (this.numPages() === 0)\n return groups;\n if (this.outline().length > 0) {\n groups.push({\n items: [\n {\n type: 'button',\n icon: Menu,\n tooltip: this.t('toolbar.outline'),\n action: this.handleToggleOutline,\n active: this.showOutline(),\n },\n ],\n });\n }\n groups.push({\n items: [\n {\n type: 'button',\n icon: ChevronLeft,\n tooltip: this.t('toolbar.prev_page'),\n action: this.handlePrevPage,\n disabled: this.currentPage() <= 1,\n },\n {\n type: 'text',\n content: `${this.currentPage()} / ${this.numPages()}`,\n minWidth: '4rem',\n },\n {\n type: 'button',\n icon: ChevronRight,\n tooltip: this.t('toolbar.next_page'),\n action: this.handleNextPage,\n disabled: this.currentPage() >= this.numPages(),\n },\n ],\n });\n groups.push({\n items: [\n {\n type: 'button',\n icon: ZoomOut,\n tooltip: this.t('toolbar.zoom_out'),\n action: this.handleZoomOut,\n disabled: this.zoom() <= 0.5,\n },\n {\n type: 'text',\n content: `${Math.round(this.zoom() * 100)}%`,\n minWidth: '3rem',\n },\n {\n type: 'button',\n icon: ZoomIn,\n tooltip: this.t('toolbar.zoom_in'),\n action: this.handleZoomIn,\n disabled: this.zoom() >= 3,\n },\n ],\n });\n groups.push({\n items: [\n {\n type: 'button',\n icon: RefreshCw,\n tooltip: this.t('toolbar.reset'),\n action: this.handleReset,\n },\n ],\n });\n return groups;\n };\n this.onToolbarChange = (listener) => this.emitter.subscribe(listener);\n this.handleZoomIn = () => {\n this.zoom.update((v) => Math.min(3, v + 0.1));\n };\n this.handleZoomOut = () => {\n this.zoom.update((v) => Math.max(0.5, v - 0.1));\n };\n this.handleReset = () => {\n this.zoom.set(1);\n };\n this.handlePrevPage = () => {\n const container = this.scrollContainerRef()?.nativeElement;\n if (!container)\n return;\n const pages = container.querySelectorAll('[data-page-number]');\n const targetPage = pages[Math.max(0, this.currentPage() - 2)];\n if (targetPage) {\n targetPage.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n };\n this.handleNextPage = () => {\n const container = this.scrollContainerRef()?.nativeElement;\n if (!container)\n return;\n const pages = container.querySelectorAll('[data-page-number]');\n const targetPage = pages[Math.min(pages.length - 1, this.currentPage())];\n if (targetPage) {\n targetPage.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n };\n this.handleToggleOutline = () => {\n this.showOutline.update((v) => !v);\n };\n this.handleScroll = () => {\n if (!this.scrollContainerRef()?.nativeElement || this.pageStates.size === 0)\n return;\n const container = this.scrollContainerRef().nativeElement;\n const scrollTop = container.scrollTop;\n const containerHeight = container.clientHeight;\n const scrollCenter = scrollTop + containerHeight / 2;\n let currentVisiblePage = 1;\n let minDistance = Infinity;\n this.pageStates.forEach((state, pageNumber) => {\n const rect = state.element.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n const pageCenter = rect.top - containerRect.top + rect.height / 2 + scrollTop;\n const distance = Math.abs(scrollCenter - pageCenter);\n if (distance < minDistance) {\n minDistance = distance;\n currentVisiblePage = pageNumber;\n }\n });\n if (currentVisiblePage !== this.currentPage()) {\n this.currentPage.set(currentVisiblePage);\n if (this.outlinePageMap.size > 0) {\n this.updateActiveOutlineByPage(currentVisiblePage);\n }\n }\n };\n afterNextRender(() => {\n this.observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n const pageNumber = Number(entry.target.getAttribute('data-page-number'));\n if (!pageNumber)\n return;\n if (entry.isIntersecting) {\n void this.renderPage(pageNumber, this.zoom());\n }\n else {\n const state = this.pageStates.get(pageNumber);\n if (state && state.rendered) {\n this.clearPageCanvas(pageNumber);\n }\n }\n });\n }, {\n root: this.scrollContainerRef()?.nativeElement ?? null,\n rootMargin: '500px 0px',\n threshold: 0,\n });\n const container = this.scrollContainerRef()?.nativeElement;\n if (container) {\n container.addEventListener('scroll', this.handleScroll);\n }\n if (this.numPages() > 0) {\n this.initPagePlaceholders();\n }\n });\n this.destroyRef.onDestroy(() => {\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n const container = this.scrollContainerRef()?.nativeElement;\n if (container) {\n container.removeEventListener('scroll', this.handleScroll);\n }\n this.pageStates.forEach((state) => {\n if (state.renderTask) {\n state.renderTask.cancel();\n }\n });\n this.pageStates.clear();\n if (this.pdfDoc) {\n try {\n this.pdfDoc.destroy();\n }\n catch {\n // ignore\n }\n this.pdfDoc = null;\n }\n });\n effect(() => {\n this.zoom();\n this.currentPage();\n this.numPages();\n this.showOutline();\n this.outline().length;\n this.emitter.notify();\n });\n effect(() => {\n const url = this.url();\n if (url) {\n untracked(() => {\n void this.loadPdf();\n });\n }\n });\n effect(() => {\n const val = this.numPages();\n if (val > 0) {\n untracked(() => {\n queueMicrotask(() => this.initPagePlaceholders());\n });\n }\n });\n effect(() => {\n this.zoom();\n if (!this.zoomWatchReady) {\n this.zoomWatchReady = true;\n return;\n }\n untracked(() => {\n this.pageStates.forEach((state, pageNumber) => {\n if (state.rendered) {\n this.clearPageCanvas(pageNumber);\n }\n });\n window.setTimeout(() => {\n if (this.observer && this.scrollContainerRef()?.nativeElement) {\n this.pageStates.forEach((state) => {\n this.observer?.unobserve(state.element);\n this.observer?.observe(state.element);\n });\n }\n }, 150);\n });\n });\n }\n trust(html) {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n onOutlineClick(e) {\n const target = e.target;\n const button = target.closest('[data-outline-key]');\n if (!button)\n return;\n const itemKey = button.getAttribute('data-outline-key');\n const destStr = button.getAttribute('data-outline-dest');\n if (!itemKey || !destStr)\n return;\n try {\n const dest = JSON.parse(destStr);\n void this.handleOutlineClick(dest, itemKey);\n }\n catch (err) {\n console.error('解析大纲目标失败:', err);\n }\n }\n async buildOutlinePageMap(items, pdfDocument, depth = 0) {\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const itemKey = `${item.title}-${i}-${depth}`;\n try {\n let pageNumber = null;\n const dest = item.dest;\n if (typeof dest === 'string') {\n const namedDest = await pdfDocument.getDestination?.(dest);\n if (Array.isArray(namedDest) && namedDest[0] && typeof namedDest[0] === 'object') {\n const idx = await pdfDocument.getPageIndex?.(namedDest[0]);\n if (idx != null)\n pageNumber = idx + 1;\n }\n }\n else if (Array.isArray(dest) && dest[0] && typeof dest[0] === 'object') {\n const idx = await pdfDocument.getPageIndex?.(dest[0]);\n if (idx != null)\n pageNumber = idx + 1;\n }\n if (pageNumber !== null && pageNumber > 0) {\n this.outlinePageMap.set(itemKey, pageNumber);\n }\n if (item.items && item.items.length > 0) {\n await this.buildOutlinePageMap(item.items, pdfDocument, depth + 1);\n }\n }\n catch {\n // 静默失败\n }\n }\n }\n updateActiveOutlineByPage(page) {\n let closestItem = null;\n let closestDistance = Infinity;\n this.outlinePageMap.forEach((itemPage, itemKey) => {\n if (itemPage <= page) {\n const distance = page - itemPage;\n if (distance < closestDistance) {\n closestDistance = distance;\n closestItem = itemKey;\n }\n }\n });\n if (closestItem !== this.activeOutlineItem()) {\n this.activeOutlineItem.set(closestItem);\n }\n }\n async handleOutlineClick(dest, itemKey) {\n if (!this.pdfDoc || !this.scrollContainerRef()?.nativeElement)\n return;\n try {\n let pageNumber;\n if (typeof dest === 'string') {\n const namedDest = await this.pdfDoc.getDestination?.(dest);\n if (Array.isArray(namedDest) && namedDest[0]) {\n const idx = await this.pdfDoc.getPageIndex?.(namedDest[0]);\n if (idx == null)\n return;\n pageNumber = idx + 1;\n }\n else {\n return;\n }\n }\n else if (Array.isArray(dest) && dest[0]) {\n const idx = await this.pdfDoc.getPageIndex?.(dest[0]);\n if (idx == null)\n return;\n pageNumber = idx + 1;\n }\n else {\n return;\n }\n this.activeOutlineItem.set(itemKey);\n const pages = this.scrollContainerRef().nativeElement.querySelectorAll('[data-page-number]');\n const targetPage = pages[pageNumber - 1];\n if (targetPage) {\n targetPage.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n window.setTimeout(() => {\n this.showOutline.set(false);\n }, 300);\n }\n catch (err) {\n console.error('大纲跳转失败:', err);\n }\n }\n renderOutlineItemsHtml(items, depth = 0) {\n return items.map((item, i) => {\n const itemKey = `${item.title}-${i}-${depth}`;\n const isActive = this.activeOutlineItem() === itemKey;\n const activeClass = isActive\n ? 'afp-bg-surface-2 afp-text-fg-primary afp-font-medium'\n : 'afp-text-fg-secondary hover:afp-text-fg-primary hover:afp-bg-surface-2';\n let html = `<li style=\"margin-left: ${depth > 0 ? 16 : 0}px;\">\n <button\n data-outline-key=\"${itemKey}\"\n data-outline-dest=\"${JSON.stringify(item.dest).replace(/\"/g, '"')}\"\n class=\"afp-w-full afp-text-left afp-py-2 afp-px-3 afp-text-sm afp-rounded afp-transition-all afp-truncate ${activeClass}\"\n title=\"${item.title}\"\n >\n ${item.title}\n </button>`;\n if (item.items && item.items.length > 0) {\n html += `<ul>${this.renderOutlineItemsHtml(item.items, depth + 1)}</ul>`;\n }\n html += '</li>';\n return html;\n }).join('');\n }\n async renderPage(pageNumber, scale) {\n if (!this.pdfDoc)\n return;\n const state = this.pageStates.get(pageNumber);\n if (!state || state.rendering)\n return;\n state.rendering = true;\n try {\n const page = await this.pdfDoc.getPage(pageNumber);\n const viewport = page.getViewport({ scale });\n const outputScale = typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\n // 页面盒子使用当前 PDF viewport 的真实尺寸;容器不足时再等比缩小。\n // Angular 模板中的 pdf-pages 是全宽容器,若不覆盖页面宽度,所有页面都会被撑成容器宽度。\n state.element.style.width = `${viewport.width}px`;\n state.element.style.maxWidth = '100%';\n state.element.style.aspectRatio = `${viewport.width} / ${viewport.height}`;\n state.element.style.minHeight = '0';\n const canvas = document.createElement('canvas');\n // Canvas 位图按 DPR 放大,避免 Retina 等高 DPI 屏幕把 1x 位图插值放大后发糊。\n canvas.width = Math.ceil(viewport.width * outputScale);\n canvas.height = Math.ceil(viewport.height * outputScale);\n // Canvas 填满与 PDF 同比例的页面盒子,高度由自身宽高比自动计算。\n canvas.style.width = '100%';\n canvas.style.maxWidth = '100%';\n canvas.style.height = 'auto';\n canvas.style.borderRadius = '0';\n canvas.style.display = 'block';\n const ctx = canvas.getContext('2d');\n if (!ctx)\n return;\n const renderTask = page.render({\n canvasContext: ctx,\n viewport,\n transform: outputScale === 1 ? undefined : [outputScale, 0, 0, outputScale, 0, 0],\n });\n state.renderTask = renderTask;\n await renderTask.promise;\n state.element.innerHTML = '';\n state.element.appendChild(canvas);\n state.rendered = true;\n }\n catch (err) {\n if (err?.name !== 'RenderingCancelledException') {\n console.error(`渲染页面 ${pageNumber} 失败:`, err);\n }\n }\n finally {\n state.rendering = false;\n state.renderTask = null;\n }\n }\n clearPageCanvas(pageNumber) {\n const state = this.pageStates.get(pageNumber);\n if (!state)\n return;\n if (state.renderTask) {\n state.renderTask.cancel();\n state.renderTask = null;\n }\n const canvas = state.element.querySelector('canvas');\n if (canvas) {\n const ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n }\n }\n state.element.innerHTML = '';\n state.rendered = false;\n state.rendering = false;\n }\n initPagePlaceholders() {\n if (!this.pdfDoc || !this.scrollContainerRef()?.nativeElement)\n return;\n const wrapper = this.scrollContainerRef().nativeElement.querySelector('.pdf-pages');\n if (!wrapper)\n return;\n wrapper.innerHTML = '';\n this.pageStates.clear();\n for (let i = 1; i <= this.numPages(); i++) {\n const pageDiv = document.createElement('div');\n pageDiv.className = 'afp-pdf-page-placeholder afp-relative afp-flex afp-justify-center';\n pageDiv.setAttribute('data-page-number', String(i));\n wrapper.appendChild(pageDiv);\n this.pageStates.set(i, {\n element: pageDiv,\n rendered: false,\n rendering: false,\n renderTask: null,\n });\n if (this.observer) {\n this.observer.observe(pageDiv);\n }\n }\n }\n async loadPdf() {\n this.error.set(null);\n this.loading.set(true);\n this.numPages.set(0);\n if (this.pdfDoc) {\n try {\n this.pdfDoc.destroy();\n }\n catch {\n // ignore\n }\n this.pdfDoc = null;\n }\n try {\n await preparePdfWorker();\n const loadingTask = pdfjsLib.getDocument({\n url: this.url(),\n ...getPdfDocumentOptions(),\n });\n this.pdfDoc = await loadingTask.promise;\n const total = this.pdfDoc.numPages;\n this.numPages.set(total);\n this.currentPage.set(1);\n try {\n const outlineData = await this.pdfDoc.getOutline();\n if (outlineData) {\n this.outline.set(outlineData);\n this.outlinePageMap.clear();\n await this.buildOutlinePageMap(outlineData, this.pdfDoc);\n this.updateActiveOutlineByPage(this.currentPage());\n }\n }\n catch (err) {\n console.warn('PDF 大纲提取失败:', err);\n }\n this.loading.set(false);\n }\n catch (err) {\n console.error('PDF 加载错误:', err);\n this.error.set(this.t('pdf.load_failed'));\n this.loading.set(false);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: PdfRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: PdfRenderer, isStandalone: true, selector: \"afp-pdf-renderer\", inputs: { url: { classPropertyName: \"url\", publicName: \"url\", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: \"afp-block afp-w-full afp-h-full\" }, viewQueries: [{ propertyName: \"scrollContainerRef\", first: true, predicate: [\"scrollContainerRef\"], descendants: true, isSignal: true }], ngImport: i0, template: `\n <div #containerRef class=\"afp-relative afp-w-full afp-h-full\">\n @if (outline().length > 0) {\n <div\n class=\"afp-absolute afp-inset-0 afp-z-20 afp-flex afp-transition-opacity afp-duration-300\"\n [style.opacity]=\"showOutline() ? 1 : 0\"\n [style.pointer-events]=\"showOutline() ? 'auto' : 'none'\"\n >\n <div\n class=\"afp-w-72 afp-max-w-[80%] afp-h-full afp-bg-surface-overlay afp-backdrop-blur-xl afp-border-r afp-border-line-weak afp-flex afp-flex-col afp-shadow-2xl afp-transition-transform afp-duration-300\"\n [style.transform]=\"showOutline() ? 'translateX(0)' : 'translateX(-100%)'\"\n >\n <div class=\"afp-flex afp-items-center afp-justify-between afp-px-4 afp-py-3 afp-border-b afp-border-line-weak afp-flex-shrink-0\">\n <span class=\"afp-text-fg-primary afp-font-medium afp-text-sm\">{{ t('toolbar.outline') }}</span>\n <button\n type=\"button\"\n class=\"afp-text-fg-tertiary hover:afp-text-fg-primary afp-transition-colors\"\n (click)=\"showOutline.set(false)\"\n >\n <i-lucide [img]=\"xIcon\" class=\"afp-w-4 afp-h-4\" />\n </button>\n </div>\n <div\n class=\"afp-flex-1 afp-overflow-y-auto afp-py-4 afp-px-1 outline-items\"\n [innerHTML]=\"trust(outlineHtml())\"\n (click)=\"onOutlineClick($event)\"\n ></div>\n </div>\n <div\n class=\"afp-flex-1 afp-transition-opacity afp-duration-300\"\n [style.background]=\"showOutline() ? 'rgba(0,0,0,0.3)' : 'transparent'\"\n (click)=\"showOutline.set(false)\"\n ></div>\n </div>\n }\n\n <div #scrollContainerRef class=\"afp-pdf-container afp-w-full afp-h-full afp-overflow-auto\">\n @if (error()) {\n <afp-renderer-error [message]=\"error()!\" />\n }\n\n @if (!error() && loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-min-h-screen\">\n <div\n class=\"afp-w-12 afp-h-12 afp-border-4 afp-border-line-strong afp-border-t-spinner-head afp-rounded-full afp-animate-spin\"\n ></div>\n </div>\n }\n\n @if (!error()) {\n <div class=\"afp-flex afp-flex-col afp-items-center afp-w-full\">\n <div class=\"pdf-pages afp-flex afp-flex-col afp-gap-4 afp-w-full afp-items-center\"></div>\n </div>\n }\n </div>\n </div>\n `, isInline: true, dependencies: [{ kind: \"component\", type: RendererError, selector: \"afp-renderer-error\", inputs: [\"message\", \"detail\", \"showIcon\"] }, { kind: \"ngmodule\", type: LucideAngularModule }, { kind: \"component\", type: i1.LucideAngularComponent, selector: \"lucide-angular, lucide-icon, i-lucide, span-lucide\", inputs: [\"class\", \"name\", \"img\", \"color\", \"absoluteStrokeWidth\", \"size\", \"strokeWidth\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: PdfRenderer, decorators: [{\n type: Component,\n args: [{\n selector: 'afp-pdf-renderer',\n standalone: true,\n imports: [RendererError, LucideAngularModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'afp-block afp-w-full afp-h-full' },\n template: `\n <div #containerRef class=\"afp-relative afp-w-full afp-h-full\">\n @if (outline().length > 0) {\n <div\n class=\"afp-absolute afp-inset-0 afp-z-20 afp-flex afp-transition-opacity afp-duration-300\"\n [style.opacity]=\"showOutline() ? 1 : 0\"\n [style.pointer-events]=\"showOutline() ? 'auto' : 'none'\"\n >\n <div\n class=\"afp-w-72 afp-max-w-[80%] afp-h-full afp-bg-surface-overlay afp-backdrop-blur-xl afp-border-r afp-border-line-weak afp-flex afp-flex-col afp-shadow-2xl afp-transition-transform afp-duration-300\"\n [style.transform]=\"showOutline() ? 'translateX(0)' : 'translateX(-100%)'\"\n >\n <div class=\"afp-flex afp-items-center afp-justify-between afp-px-4 afp-py-3 afp-border-b afp-border-line-weak afp-flex-shrink-0\">\n <span class=\"afp-text-fg-primary afp-font-medium afp-text-sm\">{{ t('toolbar.outline') }}</span>\n <button\n type=\"button\"\n class=\"afp-text-fg-tertiary hover:afp-text-fg-primary afp-transition-colors\"\n (click)=\"showOutline.set(false)\"\n >\n <i-lucide [img]=\"xIcon\" class=\"afp-w-4 afp-h-4\" />\n </button>\n </div>\n <div\n class=\"afp-flex-1 afp-overflow-y-auto afp-py-4 afp-px-1 outline-items\"\n [innerHTML]=\"trust(outlineHtml())\"\n (click)=\"onOutlineClick($event)\"\n ></div>\n </div>\n <div\n class=\"afp-flex-1 afp-transition-opacity afp-duration-300\"\n [style.background]=\"showOutline() ? 'rgba(0,0,0,0.3)' : 'transparent'\"\n (click)=\"showOutline.set(false)\"\n ></div>\n </div>\n }\n\n <div #scrollContainerRef class=\"afp-pdf-container afp-w-full afp-h-full afp-overflow-auto\">\n @if (error()) {\n <afp-renderer-error [message]=\"error()!\" />\n }\n\n @if (!error() && loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-min-h-screen\">\n <div\n class=\"afp-w-12 afp-h-12 afp-border-4 afp-border-line-strong afp-border-t-spinner-head afp-rounded-full afp-animate-spin\"\n ></div>\n </div>\n }\n\n @if (!error()) {\n <div class=\"afp-flex afp-flex-col afp-items-center afp-w-full\">\n <div class=\"pdf-pages afp-flex afp-flex-col afp-gap-4 afp-w-full afp-items-center\"></div>\n </div>\n }\n </div>\n </div>\n `,\n }]\n }], ctorParameters: () => [] });\n\nexport { PdfRenderer };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-B4L1kfY-.mjs.map\n"],"names":["installUint8ArrayHexBase64Polyfill","getPdfDocumentOptions","configurePdfWorker"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { input, inject, DestroyRef, signal, viewChild, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
3
|
import videojs from 'video.js';
|
|
4
4
|
import 'video.js/dist/video-js.css';
|
|
5
|
-
import { L as LocaleService, g as getFallbackTranslator, n as n0 } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-
|
|
5
|
+
import { L as LocaleService, g as getFallbackTranslator, n as n0 } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-RPRQhVCg.mjs';
|
|
6
6
|
import { R as RendererError } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-RendererError-DtNihCIX-DtNihCIX.mjs';
|
|
7
7
|
import { T as ToolbarEventEmitter } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-base.types-D5x7QPey-D5x7QPey.mjs';
|
|
8
8
|
|
|
@@ -59,7 +59,7 @@ class VideoRenderer {
|
|
|
59
59
|
return;
|
|
60
60
|
}
|
|
61
61
|
const videoElement = document.createElement('video-js');
|
|
62
|
-
videoElement.classList.add('vjs-big-play-centered', '
|
|
62
|
+
videoElement.classList.add('vjs-big-play-centered', 'rfp-video-player');
|
|
63
63
|
container.appendChild(videoElement);
|
|
64
64
|
const videoType = n0(this.url());
|
|
65
65
|
let sources;
|
|
@@ -84,11 +84,10 @@ class VideoRenderer {
|
|
|
84
84
|
'timeDivider',
|
|
85
85
|
'durationDisplay',
|
|
86
86
|
'progressControl',
|
|
87
|
-
'remainingTimeDisplay',
|
|
88
87
|
'fullscreenToggle',
|
|
89
88
|
],
|
|
90
89
|
volumePanel: {
|
|
91
|
-
inline:
|
|
90
|
+
inline: true,
|
|
92
91
|
},
|
|
93
92
|
},
|
|
94
93
|
html5: {
|
|
@@ -191,4 +190,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
191
190
|
}], ctorParameters: () => [] });
|
|
192
191
|
|
|
193
192
|
export { VideoRenderer };
|
|
194
|
-
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-
|
|
193
|
+
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B56pscOG-ClsvukS5.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B56pscOG-ClsvukS5.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-B56pscOG.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { input, inject, DestroyRef, signal, viewChild, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';\nimport videojs from 'video.js';\nimport 'video.js/dist/video-js.css';\nimport { L as LocaleService, g as getFallbackTranslator } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-Dnuf7kun.mjs';\nimport { R as RendererError } from './eternalheart-angular-file-preview-RendererError-DtNihCIX.mjs';\nimport { T as ToolbarEventEmitter } from './eternalheart-angular-file-preview-base.types-D5x7QPey.mjs';\nimport { getVideoMimeType } from '@eternalheart/file-preview-core';\n\nconst BROWSER_UNSUPPORTED_EXTS = new Set(['avi', 'wmv', 'flv']);\nclass VideoRenderer {\n constructor() {\n this.url = input.required();\n this.fileName = input(undefined);\n this.emitter = new ToolbarEventEmitter();\n this.locale = inject(LocaleService, { optional: true });\n this.destroyRef = inject(DestroyRef);\n this.t = this.locale?.t() ?? getFallbackTranslator();\n this.error = signal(null);\n this.isLoading = signal(true);\n this.videoContainerRef = viewChild('videoContainerRef');\n this.player = null;\n this.getToolbarGroups = () => [];\n this.onToolbarChange = (listener) => this.emitter.subscribe(listener);\n effect(() => {\n const el = this.videoContainerRef()?.nativeElement;\n if (el && !this.player) {\n untracked(() => this.initPlayer(el));\n }\n });\n effect(() => {\n const url = this.url();\n untracked(() => {\n if (this.player && !this.player.isDisposed()) {\n this.player.src({ src: url, type: getVideoMimeType(url) });\n }\n });\n });\n this.destroyRef.onDestroy(() => {\n if (this.player && !this.player.isDisposed()) {\n this.player.dispose();\n this.player = null;\n }\n });\n }\n getVideoExt(url, fileName) {\n const source = fileName || url;\n return source.split('.').pop()?.toLowerCase().split('?')[0] || '';\n }\n initPlayer(container) {\n if (this.player)\n return;\n const videoExt = this.getVideoExt(this.url(), this.fileName());\n if (BROWSER_UNSUPPORTED_EXTS.has(videoExt)) {\n this.error.set({\n title: this.t('video.unsupported_title'),\n detail: this.t('video.unsupported_detail', { format: videoExt.toUpperCase() }),\n });\n this.isLoading.set(false);\n return;\n }\n const videoElement = document.createElement('video-js');\n videoElement.classList.add('vjs-big-play-centered', 'rfp-video-player');\n container.appendChild(videoElement);\n const videoType = getVideoMimeType(this.url());\n let sources;\n if (videoType === 'video/quicktime') {\n sources = [\n { src: this.url(), type: 'video/quicktime' },\n { src: this.url(), type: 'video/mp4' },\n ];\n }\n else {\n sources = [{ src: this.url(), type: videoType }];\n }\n const player = videojs(videoElement, {\n controls: true,\n fill: true,\n preload: 'auto',\n controlBar: {\n children: [\n 'playToggle',\n 'volumePanel',\n 'currentTimeDisplay',\n 'timeDivider',\n 'durationDisplay',\n 'progressControl',\n 'fullscreenToggle',\n ],\n volumePanel: {\n inline: true,\n },\n },\n html5: {\n vhs: {\n overrideNative: true,\n },\n nativeVideoTracks: false,\n nativeAudioTracks: false,\n nativeTextTracks: false,\n },\n sources,\n });\n const videoEl = player.el().querySelector('video');\n if (videoEl) {\n videoEl.style.objectFit = 'contain';\n }\n player.on('loadeddata', () => {\n this.isLoading.set(false);\n });\n player.on('error', () => {\n const err = player.error();\n console.warn('[VideoRenderer] Video playback error:', err?.message || 'Unknown error');\n if (err?.code === 4) {\n this.error.set({\n title: this.t('video.unsupported_title'),\n detail: this.t('video.unsupported_detail', {\n format: videoExt ? videoExt.toUpperCase() : this.t('common.unknown_error'),\n }),\n });\n }\n else {\n this.error.set({\n title: this.t('video.load_failed'),\n detail: err?.message || this.t('common.unknown_error'),\n });\n }\n this.isLoading.set(false);\n });\n this.player = player;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: VideoRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: VideoRenderer, isStandalone: true, selector: \"afp-video-renderer\", inputs: { url: { classPropertyName: \"url\", publicName: \"url\", isSignal: true, isRequired: true, transformFunction: null }, fileName: { classPropertyName: \"fileName\", publicName: \"fileName\", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: \"afp-block afp-w-full afp-h-full\" }, viewQueries: [{ propertyName: \"videoContainerRef\", first: true, predicate: [\"videoContainerRef\"], descendants: true, isSignal: true }], ngImport: i0, template: `\n @if (error(); as err) {\n <afp-renderer-error [message]=\"err.title\" [detail]=\"err.detail\" />\n } @else {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full\">\n <div class=\"afp-w-full afp-h-full afp-relative\">\n @if (isLoading()) {\n <div class=\"afp-absolute afp-inset-0 afp-flex afp-items-center afp-justify-center afp-bg-surface-3 afp-backdrop-blur-sm afp-z-10\">\n <div class=\"afp-text-center\">\n <div class=\"afp-w-12 afp-h-12 afp-mx-auto afp-mb-3 afp-border-4 afp-border-line-strong afp-border-t-spinner-head afp-rounded-full afp-animate-spin\"></div>\n <p class=\"afp-text-sm afp-text-fg-secondary afp-font-medium\">{{ t('video.loading') }}</p>\n </div>\n </div>\n }\n\n <div\n #videoContainerRef\n class=\"afp-overflow-hidden afp-w-full afp-h-full\"\n style=\"box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 255, 255, 0.05)\"\n ></div>\n </div>\n </div>\n }\n `, isInline: true, dependencies: [{ kind: \"component\", type: RendererError, selector: \"afp-renderer-error\", inputs: [\"message\", \"detail\", \"showIcon\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: VideoRenderer, decorators: [{\n type: Component,\n args: [{\n selector: 'afp-video-renderer',\n standalone: true,\n imports: [RendererError],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'afp-block afp-w-full afp-h-full' },\n template: `\n @if (error(); as err) {\n <afp-renderer-error [message]=\"err.title\" [detail]=\"err.detail\" />\n } @else {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full\">\n <div class=\"afp-w-full afp-h-full afp-relative\">\n @if (isLoading()) {\n <div class=\"afp-absolute afp-inset-0 afp-flex afp-items-center afp-justify-center afp-bg-surface-3 afp-backdrop-blur-sm afp-z-10\">\n <div class=\"afp-text-center\">\n <div class=\"afp-w-12 afp-h-12 afp-mx-auto afp-mb-3 afp-border-4 afp-border-line-strong afp-border-t-spinner-head afp-rounded-full afp-animate-spin\"></div>\n <p class=\"afp-text-sm afp-text-fg-secondary afp-font-medium\">{{ t('video.loading') }}</p>\n </div>\n </div>\n }\n\n <div\n #videoContainerRef\n class=\"afp-overflow-hidden afp-w-full afp-h-full\"\n style=\"box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 255, 255, 0.05)\"\n ></div>\n </div>\n </div>\n }\n `,\n }]\n }], ctorParameters: () => [] });\n\nexport { VideoRenderer };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-B56pscOG.mjs.map\n"],"names":["getVideoMimeType"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { input, inject, signal, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
3
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
|
-
import { L as LocaleService, R as RequestService, g as getFallbackTranslator, S as Sg } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-
|
|
4
|
+
import { L as LocaleService, R as RequestService, g as getFallbackTranslator, S as Sg } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-RPRQhVCg.mjs';
|
|
5
5
|
import { R as RendererError } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-RendererError-DtNihCIX-DtNihCIX.mjs';
|
|
6
6
|
|
|
7
7
|
class PptRenderer {
|
|
@@ -91,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
91
91
|
}], ctorParameters: () => [] });
|
|
92
92
|
|
|
93
93
|
export { PptRenderer };
|
|
94
|
-
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-
|
|
94
|
+
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BNU3NWQp-C5U5krn9.mjs.map
|