@eternalheart/angular-file-preview 1.6.5

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.
Files changed (119) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +879 -0
  3. package/README.zh-CN.md +876 -0
  4. package/lib/LICENSE +22 -0
  5. package/lib/README.md +879 -0
  6. package/lib/components/preview/file-preview-toolbar.d.ts +19 -0
  7. package/lib/components/preview/nav-arrows.d.ts +25 -0
  8. package/lib/components/preview/renderer-outlet.d.ts +23 -0
  9. package/lib/components/preview/toolbar-button.d.ts +12 -0
  10. package/lib/components/resizable-split.d.ts +32 -0
  11. package/lib/di/locale.service.d.ts +12 -0
  12. package/lib/di/request.service.d.ts +20 -0
  13. package/lib/di/theme-mode.d.ts +6 -0
  14. package/lib/di/theme.service.d.ts +9 -0
  15. package/lib/fesm2022/eternalheart-angular-file-preview-avifLoader-BP3fgcMm-CZsJ9svm.mjs +55 -0
  16. package/lib/fesm2022/eternalheart-angular-file-preview-avifLoader-BP3fgcMm-CZsJ9svm.mjs.map +1 -0
  17. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-RendererError-DtNihCIX-DtNihCIX.mjs +58 -0
  18. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-RendererError-DtNihCIX-DtNihCIX.mjs.map +1 -0
  19. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-UobTf36G.mjs +5835 -0
  20. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-UobTf36G.mjs.map +1 -0
  21. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-base.types-D5x7QPey-D5x7QPey.mjs +17 -0
  22. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-base.types-D5x7QPey-D5x7QPey.mjs.map +1 -0
  23. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index--7d8Hgi0-D-sg24Qs.mjs +284 -0
  24. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index--7d8Hgi0-D-sg24Qs.mjs.map +1 -0
  25. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-6dZS_Cfs-B1itLV5R.mjs +703 -0
  26. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-6dZS_Cfs-B1itLV5R.mjs.map +1 -0
  27. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B1ANUCTy-BRs7TMLn.mjs +231 -0
  28. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B1ANUCTy-BRs7TMLn.mjs.map +1 -0
  29. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BEaqpRV8-BidVIVlO.mjs +552 -0
  30. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BEaqpRV8-BidVIVlO.mjs.map +1 -0
  31. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BGqTRZbm-CAOLRw20.mjs +688 -0
  32. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BGqTRZbm-CAOLRw20.mjs.map +1 -0
  33. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Bv3JRXKn-B4Wewc-4.mjs +273 -0
  34. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Bv3JRXKn-B4Wewc-4.mjs.map +1 -0
  35. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C0McUoqT-DJ35bhIz.mjs +288 -0
  36. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C0McUoqT-DJ35bhIz.mjs.map +1 -0
  37. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C518mdUd-B5SCzrzU.mjs +550 -0
  38. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C518mdUd-B5SCzrzU.mjs.map +1 -0
  39. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CDjKPqyW-CmX5sdkL.mjs +102 -0
  40. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CDjKPqyW-CmX5sdkL.mjs.map +1 -0
  41. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CHi9tOe0-NOeQYAnM.mjs +516 -0
  42. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CHi9tOe0-NOeQYAnM.mjs.map +1 -0
  43. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CQwhffym-DAGw4Xy_.mjs +823 -0
  44. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CQwhffym-DAGw4Xy_.mjs.map +1 -0
  45. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CSCTj7ft-BfqruUyY.mjs +164 -0
  46. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CSCTj7ft-BfqruUyY.mjs.map +1 -0
  47. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cb1RLXeO-Bj9gjS1Z.mjs +655 -0
  48. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cb1RLXeO-Bj9gjS1Z.mjs.map +1 -0
  49. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cw90Kdyg-BzrW_cyx.mjs +207 -0
  50. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cw90Kdyg-BzrW_cyx.mjs.map +1 -0
  51. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D35x1nwM-CugEEXjg.mjs +199 -0
  52. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D35x1nwM-CugEEXjg.mjs.map +1 -0
  53. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D9jJNzeM-mWX59Aj2.mjs +194 -0
  54. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D9jJNzeM-mWX59Aj2.mjs.map +1 -0
  55. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DbmuvdvN-C29uLyt2.mjs +94 -0
  56. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DbmuvdvN-C29uLyt2.mjs.map +1 -0
  57. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DsNNZ59Q-C8MaSME6.mjs +468 -0
  58. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DsNNZ59Q-C8MaSME6.mjs.map +1 -0
  59. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DufW2Fuc-CTosCut6.mjs +193 -0
  60. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DufW2Fuc-CTosCut6.mjs.map +1 -0
  61. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-TSTa_Q7E-DBhkL6pV.mjs +184 -0
  62. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-TSTa_Q7E-DBhkL6pV.mjs.map +1 -0
  63. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-pG0Ko5mI-DthQJg-X.mjs +492 -0
  64. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-pG0Ko5mI-DthQJg-X.mjs.map +1 -0
  65. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-CL9cG481-BKfwdOpN.mjs +68 -0
  66. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-CL9cG481-BKfwdOpN.mjs.map +1 -0
  67. package/lib/fesm2022/eternalheart-angular-file-preview-heicLoader-CH_raQNn-BSXHd_oi.mjs +36 -0
  68. package/lib/fesm2022/eternalheart-angular-file-preview-heicLoader-CH_raQNn-BSXHd_oi.mjs.map +1 -0
  69. package/lib/fesm2022/eternalheart-angular-file-preview-jp2Loader-ldvCSsvm-DJEhfimG.mjs +121 -0
  70. package/lib/fesm2022/eternalheart-angular-file-preview-jp2Loader-ldvCSsvm-DJEhfimG.mjs.map +1 -0
  71. package/lib/fesm2022/eternalheart-angular-file-preview-psdLoader-D5CkupyY-D5Gegcdg.mjs +78 -0
  72. package/lib/fesm2022/eternalheart-angular-file-preview-psdLoader-D5CkupyY-D5Gegcdg.mjs.map +1 -0
  73. package/lib/fesm2022/eternalheart-angular-file-preview-rawLoader-0mLvxCNp-CCXn9Rdp.mjs +81 -0
  74. package/lib/fesm2022/eternalheart-angular-file-preview-rawLoader-0mLvxCNp-CCXn9Rdp.mjs.map +1 -0
  75. package/lib/fesm2022/eternalheart-angular-file-preview-tiffLoader-CmUAD1vO-0JqIws9t.mjs +59 -0
  76. package/lib/fesm2022/eternalheart-angular-file-preview-tiffLoader-CmUAD1vO-0JqIws9t.mjs.map +1 -0
  77. package/lib/fesm2022/eternalheart-angular-file-preview.mjs +2 -0
  78. package/lib/fesm2022/eternalheart-angular-file-preview.mjs.map +1 -0
  79. package/lib/file-preview-content.d.ts +65 -0
  80. package/lib/file-preview-embed.d.ts +30 -0
  81. package/lib/file-preview-modal.d.ts +34 -0
  82. package/lib/fp-core.d.ts +1 -0
  83. package/lib/index.css +2119 -0
  84. package/lib/index.d.ts +11 -0
  85. package/lib/renderers/Audio/index.d.ts +74 -0
  86. package/lib/renderers/Cad/index.d.ts +45 -0
  87. package/lib/renderers/Cad/toolbar.d.ts +15 -0
  88. package/lib/renderers/Csv/index.d.ts +26 -0
  89. package/lib/renderers/Doc/index.d.ts +19 -0
  90. package/lib/renderers/Docx/index.d.ts +42 -0
  91. package/lib/renderers/Epub/index.d.ts +57 -0
  92. package/lib/renderers/Font/font-preview-line.d.ts +26 -0
  93. package/lib/renderers/Font/index.d.ts +52 -0
  94. package/lib/renderers/Image/index.d.ts +79 -0
  95. package/lib/renderers/Json/index.d.ts +61 -0
  96. package/lib/renderers/Markdown/index.d.ts +35 -0
  97. package/lib/renderers/Mobi/index.d.ts +51 -0
  98. package/lib/renderers/Msg/index.d.ts +47 -0
  99. package/lib/renderers/Pdf/index.d.ts +55 -0
  100. package/lib/renderers/Ppt/index.d.ts +19 -0
  101. package/lib/renderers/Pptx/index.d.ts +29 -0
  102. package/lib/renderers/RendererError.d.ts +9 -0
  103. package/lib/renderers/RendererLoading.d.ts +7 -0
  104. package/lib/renderers/Subtitle/index.d.ts +25 -0
  105. package/lib/renderers/Text/index.d.ts +29 -0
  106. package/lib/renderers/Unsupported/index.d.ts +15 -0
  107. package/lib/renderers/Video/index.d.ts +28 -0
  108. package/lib/renderers/Xlsx/index.d.ts +25 -0
  109. package/lib/renderers/Xml/index.d.ts +26 -0
  110. package/lib/renderers/Zip/index.d.ts +58 -0
  111. package/lib/renderers/Zip/tree-item.d.ts +29 -0
  112. package/lib/renderers/base.types.d.ts +10 -0
  113. package/lib/renderers/lazy.d.ts +23 -0
  114. package/lib/renderers/registry.d.ts +13 -0
  115. package/lib/renderers/toolbar.types.d.ts +19 -0
  116. package/lib/types.d.ts +26 -0
  117. package/lib/utils/audio-player.d.ts +20 -0
  118. package/lib/utils/shiki-highlight.d.ts +7 -0
  119. package/package.json +119 -0
@@ -0,0 +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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"}