@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-Cb1RLXeO-Bj9gjS1Z.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-Cb1RLXeO.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { input, inject, DestroyRef, signal, viewChild, computed, effect, untracked, afterNextRender, ChangeDetectionStrategy, Component } from '@angular/core';\nimport * as i1 from 'lucide-angular';\nimport { Loader2, ZoomOut, ZoomIn, Scan, Maximize2, RotateCcw, RotateCw, RefreshCw, 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';\nimport { T as ToolbarEventEmitter } from './eternalheart-angular-file-preview-base.types-D5x7QPey.mjs';\nimport { formatFileSize, detectImageFormat, getLoaderForMimeType, shouldUseWorker, decodeInWorker } from '@eternalheart/file-preview-core';\n\nclass ImageRenderer {\n constructor() {\n this.url = input.required();\n this.fileSize = input(undefined);\n this.file = input(undefined);\n this.emitter = new ToolbarEventEmitter();\n this.locale = inject(LocaleService, { optional: true });\n this.request = inject(RequestService, { optional: true });\n this.destroyRef = inject(DestroyRef);\n this.t = this.locale?.t() ?? getFallbackTranslator();\n this.loader2Icon = Loader2;\n this.Math = Math;\n this.zoom = signal(1);\n this.rotation = signal(0);\n this.loaded = signal(false);\n this.error = signal(null);\n this.decoding = signal(false);\n this.decodeProgress = signal(0);\n this.decodeError = signal(null);\n this.imageSrc = signal('');\n this.currentPage = signal(1);\n this.totalPages = signal(1);\n this.position = signal({ x: 0, y: 0 });\n this.isDragging = signal(false);\n this.naturalSize = signal({ width: 0, height: 0 });\n this.dragStart = { x: 0, y: 0 };\n this.blobUrl = null;\n this.fileBlobCache = null;\n this.loaderCache = null;\n this.pageCache = new Map();\n this.isTouchDevice = false;\n this.touchStartDistance = 0;\n this.touchStartZoom = 1;\n this.touchStartPos = { x: 0, y: 0 };\n this.lastTapTime = 0;\n this.listenersEl = null;\n this.containerRef = viewChild('containerRef');\n this.sizeText = computed(() => {\n const size = this.fileSize();\n if (size == null)\n return '';\n return ` · ${formatFileSize(size)}`;\n });\n this.transformCss = computed(() => `translate(${this.position().x}px, ${this.position().y}px) scale(${this.zoom()}) rotate(${this.rotation()}deg)`);\n this.getToolbarGroups = () => [\n {\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.01,\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() >= 10,\n },\n ],\n },\n {\n items: [\n {\n type: 'button',\n icon: Scan,\n tooltip: this.t('toolbar.fit_to_window'),\n action: () => this.handleFitToWidth(),\n },\n {\n type: 'button',\n icon: Maximize2,\n tooltip: this.t('toolbar.original_size'),\n action: () => this.handleOriginalSize(),\n },\n ],\n },\n {\n items: [\n {\n type: 'button',\n icon: RotateCcw,\n tooltip: this.t('toolbar.rotate_left'),\n action: () => this.handleRotateLeft(),\n },\n {\n type: 'button',\n icon: RotateCw,\n tooltip: this.t('toolbar.rotate_right'),\n action: () => this.handleRotateRight(),\n },\n ],\n },\n {\n items: [\n {\n type: 'button',\n icon: RefreshCw,\n tooltip: this.t('toolbar.reset'),\n action: () => this.handleReset(),\n },\n ],\n },\n ];\n this.onToolbarChange = (listener) => this.emitter.subscribe(listener);\n this.handleWheelNative = (e) => {\n e.preventDefault();\n e.stopPropagation();\n const container = this.containerRef()?.nativeElement;\n if (!container)\n return;\n const rect = container.getBoundingClientRect();\n const mouseX = e.clientX - rect.left - rect.width / 2;\n const mouseY = e.clientY - rect.top - rect.height / 2;\n const delta = e.deltaY > 0 ? -0.05 : 0.05;\n const prev = this.zoom();\n const newZoom = Math.max(0.01, Math.min(10, prev + delta));\n const scale = newZoom / prev;\n const pos = this.position();\n this.position.set(this.clampPosition({\n x: mouseX - scale * (mouseX - pos.x),\n y: mouseY - scale * (mouseY - pos.y),\n }, newZoom));\n this.zoom.set(newZoom);\n };\n this.handleTouchStart = (e) => {\n this.isTouchDevice = true;\n e.preventDefault();\n const touches = e.touches;\n if (touches.length === 1) {\n this.isDragging.set(true);\n const pos = this.position();\n this.dragStart = {\n x: touches[0].clientX - pos.x,\n y: touches[0].clientY - pos.y,\n };\n const now = Date.now();\n if (now - this.lastTapTime < 300) {\n this.position.set({ x: 0, y: 0 });\n this.zoom.set(1);\n }\n this.lastTapTime = now;\n }\n else if (touches.length === 2) {\n this.isDragging.set(false);\n const distance = Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n this.touchStartDistance = distance;\n this.touchStartZoom = this.zoom();\n this.touchStartPos = { ...this.position() };\n }\n };\n this.handleTouchMove = (e) => {\n e.preventDefault();\n const touches = e.touches;\n if (touches.length === 1 && this.isDragging()) {\n this.position.set(this.clampPosition({\n x: touches[0].clientX - this.dragStart.x,\n y: touches[0].clientY - this.dragStart.y,\n }, this.zoom()));\n }\n else if (touches.length === 2) {\n const container = this.containerRef()?.nativeElement;\n if (!container)\n return;\n const distance = Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n if (Math.abs(distance - this.touchStartDistance) < 5)\n return;\n const scale = distance / this.touchStartDistance;\n const newZoom = Math.max(0.01, Math.min(10, this.touchStartZoom * scale));\n const rect = container.getBoundingClientRect();\n const centerX = (touches[0].clientX + touches[1].clientX) / 2 - rect.left - rect.width / 2;\n const centerY = (touches[0].clientY + touches[1].clientY) / 2 - rect.top - rect.height / 2;\n const zoomScale = newZoom / this.zoom();\n this.position.set(this.clampPosition({\n x: centerX - zoomScale * (centerX - this.touchStartPos.x),\n y: centerY - zoomScale * (centerY - this.touchStartPos.y),\n }, newZoom));\n this.zoom.set(newZoom);\n }\n };\n this.handleTouchEnd = () => {\n this.isDragging.set(false);\n this.touchStartDistance = 0;\n };\n effect(() => {\n this.url();\n this.file();\n untracked(() => {\n void this.load();\n });\n });\n effect(() => {\n this.zoom();\n this.rotation();\n this.emitter.notify();\n });\n afterNextRender(() => this.attachListeners());\n this.destroyRef.onDestroy(() => this.cleanup());\n }\n handleZoomIn() {\n this.zoom.set(Math.min(this.zoom() + 0.1, 10));\n }\n handleZoomOut() {\n this.zoom.set(Math.max(this.zoom() - 0.1, 0.01));\n }\n handleRotateRight() {\n this.rotation.set((this.rotation() + 90) % 360);\n }\n handleRotateLeft() {\n this.rotation.set((this.rotation() - 90 + 360) % 360);\n }\n handleOriginalSize() {\n this.zoom.set(1);\n this.rotation.set(0);\n this.position.set({ x: 0, y: 0 });\n }\n handleReset() {\n this.handleFitToWidth();\n }\n handleFitToWidth() {\n const container = this.containerRef()?.nativeElement;\n const size = this.naturalSize();\n if (container && size.width > 0 && size.height > 0) {\n const scaleX = container.clientWidth / size.width;\n const scaleY = container.clientHeight / size.height;\n this.zoom.set(Math.max(0.01, Math.min(10, Math.min(scaleX, scaleY))));\n this.position.set({ x: 0, y: 0 });\n }\n }\n revokeBlobs() {\n if (this.blobUrl) {\n URL.revokeObjectURL(this.blobUrl);\n this.blobUrl = null;\n }\n this.pageCache.forEach((url) => URL.revokeObjectURL(url));\n this.pageCache.clear();\n this.fileBlobCache = null;\n this.loaderCache = null;\n }\n async load() {\n this.imageSrc.set('');\n this.loaded.set(false);\n this.error.set(null);\n this.decoding.set(false);\n this.decodeError.set(null);\n this.decodeProgress.set(0);\n this.position.set({ x: 0, y: 0 });\n this.zoom.set(1);\n this.currentPage.set(1);\n this.totalPages.set(1);\n this.revokeBlobs();\n const file = this.file();\n if (!file) {\n this.imageSrc.set(this.url());\n return;\n }\n try {\n const mimeType = await detectImageFormat(file);\n const loader = await getLoaderForMimeType(mimeType);\n if (!loader || !(await loader.needsDecode(mimeType))) {\n this.imageSrc.set(this.url());\n return;\n }\n this.decoding.set(true);\n let fileBlob;\n if (file instanceof Blob) {\n fileBlob = file;\n }\n else if (file.file instanceof Blob) {\n fileBlob = file.file;\n }\n else {\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('Failed to fetch file');\n fileBlob = await response.blob();\n }\n this.fileBlobCache = fileBlob;\n this.loaderCache = loader;\n if (loader.getMetadata) {\n try {\n const metadata = await loader.getMetadata(fileBlob);\n if (metadata.pageCount && metadata.pageCount > 1) {\n this.totalPages.set(metadata.pageCount);\n }\n }\n catch {\n // 忽略元数据获取失败\n }\n }\n const decodeOptions = {\n page: 1,\n fullQuality: false,\n onProgress: (percent) => {\n this.decodeProgress.set(percent);\n },\n };\n let decodedBlob;\n if (shouldUseWorker(mimeType)) {\n try {\n decodedBlob = await decodeInWorker(mimeType, await fileBlob.arrayBuffer(), { page: 1, fullQuality: false });\n }\n catch {\n decodedBlob = await loader.decode(fileBlob, decodeOptions);\n }\n }\n else {\n decodedBlob = await loader.decode(fileBlob, decodeOptions);\n }\n const url = typeof decodedBlob === 'string'\n ? decodedBlob\n : URL.createObjectURL(decodedBlob);\n this.blobUrl = url;\n this.pageCache.set(1, url);\n this.imageSrc.set(url);\n this.decoding.set(false);\n }\n catch (err) {\n const message = err instanceof Error ? err.message : this.t('image.decode_failed');\n this.decodeError.set(message || this.t('image.decode_failed'));\n this.decoding.set(false);\n }\n }\n async handlePageChange(page) {\n if (!this.fileBlobCache || !this.loaderCache)\n return;\n if (page < 1 || page > this.totalPages())\n return;\n const cached = this.pageCache.get(page);\n if (cached) {\n this.currentPage.set(page);\n this.imageSrc.set(cached);\n return;\n }\n this.decoding.set(true);\n try {\n const decodedBlob = await this.loaderCache.decode(this.fileBlobCache, { page });\n const url = typeof decodedBlob === 'string'\n ? decodedBlob\n : URL.createObjectURL(decodedBlob);\n if (this.pageCache.size >= 10) {\n const firstKey = this.pageCache.keys().next().value;\n if (firstKey !== undefined) {\n const oldUrl = this.pageCache.get(firstKey);\n if (oldUrl)\n URL.revokeObjectURL(oldUrl);\n this.pageCache.delete(firstKey);\n }\n }\n this.pageCache.set(page, url);\n this.currentPage.set(page);\n this.imageSrc.set(url);\n this.decoding.set(false);\n }\n catch (err) {\n const message = err instanceof Error ? err.message : this.t('image.decode_failed');\n this.decodeError.set(message || this.t('image.decode_failed'));\n this.decoding.set(false);\n }\n }\n clampPosition(pos, currentZoom) {\n const container = this.containerRef()?.nativeElement;\n const size = this.naturalSize();\n if (!container || size.width === 0)\n return pos;\n const containerW = container.clientWidth;\n const containerH = container.clientHeight;\n const imgW = size.width * currentZoom;\n const imgH = size.height * currentZoom;\n const margin = Math.min(80, containerW * 0.15, containerH * 0.15);\n const rangeX = (containerW + imgW) / 2 - margin;\n const rangeY = (containerH + imgH) / 2 - margin;\n return {\n x: rangeX > 0 ? Math.max(-rangeX, Math.min(rangeX, pos.x)) : 0,\n y: rangeY > 0 ? Math.max(-rangeY, Math.min(rangeY, pos.y)) : 0,\n };\n }\n handleLoad(e) {\n this.loaded.set(true);\n const img = e.currentTarget;\n this.naturalSize.set({ width: img.naturalWidth, height: img.naturalHeight });\n const container = this.containerRef()?.nativeElement;\n const size = this.naturalSize();\n if (container && size.width > 0 && size.height > 0) {\n const scaleX = container.clientWidth / size.width;\n const scaleY = container.clientHeight / size.height;\n const newZoom = Math.min(scaleX, scaleY);\n this.zoom.set(Math.max(0.01, Math.min(10, newZoom)));\n this.position.set({ x: 0, y: 0 });\n }\n }\n handleError() {\n this.error.set(this.t('image.load_failed'));\n this.loaded.set(true);\n }\n handleDoubleClick() {\n this.position.set({ x: 0, y: 0 });\n this.zoom.set(1);\n }\n handleMouseDown(e) {\n if (this.isTouchDevice)\n return;\n if (e.button !== 0)\n return;\n this.isDragging.set(true);\n const pos = this.position();\n this.dragStart = {\n x: e.clientX - pos.x,\n y: e.clientY - pos.y,\n };\n }\n handleMouseMove(e) {\n if (this.isTouchDevice)\n return;\n if (!this.isDragging())\n return;\n this.position.set(this.clampPosition({\n x: e.clientX - this.dragStart.x,\n y: e.clientY - this.dragStart.y,\n }, this.zoom()));\n }\n handleMouseUp() {\n if (this.isTouchDevice)\n return;\n this.isDragging.set(false);\n }\n attachListeners() {\n const container = this.containerRef()?.nativeElement;\n if (!container)\n return;\n this.listenersEl = container;\n container.addEventListener('wheel', this.handleWheelNative, { passive: false });\n container.addEventListener('touchstart', this.handleTouchStart, { passive: false });\n container.addEventListener('touchmove', this.handleTouchMove, { passive: false });\n container.addEventListener('touchend', this.handleTouchEnd);\n container.addEventListener('touchcancel', this.handleTouchEnd);\n }\n detachListeners() {\n const container = this.listenersEl;\n if (!container)\n return;\n container.removeEventListener('wheel', this.handleWheelNative);\n container.removeEventListener('touchstart', this.handleTouchStart);\n container.removeEventListener('touchmove', this.handleTouchMove);\n container.removeEventListener('touchend', this.handleTouchEnd);\n container.removeEventListener('touchcancel', this.handleTouchEnd);\n this.listenersEl = null;\n }\n cleanup() {\n this.revokeBlobs();\n this.detachListeners();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: ImageRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: ImageRenderer, isStandalone: true, selector: \"afp-image-renderer\", inputs: { url: { classPropertyName: \"url\", publicName: \"url\", isSignal: true, isRequired: true, transformFunction: null }, fileSize: { classPropertyName: \"fileSize\", publicName: \"fileSize\", isSignal: true, isRequired: false, transformFunction: null }, file: { classPropertyName: \"file\", publicName: \"file\", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: \"afp-block afp-w-full afp-h-full\" }, viewQueries: [{ propertyName: \"containerRef\", first: true, predicate: [\"containerRef\"], descendants: true, isSignal: true }], ngImport: i0, template: `\n <div\n #containerRef\n class=\"afp-relative afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full afp-overflow-hidden\"\n [style.cursor]=\"isDragging() ? 'grabbing' : 'grab'\"\n [style.touch-action]=\"'none'\"\n (mousedown)=\"handleMouseDown($event)\"\n (mousemove)=\"handleMouseMove($event)\"\n (mouseup)=\"handleMouseUp()\"\n (mouseleave)=\"handleMouseUp()\"\n >\n @if (decoding()) {\n <div class=\"afp-absolute afp-inset-0 afp-flex afp-flex-col afp-items-center afp-justify-center afp-bg-surface-1/80 afp-z-10\">\n <i-lucide [img]=\"loader2Icon\" class=\"afp-w-12 afp-h-12 afp-text-fg-primary afp-animate-spin\" />\n <p class=\"afp-mt-4 afp-text-fg-secondary\">\n {{ t('common.loading') }}\n @if (decodeProgress() > 0) {\n <span>{{ Math.round(decodeProgress()) }}%</span>\n }\n </p>\n </div>\n }\n\n @if (decodeError(); as detail) {\n <afp-renderer-error [message]=\"t('image.decode_failed')\" [detail]=\"detail\" />\n }\n\n @if (!loaded() && !error() && !decoding() && !decodeError()) {\n <div class=\"afp-flex afp-items-center afp-justify-center\">\n <div 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\"></div>\n </div>\n }\n\n @if (error(); as err) {\n <afp-renderer-error [message]=\"err\" />\n }\n\n @if (imageSrc()) {\n <img\n #imgRef\n [src]=\"imageSrc()\"\n alt=\"\"\n class=\"afp-max-w-none afp-select-none\"\n [class.afp-hidden]=\"!loaded() || !!error() || !!decodeError()\"\n [style.transform]=\"transformCss()\"\n [style.transform-origin]=\"'center'\"\n [style.transition]=\"isDragging() ? 'none' : 'transform 0.3s ease-out'\"\n [style.opacity]=\"loaded() && !error() && !decodeError() ? 1 : 0\"\n [draggable]=\"false\"\n (load)=\"handleLoad($event)\"\n (error)=\"handleError()\"\n (dblclick)=\"handleDoubleClick()\"\n />\n }\n\n @if (loaded() && !error() && naturalSize().width > 0) {\n <div class=\"afp-absolute afp-bottom-2 afp-right-3 afp-text-[10px] afp-text-fg-disabled hover:afp-text-fg-secondary afp-transition-colors afp-pointer-events-auto afp-select-none afp-cursor-default\">\n {{ naturalSize().width }} × {{ naturalSize().height }}{{ sizeText() }}\n </div>\n }\n\n @if (totalPages() > 1) {\n <div class=\"afp-absolute afp-bottom-2 afp-left-1/2 -afp-translate-x-1/2 afp-flex afp-items-center afp-gap-2 afp-px-3 afp-py-1.5 afp-bg-surface-toolbar afp-border afp-border-line afp-rounded-lg afp-text-sm afp-text-fg-primary afp-shadow-md\">\n <button\n type=\"button\"\n [disabled]=\"currentPage() <= 1 || decoding()\"\n class=\"afp-px-2 afp-py-0.5 afp-rounded hover:afp-bg-surface-nav-hover disabled:afp-opacity-40 disabled:afp-cursor-not-allowed\"\n (click)=\"handlePageChange(currentPage() - 1)\"\n >\n {{ t('toolbar.prev_page') }}\n </button>\n <span class=\"afp-text-fg-secondary afp-tabular-nums\">\n {{ currentPage() }} / {{ totalPages() }}\n </span>\n <button\n type=\"button\"\n [disabled]=\"currentPage() >= totalPages() || decoding()\"\n class=\"afp-px-2 afp-py-0.5 afp-rounded hover:afp-bg-surface-nav-hover disabled:afp-opacity-40 disabled:afp-cursor-not-allowed\"\n (click)=\"handlePageChange(currentPage() + 1)\"\n >\n {{ t('toolbar.next_page') }}\n </button>\n </div>\n }\n </div>\n `, isInline: true, dependencies: [{ 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\"] }, { 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: ImageRenderer, decorators: [{\n type: Component,\n args: [{\n selector: 'afp-image-renderer',\n standalone: true,\n imports: [LucideAngularModule, RendererError],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'afp-block afp-w-full afp-h-full' },\n template: `\n <div\n #containerRef\n class=\"afp-relative afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full afp-overflow-hidden\"\n [style.cursor]=\"isDragging() ? 'grabbing' : 'grab'\"\n [style.touch-action]=\"'none'\"\n (mousedown)=\"handleMouseDown($event)\"\n (mousemove)=\"handleMouseMove($event)\"\n (mouseup)=\"handleMouseUp()\"\n (mouseleave)=\"handleMouseUp()\"\n >\n @if (decoding()) {\n <div class=\"afp-absolute afp-inset-0 afp-flex afp-flex-col afp-items-center afp-justify-center afp-bg-surface-1/80 afp-z-10\">\n <i-lucide [img]=\"loader2Icon\" class=\"afp-w-12 afp-h-12 afp-text-fg-primary afp-animate-spin\" />\n <p class=\"afp-mt-4 afp-text-fg-secondary\">\n {{ t('common.loading') }}\n @if (decodeProgress() > 0) {\n <span>{{ Math.round(decodeProgress()) }}%</span>\n }\n </p>\n </div>\n }\n\n @if (decodeError(); as detail) {\n <afp-renderer-error [message]=\"t('image.decode_failed')\" [detail]=\"detail\" />\n }\n\n @if (!loaded() && !error() && !decoding() && !decodeError()) {\n <div class=\"afp-flex afp-items-center afp-justify-center\">\n <div 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\"></div>\n </div>\n }\n\n @if (error(); as err) {\n <afp-renderer-error [message]=\"err\" />\n }\n\n @if (imageSrc()) {\n <img\n #imgRef\n [src]=\"imageSrc()\"\n alt=\"\"\n class=\"afp-max-w-none afp-select-none\"\n [class.afp-hidden]=\"!loaded() || !!error() || !!decodeError()\"\n [style.transform]=\"transformCss()\"\n [style.transform-origin]=\"'center'\"\n [style.transition]=\"isDragging() ? 'none' : 'transform 0.3s ease-out'\"\n [style.opacity]=\"loaded() && !error() && !decodeError() ? 1 : 0\"\n [draggable]=\"false\"\n (load)=\"handleLoad($event)\"\n (error)=\"handleError()\"\n (dblclick)=\"handleDoubleClick()\"\n />\n }\n\n @if (loaded() && !error() && naturalSize().width > 0) {\n <div class=\"afp-absolute afp-bottom-2 afp-right-3 afp-text-[10px] afp-text-fg-disabled hover:afp-text-fg-secondary afp-transition-colors afp-pointer-events-auto afp-select-none afp-cursor-default\">\n {{ naturalSize().width }} × {{ naturalSize().height }}{{ sizeText() }}\n </div>\n }\n\n @if (totalPages() > 1) {\n <div class=\"afp-absolute afp-bottom-2 afp-left-1/2 -afp-translate-x-1/2 afp-flex afp-items-center afp-gap-2 afp-px-3 afp-py-1.5 afp-bg-surface-toolbar afp-border afp-border-line afp-rounded-lg afp-text-sm afp-text-fg-primary afp-shadow-md\">\n <button\n type=\"button\"\n [disabled]=\"currentPage() <= 1 || decoding()\"\n class=\"afp-px-2 afp-py-0.5 afp-rounded hover:afp-bg-surface-nav-hover disabled:afp-opacity-40 disabled:afp-cursor-not-allowed\"\n (click)=\"handlePageChange(currentPage() - 1)\"\n >\n {{ t('toolbar.prev_page') }}\n </button>\n <span class=\"afp-text-fg-secondary afp-tabular-nums\">\n {{ currentPage() }} / {{ totalPages() }}\n </span>\n <button\n type=\"button\"\n [disabled]=\"currentPage() >= totalPages() || decoding()\"\n class=\"afp-px-2 afp-py-0.5 afp-rounded hover:afp-bg-surface-nav-hover disabled:afp-opacity-40 disabled:afp-cursor-not-allowed\"\n (click)=\"handlePageChange(currentPage() + 1)\"\n >\n {{ t('toolbar.next_page') }}\n </button>\n </div>\n }\n </div>\n `,\n }]\n }], ctorParameters: () => [] });\n\nexport { ImageRenderer };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-Cb1RLXeO.mjs.map\n"],"names":["formatFileSize","detectImageFormat","getLoaderForMimeType","shouldUseWorker","decodeInWorker"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CMeATokn-iD-SSbnK.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-CMeATokn.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { input, inject, DestroyRef, signal, viewChild, computed, effect, untracked, afterNextRender, ChangeDetectionStrategy, Component } from '@angular/core';\nimport * as i1 from 'lucide-angular';\nimport { Loader2, ZoomOut, ZoomIn, Scan, Maximize2, RotateCcw, RotateCw, RefreshCw, 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';\nimport { T as ToolbarEventEmitter } from './eternalheart-angular-file-preview-base.types-D5x7QPey.mjs';\nimport { formatFileSize, detectImageFormat, getLoaderForMimeType, shouldUseWorker, decodeInWorker } from '@eternalheart/file-preview-core';\n\nclass ImageRenderer {\n constructor() {\n this.url = input.required();\n this.fileSize = input(undefined);\n this.file = input(undefined);\n this.emitter = new ToolbarEventEmitter();\n this.locale = inject(LocaleService, { optional: true });\n this.request = inject(RequestService, { optional: true });\n this.destroyRef = inject(DestroyRef);\n this.t = this.locale?.t() ?? getFallbackTranslator();\n this.loader2Icon = Loader2;\n this.Math = Math;\n this.zoom = signal(1);\n this.rotation = signal(0);\n this.loaded = signal(false);\n this.error = signal(null);\n this.decoding = signal(false);\n this.decodeProgress = signal(0);\n this.decodeError = signal(null);\n this.imageSrc = signal('');\n this.currentPage = signal(1);\n this.totalPages = signal(1);\n this.position = signal({ x: 0, y: 0 });\n this.isDragging = signal(false);\n this.naturalSize = signal({ width: 0, height: 0 });\n this.dragStart = { x: 0, y: 0 };\n this.blobUrl = null;\n this.fileBlobCache = null;\n this.loaderCache = null;\n this.pageCache = new Map();\n this.isTouchDevice = false;\n this.touchStartDistance = 0;\n this.touchStartZoom = 1;\n this.touchStartPos = { x: 0, y: 0 };\n this.lastTapTime = 0;\n this.listenersEl = null;\n this.containerRef = viewChild('containerRef');\n this.sizeText = computed(() => {\n const size = this.fileSize();\n if (size == null)\n return '';\n return ` · ${formatFileSize(size)}`;\n });\n this.transformCss = computed(() => `translate(${this.position().x}px, ${this.position().y}px) scale(${this.zoom()}) rotate(${this.rotation()}deg)`);\n this.getToolbarGroups = () => [\n {\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.01,\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() >= 10,\n },\n ],\n },\n {\n items: [\n {\n type: 'button',\n icon: Scan,\n tooltip: this.t('toolbar.fit_to_window'),\n action: () => this.handleFitToWidth(),\n },\n {\n type: 'button',\n icon: Maximize2,\n tooltip: this.t('toolbar.original_size'),\n action: () => this.handleOriginalSize(),\n },\n ],\n },\n {\n items: [\n {\n type: 'button',\n icon: RotateCcw,\n tooltip: this.t('toolbar.rotate_left'),\n action: () => this.handleRotateLeft(),\n },\n {\n type: 'button',\n icon: RotateCw,\n tooltip: this.t('toolbar.rotate_right'),\n action: () => this.handleRotateRight(),\n },\n ],\n },\n {\n items: [\n {\n type: 'button',\n icon: RefreshCw,\n tooltip: this.t('toolbar.reset'),\n action: () => this.handleReset(),\n },\n ],\n },\n ];\n this.onToolbarChange = (listener) => this.emitter.subscribe(listener);\n this.handleWheelNative = (e) => {\n e.preventDefault();\n e.stopPropagation();\n const container = this.containerRef()?.nativeElement;\n if (!container)\n return;\n const rect = container.getBoundingClientRect();\n const mouseX = e.clientX - rect.left - rect.width / 2;\n const mouseY = e.clientY - rect.top - rect.height / 2;\n const delta = e.deltaY > 0 ? -0.05 : 0.05;\n const prev = this.zoom();\n const newZoom = Math.max(0.01, Math.min(10, prev + delta));\n const scale = newZoom / prev;\n const pos = this.position();\n this.position.set(this.clampPosition({\n x: mouseX - scale * (mouseX - pos.x),\n y: mouseY - scale * (mouseY - pos.y),\n }, newZoom));\n this.zoom.set(newZoom);\n };\n this.handleTouchStart = (e) => {\n this.isTouchDevice = true;\n e.preventDefault();\n const touches = e.touches;\n if (touches.length === 1) {\n this.isDragging.set(true);\n const pos = this.position();\n this.dragStart = {\n x: touches[0].clientX - pos.x,\n y: touches[0].clientY - pos.y,\n };\n const now = Date.now();\n if (now - this.lastTapTime < 300) {\n this.position.set({ x: 0, y: 0 });\n this.zoom.set(1);\n }\n this.lastTapTime = now;\n }\n else if (touches.length === 2) {\n this.isDragging.set(false);\n const distance = Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n this.touchStartDistance = distance;\n this.touchStartZoom = this.zoom();\n this.touchStartPos = { ...this.position() };\n }\n };\n this.handleTouchMove = (e) => {\n e.preventDefault();\n const touches = e.touches;\n if (touches.length === 1 && this.isDragging()) {\n this.position.set(this.clampPosition({\n x: touches[0].clientX - this.dragStart.x,\n y: touches[0].clientY - this.dragStart.y,\n }, this.zoom()));\n }\n else if (touches.length === 2) {\n const container = this.containerRef()?.nativeElement;\n if (!container)\n return;\n const distance = Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n if (Math.abs(distance - this.touchStartDistance) < 5)\n return;\n const scale = distance / this.touchStartDistance;\n const newZoom = Math.max(0.01, Math.min(10, this.touchStartZoom * scale));\n const rect = container.getBoundingClientRect();\n const centerX = (touches[0].clientX + touches[1].clientX) / 2 - rect.left - rect.width / 2;\n const centerY = (touches[0].clientY + touches[1].clientY) / 2 - rect.top - rect.height / 2;\n const zoomScale = newZoom / this.zoom();\n this.position.set(this.clampPosition({\n x: centerX - zoomScale * (centerX - this.touchStartPos.x),\n y: centerY - zoomScale * (centerY - this.touchStartPos.y),\n }, newZoom));\n this.zoom.set(newZoom);\n }\n };\n this.handleTouchEnd = () => {\n this.isDragging.set(false);\n this.touchStartDistance = 0;\n };\n effect(() => {\n this.url();\n this.file();\n untracked(() => {\n void this.load();\n });\n });\n effect(() => {\n this.zoom();\n this.rotation();\n this.emitter.notify();\n });\n afterNextRender(() => this.attachListeners());\n this.destroyRef.onDestroy(() => this.cleanup());\n }\n handleZoomIn() {\n this.zoom.set(Math.min(this.zoom() + 0.1, 10));\n }\n handleZoomOut() {\n this.zoom.set(Math.max(this.zoom() - 0.1, 0.01));\n }\n handleRotateRight() {\n this.rotation.set((this.rotation() + 90) % 360);\n }\n handleRotateLeft() {\n this.rotation.set((this.rotation() - 90 + 360) % 360);\n }\n handleOriginalSize() {\n this.zoom.set(1);\n this.rotation.set(0);\n this.position.set({ x: 0, y: 0 });\n }\n handleReset() {\n this.handleFitToWidth();\n }\n handleFitToWidth() {\n const container = this.containerRef()?.nativeElement;\n const size = this.naturalSize();\n if (container && size.width > 0 && size.height > 0) {\n const scaleX = container.clientWidth / size.width;\n const scaleY = container.clientHeight / size.height;\n this.zoom.set(Math.max(0.01, Math.min(10, Math.min(scaleX, scaleY))));\n this.position.set({ x: 0, y: 0 });\n }\n }\n revokeBlobs() {\n if (this.blobUrl) {\n URL.revokeObjectURL(this.blobUrl);\n this.blobUrl = null;\n }\n this.pageCache.forEach((url) => URL.revokeObjectURL(url));\n this.pageCache.clear();\n this.fileBlobCache = null;\n this.loaderCache = null;\n }\n async load() {\n this.imageSrc.set('');\n this.loaded.set(false);\n this.error.set(null);\n this.decoding.set(false);\n this.decodeError.set(null);\n this.decodeProgress.set(0);\n this.position.set({ x: 0, y: 0 });\n this.zoom.set(1);\n this.currentPage.set(1);\n this.totalPages.set(1);\n this.revokeBlobs();\n const file = this.file();\n if (!file) {\n this.imageSrc.set(this.url());\n return;\n }\n try {\n const mimeType = await detectImageFormat(file);\n const loader = await getLoaderForMimeType(mimeType);\n if (!loader || !(await loader.needsDecode(mimeType))) {\n this.imageSrc.set(this.url());\n return;\n }\n this.decoding.set(true);\n let fileBlob;\n if (file instanceof Blob) {\n fileBlob = file;\n }\n else if (file.file instanceof Blob) {\n fileBlob = file.file;\n }\n else {\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('Failed to fetch file');\n fileBlob = await response.blob();\n }\n this.fileBlobCache = fileBlob;\n this.loaderCache = loader;\n if (loader.getMetadata) {\n try {\n const metadata = await loader.getMetadata(fileBlob);\n if (metadata.pageCount && metadata.pageCount > 1) {\n this.totalPages.set(metadata.pageCount);\n }\n }\n catch {\n // 忽略元数据获取失败\n }\n }\n const decodeOptions = {\n page: 1,\n fullQuality: false,\n onProgress: (percent) => {\n this.decodeProgress.set(percent);\n },\n };\n let decodedBlob;\n if (shouldUseWorker(mimeType)) {\n try {\n decodedBlob = await decodeInWorker(mimeType, await fileBlob.arrayBuffer(), { page: 1, fullQuality: false });\n }\n catch {\n decodedBlob = await loader.decode(fileBlob, decodeOptions);\n }\n }\n else {\n decodedBlob = await loader.decode(fileBlob, decodeOptions);\n }\n const url = typeof decodedBlob === 'string'\n ? decodedBlob\n : URL.createObjectURL(decodedBlob);\n this.blobUrl = url;\n this.pageCache.set(1, url);\n this.imageSrc.set(url);\n this.decoding.set(false);\n }\n catch (err) {\n const message = err instanceof Error ? err.message : this.t('image.decode_failed');\n this.decodeError.set(message || this.t('image.decode_failed'));\n this.decoding.set(false);\n }\n }\n async handlePageChange(page) {\n if (!this.fileBlobCache || !this.loaderCache)\n return;\n if (page < 1 || page > this.totalPages())\n return;\n const cached = this.pageCache.get(page);\n if (cached) {\n this.currentPage.set(page);\n this.imageSrc.set(cached);\n return;\n }\n this.decoding.set(true);\n try {\n const decodedBlob = await this.loaderCache.decode(this.fileBlobCache, { page });\n const url = typeof decodedBlob === 'string'\n ? decodedBlob\n : URL.createObjectURL(decodedBlob);\n if (this.pageCache.size >= 10) {\n const firstKey = this.pageCache.keys().next().value;\n if (firstKey !== undefined) {\n const oldUrl = this.pageCache.get(firstKey);\n if (oldUrl)\n URL.revokeObjectURL(oldUrl);\n this.pageCache.delete(firstKey);\n }\n }\n this.pageCache.set(page, url);\n this.currentPage.set(page);\n this.imageSrc.set(url);\n this.decoding.set(false);\n }\n catch (err) {\n const message = err instanceof Error ? err.message : this.t('image.decode_failed');\n this.decodeError.set(message || this.t('image.decode_failed'));\n this.decoding.set(false);\n }\n }\n clampPosition(pos, currentZoom) {\n const container = this.containerRef()?.nativeElement;\n const size = this.naturalSize();\n if (!container || size.width === 0)\n return pos;\n const containerW = container.clientWidth;\n const containerH = container.clientHeight;\n const imgW = size.width * currentZoom;\n const imgH = size.height * currentZoom;\n const margin = Math.min(80, containerW * 0.15, containerH * 0.15);\n const rangeX = (containerW + imgW) / 2 - margin;\n const rangeY = (containerH + imgH) / 2 - margin;\n return {\n x: rangeX > 0 ? Math.max(-rangeX, Math.min(rangeX, pos.x)) : 0,\n y: rangeY > 0 ? Math.max(-rangeY, Math.min(rangeY, pos.y)) : 0,\n };\n }\n handleLoad(e) {\n this.loaded.set(true);\n const img = e.currentTarget;\n this.naturalSize.set({ width: img.naturalWidth, height: img.naturalHeight });\n const container = this.containerRef()?.nativeElement;\n const size = this.naturalSize();\n if (container && size.width > 0 && size.height > 0) {\n const scaleX = container.clientWidth / size.width;\n const scaleY = container.clientHeight / size.height;\n const newZoom = Math.min(scaleX, scaleY);\n this.zoom.set(Math.max(0.01, Math.min(10, newZoom)));\n this.position.set({ x: 0, y: 0 });\n }\n }\n handleError() {\n this.error.set(this.t('image.load_failed'));\n this.loaded.set(true);\n }\n handleDoubleClick() {\n this.position.set({ x: 0, y: 0 });\n this.zoom.set(1);\n }\n handleMouseDown(e) {\n if (this.isTouchDevice)\n return;\n if (e.button !== 0)\n return;\n this.isDragging.set(true);\n const pos = this.position();\n this.dragStart = {\n x: e.clientX - pos.x,\n y: e.clientY - pos.y,\n };\n }\n handleMouseMove(e) {\n if (this.isTouchDevice)\n return;\n if (!this.isDragging())\n return;\n this.position.set(this.clampPosition({\n x: e.clientX - this.dragStart.x,\n y: e.clientY - this.dragStart.y,\n }, this.zoom()));\n }\n handleMouseUp() {\n if (this.isTouchDevice)\n return;\n this.isDragging.set(false);\n }\n attachListeners() {\n const container = this.containerRef()?.nativeElement;\n if (!container)\n return;\n this.listenersEl = container;\n container.addEventListener('wheel', this.handleWheelNative, { passive: false });\n container.addEventListener('touchstart', this.handleTouchStart, { passive: false });\n container.addEventListener('touchmove', this.handleTouchMove, { passive: false });\n container.addEventListener('touchend', this.handleTouchEnd);\n container.addEventListener('touchcancel', this.handleTouchEnd);\n }\n detachListeners() {\n const container = this.listenersEl;\n if (!container)\n return;\n container.removeEventListener('wheel', this.handleWheelNative);\n container.removeEventListener('touchstart', this.handleTouchStart);\n container.removeEventListener('touchmove', this.handleTouchMove);\n container.removeEventListener('touchend', this.handleTouchEnd);\n container.removeEventListener('touchcancel', this.handleTouchEnd);\n this.listenersEl = null;\n }\n cleanup() {\n this.revokeBlobs();\n this.detachListeners();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: ImageRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: ImageRenderer, isStandalone: true, selector: \"afp-image-renderer\", inputs: { url: { classPropertyName: \"url\", publicName: \"url\", isSignal: true, isRequired: true, transformFunction: null }, fileSize: { classPropertyName: \"fileSize\", publicName: \"fileSize\", isSignal: true, isRequired: false, transformFunction: null }, file: { classPropertyName: \"file\", publicName: \"file\", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: \"afp-block afp-w-full afp-h-full\" }, viewQueries: [{ propertyName: \"containerRef\", first: true, predicate: [\"containerRef\"], descendants: true, isSignal: true }], ngImport: i0, template: `\n <div\n #containerRef\n class=\"afp-relative afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full afp-overflow-hidden\"\n [style.cursor]=\"isDragging() ? 'grabbing' : 'grab'\"\n [style.touch-action]=\"'none'\"\n (mousedown)=\"handleMouseDown($event)\"\n (mousemove)=\"handleMouseMove($event)\"\n (mouseup)=\"handleMouseUp()\"\n (mouseleave)=\"handleMouseUp()\"\n >\n @if (decoding()) {\n <div class=\"afp-absolute afp-inset-0 afp-flex afp-flex-col afp-items-center afp-justify-center afp-bg-surface-1/80 afp-z-10\">\n <i-lucide [img]=\"loader2Icon\" class=\"afp-w-12 afp-h-12 afp-text-fg-primary afp-animate-spin\" />\n <p class=\"afp-mt-4 afp-text-fg-secondary\">\n {{ t('common.loading') }}\n @if (decodeProgress() > 0) {\n <span>{{ Math.round(decodeProgress()) }}%</span>\n }\n </p>\n </div>\n }\n\n @if (decodeError(); as detail) {\n <afp-renderer-error [message]=\"t('image.decode_failed')\" [detail]=\"detail\" />\n }\n\n @if (!loaded() && !error() && !decoding() && !decodeError()) {\n <div class=\"afp-flex afp-items-center afp-justify-center\">\n <div 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\"></div>\n </div>\n }\n\n @if (error(); as err) {\n <afp-renderer-error [message]=\"err\" />\n }\n\n @if (imageSrc()) {\n <img\n #imgRef\n [src]=\"imageSrc()\"\n alt=\"\"\n class=\"afp-max-w-none afp-select-none\"\n [class.afp-hidden]=\"!loaded() || !!error() || !!decodeError()\"\n [style.transform]=\"transformCss()\"\n [style.transform-origin]=\"'center'\"\n [style.transition]=\"isDragging() ? 'none' : 'transform 0.3s ease-out'\"\n [style.opacity]=\"loaded() && !error() && !decodeError() ? 1 : 0\"\n [draggable]=\"false\"\n (load)=\"handleLoad($event)\"\n (error)=\"handleError()\"\n (dblclick)=\"handleDoubleClick()\"\n />\n }\n\n @if (loaded() && !error() && naturalSize().width > 0) {\n <div class=\"afp-absolute afp-bottom-2 afp-right-3 afp-text-[10px] afp-text-fg-disabled hover:afp-text-fg-secondary afp-transition-colors afp-pointer-events-auto afp-select-none afp-cursor-default\">\n {{ naturalSize().width }} × {{ naturalSize().height }}{{ sizeText() }}\n </div>\n }\n\n @if (totalPages() > 1) {\n <div class=\"afp-absolute afp-bottom-2 afp-left-1/2 -afp-translate-x-1/2 afp-flex afp-items-center afp-gap-2 afp-px-3 afp-py-1.5 afp-bg-surface-toolbar afp-border afp-border-line afp-rounded-lg afp-text-sm afp-text-fg-primary afp-shadow-md\">\n <button\n type=\"button\"\n [disabled]=\"currentPage() <= 1 || decoding()\"\n class=\"afp-px-2 afp-py-0.5 afp-rounded hover:afp-bg-surface-nav-hover disabled:afp-opacity-40 disabled:afp-cursor-not-allowed\"\n (click)=\"handlePageChange(currentPage() - 1)\"\n >\n {{ t('toolbar.prev_page') }}\n </button>\n <span class=\"afp-text-fg-secondary afp-tabular-nums\">\n {{ currentPage() }} / {{ totalPages() }}\n </span>\n <button\n type=\"button\"\n [disabled]=\"currentPage() >= totalPages() || decoding()\"\n class=\"afp-px-2 afp-py-0.5 afp-rounded hover:afp-bg-surface-nav-hover disabled:afp-opacity-40 disabled:afp-cursor-not-allowed\"\n (click)=\"handlePageChange(currentPage() + 1)\"\n >\n {{ t('toolbar.next_page') }}\n </button>\n </div>\n }\n </div>\n `, isInline: true, dependencies: [{ 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\"] }, { 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: ImageRenderer, decorators: [{\n type: Component,\n args: [{\n selector: 'afp-image-renderer',\n standalone: true,\n imports: [LucideAngularModule, RendererError],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'afp-block afp-w-full afp-h-full' },\n template: `\n <div\n #containerRef\n class=\"afp-relative afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full afp-overflow-hidden\"\n [style.cursor]=\"isDragging() ? 'grabbing' : 'grab'\"\n [style.touch-action]=\"'none'\"\n (mousedown)=\"handleMouseDown($event)\"\n (mousemove)=\"handleMouseMove($event)\"\n (mouseup)=\"handleMouseUp()\"\n (mouseleave)=\"handleMouseUp()\"\n >\n @if (decoding()) {\n <div class=\"afp-absolute afp-inset-0 afp-flex afp-flex-col afp-items-center afp-justify-center afp-bg-surface-1/80 afp-z-10\">\n <i-lucide [img]=\"loader2Icon\" class=\"afp-w-12 afp-h-12 afp-text-fg-primary afp-animate-spin\" />\n <p class=\"afp-mt-4 afp-text-fg-secondary\">\n {{ t('common.loading') }}\n @if (decodeProgress() > 0) {\n <span>{{ Math.round(decodeProgress()) }}%</span>\n }\n </p>\n </div>\n }\n\n @if (decodeError(); as detail) {\n <afp-renderer-error [message]=\"t('image.decode_failed')\" [detail]=\"detail\" />\n }\n\n @if (!loaded() && !error() && !decoding() && !decodeError()) {\n <div class=\"afp-flex afp-items-center afp-justify-center\">\n <div 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\"></div>\n </div>\n }\n\n @if (error(); as err) {\n <afp-renderer-error [message]=\"err\" />\n }\n\n @if (imageSrc()) {\n <img\n #imgRef\n [src]=\"imageSrc()\"\n alt=\"\"\n class=\"afp-max-w-none afp-select-none\"\n [class.afp-hidden]=\"!loaded() || !!error() || !!decodeError()\"\n [style.transform]=\"transformCss()\"\n [style.transform-origin]=\"'center'\"\n [style.transition]=\"isDragging() ? 'none' : 'transform 0.3s ease-out'\"\n [style.opacity]=\"loaded() && !error() && !decodeError() ? 1 : 0\"\n [draggable]=\"false\"\n (load)=\"handleLoad($event)\"\n (error)=\"handleError()\"\n (dblclick)=\"handleDoubleClick()\"\n />\n }\n\n @if (loaded() && !error() && naturalSize().width > 0) {\n <div class=\"afp-absolute afp-bottom-2 afp-right-3 afp-text-[10px] afp-text-fg-disabled hover:afp-text-fg-secondary afp-transition-colors afp-pointer-events-auto afp-select-none afp-cursor-default\">\n {{ naturalSize().width }} × {{ naturalSize().height }}{{ sizeText() }}\n </div>\n }\n\n @if (totalPages() > 1) {\n <div class=\"afp-absolute afp-bottom-2 afp-left-1/2 -afp-translate-x-1/2 afp-flex afp-items-center afp-gap-2 afp-px-3 afp-py-1.5 afp-bg-surface-toolbar afp-border afp-border-line afp-rounded-lg afp-text-sm afp-text-fg-primary afp-shadow-md\">\n <button\n type=\"button\"\n [disabled]=\"currentPage() <= 1 || decoding()\"\n class=\"afp-px-2 afp-py-0.5 afp-rounded hover:afp-bg-surface-nav-hover disabled:afp-opacity-40 disabled:afp-cursor-not-allowed\"\n (click)=\"handlePageChange(currentPage() - 1)\"\n >\n {{ t('toolbar.prev_page') }}\n </button>\n <span class=\"afp-text-fg-secondary afp-tabular-nums\">\n {{ currentPage() }} / {{ totalPages() }}\n </span>\n <button\n type=\"button\"\n [disabled]=\"currentPage() >= totalPages() || decoding()\"\n class=\"afp-px-2 afp-py-0.5 afp-rounded hover:afp-bg-surface-nav-hover disabled:afp-opacity-40 disabled:afp-cursor-not-allowed\"\n (click)=\"handlePageChange(currentPage() + 1)\"\n >\n {{ t('toolbar.next_page') }}\n </button>\n </div>\n }\n </div>\n `,\n }]\n }], ctorParameters: () => [] });\n\nexport { ImageRenderer };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-CMeATokn.mjs.map\n"],"names":["formatFileSize","detectImageFormat","getLoaderForMimeType","shouldUseWorker","decodeInWorker"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { input, inject, viewChild, signal, afterNextRender, effect, untracked, D
|
|
|
3
3
|
import * as i1 from 'lucide-angular';
|
|
4
4
|
import { X, List, ChevronLeft, ChevronRight, Minimize2, Maximize2, LucideAngularModule } from 'lucide-angular';
|
|
5
5
|
import 'foliate-js/view.js';
|
|
6
|
-
import { L as LocaleService, R as RequestService, g as getFallbackTranslator } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-
|
|
6
|
+
import { L as LocaleService, R as RequestService, g as getFallbackTranslator } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-RPRQhVCg.mjs';
|
|
7
7
|
import { R as RendererError } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-RendererError-DtNihCIX-DtNihCIX.mjs';
|
|
8
8
|
import { T as ToolbarEventEmitter } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-base.types-D5x7QPey-D5x7QPey.mjs';
|
|
9
9
|
|
|
@@ -513,4 +513,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
513
513
|
}], ctorParameters: () => [] });
|
|
514
514
|
|
|
515
515
|
export { MobiRenderer, MobiTocList };
|
|
516
|
-
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-
|
|
516
|
+
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CZQnGY6g-DexFUJLU.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CHi9tOe0-NOeQYAnM.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-CHi9tOe0.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { input, output, ChangeDetectionStrategy, Component, inject, viewChild, signal, afterNextRender, effect, untracked, DestroyRef } from '@angular/core';\nimport * as i1 from 'lucide-angular';\nimport { X, List, ChevronLeft, ChevronRight, Minimize2, Maximize2, LucideAngularModule } from 'lucide-angular';\nimport 'foliate-js/view.js';\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';\nimport { T as ToolbarEventEmitter } from './eternalheart-angular-file-preview-base.types-D5x7QPey.mjs';\n\nconst READER_CSS = `\n @namespace epub \"http://www.idpf.org/2007/ops\";\n html { color-scheme: light; }\n body {\n background: #ffffff !important;\n color: #1a1a1a !important;\n font-family: \"Noto Serif SC\", \"Source Han Serif SC\", Georgia, \"Times New Roman\", serif !important;\n font-size: 16px !important;\n line-height: 2 !important;\n max-width: 100% !important;\n box-sizing: border-box !important;\n word-break: break-word !important;\n overflow-wrap: break-word !important;\n }\n p, li, blockquote, dd { line-height: 2; text-align: justify; }\n p { text-indent: 2em; margin: 0.8em 0; }\n h1 { text-align: center; margin: 1.5em 0 1em; }\n h2 { margin: 1.2em 0 0.8em; }\n h3 { margin: 1em 0 0.6em; }\n img { max-width: 100% !important; height: auto !important; }\n a { color: #2563eb; text-decoration: none; }\n pre { white-space: pre-wrap !important; }\n`;\nconst A4_WIDTH = 794;\nconst INITIAL_RENDER_TIMEOUT_MS = 10_000;\nasync function renderInitialPage(renderer) {\n const nextPromise = renderer.next?.();\n if (!nextPromise)\n return;\n let timer;\n try {\n await Promise.race([\n nextPromise,\n new Promise((_, reject) => {\n timer = window.setTimeout(() => reject(new Error('MOBI initial render timed out')), INITIAL_RENDER_TIMEOUT_MS);\n }),\n ]);\n }\n finally {\n if (timer !== undefined)\n window.clearTimeout(timer);\n }\n}\nclass MobiTocList {\n constructor() {\n this.items = input.required();\n this.activeHref = input('');\n this.depth = input(0);\n this.select = output();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: MobiTocList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: MobiTocList, isStandalone: true, selector: \"afp-mobi-toc-list\", inputs: { items: { classPropertyName: \"items\", publicName: \"items\", isSignal: true, isRequired: true, transformFunction: null }, activeHref: { classPropertyName: \"activeHref\", publicName: \"activeHref\", isSignal: true, isRequired: false, transformFunction: null }, depth: { classPropertyName: \"depth\", publicName: \"depth\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { select: \"select\" }, ngImport: i0, template: `\n <ul [style.listStyle]=\"'none'\" [style.padding]=\"'0'\" [style.margin]=\"depth() > 0 ? '0 0 0 16px' : '0'\">\n @for (item of items(); track (item.href ?? item.label) + '-' + $index) {\n <li>\n @if (item.href) {\n <button\n type=\"button\"\n class=\"afp-w-full afp-text-left afp-py-2 afp-px-3 afp-text-sm afp-rounded afp-transition-all afp-truncate\"\n [class.afp-text-fg-primary]=\"activeHref() === item.href\"\n [class.afp-bg-surface-3]=\"activeHref() === item.href\"\n [class.afp-font-medium]=\"activeHref() === item.href\"\n [class.afp-text-fg-secondary]=\"activeHref() !== item.href\"\n [class.hover:afp-text-fg-primary]=\"activeHref() !== item.href\"\n [class.hover:afp-bg-surface-2]=\"activeHref() !== item.href\"\n [title]=\"item.label\"\n style=\"background: none; border: none; cursor: pointer\"\n (click)=\"select.emit(item.href)\"\n >\n {{ item.label?.trim() }}\n </button>\n } @else {\n <div class=\"afp-w-full afp-py-2 afp-px-3 afp-text-sm afp-text-fg-tertiary afp-truncate\">\n {{ item.label?.trim() }}\n </div>\n }\n @if (item.subitems?.length) {\n <afp-mobi-toc-list\n [items]=\"item.subitems!\"\n [activeHref]=\"activeHref()\"\n [depth]=\"depth() + 1\"\n (select)=\"select.emit($event)\"\n />\n }\n </li>\n }\n </ul>\n `, isInline: true, dependencies: [{ kind: \"component\", type: MobiTocList, selector: \"afp-mobi-toc-list\", inputs: [\"items\", \"activeHref\", \"depth\"], outputs: [\"select\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: MobiTocList, decorators: [{\n type: Component,\n args: [{\n selector: 'afp-mobi-toc-list',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ul [style.listStyle]=\"'none'\" [style.padding]=\"'0'\" [style.margin]=\"depth() > 0 ? '0 0 0 16px' : '0'\">\n @for (item of items(); track (item.href ?? item.label) + '-' + $index) {\n <li>\n @if (item.href) {\n <button\n type=\"button\"\n class=\"afp-w-full afp-text-left afp-py-2 afp-px-3 afp-text-sm afp-rounded afp-transition-all afp-truncate\"\n [class.afp-text-fg-primary]=\"activeHref() === item.href\"\n [class.afp-bg-surface-3]=\"activeHref() === item.href\"\n [class.afp-font-medium]=\"activeHref() === item.href\"\n [class.afp-text-fg-secondary]=\"activeHref() !== item.href\"\n [class.hover:afp-text-fg-primary]=\"activeHref() !== item.href\"\n [class.hover:afp-bg-surface-2]=\"activeHref() !== item.href\"\n [title]=\"item.label\"\n style=\"background: none; border: none; cursor: pointer\"\n (click)=\"select.emit(item.href)\"\n >\n {{ item.label?.trim() }}\n </button>\n } @else {\n <div class=\"afp-w-full afp-py-2 afp-px-3 afp-text-sm afp-text-fg-tertiary afp-truncate\">\n {{ item.label?.trim() }}\n </div>\n }\n @if (item.subitems?.length) {\n <afp-mobi-toc-list\n [items]=\"item.subitems!\"\n [activeHref]=\"activeHref()\"\n [depth]=\"depth() + 1\"\n (select)=\"select.emit($event)\"\n />\n }\n </li>\n }\n </ul>\n `,\n }]\n }] });\nclass MobiRenderer {\n constructor() {\n this.url = input.required();\n this.emitter = new ToolbarEventEmitter();\n this.locale = inject(LocaleService, { optional: true });\n this.request = inject(RequestService, { optional: true });\n this.t = this.locale?.t() ?? getFallbackTranslator();\n this.host = viewChild('hostRef');\n this.xIcon = X;\n this.a4Width = A4_WIDTH;\n this.currentChapter = signal(1);\n this.totalChapters = signal(1);\n this.loading = signal(false);\n this.error = signal(null);\n this.toc = signal([]);\n this.showToc = signal(false);\n this.activeTocHref = signal('');\n this.isFullWidth = signal(false);\n this.mounted = signal(false);\n this.viewInstance = null;\n this.totalLocations = 1;\n this.getToolbarGroups = () => [\n {\n items: [\n {\n type: 'button',\n icon: List,\n tooltip: this.t('toolbar.toc'),\n action: () => this.toggleToc(),\n disabled: this.toc().length === 0,\n active: this.showToc(),\n },\n ],\n },\n {\n items: [\n {\n type: 'button',\n icon: ChevronLeft,\n tooltip: this.t('toolbar.prev_page'),\n action: () => this.prevPage(),\n disabled: this.currentChapter() <= 1,\n },\n {\n type: 'text',\n content: `${this.currentChapter()} / ${this.totalChapters()}`,\n minWidth: '4rem',\n },\n {\n type: 'button',\n icon: ChevronRight,\n tooltip: this.t('toolbar.next_page'),\n action: () => this.nextPage(),\n disabled: this.currentChapter() >= this.totalChapters(),\n },\n ],\n },\n {\n items: [\n {\n type: 'button',\n icon: this.isFullWidth() ? Minimize2 : Maximize2,\n tooltip: this.isFullWidth() ? this.t('toolbar.normal_width') : this.t('toolbar.full_width'),\n action: () => this.toggleFullWidth(),\n active: this.isFullWidth(),\n },\n ],\n },\n ];\n this.onToolbarChange = (listener) => this.emitter.subscribe(listener);\n afterNextRender(() => this.mounted.set(true));\n effect(() => {\n const url = this.url();\n const mounted = this.mounted();\n if (!mounted || !url)\n return;\n untracked(() => { void this.load(); });\n });\n effect(() => {\n this.currentChapter();\n this.totalChapters();\n this.isFullWidth();\n this.showToc();\n this.loading();\n this.toc().length;\n this.emitter.notify();\n });\n const paginatorErrorHandler = (e) => {\n if (e.filename?.includes('paginator')) {\n e.preventDefault();\n }\n };\n window.addEventListener('error', paginatorErrorHandler);\n inject(DestroyRef).onDestroy(() => {\n window.removeEventListener('error', paginatorErrorHandler);\n try {\n this.viewInstance?.close?.();\n }\n catch { /* ignore */ }\n try {\n this.viewInstance?.book?.destroy?.();\n }\n catch { /* ignore */ }\n this.viewInstance = null;\n this.host()?.nativeElement?.replaceChildren();\n });\n }\n handleTocClick(href) {\n this.activeTocHref.set(href);\n this.showToc.set(false);\n this.viewInstance?.goTo(href).catch(() => { });\n }\n prevPage() {\n this.viewInstance?.prev().catch(() => { });\n }\n nextPage() {\n this.viewInstance?.next().catch(() => { });\n }\n toggleToc() {\n this.showToc.update((v) => !v);\n }\n toggleFullWidth() {\n this.isFullWidth.update((v) => !v);\n if (this.viewInstance?.renderer) {\n this.viewInstance.renderer.setAttribute('max-inline-size', this.isFullWidth() ? '9999' : '720');\n }\n }\n reportProgress(current, total) {\n if (Number.isFinite(total) && total > 0)\n this.totalLocations = total;\n const safeCurrent = Number.isFinite(current) ? current : 0;\n this.currentChapter.set(Math.max(1, safeCurrent + 1));\n this.totalChapters.set(this.totalLocations);\n }\n async load() {\n const host = this.host()?.nativeElement;\n if (!host)\n return;\n this.loading.set(true);\n this.error.set(null);\n this.toc.set([]);\n this.showToc.set(false);\n this.activeTocHref.set('');\n this.totalLocations = 1;\n this.currentChapter.set(1);\n this.totalChapters.set(1);\n host.replaceChildren();\n this.viewInstance = null;\n let progressReported = false;\n const sectionPagesMap = new Map();\n try {\n const view = document.createElement('foliate-view');\n host.appendChild(view);\n this.viewInstance = view;\n view.addEventListener('relocate', (e) => {\n const detail = e.detail;\n if (!detail)\n return;\n const sectionCount = this.viewInstance?.book?.sections.length ?? 0;\n const renderer = this.viewInstance?.renderer;\n const sectionIdx = renderer?.getContents?.()[0]?.index ?? -1;\n if (renderer\n && typeof renderer.page === 'number'\n && Number.isFinite(renderer.page)\n && typeof renderer.pages === 'number'\n && Number.isFinite(renderer.pages)\n && renderer.pages > 2\n && sectionIdx >= 0) {\n progressReported = true;\n const curSectionPages = renderer.pages - 2;\n sectionPagesMap.set(sectionIdx, curSectionPages);\n let pagesBefore = 0;\n for (let i = 0; i < sectionIdx; i++) {\n pagesBefore += sectionPagesMap.get(i) ?? 0;\n }\n const currentPage = pagesBefore + Math.min(curSectionPages, Math.max(1, renderer.page));\n const atEnd = (detail.fraction ?? 0) >= 0.999;\n let total;\n if (sectionCount === 1) {\n total = curSectionPages;\n }\n else if (atEnd) {\n total = currentPage;\n }\n else {\n const sections = this.viewInstance?.book?.sections ?? [];\n const curSize = sections[sectionIdx]?.size ?? 0;\n const ratio = curSize > 0 ? curSectionPages / curSize : 0;\n let est = 0;\n for (let i = 0; i < sectionCount; i++) {\n if (sectionPagesMap.has(i)) {\n est += sectionPagesMap.get(i);\n }\n else {\n const s = sections[i]?.size ?? 0;\n est += Math.max(1, Math.round(s * ratio));\n }\n }\n total = Math.max(currentPage, est);\n }\n this.reportProgress(currentPage - 1, total);\n const tocItem = detail.tocItem;\n if (tocItem?.href)\n this.activeTocHref.set(tocItem.href);\n return;\n }\n const loc = detail.location;\n if (loc\n && typeof loc.current === 'number'\n && Number.isFinite(loc.current)\n && typeof loc.total === 'number'\n && Number.isFinite(loc.total)) {\n progressReported = true;\n const atEnd = (detail.fraction ?? 0) >= 0.999;\n const actualTotal = atEnd ? loc.current + 1 : loc.total;\n this.reportProgress(loc.current, actualTotal);\n }\n else {\n const sections = this.viewInstance?.book?.sections ?? [];\n const idx = detail.index ?? 0;\n const frac = detail.fraction ?? 0;\n const total = Math.max(sections.length, 1);\n this.reportProgress(Math.round((idx + frac) / total * total), total);\n }\n const tocItem = detail.tocItem;\n if (tocItem?.href)\n this.activeTocHref.set(tocItem.href);\n });\n const fetcher = this.request?.fetcher() ?? ((u, init) => fetch(u, init));\n const res = await fetcher(this.url());\n if (!res.ok)\n throw new Error(`请求失败: ${res.status}`);\n const blob = await res.blob();\n let name = 'book.mobi';\n try {\n const u = new URL(this.url(), window.location.href);\n const base = u.pathname.split('/').pop();\n if (base)\n name = decodeURIComponent(base);\n }\n catch { /* blob: URL */ }\n await view.open(new File([blob], name));\n const renderer = view.renderer;\n if (renderer) {\n renderer.setAttribute('animated', '');\n renderer.setAttribute('max-inline-size', '720');\n renderer.setAttribute('margin', '48');\n renderer.setAttribute('gap', '5%');\n await renderInitialPage(renderer);\n renderer.setStyles?.(READER_CSS);\n }\n this.toc.set((view.book?.toc ?? []));\n this.loading.set(false);\n if (!progressReported) {\n this.reportProgress(0, view.book?.sections.length ?? 1);\n }\n }\n catch (err) {\n console.error('MOBI/AZW3 加载错误:', err);\n this.error.set(this.t('mobi.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: MobiRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: MobiRenderer, isStandalone: true, selector: \"afp-mobi-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: \"host\", first: true, predicate: [\"hostRef\"], descendants: true, isSignal: true }], ngImport: i0, template: `\n <div class=\"afp-relative afp-w-full afp-h-full afp-flex afp-justify-center afp-bg-surface-1 afp-overflow-hidden\">\n @if (error()) {\n <afp-renderer-error [message]=\"error()!\" class=\"afp-absolute afp-inset-0\" />\n }\n\n @if (loading() && !error()) {\n <div class=\"afp-absolute afp-inset-0 afp-flex afp-items-center afp-justify-center afp-z-10\">\n <div 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\"></div>\n </div>\n }\n\n @if (toc().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]=\"showToc() ? 1 : 0\"\n [style.pointerEvents]=\"showToc() ? '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]=\"showToc() ? '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.toc') }}</span>\n <button type=\"button\" class=\"toc-close-btn\" (click)=\"showToc.set(false)\">\n <i-lucide [img]=\"xIcon\" class=\"afp-w-4 afp-h-4\" />\n </button>\n </div>\n <div class=\"afp-flex-1 afp-overflow-y-auto afp-py-4 afp-px-1\">\n <afp-mobi-toc-list [items]=\"toc()\" [activeHref]=\"activeTocHref()\" (select)=\"handleTocClick($event)\" />\n </div>\n </div>\n <div\n class=\"afp-flex-1 afp-transition-opacity afp-duration-300\"\n [style.background]=\"showToc() ? 'rgba(0,0,0,0.3)' : 'transparent'\"\n (click)=\"showToc.set(false)\"\n ></div>\n </div>\n }\n\n @if (!error()) {\n <div\n #hostRef\n class=\"afp-h-full afp-bg-surface-toolbar afp-shadow-lg\"\n [style.width]=\"isFullWidth() ? '100%' : a4Width + 'px'\"\n [style.maxWidth]=\"'100%'\"\n [style.transition]=\"'width 0.3s ease'\"\n ></div>\n }\n </div>\n `, isInline: true, styles: [\".toc-close-btn{color:var(--fp-fg-tertiary);background:none;border:none;cursor:pointer;transition:color .15s}.toc-close-btn:hover{color:var(--fp-fg-primary)}\\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\"] }, { kind: \"component\", type: MobiTocList, selector: \"afp-mobi-toc-list\", inputs: [\"items\", \"activeHref\", \"depth\"], outputs: [\"select\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: MobiRenderer, decorators: [{\n type: Component,\n args: [{ selector: 'afp-mobi-renderer', standalone: true, imports: [RendererError, LucideAngularModule, MobiTocList], changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'afp-block afp-w-full afp-h-full' }, template: `\n <div class=\"afp-relative afp-w-full afp-h-full afp-flex afp-justify-center afp-bg-surface-1 afp-overflow-hidden\">\n @if (error()) {\n <afp-renderer-error [message]=\"error()!\" class=\"afp-absolute afp-inset-0\" />\n }\n\n @if (loading() && !error()) {\n <div class=\"afp-absolute afp-inset-0 afp-flex afp-items-center afp-justify-center afp-z-10\">\n <div 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\"></div>\n </div>\n }\n\n @if (toc().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]=\"showToc() ? 1 : 0\"\n [style.pointerEvents]=\"showToc() ? '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]=\"showToc() ? '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.toc') }}</span>\n <button type=\"button\" class=\"toc-close-btn\" (click)=\"showToc.set(false)\">\n <i-lucide [img]=\"xIcon\" class=\"afp-w-4 afp-h-4\" />\n </button>\n </div>\n <div class=\"afp-flex-1 afp-overflow-y-auto afp-py-4 afp-px-1\">\n <afp-mobi-toc-list [items]=\"toc()\" [activeHref]=\"activeTocHref()\" (select)=\"handleTocClick($event)\" />\n </div>\n </div>\n <div\n class=\"afp-flex-1 afp-transition-opacity afp-duration-300\"\n [style.background]=\"showToc() ? 'rgba(0,0,0,0.3)' : 'transparent'\"\n (click)=\"showToc.set(false)\"\n ></div>\n </div>\n }\n\n @if (!error()) {\n <div\n #hostRef\n class=\"afp-h-full afp-bg-surface-toolbar afp-shadow-lg\"\n [style.width]=\"isFullWidth() ? '100%' : a4Width + 'px'\"\n [style.maxWidth]=\"'100%'\"\n [style.transition]=\"'width 0.3s ease'\"\n ></div>\n }\n </div>\n `, styles: [\".toc-close-btn{color:var(--fp-fg-tertiary);background:none;border:none;cursor:pointer;transition:color .15s}.toc-close-btn:hover{color:var(--fp-fg-primary)}\\n\"] }]\n }], ctorParameters: () => [] });\n\nexport { MobiRenderer, MobiTocList };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-CHi9tOe0.mjs.map\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CZQnGY6g-DexFUJLU.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-CZQnGY6g.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { input, output, ChangeDetectionStrategy, Component, inject, viewChild, signal, afterNextRender, effect, untracked, DestroyRef } from '@angular/core';\nimport * as i1 from 'lucide-angular';\nimport { X, List, ChevronLeft, ChevronRight, Minimize2, Maximize2, LucideAngularModule } from 'lucide-angular';\nimport 'foliate-js/view.js';\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';\nimport { T as ToolbarEventEmitter } from './eternalheart-angular-file-preview-base.types-D5x7QPey.mjs';\n\nconst READER_CSS = `\n @namespace epub \"http://www.idpf.org/2007/ops\";\n html { color-scheme: light; }\n body {\n background: #ffffff !important;\n color: #1a1a1a !important;\n font-family: \"Noto Serif SC\", \"Source Han Serif SC\", Georgia, \"Times New Roman\", serif !important;\n font-size: 16px !important;\n line-height: 2 !important;\n max-width: 100% !important;\n box-sizing: border-box !important;\n word-break: break-word !important;\n overflow-wrap: break-word !important;\n }\n p, li, blockquote, dd { line-height: 2; text-align: justify; }\n p { text-indent: 2em; margin: 0.8em 0; }\n h1 { text-align: center; margin: 1.5em 0 1em; }\n h2 { margin: 1.2em 0 0.8em; }\n h3 { margin: 1em 0 0.6em; }\n img { max-width: 100% !important; height: auto !important; }\n a { color: #2563eb; text-decoration: none; }\n pre { white-space: pre-wrap !important; }\n`;\nconst A4_WIDTH = 794;\nconst INITIAL_RENDER_TIMEOUT_MS = 10_000;\nasync function renderInitialPage(renderer) {\n const nextPromise = renderer.next?.();\n if (!nextPromise)\n return;\n let timer;\n try {\n await Promise.race([\n nextPromise,\n new Promise((_, reject) => {\n timer = window.setTimeout(() => reject(new Error('MOBI initial render timed out')), INITIAL_RENDER_TIMEOUT_MS);\n }),\n ]);\n }\n finally {\n if (timer !== undefined)\n window.clearTimeout(timer);\n }\n}\nclass MobiTocList {\n constructor() {\n this.items = input.required();\n this.activeHref = input('');\n this.depth = input(0);\n this.select = output();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: MobiTocList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: MobiTocList, isStandalone: true, selector: \"afp-mobi-toc-list\", inputs: { items: { classPropertyName: \"items\", publicName: \"items\", isSignal: true, isRequired: true, transformFunction: null }, activeHref: { classPropertyName: \"activeHref\", publicName: \"activeHref\", isSignal: true, isRequired: false, transformFunction: null }, depth: { classPropertyName: \"depth\", publicName: \"depth\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { select: \"select\" }, ngImport: i0, template: `\n <ul [style.listStyle]=\"'none'\" [style.padding]=\"'0'\" [style.margin]=\"depth() > 0 ? '0 0 0 16px' : '0'\">\n @for (item of items(); track (item.href ?? item.label) + '-' + $index) {\n <li>\n @if (item.href) {\n <button\n type=\"button\"\n class=\"afp-w-full afp-text-left afp-py-2 afp-px-3 afp-text-sm afp-rounded afp-transition-all afp-truncate\"\n [class.afp-text-fg-primary]=\"activeHref() === item.href\"\n [class.afp-bg-surface-3]=\"activeHref() === item.href\"\n [class.afp-font-medium]=\"activeHref() === item.href\"\n [class.afp-text-fg-secondary]=\"activeHref() !== item.href\"\n [class.hover:afp-text-fg-primary]=\"activeHref() !== item.href\"\n [class.hover:afp-bg-surface-2]=\"activeHref() !== item.href\"\n [title]=\"item.label\"\n style=\"background: none; border: none; cursor: pointer\"\n (click)=\"select.emit(item.href)\"\n >\n {{ item.label?.trim() }}\n </button>\n } @else {\n <div class=\"afp-w-full afp-py-2 afp-px-3 afp-text-sm afp-text-fg-tertiary afp-truncate\">\n {{ item.label?.trim() }}\n </div>\n }\n @if (item.subitems?.length) {\n <afp-mobi-toc-list\n [items]=\"item.subitems!\"\n [activeHref]=\"activeHref()\"\n [depth]=\"depth() + 1\"\n (select)=\"select.emit($event)\"\n />\n }\n </li>\n }\n </ul>\n `, isInline: true, dependencies: [{ kind: \"component\", type: MobiTocList, selector: \"afp-mobi-toc-list\", inputs: [\"items\", \"activeHref\", \"depth\"], outputs: [\"select\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: MobiTocList, decorators: [{\n type: Component,\n args: [{\n selector: 'afp-mobi-toc-list',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ul [style.listStyle]=\"'none'\" [style.padding]=\"'0'\" [style.margin]=\"depth() > 0 ? '0 0 0 16px' : '0'\">\n @for (item of items(); track (item.href ?? item.label) + '-' + $index) {\n <li>\n @if (item.href) {\n <button\n type=\"button\"\n class=\"afp-w-full afp-text-left afp-py-2 afp-px-3 afp-text-sm afp-rounded afp-transition-all afp-truncate\"\n [class.afp-text-fg-primary]=\"activeHref() === item.href\"\n [class.afp-bg-surface-3]=\"activeHref() === item.href\"\n [class.afp-font-medium]=\"activeHref() === item.href\"\n [class.afp-text-fg-secondary]=\"activeHref() !== item.href\"\n [class.hover:afp-text-fg-primary]=\"activeHref() !== item.href\"\n [class.hover:afp-bg-surface-2]=\"activeHref() !== item.href\"\n [title]=\"item.label\"\n style=\"background: none; border: none; cursor: pointer\"\n (click)=\"select.emit(item.href)\"\n >\n {{ item.label?.trim() }}\n </button>\n } @else {\n <div class=\"afp-w-full afp-py-2 afp-px-3 afp-text-sm afp-text-fg-tertiary afp-truncate\">\n {{ item.label?.trim() }}\n </div>\n }\n @if (item.subitems?.length) {\n <afp-mobi-toc-list\n [items]=\"item.subitems!\"\n [activeHref]=\"activeHref()\"\n [depth]=\"depth() + 1\"\n (select)=\"select.emit($event)\"\n />\n }\n </li>\n }\n </ul>\n `,\n }]\n }] });\nclass MobiRenderer {\n constructor() {\n this.url = input.required();\n this.emitter = new ToolbarEventEmitter();\n this.locale = inject(LocaleService, { optional: true });\n this.request = inject(RequestService, { optional: true });\n this.t = this.locale?.t() ?? getFallbackTranslator();\n this.host = viewChild('hostRef');\n this.xIcon = X;\n this.a4Width = A4_WIDTH;\n this.currentChapter = signal(1);\n this.totalChapters = signal(1);\n this.loading = signal(false);\n this.error = signal(null);\n this.toc = signal([]);\n this.showToc = signal(false);\n this.activeTocHref = signal('');\n this.isFullWidth = signal(false);\n this.mounted = signal(false);\n this.viewInstance = null;\n this.totalLocations = 1;\n this.getToolbarGroups = () => [\n {\n items: [\n {\n type: 'button',\n icon: List,\n tooltip: this.t('toolbar.toc'),\n action: () => this.toggleToc(),\n disabled: this.toc().length === 0,\n active: this.showToc(),\n },\n ],\n },\n {\n items: [\n {\n type: 'button',\n icon: ChevronLeft,\n tooltip: this.t('toolbar.prev_page'),\n action: () => this.prevPage(),\n disabled: this.currentChapter() <= 1,\n },\n {\n type: 'text',\n content: `${this.currentChapter()} / ${this.totalChapters()}`,\n minWidth: '4rem',\n },\n {\n type: 'button',\n icon: ChevronRight,\n tooltip: this.t('toolbar.next_page'),\n action: () => this.nextPage(),\n disabled: this.currentChapter() >= this.totalChapters(),\n },\n ],\n },\n {\n items: [\n {\n type: 'button',\n icon: this.isFullWidth() ? Minimize2 : Maximize2,\n tooltip: this.isFullWidth() ? this.t('toolbar.normal_width') : this.t('toolbar.full_width'),\n action: () => this.toggleFullWidth(),\n active: this.isFullWidth(),\n },\n ],\n },\n ];\n this.onToolbarChange = (listener) => this.emitter.subscribe(listener);\n afterNextRender(() => this.mounted.set(true));\n effect(() => {\n const url = this.url();\n const mounted = this.mounted();\n if (!mounted || !url)\n return;\n untracked(() => { void this.load(); });\n });\n effect(() => {\n this.currentChapter();\n this.totalChapters();\n this.isFullWidth();\n this.showToc();\n this.loading();\n this.toc().length;\n this.emitter.notify();\n });\n const paginatorErrorHandler = (e) => {\n if (e.filename?.includes('paginator')) {\n e.preventDefault();\n }\n };\n window.addEventListener('error', paginatorErrorHandler);\n inject(DestroyRef).onDestroy(() => {\n window.removeEventListener('error', paginatorErrorHandler);\n try {\n this.viewInstance?.close?.();\n }\n catch { /* ignore */ }\n try {\n this.viewInstance?.book?.destroy?.();\n }\n catch { /* ignore */ }\n this.viewInstance = null;\n this.host()?.nativeElement?.replaceChildren();\n });\n }\n handleTocClick(href) {\n this.activeTocHref.set(href);\n this.showToc.set(false);\n this.viewInstance?.goTo(href).catch(() => { });\n }\n prevPage() {\n this.viewInstance?.prev().catch(() => { });\n }\n nextPage() {\n this.viewInstance?.next().catch(() => { });\n }\n toggleToc() {\n this.showToc.update((v) => !v);\n }\n toggleFullWidth() {\n this.isFullWidth.update((v) => !v);\n if (this.viewInstance?.renderer) {\n this.viewInstance.renderer.setAttribute('max-inline-size', this.isFullWidth() ? '9999' : '720');\n }\n }\n reportProgress(current, total) {\n if (Number.isFinite(total) && total > 0)\n this.totalLocations = total;\n const safeCurrent = Number.isFinite(current) ? current : 0;\n this.currentChapter.set(Math.max(1, safeCurrent + 1));\n this.totalChapters.set(this.totalLocations);\n }\n async load() {\n const host = this.host()?.nativeElement;\n if (!host)\n return;\n this.loading.set(true);\n this.error.set(null);\n this.toc.set([]);\n this.showToc.set(false);\n this.activeTocHref.set('');\n this.totalLocations = 1;\n this.currentChapter.set(1);\n this.totalChapters.set(1);\n host.replaceChildren();\n this.viewInstance = null;\n let progressReported = false;\n const sectionPagesMap = new Map();\n try {\n const view = document.createElement('foliate-view');\n host.appendChild(view);\n this.viewInstance = view;\n view.addEventListener('relocate', (e) => {\n const detail = e.detail;\n if (!detail)\n return;\n const sectionCount = this.viewInstance?.book?.sections.length ?? 0;\n const renderer = this.viewInstance?.renderer;\n const sectionIdx = renderer?.getContents?.()[0]?.index ?? -1;\n if (renderer\n && typeof renderer.page === 'number'\n && Number.isFinite(renderer.page)\n && typeof renderer.pages === 'number'\n && Number.isFinite(renderer.pages)\n && renderer.pages > 2\n && sectionIdx >= 0) {\n progressReported = true;\n const curSectionPages = renderer.pages - 2;\n sectionPagesMap.set(sectionIdx, curSectionPages);\n let pagesBefore = 0;\n for (let i = 0; i < sectionIdx; i++) {\n pagesBefore += sectionPagesMap.get(i) ?? 0;\n }\n const currentPage = pagesBefore + Math.min(curSectionPages, Math.max(1, renderer.page));\n const atEnd = (detail.fraction ?? 0) >= 0.999;\n let total;\n if (sectionCount === 1) {\n total = curSectionPages;\n }\n else if (atEnd) {\n total = currentPage;\n }\n else {\n const sections = this.viewInstance?.book?.sections ?? [];\n const curSize = sections[sectionIdx]?.size ?? 0;\n const ratio = curSize > 0 ? curSectionPages / curSize : 0;\n let est = 0;\n for (let i = 0; i < sectionCount; i++) {\n if (sectionPagesMap.has(i)) {\n est += sectionPagesMap.get(i);\n }\n else {\n const s = sections[i]?.size ?? 0;\n est += Math.max(1, Math.round(s * ratio));\n }\n }\n total = Math.max(currentPage, est);\n }\n this.reportProgress(currentPage - 1, total);\n const tocItem = detail.tocItem;\n if (tocItem?.href)\n this.activeTocHref.set(tocItem.href);\n return;\n }\n const loc = detail.location;\n if (loc\n && typeof loc.current === 'number'\n && Number.isFinite(loc.current)\n && typeof loc.total === 'number'\n && Number.isFinite(loc.total)) {\n progressReported = true;\n const atEnd = (detail.fraction ?? 0) >= 0.999;\n const actualTotal = atEnd ? loc.current + 1 : loc.total;\n this.reportProgress(loc.current, actualTotal);\n }\n else {\n const sections = this.viewInstance?.book?.sections ?? [];\n const idx = detail.index ?? 0;\n const frac = detail.fraction ?? 0;\n const total = Math.max(sections.length, 1);\n this.reportProgress(Math.round((idx + frac) / total * total), total);\n }\n const tocItem = detail.tocItem;\n if (tocItem?.href)\n this.activeTocHref.set(tocItem.href);\n });\n const fetcher = this.request?.fetcher() ?? ((u, init) => fetch(u, init));\n const res = await fetcher(this.url());\n if (!res.ok)\n throw new Error(`请求失败: ${res.status}`);\n const blob = await res.blob();\n let name = 'book.mobi';\n try {\n const u = new URL(this.url(), window.location.href);\n const base = u.pathname.split('/').pop();\n if (base)\n name = decodeURIComponent(base);\n }\n catch { /* blob: URL */ }\n await view.open(new File([blob], name));\n const renderer = view.renderer;\n if (renderer) {\n renderer.setAttribute('animated', '');\n renderer.setAttribute('max-inline-size', '720');\n renderer.setAttribute('margin', '48');\n renderer.setAttribute('gap', '5%');\n await renderInitialPage(renderer);\n renderer.setStyles?.(READER_CSS);\n }\n this.toc.set((view.book?.toc ?? []));\n this.loading.set(false);\n if (!progressReported) {\n this.reportProgress(0, view.book?.sections.length ?? 1);\n }\n }\n catch (err) {\n console.error('MOBI/AZW3 加载错误:', err);\n this.error.set(this.t('mobi.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: MobiRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: MobiRenderer, isStandalone: true, selector: \"afp-mobi-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: \"host\", first: true, predicate: [\"hostRef\"], descendants: true, isSignal: true }], ngImport: i0, template: `\n <div class=\"afp-relative afp-w-full afp-h-full afp-flex afp-justify-center afp-bg-surface-1 afp-overflow-hidden\">\n @if (error()) {\n <afp-renderer-error [message]=\"error()!\" class=\"afp-absolute afp-inset-0\" />\n }\n\n @if (loading() && !error()) {\n <div class=\"afp-absolute afp-inset-0 afp-flex afp-items-center afp-justify-center afp-z-10\">\n <div 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\"></div>\n </div>\n }\n\n @if (toc().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]=\"showToc() ? 1 : 0\"\n [style.pointerEvents]=\"showToc() ? '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]=\"showToc() ? '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.toc') }}</span>\n <button type=\"button\" class=\"toc-close-btn\" (click)=\"showToc.set(false)\">\n <i-lucide [img]=\"xIcon\" class=\"afp-w-4 afp-h-4\" />\n </button>\n </div>\n <div class=\"afp-flex-1 afp-overflow-y-auto afp-py-4 afp-px-1\">\n <afp-mobi-toc-list [items]=\"toc()\" [activeHref]=\"activeTocHref()\" (select)=\"handleTocClick($event)\" />\n </div>\n </div>\n <div\n class=\"afp-flex-1 afp-transition-opacity afp-duration-300\"\n [style.background]=\"showToc() ? 'rgba(0,0,0,0.3)' : 'transparent'\"\n (click)=\"showToc.set(false)\"\n ></div>\n </div>\n }\n\n @if (!error()) {\n <div\n #hostRef\n class=\"afp-h-full afp-bg-surface-toolbar afp-shadow-lg\"\n [style.width]=\"isFullWidth() ? '100%' : a4Width + 'px'\"\n [style.maxWidth]=\"'100%'\"\n [style.transition]=\"'width 0.3s ease'\"\n ></div>\n }\n </div>\n `, isInline: true, styles: [\".toc-close-btn{color:var(--fp-fg-tertiary);background:none;border:none;cursor:pointer;transition:color .15s}.toc-close-btn:hover{color:var(--fp-fg-primary)}\\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\"] }, { kind: \"component\", type: MobiTocList, selector: \"afp-mobi-toc-list\", inputs: [\"items\", \"activeHref\", \"depth\"], outputs: [\"select\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: MobiRenderer, decorators: [{\n type: Component,\n args: [{ selector: 'afp-mobi-renderer', standalone: true, imports: [RendererError, LucideAngularModule, MobiTocList], changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'afp-block afp-w-full afp-h-full' }, template: `\n <div class=\"afp-relative afp-w-full afp-h-full afp-flex afp-justify-center afp-bg-surface-1 afp-overflow-hidden\">\n @if (error()) {\n <afp-renderer-error [message]=\"error()!\" class=\"afp-absolute afp-inset-0\" />\n }\n\n @if (loading() && !error()) {\n <div class=\"afp-absolute afp-inset-0 afp-flex afp-items-center afp-justify-center afp-z-10\">\n <div 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\"></div>\n </div>\n }\n\n @if (toc().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]=\"showToc() ? 1 : 0\"\n [style.pointerEvents]=\"showToc() ? '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]=\"showToc() ? '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.toc') }}</span>\n <button type=\"button\" class=\"toc-close-btn\" (click)=\"showToc.set(false)\">\n <i-lucide [img]=\"xIcon\" class=\"afp-w-4 afp-h-4\" />\n </button>\n </div>\n <div class=\"afp-flex-1 afp-overflow-y-auto afp-py-4 afp-px-1\">\n <afp-mobi-toc-list [items]=\"toc()\" [activeHref]=\"activeTocHref()\" (select)=\"handleTocClick($event)\" />\n </div>\n </div>\n <div\n class=\"afp-flex-1 afp-transition-opacity afp-duration-300\"\n [style.background]=\"showToc() ? 'rgba(0,0,0,0.3)' : 'transparent'\"\n (click)=\"showToc.set(false)\"\n ></div>\n </div>\n }\n\n @if (!error()) {\n <div\n #hostRef\n class=\"afp-h-full afp-bg-surface-toolbar afp-shadow-lg\"\n [style.width]=\"isFullWidth() ? '100%' : a4Width + 'px'\"\n [style.maxWidth]=\"'100%'\"\n [style.transition]=\"'width 0.3s ease'\"\n ></div>\n }\n </div>\n `, styles: [\".toc-close-btn{color:var(--fp-fg-tertiary);background:none;border:none;cursor:pointer;transition:color .15s}.toc-close-btn:hover{color:var(--fp-fg-primary)}\\n\"] }]\n }], ctorParameters: () => [] });\n\nexport { MobiRenderer, MobiTocList };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-CZQnGY6g.mjs.map\n"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { input, inject, signal, viewChild, computed, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
3
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
4
|
import mammoth from 'mammoth';
|
|
5
|
-
import { L as LocaleService, R as RequestService, g as getFallbackTranslator, j as jg, B as Bg, X as Xg } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-
|
|
5
|
+
import { L as LocaleService, R as RequestService, g as getFallbackTranslator, j as jg, B as Bg, X as Xg } 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
|
|
|
8
8
|
const PAGE_HEIGHT = 1123;
|
|
@@ -181,4 +181,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
181
181
|
}], ctorParameters: () => [] });
|
|
182
182
|
|
|
183
183
|
export { DocxRenderer };
|
|
184
|
-
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-
|
|
184
|
+
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cjjsjooa-24Qg-LjD.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-TSTa_Q7E-DBhkL6pV.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-TSTa_Q7E.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { input, inject, signal, viewChild, computed, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport mammoth from 'mammoth';\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';\nimport { docxThemeToCssVars, DOCX_MAMMOTH_STYLE_MAP, readDocxTheme } from '@eternalheart/file-preview-core';\n\nconst PAGE_HEIGHT = 1123;\nconst PAGE_PADDING_Y = 60;\nconst PAGE_PADDING_X = 50;\nconst PAGE_CONTENT_HEIGHT = PAGE_HEIGHT - PAGE_PADDING_Y * 2;\nconst PAGE_GAP = 24;\nfunction themeToContentStyle(theme) {\n return docxThemeToCssVars(theme);\n}\nclass DocxRenderer {\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.html = signal('');\n this.loading = signal(true);\n this.error = signal(null);\n this.pages = signal([]);\n this.theme = signal({});\n this.measureRef = viewChild('measureRef');\n this.pageGap = PAGE_GAP;\n this.contentStyle = computed(() => themeToContentStyle(this.theme()));\n this.measureStyle = computed(() => ({\n ...themeToContentStyle(this.theme()),\n position: 'absolute',\n visibility: 'hidden',\n width: `${794 - PAGE_PADDING_X * 2}px`,\n pointerEvents: 'none',\n }));\n this.pageBoxStyle = {\n width: '100%',\n maxWidth: '794px',\n minHeight: `${PAGE_HEIGHT}px`,\n background: 'white',\n boxShadow: '0 4px 6px rgba(0, 0, 0, 0.07), 0 10px 20px rgba(0, 0, 0, 0.10)',\n flexShrink: 0,\n padding: `${PAGE_PADDING_Y}px ${PAGE_PADDING_X}px`,\n };\n this.getToolbarGroups = () => [];\n this.displayPages = computed(() => {\n const pages = this.pages();\n return pages.length > 0 ? pages : [''];\n });\n effect(() => {\n const newUrl = this.url();\n if (newUrl) {\n untracked(() => {\n void this.loadDocx();\n });\n }\n });\n effect(() => {\n const content = this.html();\n const el = this.measureRef();\n if (!content || !el)\n return;\n untracked(() => {\n requestAnimationFrame(() => this.paginate());\n });\n });\n }\n trust(html) {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n async loadDocx() {\n this.loading.set(true);\n this.error.set(null);\n this.html.set('');\n this.pages.set([]);\n this.theme.set({});\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 [converted, theme] = await Promise.all([\n mammoth.convertToHtml({ arrayBuffer }, { styleMap: DOCX_MAMMOTH_STYLE_MAP }),\n readDocxTheme(arrayBuffer).catch(() => ({})),\n ]);\n this.theme.set(theme);\n this.html.set(converted.value);\n }\n catch (err) {\n console.error('Docx 解析错误:', err);\n this.error.set(this.t('docx.parse_failed'));\n }\n finally {\n this.loading.set(false);\n }\n }\n paginate() {\n const container = this.measureRef()?.nativeElement;\n if (!container || !this.html())\n return;\n const children = Array.from(container.children);\n if (children.length === 0) {\n this.pages.set([this.html()]);\n return;\n }\n const result = [[]];\n let currentPageUsed = 0;\n for (const child of children) {\n const h = child.offsetHeight;\n if (currentPageUsed > 0 && currentPageUsed + h > PAGE_CONTENT_HEIGHT) {\n result.push([]);\n currentPageUsed = 0;\n }\n result[result.length - 1].push(child.outerHTML);\n currentPageUsed += h;\n }\n if (result.length === 0)\n result.push([]);\n this.pages.set(result.map((blocks) => blocks.join('')));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: DocxRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: DocxRenderer, isStandalone: true, selector: \"afp-docx-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: \"measureRef\", first: true, predicate: [\"measureRef\"], descendants: true, isSignal: true }], 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()) {\n <afp-renderer-error [message]=\"error()!\" />\n } @else {\n <div class=\"afp-docx-container afp-w-full afp-h-full afp-overflow-auto\" style=\"background: rgba(0, 0, 0, 0.15)\">\n <div #measureRef [style]=\"measureStyle()\" [innerHTML]=\"trust(html())\"></div>\n\n <div class=\"afp-flex afp-flex-col afp-items-center\" [style.gap.px]=\"pageGap\">\n @for (pageHtml of displayPages(); track $index) {\n <div [style]=\"pageBoxStyle\">\n <div [style]=\"contentStyle()\" [innerHTML]=\"trust(pageHtml)\"></div>\n </div>\n }\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: DocxRenderer, decorators: [{\n type: Component,\n args: [{\n selector: 'afp-docx-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 (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()) {\n <afp-renderer-error [message]=\"error()!\" />\n } @else {\n <div class=\"afp-docx-container afp-w-full afp-h-full afp-overflow-auto\" style=\"background: rgba(0, 0, 0, 0.15)\">\n <div #measureRef [style]=\"measureStyle()\" [innerHTML]=\"trust(html())\"></div>\n\n <div class=\"afp-flex afp-flex-col afp-items-center\" [style.gap.px]=\"pageGap\">\n @for (pageHtml of displayPages(); track $index) {\n <div [style]=\"pageBoxStyle\">\n <div [style]=\"contentStyle()\" [innerHTML]=\"trust(pageHtml)\"></div>\n </div>\n }\n </div>\n </div>\n }\n `,\n }]\n }], ctorParameters: () => [] });\n\nexport { DocxRenderer };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-TSTa_Q7E.mjs.map\n"],"names":["docxThemeToCssVars","DOCX_MAMMOTH_STYLE_MAP","readDocxTheme"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cjjsjooa-24Qg-LjD.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-Cjjsjooa.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { input, inject, signal, viewChild, computed, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport mammoth from 'mammoth';\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';\nimport { docxThemeToCssVars, DOCX_MAMMOTH_STYLE_MAP, readDocxTheme } from '@eternalheart/file-preview-core';\n\nconst PAGE_HEIGHT = 1123;\nconst PAGE_PADDING_Y = 60;\nconst PAGE_PADDING_X = 50;\nconst PAGE_CONTENT_HEIGHT = PAGE_HEIGHT - PAGE_PADDING_Y * 2;\nconst PAGE_GAP = 24;\nfunction themeToContentStyle(theme) {\n return docxThemeToCssVars(theme);\n}\nclass DocxRenderer {\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.html = signal('');\n this.loading = signal(true);\n this.error = signal(null);\n this.pages = signal([]);\n this.theme = signal({});\n this.measureRef = viewChild('measureRef');\n this.pageGap = PAGE_GAP;\n this.contentStyle = computed(() => themeToContentStyle(this.theme()));\n this.measureStyle = computed(() => ({\n ...themeToContentStyle(this.theme()),\n position: 'absolute',\n visibility: 'hidden',\n width: `${794 - PAGE_PADDING_X * 2}px`,\n pointerEvents: 'none',\n }));\n this.pageBoxStyle = {\n width: '100%',\n maxWidth: '794px',\n minHeight: `${PAGE_HEIGHT}px`,\n background: 'white',\n boxShadow: '0 4px 6px rgba(0, 0, 0, 0.07), 0 10px 20px rgba(0, 0, 0, 0.10)',\n flexShrink: 0,\n padding: `${PAGE_PADDING_Y}px ${PAGE_PADDING_X}px`,\n };\n this.getToolbarGroups = () => [];\n this.displayPages = computed(() => {\n const pages = this.pages();\n return pages.length > 0 ? pages : [''];\n });\n effect(() => {\n const newUrl = this.url();\n if (newUrl) {\n untracked(() => {\n void this.loadDocx();\n });\n }\n });\n effect(() => {\n const content = this.html();\n const el = this.measureRef();\n if (!content || !el)\n return;\n untracked(() => {\n requestAnimationFrame(() => this.paginate());\n });\n });\n }\n trust(html) {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n async loadDocx() {\n this.loading.set(true);\n this.error.set(null);\n this.html.set('');\n this.pages.set([]);\n this.theme.set({});\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 [converted, theme] = await Promise.all([\n mammoth.convertToHtml({ arrayBuffer }, { styleMap: DOCX_MAMMOTH_STYLE_MAP }),\n readDocxTheme(arrayBuffer).catch(() => ({})),\n ]);\n this.theme.set(theme);\n this.html.set(converted.value);\n }\n catch (err) {\n console.error('Docx 解析错误:', err);\n this.error.set(this.t('docx.parse_failed'));\n }\n finally {\n this.loading.set(false);\n }\n }\n paginate() {\n const container = this.measureRef()?.nativeElement;\n if (!container || !this.html())\n return;\n const children = Array.from(container.children);\n if (children.length === 0) {\n this.pages.set([this.html()]);\n return;\n }\n const result = [[]];\n let currentPageUsed = 0;\n for (const child of children) {\n const h = child.offsetHeight;\n if (currentPageUsed > 0 && currentPageUsed + h > PAGE_CONTENT_HEIGHT) {\n result.push([]);\n currentPageUsed = 0;\n }\n result[result.length - 1].push(child.outerHTML);\n currentPageUsed += h;\n }\n if (result.length === 0)\n result.push([]);\n this.pages.set(result.map((blocks) => blocks.join('')));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: DocxRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: DocxRenderer, isStandalone: true, selector: \"afp-docx-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: \"measureRef\", first: true, predicate: [\"measureRef\"], descendants: true, isSignal: true }], 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()) {\n <afp-renderer-error [message]=\"error()!\" />\n } @else {\n <div class=\"afp-docx-container afp-w-full afp-h-full afp-overflow-auto\" style=\"background: rgba(0, 0, 0, 0.15)\">\n <div #measureRef [style]=\"measureStyle()\" [innerHTML]=\"trust(html())\"></div>\n\n <div class=\"afp-flex afp-flex-col afp-items-center\" [style.gap.px]=\"pageGap\">\n @for (pageHtml of displayPages(); track $index) {\n <div [style]=\"pageBoxStyle\">\n <div [style]=\"contentStyle()\" [innerHTML]=\"trust(pageHtml)\"></div>\n </div>\n }\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: DocxRenderer, decorators: [{\n type: Component,\n args: [{\n selector: 'afp-docx-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 (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()) {\n <afp-renderer-error [message]=\"error()!\" />\n } @else {\n <div class=\"afp-docx-container afp-w-full afp-h-full afp-overflow-auto\" style=\"background: rgba(0, 0, 0, 0.15)\">\n <div #measureRef [style]=\"measureStyle()\" [innerHTML]=\"trust(html())\"></div>\n\n <div class=\"afp-flex afp-flex-col afp-items-center\" [style.gap.px]=\"pageGap\">\n @for (pageHtml of displayPages(); track $index) {\n <div [style]=\"pageBoxStyle\">\n <div [style]=\"contentStyle()\" [innerHTML]=\"trust(pageHtml)\"></div>\n </div>\n }\n </div>\n </div>\n }\n `,\n }]\n }], ctorParameters: () => [] });\n\nexport { DocxRenderer };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-Cjjsjooa.mjs.map\n"],"names":["docxThemeToCssVars","DOCX_MAMMOTH_STYLE_MAP","readDocxTheme"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { input, inject, signal, computed, effect, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
3
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
|
-
import { L as LocaleService, R as RequestService, g as getFallbackTranslator, e as e0 } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-
|
|
4
|
+
import { L as LocaleService, R as RequestService, g as getFallbackTranslator, e as e0 } 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
|
-
import { c as createShikiHighlight } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-
|
|
6
|
+
import { c as createShikiHighlight } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-CE3FZF7D-BjdXRpvN.mjs';
|
|
7
7
|
|
|
8
8
|
class XmlRenderer {
|
|
9
9
|
constructor() {
|
|
@@ -161,4 +161,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
161
161
|
}], ctorParameters: () => [] });
|
|
162
162
|
|
|
163
163
|
export { XmlRenderer };
|
|
164
|
-
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-
|
|
164
|
+
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CpiK7yUb-T48dTv66.mjs.map
|