@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DWe1kVtU-CJlU6sOy.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-DWe1kVtU.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { signal, input, inject, DestroyRef, viewChild, computed, effect, untracked, afterNextRender, ChangeDetectionStrategy, Component } from '@angular/core';\nimport * as i1 from 'lucide-angular';\nimport { AudioLines, Play, Pause, SkipBack, SkipForward, Repeat, VolumeX, Volume1, Volume2, LucideAngularModule } from 'lucide-angular';\nimport { L as LocaleService, g as getFallbackTranslator } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-Dnuf7kun.mjs';\nimport { formatTime } from '@eternalheart/file-preview-core';\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\nfunction createAudioPlayer() {\n const isPlaying = signal(false);\n const isLoading = signal(true);\n const currentTime = signal(0);\n const duration = signal(0);\n const volume = signal(1);\n const isMuted = signal(false);\n const isLoop = signal(false);\n const error = signal(null);\n let audio = null;\n let unbind = null;\n const bind = (el) => {\n unbind?.();\n unbind = null;\n audio = el;\n if (!el)\n return;\n isLoading.set(true);\n error.set(null);\n const onTimeUpdate = () => {\n if (!isNaN(el.currentTime))\n currentTime.set(el.currentTime);\n };\n const onDurationChange = () => {\n if (!isNaN(el.duration) && isFinite(el.duration))\n duration.set(el.duration);\n };\n const onCanPlay = () => {\n isLoading.set(false);\n onDurationChange();\n };\n const onWaiting = () => isLoading.set(true);\n const onPlaying = () => {\n isLoading.set(false);\n isPlaying.set(true);\n };\n const onPlay = () => isPlaying.set(true);\n const onPause = () => isPlaying.set(false);\n const onEnded = () => isPlaying.set(false);\n const onError = () => {\n error.set('audio.load_failed');\n isLoading.set(false);\n };\n el.addEventListener('timeupdate', onTimeUpdate);\n el.addEventListener('loadedmetadata', onDurationChange);\n el.addEventListener('durationchange', onDurationChange);\n el.addEventListener('canplay', onCanPlay);\n el.addEventListener('waiting', onWaiting);\n el.addEventListener('playing', onPlaying);\n el.addEventListener('play', onPlay);\n el.addEventListener('pause', onPause);\n el.addEventListener('ended', onEnded);\n el.addEventListener('error', onError);\n if (el.readyState >= 3) {\n isLoading.set(false);\n onDurationChange();\n }\n unbind = () => {\n el.removeEventListener('timeupdate', onTimeUpdate);\n el.removeEventListener('loadedmetadata', onDurationChange);\n el.removeEventListener('durationchange', onDurationChange);\n el.removeEventListener('canplay', onCanPlay);\n el.removeEventListener('waiting', onWaiting);\n el.removeEventListener('playing', onPlaying);\n el.removeEventListener('play', onPlay);\n el.removeEventListener('pause', onPause);\n el.removeEventListener('ended', onEnded);\n el.removeEventListener('error', onError);\n };\n };\n const togglePlay = () => {\n if (!audio)\n return;\n if (audio.paused)\n void audio.play();\n else\n audio.pause();\n };\n const seek = (time) => {\n if (!audio)\n return;\n audio.currentTime = time;\n currentTime.set(time);\n };\n const skip = (seconds) => {\n if (!audio)\n return;\n audio.currentTime = Math.max(0, Math.min(audio.currentTime + seconds, audio.duration || Infinity));\n currentTime.set(audio.currentTime);\n };\n const setVolume = (v) => {\n volume.set(v);\n if (audio)\n audio.volume = v;\n if (v > 0 && isMuted()) {\n isMuted.set(false);\n if (audio)\n audio.muted = false;\n }\n };\n const toggleMute = () => {\n const next = !isMuted();\n isMuted.set(next);\n if (audio)\n audio.muted = next;\n };\n const toggleLoop = () => {\n const next = !isLoop();\n isLoop.set(next);\n if (audio)\n audio.loop = next;\n };\n const formattedCurrent = () => formatTime(currentTime());\n const formattedDuration = () => formatTime(duration());\n const destroy = () => {\n unbind?.();\n unbind = null;\n audio = null;\n };\n return {\n isPlaying,\n isLoading,\n currentTime,\n duration,\n volume,\n isMuted,\n isLoop,\n error,\n bind,\n togglePlay,\n seek,\n skip,\n setVolume,\n toggleMute,\n toggleLoop,\n formattedCurrent,\n formattedDuration,\n destroy,\n };\n}\n\nclass AudioRenderer {\n constructor() {\n this.url = input.required();\n this.fileName = input.required();\n this.emitter = new ToolbarEventEmitter();\n this.locale = inject(LocaleService, { optional: true });\n this.destroyRef = inject(DestroyRef);\n this.t = this.locale?.t() ?? getFallbackTranslator();\n this.formatTime = formatTime;\n this.Math = Math;\n this.audioLinesIcon = AudioLines;\n this.playIcon = Play;\n this.pauseIcon = Pause;\n this.skipBackIcon = SkipBack;\n this.skipForwardIcon = SkipForward;\n this.repeatIcon = Repeat;\n this.player = createAudioPlayer();\n this.isPlaying = this.player.isPlaying;\n this.isLoop = this.player.isLoop;\n this.currentTime = this.player.currentTime;\n this.duration = this.player.duration;\n this.volume = this.player.volume;\n this.isMuted = this.player.isMuted;\n this.error = this.player.error;\n this.togglePlay = this.player.togglePlay;\n this.toggleMute = this.player.toggleMute;\n this.toggleLoop = this.player.toggleLoop;\n this.showVolume = signal(false);\n this.isDragging = signal(false);\n this.dragTime = signal(0);\n this.volumeRef = viewChild('volumeRef');\n this.audioEl = viewChild('audioRef');\n this.volumeHideTimer = null;\n this.bindRaf = 0;\n this.displayTime = computed(() => this.isDragging() ? this.dragTime() : this.currentTime());\n this.progress = computed(() => this.duration() > 0 ? this.displayTime() / this.duration() : 0);\n this.volumeIcon = computed(() => {\n if (this.isMuted() || this.volume() === 0)\n return VolumeX;\n if (this.volume() < 0.5)\n return Volume1;\n return Volume2;\n });\n this.getToolbarGroups = () => [];\n this.onToolbarChange = (listener) => this.emitter.subscribe(listener);\n this.handleClickOutside = (e) => {\n const el = this.volumeRef()?.nativeElement;\n if (el && !el.contains(e.target)) {\n this.showVolume.set(false);\n }\n };\n effect(() => {\n this.url();\n const el = this.audioEl()?.nativeElement ?? null;\n untracked(() => {\n cancelAnimationFrame(this.bindRaf);\n this.bindRaf = requestAnimationFrame(() => {\n this.player.bind(el);\n });\n });\n });\n afterNextRender(() => {\n document.addEventListener('mousedown', this.handleClickOutside);\n });\n this.destroyRef.onDestroy(() => {\n document.removeEventListener('mousedown', this.handleClickOutside);\n if (this.volumeHideTimer !== null)\n clearTimeout(this.volumeHideTimer);\n cancelAnimationFrame(this.bindRaf);\n this.player.destroy();\n });\n }\n skip(seconds) {\n const dur = this.duration();\n const next = Math.max(0, Math.min(this.currentTime() + seconds, dur || Infinity));\n this.player.seek(next);\n }\n onProgressPointerDown() {\n this.dragTime.set(this.currentTime());\n this.isDragging.set(true);\n }\n onProgressInput(e) {\n const value = parseFloat(e.target.value);\n if (this.isDragging()) {\n this.dragTime.set(value);\n }\n else {\n this.player.seek(value);\n }\n }\n onProgressPointerUp(e) {\n const value = parseFloat(e.target.value);\n this.player.seek(value);\n this.isDragging.set(false);\n }\n onVolumeInput(e) {\n this.player.setVolume(parseFloat(e.target.value));\n }\n handleVolumeEnter() {\n if (this.volumeHideTimer !== null)\n clearTimeout(this.volumeHideTimer);\n this.showVolume.set(true);\n }\n handleVolumeLeave() {\n this.volumeHideTimer = window.setTimeout(() => {\n this.showVolume.set(false);\n }, 300);\n }\n progressFillStyle() {\n return `width:${this.progress() * 100}%;background:var(--fp-player-progress);transition:${this.isDragging() ? 'none' : 'width 0.1s linear'}`;\n }\n playBtnStyle() {\n return 'background:var(--fp-player-progress);color:var(--fp-fg-inverse)';\n }\n volumeFillStyle() {\n const h = (this.isMuted() ? 0 : this.volume()) * 100;\n return `width:3px;height:${h}%;background:var(--fp-player-progress);transition:height 0.1s linear`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: AudioRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: AudioRenderer, isStandalone: true, selector: \"afp-audio-renderer\", inputs: { url: { classPropertyName: \"url\", publicName: \"url\", isSignal: true, isRequired: true, transformFunction: null }, fileName: { classPropertyName: \"fileName\", publicName: \"fileName\", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: \"afp-block afp-w-full afp-h-full\" }, viewQueries: [{ propertyName: \"volumeRef\", first: true, predicate: [\"volumeRef\"], descendants: true, isSignal: true }, { propertyName: \"audioEl\", first: true, predicate: [\"audioRef\"], descendants: true, isSignal: true }], ngImport: i0, template: `\n @if (error(); as err) {\n <afp-renderer-error [message]=\"t(err)\" />\n } @else {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full afp-p-4 afp-select-none afp-overflow-auto\">\n <div class=\"afp-w-full afp-max-w-xl afp-flex-shrink-0 afp-rounded-lg afp-border afp-border-line-weak afp-bg-surface-1 afp-p-4\">\n <div class=\"afp-flex afp-items-center afp-gap-3 afp-mb-4\">\n <div\n aria-hidden=\"true\"\n class=\"afp-audio-mark afp-w-10 afp-h-10 afp-flex afp-items-center afp-justify-center afp-rounded-md afp-flex-shrink-0\"\n [class.afp-audio-mark-playing]=\"isPlaying()\"\n >\n <i-lucide [img]=\"audioLinesIcon\" class=\"afp-w-5 afp-h-5\" />\n </div>\n <div class=\"afp-min-w-0 afp-flex-1 afp-truncate afp-text-sm afp-font-medium afp-text-fg-primary\">\n {{ fileName() }}\n </div>\n </div>\n\n <div class=\"afp-flex afp-items-center afp-gap-3 afp-mb-4\">\n <span class=\"afp-w-9 afp-flex-shrink-0 afp-text-right afp-text-[11px] afp-text-fg-tertiary afp-tabular-nums\">\n {{ formatTime(displayTime()) }}\n </span>\n <div class=\"afp-relative afp-h-4 afp-flex afp-flex-1 afp-items-center\">\n <div class=\"afp-absolute afp-left-[6px] afp-right-[6px] afp-h-[3px] afp-rounded-full afp-bg-surface-3\">\n <div\n class=\"afp-h-full afp-rounded-full afp-pointer-events-none\"\n [attr.style]=\"progressFillStyle()\"\n ></div>\n </div>\n <input\n type=\"range\"\n min=\"0\"\n [max]=\"duration() > 0 ? duration() : currentTime() || 100\"\n step=\"any\"\n [value]=\"displayTime()\"\n [disabled]=\"duration() <= 0\"\n [attr.aria-label]=\"t('audio.aria.progress')\"\n class=\"audio-slider afp-absolute afp-w-full\"\n (pointerdown)=\"onProgressPointerDown()\"\n (input)=\"onProgressInput($event)\"\n (pointerup)=\"onProgressPointerUp($event)\"\n (pointercancel)=\"isDragging.set(false)\"\n />\n </div>\n <span class=\"afp-w-9 afp-flex-shrink-0 afp-text-[11px] afp-text-fg-tertiary afp-tabular-nums\">\n {{ duration() > 0 ? formatTime(duration()) : '--:--' }}\n </span>\n </div>\n\n <div class=\"afp-flex afp-items-center afp-gap-1\">\n <button\n type=\"button\"\n class=\"afp-audio-control afp-w-10 afp-h-10 afp-rounded-md afp-flex afp-items-center afp-justify-center afp-flex-shrink-0\"\n [attr.style]=\"playBtnStyle()\"\n [attr.title]=\"isPlaying() ? t('audio.aria.pause') : t('audio.aria.play')\"\n [attr.aria-label]=\"isPlaying() ? t('audio.aria.pause') : t('audio.aria.play')\"\n (click)=\"togglePlay()\"\n >\n @if (isPlaying()) {\n <i-lucide [img]=\"pauseIcon\" class=\"afp-w-5 afp-h-5\" />\n } @else {\n <i-lucide [img]=\"playIcon\" class=\"afp-w-5 afp-h-5 afp-ml-0.5\" />\n }\n </button>\n\n <button\n type=\"button\"\n class=\"afp-audio-control afp-w-9 afp-h-9 afp-rounded-md afp-flex afp-items-center afp-justify-center afp-transition-colors afp-text-fg-secondary hover:afp-bg-surface-3 afp-flex-shrink-0\"\n [attr.title]=\"t('audio.aria.backward_10')\"\n [attr.aria-label]=\"t('audio.aria.backward_10')\"\n (click)=\"skip(-10)\"\n >\n <i-lucide [img]=\"skipBackIcon\" class=\"afp-w-[18px] afp-h-[18px]\" />\n </button>\n\n <button\n type=\"button\"\n class=\"afp-audio-control afp-w-9 afp-h-9 afp-rounded-md afp-flex afp-items-center afp-justify-center afp-transition-colors afp-text-fg-secondary hover:afp-bg-surface-3 afp-flex-shrink-0\"\n [attr.title]=\"t('audio.aria.forward_10')\"\n [attr.aria-label]=\"t('audio.aria.forward_10')\"\n (click)=\"skip(10)\"\n >\n <i-lucide [img]=\"skipForwardIcon\" class=\"afp-w-[18px] afp-h-[18px]\" />\n </button>\n\n <div class=\"afp-w-px afp-h-5 afp-mx-1 afp-bg-divide\"></div>\n\n <button\n type=\"button\"\n class=\"afp-audio-control afp-w-9 afp-h-9 afp-rounded-md afp-flex afp-items-center afp-justify-center afp-transition-colors afp-flex-shrink-0\"\n [class.afp-bg-surface-3]=\"isLoop()\"\n [class.afp-text-fg-primary]=\"isLoop()\"\n [class.afp-text-fg-tertiary]=\"!isLoop()\"\n [attr.title]=\"isLoop() ? t('audio.aria.loop_off') : t('audio.aria.loop_on')\"\n [attr.aria-label]=\"isLoop() ? t('audio.aria.loop_off') : t('audio.aria.loop_on')\"\n (click)=\"toggleLoop()\"\n >\n <i-lucide [img]=\"repeatIcon\" class=\"afp-w-4 afp-h-4\" />\n </button>\n\n <div class=\"afp-flex-1\"></div>\n\n <div\n #volumeRef\n class=\"afp-relative\"\n (mouseenter)=\"handleVolumeEnter()\"\n (mouseleave)=\"handleVolumeLeave()\"\n >\n <button\n type=\"button\"\n class=\"afp-audio-control afp-w-9 afp-h-9 afp-rounded-md afp-flex afp-items-center afp-justify-center afp-transition-colors afp-flex-shrink-0\"\n [class.afp-bg-surface-3]=\"showVolume()\"\n [class.afp-text-fg-primary]=\"showVolume()\"\n [class.afp-text-fg-secondary]=\"!showVolume()\"\n [attr.title]=\"isMuted() ? t('audio.aria.unmute') : t('audio.aria.mute')\"\n [attr.aria-label]=\"isMuted() ? t('audio.aria.unmute') : t('audio.aria.mute')\"\n (click)=\"toggleMute()\"\n >\n <i-lucide [img]=\"volumeIcon()\" class=\"afp-w-4 afp-h-4\" />\n </button>\n\n @if (showVolume()) {\n <div\n class=\"afp-absolute afp-right-0 afp-bottom-full afp-mb-2 afp-w-[54px] afp-rounded-md afp-p-3 afp-border afp-bg-surface-toolbar afp-border-line afp-volume-popup\"\n (mouseenter)=\"handleVolumeEnter()\"\n (mouseleave)=\"handleVolumeLeave()\"\n >\n <div class=\"afp-flex afp-flex-col afp-items-center afp-gap-2\" style=\"height: 100px\">\n <div class=\"afp-relative afp-flex afp-items-center afp-justify-center\" style=\"width: 24px; height: 80px\">\n <div class=\"afp-absolute afp-rounded-full afp-bg-surface-2\" style=\"width: 3px; height: 100%\"></div>\n <div\n class=\"afp-absolute afp-bottom-0 afp-rounded-full afp-pointer-events-none\"\n [attr.style]=\"volumeFillStyle()\"\n ></div>\n <input\n type=\"range\"\n min=\"0\"\n max=\"1\"\n step=\"0.01\"\n [value]=\"isMuted() ? 0 : volume()\"\n [attr.aria-label]=\"t('audio.aria.volume')\"\n class=\"volume-slider-vertical afp-absolute\"\n style=\"width: 80px; height: 24px; transform: rotate(-90deg); transform-origin: center center\"\n (input)=\"onVolumeInput($event)\"\n />\n </div>\n <span class=\"afp-text-[10px] afp-tabular-nums afp-text-fg-tertiary\">\n {{ Math.round((isMuted() ? 0 : volume()) * 100) }}\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n\n <audio #audioRef [src]=\"url()\" class=\"afp-hidden\"></audio>\n </div>\n }\n `, isInline: true, styles: [\".afp-volume-popup{animation:afp-fade-in .2s ease}@keyframes afp-fade-in{0%{opacity:0}to{opacity:1}}\\n\"], 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: AudioRenderer, decorators: [{\n type: Component,\n args: [{ selector: 'afp-audio-renderer', standalone: true, imports: [LucideAngularModule, RendererError], changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'afp-block afp-w-full afp-h-full' }, template: `\n @if (error(); as err) {\n <afp-renderer-error [message]=\"t(err)\" />\n } @else {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full afp-p-4 afp-select-none afp-overflow-auto\">\n <div class=\"afp-w-full afp-max-w-xl afp-flex-shrink-0 afp-rounded-lg afp-border afp-border-line-weak afp-bg-surface-1 afp-p-4\">\n <div class=\"afp-flex afp-items-center afp-gap-3 afp-mb-4\">\n <div\n aria-hidden=\"true\"\n class=\"afp-audio-mark afp-w-10 afp-h-10 afp-flex afp-items-center afp-justify-center afp-rounded-md afp-flex-shrink-0\"\n [class.afp-audio-mark-playing]=\"isPlaying()\"\n >\n <i-lucide [img]=\"audioLinesIcon\" class=\"afp-w-5 afp-h-5\" />\n </div>\n <div class=\"afp-min-w-0 afp-flex-1 afp-truncate afp-text-sm afp-font-medium afp-text-fg-primary\">\n {{ fileName() }}\n </div>\n </div>\n\n <div class=\"afp-flex afp-items-center afp-gap-3 afp-mb-4\">\n <span class=\"afp-w-9 afp-flex-shrink-0 afp-text-right afp-text-[11px] afp-text-fg-tertiary afp-tabular-nums\">\n {{ formatTime(displayTime()) }}\n </span>\n <div class=\"afp-relative afp-h-4 afp-flex afp-flex-1 afp-items-center\">\n <div class=\"afp-absolute afp-left-[6px] afp-right-[6px] afp-h-[3px] afp-rounded-full afp-bg-surface-3\">\n <div\n class=\"afp-h-full afp-rounded-full afp-pointer-events-none\"\n [attr.style]=\"progressFillStyle()\"\n ></div>\n </div>\n <input\n type=\"range\"\n min=\"0\"\n [max]=\"duration() > 0 ? duration() : currentTime() || 100\"\n step=\"any\"\n [value]=\"displayTime()\"\n [disabled]=\"duration() <= 0\"\n [attr.aria-label]=\"t('audio.aria.progress')\"\n class=\"audio-slider afp-absolute afp-w-full\"\n (pointerdown)=\"onProgressPointerDown()\"\n (input)=\"onProgressInput($event)\"\n (pointerup)=\"onProgressPointerUp($event)\"\n (pointercancel)=\"isDragging.set(false)\"\n />\n </div>\n <span class=\"afp-w-9 afp-flex-shrink-0 afp-text-[11px] afp-text-fg-tertiary afp-tabular-nums\">\n {{ duration() > 0 ? formatTime(duration()) : '--:--' }}\n </span>\n </div>\n\n <div class=\"afp-flex afp-items-center afp-gap-1\">\n <button\n type=\"button\"\n class=\"afp-audio-control afp-w-10 afp-h-10 afp-rounded-md afp-flex afp-items-center afp-justify-center afp-flex-shrink-0\"\n [attr.style]=\"playBtnStyle()\"\n [attr.title]=\"isPlaying() ? t('audio.aria.pause') : t('audio.aria.play')\"\n [attr.aria-label]=\"isPlaying() ? t('audio.aria.pause') : t('audio.aria.play')\"\n (click)=\"togglePlay()\"\n >\n @if (isPlaying()) {\n <i-lucide [img]=\"pauseIcon\" class=\"afp-w-5 afp-h-5\" />\n } @else {\n <i-lucide [img]=\"playIcon\" class=\"afp-w-5 afp-h-5 afp-ml-0.5\" />\n }\n </button>\n\n <button\n type=\"button\"\n class=\"afp-audio-control afp-w-9 afp-h-9 afp-rounded-md afp-flex afp-items-center afp-justify-center afp-transition-colors afp-text-fg-secondary hover:afp-bg-surface-3 afp-flex-shrink-0\"\n [attr.title]=\"t('audio.aria.backward_10')\"\n [attr.aria-label]=\"t('audio.aria.backward_10')\"\n (click)=\"skip(-10)\"\n >\n <i-lucide [img]=\"skipBackIcon\" class=\"afp-w-[18px] afp-h-[18px]\" />\n </button>\n\n <button\n type=\"button\"\n class=\"afp-audio-control afp-w-9 afp-h-9 afp-rounded-md afp-flex afp-items-center afp-justify-center afp-transition-colors afp-text-fg-secondary hover:afp-bg-surface-3 afp-flex-shrink-0\"\n [attr.title]=\"t('audio.aria.forward_10')\"\n [attr.aria-label]=\"t('audio.aria.forward_10')\"\n (click)=\"skip(10)\"\n >\n <i-lucide [img]=\"skipForwardIcon\" class=\"afp-w-[18px] afp-h-[18px]\" />\n </button>\n\n <div class=\"afp-w-px afp-h-5 afp-mx-1 afp-bg-divide\"></div>\n\n <button\n type=\"button\"\n class=\"afp-audio-control afp-w-9 afp-h-9 afp-rounded-md afp-flex afp-items-center afp-justify-center afp-transition-colors afp-flex-shrink-0\"\n [class.afp-bg-surface-3]=\"isLoop()\"\n [class.afp-text-fg-primary]=\"isLoop()\"\n [class.afp-text-fg-tertiary]=\"!isLoop()\"\n [attr.title]=\"isLoop() ? t('audio.aria.loop_off') : t('audio.aria.loop_on')\"\n [attr.aria-label]=\"isLoop() ? t('audio.aria.loop_off') : t('audio.aria.loop_on')\"\n (click)=\"toggleLoop()\"\n >\n <i-lucide [img]=\"repeatIcon\" class=\"afp-w-4 afp-h-4\" />\n </button>\n\n <div class=\"afp-flex-1\"></div>\n\n <div\n #volumeRef\n class=\"afp-relative\"\n (mouseenter)=\"handleVolumeEnter()\"\n (mouseleave)=\"handleVolumeLeave()\"\n >\n <button\n type=\"button\"\n class=\"afp-audio-control afp-w-9 afp-h-9 afp-rounded-md afp-flex afp-items-center afp-justify-center afp-transition-colors afp-flex-shrink-0\"\n [class.afp-bg-surface-3]=\"showVolume()\"\n [class.afp-text-fg-primary]=\"showVolume()\"\n [class.afp-text-fg-secondary]=\"!showVolume()\"\n [attr.title]=\"isMuted() ? t('audio.aria.unmute') : t('audio.aria.mute')\"\n [attr.aria-label]=\"isMuted() ? t('audio.aria.unmute') : t('audio.aria.mute')\"\n (click)=\"toggleMute()\"\n >\n <i-lucide [img]=\"volumeIcon()\" class=\"afp-w-4 afp-h-4\" />\n </button>\n\n @if (showVolume()) {\n <div\n class=\"afp-absolute afp-right-0 afp-bottom-full afp-mb-2 afp-w-[54px] afp-rounded-md afp-p-3 afp-border afp-bg-surface-toolbar afp-border-line afp-volume-popup\"\n (mouseenter)=\"handleVolumeEnter()\"\n (mouseleave)=\"handleVolumeLeave()\"\n >\n <div class=\"afp-flex afp-flex-col afp-items-center afp-gap-2\" style=\"height: 100px\">\n <div class=\"afp-relative afp-flex afp-items-center afp-justify-center\" style=\"width: 24px; height: 80px\">\n <div class=\"afp-absolute afp-rounded-full afp-bg-surface-2\" style=\"width: 3px; height: 100%\"></div>\n <div\n class=\"afp-absolute afp-bottom-0 afp-rounded-full afp-pointer-events-none\"\n [attr.style]=\"volumeFillStyle()\"\n ></div>\n <input\n type=\"range\"\n min=\"0\"\n max=\"1\"\n step=\"0.01\"\n [value]=\"isMuted() ? 0 : volume()\"\n [attr.aria-label]=\"t('audio.aria.volume')\"\n class=\"volume-slider-vertical afp-absolute\"\n style=\"width: 80px; height: 24px; transform: rotate(-90deg); transform-origin: center center\"\n (input)=\"onVolumeInput($event)\"\n />\n </div>\n <span class=\"afp-text-[10px] afp-tabular-nums afp-text-fg-tertiary\">\n {{ Math.round((isMuted() ? 0 : volume()) * 100) }}\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n\n <audio #audioRef [src]=\"url()\" class=\"afp-hidden\"></audio>\n </div>\n }\n `, styles: [\".afp-volume-popup{animation:afp-fade-in .2s ease}@keyframes afp-fade-in{0%{opacity:0}to{opacity:1}}\\n\"] }]\n }], ctorParameters: () => [] });\n\nexport { AudioRenderer };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-DWe1kVtU.mjs.map\n"],"names":["formatTime"],"mappings":";;;;;;;;AASA,SAAS,iBAAiB,GAAG;AAC7B,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;AACnC,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;AAClC,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC;AACjC,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC;AAC9B,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;AAC5B,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AAChC,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;AAC9B,IAAI,IAAI,KAAK,GAAG,IAAI;AACpB,IAAI,IAAI,MAAM,GAAG,IAAI;AACrB,IAAI,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK;AACzB,QAAQ,MAAM,IAAI;AAClB,QAAQ,MAAM,GAAG,IAAI;AACrB,QAAQ,KAAK,GAAG,EAAE;AAClB,QAAQ,IAAI,CAAC,EAAE;AACf,YAAY;AACZ,QAAQ,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,QAAQ,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,QAAQ,MAAM,YAAY,GAAG,MAAM;AACnC,YAAY,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC;AACtC,gBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC;AAC/C,QAAQ,CAAC;AACT,QAAQ,MAAM,gBAAgB,GAAG,MAAM;AACvC,YAAY,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC;AAC5D,gBAAgB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC;AACzC,QAAQ,CAAC;AACT,QAAQ,MAAM,SAAS,GAAG,MAAM;AAChC,YAAY,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,YAAY,gBAAgB,EAAE;AAC9B,QAAQ,CAAC;AACT,QAAQ,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACnD,QAAQ,MAAM,SAAS,GAAG,MAAM;AAChC,YAAY,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,YAAY,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,QAAQ,CAAC;AACT,QAAQ,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AAChD,QAAQ,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AAClD,QAAQ,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AAClD,QAAQ,MAAM,OAAO,GAAG,MAAM;AAC9B,YAAY,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAC1C,YAAY,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC;AACvD,QAAQ,EAAE,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AAC/D,QAAQ,EAAE,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AAC/D,QAAQ,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;AACjD,QAAQ,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;AACjD,QAAQ,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;AACjD,QAAQ,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3C,QAAQ,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC;AAC7C,QAAQ,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC;AAC7C,QAAQ,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC;AAC7C,QAAQ,IAAI,EAAE,CAAC,UAAU,IAAI,CAAC,EAAE;AAChC,YAAY,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,YAAY,gBAAgB,EAAE;AAC9B,QAAQ;AACR,QAAQ,MAAM,GAAG,MAAM;AACvB,YAAY,EAAE,CAAC,mBAAmB,CAAC,YAAY,EAAE,YAAY,CAAC;AAC9D,YAAY,EAAE,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AACtE,YAAY,EAAE,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AACtE,YAAY,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;AACxD,YAAY,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;AACxD,YAAY,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;AACxD,YAAY,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC;AAClD,YAAY,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AACpD,YAAY,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AACpD,YAAY,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AACpD,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,MAAM,UAAU,GAAG,MAAM;AAC7B,QAAQ,IAAI,CAAC,KAAK;AAClB,YAAY;AACZ,QAAQ,IAAI,KAAK,CAAC,MAAM;AACxB,YAAY,KAAK,KAAK,CAAC,IAAI,EAAE;AAC7B;AACA,YAAY,KAAK,CAAC,KAAK,EAAE;AACzB,IAAI,CAAC;AACL,IAAI,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK;AAC3B,QAAQ,IAAI,CAAC,KAAK;AAClB,YAAY;AACZ,QAAQ,KAAK,CAAC,WAAW,GAAG,IAAI;AAChC,QAAQ,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,IAAI,CAAC;AACL,IAAI,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK;AAC9B,QAAQ,IAAI,CAAC,KAAK;AAClB,YAAY;AACZ,QAAQ,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,OAAO,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;AAC1G,QAAQ,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;AAC1C,IAAI,CAAC;AACL,IAAI,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK;AAC7B,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,QAAQ,IAAI,KAAK;AACjB,YAAY,KAAK,CAAC,MAAM,GAAG,CAAC;AAC5B,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,EAAE;AAChC,YAAY,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,YAAY,IAAI,KAAK;AACrB,gBAAgB,KAAK,CAAC,KAAK,GAAG,KAAK;AACnC,QAAQ;AACR,IAAI,CAAC;AACL,IAAI,MAAM,UAAU,GAAG,MAAM;AAC7B,QAAQ,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE;AAC/B,QAAQ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,QAAQ,IAAI,KAAK;AACjB,YAAY,KAAK,CAAC,KAAK,GAAG,IAAI;AAC9B,IAAI,CAAC;AACL,IAAI,MAAM,UAAU,GAAG,MAAM;AAC7B,QAAQ,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE;AAC9B,QAAQ,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAQ,IAAI,KAAK;AACjB,YAAY,KAAK,CAAC,IAAI,GAAG,IAAI;AAC7B,IAAI,CAAC;AACL,IAAI,MAAM,gBAAgB,GAAG,MAAMA,EAAU,CAAC,WAAW,EAAE,CAAC;AAC5D,IAAI,MAAM,iBAAiB,GAAG,MAAMA,EAAU,CAAC,QAAQ,EAAE,CAAC;AAC1D,IAAI,MAAM,OAAO,GAAG,MAAM;AAC1B,QAAQ,MAAM,IAAI;AAClB,QAAQ,MAAM,GAAG,IAAI;AACrB,QAAQ,KAAK,GAAG,IAAI;AACpB,IAAI,CAAC;AACL,IAAI,OAAO;AACX,QAAQ,SAAS;AACjB,QAAQ,SAAS;AACjB,QAAQ,WAAW;AACnB,QAAQ,QAAQ;AAChB,QAAQ,MAAM;AACd,QAAQ,OAAO;AACf,QAAQ,MAAM;AACd,QAAQ,KAAK;AACb,QAAQ,IAAI;AACZ,QAAQ,UAAU;AAClB,QAAQ,IAAI;AACZ,QAAQ,IAAI;AACZ,QAAQ,SAAS;AACjB,QAAQ,UAAU;AAClB,QAAQ,UAAU;AAClB,QAAQ,gBAAgB;AACxB,QAAQ,iBAAiB;AACzB,QAAQ,OAAO;AACf,KAAK;AACL;;AAEA,MAAM,aAAa,CAAC;AACpB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE;AACnC,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE;AACxC,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAmB,EAAE;AAChD,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC/D,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5C,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,qBAAqB,EAAE;AAC5D,QAAQ,IAAI,CAAC,UAAU,GAAGA,EAAU;AACpC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,cAAc,GAAG,UAAU;AACxC,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC5B,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK;AAC9B,QAAQ,IAAI,CAAC,YAAY,GAAG,QAAQ;AACpC,QAAQ,IAAI,CAAC,eAAe,GAAG,WAAW;AAC1C,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM;AAChC,QAAQ,IAAI,CAAC,MAAM,GAAG,iBAAiB,EAAE;AACzC,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;AAC9C,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AACxC,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW;AAClD,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;AAC5C,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AACxC,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;AAC1C,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;AACtC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;AAChD,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;AAChD,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;AAChD,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;AACvC,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;AACvC,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC;AAC/C,QAAQ,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC;AAC5C,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI;AACnC,QAAQ,IAAI,CAAC,OAAO,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACnG,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACtG,QAAQ,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM;AACzC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AACrD,gBAAgB,OAAO,OAAO;AAC9B,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG;AACnC,gBAAgB,OAAO,OAAO;AAC9B,YAAY,OAAO,OAAO;AAC1B,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,EAAE;AACxC,QAAQ,IAAI,CAAC,eAAe,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC7E,QAAQ,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,KAAK;AACzC,YAAY,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa;AACtD,YAAY,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;AAC9C,gBAAgB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1C,YAAY;AACZ,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,MAAM;AACrB,YAAY,IAAI,CAAC,GAAG,EAAE;AACtB,YAAY,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,IAAI,IAAI;AAC5D,YAAY,SAAS,CAAC,MAAM;AAC5B,gBAAgB,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;AAClD,gBAAgB,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC,MAAM;AAC3D,oBAAoB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AACxC,gBAAgB,CAAC,CAAC;AAClB,YAAY,CAAC,CAAC;AACd,QAAQ,CAAC,CAAC;AACV,QAAQ,eAAe,CAAC,MAAM;AAC9B,YAAY,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC;AAC3E,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM;AACxC,YAAY,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC;AAC9E,YAAY,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI;AAC7C,gBAAgB,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;AAClD,YAAY,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9C,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACjC,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AACnC,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC;AACzF,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,IAAI;AACJ,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAC7C,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,IAAI;AACJ,IAAI,eAAe,CAAC,CAAC,EAAE;AACvB,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAChD,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AAC/B,YAAY,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACpC,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACnC,QAAQ;AACR,IAAI;AACJ,IAAI,mBAAmB,CAAC,CAAC,EAAE;AAC3B,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAChD,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAClC,IAAI;AACJ,IAAI,aAAa,CAAC,CAAC,EAAE;AACrB,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzD,IAAI;AACJ,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI;AACzC,YAAY,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;AAC9C,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,IAAI;AACJ,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM;AACvD,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AACtC,QAAQ,CAAC,EAAE,GAAG,CAAC;AACf,IAAI;AACJ,IAAI,iBAAiB,GAAG;AACxB,QAAQ,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC,kDAAkD,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,MAAM,GAAG,mBAAmB,CAAC,CAAC;AACpJ,IAAI;AACJ,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,iEAAiE;AAChF,IAAI;AACJ,IAAI,eAAe,GAAG;AACtB,QAAQ,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG;AAC5D,QAAQ,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,oEAAoE,CAAC;AAC1G,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAChL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,iCAAiC,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE;AACttB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,uGAAuG,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,EAAE,QAAQ,EAAE,oDAAoD,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC,CAAC;AACvkB;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AACxH,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,mBAAmB,EAAE,aAAa,CAAC,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE,EAAE,QAAQ,EAAE;AACrO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,uGAAuG,CAAC,EAAE;AACxH,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;;;;"}
|
|
@@ -3,7 +3,7 @@ import { input, inject, viewChild, signal, afterNextRender, effect, untracked, D
|
|
|
3
3
|
import ePub from '@likecoin/epub-ts';
|
|
4
4
|
import * as i1 from 'lucide-angular';
|
|
5
5
|
import { X, List, ChevronLeft, ChevronRight, Minimize2, Maximize2, LucideAngularModule } from 'lucide-angular';
|
|
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
|
|
|
@@ -549,4 +549,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
549
549
|
}], ctorParameters: () => [] });
|
|
550
550
|
|
|
551
551
|
export { EpubRenderer };
|
|
552
|
-
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-
|
|
552
|
+
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-QydIBtJH-Dw052TRv.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BEaqpRV8-BidVIVlO.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-BEaqpRV8.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { input, inject, viewChild, signal, afterNextRender, effect, untracked, DestroyRef, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';\nimport ePub from '@likecoin/epub-ts';\nimport * as i1 from 'lucide-angular';\nimport { X, List, ChevronLeft, ChevronRight, Minimize2, Maximize2, 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';\n\nconst A4_WIDTH = 794;\nclass EpubRenderer {\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.viewer = viewChild('viewerRef');\n this.xIcon = X;\n this.a4Width = A4_WIDTH;\n this.currentChapter = signal(1);\n this.totalChapters = signal(1);\n this.loading = signal(true);\n this.error = signal(null);\n this.isFullWidth = signal(false);\n this.toc = signal([]);\n this.showToc = signal(false);\n this.activeTocHref = signal('');\n this.mounted = signal(false);\n this.book = null;\n this.rendition = null;\n this.totalLocations = 0;\n this.lastCfi = null;\n this.resizeObserver = null;\n this.resizeTimeout = null;\n this.lastDimensions = { width: 0, height: 0 };\n this.isInitialResize = true;\n this.scrollContainer = null;\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 this.onContainerScroll = () => {\n if (!this.scrollContainer)\n return;\n const node = this.scrollContainer;\n if (node.scrollTop + node.clientHeight >= node.scrollHeight - 200) {\n try {\n const mgr = this.rendition?.manager;\n mgr?.check?.(500, 500);\n }\n catch { /* ignore */ }\n }\n };\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(() => {\n void this.loadEpub();\n this.setupResizeObserver();\n this.reattachScrollListener();\n });\n });\n effect(() => {\n this.currentChapter();\n this.totalChapters();\n this.isFullWidth();\n this.showToc();\n this.toc().length;\n this.emitter.notify();\n });\n inject(DestroyRef).onDestroy(() => {\n if (this.resizeObserver)\n this.resizeObserver.disconnect();\n if (this.resizeTimeout !== null)\n clearTimeout(this.resizeTimeout);\n this.scrollContainer?.removeEventListener('scroll', this.onContainerScroll);\n this.cleanup();\n });\n }\n isActive(href) {\n return href === this.activeTocHref();\n }\n tocButtonStyle(href, sub) {\n const active = this.isActive(href);\n return {\n width: '100%',\n textAlign: 'left',\n padding: sub ? '8px 12px 8px 28px' : '8px 12px',\n fontSize: sub ? '13px' : '14px',\n color: active ? 'white' : (sub ? 'rgba(255,255,255,0.6)' : 'rgba(255,255,255,0.7)'),\n fontWeight: active ? '500' : '400',\n background: active ? 'rgba(255,255,255,0.15)' : 'none',\n border: 'none',\n cursor: 'pointer',\n borderRadius: '4px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n display: 'block',\n transition: 'all 0.15s',\n };\n }\n onTocEnter(ev, href) {\n if (!this.isActive(href)) {\n ev.target.style.background = 'rgba(255,255,255,0.1)';\n }\n }\n onTocLeave(ev, href) {\n if (!this.isActive(href)) {\n ev.target.style.background = 'none';\n }\n }\n handleTocClick(href) {\n this.activeTocHref.set(href);\n this.rendition?.display(href);\n this.showToc.set(false);\n }\n prevPage() {\n this.rendition?.prev();\n }\n nextPage() {\n this.rendition?.next();\n }\n toggleFullWidth() {\n this.isFullWidth.update((v) => !v);\n setTimeout(() => {\n const el = this.viewer()?.nativeElement;\n if (el && this.rendition) {\n this.rendition.resize(el.offsetWidth, el.offsetHeight);\n if (this.lastCfi) {\n this.rendition.display(this.lastCfi);\n }\n this.reattachScrollListener();\n }\n }, 350);\n }\n toggleToc() {\n this.showToc.update((v) => !v);\n }\n cleanup() {\n try {\n this.rendition?.destroy?.();\n }\n catch { /* ignore */ }\n try {\n this.book?.destroy();\n }\n catch { /* ignore */ }\n this.rendition = null;\n this.book = null;\n this.totalLocations = 0;\n this.lastCfi = null;\n }\n async loadEpub() {\n const el = this.viewer()?.nativeElement;\n if (!el)\n return;\n this.loading.set(true);\n this.error.set(null);\n this.toc.set([]);\n this.showToc.set(false);\n el.innerHTML = '';\n this.cleanup();\n try {\n const url = this.url();\n let bookInput = url;\n if (url.startsWith('blob:')) {\n const fetcher = this.request?.fetcher() ?? ((u, init) => fetch(u, init));\n const resp = await fetcher(url);\n bookInput = await resp.arrayBuffer();\n }\n this.book = ePub(bookInput);\n this.rendition = this.book.renderTo(el, {\n manager: 'continuous',\n flow: 'scrolled',\n width: '100%',\n height: '100%',\n });\n this.rendition.themes.register('default', {\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 padding: '40px 60px !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: { 'text-indent': '2em !important', margin: '0.8em 0 !important' },\n h1: { 'text-align': 'center !important', margin: '1.5em 0 1em !important' },\n h2: { margin: '1.2em 0 0.8em !important' },\n h3: { margin: '1em 0 0.6em !important' },\n img: { 'max-width': '100% !important', height: 'auto !important' },\n a: { color: '#2563eb !important', 'text-decoration': 'none !important' },\n });\n this.rendition.themes.select('default');\n await this.book.ready;\n this.book.locations.generate(1024).then(() => {\n if (!this.book)\n return;\n this.totalLocations = this.book.locations.length();\n const loc = this.rendition?.currentLocation();\n const cur = loc?.start?.location ?? 0;\n this.currentChapter.set(cur + 1);\n this.totalChapters.set(this.totalLocations);\n }).catch(() => { });\n const nav = await this.book.loaded.navigation;\n if (Array.isArray(nav?.toc)) {\n this.toc.set(nav.toc);\n }\n await this.rendition.display();\n this.loading.set(false);\n this.currentChapter.set(1);\n this.totalChapters.set(this.totalLocations || 1);\n this.rendition.on('relocated', (location) => {\n const loc = location;\n if (loc?.start?.cfi) {\n this.lastCfi = loc.start.cfi;\n }\n if (loc?.start?.href) {\n const spineHref = loc.start.href;\n const matches = [];\n const collect = (items) => {\n for (const item of items) {\n const base = item.href.split('#')[0];\n if (base && (spineHref === base || spineHref.endsWith('/' + base) || spineHref.endsWith(base))) {\n matches.push(item.href);\n }\n if (item.subitems)\n collect(item.subitems);\n }\n };\n collect(this.toc());\n if (matches.length === 1) {\n this.activeTocHref.set(matches[0]);\n }\n }\n const cur = loc?.start?.location;\n if (typeof cur === 'number' && this.totalLocations > 0) {\n this.currentChapter.set(cur + 1);\n this.totalChapters.set(this.totalLocations);\n }\n });\n }\n catch (err) {\n console.error('EPUB 加载错误:', err);\n this.error.set(this.t('epub.load_failed'));\n this.loading.set(false);\n }\n }\n doResize() {\n const el = this.viewer()?.nativeElement;\n if (!el || !this.rendition)\n return;\n this.rendition.resize(el.offsetWidth, el.offsetHeight);\n if (this.lastCfi) {\n try {\n this.rendition.display(this.lastCfi);\n }\n catch { /* ignore */ }\n }\n this.reattachScrollListener();\n }\n setupResizeObserver() {\n const el = this.viewer()?.nativeElement;\n if (!el)\n return;\n this.resizeObserver?.disconnect();\n this.isInitialResize = true;\n this.resizeObserver = new ResizeObserver(() => {\n const viewer = this.viewer()?.nativeElement;\n if (!viewer)\n return;\n if (this.isInitialResize) {\n this.isInitialResize = false;\n this.lastDimensions = { width: viewer.offsetWidth, height: viewer.offsetHeight };\n return;\n }\n const newDimensions = { width: viewer.offsetWidth, height: viewer.offsetHeight };\n const widthDiff = Math.abs(this.lastDimensions.width - newDimensions.width);\n const heightDiff = Math.abs(this.lastDimensions.height - newDimensions.height);\n if (widthDiff < 10 && heightDiff < 10)\n return;\n this.lastDimensions = newDimensions;\n if (this.resizeTimeout !== null)\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = window.setTimeout(() => this.doResize(), 350);\n });\n this.resizeObserver.observe(el);\n }\n reattachScrollListener() {\n if (this.scrollContainer) {\n this.scrollContainer.removeEventListener('scroll', this.onContainerScroll);\n this.scrollContainer = null;\n }\n const tryAttach = () => {\n this.scrollContainer = this.viewer()?.nativeElement?.querySelector('.epub-container') ?? null;\n if (this.scrollContainer) {\n this.scrollContainer.addEventListener('scroll', this.onContainerScroll, { passive: true });\n }\n else {\n requestAnimationFrame(tryAttach);\n }\n };\n requestAnimationFrame(tryAttach);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: EpubRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: EpubRenderer, isStandalone: true, selector: \"afp-epub-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: \"viewer\", first: true, predicate: [\"viewerRef\"], 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\"\n [style.opacity]=\"showToc() ? 1 : 0\"\n [style.pointerEvents]=\"showToc() ? 'auto' : 'none'\"\n [style.transition]=\"'opacity 0.3s'\"\n >\n <div\n class=\"afp-w-72 afp-h-full afp-flex afp-flex-col\"\n [style.maxWidth]=\"'80%'\"\n [style.background]=\"'rgba(0,0,0,0.9)'\"\n [style.backdropFilter]=\"'blur(12px)'\"\n [style.borderRight]=\"'1px solid rgba(255,255,255,0.1)'\"\n [style.boxShadow]=\"'0 25px 50px -12px rgba(0,0,0,0.25)'\"\n [style.transform]=\"showToc() ? 'translateX(0)' : 'translateX(-100%)'\"\n [style.transition]=\"'transform 0.3s ease'\"\n >\n <div\n class=\"afp-flex afp-items-center afp-justify-between afp-flex-shrink-0\"\n style=\"padding: 12px 16px; border-bottom: 1px solid rgba(255,255,255,0.1)\"\n >\n <span style=\"color: white; font-weight: 500; font-size: 14px\">{{ t('toolbar.toc') }}</span>\n <button\n type=\"button\"\n style=\"color: rgba(255,255,255,0.6); background: none; border: none; cursor: pointer; padding: 4px\"\n (click)=\"showToc.set(false)\"\n >\n <i-lucide [img]=\"xIcon\" style=\"width: 16px; height: 16px\" />\n </button>\n </div>\n <div class=\"afp-flex-1 afp-overflow-y-auto\" style=\"padding: 8px 4px\">\n @for (item of toc(); track item.href + '-' + $index) {\n <button\n type=\"button\"\n [style]=\"tocButtonStyle(item.href, false)\"\n [title]=\"item.label\"\n (click)=\"handleTocClick(item.href)\"\n (mouseenter)=\"onTocEnter($event, item.href)\"\n (mouseleave)=\"onTocLeave($event, item.href)\"\n >\n {{ item.label.trim() }}\n </button>\n @if (item.subitems && item.subitems.length > 0) {\n @for (sub of item.subitems; track sub.href + '-' + $index) {\n <button\n type=\"button\"\n [style]=\"tocButtonStyle(sub.href, true)\"\n [title]=\"sub.label\"\n (click)=\"handleTocClick(sub.href)\"\n (mouseenter)=\"onTocEnter($event, sub.href)\"\n (mouseleave)=\"onTocLeave($event, sub.href)\"\n >\n {{ sub.label.trim() }}\n </button>\n }\n }\n }\n </div>\n </div>\n <div\n class=\"afp-flex-1\"\n [style.background]=\"showToc() ? 'rgba(0,0,0,0.3)' : 'transparent'\"\n [style.transition]=\"'background 0.3s'\"\n (click)=\"showToc.set(false)\"\n ></div>\n </div>\n }\n\n @if (!error()) {\n <div\n #viewerRef\n class=\"afp-h-full afp-bg-surface-toolbar\"\n [style.width]=\"isFullWidth() ? '100%' : a4Width + 'px'\"\n [style.maxWidth]=\"'100%'\"\n [style.transition]=\"'width 0.3s ease'\"\n [style.boxShadow]=\"'0 1px 3px rgba(0,0,0,0.12)'\"\n [style.overflow]=\"'hidden'\"\n ></div>\n }\n </div>\n `, isInline: true, styles: [\".epub-container{overflow-y:auto!important;scrollbar-width:thin}.epub-container::-webkit-scrollbar{width:8px}.epub-container::-webkit-scrollbar-track{background:transparent}.epub-container::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px}.epub-container::-webkit-scrollbar-thumb:hover{background:#0000004d}.epub-view>iframe{background:#fff}\\n\"], dependencies: [{ kind: \"component\", type: RendererError, selector: \"afp-renderer-error\", inputs: [\"message\", \"detail\", \"showIcon\"] }, { kind: \"ngmodule\", type: LucideAngularModule }, { kind: \"component\", type: i1.LucideAngularComponent, selector: \"lucide-angular, lucide-icon, i-lucide, span-lucide\", inputs: [\"class\", \"name\", \"img\", \"color\", \"absoluteStrokeWidth\", \"size\", \"strokeWidth\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: EpubRenderer, decorators: [{\n type: Component,\n args: [{ selector: 'afp-epub-renderer', standalone: true, imports: [RendererError, LucideAngularModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, 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\"\n [style.opacity]=\"showToc() ? 1 : 0\"\n [style.pointerEvents]=\"showToc() ? 'auto' : 'none'\"\n [style.transition]=\"'opacity 0.3s'\"\n >\n <div\n class=\"afp-w-72 afp-h-full afp-flex afp-flex-col\"\n [style.maxWidth]=\"'80%'\"\n [style.background]=\"'rgba(0,0,0,0.9)'\"\n [style.backdropFilter]=\"'blur(12px)'\"\n [style.borderRight]=\"'1px solid rgba(255,255,255,0.1)'\"\n [style.boxShadow]=\"'0 25px 50px -12px rgba(0,0,0,0.25)'\"\n [style.transform]=\"showToc() ? 'translateX(0)' : 'translateX(-100%)'\"\n [style.transition]=\"'transform 0.3s ease'\"\n >\n <div\n class=\"afp-flex afp-items-center afp-justify-between afp-flex-shrink-0\"\n style=\"padding: 12px 16px; border-bottom: 1px solid rgba(255,255,255,0.1)\"\n >\n <span style=\"color: white; font-weight: 500; font-size: 14px\">{{ t('toolbar.toc') }}</span>\n <button\n type=\"button\"\n style=\"color: rgba(255,255,255,0.6); background: none; border: none; cursor: pointer; padding: 4px\"\n (click)=\"showToc.set(false)\"\n >\n <i-lucide [img]=\"xIcon\" style=\"width: 16px; height: 16px\" />\n </button>\n </div>\n <div class=\"afp-flex-1 afp-overflow-y-auto\" style=\"padding: 8px 4px\">\n @for (item of toc(); track item.href + '-' + $index) {\n <button\n type=\"button\"\n [style]=\"tocButtonStyle(item.href, false)\"\n [title]=\"item.label\"\n (click)=\"handleTocClick(item.href)\"\n (mouseenter)=\"onTocEnter($event, item.href)\"\n (mouseleave)=\"onTocLeave($event, item.href)\"\n >\n {{ item.label.trim() }}\n </button>\n @if (item.subitems && item.subitems.length > 0) {\n @for (sub of item.subitems; track sub.href + '-' + $index) {\n <button\n type=\"button\"\n [style]=\"tocButtonStyle(sub.href, true)\"\n [title]=\"sub.label\"\n (click)=\"handleTocClick(sub.href)\"\n (mouseenter)=\"onTocEnter($event, sub.href)\"\n (mouseleave)=\"onTocLeave($event, sub.href)\"\n >\n {{ sub.label.trim() }}\n </button>\n }\n }\n }\n </div>\n </div>\n <div\n class=\"afp-flex-1\"\n [style.background]=\"showToc() ? 'rgba(0,0,0,0.3)' : 'transparent'\"\n [style.transition]=\"'background 0.3s'\"\n (click)=\"showToc.set(false)\"\n ></div>\n </div>\n }\n\n @if (!error()) {\n <div\n #viewerRef\n class=\"afp-h-full afp-bg-surface-toolbar\"\n [style.width]=\"isFullWidth() ? '100%' : a4Width + 'px'\"\n [style.maxWidth]=\"'100%'\"\n [style.transition]=\"'width 0.3s ease'\"\n [style.boxShadow]=\"'0 1px 3px rgba(0,0,0,0.12)'\"\n [style.overflow]=\"'hidden'\"\n ></div>\n }\n </div>\n `, styles: [\".epub-container{overflow-y:auto!important;scrollbar-width:thin}.epub-container::-webkit-scrollbar{width:8px}.epub-container::-webkit-scrollbar-track{background:transparent}.epub-container::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px}.epub-container::-webkit-scrollbar-thumb:hover{background:#0000004d}.epub-view>iframe{background:#fff}\\n\"] }]\n }], ctorParameters: () => [] });\n\nexport { EpubRenderer };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-BEaqpRV8.mjs.map\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-QydIBtJH-Dw052TRv.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-QydIBtJH.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { input, inject, viewChild, signal, afterNextRender, effect, untracked, DestroyRef, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';\nimport ePub from '@likecoin/epub-ts';\nimport * as i1 from 'lucide-angular';\nimport { X, List, ChevronLeft, ChevronRight, Minimize2, Maximize2, 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';\n\nconst A4_WIDTH = 794;\nclass EpubRenderer {\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.viewer = viewChild('viewerRef');\n this.xIcon = X;\n this.a4Width = A4_WIDTH;\n this.currentChapter = signal(1);\n this.totalChapters = signal(1);\n this.loading = signal(true);\n this.error = signal(null);\n this.isFullWidth = signal(false);\n this.toc = signal([]);\n this.showToc = signal(false);\n this.activeTocHref = signal('');\n this.mounted = signal(false);\n this.book = null;\n this.rendition = null;\n this.totalLocations = 0;\n this.lastCfi = null;\n this.resizeObserver = null;\n this.resizeTimeout = null;\n this.lastDimensions = { width: 0, height: 0 };\n this.isInitialResize = true;\n this.scrollContainer = null;\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 this.onContainerScroll = () => {\n if (!this.scrollContainer)\n return;\n const node = this.scrollContainer;\n if (node.scrollTop + node.clientHeight >= node.scrollHeight - 200) {\n try {\n const mgr = this.rendition?.manager;\n mgr?.check?.(500, 500);\n }\n catch { /* ignore */ }\n }\n };\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(() => {\n void this.loadEpub();\n this.setupResizeObserver();\n this.reattachScrollListener();\n });\n });\n effect(() => {\n this.currentChapter();\n this.totalChapters();\n this.isFullWidth();\n this.showToc();\n this.toc().length;\n this.emitter.notify();\n });\n inject(DestroyRef).onDestroy(() => {\n if (this.resizeObserver)\n this.resizeObserver.disconnect();\n if (this.resizeTimeout !== null)\n clearTimeout(this.resizeTimeout);\n this.scrollContainer?.removeEventListener('scroll', this.onContainerScroll);\n this.cleanup();\n });\n }\n isActive(href) {\n return href === this.activeTocHref();\n }\n tocButtonStyle(href, sub) {\n const active = this.isActive(href);\n return {\n width: '100%',\n textAlign: 'left',\n padding: sub ? '8px 12px 8px 28px' : '8px 12px',\n fontSize: sub ? '13px' : '14px',\n color: active ? 'white' : (sub ? 'rgba(255,255,255,0.6)' : 'rgba(255,255,255,0.7)'),\n fontWeight: active ? '500' : '400',\n background: active ? 'rgba(255,255,255,0.15)' : 'none',\n border: 'none',\n cursor: 'pointer',\n borderRadius: '4px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n display: 'block',\n transition: 'all 0.15s',\n };\n }\n onTocEnter(ev, href) {\n if (!this.isActive(href)) {\n ev.target.style.background = 'rgba(255,255,255,0.1)';\n }\n }\n onTocLeave(ev, href) {\n if (!this.isActive(href)) {\n ev.target.style.background = 'none';\n }\n }\n handleTocClick(href) {\n this.activeTocHref.set(href);\n this.rendition?.display(href);\n this.showToc.set(false);\n }\n prevPage() {\n this.rendition?.prev();\n }\n nextPage() {\n this.rendition?.next();\n }\n toggleFullWidth() {\n this.isFullWidth.update((v) => !v);\n setTimeout(() => {\n const el = this.viewer()?.nativeElement;\n if (el && this.rendition) {\n this.rendition.resize(el.offsetWidth, el.offsetHeight);\n if (this.lastCfi) {\n this.rendition.display(this.lastCfi);\n }\n this.reattachScrollListener();\n }\n }, 350);\n }\n toggleToc() {\n this.showToc.update((v) => !v);\n }\n cleanup() {\n try {\n this.rendition?.destroy?.();\n }\n catch { /* ignore */ }\n try {\n this.book?.destroy();\n }\n catch { /* ignore */ }\n this.rendition = null;\n this.book = null;\n this.totalLocations = 0;\n this.lastCfi = null;\n }\n async loadEpub() {\n const el = this.viewer()?.nativeElement;\n if (!el)\n return;\n this.loading.set(true);\n this.error.set(null);\n this.toc.set([]);\n this.showToc.set(false);\n el.innerHTML = '';\n this.cleanup();\n try {\n const url = this.url();\n let bookInput = url;\n if (url.startsWith('blob:')) {\n const fetcher = this.request?.fetcher() ?? ((u, init) => fetch(u, init));\n const resp = await fetcher(url);\n bookInput = await resp.arrayBuffer();\n }\n this.book = ePub(bookInput);\n this.rendition = this.book.renderTo(el, {\n manager: 'continuous',\n flow: 'scrolled',\n width: '100%',\n height: '100%',\n });\n this.rendition.themes.register('default', {\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 padding: '40px 60px !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: { 'text-indent': '2em !important', margin: '0.8em 0 !important' },\n h1: { 'text-align': 'center !important', margin: '1.5em 0 1em !important' },\n h2: { margin: '1.2em 0 0.8em !important' },\n h3: { margin: '1em 0 0.6em !important' },\n img: { 'max-width': '100% !important', height: 'auto !important' },\n a: { color: '#2563eb !important', 'text-decoration': 'none !important' },\n });\n this.rendition.themes.select('default');\n await this.book.ready;\n this.book.locations.generate(1024).then(() => {\n if (!this.book)\n return;\n this.totalLocations = this.book.locations.length();\n const loc = this.rendition?.currentLocation();\n const cur = loc?.start?.location ?? 0;\n this.currentChapter.set(cur + 1);\n this.totalChapters.set(this.totalLocations);\n }).catch(() => { });\n const nav = await this.book.loaded.navigation;\n if (Array.isArray(nav?.toc)) {\n this.toc.set(nav.toc);\n }\n await this.rendition.display();\n this.loading.set(false);\n this.currentChapter.set(1);\n this.totalChapters.set(this.totalLocations || 1);\n this.rendition.on('relocated', (location) => {\n const loc = location;\n if (loc?.start?.cfi) {\n this.lastCfi = loc.start.cfi;\n }\n if (loc?.start?.href) {\n const spineHref = loc.start.href;\n const matches = [];\n const collect = (items) => {\n for (const item of items) {\n const base = item.href.split('#')[0];\n if (base && (spineHref === base || spineHref.endsWith('/' + base) || spineHref.endsWith(base))) {\n matches.push(item.href);\n }\n if (item.subitems)\n collect(item.subitems);\n }\n };\n collect(this.toc());\n if (matches.length === 1) {\n this.activeTocHref.set(matches[0]);\n }\n }\n const cur = loc?.start?.location;\n if (typeof cur === 'number' && this.totalLocations > 0) {\n this.currentChapter.set(cur + 1);\n this.totalChapters.set(this.totalLocations);\n }\n });\n }\n catch (err) {\n console.error('EPUB 加载错误:', err);\n this.error.set(this.t('epub.load_failed'));\n this.loading.set(false);\n }\n }\n doResize() {\n const el = this.viewer()?.nativeElement;\n if (!el || !this.rendition)\n return;\n this.rendition.resize(el.offsetWidth, el.offsetHeight);\n if (this.lastCfi) {\n try {\n this.rendition.display(this.lastCfi);\n }\n catch { /* ignore */ }\n }\n this.reattachScrollListener();\n }\n setupResizeObserver() {\n const el = this.viewer()?.nativeElement;\n if (!el)\n return;\n this.resizeObserver?.disconnect();\n this.isInitialResize = true;\n this.resizeObserver = new ResizeObserver(() => {\n const viewer = this.viewer()?.nativeElement;\n if (!viewer)\n return;\n if (this.isInitialResize) {\n this.isInitialResize = false;\n this.lastDimensions = { width: viewer.offsetWidth, height: viewer.offsetHeight };\n return;\n }\n const newDimensions = { width: viewer.offsetWidth, height: viewer.offsetHeight };\n const widthDiff = Math.abs(this.lastDimensions.width - newDimensions.width);\n const heightDiff = Math.abs(this.lastDimensions.height - newDimensions.height);\n if (widthDiff < 10 && heightDiff < 10)\n return;\n this.lastDimensions = newDimensions;\n if (this.resizeTimeout !== null)\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = window.setTimeout(() => this.doResize(), 350);\n });\n this.resizeObserver.observe(el);\n }\n reattachScrollListener() {\n if (this.scrollContainer) {\n this.scrollContainer.removeEventListener('scroll', this.onContainerScroll);\n this.scrollContainer = null;\n }\n const tryAttach = () => {\n this.scrollContainer = this.viewer()?.nativeElement?.querySelector('.epub-container') ?? null;\n if (this.scrollContainer) {\n this.scrollContainer.addEventListener('scroll', this.onContainerScroll, { passive: true });\n }\n else {\n requestAnimationFrame(tryAttach);\n }\n };\n requestAnimationFrame(tryAttach);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: EpubRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: EpubRenderer, isStandalone: true, selector: \"afp-epub-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: \"viewer\", first: true, predicate: [\"viewerRef\"], 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\"\n [style.opacity]=\"showToc() ? 1 : 0\"\n [style.pointerEvents]=\"showToc() ? 'auto' : 'none'\"\n [style.transition]=\"'opacity 0.3s'\"\n >\n <div\n class=\"afp-w-72 afp-h-full afp-flex afp-flex-col\"\n [style.maxWidth]=\"'80%'\"\n [style.background]=\"'rgba(0,0,0,0.9)'\"\n [style.backdropFilter]=\"'blur(12px)'\"\n [style.borderRight]=\"'1px solid rgba(255,255,255,0.1)'\"\n [style.boxShadow]=\"'0 25px 50px -12px rgba(0,0,0,0.25)'\"\n [style.transform]=\"showToc() ? 'translateX(0)' : 'translateX(-100%)'\"\n [style.transition]=\"'transform 0.3s ease'\"\n >\n <div\n class=\"afp-flex afp-items-center afp-justify-between afp-flex-shrink-0\"\n style=\"padding: 12px 16px; border-bottom: 1px solid rgba(255,255,255,0.1)\"\n >\n <span style=\"color: white; font-weight: 500; font-size: 14px\">{{ t('toolbar.toc') }}</span>\n <button\n type=\"button\"\n style=\"color: rgba(255,255,255,0.6); background: none; border: none; cursor: pointer; padding: 4px\"\n (click)=\"showToc.set(false)\"\n >\n <i-lucide [img]=\"xIcon\" style=\"width: 16px; height: 16px\" />\n </button>\n </div>\n <div class=\"afp-flex-1 afp-overflow-y-auto\" style=\"padding: 8px 4px\">\n @for (item of toc(); track item.href + '-' + $index) {\n <button\n type=\"button\"\n [style]=\"tocButtonStyle(item.href, false)\"\n [title]=\"item.label\"\n (click)=\"handleTocClick(item.href)\"\n (mouseenter)=\"onTocEnter($event, item.href)\"\n (mouseleave)=\"onTocLeave($event, item.href)\"\n >\n {{ item.label.trim() }}\n </button>\n @if (item.subitems && item.subitems.length > 0) {\n @for (sub of item.subitems; track sub.href + '-' + $index) {\n <button\n type=\"button\"\n [style]=\"tocButtonStyle(sub.href, true)\"\n [title]=\"sub.label\"\n (click)=\"handleTocClick(sub.href)\"\n (mouseenter)=\"onTocEnter($event, sub.href)\"\n (mouseleave)=\"onTocLeave($event, sub.href)\"\n >\n {{ sub.label.trim() }}\n </button>\n }\n }\n }\n </div>\n </div>\n <div\n class=\"afp-flex-1\"\n [style.background]=\"showToc() ? 'rgba(0,0,0,0.3)' : 'transparent'\"\n [style.transition]=\"'background 0.3s'\"\n (click)=\"showToc.set(false)\"\n ></div>\n </div>\n }\n\n @if (!error()) {\n <div\n #viewerRef\n class=\"afp-h-full afp-bg-surface-toolbar\"\n [style.width]=\"isFullWidth() ? '100%' : a4Width + 'px'\"\n [style.maxWidth]=\"'100%'\"\n [style.transition]=\"'width 0.3s ease'\"\n [style.boxShadow]=\"'0 1px 3px rgba(0,0,0,0.12)'\"\n [style.overflow]=\"'hidden'\"\n ></div>\n }\n </div>\n `, isInline: true, styles: [\".epub-container{overflow-y:auto!important;scrollbar-width:thin}.epub-container::-webkit-scrollbar{width:8px}.epub-container::-webkit-scrollbar-track{background:transparent}.epub-container::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px}.epub-container::-webkit-scrollbar-thumb:hover{background:#0000004d}.epub-view>iframe{background:#fff}\\n\"], dependencies: [{ kind: \"component\", type: RendererError, selector: \"afp-renderer-error\", inputs: [\"message\", \"detail\", \"showIcon\"] }, { kind: \"ngmodule\", type: LucideAngularModule }, { kind: \"component\", type: i1.LucideAngularComponent, selector: \"lucide-angular, lucide-icon, i-lucide, span-lucide\", inputs: [\"class\", \"name\", \"img\", \"color\", \"absoluteStrokeWidth\", \"size\", \"strokeWidth\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: EpubRenderer, decorators: [{\n type: Component,\n args: [{ selector: 'afp-epub-renderer', standalone: true, imports: [RendererError, LucideAngularModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, 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\"\n [style.opacity]=\"showToc() ? 1 : 0\"\n [style.pointerEvents]=\"showToc() ? 'auto' : 'none'\"\n [style.transition]=\"'opacity 0.3s'\"\n >\n <div\n class=\"afp-w-72 afp-h-full afp-flex afp-flex-col\"\n [style.maxWidth]=\"'80%'\"\n [style.background]=\"'rgba(0,0,0,0.9)'\"\n [style.backdropFilter]=\"'blur(12px)'\"\n [style.borderRight]=\"'1px solid rgba(255,255,255,0.1)'\"\n [style.boxShadow]=\"'0 25px 50px -12px rgba(0,0,0,0.25)'\"\n [style.transform]=\"showToc() ? 'translateX(0)' : 'translateX(-100%)'\"\n [style.transition]=\"'transform 0.3s ease'\"\n >\n <div\n class=\"afp-flex afp-items-center afp-justify-between afp-flex-shrink-0\"\n style=\"padding: 12px 16px; border-bottom: 1px solid rgba(255,255,255,0.1)\"\n >\n <span style=\"color: white; font-weight: 500; font-size: 14px\">{{ t('toolbar.toc') }}</span>\n <button\n type=\"button\"\n style=\"color: rgba(255,255,255,0.6); background: none; border: none; cursor: pointer; padding: 4px\"\n (click)=\"showToc.set(false)\"\n >\n <i-lucide [img]=\"xIcon\" style=\"width: 16px; height: 16px\" />\n </button>\n </div>\n <div class=\"afp-flex-1 afp-overflow-y-auto\" style=\"padding: 8px 4px\">\n @for (item of toc(); track item.href + '-' + $index) {\n <button\n type=\"button\"\n [style]=\"tocButtonStyle(item.href, false)\"\n [title]=\"item.label\"\n (click)=\"handleTocClick(item.href)\"\n (mouseenter)=\"onTocEnter($event, item.href)\"\n (mouseleave)=\"onTocLeave($event, item.href)\"\n >\n {{ item.label.trim() }}\n </button>\n @if (item.subitems && item.subitems.length > 0) {\n @for (sub of item.subitems; track sub.href + '-' + $index) {\n <button\n type=\"button\"\n [style]=\"tocButtonStyle(sub.href, true)\"\n [title]=\"sub.label\"\n (click)=\"handleTocClick(sub.href)\"\n (mouseenter)=\"onTocEnter($event, sub.href)\"\n (mouseleave)=\"onTocLeave($event, sub.href)\"\n >\n {{ sub.label.trim() }}\n </button>\n }\n }\n }\n </div>\n </div>\n <div\n class=\"afp-flex-1\"\n [style.background]=\"showToc() ? 'rgba(0,0,0,0.3)' : 'transparent'\"\n [style.transition]=\"'background 0.3s'\"\n (click)=\"showToc.set(false)\"\n ></div>\n </div>\n }\n\n @if (!error()) {\n <div\n #viewerRef\n class=\"afp-h-full afp-bg-surface-toolbar\"\n [style.width]=\"isFullWidth() ? '100%' : a4Width + 'px'\"\n [style.maxWidth]=\"'100%'\"\n [style.transition]=\"'width 0.3s ease'\"\n [style.boxShadow]=\"'0 1px 3px rgba(0,0,0,0.12)'\"\n [style.overflow]=\"'hidden'\"\n ></div>\n }\n </div>\n `, styles: [\".epub-container{overflow-y:auto!important;scrollbar-width:thin}.epub-container::-webkit-scrollbar{width:8px}.epub-container::-webkit-scrollbar-track{background:transparent}.epub-container::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px}.epub-container::-webkit-scrollbar-thumb:hover{background:#0000004d}.epub-view>iframe{background:#fff}\\n\"] }]\n }], ctorParameters: () => [] });\n\nexport { EpubRenderer };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-QydIBtJH.mjs.map\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { inject, signal, DestroyRef } from '@angular/core';
|
|
2
2
|
import { codeToHtml } from 'shiki';
|
|
3
|
-
import { T as ThemeService } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-
|
|
3
|
+
import { T as ThemeService } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-RPRQhVCg.mjs';
|
|
4
4
|
|
|
5
5
|
function createShikiHighlight(code, lang) {
|
|
6
6
|
const theme = inject(ThemeService, { optional: true });
|
|
@@ -65,4 +65,4 @@ function extractLines(html) {
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
export { createShikiHighlight as c };
|
|
68
|
-
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-
|
|
68
|
+
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-CE3FZF7D-BjdXRpvN.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-
|
|
1
|
+
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-CE3FZF7D-BjdXRpvN.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-shiki-highlight-CE3FZF7D.mjs"],"sourcesContent":["import { inject, signal, DestroyRef } from '@angular/core';\nimport { codeToHtml } from 'shiki';\nimport { T as ThemeService } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-Dnuf7kun.mjs';\n\nfunction createShikiHighlight(code, lang) {\n const theme = inject(ThemeService, { optional: true });\n const html = signal('');\n const lineHtmls = signal([]);\n const loading = signal(true);\n let seq = 0;\n const highlight = async () => {\n const current = ++seq;\n const value = code();\n if (!value) {\n html.set('');\n lineHtmls.set([]);\n loading.set(false);\n return;\n }\n loading.set(true);\n try {\n const lineNumbersTransformer = {\n name: 'line-numbers',\n line(node, line) {\n node.properties['data-line'] = line;\n this.addClassToHast(node, 'line');\n },\n };\n const resolved = theme?.theme() ?? 'dark';\n const out = await codeToHtml(value, {\n lang: lang(),\n theme: resolved === 'light' ? 'github-light' : 'dark-plus',\n transformers: [lineNumbersTransformer],\n });\n if (current !== seq)\n return;\n html.set(out);\n lineHtmls.set(extractLines(out));\n }\n catch {\n if (current !== seq)\n return;\n html.set('');\n lineHtmls.set([]);\n }\n finally {\n if (current === seq)\n loading.set(false);\n }\n };\n inject(DestroyRef).onDestroy(() => {\n seq += 1;\n });\n return { html, lineHtmls, loading, highlight };\n}\nfunction extractLines(html) {\n if (typeof window === 'undefined' || !html)\n return [];\n const parser = new DOMParser();\n const doc = parser.parseFromString(html, 'text/html');\n const codeElement = doc.querySelector('code');\n if (!codeElement)\n return [];\n return Array.from(codeElement.querySelectorAll('.line')).map((line) => line.innerHTML);\n}\n\nexport { createShikiHighlight as c };\n//# sourceMappingURL=eternalheart-angular-file-preview-shiki-highlight-CE3FZF7D.mjs.map\n"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { F as FilePreviewContent, m as FilePreviewEmbed, o as FilePreviewModal, L as LocaleService, R as RequestService, z as SUPPORTED_FILE_TYPES, T as ThemeService, q as VERSION, A as configurePdfWorker, V as getFileType, t as normalizeFile, N as normalizeFiles } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-
|
|
1
|
+
export { F as FilePreviewContent, m as FilePreviewEmbed, o as FilePreviewModal, L as LocaleService, R as RequestService, z as SUPPORTED_FILE_TYPES, T as ThemeService, q as VERSION, A as configurePdfWorker, V as getFileType, t as normalizeFile, N as normalizeFiles } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-RPRQhVCg.mjs';
|
|
2
2
|
//# sourceMappingURL=eternalheart-angular-file-preview.mjs.map
|