From b1296d964dda9e4603d01fd1ae09e61543cb9aea Mon Sep 17 00:00:00 2001 From: acgnhik <acgnhik@outlook.com> Date: Sun, 22 Oct 2023 12:58:15 +0800 Subject: [PATCH] feat: deprecated old implementations and adopted a new one for HLS recording --- FAQ.md | 14 -- setup.cfg | 1 - src/blrec/application.py | 3 +- src/blrec/bili/live.py | 8 +- src/blrec/bili/live_monitor.py | 21 +- src/blrec/core/danmaku_dumper.py | 66 +++--- src/blrec/core/flv_stream_recorder_impl.py | 5 +- .../core/hls_raw_stream_recorder_impl.py | 110 ---------- src/blrec/core/hls_stream_recorder_impl.py | 80 ++++--- src/blrec/core/metadata_provider.py | 11 +- .../operators/connection_error_handler.py | 2 +- src/blrec/core/operators/recording_monitor.py | 37 +++- .../operators/request_exception_handler.py | 15 +- .../core/operators/stream_url_resolver.py | 53 ++++- src/blrec/core/path_provider.py | 9 +- src/blrec/core/recorder.py | 6 +- src/blrec/core/stream_recorder.py | 27 +-- src/blrec/core/stream_recorder_impl.py | 51 +++-- src/blrec/core/typing.py | 4 + src/blrec/data/webapp/287.5c768f00dcd24631.js | 1 - src/blrec/data/webapp/287.63ace7ac80c3d9f2.js | 1 + ...c2419f2617e.js => 548.f8a3199ca2412e0d.js} | 2 +- src/blrec/data/webapp/index.html | 2 +- src/blrec/data/webapp/ngsw.json | 16 +- ...55bada4.js => runtime.8688afa20dbe5cc7.js} | 2 +- src/blrec/disk_space/space_reclaimer.py | 14 +- src/blrec/flv/operators/analyse.py | 6 + src/blrec/flv/operators/helpers.py | 2 +- src/blrec/flv/operators/parse.py | 2 +- src/blrec/flv/operators/probe.py | 4 +- src/blrec/hls/helpler.py | 12 ++ src/blrec/hls/metadata_dumper.py | 18 +- src/blrec/hls/operators/__init__.py | 11 +- src/blrec/hls/operators/analyser.py | 91 ++++++++ src/blrec/hls/operators/cutter.py | 90 ++++++++ src/blrec/hls/operators/limiter.py | 93 ++++++++ src/blrec/hls/operators/playlist_dumper.py | 198 ++++++++++-------- src/blrec/hls/operators/playlist_fetcher.py | 29 ++- src/blrec/hls/operators/playlist_resolver.py | 48 +++-- src/blrec/hls/operators/prober.py | 4 +- src/blrec/hls/operators/segment_dumper.py | 182 +++++++++++++--- src/blrec/hls/operators/segment_fetcher.py | 17 +- src/blrec/hls/operators/segment_parser.py | 104 --------- src/blrec/hls/operators/segment_remuxer.py | 111 ---------- src/blrec/notification/notifiers.py | 2 +- src/blrec/notification/providers.py | 2 +- src/blrec/path/__init__.py | 6 + src/blrec/path/helpers.py | 9 + src/blrec/postprocess/ffmpeg_metadata.py | 11 +- src/blrec/postprocess/helpers.py | 26 +-- src/blrec/postprocess/postprocessor.py | 164 ++++++++------- src/blrec/postprocess/remux.py | 14 +- src/blrec/setting/models.py | 11 +- src/blrec/task/models.py | 4 +- src/blrec/task/task.py | 12 +- src/blrec/task/task_manager.py | 3 +- src/blrec/utils/ffprobe.py | 133 +++++++++--- src/blrec/utils/mixins.py | 10 +- src/blrec/web/routers/tasks.py | 124 +++-------- .../recorder-settings.component.html | 38 +--- .../src/app/settings/shared/setting.model.ts | 1 - .../src/app/shared/pipes/filestatus.pipe.ts | 2 +- webapp/src/app/tasks/shared/task.model.ts | 4 +- .../task-settings-dialog.component.html | 84 +------- 64 files changed, 1209 insertions(+), 1034 deletions(-) delete mode 100644 src/blrec/core/hls_raw_stream_recorder_impl.py delete mode 100644 src/blrec/data/webapp/287.5c768f00dcd24631.js create mode 100644 src/blrec/data/webapp/287.63ace7ac80c3d9f2.js rename src/blrec/data/webapp/{548.73ee5c2419f2617e.js => 548.f8a3199ca2412e0d.js} (80%) rename src/blrec/data/webapp/{runtime.bad8d115055bada4.js => runtime.8688afa20dbe5cc7.js} (56%) create mode 100644 src/blrec/hls/helpler.py create mode 100644 src/blrec/hls/operators/analyser.py create mode 100644 src/blrec/hls/operators/cutter.py create mode 100644 src/blrec/hls/operators/limiter.py delete mode 100644 src/blrec/hls/operators/segment_parser.py delete mode 100644 src/blrec/hls/operators/segment_remuxer.py diff --git a/FAQ.md b/FAQ.md index 14a09b2..85a7795 100644 --- a/FAQ.md +++ b/FAQ.md @@ -1,19 +1,5 @@ # 常见问题 -## HLS 标准录制模式和原始录制模式有什么区别? - -| | 标准录制模式 | 原始录制模式 | -| --- | --- | --- | -| ffmpeg | 需要 | 不需要 | -| 资源占用 | 较多 | 较少 | -| 稳定性 | 比较差 | 比较好 | -| 录播文件 | 一个 flv 文件 | 很多片段文件 | -| 录播信息 | 包含在 flv 文件里 | 单独保存为一个文件 (index.meta.json) | -| 播放器支持 | 几乎全部播放器都支持 flv | 支持 m3u8 的播放器很少 (VLC、dandanplay) | -| 自动分割文件 | 支持 | 不支持 | -| 手动分割文件 | 支持 | 不支持 | -| 自动转 mp4 | 支持 | 支持 | - ## 如何终止程序? `ctrl + c` diff --git a/setup.cfg b/setup.cfg index 81799d0..ec31875 100644 --- a/setup.cfg +++ b/setup.cfg @@ -53,7 +53,6 @@ install_requires = lxml >= 4.6.4, < 5.0.0 toml >= 0.10.2, < 0.11.0 m3u8 >= 3.3.0, < 4.0.0 - av >= 10.0.0, < 11.0.0 jsonpath == 0.82 psutil >= 5.8.0, < 6.0.0 reactivex >= 4.0.0, < 5.0.0 diff --git a/src/blrec/application.py b/src/blrec/application.py index 3ff0e10..d44282b 100644 --- a/src/blrec/application.py +++ b/src/blrec/application.py @@ -9,10 +9,11 @@ import psutil from . import __prog__, __version__ from .bili.helpers import ensure_room_id +from .core.typing import MetaData from .disk_space import SpaceMonitor, SpaceReclaimer from .event.event_submitters import SpaceEventSubmitter from .exception import ExceptionHandler, ExistsError, exception_callback -from .flv.operators import MetaData, StreamProfile +from .flv.operators import StreamProfile from .notification import ( BarkNotifier, EmailNotifier, diff --git a/src/blrec/bili/live.py b/src/blrec/bili/live.py index 11c9d82..82e65d4 100644 --- a/src/blrec/bili/live.py +++ b/src/blrec/bili/live.py @@ -39,6 +39,7 @@ class Live: self._room_id = room_id self._user_agent = user_agent self._cookie = cookie + self._update_headers() self._html_page_url = f'https://live.bilibili.com/{room_id}' self._session = aiohttp.ClientSession( @@ -87,6 +88,7 @@ class Live: @user_agent.setter def user_agent(self, value: str) -> None: self._user_agent = value + self._update_headers() self._webapi.headers = self.headers self._appapi.headers = self.headers @@ -97,12 +99,16 @@ class Live: @cookie.setter def cookie(self, value: str) -> None: self._cookie = value + self._update_headers() self._webapi.headers = self.headers self._appapi.headers = self.headers @property def headers(self) -> Dict[str, str]: - return { + return self._headers + + def _update_headers(self) -> None: + self._headers = { **BASE_HEADERS, 'Referer': f'https://live.bilibili.com/{self._room_id}', 'User-Agent': self._user_agent, diff --git a/src/blrec/bili/live_monitor.py b/src/blrec/bili/live_monitor.py index 7024201..d63f1e8 100644 --- a/src/blrec/bili/live_monitor.py +++ b/src/blrec/bili/live_monitor.py @@ -167,6 +167,22 @@ class LiveMonitor(EventEmitter[LiveEventListener], DanmakuListener, SwitchableMi self._previous_status = current_status + @aio_task_with_room_id + async def check_live_status(self) -> None: + logger.debug('Checking live status...') + try: + await self._check_live_status() + except Exception as e: + logger.warning(f'Failed to check live status: {repr(e)}') + logger.debug('Done checking live status') + + @aio_task_with_room_id + async def _check_live_status(self) -> None: + await self._live.update_room_info() + current_status = self._live.room_info.live_status + if current_status != self._previous_status: + await self._handle_status_change(current_status) + @aio_task_with_room_id async def _poll_live_status(self) -> None: logger.debug('Started polling live status') @@ -174,10 +190,7 @@ class LiveMonitor(EventEmitter[LiveEventListener], DanmakuListener, SwitchableMi while True: try: await asyncio.sleep(600 + random.randrange(-60, 60)) - await self._live.update_room_info() - current_status = self._live.room_info.live_status - if current_status != self._previous_status: - await self._handle_status_change(current_status) + await self._check_live_status() except asyncio.CancelledError: logger.debug('Cancelled polling live status') break diff --git a/src/blrec/core/danmaku_dumper.py b/src/blrec/core/danmaku_dumper.py index d158e94..62f75b1 100644 --- a/src/blrec/core/danmaku_dumper.py +++ b/src/blrec/core/danmaku_dumper.py @@ -2,6 +2,7 @@ import asyncio import html import logging from contextlib import suppress +from decimal import Decimal from threading import Lock from typing import Iterator, List, Optional @@ -123,7 +124,6 @@ class DanmakuDumper( with self._lock: self._delta: float = 0 self._record_start_time: int = record_start_time - self._timebase: int = self._record_start_time * 1000 self._stream_recording_interrupted: bool = False self._path = danmaku_path(video_path) self._files.append(self._path) @@ -135,19 +135,32 @@ class DanmakuDumper( await self._stop_dumping() self._path = None - async def on_stream_recording_interrupted(self, duration: float) -> None: - logger.debug(f'Stream recording interrupted, {duration}') + async def on_stream_recording_interrupted( + self, timestamp: float, duration: float + ) -> None: + self._interrupted_timestamp = timestamp self._duration = duration - self._stream_recording_recovered = asyncio.Condition() self._stream_recording_interrupted = True + logger.debug( + 'Stream recording interrupted, ' + f'timestamp: {timestamp}, duration: {duration}' + ) - async def on_stream_recording_recovered(self, timestamp: int) -> None: - logger.debug(f'Stream recording recovered, {timestamp}') - self._timebase = timestamp * 1000 - self._delta = self._duration * 1000 + async def on_stream_recording_recovered(self, timestamp: float) -> None: + self._recovered_timestamp = timestamp + self._delta += -float( + Decimal(str(self._recovered_timestamp)) + - Decimal(str(self._interrupted_timestamp)) + ) self._stream_recording_interrupted = False - async with self._stream_recording_recovered: - self._stream_recording_recovered.notify_all() + logger.debug( + 'Stream recording recovered, ' + f'timestamp: {timestamp}, delta: {self._delta}' + ) + + async def on_duration_lost(self, duration: float) -> None: + logger.debug(f'Total duration lost: {(duration)}') + self._delta = -duration def _start_dumping(self) -> None: self._create_dump_task() @@ -217,14 +230,7 @@ class DanmakuDumper( continue await writer.write_super_chat_record(self._make_super_chat_record(msg)) else: - logger.warning('Unsupported message type:', repr(msg)) - - if self._stream_recording_interrupted: - logger.debug( - f'Last message before stream recording interrupted: {repr(msg)}' - ) - async with self._stream_recording_recovered: - await self._stream_recording_recovered.wait() + logger.warning(f'Unsupported message type: {repr(msg)}') def _make_metadata(self) -> Metadata: return Metadata( @@ -246,7 +252,7 @@ class DanmakuDumper( text = html.escape(text) return Danmu( - stime=self._calc_stime(msg.date), + stime=self._calc_stime(msg.date / 1000), mode=msg.mode, size=msg.size, color=msg.color, @@ -261,7 +267,7 @@ class DanmakuDumper( def _make_gift_send_record(self, msg: GiftSendMsg) -> GiftSendRecord: return GiftSendRecord( - ts=self._calc_stime(msg.timestamp * 1000), + ts=self._calc_stime(msg.timestamp), uid=msg.uid, user=msg.uname, giftname=msg.gift_name, @@ -272,7 +278,7 @@ class DanmakuDumper( def _make_guard_buy_record(self, msg: GuardBuyMsg) -> GuardBuyRecord: return GuardBuyRecord( - ts=self._calc_stime(msg.timestamp * 1000), + ts=self._calc_stime(msg.timestamp), uid=msg.uid, user=msg.uname, giftname=msg.gift_name, @@ -283,7 +289,7 @@ class DanmakuDumper( def _make_super_chat_record(self, msg: SuperChatMsg) -> SuperChatRecord: return SuperChatRecord( - ts=self._calc_stime(msg.timestamp * 1000), + ts=self._calc_stime(msg.timestamp), uid=msg.uid, user=msg.uname, price=msg.price * msg.rate, @@ -293,7 +299,7 @@ class DanmakuDumper( def _make_user_toast(self, msg: UserToastMsg) -> UserToast: return UserToast( - ts=self._calc_stime(msg.start_time * 1000), + ts=self._calc_stime(msg.start_time), uid=msg.uid, user=msg.username, unit=msg.unit, @@ -304,5 +310,15 @@ class DanmakuDumper( msg=msg.toast_msg, ) - def _calc_stime(self, timestamp: int) -> float: - return (max(timestamp - self._timebase, 0) + self._delta) / 1000 + def _calc_stime(self, timestamp: float) -> float: + if self._stream_recording_interrupted: + return self._duration + else: + return ( + max( + timestamp * 1000 + - self._record_start_time * 1000 + + self._delta * 1000, + 0, + ) + ) / 1000 diff --git a/src/blrec/core/flv_stream_recorder_impl.py b/src/blrec/core/flv_stream_recorder_impl.py index 6f43961..2ebba6d 100644 --- a/src/blrec/core/flv_stream_recorder_impl.py +++ b/src/blrec/core/flv_stream_recorder_impl.py @@ -4,6 +4,7 @@ from typing import Optional from reactivex.scheduler import NewThreadScheduler from blrec.bili.live import Live +from blrec.bili.live_monitor import LiveMonitor from blrec.bili.typing import QualityNumber from blrec.flv import operators as flv_ops from blrec.flv.metadata_dumper import MetadataDumper @@ -22,6 +23,7 @@ class FLVStreamRecorderImpl(StreamRecorderImpl, SupportDebugMixin): def __init__( self, live: Live, + live_monitor: LiveMonitor, out_dir: str, path_template: str, *, @@ -34,6 +36,7 @@ class FLVStreamRecorderImpl(StreamRecorderImpl, SupportDebugMixin): ) -> None: super().__init__( live=live, + live_monitor=live_monitor, out_dir=out_dir, path_template=path_template, stream_format='flv', @@ -66,7 +69,7 @@ class FLVStreamRecorderImpl(StreamRecorderImpl, SupportDebugMixin): ) self._recording_monitor = core_ops.RecordingMonitor( - live, lambda: self._analyser.duration + live, lambda: self._analyser.duration, self._analyser.duration_updated ) self._prober.profiles.subscribe(self._on_profile_updated) diff --git a/src/blrec/core/hls_raw_stream_recorder_impl.py b/src/blrec/core/hls_raw_stream_recorder_impl.py deleted file mode 100644 index e937d82..0000000 --- a/src/blrec/core/hls_raw_stream_recorder_impl.py +++ /dev/null @@ -1,110 +0,0 @@ -import logging -from typing import Optional - -from reactivex.scheduler import NewThreadScheduler - -from blrec.bili.live import Live -from blrec.bili.typing import QualityNumber -from blrec.hls import operators as hls_ops -from blrec.hls.metadata_dumper import MetadataDumper -from blrec.utils import operators as utils_ops - -from . import operators as core_ops -from .stream_recorder_impl import StreamRecorderImpl - -__all__ = ('HLSRawStreamRecorderImpl',) - - -logger = logging.getLogger(__name__) - - -class HLSRawStreamRecorderImpl(StreamRecorderImpl): - def __init__( - self, - live: Live, - out_dir: str, - path_template: str, - *, - quality_number: QualityNumber = 10000, - buffer_size: Optional[int] = None, - read_timeout: Optional[int] = None, - disconnection_timeout: Optional[int] = None, - filesize_limit: int = 0, - duration_limit: int = 0, - ) -> None: - super().__init__( - live=live, - out_dir=out_dir, - path_template=path_template, - stream_format='fmp4', - recording_mode='raw', - quality_number=quality_number, - buffer_size=buffer_size, - read_timeout=read_timeout, - disconnection_timeout=disconnection_timeout, - filesize_limit=filesize_limit, - duration_limit=duration_limit, - ) - - self._playlist_fetcher = hls_ops.PlaylistFetcher(self._live, self._session) - self._playlist_dumper = hls_ops.PlaylistDumper(self._path_provider) - self._segment_fetcher = hls_ops.SegmentFetcher( - self._live, self._session, self._stream_url_resolver - ) - self._segment_dumper = hls_ops.SegmentDumper(self._playlist_dumper) - self._ff_metadata_dumper = MetadataDumper( - self._playlist_dumper, self._metadata_provider - ) - - self._prober = hls_ops.Prober() - self._dl_statistics = core_ops.SizedStatistics() - - self._recording_monitor = core_ops.RecordingMonitor( - live, lambda: self._playlist_dumper.duration - ) - - self._prober.profiles.subscribe(self._on_profile_updated) - self._playlist_dumper.file_opened.subscribe(self._on_video_file_opened) - self._playlist_dumper.file_closed.subscribe(self._on_video_file_closed) - self._recording_monitor.interrupted.subscribe(self._on_recording_interrupted) - self._recording_monitor.recovered.subscribe(self._on_recording_recovered) - - @property - def recording_path(self) -> Optional[str]: - return self._playlist_dumper.path - - def _on_start(self) -> None: - self._ff_metadata_dumper.enable() - - def _on_stop(self) -> None: - self._ff_metadata_dumper.disable() - - def _run(self) -> None: - self._subscription = ( - self._stream_param_holder.get_stream_params() # type: ignore - .pipe( - self._stream_url_resolver, - self._playlist_fetcher, - self._recording_monitor, - self._connection_error_handler, - self._request_exception_handler, - self._playlist_dumper, - utils_ops.observe_on_new_thread( - queue_size=60, - thread_name=f'SegmentDownloader::{self._live.room_id}', - ), - self._segment_fetcher, - self._dl_statistics, - self._prober, - self._segment_dumper, - self._rec_statistics, - self._progress_bar, - self._exception_handler, - ) - .subscribe( - on_completed=self._on_completed, - scheduler=NewThreadScheduler( - self._thread_factory('HLSRawStreamRecorder') - ), - ) - ) diff --git a/src/blrec/core/hls_stream_recorder_impl.py b/src/blrec/core/hls_stream_recorder_impl.py index fba4812..668c14f 100644 --- a/src/blrec/core/hls_stream_recorder_impl.py +++ b/src/blrec/core/hls_stream_recorder_impl.py @@ -4,10 +4,10 @@ from typing import Optional from reactivex.scheduler import NewThreadScheduler from blrec.bili.live import Live +from blrec.bili.live_monitor import LiveMonitor from blrec.bili.typing import QualityNumber -from blrec.flv import operators as flv_ops -from blrec.flv.metadata_dumper import MetadataDumper from blrec.hls import operators as hls_ops +from blrec.hls.metadata_dumper import MetadataDumper from blrec.utils import operators as utils_ops from . import operators as core_ops @@ -23,6 +23,7 @@ class HLSStreamRecorderImpl(StreamRecorderImpl): def __init__( self, live: Live, + live_monitor: LiveMonitor, out_dir: str, path_template: str, *, @@ -35,6 +36,7 @@ class HLSStreamRecorderImpl(StreamRecorderImpl): ) -> None: super().__init__( live=live, + live_monitor=live_monitor, out_dir=out_dir, path_template=path_template, stream_format='fmp4', @@ -52,43 +54,41 @@ class HLSStreamRecorderImpl(StreamRecorderImpl): self._segment_fetcher = hls_ops.SegmentFetcher( self._live, self._session, self._stream_url_resolver ) - self._segment_remuxer = hls_ops.SegmentRemuxer(live) - - self._prober = hls_ops.Prober() - self._dl_statistics = core_ops.SizedStatistics() - - self._segment_parser = hls_ops.SegmentParser() - self._analyser = flv_ops.Analyser() - self._injector = flv_ops.Injector(self._metadata_provider) - self._join_point_extractor = flv_ops.JoinPointExtractor() - self._limiter = flv_ops.Limiter(filesize_limit, duration_limit) - self._cutter = flv_ops.Cutter() - self._dumper = flv_ops.Dumper(self._path_provider, buffer_size) - self._metadata_dumper = MetadataDumper( - self._dumper, self._analyser, self._join_point_extractor + self._segment_dumper = hls_ops.SegmentDumper(self._path_provider) + self._playlist_dumper = hls_ops.PlaylistDumper(self._segment_dumper) + self._ff_metadata_dumper = MetadataDumper( + self._segment_dumper, self._metadata_provider ) + self._cutter = hls_ops.Cutter(self._playlist_dumper) + self._limiter = hls_ops.Limiter( + self._playlist_dumper, + self._segment_dumper, + filesize_limit=filesize_limit, + duration_limit=duration_limit, + ) + self._prober = hls_ops.Prober() + self._analyser = hls_ops.Analyser( + self._playlist_dumper, self._segment_dumper, self._prober + ) + self._dl_statistics = core_ops.SizedStatistics() + self._recording_monitor = core_ops.RecordingMonitor( - live, lambda: self._analyser.duration + live, + lambda: self._playlist_dumper.duration, + self._playlist_dumper.duration_updated, ) self._prober.profiles.subscribe(self._on_profile_updated) - self._dumper.file_opened.subscribe(self._on_video_file_opened) - self._dumper.file_closed.subscribe(self._on_video_file_closed) + self._segment_dumper.file_opened.subscribe(self._on_video_file_opened) + self._segment_dumper.file_closed.subscribe(self._on_video_file_closed) + self._playlist_dumper.segments_lost.subscribe(self._on_duration_lost) self._recording_monitor.interrupted.subscribe(self._on_recording_interrupted) self._recording_monitor.recovered.subscribe(self._on_recording_recovered) - @property - def buffer_size(self) -> int: - return self._dumper.buffer_size - - @buffer_size.setter - def buffer_size(self, value: int) -> None: - self._dumper.buffer_size = value - @property def recording_path(self) -> Optional[str]: - return self._dumper.path + return self._segment_dumper.path @property def filesize_limit(self) -> int: @@ -107,11 +107,8 @@ class HLSStreamRecorderImpl(StreamRecorderImpl): self._limiter.duration_limit = value @property - def metadata(self) -> Optional[flv_ops.MetaData]: - try: - return self._analyser.make_metadata() - except Exception: - return None + def metadata(self) -> Optional[hls_ops.MetaData]: + return self._analyser.make_metadata() def can_cut_stream(self) -> bool: return self._cutter.can_cut_stream() @@ -120,10 +117,10 @@ class HLSStreamRecorderImpl(StreamRecorderImpl): return self._cutter.cut_stream() def _on_start(self) -> None: - self._metadata_dumper.enable() + self._ff_metadata_dumper.enable() def _on_stop(self) -> None: - self._metadata_dumper.disable() + self._ff_metadata_dumper.disable() def _run(self) -> None: self._subscription = ( @@ -141,20 +138,13 @@ class HLSStreamRecorderImpl(StreamRecorderImpl): self._segment_fetcher, self._dl_statistics, self._prober, - utils_ops.observe_on_new_thread( - queue_size=10, thread_name=f'StreamRecorder::{self._live.room_id}' - ), - self._segment_remuxer, - self._segment_parser, - flv_ops.process(), + self._analyser, self._cutter, self._limiter, - self._join_point_extractor, - self._injector, - self._analyser, - self._dumper, + self._segment_dumper, self._rec_statistics, self._progress_bar, + self._playlist_dumper, self._exception_handler, ) .subscribe( diff --git a/src/blrec/core/metadata_provider.py b/src/blrec/core/metadata_provider.py index 2d8ab3a..e325300 100644 --- a/src/blrec/core/metadata_provider.py +++ b/src/blrec/core/metadata_provider.py @@ -54,13 +54,6 @@ class MetadataProvider: ', bluray' if '_bluray' in self._stream_recorder.stream_url else '', ) - if self._stream_recorder.recording_mode == 'standard': - recording_mode_desc = '标准' - elif self._stream_recorder.recording_mode == 'raw': - recording_mode_desc = '原始' - else: - recording_mode_desc = '??' - return { 'Title': self._live.room_info.title, 'Artist': self._live.user_info.name, @@ -74,11 +67,10 @@ B站直播录像 开播时间:{live_start_time} 开始推流时间: {stream_available_time} HLS流可用时间: {hls_stream_available_time} -开始录制时间: {record_start_time} +录播起始时间: {record_start_time} 流主机: {self._stream_recorder.stream_host} 流格式:{self._stream_recorder.stream_format} 流画质:{stream_quality} -录制模式: {recording_mode_desc} 录制程序:{__prog__} v{__version__} {__github__}''', 'description': OrderedDict( { @@ -95,7 +87,6 @@ HLS流可用时间: {hls_stream_available_time} 'StreamHost': self._stream_recorder.stream_host, 'StreamFormat': self._stream_recorder.stream_format, 'StreamQuality': stream_quality, - 'RecordingMode': self._stream_recorder.recording_mode, 'Recorder': f'{__prog__} v{__version__} {__github__}', } ), diff --git a/src/blrec/core/operators/connection_error_handler.py b/src/blrec/core/operators/connection_error_handler.py index debceb1..f4f2c5c 100644 --- a/src/blrec/core/operators/connection_error_handler.py +++ b/src/blrec/core/operators/connection_error_handler.py @@ -77,7 +77,7 @@ class ConnectionErrorHandler(AsyncCooperationMixin): timeout = self.disconnection_timeout logger.info(f'Waiting {timeout} seconds for connection recovery... ') timebase = time.monotonic() - while not self._run_coroutine(self._live.check_connectivity()): + while not self._call_coroutine(self._live.check_connectivity()): if timeout is not None and time.monotonic() - timebase > timeout: logger.error(f'Connection not recovered in {timeout} seconds') return False diff --git a/src/blrec/core/operators/recording_monitor.py b/src/blrec/core/operators/recording_monitor.py index 3f1d534..d8c058f 100644 --- a/src/blrec/core/operators/recording_monitor.py +++ b/src/blrec/core/operators/recording_monitor.py @@ -1,7 +1,8 @@ from __future__ import annotations import logging -from typing import Callable, Final, Optional, TypeVar +import time +from typing import Callable, Final, Optional, Tuple, TypeVar from reactivex import Observable, Subject, abc @@ -17,21 +18,35 @@ _T = TypeVar('_T') class RecordingMonitor(AsyncCooperationMixin): - def __init__(self, live: Live, duration_provider: Callable[..., float]) -> None: + def __init__( + self, + live: Live, + duration_provider: Callable[..., float], + duration_updated: Observable[float], + ) -> None: super().__init__() self._live = live self._duration_provider = duration_provider - self._interrupted: Subject[float] = Subject() - self._recovered: Subject[int] = Subject() + self._duration_updated = duration_updated + self._duration_subscription: Optional[abc.DisposableBase] = None + self._interrupted: Subject[Tuple[float, float]] = Subject() + self._recovered: Subject[float] = Subject() @property - def interrupted(self) -> Observable[float]: + def interrupted(self) -> Observable[Tuple[float, float]]: return self._interrupted @property - def recovered(self) -> Observable[int]: + def recovered(self) -> Observable[float]: return self._recovered + def _on_duration_updated(self, duration: float) -> None: + ts = time.time() + self._recovered.on_next(ts) + assert self._duration_subscription is not None + self._duration_subscription.dispose() + self._duration_subscription = None + def __call__(self, source: Observable[_T]) -> Observable[_T]: return self._monitor(source) @@ -48,8 +63,11 @@ class RecordingMonitor(AsyncCooperationMixin): nonlocal recording, failed_count recording = True if failed_count >= CRITERIA: - ts = self._run_coroutine(self._live.get_timestamp()) - self._recovered.on_next(ts) + if self._duration_subscription is not None: + self._duration_subscription.dispose() + self._duration_subscription = self._duration_updated.subscribe( + self._on_duration_updated + ) failed_count = 0 observer.on_next(item) @@ -58,8 +76,9 @@ class RecordingMonitor(AsyncCooperationMixin): if recording: failed_count += 1 if failed_count == CRITERIA: + ts = time.time() duration = self._duration_provider() - self._interrupted.on_next(duration) + self._interrupted.on_next((ts, duration)) observer.on_error(exc) return source.subscribe( diff --git a/src/blrec/core/operators/request_exception_handler.py b/src/blrec/core/operators/request_exception_handler.py index e33574e..b10a53e 100644 --- a/src/blrec/core/operators/request_exception_handler.py +++ b/src/blrec/core/operators/request_exception_handler.py @@ -9,7 +9,9 @@ import aiohttp import requests import urllib3 from reactivex import Observable, abc +from reactivex import operators as ops +from blrec.core import operators as core_ops from blrec.utils import operators as utils_ops __all__ = ('RequestExceptionHandler',) @@ -21,12 +23,14 @@ _T = TypeVar('_T') class RequestExceptionHandler: - def __init__(self) -> None: + def __init__(self, stream_url_resolver: core_ops.StreamURLResolver) -> None: + self._stream_url_resolver = stream_url_resolver self._last_retry_time = time.monotonic() def __call__(self, source: Observable[_T]) -> Observable[_T]: return self._handle(source).pipe( - utils_ops.retry(should_retry=self._should_retry) + ops.do_action(on_error=self._before_retry), + utils_ops.retry(should_retry=self._should_retry), ) def _handle(self, source: Observable[_T]) -> Observable[_T]: @@ -74,3 +78,10 @@ class RequestExceptionHandler: return True else: return False + + def _before_retry(self, exc: Exception) -> None: + if isinstance( + exc, requests.exceptions.HTTPError + ) and exc.response.status_code in (403, 404): + self._stream_url_resolver.reset() + self._stream_url_resolver.rotate_routes() diff --git a/src/blrec/core/operators/stream_url_resolver.py b/src/blrec/core/operators/stream_url_resolver.py index ca8d9bb..ac5a652 100644 --- a/src/blrec/core/operators/stream_url_resolver.py +++ b/src/blrec/core/operators/stream_url_resolver.py @@ -1,7 +1,7 @@ from __future__ import annotations import logging -from typing import Optional +from typing import Final, Optional from urllib.parse import urlparse import requests @@ -19,6 +19,7 @@ from blrec.bili.exceptions import ( NoStreamQualityAvailable, ) from blrec.bili.live import Live +from blrec.bili.live_monitor import LiveMonitor from blrec.utils import operators as utils_ops from blrec.utils.mixins import AsyncCooperationMixin @@ -31,13 +32,24 @@ logger = logging.getLogger(__name__) class StreamURLResolver(AsyncCooperationMixin): - def __init__(self, live: Live, stream_param_holder: StreamParamHolder) -> None: + _MAX_ATTEMPTS_FOR_NO_STREAM: Final[int] = 10 + + def __init__( + self, + live: Live, + session: requests.Session, + live_monitor: LiveMonitor, + stream_param_holder: StreamParamHolder, + ) -> None: super().__init__() self._live = live + self._session = session + self._live_monitor = live_monitor self._stream_param_holder = stream_param_holder self._stream_url: str = '' self._stream_host: str = '' self._stream_params: Optional[StreamParams] = None + self._attempts_for_no_stream: int = 0 @property def stream_url(self) -> str: @@ -47,10 +59,22 @@ class StreamURLResolver(AsyncCooperationMixin): def stream_host(self) -> str: return self._stream_host + @property + def use_alternative_stream(self) -> bool: + return self._stream_param_holder.use_alternative_stream + + @use_alternative_stream.setter + def use_alternative_stream(self, value: bool) -> None: + self._stream_param_holder.use_alternative_stream = value + def reset(self) -> None: self._stream_url = '' self._stream_host = '' self._stream_params = None + self._attempts_for_no_stream = 0 + + def rotate_routes(self) -> None: + self.use_alternative_stream = not self.use_alternative_stream def __call__(self, source: Observable[StreamParams]) -> Observable[str]: self.reset() @@ -77,7 +101,7 @@ class StreamURLResolver(AsyncCooperationMixin): f'api platform: {params.api_platform}, ' f'use alternative stream: {params.use_alternative_stream}' ) - url = self._run_coroutine( + url = self._call_coroutine( self._live.get_live_stream_url( params.quality_number, api_platform=params.api_platform, @@ -93,6 +117,7 @@ class StreamURLResolver(AsyncCooperationMixin): self._stream_url = url self._stream_host = urlparse(url).hostname or '' self._stream_params = params + self._attempts_for_no_stream = 0 observer.on_next(url) return source.subscribe( @@ -104,8 +129,8 @@ class StreamURLResolver(AsyncCooperationMixin): def _can_resue_url(self, params: StreamParams) -> bool: if params == self._stream_params and self._stream_url: try: - response = requests.get( - self._stream_url, stream=True, headers=self._live.headers + response = self._session.get( + self._stream_url, stream=True, headers=self._live.headers, timeout=3 ) response.raise_for_status() except Exception: @@ -134,14 +159,20 @@ class StreamURLResolver(AsyncCooperationMixin): try: raise exc except (NoStreamAvailable, NoStreamCodecAvailable, NoStreamFormatAvailable): - pass + self._attempts_for_no_stream += 1 + if self._attempts_for_no_stream > self._MAX_ATTEMPTS_FOR_NO_STREAM: + self._run_coroutine(self._live_monitor.check_live_status()) + self._attempts_for_no_stream = 0 except NoStreamQualityAvailable: qn = self._stream_param_holder.quality_number - logger.info( - f'The specified stream quality ({qn}) is not available, ' - 'will using the original stream quality (10000) instead.' - ) - self._stream_param_holder.fall_back_quality() + if qn == 10000: + logger.warning('The original stream quality (10000) is not available') + else: + logger.info( + f'The specified stream quality ({qn}) is not available, ' + 'will using the original stream quality (10000) instead.' + ) + self._stream_param_holder.fall_back_quality() except NoAlternativeStreamAvailable: logger.debug( 'No alternative stream url available, ' diff --git a/src/blrec/core/path_provider.py b/src/blrec/core/path_provider.py index 955751d..3db8fef 100644 --- a/src/blrec/core/path_provider.py +++ b/src/blrec/core/path_provider.py @@ -20,10 +20,11 @@ class PathProvider(AsyncCooperationMixin): self.out_dir = out_dir self.path_template = path_template - def __call__(self) -> Tuple[str, int]: - ts = self._run_coroutine(self._live.get_timestamp()) - path = self._make_path(ts) - return path, ts + def __call__(self, timestamp: int = None) -> Tuple[str, int]: + if timestamp is None: + timestamp = self._call_coroutine(self._live.get_timestamp()) + path = self._make_path(timestamp) + return path, timestamp def _make_path(self, timestamp: int) -> str: date_time = datetime.fromtimestamp(timestamp) diff --git a/src/blrec/core/recorder.py b/src/blrec/core/recorder.py index ba662ee..2493644 100644 --- a/src/blrec/core/recorder.py +++ b/src/blrec/core/recorder.py @@ -12,8 +12,9 @@ from blrec.bili.live import Live from blrec.bili.live_monitor import LiveEventListener, LiveMonitor from blrec.bili.models import RoomInfo from blrec.bili.typing import QualityNumber, StreamFormat +from blrec.core.typing import MetaData from blrec.event.event_emitter import EventEmitter, EventListener -from blrec.flv.operators import MetaData, StreamProfile +from blrec.flv.operators import StreamProfile from blrec.setting.typing import RecordingMode from blrec.utils.mixins import AsyncStoppableMixin @@ -114,7 +115,8 @@ class Recorder( self._stream_available: bool = False self._stream_recorder = StreamRecorder( - self._live, + live, + live_monitor, out_dir=out_dir, path_template=path_template, stream_format=stream_format, diff --git a/src/blrec/core/stream_recorder.py b/src/blrec/core/stream_recorder.py index 8f578df..b19bebc 100644 --- a/src/blrec/core/stream_recorder.py +++ b/src/blrec/core/stream_recorder.py @@ -4,17 +4,18 @@ import time from typing import Iterator, Optional from blrec.bili.live import Live +from blrec.bili.live_monitor import LiveMonitor from blrec.bili.typing import QualityNumber, StreamFormat from blrec.event.event_emitter import EventEmitter -from blrec.flv.operators import MetaData, StreamProfile +from blrec.flv.operators import StreamProfile from blrec.setting.typing import RecordingMode from blrec.utils.libc import malloc_trim from blrec.utils.mixins import AsyncStoppableMixin from .flv_stream_recorder_impl import FLVStreamRecorderImpl -from .hls_raw_stream_recorder_impl import HLSRawStreamRecorderImpl from .hls_stream_recorder_impl import HLSStreamRecorderImpl from .stream_recorder_impl import StreamRecorderEventListener +from .typing import MetaData __all__ = 'StreamRecorder', 'StreamRecorderEventListener' @@ -30,6 +31,7 @@ class StreamRecorder( def __init__( self, live: Live, + live_monitor: LiveMonitor, out_dir: str, path_template: str, *, @@ -46,6 +48,7 @@ class StreamRecorder( super().__init__() self._live = live + self._live_monitor = live_monitor self.stream_format = stream_format self.recording_mode = recording_mode self.fmp4_stream_timeout = fmp4_stream_timeout @@ -53,10 +56,7 @@ class StreamRecorder( if stream_format == 'flv': cls = FLVStreamRecorderImpl elif stream_format == 'fmp4': - if recording_mode == 'standard': - cls = HLSStreamRecorderImpl # type: ignore - else: - cls = HLSRawStreamRecorderImpl # type: ignore + cls = HLSStreamRecorderImpl # type: ignore else: logger.warning( f'The specified stream format ({stream_format}) is ' @@ -67,6 +67,7 @@ class StreamRecorder( self._impl = cls( live=live, + live_monitor=live_monitor, out_dir=out_dir, path_template=path_template, quality_number=quality_number, @@ -277,10 +278,12 @@ class StreamRecorder( async def on_video_file_completed(self, path: str) -> None: await self._emit('video_file_completed', path) - async def on_stream_recording_interrupted(self, duration: float) -> None: - await self._emit('stream_recording_interrupted', duration) + async def on_stream_recording_interrupted( + self, timestamp: float, duration: float + ) -> None: + await self._emit('stream_recording_interrupted', timestamp, duration) - async def on_stream_recording_recovered(self, timestamp: int) -> None: + async def on_stream_recording_recovered(self, timestamp: float) -> None: await self._emit('stream_recording_recovered', timestamp) async def on_stream_recording_completed(self) -> None: @@ -307,10 +310,7 @@ class StreamRecorder( if stream_format == 'flv': cls = FLVStreamRecorderImpl elif stream_format == 'fmp4': - if self.recording_mode == 'standard': - cls = HLSStreamRecorderImpl # type: ignore - else: - cls = HLSRawStreamRecorderImpl # type: ignore + cls = HLSStreamRecorderImpl # type: ignore else: logger.warning( f'The specified stream format ({stream_format}) is ' @@ -327,6 +327,7 @@ class StreamRecorder( self._impl = cls( live=self._impl._live, + live_monitor=self._impl._live_monitor, out_dir=self._impl.out_dir, path_template=self._impl.path_template, quality_number=self._impl.quality_number, diff --git a/src/blrec/core/stream_recorder_impl.py b/src/blrec/core/stream_recorder_impl.py index 48b7295..e15d1db 100644 --- a/src/blrec/core/stream_recorder_impl.py +++ b/src/blrec/core/stream_recorder_impl.py @@ -11,12 +11,13 @@ from reactivex import abc from reactivex.typing import StartableFactory, StartableTarget from blrec.bili.live import Live +from blrec.bili.live_monitor import LiveMonitor from blrec.bili.typing import QualityNumber, StreamFormat from blrec.event.event_emitter import EventEmitter, EventListener from blrec.flv import operators as flv_ops from blrec.flv.operators import StreamProfile from blrec.flv.utils import format_timestamp -from blrec.logging.room_id import aio_task_with_room_id +from blrec.hls import operators as hls_ops from blrec.setting.typing import RecordingMode from blrec.utils.mixins import AsyncCooperationMixin, AsyncStoppableMixin @@ -39,10 +40,15 @@ class StreamRecorderEventListener(EventListener): async def on_video_file_completed(self, path: str) -> None: ... - async def on_stream_recording_interrupted(self, duratin: float) -> None: + async def on_stream_recording_interrupted( + self, timestamp: float, duration: float + ) -> None: ... - async def on_stream_recording_recovered(self, timestamp: int) -> None: + async def on_stream_recording_recovered(self, timestamp: float) -> None: + ... + + async def on_duration_lost(self, duration: float) -> None: ... async def on_stream_recording_completed(self) -> None: @@ -58,6 +64,7 @@ class StreamRecorderImpl( def __init__( self, live: Live, + live_monitor: LiveMonitor, out_dir: str, path_template: str, *, @@ -73,6 +80,7 @@ class StreamRecorderImpl( super().__init__() self._live = live + self._live_monitor = live_monitor self._session = requests.Session() self._recording_mode = recording_mode @@ -85,7 +93,7 @@ class StreamRecorderImpl( stream_format=stream_format, quality_number=quality_number ) self._stream_url_resolver = core_ops.StreamURLResolver( - live, self._stream_param_holder + live, self._session, live_monitor, self._stream_param_holder ) self._progress_bar = core_ops.ProgressBar(live) self._metadata_provider = MetadataProvider(live, self) @@ -93,7 +101,9 @@ class StreamRecorderImpl( self._rec_statistics = core_ops.SizedStatistics() self._dl_statistics: Union[core_ops.StreamStatistics, core_ops.SizedStatistics] - self._request_exception_handler = core_ops.RequestExceptionHandler() + self._request_exception_handler = core_ops.RequestExceptionHandler( + self._stream_url_resolver + ) self._connection_error_handler = core_ops.ConnectionErrorHandler( live, disconnection_timeout=disconnection_timeout ) @@ -240,7 +250,7 @@ class StreamRecorderImpl( return '' @property - def metadata(self) -> Optional[flv_ops.MetaData]: + def metadata(self) -> Optional[Union[flv_ops.MetaData, hls_ops.MetaData]]: return None @property @@ -337,19 +347,24 @@ class StreamRecorderImpl( logger.info(f"Video file completed: '{path}'") self._emit_event('video_file_completed', path) - def _on_recording_interrupted(self, duration: float) -> None: - duration_string = format_timestamp(int(duration * 1000)) - logger.info(f'Recording interrupted, current duration: {duration_string}') - self._emit_event('stream_recording_interrupted', duration) - - def _on_recording_recovered(self, timestamp: int) -> None: + def _on_recording_interrupted(self, args: Tuple[float, float]) -> None: + timestamp, duration = args[0], args[1] datetime_string = datetime.fromtimestamp(timestamp).isoformat() - logger.info(f'Recording recovered, current date time {(datetime_string)}') + duration_string = format_timestamp(int(duration * 1000)) + logger.info( + f'Recording interrupted, datetime: {datetime_string}, ' + f'duration: {duration_string}' + ) + self._emit_event('stream_recording_interrupted', timestamp, duration) + + def _on_recording_recovered(self, timestamp: float) -> None: + datetime_string = datetime.fromtimestamp(timestamp).isoformat() + logger.info(f'Recording recovered, datetime: {(datetime_string)}') self._emit_event('stream_recording_recovered', timestamp) - def _emit_event(self, name: str, *args: Any, **kwds: Any) -> None: - self._run_coroutine(self._emit(name, *args, **kwds)) + def _on_duration_lost(self, duration: float) -> None: + logger.info(f'Total duration lost: {(duration)}') + self._emit_event('duration_lost', duration) - @aio_task_with_room_id - async def _emit(self, *args: Any, **kwds: Any) -> None: # type: ignore - await super()._emit(*args, **kwds) + def _emit_event(self, name: str, *args: Any, **kwds: Any) -> None: + self._call_coroutine(self._emit(name, *args, **kwds)) diff --git a/src/blrec/core/typing.py b/src/blrec/core/typing.py index be1c005..87cc2de 100644 --- a/src/blrec/core/typing.py +++ b/src/blrec/core/typing.py @@ -1,5 +1,9 @@ from typing import Union +from blrec.flv.operators import MetaData as FLVMetaData +from blrec.hls.operators import MetaData as HLSMetaData + from .models import DanmuMsg, GiftSendMsg, GuardBuyMsg, SuperChatMsg, UserToastMsg DanmakuMsg = Union[DanmuMsg, GiftSendMsg, GuardBuyMsg, SuperChatMsg, UserToastMsg] +MetaData = Union[FLVMetaData, HLSMetaData] diff --git a/src/blrec/data/webapp/287.5c768f00dcd24631.js b/src/blrec/data/webapp/287.5c768f00dcd24631.js deleted file mode 100644 index f218289..0000000 --- a/src/blrec/data/webapp/287.5c768f00dcd24631.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkblrec=self.webpackChunkblrec||[]).push([[287],{3692:(x,D,s)=>{s.d(D,{f:()=>h});var c=s(2134),p=s(4650);class h{transform(f,_){if("string"==typeof f)f=parseFloat(f);else if("number"!=typeof f||isNaN(f))return"N/A";return(_=Object.assign({bitrate:!1,precision:3,spacer:" "},_)).bitrate?(0,c.AX)(f,_.spacer,_.precision):(0,c.N4)(f,_.spacer,_.precision)}}h.\u0275fac=function(f){return new(f||h)},h.\u0275pipe=p.Yjl({name:"datarate",type:h,pure:!0})},3520:(x,D,s)=>{s.d(D,{U:()=>h});const c={2e4:"4K",1e4:"\u539f\u753b",401:"\u84dd\u5149(\u675c\u6bd4)",400:"\u84dd\u5149",250:"\u8d85\u6e05",150:"\u9ad8\u6e05",80:"\u6d41\u7545"};var p=s(4650);class h{transform(f){return c[f]}}h.\u0275fac=function(f){return new(f||h)},h.\u0275pipe=p.Yjl({name:"quality",type:h,pure:!0})},5141:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{i:()=>InfoPanelComponent});var _angular_core__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(4650),rxjs__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(9646),rxjs__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(7445),rxjs__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(7188),rxjs_operators__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(7886),rxjs_operators__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(3900),rxjs_operators__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__(262),src_app_shared_rx_operators__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__(4007),_shared_task_model__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(2948),ng_zorro_antd_notification__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__(387),_shared_services_task_service__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(844),_angular_common__WEBPACK_IMPORTED_MODULE_14__=__webpack_require__(6895),_wave_graph_wave_graph_component__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1755),_shared_pipes_datarate_pipe__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(3692),_shared_pipes_quality_pipe__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(3520);function InfoPanelComponent_ul_3_ng_container_36_Template(x,D){1&x&&(_angular_core__WEBPACK_IMPORTED_MODULE_4__.ynx(0),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(1,", bluray"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.BQk())}function InfoPanelComponent_ul_3_li_38_Template(x,D){if(1&x&&(_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(0,"li",4)(1,"span",5),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(2,"\u6d41\u7f16\u7801\u5668"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(3,"span",6),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(4),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA()()),2&x){const s=_angular_core__WEBPACK_IMPORTED_MODULE_4__.oxw(2);_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(4),_angular_core__WEBPACK_IMPORTED_MODULE_4__.Oqu(null==s.profile.streams[0].tags?null:s.profile.streams[0].tags.encoder)}}const _c0=function(){return{bitrate:!0}};function InfoPanelComponent_ul_3_Template(x,D){if(1&x&&(_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(0,"ul",3)(1,"li",4)(2,"span",5),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(3,"\u89c6\u9891\u4fe1\u606f"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(4,"span",6)(5,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(6),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(7,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(8),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(9,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(10),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(11,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(12),_angular_core__WEBPACK_IMPORTED_MODULE_4__.ALo(13,"datarate"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA()()(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(14,"li",4)(15,"span",5),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(16,"\u97f3\u9891\u4fe1\u606f"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(17,"span",6)(18,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(19),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(20,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(21),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(22,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(23),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(24,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(25),_angular_core__WEBPACK_IMPORTED_MODULE_4__.ALo(26,"datarate"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA()()(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(27,"li",4)(28,"span",5),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(29,"\u683c\u5f0f\u753b\u8d28"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(30,"span",6)(31,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(32),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(33,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(34),_angular_core__WEBPACK_IMPORTED_MODULE_4__.ALo(35,"quality"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.YNc(36,InfoPanelComponent_ul_3_ng_container_36_Template,2,0,"ng-container",7),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(37,") "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA()()(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.YNc(38,InfoPanelComponent_ul_3_li_38_Template,5,1,"li",8),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(39,"li",4)(40,"span",5),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(41,"\u6d41\u4e3b\u673a\u540d"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(42,"span",6),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(43),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA()(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(44,"li",4)(45,"span",5),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(46,"\u4e0b\u8f7d\u901f\u5ea6"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__._UZ(47,"app-wave-graph",9),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(48,"span",6),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(49),_angular_core__WEBPACK_IMPORTED_MODULE_4__.ALo(50,"datarate"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA()(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(51,"li",4)(52,"span",5),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(53,"\u5f55\u5236\u901f\u5ea6"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__._UZ(54,"app-wave-graph",9),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(55,"span",6),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(56),_angular_core__WEBPACK_IMPORTED_MODULE_4__.ALo(57,"datarate"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA()()()),2&x){const s=_angular_core__WEBPACK_IMPORTED_MODULE_4__.oxw();let c;_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(6),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",s.profile.streams[0].codec_name," "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.AsE(" ",s.profile.streams[0].width,"x",s.profile.streams[0].height," "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",s.fps," fps"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",_angular_core__WEBPACK_IMPORTED_MODULE_4__.xi3(13,19,1e3*s.metadata.videodatarate,_angular_core__WEBPACK_IMPORTED_MODULE_4__.DdM(32,_c0))," "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(7),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",s.profile.streams[1].codec_name," "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",s.profile.streams[1].sample_rate," HZ"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",s.profile.streams[1].channel_layout," "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",_angular_core__WEBPACK_IMPORTED_MODULE_4__.xi3(26,22,1e3*s.metadata.audiodatarate,_angular_core__WEBPACK_IMPORTED_MODULE_4__.DdM(33,_c0))," "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(7),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",s.data.task_status.real_stream_format?s.data.task_status.real_stream_format:"N/A"," "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.AsE(" ",s.data.task_status.real_quality_number?_angular_core__WEBPACK_IMPORTED_MODULE_4__.lcZ(35,25,s.data.task_status.real_quality_number):"N/A"," (",null!==(c=s.data.task_status.real_quality_number)&&void 0!==c?c:"N/A",""),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.Q6J("ngIf",s.isBlurayStreamQuality()),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.Q6J("ngIf",null==s.profile.streams[0]||null==s.profile.streams[0].tags?null:s.profile.streams[0].tags.encoder),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(5),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",s.data.task_status.stream_host," "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(4),_angular_core__WEBPACK_IMPORTED_MODULE_4__.Q6J("value",s.data.task_status.dl_rate),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",_angular_core__WEBPACK_IMPORTED_MODULE_4__.xi3(50,27,8*s.data.task_status.dl_rate,_angular_core__WEBPACK_IMPORTED_MODULE_4__.DdM(34,_c0))," "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(5),_angular_core__WEBPACK_IMPORTED_MODULE_4__.Q6J("value",s.data.task_status.rec_rate),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",_angular_core__WEBPACK_IMPORTED_MODULE_4__.lcZ(57,30,s.data.task_status.rec_rate)," ")}}class InfoPanelComponent{constructor(x,D,s){this.changeDetector=x,this.notification=D,this.taskService=s,this.metadata=null,this.close=new _angular_core__WEBPACK_IMPORTED_MODULE_4__.vpe,this.RunningStatus=_shared_task_model__WEBPACK_IMPORTED_MODULE_5__.cG}get fps(){const avgFrameRate=this.profile?.streams[0]?.avg_frame_rate;return avgFrameRate?eval(avgFrameRate).toFixed():"N/A"}ngOnInit(){this.syncData()}ngOnDestroy(){this.desyncData()}isBlurayStreamQuality(){return/_bluray/.test(this.data.task_status.stream_url)}closePanel(x){x.preventDefault(),x.stopPropagation(),this.close.emit()}syncData(){this.dataSubscription=(0,rxjs__WEBPACK_IMPORTED_MODULE_6__.of)((0,rxjs__WEBPACK_IMPORTED_MODULE_6__.of)(0),(0,rxjs__WEBPACK_IMPORTED_MODULE_7__.F)(1e3)).pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_8__.u)(),(0,rxjs_operators__WEBPACK_IMPORTED_MODULE_9__.w)(()=>(0,rxjs__WEBPACK_IMPORTED_MODULE_10__.$)(this.taskService.getStreamProfile(this.data.room_info.room_id),this.taskService.getMetadata(this.data.room_info.room_id))),(0,rxjs_operators__WEBPACK_IMPORTED_MODULE_11__.K)(x=>{throw this.notification.error("\u83b7\u53d6\u6570\u636e\u51fa\u9519",x.message),x}),(0,src_app_shared_rx_operators__WEBPACK_IMPORTED_MODULE_12__.X)(3,1e3)).subscribe(([x,D])=>{this.profile=x,this.metadata=D,this.changeDetector.markForCheck()},x=>{this.notification.error("\u83b7\u53d6\u6570\u636e\u51fa\u9519","\u7f51\u7edc\u8fde\u63a5\u5f02\u5e38, \u8bf7\u5f85\u7f51\u7edc\u6b63\u5e38\u540e\u5237\u65b0\u3002",{nzDuration:0})})}desyncData(){this.dataSubscription?.unsubscribe()}}InfoPanelComponent.\u0275fac=function x(D){return new(D||InfoPanelComponent)(_angular_core__WEBPACK_IMPORTED_MODULE_4__.Y36(_angular_core__WEBPACK_IMPORTED_MODULE_4__.sBO),_angular_core__WEBPACK_IMPORTED_MODULE_4__.Y36(ng_zorro_antd_notification__WEBPACK_IMPORTED_MODULE_13__.zb),_angular_core__WEBPACK_IMPORTED_MODULE_4__.Y36(_shared_services_task_service__WEBPACK_IMPORTED_MODULE_0__.M))},InfoPanelComponent.\u0275cmp=_angular_core__WEBPACK_IMPORTED_MODULE_4__.Xpm({type:InfoPanelComponent,selectors:[["app-info-panel"]],inputs:{data:"data",profile:"profile",metadata:"metadata"},outputs:{close:"close"},decls:4,vars:1,consts:[[1,"info-panel"],["title","\u5173\u95ed",1,"close-panel",3,"click"],["class","info-list",4,"ngIf"],[1,"info-list"],[1,"info-item"],[1,"label"],[1,"value"],[4,"ngIf"],["class","info-item",4,"ngIf"],[3,"value"]],template:function x(D,s){1&D&&(_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(0,"div",0)(1,"button",1),_angular_core__WEBPACK_IMPORTED_MODULE_4__.NdJ("click",function(p){return s.closePanel(p)}),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(2," [x] "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.YNc(3,InfoPanelComponent_ul_3_Template,58,35,"ul",2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA()),2&D&&(_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(3),_angular_core__WEBPACK_IMPORTED_MODULE_4__.Q6J("ngIf",s.data.task_status.running_status===s.RunningStatus.RECORDING&&s.profile&&s.profile.streams&&s.profile.format&&s.metadata))},dependencies:[_angular_common__WEBPACK_IMPORTED_MODULE_14__.O5,_wave_graph_wave_graph_component__WEBPACK_IMPORTED_MODULE_1__.w,_shared_pipes_datarate_pipe__WEBPACK_IMPORTED_MODULE_2__.f,_shared_pipes_quality_pipe__WEBPACK_IMPORTED_MODULE_3__.U],styles:['@charset "UTF-8";.info-panel[_ngcontent-%COMP%]{color:#fff;text-shadow:1px 1px 2px black;margin:0;padding:0 .5rem;background:rgba(0,0,0,.32)}.info-panel[_ngcontent-%COMP%]{position:absolute;inset:2.55rem 0rem 2rem;width:100%;font-size:1rem;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;overflow:auto}.info-panel[_ngcontent-%COMP%]::-webkit-scrollbar{background-color:transparent;width:4px;height:4px}.info-panel[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:transparent}.info-panel[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#eee;border-radius:2px}.info-panel[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background:#fff}.info-panel[_ngcontent-%COMP%] .close-panel[_ngcontent-%COMP%]{position:absolute;top:0rem;right:0rem;width:2rem;height:2rem;padding:0;color:#fff;background:transparent;border:none;font-size:1rem;display:flex;align-items:center;justify-content:center;cursor:pointer}.info-panel[_ngcontent-%COMP%] .info-list[_ngcontent-%COMP%]{margin:0;padding:0;list-style:none;width:100%;height:100%}.info-panel[_ngcontent-%COMP%] .info-list[_ngcontent-%COMP%] .info-item[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{display:inline-block;margin:0;width:5rem;text-align:right}.info-panel[_ngcontent-%COMP%] .info-list[_ngcontent-%COMP%] .info-item[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]:after{content:"\\ff1a"}.info-panel[_ngcontent-%COMP%] .info-list[_ngcontent-%COMP%] .info-item[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{display:inline-block;margin:0;text-align:left}.info-panel[_ngcontent-%COMP%] .info-list[_ngcontent-%COMP%] .info-item[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:not(:first-child):before{content:", "}app-wave-graph[_ngcontent-%COMP%]{margin-right:1rem}'],changeDetection:0})},1755:(x,D,s)=>{s.d(D,{w:()=>h});var c=s(7445),p=s(4650);class h{constructor(f){this.changeDetector=f,this.value=0,this.width=200,this.height=16,this.stroke="white",this.data=[],this.points=[];for(let _=0;_<=this.width;_+=2)this.data.push(0),this.points.push({x:_,y:this.height})}get polylinePoints(){return this.points.map(f=>`${f.x},${f.y}`).join(" ")}ngOnInit(){this.subscription=(0,c.F)(1e3).subscribe(()=>{this.data.push(this.value||0),this.data.shift();let f=Math.max(...this.data);this.points=this.data.map((_,q)=>({x:Math.min(2*q,this.width),y:(1-_/(f||1))*this.height})),this.changeDetector.markForCheck()})}ngOnDestroy(){this.subscription?.unsubscribe()}}h.\u0275fac=function(f){return new(f||h)(p.Y36(p.sBO))},h.\u0275cmp=p.Xpm({type:h,selectors:[["app-wave-graph"]],inputs:{value:"value",width:"width",height:"height",stroke:"stroke"},decls:2,vars:4,consts:[["fill","none"]],template:function(f,_){1&f&&(p.O4$(),p.TgZ(0,"svg"),p._UZ(1,"polyline",0),p.qZA()),2&f&&(p.uIk("width",_.width)("height",_.height),p.xp6(1),p.uIk("stroke",_.stroke)("points",_.polylinePoints))},styles:["[_nghost-%COMP%]{position:relative;top:2px}"],changeDetection:0})},844:(x,D,s)=>{s.d(D,{M:()=>_});var c=s(4004),p=s(2948),h=s(4650),t=s(529),f=s(7930);class _{constructor(u,g){this.http=u,this.url=g}getAllTaskData(u=p.jf.ALL){const g=this.url.makeApiUrl("/api/v1/tasks/data");return this.http.get(g,{params:{select:u}})}getTaskData(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/data`);return this.http.get(g)}getVideoFileDetails(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/videos`);return this.http.get(g)}getDanmakuFileDetails(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/danmakus`);return this.http.get(g)}getTaskParam(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/param`);return this.http.get(g)}getMetadata(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/metadata`);return this.http.get(g)}getStreamProfile(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/profile`);return this.http.get(g)}updateAllTaskInfos(){const u=this.url.makeApiUrl("/api/v1/tasks/info");return this.http.post(u,null)}updateTaskInfo(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/info`);return this.http.post(g,null)}addTask(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}`);return this.http.post(g,null)}removeTask(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}`);return this.http.delete(g)}removeAllTasks(){const u=this.url.makeApiUrl("/api/v1/tasks");return this.http.delete(u)}startTask(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/start`);return this.http.post(g,null)}startAllTasks(){const u=this.url.makeApiUrl("/api/v1/tasks/start");return this.http.post(u,null)}stopTask(u,g=!1,k=!1){const v=this.url.makeApiUrl(`/api/v1/tasks/${u}/stop`);return this.http.post(v,{force:g,background:k})}stopAllTasks(u=!1,g=!1){const k=this.url.makeApiUrl("/api/v1/tasks/stop");return this.http.post(k,{force:u,background:g})}enableTaskMonitor(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/monitor/enable`);return this.http.post(g,null)}enableAllMonitors(){const u=this.url.makeApiUrl("/api/v1/tasks/monitor/enable");return this.http.post(u,null)}disableTaskMonitor(u,g=!1){const k=this.url.makeApiUrl(`/api/v1/tasks/${u}/monitor/disable`);return this.http.post(k,{background:g})}disableAllMonitors(u=!1){const g=this.url.makeApiUrl("/api/v1/tasks/monitor/disable");return this.http.post(g,{background:u})}enableTaskRecorder(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/recorder/enable`);return this.http.post(g,null)}enableAllRecorders(){const u=this.url.makeApiUrl("/api/v1/tasks/recorder/enable");return this.http.post(u,null)}disableTaskRecorder(u,g=!1,k=!1){const v=this.url.makeApiUrl(`/api/v1/tasks/${u}/recorder/disable`);return this.http.post(v,{force:g,background:k})}disableAllRecorders(u=!1,g=!1){const k=this.url.makeApiUrl("/api/v1/tasks/recorder/disable");return this.http.post(k,{force:u,background:g})}canCutStream(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/cut`);return this.http.get(g).pipe((0,c.U)(k=>k.data.result))}cutStream(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/cut`);return this.http.post(g,null)}}_.\u0275fac=function(u){return new(u||_)(h.LFG(t.eN),h.LFG(f.i))},_.\u0275prov=h.Yz7({token:_,factory:_.\u0275fac,providedIn:"root"})},2948:(x,D,s)=>{s.d(D,{cG:()=>p,cS:()=>t,ii:()=>h,jf:()=>c});var c=(()=>{return(_=c||(c={})).ALL="all",_.PREPARING="preparing",_.LIVING="living",_.ROUNDING="rounding",_.MONITOR_ENABLED="monitor_enabled",_.MONITOR_DISABLED="monitor_disabled",_.RECORDER_ENABLED="recorder_enabled",_.RECORDER_DISABLED="recorder_disabled",_.STOPPED="stopped",_.WAITTING="waitting",_.RECORDING="recording",_.REMUXING="remuxing",_.INJECTING="injecting",c;var _})(),p=(()=>{return(_=p||(p={})).STOPPED="stopped",_.WAITING="waiting",_.RECORDING="recording",_.REMUXING="remuxing",_.INJECTING="injecting",p;var _})(),h=(()=>{return(_=h||(h={})).WAITING="waiting",_.REMUXING="remuxing",_.INJECTING="injecting",h;var _})(),t=(()=>{return(_=t||(t={})).RECORDING="recording",_.REMUXING="remuxing",_.INJECTING="injecting",_.COMPLETED="completed",_.MISSING="missing",_.BROKEN="broken",t;var _})()},2287:(x,D,s)=>{s.r(D),s.d(D,{TasksModule:()=>ot});var c=s(6895),p=s(433),h=s(2289),t=s(4650);class f{constructor(o,e){this._document=e;const i=this._textarea=this._document.createElement("textarea"),a=i.style;a.position="fixed",a.top=a.opacity="0",a.left="-999em",i.setAttribute("aria-hidden","true"),i.value=o,i.readOnly=!0,this._document.body.appendChild(i)}copy(){const o=this._textarea;let e=!1;try{if(o){const i=this._document.activeElement;o.select(),o.setSelectionRange(0,o.value.length),e=this._document.execCommand("copy"),i&&i.focus()}}catch{}return e}destroy(){const o=this._textarea;o&&(o.remove(),this._textarea=void 0)}}let _=(()=>{class n{constructor(e){this._document=e}copy(e){const i=this.beginCopy(e),a=i.copy();return i.destroy(),a}beginCopy(e){return new f(e,this._document)}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(c.K0))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),g=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({}),n})();var k=s(3679),v=s(1971),E=s(1102),T=s(655),F=s(7579),A=s(2722),$=s(3414),M=s(3187),P=s(445);function Ft(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"span",1),t.NdJ("click",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.closeTag(a))}),t.qZA()}}const De=["*"];let Wt=(()=>{class n{constructor(e,i,a,r){this.cdr=e,this.renderer=i,this.elementRef=a,this.directionality=r,this.isPresetColor=!1,this.nzMode="default",this.nzChecked=!1,this.nzOnClose=new t.vpe,this.nzCheckedChange=new t.vpe,this.dir="ltr",this.destroy$=new F.x}updateCheckedStatus(){"checkable"===this.nzMode&&(this.nzChecked=!this.nzChecked,this.nzCheckedChange.emit(this.nzChecked))}closeTag(e){this.nzOnClose.emit(e),e.defaultPrevented||this.renderer.removeChild(this.renderer.parentNode(this.elementRef.nativeElement),this.elementRef.nativeElement)}clearPresetColor(){const e=this.elementRef.nativeElement,i=new RegExp(`(ant-tag-(?:${[...$.uf,...$.Bh].join("|")}))`,"g"),a=e.classList.toString(),r=[];let d=i.exec(a);for(;null!==d;)r.push(d[1]),d=i.exec(a);e.classList.remove(...r)}setPresetColor(){const e=this.elementRef.nativeElement;this.clearPresetColor(),this.isPresetColor=!!this.nzColor&&((0,$.o2)(this.nzColor)||(0,$.M8)(this.nzColor)),this.isPresetColor&&e.classList.add(`ant-tag-${this.nzColor}`)}ngOnInit(){this.directionality.change?.pipe((0,A.R)(this.destroy$)).subscribe(e=>{this.dir=e,this.cdr.detectChanges()}),this.dir=this.directionality.value}ngOnChanges(e){const{nzColor:i}=e;i&&this.setPresetColor()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(t.sBO),t.Y36(t.Qsj),t.Y36(t.SBq),t.Y36(P.Is,8))},n.\u0275cmp=t.Xpm({type:n,selectors:[["nz-tag"]],hostAttrs:[1,"ant-tag"],hostVars:10,hostBindings:function(e,i){1&e&&t.NdJ("click",function(){return i.updateCheckedStatus()}),2&e&&(t.Udp("background-color",i.isPresetColor?"":i.nzColor),t.ekj("ant-tag-has-color",i.nzColor&&!i.isPresetColor)("ant-tag-checkable","checkable"===i.nzMode)("ant-tag-checkable-checked",i.nzChecked)("ant-tag-rtl","rtl"===i.dir))},inputs:{nzMode:"nzMode",nzColor:"nzColor",nzChecked:"nzChecked"},outputs:{nzOnClose:"nzOnClose",nzCheckedChange:"nzCheckedChange"},exportAs:["nzTag"],features:[t.TTD],ngContentSelectors:De,decls:2,vars:1,consts:[["nz-icon","","nzType","close","class","ant-tag-close-icon","tabindex","-1",3,"click",4,"ngIf"],["nz-icon","","nzType","close","tabindex","-1",1,"ant-tag-close-icon",3,"click"]],template:function(e,i){1&e&&(t.F$t(),t.Hsn(0),t.YNc(1,Ft,1,0,"span",0)),2&e&&(t.xp6(1),t.Q6J("ngIf","closeable"===i.nzMode))},dependencies:[c.O5,E.Ls],encapsulation:2,changeDetection:0}),(0,T.gn)([(0,M.yF)()],n.prototype,"nzChecked",void 0),n})(),Me=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({imports:[P.vT,c.ez,p.u5,E.PV]}),n})();var Yt=s(4383);const ke=["nzType","avatar"];function Oe(n,o){if(1&n&&(t.TgZ(0,"div",5),t._UZ(1,"nz-skeleton-element",6),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("nzSize",e.avatar.size||"default")("nzShape",e.avatar.shape||"circle")}}function ve(n,o){if(1&n&&t._UZ(0,"h3",7),2&n){const e=t.oxw(2);t.Udp("width",e.toCSSUnit(e.title.width))}}function Ee(n,o){if(1&n&&t._UZ(0,"li"),2&n){const e=o.index,i=t.oxw(3);t.Udp("width",i.toCSSUnit(i.widthList[e]))}}function Ae(n,o){if(1&n&&(t.TgZ(0,"ul",8),t.YNc(1,Ee,1,2,"li",9),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("ngForOf",e.rowsList)}}function Pe(n,o){if(1&n&&(t.ynx(0),t.YNc(1,Oe,2,2,"div",1),t.TgZ(2,"div",2),t.YNc(3,ve,1,2,"h3",3),t.YNc(4,Ae,2,1,"ul",4),t.qZA(),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",!!e.nzAvatar),t.xp6(2),t.Q6J("ngIf",!!e.nzTitle),t.xp6(1),t.Q6J("ngIf",!!e.nzParagraph)}}function Se(n,o){1&n&&(t.ynx(0),t.Hsn(1),t.BQk())}const ye=["*"];let Fe=(()=>{class n{constructor(){this.nzActive=!1,this.nzBlock=!1}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275dir=t.lG2({type:n,selectors:[["nz-skeleton-element"]],hostAttrs:[1,"ant-skeleton","ant-skeleton-element"],hostVars:4,hostBindings:function(e,i){2&e&&t.ekj("ant-skeleton-active",i.nzActive)("ant-skeleton-block",i.nzBlock)},inputs:{nzActive:"nzActive",nzType:"nzType",nzBlock:"nzBlock"}}),(0,T.gn)([(0,M.yF)()],n.prototype,"nzBlock",void 0),n})(),be=(()=>{class n{constructor(){this.nzShape="circle",this.nzSize="default",this.styleMap={}}ngOnChanges(e){if(e.nzSize&&"number"==typeof this.nzSize){const i=`${this.nzSize}px`;this.styleMap={width:i,height:i,"line-height":i}}else this.styleMap={}}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["nz-skeleton-element","nzType","avatar"]],inputs:{nzShape:"nzShape",nzSize:"nzSize"},features:[t.TTD],attrs:ke,decls:1,vars:9,consts:[[1,"ant-skeleton-avatar",3,"ngStyle"]],template:function(e,i){1&e&&t._UZ(0,"span",0),2&e&&(t.ekj("ant-skeleton-avatar-square","square"===i.nzShape)("ant-skeleton-avatar-circle","circle"===i.nzShape)("ant-skeleton-avatar-lg","large"===i.nzSize)("ant-skeleton-avatar-sm","small"===i.nzSize),t.Q6J("ngStyle",i.styleMap))},dependencies:[c.PC],encapsulation:2,changeDetection:0}),n})(),we=(()=>{class n{constructor(e,i,a){this.cdr=e,this.nzActive=!1,this.nzLoading=!0,this.nzRound=!1,this.nzTitle=!0,this.nzAvatar=!1,this.nzParagraph=!0,this.rowsList=[],this.widthList=[],i.addClass(a.nativeElement,"ant-skeleton")}toCSSUnit(e=""){return(0,M.WX)(e)}getTitleProps(){const e=!!this.nzAvatar,i=!!this.nzParagraph;let a="";return!e&&i?a="38%":e&&i&&(a="50%"),{width:a,...this.getProps(this.nzTitle)}}getAvatarProps(){return{shape:this.nzTitle&&!this.nzParagraph?"square":"circle",size:"large",...this.getProps(this.nzAvatar)}}getParagraphProps(){const e=!!this.nzAvatar,i=!!this.nzTitle,a={};return(!e||!i)&&(a.width="61%"),a.rows=!e&&i?3:2,{...a,...this.getProps(this.nzParagraph)}}getProps(e){return e&&"object"==typeof e?e:{}}getWidthList(){const{width:e,rows:i}=this.paragraph;let a=[];return e&&Array.isArray(e)?a=e:e&&!Array.isArray(e)&&(a=[],a[i-1]=e),a}updateProps(){this.title=this.getTitleProps(),this.avatar=this.getAvatarProps(),this.paragraph=this.getParagraphProps(),this.rowsList=[...Array(this.paragraph.rows)],this.widthList=this.getWidthList(),this.cdr.markForCheck()}ngOnInit(){this.updateProps()}ngOnChanges(e){(e.nzTitle||e.nzAvatar||e.nzParagraph)&&this.updateProps()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(t.sBO),t.Y36(t.Qsj),t.Y36(t.SBq))},n.\u0275cmp=t.Xpm({type:n,selectors:[["nz-skeleton"]],hostVars:6,hostBindings:function(e,i){2&e&&t.ekj("ant-skeleton-with-avatar",!!i.nzAvatar)("ant-skeleton-active",i.nzActive)("ant-skeleton-round",!!i.nzRound)},inputs:{nzActive:"nzActive",nzLoading:"nzLoading",nzRound:"nzRound",nzTitle:"nzTitle",nzAvatar:"nzAvatar",nzParagraph:"nzParagraph"},exportAs:["nzSkeleton"],features:[t.TTD],ngContentSelectors:ye,decls:2,vars:2,consts:[[4,"ngIf"],["class","ant-skeleton-header",4,"ngIf"],[1,"ant-skeleton-content"],["class","ant-skeleton-title",3,"width",4,"ngIf"],["class","ant-skeleton-paragraph",4,"ngIf"],[1,"ant-skeleton-header"],["nzType","avatar",3,"nzSize","nzShape"],[1,"ant-skeleton-title"],[1,"ant-skeleton-paragraph"],[3,"width",4,"ngFor","ngForOf"]],template:function(e,i){1&e&&(t.F$t(),t.YNc(0,Pe,5,3,"ng-container",0),t.YNc(1,Se,2,0,"ng-container",0)),2&e&&(t.Q6J("ngIf",i.nzLoading),t.xp6(1),t.Q6J("ngIf",!i.nzLoading))},dependencies:[c.sg,c.O5,Fe,be],encapsulation:2,changeDetection:0}),n})(),qt=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({imports:[P.vT,c.ez]}),n})();var it=s(7570),bt=s(1243),j=s(9562),At=s(6616),K=s(5156),R=s(6704),V=s(5635),$t=s(8213),Ie=s(4903),Ne=s(8184),U=s(6287),Be=s(1691),Ze=s(2687),Ue=s(1811);let Ye=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({imports:[P.vT,c.ez,At.sL,Ne.U8,Ue.YI,E.PV,U.T,Be.e4,Ie.g,it.cg,Ze.rt]}),n})();var Pt=s(8521),jt=s(2577),Vt=s(4788),Ht=s(5681),qe=s(2539),S=s(2536);function $e(n,o){1&n&&t.GkF(0)}function je(n,o){if(1&n&&(t.ynx(0),t.YNc(1,$e,1,0,"ng-container",9),t.BQk()),2&n){const e=t.oxw(3);t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzIcon)}}function Ve(n,o){if(1&n&&t._UZ(0,"span",10),2&n){const e=t.oxw(3);t.Q6J("nzType",e.nzIconType||e.inferredIconType)("nzTheme",e.iconTheme)}}function He(n,o){if(1&n&&(t.TgZ(0,"div",6),t.YNc(1,je,2,1,"ng-container",7),t.YNc(2,Ve,1,2,"ng-template",null,8,t.W1O),t.qZA()),2&n){const e=t.MAs(3),i=t.oxw(2);t.xp6(1),t.Q6J("ngIf",i.nzIcon)("ngIfElse",e)}}function Xe(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw(4);t.xp6(1),t.Oqu(e.nzMessage)}}function tn(n,o){if(1&n&&(t.TgZ(0,"span",14),t.YNc(1,Xe,2,1,"ng-container",9),t.qZA()),2&n){const e=t.oxw(3);t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzMessage)}}function en(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw(4);t.xp6(1),t.Oqu(e.nzDescription)}}function nn(n,o){if(1&n&&(t.TgZ(0,"span",15),t.YNc(1,en,2,1,"ng-container",9),t.qZA()),2&n){const e=t.oxw(3);t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzDescription)}}function on(n,o){if(1&n&&(t.TgZ(0,"div",11),t.YNc(1,tn,2,1,"span",12),t.YNc(2,nn,2,1,"span",13),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("ngIf",e.nzMessage),t.xp6(1),t.Q6J("ngIf",e.nzDescription)}}function an(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw(3);t.xp6(1),t.Oqu(e.nzAction)}}function rn(n,o){if(1&n&&(t.TgZ(0,"div",16),t.YNc(1,an,2,1,"ng-container",9),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzAction)}}function sn(n,o){1&n&&t._UZ(0,"span",19)}function ln(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"span",20),t._uU(2),t.qZA(),t.BQk()),2&n){const e=t.oxw(4);t.xp6(2),t.Oqu(e.nzCloseText)}}function cn(n,o){if(1&n&&(t.ynx(0),t.YNc(1,ln,3,1,"ng-container",9),t.BQk()),2&n){const e=t.oxw(3);t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzCloseText)}}function _n(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"button",17),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.closeAlert())}),t.YNc(1,sn,1,0,"ng-template",null,18,t.W1O),t.YNc(3,cn,2,1,"ng-container",7),t.qZA()}if(2&n){const e=t.MAs(2),i=t.oxw(2);t.xp6(3),t.Q6J("ngIf",i.nzCloseText)("ngIfElse",e)}}function un(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"div",1),t.NdJ("@slideAlertMotion.done",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.onFadeAnimationDone())}),t.YNc(1,He,4,2,"div",2),t.YNc(2,on,3,2,"div",3),t.YNc(3,rn,2,1,"div",4),t.YNc(4,_n,4,2,"button",5),t.qZA()}if(2&n){const e=t.oxw();t.ekj("ant-alert-rtl","rtl"===e.dir)("ant-alert-success","success"===e.nzType)("ant-alert-info","info"===e.nzType)("ant-alert-warning","warning"===e.nzType)("ant-alert-error","error"===e.nzType)("ant-alert-no-icon",!e.nzShowIcon)("ant-alert-banner",e.nzBanner)("ant-alert-closable",e.nzCloseable)("ant-alert-with-description",!!e.nzDescription),t.Q6J("@.disabled",e.nzNoAnimation)("@slideAlertMotion",void 0),t.xp6(1),t.Q6J("ngIf",e.nzShowIcon),t.xp6(1),t.Q6J("ngIf",e.nzMessage||e.nzDescription),t.xp6(1),t.Q6J("ngIf",e.nzAction),t.xp6(1),t.Q6J("ngIf",e.nzCloseable||e.nzCloseText)}}let pn=(()=>{class n{constructor(e,i,a){this.nzConfigService=e,this.cdr=i,this.directionality=a,this._nzModuleName="alert",this.nzAction=null,this.nzCloseText=null,this.nzIconType=null,this.nzMessage=null,this.nzDescription=null,this.nzType="info",this.nzCloseable=!1,this.nzShowIcon=!1,this.nzBanner=!1,this.nzNoAnimation=!1,this.nzIcon=null,this.nzOnClose=new t.vpe,this.closed=!1,this.iconTheme="fill",this.inferredIconType="info-circle",this.dir="ltr",this.isTypeSet=!1,this.isShowIconSet=!1,this.destroy$=new F.x,this.nzConfigService.getConfigChangeEventForComponent("alert").pipe((0,A.R)(this.destroy$)).subscribe(()=>{this.cdr.markForCheck()})}ngOnInit(){this.directionality.change?.pipe((0,A.R)(this.destroy$)).subscribe(e=>{this.dir=e,this.cdr.detectChanges()}),this.dir=this.directionality.value}closeAlert(){this.closed=!0}onFadeAnimationDone(){this.closed&&this.nzOnClose.emit(!0)}ngOnChanges(e){const{nzShowIcon:i,nzDescription:a,nzType:r,nzBanner:d}=e;if(i&&(this.isShowIconSet=!0),r)switch(this.isTypeSet=!0,this.nzType){case"error":this.inferredIconType="close-circle";break;case"success":this.inferredIconType="check-circle";break;case"info":this.inferredIconType="info-circle";break;case"warning":this.inferredIconType="exclamation-circle"}a&&(this.iconTheme=this.nzDescription?"outline":"fill"),d&&(this.isTypeSet||(this.nzType="warning"),this.isShowIconSet||(this.nzShowIcon=!0))}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(S.jY),t.Y36(t.sBO),t.Y36(P.Is,8))},n.\u0275cmp=t.Xpm({type:n,selectors:[["nz-alert"]],inputs:{nzAction:"nzAction",nzCloseText:"nzCloseText",nzIconType:"nzIconType",nzMessage:"nzMessage",nzDescription:"nzDescription",nzType:"nzType",nzCloseable:"nzCloseable",nzShowIcon:"nzShowIcon",nzBanner:"nzBanner",nzNoAnimation:"nzNoAnimation",nzIcon:"nzIcon"},outputs:{nzOnClose:"nzOnClose"},exportAs:["nzAlert"],features:[t.TTD],decls:1,vars:1,consts:[["class","ant-alert",3,"ant-alert-rtl","ant-alert-success","ant-alert-info","ant-alert-warning","ant-alert-error","ant-alert-no-icon","ant-alert-banner","ant-alert-closable","ant-alert-with-description",4,"ngIf"],[1,"ant-alert"],["class","ant-alert-icon",4,"ngIf"],["class","ant-alert-content",4,"ngIf"],["class","ant-alert-action",4,"ngIf"],["type","button","tabindex","0","class","ant-alert-close-icon",3,"click",4,"ngIf"],[1,"ant-alert-icon"],[4,"ngIf","ngIfElse"],["iconDefaultTemplate",""],[4,"nzStringTemplateOutlet"],["nz-icon","",3,"nzType","nzTheme"],[1,"ant-alert-content"],["class","ant-alert-message",4,"ngIf"],["class","ant-alert-description",4,"ngIf"],[1,"ant-alert-message"],[1,"ant-alert-description"],[1,"ant-alert-action"],["type","button","tabindex","0",1,"ant-alert-close-icon",3,"click"],["closeDefaultTemplate",""],["nz-icon","","nzType","close"],[1,"ant-alert-close-text"]],template:function(e,i){1&e&&t.YNc(0,un,5,24,"div",0),2&e&&t.Q6J("ngIf",!i.closed)},dependencies:[c.O5,E.Ls,U.f],encapsulation:2,data:{animation:[qe.Rq]},changeDetection:0}),(0,T.gn)([(0,S.oS)(),(0,M.yF)()],n.prototype,"nzCloseable",void 0),(0,T.gn)([(0,S.oS)(),(0,M.yF)()],n.prototype,"nzShowIcon",void 0),(0,T.gn)([(0,M.yF)()],n.prototype,"nzBanner",void 0),(0,T.gn)([(0,M.yF)()],n.prototype,"nzNoAnimation",void 0),n})(),gn=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({imports:[P.vT,c.ez,E.PV,U.T]}),n})();var at=s(7131),wt=s(8e3);function dn(n,o){if(1&n&&(t.ynx(0),t._UZ(1,"span",8),t.BQk()),2&n){const e=t.oxw(3);t.xp6(1),t.Q6J("nzType",e.icon)}}function mn(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=o.$implicit,i=t.oxw(4);t.xp6(1),t.hij(" ",e(i.nzPercent)," ")}}const hn=function(n){return{$implicit:n}};function fn(n,o){if(1&n&&t.YNc(0,mn,2,1,"ng-container",9),2&n){const e=t.oxw(3);t.Q6J("nzStringTemplateOutlet",e.formatter)("nzStringTemplateOutletContext",t.VKq(2,hn,e.nzPercent))}}function Cn(n,o){if(1&n&&(t.TgZ(0,"span",5),t.YNc(1,dn,2,1,"ng-container",6),t.YNc(2,fn,1,4,"ng-template",null,7,t.W1O),t.qZA()),2&n){const e=t.MAs(3),i=t.oxw(2);t.xp6(1),t.Q6J("ngIf",("exception"===i.status||"success"===i.status)&&!i.nzFormat)("ngIfElse",e)}}function zn(n,o){if(1&n&&t.YNc(0,Cn,4,2,"span",4),2&n){const e=t.oxw();t.Q6J("ngIf",e.nzShowInfo)}}function Tn(n,o){if(1&n&&t._UZ(0,"div",17),2&n){const e=t.oxw(4);t.Udp("width",e.nzSuccessPercent,"%")("border-radius","round"===e.nzStrokeLinecap?"100px":"0")("height",e.strokeWidth,"px")}}function xn(n,o){if(1&n&&(t.TgZ(0,"div",13)(1,"div",14),t._UZ(2,"div",15),t.YNc(3,Tn,1,6,"div",16),t.qZA()()),2&n){const e=t.oxw(3);t.xp6(2),t.Udp("width",e.nzPercent,"%")("border-radius","round"===e.nzStrokeLinecap?"100px":"0")("background",e.isGradient?null:e.nzStrokeColor)("background-image",e.isGradient?e.lineGradient:null)("height",e.strokeWidth,"px"),t.xp6(1),t.Q6J("ngIf",e.nzSuccessPercent||0===e.nzSuccessPercent)}}function Dn(n,o){}function Mn(n,o){if(1&n&&(t.ynx(0),t.YNc(1,xn,4,11,"div",11),t.YNc(2,Dn,0,0,"ng-template",12),t.BQk()),2&n){const e=t.oxw(2),i=t.MAs(1);t.xp6(1),t.Q6J("ngIf",!e.isSteps),t.xp6(1),t.Q6J("ngTemplateOutlet",i)}}function kn(n,o){1&n&&t._UZ(0,"div",20),2&n&&t.Q6J("ngStyle",o.$implicit)}function On(n,o){}function vn(n,o){if(1&n&&(t.TgZ(0,"div",18),t.YNc(1,kn,1,1,"div",19),t.YNc(2,On,0,0,"ng-template",12),t.qZA()),2&n){const e=t.oxw(2),i=t.MAs(1);t.xp6(1),t.Q6J("ngForOf",e.steps),t.xp6(1),t.Q6J("ngTemplateOutlet",i)}}function En(n,o){if(1&n&&(t.TgZ(0,"div"),t.YNc(1,Mn,3,2,"ng-container",2),t.YNc(2,vn,3,2,"div",10),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",!e.isSteps),t.xp6(1),t.Q6J("ngIf",e.isSteps)}}function An(n,o){if(1&n&&(t.O4$(),t._UZ(0,"stop")),2&n){const e=o.$implicit;t.uIk("offset",e.offset)("stop-color",e.color)}}function Pn(n,o){if(1&n&&(t.O4$(),t.TgZ(0,"defs")(1,"linearGradient",24),t.YNc(2,An,1,2,"stop",25),t.qZA()()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("id","gradient-"+e.gradientId),t.xp6(1),t.Q6J("ngForOf",e.circleGradient)}}function Sn(n,o){if(1&n&&(t.O4$(),t._UZ(0,"path",26)),2&n){const e=o.$implicit,i=t.oxw(2);t.Q6J("ngStyle",e.strokePathStyle),t.uIk("d",i.pathString)("stroke-linecap",i.nzStrokeLinecap)("stroke",e.stroke)("stroke-width",i.nzPercent?i.strokeWidth:0)}}function yn(n,o){1&n&&t.O4$()}function Fn(n,o){if(1&n&&(t.TgZ(0,"div",14),t.O4$(),t.TgZ(1,"svg",21),t.YNc(2,Pn,3,2,"defs",2),t._UZ(3,"path",22),t.YNc(4,Sn,1,5,"path",23),t.qZA(),t.YNc(5,yn,0,0,"ng-template",12),t.qZA()),2&n){const e=t.oxw(),i=t.MAs(1);t.Udp("width",e.nzWidth,"px")("height",e.nzWidth,"px")("font-size",.15*e.nzWidth+6,"px"),t.ekj("ant-progress-circle-gradient",e.isGradient),t.xp6(2),t.Q6J("ngIf",e.isGradient),t.xp6(1),t.Q6J("ngStyle",e.trailPathStyle),t.uIk("stroke-width",e.strokeWidth)("d",e.pathString),t.xp6(1),t.Q6J("ngForOf",e.progressCirclePath)("ngForTrackBy",e.trackByFn),t.xp6(1),t.Q6J("ngTemplateOutlet",i)}}const te=n=>{let o=[];return Object.keys(n).forEach(e=>{const i=n[e],a=function bn(n){return+n.replace("%","")}(e);isNaN(a)||o.push({key:a,value:i})}),o=o.sort((e,i)=>e.key-i.key),o};let Nn=0;const ee="progress",Bn=new Map([["success","check"],["exception","close"]]),Zn=new Map([["normal","#108ee9"],["exception","#ff5500"],["success","#87d068"]]),Un=n=>`${n}%`;let ne=(()=>{class n{constructor(e,i,a){this.cdr=e,this.nzConfigService=i,this.directionality=a,this._nzModuleName=ee,this.nzShowInfo=!0,this.nzWidth=132,this.nzStrokeColor=void 0,this.nzSize="default",this.nzPercent=0,this.nzStrokeWidth=void 0,this.nzGapDegree=void 0,this.nzType="line",this.nzGapPosition="top",this.nzStrokeLinecap="round",this.nzSteps=0,this.steps=[],this.lineGradient=null,this.isGradient=!1,this.isSteps=!1,this.gradientId=Nn++,this.progressCirclePath=[],this.trailPathStyle=null,this.dir="ltr",this.trackByFn=r=>`${r}`,this.cachedStatus="normal",this.inferredStatus="normal",this.destroy$=new F.x}get formatter(){return this.nzFormat||Un}get status(){return this.nzStatus||this.inferredStatus}get strokeWidth(){return this.nzStrokeWidth||("line"===this.nzType&&"small"!==this.nzSize?8:6)}get isCircleStyle(){return"circle"===this.nzType||"dashboard"===this.nzType}ngOnChanges(e){const{nzSteps:i,nzGapPosition:a,nzStrokeLinecap:r,nzStrokeColor:d,nzGapDegree:C,nzType:z,nzStatus:l,nzPercent:y,nzSuccessPercent:w,nzStrokeWidth:Z}=e;l&&(this.cachedStatus=this.nzStatus||this.cachedStatus),(y||w)&&(parseInt(this.nzPercent.toString(),10)>=100?((0,M.DX)(this.nzSuccessPercent)&&this.nzSuccessPercent>=100||void 0===this.nzSuccessPercent)&&(this.inferredStatus="success"):this.inferredStatus=this.cachedStatus),(l||y||w||d)&&this.updateIcon(),d&&this.setStrokeColor(),(a||r||C||z||y||d||d)&&this.getCirclePaths(),(y||i||Z)&&(this.isSteps=this.nzSteps>0,this.isSteps&&this.getSteps())}ngOnInit(){this.nzConfigService.getConfigChangeEventForComponent(ee).pipe((0,A.R)(this.destroy$)).subscribe(()=>{this.updateIcon(),this.setStrokeColor(),this.getCirclePaths()}),this.directionality.change?.pipe((0,A.R)(this.destroy$)).subscribe(e=>{this.dir=e,this.cdr.detectChanges()}),this.dir=this.directionality.value}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}updateIcon(){const e=Bn.get(this.status);this.icon=e?e+(this.isCircleStyle?"-o":"-circle-fill"):""}getSteps(){const e=Math.floor(this.nzSteps*(this.nzPercent/100)),i="small"===this.nzSize?2:14,a=[];for(let r=0;r<this.nzSteps;r++){let d;r<=e-1&&(d=this.nzStrokeColor),a.push({backgroundColor:`${d}`,width:`${i}px`,height:`${this.strokeWidth}px`})}this.steps=a}getCirclePaths(){if(!this.isCircleStyle)return;const e=(0,M.DX)(this.nzSuccessPercent)?[this.nzSuccessPercent,this.nzPercent]:[this.nzPercent],i=50-this.strokeWidth/2,r=2*Math.PI*i,d=this.nzGapDegree||("circle"===this.nzType?0:75);let C=0,z=-i,l=0,y=-2*i;switch(this.nzGapPosition||("circle"===this.nzType?"top":"bottom")){case"left":C=-i,z=0,l=2*i,y=0;break;case"right":C=i,z=0,l=-2*i,y=0;break;case"bottom":z=i,y=2*i}this.pathString=`M 50,50 m ${C},${z}\n a ${i},${i} 0 1 1 ${l},${-y}\n a ${i},${i} 0 1 1 ${-l},${y}`,this.trailPathStyle={strokeDasharray:`${r-d}px ${r}px`,strokeDashoffset:`-${d/2}px`,transition:"stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s"},this.progressCirclePath=e.map((w,Z)=>{const I=2===e.length&&0===Z;return{stroke:this.isGradient&&!I?`url(#gradient-${this.gradientId})`:null,strokePathStyle:{stroke:this.isGradient?null:I?Zn.get("success"):this.nzStrokeColor,transition:"stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s",strokeDasharray:`${(w||0)/100*(r-d)}px ${r}px`,strokeDashoffset:`-${d/2}px`}}}).reverse()}setStrokeColor(){const e=this.nzStrokeColor,i=this.isGradient=!!e&&"string"!=typeof e;i&&!this.isCircleStyle?this.lineGradient=(n=>{const{from:o="#1890ff",to:e="#1890ff",direction:i="to right",...a}=n;return 0!==Object.keys(a).length?`linear-gradient(${i}, ${te(a).map(({key:d,value:C})=>`${C} ${d}%`).join(", ")})`:`linear-gradient(${i}, ${o}, ${e})`})(e):i&&this.isCircleStyle?this.circleGradient=(n=>te(this.nzStrokeColor).map(({key:o,value:e})=>({offset:`${o}%`,color:e})))():(this.lineGradient=null,this.circleGradient=[])}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(t.sBO),t.Y36(S.jY),t.Y36(P.Is,8))},n.\u0275cmp=t.Xpm({type:n,selectors:[["nz-progress"]],inputs:{nzShowInfo:"nzShowInfo",nzWidth:"nzWidth",nzStrokeColor:"nzStrokeColor",nzSize:"nzSize",nzFormat:"nzFormat",nzSuccessPercent:"nzSuccessPercent",nzPercent:"nzPercent",nzStrokeWidth:"nzStrokeWidth",nzGapDegree:"nzGapDegree",nzStatus:"nzStatus",nzType:"nzType",nzGapPosition:"nzGapPosition",nzStrokeLinecap:"nzStrokeLinecap",nzSteps:"nzSteps"},exportAs:["nzProgress"],features:[t.TTD],decls:5,vars:17,consts:[["progressInfoTemplate",""],[3,"ngClass"],[4,"ngIf"],["class","ant-progress-inner",3,"width","height","fontSize","ant-progress-circle-gradient",4,"ngIf"],["class","ant-progress-text",4,"ngIf"],[1,"ant-progress-text"],[4,"ngIf","ngIfElse"],["formatTemplate",""],["nz-icon","",3,"nzType"],[4,"nzStringTemplateOutlet","nzStringTemplateOutletContext"],["class","ant-progress-steps-outer",4,"ngIf"],["class","ant-progress-outer",4,"ngIf"],[3,"ngTemplateOutlet"],[1,"ant-progress-outer"],[1,"ant-progress-inner"],[1,"ant-progress-bg"],["class","ant-progress-success-bg",3,"width","border-radius","height",4,"ngIf"],[1,"ant-progress-success-bg"],[1,"ant-progress-steps-outer"],["class","ant-progress-steps-item",3,"ngStyle",4,"ngFor","ngForOf"],[1,"ant-progress-steps-item",3,"ngStyle"],["viewBox","0 0 100 100",1,"ant-progress-circle"],["stroke","#f3f3f3","fill-opacity","0",1,"ant-progress-circle-trail",3,"ngStyle"],["class","ant-progress-circle-path","fill-opacity","0",3,"ngStyle",4,"ngFor","ngForOf","ngForTrackBy"],["x1","100%","y1","0%","x2","0%","y2","0%",3,"id"],[4,"ngFor","ngForOf"],["fill-opacity","0",1,"ant-progress-circle-path",3,"ngStyle"]],template:function(e,i){1&e&&(t.YNc(0,zn,1,1,"ng-template",null,0,t.W1O),t.TgZ(2,"div",1),t.YNc(3,En,3,2,"div",2),t.YNc(4,Fn,6,15,"div",3),t.qZA()),2&e&&(t.xp6(2),t.ekj("ant-progress-line","line"===i.nzType)("ant-progress-small","small"===i.nzSize)("ant-progress-default","default"===i.nzSize)("ant-progress-show-info",i.nzShowInfo)("ant-progress-circle",i.isCircleStyle)("ant-progress-steps",i.isSteps)("ant-progress-rtl","rtl"===i.dir),t.Q6J("ngClass","ant-progress ant-progress-status-"+i.status),t.xp6(1),t.Q6J("ngIf","line"===i.nzType),t.xp6(1),t.Q6J("ngIf",i.isCircleStyle))},dependencies:[c.mk,c.sg,c.O5,c.tP,c.PC,E.Ls,U.f],encapsulation:2,changeDetection:0}),(0,T.gn)([(0,S.oS)()],n.prototype,"nzShowInfo",void 0),(0,T.gn)([(0,S.oS)()],n.prototype,"nzStrokeColor",void 0),(0,T.gn)([(0,S.oS)()],n.prototype,"nzSize",void 0),(0,T.gn)([(0,M.Rn)()],n.prototype,"nzSuccessPercent",void 0),(0,T.gn)([(0,M.Rn)()],n.prototype,"nzPercent",void 0),(0,T.gn)([(0,S.oS)(),(0,M.Rn)()],n.prototype,"nzStrokeWidth",void 0),(0,T.gn)([(0,S.oS)(),(0,M.Rn)()],n.prototype,"nzGapDegree",void 0),(0,T.gn)([(0,S.oS)()],n.prototype,"nzGapPosition",void 0),(0,T.gn)([(0,S.oS)()],n.prototype,"nzStrokeLinecap",void 0),(0,T.gn)([(0,M.Rn)()],n.prototype,"nzSteps",void 0),n})(),Rn=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({imports:[P.vT,c.ez,E.PV,U.T]}),n})();var L=s(6675),oe=s(3353);let Ln=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({imports:[c.ez]}),n})();const Jn=function(n){return{$implicit:n}};function Qn(n,o){if(1&n&&t.GkF(0,3),2&n){const e=t.oxw();t.Q6J("ngTemplateOutlet",e.nzValueTemplate)("ngTemplateOutletContext",t.VKq(2,Jn,e.nzValue))}}function Kn(n,o){if(1&n&&(t.TgZ(0,"span",6),t._uU(1),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.displayInt)}}function Gn(n,o){if(1&n&&(t.TgZ(0,"span",7),t._uU(1),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.displayDecimal)}}function Wn(n,o){if(1&n&&(t.ynx(0),t.YNc(1,Kn,2,1,"span",4),t.YNc(2,Gn,2,1,"span",5),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",e.displayInt),t.xp6(1),t.Q6J("ngIf",e.displayDecimal)}}function Yn(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.Oqu(e.nzTitle)}}function qn(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.nzPrefix)}}function $n(n,o){if(1&n&&(t.TgZ(0,"span",6),t.YNc(1,qn,2,1,"ng-container",1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzPrefix)}}function jn(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.nzSuffix)}}function Vn(n,o){if(1&n&&(t.TgZ(0,"span",7),t.YNc(1,jn,2,1,"ng-container",1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzSuffix)}}let Hn=(()=>{class n{constructor(e){this.locale_id=e,this.displayInt="",this.displayDecimal=""}ngOnChanges(){this.formatNumber()}formatNumber(){const e="number"==typeof this.nzValue?".":(0,c.dv)(this.locale_id,c.wE.Decimal),i=String(this.nzValue),[a,r]=i.split(e);this.displayInt=a,this.displayDecimal=r?`${e}${r}`:""}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(t.soG))},n.\u0275cmp=t.Xpm({type:n,selectors:[["nz-statistic-number"]],inputs:{nzValue:"nzValue",nzValueTemplate:"nzValueTemplate"},exportAs:["nzStatisticNumber"],features:[t.TTD],decls:3,vars:2,consts:[[1,"ant-statistic-content-value"],[3,"ngTemplateOutlet","ngTemplateOutletContext",4,"ngIf"],[4,"ngIf"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],["class","ant-statistic-content-value-int",4,"ngIf"],["class","ant-statistic-content-value-decimal",4,"ngIf"],[1,"ant-statistic-content-value-int"],[1,"ant-statistic-content-value-decimal"]],template:function(e,i){1&e&&(t.TgZ(0,"span",0),t.YNc(1,Qn,1,4,"ng-container",1),t.YNc(2,Wn,3,2,"ng-container",2),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngIf",i.nzValueTemplate),t.xp6(1),t.Q6J("ngIf",!i.nzValueTemplate))},dependencies:[c.O5,c.tP],encapsulation:2,changeDetection:0}),n})(),ie=(()=>{class n{constructor(e,i){this.cdr=e,this.directionality=i,this.nzValueStyle={},this.dir="ltr",this.destroy$=new F.x}ngOnInit(){this.directionality.change?.pipe((0,A.R)(this.destroy$)).subscribe(e=>{this.dir=e,this.cdr.detectChanges()}),this.dir=this.directionality.value}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(t.sBO),t.Y36(P.Is,8))},n.\u0275cmp=t.Xpm({type:n,selectors:[["nz-statistic"]],hostAttrs:[1,"ant-statistic"],hostVars:2,hostBindings:function(e,i){2&e&&t.ekj("ant-statistic-rtl","rtl"===i.dir)},inputs:{nzPrefix:"nzPrefix",nzSuffix:"nzSuffix",nzTitle:"nzTitle",nzValue:"nzValue",nzValueStyle:"nzValueStyle",nzValueTemplate:"nzValueTemplate"},exportAs:["nzStatistic"],decls:6,vars:6,consts:[[1,"ant-statistic-title"],[4,"nzStringTemplateOutlet"],[1,"ant-statistic-content",3,"ngStyle"],["class","ant-statistic-content-prefix",4,"ngIf"],[3,"nzValue","nzValueTemplate"],["class","ant-statistic-content-suffix",4,"ngIf"],[1,"ant-statistic-content-prefix"],[1,"ant-statistic-content-suffix"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0),t.YNc(1,Yn,2,1,"ng-container",1),t.qZA(),t.TgZ(2,"div",2),t.YNc(3,$n,2,1,"span",3),t._UZ(4,"nz-statistic-number",4),t.YNc(5,Vn,2,1,"span",5),t.qZA()),2&e&&(t.xp6(1),t.Q6J("nzStringTemplateOutlet",i.nzTitle),t.xp6(1),t.Q6J("ngStyle",i.nzValueStyle),t.xp6(1),t.Q6J("ngIf",i.nzPrefix),t.xp6(1),t.Q6J("nzValue",i.nzValue)("nzValueTemplate",i.nzValueTemplate),t.xp6(1),t.Q6J("ngIf",i.nzSuffix))},dependencies:[c.O5,c.PC,U.f,Hn],encapsulation:2,changeDetection:0}),n})(),Xn=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({imports:[P.vT,c.ez,oe.ud,U.T,Ln]}),n})();var ae=s(6451),to=s(8675),rt=s(3900),eo=s(3601),O=s(8505),no=s(8932),It=s(3303);function oo(n,o){1&n&&t.Hsn(0)}const io=["*"];function ao(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw(3);t.xp6(1),t.Oqu(e.nzTitle)}}function ro(n,o){if(1&n&&(t.TgZ(0,"div",6),t.YNc(1,ao,2,1,"ng-container",7),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzTitle)}}function so(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw(3);t.xp6(1),t.Oqu(e.nzExtra)}}function lo(n,o){if(1&n&&(t.TgZ(0,"div",8),t.YNc(1,so,2,1,"ng-container",7),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzExtra)}}function co(n,o){if(1&n&&(t.TgZ(0,"div",3),t.YNc(1,ro,2,1,"div",4),t.YNc(2,lo,2,1,"div",5),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",e.nzTitle),t.xp6(1),t.Q6J("ngIf",e.nzExtra)}}function _o(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw(2).$implicit;t.xp6(1),t.hij(" ",e.title," ")}}function uo(n,o){}function po(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"td",12)(2,"div",13)(3,"span",14),t.YNc(4,_o,2,1,"ng-container",7),t.qZA(),t.TgZ(5,"span",15),t.YNc(6,uo,0,0,"ng-template",16),t.qZA()()(),t.BQk()),2&n){const e=t.oxw().$implicit,i=t.oxw(3);t.xp6(1),t.Q6J("colSpan",e.span),t.xp6(2),t.ekj("ant-descriptions-item-no-colon",!i.nzColon),t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.title),t.xp6(2),t.Q6J("ngTemplateOutlet",e.content)}}function go(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw(2).$implicit;t.xp6(1),t.hij(" ",e.title," ")}}function mo(n,o){}function ho(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"td",14),t.YNc(2,go,2,1,"ng-container",7),t.qZA(),t.TgZ(3,"td",17),t.YNc(4,mo,0,0,"ng-template",16),t.qZA(),t.BQk()),2&n){const e=t.oxw().$implicit;t.xp6(2),t.Q6J("nzStringTemplateOutlet",e.title),t.xp6(1),t.Q6J("colSpan",2*e.span-1),t.xp6(1),t.Q6J("ngTemplateOutlet",e.content)}}function fo(n,o){if(1&n&&(t.ynx(0),t.YNc(1,po,7,5,"ng-container",2),t.YNc(2,ho,5,3,"ng-container",2),t.BQk()),2&n){const e=t.oxw(3);t.xp6(1),t.Q6J("ngIf",!e.nzBordered),t.xp6(1),t.Q6J("ngIf",e.nzBordered)}}function Co(n,o){if(1&n&&(t.TgZ(0,"tr",10),t.YNc(1,fo,3,2,"ng-container",11),t.qZA()),2&n){const e=o.$implicit;t.xp6(1),t.Q6J("ngForOf",e)}}function zo(n,o){if(1&n&&(t.ynx(0),t.YNc(1,Co,2,1,"tr",9),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngForOf",e.itemMatrix)}}function To(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.hij(" ",e.title," ")}}function xo(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"td",12)(2,"div",13)(3,"span",14),t.YNc(4,To,2,1,"ng-container",7),t.qZA()()(),t.BQk()),2&n){const e=o.$implicit,i=t.oxw(4);t.xp6(1),t.Q6J("colSpan",e.span),t.xp6(2),t.ekj("ant-descriptions-item-no-colon",!i.nzColon),t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.title)}}function Do(n,o){}function Mo(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"td",12)(2,"div",13)(3,"span",15),t.YNc(4,Do,0,0,"ng-template",16),t.qZA()()(),t.BQk()),2&n){const e=o.$implicit;t.xp6(1),t.Q6J("colSpan",e.span),t.xp6(3),t.Q6J("ngTemplateOutlet",e.content)}}function ko(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"tr",10),t.YNc(2,xo,5,4,"ng-container",11),t.qZA(),t.TgZ(3,"tr",10),t.YNc(4,Mo,5,2,"ng-container",11),t.qZA(),t.BQk()),2&n){const e=o.$implicit;t.xp6(2),t.Q6J("ngForOf",e),t.xp6(2),t.Q6J("ngForOf",e)}}function Oo(n,o){if(1&n&&(t.ynx(0),t.YNc(1,ko,5,2,"ng-container",11),t.BQk()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("ngForOf",e.itemMatrix)}}function vo(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.hij(" ",e.title," ")}}function Eo(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"td",18),t.YNc(2,vo,2,1,"ng-container",7),t.qZA(),t.BQk()),2&n){const e=o.$implicit;t.xp6(1),t.Q6J("colSpan",e.span),t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.title)}}function Ao(n,o){}function Po(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"td",17),t.YNc(2,Ao,0,0,"ng-template",16),t.qZA(),t.BQk()),2&n){const e=o.$implicit;t.xp6(1),t.Q6J("colSpan",e.span),t.xp6(1),t.Q6J("ngTemplateOutlet",e.content)}}function So(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"tr",10),t.YNc(2,Eo,3,2,"ng-container",11),t.qZA(),t.TgZ(3,"tr",10),t.YNc(4,Po,3,2,"ng-container",11),t.qZA(),t.BQk()),2&n){const e=o.$implicit;t.xp6(2),t.Q6J("ngForOf",e),t.xp6(2),t.Q6J("ngForOf",e)}}function yo(n,o){if(1&n&&(t.ynx(0),t.YNc(1,So,5,2,"ng-container",11),t.BQk()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("ngForOf",e.itemMatrix)}}function Fo(n,o){if(1&n&&(t.ynx(0),t.YNc(1,Oo,2,1,"ng-container",2),t.YNc(2,yo,2,1,"ng-container",2),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",!e.nzBordered),t.xp6(1),t.Q6J("ngIf",e.nzBordered)}}let Nt=(()=>{class n{constructor(){this.nzSpan=1,this.nzTitle="",this.inputChange$=new F.x}ngOnChanges(){this.inputChange$.next()}ngOnDestroy(){this.inputChange$.complete()}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["nz-descriptions-item"]],viewQuery:function(e,i){if(1&e&&t.Gf(t.Rgc,7),2&e){let a;t.iGM(a=t.CRH())&&(i.content=a.first)}},inputs:{nzSpan:"nzSpan",nzTitle:"nzTitle"},exportAs:["nzDescriptionsItem"],features:[t.TTD],ngContentSelectors:io,decls:1,vars:0,template:function(e,i){1&e&&(t.F$t(),t.YNc(0,oo,1,0,"ng-template"))},encapsulation:2,changeDetection:0}),(0,T.gn)([(0,M.Rn)()],n.prototype,"nzSpan",void 0),n})();const wo={xxl:3,xl:3,lg:3,md:3,sm:2,xs:1};let re=(()=>{class n{constructor(e,i,a,r){this.nzConfigService=e,this.cdr=i,this.breakpointService=a,this.directionality=r,this._nzModuleName="descriptions",this.nzBordered=!1,this.nzLayout="horizontal",this.nzColumn=wo,this.nzSize="default",this.nzTitle="",this.nzColon=!0,this.itemMatrix=[],this.realColumn=3,this.dir="ltr",this.breakpoint=It.G_.md,this.destroy$=new F.x}ngOnInit(){this.dir=this.directionality.value,this.directionality.change?.pipe((0,A.R)(this.destroy$)).subscribe(e=>{this.dir=e})}ngOnChanges(e){e.nzColumn&&this.prepareMatrix()}ngAfterContentInit(){const e=this.items.changes.pipe((0,to.O)(this.items),(0,A.R)(this.destroy$));(0,ae.T)(e,e.pipe((0,rt.w)(()=>(0,ae.T)(...this.items.map(i=>i.inputChange$)).pipe((0,eo.e)(16)))),this.breakpointService.subscribe(It.WV).pipe((0,O.b)(i=>this.breakpoint=i))).pipe((0,A.R)(this.destroy$)).subscribe(()=>{this.prepareMatrix(),this.cdr.markForCheck()})}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}prepareMatrix(){if(!this.items)return;let e=[],i=0;const a=this.realColumn=this.getColumn(),r=this.items.toArray(),d=r.length,C=[],z=()=>{C.push(e),e=[],i=0};for(let l=0;l<d;l++){const y=r[l],{nzTitle:w,content:Z,nzSpan:I}=y;i+=I,i>=a?(i>a&&(0,no.ZK)(`"nzColumn" is ${a} but we have row length ${i}`),e.push({title:w,content:Z,span:a-(i-I)}),z()):l===d-1?(e.push({title:w,content:Z,span:a-(i-I)}),z()):e.push({title:w,content:Z,span:I})}this.itemMatrix=C}getColumn(){return"number"!=typeof this.nzColumn?this.nzColumn[this.breakpoint]:this.nzColumn}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(S.jY),t.Y36(t.sBO),t.Y36(It.r3),t.Y36(P.Is,8))},n.\u0275cmp=t.Xpm({type:n,selectors:[["nz-descriptions"]],contentQueries:function(e,i,a){if(1&e&&t.Suo(a,Nt,4),2&e){let r;t.iGM(r=t.CRH())&&(i.items=r)}},hostAttrs:[1,"ant-descriptions"],hostVars:8,hostBindings:function(e,i){2&e&&t.ekj("ant-descriptions-bordered",i.nzBordered)("ant-descriptions-middle","middle"===i.nzSize)("ant-descriptions-small","small"===i.nzSize)("ant-descriptions-rtl","rtl"===i.dir)},inputs:{nzBordered:"nzBordered",nzLayout:"nzLayout",nzColumn:"nzColumn",nzSize:"nzSize",nzTitle:"nzTitle",nzExtra:"nzExtra",nzColon:"nzColon"},exportAs:["nzDescriptions"],features:[t.TTD],decls:6,vars:3,consts:[["class","ant-descriptions-header",4,"ngIf"],[1,"ant-descriptions-view"],[4,"ngIf"],[1,"ant-descriptions-header"],["class","ant-descriptions-title",4,"ngIf"],["class","ant-descriptions-extra",4,"ngIf"],[1,"ant-descriptions-title"],[4,"nzStringTemplateOutlet"],[1,"ant-descriptions-extra"],["class","ant-descriptions-row",4,"ngFor","ngForOf"],[1,"ant-descriptions-row"],[4,"ngFor","ngForOf"],[1,"ant-descriptions-item",3,"colSpan"],[1,"ant-descriptions-item-container"],[1,"ant-descriptions-item-label"],[1,"ant-descriptions-item-content"],[3,"ngTemplateOutlet"],[1,"ant-descriptions-item-content",3,"colSpan"],[1,"ant-descriptions-item-label",3,"colSpan"]],template:function(e,i){1&e&&(t.YNc(0,co,3,2,"div",0),t.TgZ(1,"div",1)(2,"table")(3,"tbody"),t.YNc(4,zo,2,1,"ng-container",2),t.YNc(5,Fo,3,2,"ng-container",2),t.qZA()()()),2&e&&(t.Q6J("ngIf",i.nzTitle||i.nzExtra),t.xp6(4),t.Q6J("ngIf","horizontal"===i.nzLayout),t.xp6(1),t.Q6J("ngIf","vertical"===i.nzLayout))},dependencies:[c.sg,c.O5,c.tP,U.f],encapsulation:2,changeDetection:0}),(0,T.gn)([(0,M.yF)(),(0,S.oS)()],n.prototype,"nzBordered",void 0),(0,T.gn)([(0,S.oS)()],n.prototype,"nzColumn",void 0),(0,T.gn)([(0,S.oS)()],n.prototype,"nzSize",void 0),(0,T.gn)([(0,S.oS)(),(0,M.yF)()],n.prototype,"nzColon",void 0),n})(),Io=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({imports:[P.vT,c.ez,U.T,oe.ud]}),n})();var St=s(5861),b=s(9646),yt=s(515),se=s(4986),No=s(9751),Bo=s(4482),le=s(5403),Zo=s(8421);const ce={leading:!0,trailing:!1};var Ro=s(5963);class Bt{constructor(o){this.changes=o}static of(o){return new Bt(o)}notEmpty(o){if(this.changes[o]){const e=this.changes[o].currentValue;if(null!=e)return(0,b.of)(e)}return yt.E}has(o){return this.changes[o]?(0,b.of)(this.changes[o].currentValue):yt.E}notFirst(o){return this.changes[o]&&!this.changes[o].isFirstChange()?(0,b.of)(this.changes[o].currentValue):yt.E}notFirstAndEmpty(o){if(this.changes[o]&&!this.changes[o].isFirstChange()){const e=this.changes[o].currentValue;if(null!=e)return(0,b.of)(e)}return yt.E}}const _e=new t.OlP("NGX_ECHARTS_CONFIG");let ue=(()=>{class n{constructor(e,i,a){this.el=i,this.ngZone=a,this.options=null,this.theme=null,this.initOpts=null,this.merge=null,this.autoResize=!0,this.loading=!1,this.loadingType="default",this.loadingOpts=null,this.chartInit=new t.vpe,this.optionsError=new t.vpe,this.chartClick=this.createLazyEvent("click"),this.chartDblClick=this.createLazyEvent("dblclick"),this.chartMouseDown=this.createLazyEvent("mousedown"),this.chartMouseMove=this.createLazyEvent("mousemove"),this.chartMouseUp=this.createLazyEvent("mouseup"),this.chartMouseOver=this.createLazyEvent("mouseover"),this.chartMouseOut=this.createLazyEvent("mouseout"),this.chartGlobalOut=this.createLazyEvent("globalout"),this.chartContextMenu=this.createLazyEvent("contextmenu"),this.chartLegendSelectChanged=this.createLazyEvent("legendselectchanged"),this.chartLegendSelected=this.createLazyEvent("legendselected"),this.chartLegendUnselected=this.createLazyEvent("legendunselected"),this.chartLegendScroll=this.createLazyEvent("legendscroll"),this.chartDataZoom=this.createLazyEvent("datazoom"),this.chartDataRangeSelected=this.createLazyEvent("datarangeselected"),this.chartTimelineChanged=this.createLazyEvent("timelinechanged"),this.chartTimelinePlayChanged=this.createLazyEvent("timelineplaychanged"),this.chartRestore=this.createLazyEvent("restore"),this.chartDataViewChanged=this.createLazyEvent("dataviewchanged"),this.chartMagicTypeChanged=this.createLazyEvent("magictypechanged"),this.chartPieSelectChanged=this.createLazyEvent("pieselectchanged"),this.chartPieSelected=this.createLazyEvent("pieselected"),this.chartPieUnselected=this.createLazyEvent("pieunselected"),this.chartMapSelectChanged=this.createLazyEvent("mapselectchanged"),this.chartMapSelected=this.createLazyEvent("mapselected"),this.chartMapUnselected=this.createLazyEvent("mapunselected"),this.chartAxisAreaSelected=this.createLazyEvent("axisareaselected"),this.chartFocusNodeAdjacency=this.createLazyEvent("focusnodeadjacency"),this.chartUnfocusNodeAdjacency=this.createLazyEvent("unfocusnodeadjacency"),this.chartBrush=this.createLazyEvent("brush"),this.chartBrushEnd=this.createLazyEvent("brushend"),this.chartBrushSelected=this.createLazyEvent("brushselected"),this.chartRendered=this.createLazyEvent("rendered"),this.chartFinished=this.createLazyEvent("finished"),this.animationFrameID=null,this.resize$=new F.x,this.echarts=e.echarts}ngOnChanges(e){const i=Bt.of(e);i.notFirstAndEmpty("options").subscribe(a=>this.onOptionsChange(a)),i.notFirstAndEmpty("merge").subscribe(a=>this.setOption(a)),i.has("loading").subscribe(a=>this.toggleLoading(!!a)),i.notFirst("theme").subscribe(()=>this.refreshChart())}ngOnInit(){if(!window.ResizeObserver)throw new Error("please install a polyfill for ResizeObserver");this.resizeSub=this.resize$.pipe(function Lo(n,o=se.z,e=ce){const i=(0,Ro.H)(n,o);return function Uo(n,o=ce){return(0,Bo.e)((e,i)=>{const{leading:a,trailing:r}=o;let d=!1,C=null,z=null,l=!1;const y=()=>{z?.unsubscribe(),z=null,r&&(I(),l&&i.complete())},w=()=>{z=null,l&&i.complete()},Z=Y=>z=(0,Zo.Xf)(n(Y)).subscribe((0,le.x)(i,y,w)),I=()=>{if(d){d=!1;const Y=C;C=null,i.next(Y),!l&&Z(Y)}};e.subscribe((0,le.x)(i,Y=>{d=!0,C=Y,(!z||z.closed)&&(a?I():Z(Y))},()=>{l=!0,(!(r&&d&&z)||z.closed)&&i.complete()}))})}(()=>i,e)}(100,se.z,{leading:!1,trailing:!0})).subscribe(()=>this.resize()),this.autoResize&&(this.resizeOb=this.ngZone.runOutsideAngular(()=>new window.ResizeObserver(()=>{this.animationFrameID=window.requestAnimationFrame(()=>this.resize$.next())})),this.resizeOb.observe(this.el.nativeElement))}ngOnDestroy(){window.clearTimeout(this.initChartTimer),this.resizeSub&&this.resizeSub.unsubscribe(),this.animationFrameID&&window.cancelAnimationFrame(this.animationFrameID),this.resizeOb&&this.resizeOb.unobserve(this.el.nativeElement),this.dispose()}ngAfterViewInit(){this.initChartTimer=window.setTimeout(()=>this.initChart())}dispose(){this.chart&&(this.chart.isDisposed()||this.chart.dispose(),this.chart=null)}resize(){this.chart&&this.chart.resize()}toggleLoading(e){this.chart&&(e?this.chart.showLoading(this.loadingType,this.loadingOpts):this.chart.hideLoading())}setOption(e,i){if(this.chart)try{this.chart.setOption(e,i)}catch(a){console.error(a),this.optionsError.emit(a)}}refreshChart(){var e=this;return(0,St.Z)(function*(){e.dispose(),yield e.initChart()})()}createChart(){const e=this.el.nativeElement;if(window&&window.getComputedStyle){const i=window.getComputedStyle(e,null).getPropertyValue("height");(!i||"0px"===i)&&(!e.style.height||"0px"===e.style.height)&&(e.style.height="400px")}return this.ngZone.runOutsideAngular(()=>("function"==typeof this.echarts?this.echarts:()=>Promise.resolve(this.echarts))().then(({init:a})=>a(e,this.theme,this.initOpts)))}initChart(){var e=this;return(0,St.Z)(function*(){yield e.onOptionsChange(e.options),e.merge&&e.chart&&e.setOption(e.merge)})()}onOptionsChange(e){var i=this;return(0,St.Z)(function*(){e&&(i.chart||(i.chart=yield i.createChart(),i.chartInit.emit(i.chart)),i.setOption(i.options,!0))})()}createLazyEvent(e){return this.chartInit.pipe((0,rt.w)(i=>new No.y(a=>(i.on(e,r=>this.ngZone.run(()=>a.next(r))),()=>{this.chart&&(this.chart.isDisposed()||i.off(e))}))))}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(_e),t.Y36(t.SBq),t.Y36(t.R0b))},n.\u0275dir=t.lG2({type:n,selectors:[["echarts"],["","echarts",""]],inputs:{options:"options",theme:"theme",initOpts:"initOpts",merge:"merge",autoResize:"autoResize",loading:"loading",loadingType:"loadingType",loadingOpts:"loadingOpts"},outputs:{chartInit:"chartInit",optionsError:"optionsError",chartClick:"chartClick",chartDblClick:"chartDblClick",chartMouseDown:"chartMouseDown",chartMouseMove:"chartMouseMove",chartMouseUp:"chartMouseUp",chartMouseOver:"chartMouseOver",chartMouseOut:"chartMouseOut",chartGlobalOut:"chartGlobalOut",chartContextMenu:"chartContextMenu",chartLegendSelectChanged:"chartLegendSelectChanged",chartLegendSelected:"chartLegendSelected",chartLegendUnselected:"chartLegendUnselected",chartLegendScroll:"chartLegendScroll",chartDataZoom:"chartDataZoom",chartDataRangeSelected:"chartDataRangeSelected",chartTimelineChanged:"chartTimelineChanged",chartTimelinePlayChanged:"chartTimelinePlayChanged",chartRestore:"chartRestore",chartDataViewChanged:"chartDataViewChanged",chartMagicTypeChanged:"chartMagicTypeChanged",chartPieSelectChanged:"chartPieSelectChanged",chartPieSelected:"chartPieSelected",chartPieUnselected:"chartPieUnselected",chartMapSelectChanged:"chartMapSelectChanged",chartMapSelected:"chartMapSelected",chartMapUnselected:"chartMapUnselected",chartAxisAreaSelected:"chartAxisAreaSelected",chartFocusNodeAdjacency:"chartFocusNodeAdjacency",chartUnfocusNodeAdjacency:"chartUnfocusNodeAdjacency",chartBrush:"chartBrush",chartBrushEnd:"chartBrushEnd",chartBrushSelected:"chartBrushSelected",chartRendered:"chartRendered",chartFinished:"chartFinished"},exportAs:["echarts"],features:[t.TTD]}),n})(),Jo=(()=>{class n{static forRoot(e){return{ngModule:n,providers:[{provide:_e,useValue:e}]}}static forChild(){return{ngModule:n}}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({}),n})();var Qo=s(4466),st=s(6582),pe=s(7445),ge=s(7188),de=s(7886),lt=s(262),Zt=s(4007),me=s(387),Ut=s(844),Ko=s(5545),Go=s(7512),m=s(2948),Wo=s(8147);class J{transform(o,e){return(0,Wo.G)(o,{base:2,standard:"jedec",...e,output:"string"})}}J.\u0275fac=function(o){return new(o||J)},J.\u0275pipe=t.Yjl({name:"filesize",type:J,pure:!0});class G{transform(o){return o?o.startsWith("/")?o.split("/").pop()??"":o.split("\\").pop()??"":""}}G.\u0275fac=function(o){return new(o||G)},G.\u0275pipe=t.Yjl({name:"filename",type:G,pure:!0});const Yo=new Map([[m.cS.RECORDING,"\u5f55\u5236\u4e2d"],[m.cS.INJECTING,"\u5904\u7406\u4e2d"],[m.cS.REMUXING,"\u5904\u7406\u4e2d"],[m.cS.COMPLETED,"\u5df2\u5b8c\u6210"],[m.cS.MISSING,"\u4e0d\u5b58\u5728"],[m.cS.BROKEN,"\u5f55\u5236\u4e2d\u65ad"]]);class ct{transform(o){return Yo.get(o)??"\uff1f\uff1f\uff1f"}}function qo(n,o){if(1&n&&(t.TgZ(0,"th",5),t._uU(1),t.qZA()),2&n){const e=o.$implicit;t.Q6J("nzSortOrder",e.sortOrder)("nzSortFn",e.sortFn)("nzSortDirections",e.sortDirections)("nzFilters",e.listOfFilter)("nzFilterFn",e.filterFn)("nzFilterMultiple",e.filterMultiple)("nzShowFilter",e.listOfFilter.length>0),t.xp6(1),t.hij(" ",e.name," ")}}function $o(n,o){if(1&n&&(t.TgZ(0,"tr")(1,"td",6),t._uU(2),t.ALo(3,"filename"),t.qZA(),t.TgZ(4,"td",6),t.ALo(5,"number"),t._uU(6),t.ALo(7,"filesize"),t.qZA(),t.TgZ(8,"td",6),t._uU(9),t.ALo(10,"filestatus"),t.qZA()()),2&n){const e=o.$implicit;t.xp6(1),t.s9C("title",e.path),t.xp6(1),t.Oqu(t.lcZ(3,9,e.path)),t.xp6(2),t.s9C("title",t.lcZ(5,11,e.size)),t.xp6(2),t.Oqu(t.lcZ(7,13,e.size)),t.xp6(2),t.Gre("status ",e.status,""),t.s9C("title",e.status),t.xp6(1),t.hij(" ",t.lcZ(10,15,e.status)," ")}}ct.\u0275fac=function(o){return new(o||ct)},ct.\u0275pipe=t.Yjl({name:"filestatus",type:ct,pure:!0});const he=[m.cS.RECORDING,m.cS.INJECTING,m.cS.REMUXING,m.cS.COMPLETED,m.cS.MISSING];class _t{constructor(){this.loading=!0,this.videoFileDetails=[],this.danmakuFileDetails=[],this.VideoFileStatus=m.cS,this.fileDetails=[],this.columns=[{name:"\u6587\u4ef6",sortOrder:"ascend",sortFn:(o,e)=>o.path.localeCompare(e.path),sortDirections:["ascend","descend"],filterMultiple:!1,listOfFilter:[{text:"\u89c6\u9891",value:"video"},{text:"\u5f39\u5e55",value:"danmaku"}],filterFn:(o,e)=>{switch(o){case"video":return e.path.endsWith(".flv")||e.path.endsWith(".mp4");case"danmaku":return e.path.endsWith(".xml");default:return!1}}},{name:"\u5927\u5c0f",sortOrder:null,sortFn:(o,e)=>o.size-e.size,sortDirections:["ascend","descend",null],filterMultiple:!0,listOfFilter:[],filterFn:null},{name:"\u72b6\u6001",sortOrder:null,sortFn:(o,e)=>he.indexOf(o.status)-he.indexOf(e.status),sortDirections:["ascend","descend",null],filterMultiple:!0,listOfFilter:[{text:"\u5f55\u5236\u4e2d",value:[m.cS.RECORDING]},{text:"\u5904\u7406\u4e2d",value:[m.cS.INJECTING,m.cS.REMUXING]},{text:"\u5df2\u5b8c\u6210",value:[m.cS.COMPLETED]},{text:"\u4e0d\u5b58\u5728",value:[m.cS.MISSING]}],filterFn:(o,e)=>o.some(i=>i.some(a=>a===e.status))}]}ngOnChanges(){this.fileDetails=[...this.videoFileDetails,...this.danmakuFileDetails]}trackByPath(o,e){return e.path}}_t.\u0275fac=function(o){return new(o||_t)},_t.\u0275cmp=t.Xpm({type:_t,selectors:[["app-task-file-detail"]],inputs:{loading:"loading",videoFileDetails:"videoFileDetails",danmakuFileDetails:"danmakuFileDetails"},features:[t.TTD],decls:8,vars:8,consts:[["nzTitle","\u6587\u4ef6\u8be6\u60c5",3,"nzLoading"],[3,"nzLoading","nzData","nzPageSize","nzHideOnSinglePage"],["fileDetailsTable",""],[3,"nzSortOrder","nzSortFn","nzSortDirections","nzFilters","nzFilterFn","nzFilterMultiple","nzShowFilter",4,"ngFor","ngForOf"],[4,"ngFor","ngForOf","ngForTrackBy"],[3,"nzSortOrder","nzSortFn","nzSortDirections","nzFilters","nzFilterFn","nzFilterMultiple","nzShowFilter"],[3,"title"]],template:function(o,e){if(1&o&&(t.TgZ(0,"nz-card",0)(1,"nz-table",1,2)(3,"thead")(4,"tr"),t.YNc(5,qo,2,8,"th",3),t.qZA()(),t.TgZ(6,"tbody"),t.YNc(7,$o,11,17,"tr",4),t.qZA()()()),2&o){const i=t.MAs(2);t.Q6J("nzLoading",e.loading),t.xp6(1),t.Q6J("nzLoading",e.loading)("nzData",e.fileDetails)("nzPageSize",8)("nzHideOnSinglePage",!0),t.xp6(4),t.Q6J("ngForOf",e.columns),t.xp6(2),t.Q6J("ngForOf",i.data)("ngForTrackBy",e.trackByPath)}},dependencies:[c.sg,v.bd,L.N8,L.qD,L.Uo,L._C,L.Om,L.p0,L.$Z,c.JJ,J,G,ct],styles:[".status.recording[_ngcontent-%COMP%]{color:red}.status.injecting[_ngcontent-%COMP%], .status.remuxing[_ngcontent-%COMP%]{color:#00f}.status.completed[_ngcontent-%COMP%]{color:green}.status.missing[_ngcontent-%COMP%]{color:gray}.status.broken[_ngcontent-%COMP%]{color:orange}"],changeDetection:0});class ut{constructor(){this.loading=!0}ngOnInit(){}}function jo(n,o){if(1&n&&(t.TgZ(0,"span",18),t._uU(1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.hij("",e.roomInfo.short_room_id," ")}}function Vo(n,o){1&n&&(t.ynx(0),t._uU(1,"\u95f2\u7f6e"),t.BQk())}function Ho(n,o){1&n&&(t.ynx(0),t._uU(1,"\u76f4\u64ad\u4e2d"),t.BQk())}function Xo(n,o){1&n&&(t.ynx(0),t._uU(1,"\u8f6e\u64ad\u4e2d"),t.BQk())}function ti(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.ALo(2,"date"),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.hij(" ",t.Dn7(2,1,1e3*e.roomInfo.live_start_time,"YYYY-MM-dd HH:mm:ss","+8")," ")}}function ei(n,o){if(1&n&&(t.TgZ(0,"nz-tag"),t._uU(1),t.qZA()),2&n){const e=o.$implicit;t.xp6(1),t.hij(" ",e," ")}}function ni(n,o){if(1&n&&(t.TgZ(0,"p"),t._uU(1),t.qZA()),2&n){const e=o.$implicit;t.xp6(1),t.Oqu(e)}}ut.\u0275fac=function(o){return new(o||ut)},ut.\u0275cmp=t.Xpm({type:ut,selectors:[["app-task-user-info-detail"]],inputs:{loading:"loading",userInfo:"userInfo"},decls:12,vars:6,consts:[["nzTitle","\u4e3b\u64ad\u4fe1\u606f",3,"nzLoading"],["nzTitle",""],["nzTitle","\u6635\u79f0"],["nzTitle","\u6027\u522b"],["nzTitle","UID"],["nzTitle","\u7b49\u7ea7"],["nzTitle","\u7b7e\u540d"]],template:function(o,e){1&o&&(t.TgZ(0,"nz-card",0)(1,"nz-descriptions",1)(2,"nz-descriptions-item",2),t._uU(3),t.qZA(),t.TgZ(4,"nz-descriptions-item",3),t._uU(5),t.qZA(),t.TgZ(6,"nz-descriptions-item",4),t._uU(7),t.qZA(),t.TgZ(8,"nz-descriptions-item",5),t._uU(9),t.qZA(),t.TgZ(10,"nz-descriptions-item",6),t._uU(11),t.qZA()()()),2&o&&(t.Q6J("nzLoading",e.loading),t.xp6(3),t.Oqu(e.userInfo.name),t.xp6(2),t.Oqu(e.userInfo.gender),t.xp6(2),t.Oqu(e.userInfo.uid),t.xp6(2),t.Oqu(e.userInfo.level),t.xp6(2),t.hij(" ",e.userInfo.sign," "))},dependencies:[v.bd,re,Nt],changeDetection:0});class pt{constructor(){this.loading=!0}ngOnInit(){}}pt.\u0275fac=function(o){return new(o||pt)},pt.\u0275cmp=t.Xpm({type:pt,selectors:[["app-task-room-info-detail"]],inputs:{loading:"loading",roomInfo:"roomInfo"},decls:24,vars:13,consts:[["nzTitle","\u76f4\u64ad\u95f4\u4fe1\u606f",3,"nzLoading"],["nzTitle",""],["nzTitle","\u6807\u9898"],["nzTitle","\u5206\u533a"],["nzTitle","\u623f\u95f4\u53f7"],[1,"room-id-wrapper"],["class","short-room-id",4,"ngIf"],[1,"real-room-id"],["nzTitle","\u72b6\u6001"],[3,"ngSwitch"],[4,"ngSwitchCase"],["nzTitle","\u5f00\u64ad\u65f6\u95f4"],[4,"ngIf"],["nzTitle","\u6807\u7b7e"],[1,"tags"],[4,"ngFor","ngForOf"],["nzTitle","\u7b80\u4ecb"],[1,"introduction"],[1,"short-room-id"]],template:function(o,e){1&o&&(t.TgZ(0,"nz-card",0)(1,"nz-descriptions",1)(2,"nz-descriptions-item",2),t._uU(3),t.qZA(),t.TgZ(4,"nz-descriptions-item",3),t._uU(5),t.qZA(),t.TgZ(6,"nz-descriptions-item",4)(7,"span",5),t.YNc(8,jo,2,1,"span",6),t.TgZ(9,"span",7),t._uU(10),t.qZA()()(),t.TgZ(11,"nz-descriptions-item",8),t.ynx(12,9),t.YNc(13,Vo,2,0,"ng-container",10),t.YNc(14,Ho,2,0,"ng-container",10),t.YNc(15,Xo,2,0,"ng-container",10),t.BQk(),t.qZA(),t.TgZ(16,"nz-descriptions-item",11),t.YNc(17,ti,3,5,"ng-container",12),t.qZA(),t.TgZ(18,"nz-descriptions-item",13)(19,"div",14),t.YNc(20,ei,2,1,"nz-tag",15),t.qZA()(),t.TgZ(21,"nz-descriptions-item",16)(22,"div",17),t.YNc(23,ni,2,1,"p",15),t.qZA()()()()),2&o&&(t.Q6J("nzLoading",e.loading),t.xp6(3),t.Oqu(e.roomInfo.title),t.xp6(2),t.AsE(" ",e.roomInfo.parent_area_name," - ",e.roomInfo.area_name," "),t.xp6(3),t.Q6J("ngIf",e.roomInfo.short_room_id),t.xp6(2),t.hij(" ",e.roomInfo.room_id," "),t.xp6(2),t.Q6J("ngSwitch",e.roomInfo.live_status),t.xp6(1),t.Q6J("ngSwitchCase",0),t.xp6(1),t.Q6J("ngSwitchCase",1),t.xp6(1),t.Q6J("ngSwitchCase",2),t.xp6(2),t.Q6J("ngIf",0!==e.roomInfo.live_start_time),t.xp6(3),t.Q6J("ngForOf",e.roomInfo.tags.split(",")),t.xp6(3),t.Q6J("ngForOf",e.roomInfo.description.split("\n")))},dependencies:[c.sg,c.O5,c.RF,c.n9,v.bd,Wt,re,Nt,c.uU],styles:['.room-id-wrapper[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap}.room-id-wrapper[_ngcontent-%COMP%] .short-room-id[_ngcontent-%COMP%]:after{display:inline-block;width:1em;content:","}.tags[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;row-gap:.5em}.introduction[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;padding:0}'],changeDetection:0});class H{transform(o){return o&&0!==o.total?Math.round(o.count/o.total*100):0}}H.\u0275fac=function(o){return new(o||H)},H.\u0275pipe=t.Yjl({name:"progress",type:H,pure:!0});class gt{constructor(){this.loading=!0}ngOnInit(){}get title(){switch(this.taskStatus.postprocessor_status){case m.ii.INJECTING:return"\u66f4\u65b0 FLV \u5143\u6570\u636e";case m.ii.REMUXING:return"\u8f6c\u6362 FLV \u4e3a MP4";default:return"\u6587\u4ef6\u5904\u7406"}}}gt.\u0275fac=function(o){return new(o||gt)},gt.\u0275cmp=t.Xpm({type:gt,selectors:[["app-task-postprocessing-detail"]],inputs:{loading:"loading",taskStatus:"taskStatus"},decls:6,vars:9,consts:[[3,"nzTitle","nzLoading"],[3,"title"],["nzStatus","active",3,"nzPercent"]],template:function(o,e){if(1&o&&(t.TgZ(0,"nz-card",0)(1,"p",1),t._uU(2),t.ALo(3,"filename"),t.qZA(),t._UZ(4,"nz-progress",2),t.ALo(5,"progress"),t.qZA()),2&o){let i;t.Q6J("nzTitle",e.title)("nzLoading",e.loading),t.xp6(1),t.Q6J("title",e.taskStatus.postprocessing_path),t.xp6(1),t.hij(" ",t.lcZ(3,5,null!==(i=e.taskStatus.postprocessing_path)&&void 0!==i?i:"")," "),t.xp6(2),t.Q6J("nzPercent",null===e.taskStatus.postprocessing_progress?0:t.lcZ(5,7,e.taskStatus.postprocessing_progress))}},dependencies:[v.bd,ne,H,G],styles:["p[_ngcontent-%COMP%]{margin:0}"],changeDetection:0});var X=s(2134);class tt{transform(o){return(0,X.LU)(o,!0)}}tt.\u0275fac=function(o){return new(o||tt)},tt.\u0275pipe=t.Yjl({name:"duration",type:tt,pure:!0});var Rt=s(3692),fe=s(3520);function oi(n,o){if(1&n&&(t._uU(0),t.ALo(1,"duration")),2&n){const e=t.oxw();t.Oqu(t.lcZ(1,1,e.taskStatus.rec_elapsed))}}function ii(n,o){if(1&n&&(t._uU(0),t.ALo(1,"datarate")),2&n){const e=t.oxw();t.Oqu(t.lcZ(1,1,e.taskStatus.rec_rate))}}const ai=function(){return{spacer:" "}};function ri(n,o){if(1&n&&(t._uU(0),t.ALo(1,"filesize")),2&n){const e=t.oxw();t.Oqu(t.xi3(1,1,e.taskStatus.rec_total,t.DdM(4,ai)))}}function si(n,o){if(1&n&&(t._uU(0),t.ALo(1,"quality")),2&n){const e=t.oxw();t.Oqu(e.taskStatus.real_quality_number?t.lcZ(1,1,e.taskStatus.real_quality_number)+" ("+e.taskStatus.real_quality_number+")":"")}}class dt{constructor(o){this.changeDetector=o,this.loading=!0,this.initialChartOptions={},this.updatedChartOptions={},this.chartData=[],this.initChartOptions()}ngOnChanges(){this.taskStatus.running_status===m.cG.RECORDING&&this.updateChartOptions()}initChartOptions(){const o=Date.now();for(let e=59;e>=0;e--){const i=new Date(o-1e3*e);this.chartData.push({name:i.toLocaleString("zh-CN",{hour12:!1}),value:[i.toISOString(),0]})}this.initialChartOptions={title:{},tooltip:{trigger:"axis",formatter:e=>{const i=e[0];return`\n <div>\n <div>\n ${new Date(i.name).toLocaleTimeString("zh-CN",{hour12:!1})}\n </div>\n <div>${(0,X.N4)(i.value[1])}</div>\n </div>\n `},axisPointer:{animation:!1}},xAxis:{type:"time",name:"\u65f6\u95f4",min:"dataMin",max:"dataMax",splitLine:{show:!0}},yAxis:{type:"value",name:"\u5f55\u5236\u901f\u5ea6",splitLine:{show:!0},axisLabel:{formatter:e=>(0,X.N4)(e)}},series:[{name:"\u5f55\u5236\u901f\u5ea6",type:"line",showSymbol:!1,smooth:!0,lineStyle:{width:1},areaStyle:{opacity:.2},data:this.chartData}]}}updateChartOptions(){const o=new Date;this.chartData.push({name:o.toLocaleString("zh-CN",{hour12:!1}),value:[o.toISOString(),this.taskStatus.rec_rate]}),this.chartData.shift(),this.updatedChartOptions={series:[{data:this.chartData}]},this.changeDetector.markForCheck()}}function li(n,o){if(1&n&&t._uU(0),2&n){const e=t.oxw();t.Oqu(e.taskStatus.stream_host)}}function ci(n,o){if(1&n&&t._uU(0),2&n){const e=t.oxw();t.Oqu(e.taskStatus.real_stream_format)}}dt.\u0275fac=function(o){return new(o||dt)(t.Y36(t.sBO))},dt.\u0275cmp=t.Xpm({type:dt,selectors:[["app-task-recording-detail"]],inputs:{loading:"loading",taskStatus:"taskStatus"},features:[t.TTD],decls:17,vars:17,consts:[["nzTitle","\u5f55\u5236\u8be6\u60c5",3,"nzLoading"],[1,"statistics"],[3,"nzTitle","nzValueTemplate"],["recordingElapsed",""],["recordingRate",""],["recordedTotal",""],["recordingQuality",""],[3,"nzTitle","nzValue"],["echarts","",1,"rec-rate-chart",3,"loading","options","merge"]],template:function(o,e){if(1&o&&(t.TgZ(0,"nz-card",0)(1,"div",1),t._UZ(2,"nz-statistic",2),t.YNc(3,oi,2,3,"ng-template",null,3,t.W1O),t._UZ(5,"nz-statistic",2),t.YNc(6,ii,2,3,"ng-template",null,4,t.W1O),t._UZ(8,"nz-statistic",2),t.YNc(9,ri,2,5,"ng-template",null,5,t.W1O),t._UZ(11,"nz-statistic",2),t.YNc(12,si,2,3,"ng-template",null,6,t.W1O),t._UZ(14,"nz-statistic",7),t.ALo(15,"number"),t.qZA(),t._UZ(16,"div",8),t.qZA()),2&o){const i=t.MAs(4),a=t.MAs(7),r=t.MAs(10),d=t.MAs(13);t.Q6J("nzLoading",e.loading),t.xp6(2),t.Q6J("nzTitle","\u5f55\u5236\u7528\u65f6")("nzValueTemplate",i),t.xp6(3),t.Q6J("nzTitle","\u5f55\u5236\u901f\u5ea6")("nzValueTemplate",a),t.xp6(3),t.Q6J("nzTitle","\u5f55\u5236\u603b\u8ba1")("nzValueTemplate",r),t.xp6(3),t.Q6J("nzTitle","\u5f55\u5236\u753b\u8d28")("nzValueTemplate",d),t.xp6(3),t.Q6J("nzTitle","\u5f39\u5e55\u603b\u8ba1")("nzValue",t.xi3(15,14,e.taskStatus.danmu_total,"1.0-2")),t.xp6(2),t.Q6J("loading",e.loading)("options",e.initialChartOptions)("merge",e.updatedChartOptions)}},dependencies:[v.bd,ie,ue,c.JJ,tt,Rt.f,J,fe.U],styles:[".statistics[_ngcontent-%COMP%]{--grid-width: 200px;display:grid;grid-template-columns:repeat(auto-fill,var(--grid-width));gap:1em;justify-content:center;margin:0 auto}@media screen and (max-width: 1024px){.statistics[_ngcontent-%COMP%]{--grid-width: 180px}}@media screen and (max-width: 720px){.statistics[_ngcontent-%COMP%]{--grid-width: 160px}}@media screen and (max-width: 680px){.statistics[_ngcontent-%COMP%]{--grid-width: 140px}}@media screen and (max-width: 480px){.statistics[_ngcontent-%COMP%]{--grid-width: 120px}}.rec-rate-chart[_ngcontent-%COMP%]{width:100%;height:300px;margin:0}"],changeDetection:0});const _i=function(){return{bitrate:!0}};function ui(n,o){if(1&n&&(t._uU(0),t.ALo(1,"datarate")),2&n){const e=t.oxw();t.Oqu(t.xi3(1,1,8*e.taskStatus.dl_rate,t.DdM(4,_i)))}}const pi=function(){return{spacer:" "}};function gi(n,o){if(1&n&&(t._uU(0),t.ALo(1,"filesize")),2&n){const e=t.oxw();t.Oqu(t.xi3(1,1,e.taskStatus.dl_total,t.DdM(4,pi)))}}class mt{constructor(o){this.changeDetector=o,this.loading=!0,this.initialChartOptions={},this.updatedChartOptions={},this.chartData=[],this.initChartOptions()}ngOnChanges(){this.taskStatus.running_status===m.cG.RECORDING&&this.updateChartOptions()}initChartOptions(){const o=Date.now();for(let e=59;e>=0;e--){const i=new Date(o-1e3*e);this.chartData.push({name:i.toLocaleString("zh-CN",{hour12:!1}),value:[i.toISOString(),0]})}this.initialChartOptions={title:{},tooltip:{trigger:"axis",formatter:e=>{const i=e[0];return`\n <div>\n <div>\n ${new Date(i.name).toLocaleTimeString("zh-CN",{hour12:!1})}\n </div>\n <div>${(0,X.AX)(i.value[1])}</div>\n </div>\n `},axisPointer:{animation:!1}},xAxis:{type:"time",name:"\u65f6\u95f4",min:"dataMin",max:"dataMax",splitLine:{show:!0}},yAxis:{type:"value",name:"\u4e0b\u8f7d\u901f\u5ea6",splitLine:{show:!0},axisLabel:{formatter:function(e){return(0,X.AX)(e)}}},series:[{name:"\u4e0b\u8f7d\u901f\u5ea6",type:"line",showSymbol:!1,smooth:!0,lineStyle:{width:1},areaStyle:{opacity:.2},data:this.chartData}]}}updateChartOptions(){const o=new Date;this.chartData.push({name:o.toLocaleString("zh-CN",{hour12:!1}),value:[o.toISOString(),8*this.taskStatus.dl_rate]}),this.chartData.shift(),this.updatedChartOptions={series:[{data:this.chartData}]},this.changeDetector.markForCheck()}}function di(n,o){if(1&n&&t._UZ(0,"app-task-user-info-detail",6),2&n){const e=t.oxw(2);t.Q6J("loading",e.loading)("userInfo",e.taskData.user_info)}}function mi(n,o){if(1&n&&t._UZ(0,"app-task-room-info-detail",7),2&n){const e=t.oxw(2);t.Q6J("loading",e.loading)("roomInfo",e.taskData.room_info)}}function hi(n,o){if(1&n&&t._UZ(0,"app-task-recording-detail",8),2&n){const e=t.oxw(2);t.Q6J("loading",e.loading)("taskStatus",e.taskData.task_status)}}function fi(n,o){if(1&n&&t._UZ(0,"app-task-network-detail",8),2&n){const e=t.oxw(2);t.Q6J("loading",e.loading)("taskStatus",e.taskData.task_status)}}function Ci(n,o){if(1&n&&t._UZ(0,"app-task-postprocessing-detail",8),2&n){const e=t.oxw(2);t.Q6J("loading",e.loading)("taskStatus",e.taskData.task_status)}}function zi(n,o){if(1&n&&(t.YNc(0,di,1,2,"app-task-user-info-detail",2),t.YNc(1,mi,1,2,"app-task-room-info-detail",3),t.YNc(2,hi,1,2,"app-task-recording-detail",4),t.YNc(3,fi,1,2,"app-task-network-detail",4),t.YNc(4,Ci,1,2,"app-task-postprocessing-detail",4),t._UZ(5,"app-task-file-detail",5)),2&n){const e=t.oxw();t.Q6J("ngIf",e.taskData),t.xp6(1),t.Q6J("ngIf",e.taskData),t.xp6(1),t.Q6J("ngIf",e.taskData),t.xp6(1),t.Q6J("ngIf",e.taskData),t.xp6(1),t.Q6J("ngIf",null==e.taskData||null==e.taskData.task_status?null:e.taskData.task_status.postprocessing_path),t.xp6(1),t.Q6J("loading",e.loading)("videoFileDetails",e.videoFileDetails)("danmakuFileDetails",e.danmakuFileDetails)}}mt.\u0275fac=function(o){return new(o||mt)(t.Y36(t.sBO))},mt.\u0275cmp=t.Xpm({type:mt,selectors:[["app-task-network-detail"]],inputs:{loading:"loading",taskStatus:"taskStatus"},features:[t.TTD],decls:15,vars:12,consts:[["nzTitle","\u7f51\u7edc\u8be6\u60c5",3,"nzLoading"],[1,"statistics"],[1,"stream-host",3,"nzTitle","nzValueTemplate"],["streamHost",""],[3,"nzTitle","nzValueTemplate"],["realStreamFormat",""],["downloadRate",""],["downloadTotal",""],["echarts","",1,"dl-rate-chart",3,"loading","options","merge"]],template:function(o,e){if(1&o&&(t.TgZ(0,"nz-card",0)(1,"div",1),t._UZ(2,"nz-statistic",2),t.YNc(3,li,1,1,"ng-template",null,3,t.W1O),t._UZ(5,"nz-statistic",4),t.YNc(6,ci,1,1,"ng-template",null,5,t.W1O),t._UZ(8,"nz-statistic",4),t.YNc(9,ui,2,5,"ng-template",null,6,t.W1O),t._UZ(11,"nz-statistic",4),t.YNc(12,gi,2,5,"ng-template",null,7,t.W1O),t.qZA(),t._UZ(14,"div",8),t.qZA()),2&o){const i=t.MAs(4),a=t.MAs(7),r=t.MAs(10),d=t.MAs(13);t.Q6J("nzLoading",e.loading),t.xp6(2),t.Q6J("nzTitle","\u6d41\u4e3b\u673a")("nzValueTemplate",i),t.xp6(3),t.Q6J("nzTitle","\u6d41\u683c\u5f0f")("nzValueTemplate",a),t.xp6(3),t.Q6J("nzTitle","\u4e0b\u8f7d\u901f\u5ea6")("nzValueTemplate",r),t.xp6(3),t.Q6J("nzTitle","\u4e0b\u8f7d\u603b\u8ba1")("nzValueTemplate",d),t.xp6(3),t.Q6J("loading",e.loading)("options",e.initialChartOptions)("merge",e.updatedChartOptions)}},dependencies:[v.bd,ie,ue,Rt.f,J],styles:[".statistics[_ngcontent-%COMP%]{--grid-width: 200px;display:grid;grid-template-columns:repeat(auto-fill,var(--grid-width));gap:1em;justify-content:center;margin:0 auto}@media screen and (max-width: 1024px){.statistics[_ngcontent-%COMP%]{--grid-width: 180px}}@media screen and (max-width: 720px){.statistics[_ngcontent-%COMP%]{--grid-width: 160px}}@media screen and (max-width: 680px){.statistics[_ngcontent-%COMP%]{--grid-width: 140px}}@media screen and (max-width: 480px){.statistics[_ngcontent-%COMP%]{--grid-width: 120px}}.stream-host[_ngcontent-%COMP%]{grid-column:1/3;grid-row:1}.dl-rate-chart[_ngcontent-%COMP%]{width:100%;height:300px;margin:0}"],changeDetection:0});const Ti=function(){return{"max-width":"unset"}},xi=function(){return{"row-gap":"1em"}};class ht{constructor(o,e,i,a,r){this.route=o,this.router=e,this.changeDetector=i,this.notification=a,this.taskService=r,this.videoFileDetails=[],this.danmakuFileDetails=[],this.loading=!0}ngOnInit(){this.route.paramMap.subscribe(o=>{this.roomId=parseInt(o.get("id")),this.syncData()})}ngOnDestroy(){this.desyncData()}syncData(){this.dataSubscription=(0,b.of)((0,b.of)(0),(0,pe.F)(1e3)).pipe((0,de.u)(),(0,rt.w)(()=>(0,ge.$)(this.taskService.getTaskData(this.roomId),this.taskService.getVideoFileDetails(this.roomId),this.taskService.getDanmakuFileDetails(this.roomId))),(0,lt.K)(o=>{throw this.notification.error("\u83b7\u53d6\u4efb\u52a1\u6570\u636e\u51fa\u9519",o.message),o}),(0,Zt.X)(10,3e3)).subscribe(([o,e,i])=>{this.loading=!1,this.taskData=o,this.videoFileDetails=e,this.danmakuFileDetails=i,this.changeDetector.markForCheck()},o=>{this.notification.error("\u83b7\u53d6\u4efb\u52a1\u6570\u636e\u51fa\u9519","\u7f51\u7edc\u8fde\u63a5\u5f02\u5e38, \u8bf7\u5f85\u7f51\u7edc\u6b63\u5e38\u540e\u5237\u65b0\u3002",{nzDuration:0})})}desyncData(){this.dataSubscription?.unsubscribe()}}ht.\u0275fac=function(o){return new(o||ht)(t.Y36(st.gz),t.Y36(st.F0),t.Y36(t.sBO),t.Y36(me.zb),t.Y36(Ut.M))},ht.\u0275cmp=t.Xpm({type:ht,selectors:[["app-task-detail"]],decls:2,vars:5,consts:[["pageTitle","\u4efb\u52a1\u8be6\u60c5",3,"loading","pageStyles","contentStyles"],["appSubPageContent",""],[3,"loading","userInfo",4,"ngIf"],[3,"loading","roomInfo",4,"ngIf"],[3,"loading","taskStatus",4,"ngIf"],[3,"loading","videoFileDetails","danmakuFileDetails"],[3,"loading","userInfo"],[3,"loading","roomInfo"],[3,"loading","taskStatus"]],template:function(o,e){1&o&&(t.TgZ(0,"app-sub-page",0),t.YNc(1,zi,6,8,"ng-template",1),t.qZA()),2&o&&t.Q6J("loading",e.loading)("pageStyles",t.DdM(3,Ti))("contentStyles",t.DdM(4,xi))},dependencies:[c.O5,Ko.Y,Go.q,_t,ut,pt,gt,dt,mt],changeDetection:0});var Ce=s(2323),Lt=s(7044),Di=s(1664),Mi=s(8372),ki=s(1884),W=s(4004);const ft=["(max-width: 534.98px)","(min-width: 535px) and (max-width: 1199.98px)","(min-width: 1200px)"];var Jt=s(9651);class Q{constructor(o,e){this.message=o,this.taskService=e}getAllTaskRoomIds(){return this.taskService.getAllTaskData().pipe((0,W.U)(o=>o.map(e=>e.room_info.room_id)))}updateTaskInfo(o){return this.taskService.updateTaskInfo(o).pipe((0,O.b)(()=>{this.message.success(`[${o}] \u6210\u529f\u5237\u65b0\u4efb\u52a1\u7684\u6570\u636e`)},e=>{this.message.error(`[${o}] \u5237\u65b0\u4efb\u52a1\u7684\u6570\u636e\u51fa\u9519: ${e.message}`)}))}updateAllTaskInfos(){return this.taskService.updateAllTaskInfos().pipe((0,O.b)(()=>{this.message.success("\u6210\u529f\u5237\u65b0\u5168\u90e8\u4efb\u52a1\u7684\u6570\u636e")},o=>{this.message.error(`\u5237\u65b0\u5168\u90e8\u4efb\u52a1\u7684\u6570\u636e\u51fa\u9519: ${o.message}`)}))}addTask(o){return this.taskService.addTask(o).pipe((0,W.U)(e=>({type:"success",message:"\u6210\u529f\u6dfb\u52a0\u4efb\u52a1"})),(0,lt.K)(e=>{let i;return i=409==e.status?{type:"error",message:"\u4efb\u52a1\u5df2\u5b58\u5728\uff0c\u4e0d\u80fd\u91cd\u590d\u6dfb\u52a0\u3002"}:403==e.status?{type:"warning",message:"\u4efb\u52a1\u6570\u91cf\u8d85\u8fc7\u9650\u5236\uff0c\u4e0d\u80fd\u6dfb\u52a0\u4efb\u52a1\u3002"}:404==e.status?{type:"error",message:"\u76f4\u64ad\u95f4\u4e0d\u5b58\u5728"}:{type:"error",message:`\u6dfb\u52a0\u4efb\u52a1\u51fa\u9519: ${e.message}`},(0,b.of)(i)}),(0,W.U)(e=>(e.message=`${o}: ${e.message}`,e)),(0,O.b)(e=>{this.message[e.type](e.message)}))}removeTask(o){return this.taskService.removeTask(o).pipe((0,O.b)(()=>{this.message.success(`[${o}] \u4efb\u52a1\u5df2\u5220\u9664`)},e=>{this.message.error(`[${o}] \u5220\u9664\u4efb\u52a1\u51fa\u9519: ${e.message}`)}))}removeAllTasks(){const o=this.message.loading("\u6b63\u5728\u5220\u9664\u5168\u90e8\u4efb\u52a1...",{nzDuration:0}).messageId;return this.taskService.removeAllTasks().pipe((0,O.b)(()=>{this.message.remove(o),this.message.success("\u6210\u529f\u5220\u9664\u5168\u90e8\u4efb\u52a1")},e=>{this.message.remove(o),this.message.error(`\u5220\u9664\u5168\u90e8\u4efb\u52a1\u51fa\u9519: ${e.message}`)}))}startTask(o){const e=this.message.loading(`[${o}] \u6b63\u5728\u8fd0\u884c\u4efb\u52a1...`,{nzDuration:0}).messageId;return this.taskService.startTask(o).pipe((0,O.b)(()=>{this.message.remove(e),this.message.success(`[${o}] \u6210\u529f\u8fd0\u884c\u4efb\u52a1`)},i=>{this.message.remove(e),this.message.error(`[${o}] \u8fd0\u884c\u4efb\u52a1\u51fa\u9519: ${i.message}`)}))}startAllTasks(){const o=this.message.loading("\u6b63\u5728\u8fd0\u884c\u5168\u90e8\u4efb\u52a1...",{nzDuration:0}).messageId;return this.taskService.startAllTasks().pipe((0,O.b)(()=>{this.message.remove(o),this.message.success("\u6210\u529f\u8fd0\u884c\u5168\u90e8\u4efb\u52a1")},e=>{this.message.remove(o),this.message.error(`\u8fd0\u884c\u5168\u90e8\u4efb\u52a1\u51fa\u9519: ${e.message}`)}))}stopTask(o,e=!1){const i=this.message.loading(`[${o}] \u6b63\u5728\u505c\u6b62\u4efb\u52a1...`,{nzDuration:0}).messageId;return this.taskService.stopTask(o,e).pipe((0,O.b)(()=>{this.message.remove(i),this.message.success(`[${o}] \u6210\u529f\u505c\u6b62\u4efb\u52a1`)},a=>{this.message.remove(i),this.message.error(`[${o}] \u505c\u6b62\u4efb\u52a1\u51fa\u9519: ${a.message}`)}))}stopAllTasks(o=!1){const e=this.message.loading("\u6b63\u5728\u505c\u6b62\u5168\u90e8\u4efb\u52a1...",{nzDuration:0}).messageId;return this.taskService.stopAllTasks(o).pipe((0,O.b)(()=>{this.message.remove(e),this.message.success("\u6210\u529f\u505c\u6b62\u5168\u90e8\u4efb\u52a1")},i=>{this.message.remove(e),this.message.error(`\u505c\u6b62\u5168\u90e8\u4efb\u52a1\u51fa\u9519: ${i.message}`)}))}enableRecorder(o){const e=this.message.loading(`[${o}] \u6b63\u5728\u5f00\u542f\u5f55\u5236...`,{nzDuration:0}).messageId;return this.taskService.enableTaskRecorder(o).pipe((0,O.b)(()=>{this.message.remove(e),this.message.success(`[${o}] \u6210\u529f\u5f00\u542f\u5f55\u5236`)},i=>{this.message.remove(e),this.message.error(`[${o}] \u5f00\u542f\u5f55\u5236\u51fa\u9519: ${i.message}`)}))}enableAllRecorders(){const o=this.message.loading("\u6b63\u5728\u5f00\u542f\u5168\u90e8\u4efb\u52a1\u7684\u5f55\u5236...",{nzDuration:0}).messageId;return this.taskService.enableAllRecorders().pipe((0,O.b)(()=>{this.message.remove(o),this.message.success("\u6210\u529f\u5f00\u542f\u5168\u90e8\u4efb\u52a1\u7684\u5f55\u5236")},e=>{this.message.remove(o),this.message.error(`\u5f00\u542f\u5168\u90e8\u4efb\u52a1\u7684\u5f55\u5236\u51fa\u9519: ${e.message}`)}))}disableRecorder(o,e=!1){const i=this.message.loading(`[${o}] \u6b63\u5728\u5173\u95ed\u5f55\u5236...`,{nzDuration:0}).messageId;return this.taskService.disableTaskRecorder(o,e).pipe((0,O.b)(()=>{this.message.remove(i),this.message.success(`[${o}] \u6210\u529f\u5173\u95ed\u5f55\u5236`)},a=>{this.message.remove(i),this.message.error(`[${o}] \u5173\u95ed\u5f55\u5236\u51fa\u9519: ${a.message}`)}))}disableAllRecorders(o=!1){const e=this.message.loading("\u6b63\u5728\u5173\u95ed\u5168\u90e8\u4efb\u52a1\u7684\u5f55\u5236...",{nzDuration:0}).messageId;return this.taskService.disableAllRecorders(o).pipe((0,O.b)(()=>{this.message.remove(e),this.message.success("\u6210\u529f\u5173\u95ed\u5168\u90e8\u4efb\u52a1\u7684\u5f55\u5236")},i=>{this.message.remove(e),this.message.error(`\u5173\u95ed\u5168\u90e8\u4efb\u52a1\u7684\u5f55\u5236\u51fa\u9519: ${i.message}`)}))}canCutStream(o){return this.taskService.canCutStream(o).pipe((0,O.b)(e=>{e||this.message.warning(`[${o}] \u4e0d\u652f\u6301\u6587\u4ef6\u5207\u5272~`)}))}cutStream(o){return this.taskService.cutStream(o).pipe((0,O.b)(()=>{this.message.success(`[${o}] \u6587\u4ef6\u5207\u5272\u5df2\u89e6\u53d1`)},e=>{403==e.status?this.message.warning(`[${o}] \u65f6\u957f\u592a\u77ed\u4e0d\u80fd\u5207\u5272\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002`):this.message.error(`[${o}] \u5207\u5272\u6587\u4ef6\u51fa\u9519: ${e.message}`)}))}}Q.\u0275fac=function(o){return new(o||Q)(t.LFG(Jt.dD),t.LFG(Ut.M))},Q.\u0275prov=t.Yz7({token:Q,factory:Q.\u0275fac,providedIn:"root"});var Ct=s(3325);function Oi(n,o){if(1&n&&(t.ynx(0),t.GkF(1,8),t._UZ(2,"nz-divider",13),t.GkF(3,8),t._UZ(4,"nz-divider",13),t.GkF(5,8),t._UZ(6,"nz-divider",13),t.GkF(7,8),t.BQk()),2&n){t.oxw();const e=t.MAs(5),i=t.MAs(9),a=t.MAs(11),r=t.MAs(13);t.xp6(1),t.Q6J("ngTemplateOutlet",e),t.xp6(2),t.Q6J("ngTemplateOutlet",i),t.xp6(2),t.Q6J("ngTemplateOutlet",a),t.xp6(2),t.Q6J("ngTemplateOutlet",r)}}function vi(n,o){if(1&n&&(t.ynx(0),t.GkF(1,8),t._UZ(2,"nz-divider",13),t.GkF(3,8),t._UZ(4,"nz-divider",13),t.GkF(5,8),t._UZ(6,"nz-divider",13),t.GkF(7,8),t.BQk()),2&n){t.oxw();const e=t.MAs(7),i=t.MAs(9),a=t.MAs(11),r=t.MAs(13);t.xp6(1),t.Q6J("ngTemplateOutlet",e),t.xp6(2),t.Q6J("ngTemplateOutlet",i),t.xp6(2),t.Q6J("ngTemplateOutlet",a),t.xp6(2),t.Q6J("ngTemplateOutlet",r)}}function Ei(n,o){if(1&n&&(t.ynx(0),t.GkF(1,8)(2,8),t.BQk()),2&n){t.oxw();const e=t.MAs(9),i=t.MAs(20);t.xp6(1),t.Q6J("ngTemplateOutlet",e),t.xp6(1),t.Q6J("ngTemplateOutlet",i)}}function Ai(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"label",16),t._uU(2),t.qZA(),t.BQk()),2&n){const e=o.$implicit;t.xp6(1),t.Q6J("nzValue",e.value),t.xp6(1),t.Oqu(e.label)}}function Pi(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-radio-group",14),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.selection=a)})("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.selectionChange.emit(a))}),t.YNc(1,Ai,3,2,"ng-container",15),t.qZA()}if(2&n){const e=t.oxw();t.Q6J("ngModel",e.selection),t.xp6(1),t.Q6J("ngForOf",e.selections)}}function Si(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-select",17),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.selection=a)})("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.selectionChange.emit(a))}),t.qZA()}if(2&n){const e=t.oxw();t.Q6J("nzOptions",e.selections)("ngModel",e.selection)}}function yi(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"i",23),t.NdJ("click",function(){t.CHM(e),t.oxw(2);const a=t.MAs(2),r=t.oxw();return a.value="",t.KtG(r.onFilterInput(""))}),t.qZA()}}function Fi(n,o){if(1&n&&t.YNc(0,yi,1,0,"i",22),2&n){t.oxw();const e=t.MAs(2);t.Q6J("ngIf",e.value)}}function bi(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-input-group",18)(1,"input",19,20),t.NdJ("input",function(){t.CHM(e);const a=t.MAs(2),r=t.oxw();return t.KtG(r.onFilterInput(a.value))}),t.qZA()(),t.YNc(3,Fi,1,1,"ng-template",null,21,t.W1O)}if(2&n){const e=t.MAs(4);t.Q6J("nzSuffix",e)}}function wi(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"button",24),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.toggleReverse())}),t.TgZ(1,"span"),t._uU(2),t.qZA(),t._UZ(3,"i",25),t.qZA()}if(2&n){const e=t.oxw();t.xp6(2),t.Oqu(e.reverse?"\u5012\u5e8f":"\u6b63\u5e8f"),t.xp6(1),t.Q6J("nzType",e.reverse?"swap-left":"swap-right")("nzRotate",90)}}function Ii(n,o){if(1&n&&(t.TgZ(0,"button",26),t._UZ(1,"i",27),t.qZA()),2&n){t.oxw();const e=t.MAs(15);t.Q6J("nzDropdownMenu",e)}}function Ni(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"ul",28)(1,"li",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.startAllTasks())}),t._uU(2,"\u5168\u90e8\u8fd0\u884c"),t.qZA(),t.TgZ(3,"li",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.stopAllTasks())}),t._uU(4,"\u5168\u90e8\u505c\u6b62"),t.qZA(),t.TgZ(5,"li",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.stopAllTasks(!0))}),t._uU(6,"\u5168\u90e8\u5f3a\u5236\u505c\u6b62"),t.qZA(),t._UZ(7,"li",30),t.TgZ(8,"li",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.disableAllRecorders(!1))}),t._uU(9,"\u5168\u90e8\u5173\u95ed\u5f55\u5236"),t.qZA(),t.TgZ(10,"li",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.disableAllRecorders(!0))}),t._uU(11,"\u5168\u90e8\u5f3a\u5236\u5173\u95ed\u5f55\u5236"),t.qZA(),t._UZ(12,"li",30),t.TgZ(13,"li",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.removeAllTasks())}),t._uU(14,"\u5168\u90e8\u5220\u9664"),t.qZA(),t.TgZ(15,"li",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.updateAllTaskInfos())}),t._uU(16,"\u5168\u90e8\u5237\u65b0\u6570\u636e"),t.qZA(),t.TgZ(17,"li",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.copyAllTaskRoomIds())}),t._uU(18,"\u590d\u5236\u5168\u90e8\u623f\u95f4\u53f7"),t.qZA()()}}function Bi(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"button",31),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.drawerVisible=!0)}),t._UZ(1,"i",27),t.qZA()}}function Zi(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"div",35),t._UZ(2,"nz-divider",36),t.GkF(3,8),t._UZ(4,"nz-divider",37),t.TgZ(5,"div",38),t.GkF(6,8),t.qZA()(),t.BQk()),2&n){t.oxw(2);const e=t.MAs(5),i=t.MAs(11);t.xp6(3),t.Q6J("ngTemplateOutlet",e),t.xp6(3),t.Q6J("ngTemplateOutlet",i)}}function Ui(n,o){if(1&n){const e=t.EpF();t.ynx(0),t.TgZ(1,"div",39),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.menuDrawerVisible=!1)}),t.GkF(2,8),t.qZA(),t.BQk()}if(2&n){t.oxw(2);const e=t.MAs(18);t.xp6(2),t.Q6J("ngTemplateOutlet",e)}}const Ri=function(){return{padding:"0"}};function Li(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-drawer",32),t.NdJ("nzVisibleChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.drawerVisible=a)})("nzOnClose",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.drawerVisible=!1)}),t.YNc(1,Zi,7,2,"ng-container",33),t.TgZ(2,"nz-drawer",34),t.NdJ("nzVisibleChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.menuDrawerVisible=a)})("nzOnClose",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.menuDrawerVisible=!1)}),t.YNc(3,Ui,3,1,"ng-container",33),t.qZA()()}if(2&n){const e=t.oxw(),i=t.MAs(23);t.Q6J("nzTitle",i)("nzClosable",!1)("nzVisible",e.drawerVisible),t.xp6(2),t.Q6J("nzClosable",!1)("nzBodyStyle",t.DdM(6,Ri))("nzVisible",e.menuDrawerVisible)}}function Ji(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"div",40)(1,"button",31),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.menuDrawerVisible=!0)}),t._UZ(2,"i",27),t.qZA()()}}class zt{constructor(o,e,i,a,r,d){this.message=i,this.modal=a,this.clipboard=r,this.taskManager=d,this.selectionChange=new t.vpe,this.reverseChange=new t.vpe,this.filterChange=new t.vpe,this.destroyed=new F.x,this.useDrawer=!1,this.useSelector=!1,this.useRadioGroup=!0,this.drawerVisible=!1,this.menuDrawerVisible=!1,this.filterTerms=new F.x,this.selections=[{label:"\u5168\u90e8",value:m.jf.ALL},{label:"\u5f55\u5236\u4e2d",value:m.jf.RECORDING},{label:"\u5f55\u5236\u5f00",value:m.jf.RECORDER_ENABLED},{label:"\u5f55\u5236\u5173",value:m.jf.RECORDER_DISABLED},{label:"\u8fd0\u884c",value:m.jf.MONITOR_ENABLED},{label:"\u505c\u6b62",value:m.jf.MONITOR_DISABLED},{label:"\u76f4\u64ad",value:m.jf.LIVING},{label:"\u8f6e\u64ad",value:m.jf.ROUNDING},{label:"\u95f2\u7f6e",value:m.jf.PREPARING}],e.observe(ft).pipe((0,A.R)(this.destroyed)).subscribe(C=>{this.useDrawer=C.breakpoints[ft[0]],this.useSelector=C.breakpoints[ft[1]],this.useRadioGroup=C.breakpoints[ft[2]],o.markForCheck()})}ngOnInit(){this.filterTerms.pipe((0,Mi.b)(300),(0,ki.x)()).subscribe(o=>{this.filterChange.emit(o)})}ngOnDestroy(){this.destroyed.next(),this.destroyed.complete()}onFilterInput(o){this.filterTerms.next(o)}toggleReverse(){this.reverse=!this.reverse,this.reverseChange.emit(this.reverse)}removeAllTasks(){this.modal.confirm({nzTitle:"\u786e\u5b9a\u8981\u5220\u9664\u5168\u90e8\u4efb\u52a1\uff1f",nzContent:"\u6b63\u5728\u5f55\u5236\u7684\u4efb\u52a1\u5c06\u88ab\u5f3a\u5236\u505c\u6b62\uff01\u4efb\u52a1\u5220\u9664\u540e\u5c06\u4e0d\u53ef\u6062\u590d\uff01",nzOnOk:()=>new Promise((o,e)=>{this.taskManager.removeAllTasks().subscribe(o,e)})})}startAllTasks(){this.taskManager.startAllTasks().subscribe()}stopAllTasks(o=!1){o?this.modal.confirm({nzTitle:"\u786e\u5b9a\u8981\u5f3a\u5236\u505c\u6b62\u5168\u90e8\u4efb\u52a1\uff1f",nzContent:"\u6b63\u5728\u5f55\u5236\u7684\u6587\u4ef6\u4f1a\u88ab\u5f3a\u884c\u4e2d\u65ad\uff01\u786e\u5b9a\u8981\u653e\u5f03\u6b63\u5728\u5f55\u5236\u7684\u6587\u4ef6\uff1f",nzOnOk:()=>new Promise((e,i)=>{this.taskManager.stopAllTasks(o).subscribe(e,i)})}):this.taskManager.stopAllTasks().subscribe()}disableAllRecorders(o=!1){o?this.modal.confirm({nzTitle:"\u786e\u5b9a\u8981\u5f3a\u5236\u5173\u95ed\u5168\u90e8\u4efb\u52a1\u7684\u5f55\u5236\uff1f",nzContent:"\u6b63\u5728\u5f55\u5236\u7684\u6587\u4ef6\u4f1a\u88ab\u5f3a\u884c\u4e2d\u65ad\uff01\u786e\u5b9a\u8981\u653e\u5f03\u6b63\u5728\u5f55\u5236\u7684\u6587\u4ef6\uff1f",nzOnOk:()=>new Promise((e,i)=>{this.taskManager.disableAllRecorders(o).subscribe(e,i)})}):this.taskManager.disableAllRecorders().subscribe()}updateAllTaskInfos(){this.taskManager.updateAllTaskInfos().subscribe()}copyAllTaskRoomIds(){this.taskManager.getAllTaskRoomIds().pipe((0,W.U)(o=>o.join(" ")),(0,O.b)(o=>{if(!this.clipboard.copy(o))throw Error("Failed to copy text to the clipboard")})).subscribe(()=>{this.message.success("\u5168\u90e8\u623f\u95f4\u53f7\u5df2\u590d\u5236\u5230\u526a\u5207\u677f")},o=>{this.message.error("\u590d\u5236\u5168\u90e8\u623f\u95f4\u53f7\u5230\u526a\u5207\u677f\u51fa\u9519",o)})}}zt.\u0275fac=function(o){return new(o||zt)(t.Y36(t.sBO),t.Y36(h.Yg),t.Y36(Jt.dD),t.Y36(K.Sf),t.Y36(_),t.Y36(Q))},zt.\u0275cmp=t.Xpm({type:zt,selectors:[["app-toolbar"]],inputs:{selection:"selection",reverse:"reverse"},outputs:{selectionChange:"selectionChange",reverseChange:"reverseChange",filterChange:"filterChange"},decls:24,vars:7,consts:[[1,"controls-wrapper"],[4,"ngIf"],["radioGroup",""],["selector",""],["filter",""],["reorderButton",""],["menuButton",""],["dropdownMenu","nzDropdownMenu"],[3,"ngTemplateOutlet"],["menu",""],["drawerButton",""],["nzPlacement","bottom","nzHeight","auto",3,"nzTitle","nzClosable","nzVisible","nzVisibleChange","nzOnClose",4,"ngIf"],["drawerHeader",""],["nzType","vertical"],["nzButtonStyle","solid",1,"radio-group",3,"ngModel","ngModelChange"],[4,"ngFor","ngForOf"],["nz-radio-button","",3,"nzValue"],[1,"selector",3,"nzOptions","ngModel","ngModelChange"],[1,"filter",3,"nzSuffix"],["nz-input","","type","text","maxlength","18","placeholder","\u7528\u6807\u9898\u3001\u5206\u533a\u3001\u4e3b\u64ad\u540d\u3001\u623f\u95f4\u53f7\u7b5b\u9009",3,"input"],["filterInput",""],["inputClearTpl",""],["nz-icon","","class","filter-clear","nzTheme","fill","nzType","close-circle",3,"click",4,"ngIf"],["nz-icon","","nzTheme","fill","nzType","close-circle",1,"filter-clear",3,"click"],["nz-button","","nzType","text","nzSize","default",1,"reverse-button",3,"click"],["nz-icon","",3,"nzType","nzRotate"],["nz-button","","nzType","text","nzSize","default","nz-dropdown","","nzPlacement","bottomRight",1,"more-actions-button",3,"nzDropdownMenu"],["nz-icon","","nzType","more"],["nz-menu","",1,"menu"],["nz-menu-item","",3,"click"],["nz-menu-divider",""],["nz-button","","nzType","text","nzSize","default",1,"more-actions-button",3,"click"],["nzPlacement","bottom","nzHeight","auto",3,"nzTitle","nzClosable","nzVisible","nzVisibleChange","nzOnClose"],[4,"nzDrawerContent"],["nzPlacement","bottom","nzHeight","auto",3,"nzClosable","nzBodyStyle","nzVisible","nzVisibleChange","nzOnClose"],[1,"drawer-content"],["nzText","\u7b5b\u9009"],["nzText","\u6392\u5e8f"],[1,"reorder-button-wrapper"],[1,"drawer-content",3,"click"],[1,"drawer-header"]],template:function(o,e){if(1&o&&(t.TgZ(0,"div",0),t.YNc(1,Oi,8,4,"ng-container",1),t.YNc(2,vi,8,4,"ng-container",1),t.YNc(3,Ei,3,2,"ng-container",1),t.qZA(),t.YNc(4,Pi,2,2,"ng-template",null,2,t.W1O),t.YNc(6,Si,1,2,"ng-template",null,3,t.W1O),t.YNc(8,bi,5,1,"ng-template",null,4,t.W1O),t.YNc(10,wi,4,3,"ng-template",null,5,t.W1O),t.YNc(12,Ii,2,1,"ng-template",null,6,t.W1O),t.TgZ(14,"nz-dropdown-menu",null,7),t.GkF(16,8),t.YNc(17,Ni,19,0,"ng-template",null,9,t.W1O),t.qZA(),t.YNc(19,Bi,2,0,"ng-template",null,10,t.W1O),t.YNc(21,Li,4,7,"nz-drawer",11),t.YNc(22,Ji,3,0,"ng-template",null,12,t.W1O)),2&o){const i=t.MAs(18);t.ekj("use-drawer",e.useDrawer),t.xp6(1),t.Q6J("ngIf",e.useRadioGroup),t.xp6(1),t.Q6J("ngIf",e.useSelector),t.xp6(1),t.Q6J("ngIf",e.useDrawer),t.xp6(13),t.Q6J("ngTemplateOutlet",i),t.xp6(5),t.Q6J("ngIf",e.useDrawer)}},dependencies:[c.sg,c.O5,c.tP,p.JJ,p.On,E.Ls,Ct.wO,Ct.r9,Ct.YV,j.cm,j.RR,j.wA,At.ix,Lt.w,V.Zp,V.gB,V.ke,Pt.Of,Pt.Bq,Pt.Dg,jt.g,at.Vz,at.SQ,wt.Vq],styles:[".drawer-content[_ngcontent-%COMP%] .menu[_ngcontent-%COMP%]{box-shadow:none;padding:.5em 0}.drawer-content[_ngcontent-%COMP%] .menu[_ngcontent-%COMP%] *[nz-menu-item][_ngcontent-%COMP%]{margin:0;padding:.5em 2em}.controls-wrapper[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:.2em;width:100%;padding:.2em;background:#f9f9f9;border-left:none;border-right:none}.controls-wrapper[_ngcontent-%COMP%] nz-divider[_ngcontent-%COMP%]{height:1.8em;top:0}.controls-wrapper[_ngcontent-%COMP%]:not(.use-drawer) .filter[_ngcontent-%COMP%]{max-width:18em}.controls-wrapper.use-drawer[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%]{max-width:unset;width:unset;flex:auto}.controls-wrapper[_ngcontent-%COMP%] .selector[_ngcontent-%COMP%]{min-width:6em}.reverse-button[_ngcontent-%COMP%]{padding:0 .5em}.reverse-button[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{margin:0}.more-actions-button[_ngcontent-%COMP%]{margin-left:auto;border:none;background:inherit}.more-actions-button[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:20px}.menu[_ngcontent-%COMP%] nz-divider[_ngcontent-%COMP%]{margin:0}.drawer-header[_ngcontent-%COMP%]{display:flex}.drawer-content[_ngcontent-%COMP%] .reorder-button-wrapper[_ngcontent-%COMP%], .drawer-content[_ngcontent-%COMP%] .radio-group[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(4,1fr);gap:2vw}.drawer-content[_ngcontent-%COMP%] nz-divider[_ngcontent-%COMP%]:first-of-type{margin-top:0}.drawer-content[_ngcontent-%COMP%] .radio-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{text-align:center;padding:0}"],changeDetection:0});var Qi=s(5136);class et{constructor(o){this.storage=o}getSettings(o){const e=this.storage.getData(this.getStorageKey(o));return e?JSON.parse(e)??{}:{}}updateSettings(o,e){e=Object.assign(this.getSettings(o),e);const i=JSON.stringify(e);this.storage.setData(this.getStorageKey(o),i)}getStorageKey(o){return`app-tasks-${o}`}}et.\u0275fac=function(o){return new(o||et)(t.LFG(Ce.V))},et.\u0275prov=t.Yz7({token:et,factory:et.\u0275fac,providedIn:"root"});var N=s(3523),B=s(4960),Ki=s(6457),Gi=s(4501);function Wi(n,o){1&n&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165\u8def\u5f84\u6a21\u677f "),t.BQk())}function Yi(n,o){1&n&&(t.ynx(0),t._uU(1," \u8def\u5f84\u6a21\u677f\u6709\u9519\u8bef "),t.BQk())}function qi(n,o){if(1&n&&(t.YNc(0,Wi,2,0,"ng-container",57),t.YNc(1,Yi,2,0,"ng-container",57)),2&n){const e=o.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}function $i(n,o){1&n&&(t.TgZ(0,"p"),t._uU(1," \u81ea\u52a8\u5206\u5272\u6587\u4ef6\u4ee5\u9650\u5236\u5f55\u64ad\u6587\u4ef6\u5927\u5c0f "),t._UZ(2,"br"),t._uU(3," \u683c\u5f0f\uff1a\u6570\u5b57 + \u5355\u4f4d(GB, MB, KB, B) "),t._UZ(4,"br"),t._uU(5," \u4e0d\u81ea\u52a8\u5206\u5272\u6587\u4ef6\u8bbe\u7f6e\u4e3a "),t.TgZ(6,"strong"),t._uU(7,"0 B"),t.qZA(),t._UZ(8,"br"),t.qZA())}function ji(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-form-item",58)(1,"nz-form-label",14),t._uU(2,"\u5927\u5c0f\u9650\u5236"),t.qZA(),t.YNc(3,$i,9,0,"ng-template",null,59,t.W1O),t.TgZ(5,"nz-form-control",60)(6,"app-input-filesize",61),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw(2);return t.KtG(r.model.output.filesizeLimit=a)}),t.qZA()(),t.TgZ(7,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw(2);return t.KtG(r.options.output.filesizeLimit=a?r.globalSettings.output.filesizeLimit:null)}),t._uU(8,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()()}if(2&n){const e=t.MAs(4),i=t.oxw(2);t.xp6(1),t.Q6J("nzTooltipTitle",e),t.xp6(5),t.Q6J("ngModel",i.model.output.filesizeLimit)("disabled",null===i.options.output.filesizeLimit),t.xp6(1),t.Q6J("nzChecked",null!==i.options.output.filesizeLimit)}}function Vi(n,o){1&n&&(t.TgZ(0,"p"),t._uU(1," \u81ea\u52a8\u5206\u5272\u6587\u4ef6\u4ee5\u9650\u5236\u5f55\u64ad\u6587\u4ef6\u65f6\u957f "),t._UZ(2,"br"),t._uU(3," \u683c\u5f0f\uff1aHH:MM:SS "),t._UZ(4,"br"),t._uU(5," \u4e0d\u81ea\u52a8\u5206\u5272\u6587\u4ef6\u8bbe\u7f6e\u4e3a "),t.TgZ(6,"strong"),t._uU(7,"00:00:00"),t.qZA(),t._UZ(8,"br"),t.qZA())}function Hi(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-form-item",62)(1,"nz-form-label",14),t._uU(2,"\u65f6\u957f\u9650\u5236"),t.qZA(),t.YNc(3,Vi,9,0,"ng-template",null,63,t.W1O),t.TgZ(5,"nz-form-control",60)(6,"app-input-duration",64),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw(2);return t.KtG(r.model.output.durationLimit=a)}),t.qZA()(),t.TgZ(7,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw(2);return t.KtG(r.options.output.durationLimit=a?r.globalSettings.output.durationLimit:null)}),t._uU(8,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()()}if(2&n){const e=t.MAs(4),i=t.oxw(2);t.xp6(1),t.Q6J("nzTooltipTitle",e),t.xp6(5),t.Q6J("ngModel",i.model.output.durationLimit)("disabled",null===i.options.output.durationLimit),t.xp6(1),t.Q6J("nzChecked",null!==i.options.output.durationLimit)}}function Xi(n,o){1&n&&(t.TgZ(0,"p"),t._uU(1," \u9009\u62e9\u8981\u5f55\u5236\u7684\u76f4\u64ad\u6d41\u683c\u5f0f "),t._UZ(2,"br"),t.TgZ(3,"b"),t._uU(4,"FLV:"),t.qZA(),t._uU(5," flv \u6d41\u5728\u7f51\u7edc\u4e0d\u7a33\u5b9a\u7684\u60c5\u51b5\u4e0b\u5bb9\u6613\u4e2d\u65ad\u4e22\u5931\u6570\u636e\u6216\u5f55\u5236\u5230\u4e8c\u538b\u753b\u8d28\u3002\u6ca1\u6709 flv \u6d41\u7684\u76f4\u64ad\u4f1a\u81ea\u52a8\u5207\u6362\u5f55\u5236 fmp4 \u6d41\u3002 "),t._UZ(6,"br"),t.TgZ(7,"b"),t._uU(8,"HLS (fmp4):"),t.qZA(),t._uU(9," hls \u6d41\u57fa\u672c\u4e0d\u53d7\u7f51\u7edc\u6ce2\u52a8\u5f71\u54cd\uff0c\u4f46\u4e0d\u662f\u6240\u6709\u76f4\u64ad\u95f4\u90fd\u652f\u6301\u3002\u6709 flv \u6d41\u7684\u76f4\u64ad\uff0c\u5728\u8bbe\u5b9a\u7684\u7b49\u5f85\u65f6\u95f4\u5185\u6ca1\u6709 fmp4 \u6d41\u4f1a\u81ea\u52a8\u5207\u6362\u5f55\u5236 flv \u6d41\u3002 "),t._UZ(10,"br"),t.TgZ(11,"b"),t._uU(12,"P.S."),t.qZA(),t._UZ(13,"br"),t._uU(14," WEB \u7aef\u76f4\u64ad\u64ad\u653e\u5668\u662f Hls7Player \u7684\u76f4\u64ad\u95f4\u652f\u6301\u5f55\u5236 fmp4 \u6d41, fMp4Player \u5219\u4e0d\u652f\u6301\u3002 "),t.qZA())}function ta(n,o){1&n&&(t.TgZ(0,"p"),t._uU(1," \u5982\u679c\u8d85\u8fc7\u6240\u8bbe\u7f6e\u7684\u7b49\u5f85\u65f6\u95f4 fmp4 \u6d41\u8fd8\u6ca1\u6709\u5c31\u5207\u6362\u4e3a\u5f55\u5236 flv \u6d41 "),t._UZ(2,"br"),t._uU(3," fmp4 \u6d41\u5728\u521a\u63a8\u6d41\u662f\u6ca1\u6709\u7684\uff0c\u8981\u8fc7\u4e00\u4f1a\u624d\u6709\u3002 "),t._UZ(4,"br"),t._uU(5," fmp4 \u6d41\u51fa\u73b0\u7684\u65f6\u95f4\u548c\u76f4\u64ad\u5ef6\u8fdf\u6709\u5173\uff0c\u4e00\u822c\u90fd\u5728 10 \u79d2\u5185\uff0c\u4f46\u4e5f\u6709\u5ef6\u8fdf\u6bd4\u8f83\u5927\u8d85\u8fc7 1 \u5206\u949f\u7684\u3002 "),t._UZ(6,"br"),t._uU(7," \u63a8\u8350\u5168\u5c40\u8bbe\u7f6e\u4e3a 10 \u79d2\uff0c\u4e2a\u522b\u5ef6\u8fdf\u6bd4\u8f83\u5927\u7684\u76f4\u64ad\u95f4\u5355\u72ec\u8bbe\u7f6e\u3002 "),t.qZA())}function ea(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-form-item",13)(1,"nz-form-label",14),t._uU(2,"fmp4 \u6d41\u7b49\u5f85\u65f6\u95f4"),t.qZA(),t.YNc(3,ta,8,0,"ng-template",null,65,t.W1O),t.TgZ(5,"nz-form-control",16)(6,"nz-select",66,67),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw(2);return t.KtG(r.model.recorder.fmp4StreamTimeout=a)}),t.qZA()(),t.TgZ(8,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw(2);return t.KtG(r.options.recorder.fmp4StreamTimeout=a?r.globalSettings.recorder.fmp4StreamTimeout:null)}),t._uU(9,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()()}if(2&n){const e=t.MAs(4),i=t.oxw(2);t.xp6(1),t.Q6J("nzTooltipTitle",e),t.xp6(5),t.Q6J("ngModel",i.model.recorder.fmp4StreamTimeout)("disabled",null===i.options.recorder.fmp4StreamTimeout)("nzOptions",i.fmp4StreamTimeoutOptions),t.xp6(2),t.Q6J("nzChecked",null!==i.options.recorder.fmp4StreamTimeout)}}function na(n,o){1&n&&(t.TgZ(0,"p"),t._uU(1," \u6807\u51c6\u6a21\u5f0f: \u5bf9\u4e0b\u8f7d\u7684\u6d41\u6570\u636e\u8fdb\u884c\u89e3\u6790\u5904\u7406\uff0c\u652f\u6301\u81ea\u52a8\u5206\u5272\u6587\u4ef6\u7b49\u529f\u80fd\u3002 "),t._UZ(2,"br"),t._uU(3," \u539f\u59cb\u6a21\u5f0f: \u76f4\u63a5\u4e0b\u8f7d\u6d41\u6570\u636e\uff0c\u6ca1\u6709\u8fdb\u884c\u89e3\u6790\u5904\u7406\uff0c\u4e0d\u652f\u6301\u81ea\u52a8\u5206\u5272\u6587\u4ef6\u7b49\u529f\u80fd\u3002 "),t._UZ(4,"br"),t.qZA())}function oa(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-form-item",13)(1,"nz-form-label",14),t._uU(2,"\u5f55\u5236\u6a21\u5f0f"),t.qZA(),t.YNc(3,na,5,0,"ng-template",null,68,t.W1O),t.TgZ(5,"nz-form-control",16)(6,"nz-select",69),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw(2);return t.KtG(r.model.recorder.recordingMode=a)}),t.qZA()(),t.TgZ(7,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw(2);return t.KtG(r.options.recorder.recordingMode=a?r.globalSettings.recorder.recordingMode:null)}),t._uU(8,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()()}if(2&n){const e=t.MAs(4),i=t.oxw(2);t.xp6(1),t.Q6J("nzTooltipTitle",e),t.xp6(5),t.Q6J("ngModel",i.model.recorder.recordingMode)("disabled",null===i.options.recorder.recordingMode)("nzOptions",i.recordingModeOptions),t.xp6(1),t.Q6J("nzChecked",null!==i.options.recorder.recordingMode)}}function ia(n,o){1&n&&(t.TgZ(0,"p"),t._uU(1," \u9ed8\u8ba4: \u6bcf\u4e2a\u5206\u5272\u7684\u5f55\u64ad\u6587\u4ef6\u5bf9\u5e94\u4fdd\u5b58\u4e00\u4e2a\u5c01\u9762\u6587\u4ef6\uff0c\u4e0d\u7ba1\u5c01\u9762\u662f\u5426\u76f8\u540c\u3002"),t._UZ(2,"br"),t._uU(3," \u53bb\u91cd: \u76f8\u540c\u7684\u5c01\u9762\u53ea\u4fdd\u5b58\u4e00\u6b21"),t._UZ(4,"br"),t._uU(5," P.S. "),t._UZ(6,"br"),t._uU(7," \u5224\u65ad\u662f\u5426\u76f8\u540c\u662f\u4f9d\u636e\u5c01\u9762\u6570\u636e\u7684 sha1\uff0c\u53ea\u5728\u5355\u6b21\u5f55\u5236\u5185\u6709\u6548\u3002 "),t.qZA())}function aa(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-form-item",13)(1,"nz-form-label",70),t._uU(2,"\u6570\u636e\u8bfb\u53d6\u8d85\u65f6"),t.qZA(),t.TgZ(3,"nz-form-control",71)(4,"nz-select",72,73),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw(2);return t.KtG(r.model.recorder.readTimeout=a)}),t.qZA()(),t.TgZ(6,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw(2);return t.KtG(r.options.recorder.readTimeout=a?r.globalSettings.recorder.readTimeout:null)}),t._uU(7,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()()}if(2&n){const e=t.MAs(5),i=t.oxw(2);t.xp6(3),t.Q6J("nzValidateStatus",e.value>3?"warning":e),t.xp6(1),t.Q6J("ngModel",i.model.recorder.readTimeout)("disabled",null===i.options.recorder.readTimeout)("nzOptions",i.readTimeoutOptions),t.xp6(2),t.Q6J("nzChecked",null!==i.options.recorder.readTimeout)}}function ra(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-form-item",13)(1,"nz-form-label",74),t._uU(2,"\u786c\u76d8\u5199\u5165\u7f13\u51b2"),t.qZA(),t.TgZ(3,"nz-form-control",16)(4,"nz-select",75),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw(2);return t.KtG(r.model.recorder.bufferSize=a)}),t.qZA()(),t.TgZ(5,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw(2);return t.KtG(r.options.recorder.bufferSize=a?r.globalSettings.recorder.bufferSize:null)}),t._uU(6,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()()}if(2&n){const e=t.oxw(2);t.xp6(4),t.Q6J("ngModel",e.model.recorder.bufferSize)("disabled",null===e.options.recorder.bufferSize)("nzOptions",e.bufferOptions)("nzOptionOverflowSize",6),t.xp6(1),t.Q6J("nzChecked",null!==e.options.recorder.bufferSize)}}function sa(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-form-item",13)(1,"nz-form-label",76),t._uU(2,"flv \u6dfb\u52a0\u5143\u6570\u636e"),t.qZA(),t.TgZ(3,"nz-form-control",22)(4,"nz-switch",77),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw(2);return t.KtG(r.model.postprocessing.injectExtraMetadata=a)}),t.qZA()(),t.TgZ(5,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw(2);return t.KtG(r.options.postprocessing.injectExtraMetadata=a?r.globalSettings.postprocessing.injectExtraMetadata:null)}),t._uU(6,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()()}if(2&n){const e=t.oxw(2);t.xp6(4),t.Q6J("ngModel",e.model.postprocessing.injectExtraMetadata)("disabled",null===e.options.postprocessing.injectExtraMetadata||!!e.options.postprocessing.remuxToMp4),t.xp6(1),t.Q6J("nzChecked",null!==e.options.postprocessing.injectExtraMetadata)}}function la(n,o){1&n&&(t.TgZ(0,"p"),t._uU(1," \u81ea\u52a8: \u6ca1\u51fa\u9519\u5c31\u5220\u9664\u6e90\u6587\u4ef6"),t._UZ(2,"br"),t._uU(3," \u8c28\u614e: \u6ca1\u51fa\u9519\u4e14\u6ca1\u8b66\u544a\u624d\u5220\u9664\u6e90\u6587\u4ef6"),t._UZ(4,"br"),t._uU(5," \u4ece\u4e0d: \u603b\u662f\u4fdd\u7559\u6e90\u6587\u4ef6"),t._UZ(6,"br"),t.qZA())}function ca(n,o){1&n&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 User Agent "),t.BQk())}function _a(n,o){1&n&&t.YNc(0,ca,2,0,"ng-container",57),2&n&&t.Q6J("ngIf",o.$implicit.hasError("required"))}function ua(n,o){if(1&n){const e=t.EpF();t.ynx(0),t.TgZ(1,"form",2)(2,"div",3)(3,"h2"),t._uU(4,"\u6587\u4ef6"),t.qZA(),t.TgZ(5,"nz-form-item",4)(6,"nz-form-label",5),t._uU(7,"\u8def\u5f84\u6a21\u677f"),t.qZA(),t.TgZ(8,"nz-form-control",6)(9,"input",7),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.model.output.pathTemplate=a)}),t.qZA(),t.YNc(10,qi,2,2,"ng-template",null,8,t.W1O),t.qZA(),t.TgZ(12,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.options.output.pathTemplate=a?r.globalSettings.output.pathTemplate:null)}),t._uU(13,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.YNc(14,ji,9,4,"nz-form-item",10),t.YNc(15,Hi,9,4,"nz-form-item",11),t.qZA(),t.TgZ(16,"div",12)(17,"h2"),t._uU(18,"\u5f55\u5236"),t.qZA(),t.TgZ(19,"nz-form-item",13)(20,"nz-form-label",14),t._uU(21,"\u76f4\u64ad\u6d41\u683c\u5f0f"),t.qZA(),t.YNc(22,Xi,15,0,"ng-template",null,15,t.W1O),t.TgZ(24,"nz-form-control",16)(25,"nz-select",17),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.model.recorder.streamFormat=a)}),t.qZA()(),t.TgZ(26,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.options.recorder.streamFormat=a?r.globalSettings.recorder.streamFormat:null)}),t._uU(27,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.YNc(28,ea,10,5,"nz-form-item",18),t.YNc(29,oa,9,5,"nz-form-item",18),t.TgZ(30,"nz-form-item",13)(31,"nz-form-label",19),t._uU(32,"\u753b\u8d28"),t.qZA(),t.TgZ(33,"nz-form-control",16)(34,"nz-select",20),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.model.recorder.qualityNumber=a)}),t.qZA()(),t.TgZ(35,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.options.recorder.qualityNumber=a?r.globalSettings.recorder.qualityNumber:null)}),t._uU(36,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(37,"nz-form-item",13)(38,"nz-form-label",21),t._uU(39,"\u4fdd\u5b58\u5c01\u9762"),t.qZA(),t.TgZ(40,"nz-form-control",22)(41,"nz-switch",23),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.model.recorder.saveCover=a)}),t.qZA()(),t.TgZ(42,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.options.recorder.saveCover=a?r.globalSettings.recorder.saveCover:null)}),t._uU(43,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(44,"nz-form-item",13)(45,"nz-form-label",14),t._uU(46,"\u5c01\u9762\u4fdd\u5b58\u7b56\u7565"),t.qZA(),t.YNc(47,ia,8,0,"ng-template",null,24,t.W1O),t.TgZ(49,"nz-form-control",16)(50,"nz-select",25),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.model.recorder.coverSaveStrategy=a)}),t.qZA()(),t.TgZ(51,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.options.recorder.coverSaveStrategy=a?r.globalSettings.recorder.coverSaveStrategy:null)}),t._uU(52,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.YNc(53,aa,8,5,"nz-form-item",18),t.TgZ(54,"nz-form-item",13)(55,"nz-form-label",26),t._uU(56,"\u65ad\u7f51\u7b49\u5f85\u65f6\u95f4"),t.qZA(),t.TgZ(57,"nz-form-control",16)(58,"nz-select",27),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.model.recorder.disconnectionTimeout=a)}),t.qZA()(),t.TgZ(59,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.options.recorder.bufferSize=a?r.globalSettings.recorder.bufferSize:null)}),t._uU(60,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.YNc(61,ra,7,5,"nz-form-item",18),t.qZA(),t.TgZ(62,"div",28)(63,"h2"),t._uU(64,"\u5f39\u5e55"),t.qZA(),t.TgZ(65,"nz-form-item",13)(66,"nz-form-label",29),t._uU(67,"\u8bb0\u5f55\u793c\u7269"),t.qZA(),t.TgZ(68,"nz-form-control",22)(69,"nz-switch",30),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.model.danmaku.recordGiftSend=a)}),t.qZA()(),t.TgZ(70,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.options.danmaku.recordGiftSend=a?r.globalSettings.danmaku.recordGiftSend:null)}),t._uU(71,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(72,"nz-form-item",13)(73,"nz-form-label",31),t._uU(74,"\u8bb0\u5f55\u514d\u8d39\u793c\u7269"),t.qZA(),t.TgZ(75,"nz-form-control",22)(76,"nz-switch",32),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.model.danmaku.recordFreeGifts=a)}),t.qZA()(),t.TgZ(77,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.options.danmaku.recordFreeGifts=a?r.globalSettings.danmaku.recordFreeGifts:null)}),t._uU(78,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(79,"nz-form-item",13)(80,"nz-form-label",33),t._uU(81,"\u8bb0\u5f55\u4e0a\u8230"),t.qZA(),t.TgZ(82,"nz-form-control",22)(83,"nz-switch",34),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.model.danmaku.recordGuardBuy=a)}),t.qZA()(),t.TgZ(84,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.options.danmaku.recordGuardBuy=a?r.globalSettings.danmaku.recordGuardBuy:null)}),t._uU(85,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(86,"nz-form-item",13)(87,"nz-form-label",35),t._uU(88,"\u8bb0\u5f55 Super Chat"),t.qZA(),t.TgZ(89,"nz-form-control",22)(90,"nz-switch",36),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.model.danmaku.recordSuperChat=a)}),t.qZA()(),t.TgZ(91,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.options.danmaku.recordSuperChat=a?r.globalSettings.danmaku.recordSuperChat:null)}),t._uU(92,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(93,"nz-form-item",13)(94,"nz-form-label",37),t._uU(95,"\u5f39\u5e55\u524d\u52a0\u7528\u6237\u540d"),t.qZA(),t.TgZ(96,"nz-form-control",22)(97,"nz-switch",38),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.model.danmaku.danmuUname=a)}),t.qZA()(),t.TgZ(98,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.options.danmaku.danmuUname=a?r.globalSettings.danmaku.danmuUname:null)}),t._uU(99,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(100,"nz-form-item",13)(101,"nz-form-label",39),t._uU(102,"\u4fdd\u5b58\u539f\u59cb\u5f39\u5e55"),t.qZA(),t.TgZ(103,"nz-form-control",22)(104,"nz-switch",40),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.model.danmaku.saveRawDanmaku=a)}),t.qZA()(),t.TgZ(105,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.options.danmaku.saveRawDanmaku=a?r.globalSettings.danmaku.saveRawDanmaku:null)}),t._uU(106,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()()(),t.TgZ(107,"div",41)(108,"h2"),t._uU(109,"\u6587\u4ef6\u5904\u7406"),t.qZA(),t.YNc(110,sa,7,3,"nz-form-item",18),t.TgZ(111,"nz-form-item",13)(112,"nz-form-label",42),t._uU(113,"\u8f6c\u5c01\u88c5\u4e3a mp4"),t.qZA(),t.TgZ(114,"nz-form-control",22)(115,"nz-switch",43),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.model.postprocessing.remuxToMp4=a)}),t.qZA()(),t.TgZ(116,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.options.postprocessing.remuxToMp4=a?r.globalSettings.postprocessing.remuxToMp4:null)}),t._uU(117,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(118,"nz-form-item",13)(119,"nz-form-label",14),t._uU(120,"\u6e90\u6587\u4ef6\u5220\u9664\u7b56\u7565"),t.qZA(),t.YNc(121,la,7,0,"ng-template",null,44,t.W1O),t.TgZ(123,"nz-form-control",16)(124,"nz-select",45),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.model.postprocessing.deleteSource=a)}),t.qZA()(),t.TgZ(125,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.options.postprocessing.deleteSource=a?r.globalSettings.postprocessing.deleteSource:null)}),t._uU(126,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()()(),t.TgZ(127,"div",46)(128,"h2"),t._uU(129,"\u7f51\u7edc\u8bf7\u6c42"),t.qZA(),t.TgZ(130,"nz-form-item",47)(131,"nz-form-label",48),t._uU(132,"User Agent"),t.qZA(),t.TgZ(133,"nz-form-control",49)(134,"textarea",50,51),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.model.header.userAgent=a)}),t.qZA()(),t.YNc(136,_a,1,1,"ng-template",null,52,t.W1O),t.TgZ(138,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.options.header.userAgent=a?r.globalSettings.header.userAgent:null)}),t._uU(139,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(140,"nz-form-item",47)(141,"nz-form-label",53),t._uU(142,"Cookie"),t.qZA(),t.TgZ(143,"nz-form-control",54)(144,"textarea",55,56),t.NdJ("ngModelChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.model.header.cookie=a)}),t.qZA()(),t.TgZ(146,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.options.header.cookie=a?r.globalSettings.header.cookie:null)}),t._uU(147,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()()()(),t.BQk()}if(2&n){const e=t.MAs(11),i=t.MAs(23),a=t.MAs(48),r=t.MAs(122),d=t.MAs(135),C=t.MAs(137),z=t.MAs(145),l=t.oxw();t.xp6(8),t.Q6J("nzErrorTip",e),t.xp6(1),t.Q6J("pattern",l.pathTemplatePattern)("ngModel",l.model.output.pathTemplate)("disabled",null===l.options.output.pathTemplate),t.xp6(3),t.Q6J("nzChecked",null!==l.options.output.pathTemplate),t.xp6(2),t.Q6J("ngIf","flv"===(l.options.recorder.streamFormat||l.model.recorder.streamFormat)||"fmp4"===(l.options.recorder.streamFormat||l.model.recorder.streamFormat)&&"standard"===(l.options.recorder.recordingMode||l.model.recorder.recordingMode)),t.xp6(1),t.Q6J("ngIf","flv"===(l.options.recorder.streamFormat||l.model.recorder.streamFormat)||"fmp4"===(l.options.recorder.streamFormat||l.model.recorder.streamFormat)&&"standard"===(l.options.recorder.recordingMode||l.model.recorder.recordingMode)),t.xp6(5),t.Q6J("nzTooltipTitle",i),t.xp6(5),t.Q6J("ngModel",l.model.recorder.streamFormat)("disabled",null===l.options.recorder.streamFormat)("nzOptions",l.streamFormatOptions),t.xp6(1),t.Q6J("nzChecked",null!==l.options.recorder.streamFormat),t.xp6(2),t.Q6J("ngIf","fmp4"===(l.options.recorder.streamFormat||l.model.recorder.streamFormat)),t.xp6(1),t.Q6J("ngIf","fmp4"===(l.options.recorder.streamFormat||l.model.recorder.streamFormat)),t.xp6(5),t.Q6J("ngModel",l.model.recorder.qualityNumber)("disabled",null===l.options.recorder.qualityNumber)("nzOptions",l.qualityOptions),t.xp6(1),t.Q6J("nzChecked",null!==l.options.recorder.qualityNumber),t.xp6(6),t.Q6J("ngModel",l.model.recorder.saveCover)("disabled",null===l.options.recorder.saveCover),t.xp6(1),t.Q6J("nzChecked",null!==l.options.recorder.saveCover),t.xp6(3),t.Q6J("nzTooltipTitle",a),t.xp6(5),t.Q6J("ngModel",l.model.recorder.coverSaveStrategy)("disabled",null===l.options.recorder.coverSaveStrategy||!l.options.recorder.saveCover)("nzOptions",l.coverSaveStrategies),t.xp6(1),t.Q6J("nzChecked",null!==l.options.recorder.coverSaveStrategy),t.xp6(2),t.Q6J("ngIf","flv"===(l.options.recorder.streamFormat||l.model.recorder.streamFormat)),t.xp6(5),t.Q6J("ngModel",l.model.recorder.disconnectionTimeout)("disabled",null===l.options.recorder.disconnectionTimeout)("nzOptions",l.disconnectionTimeoutOptions)("nzOptionOverflowSize",6),t.xp6(1),t.Q6J("nzChecked",null!==l.options.recorder.bufferSize),t.xp6(2),t.Q6J("ngIf","flv"===(l.options.recorder.streamFormat||l.model.recorder.streamFormat)||"fmp4"===(l.options.recorder.streamFormat||l.model.recorder.streamFormat)&&"standard"===(l.options.recorder.recordingMode||l.model.recorder.recordingMode)),t.xp6(8),t.Q6J("ngModel",l.model.danmaku.recordGiftSend)("disabled",null===l.options.danmaku.recordGiftSend),t.xp6(1),t.Q6J("nzChecked",null!==l.options.danmaku.recordGiftSend),t.xp6(6),t.Q6J("ngModel",l.model.danmaku.recordFreeGifts)("disabled",null===l.options.danmaku.recordFreeGifts),t.xp6(1),t.Q6J("nzChecked",null!==l.options.danmaku.recordFreeGifts),t.xp6(6),t.Q6J("ngModel",l.model.danmaku.recordGuardBuy)("disabled",null===l.options.danmaku.recordGuardBuy),t.xp6(1),t.Q6J("nzChecked",null!==l.options.danmaku.recordGuardBuy),t.xp6(6),t.Q6J("ngModel",l.model.danmaku.recordSuperChat)("disabled",null===l.options.danmaku.recordSuperChat),t.xp6(1),t.Q6J("nzChecked",null!==l.options.danmaku.recordSuperChat),t.xp6(6),t.Q6J("ngModel",l.model.danmaku.danmuUname)("disabled",null===l.options.danmaku.danmuUname),t.xp6(1),t.Q6J("nzChecked",null!==l.options.danmaku.danmuUname),t.xp6(6),t.Q6J("ngModel",l.model.danmaku.saveRawDanmaku)("disabled",null===l.options.danmaku.saveRawDanmaku),t.xp6(1),t.Q6J("nzChecked",null!==l.options.danmaku.saveRawDanmaku),t.xp6(5),t.Q6J("ngIf","flv"===(l.options.recorder.streamFormat||l.model.recorder.streamFormat)||"fmp4"===(l.options.recorder.streamFormat||l.model.recorder.streamFormat)&&"standard"===(l.options.recorder.recordingMode||l.model.recorder.recordingMode)),t.xp6(5),t.Q6J("ngModel",l.model.postprocessing.remuxToMp4)("disabled",null===l.options.postprocessing.remuxToMp4),t.xp6(1),t.Q6J("nzChecked",null!==l.options.postprocessing.remuxToMp4),t.xp6(3),t.Q6J("nzTooltipTitle",r),t.xp6(5),t.Q6J("ngModel",l.model.postprocessing.deleteSource)("disabled",null===l.options.postprocessing.deleteSource||!l.options.postprocessing.remuxToMp4)("nzOptions",l.deleteStrategies),t.xp6(1),t.Q6J("nzChecked",null!==l.options.postprocessing.deleteSource),t.xp6(8),t.Q6J("nzWarningTip",l.warningTip)("nzValidateStatus",d.valid&&l.options.header.userAgent!==l.taskOptions.header.userAgent&&l.options.header.userAgent!==l.globalSettings.header.userAgent?"warning":d)("nzErrorTip",C),t.xp6(1),t.Q6J("rows",3)("ngModel",l.model.header.userAgent)("disabled",null===l.options.header.userAgent),t.xp6(4),t.Q6J("nzChecked",null!==l.options.header.userAgent),t.xp6(5),t.Q6J("nzWarningTip",l.warningTip)("nzValidateStatus",z.valid&&l.options.header.cookie!==l.taskOptions.header.cookie&&l.options.header.cookie!==l.globalSettings.header.cookie?"warning":z),t.xp6(1),t.Q6J("rows",3)("ngModel",l.model.header.cookie)("disabled",null===l.options.header.cookie),t.xp6(2),t.Q6J("nzChecked",null!==l.options.header.cookie)}}class Tt{constructor(o){this.changeDetector=o,this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.afterOpen=new t.vpe,this.afterClose=new t.vpe,this.warningTip="\u9700\u8981\u91cd\u542f\u5f39\u5e55\u5ba2\u6237\u7aef\u624d\u80fd\u751f\u6548\uff0c\u5982\u679c\u4efb\u52a1\u6b63\u5728\u5f55\u5236\u53ef\u80fd\u4f1a\u4e22\u5931\u5f39\u5e55\uff01",this.pathTemplatePattern=B._m,this.streamFormatOptions=(0,N.Z)(B.tp),this.recordingModeOptions=(0,N.Z)(B.kV),this.fmp4StreamTimeoutOptions=(0,N.Z)(B.D4),this.qualityOptions=(0,N.Z)(B.O6),this.readTimeoutOptions=(0,N.Z)(B.D4),this.disconnectionTimeoutOptions=(0,N.Z)(B.$w),this.bufferOptions=(0,N.Z)(B.Rc),this.deleteStrategies=(0,N.Z)(B.rc),this.coverSaveStrategies=(0,N.Z)(B.J_)}ngOnChanges(){this.options=(0,N.Z)(this.taskOptions),this.setupModel(),this.changeDetector.markForCheck()}close(){this.setVisible(!1)}setVisible(o){this.visible=o,this.visibleChange.emit(o),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){this.confirm.emit((0,X.e5)(this.options,this.taskOptions)),this.close()}setupModel(){const o={};for(const e of Object.keys(this.options)){const r=this.globalSettings[e];Reflect.set(o,e,new Proxy(this.options[e],{get:(d,C)=>Reflect.get(d,C)??Reflect.get(r,C),set:(d,C,z)=>Reflect.set(d,C,z)}))}this.model=o}}Tt.\u0275fac=function(o){return new(o||Tt)(t.Y36(t.sBO))},Tt.\u0275cmp=t.Xpm({type:Tt,selectors:[["app-task-settings-dialog"]],viewQuery:function(o,e){if(1&o&&t.Gf(p.F,5),2&o){let i;t.iGM(i=t.CRH())&&(e.ngForm=i.first)}},inputs:{taskOptions:"taskOptions",globalSettings:"globalSettings",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm",afterOpen:"afterOpen",afterClose:"afterClose"},features:[t.TTD],decls:2,vars:2,consts:[["nzTitle","\u4efb\u52a1\u8bbe\u7f6e","nzCentered","",3,"nzVisible","nzOkDisabled","nzOnOk","nzOnCancel","nzAfterOpen","nzAfterClose"],[4,"nzModalContent"],["nz-form","","ngForm",""],["ngModelGroup","output",1,"form-group","output"],[1,"setting-item","input"],["nzNoColon","","nzTooltipTitle","\u53d8\u91cf\u8bf4\u660e\u8bf7\u67e5\u770b\u5bf9\u5e94\u5168\u5c40\u8bbe\u7f6e",1,"setting-label"],[1,"setting-control","input",3,"nzErrorTip"],["type","text","required","","nz-input","","name","pathTemplate",3,"pattern","ngModel","disabled","ngModelChange"],["pathTemplateErrorTip",""],["nz-checkbox","",3,"nzChecked","nzCheckedChange"],["class","setting-item filesize-limit",4,"ngIf"],["class","setting-item duration-limit",4,"ngIf"],["ngModelGroup","recorder",1,"form-group","recorder"],[1,"setting-item"],["nzNoColon","",1,"setting-label",3,"nzTooltipTitle"],["streamFormatTip",""],[1,"setting-control","select"],["name","streamFormat",3,"ngModel","disabled","nzOptions","ngModelChange"],["class","setting-item",4,"ngIf"],["nzNoColon","","nzTooltipTitle","\u6240\u9009\u753b\u8d28\u4e0d\u5b58\u5728\u5c06\u4ee5\u539f\u753b\u4ee3\u66ff",1,"setting-label"],["name","qualityNumber",3,"ngModel","disabled","nzOptions","ngModelChange"],["nzNoColon","","nzTooltipTitle","\u5f55\u64ad\u6587\u4ef6\u5b8c\u6210\u65f6\u4fdd\u5b58\u5f53\u524d\u76f4\u64ad\u95f4\u7684\u5c01\u9762",1,"setting-label"],[1,"setting-control","switch"],["name","saveCover",3,"ngModel","disabled","ngModelChange"],["coverSaveStrategyTip",""],["name","coverSaveStrategy",3,"ngModel","disabled","nzOptions","ngModelChange"],["nzNoColon","","nzTooltipTitle","\u65ad\u7f51\u8d85\u8fc7\u7b49\u5f85\u65f6\u95f4\u5c31\u7ed3\u675f\u5f55\u5236\uff0c\u5982\u679c\u7f51\u7edc\u6062\u590d\u540e\u4ecd\u672a\u4e0b\u64ad\u4f1a\u81ea\u52a8\u91cd\u65b0\u5f00\u59cb\u5f55\u5236\u3002",1,"setting-label"],["name","disconnectionTimeout",3,"ngModel","disabled","nzOptions","nzOptionOverflowSize","ngModelChange"],["ngModelGroup","danmaku",1,"form-group","danmaku"],["nzFor","recordGiftSend","nzNoColon","","nzTooltipTitle","\u8bb0\u5f55\u793c\u7269\u4fe1\u606f\u5230\u5f39\u5e55\u6587\u4ef6\u91cc",1,"setting-label"],["id","recordGiftSend","name","recordGiftSend",3,"ngModel","disabled","ngModelChange"],["nzFor","recordFreeGifts","nzNoColon","","nzTooltipTitle","\u8bb0\u5f55\u514d\u8d39\u793c\u7269\u4fe1\u606f\u5230\u5f39\u5e55\u6587\u4ef6\u91cc",1,"setting-label"],["id","recordFreeGifts","name","recordFreeGifts",3,"ngModel","disabled","ngModelChange"],["nzFor","recordGuardBuy","nzNoColon","","nzTooltipTitle","\u8bb0\u5f55\u4e0a\u8230\u4fe1\u606f\u5230\u5f39\u5e55\u6587\u4ef6\u91cc",1,"setting-label"],["id","recordGuardBuy","name","recordGuardBuy",3,"ngModel","disabled","ngModelChange"],["nzFor","recordSuperChat","nzNoColon","","nzTooltipTitle","\u8bb0\u5f55 Super Chat \u4fe1\u606f\u5230\u5f39\u5e55\u6587\u4ef6\u91cc",1,"setting-label"],["id","recordSuperChat","name","recordSuperChat",3,"ngModel","disabled","ngModelChange"],["nzFor","danmuUname","nzNoColon","","nzTooltipTitle","\u53d1\u9001\u8005: \u5f39\u5e55\u5185\u5bb9",1,"setting-label"],["id","danmuUname","name","danmuUname",3,"ngModel","disabled","ngModelChange"],["nzFor","saveRawDanmaku","nzNoColon","","nzTooltipTitle","\u4fdd\u5b58\u539f\u59cb\u5f39\u5e55\u5230 JSON lines \u6587\u4ef6\uff0c\u4e3b\u8981\u7528\u4e8e\u5206\u6790\u8c03\u8bd5\u3002",1,"setting-label"],["id","saveRawDanmaku","name","saveRawDanmaku",3,"ngModel","disabled","ngModelChange"],["ngModelGroup","postprocessing",1,"form-group","postprocessing"],["nzNoColon","","nzTooltipTitle","\u8c03\u7528 ffmpeg \u8fdb\u884c\u8f6c\u6362\uff0c\u9700\u8981\u5b89\u88c5 ffmpeg \u3002",1,"setting-label"],["name","remuxToMp4",3,"ngModel","disabled","ngModelChange"],["deleteSourceTip",""],["name","deleteSource",3,"ngModel","disabled","nzOptions","ngModelChange"],["ngModelGroup","header",1,"form-group","header"],[1,"setting-item","textarea"],["nzFor","userAgent","nzNoColon","",1,"setting-label"],[1,"setting-control","textarea",3,"nzWarningTip","nzValidateStatus","nzErrorTip"],["nz-input","","required","","id","userAgent","name","userAgent",3,"rows","ngModel","disabled","ngModelChange"],["userAgent","ngModel"],["userAgentErrorTip",""],["nzFor","cookie","nzNoColon","",1,"setting-label"],[1,"setting-control","textarea",3,"nzWarningTip","nzValidateStatus"],["nz-input","","id","cookie","name","cookie",3,"rows","ngModel","disabled","ngModelChange"],["cookie","ngModel"],[4,"ngIf"],[1,"setting-item","filesize-limit"],["filesizeLimitTip",""],[1,"setting-control","input"],["name","filesizeLimit",3,"ngModel","disabled","ngModelChange"],[1,"setting-item","duration-limit"],["durationLimitTip",""],["name","durationLimit",3,"ngModel","disabled","ngModelChange"],["fmp4StreamTimeoutTip",""],["name","fmp4StreamTimeout",3,"ngModel","disabled","nzOptions","ngModelChange"],["fmp4StreamTimeout","ngModel"],["recordingModeTip",""],["name","recordingMode",3,"ngModel","disabled","nzOptions","ngModelChange"],["nzNoColon","","nzTooltipTitle","\u8d85\u65f6\u65f6\u95f4\u8bbe\u7f6e\u5f97\u6bd4\u8f83\u957f\u76f8\u5bf9\u4e0d\u5bb9\u6613\u56e0\u7f51\u7edc\u4e0d\u7a33\u5b9a\u800c\u51fa\u73b0\u6d41\u4e2d\u65ad\uff0c\u4f46\u662f\u4e00\u65e6\u51fa\u73b0\u4e2d\u65ad\u5c31\u65e0\u6cd5\u5b9e\u73b0\u65e0\u7f1d\u62fc\u63a5\u4e14\u6f0f\u5f55\u8f83\u591a\u3002",1,"setting-label"],["nzWarningTip","\u65e0\u7f1d\u62fc\u63a5\u4f1a\u5931\u6548\uff01",1,"setting-control","select",3,"nzValidateStatus"],["name","readTimeout",3,"ngModel","disabled","nzOptions","ngModelChange"],["readTimeout","ngModel"],["nzNoColon","","nzTooltipTitle","\u786c\u76d8\u5199\u5165\u7f13\u51b2\u8bbe\u7f6e\u5f97\u6bd4\u8f83\u5927\u53ef\u4ee5\u51cf\u5c11\u5bf9\u786c\u76d8\u7684\u5199\u5165\uff0c\u4f46\u9700\u8981\u5360\u7528\u66f4\u591a\u7684\u5185\u5b58\u3002",1,"setting-label"],["name","bufferSize",3,"ngModel","disabled","nzOptions","nzOptionOverflowSize","ngModelChange"],["nzNoColon","","nzTooltipTitle","\u6dfb\u52a0\u5173\u952e\u5e27\u7b49\u5143\u6570\u636e\u4f7f\u5b9a\u4f4d\u64ad\u653e\u548c\u62d6\u8fdb\u5ea6\u6761\u4e0d\u4f1a\u5361\u987f",1,"setting-label"],["name","injectExtraMetadata",3,"ngModel","disabled","ngModelChange"]],template:function(o,e){1&o&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzOnOk",function(){return e.handleConfirm()})("nzOnCancel",function(){return e.handleCancel()})("nzAfterOpen",function(){return e.afterOpen.emit()})("nzAfterClose",function(){return e.afterClose.emit()}),t.YNc(1,ua,148,73,"ng-container",1),t.qZA()),2&o&&t.Q6J("nzVisible",e.visible)("nzOkDisabled",null==e.ngForm||null==e.ngForm.form?null:e.ngForm.form.invalid)},dependencies:[c.O5,p._Y,p.Fj,p.JJ,p.JL,p.Q7,p.c5,p.On,p.Mq,p.F,k.t3,k.SK,bt.i,K.du,K.Hf,R.Lr,R.Nx,R.iK,R.Fd,V.Zp,$t.Ie,wt.Vq,Ki.i,Gi.q],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}nz-divider[_ngcontent-%COMP%]{margin:0!important}.form-group[_ngcontent-%COMP%]:last-child .setting-item[_ngcontent-%COMP%]:last-child{padding-bottom:0}.setting-item[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,1fr);align-items:center;padding:1em 0;gap:1em;border:none}.setting-item[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{margin:0!important}.setting-item[_ngcontent-%COMP%] .setting-label[_ngcontent-%COMP%]{justify-self:start}.setting-item[_ngcontent-%COMP%] .setting-control[_ngcontent-%COMP%]{justify-self:center}.setting-item[_ngcontent-%COMP%] label[nz-checkbox][_ngcontent-%COMP%]{justify-self:end}.setting-item[_ngcontent-%COMP%] label[nz-checkbox][_ngcontent-%COMP%] span:last-of-type{padding-right:0}.setting-item.input[_ngcontent-%COMP%], .setting-item.textarea[_ngcontent-%COMP%]{grid-template-columns:repeat(2,1fr)}.setting-item.input[_ngcontent-%COMP%] .setting-label[_ngcontent-%COMP%], .setting-item.textarea[_ngcontent-%COMP%] .setting-label[_ngcontent-%COMP%]{grid-row:1/2;grid-column:1/2;justify-self:center}.setting-item.input[_ngcontent-%COMP%] .setting-control[_ngcontent-%COMP%], .setting-item.textarea[_ngcontent-%COMP%] .setting-control[_ngcontent-%COMP%]{grid-row:2/3;grid-column:1/-1;justify-self:stretch}.setting-item.input[_ngcontent-%COMP%] label[nz-checkbox][_ngcontent-%COMP%], .setting-item.textarea[_ngcontent-%COMP%] label[nz-checkbox][_ngcontent-%COMP%]{grid-row:1/2;grid-column:2/3;justify-self:center}@media screen and (max-width: 450px){.setting-item[_ngcontent-%COMP%]{grid-template-columns:repeat(2,1fr)}.setting-item[_ngcontent-%COMP%] .setting-label[_ngcontent-%COMP%]{grid-column:1/-1;justify-self:center}.setting-item[_ngcontent-%COMP%] label[nz-checkbox][_ngcontent-%COMP%]{justify-self:end}}.filesize-limit[_ngcontent-%COMP%] .setting-control.input[_ngcontent-%COMP%], .duration-limit[_ngcontent-%COMP%] .setting-control.input[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}@media screen and (max-width: 319px){.filesize-limit[_ngcontent-%COMP%] .setting-control.input[_ngcontent-%COMP%], .duration-limit[_ngcontent-%COMP%] .setting-control.input[_ngcontent-%COMP%]{margin-left:0!important}}"],changeDetection:0});const ze=function(){return{spacer:""}};function pa(n,o){if(1&n&&(t.TgZ(0,"div",2)(1,"p",3)(2,"span",4),t._UZ(3,"i"),t.qZA(),t.TgZ(4,"span",5),t._uU(5),t.ALo(6,"duration"),t.qZA(),t.TgZ(7,"span",6),t._uU(8),t.ALo(9,"datarate"),t.qZA(),t.TgZ(10,"span",7),t._uU(11),t.ALo(12,"filesize"),t.qZA(),t.TgZ(13,"span",8),t.ALo(14,"number"),t._uU(15),t.ALo(16,"number"),t.qZA(),t.TgZ(17,"span",9),t._uU(18),t.ALo(19,"quality"),t.qZA()()()),2&n){const e=t.oxw();t.xp6(5),t.hij(" ",t.lcZ(6,6,e.status.rec_elapsed)," "),t.xp6(3),t.hij(" ",t.xi3(9,8,e.status.rec_rate,t.DdM(22,ze))," "),t.xp6(3),t.hij(" ",t.xi3(12,11,e.status.rec_total,t.DdM(23,ze))," "),t.xp6(2),t.MGl("nzTooltipTitle","\u5f39\u5e55\u603b\u8ba1\uff1a",t.xi3(14,14,e.status.danmu_total,"1.0-0"),""),t.xp6(2),t.hij(" ",t.xi3(16,17,e.status.danmu_total,"1.0-0")," "),t.xp6(3),t.hij(" ",e.status.real_quality_number?t.lcZ(19,20,e.status.real_quality_number):""," ")}}function ga(n,o){if(1&n&&(t.TgZ(0,"div",2)(1,"p",10),t.ALo(2,"filename"),t._uU(3),t.ALo(4,"filename"),t.qZA(),t._UZ(5,"nz-progress",11),t.ALo(6,"progress"),t.qZA()),2&n){const e=t.oxw();let i,a;t.xp6(1),t.MGl("nzTooltipTitle","\u6b63\u5728\u6dfb\u52a0\u5143\u6570\u636e\uff1a",t.lcZ(2,7,null!==(i=e.status.postprocessing_path)&&void 0!==i?i:""),""),t.xp6(2),t.hij(" ",t.lcZ(4,9,null!==(a=e.status.postprocessing_path)&&void 0!==a?a:"")," "),t.xp6(2),t.Q6J("nzType","line")("nzShowInfo",!1)("nzStrokeLinecap","square")("nzStrokeWidth",2)("nzPercent",null===e.status.postprocessing_progress?0:t.lcZ(6,11,e.status.postprocessing_progress))}}function da(n,o){if(1&n&&(t.TgZ(0,"div",2)(1,"p",12),t.ALo(2,"filename"),t._uU(3),t.ALo(4,"filename"),t.qZA(),t._UZ(5,"nz-progress",11),t.ALo(6,"progress"),t.qZA()),2&n){const e=t.oxw();let i,a;t.xp6(1),t.MGl("nzTooltipTitle","\u6b63\u5728\u8f6c\u5c01\u88c5\uff1a",t.lcZ(2,7,null!==(i=e.status.postprocessing_path)&&void 0!==i?i:""),""),t.xp6(2),t.hij(" ",t.lcZ(4,9,null!==(a=e.status.postprocessing_path)&&void 0!==a?a:"")," "),t.xp6(2),t.Q6J("nzType","line")("nzShowInfo",!1)("nzStrokeLinecap","square")("nzStrokeWidth",2)("nzPercent",null===e.status.postprocessing_progress?0:t.lcZ(6,11,e.status.postprocessing_progress))}}class xt{constructor(){this.RunningStatus=m.cG}}xt.\u0275fac=function(o){return new(o||xt)},xt.\u0275cmp=t.Xpm({type:xt,selectors:[["app-status-display"]],inputs:{status:"status"},decls:4,vars:4,consts:[[3,"ngSwitch"],["class","status-display",4,"ngSwitchCase"],[1,"status-display"],[1,"status-bar","recording"],["nz-tooltip","","nzTooltipTitle","\u6b63\u5728\u5f55\u5236","nzTooltipPlacement","top",1,"status-indicator"],["nz-tooltip","","nzTooltipTitle","\u5f55\u5236\u7528\u65f6","nzTooltipPlacement","top",1,"time-elapsed"],["nz-tooltip","","nzTooltipTitle","\u5f55\u5236\u901f\u5ea6","nzTooltipPlacement","top",1,"data-rate"],["nz-tooltip","","nzTooltipTitle","\u5f55\u5236\u603b\u8ba1","nzTooltipPlacement","top",1,"data-count"],["nz-tooltip","","nzTooltipPlacement","top",1,"danmu-count",3,"nzTooltipTitle"],["nz-tooltip","","nzTooltipTitle","\u5f55\u5236\u753b\u8d28","nzTooltipPlacement","leftTop",1,"quality"],["nz-tooltip","","nzTooltipPlacement","top",1,"status-bar","injecting",3,"nzTooltipTitle"],[3,"nzType","nzShowInfo","nzStrokeLinecap","nzStrokeWidth","nzPercent"],["nz-tooltip","","nzTooltipPlacement","top",1,"status-bar","remuxing",3,"nzTooltipTitle"]],template:function(o,e){1&o&&(t.ynx(0,0),t.YNc(1,pa,20,24,"div",1),t.YNc(2,ga,7,13,"div",1),t.YNc(3,da,7,13,"div",1),t.BQk()),2&o&&(t.Q6J("ngSwitch",e.status.running_status),t.xp6(1),t.Q6J("ngSwitchCase",e.RunningStatus.RECORDING),t.xp6(1),t.Q6J("ngSwitchCase",e.RunningStatus.INJECTING),t.xp6(1),t.Q6J("ngSwitchCase",e.RunningStatus.REMUXING))},dependencies:[c.RF,c.n9,it.SY,ne,c.JJ,tt,Rt.f,J,fe.U,H,G],styles:[".status-bar[_ngcontent-%COMP%]{color:#fff;text-shadow:1px 1px 2px black;margin:0;padding:0 .5rem;background:rgba(0,0,0,.32)}.status-display[_ngcontent-%COMP%]{position:absolute;bottom:0;left:0;width:100%}.status-bar[_ngcontent-%COMP%]{display:flex;gap:1rem;font-size:1rem;line-height:1.8}.status-bar.recording[_ngcontent-%COMP%] .status-indicator[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center}.status-bar.recording[_ngcontent-%COMP%] .status-indicator[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{width:1rem;height:1rem;border-radius:.5rem;color:red;background:red;animation:_ngcontent-%COMP%_blinker 1s cubic-bezier(1,0,0,1) infinite}@keyframes _ngcontent-%COMP%_blinker{0%{opacity:0}to{opacity:1}}.status-bar.injecting[_ngcontent-%COMP%], .status-bar.remuxing[_ngcontent-%COMP%], .status-bar[_ngcontent-%COMP%] .danmu-count[_ngcontent-%COMP%]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.status-bar[_ngcontent-%COMP%] .quality[_ngcontent-%COMP%]{flex:none;margin-left:auto}nz-progress[_ngcontent-%COMP%]{display:flex}nz-progress[_ngcontent-%COMP%] .ant-progress-outer{display:flex}"],changeDetection:0});var ma=s(5141),Qt=s(457),ha=s(4968),fa=s(1481);const Kt=new Map,Gt=new Map;class Dt{constructor(o){this.domSanitizer=o}transform(o,e="object"){return"object"===e?Gt.has(o)?(0,b.of)(Gt.get(o)):(0,Qt.D)(this.fetchImage(o)).pipe((0,W.U)(i=>URL.createObjectURL(i)),(0,W.U)(i=>this.domSanitizer.bypassSecurityTrustUrl(i)),(0,O.b)(i=>Gt.set(o,i)),(0,lt.K)(()=>(0,b.of)(this.domSanitizer.bypassSecurityTrustUrl("")))):Kt.has(o)?(0,b.of)(Kt.get(o)):(0,Qt.D)(this.fetchImage(o)).pipe((0,rt.w)(i=>this.createDataURL(i)),(0,O.b)(i=>Kt.set(o,i)),(0,lt.K)(()=>(0,b.of)(this.domSanitizer.bypassSecurityTrustUrl(""))))}fetchImage(o){return(0,St.Z)(function*(){return yield(yield fetch(o,{referrer:""})).blob()})()}createDataURL(o){const e=new FileReader,i=(0,ha.R)(e,"load").pipe((0,W.U)(()=>this.domSanitizer.bypassSecurityTrustUrl(e.result)));return e.readAsDataURL(o),i}}function Ca(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"app-info-panel",21),t.NdJ("close",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.showInfoPanel=!1)}),t.qZA()}if(2&n){const e=t.oxw(2);t.Q6J("data",e.data)}}Dt.\u0275fac=function(o){return new(o||Dt)(t.Y36(fa.H7,16))},Dt.\u0275pipe=t.Yjl({name:"dataurl",type:Dt,pure:!0});const za=function(n){return[n,"detail"]};function Ta(n,o){if(1&n&&(t.TgZ(0,"a",15)(1,"div",16),t._UZ(2,"img",17),t.ALo(3,"async"),t.ALo(4,"dataurl"),t.TgZ(5,"h2",18),t._uU(6),t.qZA(),t.YNc(7,Ca,1,1,"app-info-panel",19),t._UZ(8,"app-status-display",20),t.qZA()()),2&n){const e=t.oxw();t.Q6J("routerLink",t.VKq(10,za,e.data.room_info.room_id)),t.xp6(2),t.Q6J("src",t.lcZ(3,6,t.lcZ(4,8,e.data.room_info.cover)),t.LSH),t.xp6(3),t.Q6J("nzTooltipTitle","\u76f4\u64ad\u95f4\u6807\u9898\uff1a"+e.data.room_info.title),t.xp6(1),t.hij(" ",e.data.room_info.title," "),t.xp6(1),t.Q6J("ngIf",e.showInfoPanel),t.xp6(1),t.Q6J("status",e.data.task_status)}}function xa(n,o){if(1&n&&(t._UZ(0,"nz-avatar",22),t.ALo(1,"async"),t.ALo(2,"dataurl")),2&n){const e=t.oxw();t.Q6J("nzShape","square")("nzSize",54)("nzSrc",t.lcZ(1,3,t.lcZ(2,5,e.data.user_info.face)))}}function Da(n,o){1&n&&(t.TgZ(0,"nz-tag",31),t._UZ(1,"i",32),t.TgZ(2,"span"),t._uU(3,"\u672a\u5f00\u64ad"),t.qZA()())}function Ma(n,o){1&n&&(t.TgZ(0,"nz-tag",33),t._UZ(1,"i",34),t.TgZ(2,"span"),t._uU(3,"\u76f4\u64ad\u4e2d"),t.qZA()())}function ka(n,o){1&n&&(t.TgZ(0,"nz-tag",35),t._UZ(1,"i",36),t.TgZ(2,"span"),t._uU(3,"\u8f6e\u64ad\u4e2d"),t.qZA()())}function Oa(n,o){if(1&n&&(t.TgZ(0,"p",23)(1,"span",24)(2,"a",25),t._uU(3),t.qZA()(),t.TgZ(4,"span",26),t.ynx(5,27),t.YNc(6,Da,4,0,"nz-tag",28),t.YNc(7,Ma,4,0,"nz-tag",29),t.YNc(8,ka,4,0,"nz-tag",30),t.BQk(),t.qZA()()),2&n){const e=t.oxw();t.xp6(2),t.MGl("href","https://space.bilibili.com/",e.data.user_info.uid,"",t.LSH),t.xp6(1),t.hij(" ",e.data.user_info.name," "),t.xp6(2),t.Q6J("ngSwitch",e.data.room_info.live_status),t.xp6(1),t.Q6J("ngSwitchCase",0),t.xp6(1),t.Q6J("ngSwitchCase",1),t.xp6(1),t.Q6J("ngSwitchCase",2)}}function va(n,o){if(1&n&&(t.TgZ(0,"span",44)(1,"a",25),t._uU(2),t.qZA()()),2&n){const e=t.oxw(2);t.xp6(1),t.MGl("href","https://live.bilibili.com/",e.data.room_info.short_room_id,"",t.LSH),t.xp6(1),t.hij(" ",e.data.room_info.short_room_id,"")}}function Ea(n,o){if(1&n&&(t.TgZ(0,"p",37)(1,"span",38)(2,"span",39),t._uU(3,"\u623f\u95f4\u53f7\uff1a"),t.qZA(),t.YNc(4,va,3,2,"span",40),t.TgZ(5,"span",41)(6,"a",25),t._uU(7),t.qZA()()(),t.TgZ(8,"span",42)(9,"a",25)(10,"nz-tag",43),t._uU(11),t.qZA()()()()),2&n){const e=t.oxw();t.xp6(4),t.Q6J("ngIf",e.data.room_info.short_room_id),t.xp6(2),t.MGl("href","https://live.bilibili.com/",e.data.room_info.room_id,"",t.LSH),t.xp6(1),t.Oqu(e.data.room_info.room_id),t.xp6(2),t.hYB("href","https://live.bilibili.com/p/eden/area-tags?parentAreaId=",e.data.room_info.parent_area_id,"&areaId=",e.data.room_info.area_id,"",t.LSH),t.xp6(1),t.Q6J("nzColor","#23ade5"),t.xp6(1),t.hij(" ",e.data.room_info.area_name," ")}}function Aa(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-switch",45),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.toggleRecorder())}),t.qZA()}if(2&n){const e=t.oxw();t.Q6J("nzDisabled",e.toggleRecorderForbidden)("ngModel",e.data.task_status.recorder_enabled)("nzControl",!0)("nzLoading",e.switchPending)}}function Pa(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"div",46),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.cutStream())}),t._UZ(1,"i",47),t.qZA()}if(2&n){const e=t.oxw();t.ekj("not-allowed",e.data.task_status.running_status!==e.RunningStatus.RECORDING)}}function Sa(n,o){if(1&n){const e=t.EpF();t.ynx(0),t.TgZ(1,"app-task-settings-dialog",51),t.NdJ("visibleChange",function(a){t.CHM(e);const r=t.oxw(2);return t.KtG(r.settingsDialogVisible=a)})("confirm",function(a){t.CHM(e);const r=t.oxw(2);return t.KtG(r.changeTaskOptions(a))})("afterClose",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.cleanSettingsData())}),t.qZA(),t.BQk()}if(2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("taskOptions",e.taskOptions)("globalSettings",e.globalSettings)("visible",e.settingsDialogVisible)}}function ya(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"div",48),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.openSettingsDialog())}),t._UZ(1,"i",49),t.qZA(),t.YNc(2,Sa,2,3,"ng-container",50)}if(2&n){const e=t.oxw();t.xp6(2),t.Q6J("ngIf",e.taskOptions&&e.globalSettings)}}function Fa(n,o){if(1&n&&(t.TgZ(0,"div",54),t._UZ(1,"i",55),t.qZA()),2&n){t.oxw(2);const e=t.MAs(20);t.Q6J("nzDropdownMenu",e)}}function ba(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"div",56),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.menuDrawerVisible=!0)}),t._UZ(1,"i",55),t.qZA()}}function wa(n,o){if(1&n&&(t.YNc(0,Fa,2,1,"div",52),t.YNc(1,ba,2,0,"div",53)),2&n){const e=t.oxw();t.Q6J("ngIf",!e.useDrawer),t.xp6(1),t.Q6J("ngIf",e.useDrawer)}}function Ia(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"ul",57)(1,"li",58),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.startTask())}),t._uU(2,"\u8fd0\u884c\u4efb\u52a1"),t.qZA(),t.TgZ(3,"li",58),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.stopTask())}),t._uU(4,"\u505c\u6b62\u4efb\u52a1"),t.qZA(),t.TgZ(5,"li",58),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.removeTask())}),t._uU(6,"\u5220\u9664\u4efb\u52a1"),t.qZA(),t.TgZ(7,"li",58),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.stopTask(!0))}),t._uU(8,"\u5f3a\u5236\u505c\u6b62\u4efb\u52a1"),t.qZA(),t.TgZ(9,"li",58),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.disableRecorder(!0))}),t._uU(10,"\u5f3a\u5236\u5173\u95ed\u5f55\u5236"),t.qZA(),t.TgZ(11,"li",58),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.updateTaskInfo())}),t._uU(12,"\u5237\u65b0\u6570\u636e"),t.qZA(),t.TgZ(13,"li",58),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.showInfoPanel=!0)}),t._uU(14,"\u663e\u793a\u5f55\u5236\u4fe1\u606f"),t.qZA()()}}function Na(n,o){if(1&n){const e=t.EpF();t.ynx(0),t.TgZ(1,"div",61),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.menuDrawerVisible=!1)}),t.GkF(2,12),t.qZA(),t.BQk()}if(2&n){t.oxw(2);const e=t.MAs(23);t.xp6(2),t.Q6J("ngTemplateOutlet",e)}}const Ba=function(){return{padding:"0"}};function Za(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-drawer",59),t.NdJ("nzVisibleChange",function(a){t.CHM(e);const r=t.oxw();return t.KtG(r.menuDrawerVisible=a)})("nzOnClose",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.menuDrawerVisible=!1)}),t.YNc(1,Na,3,1,"ng-container",60),t.qZA()}if(2&n){const e=t.oxw();t.Q6J("nzClosable",!1)("nzBodyStyle",t.DdM(3,Ba))("nzVisible",e.menuDrawerVisible)}}const Ua=function(n,o,e,i){return[n,o,e,i]},Ra=function(){return{padding:"0.5rem"}},La=function(){return{size:"large"}};class Mt{constructor(o,e,i,a,r,d,C){this.changeDetector=e,this.message=i,this.modal=a,this.settingService=r,this.taskManager=d,this.appTaskSettings=C,this.stopped=!1,this.destroyed=new F.x,this.useDrawer=!1,this.menuDrawerVisible=!1,this.switchPending=!1,this.settingsDialogVisible=!1,this.RunningStatus=m.cG,o.observe(ft[0]).pipe((0,A.R)(this.destroyed)).subscribe(z=>{this.useDrawer=z.matches,e.markForCheck()})}get roomId(){return this.data.room_info.room_id}get toggleRecorderForbidden(){return!this.data.task_status.monitor_enabled}get showInfoPanel(){return Boolean(this.appTaskSettings.getSettings(this.roomId).showInfoPanel)}set showInfoPanel(o){this.appTaskSettings.updateSettings(this.roomId,{showInfoPanel:o})}ngOnChanges(o){console.debug("[ngOnChanges]",this.roomId,o),this.stopped=this.data.task_status.running_status===m.cG.STOPPED}ngOnDestroy(){this.destroyed.next(),this.destroyed.complete()}updateTaskInfo(){this.taskManager.updateTaskInfo(this.roomId).subscribe()}toggleRecorder(){this.toggleRecorderForbidden||this.switchPending||(this.switchPending=!0,this.data.task_status.recorder_enabled?this.taskManager.disableRecorder(this.roomId).subscribe(()=>this.switchPending=!1):this.taskManager.enableRecorder(this.roomId).subscribe(()=>this.switchPending=!1))}removeTask(){this.taskManager.removeTask(this.roomId).subscribe()}startTask(){this.data.task_status.running_status===m.cG.STOPPED?this.taskManager.startTask(this.roomId).subscribe():this.message.warning("\u4efb\u52a1\u8fd0\u884c\u4e2d\uff0c\u5ffd\u7565\u64cd\u4f5c\u3002")}stopTask(o=!1){this.data.task_status.running_status!==m.cG.STOPPED?o&&this.data.task_status.running_status==m.cG.RECORDING?this.modal.confirm({nzTitle:"\u786e\u5b9a\u8981\u5f3a\u5236\u505c\u6b62\u4efb\u52a1\uff1f",nzContent:"\u6b63\u5728\u5f55\u5236\u7684\u6587\u4ef6\u4f1a\u88ab\u5f3a\u884c\u4e2d\u65ad\uff01\u786e\u5b9a\u8981\u653e\u5f03\u6b63\u5728\u5f55\u5236\u7684\u6587\u4ef6\uff1f",nzOnOk:()=>new Promise((e,i)=>{this.taskManager.stopTask(this.roomId,o).subscribe(e,i)})}):this.taskManager.stopTask(this.roomId).subscribe():this.message.warning("\u4efb\u52a1\u5904\u4e8e\u505c\u6b62\u72b6\u6001\uff0c\u5ffd\u7565\u64cd\u4f5c\u3002")}disableRecorder(o=!1){this.data.task_status.recorder_enabled?o&&this.data.task_status.running_status==m.cG.RECORDING?this.modal.confirm({nzTitle:"\u786e\u5b9a\u8981\u5f3a\u5236\u505c\u6b62\u5f55\u5236\uff1f",nzContent:"\u6b63\u5728\u5f55\u5236\u7684\u6587\u4ef6\u4f1a\u88ab\u5f3a\u884c\u4e2d\u65ad\uff01\u786e\u5b9a\u8981\u653e\u5f03\u6b63\u5728\u5f55\u5236\u7684\u6587\u4ef6\uff1f",nzOnOk:()=>new Promise((e,i)=>{this.taskManager.disableRecorder(this.roomId,o).subscribe(e,i)})}):this.taskManager.disableRecorder(this.roomId).subscribe():this.message.warning("\u5f55\u5236\u5904\u4e8e\u5173\u95ed\u72b6\u6001\uff0c\u5ffd\u7565\u64cd\u4f5c\u3002")}openSettingsDialog(){(0,ge.$)(this.settingService.getTaskOptions(this.roomId),this.settingService.getSettings(["output","header","danmaku","recorder","postprocessing"])).subscribe(([o,e])=>{this.taskOptions=o,this.globalSettings=e,this.settingsDialogVisible=!0,this.changeDetector.markForCheck()},o=>{this.message.error(`\u83b7\u53d6\u4efb\u52a1\u8bbe\u7f6e\u51fa\u9519: ${o.message}`)})}cleanSettingsData(){delete this.taskOptions,delete this.globalSettings,this.changeDetector.markForCheck()}changeTaskOptions(o){this.settingService.changeTaskOptions(this.roomId,o).pipe((0,Zt.X)(3,300)).subscribe(e=>{this.message.success("\u4fee\u6539\u4efb\u52a1\u8bbe\u7f6e\u6210\u529f")},e=>{this.message.error(`\u4fee\u6539\u4efb\u52a1\u8bbe\u7f6e\u51fa\u9519: ${e.message}`)})}cutStream(){this.data.task_status.running_status===m.cG.RECORDING&&this.taskManager.canCutStream(this.roomId).subscribe(o=>{o&&this.taskManager.cutStream(this.roomId).subscribe()})}}function Ja(n,o){1&n&&(t.TgZ(0,"div",2),t._UZ(1,"nz-empty"),t.qZA())}function Qa(n,o){1&n&&t._UZ(0,"app-task-item",6),2&n&&t.Q6J("data",o.$implicit)}function Ka(n,o){if(1&n&&(t.TgZ(0,"div",3,4),t.YNc(2,Qa,1,1,"app-task-item",5),t.qZA()),2&n){const e=t.oxw();t.xp6(2),t.Q6J("ngForOf",e.dataList)("ngForTrackBy",e.trackByRoomId)}}Mt.\u0275fac=function(o){return new(o||Mt)(t.Y36(h.Yg),t.Y36(t.sBO),t.Y36(Jt.dD),t.Y36(K.Sf),t.Y36(Qi.R),t.Y36(Q),t.Y36(et))},Mt.\u0275cmp=t.Xpm({type:Mt,selectors:[["app-task-item"]],hostVars:2,hostBindings:function(o,e){2&o&&t.ekj("stopped",e.stopped)},inputs:{data:"data"},features:[t.TTD],decls:25,vars:19,consts:[[3,"nzCover","nzHoverable","nzActions","nzBodyStyle"],[3,"nzActive","nzLoading","nzAvatar"],[3,"nzAvatar","nzTitle","nzDescription"],["coverTemplate",""],["avatarTemplate",""],["titleTemplate",""],["descTemplate",""],["actionSwitch",""],["actionDelete",""],["actionSetting",""],["actionMore",""],["dropdownMenu","nzDropdownMenu"],[3,"ngTemplateOutlet"],["menu",""],["nzPlacement","bottom","nzHeight","auto",3,"nzClosable","nzBodyStyle","nzVisible","nzVisibleChange","nzOnClose",4,"ngIf"],[3,"routerLink"],[1,"cover-wrapper"],["alt","\u76f4\u64ad\u95f4\u5c01\u9762",1,"cover",3,"src"],["nz-tooltip","","nzTooltipPlacement","bottomLeft",1,"title",3,"nzTooltipTitle"],[3,"data","close",4,"ngIf"],[3,"status"],[3,"data","close"],[3,"nzShape","nzSize","nzSrc"],[1,"meta-title"],["nz-tooltip","","nzTooltipTitle","\u6253\u5f00\u4e3b\u64ad\u4e2a\u4eba\u7a7a\u95f4\u9875\u9762","nzTooltipPlacement","right",1,"user-name"],["target","_blank",3,"href"],[1,"live-status"],[3,"ngSwitch"],["nzColor","default",4,"ngSwitchCase"],["nzColor","red",4,"ngSwitchCase"],["nzColor","green",4,"ngSwitchCase"],["nzColor","default"],["nz-icon","","nzType","frown"],["nzColor","red"],["nz-icon","","nzType","fire"],["nzColor","green"],["nz-icon","","nzType","sync","nzSpin",""],[1,"meta-desc"],[1,"room-id-wrapper"],[1,"room-id-label"],["class","short-room-id","nz-tooltip","","nzTooltipTitle","\u6253\u5f00\u76f4\u64ad\u95f4\u9875\u9762","nzTooltipPlacement","bottom",4,"ngIf"],["nz-tooltip","","nzTooltipTitle","\u6253\u5f00\u76f4\u64ad\u95f4\u9875\u9762","nzTooltipPlacement","bottom",1,"real-room-id"],["nz-tooltip","","nzTooltipTitle","\u6253\u5f00\u76f4\u64ad\u5206\u533a\u9875\u9762","nzTooltipPlacement","leftTop",1,"area-name"],[3,"nzColor"],["nz-tooltip","","nzTooltipTitle","\u6253\u5f00\u76f4\u64ad\u95f4\u9875\u9762","nzTooltipPlacement","bottom",1,"short-room-id"],["nz-tooltip","","nzTooltipTitle","\u5f55\u5236\u5f00\u5173",3,"nzDisabled","ngModel","nzControl","nzLoading","click"],["nz-tooltip","","nzTooltipTitle","\u5207\u5272\u6587\u4ef6",3,"click"],["nz-icon","","nzType","scissor",1,"action-icon"],["nz-tooltip","","nzTooltipTitle","\u4efb\u52a1\u8bbe\u7f6e",3,"click"],["nz-icon","","nzType","setting",1,"action-icon"],[4,"ngIf"],[3,"taskOptions","globalSettings","visible","visibleChange","confirm","afterClose"],["nz-dropdown","","nzPlacement","topRight",3,"nzDropdownMenu",4,"ngIf"],[3,"click",4,"ngIf"],["nz-dropdown","","nzPlacement","topRight",3,"nzDropdownMenu"],["nz-icon","","nzType","more",1,"action-icon"],[3,"click"],["nz-menu","",1,"menu"],["nz-menu-item","",3,"click"],["nzPlacement","bottom","nzHeight","auto",3,"nzClosable","nzBodyStyle","nzVisible","nzVisibleChange","nzOnClose"],[4,"nzDrawerContent"],[1,"drawer-content",3,"click"]],template:function(o,e){if(1&o&&(t.TgZ(0,"nz-card",0)(1,"nz-skeleton",1),t._UZ(2,"nz-card-meta",2),t.qZA()(),t.YNc(3,Ta,9,12,"ng-template",null,3,t.W1O),t.YNc(5,xa,3,7,"ng-template",null,4,t.W1O),t.YNc(7,Oa,9,6,"ng-template",null,5,t.W1O),t.YNc(9,Ea,12,7,"ng-template",null,6,t.W1O),t.YNc(11,Aa,1,4,"ng-template",null,7,t.W1O),t.YNc(13,Pa,2,2,"ng-template",null,8,t.W1O),t.YNc(15,ya,3,1,"ng-template",null,9,t.W1O),t.YNc(17,wa,2,2,"ng-template",null,10,t.W1O),t.TgZ(19,"nz-dropdown-menu",null,11),t.GkF(21,12),t.YNc(22,Ia,15,0,"ng-template",null,13,t.W1O),t.qZA(),t.YNc(24,Za,2,4,"nz-drawer",14)),2&o){const i=t.MAs(4),a=t.MAs(6),r=t.MAs(8),d=t.MAs(10),C=t.MAs(12),z=t.MAs(14),l=t.MAs(16),y=t.MAs(18),w=t.MAs(23);t.Q6J("nzCover",i)("nzHoverable",!0)("nzActions",t.l5B(12,Ua,z,l,C,y))("nzBodyStyle",t.DdM(17,Ra)),t.xp6(1),t.Q6J("nzActive",!0)("nzLoading",!e.data)("nzAvatar",t.DdM(18,La)),t.xp6(1),t.Q6J("nzAvatar",a)("nzTitle",r)("nzDescription",d),t.xp6(19),t.Q6J("ngTemplateOutlet",w),t.xp6(3),t.Q6J("ngIf",e.useDrawer)}},dependencies:[c.O5,c.tP,c.RF,c.n9,p.JJ,p.On,v.bd,v.l7,we,Yt.Dz,E.Ls,it.SY,Wt,bt.i,Ct.wO,Ct.r9,j.cm,j.RR,Lt.w,at.Vz,at.SQ,st.rH,Tt,xt,ma.i,c.Ov,Dt],styles:['.cover-wrapper[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{color:#fff;text-shadow:1px 1px 2px black;margin:0;padding:0 .5rem;background:rgba(0,0,0,.32)}.drawer-content[_ngcontent-%COMP%] .menu[_ngcontent-%COMP%]{box-shadow:none;padding:.5em 0}.drawer-content[_ngcontent-%COMP%] .menu[_ngcontent-%COMP%] *[nz-menu-item][_ngcontent-%COMP%]{margin:0;padding:.5em 2em}.stopped[_nghost-%COMP%]{filter:grayscale(100%)}a[_ngcontent-%COMP%]{color:inherit}a[_ngcontent-%COMP%]:hover{color:#1890ff}a[_ngcontent-%COMP%]:focus-visible{outline:-webkit-focus-ring-color auto 1px}.cover-wrapper[_ngcontent-%COMP%]{--cover-ratio: 264 / 470;--cover-height: calc(var(--card-width) * var(--cover-ratio));position:relative;width:var(--card-width);height:var(--cover-height)}.cover-wrapper[_ngcontent-%COMP%] .cover[_ngcontent-%COMP%]{width:100%;max-height:var(--cover-height);object-fit:cover}.cover-wrapper[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{position:absolute;top:.5rem;left:.5rem;font-size:1.2rem;width:-moz-fit-content;width:fit-content;max-width:calc(100% - 1em);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}nz-card-meta[_ngcontent-%COMP%]{margin:0}.meta-title[_ngcontent-%COMP%]{margin:0;display:flex;column-gap:1em}.meta-title[_ngcontent-%COMP%] .user-name[_ngcontent-%COMP%]{color:#fb7299;font-size:1rem;font-weight:700;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.meta-title[_ngcontent-%COMP%] .live-status[_ngcontent-%COMP%] nz-tag[_ngcontent-%COMP%]{margin:0;position:relative;bottom:1px}.meta-desc[_ngcontent-%COMP%]{margin:0;display:flex}.meta-desc[_ngcontent-%COMP%] .room-id-wrapper[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap}.meta-desc[_ngcontent-%COMP%] .room-id-wrapper[_ngcontent-%COMP%] .short-room-id[_ngcontent-%COMP%]:after{display:inline-block;width:1em;content:","}@media screen and (max-width: 320px){.meta-desc[_ngcontent-%COMP%] .room-id-wrapper[_ngcontent-%COMP%] .room-id-label[_ngcontent-%COMP%]{display:none}}.meta-desc[_ngcontent-%COMP%] .area-name[_ngcontent-%COMP%]{margin-left:auto}.meta-desc[_ngcontent-%COMP%] .area-name[_ngcontent-%COMP%] nz-tag[_ngcontent-%COMP%]{margin:0;border-radius:30px;padding:0 1em}.action-icon[_ngcontent-%COMP%]{font-size:16px}.not-allowed[_ngcontent-%COMP%]{cursor:not-allowed}'],changeDetection:0});class kt{constructor(){this.dataList=[]}trackByRoomId(o,e){return e.room_info.room_id}}kt.\u0275fac=function(o){return new(o||kt)},kt.\u0275cmp=t.Xpm({type:kt,selectors:[["app-task-list"]],inputs:{dataList:"dataList"},decls:3,vars:2,consts:[["class","empty-container",4,"ngIf","ngIfElse"],["elseBlock",""],[1,"empty-container"],[1,"tasks-container"],["tasks",""],[3,"data",4,"ngFor","ngForOf","ngForTrackBy"],[3,"data"]],template:function(o,e){if(1&o&&(t.YNc(0,Ja,2,0,"div",0),t.YNc(1,Ka,3,2,"ng-template",null,1,t.W1O)),2&o){const i=t.MAs(2);t.Q6J("ngIf",0===e.dataList.length)("ngIfElse",i)}},dependencies:[c.sg,c.O5,Vt.p9,Mt],styles:["[_nghost-%COMP%]{height:100%;width:100%;position:relative;display:block;margin:0;padding:1rem;background:#f1f1f1;overflow:auto}[_nghost-%COMP%]{--card-width: 400px;--grid-gutter: 12px;padding:var(--grid-gutter)}@media screen and (max-width: 400px){[_nghost-%COMP%]{--card-width: 100%;padding:var(--grid-gutter) 0}}.tasks-container[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,var(--card-width));gap:var(--grid-gutter);justify-content:center;max-width:100%;margin:0 auto}.empty-container[_ngcontent-%COMP%]{height:100%;width:100%;display:flex;align-items:center;justify-content:center}"],changeDetection:0});var Ga=s(4351);function Wa(n,o){1&n&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165\u76f4\u64ad\u95f4\u53f7\u6216 URL "),t.BQk())}function Ya(n,o){1&n&&(t.ynx(0),t._uU(1," \u8f93\u5165\u6709\u9519\u8bef "),t.BQk())}function qa(n,o){if(1&n&&(t.YNc(0,Wa,2,0,"ng-container",8),t.YNc(1,Ya,2,0,"ng-container",8)),2&n){const e=o.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}function $a(n,o){if(1&n&&(t.ynx(0),t._UZ(1,"nz-alert",9),t.BQk()),2&n){const e=o.$implicit;t.xp6(1),t.Q6J("nzType",e.type)("nzMessage",e.message)}}function ja(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"form",2)(2,"nz-form-item")(3,"nz-form-control",3),t._UZ(4,"input",4),t.YNc(5,qa,2,2,"ng-template",null,5,t.W1O),t.qZA()()(),t.TgZ(7,"div",6),t.YNc(8,$a,2,2,"ng-container",7),t.qZA(),t.BQk()),2&n){const e=t.MAs(6),i=t.oxw();t.xp6(1),t.Q6J("formGroup",i.formGroup),t.xp6(2),t.Q6J("nzErrorTip",e),t.xp6(1),t.Q6J("pattern",i.pattern),t.xp6(4),t.Q6J("ngForOf",i.resultMessages)}}const Va=/^https?:\/\/live\.bilibili\.com\/(\d+).*$/,Ha=/^\s*(?:\d+(?:[ ]+\d+)*|https?:\/\/live\.bilibili\.com\/\d+.*)\s*$/;class Ot{constructor(o,e,i){this.changeDetector=e,this.taskManager=i,this.visible=!1,this.visibleChange=new t.vpe,this.pending=!1,this.resultMessages=[],this.pattern=Ha,this.formGroup=o.group({input:["",[p.kI.required,p.kI.pattern(this.pattern)]]})}get inputControl(){return this.formGroup.get("input")}open(){this.setVisible(!0)}close(){this.resultMessages=[],this.reset(),this.setVisible(!1)}setVisible(o){this.visible=o,this.visibleChange.emit(o),this.changeDetector.markForCheck()}reset(){this.pending=!1,this.formGroup.reset(),this.changeDetector.markForCheck()}handleCancel(){this.close()}handleConfirm(){this.pending=!0;const o=this.inputControl.value.trim();let e;e=o.startsWith("http")?[parseInt(Va.exec(o)[1])]:new Set(o.split(/\s+/).map(i=>parseInt(i))),(0,Qt.D)(e).pipe((0,Ga.b)(i=>this.taskManager.addTask(i)),(0,O.b)(i=>{this.resultMessages.push(i),this.changeDetector.markForCheck()})).subscribe({complete:()=>{this.resultMessages.every(i=>"success"===i.type)?this.close():this.reset()}})}}Ot.\u0275fac=function(o){return new(o||Ot)(t.Y36(p.qu),t.Y36(t.sBO),t.Y36(Q))},Ot.\u0275cmp=t.Xpm({type:Ot,selectors:[["app-add-task-dialog"]],inputs:{visible:"visible"},outputs:{visibleChange:"visibleChange"},decls:2,vars:6,consts:[["nzTitle","\u6dfb\u52a0\u4efb\u52a1","nzCentered","","nzOkText","\u6dfb\u52a0",3,"nzVisible","nzOkLoading","nzOkDisabled","nzCancelDisabled","nzClosable","nzMaskClosable","nzOnOk","nzOnCancel"],[4,"nzModalContent"],["nz-form","",3,"formGroup"],["nzHasFeedback","",3,"nzErrorTip"],["nz-input","","required","","placeholder","\u76f4\u64ad\u95f4 URL \u6216\u623f\u95f4\u53f7\uff08\u652f\u6301\u591a\u4e2a\u623f\u95f4\u53f7\u7528\u7a7a\u683c\u9694\u5f00\uff09","formControlName","input",3,"pattern"],["errorTip",""],[1,"result-messages-container"],[4,"ngFor","ngForOf"],[4,"ngIf"],["nzShowIcon","",3,"nzType","nzMessage"]],template:function(o,e){1&o&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzOnOk",function(){return e.handleConfirm()})("nzOnCancel",function(){return e.handleCancel()}),t.YNc(1,ja,9,4,"ng-container",1),t.qZA()),2&o&&t.Q6J("nzVisible",e.visible)("nzOkLoading",e.pending)("nzOkDisabled",e.formGroup.invalid)("nzCancelDisabled",e.pending)("nzClosable",!e.pending)("nzMaskClosable",!e.pending)},dependencies:[c.sg,c.O5,p._Y,p.Fj,p.JJ,p.JL,p.Q7,p.c5,p.sg,p.u,k.t3,k.SK,K.du,K.Hf,R.Lr,R.Nx,R.Fd,V.Zp,pn],styles:[".result-messages-container[_ngcontent-%COMP%]{width:100%;max-height:200px;overflow-y:auto}"],changeDetection:0});class vt{transform(o,e=""){return console.debug("filter tasks by '%s'",e),[...this.filterByTerm(o,e)]}filterByTerm(o,e){return function*Xa(n,o){for(const e of n)o(e)&&(yield e)}(o,i=>""===(e=e.trim())||i.user_info.name.includes(e)||i.room_info.title.toString().includes(e)||i.room_info.area_name.toString().includes(e)||i.room_info.room_id.toString().includes(e)||i.room_info.short_room_id.toString().includes(e))}}function tr(n,o){if(1&n&&t._UZ(0,"nz-spin",6),2&n){const e=t.oxw();t.Q6J("nzSize","large")("nzSpinning",e.loading)}}function er(n,o){if(1&n&&(t._UZ(0,"app-task-list",7),t.ALo(1,"filterTasks")),2&n){const e=t.oxw();t.Q6J("dataList",t.xi3(1,1,e.dataList,e.filterTerm))}}vt.\u0275fac=function(o){return new(o||vt)},vt.\u0275pipe=t.Yjl({name:"filterTasks",type:vt,pure:!0});const Te="app-tasks-selection",xe="app-tasks-reverse";class Et{constructor(o,e,i,a){this.changeDetector=o,this.notification=e,this.storage=i,this.taskService=a,this.loading=!0,this.dataList=[],this.filterTerm="",this.selection=this.retrieveSelection(),this.reverse=this.retrieveReverse()}ngOnInit(){this.syncTaskData()}ngOnDestroy(){this.desyncTaskData()}onSelectionChanged(o){this.selection=o,this.storeSelection(o),this.desyncTaskData(),this.syncTaskData()}onReverseChanged(o){this.reverse=o,this.storeReverse(o),o&&(this.dataList=[...this.dataList.reverse()],this.changeDetector.markForCheck())}retrieveSelection(){const o=this.storage.getData(Te);return null!==o?o:m.jf.ALL}retrieveReverse(){return"true"===this.storage.getData(xe)}storeSelection(o){this.storage.setData(Te,o)}storeReverse(o){this.storage.setData(xe,o.toString())}syncTaskData(){this.dataSubscription=(0,b.of)((0,b.of)(0),(0,pe.F)(1e3)).pipe((0,de.u)(),(0,rt.w)(()=>this.taskService.getAllTaskData(this.selection)),(0,lt.K)(o=>{throw this.notification.error("\u83b7\u53d6\u4efb\u52a1\u6570\u636e\u51fa\u9519",o.message),o}),(0,Zt.X)(10,3e3)).subscribe(o=>{this.loading=!1,this.dataList=this.reverse?o.reverse():o,this.changeDetector.markForCheck()},o=>{this.notification.error("\u83b7\u53d6\u4efb\u52a1\u6570\u636e\u51fa\u9519","\u7f51\u7edc\u8fde\u63a5\u5f02\u5e38, \u8bf7\u5f85\u7f51\u7edc\u6b63\u5e38\u540e\u5237\u65b0\u3002",{nzDuration:0})})}desyncTaskData(){this.dataSubscription?.unsubscribe()}}Et.\u0275fac=function(o){return new(o||Et)(t.Y36(t.sBO),t.Y36(me.zb),t.Y36(Ce.V),t.Y36(Ut.M))},Et.\u0275cmp=t.Xpm({type:Et,selectors:[["app-tasks"]],decls:8,vars:4,consts:[[3,"selection","reverse","selectionChange","reverseChange","filterChange"],["class","spinner",3,"nzSize","nzSpinning",4,"ngIf","ngIfElse"],["elseBlock",""],["nz-button","","nzType","primary","nzSize","large","nzShape","circle","nz-tooltip","","nzTooltipTitle","\u6dfb\u52a0\u4efb\u52a1",1,"add-task-button",3,"click"],["nz-icon","","nzType","plus"],["addTaskDialog",""],[1,"spinner",3,"nzSize","nzSpinning"],[3,"dataList"]],template:function(o,e){if(1&o){const i=t.EpF();t.TgZ(0,"app-toolbar",0),t.NdJ("selectionChange",function(r){return e.onSelectionChanged(r)})("reverseChange",function(r){return e.onReverseChanged(r)})("filterChange",function(r){return e.filterTerm=r}),t.qZA(),t.YNc(1,tr,1,2,"nz-spin",1),t.YNc(2,er,2,4,"ng-template",null,2,t.W1O),t.TgZ(4,"button",3),t.NdJ("click",function(){t.CHM(i);const r=t.MAs(7);return t.KtG(r.open())}),t._UZ(5,"i",4),t.qZA(),t._UZ(6,"app-add-task-dialog",null,5)}if(2&o){const i=t.MAs(3);t.Q6J("selection",e.selection)("reverse",e.reverse),t.xp6(1),t.Q6J("ngIf",e.loading)("ngIfElse",i)}},dependencies:[c.O5,E.Ls,it.SY,At.ix,Lt.w,Di.dQ,Ht.W,zt,kt,Ot,vt],styles:["[_nghost-%COMP%]{height:100%;width:100%;position:relative;display:block;margin:0;padding:1rem;background:#f1f1f1;overflow:auto}.spinner[_ngcontent-%COMP%]{height:100%;width:100%}[_nghost-%COMP%]{display:flex;flex-direction:column;padding:0;overflow:hidden}.add-task-button[_ngcontent-%COMP%]{position:fixed;bottom:5vh;right:5vw}"],changeDetection:0});const nr=[{path:":id/detail",component:ht},{path:"",component:Et}];class nt{}nt.\u0275fac=function(o){return new(o||nt)},nt.\u0275mod=t.oAB({type:nt}),nt.\u0275inj=t.cJS({imports:[st.Bz.forChild(nr),st.Bz]});class ot{}ot.\u0275fac=function(o){return new(o||ot)},ot.\u0275mod=t.oAB({type:ot}),ot.\u0275inj=t.cJS({imports:[c.ez,p.u5,p.UX,h.xu,g,k.Jb,v.vh,qt,Yt.Rt,E.PV,qt,it.cg,Me,bt.m,j.b1,At.sL,K.Qp,R.U5,V.o7,$t.Wr,Ye,Pt.aF,jt.S,Vt.Xo,Ht.j,gn,at.BL,wt.LV,Rn,L.HQ,Xn,Io,Jo.forRoot({echarts:()=>s.e(386).then(s.bind(s,7386))}),nt,Qo.m]})},7445:(x,D,s)=>{s.d(D,{F:()=>h});var c=s(4986),p=s(5963);function h(t=0,f=c.z){return t<0&&(t=0),(0,p.H)(t,t,f)}},7188:(x,D,s)=>{s.d(D,{$:()=>u});var c=s(9751),p=s(8421);const{isArray:h}=Array;var f=s(515),_=s(5403),q=s(3269);function u(...g){const k=(0,q.jO)(g),v=function t(g){return 1===g.length&&h(g[0])?g[0]:g}(g);return v.length?new c.y(E=>{let T=v.map(()=>[]),F=v.map(()=>!1);E.add(()=>{T=F=null});for(let A=0;!E.closed&&A<v.length;A++)(0,p.Xf)(v[A]).subscribe((0,_.x)(E,$=>{if(T[A].push($),T.every(M=>M.length)){const M=T.map(P=>P.shift());E.next(k?k(...M):M),T.some((P,Ft)=>!P.length&&F[Ft])&&E.complete()}},()=>{F[A]=!0,!T[A].length&&E.complete()}));return()=>{T=F=null}}):f.E}}}]); \ No newline at end of file diff --git a/src/blrec/data/webapp/287.63ace7ac80c3d9f2.js b/src/blrec/data/webapp/287.63ace7ac80c3d9f2.js new file mode 100644 index 0000000..7051ccd --- /dev/null +++ b/src/blrec/data/webapp/287.63ace7ac80c3d9f2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkblrec=self.webpackChunkblrec||[]).push([[287],{3692:(x,D,r)=>{r.d(D,{f:()=>h});var c=r(2134),p=r(4650);class h{transform(f,_){if("string"==typeof f)f=parseFloat(f);else if("number"!=typeof f||isNaN(f))return"N/A";return(_=Object.assign({bitrate:!1,precision:3,spacer:" "},_)).bitrate?(0,c.AX)(f,_.spacer,_.precision):(0,c.N4)(f,_.spacer,_.precision)}}h.\u0275fac=function(f){return new(f||h)},h.\u0275pipe=p.Yjl({name:"datarate",type:h,pure:!0})},3520:(x,D,r)=>{r.d(D,{U:()=>h});const c={2e4:"4K",1e4:"\u539f\u753b",401:"\u84dd\u5149(\u675c\u6bd4)",400:"\u84dd\u5149",250:"\u8d85\u6e05",150:"\u9ad8\u6e05",80:"\u6d41\u7545"};var p=r(4650);class h{transform(f){return c[f]}}h.\u0275fac=function(f){return new(f||h)},h.\u0275pipe=p.Yjl({name:"quality",type:h,pure:!0})},5141:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{i:()=>InfoPanelComponent});var _angular_core__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(4650),rxjs__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(9646),rxjs__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(7445),rxjs__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(7188),rxjs_operators__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(7886),rxjs_operators__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(3900),rxjs_operators__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__(262),src_app_shared_rx_operators__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__(4007),_shared_task_model__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(2948),ng_zorro_antd_notification__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__(387),_shared_services_task_service__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(844),_angular_common__WEBPACK_IMPORTED_MODULE_14__=__webpack_require__(6895),_wave_graph_wave_graph_component__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1755),_shared_pipes_datarate_pipe__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(3692),_shared_pipes_quality_pipe__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(3520);function InfoPanelComponent_ul_3_ng_container_36_Template(x,D){1&x&&(_angular_core__WEBPACK_IMPORTED_MODULE_4__.ynx(0),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(1,", bluray"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.BQk())}function InfoPanelComponent_ul_3_li_38_Template(x,D){if(1&x&&(_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(0,"li",4)(1,"span",5),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(2,"\u6d41\u7f16\u7801\u5668"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(3,"span",6),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(4),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA()()),2&x){const r=_angular_core__WEBPACK_IMPORTED_MODULE_4__.oxw(2);_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(4),_angular_core__WEBPACK_IMPORTED_MODULE_4__.Oqu(null==r.profile.streams[0].tags?null:r.profile.streams[0].tags.encoder)}}const _c0=function(){return{bitrate:!0}};function InfoPanelComponent_ul_3_Template(x,D){if(1&x&&(_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(0,"ul",3)(1,"li",4)(2,"span",5),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(3,"\u89c6\u9891\u4fe1\u606f"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(4,"span",6)(5,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(6),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(7,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(8),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(9,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(10),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(11,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(12),_angular_core__WEBPACK_IMPORTED_MODULE_4__.ALo(13,"datarate"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA()()(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(14,"li",4)(15,"span",5),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(16,"\u97f3\u9891\u4fe1\u606f"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(17,"span",6)(18,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(19),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(20,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(21),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(22,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(23),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(24,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(25),_angular_core__WEBPACK_IMPORTED_MODULE_4__.ALo(26,"datarate"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA()()(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(27,"li",4)(28,"span",5),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(29,"\u683c\u5f0f\u753b\u8d28"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(30,"span",6)(31,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(32),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(33,"span"),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(34),_angular_core__WEBPACK_IMPORTED_MODULE_4__.ALo(35,"quality"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.YNc(36,InfoPanelComponent_ul_3_ng_container_36_Template,2,0,"ng-container",7),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(37,") "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA()()(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.YNc(38,InfoPanelComponent_ul_3_li_38_Template,5,1,"li",8),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(39,"li",4)(40,"span",5),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(41,"\u6d41\u4e3b\u673a\u540d"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(42,"span",6),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(43),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA()(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(44,"li",4)(45,"span",5),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(46,"\u4e0b\u8f7d\u901f\u5ea6"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__._UZ(47,"app-wave-graph",9),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(48,"span",6),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(49),_angular_core__WEBPACK_IMPORTED_MODULE_4__.ALo(50,"datarate"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA()(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(51,"li",4)(52,"span",5),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(53,"\u5f55\u5236\u901f\u5ea6"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__._UZ(54,"app-wave-graph",9),_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(55,"span",6),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(56),_angular_core__WEBPACK_IMPORTED_MODULE_4__.ALo(57,"datarate"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA()()()),2&x){const r=_angular_core__WEBPACK_IMPORTED_MODULE_4__.oxw();let c;_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(6),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",r.profile.streams[0].codec_name," "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.AsE(" ",r.profile.streams[0].width,"x",r.profile.streams[0].height," "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",r.fps," fps"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",_angular_core__WEBPACK_IMPORTED_MODULE_4__.xi3(13,19,1e3*r.metadata.videodatarate,_angular_core__WEBPACK_IMPORTED_MODULE_4__.DdM(32,_c0))," "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(7),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",r.profile.streams[1].codec_name," "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",r.profile.streams[1].sample_rate," HZ"),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",r.profile.streams[1].channel_layout," "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",_angular_core__WEBPACK_IMPORTED_MODULE_4__.xi3(26,22,1e3*r.metadata.audiodatarate,_angular_core__WEBPACK_IMPORTED_MODULE_4__.DdM(33,_c0))," "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(7),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",r.data.task_status.real_stream_format?r.data.task_status.real_stream_format:"N/A"," "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.AsE(" ",r.data.task_status.real_quality_number?_angular_core__WEBPACK_IMPORTED_MODULE_4__.lcZ(35,25,r.data.task_status.real_quality_number):"N/A"," (",null!==(c=r.data.task_status.real_quality_number)&&void 0!==c?c:"N/A",""),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.Q6J("ngIf",r.isBlurayStreamQuality()),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.Q6J("ngIf",null==r.profile.streams[0]||null==r.profile.streams[0].tags?null:r.profile.streams[0].tags.encoder),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(5),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",r.data.task_status.stream_host," "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(4),_angular_core__WEBPACK_IMPORTED_MODULE_4__.Q6J("value",r.data.task_status.dl_rate),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",_angular_core__WEBPACK_IMPORTED_MODULE_4__.xi3(50,27,8*r.data.task_status.dl_rate,_angular_core__WEBPACK_IMPORTED_MODULE_4__.DdM(34,_c0))," "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(5),_angular_core__WEBPACK_IMPORTED_MODULE_4__.Q6J("value",r.data.task_status.rec_rate),_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.hij(" ",_angular_core__WEBPACK_IMPORTED_MODULE_4__.lcZ(57,30,r.data.task_status.rec_rate)," ")}}class InfoPanelComponent{constructor(x,D,r){this.changeDetector=x,this.notification=D,this.taskService=r,this.metadata=null,this.close=new _angular_core__WEBPACK_IMPORTED_MODULE_4__.vpe,this.RunningStatus=_shared_task_model__WEBPACK_IMPORTED_MODULE_5__.cG}get fps(){const avgFrameRate=this.profile?.streams[0]?.avg_frame_rate;return avgFrameRate?eval(avgFrameRate).toFixed():"N/A"}ngOnInit(){this.syncData()}ngOnDestroy(){this.desyncData()}isBlurayStreamQuality(){return/_bluray/.test(this.data.task_status.stream_url)}closePanel(x){x.preventDefault(),x.stopPropagation(),this.close.emit()}syncData(){this.dataSubscription=(0,rxjs__WEBPACK_IMPORTED_MODULE_6__.of)((0,rxjs__WEBPACK_IMPORTED_MODULE_6__.of)(0),(0,rxjs__WEBPACK_IMPORTED_MODULE_7__.F)(1e3)).pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_8__.u)(),(0,rxjs_operators__WEBPACK_IMPORTED_MODULE_9__.w)(()=>(0,rxjs__WEBPACK_IMPORTED_MODULE_10__.$)(this.taskService.getStreamProfile(this.data.room_info.room_id),this.taskService.getMetadata(this.data.room_info.room_id))),(0,rxjs_operators__WEBPACK_IMPORTED_MODULE_11__.K)(x=>{throw this.notification.error("\u83b7\u53d6\u6570\u636e\u51fa\u9519",x.message),x}),(0,src_app_shared_rx_operators__WEBPACK_IMPORTED_MODULE_12__.X)(3,1e3)).subscribe(([x,D])=>{this.profile=x,this.metadata=D,this.changeDetector.markForCheck()},x=>{this.notification.error("\u83b7\u53d6\u6570\u636e\u51fa\u9519","\u7f51\u7edc\u8fde\u63a5\u5f02\u5e38, \u8bf7\u5f85\u7f51\u7edc\u6b63\u5e38\u540e\u5237\u65b0\u3002",{nzDuration:0})})}desyncData(){this.dataSubscription?.unsubscribe()}}InfoPanelComponent.\u0275fac=function x(D){return new(D||InfoPanelComponent)(_angular_core__WEBPACK_IMPORTED_MODULE_4__.Y36(_angular_core__WEBPACK_IMPORTED_MODULE_4__.sBO),_angular_core__WEBPACK_IMPORTED_MODULE_4__.Y36(ng_zorro_antd_notification__WEBPACK_IMPORTED_MODULE_13__.zb),_angular_core__WEBPACK_IMPORTED_MODULE_4__.Y36(_shared_services_task_service__WEBPACK_IMPORTED_MODULE_0__.M))},InfoPanelComponent.\u0275cmp=_angular_core__WEBPACK_IMPORTED_MODULE_4__.Xpm({type:InfoPanelComponent,selectors:[["app-info-panel"]],inputs:{data:"data",profile:"profile",metadata:"metadata"},outputs:{close:"close"},decls:4,vars:1,consts:[[1,"info-panel"],["title","\u5173\u95ed",1,"close-panel",3,"click"],["class","info-list",4,"ngIf"],[1,"info-list"],[1,"info-item"],[1,"label"],[1,"value"],[4,"ngIf"],["class","info-item",4,"ngIf"],[3,"value"]],template:function x(D,r){1&D&&(_angular_core__WEBPACK_IMPORTED_MODULE_4__.TgZ(0,"div",0)(1,"button",1),_angular_core__WEBPACK_IMPORTED_MODULE_4__.NdJ("click",function(p){return r.closePanel(p)}),_angular_core__WEBPACK_IMPORTED_MODULE_4__._uU(2," [x] "),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_4__.YNc(3,InfoPanelComponent_ul_3_Template,58,35,"ul",2),_angular_core__WEBPACK_IMPORTED_MODULE_4__.qZA()),2&D&&(_angular_core__WEBPACK_IMPORTED_MODULE_4__.xp6(3),_angular_core__WEBPACK_IMPORTED_MODULE_4__.Q6J("ngIf",r.data.task_status.running_status===r.RunningStatus.RECORDING&&r.profile&&r.profile.streams&&r.profile.format&&r.metadata))},dependencies:[_angular_common__WEBPACK_IMPORTED_MODULE_14__.O5,_wave_graph_wave_graph_component__WEBPACK_IMPORTED_MODULE_1__.w,_shared_pipes_datarate_pipe__WEBPACK_IMPORTED_MODULE_2__.f,_shared_pipes_quality_pipe__WEBPACK_IMPORTED_MODULE_3__.U],styles:['@charset "UTF-8";.info-panel[_ngcontent-%COMP%]{color:#fff;text-shadow:1px 1px 2px black;margin:0;padding:0 .5rem;background:rgba(0,0,0,.32)}.info-panel[_ngcontent-%COMP%]{position:absolute;inset:2.55rem 0rem 2rem;width:100%;font-size:1rem;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;overflow:auto}.info-panel[_ngcontent-%COMP%]::-webkit-scrollbar{background-color:transparent;width:4px;height:4px}.info-panel[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:transparent}.info-panel[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#eee;border-radius:2px}.info-panel[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background:#fff}.info-panel[_ngcontent-%COMP%] .close-panel[_ngcontent-%COMP%]{position:absolute;top:0rem;right:0rem;width:2rem;height:2rem;padding:0;color:#fff;background:transparent;border:none;font-size:1rem;display:flex;align-items:center;justify-content:center;cursor:pointer}.info-panel[_ngcontent-%COMP%] .info-list[_ngcontent-%COMP%]{margin:0;padding:0;list-style:none;width:100%;height:100%}.info-panel[_ngcontent-%COMP%] .info-list[_ngcontent-%COMP%] .info-item[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{display:inline-block;margin:0;width:5rem;text-align:right}.info-panel[_ngcontent-%COMP%] .info-list[_ngcontent-%COMP%] .info-item[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]:after{content:"\\ff1a"}.info-panel[_ngcontent-%COMP%] .info-list[_ngcontent-%COMP%] .info-item[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{display:inline-block;margin:0;text-align:left}.info-panel[_ngcontent-%COMP%] .info-list[_ngcontent-%COMP%] .info-item[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:not(:first-child):before{content:", "}app-wave-graph[_ngcontent-%COMP%]{margin-right:1rem}'],changeDetection:0})},1755:(x,D,r)=>{r.d(D,{w:()=>h});var c=r(7445),p=r(4650);class h{constructor(f){this.changeDetector=f,this.value=0,this.width=200,this.height=16,this.stroke="white",this.data=[],this.points=[];for(let _=0;_<=this.width;_+=2)this.data.push(0),this.points.push({x:_,y:this.height})}get polylinePoints(){return this.points.map(f=>`${f.x},${f.y}`).join(" ")}ngOnInit(){this.subscription=(0,c.F)(1e3).subscribe(()=>{this.data.push(this.value||0),this.data.shift();let f=Math.max(...this.data);this.points=this.data.map((_,q)=>({x:Math.min(2*q,this.width),y:(1-_/(f||1))*this.height})),this.changeDetector.markForCheck()})}ngOnDestroy(){this.subscription?.unsubscribe()}}h.\u0275fac=function(f){return new(f||h)(p.Y36(p.sBO))},h.\u0275cmp=p.Xpm({type:h,selectors:[["app-wave-graph"]],inputs:{value:"value",width:"width",height:"height",stroke:"stroke"},decls:2,vars:4,consts:[["fill","none"]],template:function(f,_){1&f&&(p.O4$(),p.TgZ(0,"svg"),p._UZ(1,"polyline",0),p.qZA()),2&f&&(p.uIk("width",_.width)("height",_.height),p.xp6(1),p.uIk("stroke",_.stroke)("points",_.polylinePoints))},styles:["[_nghost-%COMP%]{position:relative;top:2px}"],changeDetection:0})},844:(x,D,r)=>{r.d(D,{M:()=>_});var c=r(4004),p=r(2948),h=r(4650),t=r(529),f=r(7930);class _{constructor(u,g){this.http=u,this.url=g}getAllTaskData(u=p.jf.ALL){const g=this.url.makeApiUrl("/api/v1/tasks/data");return this.http.get(g,{params:{select:u}})}getTaskData(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/data`);return this.http.get(g)}getVideoFileDetails(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/videos`);return this.http.get(g)}getDanmakuFileDetails(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/danmakus`);return this.http.get(g)}getTaskParam(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/param`);return this.http.get(g)}getMetadata(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/metadata`);return this.http.get(g)}getStreamProfile(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/profile`);return this.http.get(g)}updateAllTaskInfos(){const u=this.url.makeApiUrl("/api/v1/tasks/info");return this.http.post(u,null)}updateTaskInfo(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/info`);return this.http.post(g,null)}addTask(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}`);return this.http.post(g,null)}removeTask(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}`);return this.http.delete(g)}removeAllTasks(){const u=this.url.makeApiUrl("/api/v1/tasks");return this.http.delete(u)}startTask(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/start`);return this.http.post(g,null)}startAllTasks(){const u=this.url.makeApiUrl("/api/v1/tasks/start");return this.http.post(u,null)}stopTask(u,g=!1,O=!1){const E=this.url.makeApiUrl(`/api/v1/tasks/${u}/stop`);return this.http.post(E,{force:g,background:O})}stopAllTasks(u=!1,g=!1){const O=this.url.makeApiUrl("/api/v1/tasks/stop");return this.http.post(O,{force:u,background:g})}enableTaskMonitor(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/monitor/enable`);return this.http.post(g,null)}enableAllMonitors(){const u=this.url.makeApiUrl("/api/v1/tasks/monitor/enable");return this.http.post(u,null)}disableTaskMonitor(u,g=!1){const O=this.url.makeApiUrl(`/api/v1/tasks/${u}/monitor/disable`);return this.http.post(O,{background:g})}disableAllMonitors(u=!1){const g=this.url.makeApiUrl("/api/v1/tasks/monitor/disable");return this.http.post(g,{background:u})}enableTaskRecorder(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/recorder/enable`);return this.http.post(g,null)}enableAllRecorders(){const u=this.url.makeApiUrl("/api/v1/tasks/recorder/enable");return this.http.post(u,null)}disableTaskRecorder(u,g=!1,O=!1){const E=this.url.makeApiUrl(`/api/v1/tasks/${u}/recorder/disable`);return this.http.post(E,{force:g,background:O})}disableAllRecorders(u=!1,g=!1){const O=this.url.makeApiUrl("/api/v1/tasks/recorder/disable");return this.http.post(O,{force:u,background:g})}canCutStream(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/cut`);return this.http.get(g).pipe((0,c.U)(O=>O.data.result))}cutStream(u){const g=this.url.makeApiUrl(`/api/v1/tasks/${u}/cut`);return this.http.post(g,null)}}_.\u0275fac=function(u){return new(u||_)(h.LFG(t.eN),h.LFG(f.i))},_.\u0275prov=h.Yz7({token:_,factory:_.\u0275fac,providedIn:"root"})},2948:(x,D,r)=>{r.d(D,{cG:()=>p,cS:()=>t,ii:()=>h,jf:()=>c});var c=(()=>{return(_=c||(c={})).ALL="all",_.PREPARING="preparing",_.LIVING="living",_.ROUNDING="rounding",_.MONITOR_ENABLED="monitor_enabled",_.MONITOR_DISABLED="monitor_disabled",_.RECORDER_ENABLED="recorder_enabled",_.RECORDER_DISABLED="recorder_disabled",_.STOPPED="stopped",_.WAITTING="waitting",_.RECORDING="recording",_.REMUXING="remuxing",_.INJECTING="injecting",c;var _})(),p=(()=>{return(_=p||(p={})).STOPPED="stopped",_.WAITING="waiting",_.RECORDING="recording",_.REMUXING="remuxing",_.INJECTING="injecting",p;var _})(),h=(()=>{return(_=h||(h={})).WAITING="waiting",_.REMUXING="remuxing",_.INJECTING="injecting",h;var _})(),t=(()=>{return(_=t||(t={})).RECORDING="recording",_.REMUXING="remuxing",_.INJECTING="injecting",_.COMPLETED="completed",_.MISSING="missing",_.UNKNOWN="unknown",t;var _})()},2287:(x,D,r)=>{r.r(D),r.d(D,{TasksModule:()=>ot});var c=r(6895),p=r(433),h=r(2289),t=r(4650);class f{constructor(o,e){this._document=e;const i=this._textarea=this._document.createElement("textarea"),a=i.style;a.position="fixed",a.top=a.opacity="0",a.left="-999em",i.setAttribute("aria-hidden","true"),i.value=o,i.readOnly=!0,this._document.body.appendChild(i)}copy(){const o=this._textarea;let e=!1;try{if(o){const i=this._document.activeElement;o.select(),o.setSelectionRange(0,o.value.length),e=this._document.execCommand("copy"),i&&i.focus()}}catch{}return e}destroy(){const o=this._textarea;o&&(o.remove(),this._textarea=void 0)}}let _=(()=>{class n{constructor(e){this._document=e}copy(e){const i=this.beginCopy(e),a=i.copy();return i.destroy(),a}beginCopy(e){return new f(e,this._document)}}return n.\u0275fac=function(e){return new(e||n)(t.LFG(c.K0))},n.\u0275prov=t.Yz7({token:n,factory:n.\u0275fac,providedIn:"root"}),n})(),g=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({}),n})();var O=r(3679),E=r(1971),P=r(1102),T=r(655),F=r(7579),y=r(2722),$=r(3414),k=r(3187),S=r(445);function bt(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"span",1),t.NdJ("click",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.closeTag(a))}),t.qZA()}}const De=["*"];let Wt=(()=>{class n{constructor(e,i,a,s){this.cdr=e,this.renderer=i,this.elementRef=a,this.directionality=s,this.isPresetColor=!1,this.nzMode="default",this.nzChecked=!1,this.nzOnClose=new t.vpe,this.nzCheckedChange=new t.vpe,this.dir="ltr",this.destroy$=new F.x}updateCheckedStatus(){"checkable"===this.nzMode&&(this.nzChecked=!this.nzChecked,this.nzCheckedChange.emit(this.nzChecked))}closeTag(e){this.nzOnClose.emit(e),e.defaultPrevented||this.renderer.removeChild(this.renderer.parentNode(this.elementRef.nativeElement),this.elementRef.nativeElement)}clearPresetColor(){const e=this.elementRef.nativeElement,i=new RegExp(`(ant-tag-(?:${[...$.uf,...$.Bh].join("|")}))`,"g"),a=e.classList.toString(),s=[];let d=i.exec(a);for(;null!==d;)s.push(d[1]),d=i.exec(a);e.classList.remove(...s)}setPresetColor(){const e=this.elementRef.nativeElement;this.clearPresetColor(),this.isPresetColor=!!this.nzColor&&((0,$.o2)(this.nzColor)||(0,$.M8)(this.nzColor)),this.isPresetColor&&e.classList.add(`ant-tag-${this.nzColor}`)}ngOnInit(){this.directionality.change?.pipe((0,y.R)(this.destroy$)).subscribe(e=>{this.dir=e,this.cdr.detectChanges()}),this.dir=this.directionality.value}ngOnChanges(e){const{nzColor:i}=e;i&&this.setPresetColor()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(t.sBO),t.Y36(t.Qsj),t.Y36(t.SBq),t.Y36(S.Is,8))},n.\u0275cmp=t.Xpm({type:n,selectors:[["nz-tag"]],hostAttrs:[1,"ant-tag"],hostVars:10,hostBindings:function(e,i){1&e&&t.NdJ("click",function(){return i.updateCheckedStatus()}),2&e&&(t.Udp("background-color",i.isPresetColor?"":i.nzColor),t.ekj("ant-tag-has-color",i.nzColor&&!i.isPresetColor)("ant-tag-checkable","checkable"===i.nzMode)("ant-tag-checkable-checked",i.nzChecked)("ant-tag-rtl","rtl"===i.dir))},inputs:{nzMode:"nzMode",nzColor:"nzColor",nzChecked:"nzChecked"},outputs:{nzOnClose:"nzOnClose",nzCheckedChange:"nzCheckedChange"},exportAs:["nzTag"],features:[t.TTD],ngContentSelectors:De,decls:2,vars:1,consts:[["nz-icon","","nzType","close","class","ant-tag-close-icon","tabindex","-1",3,"click",4,"ngIf"],["nz-icon","","nzType","close","tabindex","-1",1,"ant-tag-close-icon",3,"click"]],template:function(e,i){1&e&&(t.F$t(),t.Hsn(0),t.YNc(1,bt,1,0,"span",0)),2&e&&(t.xp6(1),t.Q6J("ngIf","closeable"===i.nzMode))},dependencies:[c.O5,P.Ls],encapsulation:2,changeDetection:0}),(0,T.gn)([(0,k.yF)()],n.prototype,"nzChecked",void 0),n})(),ke=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({imports:[S.vT,c.ez,p.u5,P.PV]}),n})();var Yt=r(4383);const Me=["nzType","avatar"];function Oe(n,o){if(1&n&&(t.TgZ(0,"div",5),t._UZ(1,"nz-skeleton-element",6),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("nzSize",e.avatar.size||"default")("nzShape",e.avatar.shape||"circle")}}function ve(n,o){if(1&n&&t._UZ(0,"h3",7),2&n){const e=t.oxw(2);t.Udp("width",e.toCSSUnit(e.title.width))}}function Ee(n,o){if(1&n&&t._UZ(0,"li"),2&n){const e=o.index,i=t.oxw(3);t.Udp("width",i.toCSSUnit(i.widthList[e]))}}function Ae(n,o){if(1&n&&(t.TgZ(0,"ul",8),t.YNc(1,Ee,1,2,"li",9),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("ngForOf",e.rowsList)}}function Pe(n,o){if(1&n&&(t.ynx(0),t.YNc(1,Oe,2,2,"div",1),t.TgZ(2,"div",2),t.YNc(3,ve,1,2,"h3",3),t.YNc(4,Ae,2,1,"ul",4),t.qZA(),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",!!e.nzAvatar),t.xp6(2),t.Q6J("ngIf",!!e.nzTitle),t.xp6(1),t.Q6J("ngIf",!!e.nzParagraph)}}function ye(n,o){1&n&&(t.ynx(0),t.Hsn(1),t.BQk())}const Se=["*"];let be=(()=>{class n{constructor(){this.nzActive=!1,this.nzBlock=!1}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275dir=t.lG2({type:n,selectors:[["nz-skeleton-element"]],hostAttrs:[1,"ant-skeleton","ant-skeleton-element"],hostVars:4,hostBindings:function(e,i){2&e&&t.ekj("ant-skeleton-active",i.nzActive)("ant-skeleton-block",i.nzBlock)},inputs:{nzActive:"nzActive",nzType:"nzType",nzBlock:"nzBlock"}}),(0,T.gn)([(0,k.yF)()],n.prototype,"nzBlock",void 0),n})(),Fe=(()=>{class n{constructor(){this.nzShape="circle",this.nzSize="default",this.styleMap={}}ngOnChanges(e){if(e.nzSize&&"number"==typeof this.nzSize){const i=`${this.nzSize}px`;this.styleMap={width:i,height:i,"line-height":i}}else this.styleMap={}}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["nz-skeleton-element","nzType","avatar"]],inputs:{nzShape:"nzShape",nzSize:"nzSize"},features:[t.TTD],attrs:Me,decls:1,vars:9,consts:[[1,"ant-skeleton-avatar",3,"ngStyle"]],template:function(e,i){1&e&&t._UZ(0,"span",0),2&e&&(t.ekj("ant-skeleton-avatar-square","square"===i.nzShape)("ant-skeleton-avatar-circle","circle"===i.nzShape)("ant-skeleton-avatar-lg","large"===i.nzSize)("ant-skeleton-avatar-sm","small"===i.nzSize),t.Q6J("ngStyle",i.styleMap))},dependencies:[c.PC],encapsulation:2,changeDetection:0}),n})(),we=(()=>{class n{constructor(e,i,a){this.cdr=e,this.nzActive=!1,this.nzLoading=!0,this.nzRound=!1,this.nzTitle=!0,this.nzAvatar=!1,this.nzParagraph=!0,this.rowsList=[],this.widthList=[],i.addClass(a.nativeElement,"ant-skeleton")}toCSSUnit(e=""){return(0,k.WX)(e)}getTitleProps(){const e=!!this.nzAvatar,i=!!this.nzParagraph;let a="";return!e&&i?a="38%":e&&i&&(a="50%"),{width:a,...this.getProps(this.nzTitle)}}getAvatarProps(){return{shape:this.nzTitle&&!this.nzParagraph?"square":"circle",size:"large",...this.getProps(this.nzAvatar)}}getParagraphProps(){const e=!!this.nzAvatar,i=!!this.nzTitle,a={};return(!e||!i)&&(a.width="61%"),a.rows=!e&&i?3:2,{...a,...this.getProps(this.nzParagraph)}}getProps(e){return e&&"object"==typeof e?e:{}}getWidthList(){const{width:e,rows:i}=this.paragraph;let a=[];return e&&Array.isArray(e)?a=e:e&&!Array.isArray(e)&&(a=[],a[i-1]=e),a}updateProps(){this.title=this.getTitleProps(),this.avatar=this.getAvatarProps(),this.paragraph=this.getParagraphProps(),this.rowsList=[...Array(this.paragraph.rows)],this.widthList=this.getWidthList(),this.cdr.markForCheck()}ngOnInit(){this.updateProps()}ngOnChanges(e){(e.nzTitle||e.nzAvatar||e.nzParagraph)&&this.updateProps()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(t.sBO),t.Y36(t.Qsj),t.Y36(t.SBq))},n.\u0275cmp=t.Xpm({type:n,selectors:[["nz-skeleton"]],hostVars:6,hostBindings:function(e,i){2&e&&t.ekj("ant-skeleton-with-avatar",!!i.nzAvatar)("ant-skeleton-active",i.nzActive)("ant-skeleton-round",!!i.nzRound)},inputs:{nzActive:"nzActive",nzLoading:"nzLoading",nzRound:"nzRound",nzTitle:"nzTitle",nzAvatar:"nzAvatar",nzParagraph:"nzParagraph"},exportAs:["nzSkeleton"],features:[t.TTD],ngContentSelectors:Se,decls:2,vars:2,consts:[[4,"ngIf"],["class","ant-skeleton-header",4,"ngIf"],[1,"ant-skeleton-content"],["class","ant-skeleton-title",3,"width",4,"ngIf"],["class","ant-skeleton-paragraph",4,"ngIf"],[1,"ant-skeleton-header"],["nzType","avatar",3,"nzSize","nzShape"],[1,"ant-skeleton-title"],[1,"ant-skeleton-paragraph"],[3,"width",4,"ngFor","ngForOf"]],template:function(e,i){1&e&&(t.F$t(),t.YNc(0,Pe,5,3,"ng-container",0),t.YNc(1,ye,2,0,"ng-container",0)),2&e&&(t.Q6J("ngIf",i.nzLoading),t.xp6(1),t.Q6J("ngIf",!i.nzLoading))},dependencies:[c.sg,c.O5,be,Fe],encapsulation:2,changeDetection:0}),n})(),qt=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({imports:[S.vT,c.ez]}),n})();var it=r(7570),Ft=r(1243),j=r(9562),At=r(6616),K=r(5156),R=r(6704),V=r(5635),$t=r(8213),Ie=r(4903),Ne=r(8184),U=r(6287),Ze=r(1691),Be=r(2687),Ue=r(1811);let Ye=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({imports:[S.vT,c.ez,At.sL,Ne.U8,Ue.YI,P.PV,U.T,Ze.e4,Ie.g,it.cg,Be.rt]}),n})();var Pt=r(8521),jt=r(2577),Vt=r(4788),Ht=r(5681),qe=r(2539),b=r(2536);function $e(n,o){1&n&&t.GkF(0)}function je(n,o){if(1&n&&(t.ynx(0),t.YNc(1,$e,1,0,"ng-container",9),t.BQk()),2&n){const e=t.oxw(3);t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzIcon)}}function Ve(n,o){if(1&n&&t._UZ(0,"span",10),2&n){const e=t.oxw(3);t.Q6J("nzType",e.nzIconType||e.inferredIconType)("nzTheme",e.iconTheme)}}function He(n,o){if(1&n&&(t.TgZ(0,"div",6),t.YNc(1,je,2,1,"ng-container",7),t.YNc(2,Ve,1,2,"ng-template",null,8,t.W1O),t.qZA()),2&n){const e=t.MAs(3),i=t.oxw(2);t.xp6(1),t.Q6J("ngIf",i.nzIcon)("ngIfElse",e)}}function Xe(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw(4);t.xp6(1),t.Oqu(e.nzMessage)}}function tn(n,o){if(1&n&&(t.TgZ(0,"span",14),t.YNc(1,Xe,2,1,"ng-container",9),t.qZA()),2&n){const e=t.oxw(3);t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzMessage)}}function en(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw(4);t.xp6(1),t.Oqu(e.nzDescription)}}function nn(n,o){if(1&n&&(t.TgZ(0,"span",15),t.YNc(1,en,2,1,"ng-container",9),t.qZA()),2&n){const e=t.oxw(3);t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzDescription)}}function on(n,o){if(1&n&&(t.TgZ(0,"div",11),t.YNc(1,tn,2,1,"span",12),t.YNc(2,nn,2,1,"span",13),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("ngIf",e.nzMessage),t.xp6(1),t.Q6J("ngIf",e.nzDescription)}}function an(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw(3);t.xp6(1),t.Oqu(e.nzAction)}}function sn(n,o){if(1&n&&(t.TgZ(0,"div",16),t.YNc(1,an,2,1,"ng-container",9),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzAction)}}function rn(n,o){1&n&&t._UZ(0,"span",19)}function ln(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"span",20),t._uU(2),t.qZA(),t.BQk()),2&n){const e=t.oxw(4);t.xp6(2),t.Oqu(e.nzCloseText)}}function cn(n,o){if(1&n&&(t.ynx(0),t.YNc(1,ln,3,1,"ng-container",9),t.BQk()),2&n){const e=t.oxw(3);t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzCloseText)}}function _n(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"button",17),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.closeAlert())}),t.YNc(1,rn,1,0,"ng-template",null,18,t.W1O),t.YNc(3,cn,2,1,"ng-container",7),t.qZA()}if(2&n){const e=t.MAs(2),i=t.oxw(2);t.xp6(3),t.Q6J("ngIf",i.nzCloseText)("ngIfElse",e)}}function un(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"div",1),t.NdJ("@slideAlertMotion.done",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.onFadeAnimationDone())}),t.YNc(1,He,4,2,"div",2),t.YNc(2,on,3,2,"div",3),t.YNc(3,sn,2,1,"div",4),t.YNc(4,_n,4,2,"button",5),t.qZA()}if(2&n){const e=t.oxw();t.ekj("ant-alert-rtl","rtl"===e.dir)("ant-alert-success","success"===e.nzType)("ant-alert-info","info"===e.nzType)("ant-alert-warning","warning"===e.nzType)("ant-alert-error","error"===e.nzType)("ant-alert-no-icon",!e.nzShowIcon)("ant-alert-banner",e.nzBanner)("ant-alert-closable",e.nzCloseable)("ant-alert-with-description",!!e.nzDescription),t.Q6J("@.disabled",e.nzNoAnimation)("@slideAlertMotion",void 0),t.xp6(1),t.Q6J("ngIf",e.nzShowIcon),t.xp6(1),t.Q6J("ngIf",e.nzMessage||e.nzDescription),t.xp6(1),t.Q6J("ngIf",e.nzAction),t.xp6(1),t.Q6J("ngIf",e.nzCloseable||e.nzCloseText)}}let pn=(()=>{class n{constructor(e,i,a){this.nzConfigService=e,this.cdr=i,this.directionality=a,this._nzModuleName="alert",this.nzAction=null,this.nzCloseText=null,this.nzIconType=null,this.nzMessage=null,this.nzDescription=null,this.nzType="info",this.nzCloseable=!1,this.nzShowIcon=!1,this.nzBanner=!1,this.nzNoAnimation=!1,this.nzIcon=null,this.nzOnClose=new t.vpe,this.closed=!1,this.iconTheme="fill",this.inferredIconType="info-circle",this.dir="ltr",this.isTypeSet=!1,this.isShowIconSet=!1,this.destroy$=new F.x,this.nzConfigService.getConfigChangeEventForComponent("alert").pipe((0,y.R)(this.destroy$)).subscribe(()=>{this.cdr.markForCheck()})}ngOnInit(){this.directionality.change?.pipe((0,y.R)(this.destroy$)).subscribe(e=>{this.dir=e,this.cdr.detectChanges()}),this.dir=this.directionality.value}closeAlert(){this.closed=!0}onFadeAnimationDone(){this.closed&&this.nzOnClose.emit(!0)}ngOnChanges(e){const{nzShowIcon:i,nzDescription:a,nzType:s,nzBanner:d}=e;if(i&&(this.isShowIconSet=!0),s)switch(this.isTypeSet=!0,this.nzType){case"error":this.inferredIconType="close-circle";break;case"success":this.inferredIconType="check-circle";break;case"info":this.inferredIconType="info-circle";break;case"warning":this.inferredIconType="exclamation-circle"}a&&(this.iconTheme=this.nzDescription?"outline":"fill"),d&&(this.isTypeSet||(this.nzType="warning"),this.isShowIconSet||(this.nzShowIcon=!0))}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(b.jY),t.Y36(t.sBO),t.Y36(S.Is,8))},n.\u0275cmp=t.Xpm({type:n,selectors:[["nz-alert"]],inputs:{nzAction:"nzAction",nzCloseText:"nzCloseText",nzIconType:"nzIconType",nzMessage:"nzMessage",nzDescription:"nzDescription",nzType:"nzType",nzCloseable:"nzCloseable",nzShowIcon:"nzShowIcon",nzBanner:"nzBanner",nzNoAnimation:"nzNoAnimation",nzIcon:"nzIcon"},outputs:{nzOnClose:"nzOnClose"},exportAs:["nzAlert"],features:[t.TTD],decls:1,vars:1,consts:[["class","ant-alert",3,"ant-alert-rtl","ant-alert-success","ant-alert-info","ant-alert-warning","ant-alert-error","ant-alert-no-icon","ant-alert-banner","ant-alert-closable","ant-alert-with-description",4,"ngIf"],[1,"ant-alert"],["class","ant-alert-icon",4,"ngIf"],["class","ant-alert-content",4,"ngIf"],["class","ant-alert-action",4,"ngIf"],["type","button","tabindex","0","class","ant-alert-close-icon",3,"click",4,"ngIf"],[1,"ant-alert-icon"],[4,"ngIf","ngIfElse"],["iconDefaultTemplate",""],[4,"nzStringTemplateOutlet"],["nz-icon","",3,"nzType","nzTheme"],[1,"ant-alert-content"],["class","ant-alert-message",4,"ngIf"],["class","ant-alert-description",4,"ngIf"],[1,"ant-alert-message"],[1,"ant-alert-description"],[1,"ant-alert-action"],["type","button","tabindex","0",1,"ant-alert-close-icon",3,"click"],["closeDefaultTemplate",""],["nz-icon","","nzType","close"],[1,"ant-alert-close-text"]],template:function(e,i){1&e&&t.YNc(0,un,5,24,"div",0),2&e&&t.Q6J("ngIf",!i.closed)},dependencies:[c.O5,P.Ls,U.f],encapsulation:2,data:{animation:[qe.Rq]},changeDetection:0}),(0,T.gn)([(0,b.oS)(),(0,k.yF)()],n.prototype,"nzCloseable",void 0),(0,T.gn)([(0,b.oS)(),(0,k.yF)()],n.prototype,"nzShowIcon",void 0),(0,T.gn)([(0,k.yF)()],n.prototype,"nzBanner",void 0),(0,T.gn)([(0,k.yF)()],n.prototype,"nzNoAnimation",void 0),n})(),gn=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({imports:[S.vT,c.ez,P.PV,U.T]}),n})();var at=r(7131),wt=r(8e3);function dn(n,o){if(1&n&&(t.ynx(0),t._UZ(1,"span",8),t.BQk()),2&n){const e=t.oxw(3);t.xp6(1),t.Q6J("nzType",e.icon)}}function mn(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=o.$implicit,i=t.oxw(4);t.xp6(1),t.hij(" ",e(i.nzPercent)," ")}}const hn=function(n){return{$implicit:n}};function fn(n,o){if(1&n&&t.YNc(0,mn,2,1,"ng-container",9),2&n){const e=t.oxw(3);t.Q6J("nzStringTemplateOutlet",e.formatter)("nzStringTemplateOutletContext",t.VKq(2,hn,e.nzPercent))}}function Cn(n,o){if(1&n&&(t.TgZ(0,"span",5),t.YNc(1,dn,2,1,"ng-container",6),t.YNc(2,fn,1,4,"ng-template",null,7,t.W1O),t.qZA()),2&n){const e=t.MAs(3),i=t.oxw(2);t.xp6(1),t.Q6J("ngIf",("exception"===i.status||"success"===i.status)&&!i.nzFormat)("ngIfElse",e)}}function zn(n,o){if(1&n&&t.YNc(0,Cn,4,2,"span",4),2&n){const e=t.oxw();t.Q6J("ngIf",e.nzShowInfo)}}function Tn(n,o){if(1&n&&t._UZ(0,"div",17),2&n){const e=t.oxw(4);t.Udp("width",e.nzSuccessPercent,"%")("border-radius","round"===e.nzStrokeLinecap?"100px":"0")("height",e.strokeWidth,"px")}}function xn(n,o){if(1&n&&(t.TgZ(0,"div",13)(1,"div",14),t._UZ(2,"div",15),t.YNc(3,Tn,1,6,"div",16),t.qZA()()),2&n){const e=t.oxw(3);t.xp6(2),t.Udp("width",e.nzPercent,"%")("border-radius","round"===e.nzStrokeLinecap?"100px":"0")("background",e.isGradient?null:e.nzStrokeColor)("background-image",e.isGradient?e.lineGradient:null)("height",e.strokeWidth,"px"),t.xp6(1),t.Q6J("ngIf",e.nzSuccessPercent||0===e.nzSuccessPercent)}}function Dn(n,o){}function kn(n,o){if(1&n&&(t.ynx(0),t.YNc(1,xn,4,11,"div",11),t.YNc(2,Dn,0,0,"ng-template",12),t.BQk()),2&n){const e=t.oxw(2),i=t.MAs(1);t.xp6(1),t.Q6J("ngIf",!e.isSteps),t.xp6(1),t.Q6J("ngTemplateOutlet",i)}}function Mn(n,o){1&n&&t._UZ(0,"div",20),2&n&&t.Q6J("ngStyle",o.$implicit)}function On(n,o){}function vn(n,o){if(1&n&&(t.TgZ(0,"div",18),t.YNc(1,Mn,1,1,"div",19),t.YNc(2,On,0,0,"ng-template",12),t.qZA()),2&n){const e=t.oxw(2),i=t.MAs(1);t.xp6(1),t.Q6J("ngForOf",e.steps),t.xp6(1),t.Q6J("ngTemplateOutlet",i)}}function En(n,o){if(1&n&&(t.TgZ(0,"div"),t.YNc(1,kn,3,2,"ng-container",2),t.YNc(2,vn,3,2,"div",10),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",!e.isSteps),t.xp6(1),t.Q6J("ngIf",e.isSteps)}}function An(n,o){if(1&n&&(t.O4$(),t._UZ(0,"stop")),2&n){const e=o.$implicit;t.uIk("offset",e.offset)("stop-color",e.color)}}function Pn(n,o){if(1&n&&(t.O4$(),t.TgZ(0,"defs")(1,"linearGradient",24),t.YNc(2,An,1,2,"stop",25),t.qZA()()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("id","gradient-"+e.gradientId),t.xp6(1),t.Q6J("ngForOf",e.circleGradient)}}function yn(n,o){if(1&n&&(t.O4$(),t._UZ(0,"path",26)),2&n){const e=o.$implicit,i=t.oxw(2);t.Q6J("ngStyle",e.strokePathStyle),t.uIk("d",i.pathString)("stroke-linecap",i.nzStrokeLinecap)("stroke",e.stroke)("stroke-width",i.nzPercent?i.strokeWidth:0)}}function Sn(n,o){1&n&&t.O4$()}function bn(n,o){if(1&n&&(t.TgZ(0,"div",14),t.O4$(),t.TgZ(1,"svg",21),t.YNc(2,Pn,3,2,"defs",2),t._UZ(3,"path",22),t.YNc(4,yn,1,5,"path",23),t.qZA(),t.YNc(5,Sn,0,0,"ng-template",12),t.qZA()),2&n){const e=t.oxw(),i=t.MAs(1);t.Udp("width",e.nzWidth,"px")("height",e.nzWidth,"px")("font-size",.15*e.nzWidth+6,"px"),t.ekj("ant-progress-circle-gradient",e.isGradient),t.xp6(2),t.Q6J("ngIf",e.isGradient),t.xp6(1),t.Q6J("ngStyle",e.trailPathStyle),t.uIk("stroke-width",e.strokeWidth)("d",e.pathString),t.xp6(1),t.Q6J("ngForOf",e.progressCirclePath)("ngForTrackBy",e.trackByFn),t.xp6(1),t.Q6J("ngTemplateOutlet",i)}}const te=n=>{let o=[];return Object.keys(n).forEach(e=>{const i=n[e],a=function Fn(n){return+n.replace("%","")}(e);isNaN(a)||o.push({key:a,value:i})}),o=o.sort((e,i)=>e.key-i.key),o};let Nn=0;const ee="progress",Zn=new Map([["success","check"],["exception","close"]]),Bn=new Map([["normal","#108ee9"],["exception","#ff5500"],["success","#87d068"]]),Un=n=>`${n}%`;let ne=(()=>{class n{constructor(e,i,a){this.cdr=e,this.nzConfigService=i,this.directionality=a,this._nzModuleName=ee,this.nzShowInfo=!0,this.nzWidth=132,this.nzStrokeColor=void 0,this.nzSize="default",this.nzPercent=0,this.nzStrokeWidth=void 0,this.nzGapDegree=void 0,this.nzType="line",this.nzGapPosition="top",this.nzStrokeLinecap="round",this.nzSteps=0,this.steps=[],this.lineGradient=null,this.isGradient=!1,this.isSteps=!1,this.gradientId=Nn++,this.progressCirclePath=[],this.trailPathStyle=null,this.dir="ltr",this.trackByFn=s=>`${s}`,this.cachedStatus="normal",this.inferredStatus="normal",this.destroy$=new F.x}get formatter(){return this.nzFormat||Un}get status(){return this.nzStatus||this.inferredStatus}get strokeWidth(){return this.nzStrokeWidth||("line"===this.nzType&&"small"!==this.nzSize?8:6)}get isCircleStyle(){return"circle"===this.nzType||"dashboard"===this.nzType}ngOnChanges(e){const{nzSteps:i,nzGapPosition:a,nzStrokeLinecap:s,nzStrokeColor:d,nzGapDegree:C,nzType:z,nzStatus:M,nzPercent:A,nzSuccessPercent:l,nzStrokeWidth:B}=e;M&&(this.cachedStatus=this.nzStatus||this.cachedStatus),(A||l)&&(parseInt(this.nzPercent.toString(),10)>=100?((0,k.DX)(this.nzSuccessPercent)&&this.nzSuccessPercent>=100||void 0===this.nzSuccessPercent)&&(this.inferredStatus="success"):this.inferredStatus=this.cachedStatus),(M||A||l||d)&&this.updateIcon(),d&&this.setStrokeColor(),(a||s||C||z||A||d||d)&&this.getCirclePaths(),(A||i||B)&&(this.isSteps=this.nzSteps>0,this.isSteps&&this.getSteps())}ngOnInit(){this.nzConfigService.getConfigChangeEventForComponent(ee).pipe((0,y.R)(this.destroy$)).subscribe(()=>{this.updateIcon(),this.setStrokeColor(),this.getCirclePaths()}),this.directionality.change?.pipe((0,y.R)(this.destroy$)).subscribe(e=>{this.dir=e,this.cdr.detectChanges()}),this.dir=this.directionality.value}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}updateIcon(){const e=Zn.get(this.status);this.icon=e?e+(this.isCircleStyle?"-o":"-circle-fill"):""}getSteps(){const e=Math.floor(this.nzSteps*(this.nzPercent/100)),i="small"===this.nzSize?2:14,a=[];for(let s=0;s<this.nzSteps;s++){let d;s<=e-1&&(d=this.nzStrokeColor),a.push({backgroundColor:`${d}`,width:`${i}px`,height:`${this.strokeWidth}px`})}this.steps=a}getCirclePaths(){if(!this.isCircleStyle)return;const e=(0,k.DX)(this.nzSuccessPercent)?[this.nzSuccessPercent,this.nzPercent]:[this.nzPercent],i=50-this.strokeWidth/2,s=2*Math.PI*i,d=this.nzGapDegree||("circle"===this.nzType?0:75);let C=0,z=-i,M=0,A=-2*i;switch(this.nzGapPosition||("circle"===this.nzType?"top":"bottom")){case"left":C=-i,z=0,M=2*i,A=0;break;case"right":C=i,z=0,M=-2*i,A=0;break;case"bottom":z=i,A=2*i}this.pathString=`M 50,50 m ${C},${z}\n a ${i},${i} 0 1 1 ${M},${-A}\n a ${i},${i} 0 1 1 ${-M},${A}`,this.trailPathStyle={strokeDasharray:`${s-d}px ${s}px`,strokeDashoffset:`-${d/2}px`,transition:"stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s"},this.progressCirclePath=e.map((l,B)=>{const I=2===e.length&&0===B;return{stroke:this.isGradient&&!I?`url(#gradient-${this.gradientId})`:null,strokePathStyle:{stroke:this.isGradient?null:I?Bn.get("success"):this.nzStrokeColor,transition:"stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s",strokeDasharray:`${(l||0)/100*(s-d)}px ${s}px`,strokeDashoffset:`-${d/2}px`}}}).reverse()}setStrokeColor(){const e=this.nzStrokeColor,i=this.isGradient=!!e&&"string"!=typeof e;i&&!this.isCircleStyle?this.lineGradient=(n=>{const{from:o="#1890ff",to:e="#1890ff",direction:i="to right",...a}=n;return 0!==Object.keys(a).length?`linear-gradient(${i}, ${te(a).map(({key:d,value:C})=>`${C} ${d}%`).join(", ")})`:`linear-gradient(${i}, ${o}, ${e})`})(e):i&&this.isCircleStyle?this.circleGradient=(n=>te(this.nzStrokeColor).map(({key:o,value:e})=>({offset:`${o}%`,color:e})))():(this.lineGradient=null,this.circleGradient=[])}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(t.sBO),t.Y36(b.jY),t.Y36(S.Is,8))},n.\u0275cmp=t.Xpm({type:n,selectors:[["nz-progress"]],inputs:{nzShowInfo:"nzShowInfo",nzWidth:"nzWidth",nzStrokeColor:"nzStrokeColor",nzSize:"nzSize",nzFormat:"nzFormat",nzSuccessPercent:"nzSuccessPercent",nzPercent:"nzPercent",nzStrokeWidth:"nzStrokeWidth",nzGapDegree:"nzGapDegree",nzStatus:"nzStatus",nzType:"nzType",nzGapPosition:"nzGapPosition",nzStrokeLinecap:"nzStrokeLinecap",nzSteps:"nzSteps"},exportAs:["nzProgress"],features:[t.TTD],decls:5,vars:17,consts:[["progressInfoTemplate",""],[3,"ngClass"],[4,"ngIf"],["class","ant-progress-inner",3,"width","height","fontSize","ant-progress-circle-gradient",4,"ngIf"],["class","ant-progress-text",4,"ngIf"],[1,"ant-progress-text"],[4,"ngIf","ngIfElse"],["formatTemplate",""],["nz-icon","",3,"nzType"],[4,"nzStringTemplateOutlet","nzStringTemplateOutletContext"],["class","ant-progress-steps-outer",4,"ngIf"],["class","ant-progress-outer",4,"ngIf"],[3,"ngTemplateOutlet"],[1,"ant-progress-outer"],[1,"ant-progress-inner"],[1,"ant-progress-bg"],["class","ant-progress-success-bg",3,"width","border-radius","height",4,"ngIf"],[1,"ant-progress-success-bg"],[1,"ant-progress-steps-outer"],["class","ant-progress-steps-item",3,"ngStyle",4,"ngFor","ngForOf"],[1,"ant-progress-steps-item",3,"ngStyle"],["viewBox","0 0 100 100",1,"ant-progress-circle"],["stroke","#f3f3f3","fill-opacity","0",1,"ant-progress-circle-trail",3,"ngStyle"],["class","ant-progress-circle-path","fill-opacity","0",3,"ngStyle",4,"ngFor","ngForOf","ngForTrackBy"],["x1","100%","y1","0%","x2","0%","y2","0%",3,"id"],[4,"ngFor","ngForOf"],["fill-opacity","0",1,"ant-progress-circle-path",3,"ngStyle"]],template:function(e,i){1&e&&(t.YNc(0,zn,1,1,"ng-template",null,0,t.W1O),t.TgZ(2,"div",1),t.YNc(3,En,3,2,"div",2),t.YNc(4,bn,6,15,"div",3),t.qZA()),2&e&&(t.xp6(2),t.ekj("ant-progress-line","line"===i.nzType)("ant-progress-small","small"===i.nzSize)("ant-progress-default","default"===i.nzSize)("ant-progress-show-info",i.nzShowInfo)("ant-progress-circle",i.isCircleStyle)("ant-progress-steps",i.isSteps)("ant-progress-rtl","rtl"===i.dir),t.Q6J("ngClass","ant-progress ant-progress-status-"+i.status),t.xp6(1),t.Q6J("ngIf","line"===i.nzType),t.xp6(1),t.Q6J("ngIf",i.isCircleStyle))},dependencies:[c.mk,c.sg,c.O5,c.tP,c.PC,P.Ls,U.f],encapsulation:2,changeDetection:0}),(0,T.gn)([(0,b.oS)()],n.prototype,"nzShowInfo",void 0),(0,T.gn)([(0,b.oS)()],n.prototype,"nzStrokeColor",void 0),(0,T.gn)([(0,b.oS)()],n.prototype,"nzSize",void 0),(0,T.gn)([(0,k.Rn)()],n.prototype,"nzSuccessPercent",void 0),(0,T.gn)([(0,k.Rn)()],n.prototype,"nzPercent",void 0),(0,T.gn)([(0,b.oS)(),(0,k.Rn)()],n.prototype,"nzStrokeWidth",void 0),(0,T.gn)([(0,b.oS)(),(0,k.Rn)()],n.prototype,"nzGapDegree",void 0),(0,T.gn)([(0,b.oS)()],n.prototype,"nzGapPosition",void 0),(0,T.gn)([(0,b.oS)()],n.prototype,"nzStrokeLinecap",void 0),(0,T.gn)([(0,k.Rn)()],n.prototype,"nzSteps",void 0),n})(),Rn=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({imports:[S.vT,c.ez,P.PV,U.T]}),n})();var L=r(6675),oe=r(3353);let Ln=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({imports:[c.ez]}),n})();const Jn=function(n){return{$implicit:n}};function Qn(n,o){if(1&n&&t.GkF(0,3),2&n){const e=t.oxw();t.Q6J("ngTemplateOutlet",e.nzValueTemplate)("ngTemplateOutletContext",t.VKq(2,Jn,e.nzValue))}}function Kn(n,o){if(1&n&&(t.TgZ(0,"span",6),t._uU(1),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.displayInt)}}function Gn(n,o){if(1&n&&(t.TgZ(0,"span",7),t._uU(1),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.displayDecimal)}}function Wn(n,o){if(1&n&&(t.ynx(0),t.YNc(1,Kn,2,1,"span",4),t.YNc(2,Gn,2,1,"span",5),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",e.displayInt),t.xp6(1),t.Q6J("ngIf",e.displayDecimal)}}function Yn(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.Oqu(e.nzTitle)}}function qn(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.nzPrefix)}}function $n(n,o){if(1&n&&(t.TgZ(0,"span",6),t.YNc(1,qn,2,1,"ng-container",1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzPrefix)}}function jn(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw(2);t.xp6(1),t.Oqu(e.nzSuffix)}}function Vn(n,o){if(1&n&&(t.TgZ(0,"span",7),t.YNc(1,jn,2,1,"ng-container",1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzSuffix)}}let Hn=(()=>{class n{constructor(e){this.locale_id=e,this.displayInt="",this.displayDecimal=""}ngOnChanges(){this.formatNumber()}formatNumber(){const e="number"==typeof this.nzValue?".":(0,c.dv)(this.locale_id,c.wE.Decimal),i=String(this.nzValue),[a,s]=i.split(e);this.displayInt=a,this.displayDecimal=s?`${e}${s}`:""}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(t.soG))},n.\u0275cmp=t.Xpm({type:n,selectors:[["nz-statistic-number"]],inputs:{nzValue:"nzValue",nzValueTemplate:"nzValueTemplate"},exportAs:["nzStatisticNumber"],features:[t.TTD],decls:3,vars:2,consts:[[1,"ant-statistic-content-value"],[3,"ngTemplateOutlet","ngTemplateOutletContext",4,"ngIf"],[4,"ngIf"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],["class","ant-statistic-content-value-int",4,"ngIf"],["class","ant-statistic-content-value-decimal",4,"ngIf"],[1,"ant-statistic-content-value-int"],[1,"ant-statistic-content-value-decimal"]],template:function(e,i){1&e&&(t.TgZ(0,"span",0),t.YNc(1,Qn,1,4,"ng-container",1),t.YNc(2,Wn,3,2,"ng-container",2),t.qZA()),2&e&&(t.xp6(1),t.Q6J("ngIf",i.nzValueTemplate),t.xp6(1),t.Q6J("ngIf",!i.nzValueTemplate))},dependencies:[c.O5,c.tP],encapsulation:2,changeDetection:0}),n})(),ie=(()=>{class n{constructor(e,i){this.cdr=e,this.directionality=i,this.nzValueStyle={},this.dir="ltr",this.destroy$=new F.x}ngOnInit(){this.directionality.change?.pipe((0,y.R)(this.destroy$)).subscribe(e=>{this.dir=e,this.cdr.detectChanges()}),this.dir=this.directionality.value}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(t.sBO),t.Y36(S.Is,8))},n.\u0275cmp=t.Xpm({type:n,selectors:[["nz-statistic"]],hostAttrs:[1,"ant-statistic"],hostVars:2,hostBindings:function(e,i){2&e&&t.ekj("ant-statistic-rtl","rtl"===i.dir)},inputs:{nzPrefix:"nzPrefix",nzSuffix:"nzSuffix",nzTitle:"nzTitle",nzValue:"nzValue",nzValueStyle:"nzValueStyle",nzValueTemplate:"nzValueTemplate"},exportAs:["nzStatistic"],decls:6,vars:6,consts:[[1,"ant-statistic-title"],[4,"nzStringTemplateOutlet"],[1,"ant-statistic-content",3,"ngStyle"],["class","ant-statistic-content-prefix",4,"ngIf"],[3,"nzValue","nzValueTemplate"],["class","ant-statistic-content-suffix",4,"ngIf"],[1,"ant-statistic-content-prefix"],[1,"ant-statistic-content-suffix"]],template:function(e,i){1&e&&(t.TgZ(0,"div",0),t.YNc(1,Yn,2,1,"ng-container",1),t.qZA(),t.TgZ(2,"div",2),t.YNc(3,$n,2,1,"span",3),t._UZ(4,"nz-statistic-number",4),t.YNc(5,Vn,2,1,"span",5),t.qZA()),2&e&&(t.xp6(1),t.Q6J("nzStringTemplateOutlet",i.nzTitle),t.xp6(1),t.Q6J("ngStyle",i.nzValueStyle),t.xp6(1),t.Q6J("ngIf",i.nzPrefix),t.xp6(1),t.Q6J("nzValue",i.nzValue)("nzValueTemplate",i.nzValueTemplate),t.xp6(1),t.Q6J("ngIf",i.nzSuffix))},dependencies:[c.O5,c.PC,U.f,Hn],encapsulation:2,changeDetection:0}),n})(),Xn=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({imports:[S.vT,c.ez,oe.ud,U.T,Ln]}),n})();var ae=r(6451),to=r(8675),st=r(3900),eo=r(3601),v=r(8505),no=r(8932),It=r(3303);function oo(n,o){1&n&&t.Hsn(0)}const io=["*"];function ao(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw(3);t.xp6(1),t.Oqu(e.nzTitle)}}function so(n,o){if(1&n&&(t.TgZ(0,"div",6),t.YNc(1,ao,2,1,"ng-container",7),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzTitle)}}function ro(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw(3);t.xp6(1),t.Oqu(e.nzExtra)}}function lo(n,o){if(1&n&&(t.TgZ(0,"div",8),t.YNc(1,ro,2,1,"ng-container",7),t.qZA()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzExtra)}}function co(n,o){if(1&n&&(t.TgZ(0,"div",3),t.YNc(1,so,2,1,"div",4),t.YNc(2,lo,2,1,"div",5),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",e.nzTitle),t.xp6(1),t.Q6J("ngIf",e.nzExtra)}}function _o(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw(2).$implicit;t.xp6(1),t.hij(" ",e.title," ")}}function uo(n,o){}function po(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"td",12)(2,"div",13)(3,"span",14),t.YNc(4,_o,2,1,"ng-container",7),t.qZA(),t.TgZ(5,"span",15),t.YNc(6,uo,0,0,"ng-template",16),t.qZA()()(),t.BQk()),2&n){const e=t.oxw().$implicit,i=t.oxw(3);t.xp6(1),t.Q6J("colSpan",e.span),t.xp6(2),t.ekj("ant-descriptions-item-no-colon",!i.nzColon),t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.title),t.xp6(2),t.Q6J("ngTemplateOutlet",e.content)}}function go(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw(2).$implicit;t.xp6(1),t.hij(" ",e.title," ")}}function mo(n,o){}function ho(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"td",14),t.YNc(2,go,2,1,"ng-container",7),t.qZA(),t.TgZ(3,"td",17),t.YNc(4,mo,0,0,"ng-template",16),t.qZA(),t.BQk()),2&n){const e=t.oxw().$implicit;t.xp6(2),t.Q6J("nzStringTemplateOutlet",e.title),t.xp6(1),t.Q6J("colSpan",2*e.span-1),t.xp6(1),t.Q6J("ngTemplateOutlet",e.content)}}function fo(n,o){if(1&n&&(t.ynx(0),t.YNc(1,po,7,5,"ng-container",2),t.YNc(2,ho,5,3,"ng-container",2),t.BQk()),2&n){const e=t.oxw(3);t.xp6(1),t.Q6J("ngIf",!e.nzBordered),t.xp6(1),t.Q6J("ngIf",e.nzBordered)}}function Co(n,o){if(1&n&&(t.TgZ(0,"tr",10),t.YNc(1,fo,3,2,"ng-container",11),t.qZA()),2&n){const e=o.$implicit;t.xp6(1),t.Q6J("ngForOf",e)}}function zo(n,o){if(1&n&&(t.ynx(0),t.YNc(1,Co,2,1,"tr",9),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngForOf",e.itemMatrix)}}function To(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.hij(" ",e.title," ")}}function xo(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"td",12)(2,"div",13)(3,"span",14),t.YNc(4,To,2,1,"ng-container",7),t.qZA()()(),t.BQk()),2&n){const e=o.$implicit,i=t.oxw(4);t.xp6(1),t.Q6J("colSpan",e.span),t.xp6(2),t.ekj("ant-descriptions-item-no-colon",!i.nzColon),t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.title)}}function Do(n,o){}function ko(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"td",12)(2,"div",13)(3,"span",15),t.YNc(4,Do,0,0,"ng-template",16),t.qZA()()(),t.BQk()),2&n){const e=o.$implicit;t.xp6(1),t.Q6J("colSpan",e.span),t.xp6(3),t.Q6J("ngTemplateOutlet",e.content)}}function Mo(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"tr",10),t.YNc(2,xo,5,4,"ng-container",11),t.qZA(),t.TgZ(3,"tr",10),t.YNc(4,ko,5,2,"ng-container",11),t.qZA(),t.BQk()),2&n){const e=o.$implicit;t.xp6(2),t.Q6J("ngForOf",e),t.xp6(2),t.Q6J("ngForOf",e)}}function Oo(n,o){if(1&n&&(t.ynx(0),t.YNc(1,Mo,5,2,"ng-container",11),t.BQk()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("ngForOf",e.itemMatrix)}}function vo(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const e=t.oxw().$implicit;t.xp6(1),t.hij(" ",e.title," ")}}function Eo(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"td",18),t.YNc(2,vo,2,1,"ng-container",7),t.qZA(),t.BQk()),2&n){const e=o.$implicit;t.xp6(1),t.Q6J("colSpan",e.span),t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.title)}}function Ao(n,o){}function Po(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"td",17),t.YNc(2,Ao,0,0,"ng-template",16),t.qZA(),t.BQk()),2&n){const e=o.$implicit;t.xp6(1),t.Q6J("colSpan",e.span),t.xp6(1),t.Q6J("ngTemplateOutlet",e.content)}}function yo(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"tr",10),t.YNc(2,Eo,3,2,"ng-container",11),t.qZA(),t.TgZ(3,"tr",10),t.YNc(4,Po,3,2,"ng-container",11),t.qZA(),t.BQk()),2&n){const e=o.$implicit;t.xp6(2),t.Q6J("ngForOf",e),t.xp6(2),t.Q6J("ngForOf",e)}}function So(n,o){if(1&n&&(t.ynx(0),t.YNc(1,yo,5,2,"ng-container",11),t.BQk()),2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("ngForOf",e.itemMatrix)}}function bo(n,o){if(1&n&&(t.ynx(0),t.YNc(1,Oo,2,1,"ng-container",2),t.YNc(2,So,2,1,"ng-container",2),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.Q6J("ngIf",!e.nzBordered),t.xp6(1),t.Q6J("ngIf",e.nzBordered)}}let Nt=(()=>{class n{constructor(){this.nzSpan=1,this.nzTitle="",this.inputChange$=new F.x}ngOnChanges(){this.inputChange$.next()}ngOnDestroy(){this.inputChange$.complete()}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275cmp=t.Xpm({type:n,selectors:[["nz-descriptions-item"]],viewQuery:function(e,i){if(1&e&&t.Gf(t.Rgc,7),2&e){let a;t.iGM(a=t.CRH())&&(i.content=a.first)}},inputs:{nzSpan:"nzSpan",nzTitle:"nzTitle"},exportAs:["nzDescriptionsItem"],features:[t.TTD],ngContentSelectors:io,decls:1,vars:0,template:function(e,i){1&e&&(t.F$t(),t.YNc(0,oo,1,0,"ng-template"))},encapsulation:2,changeDetection:0}),(0,T.gn)([(0,k.Rn)()],n.prototype,"nzSpan",void 0),n})();const wo={xxl:3,xl:3,lg:3,md:3,sm:2,xs:1};let se=(()=>{class n{constructor(e,i,a,s){this.nzConfigService=e,this.cdr=i,this.breakpointService=a,this.directionality=s,this._nzModuleName="descriptions",this.nzBordered=!1,this.nzLayout="horizontal",this.nzColumn=wo,this.nzSize="default",this.nzTitle="",this.nzColon=!0,this.itemMatrix=[],this.realColumn=3,this.dir="ltr",this.breakpoint=It.G_.md,this.destroy$=new F.x}ngOnInit(){this.dir=this.directionality.value,this.directionality.change?.pipe((0,y.R)(this.destroy$)).subscribe(e=>{this.dir=e})}ngOnChanges(e){e.nzColumn&&this.prepareMatrix()}ngAfterContentInit(){const e=this.items.changes.pipe((0,to.O)(this.items),(0,y.R)(this.destroy$));(0,ae.T)(e,e.pipe((0,st.w)(()=>(0,ae.T)(...this.items.map(i=>i.inputChange$)).pipe((0,eo.e)(16)))),this.breakpointService.subscribe(It.WV).pipe((0,v.b)(i=>this.breakpoint=i))).pipe((0,y.R)(this.destroy$)).subscribe(()=>{this.prepareMatrix(),this.cdr.markForCheck()})}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}prepareMatrix(){if(!this.items)return;let e=[],i=0;const a=this.realColumn=this.getColumn(),s=this.items.toArray(),d=s.length,C=[],z=()=>{C.push(e),e=[],i=0};for(let M=0;M<d;M++){const A=s[M],{nzTitle:l,content:B,nzSpan:I}=A;i+=I,i>=a?(i>a&&(0,no.ZK)(`"nzColumn" is ${a} but we have row length ${i}`),e.push({title:l,content:B,span:a-(i-I)}),z()):M===d-1?(e.push({title:l,content:B,span:a-(i-I)}),z()):e.push({title:l,content:B,span:I})}this.itemMatrix=C}getColumn(){return"number"!=typeof this.nzColumn?this.nzColumn[this.breakpoint]:this.nzColumn}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(b.jY),t.Y36(t.sBO),t.Y36(It.r3),t.Y36(S.Is,8))},n.\u0275cmp=t.Xpm({type:n,selectors:[["nz-descriptions"]],contentQueries:function(e,i,a){if(1&e&&t.Suo(a,Nt,4),2&e){let s;t.iGM(s=t.CRH())&&(i.items=s)}},hostAttrs:[1,"ant-descriptions"],hostVars:8,hostBindings:function(e,i){2&e&&t.ekj("ant-descriptions-bordered",i.nzBordered)("ant-descriptions-middle","middle"===i.nzSize)("ant-descriptions-small","small"===i.nzSize)("ant-descriptions-rtl","rtl"===i.dir)},inputs:{nzBordered:"nzBordered",nzLayout:"nzLayout",nzColumn:"nzColumn",nzSize:"nzSize",nzTitle:"nzTitle",nzExtra:"nzExtra",nzColon:"nzColon"},exportAs:["nzDescriptions"],features:[t.TTD],decls:6,vars:3,consts:[["class","ant-descriptions-header",4,"ngIf"],[1,"ant-descriptions-view"],[4,"ngIf"],[1,"ant-descriptions-header"],["class","ant-descriptions-title",4,"ngIf"],["class","ant-descriptions-extra",4,"ngIf"],[1,"ant-descriptions-title"],[4,"nzStringTemplateOutlet"],[1,"ant-descriptions-extra"],["class","ant-descriptions-row",4,"ngFor","ngForOf"],[1,"ant-descriptions-row"],[4,"ngFor","ngForOf"],[1,"ant-descriptions-item",3,"colSpan"],[1,"ant-descriptions-item-container"],[1,"ant-descriptions-item-label"],[1,"ant-descriptions-item-content"],[3,"ngTemplateOutlet"],[1,"ant-descriptions-item-content",3,"colSpan"],[1,"ant-descriptions-item-label",3,"colSpan"]],template:function(e,i){1&e&&(t.YNc(0,co,3,2,"div",0),t.TgZ(1,"div",1)(2,"table")(3,"tbody"),t.YNc(4,zo,2,1,"ng-container",2),t.YNc(5,bo,3,2,"ng-container",2),t.qZA()()()),2&e&&(t.Q6J("ngIf",i.nzTitle||i.nzExtra),t.xp6(4),t.Q6J("ngIf","horizontal"===i.nzLayout),t.xp6(1),t.Q6J("ngIf","vertical"===i.nzLayout))},dependencies:[c.sg,c.O5,c.tP,U.f],encapsulation:2,changeDetection:0}),(0,T.gn)([(0,k.yF)(),(0,b.oS)()],n.prototype,"nzBordered",void 0),(0,T.gn)([(0,b.oS)()],n.prototype,"nzColumn",void 0),(0,T.gn)([(0,b.oS)()],n.prototype,"nzSize",void 0),(0,T.gn)([(0,b.oS)(),(0,k.yF)()],n.prototype,"nzColon",void 0),n})(),Io=(()=>{class n{}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({imports:[S.vT,c.ez,U.T,oe.ud]}),n})();var yt=r(5861),w=r(9646),St=r(515),re=r(4986),No=r(9751),Zo=r(4482),le=r(5403),Bo=r(8421);const ce={leading:!0,trailing:!1};var Ro=r(5963);class Zt{constructor(o){this.changes=o}static of(o){return new Zt(o)}notEmpty(o){if(this.changes[o]){const e=this.changes[o].currentValue;if(null!=e)return(0,w.of)(e)}return St.E}has(o){return this.changes[o]?(0,w.of)(this.changes[o].currentValue):St.E}notFirst(o){return this.changes[o]&&!this.changes[o].isFirstChange()?(0,w.of)(this.changes[o].currentValue):St.E}notFirstAndEmpty(o){if(this.changes[o]&&!this.changes[o].isFirstChange()){const e=this.changes[o].currentValue;if(null!=e)return(0,w.of)(e)}return St.E}}const _e=new t.OlP("NGX_ECHARTS_CONFIG");let ue=(()=>{class n{constructor(e,i,a){this.el=i,this.ngZone=a,this.options=null,this.theme=null,this.initOpts=null,this.merge=null,this.autoResize=!0,this.loading=!1,this.loadingType="default",this.loadingOpts=null,this.chartInit=new t.vpe,this.optionsError=new t.vpe,this.chartClick=this.createLazyEvent("click"),this.chartDblClick=this.createLazyEvent("dblclick"),this.chartMouseDown=this.createLazyEvent("mousedown"),this.chartMouseMove=this.createLazyEvent("mousemove"),this.chartMouseUp=this.createLazyEvent("mouseup"),this.chartMouseOver=this.createLazyEvent("mouseover"),this.chartMouseOut=this.createLazyEvent("mouseout"),this.chartGlobalOut=this.createLazyEvent("globalout"),this.chartContextMenu=this.createLazyEvent("contextmenu"),this.chartLegendSelectChanged=this.createLazyEvent("legendselectchanged"),this.chartLegendSelected=this.createLazyEvent("legendselected"),this.chartLegendUnselected=this.createLazyEvent("legendunselected"),this.chartLegendScroll=this.createLazyEvent("legendscroll"),this.chartDataZoom=this.createLazyEvent("datazoom"),this.chartDataRangeSelected=this.createLazyEvent("datarangeselected"),this.chartTimelineChanged=this.createLazyEvent("timelinechanged"),this.chartTimelinePlayChanged=this.createLazyEvent("timelineplaychanged"),this.chartRestore=this.createLazyEvent("restore"),this.chartDataViewChanged=this.createLazyEvent("dataviewchanged"),this.chartMagicTypeChanged=this.createLazyEvent("magictypechanged"),this.chartPieSelectChanged=this.createLazyEvent("pieselectchanged"),this.chartPieSelected=this.createLazyEvent("pieselected"),this.chartPieUnselected=this.createLazyEvent("pieunselected"),this.chartMapSelectChanged=this.createLazyEvent("mapselectchanged"),this.chartMapSelected=this.createLazyEvent("mapselected"),this.chartMapUnselected=this.createLazyEvent("mapunselected"),this.chartAxisAreaSelected=this.createLazyEvent("axisareaselected"),this.chartFocusNodeAdjacency=this.createLazyEvent("focusnodeadjacency"),this.chartUnfocusNodeAdjacency=this.createLazyEvent("unfocusnodeadjacency"),this.chartBrush=this.createLazyEvent("brush"),this.chartBrushEnd=this.createLazyEvent("brushend"),this.chartBrushSelected=this.createLazyEvent("brushselected"),this.chartRendered=this.createLazyEvent("rendered"),this.chartFinished=this.createLazyEvent("finished"),this.animationFrameID=null,this.resize$=new F.x,this.echarts=e.echarts}ngOnChanges(e){const i=Zt.of(e);i.notFirstAndEmpty("options").subscribe(a=>this.onOptionsChange(a)),i.notFirstAndEmpty("merge").subscribe(a=>this.setOption(a)),i.has("loading").subscribe(a=>this.toggleLoading(!!a)),i.notFirst("theme").subscribe(()=>this.refreshChart())}ngOnInit(){if(!window.ResizeObserver)throw new Error("please install a polyfill for ResizeObserver");this.resizeSub=this.resize$.pipe(function Lo(n,o=re.z,e=ce){const i=(0,Ro.H)(n,o);return function Uo(n,o=ce){return(0,Zo.e)((e,i)=>{const{leading:a,trailing:s}=o;let d=!1,C=null,z=null,M=!1;const A=()=>{z?.unsubscribe(),z=null,s&&(I(),M&&i.complete())},l=()=>{z=null,M&&i.complete()},B=Y=>z=(0,Bo.Xf)(n(Y)).subscribe((0,le.x)(i,A,l)),I=()=>{if(d){d=!1;const Y=C;C=null,i.next(Y),!M&&B(Y)}};e.subscribe((0,le.x)(i,Y=>{d=!0,C=Y,(!z||z.closed)&&(a?I():B(Y))},()=>{M=!0,(!(s&&d&&z)||z.closed)&&i.complete()}))})}(()=>i,e)}(100,re.z,{leading:!1,trailing:!0})).subscribe(()=>this.resize()),this.autoResize&&(this.resizeOb=this.ngZone.runOutsideAngular(()=>new window.ResizeObserver(()=>{this.animationFrameID=window.requestAnimationFrame(()=>this.resize$.next())})),this.resizeOb.observe(this.el.nativeElement))}ngOnDestroy(){window.clearTimeout(this.initChartTimer),this.resizeSub&&this.resizeSub.unsubscribe(),this.animationFrameID&&window.cancelAnimationFrame(this.animationFrameID),this.resizeOb&&this.resizeOb.unobserve(this.el.nativeElement),this.dispose()}ngAfterViewInit(){this.initChartTimer=window.setTimeout(()=>this.initChart())}dispose(){this.chart&&(this.chart.isDisposed()||this.chart.dispose(),this.chart=null)}resize(){this.chart&&this.chart.resize()}toggleLoading(e){this.chart&&(e?this.chart.showLoading(this.loadingType,this.loadingOpts):this.chart.hideLoading())}setOption(e,i){if(this.chart)try{this.chart.setOption(e,i)}catch(a){console.error(a),this.optionsError.emit(a)}}refreshChart(){var e=this;return(0,yt.Z)(function*(){e.dispose(),yield e.initChart()})()}createChart(){const e=this.el.nativeElement;if(window&&window.getComputedStyle){const i=window.getComputedStyle(e,null).getPropertyValue("height");(!i||"0px"===i)&&(!e.style.height||"0px"===e.style.height)&&(e.style.height="400px")}return this.ngZone.runOutsideAngular(()=>("function"==typeof this.echarts?this.echarts:()=>Promise.resolve(this.echarts))().then(({init:a})=>a(e,this.theme,this.initOpts)))}initChart(){var e=this;return(0,yt.Z)(function*(){yield e.onOptionsChange(e.options),e.merge&&e.chart&&e.setOption(e.merge)})()}onOptionsChange(e){var i=this;return(0,yt.Z)(function*(){e&&(i.chart||(i.chart=yield i.createChart(),i.chartInit.emit(i.chart)),i.setOption(i.options,!0))})()}createLazyEvent(e){return this.chartInit.pipe((0,st.w)(i=>new No.y(a=>(i.on(e,s=>this.ngZone.run(()=>a.next(s))),()=>{this.chart&&(this.chart.isDisposed()||i.off(e))}))))}}return n.\u0275fac=function(e){return new(e||n)(t.Y36(_e),t.Y36(t.SBq),t.Y36(t.R0b))},n.\u0275dir=t.lG2({type:n,selectors:[["echarts"],["","echarts",""]],inputs:{options:"options",theme:"theme",initOpts:"initOpts",merge:"merge",autoResize:"autoResize",loading:"loading",loadingType:"loadingType",loadingOpts:"loadingOpts"},outputs:{chartInit:"chartInit",optionsError:"optionsError",chartClick:"chartClick",chartDblClick:"chartDblClick",chartMouseDown:"chartMouseDown",chartMouseMove:"chartMouseMove",chartMouseUp:"chartMouseUp",chartMouseOver:"chartMouseOver",chartMouseOut:"chartMouseOut",chartGlobalOut:"chartGlobalOut",chartContextMenu:"chartContextMenu",chartLegendSelectChanged:"chartLegendSelectChanged",chartLegendSelected:"chartLegendSelected",chartLegendUnselected:"chartLegendUnselected",chartLegendScroll:"chartLegendScroll",chartDataZoom:"chartDataZoom",chartDataRangeSelected:"chartDataRangeSelected",chartTimelineChanged:"chartTimelineChanged",chartTimelinePlayChanged:"chartTimelinePlayChanged",chartRestore:"chartRestore",chartDataViewChanged:"chartDataViewChanged",chartMagicTypeChanged:"chartMagicTypeChanged",chartPieSelectChanged:"chartPieSelectChanged",chartPieSelected:"chartPieSelected",chartPieUnselected:"chartPieUnselected",chartMapSelectChanged:"chartMapSelectChanged",chartMapSelected:"chartMapSelected",chartMapUnselected:"chartMapUnselected",chartAxisAreaSelected:"chartAxisAreaSelected",chartFocusNodeAdjacency:"chartFocusNodeAdjacency",chartUnfocusNodeAdjacency:"chartUnfocusNodeAdjacency",chartBrush:"chartBrush",chartBrushEnd:"chartBrushEnd",chartBrushSelected:"chartBrushSelected",chartRendered:"chartRendered",chartFinished:"chartFinished"},exportAs:["echarts"],features:[t.TTD]}),n})(),Jo=(()=>{class n{static forRoot(e){return{ngModule:n,providers:[{provide:_e,useValue:e}]}}static forChild(){return{ngModule:n}}}return n.\u0275fac=function(e){return new(e||n)},n.\u0275mod=t.oAB({type:n}),n.\u0275inj=t.cJS({}),n})();var Qo=r(4466),rt=r(6582),pe=r(7445),ge=r(7188),de=r(7886),lt=r(262),Bt=r(4007),me=r(387),Ut=r(844),Ko=r(5545),Go=r(7512),m=r(2948),Wo=r(8147);class J{transform(o,e){return(0,Wo.G)(o,{base:2,standard:"jedec",...e,output:"string"})}}J.\u0275fac=function(o){return new(o||J)},J.\u0275pipe=t.Yjl({name:"filesize",type:J,pure:!0});class G{transform(o){return o?o.startsWith("/")?o.split("/").pop()??"":o.split("\\").pop()??"":""}}G.\u0275fac=function(o){return new(o||G)},G.\u0275pipe=t.Yjl({name:"filename",type:G,pure:!0});const Yo=new Map([[m.cS.RECORDING,"\u5f55\u5236\u4e2d"],[m.cS.INJECTING,"\u5904\u7406\u4e2d"],[m.cS.REMUXING,"\u5904\u7406\u4e2d"],[m.cS.COMPLETED,"\u5df2\u5b8c\u6210"],[m.cS.MISSING,"\u4e0d\u5b58\u5728"],[m.cS.UNKNOWN,"???"]]);class ct{transform(o){return Yo.get(o)??"\uff1f\uff1f\uff1f"}}function qo(n,o){if(1&n&&(t.TgZ(0,"th",5),t._uU(1),t.qZA()),2&n){const e=o.$implicit;t.Q6J("nzSortOrder",e.sortOrder)("nzSortFn",e.sortFn)("nzSortDirections",e.sortDirections)("nzFilters",e.listOfFilter)("nzFilterFn",e.filterFn)("nzFilterMultiple",e.filterMultiple)("nzShowFilter",e.listOfFilter.length>0),t.xp6(1),t.hij(" ",e.name," ")}}function $o(n,o){if(1&n&&(t.TgZ(0,"tr")(1,"td",6),t._uU(2),t.ALo(3,"filename"),t.qZA(),t.TgZ(4,"td",6),t.ALo(5,"number"),t._uU(6),t.ALo(7,"filesize"),t.qZA(),t.TgZ(8,"td",6),t._uU(9),t.ALo(10,"filestatus"),t.qZA()()),2&n){const e=o.$implicit;t.xp6(1),t.s9C("title",e.path),t.xp6(1),t.Oqu(t.lcZ(3,9,e.path)),t.xp6(2),t.s9C("title",t.lcZ(5,11,e.size)),t.xp6(2),t.Oqu(t.lcZ(7,13,e.size)),t.xp6(2),t.Gre("status ",e.status,""),t.s9C("title",e.status),t.xp6(1),t.hij(" ",t.lcZ(10,15,e.status)," ")}}ct.\u0275fac=function(o){return new(o||ct)},ct.\u0275pipe=t.Yjl({name:"filestatus",type:ct,pure:!0});const he=[m.cS.RECORDING,m.cS.INJECTING,m.cS.REMUXING,m.cS.COMPLETED,m.cS.MISSING];class _t{constructor(){this.loading=!0,this.videoFileDetails=[],this.danmakuFileDetails=[],this.VideoFileStatus=m.cS,this.fileDetails=[],this.columns=[{name:"\u6587\u4ef6",sortOrder:"ascend",sortFn:(o,e)=>o.path.localeCompare(e.path),sortDirections:["ascend","descend"],filterMultiple:!1,listOfFilter:[{text:"\u89c6\u9891",value:"video"},{text:"\u5f39\u5e55",value:"danmaku"}],filterFn:(o,e)=>{switch(o){case"video":return e.path.endsWith(".flv")||e.path.endsWith(".mp4");case"danmaku":return e.path.endsWith(".xml");default:return!1}}},{name:"\u5927\u5c0f",sortOrder:null,sortFn:(o,e)=>o.size-e.size,sortDirections:["ascend","descend",null],filterMultiple:!0,listOfFilter:[],filterFn:null},{name:"\u72b6\u6001",sortOrder:null,sortFn:(o,e)=>he.indexOf(o.status)-he.indexOf(e.status),sortDirections:["ascend","descend",null],filterMultiple:!0,listOfFilter:[{text:"\u5f55\u5236\u4e2d",value:[m.cS.RECORDING]},{text:"\u5904\u7406\u4e2d",value:[m.cS.INJECTING,m.cS.REMUXING]},{text:"\u5df2\u5b8c\u6210",value:[m.cS.COMPLETED]},{text:"\u4e0d\u5b58\u5728",value:[m.cS.MISSING]}],filterFn:(o,e)=>o.some(i=>i.some(a=>a===e.status))}]}ngOnChanges(){this.fileDetails=[...this.videoFileDetails,...this.danmakuFileDetails]}trackByPath(o,e){return e.path}}_t.\u0275fac=function(o){return new(o||_t)},_t.\u0275cmp=t.Xpm({type:_t,selectors:[["app-task-file-detail"]],inputs:{loading:"loading",videoFileDetails:"videoFileDetails",danmakuFileDetails:"danmakuFileDetails"},features:[t.TTD],decls:8,vars:8,consts:[["nzTitle","\u6587\u4ef6\u8be6\u60c5",3,"nzLoading"],[3,"nzLoading","nzData","nzPageSize","nzHideOnSinglePage"],["fileDetailsTable",""],[3,"nzSortOrder","nzSortFn","nzSortDirections","nzFilters","nzFilterFn","nzFilterMultiple","nzShowFilter",4,"ngFor","ngForOf"],[4,"ngFor","ngForOf","ngForTrackBy"],[3,"nzSortOrder","nzSortFn","nzSortDirections","nzFilters","nzFilterFn","nzFilterMultiple","nzShowFilter"],[3,"title"]],template:function(o,e){if(1&o&&(t.TgZ(0,"nz-card",0)(1,"nz-table",1,2)(3,"thead")(4,"tr"),t.YNc(5,qo,2,8,"th",3),t.qZA()(),t.TgZ(6,"tbody"),t.YNc(7,$o,11,17,"tr",4),t.qZA()()()),2&o){const i=t.MAs(2);t.Q6J("nzLoading",e.loading),t.xp6(1),t.Q6J("nzLoading",e.loading)("nzData",e.fileDetails)("nzPageSize",8)("nzHideOnSinglePage",!0),t.xp6(4),t.Q6J("ngForOf",e.columns),t.xp6(2),t.Q6J("ngForOf",i.data)("ngForTrackBy",e.trackByPath)}},dependencies:[c.sg,E.bd,L.N8,L.qD,L.Uo,L._C,L.Om,L.p0,L.$Z,c.JJ,J,G,ct],styles:[".status.recording[_ngcontent-%COMP%]{color:red}.status.injecting[_ngcontent-%COMP%], .status.remuxing[_ngcontent-%COMP%]{color:#00f}.status.completed[_ngcontent-%COMP%]{color:green}.status.missing[_ngcontent-%COMP%]{color:gray}.status.broken[_ngcontent-%COMP%]{color:orange}"],changeDetection:0});class ut{constructor(){this.loading=!0}ngOnInit(){}}function jo(n,o){if(1&n&&(t.TgZ(0,"span",18),t._uU(1),t.qZA()),2&n){const e=t.oxw();t.xp6(1),t.hij("",e.roomInfo.short_room_id," ")}}function Vo(n,o){1&n&&(t.ynx(0),t._uU(1,"\u95f2\u7f6e"),t.BQk())}function Ho(n,o){1&n&&(t.ynx(0),t._uU(1,"\u76f4\u64ad\u4e2d"),t.BQk())}function Xo(n,o){1&n&&(t.ynx(0),t._uU(1,"\u8f6e\u64ad\u4e2d"),t.BQk())}function ti(n,o){if(1&n&&(t.ynx(0),t._uU(1),t.ALo(2,"date"),t.BQk()),2&n){const e=t.oxw();t.xp6(1),t.hij(" ",t.Dn7(2,1,1e3*e.roomInfo.live_start_time,"YYYY-MM-dd HH:mm:ss","+8")," ")}}function ei(n,o){if(1&n&&(t.TgZ(0,"nz-tag"),t._uU(1),t.qZA()),2&n){const e=o.$implicit;t.xp6(1),t.hij(" ",e," ")}}function ni(n,o){if(1&n&&(t.TgZ(0,"p"),t._uU(1),t.qZA()),2&n){const e=o.$implicit;t.xp6(1),t.Oqu(e)}}ut.\u0275fac=function(o){return new(o||ut)},ut.\u0275cmp=t.Xpm({type:ut,selectors:[["app-task-user-info-detail"]],inputs:{loading:"loading",userInfo:"userInfo"},decls:12,vars:6,consts:[["nzTitle","\u4e3b\u64ad\u4fe1\u606f",3,"nzLoading"],["nzTitle",""],["nzTitle","\u6635\u79f0"],["nzTitle","\u6027\u522b"],["nzTitle","UID"],["nzTitle","\u7b49\u7ea7"],["nzTitle","\u7b7e\u540d"]],template:function(o,e){1&o&&(t.TgZ(0,"nz-card",0)(1,"nz-descriptions",1)(2,"nz-descriptions-item",2),t._uU(3),t.qZA(),t.TgZ(4,"nz-descriptions-item",3),t._uU(5),t.qZA(),t.TgZ(6,"nz-descriptions-item",4),t._uU(7),t.qZA(),t.TgZ(8,"nz-descriptions-item",5),t._uU(9),t.qZA(),t.TgZ(10,"nz-descriptions-item",6),t._uU(11),t.qZA()()()),2&o&&(t.Q6J("nzLoading",e.loading),t.xp6(3),t.Oqu(e.userInfo.name),t.xp6(2),t.Oqu(e.userInfo.gender),t.xp6(2),t.Oqu(e.userInfo.uid),t.xp6(2),t.Oqu(e.userInfo.level),t.xp6(2),t.hij(" ",e.userInfo.sign," "))},dependencies:[E.bd,se,Nt],changeDetection:0});class pt{constructor(){this.loading=!0}ngOnInit(){}}pt.\u0275fac=function(o){return new(o||pt)},pt.\u0275cmp=t.Xpm({type:pt,selectors:[["app-task-room-info-detail"]],inputs:{loading:"loading",roomInfo:"roomInfo"},decls:24,vars:13,consts:[["nzTitle","\u76f4\u64ad\u95f4\u4fe1\u606f",3,"nzLoading"],["nzTitle",""],["nzTitle","\u6807\u9898"],["nzTitle","\u5206\u533a"],["nzTitle","\u623f\u95f4\u53f7"],[1,"room-id-wrapper"],["class","short-room-id",4,"ngIf"],[1,"real-room-id"],["nzTitle","\u72b6\u6001"],[3,"ngSwitch"],[4,"ngSwitchCase"],["nzTitle","\u5f00\u64ad\u65f6\u95f4"],[4,"ngIf"],["nzTitle","\u6807\u7b7e"],[1,"tags"],[4,"ngFor","ngForOf"],["nzTitle","\u7b80\u4ecb"],[1,"introduction"],[1,"short-room-id"]],template:function(o,e){1&o&&(t.TgZ(0,"nz-card",0)(1,"nz-descriptions",1)(2,"nz-descriptions-item",2),t._uU(3),t.qZA(),t.TgZ(4,"nz-descriptions-item",3),t._uU(5),t.qZA(),t.TgZ(6,"nz-descriptions-item",4)(7,"span",5),t.YNc(8,jo,2,1,"span",6),t.TgZ(9,"span",7),t._uU(10),t.qZA()()(),t.TgZ(11,"nz-descriptions-item",8),t.ynx(12,9),t.YNc(13,Vo,2,0,"ng-container",10),t.YNc(14,Ho,2,0,"ng-container",10),t.YNc(15,Xo,2,0,"ng-container",10),t.BQk(),t.qZA(),t.TgZ(16,"nz-descriptions-item",11),t.YNc(17,ti,3,5,"ng-container",12),t.qZA(),t.TgZ(18,"nz-descriptions-item",13)(19,"div",14),t.YNc(20,ei,2,1,"nz-tag",15),t.qZA()(),t.TgZ(21,"nz-descriptions-item",16)(22,"div",17),t.YNc(23,ni,2,1,"p",15),t.qZA()()()()),2&o&&(t.Q6J("nzLoading",e.loading),t.xp6(3),t.Oqu(e.roomInfo.title),t.xp6(2),t.AsE(" ",e.roomInfo.parent_area_name," - ",e.roomInfo.area_name," "),t.xp6(3),t.Q6J("ngIf",e.roomInfo.short_room_id),t.xp6(2),t.hij(" ",e.roomInfo.room_id," "),t.xp6(2),t.Q6J("ngSwitch",e.roomInfo.live_status),t.xp6(1),t.Q6J("ngSwitchCase",0),t.xp6(1),t.Q6J("ngSwitchCase",1),t.xp6(1),t.Q6J("ngSwitchCase",2),t.xp6(2),t.Q6J("ngIf",0!==e.roomInfo.live_start_time),t.xp6(3),t.Q6J("ngForOf",e.roomInfo.tags.split(",")),t.xp6(3),t.Q6J("ngForOf",e.roomInfo.description.split("\n")))},dependencies:[c.sg,c.O5,c.RF,c.n9,E.bd,Wt,se,Nt,c.uU],styles:['.room-id-wrapper[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap}.room-id-wrapper[_ngcontent-%COMP%] .short-room-id[_ngcontent-%COMP%]:after{display:inline-block;width:1em;content:","}.tags[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;row-gap:.5em}.introduction[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;padding:0}'],changeDetection:0});class H{transform(o){return o&&0!==o.total?Math.round(o.count/o.total*100):0}}H.\u0275fac=function(o){return new(o||H)},H.\u0275pipe=t.Yjl({name:"progress",type:H,pure:!0});class gt{constructor(){this.loading=!0}ngOnInit(){}get title(){switch(this.taskStatus.postprocessor_status){case m.ii.INJECTING:return"\u66f4\u65b0 FLV \u5143\u6570\u636e";case m.ii.REMUXING:return"\u8f6c\u6362 FLV \u4e3a MP4";default:return"\u6587\u4ef6\u5904\u7406"}}}gt.\u0275fac=function(o){return new(o||gt)},gt.\u0275cmp=t.Xpm({type:gt,selectors:[["app-task-postprocessing-detail"]],inputs:{loading:"loading",taskStatus:"taskStatus"},decls:6,vars:9,consts:[[3,"nzTitle","nzLoading"],[3,"title"],["nzStatus","active",3,"nzPercent"]],template:function(o,e){if(1&o&&(t.TgZ(0,"nz-card",0)(1,"p",1),t._uU(2),t.ALo(3,"filename"),t.qZA(),t._UZ(4,"nz-progress",2),t.ALo(5,"progress"),t.qZA()),2&o){let i;t.Q6J("nzTitle",e.title)("nzLoading",e.loading),t.xp6(1),t.Q6J("title",e.taskStatus.postprocessing_path),t.xp6(1),t.hij(" ",t.lcZ(3,5,null!==(i=e.taskStatus.postprocessing_path)&&void 0!==i?i:"")," "),t.xp6(2),t.Q6J("nzPercent",null===e.taskStatus.postprocessing_progress?0:t.lcZ(5,7,e.taskStatus.postprocessing_progress))}},dependencies:[E.bd,ne,H,G],styles:["p[_ngcontent-%COMP%]{margin:0}"],changeDetection:0});var X=r(2134);class tt{transform(o){return(0,X.LU)(o,!0)}}tt.\u0275fac=function(o){return new(o||tt)},tt.\u0275pipe=t.Yjl({name:"duration",type:tt,pure:!0});var Rt=r(3692),fe=r(3520);function oi(n,o){if(1&n&&(t._uU(0),t.ALo(1,"duration")),2&n){const e=t.oxw();t.Oqu(t.lcZ(1,1,e.taskStatus.rec_elapsed))}}function ii(n,o){if(1&n&&(t._uU(0),t.ALo(1,"datarate")),2&n){const e=t.oxw();t.Oqu(t.lcZ(1,1,e.taskStatus.rec_rate))}}const ai=function(){return{spacer:" "}};function si(n,o){if(1&n&&(t._uU(0),t.ALo(1,"filesize")),2&n){const e=t.oxw();t.Oqu(t.xi3(1,1,e.taskStatus.rec_total,t.DdM(4,ai)))}}function ri(n,o){if(1&n&&(t._uU(0),t.ALo(1,"quality")),2&n){const e=t.oxw();t.Oqu(e.taskStatus.real_quality_number?t.lcZ(1,1,e.taskStatus.real_quality_number)+" ("+e.taskStatus.real_quality_number+")":"")}}class dt{constructor(o){this.changeDetector=o,this.loading=!0,this.initialChartOptions={},this.updatedChartOptions={},this.chartData=[],this.initChartOptions()}ngOnChanges(){this.taskStatus.running_status===m.cG.RECORDING&&this.updateChartOptions()}initChartOptions(){const o=Date.now();for(let e=59;e>=0;e--){const i=new Date(o-1e3*e);this.chartData.push({name:i.toLocaleString("zh-CN",{hour12:!1}),value:[i.toISOString(),0]})}this.initialChartOptions={title:{},tooltip:{trigger:"axis",formatter:e=>{const i=e[0];return`\n <div>\n <div>\n ${new Date(i.name).toLocaleTimeString("zh-CN",{hour12:!1})}\n </div>\n <div>${(0,X.N4)(i.value[1])}</div>\n </div>\n `},axisPointer:{animation:!1}},xAxis:{type:"time",name:"\u65f6\u95f4",min:"dataMin",max:"dataMax",splitLine:{show:!0}},yAxis:{type:"value",name:"\u5f55\u5236\u901f\u5ea6",splitLine:{show:!0},axisLabel:{formatter:e=>(0,X.N4)(e)}},series:[{name:"\u5f55\u5236\u901f\u5ea6",type:"line",showSymbol:!1,smooth:!0,lineStyle:{width:1},areaStyle:{opacity:.2},data:this.chartData}]}}updateChartOptions(){const o=new Date;this.chartData.push({name:o.toLocaleString("zh-CN",{hour12:!1}),value:[o.toISOString(),this.taskStatus.rec_rate]}),this.chartData.shift(),this.updatedChartOptions={series:[{data:this.chartData}]},this.changeDetector.markForCheck()}}function li(n,o){if(1&n&&t._uU(0),2&n){const e=t.oxw();t.Oqu(e.taskStatus.stream_host)}}function ci(n,o){if(1&n&&t._uU(0),2&n){const e=t.oxw();t.Oqu(e.taskStatus.real_stream_format)}}dt.\u0275fac=function(o){return new(o||dt)(t.Y36(t.sBO))},dt.\u0275cmp=t.Xpm({type:dt,selectors:[["app-task-recording-detail"]],inputs:{loading:"loading",taskStatus:"taskStatus"},features:[t.TTD],decls:17,vars:17,consts:[["nzTitle","\u5f55\u5236\u8be6\u60c5",3,"nzLoading"],[1,"statistics"],[3,"nzTitle","nzValueTemplate"],["recordingElapsed",""],["recordingRate",""],["recordedTotal",""],["recordingQuality",""],[3,"nzTitle","nzValue"],["echarts","",1,"rec-rate-chart",3,"loading","options","merge"]],template:function(o,e){if(1&o&&(t.TgZ(0,"nz-card",0)(1,"div",1),t._UZ(2,"nz-statistic",2),t.YNc(3,oi,2,3,"ng-template",null,3,t.W1O),t._UZ(5,"nz-statistic",2),t.YNc(6,ii,2,3,"ng-template",null,4,t.W1O),t._UZ(8,"nz-statistic",2),t.YNc(9,si,2,5,"ng-template",null,5,t.W1O),t._UZ(11,"nz-statistic",2),t.YNc(12,ri,2,3,"ng-template",null,6,t.W1O),t._UZ(14,"nz-statistic",7),t.ALo(15,"number"),t.qZA(),t._UZ(16,"div",8),t.qZA()),2&o){const i=t.MAs(4),a=t.MAs(7),s=t.MAs(10),d=t.MAs(13);t.Q6J("nzLoading",e.loading),t.xp6(2),t.Q6J("nzTitle","\u5f55\u5236\u7528\u65f6")("nzValueTemplate",i),t.xp6(3),t.Q6J("nzTitle","\u5f55\u5236\u901f\u5ea6")("nzValueTemplate",a),t.xp6(3),t.Q6J("nzTitle","\u5f55\u5236\u603b\u8ba1")("nzValueTemplate",s),t.xp6(3),t.Q6J("nzTitle","\u5f55\u5236\u753b\u8d28")("nzValueTemplate",d),t.xp6(3),t.Q6J("nzTitle","\u5f39\u5e55\u603b\u8ba1")("nzValue",t.xi3(15,14,e.taskStatus.danmu_total,"1.0-2")),t.xp6(2),t.Q6J("loading",e.loading)("options",e.initialChartOptions)("merge",e.updatedChartOptions)}},dependencies:[E.bd,ie,ue,c.JJ,tt,Rt.f,J,fe.U],styles:[".statistics[_ngcontent-%COMP%]{--grid-width: 200px;display:grid;grid-template-columns:repeat(auto-fill,var(--grid-width));gap:1em;justify-content:center;margin:0 auto}@media screen and (max-width: 1024px){.statistics[_ngcontent-%COMP%]{--grid-width: 180px}}@media screen and (max-width: 720px){.statistics[_ngcontent-%COMP%]{--grid-width: 160px}}@media screen and (max-width: 680px){.statistics[_ngcontent-%COMP%]{--grid-width: 140px}}@media screen and (max-width: 480px){.statistics[_ngcontent-%COMP%]{--grid-width: 120px}}.rec-rate-chart[_ngcontent-%COMP%]{width:100%;height:300px;margin:0}"],changeDetection:0});const _i=function(){return{bitrate:!0}};function ui(n,o){if(1&n&&(t._uU(0),t.ALo(1,"datarate")),2&n){const e=t.oxw();t.Oqu(t.xi3(1,1,8*e.taskStatus.dl_rate,t.DdM(4,_i)))}}const pi=function(){return{spacer:" "}};function gi(n,o){if(1&n&&(t._uU(0),t.ALo(1,"filesize")),2&n){const e=t.oxw();t.Oqu(t.xi3(1,1,e.taskStatus.dl_total,t.DdM(4,pi)))}}class mt{constructor(o){this.changeDetector=o,this.loading=!0,this.initialChartOptions={},this.updatedChartOptions={},this.chartData=[],this.initChartOptions()}ngOnChanges(){this.taskStatus.running_status===m.cG.RECORDING&&this.updateChartOptions()}initChartOptions(){const o=Date.now();for(let e=59;e>=0;e--){const i=new Date(o-1e3*e);this.chartData.push({name:i.toLocaleString("zh-CN",{hour12:!1}),value:[i.toISOString(),0]})}this.initialChartOptions={title:{},tooltip:{trigger:"axis",formatter:e=>{const i=e[0];return`\n <div>\n <div>\n ${new Date(i.name).toLocaleTimeString("zh-CN",{hour12:!1})}\n </div>\n <div>${(0,X.AX)(i.value[1])}</div>\n </div>\n `},axisPointer:{animation:!1}},xAxis:{type:"time",name:"\u65f6\u95f4",min:"dataMin",max:"dataMax",splitLine:{show:!0}},yAxis:{type:"value",name:"\u4e0b\u8f7d\u901f\u5ea6",splitLine:{show:!0},axisLabel:{formatter:function(e){return(0,X.AX)(e)}}},series:[{name:"\u4e0b\u8f7d\u901f\u5ea6",type:"line",showSymbol:!1,smooth:!0,lineStyle:{width:1},areaStyle:{opacity:.2},data:this.chartData}]}}updateChartOptions(){const o=new Date;this.chartData.push({name:o.toLocaleString("zh-CN",{hour12:!1}),value:[o.toISOString(),8*this.taskStatus.dl_rate]}),this.chartData.shift(),this.updatedChartOptions={series:[{data:this.chartData}]},this.changeDetector.markForCheck()}}function di(n,o){if(1&n&&t._UZ(0,"app-task-user-info-detail",6),2&n){const e=t.oxw(2);t.Q6J("loading",e.loading)("userInfo",e.taskData.user_info)}}function mi(n,o){if(1&n&&t._UZ(0,"app-task-room-info-detail",7),2&n){const e=t.oxw(2);t.Q6J("loading",e.loading)("roomInfo",e.taskData.room_info)}}function hi(n,o){if(1&n&&t._UZ(0,"app-task-recording-detail",8),2&n){const e=t.oxw(2);t.Q6J("loading",e.loading)("taskStatus",e.taskData.task_status)}}function fi(n,o){if(1&n&&t._UZ(0,"app-task-network-detail",8),2&n){const e=t.oxw(2);t.Q6J("loading",e.loading)("taskStatus",e.taskData.task_status)}}function Ci(n,o){if(1&n&&t._UZ(0,"app-task-postprocessing-detail",8),2&n){const e=t.oxw(2);t.Q6J("loading",e.loading)("taskStatus",e.taskData.task_status)}}function zi(n,o){if(1&n&&(t.YNc(0,di,1,2,"app-task-user-info-detail",2),t.YNc(1,mi,1,2,"app-task-room-info-detail",3),t.YNc(2,hi,1,2,"app-task-recording-detail",4),t.YNc(3,fi,1,2,"app-task-network-detail",4),t.YNc(4,Ci,1,2,"app-task-postprocessing-detail",4),t._UZ(5,"app-task-file-detail",5)),2&n){const e=t.oxw();t.Q6J("ngIf",e.taskData),t.xp6(1),t.Q6J("ngIf",e.taskData),t.xp6(1),t.Q6J("ngIf",e.taskData),t.xp6(1),t.Q6J("ngIf",e.taskData),t.xp6(1),t.Q6J("ngIf",null==e.taskData||null==e.taskData.task_status?null:e.taskData.task_status.postprocessing_path),t.xp6(1),t.Q6J("loading",e.loading)("videoFileDetails",e.videoFileDetails)("danmakuFileDetails",e.danmakuFileDetails)}}mt.\u0275fac=function(o){return new(o||mt)(t.Y36(t.sBO))},mt.\u0275cmp=t.Xpm({type:mt,selectors:[["app-task-network-detail"]],inputs:{loading:"loading",taskStatus:"taskStatus"},features:[t.TTD],decls:15,vars:12,consts:[["nzTitle","\u7f51\u7edc\u8be6\u60c5",3,"nzLoading"],[1,"statistics"],[1,"stream-host",3,"nzTitle","nzValueTemplate"],["streamHost",""],[3,"nzTitle","nzValueTemplate"],["realStreamFormat",""],["downloadRate",""],["downloadTotal",""],["echarts","",1,"dl-rate-chart",3,"loading","options","merge"]],template:function(o,e){if(1&o&&(t.TgZ(0,"nz-card",0)(1,"div",1),t._UZ(2,"nz-statistic",2),t.YNc(3,li,1,1,"ng-template",null,3,t.W1O),t._UZ(5,"nz-statistic",4),t.YNc(6,ci,1,1,"ng-template",null,5,t.W1O),t._UZ(8,"nz-statistic",4),t.YNc(9,ui,2,5,"ng-template",null,6,t.W1O),t._UZ(11,"nz-statistic",4),t.YNc(12,gi,2,5,"ng-template",null,7,t.W1O),t.qZA(),t._UZ(14,"div",8),t.qZA()),2&o){const i=t.MAs(4),a=t.MAs(7),s=t.MAs(10),d=t.MAs(13);t.Q6J("nzLoading",e.loading),t.xp6(2),t.Q6J("nzTitle","\u6d41\u4e3b\u673a")("nzValueTemplate",i),t.xp6(3),t.Q6J("nzTitle","\u6d41\u683c\u5f0f")("nzValueTemplate",a),t.xp6(3),t.Q6J("nzTitle","\u4e0b\u8f7d\u901f\u5ea6")("nzValueTemplate",s),t.xp6(3),t.Q6J("nzTitle","\u4e0b\u8f7d\u603b\u8ba1")("nzValueTemplate",d),t.xp6(3),t.Q6J("loading",e.loading)("options",e.initialChartOptions)("merge",e.updatedChartOptions)}},dependencies:[E.bd,ie,ue,Rt.f,J],styles:[".statistics[_ngcontent-%COMP%]{--grid-width: 200px;display:grid;grid-template-columns:repeat(auto-fill,var(--grid-width));gap:1em;justify-content:center;margin:0 auto}@media screen and (max-width: 1024px){.statistics[_ngcontent-%COMP%]{--grid-width: 180px}}@media screen and (max-width: 720px){.statistics[_ngcontent-%COMP%]{--grid-width: 160px}}@media screen and (max-width: 680px){.statistics[_ngcontent-%COMP%]{--grid-width: 140px}}@media screen and (max-width: 480px){.statistics[_ngcontent-%COMP%]{--grid-width: 120px}}.stream-host[_ngcontent-%COMP%]{grid-column:1/3;grid-row:1}.dl-rate-chart[_ngcontent-%COMP%]{width:100%;height:300px;margin:0}"],changeDetection:0});const Ti=function(){return{"max-width":"unset"}},xi=function(){return{"row-gap":"1em"}};class ht{constructor(o,e,i,a,s){this.route=o,this.router=e,this.changeDetector=i,this.notification=a,this.taskService=s,this.videoFileDetails=[],this.danmakuFileDetails=[],this.loading=!0}ngOnInit(){this.route.paramMap.subscribe(o=>{this.roomId=parseInt(o.get("id")),this.syncData()})}ngOnDestroy(){this.desyncData()}syncData(){this.dataSubscription=(0,w.of)((0,w.of)(0),(0,pe.F)(1e3)).pipe((0,de.u)(),(0,st.w)(()=>(0,ge.$)(this.taskService.getTaskData(this.roomId),this.taskService.getVideoFileDetails(this.roomId),this.taskService.getDanmakuFileDetails(this.roomId))),(0,lt.K)(o=>{throw this.notification.error("\u83b7\u53d6\u4efb\u52a1\u6570\u636e\u51fa\u9519",o.message),o}),(0,Bt.X)(10,3e3)).subscribe(([o,e,i])=>{this.loading=!1,this.taskData=o,this.videoFileDetails=e,this.danmakuFileDetails=i,this.changeDetector.markForCheck()},o=>{this.notification.error("\u83b7\u53d6\u4efb\u52a1\u6570\u636e\u51fa\u9519","\u7f51\u7edc\u8fde\u63a5\u5f02\u5e38, \u8bf7\u5f85\u7f51\u7edc\u6b63\u5e38\u540e\u5237\u65b0\u3002",{nzDuration:0})})}desyncData(){this.dataSubscription?.unsubscribe()}}ht.\u0275fac=function(o){return new(o||ht)(t.Y36(rt.gz),t.Y36(rt.F0),t.Y36(t.sBO),t.Y36(me.zb),t.Y36(Ut.M))},ht.\u0275cmp=t.Xpm({type:ht,selectors:[["app-task-detail"]],decls:2,vars:5,consts:[["pageTitle","\u4efb\u52a1\u8be6\u60c5",3,"loading","pageStyles","contentStyles"],["appSubPageContent",""],[3,"loading","userInfo",4,"ngIf"],[3,"loading","roomInfo",4,"ngIf"],[3,"loading","taskStatus",4,"ngIf"],[3,"loading","videoFileDetails","danmakuFileDetails"],[3,"loading","userInfo"],[3,"loading","roomInfo"],[3,"loading","taskStatus"]],template:function(o,e){1&o&&(t.TgZ(0,"app-sub-page",0),t.YNc(1,zi,6,8,"ng-template",1),t.qZA()),2&o&&t.Q6J("loading",e.loading)("pageStyles",t.DdM(3,Ti))("contentStyles",t.DdM(4,xi))},dependencies:[c.O5,Ko.Y,Go.q,_t,ut,pt,gt,dt,mt],changeDetection:0});var Ce=r(2323),Lt=r(7044),Di=r(1664),ki=r(8372),Mi=r(1884),W=r(4004);const ft=["(max-width: 534.98px)","(min-width: 535px) and (max-width: 1199.98px)","(min-width: 1200px)"];var Jt=r(9651);class Q{constructor(o,e){this.message=o,this.taskService=e}getAllTaskRoomIds(){return this.taskService.getAllTaskData().pipe((0,W.U)(o=>o.map(e=>e.room_info.room_id)))}updateTaskInfo(o){return this.taskService.updateTaskInfo(o).pipe((0,v.b)(()=>{this.message.success(`[${o}] \u6210\u529f\u5237\u65b0\u4efb\u52a1\u7684\u6570\u636e`)},e=>{this.message.error(`[${o}] \u5237\u65b0\u4efb\u52a1\u7684\u6570\u636e\u51fa\u9519: ${e.message}`)}))}updateAllTaskInfos(){return this.taskService.updateAllTaskInfos().pipe((0,v.b)(()=>{this.message.success("\u6210\u529f\u5237\u65b0\u5168\u90e8\u4efb\u52a1\u7684\u6570\u636e")},o=>{this.message.error(`\u5237\u65b0\u5168\u90e8\u4efb\u52a1\u7684\u6570\u636e\u51fa\u9519: ${o.message}`)}))}addTask(o){return this.taskService.addTask(o).pipe((0,W.U)(e=>({type:"success",message:"\u6210\u529f\u6dfb\u52a0\u4efb\u52a1"})),(0,lt.K)(e=>{let i;return i=409==e.status?{type:"error",message:"\u4efb\u52a1\u5df2\u5b58\u5728\uff0c\u4e0d\u80fd\u91cd\u590d\u6dfb\u52a0\u3002"}:403==e.status?{type:"warning",message:"\u4efb\u52a1\u6570\u91cf\u8d85\u8fc7\u9650\u5236\uff0c\u4e0d\u80fd\u6dfb\u52a0\u4efb\u52a1\u3002"}:404==e.status?{type:"error",message:"\u76f4\u64ad\u95f4\u4e0d\u5b58\u5728"}:{type:"error",message:`\u6dfb\u52a0\u4efb\u52a1\u51fa\u9519: ${e.message}`},(0,w.of)(i)}),(0,W.U)(e=>(e.message=`${o}: ${e.message}`,e)),(0,v.b)(e=>{this.message[e.type](e.message)}))}removeTask(o){return this.taskService.removeTask(o).pipe((0,v.b)(()=>{this.message.success(`[${o}] \u4efb\u52a1\u5df2\u5220\u9664`)},e=>{this.message.error(`[${o}] \u5220\u9664\u4efb\u52a1\u51fa\u9519: ${e.message}`)}))}removeAllTasks(){const o=this.message.loading("\u6b63\u5728\u5220\u9664\u5168\u90e8\u4efb\u52a1...",{nzDuration:0}).messageId;return this.taskService.removeAllTasks().pipe((0,v.b)(()=>{this.message.remove(o),this.message.success("\u6210\u529f\u5220\u9664\u5168\u90e8\u4efb\u52a1")},e=>{this.message.remove(o),this.message.error(`\u5220\u9664\u5168\u90e8\u4efb\u52a1\u51fa\u9519: ${e.message}`)}))}startTask(o){const e=this.message.loading(`[${o}] \u6b63\u5728\u8fd0\u884c\u4efb\u52a1...`,{nzDuration:0}).messageId;return this.taskService.startTask(o).pipe((0,v.b)(()=>{this.message.remove(e),this.message.success(`[${o}] \u6210\u529f\u8fd0\u884c\u4efb\u52a1`)},i=>{this.message.remove(e),this.message.error(`[${o}] \u8fd0\u884c\u4efb\u52a1\u51fa\u9519: ${i.message}`)}))}startAllTasks(){const o=this.message.loading("\u6b63\u5728\u8fd0\u884c\u5168\u90e8\u4efb\u52a1...",{nzDuration:0}).messageId;return this.taskService.startAllTasks().pipe((0,v.b)(()=>{this.message.remove(o),this.message.success("\u6210\u529f\u8fd0\u884c\u5168\u90e8\u4efb\u52a1")},e=>{this.message.remove(o),this.message.error(`\u8fd0\u884c\u5168\u90e8\u4efb\u52a1\u51fa\u9519: ${e.message}`)}))}stopTask(o,e=!1){const i=this.message.loading(`[${o}] \u6b63\u5728\u505c\u6b62\u4efb\u52a1...`,{nzDuration:0}).messageId;return this.taskService.stopTask(o,e).pipe((0,v.b)(()=>{this.message.remove(i),this.message.success(`[${o}] \u6210\u529f\u505c\u6b62\u4efb\u52a1`)},a=>{this.message.remove(i),this.message.error(`[${o}] \u505c\u6b62\u4efb\u52a1\u51fa\u9519: ${a.message}`)}))}stopAllTasks(o=!1){const e=this.message.loading("\u6b63\u5728\u505c\u6b62\u5168\u90e8\u4efb\u52a1...",{nzDuration:0}).messageId;return this.taskService.stopAllTasks(o).pipe((0,v.b)(()=>{this.message.remove(e),this.message.success("\u6210\u529f\u505c\u6b62\u5168\u90e8\u4efb\u52a1")},i=>{this.message.remove(e),this.message.error(`\u505c\u6b62\u5168\u90e8\u4efb\u52a1\u51fa\u9519: ${i.message}`)}))}enableRecorder(o){const e=this.message.loading(`[${o}] \u6b63\u5728\u5f00\u542f\u5f55\u5236...`,{nzDuration:0}).messageId;return this.taskService.enableTaskRecorder(o).pipe((0,v.b)(()=>{this.message.remove(e),this.message.success(`[${o}] \u6210\u529f\u5f00\u542f\u5f55\u5236`)},i=>{this.message.remove(e),this.message.error(`[${o}] \u5f00\u542f\u5f55\u5236\u51fa\u9519: ${i.message}`)}))}enableAllRecorders(){const o=this.message.loading("\u6b63\u5728\u5f00\u542f\u5168\u90e8\u4efb\u52a1\u7684\u5f55\u5236...",{nzDuration:0}).messageId;return this.taskService.enableAllRecorders().pipe((0,v.b)(()=>{this.message.remove(o),this.message.success("\u6210\u529f\u5f00\u542f\u5168\u90e8\u4efb\u52a1\u7684\u5f55\u5236")},e=>{this.message.remove(o),this.message.error(`\u5f00\u542f\u5168\u90e8\u4efb\u52a1\u7684\u5f55\u5236\u51fa\u9519: ${e.message}`)}))}disableRecorder(o,e=!1){const i=this.message.loading(`[${o}] \u6b63\u5728\u5173\u95ed\u5f55\u5236...`,{nzDuration:0}).messageId;return this.taskService.disableTaskRecorder(o,e).pipe((0,v.b)(()=>{this.message.remove(i),this.message.success(`[${o}] \u6210\u529f\u5173\u95ed\u5f55\u5236`)},a=>{this.message.remove(i),this.message.error(`[${o}] \u5173\u95ed\u5f55\u5236\u51fa\u9519: ${a.message}`)}))}disableAllRecorders(o=!1){const e=this.message.loading("\u6b63\u5728\u5173\u95ed\u5168\u90e8\u4efb\u52a1\u7684\u5f55\u5236...",{nzDuration:0}).messageId;return this.taskService.disableAllRecorders(o).pipe((0,v.b)(()=>{this.message.remove(e),this.message.success("\u6210\u529f\u5173\u95ed\u5168\u90e8\u4efb\u52a1\u7684\u5f55\u5236")},i=>{this.message.remove(e),this.message.error(`\u5173\u95ed\u5168\u90e8\u4efb\u52a1\u7684\u5f55\u5236\u51fa\u9519: ${i.message}`)}))}canCutStream(o){return this.taskService.canCutStream(o).pipe((0,v.b)(e=>{e||this.message.warning(`[${o}] \u4e0d\u652f\u6301\u6587\u4ef6\u5207\u5272~`)}))}cutStream(o){return this.taskService.cutStream(o).pipe((0,v.b)(()=>{this.message.success(`[${o}] \u6587\u4ef6\u5207\u5272\u5df2\u89e6\u53d1`)},e=>{403==e.status?this.message.warning(`[${o}] \u65f6\u957f\u592a\u77ed\u4e0d\u80fd\u5207\u5272\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002`):this.message.error(`[${o}] \u5207\u5272\u6587\u4ef6\u51fa\u9519: ${e.message}`)}))}}Q.\u0275fac=function(o){return new(o||Q)(t.LFG(Jt.dD),t.LFG(Ut.M))},Q.\u0275prov=t.Yz7({token:Q,factory:Q.\u0275fac,providedIn:"root"});var Ct=r(3325);function Oi(n,o){if(1&n&&(t.ynx(0),t.GkF(1,8),t._UZ(2,"nz-divider",13),t.GkF(3,8),t._UZ(4,"nz-divider",13),t.GkF(5,8),t._UZ(6,"nz-divider",13),t.GkF(7,8),t.BQk()),2&n){t.oxw();const e=t.MAs(5),i=t.MAs(9),a=t.MAs(11),s=t.MAs(13);t.xp6(1),t.Q6J("ngTemplateOutlet",e),t.xp6(2),t.Q6J("ngTemplateOutlet",i),t.xp6(2),t.Q6J("ngTemplateOutlet",a),t.xp6(2),t.Q6J("ngTemplateOutlet",s)}}function vi(n,o){if(1&n&&(t.ynx(0),t.GkF(1,8),t._UZ(2,"nz-divider",13),t.GkF(3,8),t._UZ(4,"nz-divider",13),t.GkF(5,8),t._UZ(6,"nz-divider",13),t.GkF(7,8),t.BQk()),2&n){t.oxw();const e=t.MAs(7),i=t.MAs(9),a=t.MAs(11),s=t.MAs(13);t.xp6(1),t.Q6J("ngTemplateOutlet",e),t.xp6(2),t.Q6J("ngTemplateOutlet",i),t.xp6(2),t.Q6J("ngTemplateOutlet",a),t.xp6(2),t.Q6J("ngTemplateOutlet",s)}}function Ei(n,o){if(1&n&&(t.ynx(0),t.GkF(1,8)(2,8),t.BQk()),2&n){t.oxw();const e=t.MAs(9),i=t.MAs(20);t.xp6(1),t.Q6J("ngTemplateOutlet",e),t.xp6(1),t.Q6J("ngTemplateOutlet",i)}}function Ai(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"label",16),t._uU(2),t.qZA(),t.BQk()),2&n){const e=o.$implicit;t.xp6(1),t.Q6J("nzValue",e.value),t.xp6(1),t.Oqu(e.label)}}function Pi(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-radio-group",14),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.selection=a)})("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.selectionChange.emit(a))}),t.YNc(1,Ai,3,2,"ng-container",15),t.qZA()}if(2&n){const e=t.oxw();t.Q6J("ngModel",e.selection),t.xp6(1),t.Q6J("ngForOf",e.selections)}}function yi(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-select",17),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.selection=a)})("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.selectionChange.emit(a))}),t.qZA()}if(2&n){const e=t.oxw();t.Q6J("nzOptions",e.selections)("ngModel",e.selection)}}function Si(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"i",23),t.NdJ("click",function(){t.CHM(e),t.oxw(2);const a=t.MAs(2),s=t.oxw();return a.value="",t.KtG(s.onFilterInput(""))}),t.qZA()}}function bi(n,o){if(1&n&&t.YNc(0,Si,1,0,"i",22),2&n){t.oxw();const e=t.MAs(2);t.Q6J("ngIf",e.value)}}function Fi(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-input-group",18)(1,"input",19,20),t.NdJ("input",function(){t.CHM(e);const a=t.MAs(2),s=t.oxw();return t.KtG(s.onFilterInput(a.value))}),t.qZA()(),t.YNc(3,bi,1,1,"ng-template",null,21,t.W1O)}if(2&n){const e=t.MAs(4);t.Q6J("nzSuffix",e)}}function wi(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"button",24),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.toggleReverse())}),t.TgZ(1,"span"),t._uU(2),t.qZA(),t._UZ(3,"i",25),t.qZA()}if(2&n){const e=t.oxw();t.xp6(2),t.Oqu(e.reverse?"\u5012\u5e8f":"\u6b63\u5e8f"),t.xp6(1),t.Q6J("nzType",e.reverse?"swap-left":"swap-right")("nzRotate",90)}}function Ii(n,o){if(1&n&&(t.TgZ(0,"button",26),t._UZ(1,"i",27),t.qZA()),2&n){t.oxw();const e=t.MAs(15);t.Q6J("nzDropdownMenu",e)}}function Ni(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"ul",28)(1,"li",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.startAllTasks())}),t._uU(2,"\u5168\u90e8\u8fd0\u884c"),t.qZA(),t.TgZ(3,"li",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.stopAllTasks())}),t._uU(4,"\u5168\u90e8\u505c\u6b62"),t.qZA(),t.TgZ(5,"li",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.stopAllTasks(!0))}),t._uU(6,"\u5168\u90e8\u5f3a\u5236\u505c\u6b62"),t.qZA(),t._UZ(7,"li",30),t.TgZ(8,"li",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.disableAllRecorders(!1))}),t._uU(9,"\u5168\u90e8\u5173\u95ed\u5f55\u5236"),t.qZA(),t.TgZ(10,"li",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.disableAllRecorders(!0))}),t._uU(11,"\u5168\u90e8\u5f3a\u5236\u5173\u95ed\u5f55\u5236"),t.qZA(),t._UZ(12,"li",30),t.TgZ(13,"li",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.removeAllTasks())}),t._uU(14,"\u5168\u90e8\u5220\u9664"),t.qZA(),t.TgZ(15,"li",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.updateAllTaskInfos())}),t._uU(16,"\u5168\u90e8\u5237\u65b0\u6570\u636e"),t.qZA(),t.TgZ(17,"li",29),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.copyAllTaskRoomIds())}),t._uU(18,"\u590d\u5236\u5168\u90e8\u623f\u95f4\u53f7"),t.qZA()()}}function Zi(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"button",31),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.drawerVisible=!0)}),t._UZ(1,"i",27),t.qZA()}}function Bi(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"div",35),t._UZ(2,"nz-divider",36),t.GkF(3,8),t._UZ(4,"nz-divider",37),t.TgZ(5,"div",38),t.GkF(6,8),t.qZA()(),t.BQk()),2&n){t.oxw(2);const e=t.MAs(5),i=t.MAs(11);t.xp6(3),t.Q6J("ngTemplateOutlet",e),t.xp6(3),t.Q6J("ngTemplateOutlet",i)}}function Ui(n,o){if(1&n){const e=t.EpF();t.ynx(0),t.TgZ(1,"div",39),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.menuDrawerVisible=!1)}),t.GkF(2,8),t.qZA(),t.BQk()}if(2&n){t.oxw(2);const e=t.MAs(18);t.xp6(2),t.Q6J("ngTemplateOutlet",e)}}const Ri=function(){return{padding:"0"}};function Li(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-drawer",32),t.NdJ("nzVisibleChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.drawerVisible=a)})("nzOnClose",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.drawerVisible=!1)}),t.YNc(1,Bi,7,2,"ng-container",33),t.TgZ(2,"nz-drawer",34),t.NdJ("nzVisibleChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.menuDrawerVisible=a)})("nzOnClose",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.menuDrawerVisible=!1)}),t.YNc(3,Ui,3,1,"ng-container",33),t.qZA()()}if(2&n){const e=t.oxw(),i=t.MAs(23);t.Q6J("nzTitle",i)("nzClosable",!1)("nzVisible",e.drawerVisible),t.xp6(2),t.Q6J("nzClosable",!1)("nzBodyStyle",t.DdM(6,Ri))("nzVisible",e.menuDrawerVisible)}}function Ji(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"div",40)(1,"button",31),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.menuDrawerVisible=!0)}),t._UZ(2,"i",27),t.qZA()()}}class zt{constructor(o,e,i,a,s,d){this.message=i,this.modal=a,this.clipboard=s,this.taskManager=d,this.selectionChange=new t.vpe,this.reverseChange=new t.vpe,this.filterChange=new t.vpe,this.destroyed=new F.x,this.useDrawer=!1,this.useSelector=!1,this.useRadioGroup=!0,this.drawerVisible=!1,this.menuDrawerVisible=!1,this.filterTerms=new F.x,this.selections=[{label:"\u5168\u90e8",value:m.jf.ALL},{label:"\u5f55\u5236\u4e2d",value:m.jf.RECORDING},{label:"\u5f55\u5236\u5f00",value:m.jf.RECORDER_ENABLED},{label:"\u5f55\u5236\u5173",value:m.jf.RECORDER_DISABLED},{label:"\u8fd0\u884c",value:m.jf.MONITOR_ENABLED},{label:"\u505c\u6b62",value:m.jf.MONITOR_DISABLED},{label:"\u76f4\u64ad",value:m.jf.LIVING},{label:"\u8f6e\u64ad",value:m.jf.ROUNDING},{label:"\u95f2\u7f6e",value:m.jf.PREPARING}],e.observe(ft).pipe((0,y.R)(this.destroyed)).subscribe(C=>{this.useDrawer=C.breakpoints[ft[0]],this.useSelector=C.breakpoints[ft[1]],this.useRadioGroup=C.breakpoints[ft[2]],o.markForCheck()})}ngOnInit(){this.filterTerms.pipe((0,ki.b)(300),(0,Mi.x)()).subscribe(o=>{this.filterChange.emit(o)})}ngOnDestroy(){this.destroyed.next(),this.destroyed.complete()}onFilterInput(o){this.filterTerms.next(o)}toggleReverse(){this.reverse=!this.reverse,this.reverseChange.emit(this.reverse)}removeAllTasks(){this.modal.confirm({nzTitle:"\u786e\u5b9a\u8981\u5220\u9664\u5168\u90e8\u4efb\u52a1\uff1f",nzContent:"\u6b63\u5728\u5f55\u5236\u7684\u4efb\u52a1\u5c06\u88ab\u5f3a\u5236\u505c\u6b62\uff01\u4efb\u52a1\u5220\u9664\u540e\u5c06\u4e0d\u53ef\u6062\u590d\uff01",nzOnOk:()=>new Promise((o,e)=>{this.taskManager.removeAllTasks().subscribe(o,e)})})}startAllTasks(){this.taskManager.startAllTasks().subscribe()}stopAllTasks(o=!1){o?this.modal.confirm({nzTitle:"\u786e\u5b9a\u8981\u5f3a\u5236\u505c\u6b62\u5168\u90e8\u4efb\u52a1\uff1f",nzContent:"\u6b63\u5728\u5f55\u5236\u7684\u6587\u4ef6\u4f1a\u88ab\u5f3a\u884c\u4e2d\u65ad\uff01\u786e\u5b9a\u8981\u653e\u5f03\u6b63\u5728\u5f55\u5236\u7684\u6587\u4ef6\uff1f",nzOnOk:()=>new Promise((e,i)=>{this.taskManager.stopAllTasks(o).subscribe(e,i)})}):this.taskManager.stopAllTasks().subscribe()}disableAllRecorders(o=!1){o?this.modal.confirm({nzTitle:"\u786e\u5b9a\u8981\u5f3a\u5236\u5173\u95ed\u5168\u90e8\u4efb\u52a1\u7684\u5f55\u5236\uff1f",nzContent:"\u6b63\u5728\u5f55\u5236\u7684\u6587\u4ef6\u4f1a\u88ab\u5f3a\u884c\u4e2d\u65ad\uff01\u786e\u5b9a\u8981\u653e\u5f03\u6b63\u5728\u5f55\u5236\u7684\u6587\u4ef6\uff1f",nzOnOk:()=>new Promise((e,i)=>{this.taskManager.disableAllRecorders(o).subscribe(e,i)})}):this.taskManager.disableAllRecorders().subscribe()}updateAllTaskInfos(){this.taskManager.updateAllTaskInfos().subscribe()}copyAllTaskRoomIds(){this.taskManager.getAllTaskRoomIds().pipe((0,W.U)(o=>o.join(" ")),(0,v.b)(o=>{if(!this.clipboard.copy(o))throw Error("Failed to copy text to the clipboard")})).subscribe(()=>{this.message.success("\u5168\u90e8\u623f\u95f4\u53f7\u5df2\u590d\u5236\u5230\u526a\u5207\u677f")},o=>{this.message.error("\u590d\u5236\u5168\u90e8\u623f\u95f4\u53f7\u5230\u526a\u5207\u677f\u51fa\u9519",o)})}}zt.\u0275fac=function(o){return new(o||zt)(t.Y36(t.sBO),t.Y36(h.Yg),t.Y36(Jt.dD),t.Y36(K.Sf),t.Y36(_),t.Y36(Q))},zt.\u0275cmp=t.Xpm({type:zt,selectors:[["app-toolbar"]],inputs:{selection:"selection",reverse:"reverse"},outputs:{selectionChange:"selectionChange",reverseChange:"reverseChange",filterChange:"filterChange"},decls:24,vars:7,consts:[[1,"controls-wrapper"],[4,"ngIf"],["radioGroup",""],["selector",""],["filter",""],["reorderButton",""],["menuButton",""],["dropdownMenu","nzDropdownMenu"],[3,"ngTemplateOutlet"],["menu",""],["drawerButton",""],["nzPlacement","bottom","nzHeight","auto",3,"nzTitle","nzClosable","nzVisible","nzVisibleChange","nzOnClose",4,"ngIf"],["drawerHeader",""],["nzType","vertical"],["nzButtonStyle","solid",1,"radio-group",3,"ngModel","ngModelChange"],[4,"ngFor","ngForOf"],["nz-radio-button","",3,"nzValue"],[1,"selector",3,"nzOptions","ngModel","ngModelChange"],[1,"filter",3,"nzSuffix"],["nz-input","","type","text","maxlength","18","placeholder","\u7528\u6807\u9898\u3001\u5206\u533a\u3001\u4e3b\u64ad\u540d\u3001\u623f\u95f4\u53f7\u7b5b\u9009",3,"input"],["filterInput",""],["inputClearTpl",""],["nz-icon","","class","filter-clear","nzTheme","fill","nzType","close-circle",3,"click",4,"ngIf"],["nz-icon","","nzTheme","fill","nzType","close-circle",1,"filter-clear",3,"click"],["nz-button","","nzType","text","nzSize","default",1,"reverse-button",3,"click"],["nz-icon","",3,"nzType","nzRotate"],["nz-button","","nzType","text","nzSize","default","nz-dropdown","","nzPlacement","bottomRight",1,"more-actions-button",3,"nzDropdownMenu"],["nz-icon","","nzType","more"],["nz-menu","",1,"menu"],["nz-menu-item","",3,"click"],["nz-menu-divider",""],["nz-button","","nzType","text","nzSize","default",1,"more-actions-button",3,"click"],["nzPlacement","bottom","nzHeight","auto",3,"nzTitle","nzClosable","nzVisible","nzVisibleChange","nzOnClose"],[4,"nzDrawerContent"],["nzPlacement","bottom","nzHeight","auto",3,"nzClosable","nzBodyStyle","nzVisible","nzVisibleChange","nzOnClose"],[1,"drawer-content"],["nzText","\u7b5b\u9009"],["nzText","\u6392\u5e8f"],[1,"reorder-button-wrapper"],[1,"drawer-content",3,"click"],[1,"drawer-header"]],template:function(o,e){if(1&o&&(t.TgZ(0,"div",0),t.YNc(1,Oi,8,4,"ng-container",1),t.YNc(2,vi,8,4,"ng-container",1),t.YNc(3,Ei,3,2,"ng-container",1),t.qZA(),t.YNc(4,Pi,2,2,"ng-template",null,2,t.W1O),t.YNc(6,yi,1,2,"ng-template",null,3,t.W1O),t.YNc(8,Fi,5,1,"ng-template",null,4,t.W1O),t.YNc(10,wi,4,3,"ng-template",null,5,t.W1O),t.YNc(12,Ii,2,1,"ng-template",null,6,t.W1O),t.TgZ(14,"nz-dropdown-menu",null,7),t.GkF(16,8),t.YNc(17,Ni,19,0,"ng-template",null,9,t.W1O),t.qZA(),t.YNc(19,Zi,2,0,"ng-template",null,10,t.W1O),t.YNc(21,Li,4,7,"nz-drawer",11),t.YNc(22,Ji,3,0,"ng-template",null,12,t.W1O)),2&o){const i=t.MAs(18);t.ekj("use-drawer",e.useDrawer),t.xp6(1),t.Q6J("ngIf",e.useRadioGroup),t.xp6(1),t.Q6J("ngIf",e.useSelector),t.xp6(1),t.Q6J("ngIf",e.useDrawer),t.xp6(13),t.Q6J("ngTemplateOutlet",i),t.xp6(5),t.Q6J("ngIf",e.useDrawer)}},dependencies:[c.sg,c.O5,c.tP,p.JJ,p.On,P.Ls,Ct.wO,Ct.r9,Ct.YV,j.cm,j.RR,j.wA,At.ix,Lt.w,V.Zp,V.gB,V.ke,Pt.Of,Pt.Bq,Pt.Dg,jt.g,at.Vz,at.SQ,wt.Vq],styles:[".drawer-content[_ngcontent-%COMP%] .menu[_ngcontent-%COMP%]{box-shadow:none;padding:.5em 0}.drawer-content[_ngcontent-%COMP%] .menu[_ngcontent-%COMP%] *[nz-menu-item][_ngcontent-%COMP%]{margin:0;padding:.5em 2em}.controls-wrapper[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:.2em;width:100%;padding:.2em;background:#f9f9f9;border-left:none;border-right:none}.controls-wrapper[_ngcontent-%COMP%] nz-divider[_ngcontent-%COMP%]{height:1.8em;top:0}.controls-wrapper[_ngcontent-%COMP%]:not(.use-drawer) .filter[_ngcontent-%COMP%]{max-width:18em}.controls-wrapper.use-drawer[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%]{max-width:unset;width:unset;flex:auto}.controls-wrapper[_ngcontent-%COMP%] .selector[_ngcontent-%COMP%]{min-width:6em}.reverse-button[_ngcontent-%COMP%]{padding:0 .5em}.reverse-button[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{margin:0}.more-actions-button[_ngcontent-%COMP%]{margin-left:auto;border:none;background:inherit}.more-actions-button[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:20px}.menu[_ngcontent-%COMP%] nz-divider[_ngcontent-%COMP%]{margin:0}.drawer-header[_ngcontent-%COMP%]{display:flex}.drawer-content[_ngcontent-%COMP%] .reorder-button-wrapper[_ngcontent-%COMP%], .drawer-content[_ngcontent-%COMP%] .radio-group[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(4,1fr);gap:2vw}.drawer-content[_ngcontent-%COMP%] nz-divider[_ngcontent-%COMP%]:first-of-type{margin-top:0}.drawer-content[_ngcontent-%COMP%] .radio-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{text-align:center;padding:0}"],changeDetection:0});var Qi=r(5136);class et{constructor(o){this.storage=o}getSettings(o){const e=this.storage.getData(this.getStorageKey(o));return e?JSON.parse(e)??{}:{}}updateSettings(o,e){e=Object.assign(this.getSettings(o),e);const i=JSON.stringify(e);this.storage.setData(this.getStorageKey(o),i)}getStorageKey(o){return`app-tasks-${o}`}}et.\u0275fac=function(o){return new(o||et)(t.LFG(Ce.V))},et.\u0275prov=t.Yz7({token:et,factory:et.\u0275fac,providedIn:"root"});var N=r(3523),Z=r(4960),Ki=r(6457),Gi=r(4501);function Wi(n,o){1&n&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165\u8def\u5f84\u6a21\u677f "),t.BQk())}function Yi(n,o){1&n&&(t.ynx(0),t._uU(1," \u8def\u5f84\u6a21\u677f\u6709\u9519\u8bef "),t.BQk())}function qi(n,o){if(1&n&&(t.YNc(0,Wi,2,0,"ng-container",64),t.YNc(1,Yi,2,0,"ng-container",64)),2&n){const e=o.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}function $i(n,o){1&n&&(t.TgZ(0,"p"),t._uU(1," \u81ea\u52a8\u5206\u5272\u6587\u4ef6\u4ee5\u9650\u5236\u5f55\u64ad\u6587\u4ef6\u5927\u5c0f "),t._UZ(2,"br"),t._uU(3," \u683c\u5f0f\uff1a\u6570\u5b57 + \u5355\u4f4d(GB, MB, KB, B) "),t._UZ(4,"br"),t._uU(5," \u4e0d\u81ea\u52a8\u5206\u5272\u6587\u4ef6\u8bbe\u7f6e\u4e3a "),t.TgZ(6,"strong"),t._uU(7,"0 B"),t.qZA(),t._UZ(8,"br"),t.qZA())}function ji(n,o){1&n&&(t.TgZ(0,"p"),t._uU(1," \u81ea\u52a8\u5206\u5272\u6587\u4ef6\u4ee5\u9650\u5236\u5f55\u64ad\u6587\u4ef6\u65f6\u957f "),t._UZ(2,"br"),t._uU(3," \u683c\u5f0f\uff1aHH:MM:SS "),t._UZ(4,"br"),t._uU(5," \u4e0d\u81ea\u52a8\u5206\u5272\u6587\u4ef6\u8bbe\u7f6e\u4e3a "),t.TgZ(6,"strong"),t._uU(7,"00:00:00"),t.qZA(),t._UZ(8,"br"),t.qZA())}function Vi(n,o){1&n&&(t.TgZ(0,"p"),t._uU(1," \u9009\u62e9\u8981\u5f55\u5236\u7684\u76f4\u64ad\u6d41\u683c\u5f0f "),t._UZ(2,"br"),t.TgZ(3,"b"),t._uU(4,"FLV:"),t.qZA(),t._uU(5," flv \u6d41\u5728\u7f51\u7edc\u4e0d\u7a33\u5b9a\u7684\u60c5\u51b5\u4e0b\u5bb9\u6613\u4e2d\u65ad\u4e22\u5931\u6570\u636e\u6216\u5f55\u5236\u5230\u4e8c\u538b\u753b\u8d28\u3002\u6ca1\u6709 flv \u6d41\u7684\u76f4\u64ad\u4f1a\u81ea\u52a8\u5207\u6362\u5f55\u5236 fmp4 \u6d41\u3002 "),t._UZ(6,"br"),t.TgZ(7,"b"),t._uU(8,"HLS (fmp4):"),t.qZA(),t._uU(9," hls \u6d41\u57fa\u672c\u4e0d\u53d7\u7f51\u7edc\u6ce2\u52a8\u5f71\u54cd\uff0c\u4f46\u4e0d\u662f\u6240\u6709\u76f4\u64ad\u95f4\u90fd\u652f\u6301\u3002\u6709 flv \u6d41\u7684\u76f4\u64ad\uff0c\u5728\u8bbe\u5b9a\u7684\u7b49\u5f85\u65f6\u95f4\u5185\u6ca1\u6709 fmp4 \u6d41\u4f1a\u81ea\u52a8\u5207\u6362\u5f55\u5236 flv \u6d41\u3002 "),t._UZ(10,"br"),t.TgZ(11,"b"),t._uU(12,"P.S."),t.qZA(),t._UZ(13,"br"),t._uU(14," WEB \u7aef\u76f4\u64ad\u64ad\u653e\u5668\u662f Hls7Player \u7684\u76f4\u64ad\u95f4\u652f\u6301\u5f55\u5236 fmp4 \u6d41, fMp4Player \u5219\u4e0d\u652f\u6301\u3002 "),t.qZA())}function Hi(n,o){1&n&&(t.TgZ(0,"p"),t._uU(1," \u5982\u679c\u8d85\u8fc7\u6240\u8bbe\u7f6e\u7684\u7b49\u5f85\u65f6\u95f4 fmp4 \u6d41\u8fd8\u6ca1\u6709\u5c31\u5207\u6362\u4e3a\u5f55\u5236 flv \u6d41 "),t._UZ(2,"br"),t._uU(3," fmp4 \u6d41\u5728\u521a\u63a8\u6d41\u662f\u6ca1\u6709\u7684\uff0c\u8981\u8fc7\u4e00\u4f1a\u624d\u6709\u3002 "),t._UZ(4,"br"),t._uU(5," fmp4 \u6d41\u51fa\u73b0\u7684\u65f6\u95f4\u548c\u76f4\u64ad\u5ef6\u8fdf\u6709\u5173\uff0c\u4e00\u822c\u90fd\u5728 10 \u79d2\u5185\uff0c\u4f46\u4e5f\u6709\u5ef6\u8fdf\u6bd4\u8f83\u5927\u8d85\u8fc7 1 \u5206\u949f\u7684\u3002 "),t._UZ(6,"br"),t._uU(7," \u63a8\u8350\u5168\u5c40\u8bbe\u7f6e\u4e3a 10 \u79d2\uff0c\u4e2a\u522b\u5ef6\u8fdf\u6bd4\u8f83\u5927\u7684\u76f4\u64ad\u95f4\u5355\u72ec\u8bbe\u7f6e\u3002 "),t.qZA())}function Xi(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-form-item",19)(1,"nz-form-label",11),t._uU(2,"fmp4 \u6d41\u7b49\u5f85\u65f6\u95f4"),t.qZA(),t.YNc(3,Hi,8,0,"ng-template",null,65,t.W1O),t.TgZ(5,"nz-form-control",21)(6,"nz-select",66,67),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw(2);return t.KtG(s.model.recorder.fmp4StreamTimeout=a)}),t.qZA()(),t.TgZ(8,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw(2);return t.KtG(s.options.recorder.fmp4StreamTimeout=a?s.globalSettings.recorder.fmp4StreamTimeout:null)}),t._uU(9,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()()}if(2&n){const e=t.MAs(4),i=t.oxw(2);t.xp6(1),t.Q6J("nzTooltipTitle",e),t.xp6(5),t.Q6J("ngModel",i.model.recorder.fmp4StreamTimeout)("disabled",null===i.options.recorder.fmp4StreamTimeout)("nzOptions",i.fmp4StreamTimeoutOptions),t.xp6(2),t.Q6J("nzChecked",null!==i.options.recorder.fmp4StreamTimeout)}}function ta(n,o){1&n&&(t.TgZ(0,"p"),t._uU(1," \u9ed8\u8ba4: \u6bcf\u4e2a\u5206\u5272\u7684\u5f55\u64ad\u6587\u4ef6\u5bf9\u5e94\u4fdd\u5b58\u4e00\u4e2a\u5c01\u9762\u6587\u4ef6\uff0c\u4e0d\u7ba1\u5c01\u9762\u662f\u5426\u76f8\u540c\u3002"),t._UZ(2,"br"),t._uU(3," \u53bb\u91cd: \u76f8\u540c\u7684\u5c01\u9762\u53ea\u4fdd\u5b58\u4e00\u6b21"),t._UZ(4,"br"),t._uU(5," P.S. "),t._UZ(6,"br"),t._uU(7," \u5224\u65ad\u662f\u5426\u76f8\u540c\u662f\u4f9d\u636e\u5c01\u9762\u6570\u636e\u7684 sha1\uff0c\u53ea\u5728\u5355\u6b21\u5f55\u5236\u5185\u6709\u6548\u3002 "),t.qZA())}function ea(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-form-item",19)(1,"nz-form-label",68),t._uU(2,"\u6570\u636e\u8bfb\u53d6\u8d85\u65f6"),t.qZA(),t.TgZ(3,"nz-form-control",69)(4,"nz-select",70,71),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw(2);return t.KtG(s.model.recorder.readTimeout=a)}),t.qZA()(),t.TgZ(6,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw(2);return t.KtG(s.options.recorder.readTimeout=a?s.globalSettings.recorder.readTimeout:null)}),t._uU(7,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()()}if(2&n){const e=t.MAs(5),i=t.oxw(2);t.xp6(3),t.Q6J("nzValidateStatus",e.value>3?"warning":e),t.xp6(1),t.Q6J("ngModel",i.model.recorder.readTimeout)("disabled",null===i.options.recorder.readTimeout)("nzOptions",i.readTimeoutOptions),t.xp6(2),t.Q6J("nzChecked",null!==i.options.recorder.readTimeout)}}function na(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-form-item",19)(1,"nz-form-label",72),t._uU(2,"\u786c\u76d8\u5199\u5165\u7f13\u51b2"),t.qZA(),t.TgZ(3,"nz-form-control",21)(4,"nz-select",73),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw(2);return t.KtG(s.model.recorder.bufferSize=a)}),t.qZA()(),t.TgZ(5,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw(2);return t.KtG(s.options.recorder.bufferSize=a?s.globalSettings.recorder.bufferSize:null)}),t._uU(6,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()()}if(2&n){const e=t.oxw(2);t.xp6(4),t.Q6J("ngModel",e.model.recorder.bufferSize)("disabled",null===e.options.recorder.bufferSize)("nzOptions",e.bufferOptions)("nzOptionOverflowSize",6),t.xp6(1),t.Q6J("nzChecked",null!==e.options.recorder.bufferSize)}}function oa(n,o){1&n&&(t.TgZ(0,"p"),t._uU(1," \u81ea\u52a8: \u6ca1\u51fa\u9519\u5c31\u5220\u9664\u6e90\u6587\u4ef6"),t._UZ(2,"br"),t._uU(3," \u8c28\u614e: \u6ca1\u51fa\u9519\u4e14\u6ca1\u8b66\u544a\u624d\u5220\u9664\u6e90\u6587\u4ef6"),t._UZ(4,"br"),t._uU(5," \u4ece\u4e0d: \u603b\u662f\u4fdd\u7559\u6e90\u6587\u4ef6"),t._UZ(6,"br"),t.qZA())}function ia(n,o){1&n&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 User Agent "),t.BQk())}function aa(n,o){1&n&&t.YNc(0,ia,2,0,"ng-container",64),2&n&&t.Q6J("ngIf",o.$implicit.hasError("required"))}function sa(n,o){if(1&n){const e=t.EpF();t.ynx(0),t.TgZ(1,"form",2)(2,"div",3)(3,"h2"),t._uU(4,"\u6587\u4ef6"),t.qZA(),t.TgZ(5,"nz-form-item",4)(6,"nz-form-label",5),t._uU(7,"\u8def\u5f84\u6a21\u677f"),t.qZA(),t.TgZ(8,"nz-form-control",6)(9,"input",7),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.model.output.pathTemplate=a)}),t.qZA(),t.YNc(10,qi,2,2,"ng-template",null,8,t.W1O),t.qZA(),t.TgZ(12,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.options.output.pathTemplate=a?s.globalSettings.output.pathTemplate:null)}),t._uU(13,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(14,"nz-form-item",10)(15,"nz-form-label",11),t._uU(16,"\u5927\u5c0f\u9650\u5236"),t.qZA(),t.YNc(17,$i,9,0,"ng-template",null,12,t.W1O),t.TgZ(19,"nz-form-control",13)(20,"app-input-filesize",14),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.model.output.filesizeLimit=a)}),t.qZA()(),t.TgZ(21,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.options.output.filesizeLimit=a?s.globalSettings.output.filesizeLimit:null)}),t._uU(22,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(23,"nz-form-item",15)(24,"nz-form-label",11),t._uU(25,"\u65f6\u957f\u9650\u5236"),t.qZA(),t.YNc(26,ji,9,0,"ng-template",null,16,t.W1O),t.TgZ(28,"nz-form-control",13)(29,"app-input-duration",17),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.model.output.durationLimit=a)}),t.qZA()(),t.TgZ(30,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.options.output.durationLimit=a?s.globalSettings.output.durationLimit:null)}),t._uU(31,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()()(),t.TgZ(32,"div",18)(33,"h2"),t._uU(34,"\u5f55\u5236"),t.qZA(),t.TgZ(35,"nz-form-item",19)(36,"nz-form-label",11),t._uU(37,"\u76f4\u64ad\u6d41\u683c\u5f0f"),t.qZA(),t.YNc(38,Vi,15,0,"ng-template",null,20,t.W1O),t.TgZ(40,"nz-form-control",21)(41,"nz-select",22),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.model.recorder.streamFormat=a)}),t.qZA()(),t.TgZ(42,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.options.recorder.streamFormat=a?s.globalSettings.recorder.streamFormat:null)}),t._uU(43,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.YNc(44,Xi,10,5,"nz-form-item",23),t.TgZ(45,"nz-form-item",19)(46,"nz-form-label",24),t._uU(47,"\u753b\u8d28"),t.qZA(),t.TgZ(48,"nz-form-control",21)(49,"nz-select",25),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.model.recorder.qualityNumber=a)}),t.qZA()(),t.TgZ(50,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.options.recorder.qualityNumber=a?s.globalSettings.recorder.qualityNumber:null)}),t._uU(51,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(52,"nz-form-item",19)(53,"nz-form-label",26),t._uU(54,"\u4fdd\u5b58\u5c01\u9762"),t.qZA(),t.TgZ(55,"nz-form-control",27)(56,"nz-switch",28),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.model.recorder.saveCover=a)}),t.qZA()(),t.TgZ(57,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.options.recorder.saveCover=a?s.globalSettings.recorder.saveCover:null)}),t._uU(58,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(59,"nz-form-item",19)(60,"nz-form-label",11),t._uU(61,"\u5c01\u9762\u4fdd\u5b58\u7b56\u7565"),t.qZA(),t.YNc(62,ta,8,0,"ng-template",null,29,t.W1O),t.TgZ(64,"nz-form-control",21)(65,"nz-select",30),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.model.recorder.coverSaveStrategy=a)}),t.qZA()(),t.TgZ(66,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.options.recorder.coverSaveStrategy=a?s.globalSettings.recorder.coverSaveStrategy:null)}),t._uU(67,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.YNc(68,ea,8,5,"nz-form-item",23),t.TgZ(69,"nz-form-item",19)(70,"nz-form-label",31),t._uU(71,"\u65ad\u7f51\u7b49\u5f85\u65f6\u95f4"),t.qZA(),t.TgZ(72,"nz-form-control",21)(73,"nz-select",32),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.model.recorder.disconnectionTimeout=a)}),t.qZA()(),t.TgZ(74,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.options.recorder.bufferSize=a?s.globalSettings.recorder.bufferSize:null)}),t._uU(75,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.YNc(76,na,7,5,"nz-form-item",23),t.qZA(),t.TgZ(77,"div",33)(78,"h2"),t._uU(79,"\u5f39\u5e55"),t.qZA(),t.TgZ(80,"nz-form-item",19)(81,"nz-form-label",34),t._uU(82,"\u8bb0\u5f55\u793c\u7269"),t.qZA(),t.TgZ(83,"nz-form-control",27)(84,"nz-switch",35),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.model.danmaku.recordGiftSend=a)}),t.qZA()(),t.TgZ(85,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.options.danmaku.recordGiftSend=a?s.globalSettings.danmaku.recordGiftSend:null)}),t._uU(86,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(87,"nz-form-item",19)(88,"nz-form-label",36),t._uU(89,"\u8bb0\u5f55\u514d\u8d39\u793c\u7269"),t.qZA(),t.TgZ(90,"nz-form-control",27)(91,"nz-switch",37),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.model.danmaku.recordFreeGifts=a)}),t.qZA()(),t.TgZ(92,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.options.danmaku.recordFreeGifts=a?s.globalSettings.danmaku.recordFreeGifts:null)}),t._uU(93,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(94,"nz-form-item",19)(95,"nz-form-label",38),t._uU(96,"\u8bb0\u5f55\u4e0a\u8230"),t.qZA(),t.TgZ(97,"nz-form-control",27)(98,"nz-switch",39),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.model.danmaku.recordGuardBuy=a)}),t.qZA()(),t.TgZ(99,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.options.danmaku.recordGuardBuy=a?s.globalSettings.danmaku.recordGuardBuy:null)}),t._uU(100,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(101,"nz-form-item",19)(102,"nz-form-label",40),t._uU(103,"\u8bb0\u5f55 Super Chat"),t.qZA(),t.TgZ(104,"nz-form-control",27)(105,"nz-switch",41),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.model.danmaku.recordSuperChat=a)}),t.qZA()(),t.TgZ(106,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.options.danmaku.recordSuperChat=a?s.globalSettings.danmaku.recordSuperChat:null)}),t._uU(107,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(108,"nz-form-item",19)(109,"nz-form-label",42),t._uU(110,"\u5f39\u5e55\u524d\u52a0\u7528\u6237\u540d"),t.qZA(),t.TgZ(111,"nz-form-control",27)(112,"nz-switch",43),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.model.danmaku.danmuUname=a)}),t.qZA()(),t.TgZ(113,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.options.danmaku.danmuUname=a?s.globalSettings.danmaku.danmuUname:null)}),t._uU(114,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(115,"nz-form-item",19)(116,"nz-form-label",44),t._uU(117,"\u4fdd\u5b58\u539f\u59cb\u5f39\u5e55"),t.qZA(),t.TgZ(118,"nz-form-control",27)(119,"nz-switch",45),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.model.danmaku.saveRawDanmaku=a)}),t.qZA()(),t.TgZ(120,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.options.danmaku.saveRawDanmaku=a?s.globalSettings.danmaku.saveRawDanmaku:null)}),t._uU(121,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()()(),t.TgZ(122,"div",46)(123,"h2"),t._uU(124,"\u6587\u4ef6\u5904\u7406"),t.qZA(),t.TgZ(125,"nz-form-item",19)(126,"nz-form-label",47),t._uU(127,"flv \u6dfb\u52a0\u5143\u6570\u636e"),t.qZA(),t.TgZ(128,"nz-form-control",27)(129,"nz-switch",48),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.model.postprocessing.injectExtraMetadata=a)}),t.qZA()(),t.TgZ(130,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.options.postprocessing.injectExtraMetadata=a?s.globalSettings.postprocessing.injectExtraMetadata:null)}),t._uU(131,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(132,"nz-form-item",19)(133,"nz-form-label",49),t._uU(134,"\u8f6c\u5c01\u88c5\u4e3a mp4"),t.qZA(),t.TgZ(135,"nz-form-control",27)(136,"nz-switch",50),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.model.postprocessing.remuxToMp4=a)}),t.qZA()(),t.TgZ(137,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.options.postprocessing.remuxToMp4=a?s.globalSettings.postprocessing.remuxToMp4:null)}),t._uU(138,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(139,"nz-form-item",19)(140,"nz-form-label",11),t._uU(141,"\u6e90\u6587\u4ef6\u5220\u9664\u7b56\u7565"),t.qZA(),t.YNc(142,oa,7,0,"ng-template",null,51,t.W1O),t.TgZ(144,"nz-form-control",21)(145,"nz-select",52),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.model.postprocessing.deleteSource=a)}),t.qZA()(),t.TgZ(146,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.options.postprocessing.deleteSource=a?s.globalSettings.postprocessing.deleteSource:null)}),t._uU(147,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()()(),t.TgZ(148,"div",53)(149,"h2"),t._uU(150,"\u7f51\u7edc\u8bf7\u6c42"),t.qZA(),t.TgZ(151,"nz-form-item",54)(152,"nz-form-label",55),t._uU(153,"User Agent"),t.qZA(),t.TgZ(154,"nz-form-control",56)(155,"textarea",57,58),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.model.header.userAgent=a)}),t.qZA()(),t.YNc(157,aa,1,1,"ng-template",null,59,t.W1O),t.TgZ(159,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.options.header.userAgent=a?s.globalSettings.header.userAgent:null)}),t._uU(160,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()(),t.TgZ(161,"nz-form-item",54)(162,"nz-form-label",60),t._uU(163,"Cookie"),t.qZA(),t.TgZ(164,"nz-form-control",61)(165,"textarea",62,63),t.NdJ("ngModelChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.model.header.cookie=a)}),t.qZA()(),t.TgZ(167,"label",9),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.options.header.cookie=a?s.globalSettings.header.cookie:null)}),t._uU(168,"\u8986\u76d6\u5168\u5c40\u8bbe\u7f6e"),t.qZA()()()(),t.BQk()}if(2&n){const e=t.MAs(11),i=t.MAs(18),a=t.MAs(27),s=t.MAs(39),d=t.MAs(63),C=t.MAs(143),z=t.MAs(156),M=t.MAs(158),A=t.MAs(166),l=t.oxw();t.xp6(8),t.Q6J("nzErrorTip",e),t.xp6(1),t.Q6J("pattern",l.pathTemplatePattern)("ngModel",l.model.output.pathTemplate)("disabled",null===l.options.output.pathTemplate),t.xp6(3),t.Q6J("nzChecked",null!==l.options.output.pathTemplate),t.xp6(3),t.Q6J("nzTooltipTitle",i),t.xp6(5),t.Q6J("ngModel",l.model.output.filesizeLimit)("disabled",null===l.options.output.filesizeLimit),t.xp6(1),t.Q6J("nzChecked",null!==l.options.output.filesizeLimit),t.xp6(3),t.Q6J("nzTooltipTitle",a),t.xp6(5),t.Q6J("ngModel",l.model.output.durationLimit)("disabled",null===l.options.output.durationLimit),t.xp6(1),t.Q6J("nzChecked",null!==l.options.output.durationLimit),t.xp6(6),t.Q6J("nzTooltipTitle",s),t.xp6(5),t.Q6J("ngModel",l.model.recorder.streamFormat)("disabled",null===l.options.recorder.streamFormat)("nzOptions",l.streamFormatOptions),t.xp6(1),t.Q6J("nzChecked",null!==l.options.recorder.streamFormat),t.xp6(2),t.Q6J("ngIf","fmp4"===(l.options.recorder.streamFormat||l.model.recorder.streamFormat)),t.xp6(5),t.Q6J("ngModel",l.model.recorder.qualityNumber)("disabled",null===l.options.recorder.qualityNumber)("nzOptions",l.qualityOptions),t.xp6(1),t.Q6J("nzChecked",null!==l.options.recorder.qualityNumber),t.xp6(6),t.Q6J("ngModel",l.model.recorder.saveCover)("disabled",null===l.options.recorder.saveCover),t.xp6(1),t.Q6J("nzChecked",null!==l.options.recorder.saveCover),t.xp6(3),t.Q6J("nzTooltipTitle",d),t.xp6(5),t.Q6J("ngModel",l.model.recorder.coverSaveStrategy)("disabled",null===l.options.recorder.coverSaveStrategy||!l.options.recorder.saveCover)("nzOptions",l.coverSaveStrategies),t.xp6(1),t.Q6J("nzChecked",null!==l.options.recorder.coverSaveStrategy),t.xp6(2),t.Q6J("ngIf","flv"===(l.options.recorder.streamFormat||l.model.recorder.streamFormat)),t.xp6(5),t.Q6J("ngModel",l.model.recorder.disconnectionTimeout)("disabled",null===l.options.recorder.disconnectionTimeout)("nzOptions",l.disconnectionTimeoutOptions)("nzOptionOverflowSize",6),t.xp6(1),t.Q6J("nzChecked",null!==l.options.recorder.bufferSize),t.xp6(2),t.Q6J("ngIf","flv"===(l.options.recorder.streamFormat||l.model.recorder.streamFormat)),t.xp6(8),t.Q6J("ngModel",l.model.danmaku.recordGiftSend)("disabled",null===l.options.danmaku.recordGiftSend),t.xp6(1),t.Q6J("nzChecked",null!==l.options.danmaku.recordGiftSend),t.xp6(6),t.Q6J("ngModel",l.model.danmaku.recordFreeGifts)("disabled",null===l.options.danmaku.recordFreeGifts),t.xp6(1),t.Q6J("nzChecked",null!==l.options.danmaku.recordFreeGifts),t.xp6(6),t.Q6J("ngModel",l.model.danmaku.recordGuardBuy)("disabled",null===l.options.danmaku.recordGuardBuy),t.xp6(1),t.Q6J("nzChecked",null!==l.options.danmaku.recordGuardBuy),t.xp6(6),t.Q6J("ngModel",l.model.danmaku.recordSuperChat)("disabled",null===l.options.danmaku.recordSuperChat),t.xp6(1),t.Q6J("nzChecked",null!==l.options.danmaku.recordSuperChat),t.xp6(6),t.Q6J("ngModel",l.model.danmaku.danmuUname)("disabled",null===l.options.danmaku.danmuUname),t.xp6(1),t.Q6J("nzChecked",null!==l.options.danmaku.danmuUname),t.xp6(6),t.Q6J("ngModel",l.model.danmaku.saveRawDanmaku)("disabled",null===l.options.danmaku.saveRawDanmaku),t.xp6(1),t.Q6J("nzChecked",null!==l.options.danmaku.saveRawDanmaku),t.xp6(9),t.Q6J("ngModel",l.model.postprocessing.injectExtraMetadata)("disabled",null===l.options.postprocessing.injectExtraMetadata||!!l.options.postprocessing.remuxToMp4),t.xp6(1),t.Q6J("nzChecked",null!==l.options.postprocessing.injectExtraMetadata),t.xp6(6),t.Q6J("ngModel",l.model.postprocessing.remuxToMp4)("disabled",null===l.options.postprocessing.remuxToMp4),t.xp6(1),t.Q6J("nzChecked",null!==l.options.postprocessing.remuxToMp4),t.xp6(3),t.Q6J("nzTooltipTitle",C),t.xp6(5),t.Q6J("ngModel",l.model.postprocessing.deleteSource)("disabled",null===l.options.postprocessing.deleteSource||!l.options.postprocessing.remuxToMp4)("nzOptions",l.deleteStrategies),t.xp6(1),t.Q6J("nzChecked",null!==l.options.postprocessing.deleteSource),t.xp6(8),t.Q6J("nzWarningTip",l.warningTip)("nzValidateStatus",z.valid&&l.options.header.userAgent!==l.taskOptions.header.userAgent&&l.options.header.userAgent!==l.globalSettings.header.userAgent?"warning":z)("nzErrorTip",M),t.xp6(1),t.Q6J("rows",3)("ngModel",l.model.header.userAgent)("disabled",null===l.options.header.userAgent),t.xp6(4),t.Q6J("nzChecked",null!==l.options.header.userAgent),t.xp6(5),t.Q6J("nzWarningTip",l.warningTip)("nzValidateStatus",A.valid&&l.options.header.cookie!==l.taskOptions.header.cookie&&l.options.header.cookie!==l.globalSettings.header.cookie?"warning":A),t.xp6(1),t.Q6J("rows",3)("ngModel",l.model.header.cookie)("disabled",null===l.options.header.cookie),t.xp6(2),t.Q6J("nzChecked",null!==l.options.header.cookie)}}class Tt{constructor(o){this.changeDetector=o,this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.afterOpen=new t.vpe,this.afterClose=new t.vpe,this.warningTip="\u9700\u8981\u91cd\u542f\u5f39\u5e55\u5ba2\u6237\u7aef\u624d\u80fd\u751f\u6548\uff0c\u5982\u679c\u4efb\u52a1\u6b63\u5728\u5f55\u5236\u53ef\u80fd\u4f1a\u4e22\u5931\u5f39\u5e55\uff01",this.pathTemplatePattern=Z._m,this.streamFormatOptions=(0,N.Z)(Z.tp),this.recordingModeOptions=(0,N.Z)(Z.kV),this.fmp4StreamTimeoutOptions=(0,N.Z)(Z.D4),this.qualityOptions=(0,N.Z)(Z.O6),this.readTimeoutOptions=(0,N.Z)(Z.D4),this.disconnectionTimeoutOptions=(0,N.Z)(Z.$w),this.bufferOptions=(0,N.Z)(Z.Rc),this.deleteStrategies=(0,N.Z)(Z.rc),this.coverSaveStrategies=(0,N.Z)(Z.J_)}ngOnChanges(){this.options=(0,N.Z)(this.taskOptions),this.setupModel(),this.changeDetector.markForCheck()}close(){this.setVisible(!1)}setVisible(o){this.visible=o,this.visibleChange.emit(o),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){this.confirm.emit((0,X.e5)(this.options,this.taskOptions)),this.close()}setupModel(){const o={};for(const e of Object.keys(this.options)){const s=this.globalSettings[e];Reflect.set(o,e,new Proxy(this.options[e],{get:(d,C)=>Reflect.get(d,C)??Reflect.get(s,C),set:(d,C,z)=>Reflect.set(d,C,z)}))}this.model=o}}Tt.\u0275fac=function(o){return new(o||Tt)(t.Y36(t.sBO))},Tt.\u0275cmp=t.Xpm({type:Tt,selectors:[["app-task-settings-dialog"]],viewQuery:function(o,e){if(1&o&&t.Gf(p.F,5),2&o){let i;t.iGM(i=t.CRH())&&(e.ngForm=i.first)}},inputs:{taskOptions:"taskOptions",globalSettings:"globalSettings",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm",afterOpen:"afterOpen",afterClose:"afterClose"},features:[t.TTD],decls:2,vars:2,consts:[["nzTitle","\u4efb\u52a1\u8bbe\u7f6e","nzCentered","",3,"nzVisible","nzOkDisabled","nzOnOk","nzOnCancel","nzAfterOpen","nzAfterClose"],[4,"nzModalContent"],["nz-form","","ngForm",""],["ngModelGroup","output",1,"form-group","output"],[1,"setting-item","input"],["nzNoColon","","nzTooltipTitle","\u53d8\u91cf\u8bf4\u660e\u8bf7\u67e5\u770b\u5bf9\u5e94\u5168\u5c40\u8bbe\u7f6e",1,"setting-label"],[1,"setting-control","input",3,"nzErrorTip"],["type","text","required","","nz-input","","name","pathTemplate",3,"pattern","ngModel","disabled","ngModelChange"],["pathTemplateErrorTip",""],["nz-checkbox","",3,"nzChecked","nzCheckedChange"],[1,"setting-item","filesize-limit"],["nzNoColon","",1,"setting-label",3,"nzTooltipTitle"],["filesizeLimitTip",""],[1,"setting-control","input"],["name","filesizeLimit",3,"ngModel","disabled","ngModelChange"],[1,"setting-item","duration-limit"],["durationLimitTip",""],["name","durationLimit",3,"ngModel","disabled","ngModelChange"],["ngModelGroup","recorder",1,"form-group","recorder"],[1,"setting-item"],["streamFormatTip",""],[1,"setting-control","select"],["name","streamFormat",3,"ngModel","disabled","nzOptions","ngModelChange"],["class","setting-item",4,"ngIf"],["nzNoColon","","nzTooltipTitle","\u6240\u9009\u753b\u8d28\u4e0d\u5b58\u5728\u5c06\u4ee5\u539f\u753b\u4ee3\u66ff",1,"setting-label"],["name","qualityNumber",3,"ngModel","disabled","nzOptions","ngModelChange"],["nzNoColon","","nzTooltipTitle","\u5f55\u64ad\u6587\u4ef6\u5b8c\u6210\u65f6\u4fdd\u5b58\u5f53\u524d\u76f4\u64ad\u95f4\u7684\u5c01\u9762",1,"setting-label"],[1,"setting-control","switch"],["name","saveCover",3,"ngModel","disabled","ngModelChange"],["coverSaveStrategyTip",""],["name","coverSaveStrategy",3,"ngModel","disabled","nzOptions","ngModelChange"],["nzNoColon","","nzTooltipTitle","\u65ad\u7f51\u8d85\u8fc7\u7b49\u5f85\u65f6\u95f4\u5c31\u7ed3\u675f\u5f55\u5236\uff0c\u5982\u679c\u7f51\u7edc\u6062\u590d\u540e\u4ecd\u672a\u4e0b\u64ad\u4f1a\u81ea\u52a8\u91cd\u65b0\u5f00\u59cb\u5f55\u5236\u3002",1,"setting-label"],["name","disconnectionTimeout",3,"ngModel","disabled","nzOptions","nzOptionOverflowSize","ngModelChange"],["ngModelGroup","danmaku",1,"form-group","danmaku"],["nzFor","recordGiftSend","nzNoColon","","nzTooltipTitle","\u8bb0\u5f55\u793c\u7269\u4fe1\u606f\u5230\u5f39\u5e55\u6587\u4ef6\u91cc",1,"setting-label"],["id","recordGiftSend","name","recordGiftSend",3,"ngModel","disabled","ngModelChange"],["nzFor","recordFreeGifts","nzNoColon","","nzTooltipTitle","\u8bb0\u5f55\u514d\u8d39\u793c\u7269\u4fe1\u606f\u5230\u5f39\u5e55\u6587\u4ef6\u91cc",1,"setting-label"],["id","recordFreeGifts","name","recordFreeGifts",3,"ngModel","disabled","ngModelChange"],["nzFor","recordGuardBuy","nzNoColon","","nzTooltipTitle","\u8bb0\u5f55\u4e0a\u8230\u4fe1\u606f\u5230\u5f39\u5e55\u6587\u4ef6\u91cc",1,"setting-label"],["id","recordGuardBuy","name","recordGuardBuy",3,"ngModel","disabled","ngModelChange"],["nzFor","recordSuperChat","nzNoColon","","nzTooltipTitle","\u8bb0\u5f55 Super Chat \u4fe1\u606f\u5230\u5f39\u5e55\u6587\u4ef6\u91cc",1,"setting-label"],["id","recordSuperChat","name","recordSuperChat",3,"ngModel","disabled","ngModelChange"],["nzFor","danmuUname","nzNoColon","","nzTooltipTitle","\u53d1\u9001\u8005: \u5f39\u5e55\u5185\u5bb9",1,"setting-label"],["id","danmuUname","name","danmuUname",3,"ngModel","disabled","ngModelChange"],["nzFor","saveRawDanmaku","nzNoColon","","nzTooltipTitle","\u4fdd\u5b58\u539f\u59cb\u5f39\u5e55\u5230 JSON lines \u6587\u4ef6\uff0c\u4e3b\u8981\u7528\u4e8e\u5206\u6790\u8c03\u8bd5\u3002",1,"setting-label"],["id","saveRawDanmaku","name","saveRawDanmaku",3,"ngModel","disabled","ngModelChange"],["ngModelGroup","postprocessing",1,"form-group","postprocessing"],["nzNoColon","","nzTooltipTitle","\u6dfb\u52a0\u5173\u952e\u5e27\u7b49\u5143\u6570\u636e\u4f7f\u5b9a\u4f4d\u64ad\u653e\u548c\u62d6\u8fdb\u5ea6\u6761\u4e0d\u4f1a\u5361\u987f",1,"setting-label"],["name","injectExtraMetadata",3,"ngModel","disabled","ngModelChange"],["nzNoColon","","nzTooltipTitle","\u8c03\u7528 ffmpeg \u8fdb\u884c\u8f6c\u6362\uff0c\u9700\u8981\u5b89\u88c5 ffmpeg \u3002",1,"setting-label"],["name","remuxToMp4",3,"ngModel","disabled","ngModelChange"],["deleteSourceTip",""],["name","deleteSource",3,"ngModel","disabled","nzOptions","ngModelChange"],["ngModelGroup","header",1,"form-group","header"],[1,"setting-item","textarea"],["nzFor","userAgent","nzNoColon","",1,"setting-label"],[1,"setting-control","textarea",3,"nzWarningTip","nzValidateStatus","nzErrorTip"],["nz-input","","required","","id","userAgent","name","userAgent",3,"rows","ngModel","disabled","ngModelChange"],["userAgent","ngModel"],["userAgentErrorTip",""],["nzFor","cookie","nzNoColon","",1,"setting-label"],[1,"setting-control","textarea",3,"nzWarningTip","nzValidateStatus"],["nz-input","","id","cookie","name","cookie",3,"rows","ngModel","disabled","ngModelChange"],["cookie","ngModel"],[4,"ngIf"],["fmp4StreamTimeoutTip",""],["name","fmp4StreamTimeout",3,"ngModel","disabled","nzOptions","ngModelChange"],["fmp4StreamTimeout","ngModel"],["nzNoColon","","nzTooltipTitle","\u8d85\u65f6\u65f6\u95f4\u8bbe\u7f6e\u5f97\u6bd4\u8f83\u957f\u76f8\u5bf9\u4e0d\u5bb9\u6613\u56e0\u7f51\u7edc\u4e0d\u7a33\u5b9a\u800c\u51fa\u73b0\u6d41\u4e2d\u65ad\uff0c\u4f46\u662f\u4e00\u65e6\u51fa\u73b0\u4e2d\u65ad\u5c31\u65e0\u6cd5\u5b9e\u73b0\u65e0\u7f1d\u62fc\u63a5\u4e14\u6f0f\u5f55\u8f83\u591a\u3002",1,"setting-label"],["nzWarningTip","\u65e0\u7f1d\u62fc\u63a5\u4f1a\u5931\u6548\uff01",1,"setting-control","select",3,"nzValidateStatus"],["name","readTimeout",3,"ngModel","disabled","nzOptions","ngModelChange"],["readTimeout","ngModel"],["nzNoColon","","nzTooltipTitle","\u786c\u76d8\u5199\u5165\u7f13\u51b2\u8bbe\u7f6e\u5f97\u6bd4\u8f83\u5927\u53ef\u4ee5\u51cf\u5c11\u5bf9\u786c\u76d8\u7684\u5199\u5165\uff0c\u4f46\u9700\u8981\u5360\u7528\u66f4\u591a\u7684\u5185\u5b58\u3002",1,"setting-label"],["name","bufferSize",3,"ngModel","disabled","nzOptions","nzOptionOverflowSize","ngModelChange"]],template:function(o,e){1&o&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzOnOk",function(){return e.handleConfirm()})("nzOnCancel",function(){return e.handleCancel()})("nzAfterOpen",function(){return e.afterOpen.emit()})("nzAfterClose",function(){return e.afterClose.emit()}),t.YNc(1,sa,169,80,"ng-container",1),t.qZA()),2&o&&t.Q6J("nzVisible",e.visible)("nzOkDisabled",null==e.ngForm||null==e.ngForm.form?null:e.ngForm.form.invalid)},dependencies:[c.O5,p._Y,p.Fj,p.JJ,p.JL,p.Q7,p.c5,p.On,p.Mq,p.F,O.t3,O.SK,Ft.i,K.du,K.Hf,R.Lr,R.Nx,R.iK,R.Fd,V.Zp,$t.Ie,wt.Vq,Ki.i,Gi.q],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}nz-divider[_ngcontent-%COMP%]{margin:0!important}.form-group[_ngcontent-%COMP%]:last-child .setting-item[_ngcontent-%COMP%]:last-child{padding-bottom:0}.setting-item[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,1fr);align-items:center;padding:1em 0;gap:1em;border:none}.setting-item[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{margin:0!important}.setting-item[_ngcontent-%COMP%] .setting-label[_ngcontent-%COMP%]{justify-self:start}.setting-item[_ngcontent-%COMP%] .setting-control[_ngcontent-%COMP%]{justify-self:center}.setting-item[_ngcontent-%COMP%] label[nz-checkbox][_ngcontent-%COMP%]{justify-self:end}.setting-item[_ngcontent-%COMP%] label[nz-checkbox][_ngcontent-%COMP%] span:last-of-type{padding-right:0}.setting-item.input[_ngcontent-%COMP%], .setting-item.textarea[_ngcontent-%COMP%]{grid-template-columns:repeat(2,1fr)}.setting-item.input[_ngcontent-%COMP%] .setting-label[_ngcontent-%COMP%], .setting-item.textarea[_ngcontent-%COMP%] .setting-label[_ngcontent-%COMP%]{grid-row:1/2;grid-column:1/2;justify-self:center}.setting-item.input[_ngcontent-%COMP%] .setting-control[_ngcontent-%COMP%], .setting-item.textarea[_ngcontent-%COMP%] .setting-control[_ngcontent-%COMP%]{grid-row:2/3;grid-column:1/-1;justify-self:stretch}.setting-item.input[_ngcontent-%COMP%] label[nz-checkbox][_ngcontent-%COMP%], .setting-item.textarea[_ngcontent-%COMP%] label[nz-checkbox][_ngcontent-%COMP%]{grid-row:1/2;grid-column:2/3;justify-self:center}@media screen and (max-width: 450px){.setting-item[_ngcontent-%COMP%]{grid-template-columns:repeat(2,1fr)}.setting-item[_ngcontent-%COMP%] .setting-label[_ngcontent-%COMP%]{grid-column:1/-1;justify-self:center}.setting-item[_ngcontent-%COMP%] label[nz-checkbox][_ngcontent-%COMP%]{justify-self:end}}.filesize-limit[_ngcontent-%COMP%] .setting-control.input[_ngcontent-%COMP%], .duration-limit[_ngcontent-%COMP%] .setting-control.input[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}@media screen and (max-width: 319px){.filesize-limit[_ngcontent-%COMP%] .setting-control.input[_ngcontent-%COMP%], .duration-limit[_ngcontent-%COMP%] .setting-control.input[_ngcontent-%COMP%]{margin-left:0!important}}"],changeDetection:0});const ze=function(){return{spacer:""}};function ra(n,o){if(1&n&&(t.TgZ(0,"div",2)(1,"p",3)(2,"span",4),t._UZ(3,"i"),t.qZA(),t.TgZ(4,"span",5),t._uU(5),t.ALo(6,"duration"),t.qZA(),t.TgZ(7,"span",6),t._uU(8),t.ALo(9,"datarate"),t.qZA(),t.TgZ(10,"span",7),t._uU(11),t.ALo(12,"filesize"),t.qZA(),t.TgZ(13,"span",8),t.ALo(14,"number"),t._uU(15),t.ALo(16,"number"),t.qZA(),t.TgZ(17,"span",9),t._uU(18),t.ALo(19,"quality"),t.qZA()()()),2&n){const e=t.oxw();t.xp6(5),t.hij(" ",t.lcZ(6,6,e.status.rec_elapsed)," "),t.xp6(3),t.hij(" ",t.xi3(9,8,e.status.rec_rate,t.DdM(22,ze))," "),t.xp6(3),t.hij(" ",t.xi3(12,11,e.status.rec_total,t.DdM(23,ze))," "),t.xp6(2),t.MGl("nzTooltipTitle","\u5f39\u5e55\u603b\u8ba1\uff1a",t.xi3(14,14,e.status.danmu_total,"1.0-0"),""),t.xp6(2),t.hij(" ",t.xi3(16,17,e.status.danmu_total,"1.0-0")," "),t.xp6(3),t.hij(" ",e.status.real_quality_number?t.lcZ(19,20,e.status.real_quality_number):""," ")}}function la(n,o){if(1&n&&(t.TgZ(0,"div",2)(1,"p",10),t.ALo(2,"filename"),t._uU(3),t.ALo(4,"filename"),t.qZA(),t._UZ(5,"nz-progress",11),t.ALo(6,"progress"),t.qZA()),2&n){const e=t.oxw();let i,a;t.xp6(1),t.MGl("nzTooltipTitle","\u6b63\u5728\u6dfb\u52a0\u5143\u6570\u636e\uff1a",t.lcZ(2,7,null!==(i=e.status.postprocessing_path)&&void 0!==i?i:""),""),t.xp6(2),t.hij(" ",t.lcZ(4,9,null!==(a=e.status.postprocessing_path)&&void 0!==a?a:"")," "),t.xp6(2),t.Q6J("nzType","line")("nzShowInfo",!1)("nzStrokeLinecap","square")("nzStrokeWidth",2)("nzPercent",null===e.status.postprocessing_progress?0:t.lcZ(6,11,e.status.postprocessing_progress))}}function ca(n,o){if(1&n&&(t.TgZ(0,"div",2)(1,"p",12),t.ALo(2,"filename"),t._uU(3),t.ALo(4,"filename"),t.qZA(),t._UZ(5,"nz-progress",11),t.ALo(6,"progress"),t.qZA()),2&n){const e=t.oxw();let i,a;t.xp6(1),t.MGl("nzTooltipTitle","\u6b63\u5728\u8f6c\u5c01\u88c5\uff1a",t.lcZ(2,7,null!==(i=e.status.postprocessing_path)&&void 0!==i?i:""),""),t.xp6(2),t.hij(" ",t.lcZ(4,9,null!==(a=e.status.postprocessing_path)&&void 0!==a?a:"")," "),t.xp6(2),t.Q6J("nzType","line")("nzShowInfo",!1)("nzStrokeLinecap","square")("nzStrokeWidth",2)("nzPercent",null===e.status.postprocessing_progress?0:t.lcZ(6,11,e.status.postprocessing_progress))}}class xt{constructor(){this.RunningStatus=m.cG}}xt.\u0275fac=function(o){return new(o||xt)},xt.\u0275cmp=t.Xpm({type:xt,selectors:[["app-status-display"]],inputs:{status:"status"},decls:4,vars:4,consts:[[3,"ngSwitch"],["class","status-display",4,"ngSwitchCase"],[1,"status-display"],[1,"status-bar","recording"],["nz-tooltip","","nzTooltipTitle","\u6b63\u5728\u5f55\u5236","nzTooltipPlacement","top",1,"status-indicator"],["nz-tooltip","","nzTooltipTitle","\u5f55\u5236\u7528\u65f6","nzTooltipPlacement","top",1,"time-elapsed"],["nz-tooltip","","nzTooltipTitle","\u5f55\u5236\u901f\u5ea6","nzTooltipPlacement","top",1,"data-rate"],["nz-tooltip","","nzTooltipTitle","\u5f55\u5236\u603b\u8ba1","nzTooltipPlacement","top",1,"data-count"],["nz-tooltip","","nzTooltipPlacement","top",1,"danmu-count",3,"nzTooltipTitle"],["nz-tooltip","","nzTooltipTitle","\u5f55\u5236\u753b\u8d28","nzTooltipPlacement","leftTop",1,"quality"],["nz-tooltip","","nzTooltipPlacement","top",1,"status-bar","injecting",3,"nzTooltipTitle"],[3,"nzType","nzShowInfo","nzStrokeLinecap","nzStrokeWidth","nzPercent"],["nz-tooltip","","nzTooltipPlacement","top",1,"status-bar","remuxing",3,"nzTooltipTitle"]],template:function(o,e){1&o&&(t.ynx(0,0),t.YNc(1,ra,20,24,"div",1),t.YNc(2,la,7,13,"div",1),t.YNc(3,ca,7,13,"div",1),t.BQk()),2&o&&(t.Q6J("ngSwitch",e.status.running_status),t.xp6(1),t.Q6J("ngSwitchCase",e.RunningStatus.RECORDING),t.xp6(1),t.Q6J("ngSwitchCase",e.RunningStatus.INJECTING),t.xp6(1),t.Q6J("ngSwitchCase",e.RunningStatus.REMUXING))},dependencies:[c.RF,c.n9,it.SY,ne,c.JJ,tt,Rt.f,J,fe.U,H,G],styles:[".status-bar[_ngcontent-%COMP%]{color:#fff;text-shadow:1px 1px 2px black;margin:0;padding:0 .5rem;background:rgba(0,0,0,.32)}.status-display[_ngcontent-%COMP%]{position:absolute;bottom:0;left:0;width:100%}.status-bar[_ngcontent-%COMP%]{display:flex;gap:1rem;font-size:1rem;line-height:1.8}.status-bar.recording[_ngcontent-%COMP%] .status-indicator[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center}.status-bar.recording[_ngcontent-%COMP%] .status-indicator[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{width:1rem;height:1rem;border-radius:.5rem;color:red;background:red;animation:_ngcontent-%COMP%_blinker 1s cubic-bezier(1,0,0,1) infinite}@keyframes _ngcontent-%COMP%_blinker{0%{opacity:0}to{opacity:1}}.status-bar.injecting[_ngcontent-%COMP%], .status-bar.remuxing[_ngcontent-%COMP%], .status-bar[_ngcontent-%COMP%] .danmu-count[_ngcontent-%COMP%]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.status-bar[_ngcontent-%COMP%] .quality[_ngcontent-%COMP%]{flex:none;margin-left:auto}nz-progress[_ngcontent-%COMP%]{display:flex}nz-progress[_ngcontent-%COMP%] .ant-progress-outer{display:flex}"],changeDetection:0});var _a=r(5141),Qt=r(457),ua=r(4968),pa=r(1481);const Kt=new Map,Gt=new Map;class Dt{constructor(o){this.domSanitizer=o}transform(o,e="object"){return"object"===e?Gt.has(o)?(0,w.of)(Gt.get(o)):(0,Qt.D)(this.fetchImage(o)).pipe((0,W.U)(i=>URL.createObjectURL(i)),(0,W.U)(i=>this.domSanitizer.bypassSecurityTrustUrl(i)),(0,v.b)(i=>Gt.set(o,i)),(0,lt.K)(()=>(0,w.of)(this.domSanitizer.bypassSecurityTrustUrl("")))):Kt.has(o)?(0,w.of)(Kt.get(o)):(0,Qt.D)(this.fetchImage(o)).pipe((0,st.w)(i=>this.createDataURL(i)),(0,v.b)(i=>Kt.set(o,i)),(0,lt.K)(()=>(0,w.of)(this.domSanitizer.bypassSecurityTrustUrl(""))))}fetchImage(o){return(0,yt.Z)(function*(){return yield(yield fetch(o,{referrer:""})).blob()})()}createDataURL(o){const e=new FileReader,i=(0,ua.R)(e,"load").pipe((0,W.U)(()=>this.domSanitizer.bypassSecurityTrustUrl(e.result)));return e.readAsDataURL(o),i}}function ga(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"app-info-panel",21),t.NdJ("close",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.showInfoPanel=!1)}),t.qZA()}if(2&n){const e=t.oxw(2);t.Q6J("data",e.data)}}Dt.\u0275fac=function(o){return new(o||Dt)(t.Y36(pa.H7,16))},Dt.\u0275pipe=t.Yjl({name:"dataurl",type:Dt,pure:!0});const da=function(n){return[n,"detail"]};function ma(n,o){if(1&n&&(t.TgZ(0,"a",15)(1,"div",16),t._UZ(2,"img",17),t.ALo(3,"async"),t.ALo(4,"dataurl"),t.TgZ(5,"h2",18),t._uU(6),t.qZA(),t.YNc(7,ga,1,1,"app-info-panel",19),t._UZ(8,"app-status-display",20),t.qZA()()),2&n){const e=t.oxw();t.Q6J("routerLink",t.VKq(10,da,e.data.room_info.room_id)),t.xp6(2),t.Q6J("src",t.lcZ(3,6,t.lcZ(4,8,e.data.room_info.cover)),t.LSH),t.xp6(3),t.Q6J("nzTooltipTitle","\u76f4\u64ad\u95f4\u6807\u9898\uff1a"+e.data.room_info.title),t.xp6(1),t.hij(" ",e.data.room_info.title," "),t.xp6(1),t.Q6J("ngIf",e.showInfoPanel),t.xp6(1),t.Q6J("status",e.data.task_status)}}function ha(n,o){if(1&n&&(t._UZ(0,"nz-avatar",22),t.ALo(1,"async"),t.ALo(2,"dataurl")),2&n){const e=t.oxw();t.Q6J("nzShape","square")("nzSize",54)("nzSrc",t.lcZ(1,3,t.lcZ(2,5,e.data.user_info.face)))}}function fa(n,o){1&n&&(t.TgZ(0,"nz-tag",31),t._UZ(1,"i",32),t.TgZ(2,"span"),t._uU(3,"\u672a\u5f00\u64ad"),t.qZA()())}function Ca(n,o){1&n&&(t.TgZ(0,"nz-tag",33),t._UZ(1,"i",34),t.TgZ(2,"span"),t._uU(3,"\u76f4\u64ad\u4e2d"),t.qZA()())}function za(n,o){1&n&&(t.TgZ(0,"nz-tag",35),t._UZ(1,"i",36),t.TgZ(2,"span"),t._uU(3,"\u8f6e\u64ad\u4e2d"),t.qZA()())}function Ta(n,o){if(1&n&&(t.TgZ(0,"p",23)(1,"span",24)(2,"a",25),t._uU(3),t.qZA()(),t.TgZ(4,"span",26),t.ynx(5,27),t.YNc(6,fa,4,0,"nz-tag",28),t.YNc(7,Ca,4,0,"nz-tag",29),t.YNc(8,za,4,0,"nz-tag",30),t.BQk(),t.qZA()()),2&n){const e=t.oxw();t.xp6(2),t.MGl("href","https://space.bilibili.com/",e.data.user_info.uid,"",t.LSH),t.xp6(1),t.hij(" ",e.data.user_info.name," "),t.xp6(2),t.Q6J("ngSwitch",e.data.room_info.live_status),t.xp6(1),t.Q6J("ngSwitchCase",0),t.xp6(1),t.Q6J("ngSwitchCase",1),t.xp6(1),t.Q6J("ngSwitchCase",2)}}function xa(n,o){if(1&n&&(t.TgZ(0,"span",44)(1,"a",25),t._uU(2),t.qZA()()),2&n){const e=t.oxw(2);t.xp6(1),t.MGl("href","https://live.bilibili.com/",e.data.room_info.short_room_id,"",t.LSH),t.xp6(1),t.hij(" ",e.data.room_info.short_room_id,"")}}function Da(n,o){if(1&n&&(t.TgZ(0,"p",37)(1,"span",38)(2,"span",39),t._uU(3,"\u623f\u95f4\u53f7\uff1a"),t.qZA(),t.YNc(4,xa,3,2,"span",40),t.TgZ(5,"span",41)(6,"a",25),t._uU(7),t.qZA()()(),t.TgZ(8,"span",42)(9,"a",25)(10,"nz-tag",43),t._uU(11),t.qZA()()()()),2&n){const e=t.oxw();t.xp6(4),t.Q6J("ngIf",e.data.room_info.short_room_id),t.xp6(2),t.MGl("href","https://live.bilibili.com/",e.data.room_info.room_id,"",t.LSH),t.xp6(1),t.Oqu(e.data.room_info.room_id),t.xp6(2),t.hYB("href","https://live.bilibili.com/p/eden/area-tags?parentAreaId=",e.data.room_info.parent_area_id,"&areaId=",e.data.room_info.area_id,"",t.LSH),t.xp6(1),t.Q6J("nzColor","#23ade5"),t.xp6(1),t.hij(" ",e.data.room_info.area_name," ")}}function ka(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-switch",45),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.toggleRecorder())}),t.qZA()}if(2&n){const e=t.oxw();t.Q6J("nzDisabled",e.toggleRecorderForbidden)("ngModel",e.data.task_status.recorder_enabled)("nzControl",!0)("nzLoading",e.switchPending)}}function Ma(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"div",46),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.cutStream())}),t._UZ(1,"i",47),t.qZA()}if(2&n){const e=t.oxw();t.ekj("not-allowed",e.data.task_status.running_status!==e.RunningStatus.RECORDING)}}function Oa(n,o){if(1&n){const e=t.EpF();t.ynx(0),t.TgZ(1,"app-task-settings-dialog",51),t.NdJ("visibleChange",function(a){t.CHM(e);const s=t.oxw(2);return t.KtG(s.settingsDialogVisible=a)})("confirm",function(a){t.CHM(e);const s=t.oxw(2);return t.KtG(s.changeTaskOptions(a))})("afterClose",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.cleanSettingsData())}),t.qZA(),t.BQk()}if(2&n){const e=t.oxw(2);t.xp6(1),t.Q6J("taskOptions",e.taskOptions)("globalSettings",e.globalSettings)("visible",e.settingsDialogVisible)}}function va(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"div",48),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.openSettingsDialog())}),t._UZ(1,"i",49),t.qZA(),t.YNc(2,Oa,2,3,"ng-container",50)}if(2&n){const e=t.oxw();t.xp6(2),t.Q6J("ngIf",e.taskOptions&&e.globalSettings)}}function Ea(n,o){if(1&n&&(t.TgZ(0,"div",54),t._UZ(1,"i",55),t.qZA()),2&n){t.oxw(2);const e=t.MAs(20);t.Q6J("nzDropdownMenu",e)}}function Aa(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"div",56),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.menuDrawerVisible=!0)}),t._UZ(1,"i",55),t.qZA()}}function Pa(n,o){if(1&n&&(t.YNc(0,Ea,2,1,"div",52),t.YNc(1,Aa,2,0,"div",53)),2&n){const e=t.oxw();t.Q6J("ngIf",!e.useDrawer),t.xp6(1),t.Q6J("ngIf",e.useDrawer)}}function ya(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"ul",57)(1,"li",58),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.startTask())}),t._uU(2,"\u8fd0\u884c\u4efb\u52a1"),t.qZA(),t.TgZ(3,"li",58),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.stopTask())}),t._uU(4,"\u505c\u6b62\u4efb\u52a1"),t.qZA(),t.TgZ(5,"li",58),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.removeTask())}),t._uU(6,"\u5220\u9664\u4efb\u52a1"),t.qZA(),t.TgZ(7,"li",58),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.stopTask(!0))}),t._uU(8,"\u5f3a\u5236\u505c\u6b62\u4efb\u52a1"),t.qZA(),t.TgZ(9,"li",58),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.disableRecorder(!0))}),t._uU(10,"\u5f3a\u5236\u5173\u95ed\u5f55\u5236"),t.qZA(),t.TgZ(11,"li",58),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.updateTaskInfo())}),t._uU(12,"\u5237\u65b0\u6570\u636e"),t.qZA(),t.TgZ(13,"li",58),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.showInfoPanel=!0)}),t._uU(14,"\u663e\u793a\u5f55\u5236\u4fe1\u606f"),t.qZA()()}}function Sa(n,o){if(1&n){const e=t.EpF();t.ynx(0),t.TgZ(1,"div",61),t.NdJ("click",function(){t.CHM(e);const a=t.oxw(2);return t.KtG(a.menuDrawerVisible=!1)}),t.GkF(2,12),t.qZA(),t.BQk()}if(2&n){t.oxw(2);const e=t.MAs(23);t.xp6(2),t.Q6J("ngTemplateOutlet",e)}}const ba=function(){return{padding:"0"}};function Fa(n,o){if(1&n){const e=t.EpF();t.TgZ(0,"nz-drawer",59),t.NdJ("nzVisibleChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.menuDrawerVisible=a)})("nzOnClose",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.menuDrawerVisible=!1)}),t.YNc(1,Sa,3,1,"ng-container",60),t.qZA()}if(2&n){const e=t.oxw();t.Q6J("nzClosable",!1)("nzBodyStyle",t.DdM(3,ba))("nzVisible",e.menuDrawerVisible)}}const wa=function(n,o,e,i){return[n,o,e,i]},Ia=function(){return{padding:"0.5rem"}},Na=function(){return{size:"large"}};class kt{constructor(o,e,i,a,s,d,C){this.changeDetector=e,this.message=i,this.modal=a,this.settingService=s,this.taskManager=d,this.appTaskSettings=C,this.stopped=!1,this.destroyed=new F.x,this.useDrawer=!1,this.menuDrawerVisible=!1,this.switchPending=!1,this.settingsDialogVisible=!1,this.RunningStatus=m.cG,o.observe(ft[0]).pipe((0,y.R)(this.destroyed)).subscribe(z=>{this.useDrawer=z.matches,e.markForCheck()})}get roomId(){return this.data.room_info.room_id}get toggleRecorderForbidden(){return!this.data.task_status.monitor_enabled}get showInfoPanel(){return Boolean(this.appTaskSettings.getSettings(this.roomId).showInfoPanel)}set showInfoPanel(o){this.appTaskSettings.updateSettings(this.roomId,{showInfoPanel:o})}ngOnChanges(o){console.debug("[ngOnChanges]",this.roomId,o),this.stopped=this.data.task_status.running_status===m.cG.STOPPED}ngOnDestroy(){this.destroyed.next(),this.destroyed.complete()}updateTaskInfo(){this.taskManager.updateTaskInfo(this.roomId).subscribe()}toggleRecorder(){this.toggleRecorderForbidden||this.switchPending||(this.switchPending=!0,this.data.task_status.recorder_enabled?this.taskManager.disableRecorder(this.roomId).subscribe(()=>this.switchPending=!1):this.taskManager.enableRecorder(this.roomId).subscribe(()=>this.switchPending=!1))}removeTask(){this.taskManager.removeTask(this.roomId).subscribe()}startTask(){this.data.task_status.running_status===m.cG.STOPPED?this.taskManager.startTask(this.roomId).subscribe():this.message.warning("\u4efb\u52a1\u8fd0\u884c\u4e2d\uff0c\u5ffd\u7565\u64cd\u4f5c\u3002")}stopTask(o=!1){this.data.task_status.running_status!==m.cG.STOPPED?o&&this.data.task_status.running_status==m.cG.RECORDING?this.modal.confirm({nzTitle:"\u786e\u5b9a\u8981\u5f3a\u5236\u505c\u6b62\u4efb\u52a1\uff1f",nzContent:"\u6b63\u5728\u5f55\u5236\u7684\u6587\u4ef6\u4f1a\u88ab\u5f3a\u884c\u4e2d\u65ad\uff01\u786e\u5b9a\u8981\u653e\u5f03\u6b63\u5728\u5f55\u5236\u7684\u6587\u4ef6\uff1f",nzOnOk:()=>new Promise((e,i)=>{this.taskManager.stopTask(this.roomId,o).subscribe(e,i)})}):this.taskManager.stopTask(this.roomId).subscribe():this.message.warning("\u4efb\u52a1\u5904\u4e8e\u505c\u6b62\u72b6\u6001\uff0c\u5ffd\u7565\u64cd\u4f5c\u3002")}disableRecorder(o=!1){this.data.task_status.recorder_enabled?o&&this.data.task_status.running_status==m.cG.RECORDING?this.modal.confirm({nzTitle:"\u786e\u5b9a\u8981\u5f3a\u5236\u505c\u6b62\u5f55\u5236\uff1f",nzContent:"\u6b63\u5728\u5f55\u5236\u7684\u6587\u4ef6\u4f1a\u88ab\u5f3a\u884c\u4e2d\u65ad\uff01\u786e\u5b9a\u8981\u653e\u5f03\u6b63\u5728\u5f55\u5236\u7684\u6587\u4ef6\uff1f",nzOnOk:()=>new Promise((e,i)=>{this.taskManager.disableRecorder(this.roomId,o).subscribe(e,i)})}):this.taskManager.disableRecorder(this.roomId).subscribe():this.message.warning("\u5f55\u5236\u5904\u4e8e\u5173\u95ed\u72b6\u6001\uff0c\u5ffd\u7565\u64cd\u4f5c\u3002")}openSettingsDialog(){(0,ge.$)(this.settingService.getTaskOptions(this.roomId),this.settingService.getSettings(["output","header","danmaku","recorder","postprocessing"])).subscribe(([o,e])=>{this.taskOptions=o,this.globalSettings=e,this.settingsDialogVisible=!0,this.changeDetector.markForCheck()},o=>{this.message.error(`\u83b7\u53d6\u4efb\u52a1\u8bbe\u7f6e\u51fa\u9519: ${o.message}`)})}cleanSettingsData(){delete this.taskOptions,delete this.globalSettings,this.changeDetector.markForCheck()}changeTaskOptions(o){this.settingService.changeTaskOptions(this.roomId,o).pipe((0,Bt.X)(3,300)).subscribe(e=>{this.message.success("\u4fee\u6539\u4efb\u52a1\u8bbe\u7f6e\u6210\u529f")},e=>{this.message.error(`\u4fee\u6539\u4efb\u52a1\u8bbe\u7f6e\u51fa\u9519: ${e.message}`)})}cutStream(){this.data.task_status.running_status===m.cG.RECORDING&&this.taskManager.canCutStream(this.roomId).subscribe(o=>{o&&this.taskManager.cutStream(this.roomId).subscribe()})}}function Za(n,o){1&n&&(t.TgZ(0,"div",2),t._UZ(1,"nz-empty"),t.qZA())}function Ba(n,o){1&n&&t._UZ(0,"app-task-item",6),2&n&&t.Q6J("data",o.$implicit)}function Ua(n,o){if(1&n&&(t.TgZ(0,"div",3,4),t.YNc(2,Ba,1,1,"app-task-item",5),t.qZA()),2&n){const e=t.oxw();t.xp6(2),t.Q6J("ngForOf",e.dataList)("ngForTrackBy",e.trackByRoomId)}}kt.\u0275fac=function(o){return new(o||kt)(t.Y36(h.Yg),t.Y36(t.sBO),t.Y36(Jt.dD),t.Y36(K.Sf),t.Y36(Qi.R),t.Y36(Q),t.Y36(et))},kt.\u0275cmp=t.Xpm({type:kt,selectors:[["app-task-item"]],hostVars:2,hostBindings:function(o,e){2&o&&t.ekj("stopped",e.stopped)},inputs:{data:"data"},features:[t.TTD],decls:25,vars:19,consts:[[3,"nzCover","nzHoverable","nzActions","nzBodyStyle"],[3,"nzActive","nzLoading","nzAvatar"],[3,"nzAvatar","nzTitle","nzDescription"],["coverTemplate",""],["avatarTemplate",""],["titleTemplate",""],["descTemplate",""],["actionSwitch",""],["actionDelete",""],["actionSetting",""],["actionMore",""],["dropdownMenu","nzDropdownMenu"],[3,"ngTemplateOutlet"],["menu",""],["nzPlacement","bottom","nzHeight","auto",3,"nzClosable","nzBodyStyle","nzVisible","nzVisibleChange","nzOnClose",4,"ngIf"],[3,"routerLink"],[1,"cover-wrapper"],["alt","\u76f4\u64ad\u95f4\u5c01\u9762",1,"cover",3,"src"],["nz-tooltip","","nzTooltipPlacement","bottomLeft",1,"title",3,"nzTooltipTitle"],[3,"data","close",4,"ngIf"],[3,"status"],[3,"data","close"],[3,"nzShape","nzSize","nzSrc"],[1,"meta-title"],["nz-tooltip","","nzTooltipTitle","\u6253\u5f00\u4e3b\u64ad\u4e2a\u4eba\u7a7a\u95f4\u9875\u9762","nzTooltipPlacement","right",1,"user-name"],["target","_blank",3,"href"],[1,"live-status"],[3,"ngSwitch"],["nzColor","default",4,"ngSwitchCase"],["nzColor","red",4,"ngSwitchCase"],["nzColor","green",4,"ngSwitchCase"],["nzColor","default"],["nz-icon","","nzType","frown"],["nzColor","red"],["nz-icon","","nzType","fire"],["nzColor","green"],["nz-icon","","nzType","sync","nzSpin",""],[1,"meta-desc"],[1,"room-id-wrapper"],[1,"room-id-label"],["class","short-room-id","nz-tooltip","","nzTooltipTitle","\u6253\u5f00\u76f4\u64ad\u95f4\u9875\u9762","nzTooltipPlacement","bottom",4,"ngIf"],["nz-tooltip","","nzTooltipTitle","\u6253\u5f00\u76f4\u64ad\u95f4\u9875\u9762","nzTooltipPlacement","bottom",1,"real-room-id"],["nz-tooltip","","nzTooltipTitle","\u6253\u5f00\u76f4\u64ad\u5206\u533a\u9875\u9762","nzTooltipPlacement","leftTop",1,"area-name"],[3,"nzColor"],["nz-tooltip","","nzTooltipTitle","\u6253\u5f00\u76f4\u64ad\u95f4\u9875\u9762","nzTooltipPlacement","bottom",1,"short-room-id"],["nz-tooltip","","nzTooltipTitle","\u5f55\u5236\u5f00\u5173",3,"nzDisabled","ngModel","nzControl","nzLoading","click"],["nz-tooltip","","nzTooltipTitle","\u5207\u5272\u6587\u4ef6",3,"click"],["nz-icon","","nzType","scissor",1,"action-icon"],["nz-tooltip","","nzTooltipTitle","\u4efb\u52a1\u8bbe\u7f6e",3,"click"],["nz-icon","","nzType","setting",1,"action-icon"],[4,"ngIf"],[3,"taskOptions","globalSettings","visible","visibleChange","confirm","afterClose"],["nz-dropdown","","nzPlacement","topRight",3,"nzDropdownMenu",4,"ngIf"],[3,"click",4,"ngIf"],["nz-dropdown","","nzPlacement","topRight",3,"nzDropdownMenu"],["nz-icon","","nzType","more",1,"action-icon"],[3,"click"],["nz-menu","",1,"menu"],["nz-menu-item","",3,"click"],["nzPlacement","bottom","nzHeight","auto",3,"nzClosable","nzBodyStyle","nzVisible","nzVisibleChange","nzOnClose"],[4,"nzDrawerContent"],[1,"drawer-content",3,"click"]],template:function(o,e){if(1&o&&(t.TgZ(0,"nz-card",0)(1,"nz-skeleton",1),t._UZ(2,"nz-card-meta",2),t.qZA()(),t.YNc(3,ma,9,12,"ng-template",null,3,t.W1O),t.YNc(5,ha,3,7,"ng-template",null,4,t.W1O),t.YNc(7,Ta,9,6,"ng-template",null,5,t.W1O),t.YNc(9,Da,12,7,"ng-template",null,6,t.W1O),t.YNc(11,ka,1,4,"ng-template",null,7,t.W1O),t.YNc(13,Ma,2,2,"ng-template",null,8,t.W1O),t.YNc(15,va,3,1,"ng-template",null,9,t.W1O),t.YNc(17,Pa,2,2,"ng-template",null,10,t.W1O),t.TgZ(19,"nz-dropdown-menu",null,11),t.GkF(21,12),t.YNc(22,ya,15,0,"ng-template",null,13,t.W1O),t.qZA(),t.YNc(24,Fa,2,4,"nz-drawer",14)),2&o){const i=t.MAs(4),a=t.MAs(6),s=t.MAs(8),d=t.MAs(10),C=t.MAs(12),z=t.MAs(14),M=t.MAs(16),A=t.MAs(18),l=t.MAs(23);t.Q6J("nzCover",i)("nzHoverable",!0)("nzActions",t.l5B(12,wa,z,M,C,A))("nzBodyStyle",t.DdM(17,Ia)),t.xp6(1),t.Q6J("nzActive",!0)("nzLoading",!e.data)("nzAvatar",t.DdM(18,Na)),t.xp6(1),t.Q6J("nzAvatar",a)("nzTitle",s)("nzDescription",d),t.xp6(19),t.Q6J("ngTemplateOutlet",l),t.xp6(3),t.Q6J("ngIf",e.useDrawer)}},dependencies:[c.O5,c.tP,c.RF,c.n9,p.JJ,p.On,E.bd,E.l7,we,Yt.Dz,P.Ls,it.SY,Wt,Ft.i,Ct.wO,Ct.r9,j.cm,j.RR,Lt.w,at.Vz,at.SQ,rt.rH,Tt,xt,_a.i,c.Ov,Dt],styles:['.cover-wrapper[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{color:#fff;text-shadow:1px 1px 2px black;margin:0;padding:0 .5rem;background:rgba(0,0,0,.32)}.drawer-content[_ngcontent-%COMP%] .menu[_ngcontent-%COMP%]{box-shadow:none;padding:.5em 0}.drawer-content[_ngcontent-%COMP%] .menu[_ngcontent-%COMP%] *[nz-menu-item][_ngcontent-%COMP%]{margin:0;padding:.5em 2em}.stopped[_nghost-%COMP%]{filter:grayscale(100%)}a[_ngcontent-%COMP%]{color:inherit}a[_ngcontent-%COMP%]:hover{color:#1890ff}a[_ngcontent-%COMP%]:focus-visible{outline:-webkit-focus-ring-color auto 1px}.cover-wrapper[_ngcontent-%COMP%]{--cover-ratio: 264 / 470;--cover-height: calc(var(--card-width) * var(--cover-ratio));position:relative;width:var(--card-width);height:var(--cover-height)}.cover-wrapper[_ngcontent-%COMP%] .cover[_ngcontent-%COMP%]{width:100%;max-height:var(--cover-height);object-fit:cover}.cover-wrapper[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{position:absolute;top:.5rem;left:.5rem;font-size:1.2rem;width:-moz-fit-content;width:fit-content;max-width:calc(100% - 1em);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}nz-card-meta[_ngcontent-%COMP%]{margin:0}.meta-title[_ngcontent-%COMP%]{margin:0;display:flex;column-gap:1em}.meta-title[_ngcontent-%COMP%] .user-name[_ngcontent-%COMP%]{color:#fb7299;font-size:1rem;font-weight:700;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.meta-title[_ngcontent-%COMP%] .live-status[_ngcontent-%COMP%] nz-tag[_ngcontent-%COMP%]{margin:0;position:relative;bottom:1px}.meta-desc[_ngcontent-%COMP%]{margin:0;display:flex}.meta-desc[_ngcontent-%COMP%] .room-id-wrapper[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap}.meta-desc[_ngcontent-%COMP%] .room-id-wrapper[_ngcontent-%COMP%] .short-room-id[_ngcontent-%COMP%]:after{display:inline-block;width:1em;content:","}@media screen and (max-width: 320px){.meta-desc[_ngcontent-%COMP%] .room-id-wrapper[_ngcontent-%COMP%] .room-id-label[_ngcontent-%COMP%]{display:none}}.meta-desc[_ngcontent-%COMP%] .area-name[_ngcontent-%COMP%]{margin-left:auto}.meta-desc[_ngcontent-%COMP%] .area-name[_ngcontent-%COMP%] nz-tag[_ngcontent-%COMP%]{margin:0;border-radius:30px;padding:0 1em}.action-icon[_ngcontent-%COMP%]{font-size:16px}.not-allowed[_ngcontent-%COMP%]{cursor:not-allowed}'],changeDetection:0});class Mt{constructor(){this.dataList=[]}trackByRoomId(o,e){return e.room_info.room_id}}Mt.\u0275fac=function(o){return new(o||Mt)},Mt.\u0275cmp=t.Xpm({type:Mt,selectors:[["app-task-list"]],inputs:{dataList:"dataList"},decls:3,vars:2,consts:[["class","empty-container",4,"ngIf","ngIfElse"],["elseBlock",""],[1,"empty-container"],[1,"tasks-container"],["tasks",""],[3,"data",4,"ngFor","ngForOf","ngForTrackBy"],[3,"data"]],template:function(o,e){if(1&o&&(t.YNc(0,Za,2,0,"div",0),t.YNc(1,Ua,3,2,"ng-template",null,1,t.W1O)),2&o){const i=t.MAs(2);t.Q6J("ngIf",0===e.dataList.length)("ngIfElse",i)}},dependencies:[c.sg,c.O5,Vt.p9,kt],styles:["[_nghost-%COMP%]{height:100%;width:100%;position:relative;display:block;margin:0;padding:1rem;background:#f1f1f1;overflow:auto}[_nghost-%COMP%]{--card-width: 400px;--grid-gutter: 12px;padding:var(--grid-gutter)}@media screen and (max-width: 400px){[_nghost-%COMP%]{--card-width: 100%;padding:var(--grid-gutter) 0}}.tasks-container[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,var(--card-width));gap:var(--grid-gutter);justify-content:center;max-width:100%;margin:0 auto}.empty-container[_ngcontent-%COMP%]{height:100%;width:100%;display:flex;align-items:center;justify-content:center}"],changeDetection:0});var Ra=r(4351);function La(n,o){1&n&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165\u76f4\u64ad\u95f4\u53f7\u6216 URL "),t.BQk())}function Ja(n,o){1&n&&(t.ynx(0),t._uU(1," \u8f93\u5165\u6709\u9519\u8bef "),t.BQk())}function Qa(n,o){if(1&n&&(t.YNc(0,La,2,0,"ng-container",8),t.YNc(1,Ja,2,0,"ng-container",8)),2&n){const e=o.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}function Ka(n,o){if(1&n&&(t.ynx(0),t._UZ(1,"nz-alert",9),t.BQk()),2&n){const e=o.$implicit;t.xp6(1),t.Q6J("nzType",e.type)("nzMessage",e.message)}}function Ga(n,o){if(1&n&&(t.ynx(0),t.TgZ(1,"form",2)(2,"nz-form-item")(3,"nz-form-control",3),t._UZ(4,"input",4),t.YNc(5,Qa,2,2,"ng-template",null,5,t.W1O),t.qZA()()(),t.TgZ(7,"div",6),t.YNc(8,Ka,2,2,"ng-container",7),t.qZA(),t.BQk()),2&n){const e=t.MAs(6),i=t.oxw();t.xp6(1),t.Q6J("formGroup",i.formGroup),t.xp6(2),t.Q6J("nzErrorTip",e),t.xp6(1),t.Q6J("pattern",i.pattern),t.xp6(4),t.Q6J("ngForOf",i.resultMessages)}}const Wa=/^https?:\/\/live\.bilibili\.com\/(\d+).*$/,Ya=/^\s*(?:\d+(?:[ ]+\d+)*|https?:\/\/live\.bilibili\.com\/\d+.*)\s*$/;class Ot{constructor(o,e,i){this.changeDetector=e,this.taskManager=i,this.visible=!1,this.visibleChange=new t.vpe,this.pending=!1,this.resultMessages=[],this.pattern=Ya,this.formGroup=o.group({input:["",[p.kI.required,p.kI.pattern(this.pattern)]]})}get inputControl(){return this.formGroup.get("input")}open(){this.setVisible(!0)}close(){this.resultMessages=[],this.reset(),this.setVisible(!1)}setVisible(o){this.visible=o,this.visibleChange.emit(o),this.changeDetector.markForCheck()}reset(){this.pending=!1,this.formGroup.reset(),this.changeDetector.markForCheck()}handleCancel(){this.close()}handleConfirm(){this.pending=!0;const o=this.inputControl.value.trim();let e;e=o.startsWith("http")?[parseInt(Wa.exec(o)[1])]:new Set(o.split(/\s+/).map(i=>parseInt(i))),(0,Qt.D)(e).pipe((0,Ra.b)(i=>this.taskManager.addTask(i)),(0,v.b)(i=>{this.resultMessages.push(i),this.changeDetector.markForCheck()})).subscribe({complete:()=>{this.resultMessages.every(i=>"success"===i.type)?this.close():this.reset()}})}}Ot.\u0275fac=function(o){return new(o||Ot)(t.Y36(p.qu),t.Y36(t.sBO),t.Y36(Q))},Ot.\u0275cmp=t.Xpm({type:Ot,selectors:[["app-add-task-dialog"]],inputs:{visible:"visible"},outputs:{visibleChange:"visibleChange"},decls:2,vars:6,consts:[["nzTitle","\u6dfb\u52a0\u4efb\u52a1","nzCentered","","nzOkText","\u6dfb\u52a0",3,"nzVisible","nzOkLoading","nzOkDisabled","nzCancelDisabled","nzClosable","nzMaskClosable","nzOnOk","nzOnCancel"],[4,"nzModalContent"],["nz-form","",3,"formGroup"],["nzHasFeedback","",3,"nzErrorTip"],["nz-input","","required","","placeholder","\u76f4\u64ad\u95f4 URL \u6216\u623f\u95f4\u53f7\uff08\u652f\u6301\u591a\u4e2a\u623f\u95f4\u53f7\u7528\u7a7a\u683c\u9694\u5f00\uff09","formControlName","input",3,"pattern"],["errorTip",""],[1,"result-messages-container"],[4,"ngFor","ngForOf"],[4,"ngIf"],["nzShowIcon","",3,"nzType","nzMessage"]],template:function(o,e){1&o&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzOnOk",function(){return e.handleConfirm()})("nzOnCancel",function(){return e.handleCancel()}),t.YNc(1,Ga,9,4,"ng-container",1),t.qZA()),2&o&&t.Q6J("nzVisible",e.visible)("nzOkLoading",e.pending)("nzOkDisabled",e.formGroup.invalid)("nzCancelDisabled",e.pending)("nzClosable",!e.pending)("nzMaskClosable",!e.pending)},dependencies:[c.sg,c.O5,p._Y,p.Fj,p.JJ,p.JL,p.Q7,p.c5,p.sg,p.u,O.t3,O.SK,K.du,K.Hf,R.Lr,R.Nx,R.Fd,V.Zp,pn],styles:[".result-messages-container[_ngcontent-%COMP%]{width:100%;max-height:200px;overflow-y:auto}"],changeDetection:0});class vt{transform(o,e=""){return console.debug("filter tasks by '%s'",e),[...this.filterByTerm(o,e)]}filterByTerm(o,e){return function*qa(n,o){for(const e of n)o(e)&&(yield e)}(o,i=>""===(e=e.trim())||i.user_info.name.includes(e)||i.room_info.title.toString().includes(e)||i.room_info.area_name.toString().includes(e)||i.room_info.room_id.toString().includes(e)||i.room_info.short_room_id.toString().includes(e))}}function $a(n,o){if(1&n&&t._UZ(0,"nz-spin",6),2&n){const e=t.oxw();t.Q6J("nzSize","large")("nzSpinning",e.loading)}}function ja(n,o){if(1&n&&(t._UZ(0,"app-task-list",7),t.ALo(1,"filterTasks")),2&n){const e=t.oxw();t.Q6J("dataList",t.xi3(1,1,e.dataList,e.filterTerm))}}vt.\u0275fac=function(o){return new(o||vt)},vt.\u0275pipe=t.Yjl({name:"filterTasks",type:vt,pure:!0});const Te="app-tasks-selection",xe="app-tasks-reverse";class Et{constructor(o,e,i,a){this.changeDetector=o,this.notification=e,this.storage=i,this.taskService=a,this.loading=!0,this.dataList=[],this.filterTerm="",this.selection=this.retrieveSelection(),this.reverse=this.retrieveReverse()}ngOnInit(){this.syncTaskData()}ngOnDestroy(){this.desyncTaskData()}onSelectionChanged(o){this.selection=o,this.storeSelection(o),this.desyncTaskData(),this.syncTaskData()}onReverseChanged(o){this.reverse=o,this.storeReverse(o),o&&(this.dataList=[...this.dataList.reverse()],this.changeDetector.markForCheck())}retrieveSelection(){const o=this.storage.getData(Te);return null!==o?o:m.jf.ALL}retrieveReverse(){return"true"===this.storage.getData(xe)}storeSelection(o){this.storage.setData(Te,o)}storeReverse(o){this.storage.setData(xe,o.toString())}syncTaskData(){this.dataSubscription=(0,w.of)((0,w.of)(0),(0,pe.F)(1e3)).pipe((0,de.u)(),(0,st.w)(()=>this.taskService.getAllTaskData(this.selection)),(0,lt.K)(o=>{throw this.notification.error("\u83b7\u53d6\u4efb\u52a1\u6570\u636e\u51fa\u9519",o.message),o}),(0,Bt.X)(10,3e3)).subscribe(o=>{this.loading=!1,this.dataList=this.reverse?o.reverse():o,this.changeDetector.markForCheck()},o=>{this.notification.error("\u83b7\u53d6\u4efb\u52a1\u6570\u636e\u51fa\u9519","\u7f51\u7edc\u8fde\u63a5\u5f02\u5e38, \u8bf7\u5f85\u7f51\u7edc\u6b63\u5e38\u540e\u5237\u65b0\u3002",{nzDuration:0})})}desyncTaskData(){this.dataSubscription?.unsubscribe()}}Et.\u0275fac=function(o){return new(o||Et)(t.Y36(t.sBO),t.Y36(me.zb),t.Y36(Ce.V),t.Y36(Ut.M))},Et.\u0275cmp=t.Xpm({type:Et,selectors:[["app-tasks"]],decls:8,vars:4,consts:[[3,"selection","reverse","selectionChange","reverseChange","filterChange"],["class","spinner",3,"nzSize","nzSpinning",4,"ngIf","ngIfElse"],["elseBlock",""],["nz-button","","nzType","primary","nzSize","large","nzShape","circle","nz-tooltip","","nzTooltipTitle","\u6dfb\u52a0\u4efb\u52a1",1,"add-task-button",3,"click"],["nz-icon","","nzType","plus"],["addTaskDialog",""],[1,"spinner",3,"nzSize","nzSpinning"],[3,"dataList"]],template:function(o,e){if(1&o){const i=t.EpF();t.TgZ(0,"app-toolbar",0),t.NdJ("selectionChange",function(s){return e.onSelectionChanged(s)})("reverseChange",function(s){return e.onReverseChanged(s)})("filterChange",function(s){return e.filterTerm=s}),t.qZA(),t.YNc(1,$a,1,2,"nz-spin",1),t.YNc(2,ja,2,4,"ng-template",null,2,t.W1O),t.TgZ(4,"button",3),t.NdJ("click",function(){t.CHM(i);const s=t.MAs(7);return t.KtG(s.open())}),t._UZ(5,"i",4),t.qZA(),t._UZ(6,"app-add-task-dialog",null,5)}if(2&o){const i=t.MAs(3);t.Q6J("selection",e.selection)("reverse",e.reverse),t.xp6(1),t.Q6J("ngIf",e.loading)("ngIfElse",i)}},dependencies:[c.O5,P.Ls,it.SY,At.ix,Lt.w,Di.dQ,Ht.W,zt,Mt,Ot,vt],styles:["[_nghost-%COMP%]{height:100%;width:100%;position:relative;display:block;margin:0;padding:1rem;background:#f1f1f1;overflow:auto}.spinner[_ngcontent-%COMP%]{height:100%;width:100%}[_nghost-%COMP%]{display:flex;flex-direction:column;padding:0;overflow:hidden}.add-task-button[_ngcontent-%COMP%]{position:fixed;bottom:5vh;right:5vw}"],changeDetection:0});const Va=[{path:":id/detail",component:ht},{path:"",component:Et}];class nt{}nt.\u0275fac=function(o){return new(o||nt)},nt.\u0275mod=t.oAB({type:nt}),nt.\u0275inj=t.cJS({imports:[rt.Bz.forChild(Va),rt.Bz]});class ot{}ot.\u0275fac=function(o){return new(o||ot)},ot.\u0275mod=t.oAB({type:ot}),ot.\u0275inj=t.cJS({imports:[c.ez,p.u5,p.UX,h.xu,g,O.Jb,E.vh,qt,Yt.Rt,P.PV,qt,it.cg,ke,Ft.m,j.b1,At.sL,K.Qp,R.U5,V.o7,$t.Wr,Ye,Pt.aF,jt.S,Vt.Xo,Ht.j,gn,at.BL,wt.LV,Rn,L.HQ,Xn,Io,Jo.forRoot({echarts:()=>r.e(386).then(r.bind(r,7386))}),nt,Qo.m]})},7445:(x,D,r)=>{r.d(D,{F:()=>h});var c=r(4986),p=r(5963);function h(t=0,f=c.z){return t<0&&(t=0),(0,p.H)(t,t,f)}},7188:(x,D,r)=>{r.d(D,{$:()=>u});var c=r(9751),p=r(8421);const{isArray:h}=Array;var f=r(515),_=r(5403),q=r(3269);function u(...g){const O=(0,q.jO)(g),E=function t(g){return 1===g.length&&h(g[0])?g[0]:g}(g);return E.length?new c.y(P=>{let T=E.map(()=>[]),F=E.map(()=>!1);P.add(()=>{T=F=null});for(let y=0;!P.closed&&y<E.length;y++)(0,p.Xf)(E[y]).subscribe((0,_.x)(P,$=>{if(T[y].push($),T.every(k=>k.length)){const k=T.map(S=>S.shift());P.next(O?O(...k):k),T.some((S,bt)=>!S.length&&F[bt])&&P.complete()}},()=>{F[y]=!0,!T[y].length&&P.complete()}));return()=>{T=F=null}}):f.E}}}]); \ No newline at end of file diff --git a/src/blrec/data/webapp/548.73ee5c2419f2617e.js b/src/blrec/data/webapp/548.f8a3199ca2412e0d.js similarity index 80% rename from src/blrec/data/webapp/548.73ee5c2419f2617e.js rename to src/blrec/data/webapp/548.f8a3199ca2412e0d.js index b2db0bc..50d177c 100644 --- a/src/blrec/data/webapp/548.73ee5c2419f2617e.js +++ b/src/blrec/data/webapp/548.f8a3199ca2412e0d.js @@ -1 +1 @@ -"use strict";(self.webpackChunkblrec=self.webpackChunkblrec||[]).push([[548],{2548:(os,xe,c)=>{c.r(xe),c.d(xe,{SettingsModule:()=>_t});var p=c(6895),r=c(433),ge=c(5681),en=c(5655),nn=c(1971),l=c(6704),O=c(5635),U=c(1243),Oe=c(8213),G=c(8521),t=c(4650),ue=c(7570),on=c(3353),Ct=c(445);let sn=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=t.oAB({type:i}),i.\u0275inj=t.cJS({imports:[Ct.vT,p.ez,on.ud,ue.cg]}),i})();var zt=c(8e3),_=c(5156),Q=c(6616),lt=c(1102),Me=c(4383),ct=c(6287),D=c(655),E=c(3187),be=c(7579),ln=c(9770),ie=c(9646),cn=c(6451),gn=c(9751),un=c(1135),mn=c(5698),Pe=c(3900),gt=c(2722),ut=c(3303),Te=c(4788),u=c(3679);const V=["*"];function bn(i,n){1&i&&t.Hsn(0)}const Pn=["nz-list-item-actions",""];function Tn(i,n){}function wn(i,n){1&i&&t._UZ(0,"em",3)}function Fn(i,n){if(1&i&&(t.TgZ(0,"li"),t.YNc(1,Tn,0,0,"ng-template",1),t.YNc(2,wn,1,0,"em",2),t.qZA()),2&i){const e=n.$implicit,o=n.last;t.xp6(1),t.Q6J("ngTemplateOutlet",e),t.xp6(1),t.Q6J("ngIf",!o)}}function Sn(i,n){}const we=function(i,n){return{$implicit:i,index:n}};function yn(i,n){if(1&i&&(t.ynx(0),t.YNc(1,Sn,0,0,"ng-template",9),t.BQk()),2&i){const e=n.$implicit,o=n.index,a=t.oxw(2);t.xp6(1),t.Q6J("ngTemplateOutlet",a.nzRenderItem)("ngTemplateOutletContext",t.WLB(2,we,e,o))}}function An(i,n){if(1&i&&(t.TgZ(0,"div",7),t.YNc(1,yn,2,5,"ng-container",8),t.Hsn(2,4),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("ngForOf",e.nzDataSource)}}function kn(i,n){if(1&i&&(t.ynx(0),t._uU(1),t.BQk()),2&i){const e=t.oxw(2);t.xp6(1),t.Oqu(e.nzHeader)}}function Dn(i,n){if(1&i&&(t.TgZ(0,"nz-list-header"),t.YNc(1,kn,2,1,"ng-container",10),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzHeader)}}function En(i,n){1&i&&t._UZ(0,"div"),2&i&&t.Udp("min-height",53,"px")}function Zn(i,n){}function Nn(i,n){if(1&i&&(t.TgZ(0,"div",13),t.YNc(1,Zn,0,0,"ng-template",9),t.qZA()),2&i){const e=n.$implicit,o=n.index,a=t.oxw(2);t.Q6J("nzSpan",a.nzGrid.span||null)("nzXs",a.nzGrid.xs||null)("nzSm",a.nzGrid.sm||null)("nzMd",a.nzGrid.md||null)("nzLg",a.nzGrid.lg||null)("nzXl",a.nzGrid.xl||null)("nzXXl",a.nzGrid.xxl||null),t.xp6(1),t.Q6J("ngTemplateOutlet",a.nzRenderItem)("ngTemplateOutletContext",t.WLB(9,we,e,o))}}function Bn(i,n){if(1&i&&(t.TgZ(0,"div",11),t.YNc(1,Nn,2,12,"div",12),t.qZA()),2&i){const e=t.oxw();t.Q6J("nzGutter",e.nzGrid.gutter||null),t.xp6(1),t.Q6J("ngForOf",e.nzDataSource)}}function Un(i,n){if(1&i&&t._UZ(0,"nz-list-empty",14),2&i){const e=t.oxw();t.Q6J("nzNoResult",e.nzNoResult)}}function In(i,n){if(1&i&&(t.ynx(0),t._uU(1),t.BQk()),2&i){const e=t.oxw(2);t.xp6(1),t.Oqu(e.nzFooter)}}function Jn(i,n){if(1&i&&(t.TgZ(0,"nz-list-footer"),t.YNc(1,In,2,1,"ng-container",10),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzFooter)}}function Qn(i,n){}function Vn(i,n){}function Ln(i,n){if(1&i&&(t.TgZ(0,"nz-list-pagination"),t.YNc(1,Vn,0,0,"ng-template",6),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("ngTemplateOutlet",e.nzPagination)}}const qn=[[["nz-list-header"]],[["nz-list-footer"],["","nz-list-footer",""]],[["nz-list-load-more"],["","nz-list-load-more",""]],[["nz-list-pagination"],["","nz-list-pagination",""]],"*"],Yn=["nz-list-header","nz-list-footer, [nz-list-footer]","nz-list-load-more, [nz-list-load-more]","nz-list-pagination, [nz-list-pagination]","*"];function Wn(i,n){if(1&i&&t._UZ(0,"ul",6),2&i){const e=t.oxw(2);t.Q6J("nzActions",e.nzActions)}}function Rn(i,n){if(1&i&&(t.YNc(0,Wn,1,1,"ul",5),t.Hsn(1)),2&i){const e=t.oxw();t.Q6J("ngIf",e.nzActions&&e.nzActions.length>0)}}function Gn(i,n){if(1&i&&(t.ynx(0),t._uU(1),t.BQk()),2&i){const e=t.oxw(3);t.xp6(1),t.Oqu(e.nzContent)}}function Hn(i,n){if(1&i&&(t.ynx(0),t.YNc(1,Gn,2,1,"ng-container",8),t.BQk()),2&i){const e=t.oxw(2);t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzContent)}}function $n(i,n){if(1&i&&(t.Hsn(0,1),t.Hsn(1,2),t.YNc(2,Hn,2,1,"ng-container",7)),2&i){const e=t.oxw();t.xp6(2),t.Q6J("ngIf",e.nzContent)}}function Kn(i,n){1&i&&t.Hsn(0,3)}function Xn(i,n){}function jn(i,n){}function ti(i,n){}function ei(i,n){}function ni(i,n){if(1&i&&(t.YNc(0,Xn,0,0,"ng-template",9),t.YNc(1,jn,0,0,"ng-template",9),t.YNc(2,ti,0,0,"ng-template",9),t.YNc(3,ei,0,0,"ng-template",9)),2&i){const e=t.oxw(),o=t.MAs(3),a=t.MAs(5),s=t.MAs(1);t.Q6J("ngTemplateOutlet",o),t.xp6(1),t.Q6J("ngTemplateOutlet",e.nzExtra),t.xp6(1),t.Q6J("ngTemplateOutlet",a),t.xp6(1),t.Q6J("ngTemplateOutlet",s)}}function ii(i,n){}function oi(i,n){}function ai(i,n){}function ri(i,n){if(1&i&&(t.TgZ(0,"nz-list-item-extra"),t.YNc(1,ai,0,0,"ng-template",9),t.qZA()),2&i){const e=t.oxw(2);t.xp6(1),t.Q6J("ngTemplateOutlet",e.nzExtra)}}function si(i,n){}function li(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"div",10),t.YNc(2,ii,0,0,"ng-template",9),t.YNc(3,oi,0,0,"ng-template",9),t.qZA(),t.YNc(4,ri,2,1,"nz-list-item-extra",7),t.YNc(5,si,0,0,"ng-template",9),t.BQk()),2&i){const e=t.oxw(),o=t.MAs(3),a=t.MAs(1),s=t.MAs(5);t.xp6(2),t.Q6J("ngTemplateOutlet",o),t.xp6(1),t.Q6J("ngTemplateOutlet",a),t.xp6(1),t.Q6J("ngIf",e.nzExtra),t.xp6(1),t.Q6J("ngTemplateOutlet",s)}}const ci=[[["nz-list-item-actions"],["","nz-list-item-actions",""]],[["nz-list-item-meta"],["","nz-list-item-meta",""]],"*",[["nz-list-item-extra"],["","nz-list-item-extra",""]]],gi=["nz-list-item-actions, [nz-list-item-actions]","nz-list-item-meta, [nz-list-item-meta]","*","nz-list-item-extra, [nz-list-item-extra]"];let de=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-list-item-extra"],["","nz-list-item-extra",""]],hostAttrs:[1,"ant-list-item-extra"],exportAs:["nzListItemExtra"],ngContentSelectors:V,decls:1,vars:0,template:function(e,o){1&e&&(t.F$t(),t.Hsn(0))},encapsulation:2,changeDetection:0}),i})(),Se=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-list-item-action"]],viewQuery:function(e,o){if(1&e&&t.Gf(t.Rgc,5),2&e){let a;t.iGM(a=t.CRH())&&(o.templateRef=a.first)}},exportAs:["nzListItemAction"],ngContentSelectors:V,decls:1,vars:0,template:function(e,o){1&e&&(t.F$t(),t.YNc(0,bn,1,0,"ng-template"))},encapsulation:2,changeDetection:0}),i})(),ye=(()=>{class i{constructor(e,o,a){this.ngZone=e,this.nzActions=[],this.actions=[],this.inputActionChanges$=new be.x,this.contentChildrenChanges$=(0,ln.P)(()=>this.nzListItemActions?(0,ie.of)(null):this.ngZone.onStable.pipe((0,mn.q)(1),this.enterZone(),(0,Pe.w)(()=>this.contentChildrenChanges$))),(0,cn.T)(this.contentChildrenChanges$,this.inputActionChanges$).pipe((0,gt.R)(a)).subscribe(()=>{this.actions=this.nzActions.length?this.nzActions:this.nzListItemActions.map(s=>s.templateRef),o.detectChanges()})}ngOnChanges(){this.inputActionChanges$.next(null)}enterZone(){return e=>new gn.y(o=>e.subscribe({next:a=>this.ngZone.run(()=>o.next(a))}))}}return i.\u0275fac=function(e){return new(e||i)(t.Y36(t.R0b),t.Y36(t.sBO),t.Y36(ut.kn))},i.\u0275cmp=t.Xpm({type:i,selectors:[["ul","nz-list-item-actions",""]],contentQueries:function(e,o,a){if(1&e&&t.Suo(a,Se,4),2&e){let s;t.iGM(s=t.CRH())&&(o.nzListItemActions=s)}},hostAttrs:[1,"ant-list-item-action"],inputs:{nzActions:"nzActions"},exportAs:["nzListItemActions"],features:[t._Bn([ut.kn]),t.TTD],attrs:Pn,decls:1,vars:1,consts:[[4,"ngFor","ngForOf"],[3,"ngTemplateOutlet"],["class","ant-list-item-action-split",4,"ngIf"],[1,"ant-list-item-action-split"]],template:function(e,o){1&e&&t.YNc(0,Fn,3,2,"li",0),2&e&&t.Q6J("ngForOf",o.actions)},dependencies:[p.sg,p.O5,p.tP],encapsulation:2,changeDetection:0}),i})(),he=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-list-empty"]],hostAttrs:[1,"ant-list-empty-text"],inputs:{nzNoResult:"nzNoResult"},exportAs:["nzListHeader"],decls:1,vars:2,consts:[[3,"nzComponentName","specificContent"]],template:function(e,o){1&e&&t._UZ(0,"nz-embed-empty",0),2&e&&t.Q6J("nzComponentName","list")("specificContent",o.nzNoResult)},dependencies:[Te.gB],encapsulation:2,changeDetection:0}),i})(),_e=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-list-header"]],hostAttrs:[1,"ant-list-header"],exportAs:["nzListHeader"],ngContentSelectors:V,decls:1,vars:0,template:function(e,o){1&e&&(t.F$t(),t.Hsn(0))},encapsulation:2,changeDetection:0}),i})(),fe=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-list-footer"]],hostAttrs:[1,"ant-list-footer"],exportAs:["nzListFooter"],ngContentSelectors:V,decls:1,vars:0,template:function(e,o){1&e&&(t.F$t(),t.Hsn(0))},encapsulation:2,changeDetection:0}),i})(),Ce=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-list-pagination"]],hostAttrs:[1,"ant-list-pagination"],exportAs:["nzListPagination"],ngContentSelectors:V,decls:1,vars:0,template:function(e,o){1&e&&(t.F$t(),t.Hsn(0))},encapsulation:2,changeDetection:0}),i})(),Ae=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=t.lG2({type:i,selectors:[["nz-list-load-more"]],exportAs:["nzListLoadMoreDirective"]}),i})(),ve=(()=>{class i{constructor(e){this.directionality=e,this.nzBordered=!1,this.nzGrid="",this.nzItemLayout="horizontal",this.nzRenderItem=null,this.nzLoading=!1,this.nzLoadMore=null,this.nzSize="default",this.nzSplit=!0,this.hasSomethingAfterLastItem=!1,this.dir="ltr",this.itemLayoutNotifySource=new un.X(this.nzItemLayout),this.destroy$=new be.x}get itemLayoutNotify$(){return this.itemLayoutNotifySource.asObservable()}ngOnInit(){this.dir=this.directionality.value,this.directionality.change?.pipe((0,gt.R)(this.destroy$)).subscribe(e=>{this.dir=e})}getSomethingAfterLastItem(){return!!(this.nzLoadMore||this.nzPagination||this.nzFooter||this.nzListFooterComponent||this.nzListPaginationComponent||this.nzListLoadMoreDirective)}ngOnChanges(e){e.nzItemLayout&&this.itemLayoutNotifySource.next(this.nzItemLayout)}ngOnDestroy(){this.itemLayoutNotifySource.unsubscribe(),this.destroy$.next(),this.destroy$.complete()}ngAfterContentInit(){this.hasSomethingAfterLastItem=this.getSomethingAfterLastItem()}}return i.\u0275fac=function(e){return new(e||i)(t.Y36(Ct.Is,8))},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-list"],["","nz-list",""]],contentQueries:function(e,o,a){if(1&e&&(t.Suo(a,fe,5),t.Suo(a,Ce,5),t.Suo(a,Ae,5)),2&e){let s;t.iGM(s=t.CRH())&&(o.nzListFooterComponent=s.first),t.iGM(s=t.CRH())&&(o.nzListPaginationComponent=s.first),t.iGM(s=t.CRH())&&(o.nzListLoadMoreDirective=s.first)}},hostAttrs:[1,"ant-list"],hostVars:16,hostBindings:function(e,o){2&e&&t.ekj("ant-list-rtl","rtl"===o.dir)("ant-list-vertical","vertical"===o.nzItemLayout)("ant-list-lg","large"===o.nzSize)("ant-list-sm","small"===o.nzSize)("ant-list-split",o.nzSplit)("ant-list-bordered",o.nzBordered)("ant-list-loading",o.nzLoading)("ant-list-something-after-last-item",o.hasSomethingAfterLastItem)},inputs:{nzDataSource:"nzDataSource",nzBordered:"nzBordered",nzGrid:"nzGrid",nzHeader:"nzHeader",nzFooter:"nzFooter",nzItemLayout:"nzItemLayout",nzRenderItem:"nzRenderItem",nzLoading:"nzLoading",nzLoadMore:"nzLoadMore",nzPagination:"nzPagination",nzSize:"nzSize",nzSplit:"nzSplit",nzNoResult:"nzNoResult"},exportAs:["nzList"],features:[t.TTD],ngContentSelectors:Yn,decls:15,vars:9,consts:[["itemsTpl",""],[4,"ngIf"],[3,"nzSpinning"],[3,"min-height",4,"ngIf"],["nz-row","",3,"nzGutter",4,"ngIf","ngIfElse"],[3,"nzNoResult",4,"ngIf"],[3,"ngTemplateOutlet"],[1,"ant-list-items"],[4,"ngFor","ngForOf"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[4,"nzStringTemplateOutlet"],["nz-row","",3,"nzGutter"],["nz-col","",3,"nzSpan","nzXs","nzSm","nzMd","nzLg","nzXl","nzXXl",4,"ngFor","ngForOf"],["nz-col","",3,"nzSpan","nzXs","nzSm","nzMd","nzLg","nzXl","nzXXl"],[3,"nzNoResult"]],template:function(e,o){if(1&e&&(t.F$t(qn),t.YNc(0,An,3,1,"ng-template",null,0,t.W1O),t.YNc(2,Dn,2,1,"nz-list-header",1),t.Hsn(3),t.TgZ(4,"nz-spin",2),t.ynx(5),t.YNc(6,En,1,2,"div",3),t.YNc(7,Bn,2,2,"div",4),t.YNc(8,Un,1,1,"nz-list-empty",5),t.BQk(),t.qZA(),t.YNc(9,Jn,2,1,"nz-list-footer",1),t.Hsn(10,1),t.YNc(11,Qn,0,0,"ng-template",6),t.Hsn(12,2),t.YNc(13,Ln,2,1,"nz-list-pagination",1),t.Hsn(14,3)),2&e){const a=t.MAs(1);t.xp6(2),t.Q6J("ngIf",o.nzHeader),t.xp6(2),t.Q6J("nzSpinning",o.nzLoading),t.xp6(2),t.Q6J("ngIf",o.nzLoading&&o.nzDataSource&&0===o.nzDataSource.length),t.xp6(1),t.Q6J("ngIf",o.nzGrid&&o.nzDataSource)("ngIfElse",a),t.xp6(1),t.Q6J("ngIf",!o.nzLoading&&o.nzDataSource&&0===o.nzDataSource.length),t.xp6(1),t.Q6J("ngIf",o.nzFooter),t.xp6(2),t.Q6J("ngTemplateOutlet",o.nzLoadMore),t.xp6(2),t.Q6J("ngIf",o.nzPagination)}},dependencies:[p.sg,p.O5,p.tP,ge.W,u.t3,u.SK,ct.f,_e,fe,Ce,he],encapsulation:2,changeDetection:0}),(0,D.gn)([(0,E.yF)()],i.prototype,"nzBordered",void 0),(0,D.gn)([(0,E.yF)()],i.prototype,"nzLoading",void 0),(0,D.gn)([(0,E.yF)()],i.prototype,"nzSplit",void 0),i})(),ke=(()=>{class i{constructor(e,o,a,s){this.parentComp=a,this.cdr=s,this.nzActions=[],this.nzExtra=null,this.nzNoFlex=!1,o.addClass(e.nativeElement,"ant-list-item")}get isVerticalAndExtra(){return!("vertical"!==this.itemLayout||!this.listItemExtraDirective&&!this.nzExtra)}ngAfterViewInit(){this.itemLayout$=this.parentComp.itemLayoutNotify$.subscribe(e=>{this.itemLayout=e,this.cdr.detectChanges()})}ngOnDestroy(){this.itemLayout$&&this.itemLayout$.unsubscribe()}}return i.\u0275fac=function(e){return new(e||i)(t.Y36(t.SBq),t.Y36(t.Qsj),t.Y36(ve),t.Y36(t.sBO))},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-list-item"],["","nz-list-item",""]],contentQueries:function(e,o,a){if(1&e&&t.Suo(a,de,5),2&e){let s;t.iGM(s=t.CRH())&&(o.listItemExtraDirective=s.first)}},hostVars:2,hostBindings:function(e,o){2&e&&t.ekj("ant-list-item-no-flex",o.nzNoFlex)},inputs:{nzActions:"nzActions",nzContent:"nzContent",nzExtra:"nzExtra",nzNoFlex:"nzNoFlex"},exportAs:["nzListItem"],ngContentSelectors:gi,decls:9,vars:2,consts:[["actionsTpl",""],["contentTpl",""],["extraTpl",""],["simpleTpl",""],[4,"ngIf","ngIfElse"],["nz-list-item-actions","",3,"nzActions",4,"ngIf"],["nz-list-item-actions","",3,"nzActions"],[4,"ngIf"],[4,"nzStringTemplateOutlet"],[3,"ngTemplateOutlet"],[1,"ant-list-item-main"]],template:function(e,o){if(1&e&&(t.F$t(ci),t.YNc(0,Rn,2,1,"ng-template",null,0,t.W1O),t.YNc(2,$n,3,1,"ng-template",null,1,t.W1O),t.YNc(4,Kn,1,0,"ng-template",null,2,t.W1O),t.YNc(6,ni,4,4,"ng-template",null,3,t.W1O),t.YNc(8,li,6,4,"ng-container",4)),2&e){const a=t.MAs(7);t.xp6(8),t.Q6J("ngIf",o.isVerticalAndExtra)("ngIfElse",a)}},dependencies:[p.O5,p.tP,ct.f,ye,de],encapsulation:2,changeDetection:0}),(0,D.gn)([(0,E.yF)()],i.prototype,"nzNoFlex",void 0),i})(),pi=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=t.oAB({type:i}),i.\u0275inj=t.cJS({imports:[Ct.vT,p.ez,ge.j,u.Jb,Me.Rt,ct.T,Te.Xo]}),i})();var oe=c(9562),di=c(2577),H=c(6675),hi=c(4968),ae=c(9300),_i=c(2539),mt=c(2536),De=c(4903);const Ee=["*"],fi=["collapseHeader"];function Ci(i,n){if(1&i&&(t.ynx(0),t._UZ(1,"span",7),t.BQk()),2&i){const e=n.$implicit,o=t.oxw(2);t.xp6(1),t.Q6J("nzType",e||"right")("nzRotate",o.nzActive?90:0)}}function vi(i,n){if(1&i&&(t.TgZ(0,"div"),t.YNc(1,Ci,2,2,"ng-container",3),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzExpandedIcon)}}function zi(i,n){if(1&i&&(t.ynx(0),t._uU(1),t.BQk()),2&i){const e=t.oxw();t.xp6(1),t.Oqu(e.nzHeader)}}function xi(i,n){if(1&i&&(t.ynx(0),t._uU(1),t.BQk()),2&i){const e=t.oxw(2);t.xp6(1),t.Oqu(e.nzExtra)}}function Oi(i,n){if(1&i&&(t.TgZ(0,"div",8),t.YNc(1,xi,2,1,"ng-container",3),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzExtra)}}const Ze="collapse";let Ne=(()=>{class i{constructor(e,o,a,s){this.nzConfigService=e,this.cdr=o,this.directionality=a,this.destroy$=s,this._nzModuleName=Ze,this.nzAccordion=!1,this.nzBordered=!0,this.nzGhost=!1,this.nzExpandIconPosition="left",this.dir="ltr",this.listOfNzCollapsePanelComponent=[],this.nzConfigService.getConfigChangeEventForComponent(Ze).pipe((0,gt.R)(this.destroy$)).subscribe(()=>{this.cdr.markForCheck()})}ngOnInit(){this.directionality.change?.pipe((0,gt.R)(this.destroy$)).subscribe(e=>{this.dir=e,this.cdr.detectChanges()}),this.dir=this.directionality.value}addPanel(e){this.listOfNzCollapsePanelComponent.push(e)}removePanel(e){this.listOfNzCollapsePanelComponent.splice(this.listOfNzCollapsePanelComponent.indexOf(e),1)}click(e){this.nzAccordion&&!e.nzActive&&this.listOfNzCollapsePanelComponent.filter(o=>o!==e).forEach(o=>{o.nzActive&&(o.nzActive=!1,o.nzActiveChange.emit(o.nzActive),o.markForCheck())}),e.nzActive=!e.nzActive,e.nzActiveChange.emit(e.nzActive)}}return i.\u0275fac=function(e){return new(e||i)(t.Y36(mt.jY),t.Y36(t.sBO),t.Y36(Ct.Is,8),t.Y36(ut.kn))},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-collapse"]],hostAttrs:[1,"ant-collapse"],hostVars:10,hostBindings:function(e,o){2&e&&t.ekj("ant-collapse-icon-position-left","left"===o.nzExpandIconPosition)("ant-collapse-icon-position-right","right"===o.nzExpandIconPosition)("ant-collapse-ghost",o.nzGhost)("ant-collapse-borderless",!o.nzBordered)("ant-collapse-rtl","rtl"===o.dir)},inputs:{nzAccordion:"nzAccordion",nzBordered:"nzBordered",nzGhost:"nzGhost",nzExpandIconPosition:"nzExpandIconPosition"},exportAs:["nzCollapse"],features:[t._Bn([ut.kn])],ngContentSelectors:Ee,decls:1,vars:0,template:function(e,o){1&e&&(t.F$t(),t.Hsn(0))},encapsulation:2,changeDetection:0}),(0,D.gn)([(0,mt.oS)(),(0,E.yF)()],i.prototype,"nzAccordion",void 0),(0,D.gn)([(0,mt.oS)(),(0,E.yF)()],i.prototype,"nzBordered",void 0),(0,D.gn)([(0,mt.oS)(),(0,E.yF)()],i.prototype,"nzGhost",void 0),i})();const Be="collapsePanel";let Mi=(()=>{class i{constructor(e,o,a,s,g,m){this.nzConfigService=e,this.ngZone=o,this.cdr=a,this.destroy$=s,this.nzCollapseComponent=g,this.noAnimation=m,this._nzModuleName=Be,this.nzActive=!1,this.nzDisabled=!1,this.nzShowArrow=!0,this.nzActiveChange=new t.vpe,this.nzConfigService.getConfigChangeEventForComponent(Be).pipe((0,gt.R)(this.destroy$)).subscribe(()=>{this.cdr.markForCheck()})}markForCheck(){this.cdr.markForCheck()}ngOnInit(){this.nzCollapseComponent.addPanel(this),this.ngZone.runOutsideAngular(()=>(0,hi.R)(this.collapseHeader.nativeElement,"click").pipe((0,ae.h)(()=>!this.nzDisabled),(0,gt.R)(this.destroy$)).subscribe(()=>{this.ngZone.run(()=>{this.nzCollapseComponent.click(this),this.cdr.markForCheck()})}))}ngOnDestroy(){this.nzCollapseComponent.removePanel(this)}}return i.\u0275fac=function(e){return new(e||i)(t.Y36(mt.jY),t.Y36(t.R0b),t.Y36(t.sBO),t.Y36(ut.kn),t.Y36(Ne,1),t.Y36(De.P,8))},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-collapse-panel"]],viewQuery:function(e,o){if(1&e&&t.Gf(fi,7),2&e){let a;t.iGM(a=t.CRH())&&(o.collapseHeader=a.first)}},hostAttrs:[1,"ant-collapse-item"],hostVars:6,hostBindings:function(e,o){2&e&&t.ekj("ant-collapse-no-arrow",!o.nzShowArrow)("ant-collapse-item-active",o.nzActive)("ant-collapse-item-disabled",o.nzDisabled)},inputs:{nzActive:"nzActive",nzDisabled:"nzDisabled",nzShowArrow:"nzShowArrow",nzExtra:"nzExtra",nzHeader:"nzHeader",nzExpandedIcon:"nzExpandedIcon"},outputs:{nzActiveChange:"nzActiveChange"},exportAs:["nzCollapsePanel"],features:[t._Bn([ut.kn])],ngContentSelectors:Ee,decls:8,vars:8,consts:[["role","button",1,"ant-collapse-header"],["collapseHeader",""],[4,"ngIf"],[4,"nzStringTemplateOutlet"],["class","ant-collapse-extra",4,"ngIf"],[1,"ant-collapse-content"],[1,"ant-collapse-content-box"],["nz-icon","",1,"ant-collapse-arrow",3,"nzType","nzRotate"],[1,"ant-collapse-extra"]],template:function(e,o){1&e&&(t.F$t(),t.TgZ(0,"div",0,1),t.YNc(2,vi,2,1,"div",2),t.YNc(3,zi,2,1,"ng-container",3),t.YNc(4,Oi,2,1,"div",4),t.qZA(),t.TgZ(5,"div",5)(6,"div",6),t.Hsn(7),t.qZA()()),2&e&&(t.uIk("aria-expanded",o.nzActive),t.xp6(2),t.Q6J("ngIf",o.nzShowArrow),t.xp6(1),t.Q6J("nzStringTemplateOutlet",o.nzHeader),t.xp6(1),t.Q6J("ngIf",o.nzExtra),t.xp6(1),t.ekj("ant-collapse-content-active",o.nzActive),t.Q6J("@.disabled",!(null==o.noAnimation||!o.noAnimation.nzNoAnimation))("@collapseMotion",o.nzActive?"expanded":"hidden"))},dependencies:[p.O5,lt.Ls,ct.f],encapsulation:2,data:{animation:[_i.J_]},changeDetection:0}),(0,D.gn)([(0,E.yF)()],i.prototype,"nzActive",void 0),(0,D.gn)([(0,E.yF)()],i.prototype,"nzDisabled",void 0),(0,D.gn)([(0,mt.oS)(),(0,E.yF)()],i.prototype,"nzShowArrow",void 0),i})(),bi=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=t.oAB({type:i}),i.\u0275inj=t.cJS({imports:[Ct.vT,p.ez,lt.PV,ct.T,De.g]}),i})();var Pi=c(4466),w=c(262),F=c(4007),Z=c(324),L=c(387),S=c(5136);class ${constructor(n,e,o){this.logger=n,this.notification=e,this.settingService=o}resolve(n,e){return this.settingService.getSettings(["output","logging","biliApi","header","danmaku","recorder","postprocessing","space"]).pipe((0,F.X)(3,300),(0,w.K)(o=>{throw this.logger.error("Failed to get settings:",o),this.notification.error("\u83b7\u53d6\u8bbe\u7f6e\u51fa\u9519",o.message,{nzDuration:0}),o}))}}$.\u0275fac=function(n){return new(n||$)(t.LFG(Z.Kf),t.LFG(L.zb),t.LFG(S.R))},$.\u0275prov=t.Yz7({token:$,factory:$.\u0275fac});var T=c(4004);class K{constructor(n,e,o){this.logger=n,this.notification=e,this.settingService=o}resolve(n,e){return this.settingService.getSettings(["emailNotification"]).pipe((0,T.U)(o=>o.emailNotification),(0,F.X)(3,300),(0,w.K)(o=>{throw this.logger.error("Failed to get email notification settings:",o),this.notification.error("\u83b7\u53d6\u90ae\u4ef6\u901a\u77e5\u8bbe\u7f6e\u51fa\u9519",o.message,{nzDuration:0}),o}))}}K.\u0275fac=function(n){return new(n||K)(t.LFG(Z.Kf),t.LFG(L.zb),t.LFG(S.R))},K.\u0275prov=t.Yz7({token:K,factory:K.\u0275fac});class X{constructor(n,e,o){this.logger=n,this.notification=e,this.settingService=o}resolve(n,e){return this.settingService.getSettings(["serverchanNotification"]).pipe((0,T.U)(o=>o.serverchanNotification),(0,F.X)(3,300),(0,w.K)(o=>{throw this.logger.error("Failed to get ServerChan notification settings:",o),this.notification.error("\u83b7\u53d6 ServerChan \u901a\u77e5\u8bbe\u7f6e\u51fa\u9519",o.message,{nzDuration:0}),o}))}}X.\u0275fac=function(n){return new(n||X)(t.LFG(Z.Kf),t.LFG(L.zb),t.LFG(S.R))},X.\u0275prov=t.Yz7({token:X,factory:X.\u0275fac});class j{constructor(n,e,o){this.logger=n,this.notification=e,this.settingService=o}resolve(n,e){return this.settingService.getSettings(["pushdeerNotification"]).pipe((0,T.U)(o=>o.pushdeerNotification),(0,F.X)(3,300),(0,w.K)(o=>{throw this.logger.error("Failed to get PushDeer notification settings:",o),this.notification.error("\u83b7\u53d6 pushdeer \u901a\u77e5\u8bbe\u7f6e\u51fa\u9519",o.message,{nzDuration:0}),o}))}}j.\u0275fac=function(n){return new(n||j)(t.LFG(Z.Kf),t.LFG(L.zb),t.LFG(S.R))},j.\u0275prov=t.Yz7({token:j,factory:j.\u0275fac});class tt{constructor(n,e,o){this.logger=n,this.notification=e,this.settingService=o}resolve(n,e){return this.settingService.getSettings(["pushplusNotification"]).pipe((0,T.U)(o=>o.pushplusNotification),(0,F.X)(3,300),(0,w.K)(o=>{throw this.logger.error("Failed to get pushplus notification settings:",o),this.notification.error("\u83b7\u53d6 pushplus \u901a\u77e5\u8bbe\u7f6e\u51fa\u9519",o.message,{nzDuration:0}),o}))}}tt.\u0275fac=function(n){return new(n||tt)(t.LFG(Z.Kf),t.LFG(L.zb),t.LFG(S.R))},tt.\u0275prov=t.Yz7({token:tt,factory:tt.\u0275fac});class et{constructor(n,e,o){this.logger=n,this.notification=e,this.settingService=o}resolve(n,e){return this.settingService.getSettings(["telegramNotification"]).pipe((0,T.U)(o=>o.telegramNotification),(0,F.X)(3,300),(0,w.K)(o=>{throw this.logger.error("Failed to get telegram notification settings:",o),this.notification.error("\u83b7\u53d6 telegram \u901a\u77e5\u8bbe\u7f6e\u51fa\u9519",o.message,{nzDuration:0}),o}))}}et.\u0275fac=function(n){return new(n||et)(t.LFG(Z.Kf),t.LFG(L.zb),t.LFG(S.R))},et.\u0275prov=t.Yz7({token:et,factory:et.\u0275fac});class nt{constructor(n,e,o){this.logger=n,this.notification=e,this.settingService=o}resolve(n,e){return this.settingService.getSettings(["webhooks"]).pipe((0,T.U)(o=>o.webhooks),(0,F.X)(3,300),(0,w.K)(o=>{throw this.logger.error("Failed to get webhook settings:",o),this.notification.error("\u83b7\u53d6 Webhook \u8bbe\u7f6e\u51fa\u9519",o.message,{nzDuration:0}),o}))}}nt.\u0275fac=function(n){return new(n||nt)(t.LFG(Z.Kf),t.LFG(L.zb),t.LFG(S.R))},nt.\u0275prov=t.Yz7({token:nt,factory:nt.\u0275fac});var v=c(6582);class it{constructor(n,e,o){this.logger=n,this.notification=e,this.settingService=o}resolve(n,e){return this.settingService.getSettings(["barkNotification"]).pipe((0,T.U)(o=>o.barkNotification),(0,F.X)(3,300),(0,w.K)(o=>{throw this.logger.error("Failed to get bark notification settings:",o),this.notification.error("\u83b7\u53d6 bark \u901a\u77e5\u8bbe\u7f6e\u51fa\u9519",o.message,{nzDuration:0}),o}))}}it.\u0275fac=function(n){return new(n||it)(t.LFG(Z.Kf),t.LFG(L.zb),t.LFG(S.R))},it.\u0275prov=t.Yz7({token:it,factory:it.\u0275fac});var Ue=c(5026),Ti=c(5363),wi=c(4986),Ie=c(4704),b=c(2340);const x="RouterScrollService",Je="defaultViewport",Qe="customViewport";class pt{constructor(n,e,o,a){this.router=n,this.activatedRoute=e,this.viewportScroller=o,this.logger=a,this.addQueue=[],this.addBeforeNavigationQueue=[],this.removeQueue=[],this.routeStrategies=[],this.scrollDefaultViewport=!0,this.customViewportToScroll=null,b.N.traceRouterScrolling&&this.logger.trace(`${x}:: constructor`),b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Subscribing to router events`);const s=this.router.events.pipe((0,ae.h)(g=>g instanceof v.OD||g instanceof v.m2),(0,T.U)(g=>g),(0,Ue.R)((g,m)=>{b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Updating the known scroll positions`);const h={...g.positions};return m instanceof v.OD&&this.scrollDefaultViewport&&(b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Storing the scroll position of the default viewport`),h[`${m.id}-${Je}`]=this.viewportScroller.getScrollPosition()),m instanceof v.OD&&this.customViewportToScroll&&(b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Storing the scroll position of the custom viewport`),h[`${m.id}-${Qe}`]=this.customViewportToScroll.scrollTop),{event:m,positions:h,trigger:m instanceof v.OD?m.navigationTrigger:g.trigger,idToRestore:m instanceof v.OD&&m.restoredState&&m.restoredState.navigationId+1||g.idToRestore,routeData:this.activatedRoute.firstChild?.routeConfig?.data}},{event:{},positions:{},idToRestore:-1}),(0,ae.h)(g=>!!g.trigger),(0,Ti.Q)(wi.z));this.scrollPositionRestorationSubscription=s.subscribe(g=>{const m=this.routeStrategies.find(ft=>g.event.url.indexOf(ft.partialRoute)>-1),h=m&&m.behaviour===Ie.g.KEEP_POSITION||!1,k=g.routeData&&g.routeData.scrollBehavior&&g.routeData.scrollBehavior===Ie.g.KEEP_POSITION||!1,J=h||k;if(g.event instanceof v.m2){this.processRemoveQueue(this.removeQueue);const ft=g.trigger&&"imperative"===g.trigger||!1,ce=!J||ft;b.N.traceRouterScrolling&&(this.logger.trace(`${x}:: Existing strategy with keep position behavior? `,h),this.logger.trace(`${x}:: Route data with keep position behavior? `,k),this.logger.trace(`${x}:: Imperative trigger? `,ft),this.logger.debug(`${x}:: Should scroll? `,ce)),ce?(this.scrollDefaultViewport&&(b.N.traceRouterScrolling&&this.logger.debug(`${x}:: Scrolling the default viewport`),this.viewportScroller.scrollToPosition([0,0])),this.customViewportToScroll&&(b.N.traceRouterScrolling&&this.logger.debug(`${x}:: Scrolling a custom viewport: `,this.customViewportToScroll),this.customViewportToScroll.scrollTop=0)):(b.N.traceRouterScrolling&&this.logger.debug(`${x}:: Not scrolling`),this.scrollDefaultViewport&&this.viewportScroller.scrollToPosition(g.positions[`${g.idToRestore}-${Je}`]),this.customViewportToScroll&&(this.customViewportToScroll.scrollTop=g.positions[`${g.idToRestore}-${Qe}`])),this.processRemoveQueue(this.addBeforeNavigationQueue.map(is=>is.partialRoute),!0),this.processAddQueue(this.addQueue),this.addQueue=[],this.removeQueue=[],this.addBeforeNavigationQueue=[]}else this.processAddQueue(this.addBeforeNavigationQueue)})}addStrategyOnceBeforeNavigationForPartialRoute(n,e){b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Adding a strategy once for before navigation towards [${n}]: `,e),this.addBeforeNavigationQueue.push({partialRoute:n,behaviour:e,onceBeforeNavigation:!0})}addStrategyForPartialRoute(n,e){b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Adding a strategy for partial route: [${n}]`,e),this.addQueue.push({partialRoute:n,behaviour:e})}removeStrategyForPartialRoute(n){b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Removing strategory for: [${n}]: `),this.removeQueue.push(n)}setCustomViewportToScroll(n){b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Setting a custom viewport to scroll: `,n),this.customViewportToScroll=n}disableScrollDefaultViewport(){b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Disabling scrolling the default viewport`),this.scrollDefaultViewport=!1}enableScrollDefaultViewPort(){b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Enabling scrolling the default viewport`),this.scrollDefaultViewport=!0}processAddQueue(n){for(const e of n)-1===this.routeStrategyPosition(e.partialRoute)&&this.routeStrategies.push(e)}processRemoveQueue(n,e=!1){for(const o of n){const a=this.routeStrategyPosition(o);!e&&a>-1&&this.routeStrategies[a].onceBeforeNavigation||a>-1&&this.routeStrategies.splice(a,1)}}routeStrategyPosition(n){return this.routeStrategies.map(e=>e.partialRoute).indexOf(n)}ngOnDestroy(){b.N.traceRouterScrolling&&this.logger.trace(`${x}:: ngOnDestroy`),this.scrollPositionRestorationSubscription&&this.scrollPositionRestorationSubscription.unsubscribe()}}pt.\u0275fac=function(n){return new(n||pt)(t.LFG(v.F0),t.LFG(v.gz),t.LFG(p.EM),t.LFG(Z.Kf))},pt.\u0275prov=t.Yz7({token:pt,factory:pt.\u0275fac,providedIn:"root"});var q=c(4670),Fi=c(3496),Si=c(1149),yi=c(7242);const M=function Ai(i,n){var e={};return n=(0,yi.Z)(n,3),(0,Si.Z)(i,function(o,a,s){(0,Fi.Z)(e,a,n(o,a,s))}),e};var re=c(8505),ki=c(4884),Di=c(4116),Ve=c(4825),Le=c(4177),qe=c(8706),Ei=c(5202),Zi=c(1986),Ni=c(7583),Ji=Object.prototype.hasOwnProperty;var Li=c(1854),qi=c(2134),se=c(9651);function P(i){const n="result"in i;return M(i.diff,()=>n)}class z{constructor(n,e){this.message=n,this.settingService=e}syncSettings(n,e,o,a=!0){return o.pipe((0,Ue.R)(([,s],g)=>[s,g,(0,qi.e5)(g,s,a)],[e,e,{}]),(0,ae.h)(([,,s])=>!function Qi(i){if(null==i)return!0;if((0,qe.Z)(i)&&((0,Le.Z)(i)||"string"==typeof i||"function"==typeof i.splice||(0,Ei.Z)(i)||(0,Ni.Z)(i)||(0,Ve.Z)(i)))return!i.length;var n=(0,Di.Z)(i);if("[object Map]"==n||"[object Set]"==n)return!i.size;if((0,Zi.Z)(i))return!(0,ki.Z)(i).length;for(var e in i)if(Ji.call(i,e))return!1;return!0}(s)),(0,Pe.w)(([s,g,m])=>this.settingService.changeSettings({[n]:m}).pipe((0,F.X)(3,300),(0,re.b)(h=>{console.assert((0,Li.Z)(h[n],g),"result settings should equal current settings",{curr:g,result:h[n]})},h=>{this.message.error(`\u8bbe\u7f6e\u51fa\u9519: ${h.message}`)}),(0,T.U)(h=>({prev:s,curr:g,diff:m,result:h[n]})),(0,w.K)(h=>(0,ie.of)({prev:s,curr:g,diff:m,error:h})))),(0,re.b)(s=>console.debug(`${n} settings sync detail:`,s)))}}z.\u0275fac=function(n){return new(n||z)(t.LFG(se.dD),t.LFG(S.R))},z.\u0275prov=t.Yz7({token:z,factory:z.\u0275fac,providedIn:"root"});var d=c(4960);class y{get actionable(){return this.directive?.valueAccessor instanceof U.i}constructor(){}onClick(n){n.target===n.currentTarget&&(n.preventDefault(),n.stopPropagation(),this.directive?.valueAccessor instanceof U.i&&this.directive.control.setValue(!this.directive.control.value))}}y.\u0275fac=function(n){return new(n||y)},y.\u0275dir=t.lG2({type:y,selectors:[["","appSwitchActionable",""]],contentQueries:function(n,e,o){if(1&n&&t.Suo(o,r.u,5),2&n){let a;t.iGM(a=t.CRH())&&(e.directive=a.first)}},hostVars:2,hostBindings:function(n,e){1&n&&t.NdJ("click",function(a){return e.onClick(a)}),2&n&&t.ekj("actionable",e.actionable)}});class xt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.intervalOptions=[{label:"\u4e0d\u68c0\u6d4b",value:0},{label:"10 \u79d2",value:10},{label:"30 \u79d2",value:30},{label:"1 \u5206\u949f",value:60},{label:"3 \u5206\u949f",value:180},{label:"5 \u5206\u949f",value:300},{label:"10 \u5206\u949f",value:600}],this.thresholdOptions=[{label:"1 GB",value:1024**3},{label:"3 GB",value:1024**3*3},{label:"5 GB",value:1024**3*5},{label:"10 GB",value:1024**3*10},{label:"20 GB",value:1024**3*20}],this.settingsForm=n.group({recycleRecords:[""],checkInterval:[""],spaceThreshold:[""]})}get recycleRecordsControl(){return this.settingsForm.get("recycleRecords")}get checkIntervalControl(){return this.settingsForm.get("checkInterval")}get spaceThresholdControl(){return this.settingsForm.get("spaceThreshold")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("space",this.settings,this.settingsForm.valueChanges).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}xt.\u0275fac=function(n){return new(n||xt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},xt.\u0275cmp=t.Xpm({type:xt,selectors:[["app-disk-space-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:16,vars:9,consts:[["nz-form","",3,"formGroup"],[1,"setting-item"],["nzNoColon","",1,"setting-label"],[1,"setting-control","select",3,"nzWarningTip","nzValidateStatus"],["formControlName","checkInterval",3,"nzOptions"],["formControlName","spaceThreshold",3,"nzOptions"],["appSwitchActionable","",1,"setting-item"],[1,"setting-control","switch",3,"nzWarningTip","nzValidateStatus"],["formControlName","recycleRecords"]],template:function(n,e){1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"\u786c\u76d8\u7a7a\u95f4\u68c0\u6d4b\u95f4\u9694"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"nz-select",4),t.qZA()(),t.TgZ(6,"nz-form-item",1)(7,"nz-form-label",2),t._uU(8,"\u786c\u76d8\u7a7a\u95f4\u68c0\u6d4b\u9608\u503c"),t.qZA(),t.TgZ(9,"nz-form-control",3),t._UZ(10,"nz-select",5),t.qZA()(),t.TgZ(11,"nz-form-item",6)(12,"nz-form-label",2),t._uU(13,"\u7a7a\u95f4\u4e0d\u8db3\u5220\u9664\u65e7\u5f55\u64ad\u6587\u4ef6"),t.qZA(),t.TgZ(14,"nz-form-control",7),t._UZ(15,"nz-switch",8),t.qZA()()()),2&n&&(t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.checkInterval?e.checkIntervalControl:"warning"),t.xp6(1),t.Q6J("nzOptions",e.intervalOptions),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.spaceThreshold?e.spaceThresholdControl:"warning"),t.xp6(1),t.Q6J("nzOptions",e.thresholdOptions),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.recycleRecords?e.recycleRecordsControl:"warning"))},dependencies:[r._Y,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,U.i,zt.Vq,y],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});var I=c(7044);class Ot{}Ot.\u0275fac=function(n){return new(n||Ot)},Ot.\u0275cmp=t.Xpm({type:Ot,selectors:[["app-notification-settings"]],decls:30,vars:0,consts:[["routerLink","email-notification",1,"setting-item"],[1,"setting-label"],[1,"setting-control"],["nz-icon","","nzType","right"],["routerLink","serverchan-notification",1,"setting-item"],["routerLink","pushdeer-notification",1,"setting-item"],["routerLink","pushplus-notification",1,"setting-item"],["routerLink","telegram-notification",1,"setting-item"],["routerLink","bark-notification",1,"setting-item"]],template:function(n,e){1&n&&(t.TgZ(0,"a",0)(1,"span",1),t._uU(2,"\u90ae\u7bb1\u901a\u77e5"),t.qZA(),t.TgZ(3,"span",2),t._UZ(4,"i",3),t.qZA()(),t.TgZ(5,"a",4)(6,"span",1),t._uU(7,"ServerChan \u901a\u77e5"),t.qZA(),t.TgZ(8,"span",2),t._UZ(9,"i",3),t.qZA()(),t.TgZ(10,"a",5)(11,"span",1),t._uU(12,"PushDeer \u901a\u77e5"),t.qZA(),t.TgZ(13,"span",2),t._UZ(14,"i",3),t.qZA()(),t.TgZ(15,"a",6)(16,"span",1),t._uU(17,"pushplus \u901a\u77e5"),t.qZA(),t.TgZ(18,"span",2),t._UZ(19,"i",3),t.qZA()(),t.TgZ(20,"a",7)(21,"span",1),t._uU(22,"telegram \u901a\u77e5"),t.qZA(),t.TgZ(23,"span",2),t._UZ(24,"i",3),t.qZA()(),t.TgZ(25,"a",8)(26,"span",1),t._uU(27,"Bark \u901a\u77e5"),t.qZA(),t.TgZ(28,"span",2),t._UZ(29,"i",3),t.qZA()())},dependencies:[v.rH,I.w,lt.Ls],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});var Yi=Math.ceil,Wi=Math.max;var Hi=c(3093),Ye=c(6667),Mt=c(1999);var Xi=/\s/;var eo=/^\s+/;const io=function no(i){return i&&i.slice(0,function ji(i){for(var n=i.length;n--&&Xi.test(i.charAt(n)););return n}(i)+1).replace(eo,"")};var oo=c(6460),ao=/^[-+]0x[0-9a-f]+$/i,ro=/^0b[01]+$/i,so=/^0o[0-7]+$/i,lo=parseInt;const ze=function mo(i){return i?Infinity===(i=function co(i){if("number"==typeof i)return i;if((0,oo.Z)(i))return NaN;if((0,Mt.Z)(i)){var n="function"==typeof i.valueOf?i.valueOf():i;i=(0,Mt.Z)(n)?n+"":n}if("string"!=typeof i)return 0===i?i:+i;i=io(i);var e=ro.test(i);return e||so.test(i)?lo(i.slice(2),e?2:8):ao.test(i)?NaN:+i}(i))||-Infinity===i?17976931348623157e292*(i<0?-1:1):i==i?i:0:0===i?i:0},_o=function po(i){return function(n,e,o){return o&&"number"!=typeof o&&function $i(i,n,e){if(!(0,Mt.Z)(e))return!1;var o=typeof n;return!!("number"==o?(0,qe.Z)(e)&&(0,Ye.Z)(n,e.length):"string"==o&&n in e)&&(0,Hi.Z)(e[n],i)}(n,e,o)&&(e=o=void 0),n=ze(n),void 0===e?(e=n,n=0):e=ze(e),function Ri(i,n,e,o){for(var a=-1,s=Wi(Yi((n-i)/(e||1)),0),g=Array(s);s--;)g[o?s:++a]=i,i+=e;return g}(n,e,o=void 0===o?n<e?1:-1:ze(o),i)}}();var ot=(()=>{return(i=ot||(ot={}))[i.EACCES=13]="EACCES",i[i.ENOTDIR=20]="ENOTDIR",ot;var i})(),fo=c(529),Co=c(7930);class Y{constructor(n,e){this.http=n,this.url=e}validateDir(n){const e=this.url.makeApiUrl("/api/v1/validation/dir");return this.http.post(e,{path:n})}validateCookie(n){const e=this.url.makeApiUrl("/api/v1/validation/cookie");return this.http.post(e,{cookie:n})}}function vo(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165\u4fdd\u5b58\u4f4d\u7f6e "),t.BQk())}function zo(i,n){1&i&&(t.ynx(0),t._uU(1," \u4e0d\u662f\u4e00\u4e2a\u76ee\u5f55 "),t.BQk())}function xo(i,n){1&i&&(t.ynx(0),t._uU(1," \u6ca1\u6709\u8bfb\u5199\u6743\u9650 "),t.BQk())}function Oo(i,n){1&i&&(t.ynx(0),t._uU(1," \u672a\u80fd\u8fdb\u884c\u9a8c\u8bc1 "),t.BQk())}function Mo(i,n){if(1&i&&(t.YNc(0,vo,2,0,"ng-container",6),t.YNc(1,zo,2,0,"ng-container",6),t.YNc(2,xo,2,0,"ng-container",6),t.YNc(3,Oo,2,0,"ng-container",6)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("notADirectory")),t.xp6(1),t.Q6J("ngIf",e.hasError("noPermissions")),t.xp6(1),t.Q6J("ngIf",e.hasError("failedToValidate"))}}function bo(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"form",2)(2,"nz-form-item")(3,"nz-form-control",3),t._UZ(4,"input",4),t.YNc(5,Mo,4,4,"ng-template",null,5,t.W1O),t.qZA()()(),t.BQk()),2&i){const e=t.MAs(6),o=t.oxw();t.xp6(1),t.Q6J("formGroup",o.settingsForm),t.xp6(2),t.Q6J("nzErrorTip",e)}}Y.\u0275fac=function(n){return new(n||Y)(t.LFG(fo.eN),t.LFG(Co.i))},Y.\u0275prov=t.Yz7({token:Y,factory:Y.\u0275fac,providedIn:"root"});class bt{constructor(n,e,o){this.changeDetector=e,this.validationService=o,this.value="",this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.logDirAsyncValidator=a=>this.validationService.validateDir(a.value).pipe((0,T.U)(s=>{switch(s.code){case ot.ENOTDIR:return{error:!0,notADirectory:!0};case ot.EACCES:return{error:!0,noPermissions:!0};default:return null}}),(0,w.K)(()=>(0,ie.of)({error:!0,failedToValidate:!0}))),this.settingsForm=n.group({logDir:["",[r.kI.required],[this.logDirAsyncValidator]]})}get control(){return this.settingsForm.get("logDir")}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){this.control.setValue(this.value),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){this.confirm.emit(this.control.value.trim()),this.close()}}bt.\u0275fac=function(n){return new(n||bt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(Y))},bt.\u0275cmp=t.Xpm({type:bt,selectors:[["app-logdir-edit-dialog"]],inputs:{value:"value",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:2,vars:2,consts:[["nzTitle","\u4fee\u6539\u65e5\u5fd7\u6587\u4ef6\u5b58\u653e\u76ee\u5f55","nzCentered","",3,"nzVisible","nzOkDisabled","nzVisibleChange","nzOnOk","nzOnCancel"],[4,"nzModalContent"],["nz-form","",3,"formGroup"],["nzHasFeedback","","nzValidatingTip","\u6b63\u5728\u9a8c\u8bc1...",3,"nzErrorTip"],["type","text","required","","nz-input","","formControlName","logDir"],["errorTip",""],[4,"ngIf"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzVisibleChange",function(a){return e.visible=a})("nzOnOk",function(){return e.handleConfirm()})("nzOnCancel",function(){return e.handleCancel()}),t.YNc(1,bo,7,2,"ng-container",1),t.qZA()),2&n&&t.Q6J("nzVisible",e.visible)("nzOkDisabled",e.control.invalid||e.control.value.trim()===e.value)},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.Fd,O.Zp,_.du,_.Hf],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Pt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.logLevelOptions=[{label:"VERBOSE",value:"NOTSET"},{label:"DEBUG",value:"DEBUG"},{label:"INFO",value:"INFO"},{label:"WARNING",value:"WARNING"},{label:"ERROR",value:"ERROR"},{label:"CRITICAL",value:"CRITICAL"}],this.backupOptions=_o(0,91).map(a=>({label:a.toString(),value:a})),this.settingsForm=n.group({logDir:[""],consoleLogLevel:[""],backupCount:[""]})}get logDirControl(){return this.settingsForm.get("logDir")}get consoleLogLevelControl(){return this.settingsForm.get("consoleLogLevel")}get backupCountControl(){return this.settingsForm.get("backupCount")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("logging",this.settings,this.settingsForm.valueChanges).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}Pt.\u0275fac=function(n){return new(n||Pt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},Pt.\u0275cmp=t.Xpm({type:Pt,selectors:[["app-logging-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:19,vars:11,consts:[["nz-form","",3,"formGroup"],[1,"setting-item","actionable",3,"click"],[1,"setting-label"],[3,"nzWarningTip","nzValidateStatus"],[1,"setting-value"],[3,"value","confirm"],["logDirEditDialog",""],["appSwitchActionable","",1,"setting-item"],["nzNoColon","",1,"setting-label"],[1,"setting-control","select",3,"nzWarningTip","nzValidateStatus"],["formControlName","consoleLogLevel",3,"nzOptions"],[1,"setting-item"],["formControlName","backupCount",3,"nzOptions"]],template:function(n,e){if(1&n){const o=t.EpF();t.TgZ(0,"form",0)(1,"nz-form-item",1),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(8);return t.KtG(s.open())}),t.TgZ(2,"nz-form-label",2),t._uU(3,"\u65e5\u5fd7\u6587\u4ef6\u5b58\u653e\u76ee\u5f55"),t.qZA(),t.TgZ(4,"nz-form-control",3)(5,"nz-form-text",4),t._uU(6),t.qZA(),t.TgZ(7,"app-logdir-edit-dialog",5,6),t.NdJ("confirm",function(s){return e.logDirControl.setValue(s)}),t.qZA()()(),t.TgZ(9,"nz-form-item",7)(10,"nz-form-label",8),t._uU(11,"\u7ec8\u7aef\u65e5\u5fd7\u8f93\u51fa\u7ea7\u522b"),t.qZA(),t.TgZ(12,"nz-form-control",9),t._UZ(13,"nz-select",10),t.qZA()(),t.TgZ(14,"nz-form-item",11)(15,"nz-form-label",8),t._uU(16,"\u65e5\u5fd7\u6587\u4ef6\u5907\u4efd\u6570\u91cf"),t.qZA(),t.TgZ(17,"nz-form-control",9),t._UZ(18,"nz-select",12),t.qZA()()()}2&n&&(t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.logDir?e.logDirControl:"warning"),t.xp6(2),t.hij("",e.logDirControl.value," "),t.xp6(1),t.Q6J("value",e.logDirControl.value),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.consoleLogLevel?e.consoleLogLevelControl:"warning"),t.xp6(1),t.Q6J("nzOptions",e.logLevelOptions),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.backupCount?e.backupCountControl:"warning"),t.xp6(1),t.Q6J("nzOptions",e.backupOptions))},dependencies:[r._Y,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,l.EF,zt.Vq,y,bt],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Tt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({danmuUname:[""],recordGiftSend:[""],recordFreeGifts:[""],recordGuardBuy:[""],recordSuperChat:[""],saveRawDanmaku:[""]})}get danmuUnameControl(){return this.settingsForm.get("danmuUname")}get recordGiftSendControl(){return this.settingsForm.get("recordGiftSend")}get recordFreeGiftsControl(){return this.settingsForm.get("recordFreeGifts")}get recordGuardBuyControl(){return this.settingsForm.get("recordGuardBuy")}get recordSuperChatControl(){return this.settingsForm.get("recordSuperChat")}get saveRawDanmakuControl(){return this.settingsForm.get("saveRawDanmaku")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("danmaku",this.settings,this.settingsForm.valueChanges).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}function Po(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1," \u81ea\u52a8: \u6ca1\u51fa\u9519\u5c31\u5220\u9664\u6e90\u6587\u4ef6"),t._UZ(2,"br"),t._uU(3," \u8c28\u614e: \u6ca1\u51fa\u9519\u4e14\u6ca1\u8b66\u544a\u624d\u5220\u9664\u6e90\u6587\u4ef6"),t._UZ(4,"br"),t._uU(5," \u4ece\u4e0d: \u603b\u662f\u4fdd\u7559\u6e90\u6587\u4ef6"),t._UZ(6,"br"),t.qZA())}function To(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"label",13),t._uU(2),t.qZA(),t.BQk()),2&i){const e=n.$implicit;t.xp6(1),t.Q6J("nzValue",e.value),t.xp6(1),t.Oqu(e.label)}}Tt.\u0275fac=function(n){return new(n||Tt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},Tt.\u0275cmp=t.Xpm({type:Tt,selectors:[["app-danmaku-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:31,vars:13,consts:[["nz-form","",3,"formGroup"],["appSwitchActionable","",1,"setting-item"],["nzNoColon","","nzTooltipTitle","\u8bb0\u5f55\u793c\u7269\u4fe1\u606f\u5230\u5f39\u5e55\u6587\u4ef6\u91cc",1,"setting-label"],[1,"setting-control","switch",3,"nzWarningTip","nzValidateStatus"],["formControlName","recordGiftSend"],["nzNoColon","","nzTooltipTitle","\u8bb0\u5f55\u514d\u8d39\u793c\u7269\u4fe1\u606f\u5230\u5f39\u5e55\u6587\u4ef6\u91cc",1,"setting-label"],["formControlName","recordFreeGifts"],["nzNoColon","","nzTooltipTitle","\u8bb0\u5f55\u4e0a\u8230\u4fe1\u606f\u5230\u5f39\u5e55\u6587\u4ef6\u91cc",1,"setting-label"],["formControlName","recordGuardBuy"],["nzNoColon","","nzTooltipTitle","\u8bb0\u5f55 Super Chat \u4fe1\u606f\u5230\u5f39\u5e55\u6587\u4ef6\u91cc",1,"setting-label"],["formControlName","recordSuperChat"],["nzNoColon","","nzTooltipTitle","\u53d1\u9001\u8005: \u5f39\u5e55\u5185\u5bb9",1,"setting-label"],["formControlName","danmuUname"],["nzNoColon","","nzTooltipTitle","\u4fdd\u5b58\u539f\u59cb\u5f39\u5e55\u5230 JSON lines \u6587\u4ef6\uff0c\u4e3b\u8981\u7528\u4e8e\u5206\u6790\u8c03\u8bd5\u3002",1,"setting-label"],["formControlName","saveRawDanmaku"]],template:function(n,e){1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"\u8bb0\u5f55\u793c\u7269"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"nz-switch",4),t.qZA()(),t.TgZ(6,"nz-form-item",1)(7,"nz-form-label",5),t._uU(8,"\u8bb0\u5f55\u514d\u8d39\u793c\u7269"),t.qZA(),t.TgZ(9,"nz-form-control",3),t._UZ(10,"nz-switch",6),t.qZA()(),t.TgZ(11,"nz-form-item",1)(12,"nz-form-label",7),t._uU(13,"\u8bb0\u5f55\u4e0a\u8230"),t.qZA(),t.TgZ(14,"nz-form-control",3),t._UZ(15,"nz-switch",8),t.qZA()(),t.TgZ(16,"nz-form-item",1)(17,"nz-form-label",9),t._uU(18,"\u8bb0\u5f55 Super Chat"),t.qZA(),t.TgZ(19,"nz-form-control",3),t._UZ(20,"nz-switch",10),t.qZA()(),t.TgZ(21,"nz-form-item",1)(22,"nz-form-label",11),t._uU(23,"\u5f39\u5e55\u524d\u52a0\u7528\u6237\u540d"),t.qZA(),t.TgZ(24,"nz-form-control",3),t._UZ(25,"nz-switch",12),t.qZA()(),t.TgZ(26,"nz-form-item",1)(27,"nz-form-label",13),t._uU(28,"\u4fdd\u5b58\u539f\u59cb\u5f39\u5e55"),t.qZA(),t.TgZ(29,"nz-form-control",3),t._UZ(30,"nz-switch",14),t.qZA()()()),2&n&&(t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.recordGiftSend?e.recordGiftSendControl:"warning"),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.recordFreeGifts?e.recordFreeGiftsControl:"warning"),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.recordGuardBuy?e.recordGuardBuyControl:"warning"),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.recordSuperChat?e.recordSuperChatControl:"warning"),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.danmuUname?e.danmuUnameControl:"warning"),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.saveRawDanmaku?e.saveRawDanmakuControl:"warning"))},dependencies:[r._Y,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,U.i,y],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class wt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.deleteStrategies=d.rc,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({injectExtraMetadata:[""],remuxToMp4:[""],deleteSource:[""]})}get injectExtraMetadataControl(){return this.settingsForm.get("injectExtraMetadata")}get remuxToMp4Control(){return this.settingsForm.get("remuxToMp4")}get deleteSourceControl(){return this.settingsForm.get("deleteSource")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("postprocessing",this.settings,this.settingsForm.valueChanges).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}wt.\u0275fac=function(n){return new(n||wt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},wt.\u0275cmp=t.Xpm({type:wt,selectors:[["app-post-processing-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:19,vars:11,consts:[["nz-form","",3,"formGroup"],["appSwitchActionable","",1,"setting-item"],["nzNoColon","","nzTooltipTitle","\u6dfb\u52a0\u5173\u952e\u5e27\u7b49\u5143\u6570\u636e\u4f7f\u5b9a\u4f4d\u64ad\u653e\u548c\u62d6\u8fdb\u5ea6\u6761\u4e0d\u4f1a\u5361\u987f",1,"setting-label"],[1,"setting-control","switch",3,"nzWarningTip","nzValidateStatus"],["formControlName","injectExtraMetadata",3,"nzDisabled"],["nzNoColon","","nzTooltipTitle","\u8c03\u7528 ffmpeg \u8fdb\u884c\u8f6c\u6362\uff0c\u9700\u8981\u5b89\u88c5 ffmpeg \u3002",1,"setting-label"],["formControlName","remuxToMp4"],[1,"setting-item"],["nzNoColon","",1,"setting-label",3,"nzTooltipTitle"],["deleteSourceTip",""],[1,"setting-control","radio",3,"nzWarningTip","nzValidateStatus"],["formControlName","deleteSource",3,"nzDisabled"],[4,"ngFor","ngForOf"],["nz-radio-button","",3,"nzValue"]],template:function(n,e){if(1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"flv \u6dfb\u52a0\u5143\u6570\u636e"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"nz-switch",4),t.qZA()(),t.TgZ(6,"nz-form-item",1)(7,"nz-form-label",5),t._uU(8,"\u8f6c\u5c01\u88c5\u4e3a mp4"),t.qZA(),t.TgZ(9,"nz-form-control",3),t._UZ(10,"nz-switch",6),t.qZA()(),t.TgZ(11,"nz-form-item",7)(12,"nz-form-label",8),t._uU(13,"\u6e90\u6587\u4ef6\u5220\u9664\u7b56\u7565"),t.qZA(),t.YNc(14,Po,7,0,"ng-template",null,9,t.W1O),t.TgZ(16,"nz-form-control",10)(17,"nz-radio-group",11),t.YNc(18,To,3,2,"ng-container",12),t.qZA()()()()),2&n){const o=t.MAs(15);t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.injectExtraMetadata?e.injectExtraMetadataControl:"warning"),t.xp6(1),t.Q6J("nzDisabled",e.remuxToMp4Control.value),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.remuxToMp4?e.remuxToMp4Control:"warning"),t.xp6(3),t.Q6J("nzTooltipTitle",o),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.deleteSource?e.deleteSourceControl:"warning"),t.xp6(1),t.Q6J("nzDisabled",!e.remuxToMp4Control.value),t.xp6(1),t.Q6J("ngForOf",e.deleteStrategies)}},dependencies:[p.sg,r._Y,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,U.i,G.Of,G.Bq,G.Dg,y],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});var W=c(3523);function wo(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1," \u9009\u62e9\u8981\u5f55\u5236\u7684\u76f4\u64ad\u6d41\u683c\u5f0f "),t._UZ(2,"br"),t.TgZ(3,"b"),t._uU(4,"FLV:"),t.qZA(),t._uU(5," flv \u6d41\u5728\u7f51\u7edc\u4e0d\u7a33\u5b9a\u7684\u60c5\u51b5\u4e0b\u5bb9\u6613\u4e2d\u65ad\u4e22\u5931\u6570\u636e\u6216\u5f55\u5236\u5230\u4e8c\u538b\u753b\u8d28\u3002\u6ca1\u6709 flv \u6d41\u7684\u76f4\u64ad\u4f1a\u81ea\u52a8\u5207\u6362\u5f55\u5236 fmp4 \u6d41\u3002 "),t._UZ(6,"br"),t.TgZ(7,"b"),t._uU(8,"HLS (fmp4):"),t.qZA(),t._uU(9," hls \u6d41\u57fa\u672c\u4e0d\u53d7\u7f51\u7edc\u6ce2\u52a8\u5f71\u54cd\uff0c\u4f46\u4e0d\u662f\u6240\u6709\u76f4\u64ad\u95f4\u90fd\u652f\u6301\u3002\u6709 flv \u6d41\u7684\u76f4\u64ad\uff0c\u5728\u8bbe\u5b9a\u7684\u7b49\u5f85\u65f6\u95f4\u5185\u6ca1\u6709 fmp4 \u6d41\u4f1a\u81ea\u52a8\u5207\u6362\u5f55\u5236 flv \u6d41\u3002 "),t._UZ(10,"br"),t.TgZ(11,"b"),t._uU(12,"P.S."),t.qZA(),t._UZ(13,"br"),t._uU(14," WEB \u7aef\u76f4\u64ad\u64ad\u653e\u5668\u662f Hls7Player \u7684\u76f4\u64ad\u95f4\u652f\u6301\u5f55\u5236 fmp4 \u6d41, fMp4Player \u5219\u4e0d\u652f\u6301\u3002 "),t.qZA())}function Fo(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1," \u5982\u679c\u8d85\u8fc7\u6240\u8bbe\u7f6e\u7684\u7b49\u5f85\u65f6\u95f4 fmp4 \u6d41\u8fd8\u6ca1\u6709\u5c31\u5207\u6362\u4e3a\u5f55\u5236 flv \u6d41 "),t._UZ(2,"br"),t._uU(3," fmp4 \u6d41\u5728\u521a\u63a8\u6d41\u662f\u6ca1\u6709\u7684\uff0c\u8981\u8fc7\u4e00\u4f1a\u624d\u6709\u3002 "),t._UZ(4,"br"),t._uU(5," fmp4 \u6d41\u51fa\u73b0\u7684\u65f6\u95f4\u548c\u76f4\u64ad\u5ef6\u8fdf\u6709\u5173\uff0c\u4e00\u822c\u90fd\u5728 10 \u79d2\u5185\uff0c\u4f46\u4e5f\u6709\u5ef6\u8fdf\u6bd4\u8f83\u5927\u8d85\u8fc7 1 \u5206\u949f\u7684\u3002 "),t._UZ(6,"br"),t._uU(7," \u63a8\u8350\u5168\u5c40\u8bbe\u7f6e\u4e3a 10 \u79d2\uff0c\u4e2a\u522b\u5ef6\u8fdf\u6bd4\u8f83\u5927\u7684\u76f4\u64ad\u95f4\u5355\u72ec\u8bbe\u7f6e\u3002 "),t.qZA())}function So(i,n){if(1&i&&(t.TgZ(0,"nz-form-item",1)(1,"nz-form-label",2),t._uU(2,"fmp4 \u6d41\u7b49\u5f85\u65f6\u95f4"),t.qZA(),t.YNc(3,Fo,8,0,"ng-template",null,19,t.W1O),t.TgZ(5,"nz-form-control",4),t._UZ(6,"nz-select",20),t.qZA()()),2&i){const e=t.MAs(4),o=t.oxw();t.xp6(1),t.Q6J("nzTooltipTitle",e),t.xp6(4),t.Q6J("nzWarningTip",o.syncFailedWarningTip)("nzValidateStatus",o.syncStatus.fmp4StreamTimeout?o.fmp4StreamTimeoutControl:"warning"),t.xp6(1),t.Q6J("nzOptions",o.fmp4StreamTimeoutOptions)}}function yo(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1," \u6807\u51c6\u6a21\u5f0f: \u5bf9\u4e0b\u8f7d\u7684\u6d41\u6570\u636e\u8fdb\u884c\u89e3\u6790\u5904\u7406\uff0c\u652f\u6301\u81ea\u52a8\u5206\u5272\u6587\u4ef6\u7b49\u529f\u80fd\u3002 "),t._UZ(2,"br"),t._uU(3," \u539f\u59cb\u6a21\u5f0f: \u76f4\u63a5\u4e0b\u8f7d\u6d41\u6570\u636e\uff0c\u6ca1\u6709\u8fdb\u884c\u89e3\u6790\u5904\u7406\uff0c\u4e0d\u652f\u6301\u81ea\u52a8\u5206\u5272\u6587\u4ef6\u7b49\u529f\u80fd\u3002 "),t._UZ(4,"br"),t.qZA())}function Ao(i,n){if(1&i&&(t.TgZ(0,"nz-form-item",1)(1,"nz-form-label",2),t._uU(2,"\u5f55\u5236\u6a21\u5f0f"),t.qZA(),t.YNc(3,yo,5,0,"ng-template",null,21,t.W1O),t.TgZ(5,"nz-form-control",4),t._UZ(6,"nz-select",22),t.qZA()()),2&i){const e=t.MAs(4),o=t.oxw();t.xp6(1),t.Q6J("nzTooltipTitle",e),t.xp6(4),t.Q6J("nzWarningTip",o.syncFailedWarningTip)("nzValidateStatus",o.syncStatus.recordingMode?o.recordingModeControl:"warning"),t.xp6(1),t.Q6J("nzOptions",o.recordingModeOptions)}}function ko(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1," \u9ed8\u8ba4: \u6bcf\u4e2a\u5206\u5272\u7684\u5f55\u64ad\u6587\u4ef6\u5bf9\u5e94\u4fdd\u5b58\u4e00\u4e2a\u5c01\u9762\u6587\u4ef6\uff0c\u4e0d\u7ba1\u5c01\u9762\u662f\u5426\u76f8\u540c\u3002"),t._UZ(2,"br"),t._uU(3," \u53bb\u91cd: \u76f8\u540c\u7684\u5c01\u9762\u53ea\u4fdd\u5b58\u4e00\u6b21"),t._UZ(4,"br"),t._uU(5," P.S. "),t._UZ(6,"br"),t._uU(7," \u5224\u65ad\u662f\u5426\u76f8\u540c\u662f\u4f9d\u636e\u5c01\u9762\u6570\u636e\u7684 sha1\uff0c\u53ea\u5728\u5355\u6b21\u5f55\u5236\u5185\u6709\u6548\u3002 "),t.qZA())}function Do(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"label",23),t._uU(2),t.qZA(),t.BQk()),2&i){const e=n.$implicit;t.xp6(1),t.Q6J("nzValue",e.value),t.xp6(1),t.Oqu(e.label)}}function Eo(i,n){if(1&i&&(t.TgZ(0,"nz-form-item",1)(1,"nz-form-label",24),t._uU(2,"\u6570\u636e\u8bfb\u53d6\u8d85\u65f6"),t.qZA(),t.TgZ(3,"nz-form-control",4),t._UZ(4,"nz-select",25),t.qZA()()),2&i){const e=t.oxw();t.xp6(3),t.Q6J("nzWarningTip",e.syncStatus.readTimeout?"\u65e0\u7f1d\u62fc\u63a5\u4f1a\u5931\u6548\uff01":e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.readTimeout&&e.readTimeoutControl.value<=3?e.readTimeoutControl:"warning"),t.xp6(1),t.Q6J("nzOptions",e.readTimeoutOptions)}}function Zo(i,n){if(1&i&&(t.TgZ(0,"nz-form-item",1)(1,"nz-form-label",26),t._uU(2,"\u786c\u76d8\u5199\u5165\u7f13\u51b2"),t.qZA(),t.TgZ(3,"nz-form-control",4),t._UZ(4,"nz-select",27),t.qZA()()),2&i){const e=t.oxw();t.xp6(3),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.bufferSize?e.bufferSizeControl:"warning"),t.xp6(1),t.Q6J("nzOptions",e.bufferOptions)}}class Ft{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.streamFormatOptions=(0,W.Z)(d.tp),this.recordingModeOptions=(0,W.Z)(d.kV),this.fmp4StreamTimeoutOptions=(0,W.Z)(d.D4),this.qualityOptions=(0,W.Z)(d.O6),this.readTimeoutOptions=(0,W.Z)(d.D4),this.disconnectionTimeoutOptions=(0,W.Z)(d.$w),this.bufferOptions=(0,W.Z)(d.Rc),this.coverSaveStrategies=(0,W.Z)(d.J_),this.settingsForm=n.group({streamFormat:[""],recordingMode:[""],qualityNumber:[""],fmp4StreamTimeout:[""],readTimeout:[""],disconnectionTimeout:[""],bufferSize:[""],saveCover:[""],coverSaveStrategy:[""]})}get streamFormatControl(){return this.settingsForm.get("streamFormat")}get recordingModeControl(){return this.settingsForm.get("recordingMode")}get qualityNumberControl(){return this.settingsForm.get("qualityNumber")}get fmp4StreamTimeoutControl(){return this.settingsForm.get("fmp4StreamTimeout")}get readTimeoutControl(){return this.settingsForm.get("readTimeout")}get disconnectionTimeoutControl(){return this.settingsForm.get("disconnectionTimeout")}get bufferSizeControl(){return this.settingsForm.get("bufferSize")}get saveCoverControl(){return this.settingsForm.get("saveCover")}get coverSaveStrategyControl(){return this.settingsForm.get("coverSaveStrategy")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("recorder",this.settings,this.settingsForm.valueChanges).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}function No(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 User Agent "),t.BQk())}function Bo(i,n){1&i&&t.YNc(0,No,2,0,"ng-container",6),2&i&&t.Q6J("ngIf",n.$implicit.hasError("required"))}function Uo(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"form",2)(2,"nz-form-item")(3,"nz-form-control",3),t._UZ(4,"textarea",4),t.YNc(5,Bo,1,1,"ng-template",null,5,t.W1O),t.qZA()()(),t.BQk()),2&i){const e=t.MAs(6),o=t.oxw();t.xp6(1),t.Q6J("formGroup",o.settingsForm),t.xp6(2),t.Q6J("nzWarningTip",o.warningTip)("nzValidateStatus",o.control.valid&&o.control.value.trim()!==o.value?"warning":o.control)("nzErrorTip",e),t.xp6(1),t.Q6J("rows",3)}}Ft.\u0275fac=function(n){return new(n||Ft)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},Ft.\u0275cmp=t.Xpm({type:Ft,selectors:[["app-recorder-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:35,vars:22,consts:[["nz-form","",3,"formGroup"],[1,"setting-item"],["nzNoColon","",1,"setting-label",3,"nzTooltipTitle"],["streamFormatTip",""],[1,"setting-control","select",3,"nzWarningTip","nzValidateStatus"],["formControlName","streamFormat",3,"nzOptions"],["class","setting-item",4,"ngIf"],["nzNoColon","","nzTooltipTitle","\u6240\u9009\u753b\u8d28\u4e0d\u5b58\u5728\u5c06\u4ee5\u539f\u753b\u4ee3\u66ff",1,"setting-label"],["formControlName","qualityNumber",3,"nzOptions"],["appSwitchActionable","",1,"setting-item"],["nzNoColon","","nzTooltipTitle","\u5f55\u64ad\u6587\u4ef6\u5b8c\u6210\u65f6\u4fdd\u5b58\u5f53\u524d\u76f4\u64ad\u95f4\u7684\u5c01\u9762",1,"setting-label"],[1,"setting-control","switch",3,"nzWarningTip","nzValidateStatus"],["formControlName","saveCover"],["coverSaveStrategyTip",""],[1,"setting-control","radio",3,"nzWarningTip","nzValidateStatus"],["formControlName","coverSaveStrategy",3,"nzDisabled"],[4,"ngFor","ngForOf"],["nzNoColon","","nzTooltipTitle","\u65ad\u7f51\u8d85\u8fc7\u7b49\u5f85\u65f6\u95f4\u5c31\u7ed3\u675f\u5f55\u5236\uff0c\u5982\u679c\u7f51\u7edc\u6062\u590d\u540e\u4ecd\u672a\u4e0b\u64ad\u4f1a\u81ea\u52a8\u91cd\u65b0\u5f00\u59cb\u5f55\u5236\u3002",1,"setting-label"],["formControlName","disconnectionTimeout",3,"nzOptions"],["fmp4StreamTimeoutTip",""],["formControlName","fmp4StreamTimeout",3,"nzOptions"],["recordingModeTip",""],["formControlName","recordingMode",3,"nzOptions"],["nz-radio-button","",3,"nzValue"],["nzNoColon","","nzTooltipTitle","\u8d85\u65f6\u65f6\u95f4\u8bbe\u7f6e\u5f97\u6bd4\u8f83\u957f\u76f8\u5bf9\u4e0d\u5bb9\u6613\u56e0\u7f51\u7edc\u4e0d\u7a33\u5b9a\u800c\u51fa\u73b0\u6d41\u4e2d\u65ad\uff0c\u4f46\u662f\u4e00\u65e6\u51fa\u73b0\u4e2d\u65ad\u5c31\u65e0\u6cd5\u5b9e\u73b0\u65e0\u7f1d\u62fc\u63a5\u4e14\u6f0f\u5f55\u8f83\u591a\u3002",1,"setting-label"],["formControlName","readTimeout",3,"nzOptions"],["nzNoColon","","nzTooltipTitle","\u786c\u76d8\u5199\u5165\u7f13\u51b2\u8bbe\u7f6e\u5f97\u6bd4\u8f83\u5927\u53ef\u4ee5\u51cf\u5c11\u5bf9\u786c\u76d8\u7684\u5199\u5165\uff0c\u4f46\u9700\u8981\u5360\u7528\u66f4\u591a\u7684\u5185\u5b58\u3002",1,"setting-label"],["formControlName","bufferSize",3,"nzOptions"]],template:function(n,e){if(1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"\u76f4\u64ad\u6d41\u683c\u5f0f"),t.qZA(),t.YNc(4,wo,15,0,"ng-template",null,3,t.W1O),t.TgZ(6,"nz-form-control",4),t._UZ(7,"nz-select",5),t.qZA()(),t.YNc(8,So,7,4,"nz-form-item",6),t.YNc(9,Ao,7,4,"nz-form-item",6),t.TgZ(10,"nz-form-item",1)(11,"nz-form-label",7),t._uU(12,"\u753b\u8d28"),t.qZA(),t.TgZ(13,"nz-form-control",4),t._UZ(14,"nz-select",8),t.qZA()(),t.TgZ(15,"nz-form-item",9)(16,"nz-form-label",10),t._uU(17,"\u4fdd\u5b58\u5c01\u9762"),t.qZA(),t.TgZ(18,"nz-form-control",11),t._UZ(19,"nz-switch",12),t.qZA()(),t.TgZ(20,"nz-form-item",1)(21,"nz-form-label",2),t._uU(22,"\u5c01\u9762\u4fdd\u5b58\u7b56\u7565"),t.qZA(),t.YNc(23,ko,8,0,"ng-template",null,13,t.W1O),t.TgZ(25,"nz-form-control",14)(26,"nz-radio-group",15),t.YNc(27,Do,3,2,"ng-container",16),t.qZA()()(),t.YNc(28,Eo,5,3,"nz-form-item",6),t.TgZ(29,"nz-form-item",1)(30,"nz-form-label",17),t._uU(31,"\u65ad\u7f51\u7b49\u5f85\u65f6\u95f4"),t.qZA(),t.TgZ(32,"nz-form-control",4),t._UZ(33,"nz-select",18),t.qZA()(),t.YNc(34,Zo,5,3,"nz-form-item",6),t.qZA()),2&n){const o=t.MAs(5),a=t.MAs(24);t.Q6J("formGroup",e.settingsForm),t.xp6(2),t.Q6J("nzTooltipTitle",o),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.streamFormat?e.streamFormatControl:"warning"),t.xp6(1),t.Q6J("nzOptions",e.streamFormatOptions),t.xp6(1),t.Q6J("ngIf","fmp4"===e.streamFormatControl.value),t.xp6(1),t.Q6J("ngIf","fmp4"===e.streamFormatControl.value),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.qualityNumber?e.qualityNumberControl:"warning"),t.xp6(1),t.Q6J("nzOptions",e.qualityOptions),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.saveCover?e.saveCoverControl:"warning"),t.xp6(3),t.Q6J("nzTooltipTitle",a),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.coverSaveStrategy?e.coverSaveStrategyControl:"warning"),t.xp6(1),t.Q6J("nzDisabled",!e.saveCoverControl.value),t.xp6(1),t.Q6J("ngForOf",e.coverSaveStrategies),t.xp6(1),t.Q6J("ngIf","flv"===e.streamFormatControl.value),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.disconnectionTimeout?e.disconnectionTimeoutControl:"warning"),t.xp6(1),t.Q6J("nzOptions",e.disconnectionTimeoutOptions),t.xp6(1),t.Q6J("ngIf","flv"===e.streamFormatControl.value||"fmp4"===e.streamFormatControl.value&&"standard"===e.recordingModeControl.value)}},dependencies:[p.sg,p.O5,r._Y,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,U.i,G.Of,G.Bq,G.Dg,zt.Vq,y],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class St{constructor(n,e){this.changeDetector=e,this.value="",this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.warningTip="\u5168\u90e8\u4efb\u52a1\u90fd\u9700\u91cd\u542f\u5f39\u5e55\u5ba2\u6237\u7aef\u624d\u80fd\u751f\u6548\uff0c\u6b63\u5728\u5f55\u5236\u7684\u4efb\u52a1\u53ef\u80fd\u4f1a\u4e22\u5931\u5f39\u5e55\uff01",this.settingsForm=n.group({userAgent:["",[r.kI.required]]})}get control(){return this.settingsForm.get("userAgent")}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){this.control.setValue(this.value),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){this.confirm.emit(this.control.value.trim()),this.close()}}St.\u0275fac=function(n){return new(n||St)(t.Y36(r.qu),t.Y36(t.sBO))},St.\u0275cmp=t.Xpm({type:St,selectors:[["app-user-agent-edit-dialog"]],inputs:{value:"value",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:2,vars:2,consts:[["nzTitle","\u4fee\u6539 User Agent","nzOkDanger","","nzCentered","",3,"nzVisible","nzOkDisabled","nzVisibleChange","nzOnOk","nzOnCancel"],[4,"nzModalContent"],["nz-form","",3,"formGroup"],[3,"nzWarningTip","nzValidateStatus","nzErrorTip"],["required","","nz-input","","formControlName","userAgent",3,"rows"],["errorTip",""],[4,"ngIf"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzVisibleChange",function(a){return e.visible=a})("nzOnOk",function(){return e.handleConfirm()})("nzOnCancel",function(){return e.handleCancel()}),t.YNc(1,Uo,7,5,"ng-container",1),t.qZA()),2&n&&t.Q6J("nzVisible",e.visible)("nzOkDisabled",e.control.invalid||e.control.value.trim()===e.value)},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.Fd,O.Zp,_.du,_.Hf],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});var dt=c(1664);function Io(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"form",3)(2,"nz-form-item")(3,"nz-form-control",4),t._UZ(4,"textarea",5),t.qZA()()(),t.BQk()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("formGroup",e.settingsForm),t.xp6(2),t.Q6J("nzWarningTip",e.warningTip)("nzValidateStatus",e.control.valid&&e.control.value.trim()!==e.value?"warning":e.control),t.xp6(1),t.Q6J("rows",5)}}function Jo(i,n){if(1&i){const e=t.EpF();t.TgZ(0,"button",6),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.testCookie())}),t._uU(1," \u6d4b\u8bd5 "),t.qZA(),t.TgZ(2,"button",7),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleCancel())}),t._uU(3,"\u53d6\u6d88"),t.qZA(),t.TgZ(4,"button",8),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleConfirm())}),t._uU(5," \u786e\u5b9a "),t.qZA()}if(2&i){const e=t.oxw();t.Q6J("disabled",""===e.control.value.trim()),t.xp6(4),t.Q6J("disabled",e.control.invalid||e.control.value.trim()===e.value)}}class yt{constructor(n,e,o,a){this.changeDetector=e,this.validationService=o,this.message=a,this.value="",this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.warningTip="\u5168\u90e8\u4efb\u52a1\u90fd\u9700\u91cd\u542f\u5f39\u5e55\u5ba2\u6237\u7aef\u624d\u80fd\u751f\u6548\uff0c\u6b63\u5728\u5f55\u5236\u7684\u4efb\u52a1\u53ef\u80fd\u4f1a\u4e22\u5931\u5f39\u5e55\uff01",this.settingsForm=n.group({cookie:[""]})}get control(){return this.settingsForm.get("cookie")}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){this.control.setValue(this.value),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){this.confirm.emit(this.control.value.trim()),this.close()}testCookie(){this.validationService.validateCookie(this.control.value).subscribe(n=>{0===n.code?this.message.success(`uid: ${n.data?.mid}, uname: ${n.data?.uname}`):this.message.error(`${n.code}: ${n.message}`)})}}yt.\u0275fac=function(n){return new(n||yt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(Y),t.Y36(se.dD))},yt.\u0275cmp=t.Xpm({type:yt,selectors:[["app-cookie-edit-dialog"]],inputs:{value:"value",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:3,vars:1,consts:[["nzTitle","\u4fee\u6539 Cookie","nzCentered","",3,"nzVisible","nzVisibleChange"],[4,"nzModalContent"],[3,"nzModalFooter"],["nz-form","",3,"formGroup"],[3,"nzWarningTip","nzValidateStatus"],["wrap","soft","nz-input","","formControlName","cookie",3,"rows"],["nz-button","","nzType","primary",3,"disabled","click"],["nz-button","","nzType","default",3,"click"],["nz-button","","nzType","primary","nzDanger","",3,"disabled","click"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzVisibleChange",function(a){return e.visible=a}),t.YNc(1,Io,5,4,"ng-container",1),t.YNc(2,Jo,6,2,"ng-template",2),t.qZA()),2&n&&t.Q6J("nzVisible",e.visible)},dependencies:[r._Y,r.Fj,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.Fd,O.Zp,_.du,_.Uh,_.Hf,Q.ix,I.w,dt.dQ],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class At{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({userAgent:["",[r.kI.required]],cookie:[""]})}get userAgentControl(){return this.settingsForm.get("userAgent")}get cookieControl(){return this.settingsForm.get("cookie")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("header",this.settings,this.settingsForm.valueChanges).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}At.\u0275fac=function(n){return new(n||At)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},At.\u0275cmp=t.Xpm({type:At,selectors:[["app-header-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:17,vars:9,consts:[["nz-form","",3,"formGroup"],[1,"setting-item","actionable",3,"click"],[1,"setting-label"],[3,"nzWarningTip","nzValidateStatus"],[1,"setting-value"],[3,"value","confirm"],["userAgentEditDialog",""],["cookieEditDialog",""]],template:function(n,e){if(1&n){const o=t.EpF();t.TgZ(0,"form",0)(1,"nz-form-item",1),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(8);return t.KtG(s.open())}),t.TgZ(2,"nz-form-label",2),t._uU(3,"User Agent"),t.qZA(),t.TgZ(4,"nz-form-control",3)(5,"nz-form-text",4),t._uU(6),t.qZA(),t.TgZ(7,"app-user-agent-edit-dialog",5,6),t.NdJ("confirm",function(s){return e.userAgentControl.setValue(s)}),t.qZA()()(),t.TgZ(9,"nz-form-item",1),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(16);return t.KtG(s.open())}),t.TgZ(10,"nz-form-label",2),t._uU(11,"Cookie"),t.qZA(),t.TgZ(12,"nz-form-control",3)(13,"nz-form-text",4),t._uU(14),t.qZA(),t.TgZ(15,"app-cookie-edit-dialog",5,7),t.NdJ("confirm",function(s){return e.cookieControl.setValue(s)}),t.qZA()()()()}2&n&&(t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.userAgent?e.userAgentControl:"warning"),t.xp6(2),t.hij("",e.userAgentControl.value," "),t.xp6(1),t.Q6J("value",e.userAgentControl.value),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.cookie?e.cookieControl:"warning"),t.xp6(2),t.hij("",e.cookieControl.value," "),t.xp6(1),t.Q6J("value",e.cookieControl.value))},dependencies:[r._Y,r.JL,r.sg,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,l.EF,St,yt],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});var at=c(9089),Qo=c(6457),Vo=c(4501);function Lo(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165\u4fdd\u5b58\u4f4d\u7f6e "),t.BQk())}function qo(i,n){1&i&&(t.ynx(0),t._uU(1," \u4e0d\u662f\u4e00\u4e2a\u76ee\u5f55 "),t.BQk())}function Yo(i,n){1&i&&(t.ynx(0),t._uU(1," \u6ca1\u6709\u8bfb\u5199\u6743\u9650 "),t.BQk())}function Wo(i,n){1&i&&(t.ynx(0),t._uU(1," \u672a\u80fd\u8fdb\u884c\u9a8c\u8bc1 "),t.BQk())}function Ro(i,n){if(1&i&&(t.YNc(0,Lo,2,0,"ng-container",6),t.YNc(1,qo,2,0,"ng-container",6),t.YNc(2,Yo,2,0,"ng-container",6),t.YNc(3,Wo,2,0,"ng-container",6)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("notADirectory")),t.xp6(1),t.Q6J("ngIf",e.hasError("noPermissions")),t.xp6(1),t.Q6J("ngIf",e.hasError("failedToValidate"))}}function Go(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"form",2)(2,"nz-form-item")(3,"nz-form-control",3),t._UZ(4,"input",4),t.YNc(5,Ro,4,4,"ng-template",null,5,t.W1O),t.qZA()()(),t.BQk()),2&i){const e=t.MAs(6),o=t.oxw();t.xp6(1),t.Q6J("formGroup",o.settingsForm),t.xp6(2),t.Q6J("nzErrorTip",e)}}class kt{constructor(n,e,o){this.changeDetector=e,this.validationService=o,this.value="",this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.outDirAsyncValidator=a=>this.validationService.validateDir(a.value).pipe((0,T.U)(s=>{switch(s.code){case ot.ENOTDIR:return{error:!0,notADirectory:!0};case ot.EACCES:return{error:!0,noPermissions:!0};default:return null}}),(0,w.K)(()=>(0,ie.of)({error:!0,failedToValidate:!0}))),this.settingsForm=n.group({outDir:["",[r.kI.required],[this.outDirAsyncValidator]]})}get control(){return this.settingsForm.get("outDir")}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){this.control.setValue(this.value),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){this.confirm.emit(this.control.value.trim()),this.close()}}function Ho(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165\u8def\u5f84\u6a21\u677f "),t.BQk())}function $o(i,n){1&i&&(t.ynx(0),t._uU(1," \u8def\u5f84\u6a21\u677f\u6709\u9519\u8bef "),t.BQk())}function Ko(i,n){if(1&i&&(t.YNc(0,Ho,2,0,"ng-container",12),t.YNc(1,$o,2,0,"ng-container",12)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}function Xo(i,n){if(1&i&&(t.TgZ(0,"tr")(1,"td"),t._uU(2),t.qZA(),t.TgZ(3,"td"),t._uU(4),t.qZA()()),2&i){const e=n.$implicit;t.xp6(2),t.Oqu(e.name),t.xp6(2),t.Oqu(e.desc)}}function jo(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"form",3)(2,"nz-form-item")(3,"nz-form-control",4),t._UZ(4,"input",5),t.YNc(5,Ko,2,2,"ng-template",null,6,t.W1O),t.qZA()(),t.TgZ(7,"nz-collapse")(8,"nz-collapse-panel",7)(9,"nz-table",8,9)(11,"thead")(12,"tr")(13,"th"),t._uU(14,"\u53d8\u91cf"),t.qZA(),t.TgZ(15,"th"),t._uU(16,"\u8bf4\u660e"),t.qZA()()(),t.TgZ(17,"tbody"),t.YNc(18,Xo,5,2,"tr",10),t.qZA()(),t.TgZ(19,"p",11)(20,"strong"),t._uU(21," \u6ce8\u610f\uff1a\u53d8\u91cf\u540d\u5fc5\u987b\u653e\u5728\u82b1\u62ec\u53f7\u4e2d\uff01\u4f7f\u7528\u65e5\u671f\u65f6\u95f4\u53d8\u91cf\u4ee5\u907f\u514d\u547d\u540d\u51b2\u7a81\uff01 "),t.qZA()()()()(),t.BQk()),2&i){const e=t.MAs(6),o=t.MAs(10),a=t.oxw();t.xp6(1),t.Q6J("formGroup",a.settingsForm),t.xp6(2),t.Q6J("nzErrorTip",e),t.xp6(1),t.Q6J("pattern",a.pathTemplatePattern),t.xp6(5),t.Q6J("nzData",a.pathTemplateVariables)("nzPageSize",11)("nzShowPagination",!1)("nzSize","small"),t.xp6(9),t.Q6J("ngForOf",o.data)}}function ta(i,n){if(1&i){const e=t.EpF();t.TgZ(0,"button",13),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.restoreDefault())}),t._uU(1," \u6062\u590d\u9ed8\u8ba4 "),t.qZA(),t.TgZ(2,"button",14),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleCancel())}),t._uU(3,"\u53d6\u6d88"),t.qZA(),t.TgZ(4,"button",13),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleConfirm())}),t._uU(5," \u786e\u5b9a "),t.qZA()}if(2&i){const e=t.oxw();t.Q6J("disabled",e.control.value.trim()===e.pathTemplateDefault),t.xp6(4),t.Q6J("disabled",e.control.invalid||e.control.value.trim()===e.value)}}kt.\u0275fac=function(n){return new(n||kt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(Y))},kt.\u0275cmp=t.Xpm({type:kt,selectors:[["app-outdir-edit-dialog"]],inputs:{value:"value",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:2,vars:2,consts:[["nzTitle","\u4fee\u6539\u6587\u4ef6\u5b58\u653e\u76ee\u5f55","nzCentered","",3,"nzVisible","nzOkDisabled","nzVisibleChange","nzOnOk","nzOnCancel"],[4,"nzModalContent"],["nz-form","",3,"formGroup"],["nzHasFeedback","","nzValidatingTip","\u6b63\u5728\u9a8c\u9a8c...",3,"nzErrorTip"],["type","text","required","","nz-input","","formControlName","outDir"],["errorTip",""],[4,"ngIf"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzVisibleChange",function(a){return e.visible=a})("nzOnOk",function(){return e.handleConfirm()})("nzOnCancel",function(){return e.handleCancel()}),t.YNc(1,Go,7,2,"ng-container",1),t.qZA()),2&n&&t.Q6J("nzVisible",e.visible)("nzOkDisabled",e.control.invalid||e.control.value.trim()===e.value)},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.Fd,O.Zp,_.du,_.Hf],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Dt{constructor(n,e){this.changeDetector=e,this.value="",this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.pathTemplatePattern=d._m,this.pathTemplateDefault=d.ip,this.pathTemplateVariables=d.Dr,this.settingsForm=n.group({pathTemplate:["",[r.kI.required,r.kI.pattern(this.pathTemplatePattern)]]})}get control(){return this.settingsForm.get("pathTemplate")}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){this.control.setValue(this.value),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){this.confirm.emit(this.control.value.trim()),this.close()}restoreDefault(){this.control.setValue(this.pathTemplateDefault)}}function ea(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1," \u81ea\u52a8\u5206\u5272\u6587\u4ef6\u4ee5\u9650\u5236\u5f55\u64ad\u6587\u4ef6\u5927\u5c0f "),t._UZ(2,"br"),t._uU(3," \u683c\u5f0f\uff1a\u6570\u5b57 + \u5355\u4f4d(GB, MB, KB, B) "),t._UZ(4,"br"),t._uU(5," \u4e0d\u81ea\u52a8\u5206\u5272\u6587\u4ef6\u8bbe\u7f6e\u4e3a "),t.TgZ(6,"strong"),t._uU(7,"0 B"),t.qZA(),t._UZ(8,"br"),t.qZA())}function na(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1," \u81ea\u52a8\u5206\u5272\u6587\u4ef6\u4ee5\u9650\u5236\u5f55\u64ad\u6587\u4ef6\u65f6\u957f "),t._UZ(2,"br"),t._uU(3," \u683c\u5f0f\uff1aHH:MM:SS "),t._UZ(4,"br"),t._uU(5," \u4e0d\u81ea\u52a8\u5206\u5272\u6587\u4ef6\u8bbe\u7f6e\u4e3a "),t.TgZ(6,"strong"),t._uU(7,"00:00:00"),t.qZA(),t._UZ(8,"br"),t.qZA())}Dt.\u0275fac=function(n){return new(n||Dt)(t.Y36(r.qu),t.Y36(t.sBO))},Dt.\u0275cmp=t.Xpm({type:Dt,selectors:[["app-path-template-edit-dialog"]],inputs:{value:"value",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:3,vars:2,consts:[["nzTitle","\u4fee\u6539\u6587\u4ef6\u8def\u5f84\u6a21\u677f","nzCentered","",3,"nzVisible","nzOkDisabled","nzVisibleChange"],[4,"nzModalContent"],[3,"nzModalFooter"],["nz-form","",3,"formGroup"],[3,"nzErrorTip"],["type","text","required","","nz-input","","formControlName","pathTemplate",3,"pattern"],["errorTip",""],["nzHeader","\u6a21\u677f\u53d8\u91cf\u8bf4\u660e"],[3,"nzData","nzPageSize","nzShowPagination","nzSize"],["table",""],[4,"ngFor","ngForOf"],[1,"footnote"],[4,"ngIf"],["nz-button","","nzType","default",3,"disabled","click"],["nz-button","","nzType","default",3,"click"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzVisibleChange",function(a){return e.visible=a}),t.YNc(1,jo,22,8,"ng-container",1),t.YNc(2,ta,6,2,"ng-template",2),t.qZA()),2&n&&t.Q6J("nzVisible",e.visible)("nzOkDisabled",e.control.invalid||e.control.value.trim()===e.value)},dependencies:[p.sg,p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.c5,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.Fd,O.Zp,_.du,_.Uh,_.Hf,Q.ix,I.w,dt.dQ,H.N8,H.Uo,H._C,H.Om,H.p0,H.$Z,Mi,Ne],styles:[".footnote[_ngcontent-%COMP%]{margin-top:1em;margin-bottom:0}"],changeDetection:0});class Et{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({outDir:[""],pathTemplate:[""],filesizeLimit:["",[r.kI.required,r.kI.min(0),r.kI.max(0xf9ff5c28f5)]],durationLimit:["",[r.kI.required,r.kI.min(0),r.kI.max(359999)]]})}get outDirControl(){return this.settingsForm.get("outDir")}get pathTemplateControl(){return this.settingsForm.get("pathTemplate")}get filesizeLimitControl(){return this.settingsForm.get("filesizeLimit")}get durationLimitControl(){return this.settingsForm.get("durationLimit")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("output",this.settings,this.settingsForm.valueChanges.pipe((0,at.Sc)(this.settingsForm))).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}Et.\u0275fac=function(n){return new(n||Et)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},Et.\u0275cmp=t.Xpm({type:Et,selectors:[["app-output-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:31,vars:15,consts:[["nz-form","",3,"formGroup"],[1,"setting-item","actionable",3,"click"],[1,"setting-label"],[3,"nzWarningTip","nzValidateStatus"],[1,"setting-value"],[3,"value","confirm"],["outDirEditDialog",""],["pathTemplateEditDialog",""],[1,"setting-item"],["nzNoColon","",1,"setting-label",3,"nzTooltipTitle"],["filesizeLimitTip",""],[1,"setting-control","select",3,"nzWarningTip","nzValidateStatus"],["formControlName","filesizeLimit"],["durationLimitTip",""],["formControlName","durationLimit"]],template:function(n,e){if(1&n){const o=t.EpF();t.TgZ(0,"form",0)(1,"nz-form-item",1),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(8);return t.KtG(s.open())}),t.TgZ(2,"nz-form-label",2),t._uU(3,"\u5b58\u653e\u76ee\u5f55"),t.qZA(),t.TgZ(4,"nz-form-control",3)(5,"nz-form-text",4),t._uU(6),t.qZA(),t.TgZ(7,"app-outdir-edit-dialog",5,6),t.NdJ("confirm",function(s){return e.outDirControl.setValue(s)}),t.qZA()()(),t.TgZ(9,"nz-form-item",1),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(16);return t.KtG(s.open())}),t.TgZ(10,"nz-form-label",2),t._uU(11,"\u8def\u5f84\u6a21\u677f"),t.qZA(),t.TgZ(12,"nz-form-control",3)(13,"nz-form-text",4),t._uU(14),t.qZA(),t.TgZ(15,"app-path-template-edit-dialog",5,7),t.NdJ("confirm",function(s){return e.pathTemplateControl.setValue(s)}),t.qZA()()(),t.TgZ(17,"nz-form-item",8)(18,"nz-form-label",9),t._uU(19,"\u5927\u5c0f\u9650\u5236"),t.qZA(),t.YNc(20,ea,9,0,"ng-template",null,10,t.W1O),t.TgZ(22,"nz-form-control",11),t._UZ(23,"app-input-filesize",12),t.qZA()(),t.TgZ(24,"nz-form-item",8)(25,"nz-form-label",9),t._uU(26,"\u65f6\u957f\u9650\u5236"),t.qZA(),t.YNc(27,na,9,0,"ng-template",null,13,t.W1O),t.TgZ(29,"nz-form-control",11),t._UZ(30,"app-input-duration",14),t.qZA()()()}if(2&n){const o=t.MAs(21),a=t.MAs(28);t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.outDir?e.outDirControl:"warning"),t.xp6(2),t.hij("",e.outDirControl.value," "),t.xp6(1),t.Q6J("value",e.outDirControl.value),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.pathTemplate?e.pathTemplateControl:"warning"),t.xp6(2),t.hij("",e.pathTemplateControl.value," "),t.xp6(1),t.Q6J("value",e.pathTemplateControl.value),t.xp6(3),t.Q6J("nzTooltipTitle",o),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.filesizeLimit?e.filesizeLimitControl:"warning"),t.xp6(3),t.Q6J("nzTooltipTitle",a),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.durationLimit?e.durationLimitControl:"warning")}},dependencies:[r._Y,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,l.EF,Qo.i,Vo.q,kt,Dt],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Zt{}Zt.\u0275fac=function(n){return new(n||Zt)},Zt.\u0275cmp=t.Xpm({type:Zt,selectors:[["app-webhook-settings"]],decls:5,vars:0,consts:[["routerLink","webhooks",1,"setting-item"],[1,"setting-label"],[1,"setting-control"],["nz-icon","","nzType","right"]],template:function(n,e){1&n&&(t.TgZ(0,"a",0)(1,"span",1),t._uU(2,"Webhooks"),t.qZA(),t.TgZ(3,"span",2),t._UZ(4,"i",3),t.qZA()())},dependencies:[v.rH,I.w,lt.Ls],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Nt{validate(n){return(i=>{const o=i.value.split("\n").map(a=>a.trim()).filter(a=>!!a).filter(a=>!/^https?:\/\/\S+$/.test(a));return o.length>0?{baseUrl:{value:o}}:null})(n)}}function ia(i,n){1&i&&(t.ynx(0),t._uU(1," \u4e0d\u80fd\u4e3a\u7a7a "),t.BQk())}function oa(i,n){if(1&i&&(t.ynx(0),t._uU(1),t.ALo(2,"json"),t.BQk()),2&i){const e=t.oxw().$implicit;t.xp6(1),t.hij(" \u8f93\u5165\u65e0\u6548: ",t.lcZ(2,1,e.getError("baseUrl").value)," ")}}function aa(i,n){if(1&i&&(t.YNc(0,ia,2,0,"ng-container",7),t.YNc(1,oa,3,3,"ng-container",7)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("baseUrl"))}}function ra(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"form",3)(2,"nz-form-item")(3,"nz-form-control",4),t._UZ(4,"textarea",5),t.YNc(5,aa,2,2,"ng-template",null,6,t.W1O),t.qZA()()(),t.BQk()),2&i){const e=t.MAs(6),o=t.oxw();t.xp6(1),t.Q6J("formGroup",o.settingsForm),t.xp6(2),t.Q6J("nzErrorTip",e),t.xp6(1),t.Q6J("rows",5)}}function sa(i,n){if(1&i){const e=t.EpF();t.TgZ(0,"button",8),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.restoreDefault())}),t._uU(1," \u6062\u590d\u9ed8\u8ba4 "),t.qZA(),t.TgZ(2,"button",9),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleCancel())}),t._uU(3,"\u53d6\u6d88"),t.qZA(),t.TgZ(4,"button",10),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleConfirm())}),t._uU(5," \u786e\u5b9a "),t.qZA()}if(2&i){const e=t.oxw();t.Q6J("disabled",e.control.value.trim()===e.defaultBaseApiUrl),t.xp6(4),t.Q6J("disabled",e.control.invalid||e.control.value.trim()===e.value)}}Nt.\u0275fac=function(n){return new(n||Nt)},Nt.\u0275dir=t.lG2({type:Nt,selectors:[["","appBaseUrlValidator",""]],features:[t._Bn([{provide:r.Cf,useExisting:Nt,multi:!0}])]});class Bt{constructor(n,e){this.changeDetector=e,this.value=[],this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.defaultBaseApiUrl=d.QL,this.settingsForm=n.group({baseApiUrls:["",[r.kI.required,i=>{const o=i.value.split("\n").map(a=>a.trim()).filter(a=>!!a).filter(a=>!/^https?:\/\/\S+$/.test(a));return o.length>0?{baseUrl:{value:o}}:null}]]})}get control(){return this.settingsForm.get("baseApiUrls")}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){this.control.setValue(this.value.join("\n")),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){const e=this.control.value.split("\n").map(o=>o.trim()).filter(o=>!!o);this.confirm.emit(e),this.close()}restoreDefault(){this.control.setValue(this.defaultBaseApiUrl)}}function la(i,n){1&i&&(t.ynx(0),t._uU(1," \u4e0d\u80fd\u4e3a\u7a7a "),t.BQk())}function ca(i,n){if(1&i&&(t.ynx(0),t._uU(1),t.ALo(2,"json"),t.BQk()),2&i){const e=t.oxw().$implicit;t.xp6(1),t.hij(" \u8f93\u5165\u65e0\u6548: ",t.lcZ(2,1,e.getError("baseUrl").value)," ")}}function ga(i,n){if(1&i&&(t.YNc(0,la,2,0,"ng-container",7),t.YNc(1,ca,3,3,"ng-container",7)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("baseUrl"))}}function ua(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"form",3)(2,"nz-form-item")(3,"nz-form-control",4),t._UZ(4,"textarea",5),t.YNc(5,ga,2,2,"ng-template",null,6,t.W1O),t.qZA()()(),t.BQk()),2&i){const e=t.MAs(6),o=t.oxw();t.xp6(1),t.Q6J("formGroup",o.settingsForm),t.xp6(2),t.Q6J("nzErrorTip",e),t.xp6(1),t.Q6J("rows",5)}}function ma(i,n){if(1&i){const e=t.EpF();t.TgZ(0,"button",8),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.restoreDefault())}),t._uU(1," \u6062\u590d\u9ed8\u8ba4 "),t.qZA(),t.TgZ(2,"button",9),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleCancel())}),t._uU(3,"\u53d6\u6d88"),t.qZA(),t.TgZ(4,"button",10),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleConfirm())}),t._uU(5," \u786e\u5b9a "),t.qZA()}if(2&i){const e=t.oxw();t.Q6J("disabled",e.control.value.trim()===e.defaultBaseLiveApiUrl),t.xp6(4),t.Q6J("disabled",e.control.invalid||e.control.value.trim()===e.value)}}Bt.\u0275fac=function(n){return new(n||Bt)(t.Y36(r.qu),t.Y36(t.sBO))},Bt.\u0275cmp=t.Xpm({type:Bt,selectors:[["app-base-api-url-edit-dialog"]],inputs:{value:"value",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:3,vars:2,consts:[["nzTitle","\u4fee\u6539\u4e3b\u7ad9 API \u4e3b\u673a\u5730\u5740","nzCentered","",3,"nzVisible","nzOkDisabled","nzVisibleChange"],[4,"nzModalContent"],[3,"nzModalFooter"],["nz-form","",3,"formGroup"],[3,"nzErrorTip"],["wrap","soft","nz-input","","required","","formControlName","baseApiUrls",3,"rows"],["errorTip",""],[4,"ngIf"],["nz-button","","nzType","default",3,"disabled","click"],["nz-button","","nzType","default",3,"click"],["nz-button","","nzDanger","","nzType","default",3,"disabled","click"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzVisibleChange",function(a){return e.visible=a}),t.YNc(1,ra,7,3,"ng-container",1),t.YNc(2,sa,6,2,"ng-template",2),t.qZA()),2&n&&t.Q6J("nzVisible",e.visible)("nzOkDisabled",e.control.invalid||e.control.value.trim()===e.value)},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.Fd,O.Zp,_.du,_.Uh,_.Hf,Q.ix,I.w,dt.dQ,p.Ts],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Ut{constructor(n,e){this.changeDetector=e,this.value=[],this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.defaultBaseLiveApiUrl=d.gZ,this.settingsForm=n.group({baseLiveApiUrls:["",[r.kI.required,i=>{const o=i.value.split("\n").map(a=>a.trim()).filter(a=>!!a).filter(a=>!/^https?:\/\/\S+$/.test(a));return o.length>0?{baseUrl:{value:o}}:null}]]})}get control(){return this.settingsForm.get("baseLiveApiUrls")}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){this.control.setValue(this.value.join("\n")),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){const e=this.control.value.split("\n").map(o=>o.trim()).filter(o=>!!o);this.confirm.emit(e),this.close()}restoreDefault(){this.control.setValue(this.defaultBaseLiveApiUrl)}}function pa(i,n){1&i&&(t.ynx(0),t._uU(1," \u4e0d\u80fd\u4e3a\u7a7a "),t.BQk())}function da(i,n){if(1&i&&(t.ynx(0),t._uU(1),t.ALo(2,"json"),t.BQk()),2&i){const e=t.oxw().$implicit;t.xp6(1),t.hij(" \u8f93\u5165\u65e0\u6548: ",t.lcZ(2,1,e.getError("baseUrl").value)," ")}}function ha(i,n){if(1&i&&(t.YNc(0,pa,2,0,"ng-container",7),t.YNc(1,da,3,3,"ng-container",7)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("baseUrl"))}}function _a(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"form",3)(2,"nz-form-item")(3,"nz-form-control",4),t._UZ(4,"textarea",5),t.YNc(5,ha,2,2,"ng-template",null,6,t.W1O),t.qZA()()(),t.BQk()),2&i){const e=t.MAs(6),o=t.oxw();t.xp6(1),t.Q6J("formGroup",o.settingsForm),t.xp6(2),t.Q6J("nzErrorTip",e),t.xp6(1),t.Q6J("rows",5)}}function fa(i,n){if(1&i){const e=t.EpF();t.TgZ(0,"button",8),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.restoreDefault())}),t._uU(1," \u6062\u590d\u9ed8\u8ba4 "),t.qZA(),t.TgZ(2,"button",9),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleCancel())}),t._uU(3,"\u53d6\u6d88"),t.qZA(),t.TgZ(4,"button",10),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleConfirm())}),t._uU(5," \u786e\u5b9a "),t.qZA()}if(2&i){const e=t.oxw();t.Q6J("disabled",e.control.value.trim()===e.defaultBasePlayInfoApiUrl),t.xp6(4),t.Q6J("disabled",e.control.invalid||e.control.value.trim()===e.value)}}Ut.\u0275fac=function(n){return new(n||Ut)(t.Y36(r.qu),t.Y36(t.sBO))},Ut.\u0275cmp=t.Xpm({type:Ut,selectors:[["app-base-live-api-url-edit-dialog"]],inputs:{value:"value",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:3,vars:2,consts:[["nzTitle","\u4fee\u6539\u76f4\u64ad API \u4e3b\u673a\u5730\u5740","nzCentered","",3,"nzVisible","nzOkDisabled","nzVisibleChange"],[4,"nzModalContent"],[3,"nzModalFooter"],["nz-form","",3,"formGroup"],[3,"nzErrorTip"],["wrap","soft","nz-input","","required","","formControlName","baseLiveApiUrls",3,"rows"],["errorTip",""],[4,"ngIf"],["nz-button","","nzType","default",3,"disabled","click"],["nz-button","","nzType","default",3,"click"],["nz-button","","nzDanger","","nzType","default",3,"disabled","click"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzVisibleChange",function(a){return e.visible=a}),t.YNc(1,ua,7,3,"ng-container",1),t.YNc(2,ma,6,2,"ng-template",2),t.qZA()),2&n&&t.Q6J("nzVisible",e.visible)("nzOkDisabled",e.control.invalid||e.control.value.trim()===e.value)},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.Fd,O.Zp,_.du,_.Uh,_.Hf,Q.ix,I.w,dt.dQ,p.Ts],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class It{constructor(n,e){this.changeDetector=e,this.value=[],this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.defaultBasePlayInfoApiUrl=d.gZ,this.settingsForm=n.group({basePlayInfoApiUrls:["",[r.kI.required,i=>{const o=i.value.split("\n").map(a=>a.trim()).filter(a=>!!a).filter(a=>!/^https?:\/\/\S+$/.test(a));return o.length>0?{baseUrl:{value:o}}:null}]]})}get control(){return this.settingsForm.get("basePlayInfoApiUrls")}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){this.control.setValue(this.value.join("\n")),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){const e=this.control.value.split("\n").map(o=>o.trim()).filter(o=>!!o);this.confirm.emit(e),this.close()}restoreDefault(){this.control.setValue(this.defaultBasePlayInfoApiUrl)}}function Ca(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1,"\u8bbe\u7f6e\u5185\u5bb9\uff1a\u53d1\u9001\u4e3b\u7ad9 API \u8bf7\u6c42\u6240\u7528\u7684\u4e3b\u673a\u7684\u5730\u5740\uff0c\u4e00\u884c\u4e00\u4e2a\u3002"),t.qZA(),t.TgZ(2,"p"),t._uU(3,"\u8bf7\u6c42\u65b9\u5f0f\uff1a\u5148\u7528\u7b2c\u4e00\u4e2a\u53d1\u9001\u8bf7\u6c42\uff0c\u51fa\u9519\u5c31\u7528\u7b2c\u4e8c\u4e2a\uff0c\u4ee5\u6b64\u7c7b\u63a8\u3002"),t.qZA(),t.TgZ(4,"p"),t._uU(5,"\u4e3b\u8981\u76ee\u7684\uff1a\u7f13\u89e3\u8bf7\u6c42\u8fc7\u591a\u88ab\u98ce\u63a7"),t.qZA())}function va(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1," \u8bbe\u7f6e\u5185\u5bb9\uff1a\u53d1\u9001\u76f4\u64ad API (\u76f4\u64ad\u6d41 API getRoomPlayInfo \u9664\u5916) \u8bf7\u6c42\u6240\u7528\u7684\u4e3b\u673a\u7684\u5730\u5740\uff0c\u4e00\u884c\u4e00\u4e2a\u3002 "),t.qZA(),t.TgZ(2,"p"),t._uU(3,"\u8bf7\u6c42\u65b9\u5f0f\uff1a\u5148\u7528\u7b2c\u4e00\u4e2a\u53d1\u9001\u8bf7\u6c42\uff0c\u51fa\u9519\u5c31\u7528\u7b2c\u4e8c\u4e2a\uff0c\u4ee5\u6b64\u7c7b\u63a8\u3002"),t.qZA(),t.TgZ(4,"p"),t._uU(5,"\u4e3b\u8981\u76ee\u7684\uff1a\u7f13\u89e3\u8bf7\u6c42\u8fc7\u591a\u88ab\u98ce\u63a7"),t.qZA())}function za(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1," \u8bbe\u7f6e\u5185\u5bb9\uff1a\u53d1\u9001\u76f4\u64ad\u6d41 API (getRoomPlayInfo) \u8bf7\u6c42\u6240\u7528\u7684\u4e3b\u673a\u7684\u5730\u5740\uff0c\u4e00\u884c\u4e00\u4e2a\u3002 "),t.qZA(),t.TgZ(2,"p"),t._uU(3," \u8bf7\u6c42\u65b9\u5f0f\uff1a\u540c\u65f6\u5e76\u53d1\u5411\u5168\u90e8 API \u4e3b\u673a\u53d1\u9001\u8bf7\u6c42\uff08\u4ece\u5168\u90e8\u6210\u529f\u7684\u8bf7\u6c42\u7ed3\u679c\u4e2d\u63d0\u53d6\u76f4\u64ad\u6d41\u8d28\u91cf\u8f83\u597d\u7684\u76f4\u64ad\u6d41\u5730\u5740\uff09 "),t.qZA(),t.TgZ(4,"p"),t._uU(5,"\u4e3b\u8981\u76ee\u7684\uff1a\u6539\u53d8\u5f55\u5236\u7684\u76f4\u64ad\u6d41\u7684 CDN"),t.qZA(),t.TgZ(6,"p"),t._uU(7," P.S\uff1a\u56fd\u5916 IP \u7684\u8bf7\u6c42\u7ed3\u679c\u6ca1\u6709 HLS(fmp4) \u6d41\uff0c\u8981\u540c\u65f6\u652f\u6301 fmp4 \u548c flv \u53ef\u4ee5\u6df7\u7528\u56fd\u5185\u548c\u56fd\u5916\u7684 API \u4e3b\u673a\u3002 "),t.qZA())}It.\u0275fac=function(n){return new(n||It)(t.Y36(r.qu),t.Y36(t.sBO))},It.\u0275cmp=t.Xpm({type:It,selectors:[["app-base-play-info-api-url-edit-dialog"]],inputs:{value:"value",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:3,vars:2,consts:[["nzTitle","\u4fee\u6539\u76f4\u64ad\u6d41 API \u4e3b\u673a\u5730\u5740","nzCentered","",3,"nzVisible","nzOkDisabled","nzVisibleChange"],[4,"nzModalContent"],[3,"nzModalFooter"],["nz-form","",3,"formGroup"],[3,"nzErrorTip"],["wrap","soft","nz-input","","required","","formControlName","basePlayInfoApiUrls",3,"rows"],["errorTip",""],[4,"ngIf"],["nz-button","","nzType","default",3,"disabled","click"],["nz-button","","nzType","default",3,"click"],["nz-button","","nzDanger","","nzType","default",3,"disabled","click"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzVisibleChange",function(a){return e.visible=a}),t.YNc(1,_a,7,3,"ng-container",1),t.YNc(2,fa,6,2,"ng-template",2),t.qZA()),2&n&&t.Q6J("nzVisible",e.visible)("nzOkDisabled",e.control.invalid||e.control.value.trim()===e.value)},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.Fd,O.Zp,_.du,_.Uh,_.Hf,Q.ix,I.w,dt.dQ,p.Ts],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Jt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({baseApiUrls:[[]],baseLiveApiUrls:[[]],basePlayInfoApiUrls:[[]]})}get baseApiUrlsControl(){return this.settingsForm.get("baseApiUrls")}get baseLiveApiUrlsControl(){return this.settingsForm.get("baseLiveApiUrls")}get basePlayInfoApiUrlsControl(){return this.settingsForm.get("basePlayInfoApiUrls")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("biliApi",this.settings,this.settingsForm.valueChanges,!1).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}Jt.\u0275fac=function(n){return new(n||Jt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},Jt.\u0275cmp=t.Xpm({type:Jt,selectors:[["app-bili-api-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:31,vars:16,consts:[["nz-form","",3,"formGroup"],[1,"setting-item","actionable",3,"click"],[1,"setting-label",3,"nzTooltipTitle"],["baseApiUrlsTip",""],[3,"nzWarningTip","nzValidateStatus"],[1,"setting-value"],[3,"value","confirm"],["baseApiUrlsEditDialog",""],["baseLiveApiUrlsTip",""],["baseLiveApiUrlsEditDialog",""],["basePalyInfoApiUrlTip",""],["basePlayInfoApiUrlsEditDialog",""]],template:function(n,e){if(1&n){const o=t.EpF();t.TgZ(0,"form",0)(1,"nz-form-item",1),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(10);return t.KtG(s.open())}),t.TgZ(2,"nz-form-label",2),t._uU(3,"\u4e3b\u7ad9 API \u4e3b\u673a\u5730\u5740"),t.qZA(),t.YNc(4,Ca,6,0,"ng-template",null,3,t.W1O),t.TgZ(6,"nz-form-control",4)(7,"nz-form-text",5),t._uU(8),t.qZA(),t.TgZ(9,"app-base-api-url-edit-dialog",6,7),t.NdJ("confirm",function(s){return e.baseApiUrlsControl.setValue(s)}),t.qZA()()(),t.TgZ(11,"nz-form-item",1),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(20);return t.KtG(s.open())}),t.TgZ(12,"nz-form-label",2),t._uU(13,"\u76f4\u64ad API \u4e3b\u673a\u5730\u5740"),t.qZA(),t.YNc(14,va,6,0,"ng-template",null,8,t.W1O),t.TgZ(16,"nz-form-control",4)(17,"nz-form-text",5),t._uU(18),t.qZA(),t.TgZ(19,"app-base-live-api-url-edit-dialog",6,9),t.NdJ("confirm",function(s){return e.baseLiveApiUrlsControl.setValue(s)}),t.qZA()()(),t.TgZ(21,"nz-form-item",1),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(30);return t.KtG(s.open())}),t.TgZ(22,"nz-form-label",2),t._uU(23,"\u76f4\u64ad\u6d41 API \u4e3b\u673a\u5730\u5740"),t.qZA(),t.YNc(24,za,8,0,"ng-template",null,10,t.W1O),t.TgZ(26,"nz-form-control",4)(27,"nz-form-text",5),t._uU(28),t.qZA(),t.TgZ(29,"app-base-play-info-api-url-edit-dialog",6,11),t.NdJ("confirm",function(s){return e.basePlayInfoApiUrlsControl.setValue(s)}),t.qZA()()()()}if(2&n){const o=t.MAs(5),a=t.MAs(15),s=t.MAs(25);t.Q6J("formGroup",e.settingsForm),t.xp6(2),t.Q6J("nzTooltipTitle",o),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.baseApiUrls?e.baseApiUrlsControl:"warning"),t.xp6(2),t.hij("",e.baseApiUrlsControl.value," "),t.xp6(1),t.Q6J("value",e.baseApiUrlsControl.value),t.xp6(3),t.Q6J("nzTooltipTitle",a),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.baseLiveApiUrls?e.baseLiveApiUrlsControl:"warning"),t.xp6(2),t.hij("",e.baseLiveApiUrlsControl.value," "),t.xp6(1),t.Q6J("value",e.baseLiveApiUrlsControl.value),t.xp6(3),t.Q6J("nzTooltipTitle",s),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.basePlayInfoApiUrls?e.basePlayInfoApiUrlsControl:"warning"),t.xp6(2),t.hij("",e.basePlayInfoApiUrlsControl.value," "),t.xp6(1),t.Q6J("value",e.basePlayInfoApiUrlsControl.value)}},dependencies:[r._Y,r.JL,r.sg,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,l.EF,Bt,Ut,It],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}nz-form-control[_ngcontent-%COMP%]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}"],changeDetection:0});const xa=["innerContent"];class Qt{constructor(n,e,o,a){this.changeDetector=n,this.route=e,this.logger=o,this.routerScrollService=a}ngOnInit(){this.route.data.subscribe(n=>{this.settings=n.settings,this.changeDetector.markForCheck()})}ngAfterViewInit(){this.innerContent?this.routerScrollService.setCustomViewportToScroll(this.innerContent.nativeElement):this.logger.error("The content element could not be found!")}}Qt.\u0275fac=function(n){return new(n||Qt)(t.Y36(t.sBO),t.Y36(v.gz),t.Y36(Z.Kf),t.Y36(pt))},Qt.\u0275cmp=t.Xpm({type:Qt,selectors:[["app-settings"]],viewQuery:function(n,e){if(1&n&&t.Gf(xa,5),2&n){let o;t.iGM(o=t.CRH())&&(e.innerContent=o.first)}},decls:24,vars:8,consts:[[1,"inner-content"],["innerContent",""],[1,"main-settings","settings-page"],[1,"settings-page-content"],["name","\u6587\u4ef6"],[3,"settings"],["name","\u5f55\u5236"],["name","\u5f39\u5e55"],["name","\u6587\u4ef6\u5904\u7406"],["name","\u786c\u76d8\u7a7a\u95f4"],["name","BILI API"],["name","\u7f51\u7edc\u8bf7\u6c42"],["name","\u65e5\u5fd7"],["name","\u901a\u77e5"],["name","Webhook"]],template:function(n,e){1&n&&(t.TgZ(0,"div",0,1)(2,"div",2)(3,"div",3)(4,"app-page-section",4),t._UZ(5,"app-output-settings",5),t.qZA(),t.TgZ(6,"app-page-section",6),t._UZ(7,"app-recorder-settings",5),t.qZA(),t.TgZ(8,"app-page-section",7),t._UZ(9,"app-danmaku-settings",5),t.qZA(),t.TgZ(10,"app-page-section",8),t._UZ(11,"app-post-processing-settings",5),t.qZA(),t.TgZ(12,"app-page-section",9),t._UZ(13,"app-disk-space-settings",5),t.qZA(),t.TgZ(14,"app-page-section",10),t._UZ(15,"app-bili-api-settings",5),t.qZA(),t.TgZ(16,"app-page-section",11),t._UZ(17,"app-header-settings",5),t.qZA(),t.TgZ(18,"app-page-section",12),t._UZ(19,"app-logging-settings",5),t.qZA(),t.TgZ(20,"app-page-section",13),t._UZ(21,"app-notification-settings"),t.qZA(),t.TgZ(22,"app-page-section",14),t._UZ(23,"app-webhook-settings"),t.qZA()()()()),2&n&&(t.xp6(5),t.Q6J("settings",e.settings.output),t.xp6(2),t.Q6J("settings",e.settings.recorder),t.xp6(2),t.Q6J("settings",e.settings.danmaku),t.xp6(2),t.Q6J("settings",e.settings.postprocessing),t.xp6(2),t.Q6J("settings",e.settings.space),t.xp6(2),t.Q6J("settings",e.settings.biliApi),t.xp6(2),t.Q6J("settings",e.settings.header),t.xp6(2),t.Q6J("settings",e.settings.logging))},dependencies:[q.g,xt,Ot,Pt,Tt,wt,Ft,At,Et,Zt,Jt],styles:[".inner-content[_ngcontent-%COMP%]{height:100%;width:100%;position:relative;display:block;margin:0;padding:1rem;background:#f1f1f1;overflow:auto}.settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}.inner-content[_ngcontent-%COMP%]{padding-top:0}"]});var Oa=c(7298),Ma=c(6198),Ge=c(3449),ba=c(2168);const Ta=function Pa(i,n,e,o){if(!(0,Mt.Z)(i))return i;for(var a=-1,s=(n=(0,Ge.Z)(n,i)).length,g=s-1,m=i;null!=m&&++a<s;){var h=(0,ba.Z)(n[a]),k=e;if("__proto__"===h||"constructor"===h||"prototype"===h)return i;if(a!=g){var J=m[h];void 0===(k=o?o(J,h,m):void 0)&&(k=(0,Mt.Z)(J)?J:(0,Ye.Z)(n[a+1])?[]:{})}(0,Ma.Z)(m,h,k),m=m[h]}return i};var Sa=c(5867);const Aa=function ya(i,n){return function wa(i,n,e){for(var o=-1,a=n.length,s={};++o<a;){var g=n[o],m=(0,Oa.Z)(i,g);e(m,g)&&Ta(s,(0,Ge.Z)(g,i),m)}return s}(i,n,function(e,o){return(0,Sa.Z)(i,o)})};var ka=c(6623),He=c(8492),$e=He.Z?He.Z.isConcatSpreadable:void 0;const Ea=function Da(i){return(0,Le.Z)(i)||(0,Ve.Z)(i)||!!($e&&i&&i[$e])},Za=function Ke(i,n,e,o,a){var s=-1,g=i.length;for(e||(e=Ea),a||(a=[]);++s<g;){var m=i[s];n>0&&e(m)?n>1?Ke(m,n-1,e,o,a):(0,ka.Z)(a,m):o||(a[a.length]=m)}return a},Ba=function Na(i){return null!=i&&i.length?Za(i,1):[]},Ia=function Ua(i,n,e){switch(e.length){case 0:return i.call(n);case 1:return i.call(n,e[0]);case 2:return i.call(n,e[0],e[1]);case 3:return i.call(n,e[0],e[1],e[2])}return i.apply(n,e)};var Xe=Math.max;const La=function Va(i){return function(){return i}};var je=c(2370),qa=c(9940),Ra=800,Ga=16,Ha=Date.now;const Xa=function $a(i){var n=0,e=0;return function(){var o=Ha(),a=Ga-(o-e);if(e=o,a>0){if(++n>=Ra)return arguments[0]}else n=0;return i.apply(void 0,arguments)}}(je.Z?function(i,n){return(0,je.Z)(i,"toString",{configurable:!0,enumerable:!1,value:La(n),writable:!0})}:qa.Z),f=function ja(i){return Xa(function Ja(i,n,e){return n=Xe(void 0===n?i.length-1:n,0),function(){for(var o=arguments,a=-1,s=Xe(o.length-n,0),g=Array(s);++a<s;)g[a]=o[n+a];a=-1;for(var m=Array(n+1);++a<n;)m[a]=o[a];return m[n]=e(g),Ia(i,this,m)}}(i,void 0,Ba),i+"")}(function(i,n){return null==i?{}:Aa(i,n)});var C=c(8760),rt=c(5545),st=c(7512);class N{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({notifyBegan:[""],notifyEnded:[""],notifyError:[""],notifySpace:[""]})}get notifyBeganControl(){return this.settingsForm.get("notifyBegan")}get notifyEndedControl(){return this.settingsForm.get("notifyEnded")}get notifyErrorControl(){return this.settingsForm.get("notifyError")}get notifySpaceControl(){return this.settingsForm.get("notifySpace")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings(this.keyOfSettings,this.settingsForm.value,this.settingsForm.valueChanges).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}N.\u0275fac=function(n){return new(n||N)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},N.\u0275cmp=t.Xpm({type:N,selectors:[["app-event-settings"]],inputs:{settings:"settings",keyOfSettings:"keyOfSettings"},features:[t.TTD],decls:21,vars:9,consts:[["nz-form","",3,"formGroup"],["appSwitchActionable","",1,"setting-item"],["nzNoColon","",1,"setting-label"],[1,"setting-control","switch",3,"nzWarningTip","nzValidateStatus"],["formControlName","notifyBegan"],["formControlName","notifyEnded"],["formControlName","notifyError"],["formControlName","notifySpace"]],template:function(n,e){1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"\u5f00\u64ad\u53d1\u9001\u901a\u77e5"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"nz-switch",4),t.qZA()(),t.TgZ(6,"nz-form-item",1)(7,"nz-form-label",2),t._uU(8,"\u4e0b\u64ad\u53d1\u9001\u901a\u77e5"),t.qZA(),t.TgZ(9,"nz-form-control",3),t._UZ(10,"nz-switch",5),t.qZA()(),t.TgZ(11,"nz-form-item",1)(12,"nz-form-label",2),t._uU(13,"\u51fa\u9519\u53d1\u9001\u901a\u77e5"),t.qZA(),t.TgZ(14,"nz-form-control",3),t._UZ(15,"nz-switch",6),t.qZA()(),t.TgZ(16,"nz-form-item",1)(17,"nz-form-label",2),t._uU(18,"\u7a7a\u95f4\u4e0d\u8db3\u53d1\u9001\u901a\u77e5"),t.qZA(),t.TgZ(19,"nz-form-control",3),t._UZ(20,"nz-switch",7),t.qZA()()()),2&n&&(t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.notifyBegan?e.notifyBeganControl:"warning"),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.notifyEnded?e.notifyEndedControl:"warning"),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.notifyError?e.notifyErrorControl:"warning"),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.notifySpace?e.notifySpaceControl:"warning"))},dependencies:[r._Y,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,U.i,y],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});var er=c(6422);function nr(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165\u90ae\u7bb1\u5730\u5740\uff01 "),t.BQk())}function ir(i,n){1&i&&(t.ynx(0),t._uU(1," \u90ae\u7bb1\u5730\u5740\u65e0\u6548! "),t.BQk())}function or(i,n){if(1&i&&(t.YNc(0,nr,2,0,"ng-container",17),t.YNc(1,ir,2,0,"ng-container",17)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("email"))}}function ar(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165\u6388\u6743\u7801\uff01 "),t.BQk())}function rr(i,n){1&i&&t.YNc(0,ar,2,0,"ng-container",17),2&i&&t.Q6J("ngIf",n.$implicit.hasError("required"))}function sr(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 SMTP \u4e3b\u673a\uff01 "),t.BQk())}function lr(i,n){1&i&&t.YNc(0,sr,2,0,"ng-container",17),2&i&&t.Q6J("ngIf",n.$implicit.hasError("required"))}function cr(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 SMTP \u7aef\u53e3\uff01 "),t.BQk())}function gr(i,n){1&i&&(t.ynx(0),t._uU(1," SMTP \u7aef\u53e3\u65e0\u6548\uff01 "),t.BQk())}function ur(i,n){if(1&i&&(t.YNc(0,cr,2,0,"ng-container",17),t.YNc(1,gr,2,0,"ng-container",17)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}function mr(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165\u90ae\u7bb1\u5730\u5740\uff01 "),t.BQk())}function pr(i,n){1&i&&(t.ynx(0),t._uU(1," \u90ae\u7bb1\u5730\u5740\u65e0\u6548! "),t.BQk())}function dr(i,n){if(1&i&&(t.YNc(0,mr,2,0,"ng-container",17),t.YNc(1,pr,2,0,"ng-container",17)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("email"))}}class Vt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({srcAddr:["",[r.kI.required,r.kI.email]],dstAddr:["",[r.kI.required,r.kI.email]],authCode:["",[r.kI.required]],smtpHost:["",[r.kI.required]],smtpPort:["",[r.kI.required,r.kI.pattern(/\d+/)]]})}get srcAddrControl(){return this.settingsForm.get("srcAddr")}get dstAddrControl(){return this.settingsForm.get("dstAddr")}get authCodeControl(){return this.settingsForm.get("authCode")}get smtpHostControl(){return this.settingsForm.get("smtpHost")}get smtpPortControl(){return this.settingsForm.get("smtpPort")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("emailNotification",this.settings,this.settingsForm.valueChanges.pipe((0,at.Sc)(this.settingsForm),(0,T.U)(n=>(0,er.Z)(n,(e,o,a)=>{o="smtpPort"===a?parseInt(o):o,Reflect.set(e,a,o)},{})))).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}Vt.\u0275fac=function(n){return new(n||Vt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},Vt.\u0275cmp=t.Xpm({type:Vt,selectors:[["app-email-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:36,vars:16,consts:[["nz-form","",3,"formGroup"],[1,"setting-item"],["nzFor","srcAddr","nzNoColon","","nzRequired","",1,"setting-label"],["nzHasFeedback","",1,"setting-control","input",3,"nzErrorTip","nzWarningTip","nzValidateStatus"],["id","srcAddr","type","email","placeholder","\u53d1\u9001\u901a\u77e5\u7684\u90ae\u7bb1\u5730\u5740","required","","nz-input","","formControlName","srcAddr"],["emailErrorTip",""],["nzFor","authCode","nzNoColon","","nzRequired","",1,"setting-label"],["id","authCode","type","text","placeholder","\u53d1\u9001\u90ae\u7bb1\u7684 SMTP \u6388\u6743\u7801","required","","nz-input","","formControlName","authCode"],["authCodeErrorTip",""],["nzFor","smtpHost","nzNoColon","","nzRequired","",1,"setting-label"],["id","smtpHost","type","text","placeholder","\u53d1\u9001\u90ae\u7bb1\u7684 SMTP \u4e3b\u673a\uff0c\u4f8b\u5982\uff1asmtp.163.com \u3002","required","","nz-input","","formControlName","smtpHost"],["smtpHostErrorTip",""],["nzFor","smtpPort","nzNoColon","","nzRequired","",1,"setting-label"],["id","smtpPort","type","text","pattern","\\d+","placeholder","\u53d1\u9001\u90ae\u7bb1\u7684 SMTP \u4e3b\u673a\u7aef\u53e3\uff0c\u901a\u5e38\u4e3a 465 \u3002","required","","nz-input","","formControlName","smtpPort"],["smtpPortErrorTip",""],["nzFor","dstAddr","nzNoColon","","nzRequired","",1,"setting-label"],["id","dstAddr","type","email","placeholder","\u63a5\u6536\u901a\u77e5\u7684\u90ae\u7bb1\u5730\u5740\uff0c\u53ef\u4ee5\u548c\u53d1\u9001\u90ae\u7bb1\u76f8\u540c\u5b9e\u73b0\u81ea\u53d1\u81ea\u6536\u3002","required","","nz-input","","formControlName","dstAddr"],[4,"ngIf"]],template:function(n,e){if(1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"\u53d1\u9001\u90ae\u7bb1"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"input",4),t.YNc(6,or,2,2,"ng-template",null,5,t.W1O),t.qZA()(),t.TgZ(8,"nz-form-item",1)(9,"nz-form-label",6),t._uU(10,"\u6388\u6743\u7801"),t.qZA(),t.TgZ(11,"nz-form-control",3),t._UZ(12,"input",7),t.YNc(13,rr,1,1,"ng-template",null,8,t.W1O),t.qZA()(),t.TgZ(15,"nz-form-item",1)(16,"nz-form-label",9),t._uU(17,"SMTP \u4e3b\u673a"),t.qZA(),t.TgZ(18,"nz-form-control",3),t._UZ(19,"input",10),t.YNc(20,lr,1,1,"ng-template",null,11,t.W1O),t.qZA()(),t.TgZ(22,"nz-form-item",1)(23,"nz-form-label",12),t._uU(24,"SMTP \u7aef\u53e3"),t.qZA(),t.TgZ(25,"nz-form-control",3),t._UZ(26,"input",13),t.YNc(27,ur,2,2,"ng-template",null,14,t.W1O),t.qZA()(),t.TgZ(29,"nz-form-item",1)(30,"nz-form-label",15),t._uU(31,"\u63a5\u6536\u90ae\u7bb1"),t.qZA(),t.TgZ(32,"nz-form-control",3),t._UZ(33,"input",16),t.YNc(34,dr,2,2,"ng-template",null,5,t.W1O),t.qZA()()()),2&n){const o=t.MAs(7),a=t.MAs(14),s=t.MAs(21),g=t.MAs(28);t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzErrorTip",o)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.srcAddrControl.valid&&!e.syncStatus.srcAddr?"warning":e.srcAddrControl),t.xp6(7),t.Q6J("nzErrorTip",a)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.authCodeControl.valid&&!e.syncStatus.authCode?"warning":e.authCodeControl),t.xp6(7),t.Q6J("nzErrorTip",s)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.smtpHostControl.valid&&!e.syncStatus.smtpHost?"warning":e.smtpHostControl),t.xp6(7),t.Q6J("nzErrorTip",g)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.smtpPortControl.valid&&!e.syncStatus.smtpPort?"warning":e.smtpPortControl),t.xp6(7),t.Q6J("nzErrorTip",o)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.dstAddrControl.valid&&!e.syncStatus.dstAddr?"warning":e.dstAddrControl)}},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.c5,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,O.Zp],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}.setting-label[_ngcontent-%COMP%]{max-width:6em!important;width:6em!important}"],changeDetection:0});class B{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({enabled:[""]})}get enabledControl(){return this.settingsForm.get("enabled")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings(this.keyOfSettings,this.settings,this.settingsForm.valueChanges).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}B.\u0275fac=function(n){return new(n||B)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},B.\u0275cmp=t.Xpm({type:B,selectors:[["app-notifier-settings"]],inputs:{settings:"settings",keyOfSettings:"keyOfSettings"},features:[t.TTD],decls:6,vars:3,consts:[["nz-form","",3,"formGroup"],["appSwitchActionable","",1,"setting-item"],["nzNoColon","",1,"setting-label"],[1,"setting-control","switch",3,"nzWarningTip","nzValidateStatus"],["formControlName","enabled"]],template:function(n,e){1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"\u5141\u8bb8\u901a\u77e5"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"nz-switch",4),t.qZA()()()),2&n&&(t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.enabled?e.enabledControl:"warning"))},dependencies:[r._Y,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,U.i,y],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class A{constructor(n,e,o){this.changeDetector=n,this.message=e,this.settingService=o}ngOnInit(){switch(this.keyOfSettings){case"emailNotification":this.messageTypes=["text","html"];break;case"serverchanNotification":this.messageTypes=["markdown"];break;case"pushdeerNotification":this.messageTypes=["markdown","text"];break;case"pushplusNotification":this.messageTypes=["markdown","text","html"];break;case"telegramNotification":this.messageTypes=["markdown","html"]}}ngOnChanges(n){this.updateCommonSettings()}changeBeganMessageTemplateSettings(n){this.changeMessageTemplateSettings({beganMessageType:n.messageType,beganMessageTitle:n.messageTitle,beganMessageContent:n.messageContent}).subscribe()}changeEndedMessageTemplateSettings(n){this.changeMessageTemplateSettings({endedMessageType:n.messageType,endedMessageTitle:n.messageTitle,endedMessageContent:n.messageContent}).subscribe()}changeSpaceMessageTemplateSettings(n){this.changeMessageTemplateSettings({spaceMessageType:n.messageType,spaceMessageTitle:n.messageTitle,spaceMessageContent:n.messageContent}).subscribe()}changeErrorMessageTemplateSettings(n){this.changeMessageTemplateSettings({errorMessageType:n.messageType,errorMessageTitle:n.messageTitle,errorMessageContent:n.messageContent}).subscribe()}changeMessageTemplateSettings(n){return this.settingService.changeSettings({[this.keyOfSettings]:n}).pipe((0,F.X)(3,300),(0,re.b)(e=>{this.message.success("\u4fee\u6539\u6d88\u606f\u6a21\u677f\u8bbe\u7f6e\u6210\u529f"),this.settings={...this.settings,...e[this.keyOfSettings]},this.updateCommonSettings(),this.changeDetector.markForCheck()},e=>{this.message.error(`\u4fee\u6539\u6d88\u606f\u6a21\u677f\u8bbe\u7f6e\u51fa\u9519: ${e.message}`)}))}updateCommonSettings(){this.beganMessageTemplateSettings={messageType:this.settings.beganMessageType,messageTitle:this.settings.beganMessageTitle,messageContent:this.settings.beganMessageContent},this.endedMessageTemplateSettings={messageType:this.settings.endedMessageType,messageTitle:this.settings.endedMessageTitle,messageContent:this.settings.endedMessageContent},this.spaceMessageTemplateSettings={messageType:this.settings.spaceMessageType,messageTitle:this.settings.spaceMessageTitle,messageContent:this.settings.spaceMessageContent},this.errorMessageTemplateSettings={messageType:this.settings.errorMessageType,messageTitle:this.settings.errorMessageTitle,messageContent:this.settings.errorMessageContent}}}function hr(i,n){if(1&i&&(t.TgZ(0,"app-page-section"),t._UZ(1,"app-notifier-settings",2),t.qZA(),t.TgZ(2,"app-page-section",3),t._UZ(3,"app-email-settings",4),t.qZA(),t.TgZ(4,"app-page-section",5),t._UZ(5,"app-event-settings",2),t.qZA(),t.TgZ(6,"app-page-section",6),t._UZ(7,"app-message-template-settings",2),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("settings",e.notifierSettings),t.xp6(2),t.Q6J("settings",e.emailSettings),t.xp6(2),t.Q6J("settings",e.notificationSettings),t.xp6(2),t.Q6J("settings",e.messageTemplateSettings)}}A.\u0275fac=function(n){return new(n||A)(t.Y36(t.sBO),t.Y36(se.dD),t.Y36(S.R))},A.\u0275cmp=t.Xpm({type:A,selectors:[["app-message-template-settings"]],inputs:{settings:"settings",keyOfSettings:"keyOfSettings"},features:[t.TTD],decls:20,vars:12,consts:[[1,"setting-item","actionable",3,"click"],[1,"setting-label"],[3,"title","value","messageTypes","confirm"],["beganMessageTemplateEditDialog",""],["endedMessageTemplateEditDialog",""],["errorMessageTemplateEditDialog",""],["spaceMessageTemplateEditDialog",""]],template:function(n,e){if(1&n){const o=t.EpF();t.TgZ(0,"a",0),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(4);return t.KtG(s.open())}),t.TgZ(1,"span",1),t._uU(2,"\u5f00\u64ad\u6d88\u606f\u6a21\u677f"),t.qZA()(),t.TgZ(3,"app-message-template-edit-dialog",2,3),t.NdJ("confirm",function(s){return e.changeBeganMessageTemplateSettings(s)}),t.qZA(),t.TgZ(5,"a",0),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(9);return t.KtG(s.open())}),t.TgZ(6,"span",1),t._uU(7,"\u4e0b\u64ad\u6d88\u606f\u6a21\u677f"),t.qZA()(),t.TgZ(8,"app-message-template-edit-dialog",2,4),t.NdJ("confirm",function(s){return e.changeEndedMessageTemplateSettings(s)}),t.qZA(),t.TgZ(10,"a",0),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(14);return t.KtG(s.open())}),t.TgZ(11,"span",1),t._uU(12,"\u5f02\u5e38\u6d88\u606f\u6a21\u677f"),t.qZA()(),t.TgZ(13,"app-message-template-edit-dialog",2,5),t.NdJ("confirm",function(s){return e.changeErrorMessageTemplateSettings(s)}),t.qZA(),t.TgZ(15,"a",0),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(19);return t.KtG(s.open())}),t.TgZ(16,"span",1),t._uU(17,"\u7a7a\u95f4\u4e0d\u8db3\u6d88\u606f\u6a21\u677f"),t.qZA()(),t.TgZ(18,"app-message-template-edit-dialog",2,6),t.NdJ("confirm",function(s){return e.changeSpaceMessageTemplateSettings(s)}),t.qZA()}2&n&&(t.xp6(3),t.Q6J("title","\u4fee\u6539\u5f00\u64ad\u6d88\u606f\u6a21\u677f")("value",e.beganMessageTemplateSettings)("messageTypes",e.messageTypes),t.xp6(5),t.Q6J("title","\u4fee\u6539\u4e0b\u64ad\u6d88\u606f\u6a21\u677f")("value",e.endedMessageTemplateSettings)("messageTypes",e.messageTypes),t.xp6(5),t.Q6J("title","\u4fee\u6539\u5f02\u5e38\u6d88\u606f\u6a21\u677f")("value",e.errorMessageTemplateSettings)("messageTypes",e.messageTypes),t.xp6(5),t.Q6J("title","\u4fee\u6539\u7a7a\u95f4\u4e0d\u8db3\u6d88\u606f\u6a21\u677f")("value",e.spaceMessageTemplateSettings)("messageTypes",e.messageTypes))},styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Lt{constructor(n,e){this.changeDetector=n,this.route=e}ngOnInit(){this.route.data.subscribe(n=>{const e=n.settings;this.emailSettings=f(e,C.gP),this.notifierSettings=f(e,C._1),this.notificationSettings=f(e,C.X),this.messageTemplateSettings=f(e,C.tI),this.changeDetector.markForCheck()})}}function _r(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 sendkey\uff01 "),t.BQk())}function fr(i,n){1&i&&(t.ynx(0),t._uU(1," sendkey \u65e0\u6548 "),t.BQk())}function Cr(i,n){if(1&i&&(t.YNc(0,_r,2,0,"ng-container",6),t.YNc(1,fr,2,0,"ng-container",6)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}Lt.\u0275fac=function(n){return new(n||Lt)(t.Y36(t.sBO),t.Y36(v.gz))},Lt.\u0275cmp=t.Xpm({type:Lt,selectors:[["app-email-notification-settings"]],decls:2,vars:0,consts:[["pageTitle","\u90ae\u4ef6\u901a\u77e5"],["appSubPageContent",""],["keyOfSettings","emailNotification",3,"settings"],["name","\u90ae\u7bb1"],[3,"settings"],["name","\u4e8b\u4ef6"],["name","\u6d88\u606f"]],template:function(n,e){1&n&&(t.TgZ(0,"app-sub-page",0),t.YNc(1,hr,8,4,"ng-template",1),t.qZA())},dependencies:[rt.Y,st.q,q.g,N,Vt,B,A],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class qt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({sendkey:["",[r.kI.required,r.kI.pattern(/^[a-zA-Z\d]+$/)]]})}get sendkeyControl(){return this.settingsForm.get("sendkey")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("serverchanNotification",this.settings,this.settingsForm.valueChanges.pipe((0,at.Sc)(this.settingsForm))).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}function vr(i,n){if(1&i&&(t.TgZ(0,"app-page-section"),t._UZ(1,"app-notifier-settings",2),t.qZA(),t.TgZ(2,"app-page-section",3),t._UZ(3,"app-serverchan-settings",4),t.qZA(),t.TgZ(4,"app-page-section",5),t._UZ(5,"app-event-settings",2),t.qZA(),t.TgZ(6,"app-page-section",6),t._UZ(7,"app-message-template-settings",2),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("settings",e.notifierSettings),t.xp6(2),t.Q6J("settings",e.serverchanSettings),t.xp6(2),t.Q6J("settings",e.notificationSettings),t.xp6(2),t.Q6J("settings",e.messageTemplateSettings)}}qt.\u0275fac=function(n){return new(n||qt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},qt.\u0275cmp=t.Xpm({type:qt,selectors:[["app-serverchan-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:8,vars:4,consts:[["nz-form","",3,"formGroup"],[1,"setting-item"],["nzFor","sendkey","nzNoColon","","nzRequired","",1,"setting-label"],["nzHasFeedback","",1,"setting-control","input",3,"nzErrorTip","nzWarningTip","nzValidateStatus"],["id","sendkey","type","text","required","","nz-input","","formControlName","sendkey"],["sendkeyErrorTip",""],[4,"ngIf"]],template:function(n,e){if(1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"sendkey"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"input",4),t.YNc(6,Cr,2,2,"ng-template",null,5,t.W1O),t.qZA()()()),2&n){const o=t.MAs(7);t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzErrorTip",o)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.sendkeyControl.valid&&!e.syncStatus.sendkey?"warning":e.sendkeyControl)}},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,O.Zp],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}.setting-label[_ngcontent-%COMP%]{max-width:5em!important;width:5em!important}"],changeDetection:0});class Yt{constructor(n,e){this.changeDetector=n,this.route=e}ngOnInit(){this.route.data.subscribe(n=>{const e=n.settings;this.serverchanSettings=f(e,C.gq),this.notifierSettings=f(e,C._1),this.notificationSettings=f(e,C.X),this.messageTemplateSettings=f(e,C.tI),this.changeDetector.markForCheck()})}}function zr(i,n){1&i&&(t.ynx(0),t._uU(1," server \u65e0\u6548 "),t.BQk())}function xr(i,n){1&i&&t.YNc(0,zr,2,0,"ng-container",9),2&i&&t.Q6J("ngIf",n.$implicit.hasError("pattern"))}function Or(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 pushkey\uff01 "),t.BQk())}function Mr(i,n){1&i&&(t.ynx(0),t._uU(1," pushkey \u65e0\u6548 "),t.BQk())}function br(i,n){if(1&i&&(t.YNc(0,Or,2,0,"ng-container",9),t.YNc(1,Mr,2,0,"ng-container",9)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}Yt.\u0275fac=function(n){return new(n||Yt)(t.Y36(t.sBO),t.Y36(v.gz))},Yt.\u0275cmp=t.Xpm({type:Yt,selectors:[["app-serverchan-notification-settings"]],decls:2,vars:0,consts:[["pageTitle","ServerChan \u901a\u77e5"],["appSubPageContent",""],["keyOfSettings","serverchanNotification",3,"settings"],["name","ServerChan"],[3,"settings"],["name","\u4e8b\u4ef6"],["name","\u6d88\u606f"]],template:function(n,e){1&n&&(t.TgZ(0,"app-sub-page",0),t.YNc(1,vr,8,4,"ng-template",1),t.qZA())},dependencies:[rt.Y,st.q,q.g,N,qt,B,A],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Wt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({server:["",[r.kI.pattern(/^https?:\/\/.+/)]],pushkey:["",[r.kI.required,r.kI.pattern(/^PDU\d+T[a-zA-Z\d]{32}(,PDU\d+T[a-zA-Z\d]{32}){0,99}$/)]]})}get serverControl(){return this.settingsForm.get("server")}get pushkeyControl(){return this.settingsForm.get("pushkey")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),console.log(this.settings),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("pushdeerNotification",this.settings,this.settingsForm.valueChanges.pipe((0,at.Sc)(this.settingsForm))).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}function Pr(i,n){if(1&i&&(t.TgZ(0,"app-page-section"),t._UZ(1,"app-notifier-settings",2),t.qZA(),t.TgZ(2,"app-page-section",3),t._UZ(3,"app-pushdeer-settings",4),t.qZA(),t.TgZ(4,"app-page-section",5),t._UZ(5,"app-event-settings",2),t.qZA(),t.TgZ(6,"app-page-section",6),t._UZ(7,"app-message-template-settings",2),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("settings",e.notifierSettings),t.xp6(2),t.Q6J("settings",e.pushdeerSettings),t.xp6(2),t.Q6J("settings",e.notificationSettings),t.xp6(2),t.Q6J("settings",e.messageTemplateSettings)}}Wt.\u0275fac=function(n){return new(n||Wt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},Wt.\u0275cmp=t.Xpm({type:Wt,selectors:[["app-pushdeer-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:15,vars:7,consts:[["nz-form","",3,"formGroup"],[1,"setting-item"],["nzFor","server","nzNoColon","",1,"setting-label","align-required"],["nzHasFeedback","",1,"setting-control","input",3,"nzErrorTip","nzWarningTip","nzValidateStatus"],["id","server","type","url","placeholder","\u9ed8\u8ba4\u4e3a\u5b98\u65b9\u670d\u52a1\u5668 https://api2.pushdeer.com","nz-input","","formControlName","server"],["serverErrorTip",""],["nzFor","pushkey","nzNoColon","","nzRequired","",1,"setting-label"],["id","pushkey","type","text","placeholder","\u591a\u4e2a key \u7528 , \u9694\u5f00\uff0c\u5728\u7ebf\u7248\u6700\u591a 10 \u4e2a\uff0c\u81ea\u67b6\u7248\u9ed8\u8ba4\u6700\u591a 100 \u4e2a\u3002","required","","nz-input","","formControlName","pushkey"],["pushkeyErrorTip",""],[4,"ngIf"]],template:function(n,e){if(1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"server"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"input",4),t.YNc(6,xr,1,1,"ng-template",null,5,t.W1O),t.qZA()(),t.TgZ(8,"nz-form-item",1)(9,"nz-form-label",6),t._uU(10,"pushkey"),t.qZA(),t.TgZ(11,"nz-form-control",3),t._UZ(12,"input",7),t.YNc(13,br,2,2,"ng-template",null,8,t.W1O),t.qZA()()()),2&n){const o=t.MAs(7),a=t.MAs(14);t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzErrorTip",o)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.serverControl.valid&&!e.syncStatus.server?"warning":e.serverControl),t.xp6(7),t.Q6J("nzErrorTip",a)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.pushkeyControl.valid&&!e.syncStatus.pushkey?"warning":e.pushkeyControl)}},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,O.Zp],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}.setting-label[_ngcontent-%COMP%]{max-width:5em!important;width:5em!important}"],changeDetection:0});class Rt{constructor(n,e){this.changeDetector=n,this.route=e}ngOnInit(){this.route.data.subscribe(n=>{const e=n.settings;this.pushdeerSettings=f(e,C.jK),this.notifierSettings=f(e,C._1),this.notificationSettings=f(e,C.X),this.messageTemplateSettings=f(e,C.tI),this.changeDetector.markForCheck()})}}function Tr(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 token\uff01 "),t.BQk())}function wr(i,n){1&i&&(t.ynx(0),t._uU(1," token \u65e0\u6548 "),t.BQk())}function Fr(i,n){if(1&i&&(t.YNc(0,Tr,2,0,"ng-container",9),t.YNc(1,wr,2,0,"ng-container",9)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}Rt.\u0275fac=function(n){return new(n||Rt)(t.Y36(t.sBO),t.Y36(v.gz))},Rt.\u0275cmp=t.Xpm({type:Rt,selectors:[["app-pushdeer-notification-settings"]],decls:2,vars:0,consts:[["pageTitle","PushDeer \u901a\u77e5"],["appSubPageContent",""],["keyOfSettings","pushdeerNotification",3,"settings"],["name","PushDeer"],[3,"settings"],["name","\u4e8b\u4ef6"],["name","\u6d88\u606f"]],template:function(n,e){1&n&&(t.TgZ(0,"app-sub-page",0),t.YNc(1,Pr,8,4,"ng-template",1),t.qZA())},dependencies:[rt.Y,st.q,q.g,N,Wt,B,A],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Gt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({token:["",[r.kI.required,r.kI.pattern(/^[a-z\d]{32}$/)]],topic:[""]})}get tokenControl(){return this.settingsForm.get("token")}get topicControl(){return this.settingsForm.get("topic")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("pushplusNotification",this.settings,this.settingsForm.valueChanges.pipe((0,at.Sc)(this.settingsForm))).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}function Sr(i,n){if(1&i&&(t.TgZ(0,"app-page-section"),t._UZ(1,"app-notifier-settings",2),t.qZA(),t.TgZ(2,"app-page-section",3),t._UZ(3,"app-pushplus-settings",4),t.qZA(),t.TgZ(4,"app-page-section",5),t._UZ(5,"app-event-settings",2),t.qZA(),t.TgZ(6,"app-page-section",6),t._UZ(7,"app-message-template-settings",2),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("settings",e.notifierSettings),t.xp6(2),t.Q6J("settings",e.pushplusSettings),t.xp6(2),t.Q6J("settings",e.notificationSettings),t.xp6(2),t.Q6J("settings",e.messageTemplateSettings)}}Gt.\u0275fac=function(n){return new(n||Gt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},Gt.\u0275cmp=t.Xpm({type:Gt,selectors:[["app-pushplus-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:13,vars:6,consts:[["nz-form","",3,"formGroup"],[1,"setting-item"],["nzFor","token","nzNoColon","","nzRequired","",1,"setting-label","required"],["nzHasFeedback","",1,"setting-control","input",3,"nzErrorTip","nzWarningTip","nzValidateStatus"],["id","token","type","text","required","","nz-input","","formControlName","token"],["tokenErrorTip",""],["nzFor","topic","nzNoColon","",1,"setting-label","align-required"],[1,"setting-control","input",3,"nzWarningTip","nzValidateStatus"],["id","topic","type","text","nz-input","","formControlName","topic"],[4,"ngIf"]],template:function(n,e){if(1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"token"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"input",4),t.YNc(6,Fr,2,2,"ng-template",null,5,t.W1O),t.qZA()(),t.TgZ(8,"nz-form-item",1)(9,"nz-form-label",6),t._uU(10,"topic"),t.qZA(),t.TgZ(11,"nz-form-control",7),t._UZ(12,"input",8),t.qZA()()()),2&n){const o=t.MAs(7);t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzErrorTip",o)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.tokenControl.valid&&!e.syncStatus.token?"warning":e.tokenControl),t.xp6(7),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.topicControl.valid&&!e.syncStatus.topic?"warning":e.topicControl)}},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,O.Zp],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}.setting-label[_ngcontent-%COMP%]{max-width:4em!important;width:4em!important}"],changeDetection:0});class Ht{constructor(n,e){this.changeDetector=n,this.route=e}ngOnInit(){this.route.data.subscribe(n=>{const e=n.settings;this.pushplusSettings=f(e,C.q1),this.notifierSettings=f(e,C._1),this.notificationSettings=f(e,C.X),this.messageTemplateSettings=f(e,C.tI),this.changeDetector.markForCheck()})}}function yr(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 token\uff01 "),t.BQk())}function Ar(i,n){1&i&&(t.ynx(0),t._uU(1," token \u65e0\u6548 "),t.BQk())}function kr(i,n){if(1&i&&(t.YNc(0,yr,2,0,"ng-container",12),t.YNc(1,Ar,2,0,"ng-container",12)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}function Dr(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 chatid\uff01 "),t.BQk())}function Er(i,n){1&i&&(t.ynx(0),t._uU(1," chatid \u65e0\u6548 "),t.BQk())}function Zr(i,n){if(1&i&&(t.YNc(0,Dr,2,0,"ng-container",12),t.YNc(1,Er,2,0,"ng-container",12)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}function Nr(i,n){1&i&&(t.ynx(0),t._uU(1," server \u65e0\u6548 "),t.BQk())}function Br(i,n){1&i&&t.YNc(0,Nr,2,0,"ng-container",12),2&i&&t.Q6J("ngIf",n.$implicit.hasError("pattern"))}Ht.\u0275fac=function(n){return new(n||Ht)(t.Y36(t.sBO),t.Y36(v.gz))},Ht.\u0275cmp=t.Xpm({type:Ht,selectors:[["app-pushplus-notification-settings"]],decls:2,vars:0,consts:[["pageTitle","pushplus \u901a\u77e5"],["appSubPageContent",""],["keyOfSettings","pushplusNotification",3,"settings"],["name","pushplus"],[3,"settings"],["name","\u4e8b\u4ef6"],["name","\u6d88\u606f"]],template:function(n,e){1&n&&(t.TgZ(0,"app-sub-page",0),t.YNc(1,Sr,8,4,"ng-template",1),t.qZA())},dependencies:[rt.Y,st.q,q.g,N,Gt,B,A],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class $t{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({token:["",[r.kI.required,r.kI.pattern(/^[0-9]{8,10}:[a-zA-Z0-9_-]{35}$/)]],chatid:["",[r.kI.required,r.kI.pattern(/^(-|[0-9]){0,}$/)]],server:["",[r.kI.pattern(/^https?:\/\/[a-zA-Z0-9-_.]+(:[0-9]+)?/)]]})}get tokenControl(){return this.settingsForm.get("token")}get chatidControl(){return this.settingsForm.get("chatid")}get serverControl(){return this.settingsForm.get("server")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),console.log(this.settings),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("telegramNotification",this.settings,this.settingsForm.valueChanges.pipe((0,at.Sc)(this.settingsForm))).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}function Ur(i,n){if(1&i&&(t.TgZ(0,"app-page-section"),t._UZ(1,"app-notifier-settings",2),t.qZA(),t.TgZ(2,"app-page-section",3),t._UZ(3,"app-telegram-settings",4),t.qZA(),t.TgZ(4,"app-page-section",5),t._UZ(5,"app-event-settings",2),t.qZA(),t.TgZ(6,"app-page-section",6),t._UZ(7,"app-message-template-settings",2),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("settings",e.notifierSettings),t.xp6(2),t.Q6J("settings",e.telegramSettings),t.xp6(2),t.Q6J("settings",e.notificationSettings),t.xp6(2),t.Q6J("settings",e.messageTemplateSettings)}}$t.\u0275fac=function(n){return new(n||$t)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},$t.\u0275cmp=t.Xpm({type:$t,selectors:[["app-telegram-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:22,vars:10,consts:[["nz-form","",3,"formGroup"],[1,"setting-item"],["nzFor","token","nzNoColon","","nzRequired","",1,"setting-label","required"],["nzHasFeedback","",1,"setting-control","input",3,"nzErrorTip","nzWarningTip","nzValidateStatus"],["id","token","type","text","required","","nz-input","","formControlName","token"],["tokenErrorTip",""],["nzFor","chatid","nzNoColon","","nzRequired","",1,"setting-label"],["id","chatid","type","text","required","","nz-input","","formControlName","chatid"],["chatidErrorTip",""],["nzFor","server","nzNoColon","",1,"setting-label","align-required"],["id","server","type","url","placeholder","\u9ed8\u8ba4\u4e3a\u5b98\u65b9\u63a5\u53e3 https://api.telegram.org","nz-input","","formControlName","server"],["serverErrorTip",""],[4,"ngIf"]],template:function(n,e){if(1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"token"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"input",4),t.YNc(6,kr,2,2,"ng-template",null,5,t.W1O),t.qZA()(),t.TgZ(8,"nz-form-item",1)(9,"nz-form-label",6),t._uU(10,"chatid"),t.qZA(),t.TgZ(11,"nz-form-control",3),t._UZ(12,"input",7),t.YNc(13,Zr,2,2,"ng-template",null,8,t.W1O),t.qZA()(),t.TgZ(15,"nz-form-item",1)(16,"nz-form-label",9),t._uU(17,"server"),t.qZA(),t.TgZ(18,"nz-form-control",3),t._UZ(19,"input",10),t.YNc(20,Br,1,1,"ng-template",null,11,t.W1O),t.qZA()()()),2&n){const o=t.MAs(7),a=t.MAs(14),s=t.MAs(21);t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzErrorTip",o)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.tokenControl.valid&&!e.syncStatus.token?"warning":e.tokenControl),t.xp6(7),t.Q6J("nzErrorTip",a)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.chatidControl.valid&&!e.syncStatus.chatid?"warning":e.chatidControl),t.xp6(7),t.Q6J("nzErrorTip",s)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.serverControl.valid&&!e.syncStatus.server?"warning":e.serverControl)}},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,O.Zp],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}.setting-label[_ngcontent-%COMP%]{max-width:4em!important;width:4em!important}"],changeDetection:0});class Kt{constructor(n,e){this.changeDetector=n,this.route=e}ngOnInit(){this.route.data.subscribe(n=>{const e=n.settings;this.telegramSettings=f(e,C.wA),this.notifierSettings=f(e,C._1),this.notificationSettings=f(e,C.X),this.messageTemplateSettings=f(e,C.tI),this.changeDetector.markForCheck()})}}function Ir(i,n){1&i&&(t.ynx(0),t._uU(1," server \u65e0\u6548 "),t.BQk())}function Jr(i,n){1&i&&t.YNc(0,Ir,2,0,"ng-container",9),2&i&&t.Q6J("ngIf",n.$implicit.hasError("pattern"))}function Qr(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 pushkey\uff01 "),t.BQk())}function Vr(i,n){1&i&&(t.ynx(0),t._uU(1," pushkey \u65e0\u6548 "),t.BQk())}function Lr(i,n){if(1&i&&(t.YNc(0,Qr,2,0,"ng-container",9),t.YNc(1,Vr,2,0,"ng-container",9)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}Kt.\u0275fac=function(n){return new(n||Kt)(t.Y36(t.sBO),t.Y36(v.gz))},Kt.\u0275cmp=t.Xpm({type:Kt,selectors:[["app-telegram-notification-settings"]],decls:2,vars:0,consts:[["pageTitle","telegram \u901a\u77e5"],["appSubPageContent",""],["keyOfSettings","telegramNotification",3,"settings"],["name","telegram"],[3,"settings"],["name","\u4e8b\u4ef6"],["name","\u6d88\u606f"]],template:function(n,e){1&n&&(t.TgZ(0,"app-sub-page",0),t.YNc(1,Ur,8,4,"ng-template",1),t.qZA())},dependencies:[rt.Y,st.q,q.g,N,$t,B,A],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Xt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({server:["",[r.kI.pattern(/^https?:\/\/.+/)]],pushkey:["",[r.kI.required,r.kI.pattern(/^[a-zA-Z\d]+$/)]]})}get serverControl(){return this.settingsForm.get("server")}get pushkeyControl(){return this.settingsForm.get("pushkey")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),console.log(this.settings),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("barkNotification",this.settings,this.settingsForm.valueChanges.pipe((0,at.Sc)(this.settingsForm))).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}function qr(i,n){if(1&i&&(t.TgZ(0,"app-page-section"),t._UZ(1,"app-notifier-settings",2),t.qZA(),t.TgZ(2,"app-page-section",3),t._UZ(3,"app-bark-settings",4),t.qZA(),t.TgZ(4,"app-page-section",5),t._UZ(5,"app-event-settings",2),t.qZA(),t.TgZ(6,"app-page-section",6),t._UZ(7,"app-message-template-settings",2),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("settings",e.notifierSettings),t.xp6(2),t.Q6J("settings",e.barkSettings),t.xp6(2),t.Q6J("settings",e.notificationSettings),t.xp6(2),t.Q6J("settings",e.messageTemplateSettings)}}Xt.\u0275fac=function(n){return new(n||Xt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},Xt.\u0275cmp=t.Xpm({type:Xt,selectors:[["app-bark-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:15,vars:7,consts:[["nz-form","",3,"formGroup"],[1,"setting-item"],["nzFor","server","nzNoColon","",1,"setting-label","align-required"],["nzHasFeedback","",1,"setting-control","input",3,"nzErrorTip","nzWarningTip","nzValidateStatus"],["id","server","type","url","placeholder","\u9ed8\u8ba4\u4e3a\u5b98\u65b9\u670d\u52a1\u5668 https://api.day.app","nz-input","","formControlName","server"],["serverErrorTip",""],["nzFor","pushkey","nzNoColon","","nzRequired","",1,"setting-label"],["id","pushkey","type","text","placeholder","","required","","nz-input","","formControlName","pushkey"],["pushkeyErrorTip",""],[4,"ngIf"]],template:function(n,e){if(1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"server"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"input",4),t.YNc(6,Jr,1,1,"ng-template",null,5,t.W1O),t.qZA()(),t.TgZ(8,"nz-form-item",1)(9,"nz-form-label",6),t._uU(10,"pushkey"),t.qZA(),t.TgZ(11,"nz-form-control",3),t._UZ(12,"input",7),t.YNc(13,Lr,2,2,"ng-template",null,8,t.W1O),t.qZA()()()),2&n){const o=t.MAs(7),a=t.MAs(14);t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzErrorTip",o)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.serverControl.valid&&!e.syncStatus.server?"warning":e.serverControl),t.xp6(7),t.Q6J("nzErrorTip",a)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.pushkeyControl.valid&&!e.syncStatus.pushkey?"warning":e.pushkeyControl)}},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,O.Zp],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}.setting-label[_ngcontent-%COMP%]{max-width:5em!important;width:5em!important}"],changeDetection:0});class jt{constructor(n,e){this.changeDetector=n,this.route=e}ngOnInit(){this.route.data.subscribe(n=>{const e=n.settings;this.barkSettings=f(e,C.LV),this.notifierSettings=f(e,C._1),this.notificationSettings=f(e,C.X),this.messageTemplateSettings=f(e,C.tI),this.changeDetector.markForCheck()})}}function Yr(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 url\uff01 "),t.BQk())}function Wr(i,n){1&i&&(t.ynx(0),t._uU(1," url \u65e0\u6548\uff01 "),t.BQk())}function Rr(i,n){if(1&i&&(t.YNc(0,Yr,2,0,"ng-container",29),t.YNc(1,Wr,2,0,"ng-container",29)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}function Gr(i,n){if(1&i){const e=t.EpF();t.ynx(0),t.TgZ(1,"form",2)(2,"nz-form-item",3)(3,"nz-form-label",4),t._uU(4,"URL"),t.qZA(),t.TgZ(5,"nz-form-control",5),t._UZ(6,"input",6),t.YNc(7,Rr,2,2,"ng-template",null,7,t.W1O),t.qZA()(),t.TgZ(9,"div",8)(10,"h2"),t._uU(11,"\u4e8b\u4ef6"),t.qZA(),t.TgZ(12,"nz-form-item",3)(13,"nz-form-control",9)(14,"label",10),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.setAllChecked(a))}),t._uU(15,"\u5168\u9009"),t.qZA()()(),t.TgZ(16,"nz-form-item",3)(17,"nz-form-control",11)(18,"label",12),t._uU(19,"\u5f00\u64ad"),t.qZA()()(),t.TgZ(20,"nz-form-item",3)(21,"nz-form-control",11)(22,"label",13),t._uU(23,"\u4e0b\u64ad"),t.qZA()()(),t.TgZ(24,"nz-form-item",3)(25,"nz-form-control",11)(26,"label",14),t._uU(27,"\u76f4\u64ad\u95f4\u4fe1\u606f\u6539\u53d8"),t.qZA()()(),t.TgZ(28,"nz-form-item",3)(29,"nz-form-control",11)(30,"label",15),t._uU(31,"\u5f55\u5236\u5f00\u59cb"),t.qZA()()(),t.TgZ(32,"nz-form-item",3)(33,"nz-form-control",11)(34,"label",16),t._uU(35,"\u5f55\u5236\u5b8c\u6210"),t.qZA()()(),t.TgZ(36,"nz-form-item",3)(37,"nz-form-control",11)(38,"label",17),t._uU(39,"\u5f55\u5236\u53d6\u6d88"),t.qZA()()(),t.TgZ(40,"nz-form-item",3)(41,"nz-form-control",11)(42,"label",18),t._uU(43,"\u89c6\u9891\u6587\u4ef6\u521b\u5efa"),t.qZA()()(),t.TgZ(44,"nz-form-item",3)(45,"nz-form-control",11)(46,"label",19),t._uU(47,"\u89c6\u9891\u6587\u4ef6\u5b8c\u6210"),t.qZA()()(),t.TgZ(48,"nz-form-item",3)(49,"nz-form-control",11)(50,"label",20),t._uU(51,"\u5f39\u5e55\u6587\u4ef6\u521b\u5efa"),t.qZA()()(),t.TgZ(52,"nz-form-item",3)(53,"nz-form-control",11)(54,"label",21),t._uU(55,"\u5f39\u5e55\u6587\u4ef6\u5b8c\u6210"),t.qZA()()(),t.TgZ(56,"nz-form-item",3)(57,"nz-form-control",11)(58,"label",22),t._uU(59,"\u539f\u59cb\u5f39\u5e55\u6587\u4ef6\u521b\u5efa"),t.qZA()()(),t.TgZ(60,"nz-form-item",3)(61,"nz-form-control",11)(62,"label",23),t._uU(63,"\u539f\u59cb\u5f39\u5e55\u6587\u4ef6\u5b8c\u6210"),t.qZA()()(),t.TgZ(64,"nz-form-item",3)(65,"nz-form-control",11)(66,"label",24),t._uU(67,"\u76f4\u64ad\u5c01\u9762\u4e0b\u8f7d\u5b8c\u6210"),t.qZA()()(),t.TgZ(68,"nz-form-item",3)(69,"nz-form-control",11)(70,"label",25),t._uU(71,"\u89c6\u9891\u540e\u5904\u7406\u5b8c\u6210"),t.qZA()()(),t.TgZ(72,"nz-form-item",3)(73,"nz-form-control",11)(74,"label",26),t._uU(75,"\u6587\u4ef6\u540e\u5904\u7406\u5b8c\u6210"),t.qZA()()(),t.TgZ(76,"nz-form-item",3)(77,"nz-form-control",11)(78,"label",27),t._uU(79,"\u786c\u76d8\u7a7a\u95f4\u4e0d\u8db3"),t.qZA()()(),t.TgZ(80,"nz-form-item",3)(81,"nz-form-control",11)(82,"label",28),t._uU(83,"\u7a0b\u5e8f\u51fa\u73b0\u5f02\u5e38"),t.qZA()()()()(),t.BQk()}if(2&i){const e=t.MAs(8),o=t.oxw();t.xp6(1),t.Q6J("formGroup",o.settingsForm),t.xp6(4),t.Q6J("nzErrorTip",e),t.xp6(9),t.Q6J("nzChecked",o.allChecked)("nzIndeterminate",o.indeterminate)}}jt.\u0275fac=function(n){return new(n||jt)(t.Y36(t.sBO),t.Y36(v.gz))},jt.\u0275cmp=t.Xpm({type:jt,selectors:[["app-bark-notification-settings"]],decls:2,vars:0,consts:[["pageTitle","Bark \u901a\u77e5"],["appSubPageContent",""],["keyOfSettings","barkNotification",3,"settings"],["name","Bark"],[3,"settings"],["name","\u4e8b\u4ef6"],["name","\u6d88\u606f"]],template:function(n,e){1&n&&(t.TgZ(0,"app-sub-page",0),t.YNc(1,qr,8,4,"ng-template",1),t.qZA())},dependencies:[rt.Y,st.q,q.g,N,Xt,B,A],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});const Hr={url:"",liveBegan:!0,liveEnded:!0,roomChange:!0,recordingStarted:!0,recordingFinished:!0,recordingCancelled:!0,videoFileCreated:!0,videoFileCompleted:!0,danmakuFileCreated:!0,danmakuFileCompleted:!0,rawDanmakuFileCreated:!0,rawDanmakuFileCompleted:!0,coverImageDownloaded:!0,videoPostprocessingCompleted:!0,postprocessingCompleted:!0,spaceNoEnough:!0,errorOccurred:!0};class te{constructor(n,e){this.changeDetector=e,this.title="\u6807\u9898",this.okButtonText="\u786e\u5b9a",this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.allChecked=!1,this.indeterminate=!0,this.settingsForm=n.group({url:["",[r.kI.required,r.kI.pattern(/^https?:\/\/.*$/)]],liveBegan:[""],liveEnded:[""],roomChange:[""],recordingStarted:[""],recordingFinished:[""],recordingCancelled:[""],videoFileCreated:[""],videoFileCompleted:[""],danmakuFileCreated:[""],danmakuFileCompleted:[""],rawDanmakuFileCreated:[""],rawDanmakuFileCompleted:[""],coverImageDownloaded:[""],videoPostprocessingCompleted:[""],postprocessingCompleted:[""],spaceNoEnough:[""],errorOccurred:[""]}),this.checkboxControls=Object.entries(this.settingsForm.controls).filter(([o])=>"url"!==o).map(([,o])=>o),this.checkboxControls.forEach(o=>o.valueChanges.subscribe(()=>this.updateAllChecked()))}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.settingsForm.reset(),this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){void 0===this.settings&&(this.settings={...Hr}),this.settingsForm.setValue(this.settings),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){this.confirm.emit(this.settingsForm.value),this.close()}setAllChecked(n){this.indeterminate=!1,this.allChecked=n,this.checkboxControls.forEach(e=>e.setValue(n))}updateAllChecked(){const n=this.checkboxControls.map(e=>e.value);this.allChecked=n.every(e=>e),this.indeterminate=!this.allChecked&&n.some(e=>e)}}te.\u0275fac=function(n){return new(n||te)(t.Y36(r.qu),t.Y36(t.sBO))},te.\u0275cmp=t.Xpm({type:te,selectors:[["app-webhook-edit-dialog"]],inputs:{settings:"settings",title:"title",okButtonText:"okButtonText",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:2,vars:4,consts:[["nzCentered","",3,"nzTitle","nzOkText","nzVisible","nzOkDisabled","nzOnOk","nzOnCancel"],[4,"nzModalContent"],["nz-form","",3,"formGroup"],[1,"setting-item"],["nzFor","url","nzNoColon","",1,"setting-label"],["nzHasFeedback","",1,"setting-control","input",3,"nzErrorTip"],["id","url","type","url","required","","nz-input","","formControlName","url"],["urlErrorTip",""],[1,"form-group"],[1,"setting-control","checkbox","check-all"],["nz-checkbox","",3,"nzChecked","nzIndeterminate","nzCheckedChange"],[1,"setting-control","checkbox"],["nz-checkbox","","formControlName","liveBegan"],["nz-checkbox","","formControlName","liveEnded"],["nz-checkbox","","formControlName","roomChange"],["nz-checkbox","","formControlName","recordingStarted"],["nz-checkbox","","formControlName","recordingFinished"],["nz-checkbox","","formControlName","recordingCancelled"],["nz-checkbox","","formControlName","videoFileCreated"],["nz-checkbox","","formControlName","videoFileCompleted"],["nz-checkbox","","formControlName","danmakuFileCreated"],["nz-checkbox","","formControlName","danmakuFileCompleted"],["nz-checkbox","","formControlName","rawDanmakuFileCreated"],["nz-checkbox","","formControlName","rawDanmakuFileCompleted"],["nz-checkbox","","formControlName","coverImageDownloaded"],["nz-checkbox","","formControlName","videoPostprocessingCompleted"],["nz-checkbox","","formControlName","postprocessingCompleted"],["nz-checkbox","","formControlName","spaceNoEnough"],["nz-checkbox","","formControlName","errorOccurred"],[4,"ngIf"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzOnOk",function(){return e.handleConfirm()})("nzOnCancel",function(){return e.handleCancel()}),t.YNc(1,Gr,84,4,"ng-container",1),t.qZA()),2&n&&t.Q6J("nzTitle",e.title)("nzOkText",e.okButtonText)("nzVisible",e.visible)("nzOkDisabled",e.settingsForm.invalid)},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,O.Zp,Oe.Ie,_.du,_.Hf],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}.setting-item[_ngcontent-%COMP%]{padding:1em 0;border:none}.setting-item[_ngcontent-%COMP%]:first-child{padding-top:0}.setting-item[_ngcontent-%COMP%]:first-child .setting-control[_ngcontent-%COMP%]{flex:1 1 auto;max-width:100%!important}.setting-item[_ngcontent-%COMP%]:last-child{padding-bottom:0}.setting-item[_ngcontent-%COMP%] .check-all[_ngcontent-%COMP%]{border-bottom:1px solid rgba(0,0,0,.06)}"],changeDetection:0});var tn=c(3325);function $r(i,n){1&i&&t._UZ(0,"nz-list-empty")}function Kr(i,n){if(1&i){const e=t.EpF();t.TgZ(0,"nz-list-item",9)(1,"span",10),t._uU(2),t.qZA(),t.TgZ(3,"button",11),t._UZ(4,"i",12),t.qZA(),t.TgZ(5,"nz-dropdown-menu",null,13)(7,"ul",14)(8,"li",15),t.NdJ("click",function(){const s=t.CHM(e).index,g=t.oxw();return t.KtG(g.edit.emit(s))}),t._uU(9,"\u4fee\u6539"),t.qZA(),t.TgZ(10,"li",15),t.NdJ("click",function(){const s=t.CHM(e).index,g=t.oxw();return t.KtG(g.remove.emit(s))}),t._uU(11,"\u5220\u9664"),t.qZA()()()()}if(2&i){const e=n.$implicit,o=t.MAs(6);t.xp6(2),t.Oqu(e.url),t.xp6(1),t.Q6J("nzDropdownMenu",o)}}class ee{constructor(){this.header="",this.addable=!0,this.clearable=!0,this.add=new t.vpe,this.edit=new t.vpe,this.remove=new t.vpe,this.clear=new t.vpe}}function Xr(i,n){if(1&i){const e=t.EpF();t.TgZ(0,"app-page-section")(1,"app-webhook-list",3),t.NdJ("add",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.addWebhook())})("edit",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.editWebhook(a))})("remove",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.removeWebhook(a))})("clear",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.clearWebhook())}),t.qZA()()}if(2&i){const e=t.oxw();t.xp6(1),t.Q6J("data",e.webhooks)("addable",e.canAdd)}}ee.\u0275fac=function(n){return new(n||ee)},ee.\u0275cmp=t.Xpm({type:ee,selectors:[["app-webhook-list"]],inputs:{data:"data",header:"header",addable:"addable",clearable:"clearable"},outputs:{add:"add",edit:"edit",remove:"remove",clear:"clear"},decls:11,vars:5,consts:[["nzBordered","",1,"list"],[1,"list-header"],[1,"list-actions"],["nz-button","","nzType","text","nzSize","large","nz-tooltip","","nzTooltipTitle","\u6e05\u7a7a",1,"clear-button",3,"disabled","click"],["nz-icon","","nzType","clear"],["nz-button","","nzType","text","nzSize","large","nz-tooltip","","nzTooltipTitle","\u6dfb\u52a0",1,"add-button",3,"disabled","click"],["nz-icon","","nzType","plus"],[4,"ngIf"],["class","list-item",4,"ngFor","ngForOf"],[1,"list-item"],[1,"item-content"],["nz-button","","nzType","text","nzSize","default","nz-dropdown","","nzPlacement","bottomRight",1,"more-action-button",3,"nzDropdownMenu"],["nz-icon","","nzType","more"],["menu","nzDropdownMenu"],["nz-menu",""],["nz-menu-item","",3,"click"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-list",0)(1,"nz-list-header",1)(2,"h3"),t._uU(3),t.qZA(),t.TgZ(4,"div",2)(5,"button",3),t.NdJ("click",function(){return e.clear.emit()}),t._UZ(6,"i",4),t.qZA(),t.TgZ(7,"button",5),t.NdJ("click",function(){return e.add.emit()}),t._UZ(8,"i",6),t.qZA()()(),t.YNc(9,$r,1,0,"nz-list-empty",7),t.YNc(10,Kr,12,2,"nz-list-item",8),t.qZA()),2&n&&(t.xp6(3),t.Oqu(e.header),t.xp6(2),t.Q6J("disabled",e.data.length<=0||!e.clearable),t.xp6(2),t.Q6J("disabled",!e.addable),t.xp6(2),t.Q6J("ngIf",e.data.length<=0),t.xp6(1),t.Q6J("ngForOf",e.data))},dependencies:[p.sg,p.O5,Q.ix,I.w,lt.Ls,ve,_e,he,ke,tn.wO,tn.r9,oe.cm,oe.RR,oe.wA,ue.SY],styles:[".list[_ngcontent-%COMP%]{background-color:#fff}.list[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap;align-items:center;padding:.5em 1.5em}.list[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0}.list[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] .list-actions[_ngcontent-%COMP%]{margin-left:auto;position:relative;left:1em}.list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap;padding:.5em 1.5em}.list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .item-content[_ngcontent-%COMP%]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .more-action-button[_ngcontent-%COMP%]{margin-left:auto;flex:0 0 auto;position:relative;left:1em}"],changeDetection:0});class R{constructor(n,e,o,a,s){this.changeDetector=n,this.route=e,this.message=o,this.modal=a,this.settingService=s,this.dialogTitle="",this.dialogOkButtonText="",this.dialogVisible=!1,this.editingIndex=-1}get canAdd(){return this.webhooks.length<R.MAX_WEBHOOKS}ngOnInit(){this.route.data.subscribe(n=>{this.webhooks=n.settings,this.changeDetector.markForCheck()})}addWebhook(){this.editingIndex=-1,this.editingSettings=void 0,this.dialogTitle="\u6dfb\u52a0 webhook",this.dialogOkButtonText="\u6dfb\u52a0",this.dialogVisible=!0}removeWebhook(n){const e=this.webhooks.filter((o,a)=>a!==n);this.changeSettings(e).subscribe(()=>this.reset())}editWebhook(n){this.editingIndex=n,this.editingSettings={...this.webhooks[n]},this.dialogTitle="\u4fee\u6539 webhook",this.dialogOkButtonText="\u4fdd\u5b58",this.dialogVisible=!0}clearWebhook(){this.modal.confirm({nzTitle:"\u786e\u5b9a\u8981\u6e05\u7a7a Webhook \uff1f",nzOnOk:()=>new Promise((n,e)=>{this.changeSettings([]).subscribe(n,e)})})}onDialogCanceled(){this.reset()}onDialogConfirmed(n){let e;-1===this.editingIndex?e=[...this.webhooks,n]:(e=[...this.webhooks],e[this.editingIndex]=n),this.changeSettings(e).subscribe(()=>this.reset())}reset(){this.editingIndex=-1,delete this.editingSettings}changeSettings(n){return this.settingService.changeSettings({webhooks:n}).pipe((0,F.X)(3,300),(0,re.b)(e=>{this.webhooks=e.webhooks,this.changeDetector.markForCheck()},e=>{this.message.error(`Webhook \u8bbe\u7f6e\u51fa\u9519: ${e.message}`)}))}}R.MAX_WEBHOOKS=50,R.\u0275fac=function(n){return new(n||R)(t.Y36(t.sBO),t.Y36(v.gz),t.Y36(se.dD),t.Y36(_.Sf),t.Y36(S.R))},R.\u0275cmp=t.Xpm({type:R,selectors:[["app-webhook-manager"]],decls:3,vars:4,consts:[["pageTitle","Webhooks"],["appSubPageContent",""],[3,"title","okButtonText","settings","visible","visibleChange","cancel","confirm"],["header","Webhook \u5217\u8868",3,"data","addable","add","edit","remove","clear"]],template:function(n,e){1&n&&(t.TgZ(0,"app-sub-page",0),t.YNc(1,Xr,2,2,"ng-template",1),t.qZA(),t.TgZ(2,"app-webhook-edit-dialog",2),t.NdJ("visibleChange",function(a){return e.dialogVisible=a})("cancel",function(){return e.onDialogCanceled()})("confirm",function(a){return e.onDialogConfirmed(a)}),t.qZA()),2&n&&(t.xp6(2),t.Q6J("title",e.dialogTitle)("okButtonText",e.dialogOkButtonText)("settings",e.editingSettings)("visible",e.dialogVisible))},dependencies:[rt.Y,st.q,q.g,te,ee],changeDetection:0});const jr=[{path:"email-notification",component:Lt,resolve:{settings:K}},{path:"serverchan-notification",component:Yt,resolve:{settings:X}},{path:"pushdeer-notification",component:Rt,resolve:{settings:j}},{path:"pushplus-notification",component:Ht,resolve:{settings:tt}},{path:"telegram-notification",component:Kt,resolve:{settings:et}},{path:"bark-notification",component:jt,resolve:{settings:it}},{path:"webhooks",component:R,resolve:{settings:nt}},{path:"",component:Qt,resolve:{settings:$}}];class ht{}function ts(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1," \u8bed\u6cd5\u3001\u53d8\u91cf\u53c2\u8003 "),t.TgZ(2,"a",16),t._uU(3,"wiki"),t.qZA()(),t.TgZ(4,"p"),t._uU(5,"\u7a7a\u503c\u5c06\u4f7f\u7528\u9ed8\u8ba4\u6d88\u606f\u6a21\u677f"),t.qZA())}function es(i,n){if(1&i&&(t.ynx(0),t.YNc(1,ts,6,0,"ng-template",null,3,t.W1O),t.TgZ(3,"form",4)(4,"nz-form-item",5)(5,"nz-form-label",6),t._uU(6," \u6d88\u606f\u6807\u9898 "),t.qZA(),t.TgZ(7,"nz-form-control",7),t._UZ(8,"input",8),t.qZA()(),t.TgZ(9,"nz-form-item",9)(10,"nz-form-label",10),t._uU(11," \u6d88\u606f\u7c7b\u578b "),t.qZA(),t.TgZ(12,"nz-form-control",11),t._UZ(13,"nz-select",12),t.qZA()(),t.TgZ(14,"nz-form-item",13)(15,"nz-form-label",6),t._uU(16," \u6d88\u606f\u5185\u5bb9 "),t.qZA(),t.TgZ(17,"nz-form-control",14),t._UZ(18,"textarea",15),t.qZA()()(),t.BQk()),2&i){const e=t.MAs(2),o=t.oxw();t.xp6(3),t.Q6J("nzLayout","vertical")("formGroup",o.settingsForm),t.xp6(2),t.Q6J("nzTooltipTitle",e),t.xp6(8),t.Q6J("nzOptions",o.MESSAGE_TYPE_OPTIONS),t.xp6(2),t.Q6J("nzTooltipTitle",e),t.xp6(3),t.Q6J("rows",10)}}function ns(i,n){if(1&i){const e=t.EpF();t.TgZ(0,"button",17),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleCancel())}),t._uU(1,"\u53d6\u6d88"),t.qZA(),t.TgZ(2,"button",18),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleConfirm())}),t._uU(3," \u786e\u5b9a "),t.qZA()}if(2&i){const e=t.oxw();t.xp6(2),t.Q6J("disabled",e.settingsForm.invalid)}}ht.\u0275fac=function(n){return new(n||ht)},ht.\u0275mod=t.oAB({type:ht}),ht.\u0275inj=t.cJS({imports:[v.Bz.forChild(jr),v.Bz]});class ne{constructor(n,e){this.changeDetector=e,this.messageTypes=[],this.title="\u4fee\u6539\u6d88\u606f\u6a21\u677f",this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.MESSAGE_TYPE_OPTIONS=[],this.settingsForm=n.group({messageType:[""],messageTitle:[""],messageContent:[""]})}get messageTypeControl(){return this.settingsForm.get("messageType")}get messageTitleControl(){return this.settingsForm.get("messageTitle")}get messageContentControl(){return this.settingsForm.get("messageContent")}ngOnInit(){this.MESSAGE_TYPE_OPTIONS=Array.from(new Set(this.messageTypes)).map(n=>({label:n,value:n}))}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){this.settingsForm.setValue(this.value),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){this.confirm.emit(this.settingsForm.value),this.close()}}ne.\u0275fac=function(n){return new(n||ne)(t.Y36(r.qu),t.Y36(t.sBO))},ne.\u0275cmp=t.Xpm({type:ne,selectors:[["app-message-template-edit-dialog"]],inputs:{value:"value",messageTypes:"messageTypes",title:"title",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:4,vars:3,consts:[["nzCentered","",3,"nzTitle","nzVisible","nzOkDisabled","nzVisibleChange","nzOnOk","nzOnCancel"],[4,"nzModalContent"],["modalFooter",""],["messageTemplateTip",""],["nz-form","",3,"nzLayout","formGroup"],[1,"setting-item","input"],["nzFor","messageTitle","nzNoColon","",1,"setting-label",3,"nzTooltipTitle"],[1,"setting-control","input"],["type","text","nz-input","","formControlName","messageTitle"],[1,"setting-item","switch"],["nzFor","messageType","nzNoColon","",1,"setting-label"],[1,"setting-control","select"],["formControlName","messageType",3,"nzOptions"],[1,"setting-item","textarea"],[1,"setting-control","textarea"],["nz-input","","wrap","off","formControlName","messageContent",3,"rows"],["href","https://github.com/acgnhiki/blrec/wiki/MessageTemplate","_blank",""],["nz-button","","nzType","default",3,"click"],["nz-button","","nzType","default",3,"disabled","click"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzVisibleChange",function(a){return e.visible=a})("nzOnOk",function(){return e.handleConfirm()})("nzOnCancel",function(){return e.handleCancel()}),t.YNc(1,es,19,6,"ng-container",1),t.YNc(2,ns,4,1,"ng-template",null,2,t.W1O),t.qZA()),2&n&&t.Q6J("nzTitle",e.title)("nzVisible",e.visible)("nzOkDisabled",e.settingsForm.invalid)},dependencies:[r._Y,r.Fj,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,O.Zp,zt.Vq,_.du,_.Hf,Q.ix,I.w,dt.dQ],styles:["textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}"],changeDetection:0});class _t{}_t.\u0275fac=function(n){return new(n||_t)},_t.\u0275mod=t.oAB({type:_t}),_t.\u0275inj=t.cJS({providers:[$,K,X,j,tt,et,it,nt],imports:[p.ez,ht,r.u5,r.UX,ge.j,en.KJ,nn.vh,l.U5,O.o7,U.m,Oe.Wr,G.aF,sn,zt.LV,_.Qp,Q.sL,lt.PV,pi,oe.b1,ue.cg,di.S,H.HQ,bi,Pi.m]}),t.B6R(A,[ne],[])}}]); \ No newline at end of file +"use strict";(self.webpackChunkblrec=self.webpackChunkblrec||[]).push([[548],{2548:(ns,xe,c)=>{c.r(xe),c.d(xe,{SettingsModule:()=>_t});var p=c(6895),r=c(433),ge=c(5681),en=c(5655),nn=c(1971),l=c(6704),O=c(5635),U=c(1243),Oe=c(8213),G=c(8521),t=c(4650),ue=c(7570),on=c(3353),Ct=c(445);let sn=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=t.oAB({type:i}),i.\u0275inj=t.cJS({imports:[Ct.vT,p.ez,on.ud,ue.cg]}),i})();var zt=c(8e3),_=c(5156),Q=c(6616),lt=c(1102),Me=c(4383),ct=c(6287),D=c(655),E=c(3187),be=c(7579),ln=c(9770),ie=c(9646),cn=c(6451),gn=c(9751),un=c(1135),mn=c(5698),Pe=c(3900),gt=c(2722),ut=c(3303),Te=c(4788),u=c(3679);const V=["*"];function bn(i,n){1&i&&t.Hsn(0)}const Pn=["nz-list-item-actions",""];function Tn(i,n){}function wn(i,n){1&i&&t._UZ(0,"em",3)}function Fn(i,n){if(1&i&&(t.TgZ(0,"li"),t.YNc(1,Tn,0,0,"ng-template",1),t.YNc(2,wn,1,0,"em",2),t.qZA()),2&i){const e=n.$implicit,o=n.last;t.xp6(1),t.Q6J("ngTemplateOutlet",e),t.xp6(1),t.Q6J("ngIf",!o)}}function Sn(i,n){}const we=function(i,n){return{$implicit:i,index:n}};function yn(i,n){if(1&i&&(t.ynx(0),t.YNc(1,Sn,0,0,"ng-template",9),t.BQk()),2&i){const e=n.$implicit,o=n.index,a=t.oxw(2);t.xp6(1),t.Q6J("ngTemplateOutlet",a.nzRenderItem)("ngTemplateOutletContext",t.WLB(2,we,e,o))}}function An(i,n){if(1&i&&(t.TgZ(0,"div",7),t.YNc(1,yn,2,5,"ng-container",8),t.Hsn(2,4),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("ngForOf",e.nzDataSource)}}function kn(i,n){if(1&i&&(t.ynx(0),t._uU(1),t.BQk()),2&i){const e=t.oxw(2);t.xp6(1),t.Oqu(e.nzHeader)}}function Dn(i,n){if(1&i&&(t.TgZ(0,"nz-list-header"),t.YNc(1,kn,2,1,"ng-container",10),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzHeader)}}function En(i,n){1&i&&t._UZ(0,"div"),2&i&&t.Udp("min-height",53,"px")}function Zn(i,n){}function Nn(i,n){if(1&i&&(t.TgZ(0,"div",13),t.YNc(1,Zn,0,0,"ng-template",9),t.qZA()),2&i){const e=n.$implicit,o=n.index,a=t.oxw(2);t.Q6J("nzSpan",a.nzGrid.span||null)("nzXs",a.nzGrid.xs||null)("nzSm",a.nzGrid.sm||null)("nzMd",a.nzGrid.md||null)("nzLg",a.nzGrid.lg||null)("nzXl",a.nzGrid.xl||null)("nzXXl",a.nzGrid.xxl||null),t.xp6(1),t.Q6J("ngTemplateOutlet",a.nzRenderItem)("ngTemplateOutletContext",t.WLB(9,we,e,o))}}function Bn(i,n){if(1&i&&(t.TgZ(0,"div",11),t.YNc(1,Nn,2,12,"div",12),t.qZA()),2&i){const e=t.oxw();t.Q6J("nzGutter",e.nzGrid.gutter||null),t.xp6(1),t.Q6J("ngForOf",e.nzDataSource)}}function Un(i,n){if(1&i&&t._UZ(0,"nz-list-empty",14),2&i){const e=t.oxw();t.Q6J("nzNoResult",e.nzNoResult)}}function In(i,n){if(1&i&&(t.ynx(0),t._uU(1),t.BQk()),2&i){const e=t.oxw(2);t.xp6(1),t.Oqu(e.nzFooter)}}function Jn(i,n){if(1&i&&(t.TgZ(0,"nz-list-footer"),t.YNc(1,In,2,1,"ng-container",10),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzFooter)}}function Qn(i,n){}function Vn(i,n){}function Ln(i,n){if(1&i&&(t.TgZ(0,"nz-list-pagination"),t.YNc(1,Vn,0,0,"ng-template",6),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("ngTemplateOutlet",e.nzPagination)}}const qn=[[["nz-list-header"]],[["nz-list-footer"],["","nz-list-footer",""]],[["nz-list-load-more"],["","nz-list-load-more",""]],[["nz-list-pagination"],["","nz-list-pagination",""]],"*"],Yn=["nz-list-header","nz-list-footer, [nz-list-footer]","nz-list-load-more, [nz-list-load-more]","nz-list-pagination, [nz-list-pagination]","*"];function Wn(i,n){if(1&i&&t._UZ(0,"ul",6),2&i){const e=t.oxw(2);t.Q6J("nzActions",e.nzActions)}}function Rn(i,n){if(1&i&&(t.YNc(0,Wn,1,1,"ul",5),t.Hsn(1)),2&i){const e=t.oxw();t.Q6J("ngIf",e.nzActions&&e.nzActions.length>0)}}function Gn(i,n){if(1&i&&(t.ynx(0),t._uU(1),t.BQk()),2&i){const e=t.oxw(3);t.xp6(1),t.Oqu(e.nzContent)}}function Hn(i,n){if(1&i&&(t.ynx(0),t.YNc(1,Gn,2,1,"ng-container",8),t.BQk()),2&i){const e=t.oxw(2);t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzContent)}}function $n(i,n){if(1&i&&(t.Hsn(0,1),t.Hsn(1,2),t.YNc(2,Hn,2,1,"ng-container",7)),2&i){const e=t.oxw();t.xp6(2),t.Q6J("ngIf",e.nzContent)}}function Kn(i,n){1&i&&t.Hsn(0,3)}function Xn(i,n){}function jn(i,n){}function ti(i,n){}function ei(i,n){}function ni(i,n){if(1&i&&(t.YNc(0,Xn,0,0,"ng-template",9),t.YNc(1,jn,0,0,"ng-template",9),t.YNc(2,ti,0,0,"ng-template",9),t.YNc(3,ei,0,0,"ng-template",9)),2&i){const e=t.oxw(),o=t.MAs(3),a=t.MAs(5),s=t.MAs(1);t.Q6J("ngTemplateOutlet",o),t.xp6(1),t.Q6J("ngTemplateOutlet",e.nzExtra),t.xp6(1),t.Q6J("ngTemplateOutlet",a),t.xp6(1),t.Q6J("ngTemplateOutlet",s)}}function ii(i,n){}function oi(i,n){}function ai(i,n){}function ri(i,n){if(1&i&&(t.TgZ(0,"nz-list-item-extra"),t.YNc(1,ai,0,0,"ng-template",9),t.qZA()),2&i){const e=t.oxw(2);t.xp6(1),t.Q6J("ngTemplateOutlet",e.nzExtra)}}function si(i,n){}function li(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"div",10),t.YNc(2,ii,0,0,"ng-template",9),t.YNc(3,oi,0,0,"ng-template",9),t.qZA(),t.YNc(4,ri,2,1,"nz-list-item-extra",7),t.YNc(5,si,0,0,"ng-template",9),t.BQk()),2&i){const e=t.oxw(),o=t.MAs(3),a=t.MAs(1),s=t.MAs(5);t.xp6(2),t.Q6J("ngTemplateOutlet",o),t.xp6(1),t.Q6J("ngTemplateOutlet",a),t.xp6(1),t.Q6J("ngIf",e.nzExtra),t.xp6(1),t.Q6J("ngTemplateOutlet",s)}}const ci=[[["nz-list-item-actions"],["","nz-list-item-actions",""]],[["nz-list-item-meta"],["","nz-list-item-meta",""]],"*",[["nz-list-item-extra"],["","nz-list-item-extra",""]]],gi=["nz-list-item-actions, [nz-list-item-actions]","nz-list-item-meta, [nz-list-item-meta]","*","nz-list-item-extra, [nz-list-item-extra]"];let de=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-list-item-extra"],["","nz-list-item-extra",""]],hostAttrs:[1,"ant-list-item-extra"],exportAs:["nzListItemExtra"],ngContentSelectors:V,decls:1,vars:0,template:function(e,o){1&e&&(t.F$t(),t.Hsn(0))},encapsulation:2,changeDetection:0}),i})(),Se=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-list-item-action"]],viewQuery:function(e,o){if(1&e&&t.Gf(t.Rgc,5),2&e){let a;t.iGM(a=t.CRH())&&(o.templateRef=a.first)}},exportAs:["nzListItemAction"],ngContentSelectors:V,decls:1,vars:0,template:function(e,o){1&e&&(t.F$t(),t.YNc(0,bn,1,0,"ng-template"))},encapsulation:2,changeDetection:0}),i})(),ye=(()=>{class i{constructor(e,o,a){this.ngZone=e,this.nzActions=[],this.actions=[],this.inputActionChanges$=new be.x,this.contentChildrenChanges$=(0,ln.P)(()=>this.nzListItemActions?(0,ie.of)(null):this.ngZone.onStable.pipe((0,mn.q)(1),this.enterZone(),(0,Pe.w)(()=>this.contentChildrenChanges$))),(0,cn.T)(this.contentChildrenChanges$,this.inputActionChanges$).pipe((0,gt.R)(a)).subscribe(()=>{this.actions=this.nzActions.length?this.nzActions:this.nzListItemActions.map(s=>s.templateRef),o.detectChanges()})}ngOnChanges(){this.inputActionChanges$.next(null)}enterZone(){return e=>new gn.y(o=>e.subscribe({next:a=>this.ngZone.run(()=>o.next(a))}))}}return i.\u0275fac=function(e){return new(e||i)(t.Y36(t.R0b),t.Y36(t.sBO),t.Y36(ut.kn))},i.\u0275cmp=t.Xpm({type:i,selectors:[["ul","nz-list-item-actions",""]],contentQueries:function(e,o,a){if(1&e&&t.Suo(a,Se,4),2&e){let s;t.iGM(s=t.CRH())&&(o.nzListItemActions=s)}},hostAttrs:[1,"ant-list-item-action"],inputs:{nzActions:"nzActions"},exportAs:["nzListItemActions"],features:[t._Bn([ut.kn]),t.TTD],attrs:Pn,decls:1,vars:1,consts:[[4,"ngFor","ngForOf"],[3,"ngTemplateOutlet"],["class","ant-list-item-action-split",4,"ngIf"],[1,"ant-list-item-action-split"]],template:function(e,o){1&e&&t.YNc(0,Fn,3,2,"li",0),2&e&&t.Q6J("ngForOf",o.actions)},dependencies:[p.sg,p.O5,p.tP],encapsulation:2,changeDetection:0}),i})(),he=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-list-empty"]],hostAttrs:[1,"ant-list-empty-text"],inputs:{nzNoResult:"nzNoResult"},exportAs:["nzListHeader"],decls:1,vars:2,consts:[[3,"nzComponentName","specificContent"]],template:function(e,o){1&e&&t._UZ(0,"nz-embed-empty",0),2&e&&t.Q6J("nzComponentName","list")("specificContent",o.nzNoResult)},dependencies:[Te.gB],encapsulation:2,changeDetection:0}),i})(),_e=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-list-header"]],hostAttrs:[1,"ant-list-header"],exportAs:["nzListHeader"],ngContentSelectors:V,decls:1,vars:0,template:function(e,o){1&e&&(t.F$t(),t.Hsn(0))},encapsulation:2,changeDetection:0}),i})(),fe=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-list-footer"]],hostAttrs:[1,"ant-list-footer"],exportAs:["nzListFooter"],ngContentSelectors:V,decls:1,vars:0,template:function(e,o){1&e&&(t.F$t(),t.Hsn(0))},encapsulation:2,changeDetection:0}),i})(),Ce=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-list-pagination"]],hostAttrs:[1,"ant-list-pagination"],exportAs:["nzListPagination"],ngContentSelectors:V,decls:1,vars:0,template:function(e,o){1&e&&(t.F$t(),t.Hsn(0))},encapsulation:2,changeDetection:0}),i})(),Ae=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=t.lG2({type:i,selectors:[["nz-list-load-more"]],exportAs:["nzListLoadMoreDirective"]}),i})(),ve=(()=>{class i{constructor(e){this.directionality=e,this.nzBordered=!1,this.nzGrid="",this.nzItemLayout="horizontal",this.nzRenderItem=null,this.nzLoading=!1,this.nzLoadMore=null,this.nzSize="default",this.nzSplit=!0,this.hasSomethingAfterLastItem=!1,this.dir="ltr",this.itemLayoutNotifySource=new un.X(this.nzItemLayout),this.destroy$=new be.x}get itemLayoutNotify$(){return this.itemLayoutNotifySource.asObservable()}ngOnInit(){this.dir=this.directionality.value,this.directionality.change?.pipe((0,gt.R)(this.destroy$)).subscribe(e=>{this.dir=e})}getSomethingAfterLastItem(){return!!(this.nzLoadMore||this.nzPagination||this.nzFooter||this.nzListFooterComponent||this.nzListPaginationComponent||this.nzListLoadMoreDirective)}ngOnChanges(e){e.nzItemLayout&&this.itemLayoutNotifySource.next(this.nzItemLayout)}ngOnDestroy(){this.itemLayoutNotifySource.unsubscribe(),this.destroy$.next(),this.destroy$.complete()}ngAfterContentInit(){this.hasSomethingAfterLastItem=this.getSomethingAfterLastItem()}}return i.\u0275fac=function(e){return new(e||i)(t.Y36(Ct.Is,8))},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-list"],["","nz-list",""]],contentQueries:function(e,o,a){if(1&e&&(t.Suo(a,fe,5),t.Suo(a,Ce,5),t.Suo(a,Ae,5)),2&e){let s;t.iGM(s=t.CRH())&&(o.nzListFooterComponent=s.first),t.iGM(s=t.CRH())&&(o.nzListPaginationComponent=s.first),t.iGM(s=t.CRH())&&(o.nzListLoadMoreDirective=s.first)}},hostAttrs:[1,"ant-list"],hostVars:16,hostBindings:function(e,o){2&e&&t.ekj("ant-list-rtl","rtl"===o.dir)("ant-list-vertical","vertical"===o.nzItemLayout)("ant-list-lg","large"===o.nzSize)("ant-list-sm","small"===o.nzSize)("ant-list-split",o.nzSplit)("ant-list-bordered",o.nzBordered)("ant-list-loading",o.nzLoading)("ant-list-something-after-last-item",o.hasSomethingAfterLastItem)},inputs:{nzDataSource:"nzDataSource",nzBordered:"nzBordered",nzGrid:"nzGrid",nzHeader:"nzHeader",nzFooter:"nzFooter",nzItemLayout:"nzItemLayout",nzRenderItem:"nzRenderItem",nzLoading:"nzLoading",nzLoadMore:"nzLoadMore",nzPagination:"nzPagination",nzSize:"nzSize",nzSplit:"nzSplit",nzNoResult:"nzNoResult"},exportAs:["nzList"],features:[t.TTD],ngContentSelectors:Yn,decls:15,vars:9,consts:[["itemsTpl",""],[4,"ngIf"],[3,"nzSpinning"],[3,"min-height",4,"ngIf"],["nz-row","",3,"nzGutter",4,"ngIf","ngIfElse"],[3,"nzNoResult",4,"ngIf"],[3,"ngTemplateOutlet"],[1,"ant-list-items"],[4,"ngFor","ngForOf"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[4,"nzStringTemplateOutlet"],["nz-row","",3,"nzGutter"],["nz-col","",3,"nzSpan","nzXs","nzSm","nzMd","nzLg","nzXl","nzXXl",4,"ngFor","ngForOf"],["nz-col","",3,"nzSpan","nzXs","nzSm","nzMd","nzLg","nzXl","nzXXl"],[3,"nzNoResult"]],template:function(e,o){if(1&e&&(t.F$t(qn),t.YNc(0,An,3,1,"ng-template",null,0,t.W1O),t.YNc(2,Dn,2,1,"nz-list-header",1),t.Hsn(3),t.TgZ(4,"nz-spin",2),t.ynx(5),t.YNc(6,En,1,2,"div",3),t.YNc(7,Bn,2,2,"div",4),t.YNc(8,Un,1,1,"nz-list-empty",5),t.BQk(),t.qZA(),t.YNc(9,Jn,2,1,"nz-list-footer",1),t.Hsn(10,1),t.YNc(11,Qn,0,0,"ng-template",6),t.Hsn(12,2),t.YNc(13,Ln,2,1,"nz-list-pagination",1),t.Hsn(14,3)),2&e){const a=t.MAs(1);t.xp6(2),t.Q6J("ngIf",o.nzHeader),t.xp6(2),t.Q6J("nzSpinning",o.nzLoading),t.xp6(2),t.Q6J("ngIf",o.nzLoading&&o.nzDataSource&&0===o.nzDataSource.length),t.xp6(1),t.Q6J("ngIf",o.nzGrid&&o.nzDataSource)("ngIfElse",a),t.xp6(1),t.Q6J("ngIf",!o.nzLoading&&o.nzDataSource&&0===o.nzDataSource.length),t.xp6(1),t.Q6J("ngIf",o.nzFooter),t.xp6(2),t.Q6J("ngTemplateOutlet",o.nzLoadMore),t.xp6(2),t.Q6J("ngIf",o.nzPagination)}},dependencies:[p.sg,p.O5,p.tP,ge.W,u.t3,u.SK,ct.f,_e,fe,Ce,he],encapsulation:2,changeDetection:0}),(0,D.gn)([(0,E.yF)()],i.prototype,"nzBordered",void 0),(0,D.gn)([(0,E.yF)()],i.prototype,"nzLoading",void 0),(0,D.gn)([(0,E.yF)()],i.prototype,"nzSplit",void 0),i})(),ke=(()=>{class i{constructor(e,o,a,s){this.parentComp=a,this.cdr=s,this.nzActions=[],this.nzExtra=null,this.nzNoFlex=!1,o.addClass(e.nativeElement,"ant-list-item")}get isVerticalAndExtra(){return!("vertical"!==this.itemLayout||!this.listItemExtraDirective&&!this.nzExtra)}ngAfterViewInit(){this.itemLayout$=this.parentComp.itemLayoutNotify$.subscribe(e=>{this.itemLayout=e,this.cdr.detectChanges()})}ngOnDestroy(){this.itemLayout$&&this.itemLayout$.unsubscribe()}}return i.\u0275fac=function(e){return new(e||i)(t.Y36(t.SBq),t.Y36(t.Qsj),t.Y36(ve),t.Y36(t.sBO))},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-list-item"],["","nz-list-item",""]],contentQueries:function(e,o,a){if(1&e&&t.Suo(a,de,5),2&e){let s;t.iGM(s=t.CRH())&&(o.listItemExtraDirective=s.first)}},hostVars:2,hostBindings:function(e,o){2&e&&t.ekj("ant-list-item-no-flex",o.nzNoFlex)},inputs:{nzActions:"nzActions",nzContent:"nzContent",nzExtra:"nzExtra",nzNoFlex:"nzNoFlex"},exportAs:["nzListItem"],ngContentSelectors:gi,decls:9,vars:2,consts:[["actionsTpl",""],["contentTpl",""],["extraTpl",""],["simpleTpl",""],[4,"ngIf","ngIfElse"],["nz-list-item-actions","",3,"nzActions",4,"ngIf"],["nz-list-item-actions","",3,"nzActions"],[4,"ngIf"],[4,"nzStringTemplateOutlet"],[3,"ngTemplateOutlet"],[1,"ant-list-item-main"]],template:function(e,o){if(1&e&&(t.F$t(ci),t.YNc(0,Rn,2,1,"ng-template",null,0,t.W1O),t.YNc(2,$n,3,1,"ng-template",null,1,t.W1O),t.YNc(4,Kn,1,0,"ng-template",null,2,t.W1O),t.YNc(6,ni,4,4,"ng-template",null,3,t.W1O),t.YNc(8,li,6,4,"ng-container",4)),2&e){const a=t.MAs(7);t.xp6(8),t.Q6J("ngIf",o.isVerticalAndExtra)("ngIfElse",a)}},dependencies:[p.O5,p.tP,ct.f,ye,de],encapsulation:2,changeDetection:0}),(0,D.gn)([(0,E.yF)()],i.prototype,"nzNoFlex",void 0),i})(),pi=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=t.oAB({type:i}),i.\u0275inj=t.cJS({imports:[Ct.vT,p.ez,ge.j,u.Jb,Me.Rt,ct.T,Te.Xo]}),i})();var oe=c(9562),di=c(2577),H=c(6675),hi=c(4968),ae=c(9300),_i=c(2539),mt=c(2536),De=c(4903);const Ee=["*"],fi=["collapseHeader"];function Ci(i,n){if(1&i&&(t.ynx(0),t._UZ(1,"span",7),t.BQk()),2&i){const e=n.$implicit,o=t.oxw(2);t.xp6(1),t.Q6J("nzType",e||"right")("nzRotate",o.nzActive?90:0)}}function vi(i,n){if(1&i&&(t.TgZ(0,"div"),t.YNc(1,Ci,2,2,"ng-container",3),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzExpandedIcon)}}function zi(i,n){if(1&i&&(t.ynx(0),t._uU(1),t.BQk()),2&i){const e=t.oxw();t.xp6(1),t.Oqu(e.nzHeader)}}function xi(i,n){if(1&i&&(t.ynx(0),t._uU(1),t.BQk()),2&i){const e=t.oxw(2);t.xp6(1),t.Oqu(e.nzExtra)}}function Oi(i,n){if(1&i&&(t.TgZ(0,"div",8),t.YNc(1,xi,2,1,"ng-container",3),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("nzStringTemplateOutlet",e.nzExtra)}}const Ze="collapse";let Ne=(()=>{class i{constructor(e,o,a,s){this.nzConfigService=e,this.cdr=o,this.directionality=a,this.destroy$=s,this._nzModuleName=Ze,this.nzAccordion=!1,this.nzBordered=!0,this.nzGhost=!1,this.nzExpandIconPosition="left",this.dir="ltr",this.listOfNzCollapsePanelComponent=[],this.nzConfigService.getConfigChangeEventForComponent(Ze).pipe((0,gt.R)(this.destroy$)).subscribe(()=>{this.cdr.markForCheck()})}ngOnInit(){this.directionality.change?.pipe((0,gt.R)(this.destroy$)).subscribe(e=>{this.dir=e,this.cdr.detectChanges()}),this.dir=this.directionality.value}addPanel(e){this.listOfNzCollapsePanelComponent.push(e)}removePanel(e){this.listOfNzCollapsePanelComponent.splice(this.listOfNzCollapsePanelComponent.indexOf(e),1)}click(e){this.nzAccordion&&!e.nzActive&&this.listOfNzCollapsePanelComponent.filter(o=>o!==e).forEach(o=>{o.nzActive&&(o.nzActive=!1,o.nzActiveChange.emit(o.nzActive),o.markForCheck())}),e.nzActive=!e.nzActive,e.nzActiveChange.emit(e.nzActive)}}return i.\u0275fac=function(e){return new(e||i)(t.Y36(mt.jY),t.Y36(t.sBO),t.Y36(Ct.Is,8),t.Y36(ut.kn))},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-collapse"]],hostAttrs:[1,"ant-collapse"],hostVars:10,hostBindings:function(e,o){2&e&&t.ekj("ant-collapse-icon-position-left","left"===o.nzExpandIconPosition)("ant-collapse-icon-position-right","right"===o.nzExpandIconPosition)("ant-collapse-ghost",o.nzGhost)("ant-collapse-borderless",!o.nzBordered)("ant-collapse-rtl","rtl"===o.dir)},inputs:{nzAccordion:"nzAccordion",nzBordered:"nzBordered",nzGhost:"nzGhost",nzExpandIconPosition:"nzExpandIconPosition"},exportAs:["nzCollapse"],features:[t._Bn([ut.kn])],ngContentSelectors:Ee,decls:1,vars:0,template:function(e,o){1&e&&(t.F$t(),t.Hsn(0))},encapsulation:2,changeDetection:0}),(0,D.gn)([(0,mt.oS)(),(0,E.yF)()],i.prototype,"nzAccordion",void 0),(0,D.gn)([(0,mt.oS)(),(0,E.yF)()],i.prototype,"nzBordered",void 0),(0,D.gn)([(0,mt.oS)(),(0,E.yF)()],i.prototype,"nzGhost",void 0),i})();const Be="collapsePanel";let Mi=(()=>{class i{constructor(e,o,a,s,g,m){this.nzConfigService=e,this.ngZone=o,this.cdr=a,this.destroy$=s,this.nzCollapseComponent=g,this.noAnimation=m,this._nzModuleName=Be,this.nzActive=!1,this.nzDisabled=!1,this.nzShowArrow=!0,this.nzActiveChange=new t.vpe,this.nzConfigService.getConfigChangeEventForComponent(Be).pipe((0,gt.R)(this.destroy$)).subscribe(()=>{this.cdr.markForCheck()})}markForCheck(){this.cdr.markForCheck()}ngOnInit(){this.nzCollapseComponent.addPanel(this),this.ngZone.runOutsideAngular(()=>(0,hi.R)(this.collapseHeader.nativeElement,"click").pipe((0,ae.h)(()=>!this.nzDisabled),(0,gt.R)(this.destroy$)).subscribe(()=>{this.ngZone.run(()=>{this.nzCollapseComponent.click(this),this.cdr.markForCheck()})}))}ngOnDestroy(){this.nzCollapseComponent.removePanel(this)}}return i.\u0275fac=function(e){return new(e||i)(t.Y36(mt.jY),t.Y36(t.R0b),t.Y36(t.sBO),t.Y36(ut.kn),t.Y36(Ne,1),t.Y36(De.P,8))},i.\u0275cmp=t.Xpm({type:i,selectors:[["nz-collapse-panel"]],viewQuery:function(e,o){if(1&e&&t.Gf(fi,7),2&e){let a;t.iGM(a=t.CRH())&&(o.collapseHeader=a.first)}},hostAttrs:[1,"ant-collapse-item"],hostVars:6,hostBindings:function(e,o){2&e&&t.ekj("ant-collapse-no-arrow",!o.nzShowArrow)("ant-collapse-item-active",o.nzActive)("ant-collapse-item-disabled",o.nzDisabled)},inputs:{nzActive:"nzActive",nzDisabled:"nzDisabled",nzShowArrow:"nzShowArrow",nzExtra:"nzExtra",nzHeader:"nzHeader",nzExpandedIcon:"nzExpandedIcon"},outputs:{nzActiveChange:"nzActiveChange"},exportAs:["nzCollapsePanel"],features:[t._Bn([ut.kn])],ngContentSelectors:Ee,decls:8,vars:8,consts:[["role","button",1,"ant-collapse-header"],["collapseHeader",""],[4,"ngIf"],[4,"nzStringTemplateOutlet"],["class","ant-collapse-extra",4,"ngIf"],[1,"ant-collapse-content"],[1,"ant-collapse-content-box"],["nz-icon","",1,"ant-collapse-arrow",3,"nzType","nzRotate"],[1,"ant-collapse-extra"]],template:function(e,o){1&e&&(t.F$t(),t.TgZ(0,"div",0,1),t.YNc(2,vi,2,1,"div",2),t.YNc(3,zi,2,1,"ng-container",3),t.YNc(4,Oi,2,1,"div",4),t.qZA(),t.TgZ(5,"div",5)(6,"div",6),t.Hsn(7),t.qZA()()),2&e&&(t.uIk("aria-expanded",o.nzActive),t.xp6(2),t.Q6J("ngIf",o.nzShowArrow),t.xp6(1),t.Q6J("nzStringTemplateOutlet",o.nzHeader),t.xp6(1),t.Q6J("ngIf",o.nzExtra),t.xp6(1),t.ekj("ant-collapse-content-active",o.nzActive),t.Q6J("@.disabled",!(null==o.noAnimation||!o.noAnimation.nzNoAnimation))("@collapseMotion",o.nzActive?"expanded":"hidden"))},dependencies:[p.O5,lt.Ls,ct.f],encapsulation:2,data:{animation:[_i.J_]},changeDetection:0}),(0,D.gn)([(0,E.yF)()],i.prototype,"nzActive",void 0),(0,D.gn)([(0,E.yF)()],i.prototype,"nzDisabled",void 0),(0,D.gn)([(0,mt.oS)(),(0,E.yF)()],i.prototype,"nzShowArrow",void 0),i})(),bi=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=t.oAB({type:i}),i.\u0275inj=t.cJS({imports:[Ct.vT,p.ez,lt.PV,ct.T,De.g]}),i})();var Pi=c(4466),w=c(262),F=c(4007),Z=c(324),L=c(387),S=c(5136);class ${constructor(n,e,o){this.logger=n,this.notification=e,this.settingService=o}resolve(n,e){return this.settingService.getSettings(["output","logging","biliApi","header","danmaku","recorder","postprocessing","space"]).pipe((0,F.X)(3,300),(0,w.K)(o=>{throw this.logger.error("Failed to get settings:",o),this.notification.error("\u83b7\u53d6\u8bbe\u7f6e\u51fa\u9519",o.message,{nzDuration:0}),o}))}}$.\u0275fac=function(n){return new(n||$)(t.LFG(Z.Kf),t.LFG(L.zb),t.LFG(S.R))},$.\u0275prov=t.Yz7({token:$,factory:$.\u0275fac});var T=c(4004);class K{constructor(n,e,o){this.logger=n,this.notification=e,this.settingService=o}resolve(n,e){return this.settingService.getSettings(["emailNotification"]).pipe((0,T.U)(o=>o.emailNotification),(0,F.X)(3,300),(0,w.K)(o=>{throw this.logger.error("Failed to get email notification settings:",o),this.notification.error("\u83b7\u53d6\u90ae\u4ef6\u901a\u77e5\u8bbe\u7f6e\u51fa\u9519",o.message,{nzDuration:0}),o}))}}K.\u0275fac=function(n){return new(n||K)(t.LFG(Z.Kf),t.LFG(L.zb),t.LFG(S.R))},K.\u0275prov=t.Yz7({token:K,factory:K.\u0275fac});class X{constructor(n,e,o){this.logger=n,this.notification=e,this.settingService=o}resolve(n,e){return this.settingService.getSettings(["serverchanNotification"]).pipe((0,T.U)(o=>o.serverchanNotification),(0,F.X)(3,300),(0,w.K)(o=>{throw this.logger.error("Failed to get ServerChan notification settings:",o),this.notification.error("\u83b7\u53d6 ServerChan \u901a\u77e5\u8bbe\u7f6e\u51fa\u9519",o.message,{nzDuration:0}),o}))}}X.\u0275fac=function(n){return new(n||X)(t.LFG(Z.Kf),t.LFG(L.zb),t.LFG(S.R))},X.\u0275prov=t.Yz7({token:X,factory:X.\u0275fac});class j{constructor(n,e,o){this.logger=n,this.notification=e,this.settingService=o}resolve(n,e){return this.settingService.getSettings(["pushdeerNotification"]).pipe((0,T.U)(o=>o.pushdeerNotification),(0,F.X)(3,300),(0,w.K)(o=>{throw this.logger.error("Failed to get PushDeer notification settings:",o),this.notification.error("\u83b7\u53d6 pushdeer \u901a\u77e5\u8bbe\u7f6e\u51fa\u9519",o.message,{nzDuration:0}),o}))}}j.\u0275fac=function(n){return new(n||j)(t.LFG(Z.Kf),t.LFG(L.zb),t.LFG(S.R))},j.\u0275prov=t.Yz7({token:j,factory:j.\u0275fac});class tt{constructor(n,e,o){this.logger=n,this.notification=e,this.settingService=o}resolve(n,e){return this.settingService.getSettings(["pushplusNotification"]).pipe((0,T.U)(o=>o.pushplusNotification),(0,F.X)(3,300),(0,w.K)(o=>{throw this.logger.error("Failed to get pushplus notification settings:",o),this.notification.error("\u83b7\u53d6 pushplus \u901a\u77e5\u8bbe\u7f6e\u51fa\u9519",o.message,{nzDuration:0}),o}))}}tt.\u0275fac=function(n){return new(n||tt)(t.LFG(Z.Kf),t.LFG(L.zb),t.LFG(S.R))},tt.\u0275prov=t.Yz7({token:tt,factory:tt.\u0275fac});class et{constructor(n,e,o){this.logger=n,this.notification=e,this.settingService=o}resolve(n,e){return this.settingService.getSettings(["telegramNotification"]).pipe((0,T.U)(o=>o.telegramNotification),(0,F.X)(3,300),(0,w.K)(o=>{throw this.logger.error("Failed to get telegram notification settings:",o),this.notification.error("\u83b7\u53d6 telegram \u901a\u77e5\u8bbe\u7f6e\u51fa\u9519",o.message,{nzDuration:0}),o}))}}et.\u0275fac=function(n){return new(n||et)(t.LFG(Z.Kf),t.LFG(L.zb),t.LFG(S.R))},et.\u0275prov=t.Yz7({token:et,factory:et.\u0275fac});class nt{constructor(n,e,o){this.logger=n,this.notification=e,this.settingService=o}resolve(n,e){return this.settingService.getSettings(["webhooks"]).pipe((0,T.U)(o=>o.webhooks),(0,F.X)(3,300),(0,w.K)(o=>{throw this.logger.error("Failed to get webhook settings:",o),this.notification.error("\u83b7\u53d6 Webhook \u8bbe\u7f6e\u51fa\u9519",o.message,{nzDuration:0}),o}))}}nt.\u0275fac=function(n){return new(n||nt)(t.LFG(Z.Kf),t.LFG(L.zb),t.LFG(S.R))},nt.\u0275prov=t.Yz7({token:nt,factory:nt.\u0275fac});var v=c(6582);class it{constructor(n,e,o){this.logger=n,this.notification=e,this.settingService=o}resolve(n,e){return this.settingService.getSettings(["barkNotification"]).pipe((0,T.U)(o=>o.barkNotification),(0,F.X)(3,300),(0,w.K)(o=>{throw this.logger.error("Failed to get bark notification settings:",o),this.notification.error("\u83b7\u53d6 bark \u901a\u77e5\u8bbe\u7f6e\u51fa\u9519",o.message,{nzDuration:0}),o}))}}it.\u0275fac=function(n){return new(n||it)(t.LFG(Z.Kf),t.LFG(L.zb),t.LFG(S.R))},it.\u0275prov=t.Yz7({token:it,factory:it.\u0275fac});var Ue=c(5026),Ti=c(5363),wi=c(4986),Ie=c(4704),b=c(2340);const x="RouterScrollService",Je="defaultViewport",Qe="customViewport";class pt{constructor(n,e,o,a){this.router=n,this.activatedRoute=e,this.viewportScroller=o,this.logger=a,this.addQueue=[],this.addBeforeNavigationQueue=[],this.removeQueue=[],this.routeStrategies=[],this.scrollDefaultViewport=!0,this.customViewportToScroll=null,b.N.traceRouterScrolling&&this.logger.trace(`${x}:: constructor`),b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Subscribing to router events`);const s=this.router.events.pipe((0,ae.h)(g=>g instanceof v.OD||g instanceof v.m2),(0,T.U)(g=>g),(0,Ue.R)((g,m)=>{b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Updating the known scroll positions`);const h={...g.positions};return m instanceof v.OD&&this.scrollDefaultViewport&&(b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Storing the scroll position of the default viewport`),h[`${m.id}-${Je}`]=this.viewportScroller.getScrollPosition()),m instanceof v.OD&&this.customViewportToScroll&&(b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Storing the scroll position of the custom viewport`),h[`${m.id}-${Qe}`]=this.customViewportToScroll.scrollTop),{event:m,positions:h,trigger:m instanceof v.OD?m.navigationTrigger:g.trigger,idToRestore:m instanceof v.OD&&m.restoredState&&m.restoredState.navigationId+1||g.idToRestore,routeData:this.activatedRoute.firstChild?.routeConfig?.data}},{event:{},positions:{},idToRestore:-1}),(0,ae.h)(g=>!!g.trigger),(0,Ti.Q)(wi.z));this.scrollPositionRestorationSubscription=s.subscribe(g=>{const m=this.routeStrategies.find(ft=>g.event.url.indexOf(ft.partialRoute)>-1),h=m&&m.behaviour===Ie.g.KEEP_POSITION||!1,k=g.routeData&&g.routeData.scrollBehavior&&g.routeData.scrollBehavior===Ie.g.KEEP_POSITION||!1,J=h||k;if(g.event instanceof v.m2){this.processRemoveQueue(this.removeQueue);const ft=g.trigger&&"imperative"===g.trigger||!1,ce=!J||ft;b.N.traceRouterScrolling&&(this.logger.trace(`${x}:: Existing strategy with keep position behavior? `,h),this.logger.trace(`${x}:: Route data with keep position behavior? `,k),this.logger.trace(`${x}:: Imperative trigger? `,ft),this.logger.debug(`${x}:: Should scroll? `,ce)),ce?(this.scrollDefaultViewport&&(b.N.traceRouterScrolling&&this.logger.debug(`${x}:: Scrolling the default viewport`),this.viewportScroller.scrollToPosition([0,0])),this.customViewportToScroll&&(b.N.traceRouterScrolling&&this.logger.debug(`${x}:: Scrolling a custom viewport: `,this.customViewportToScroll),this.customViewportToScroll.scrollTop=0)):(b.N.traceRouterScrolling&&this.logger.debug(`${x}:: Not scrolling`),this.scrollDefaultViewport&&this.viewportScroller.scrollToPosition(g.positions[`${g.idToRestore}-${Je}`]),this.customViewportToScroll&&(this.customViewportToScroll.scrollTop=g.positions[`${g.idToRestore}-${Qe}`])),this.processRemoveQueue(this.addBeforeNavigationQueue.map(es=>es.partialRoute),!0),this.processAddQueue(this.addQueue),this.addQueue=[],this.removeQueue=[],this.addBeforeNavigationQueue=[]}else this.processAddQueue(this.addBeforeNavigationQueue)})}addStrategyOnceBeforeNavigationForPartialRoute(n,e){b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Adding a strategy once for before navigation towards [${n}]: `,e),this.addBeforeNavigationQueue.push({partialRoute:n,behaviour:e,onceBeforeNavigation:!0})}addStrategyForPartialRoute(n,e){b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Adding a strategy for partial route: [${n}]`,e),this.addQueue.push({partialRoute:n,behaviour:e})}removeStrategyForPartialRoute(n){b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Removing strategory for: [${n}]: `),this.removeQueue.push(n)}setCustomViewportToScroll(n){b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Setting a custom viewport to scroll: `,n),this.customViewportToScroll=n}disableScrollDefaultViewport(){b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Disabling scrolling the default viewport`),this.scrollDefaultViewport=!1}enableScrollDefaultViewPort(){b.N.traceRouterScrolling&&this.logger.trace(`${x}:: Enabling scrolling the default viewport`),this.scrollDefaultViewport=!0}processAddQueue(n){for(const e of n)-1===this.routeStrategyPosition(e.partialRoute)&&this.routeStrategies.push(e)}processRemoveQueue(n,e=!1){for(const o of n){const a=this.routeStrategyPosition(o);!e&&a>-1&&this.routeStrategies[a].onceBeforeNavigation||a>-1&&this.routeStrategies.splice(a,1)}}routeStrategyPosition(n){return this.routeStrategies.map(e=>e.partialRoute).indexOf(n)}ngOnDestroy(){b.N.traceRouterScrolling&&this.logger.trace(`${x}:: ngOnDestroy`),this.scrollPositionRestorationSubscription&&this.scrollPositionRestorationSubscription.unsubscribe()}}pt.\u0275fac=function(n){return new(n||pt)(t.LFG(v.F0),t.LFG(v.gz),t.LFG(p.EM),t.LFG(Z.Kf))},pt.\u0275prov=t.Yz7({token:pt,factory:pt.\u0275fac,providedIn:"root"});var q=c(4670),Fi=c(3496),Si=c(1149),yi=c(7242);const M=function Ai(i,n){var e={};return n=(0,yi.Z)(n,3),(0,Si.Z)(i,function(o,a,s){(0,Fi.Z)(e,a,n(o,a,s))}),e};var re=c(8505),ki=c(4884),Di=c(4116),Ve=c(4825),Le=c(4177),qe=c(8706),Ei=c(5202),Zi=c(1986),Ni=c(7583),Ji=Object.prototype.hasOwnProperty;var Li=c(1854),qi=c(2134),se=c(9651);function P(i){const n="result"in i;return M(i.diff,()=>n)}class z{constructor(n,e){this.message=n,this.settingService=e}syncSettings(n,e,o,a=!0){return o.pipe((0,Ue.R)(([,s],g)=>[s,g,(0,qi.e5)(g,s,a)],[e,e,{}]),(0,ae.h)(([,,s])=>!function Qi(i){if(null==i)return!0;if((0,qe.Z)(i)&&((0,Le.Z)(i)||"string"==typeof i||"function"==typeof i.splice||(0,Ei.Z)(i)||(0,Ni.Z)(i)||(0,Ve.Z)(i)))return!i.length;var n=(0,Di.Z)(i);if("[object Map]"==n||"[object Set]"==n)return!i.size;if((0,Zi.Z)(i))return!(0,ki.Z)(i).length;for(var e in i)if(Ji.call(i,e))return!1;return!0}(s)),(0,Pe.w)(([s,g,m])=>this.settingService.changeSettings({[n]:m}).pipe((0,F.X)(3,300),(0,re.b)(h=>{console.assert((0,Li.Z)(h[n],g),"result settings should equal current settings",{curr:g,result:h[n]})},h=>{this.message.error(`\u8bbe\u7f6e\u51fa\u9519: ${h.message}`)}),(0,T.U)(h=>({prev:s,curr:g,diff:m,result:h[n]})),(0,w.K)(h=>(0,ie.of)({prev:s,curr:g,diff:m,error:h})))),(0,re.b)(s=>console.debug(`${n} settings sync detail:`,s)))}}z.\u0275fac=function(n){return new(n||z)(t.LFG(se.dD),t.LFG(S.R))},z.\u0275prov=t.Yz7({token:z,factory:z.\u0275fac,providedIn:"root"});var d=c(4960);class y{get actionable(){return this.directive?.valueAccessor instanceof U.i}constructor(){}onClick(n){n.target===n.currentTarget&&(n.preventDefault(),n.stopPropagation(),this.directive?.valueAccessor instanceof U.i&&this.directive.control.setValue(!this.directive.control.value))}}y.\u0275fac=function(n){return new(n||y)},y.\u0275dir=t.lG2({type:y,selectors:[["","appSwitchActionable",""]],contentQueries:function(n,e,o){if(1&n&&t.Suo(o,r.u,5),2&n){let a;t.iGM(a=t.CRH())&&(e.directive=a.first)}},hostVars:2,hostBindings:function(n,e){1&n&&t.NdJ("click",function(a){return e.onClick(a)}),2&n&&t.ekj("actionable",e.actionable)}});class xt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.intervalOptions=[{label:"\u4e0d\u68c0\u6d4b",value:0},{label:"10 \u79d2",value:10},{label:"30 \u79d2",value:30},{label:"1 \u5206\u949f",value:60},{label:"3 \u5206\u949f",value:180},{label:"5 \u5206\u949f",value:300},{label:"10 \u5206\u949f",value:600}],this.thresholdOptions=[{label:"1 GB",value:1024**3},{label:"3 GB",value:1024**3*3},{label:"5 GB",value:1024**3*5},{label:"10 GB",value:1024**3*10},{label:"20 GB",value:1024**3*20}],this.settingsForm=n.group({recycleRecords:[""],checkInterval:[""],spaceThreshold:[""]})}get recycleRecordsControl(){return this.settingsForm.get("recycleRecords")}get checkIntervalControl(){return this.settingsForm.get("checkInterval")}get spaceThresholdControl(){return this.settingsForm.get("spaceThreshold")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("space",this.settings,this.settingsForm.valueChanges).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}xt.\u0275fac=function(n){return new(n||xt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},xt.\u0275cmp=t.Xpm({type:xt,selectors:[["app-disk-space-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:16,vars:9,consts:[["nz-form","",3,"formGroup"],[1,"setting-item"],["nzNoColon","",1,"setting-label"],[1,"setting-control","select",3,"nzWarningTip","nzValidateStatus"],["formControlName","checkInterval",3,"nzOptions"],["formControlName","spaceThreshold",3,"nzOptions"],["appSwitchActionable","",1,"setting-item"],[1,"setting-control","switch",3,"nzWarningTip","nzValidateStatus"],["formControlName","recycleRecords"]],template:function(n,e){1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"\u786c\u76d8\u7a7a\u95f4\u68c0\u6d4b\u95f4\u9694"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"nz-select",4),t.qZA()(),t.TgZ(6,"nz-form-item",1)(7,"nz-form-label",2),t._uU(8,"\u786c\u76d8\u7a7a\u95f4\u68c0\u6d4b\u9608\u503c"),t.qZA(),t.TgZ(9,"nz-form-control",3),t._UZ(10,"nz-select",5),t.qZA()(),t.TgZ(11,"nz-form-item",6)(12,"nz-form-label",2),t._uU(13,"\u7a7a\u95f4\u4e0d\u8db3\u5220\u9664\u65e7\u5f55\u64ad\u6587\u4ef6"),t.qZA(),t.TgZ(14,"nz-form-control",7),t._UZ(15,"nz-switch",8),t.qZA()()()),2&n&&(t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.checkInterval?e.checkIntervalControl:"warning"),t.xp6(1),t.Q6J("nzOptions",e.intervalOptions),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.spaceThreshold?e.spaceThresholdControl:"warning"),t.xp6(1),t.Q6J("nzOptions",e.thresholdOptions),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.recycleRecords?e.recycleRecordsControl:"warning"))},dependencies:[r._Y,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,U.i,zt.Vq,y],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});var I=c(7044);class Ot{}Ot.\u0275fac=function(n){return new(n||Ot)},Ot.\u0275cmp=t.Xpm({type:Ot,selectors:[["app-notification-settings"]],decls:30,vars:0,consts:[["routerLink","email-notification",1,"setting-item"],[1,"setting-label"],[1,"setting-control"],["nz-icon","","nzType","right"],["routerLink","serverchan-notification",1,"setting-item"],["routerLink","pushdeer-notification",1,"setting-item"],["routerLink","pushplus-notification",1,"setting-item"],["routerLink","telegram-notification",1,"setting-item"],["routerLink","bark-notification",1,"setting-item"]],template:function(n,e){1&n&&(t.TgZ(0,"a",0)(1,"span",1),t._uU(2,"\u90ae\u7bb1\u901a\u77e5"),t.qZA(),t.TgZ(3,"span",2),t._UZ(4,"i",3),t.qZA()(),t.TgZ(5,"a",4)(6,"span",1),t._uU(7,"ServerChan \u901a\u77e5"),t.qZA(),t.TgZ(8,"span",2),t._UZ(9,"i",3),t.qZA()(),t.TgZ(10,"a",5)(11,"span",1),t._uU(12,"PushDeer \u901a\u77e5"),t.qZA(),t.TgZ(13,"span",2),t._UZ(14,"i",3),t.qZA()(),t.TgZ(15,"a",6)(16,"span",1),t._uU(17,"pushplus \u901a\u77e5"),t.qZA(),t.TgZ(18,"span",2),t._UZ(19,"i",3),t.qZA()(),t.TgZ(20,"a",7)(21,"span",1),t._uU(22,"telegram \u901a\u77e5"),t.qZA(),t.TgZ(23,"span",2),t._UZ(24,"i",3),t.qZA()(),t.TgZ(25,"a",8)(26,"span",1),t._uU(27,"Bark \u901a\u77e5"),t.qZA(),t.TgZ(28,"span",2),t._UZ(29,"i",3),t.qZA()())},dependencies:[v.rH,I.w,lt.Ls],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});var Yi=Math.ceil,Wi=Math.max;var Hi=c(3093),Ye=c(6667),Mt=c(1999);var Xi=/\s/;var eo=/^\s+/;const io=function no(i){return i&&i.slice(0,function ji(i){for(var n=i.length;n--&&Xi.test(i.charAt(n)););return n}(i)+1).replace(eo,"")};var oo=c(6460),ao=/^[-+]0x[0-9a-f]+$/i,ro=/^0b[01]+$/i,so=/^0o[0-7]+$/i,lo=parseInt;const ze=function mo(i){return i?Infinity===(i=function co(i){if("number"==typeof i)return i;if((0,oo.Z)(i))return NaN;if((0,Mt.Z)(i)){var n="function"==typeof i.valueOf?i.valueOf():i;i=(0,Mt.Z)(n)?n+"":n}if("string"!=typeof i)return 0===i?i:+i;i=io(i);var e=ro.test(i);return e||so.test(i)?lo(i.slice(2),e?2:8):ao.test(i)?NaN:+i}(i))||-Infinity===i?17976931348623157e292*(i<0?-1:1):i==i?i:0:0===i?i:0},_o=function po(i){return function(n,e,o){return o&&"number"!=typeof o&&function $i(i,n,e){if(!(0,Mt.Z)(e))return!1;var o=typeof n;return!!("number"==o?(0,qe.Z)(e)&&(0,Ye.Z)(n,e.length):"string"==o&&n in e)&&(0,Hi.Z)(e[n],i)}(n,e,o)&&(e=o=void 0),n=ze(n),void 0===e?(e=n,n=0):e=ze(e),function Ri(i,n,e,o){for(var a=-1,s=Wi(Yi((n-i)/(e||1)),0),g=Array(s);s--;)g[o?s:++a]=i,i+=e;return g}(n,e,o=void 0===o?n<e?1:-1:ze(o),i)}}();var ot=(()=>{return(i=ot||(ot={}))[i.EACCES=13]="EACCES",i[i.ENOTDIR=20]="ENOTDIR",ot;var i})(),fo=c(529),Co=c(7930);class Y{constructor(n,e){this.http=n,this.url=e}validateDir(n){const e=this.url.makeApiUrl("/api/v1/validation/dir");return this.http.post(e,{path:n})}validateCookie(n){const e=this.url.makeApiUrl("/api/v1/validation/cookie");return this.http.post(e,{cookie:n})}}function vo(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165\u4fdd\u5b58\u4f4d\u7f6e "),t.BQk())}function zo(i,n){1&i&&(t.ynx(0),t._uU(1," \u4e0d\u662f\u4e00\u4e2a\u76ee\u5f55 "),t.BQk())}function xo(i,n){1&i&&(t.ynx(0),t._uU(1," \u6ca1\u6709\u8bfb\u5199\u6743\u9650 "),t.BQk())}function Oo(i,n){1&i&&(t.ynx(0),t._uU(1," \u672a\u80fd\u8fdb\u884c\u9a8c\u8bc1 "),t.BQk())}function Mo(i,n){if(1&i&&(t.YNc(0,vo,2,0,"ng-container",6),t.YNc(1,zo,2,0,"ng-container",6),t.YNc(2,xo,2,0,"ng-container",6),t.YNc(3,Oo,2,0,"ng-container",6)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("notADirectory")),t.xp6(1),t.Q6J("ngIf",e.hasError("noPermissions")),t.xp6(1),t.Q6J("ngIf",e.hasError("failedToValidate"))}}function bo(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"form",2)(2,"nz-form-item")(3,"nz-form-control",3),t._UZ(4,"input",4),t.YNc(5,Mo,4,4,"ng-template",null,5,t.W1O),t.qZA()()(),t.BQk()),2&i){const e=t.MAs(6),o=t.oxw();t.xp6(1),t.Q6J("formGroup",o.settingsForm),t.xp6(2),t.Q6J("nzErrorTip",e)}}Y.\u0275fac=function(n){return new(n||Y)(t.LFG(fo.eN),t.LFG(Co.i))},Y.\u0275prov=t.Yz7({token:Y,factory:Y.\u0275fac,providedIn:"root"});class bt{constructor(n,e,o){this.changeDetector=e,this.validationService=o,this.value="",this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.logDirAsyncValidator=a=>this.validationService.validateDir(a.value).pipe((0,T.U)(s=>{switch(s.code){case ot.ENOTDIR:return{error:!0,notADirectory:!0};case ot.EACCES:return{error:!0,noPermissions:!0};default:return null}}),(0,w.K)(()=>(0,ie.of)({error:!0,failedToValidate:!0}))),this.settingsForm=n.group({logDir:["",[r.kI.required],[this.logDirAsyncValidator]]})}get control(){return this.settingsForm.get("logDir")}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){this.control.setValue(this.value),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){this.confirm.emit(this.control.value.trim()),this.close()}}bt.\u0275fac=function(n){return new(n||bt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(Y))},bt.\u0275cmp=t.Xpm({type:bt,selectors:[["app-logdir-edit-dialog"]],inputs:{value:"value",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:2,vars:2,consts:[["nzTitle","\u4fee\u6539\u65e5\u5fd7\u6587\u4ef6\u5b58\u653e\u76ee\u5f55","nzCentered","",3,"nzVisible","nzOkDisabled","nzVisibleChange","nzOnOk","nzOnCancel"],[4,"nzModalContent"],["nz-form","",3,"formGroup"],["nzHasFeedback","","nzValidatingTip","\u6b63\u5728\u9a8c\u8bc1...",3,"nzErrorTip"],["type","text","required","","nz-input","","formControlName","logDir"],["errorTip",""],[4,"ngIf"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzVisibleChange",function(a){return e.visible=a})("nzOnOk",function(){return e.handleConfirm()})("nzOnCancel",function(){return e.handleCancel()}),t.YNc(1,bo,7,2,"ng-container",1),t.qZA()),2&n&&t.Q6J("nzVisible",e.visible)("nzOkDisabled",e.control.invalid||e.control.value.trim()===e.value)},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.Fd,O.Zp,_.du,_.Hf],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Pt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.logLevelOptions=[{label:"VERBOSE",value:"NOTSET"},{label:"DEBUG",value:"DEBUG"},{label:"INFO",value:"INFO"},{label:"WARNING",value:"WARNING"},{label:"ERROR",value:"ERROR"},{label:"CRITICAL",value:"CRITICAL"}],this.backupOptions=_o(0,91).map(a=>({label:a.toString(),value:a})),this.settingsForm=n.group({logDir:[""],consoleLogLevel:[""],backupCount:[""]})}get logDirControl(){return this.settingsForm.get("logDir")}get consoleLogLevelControl(){return this.settingsForm.get("consoleLogLevel")}get backupCountControl(){return this.settingsForm.get("backupCount")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("logging",this.settings,this.settingsForm.valueChanges).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}Pt.\u0275fac=function(n){return new(n||Pt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},Pt.\u0275cmp=t.Xpm({type:Pt,selectors:[["app-logging-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:19,vars:11,consts:[["nz-form","",3,"formGroup"],[1,"setting-item","actionable",3,"click"],[1,"setting-label"],[3,"nzWarningTip","nzValidateStatus"],[1,"setting-value"],[3,"value","confirm"],["logDirEditDialog",""],["appSwitchActionable","",1,"setting-item"],["nzNoColon","",1,"setting-label"],[1,"setting-control","select",3,"nzWarningTip","nzValidateStatus"],["formControlName","consoleLogLevel",3,"nzOptions"],[1,"setting-item"],["formControlName","backupCount",3,"nzOptions"]],template:function(n,e){if(1&n){const o=t.EpF();t.TgZ(0,"form",0)(1,"nz-form-item",1),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(8);return t.KtG(s.open())}),t.TgZ(2,"nz-form-label",2),t._uU(3,"\u65e5\u5fd7\u6587\u4ef6\u5b58\u653e\u76ee\u5f55"),t.qZA(),t.TgZ(4,"nz-form-control",3)(5,"nz-form-text",4),t._uU(6),t.qZA(),t.TgZ(7,"app-logdir-edit-dialog",5,6),t.NdJ("confirm",function(s){return e.logDirControl.setValue(s)}),t.qZA()()(),t.TgZ(9,"nz-form-item",7)(10,"nz-form-label",8),t._uU(11,"\u7ec8\u7aef\u65e5\u5fd7\u8f93\u51fa\u7ea7\u522b"),t.qZA(),t.TgZ(12,"nz-form-control",9),t._UZ(13,"nz-select",10),t.qZA()(),t.TgZ(14,"nz-form-item",11)(15,"nz-form-label",8),t._uU(16,"\u65e5\u5fd7\u6587\u4ef6\u5907\u4efd\u6570\u91cf"),t.qZA(),t.TgZ(17,"nz-form-control",9),t._UZ(18,"nz-select",12),t.qZA()()()}2&n&&(t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.logDir?e.logDirControl:"warning"),t.xp6(2),t.hij("",e.logDirControl.value," "),t.xp6(1),t.Q6J("value",e.logDirControl.value),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.consoleLogLevel?e.consoleLogLevelControl:"warning"),t.xp6(1),t.Q6J("nzOptions",e.logLevelOptions),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.backupCount?e.backupCountControl:"warning"),t.xp6(1),t.Q6J("nzOptions",e.backupOptions))},dependencies:[r._Y,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,l.EF,zt.Vq,y,bt],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Tt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({danmuUname:[""],recordGiftSend:[""],recordFreeGifts:[""],recordGuardBuy:[""],recordSuperChat:[""],saveRawDanmaku:[""]})}get danmuUnameControl(){return this.settingsForm.get("danmuUname")}get recordGiftSendControl(){return this.settingsForm.get("recordGiftSend")}get recordFreeGiftsControl(){return this.settingsForm.get("recordFreeGifts")}get recordGuardBuyControl(){return this.settingsForm.get("recordGuardBuy")}get recordSuperChatControl(){return this.settingsForm.get("recordSuperChat")}get saveRawDanmakuControl(){return this.settingsForm.get("saveRawDanmaku")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("danmaku",this.settings,this.settingsForm.valueChanges).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}function Po(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1," \u81ea\u52a8: \u6ca1\u51fa\u9519\u5c31\u5220\u9664\u6e90\u6587\u4ef6"),t._UZ(2,"br"),t._uU(3," \u8c28\u614e: \u6ca1\u51fa\u9519\u4e14\u6ca1\u8b66\u544a\u624d\u5220\u9664\u6e90\u6587\u4ef6"),t._UZ(4,"br"),t._uU(5," \u4ece\u4e0d: \u603b\u662f\u4fdd\u7559\u6e90\u6587\u4ef6"),t._UZ(6,"br"),t.qZA())}function To(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"label",13),t._uU(2),t.qZA(),t.BQk()),2&i){const e=n.$implicit;t.xp6(1),t.Q6J("nzValue",e.value),t.xp6(1),t.Oqu(e.label)}}Tt.\u0275fac=function(n){return new(n||Tt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},Tt.\u0275cmp=t.Xpm({type:Tt,selectors:[["app-danmaku-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:31,vars:13,consts:[["nz-form","",3,"formGroup"],["appSwitchActionable","",1,"setting-item"],["nzNoColon","","nzTooltipTitle","\u8bb0\u5f55\u793c\u7269\u4fe1\u606f\u5230\u5f39\u5e55\u6587\u4ef6\u91cc",1,"setting-label"],[1,"setting-control","switch",3,"nzWarningTip","nzValidateStatus"],["formControlName","recordGiftSend"],["nzNoColon","","nzTooltipTitle","\u8bb0\u5f55\u514d\u8d39\u793c\u7269\u4fe1\u606f\u5230\u5f39\u5e55\u6587\u4ef6\u91cc",1,"setting-label"],["formControlName","recordFreeGifts"],["nzNoColon","","nzTooltipTitle","\u8bb0\u5f55\u4e0a\u8230\u4fe1\u606f\u5230\u5f39\u5e55\u6587\u4ef6\u91cc",1,"setting-label"],["formControlName","recordGuardBuy"],["nzNoColon","","nzTooltipTitle","\u8bb0\u5f55 Super Chat \u4fe1\u606f\u5230\u5f39\u5e55\u6587\u4ef6\u91cc",1,"setting-label"],["formControlName","recordSuperChat"],["nzNoColon","","nzTooltipTitle","\u53d1\u9001\u8005: \u5f39\u5e55\u5185\u5bb9",1,"setting-label"],["formControlName","danmuUname"],["nzNoColon","","nzTooltipTitle","\u4fdd\u5b58\u539f\u59cb\u5f39\u5e55\u5230 JSON lines \u6587\u4ef6\uff0c\u4e3b\u8981\u7528\u4e8e\u5206\u6790\u8c03\u8bd5\u3002",1,"setting-label"],["formControlName","saveRawDanmaku"]],template:function(n,e){1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"\u8bb0\u5f55\u793c\u7269"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"nz-switch",4),t.qZA()(),t.TgZ(6,"nz-form-item",1)(7,"nz-form-label",5),t._uU(8,"\u8bb0\u5f55\u514d\u8d39\u793c\u7269"),t.qZA(),t.TgZ(9,"nz-form-control",3),t._UZ(10,"nz-switch",6),t.qZA()(),t.TgZ(11,"nz-form-item",1)(12,"nz-form-label",7),t._uU(13,"\u8bb0\u5f55\u4e0a\u8230"),t.qZA(),t.TgZ(14,"nz-form-control",3),t._UZ(15,"nz-switch",8),t.qZA()(),t.TgZ(16,"nz-form-item",1)(17,"nz-form-label",9),t._uU(18,"\u8bb0\u5f55 Super Chat"),t.qZA(),t.TgZ(19,"nz-form-control",3),t._UZ(20,"nz-switch",10),t.qZA()(),t.TgZ(21,"nz-form-item",1)(22,"nz-form-label",11),t._uU(23,"\u5f39\u5e55\u524d\u52a0\u7528\u6237\u540d"),t.qZA(),t.TgZ(24,"nz-form-control",3),t._UZ(25,"nz-switch",12),t.qZA()(),t.TgZ(26,"nz-form-item",1)(27,"nz-form-label",13),t._uU(28,"\u4fdd\u5b58\u539f\u59cb\u5f39\u5e55"),t.qZA(),t.TgZ(29,"nz-form-control",3),t._UZ(30,"nz-switch",14),t.qZA()()()),2&n&&(t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.recordGiftSend?e.recordGiftSendControl:"warning"),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.recordFreeGifts?e.recordFreeGiftsControl:"warning"),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.recordGuardBuy?e.recordGuardBuyControl:"warning"),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.recordSuperChat?e.recordSuperChatControl:"warning"),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.danmuUname?e.danmuUnameControl:"warning"),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.saveRawDanmaku?e.saveRawDanmakuControl:"warning"))},dependencies:[r._Y,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,U.i,y],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class wt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.deleteStrategies=d.rc,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({injectExtraMetadata:[""],remuxToMp4:[""],deleteSource:[""]})}get injectExtraMetadataControl(){return this.settingsForm.get("injectExtraMetadata")}get remuxToMp4Control(){return this.settingsForm.get("remuxToMp4")}get deleteSourceControl(){return this.settingsForm.get("deleteSource")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("postprocessing",this.settings,this.settingsForm.valueChanges).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}wt.\u0275fac=function(n){return new(n||wt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},wt.\u0275cmp=t.Xpm({type:wt,selectors:[["app-post-processing-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:19,vars:11,consts:[["nz-form","",3,"formGroup"],["appSwitchActionable","",1,"setting-item"],["nzNoColon","","nzTooltipTitle","\u6dfb\u52a0\u5173\u952e\u5e27\u7b49\u5143\u6570\u636e\u4f7f\u5b9a\u4f4d\u64ad\u653e\u548c\u62d6\u8fdb\u5ea6\u6761\u4e0d\u4f1a\u5361\u987f",1,"setting-label"],[1,"setting-control","switch",3,"nzWarningTip","nzValidateStatus"],["formControlName","injectExtraMetadata",3,"nzDisabled"],["nzNoColon","","nzTooltipTitle","\u8c03\u7528 ffmpeg \u8fdb\u884c\u8f6c\u6362\uff0c\u9700\u8981\u5b89\u88c5 ffmpeg \u3002",1,"setting-label"],["formControlName","remuxToMp4"],[1,"setting-item"],["nzNoColon","",1,"setting-label",3,"nzTooltipTitle"],["deleteSourceTip",""],[1,"setting-control","radio",3,"nzWarningTip","nzValidateStatus"],["formControlName","deleteSource",3,"nzDisabled"],[4,"ngFor","ngForOf"],["nz-radio-button","",3,"nzValue"]],template:function(n,e){if(1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"flv \u6dfb\u52a0\u5143\u6570\u636e"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"nz-switch",4),t.qZA()(),t.TgZ(6,"nz-form-item",1)(7,"nz-form-label",5),t._uU(8,"\u8f6c\u5c01\u88c5\u4e3a mp4"),t.qZA(),t.TgZ(9,"nz-form-control",3),t._UZ(10,"nz-switch",6),t.qZA()(),t.TgZ(11,"nz-form-item",7)(12,"nz-form-label",8),t._uU(13,"\u6e90\u6587\u4ef6\u5220\u9664\u7b56\u7565"),t.qZA(),t.YNc(14,Po,7,0,"ng-template",null,9,t.W1O),t.TgZ(16,"nz-form-control",10)(17,"nz-radio-group",11),t.YNc(18,To,3,2,"ng-container",12),t.qZA()()()()),2&n){const o=t.MAs(15);t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.injectExtraMetadata?e.injectExtraMetadataControl:"warning"),t.xp6(1),t.Q6J("nzDisabled",e.remuxToMp4Control.value),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.remuxToMp4?e.remuxToMp4Control:"warning"),t.xp6(3),t.Q6J("nzTooltipTitle",o),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.deleteSource?e.deleteSourceControl:"warning"),t.xp6(1),t.Q6J("nzDisabled",!e.remuxToMp4Control.value),t.xp6(1),t.Q6J("ngForOf",e.deleteStrategies)}},dependencies:[p.sg,r._Y,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,U.i,G.Of,G.Bq,G.Dg,y],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});var W=c(3523);function wo(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1," \u9009\u62e9\u8981\u5f55\u5236\u7684\u76f4\u64ad\u6d41\u683c\u5f0f "),t._UZ(2,"br"),t.TgZ(3,"b"),t._uU(4,"FLV:"),t.qZA(),t._uU(5," flv \u6d41\u5728\u7f51\u7edc\u4e0d\u7a33\u5b9a\u7684\u60c5\u51b5\u4e0b\u5bb9\u6613\u4e2d\u65ad\u4e22\u5931\u6570\u636e\u6216\u5f55\u5236\u5230\u4e8c\u538b\u753b\u8d28\u3002\u6ca1\u6709 flv \u6d41\u7684\u76f4\u64ad\u4f1a\u81ea\u52a8\u5207\u6362\u5f55\u5236 fmp4 \u6d41\u3002 "),t._UZ(6,"br"),t.TgZ(7,"b"),t._uU(8,"HLS (fmp4):"),t.qZA(),t._uU(9," hls \u6d41\u57fa\u672c\u4e0d\u53d7\u7f51\u7edc\u6ce2\u52a8\u5f71\u54cd\uff0c\u4f46\u4e0d\u662f\u6240\u6709\u76f4\u64ad\u95f4\u90fd\u652f\u6301\u3002\u6709 flv \u6d41\u7684\u76f4\u64ad\uff0c\u5728\u8bbe\u5b9a\u7684\u7b49\u5f85\u65f6\u95f4\u5185\u6ca1\u6709 fmp4 \u6d41\u4f1a\u81ea\u52a8\u5207\u6362\u5f55\u5236 flv \u6d41\u3002 "),t._UZ(10,"br"),t.TgZ(11,"b"),t._uU(12,"P.S."),t.qZA(),t._UZ(13,"br"),t._uU(14," WEB \u7aef\u76f4\u64ad\u64ad\u653e\u5668\u662f Hls7Player \u7684\u76f4\u64ad\u95f4\u652f\u6301\u5f55\u5236 fmp4 \u6d41, fMp4Player \u5219\u4e0d\u652f\u6301\u3002 "),t.qZA())}function Fo(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1," \u5982\u679c\u8d85\u8fc7\u6240\u8bbe\u7f6e\u7684\u7b49\u5f85\u65f6\u95f4 fmp4 \u6d41\u8fd8\u6ca1\u6709\u5c31\u5207\u6362\u4e3a\u5f55\u5236 flv \u6d41 "),t._UZ(2,"br"),t._uU(3," fmp4 \u6d41\u5728\u521a\u63a8\u6d41\u662f\u6ca1\u6709\u7684\uff0c\u8981\u8fc7\u4e00\u4f1a\u624d\u6709\u3002 "),t._UZ(4,"br"),t._uU(5," fmp4 \u6d41\u51fa\u73b0\u7684\u65f6\u95f4\u548c\u76f4\u64ad\u5ef6\u8fdf\u6709\u5173\uff0c\u4e00\u822c\u90fd\u5728 10 \u79d2\u5185\uff0c\u4f46\u4e5f\u6709\u5ef6\u8fdf\u6bd4\u8f83\u5927\u8d85\u8fc7 1 \u5206\u949f\u7684\u3002 "),t._UZ(6,"br"),t._uU(7," \u63a8\u8350\u5168\u5c40\u8bbe\u7f6e\u4e3a 10 \u79d2\uff0c\u4e2a\u522b\u5ef6\u8fdf\u6bd4\u8f83\u5927\u7684\u76f4\u64ad\u95f4\u5355\u72ec\u8bbe\u7f6e\u3002 "),t.qZA())}function So(i,n){if(1&i&&(t.TgZ(0,"nz-form-item",1)(1,"nz-form-label",2),t._uU(2,"fmp4 \u6d41\u7b49\u5f85\u65f6\u95f4"),t.qZA(),t.YNc(3,Fo,8,0,"ng-template",null,19,t.W1O),t.TgZ(5,"nz-form-control",4),t._UZ(6,"nz-select",20),t.qZA()()),2&i){const e=t.MAs(4),o=t.oxw();t.xp6(1),t.Q6J("nzTooltipTitle",e),t.xp6(4),t.Q6J("nzWarningTip",o.syncFailedWarningTip)("nzValidateStatus",o.syncStatus.fmp4StreamTimeout?o.fmp4StreamTimeoutControl:"warning"),t.xp6(1),t.Q6J("nzOptions",o.fmp4StreamTimeoutOptions)}}function yo(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1," \u9ed8\u8ba4: \u6bcf\u4e2a\u5206\u5272\u7684\u5f55\u64ad\u6587\u4ef6\u5bf9\u5e94\u4fdd\u5b58\u4e00\u4e2a\u5c01\u9762\u6587\u4ef6\uff0c\u4e0d\u7ba1\u5c01\u9762\u662f\u5426\u76f8\u540c\u3002"),t._UZ(2,"br"),t._uU(3," \u53bb\u91cd: \u76f8\u540c\u7684\u5c01\u9762\u53ea\u4fdd\u5b58\u4e00\u6b21"),t._UZ(4,"br"),t._uU(5," P.S. "),t._UZ(6,"br"),t._uU(7," \u5224\u65ad\u662f\u5426\u76f8\u540c\u662f\u4f9d\u636e\u5c01\u9762\u6570\u636e\u7684 sha1\uff0c\u53ea\u5728\u5355\u6b21\u5f55\u5236\u5185\u6709\u6548\u3002 "),t.qZA())}function Ao(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"label",21),t._uU(2),t.qZA(),t.BQk()),2&i){const e=n.$implicit;t.xp6(1),t.Q6J("nzValue",e.value),t.xp6(1),t.Oqu(e.label)}}function ko(i,n){if(1&i&&(t.TgZ(0,"nz-form-item",1)(1,"nz-form-label",22),t._uU(2,"\u6570\u636e\u8bfb\u53d6\u8d85\u65f6"),t.qZA(),t.TgZ(3,"nz-form-control",4),t._UZ(4,"nz-select",23),t.qZA()()),2&i){const e=t.oxw();t.xp6(3),t.Q6J("nzWarningTip",e.syncStatus.readTimeout?"\u65e0\u7f1d\u62fc\u63a5\u4f1a\u5931\u6548\uff01":e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.readTimeout&&e.readTimeoutControl.value<=3?e.readTimeoutControl:"warning"),t.xp6(1),t.Q6J("nzOptions",e.readTimeoutOptions)}}function Do(i,n){if(1&i&&(t.TgZ(0,"nz-form-item",1)(1,"nz-form-label",24),t._uU(2,"\u786c\u76d8\u5199\u5165\u7f13\u51b2"),t.qZA(),t.TgZ(3,"nz-form-control",4),t._UZ(4,"nz-select",25),t.qZA()()),2&i){const e=t.oxw();t.xp6(3),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.bufferSize?e.bufferSizeControl:"warning"),t.xp6(1),t.Q6J("nzOptions",e.bufferOptions)}}class Ft{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.streamFormatOptions=(0,W.Z)(d.tp),this.recordingModeOptions=(0,W.Z)(d.kV),this.fmp4StreamTimeoutOptions=(0,W.Z)(d.D4),this.qualityOptions=(0,W.Z)(d.O6),this.readTimeoutOptions=(0,W.Z)(d.D4),this.disconnectionTimeoutOptions=(0,W.Z)(d.$w),this.bufferOptions=(0,W.Z)(d.Rc),this.coverSaveStrategies=(0,W.Z)(d.J_),this.settingsForm=n.group({streamFormat:[""],recordingMode:[""],qualityNumber:[""],fmp4StreamTimeout:[""],readTimeout:[""],disconnectionTimeout:[""],bufferSize:[""],saveCover:[""],coverSaveStrategy:[""]})}get streamFormatControl(){return this.settingsForm.get("streamFormat")}get recordingModeControl(){return this.settingsForm.get("recordingMode")}get qualityNumberControl(){return this.settingsForm.get("qualityNumber")}get fmp4StreamTimeoutControl(){return this.settingsForm.get("fmp4StreamTimeout")}get readTimeoutControl(){return this.settingsForm.get("readTimeout")}get disconnectionTimeoutControl(){return this.settingsForm.get("disconnectionTimeout")}get bufferSizeControl(){return this.settingsForm.get("bufferSize")}get saveCoverControl(){return this.settingsForm.get("saveCover")}get coverSaveStrategyControl(){return this.settingsForm.get("coverSaveStrategy")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("recorder",this.settings,this.settingsForm.valueChanges).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}function Eo(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 User Agent "),t.BQk())}function Zo(i,n){1&i&&t.YNc(0,Eo,2,0,"ng-container",6),2&i&&t.Q6J("ngIf",n.$implicit.hasError("required"))}function No(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"form",2)(2,"nz-form-item")(3,"nz-form-control",3),t._UZ(4,"textarea",4),t.YNc(5,Zo,1,1,"ng-template",null,5,t.W1O),t.qZA()()(),t.BQk()),2&i){const e=t.MAs(6),o=t.oxw();t.xp6(1),t.Q6J("formGroup",o.settingsForm),t.xp6(2),t.Q6J("nzWarningTip",o.warningTip)("nzValidateStatus",o.control.valid&&o.control.value.trim()!==o.value?"warning":o.control)("nzErrorTip",e),t.xp6(1),t.Q6J("rows",3)}}Ft.\u0275fac=function(n){return new(n||Ft)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},Ft.\u0275cmp=t.Xpm({type:Ft,selectors:[["app-recorder-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:34,vars:21,consts:[["nz-form","",3,"formGroup"],[1,"setting-item"],["nzNoColon","",1,"setting-label",3,"nzTooltipTitle"],["streamFormatTip",""],[1,"setting-control","select",3,"nzWarningTip","nzValidateStatus"],["formControlName","streamFormat",3,"nzOptions"],["class","setting-item",4,"ngIf"],["nzNoColon","","nzTooltipTitle","\u6240\u9009\u753b\u8d28\u4e0d\u5b58\u5728\u5c06\u4ee5\u539f\u753b\u4ee3\u66ff",1,"setting-label"],["formControlName","qualityNumber",3,"nzOptions"],["appSwitchActionable","",1,"setting-item"],["nzNoColon","","nzTooltipTitle","\u5f55\u64ad\u6587\u4ef6\u5b8c\u6210\u65f6\u4fdd\u5b58\u5f53\u524d\u76f4\u64ad\u95f4\u7684\u5c01\u9762",1,"setting-label"],[1,"setting-control","switch",3,"nzWarningTip","nzValidateStatus"],["formControlName","saveCover"],["coverSaveStrategyTip",""],[1,"setting-control","radio",3,"nzWarningTip","nzValidateStatus"],["formControlName","coverSaveStrategy",3,"nzDisabled"],[4,"ngFor","ngForOf"],["nzNoColon","","nzTooltipTitle","\u65ad\u7f51\u8d85\u8fc7\u7b49\u5f85\u65f6\u95f4\u5c31\u7ed3\u675f\u5f55\u5236\uff0c\u5982\u679c\u7f51\u7edc\u6062\u590d\u540e\u4ecd\u672a\u4e0b\u64ad\u4f1a\u81ea\u52a8\u91cd\u65b0\u5f00\u59cb\u5f55\u5236\u3002",1,"setting-label"],["formControlName","disconnectionTimeout",3,"nzOptions"],["fmp4StreamTimeoutTip",""],["formControlName","fmp4StreamTimeout",3,"nzOptions"],["nz-radio-button","",3,"nzValue"],["nzNoColon","","nzTooltipTitle","\u8d85\u65f6\u65f6\u95f4\u8bbe\u7f6e\u5f97\u6bd4\u8f83\u957f\u76f8\u5bf9\u4e0d\u5bb9\u6613\u56e0\u7f51\u7edc\u4e0d\u7a33\u5b9a\u800c\u51fa\u73b0\u6d41\u4e2d\u65ad\uff0c\u4f46\u662f\u4e00\u65e6\u51fa\u73b0\u4e2d\u65ad\u5c31\u65e0\u6cd5\u5b9e\u73b0\u65e0\u7f1d\u62fc\u63a5\u4e14\u6f0f\u5f55\u8f83\u591a\u3002",1,"setting-label"],["formControlName","readTimeout",3,"nzOptions"],["nzNoColon","","nzTooltipTitle","\u786c\u76d8\u5199\u5165\u7f13\u51b2\u8bbe\u7f6e\u5f97\u6bd4\u8f83\u5927\u53ef\u4ee5\u51cf\u5c11\u5bf9\u786c\u76d8\u7684\u5199\u5165\uff0c\u4f46\u9700\u8981\u5360\u7528\u66f4\u591a\u7684\u5185\u5b58\u3002",1,"setting-label"],["formControlName","bufferSize",3,"nzOptions"]],template:function(n,e){if(1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"\u76f4\u64ad\u6d41\u683c\u5f0f"),t.qZA(),t.YNc(4,wo,15,0,"ng-template",null,3,t.W1O),t.TgZ(6,"nz-form-control",4),t._UZ(7,"nz-select",5),t.qZA()(),t.YNc(8,So,7,4,"nz-form-item",6),t.TgZ(9,"nz-form-item",1)(10,"nz-form-label",7),t._uU(11,"\u753b\u8d28"),t.qZA(),t.TgZ(12,"nz-form-control",4),t._UZ(13,"nz-select",8),t.qZA()(),t.TgZ(14,"nz-form-item",9)(15,"nz-form-label",10),t._uU(16,"\u4fdd\u5b58\u5c01\u9762"),t.qZA(),t.TgZ(17,"nz-form-control",11),t._UZ(18,"nz-switch",12),t.qZA()(),t.TgZ(19,"nz-form-item",1)(20,"nz-form-label",2),t._uU(21,"\u5c01\u9762\u4fdd\u5b58\u7b56\u7565"),t.qZA(),t.YNc(22,yo,8,0,"ng-template",null,13,t.W1O),t.TgZ(24,"nz-form-control",14)(25,"nz-radio-group",15),t.YNc(26,Ao,3,2,"ng-container",16),t.qZA()()(),t.YNc(27,ko,5,3,"nz-form-item",6),t.TgZ(28,"nz-form-item",1)(29,"nz-form-label",17),t._uU(30,"\u65ad\u7f51\u7b49\u5f85\u65f6\u95f4"),t.qZA(),t.TgZ(31,"nz-form-control",4),t._UZ(32,"nz-select",18),t.qZA()(),t.YNc(33,Do,5,3,"nz-form-item",6),t.qZA()),2&n){const o=t.MAs(5),a=t.MAs(23);t.Q6J("formGroup",e.settingsForm),t.xp6(2),t.Q6J("nzTooltipTitle",o),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.streamFormat?e.streamFormatControl:"warning"),t.xp6(1),t.Q6J("nzOptions",e.streamFormatOptions),t.xp6(1),t.Q6J("ngIf","fmp4"===e.streamFormatControl.value),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.qualityNumber?e.qualityNumberControl:"warning"),t.xp6(1),t.Q6J("nzOptions",e.qualityOptions),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.saveCover?e.saveCoverControl:"warning"),t.xp6(3),t.Q6J("nzTooltipTitle",a),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.coverSaveStrategy?e.coverSaveStrategyControl:"warning"),t.xp6(1),t.Q6J("nzDisabled",!e.saveCoverControl.value),t.xp6(1),t.Q6J("ngForOf",e.coverSaveStrategies),t.xp6(1),t.Q6J("ngIf","flv"===e.streamFormatControl.value),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.disconnectionTimeout?e.disconnectionTimeoutControl:"warning"),t.xp6(1),t.Q6J("nzOptions",e.disconnectionTimeoutOptions),t.xp6(1),t.Q6J("ngIf","flv"===e.streamFormatControl.value)}},dependencies:[p.sg,p.O5,r._Y,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,U.i,G.Of,G.Bq,G.Dg,zt.Vq,y],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class St{constructor(n,e){this.changeDetector=e,this.value="",this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.warningTip="\u5168\u90e8\u4efb\u52a1\u90fd\u9700\u91cd\u542f\u5f39\u5e55\u5ba2\u6237\u7aef\u624d\u80fd\u751f\u6548\uff0c\u6b63\u5728\u5f55\u5236\u7684\u4efb\u52a1\u53ef\u80fd\u4f1a\u4e22\u5931\u5f39\u5e55\uff01",this.settingsForm=n.group({userAgent:["",[r.kI.required]]})}get control(){return this.settingsForm.get("userAgent")}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){this.control.setValue(this.value),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){this.confirm.emit(this.control.value.trim()),this.close()}}St.\u0275fac=function(n){return new(n||St)(t.Y36(r.qu),t.Y36(t.sBO))},St.\u0275cmp=t.Xpm({type:St,selectors:[["app-user-agent-edit-dialog"]],inputs:{value:"value",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:2,vars:2,consts:[["nzTitle","\u4fee\u6539 User Agent","nzOkDanger","","nzCentered","",3,"nzVisible","nzOkDisabled","nzVisibleChange","nzOnOk","nzOnCancel"],[4,"nzModalContent"],["nz-form","",3,"formGroup"],[3,"nzWarningTip","nzValidateStatus","nzErrorTip"],["required","","nz-input","","formControlName","userAgent",3,"rows"],["errorTip",""],[4,"ngIf"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzVisibleChange",function(a){return e.visible=a})("nzOnOk",function(){return e.handleConfirm()})("nzOnCancel",function(){return e.handleCancel()}),t.YNc(1,No,7,5,"ng-container",1),t.qZA()),2&n&&t.Q6J("nzVisible",e.visible)("nzOkDisabled",e.control.invalid||e.control.value.trim()===e.value)},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.Fd,O.Zp,_.du,_.Hf],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});var dt=c(1664);function Bo(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"form",3)(2,"nz-form-item")(3,"nz-form-control",4),t._UZ(4,"textarea",5),t.qZA()()(),t.BQk()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("formGroup",e.settingsForm),t.xp6(2),t.Q6J("nzWarningTip",e.warningTip)("nzValidateStatus",e.control.valid&&e.control.value.trim()!==e.value?"warning":e.control),t.xp6(1),t.Q6J("rows",5)}}function Uo(i,n){if(1&i){const e=t.EpF();t.TgZ(0,"button",6),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.testCookie())}),t._uU(1," \u6d4b\u8bd5 "),t.qZA(),t.TgZ(2,"button",7),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleCancel())}),t._uU(3,"\u53d6\u6d88"),t.qZA(),t.TgZ(4,"button",8),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleConfirm())}),t._uU(5," \u786e\u5b9a "),t.qZA()}if(2&i){const e=t.oxw();t.Q6J("disabled",""===e.control.value.trim()),t.xp6(4),t.Q6J("disabled",e.control.invalid||e.control.value.trim()===e.value)}}class yt{constructor(n,e,o,a){this.changeDetector=e,this.validationService=o,this.message=a,this.value="",this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.warningTip="\u5168\u90e8\u4efb\u52a1\u90fd\u9700\u91cd\u542f\u5f39\u5e55\u5ba2\u6237\u7aef\u624d\u80fd\u751f\u6548\uff0c\u6b63\u5728\u5f55\u5236\u7684\u4efb\u52a1\u53ef\u80fd\u4f1a\u4e22\u5931\u5f39\u5e55\uff01",this.settingsForm=n.group({cookie:[""]})}get control(){return this.settingsForm.get("cookie")}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){this.control.setValue(this.value),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){this.confirm.emit(this.control.value.trim()),this.close()}testCookie(){this.validationService.validateCookie(this.control.value).subscribe(n=>{0===n.code?this.message.success(`uid: ${n.data?.mid}, uname: ${n.data?.uname}`):this.message.error(`${n.code}: ${n.message}`)})}}yt.\u0275fac=function(n){return new(n||yt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(Y),t.Y36(se.dD))},yt.\u0275cmp=t.Xpm({type:yt,selectors:[["app-cookie-edit-dialog"]],inputs:{value:"value",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:3,vars:1,consts:[["nzTitle","\u4fee\u6539 Cookie","nzCentered","",3,"nzVisible","nzVisibleChange"],[4,"nzModalContent"],[3,"nzModalFooter"],["nz-form","",3,"formGroup"],[3,"nzWarningTip","nzValidateStatus"],["wrap","soft","nz-input","","formControlName","cookie",3,"rows"],["nz-button","","nzType","primary",3,"disabled","click"],["nz-button","","nzType","default",3,"click"],["nz-button","","nzType","primary","nzDanger","",3,"disabled","click"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzVisibleChange",function(a){return e.visible=a}),t.YNc(1,Bo,5,4,"ng-container",1),t.YNc(2,Uo,6,2,"ng-template",2),t.qZA()),2&n&&t.Q6J("nzVisible",e.visible)},dependencies:[r._Y,r.Fj,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.Fd,O.Zp,_.du,_.Uh,_.Hf,Q.ix,I.w,dt.dQ],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class At{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({userAgent:["",[r.kI.required]],cookie:[""]})}get userAgentControl(){return this.settingsForm.get("userAgent")}get cookieControl(){return this.settingsForm.get("cookie")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("header",this.settings,this.settingsForm.valueChanges).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}At.\u0275fac=function(n){return new(n||At)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},At.\u0275cmp=t.Xpm({type:At,selectors:[["app-header-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:17,vars:9,consts:[["nz-form","",3,"formGroup"],[1,"setting-item","actionable",3,"click"],[1,"setting-label"],[3,"nzWarningTip","nzValidateStatus"],[1,"setting-value"],[3,"value","confirm"],["userAgentEditDialog",""],["cookieEditDialog",""]],template:function(n,e){if(1&n){const o=t.EpF();t.TgZ(0,"form",0)(1,"nz-form-item",1),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(8);return t.KtG(s.open())}),t.TgZ(2,"nz-form-label",2),t._uU(3,"User Agent"),t.qZA(),t.TgZ(4,"nz-form-control",3)(5,"nz-form-text",4),t._uU(6),t.qZA(),t.TgZ(7,"app-user-agent-edit-dialog",5,6),t.NdJ("confirm",function(s){return e.userAgentControl.setValue(s)}),t.qZA()()(),t.TgZ(9,"nz-form-item",1),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(16);return t.KtG(s.open())}),t.TgZ(10,"nz-form-label",2),t._uU(11,"Cookie"),t.qZA(),t.TgZ(12,"nz-form-control",3)(13,"nz-form-text",4),t._uU(14),t.qZA(),t.TgZ(15,"app-cookie-edit-dialog",5,7),t.NdJ("confirm",function(s){return e.cookieControl.setValue(s)}),t.qZA()()()()}2&n&&(t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.userAgent?e.userAgentControl:"warning"),t.xp6(2),t.hij("",e.userAgentControl.value," "),t.xp6(1),t.Q6J("value",e.userAgentControl.value),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.cookie?e.cookieControl:"warning"),t.xp6(2),t.hij("",e.cookieControl.value," "),t.xp6(1),t.Q6J("value",e.cookieControl.value))},dependencies:[r._Y,r.JL,r.sg,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,l.EF,St,yt],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});var at=c(9089),Io=c(6457),Jo=c(4501);function Qo(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165\u4fdd\u5b58\u4f4d\u7f6e "),t.BQk())}function Vo(i,n){1&i&&(t.ynx(0),t._uU(1," \u4e0d\u662f\u4e00\u4e2a\u76ee\u5f55 "),t.BQk())}function Lo(i,n){1&i&&(t.ynx(0),t._uU(1," \u6ca1\u6709\u8bfb\u5199\u6743\u9650 "),t.BQk())}function qo(i,n){1&i&&(t.ynx(0),t._uU(1," \u672a\u80fd\u8fdb\u884c\u9a8c\u8bc1 "),t.BQk())}function Yo(i,n){if(1&i&&(t.YNc(0,Qo,2,0,"ng-container",6),t.YNc(1,Vo,2,0,"ng-container",6),t.YNc(2,Lo,2,0,"ng-container",6),t.YNc(3,qo,2,0,"ng-container",6)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("notADirectory")),t.xp6(1),t.Q6J("ngIf",e.hasError("noPermissions")),t.xp6(1),t.Q6J("ngIf",e.hasError("failedToValidate"))}}function Wo(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"form",2)(2,"nz-form-item")(3,"nz-form-control",3),t._UZ(4,"input",4),t.YNc(5,Yo,4,4,"ng-template",null,5,t.W1O),t.qZA()()(),t.BQk()),2&i){const e=t.MAs(6),o=t.oxw();t.xp6(1),t.Q6J("formGroup",o.settingsForm),t.xp6(2),t.Q6J("nzErrorTip",e)}}class kt{constructor(n,e,o){this.changeDetector=e,this.validationService=o,this.value="",this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.outDirAsyncValidator=a=>this.validationService.validateDir(a.value).pipe((0,T.U)(s=>{switch(s.code){case ot.ENOTDIR:return{error:!0,notADirectory:!0};case ot.EACCES:return{error:!0,noPermissions:!0};default:return null}}),(0,w.K)(()=>(0,ie.of)({error:!0,failedToValidate:!0}))),this.settingsForm=n.group({outDir:["",[r.kI.required],[this.outDirAsyncValidator]]})}get control(){return this.settingsForm.get("outDir")}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){this.control.setValue(this.value),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){this.confirm.emit(this.control.value.trim()),this.close()}}function Ro(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165\u8def\u5f84\u6a21\u677f "),t.BQk())}function Go(i,n){1&i&&(t.ynx(0),t._uU(1," \u8def\u5f84\u6a21\u677f\u6709\u9519\u8bef "),t.BQk())}function Ho(i,n){if(1&i&&(t.YNc(0,Ro,2,0,"ng-container",12),t.YNc(1,Go,2,0,"ng-container",12)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}function $o(i,n){if(1&i&&(t.TgZ(0,"tr")(1,"td"),t._uU(2),t.qZA(),t.TgZ(3,"td"),t._uU(4),t.qZA()()),2&i){const e=n.$implicit;t.xp6(2),t.Oqu(e.name),t.xp6(2),t.Oqu(e.desc)}}function Ko(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"form",3)(2,"nz-form-item")(3,"nz-form-control",4),t._UZ(4,"input",5),t.YNc(5,Ho,2,2,"ng-template",null,6,t.W1O),t.qZA()(),t.TgZ(7,"nz-collapse")(8,"nz-collapse-panel",7)(9,"nz-table",8,9)(11,"thead")(12,"tr")(13,"th"),t._uU(14,"\u53d8\u91cf"),t.qZA(),t.TgZ(15,"th"),t._uU(16,"\u8bf4\u660e"),t.qZA()()(),t.TgZ(17,"tbody"),t.YNc(18,$o,5,2,"tr",10),t.qZA()(),t.TgZ(19,"p",11)(20,"strong"),t._uU(21," \u6ce8\u610f\uff1a\u53d8\u91cf\u540d\u5fc5\u987b\u653e\u5728\u82b1\u62ec\u53f7\u4e2d\uff01\u4f7f\u7528\u65e5\u671f\u65f6\u95f4\u53d8\u91cf\u4ee5\u907f\u514d\u547d\u540d\u51b2\u7a81\uff01 "),t.qZA()()()()(),t.BQk()),2&i){const e=t.MAs(6),o=t.MAs(10),a=t.oxw();t.xp6(1),t.Q6J("formGroup",a.settingsForm),t.xp6(2),t.Q6J("nzErrorTip",e),t.xp6(1),t.Q6J("pattern",a.pathTemplatePattern),t.xp6(5),t.Q6J("nzData",a.pathTemplateVariables)("nzPageSize",11)("nzShowPagination",!1)("nzSize","small"),t.xp6(9),t.Q6J("ngForOf",o.data)}}function Xo(i,n){if(1&i){const e=t.EpF();t.TgZ(0,"button",13),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.restoreDefault())}),t._uU(1," \u6062\u590d\u9ed8\u8ba4 "),t.qZA(),t.TgZ(2,"button",14),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleCancel())}),t._uU(3,"\u53d6\u6d88"),t.qZA(),t.TgZ(4,"button",13),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleConfirm())}),t._uU(5," \u786e\u5b9a "),t.qZA()}if(2&i){const e=t.oxw();t.Q6J("disabled",e.control.value.trim()===e.pathTemplateDefault),t.xp6(4),t.Q6J("disabled",e.control.invalid||e.control.value.trim()===e.value)}}kt.\u0275fac=function(n){return new(n||kt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(Y))},kt.\u0275cmp=t.Xpm({type:kt,selectors:[["app-outdir-edit-dialog"]],inputs:{value:"value",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:2,vars:2,consts:[["nzTitle","\u4fee\u6539\u6587\u4ef6\u5b58\u653e\u76ee\u5f55","nzCentered","",3,"nzVisible","nzOkDisabled","nzVisibleChange","nzOnOk","nzOnCancel"],[4,"nzModalContent"],["nz-form","",3,"formGroup"],["nzHasFeedback","","nzValidatingTip","\u6b63\u5728\u9a8c\u9a8c...",3,"nzErrorTip"],["type","text","required","","nz-input","","formControlName","outDir"],["errorTip",""],[4,"ngIf"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzVisibleChange",function(a){return e.visible=a})("nzOnOk",function(){return e.handleConfirm()})("nzOnCancel",function(){return e.handleCancel()}),t.YNc(1,Wo,7,2,"ng-container",1),t.qZA()),2&n&&t.Q6J("nzVisible",e.visible)("nzOkDisabled",e.control.invalid||e.control.value.trim()===e.value)},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.Fd,O.Zp,_.du,_.Hf],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Dt{constructor(n,e){this.changeDetector=e,this.value="",this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.pathTemplatePattern=d._m,this.pathTemplateDefault=d.ip,this.pathTemplateVariables=d.Dr,this.settingsForm=n.group({pathTemplate:["",[r.kI.required,r.kI.pattern(this.pathTemplatePattern)]]})}get control(){return this.settingsForm.get("pathTemplate")}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){this.control.setValue(this.value),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){this.confirm.emit(this.control.value.trim()),this.close()}restoreDefault(){this.control.setValue(this.pathTemplateDefault)}}function jo(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1," \u81ea\u52a8\u5206\u5272\u6587\u4ef6\u4ee5\u9650\u5236\u5f55\u64ad\u6587\u4ef6\u5927\u5c0f "),t._UZ(2,"br"),t._uU(3," \u683c\u5f0f\uff1a\u6570\u5b57 + \u5355\u4f4d(GB, MB, KB, B) "),t._UZ(4,"br"),t._uU(5," \u4e0d\u81ea\u52a8\u5206\u5272\u6587\u4ef6\u8bbe\u7f6e\u4e3a "),t.TgZ(6,"strong"),t._uU(7,"0 B"),t.qZA(),t._UZ(8,"br"),t.qZA())}function ta(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1," \u81ea\u52a8\u5206\u5272\u6587\u4ef6\u4ee5\u9650\u5236\u5f55\u64ad\u6587\u4ef6\u65f6\u957f "),t._UZ(2,"br"),t._uU(3," \u683c\u5f0f\uff1aHH:MM:SS "),t._UZ(4,"br"),t._uU(5," \u4e0d\u81ea\u52a8\u5206\u5272\u6587\u4ef6\u8bbe\u7f6e\u4e3a "),t.TgZ(6,"strong"),t._uU(7,"00:00:00"),t.qZA(),t._UZ(8,"br"),t.qZA())}Dt.\u0275fac=function(n){return new(n||Dt)(t.Y36(r.qu),t.Y36(t.sBO))},Dt.\u0275cmp=t.Xpm({type:Dt,selectors:[["app-path-template-edit-dialog"]],inputs:{value:"value",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:3,vars:2,consts:[["nzTitle","\u4fee\u6539\u6587\u4ef6\u8def\u5f84\u6a21\u677f","nzCentered","",3,"nzVisible","nzOkDisabled","nzVisibleChange"],[4,"nzModalContent"],[3,"nzModalFooter"],["nz-form","",3,"formGroup"],[3,"nzErrorTip"],["type","text","required","","nz-input","","formControlName","pathTemplate",3,"pattern"],["errorTip",""],["nzHeader","\u6a21\u677f\u53d8\u91cf\u8bf4\u660e"],[3,"nzData","nzPageSize","nzShowPagination","nzSize"],["table",""],[4,"ngFor","ngForOf"],[1,"footnote"],[4,"ngIf"],["nz-button","","nzType","default",3,"disabled","click"],["nz-button","","nzType","default",3,"click"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzVisibleChange",function(a){return e.visible=a}),t.YNc(1,Ko,22,8,"ng-container",1),t.YNc(2,Xo,6,2,"ng-template",2),t.qZA()),2&n&&t.Q6J("nzVisible",e.visible)("nzOkDisabled",e.control.invalid||e.control.value.trim()===e.value)},dependencies:[p.sg,p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.c5,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.Fd,O.Zp,_.du,_.Uh,_.Hf,Q.ix,I.w,dt.dQ,H.N8,H.Uo,H._C,H.Om,H.p0,H.$Z,Mi,Ne],styles:[".footnote[_ngcontent-%COMP%]{margin-top:1em;margin-bottom:0}"],changeDetection:0});class Et{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({outDir:[""],pathTemplate:[""],filesizeLimit:["",[r.kI.required,r.kI.min(0),r.kI.max(0xf9ff5c28f5)]],durationLimit:["",[r.kI.required,r.kI.min(0),r.kI.max(359999)]]})}get outDirControl(){return this.settingsForm.get("outDir")}get pathTemplateControl(){return this.settingsForm.get("pathTemplate")}get filesizeLimitControl(){return this.settingsForm.get("filesizeLimit")}get durationLimitControl(){return this.settingsForm.get("durationLimit")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("output",this.settings,this.settingsForm.valueChanges.pipe((0,at.Sc)(this.settingsForm))).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}Et.\u0275fac=function(n){return new(n||Et)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},Et.\u0275cmp=t.Xpm({type:Et,selectors:[["app-output-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:31,vars:15,consts:[["nz-form","",3,"formGroup"],[1,"setting-item","actionable",3,"click"],[1,"setting-label"],[3,"nzWarningTip","nzValidateStatus"],[1,"setting-value"],[3,"value","confirm"],["outDirEditDialog",""],["pathTemplateEditDialog",""],[1,"setting-item"],["nzNoColon","",1,"setting-label",3,"nzTooltipTitle"],["filesizeLimitTip",""],[1,"setting-control","select",3,"nzWarningTip","nzValidateStatus"],["formControlName","filesizeLimit"],["durationLimitTip",""],["formControlName","durationLimit"]],template:function(n,e){if(1&n){const o=t.EpF();t.TgZ(0,"form",0)(1,"nz-form-item",1),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(8);return t.KtG(s.open())}),t.TgZ(2,"nz-form-label",2),t._uU(3,"\u5b58\u653e\u76ee\u5f55"),t.qZA(),t.TgZ(4,"nz-form-control",3)(5,"nz-form-text",4),t._uU(6),t.qZA(),t.TgZ(7,"app-outdir-edit-dialog",5,6),t.NdJ("confirm",function(s){return e.outDirControl.setValue(s)}),t.qZA()()(),t.TgZ(9,"nz-form-item",1),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(16);return t.KtG(s.open())}),t.TgZ(10,"nz-form-label",2),t._uU(11,"\u8def\u5f84\u6a21\u677f"),t.qZA(),t.TgZ(12,"nz-form-control",3)(13,"nz-form-text",4),t._uU(14),t.qZA(),t.TgZ(15,"app-path-template-edit-dialog",5,7),t.NdJ("confirm",function(s){return e.pathTemplateControl.setValue(s)}),t.qZA()()(),t.TgZ(17,"nz-form-item",8)(18,"nz-form-label",9),t._uU(19,"\u5927\u5c0f\u9650\u5236"),t.qZA(),t.YNc(20,jo,9,0,"ng-template",null,10,t.W1O),t.TgZ(22,"nz-form-control",11),t._UZ(23,"app-input-filesize",12),t.qZA()(),t.TgZ(24,"nz-form-item",8)(25,"nz-form-label",9),t._uU(26,"\u65f6\u957f\u9650\u5236"),t.qZA(),t.YNc(27,ta,9,0,"ng-template",null,13,t.W1O),t.TgZ(29,"nz-form-control",11),t._UZ(30,"app-input-duration",14),t.qZA()()()}if(2&n){const o=t.MAs(21),a=t.MAs(28);t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.outDir?e.outDirControl:"warning"),t.xp6(2),t.hij("",e.outDirControl.value," "),t.xp6(1),t.Q6J("value",e.outDirControl.value),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.pathTemplate?e.pathTemplateControl:"warning"),t.xp6(2),t.hij("",e.pathTemplateControl.value," "),t.xp6(1),t.Q6J("value",e.pathTemplateControl.value),t.xp6(3),t.Q6J("nzTooltipTitle",o),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.filesizeLimit?e.filesizeLimitControl:"warning"),t.xp6(3),t.Q6J("nzTooltipTitle",a),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.durationLimit?e.durationLimitControl:"warning")}},dependencies:[r._Y,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,l.EF,Io.i,Jo.q,kt,Dt],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Zt{}Zt.\u0275fac=function(n){return new(n||Zt)},Zt.\u0275cmp=t.Xpm({type:Zt,selectors:[["app-webhook-settings"]],decls:5,vars:0,consts:[["routerLink","webhooks",1,"setting-item"],[1,"setting-label"],[1,"setting-control"],["nz-icon","","nzType","right"]],template:function(n,e){1&n&&(t.TgZ(0,"a",0)(1,"span",1),t._uU(2,"Webhooks"),t.qZA(),t.TgZ(3,"span",2),t._UZ(4,"i",3),t.qZA()())},dependencies:[v.rH,I.w,lt.Ls],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Nt{validate(n){return(i=>{const o=i.value.split("\n").map(a=>a.trim()).filter(a=>!!a).filter(a=>!/^https?:\/\/\S+$/.test(a));return o.length>0?{baseUrl:{value:o}}:null})(n)}}function ea(i,n){1&i&&(t.ynx(0),t._uU(1," \u4e0d\u80fd\u4e3a\u7a7a "),t.BQk())}function na(i,n){if(1&i&&(t.ynx(0),t._uU(1),t.ALo(2,"json"),t.BQk()),2&i){const e=t.oxw().$implicit;t.xp6(1),t.hij(" \u8f93\u5165\u65e0\u6548: ",t.lcZ(2,1,e.getError("baseUrl").value)," ")}}function ia(i,n){if(1&i&&(t.YNc(0,ea,2,0,"ng-container",7),t.YNc(1,na,3,3,"ng-container",7)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("baseUrl"))}}function oa(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"form",3)(2,"nz-form-item")(3,"nz-form-control",4),t._UZ(4,"textarea",5),t.YNc(5,ia,2,2,"ng-template",null,6,t.W1O),t.qZA()()(),t.BQk()),2&i){const e=t.MAs(6),o=t.oxw();t.xp6(1),t.Q6J("formGroup",o.settingsForm),t.xp6(2),t.Q6J("nzErrorTip",e),t.xp6(1),t.Q6J("rows",5)}}function aa(i,n){if(1&i){const e=t.EpF();t.TgZ(0,"button",8),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.restoreDefault())}),t._uU(1," \u6062\u590d\u9ed8\u8ba4 "),t.qZA(),t.TgZ(2,"button",9),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleCancel())}),t._uU(3,"\u53d6\u6d88"),t.qZA(),t.TgZ(4,"button",10),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleConfirm())}),t._uU(5," \u786e\u5b9a "),t.qZA()}if(2&i){const e=t.oxw();t.Q6J("disabled",e.control.value.trim()===e.defaultBaseApiUrl),t.xp6(4),t.Q6J("disabled",e.control.invalid||e.control.value.trim()===e.value)}}Nt.\u0275fac=function(n){return new(n||Nt)},Nt.\u0275dir=t.lG2({type:Nt,selectors:[["","appBaseUrlValidator",""]],features:[t._Bn([{provide:r.Cf,useExisting:Nt,multi:!0}])]});class Bt{constructor(n,e){this.changeDetector=e,this.value=[],this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.defaultBaseApiUrl=d.QL,this.settingsForm=n.group({baseApiUrls:["",[r.kI.required,i=>{const o=i.value.split("\n").map(a=>a.trim()).filter(a=>!!a).filter(a=>!/^https?:\/\/\S+$/.test(a));return o.length>0?{baseUrl:{value:o}}:null}]]})}get control(){return this.settingsForm.get("baseApiUrls")}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){this.control.setValue(this.value.join("\n")),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){const e=this.control.value.split("\n").map(o=>o.trim()).filter(o=>!!o);this.confirm.emit(e),this.close()}restoreDefault(){this.control.setValue(this.defaultBaseApiUrl)}}function ra(i,n){1&i&&(t.ynx(0),t._uU(1," \u4e0d\u80fd\u4e3a\u7a7a "),t.BQk())}function sa(i,n){if(1&i&&(t.ynx(0),t._uU(1),t.ALo(2,"json"),t.BQk()),2&i){const e=t.oxw().$implicit;t.xp6(1),t.hij(" \u8f93\u5165\u65e0\u6548: ",t.lcZ(2,1,e.getError("baseUrl").value)," ")}}function la(i,n){if(1&i&&(t.YNc(0,ra,2,0,"ng-container",7),t.YNc(1,sa,3,3,"ng-container",7)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("baseUrl"))}}function ca(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"form",3)(2,"nz-form-item")(3,"nz-form-control",4),t._UZ(4,"textarea",5),t.YNc(5,la,2,2,"ng-template",null,6,t.W1O),t.qZA()()(),t.BQk()),2&i){const e=t.MAs(6),o=t.oxw();t.xp6(1),t.Q6J("formGroup",o.settingsForm),t.xp6(2),t.Q6J("nzErrorTip",e),t.xp6(1),t.Q6J("rows",5)}}function ga(i,n){if(1&i){const e=t.EpF();t.TgZ(0,"button",8),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.restoreDefault())}),t._uU(1," \u6062\u590d\u9ed8\u8ba4 "),t.qZA(),t.TgZ(2,"button",9),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleCancel())}),t._uU(3,"\u53d6\u6d88"),t.qZA(),t.TgZ(4,"button",10),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleConfirm())}),t._uU(5," \u786e\u5b9a "),t.qZA()}if(2&i){const e=t.oxw();t.Q6J("disabled",e.control.value.trim()===e.defaultBaseLiveApiUrl),t.xp6(4),t.Q6J("disabled",e.control.invalid||e.control.value.trim()===e.value)}}Bt.\u0275fac=function(n){return new(n||Bt)(t.Y36(r.qu),t.Y36(t.sBO))},Bt.\u0275cmp=t.Xpm({type:Bt,selectors:[["app-base-api-url-edit-dialog"]],inputs:{value:"value",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:3,vars:2,consts:[["nzTitle","\u4fee\u6539\u4e3b\u7ad9 API \u4e3b\u673a\u5730\u5740","nzCentered","",3,"nzVisible","nzOkDisabled","nzVisibleChange"],[4,"nzModalContent"],[3,"nzModalFooter"],["nz-form","",3,"formGroup"],[3,"nzErrorTip"],["wrap","soft","nz-input","","required","","formControlName","baseApiUrls",3,"rows"],["errorTip",""],[4,"ngIf"],["nz-button","","nzType","default",3,"disabled","click"],["nz-button","","nzType","default",3,"click"],["nz-button","","nzDanger","","nzType","default",3,"disabled","click"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzVisibleChange",function(a){return e.visible=a}),t.YNc(1,oa,7,3,"ng-container",1),t.YNc(2,aa,6,2,"ng-template",2),t.qZA()),2&n&&t.Q6J("nzVisible",e.visible)("nzOkDisabled",e.control.invalid||e.control.value.trim()===e.value)},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.Fd,O.Zp,_.du,_.Uh,_.Hf,Q.ix,I.w,dt.dQ,p.Ts],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Ut{constructor(n,e){this.changeDetector=e,this.value=[],this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.defaultBaseLiveApiUrl=d.gZ,this.settingsForm=n.group({baseLiveApiUrls:["",[r.kI.required,i=>{const o=i.value.split("\n").map(a=>a.trim()).filter(a=>!!a).filter(a=>!/^https?:\/\/\S+$/.test(a));return o.length>0?{baseUrl:{value:o}}:null}]]})}get control(){return this.settingsForm.get("baseLiveApiUrls")}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){this.control.setValue(this.value.join("\n")),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){const e=this.control.value.split("\n").map(o=>o.trim()).filter(o=>!!o);this.confirm.emit(e),this.close()}restoreDefault(){this.control.setValue(this.defaultBaseLiveApiUrl)}}function ua(i,n){1&i&&(t.ynx(0),t._uU(1," \u4e0d\u80fd\u4e3a\u7a7a "),t.BQk())}function ma(i,n){if(1&i&&(t.ynx(0),t._uU(1),t.ALo(2,"json"),t.BQk()),2&i){const e=t.oxw().$implicit;t.xp6(1),t.hij(" \u8f93\u5165\u65e0\u6548: ",t.lcZ(2,1,e.getError("baseUrl").value)," ")}}function pa(i,n){if(1&i&&(t.YNc(0,ua,2,0,"ng-container",7),t.YNc(1,ma,3,3,"ng-container",7)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("baseUrl"))}}function da(i,n){if(1&i&&(t.ynx(0),t.TgZ(1,"form",3)(2,"nz-form-item")(3,"nz-form-control",4),t._UZ(4,"textarea",5),t.YNc(5,pa,2,2,"ng-template",null,6,t.W1O),t.qZA()()(),t.BQk()),2&i){const e=t.MAs(6),o=t.oxw();t.xp6(1),t.Q6J("formGroup",o.settingsForm),t.xp6(2),t.Q6J("nzErrorTip",e),t.xp6(1),t.Q6J("rows",5)}}function ha(i,n){if(1&i){const e=t.EpF();t.TgZ(0,"button",8),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.restoreDefault())}),t._uU(1," \u6062\u590d\u9ed8\u8ba4 "),t.qZA(),t.TgZ(2,"button",9),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleCancel())}),t._uU(3,"\u53d6\u6d88"),t.qZA(),t.TgZ(4,"button",10),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleConfirm())}),t._uU(5," \u786e\u5b9a "),t.qZA()}if(2&i){const e=t.oxw();t.Q6J("disabled",e.control.value.trim()===e.defaultBasePlayInfoApiUrl),t.xp6(4),t.Q6J("disabled",e.control.invalid||e.control.value.trim()===e.value)}}Ut.\u0275fac=function(n){return new(n||Ut)(t.Y36(r.qu),t.Y36(t.sBO))},Ut.\u0275cmp=t.Xpm({type:Ut,selectors:[["app-base-live-api-url-edit-dialog"]],inputs:{value:"value",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:3,vars:2,consts:[["nzTitle","\u4fee\u6539\u76f4\u64ad API \u4e3b\u673a\u5730\u5740","nzCentered","",3,"nzVisible","nzOkDisabled","nzVisibleChange"],[4,"nzModalContent"],[3,"nzModalFooter"],["nz-form","",3,"formGroup"],[3,"nzErrorTip"],["wrap","soft","nz-input","","required","","formControlName","baseLiveApiUrls",3,"rows"],["errorTip",""],[4,"ngIf"],["nz-button","","nzType","default",3,"disabled","click"],["nz-button","","nzType","default",3,"click"],["nz-button","","nzDanger","","nzType","default",3,"disabled","click"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzVisibleChange",function(a){return e.visible=a}),t.YNc(1,ca,7,3,"ng-container",1),t.YNc(2,ga,6,2,"ng-template",2),t.qZA()),2&n&&t.Q6J("nzVisible",e.visible)("nzOkDisabled",e.control.invalid||e.control.value.trim()===e.value)},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.Fd,O.Zp,_.du,_.Uh,_.Hf,Q.ix,I.w,dt.dQ,p.Ts],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class It{constructor(n,e){this.changeDetector=e,this.value=[],this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.defaultBasePlayInfoApiUrl=d.gZ,this.settingsForm=n.group({basePlayInfoApiUrls:["",[r.kI.required,i=>{const o=i.value.split("\n").map(a=>a.trim()).filter(a=>!!a).filter(a=>!/^https?:\/\/\S+$/.test(a));return o.length>0?{baseUrl:{value:o}}:null}]]})}get control(){return this.settingsForm.get("basePlayInfoApiUrls")}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){this.control.setValue(this.value.join("\n")),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){const e=this.control.value.split("\n").map(o=>o.trim()).filter(o=>!!o);this.confirm.emit(e),this.close()}restoreDefault(){this.control.setValue(this.defaultBasePlayInfoApiUrl)}}function _a(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1,"\u8bbe\u7f6e\u5185\u5bb9\uff1a\u53d1\u9001\u4e3b\u7ad9 API \u8bf7\u6c42\u6240\u7528\u7684\u4e3b\u673a\u7684\u5730\u5740\uff0c\u4e00\u884c\u4e00\u4e2a\u3002"),t.qZA(),t.TgZ(2,"p"),t._uU(3,"\u8bf7\u6c42\u65b9\u5f0f\uff1a\u5148\u7528\u7b2c\u4e00\u4e2a\u53d1\u9001\u8bf7\u6c42\uff0c\u51fa\u9519\u5c31\u7528\u7b2c\u4e8c\u4e2a\uff0c\u4ee5\u6b64\u7c7b\u63a8\u3002"),t.qZA(),t.TgZ(4,"p"),t._uU(5,"\u4e3b\u8981\u76ee\u7684\uff1a\u7f13\u89e3\u8bf7\u6c42\u8fc7\u591a\u88ab\u98ce\u63a7"),t.qZA())}function fa(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1," \u8bbe\u7f6e\u5185\u5bb9\uff1a\u53d1\u9001\u76f4\u64ad API (\u76f4\u64ad\u6d41 API getRoomPlayInfo \u9664\u5916) \u8bf7\u6c42\u6240\u7528\u7684\u4e3b\u673a\u7684\u5730\u5740\uff0c\u4e00\u884c\u4e00\u4e2a\u3002 "),t.qZA(),t.TgZ(2,"p"),t._uU(3,"\u8bf7\u6c42\u65b9\u5f0f\uff1a\u5148\u7528\u7b2c\u4e00\u4e2a\u53d1\u9001\u8bf7\u6c42\uff0c\u51fa\u9519\u5c31\u7528\u7b2c\u4e8c\u4e2a\uff0c\u4ee5\u6b64\u7c7b\u63a8\u3002"),t.qZA(),t.TgZ(4,"p"),t._uU(5,"\u4e3b\u8981\u76ee\u7684\uff1a\u7f13\u89e3\u8bf7\u6c42\u8fc7\u591a\u88ab\u98ce\u63a7"),t.qZA())}function Ca(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1," \u8bbe\u7f6e\u5185\u5bb9\uff1a\u53d1\u9001\u76f4\u64ad\u6d41 API (getRoomPlayInfo) \u8bf7\u6c42\u6240\u7528\u7684\u4e3b\u673a\u7684\u5730\u5740\uff0c\u4e00\u884c\u4e00\u4e2a\u3002 "),t.qZA(),t.TgZ(2,"p"),t._uU(3," \u8bf7\u6c42\u65b9\u5f0f\uff1a\u540c\u65f6\u5e76\u53d1\u5411\u5168\u90e8 API \u4e3b\u673a\u53d1\u9001\u8bf7\u6c42\uff08\u4ece\u5168\u90e8\u6210\u529f\u7684\u8bf7\u6c42\u7ed3\u679c\u4e2d\u63d0\u53d6\u76f4\u64ad\u6d41\u8d28\u91cf\u8f83\u597d\u7684\u76f4\u64ad\u6d41\u5730\u5740\uff09 "),t.qZA(),t.TgZ(4,"p"),t._uU(5,"\u4e3b\u8981\u76ee\u7684\uff1a\u6539\u53d8\u5f55\u5236\u7684\u76f4\u64ad\u6d41\u7684 CDN"),t.qZA(),t.TgZ(6,"p"),t._uU(7," P.S\uff1a\u56fd\u5916 IP \u7684\u8bf7\u6c42\u7ed3\u679c\u6ca1\u6709 HLS(fmp4) \u6d41\uff0c\u8981\u540c\u65f6\u652f\u6301 fmp4 \u548c flv \u53ef\u4ee5\u6df7\u7528\u56fd\u5185\u548c\u56fd\u5916\u7684 API \u4e3b\u673a\u3002 "),t.qZA())}It.\u0275fac=function(n){return new(n||It)(t.Y36(r.qu),t.Y36(t.sBO))},It.\u0275cmp=t.Xpm({type:It,selectors:[["app-base-play-info-api-url-edit-dialog"]],inputs:{value:"value",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:3,vars:2,consts:[["nzTitle","\u4fee\u6539\u76f4\u64ad\u6d41 API \u4e3b\u673a\u5730\u5740","nzCentered","",3,"nzVisible","nzOkDisabled","nzVisibleChange"],[4,"nzModalContent"],[3,"nzModalFooter"],["nz-form","",3,"formGroup"],[3,"nzErrorTip"],["wrap","soft","nz-input","","required","","formControlName","basePlayInfoApiUrls",3,"rows"],["errorTip",""],[4,"ngIf"],["nz-button","","nzType","default",3,"disabled","click"],["nz-button","","nzType","default",3,"click"],["nz-button","","nzDanger","","nzType","default",3,"disabled","click"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzVisibleChange",function(a){return e.visible=a}),t.YNc(1,da,7,3,"ng-container",1),t.YNc(2,ha,6,2,"ng-template",2),t.qZA()),2&n&&t.Q6J("nzVisible",e.visible)("nzOkDisabled",e.control.invalid||e.control.value.trim()===e.value)},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.Fd,O.Zp,_.du,_.Uh,_.Hf,Q.ix,I.w,dt.dQ,p.Ts],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Jt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({baseApiUrls:[[]],baseLiveApiUrls:[[]],basePlayInfoApiUrls:[[]]})}get baseApiUrlsControl(){return this.settingsForm.get("baseApiUrls")}get baseLiveApiUrlsControl(){return this.settingsForm.get("baseLiveApiUrls")}get basePlayInfoApiUrlsControl(){return this.settingsForm.get("basePlayInfoApiUrls")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("biliApi",this.settings,this.settingsForm.valueChanges,!1).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}Jt.\u0275fac=function(n){return new(n||Jt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},Jt.\u0275cmp=t.Xpm({type:Jt,selectors:[["app-bili-api-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:31,vars:16,consts:[["nz-form","",3,"formGroup"],[1,"setting-item","actionable",3,"click"],[1,"setting-label",3,"nzTooltipTitle"],["baseApiUrlsTip",""],[3,"nzWarningTip","nzValidateStatus"],[1,"setting-value"],[3,"value","confirm"],["baseApiUrlsEditDialog",""],["baseLiveApiUrlsTip",""],["baseLiveApiUrlsEditDialog",""],["basePalyInfoApiUrlTip",""],["basePlayInfoApiUrlsEditDialog",""]],template:function(n,e){if(1&n){const o=t.EpF();t.TgZ(0,"form",0)(1,"nz-form-item",1),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(10);return t.KtG(s.open())}),t.TgZ(2,"nz-form-label",2),t._uU(3,"\u4e3b\u7ad9 API \u4e3b\u673a\u5730\u5740"),t.qZA(),t.YNc(4,_a,6,0,"ng-template",null,3,t.W1O),t.TgZ(6,"nz-form-control",4)(7,"nz-form-text",5),t._uU(8),t.qZA(),t.TgZ(9,"app-base-api-url-edit-dialog",6,7),t.NdJ("confirm",function(s){return e.baseApiUrlsControl.setValue(s)}),t.qZA()()(),t.TgZ(11,"nz-form-item",1),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(20);return t.KtG(s.open())}),t.TgZ(12,"nz-form-label",2),t._uU(13,"\u76f4\u64ad API \u4e3b\u673a\u5730\u5740"),t.qZA(),t.YNc(14,fa,6,0,"ng-template",null,8,t.W1O),t.TgZ(16,"nz-form-control",4)(17,"nz-form-text",5),t._uU(18),t.qZA(),t.TgZ(19,"app-base-live-api-url-edit-dialog",6,9),t.NdJ("confirm",function(s){return e.baseLiveApiUrlsControl.setValue(s)}),t.qZA()()(),t.TgZ(21,"nz-form-item",1),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(30);return t.KtG(s.open())}),t.TgZ(22,"nz-form-label",2),t._uU(23,"\u76f4\u64ad\u6d41 API \u4e3b\u673a\u5730\u5740"),t.qZA(),t.YNc(24,Ca,8,0,"ng-template",null,10,t.W1O),t.TgZ(26,"nz-form-control",4)(27,"nz-form-text",5),t._uU(28),t.qZA(),t.TgZ(29,"app-base-play-info-api-url-edit-dialog",6,11),t.NdJ("confirm",function(s){return e.basePlayInfoApiUrlsControl.setValue(s)}),t.qZA()()()()}if(2&n){const o=t.MAs(5),a=t.MAs(15),s=t.MAs(25);t.Q6J("formGroup",e.settingsForm),t.xp6(2),t.Q6J("nzTooltipTitle",o),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.baseApiUrls?e.baseApiUrlsControl:"warning"),t.xp6(2),t.hij("",e.baseApiUrlsControl.value," "),t.xp6(1),t.Q6J("value",e.baseApiUrlsControl.value),t.xp6(3),t.Q6J("nzTooltipTitle",a),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.baseLiveApiUrls?e.baseLiveApiUrlsControl:"warning"),t.xp6(2),t.hij("",e.baseLiveApiUrlsControl.value," "),t.xp6(1),t.Q6J("value",e.baseLiveApiUrlsControl.value),t.xp6(3),t.Q6J("nzTooltipTitle",s),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.basePlayInfoApiUrls?e.basePlayInfoApiUrlsControl:"warning"),t.xp6(2),t.hij("",e.basePlayInfoApiUrlsControl.value," "),t.xp6(1),t.Q6J("value",e.basePlayInfoApiUrlsControl.value)}},dependencies:[r._Y,r.JL,r.sg,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,l.EF,Bt,Ut,It],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}nz-form-control[_ngcontent-%COMP%]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}"],changeDetection:0});const va=["innerContent"];class Qt{constructor(n,e,o,a){this.changeDetector=n,this.route=e,this.logger=o,this.routerScrollService=a}ngOnInit(){this.route.data.subscribe(n=>{this.settings=n.settings,this.changeDetector.markForCheck()})}ngAfterViewInit(){this.innerContent?this.routerScrollService.setCustomViewportToScroll(this.innerContent.nativeElement):this.logger.error("The content element could not be found!")}}Qt.\u0275fac=function(n){return new(n||Qt)(t.Y36(t.sBO),t.Y36(v.gz),t.Y36(Z.Kf),t.Y36(pt))},Qt.\u0275cmp=t.Xpm({type:Qt,selectors:[["app-settings"]],viewQuery:function(n,e){if(1&n&&t.Gf(va,5),2&n){let o;t.iGM(o=t.CRH())&&(e.innerContent=o.first)}},decls:24,vars:8,consts:[[1,"inner-content"],["innerContent",""],[1,"main-settings","settings-page"],[1,"settings-page-content"],["name","\u6587\u4ef6"],[3,"settings"],["name","\u5f55\u5236"],["name","\u5f39\u5e55"],["name","\u6587\u4ef6\u5904\u7406"],["name","\u786c\u76d8\u7a7a\u95f4"],["name","BILI API"],["name","\u7f51\u7edc\u8bf7\u6c42"],["name","\u65e5\u5fd7"],["name","\u901a\u77e5"],["name","Webhook"]],template:function(n,e){1&n&&(t.TgZ(0,"div",0,1)(2,"div",2)(3,"div",3)(4,"app-page-section",4),t._UZ(5,"app-output-settings",5),t.qZA(),t.TgZ(6,"app-page-section",6),t._UZ(7,"app-recorder-settings",5),t.qZA(),t.TgZ(8,"app-page-section",7),t._UZ(9,"app-danmaku-settings",5),t.qZA(),t.TgZ(10,"app-page-section",8),t._UZ(11,"app-post-processing-settings",5),t.qZA(),t.TgZ(12,"app-page-section",9),t._UZ(13,"app-disk-space-settings",5),t.qZA(),t.TgZ(14,"app-page-section",10),t._UZ(15,"app-bili-api-settings",5),t.qZA(),t.TgZ(16,"app-page-section",11),t._UZ(17,"app-header-settings",5),t.qZA(),t.TgZ(18,"app-page-section",12),t._UZ(19,"app-logging-settings",5),t.qZA(),t.TgZ(20,"app-page-section",13),t._UZ(21,"app-notification-settings"),t.qZA(),t.TgZ(22,"app-page-section",14),t._UZ(23,"app-webhook-settings"),t.qZA()()()()),2&n&&(t.xp6(5),t.Q6J("settings",e.settings.output),t.xp6(2),t.Q6J("settings",e.settings.recorder),t.xp6(2),t.Q6J("settings",e.settings.danmaku),t.xp6(2),t.Q6J("settings",e.settings.postprocessing),t.xp6(2),t.Q6J("settings",e.settings.space),t.xp6(2),t.Q6J("settings",e.settings.biliApi),t.xp6(2),t.Q6J("settings",e.settings.header),t.xp6(2),t.Q6J("settings",e.settings.logging))},dependencies:[q.g,xt,Ot,Pt,Tt,wt,Ft,At,Et,Zt,Jt],styles:[".inner-content[_ngcontent-%COMP%]{height:100%;width:100%;position:relative;display:block;margin:0;padding:1rem;background:#f1f1f1;overflow:auto}.settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}.inner-content[_ngcontent-%COMP%]{padding-top:0}"]});var za=c(7298),xa=c(6198),Ge=c(3449),Oa=c(2168);const ba=function Ma(i,n,e,o){if(!(0,Mt.Z)(i))return i;for(var a=-1,s=(n=(0,Ge.Z)(n,i)).length,g=s-1,m=i;null!=m&&++a<s;){var h=(0,Oa.Z)(n[a]),k=e;if("__proto__"===h||"constructor"===h||"prototype"===h)return i;if(a!=g){var J=m[h];void 0===(k=o?o(J,h,m):void 0)&&(k=(0,Mt.Z)(J)?J:(0,Ye.Z)(n[a+1])?[]:{})}(0,xa.Z)(m,h,k),m=m[h]}return i};var wa=c(5867);const Sa=function Fa(i,n){return function Pa(i,n,e){for(var o=-1,a=n.length,s={};++o<a;){var g=n[o],m=(0,za.Z)(i,g);e(m,g)&&ba(s,(0,Ge.Z)(g,i),m)}return s}(i,n,function(e,o){return(0,wa.Z)(i,o)})};var ya=c(6623),He=c(8492),$e=He.Z?He.Z.isConcatSpreadable:void 0;const ka=function Aa(i){return(0,Le.Z)(i)||(0,Ve.Z)(i)||!!($e&&i&&i[$e])},Da=function Ke(i,n,e,o,a){var s=-1,g=i.length;for(e||(e=ka),a||(a=[]);++s<g;){var m=i[s];n>0&&e(m)?n>1?Ke(m,n-1,e,o,a):(0,ya.Z)(a,m):o||(a[a.length]=m)}return a},Za=function Ea(i){return null!=i&&i.length?Da(i,1):[]},Ba=function Na(i,n,e){switch(e.length){case 0:return i.call(n);case 1:return i.call(n,e[0]);case 2:return i.call(n,e[0],e[1]);case 3:return i.call(n,e[0],e[1],e[2])}return i.apply(n,e)};var Xe=Math.max;const Qa=function Ja(i){return function(){return i}};var je=c(2370),Va=c(9940),Ya=800,Wa=16,Ra=Date.now;const $a=function Ga(i){var n=0,e=0;return function(){var o=Ra(),a=Wa-(o-e);if(e=o,a>0){if(++n>=Ya)return arguments[0]}else n=0;return i.apply(void 0,arguments)}}(je.Z?function(i,n){return(0,je.Z)(i,"toString",{configurable:!0,enumerable:!1,value:Qa(n),writable:!0})}:Va.Z),f=function Ka(i){return $a(function Ua(i,n,e){return n=Xe(void 0===n?i.length-1:n,0),function(){for(var o=arguments,a=-1,s=Xe(o.length-n,0),g=Array(s);++a<s;)g[a]=o[n+a];a=-1;for(var m=Array(n+1);++a<n;)m[a]=o[a];return m[n]=e(g),Ba(i,this,m)}}(i,void 0,Za),i+"")}(function(i,n){return null==i?{}:Sa(i,n)});var C=c(8760),rt=c(5545),st=c(7512);class N{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({notifyBegan:[""],notifyEnded:[""],notifyError:[""],notifySpace:[""]})}get notifyBeganControl(){return this.settingsForm.get("notifyBegan")}get notifyEndedControl(){return this.settingsForm.get("notifyEnded")}get notifyErrorControl(){return this.settingsForm.get("notifyError")}get notifySpaceControl(){return this.settingsForm.get("notifySpace")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings(this.keyOfSettings,this.settingsForm.value,this.settingsForm.valueChanges).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}N.\u0275fac=function(n){return new(n||N)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},N.\u0275cmp=t.Xpm({type:N,selectors:[["app-event-settings"]],inputs:{settings:"settings",keyOfSettings:"keyOfSettings"},features:[t.TTD],decls:21,vars:9,consts:[["nz-form","",3,"formGroup"],["appSwitchActionable","",1,"setting-item"],["nzNoColon","",1,"setting-label"],[1,"setting-control","switch",3,"nzWarningTip","nzValidateStatus"],["formControlName","notifyBegan"],["formControlName","notifyEnded"],["formControlName","notifyError"],["formControlName","notifySpace"]],template:function(n,e){1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"\u5f00\u64ad\u53d1\u9001\u901a\u77e5"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"nz-switch",4),t.qZA()(),t.TgZ(6,"nz-form-item",1)(7,"nz-form-label",2),t._uU(8,"\u4e0b\u64ad\u53d1\u9001\u901a\u77e5"),t.qZA(),t.TgZ(9,"nz-form-control",3),t._UZ(10,"nz-switch",5),t.qZA()(),t.TgZ(11,"nz-form-item",1)(12,"nz-form-label",2),t._uU(13,"\u51fa\u9519\u53d1\u9001\u901a\u77e5"),t.qZA(),t.TgZ(14,"nz-form-control",3),t._UZ(15,"nz-switch",6),t.qZA()(),t.TgZ(16,"nz-form-item",1)(17,"nz-form-label",2),t._uU(18,"\u7a7a\u95f4\u4e0d\u8db3\u53d1\u9001\u901a\u77e5"),t.qZA(),t.TgZ(19,"nz-form-control",3),t._UZ(20,"nz-switch",7),t.qZA()()()),2&n&&(t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.notifyBegan?e.notifyBeganControl:"warning"),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.notifyEnded?e.notifyEndedControl:"warning"),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.notifyError?e.notifyErrorControl:"warning"),t.xp6(5),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.notifySpace?e.notifySpaceControl:"warning"))},dependencies:[r._Y,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,U.i,y],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});var ja=c(6422);function tr(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165\u90ae\u7bb1\u5730\u5740\uff01 "),t.BQk())}function er(i,n){1&i&&(t.ynx(0),t._uU(1," \u90ae\u7bb1\u5730\u5740\u65e0\u6548! "),t.BQk())}function nr(i,n){if(1&i&&(t.YNc(0,tr,2,0,"ng-container",17),t.YNc(1,er,2,0,"ng-container",17)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("email"))}}function ir(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165\u6388\u6743\u7801\uff01 "),t.BQk())}function or(i,n){1&i&&t.YNc(0,ir,2,0,"ng-container",17),2&i&&t.Q6J("ngIf",n.$implicit.hasError("required"))}function ar(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 SMTP \u4e3b\u673a\uff01 "),t.BQk())}function rr(i,n){1&i&&t.YNc(0,ar,2,0,"ng-container",17),2&i&&t.Q6J("ngIf",n.$implicit.hasError("required"))}function sr(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 SMTP \u7aef\u53e3\uff01 "),t.BQk())}function lr(i,n){1&i&&(t.ynx(0),t._uU(1," SMTP \u7aef\u53e3\u65e0\u6548\uff01 "),t.BQk())}function cr(i,n){if(1&i&&(t.YNc(0,sr,2,0,"ng-container",17),t.YNc(1,lr,2,0,"ng-container",17)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}function gr(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165\u90ae\u7bb1\u5730\u5740\uff01 "),t.BQk())}function ur(i,n){1&i&&(t.ynx(0),t._uU(1," \u90ae\u7bb1\u5730\u5740\u65e0\u6548! "),t.BQk())}function mr(i,n){if(1&i&&(t.YNc(0,gr,2,0,"ng-container",17),t.YNc(1,ur,2,0,"ng-container",17)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("email"))}}class Vt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({srcAddr:["",[r.kI.required,r.kI.email]],dstAddr:["",[r.kI.required,r.kI.email]],authCode:["",[r.kI.required]],smtpHost:["",[r.kI.required]],smtpPort:["",[r.kI.required,r.kI.pattern(/\d+/)]]})}get srcAddrControl(){return this.settingsForm.get("srcAddr")}get dstAddrControl(){return this.settingsForm.get("dstAddr")}get authCodeControl(){return this.settingsForm.get("authCode")}get smtpHostControl(){return this.settingsForm.get("smtpHost")}get smtpPortControl(){return this.settingsForm.get("smtpPort")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("emailNotification",this.settings,this.settingsForm.valueChanges.pipe((0,at.Sc)(this.settingsForm),(0,T.U)(n=>(0,ja.Z)(n,(e,o,a)=>{o="smtpPort"===a?parseInt(o):o,Reflect.set(e,a,o)},{})))).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}Vt.\u0275fac=function(n){return new(n||Vt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},Vt.\u0275cmp=t.Xpm({type:Vt,selectors:[["app-email-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:36,vars:16,consts:[["nz-form","",3,"formGroup"],[1,"setting-item"],["nzFor","srcAddr","nzNoColon","","nzRequired","",1,"setting-label"],["nzHasFeedback","",1,"setting-control","input",3,"nzErrorTip","nzWarningTip","nzValidateStatus"],["id","srcAddr","type","email","placeholder","\u53d1\u9001\u901a\u77e5\u7684\u90ae\u7bb1\u5730\u5740","required","","nz-input","","formControlName","srcAddr"],["emailErrorTip",""],["nzFor","authCode","nzNoColon","","nzRequired","",1,"setting-label"],["id","authCode","type","text","placeholder","\u53d1\u9001\u90ae\u7bb1\u7684 SMTP \u6388\u6743\u7801","required","","nz-input","","formControlName","authCode"],["authCodeErrorTip",""],["nzFor","smtpHost","nzNoColon","","nzRequired","",1,"setting-label"],["id","smtpHost","type","text","placeholder","\u53d1\u9001\u90ae\u7bb1\u7684 SMTP \u4e3b\u673a\uff0c\u4f8b\u5982\uff1asmtp.163.com \u3002","required","","nz-input","","formControlName","smtpHost"],["smtpHostErrorTip",""],["nzFor","smtpPort","nzNoColon","","nzRequired","",1,"setting-label"],["id","smtpPort","type","text","pattern","\\d+","placeholder","\u53d1\u9001\u90ae\u7bb1\u7684 SMTP \u4e3b\u673a\u7aef\u53e3\uff0c\u901a\u5e38\u4e3a 465 \u3002","required","","nz-input","","formControlName","smtpPort"],["smtpPortErrorTip",""],["nzFor","dstAddr","nzNoColon","","nzRequired","",1,"setting-label"],["id","dstAddr","type","email","placeholder","\u63a5\u6536\u901a\u77e5\u7684\u90ae\u7bb1\u5730\u5740\uff0c\u53ef\u4ee5\u548c\u53d1\u9001\u90ae\u7bb1\u76f8\u540c\u5b9e\u73b0\u81ea\u53d1\u81ea\u6536\u3002","required","","nz-input","","formControlName","dstAddr"],[4,"ngIf"]],template:function(n,e){if(1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"\u53d1\u9001\u90ae\u7bb1"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"input",4),t.YNc(6,nr,2,2,"ng-template",null,5,t.W1O),t.qZA()(),t.TgZ(8,"nz-form-item",1)(9,"nz-form-label",6),t._uU(10,"\u6388\u6743\u7801"),t.qZA(),t.TgZ(11,"nz-form-control",3),t._UZ(12,"input",7),t.YNc(13,or,1,1,"ng-template",null,8,t.W1O),t.qZA()(),t.TgZ(15,"nz-form-item",1)(16,"nz-form-label",9),t._uU(17,"SMTP \u4e3b\u673a"),t.qZA(),t.TgZ(18,"nz-form-control",3),t._UZ(19,"input",10),t.YNc(20,rr,1,1,"ng-template",null,11,t.W1O),t.qZA()(),t.TgZ(22,"nz-form-item",1)(23,"nz-form-label",12),t._uU(24,"SMTP \u7aef\u53e3"),t.qZA(),t.TgZ(25,"nz-form-control",3),t._UZ(26,"input",13),t.YNc(27,cr,2,2,"ng-template",null,14,t.W1O),t.qZA()(),t.TgZ(29,"nz-form-item",1)(30,"nz-form-label",15),t._uU(31,"\u63a5\u6536\u90ae\u7bb1"),t.qZA(),t.TgZ(32,"nz-form-control",3),t._UZ(33,"input",16),t.YNc(34,mr,2,2,"ng-template",null,5,t.W1O),t.qZA()()()),2&n){const o=t.MAs(7),a=t.MAs(14),s=t.MAs(21),g=t.MAs(28);t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzErrorTip",o)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.srcAddrControl.valid&&!e.syncStatus.srcAddr?"warning":e.srcAddrControl),t.xp6(7),t.Q6J("nzErrorTip",a)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.authCodeControl.valid&&!e.syncStatus.authCode?"warning":e.authCodeControl),t.xp6(7),t.Q6J("nzErrorTip",s)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.smtpHostControl.valid&&!e.syncStatus.smtpHost?"warning":e.smtpHostControl),t.xp6(7),t.Q6J("nzErrorTip",g)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.smtpPortControl.valid&&!e.syncStatus.smtpPort?"warning":e.smtpPortControl),t.xp6(7),t.Q6J("nzErrorTip",o)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.dstAddrControl.valid&&!e.syncStatus.dstAddr?"warning":e.dstAddrControl)}},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.c5,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,O.Zp],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}.setting-label[_ngcontent-%COMP%]{max-width:6em!important;width:6em!important}"],changeDetection:0});class B{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({enabled:[""]})}get enabledControl(){return this.settingsForm.get("enabled")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings(this.keyOfSettings,this.settings,this.settingsForm.valueChanges).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}B.\u0275fac=function(n){return new(n||B)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},B.\u0275cmp=t.Xpm({type:B,selectors:[["app-notifier-settings"]],inputs:{settings:"settings",keyOfSettings:"keyOfSettings"},features:[t.TTD],decls:6,vars:3,consts:[["nz-form","",3,"formGroup"],["appSwitchActionable","",1,"setting-item"],["nzNoColon","",1,"setting-label"],[1,"setting-control","switch",3,"nzWarningTip","nzValidateStatus"],["formControlName","enabled"]],template:function(n,e){1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"\u5141\u8bb8\u901a\u77e5"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"nz-switch",4),t.qZA()()()),2&n&&(t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.syncStatus.enabled?e.enabledControl:"warning"))},dependencies:[r._Y,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,U.i,y],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class A{constructor(n,e,o){this.changeDetector=n,this.message=e,this.settingService=o}ngOnInit(){switch(this.keyOfSettings){case"emailNotification":this.messageTypes=["text","html"];break;case"serverchanNotification":this.messageTypes=["markdown"];break;case"pushdeerNotification":this.messageTypes=["markdown","text"];break;case"pushplusNotification":this.messageTypes=["markdown","text","html"];break;case"telegramNotification":this.messageTypes=["markdown","html"]}}ngOnChanges(n){this.updateCommonSettings()}changeBeganMessageTemplateSettings(n){this.changeMessageTemplateSettings({beganMessageType:n.messageType,beganMessageTitle:n.messageTitle,beganMessageContent:n.messageContent}).subscribe()}changeEndedMessageTemplateSettings(n){this.changeMessageTemplateSettings({endedMessageType:n.messageType,endedMessageTitle:n.messageTitle,endedMessageContent:n.messageContent}).subscribe()}changeSpaceMessageTemplateSettings(n){this.changeMessageTemplateSettings({spaceMessageType:n.messageType,spaceMessageTitle:n.messageTitle,spaceMessageContent:n.messageContent}).subscribe()}changeErrorMessageTemplateSettings(n){this.changeMessageTemplateSettings({errorMessageType:n.messageType,errorMessageTitle:n.messageTitle,errorMessageContent:n.messageContent}).subscribe()}changeMessageTemplateSettings(n){return this.settingService.changeSettings({[this.keyOfSettings]:n}).pipe((0,F.X)(3,300),(0,re.b)(e=>{this.message.success("\u4fee\u6539\u6d88\u606f\u6a21\u677f\u8bbe\u7f6e\u6210\u529f"),this.settings={...this.settings,...e[this.keyOfSettings]},this.updateCommonSettings(),this.changeDetector.markForCheck()},e=>{this.message.error(`\u4fee\u6539\u6d88\u606f\u6a21\u677f\u8bbe\u7f6e\u51fa\u9519: ${e.message}`)}))}updateCommonSettings(){this.beganMessageTemplateSettings={messageType:this.settings.beganMessageType,messageTitle:this.settings.beganMessageTitle,messageContent:this.settings.beganMessageContent},this.endedMessageTemplateSettings={messageType:this.settings.endedMessageType,messageTitle:this.settings.endedMessageTitle,messageContent:this.settings.endedMessageContent},this.spaceMessageTemplateSettings={messageType:this.settings.spaceMessageType,messageTitle:this.settings.spaceMessageTitle,messageContent:this.settings.spaceMessageContent},this.errorMessageTemplateSettings={messageType:this.settings.errorMessageType,messageTitle:this.settings.errorMessageTitle,messageContent:this.settings.errorMessageContent}}}function pr(i,n){if(1&i&&(t.TgZ(0,"app-page-section"),t._UZ(1,"app-notifier-settings",2),t.qZA(),t.TgZ(2,"app-page-section",3),t._UZ(3,"app-email-settings",4),t.qZA(),t.TgZ(4,"app-page-section",5),t._UZ(5,"app-event-settings",2),t.qZA(),t.TgZ(6,"app-page-section",6),t._UZ(7,"app-message-template-settings",2),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("settings",e.notifierSettings),t.xp6(2),t.Q6J("settings",e.emailSettings),t.xp6(2),t.Q6J("settings",e.notificationSettings),t.xp6(2),t.Q6J("settings",e.messageTemplateSettings)}}A.\u0275fac=function(n){return new(n||A)(t.Y36(t.sBO),t.Y36(se.dD),t.Y36(S.R))},A.\u0275cmp=t.Xpm({type:A,selectors:[["app-message-template-settings"]],inputs:{settings:"settings",keyOfSettings:"keyOfSettings"},features:[t.TTD],decls:20,vars:12,consts:[[1,"setting-item","actionable",3,"click"],[1,"setting-label"],[3,"title","value","messageTypes","confirm"],["beganMessageTemplateEditDialog",""],["endedMessageTemplateEditDialog",""],["errorMessageTemplateEditDialog",""],["spaceMessageTemplateEditDialog",""]],template:function(n,e){if(1&n){const o=t.EpF();t.TgZ(0,"a",0),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(4);return t.KtG(s.open())}),t.TgZ(1,"span",1),t._uU(2,"\u5f00\u64ad\u6d88\u606f\u6a21\u677f"),t.qZA()(),t.TgZ(3,"app-message-template-edit-dialog",2,3),t.NdJ("confirm",function(s){return e.changeBeganMessageTemplateSettings(s)}),t.qZA(),t.TgZ(5,"a",0),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(9);return t.KtG(s.open())}),t.TgZ(6,"span",1),t._uU(7,"\u4e0b\u64ad\u6d88\u606f\u6a21\u677f"),t.qZA()(),t.TgZ(8,"app-message-template-edit-dialog",2,4),t.NdJ("confirm",function(s){return e.changeEndedMessageTemplateSettings(s)}),t.qZA(),t.TgZ(10,"a",0),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(14);return t.KtG(s.open())}),t.TgZ(11,"span",1),t._uU(12,"\u5f02\u5e38\u6d88\u606f\u6a21\u677f"),t.qZA()(),t.TgZ(13,"app-message-template-edit-dialog",2,5),t.NdJ("confirm",function(s){return e.changeErrorMessageTemplateSettings(s)}),t.qZA(),t.TgZ(15,"a",0),t.NdJ("click",function(){t.CHM(o);const s=t.MAs(19);return t.KtG(s.open())}),t.TgZ(16,"span",1),t._uU(17,"\u7a7a\u95f4\u4e0d\u8db3\u6d88\u606f\u6a21\u677f"),t.qZA()(),t.TgZ(18,"app-message-template-edit-dialog",2,6),t.NdJ("confirm",function(s){return e.changeSpaceMessageTemplateSettings(s)}),t.qZA()}2&n&&(t.xp6(3),t.Q6J("title","\u4fee\u6539\u5f00\u64ad\u6d88\u606f\u6a21\u677f")("value",e.beganMessageTemplateSettings)("messageTypes",e.messageTypes),t.xp6(5),t.Q6J("title","\u4fee\u6539\u4e0b\u64ad\u6d88\u606f\u6a21\u677f")("value",e.endedMessageTemplateSettings)("messageTypes",e.messageTypes),t.xp6(5),t.Q6J("title","\u4fee\u6539\u5f02\u5e38\u6d88\u606f\u6a21\u677f")("value",e.errorMessageTemplateSettings)("messageTypes",e.messageTypes),t.xp6(5),t.Q6J("title","\u4fee\u6539\u7a7a\u95f4\u4e0d\u8db3\u6d88\u606f\u6a21\u677f")("value",e.spaceMessageTemplateSettings)("messageTypes",e.messageTypes))},styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Lt{constructor(n,e){this.changeDetector=n,this.route=e}ngOnInit(){this.route.data.subscribe(n=>{const e=n.settings;this.emailSettings=f(e,C.gP),this.notifierSettings=f(e,C._1),this.notificationSettings=f(e,C.X),this.messageTemplateSettings=f(e,C.tI),this.changeDetector.markForCheck()})}}function dr(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 sendkey\uff01 "),t.BQk())}function hr(i,n){1&i&&(t.ynx(0),t._uU(1," sendkey \u65e0\u6548 "),t.BQk())}function _r(i,n){if(1&i&&(t.YNc(0,dr,2,0,"ng-container",6),t.YNc(1,hr,2,0,"ng-container",6)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}Lt.\u0275fac=function(n){return new(n||Lt)(t.Y36(t.sBO),t.Y36(v.gz))},Lt.\u0275cmp=t.Xpm({type:Lt,selectors:[["app-email-notification-settings"]],decls:2,vars:0,consts:[["pageTitle","\u90ae\u4ef6\u901a\u77e5"],["appSubPageContent",""],["keyOfSettings","emailNotification",3,"settings"],["name","\u90ae\u7bb1"],[3,"settings"],["name","\u4e8b\u4ef6"],["name","\u6d88\u606f"]],template:function(n,e){1&n&&(t.TgZ(0,"app-sub-page",0),t.YNc(1,pr,8,4,"ng-template",1),t.qZA())},dependencies:[rt.Y,st.q,q.g,N,Vt,B,A],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class qt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({sendkey:["",[r.kI.required,r.kI.pattern(/^[a-zA-Z\d]+$/)]]})}get sendkeyControl(){return this.settingsForm.get("sendkey")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("serverchanNotification",this.settings,this.settingsForm.valueChanges.pipe((0,at.Sc)(this.settingsForm))).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}function fr(i,n){if(1&i&&(t.TgZ(0,"app-page-section"),t._UZ(1,"app-notifier-settings",2),t.qZA(),t.TgZ(2,"app-page-section",3),t._UZ(3,"app-serverchan-settings",4),t.qZA(),t.TgZ(4,"app-page-section",5),t._UZ(5,"app-event-settings",2),t.qZA(),t.TgZ(6,"app-page-section",6),t._UZ(7,"app-message-template-settings",2),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("settings",e.notifierSettings),t.xp6(2),t.Q6J("settings",e.serverchanSettings),t.xp6(2),t.Q6J("settings",e.notificationSettings),t.xp6(2),t.Q6J("settings",e.messageTemplateSettings)}}qt.\u0275fac=function(n){return new(n||qt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},qt.\u0275cmp=t.Xpm({type:qt,selectors:[["app-serverchan-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:8,vars:4,consts:[["nz-form","",3,"formGroup"],[1,"setting-item"],["nzFor","sendkey","nzNoColon","","nzRequired","",1,"setting-label"],["nzHasFeedback","",1,"setting-control","input",3,"nzErrorTip","nzWarningTip","nzValidateStatus"],["id","sendkey","type","text","required","","nz-input","","formControlName","sendkey"],["sendkeyErrorTip",""],[4,"ngIf"]],template:function(n,e){if(1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"sendkey"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"input",4),t.YNc(6,_r,2,2,"ng-template",null,5,t.W1O),t.qZA()()()),2&n){const o=t.MAs(7);t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzErrorTip",o)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.sendkeyControl.valid&&!e.syncStatus.sendkey?"warning":e.sendkeyControl)}},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,O.Zp],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}.setting-label[_ngcontent-%COMP%]{max-width:5em!important;width:5em!important}"],changeDetection:0});class Yt{constructor(n,e){this.changeDetector=n,this.route=e}ngOnInit(){this.route.data.subscribe(n=>{const e=n.settings;this.serverchanSettings=f(e,C.gq),this.notifierSettings=f(e,C._1),this.notificationSettings=f(e,C.X),this.messageTemplateSettings=f(e,C.tI),this.changeDetector.markForCheck()})}}function Cr(i,n){1&i&&(t.ynx(0),t._uU(1," server \u65e0\u6548 "),t.BQk())}function vr(i,n){1&i&&t.YNc(0,Cr,2,0,"ng-container",9),2&i&&t.Q6J("ngIf",n.$implicit.hasError("pattern"))}function zr(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 pushkey\uff01 "),t.BQk())}function xr(i,n){1&i&&(t.ynx(0),t._uU(1," pushkey \u65e0\u6548 "),t.BQk())}function Or(i,n){if(1&i&&(t.YNc(0,zr,2,0,"ng-container",9),t.YNc(1,xr,2,0,"ng-container",9)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}Yt.\u0275fac=function(n){return new(n||Yt)(t.Y36(t.sBO),t.Y36(v.gz))},Yt.\u0275cmp=t.Xpm({type:Yt,selectors:[["app-serverchan-notification-settings"]],decls:2,vars:0,consts:[["pageTitle","ServerChan \u901a\u77e5"],["appSubPageContent",""],["keyOfSettings","serverchanNotification",3,"settings"],["name","ServerChan"],[3,"settings"],["name","\u4e8b\u4ef6"],["name","\u6d88\u606f"]],template:function(n,e){1&n&&(t.TgZ(0,"app-sub-page",0),t.YNc(1,fr,8,4,"ng-template",1),t.qZA())},dependencies:[rt.Y,st.q,q.g,N,qt,B,A],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Wt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({server:["",[r.kI.pattern(/^https?:\/\/.+/)]],pushkey:["",[r.kI.required,r.kI.pattern(/^PDU\d+T[a-zA-Z\d]{32}(,PDU\d+T[a-zA-Z\d]{32}){0,99}$/)]]})}get serverControl(){return this.settingsForm.get("server")}get pushkeyControl(){return this.settingsForm.get("pushkey")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),console.log(this.settings),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("pushdeerNotification",this.settings,this.settingsForm.valueChanges.pipe((0,at.Sc)(this.settingsForm))).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}function Mr(i,n){if(1&i&&(t.TgZ(0,"app-page-section"),t._UZ(1,"app-notifier-settings",2),t.qZA(),t.TgZ(2,"app-page-section",3),t._UZ(3,"app-pushdeer-settings",4),t.qZA(),t.TgZ(4,"app-page-section",5),t._UZ(5,"app-event-settings",2),t.qZA(),t.TgZ(6,"app-page-section",6),t._UZ(7,"app-message-template-settings",2),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("settings",e.notifierSettings),t.xp6(2),t.Q6J("settings",e.pushdeerSettings),t.xp6(2),t.Q6J("settings",e.notificationSettings),t.xp6(2),t.Q6J("settings",e.messageTemplateSettings)}}Wt.\u0275fac=function(n){return new(n||Wt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},Wt.\u0275cmp=t.Xpm({type:Wt,selectors:[["app-pushdeer-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:15,vars:7,consts:[["nz-form","",3,"formGroup"],[1,"setting-item"],["nzFor","server","nzNoColon","",1,"setting-label","align-required"],["nzHasFeedback","",1,"setting-control","input",3,"nzErrorTip","nzWarningTip","nzValidateStatus"],["id","server","type","url","placeholder","\u9ed8\u8ba4\u4e3a\u5b98\u65b9\u670d\u52a1\u5668 https://api2.pushdeer.com","nz-input","","formControlName","server"],["serverErrorTip",""],["nzFor","pushkey","nzNoColon","","nzRequired","",1,"setting-label"],["id","pushkey","type","text","placeholder","\u591a\u4e2a key \u7528 , \u9694\u5f00\uff0c\u5728\u7ebf\u7248\u6700\u591a 10 \u4e2a\uff0c\u81ea\u67b6\u7248\u9ed8\u8ba4\u6700\u591a 100 \u4e2a\u3002","required","","nz-input","","formControlName","pushkey"],["pushkeyErrorTip",""],[4,"ngIf"]],template:function(n,e){if(1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"server"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"input",4),t.YNc(6,vr,1,1,"ng-template",null,5,t.W1O),t.qZA()(),t.TgZ(8,"nz-form-item",1)(9,"nz-form-label",6),t._uU(10,"pushkey"),t.qZA(),t.TgZ(11,"nz-form-control",3),t._UZ(12,"input",7),t.YNc(13,Or,2,2,"ng-template",null,8,t.W1O),t.qZA()()()),2&n){const o=t.MAs(7),a=t.MAs(14);t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzErrorTip",o)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.serverControl.valid&&!e.syncStatus.server?"warning":e.serverControl),t.xp6(7),t.Q6J("nzErrorTip",a)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.pushkeyControl.valid&&!e.syncStatus.pushkey?"warning":e.pushkeyControl)}},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,O.Zp],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}.setting-label[_ngcontent-%COMP%]{max-width:5em!important;width:5em!important}"],changeDetection:0});class Rt{constructor(n,e){this.changeDetector=n,this.route=e}ngOnInit(){this.route.data.subscribe(n=>{const e=n.settings;this.pushdeerSettings=f(e,C.jK),this.notifierSettings=f(e,C._1),this.notificationSettings=f(e,C.X),this.messageTemplateSettings=f(e,C.tI),this.changeDetector.markForCheck()})}}function br(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 token\uff01 "),t.BQk())}function Pr(i,n){1&i&&(t.ynx(0),t._uU(1," token \u65e0\u6548 "),t.BQk())}function Tr(i,n){if(1&i&&(t.YNc(0,br,2,0,"ng-container",9),t.YNc(1,Pr,2,0,"ng-container",9)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}Rt.\u0275fac=function(n){return new(n||Rt)(t.Y36(t.sBO),t.Y36(v.gz))},Rt.\u0275cmp=t.Xpm({type:Rt,selectors:[["app-pushdeer-notification-settings"]],decls:2,vars:0,consts:[["pageTitle","PushDeer \u901a\u77e5"],["appSubPageContent",""],["keyOfSettings","pushdeerNotification",3,"settings"],["name","PushDeer"],[3,"settings"],["name","\u4e8b\u4ef6"],["name","\u6d88\u606f"]],template:function(n,e){1&n&&(t.TgZ(0,"app-sub-page",0),t.YNc(1,Mr,8,4,"ng-template",1),t.qZA())},dependencies:[rt.Y,st.q,q.g,N,Wt,B,A],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Gt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({token:["",[r.kI.required,r.kI.pattern(/^[a-z\d]{32}$/)]],topic:[""]})}get tokenControl(){return this.settingsForm.get("token")}get topicControl(){return this.settingsForm.get("topic")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("pushplusNotification",this.settings,this.settingsForm.valueChanges.pipe((0,at.Sc)(this.settingsForm))).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}function wr(i,n){if(1&i&&(t.TgZ(0,"app-page-section"),t._UZ(1,"app-notifier-settings",2),t.qZA(),t.TgZ(2,"app-page-section",3),t._UZ(3,"app-pushplus-settings",4),t.qZA(),t.TgZ(4,"app-page-section",5),t._UZ(5,"app-event-settings",2),t.qZA(),t.TgZ(6,"app-page-section",6),t._UZ(7,"app-message-template-settings",2),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("settings",e.notifierSettings),t.xp6(2),t.Q6J("settings",e.pushplusSettings),t.xp6(2),t.Q6J("settings",e.notificationSettings),t.xp6(2),t.Q6J("settings",e.messageTemplateSettings)}}Gt.\u0275fac=function(n){return new(n||Gt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},Gt.\u0275cmp=t.Xpm({type:Gt,selectors:[["app-pushplus-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:13,vars:6,consts:[["nz-form","",3,"formGroup"],[1,"setting-item"],["nzFor","token","nzNoColon","","nzRequired","",1,"setting-label","required"],["nzHasFeedback","",1,"setting-control","input",3,"nzErrorTip","nzWarningTip","nzValidateStatus"],["id","token","type","text","required","","nz-input","","formControlName","token"],["tokenErrorTip",""],["nzFor","topic","nzNoColon","",1,"setting-label","align-required"],[1,"setting-control","input",3,"nzWarningTip","nzValidateStatus"],["id","topic","type","text","nz-input","","formControlName","topic"],[4,"ngIf"]],template:function(n,e){if(1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"token"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"input",4),t.YNc(6,Tr,2,2,"ng-template",null,5,t.W1O),t.qZA()(),t.TgZ(8,"nz-form-item",1)(9,"nz-form-label",6),t._uU(10,"topic"),t.qZA(),t.TgZ(11,"nz-form-control",7),t._UZ(12,"input",8),t.qZA()()()),2&n){const o=t.MAs(7);t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzErrorTip",o)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.tokenControl.valid&&!e.syncStatus.token?"warning":e.tokenControl),t.xp6(7),t.Q6J("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.topicControl.valid&&!e.syncStatus.topic?"warning":e.topicControl)}},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,O.Zp],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}.setting-label[_ngcontent-%COMP%]{max-width:4em!important;width:4em!important}"],changeDetection:0});class Ht{constructor(n,e){this.changeDetector=n,this.route=e}ngOnInit(){this.route.data.subscribe(n=>{const e=n.settings;this.pushplusSettings=f(e,C.q1),this.notifierSettings=f(e,C._1),this.notificationSettings=f(e,C.X),this.messageTemplateSettings=f(e,C.tI),this.changeDetector.markForCheck()})}}function Fr(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 token\uff01 "),t.BQk())}function Sr(i,n){1&i&&(t.ynx(0),t._uU(1," token \u65e0\u6548 "),t.BQk())}function yr(i,n){if(1&i&&(t.YNc(0,Fr,2,0,"ng-container",12),t.YNc(1,Sr,2,0,"ng-container",12)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}function Ar(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 chatid\uff01 "),t.BQk())}function kr(i,n){1&i&&(t.ynx(0),t._uU(1," chatid \u65e0\u6548 "),t.BQk())}function Dr(i,n){if(1&i&&(t.YNc(0,Ar,2,0,"ng-container",12),t.YNc(1,kr,2,0,"ng-container",12)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}function Er(i,n){1&i&&(t.ynx(0),t._uU(1," server \u65e0\u6548 "),t.BQk())}function Zr(i,n){1&i&&t.YNc(0,Er,2,0,"ng-container",12),2&i&&t.Q6J("ngIf",n.$implicit.hasError("pattern"))}Ht.\u0275fac=function(n){return new(n||Ht)(t.Y36(t.sBO),t.Y36(v.gz))},Ht.\u0275cmp=t.Xpm({type:Ht,selectors:[["app-pushplus-notification-settings"]],decls:2,vars:0,consts:[["pageTitle","pushplus \u901a\u77e5"],["appSubPageContent",""],["keyOfSettings","pushplusNotification",3,"settings"],["name","pushplus"],[3,"settings"],["name","\u4e8b\u4ef6"],["name","\u6d88\u606f"]],template:function(n,e){1&n&&(t.TgZ(0,"app-sub-page",0),t.YNc(1,wr,8,4,"ng-template",1),t.qZA())},dependencies:[rt.Y,st.q,q.g,N,Gt,B,A],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class $t{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({token:["",[r.kI.required,r.kI.pattern(/^[0-9]{8,10}:[a-zA-Z0-9_-]{35}$/)]],chatid:["",[r.kI.required,r.kI.pattern(/^(-|[0-9]){0,}$/)]],server:["",[r.kI.pattern(/^https?:\/\/[a-zA-Z0-9-_.]+(:[0-9]+)?/)]]})}get tokenControl(){return this.settingsForm.get("token")}get chatidControl(){return this.settingsForm.get("chatid")}get serverControl(){return this.settingsForm.get("server")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),console.log(this.settings),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("telegramNotification",this.settings,this.settingsForm.valueChanges.pipe((0,at.Sc)(this.settingsForm))).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}function Nr(i,n){if(1&i&&(t.TgZ(0,"app-page-section"),t._UZ(1,"app-notifier-settings",2),t.qZA(),t.TgZ(2,"app-page-section",3),t._UZ(3,"app-telegram-settings",4),t.qZA(),t.TgZ(4,"app-page-section",5),t._UZ(5,"app-event-settings",2),t.qZA(),t.TgZ(6,"app-page-section",6),t._UZ(7,"app-message-template-settings",2),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("settings",e.notifierSettings),t.xp6(2),t.Q6J("settings",e.telegramSettings),t.xp6(2),t.Q6J("settings",e.notificationSettings),t.xp6(2),t.Q6J("settings",e.messageTemplateSettings)}}$t.\u0275fac=function(n){return new(n||$t)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},$t.\u0275cmp=t.Xpm({type:$t,selectors:[["app-telegram-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:22,vars:10,consts:[["nz-form","",3,"formGroup"],[1,"setting-item"],["nzFor","token","nzNoColon","","nzRequired","",1,"setting-label","required"],["nzHasFeedback","",1,"setting-control","input",3,"nzErrorTip","nzWarningTip","nzValidateStatus"],["id","token","type","text","required","","nz-input","","formControlName","token"],["tokenErrorTip",""],["nzFor","chatid","nzNoColon","","nzRequired","",1,"setting-label"],["id","chatid","type","text","required","","nz-input","","formControlName","chatid"],["chatidErrorTip",""],["nzFor","server","nzNoColon","",1,"setting-label","align-required"],["id","server","type","url","placeholder","\u9ed8\u8ba4\u4e3a\u5b98\u65b9\u63a5\u53e3 https://api.telegram.org","nz-input","","formControlName","server"],["serverErrorTip",""],[4,"ngIf"]],template:function(n,e){if(1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"token"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"input",4),t.YNc(6,yr,2,2,"ng-template",null,5,t.W1O),t.qZA()(),t.TgZ(8,"nz-form-item",1)(9,"nz-form-label",6),t._uU(10,"chatid"),t.qZA(),t.TgZ(11,"nz-form-control",3),t._UZ(12,"input",7),t.YNc(13,Dr,2,2,"ng-template",null,8,t.W1O),t.qZA()(),t.TgZ(15,"nz-form-item",1)(16,"nz-form-label",9),t._uU(17,"server"),t.qZA(),t.TgZ(18,"nz-form-control",3),t._UZ(19,"input",10),t.YNc(20,Zr,1,1,"ng-template",null,11,t.W1O),t.qZA()()()),2&n){const o=t.MAs(7),a=t.MAs(14),s=t.MAs(21);t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzErrorTip",o)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.tokenControl.valid&&!e.syncStatus.token?"warning":e.tokenControl),t.xp6(7),t.Q6J("nzErrorTip",a)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.chatidControl.valid&&!e.syncStatus.chatid?"warning":e.chatidControl),t.xp6(7),t.Q6J("nzErrorTip",s)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.serverControl.valid&&!e.syncStatus.server?"warning":e.serverControl)}},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,O.Zp],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}.setting-label[_ngcontent-%COMP%]{max-width:4em!important;width:4em!important}"],changeDetection:0});class Kt{constructor(n,e){this.changeDetector=n,this.route=e}ngOnInit(){this.route.data.subscribe(n=>{const e=n.settings;this.telegramSettings=f(e,C.wA),this.notifierSettings=f(e,C._1),this.notificationSettings=f(e,C.X),this.messageTemplateSettings=f(e,C.tI),this.changeDetector.markForCheck()})}}function Br(i,n){1&i&&(t.ynx(0),t._uU(1," server \u65e0\u6548 "),t.BQk())}function Ur(i,n){1&i&&t.YNc(0,Br,2,0,"ng-container",9),2&i&&t.Q6J("ngIf",n.$implicit.hasError("pattern"))}function Ir(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 pushkey\uff01 "),t.BQk())}function Jr(i,n){1&i&&(t.ynx(0),t._uU(1," pushkey \u65e0\u6548 "),t.BQk())}function Qr(i,n){if(1&i&&(t.YNc(0,Ir,2,0,"ng-container",9),t.YNc(1,Jr,2,0,"ng-container",9)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}Kt.\u0275fac=function(n){return new(n||Kt)(t.Y36(t.sBO),t.Y36(v.gz))},Kt.\u0275cmp=t.Xpm({type:Kt,selectors:[["app-telegram-notification-settings"]],decls:2,vars:0,consts:[["pageTitle","telegram \u901a\u77e5"],["appSubPageContent",""],["keyOfSettings","telegramNotification",3,"settings"],["name","telegram"],[3,"settings"],["name","\u4e8b\u4ef6"],["name","\u6d88\u606f"]],template:function(n,e){1&n&&(t.TgZ(0,"app-sub-page",0),t.YNc(1,Nr,8,4,"ng-template",1),t.qZA())},dependencies:[rt.Y,st.q,q.g,N,$t,B,A],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});class Xt{constructor(n,e,o){this.changeDetector=e,this.settingsSyncService=o,this.syncFailedWarningTip=d.yT,this.settingsForm=n.group({server:["",[r.kI.pattern(/^https?:\/\/.+/)]],pushkey:["",[r.kI.required,r.kI.pattern(/^[a-zA-Z\d]+$/)]]})}get serverControl(){return this.settingsForm.get("server")}get pushkeyControl(){return this.settingsForm.get("pushkey")}ngOnChanges(){this.syncStatus=M(this.settings,()=>!0),console.log(this.settings),this.settingsForm.setValue(this.settings)}ngOnInit(){this.settingsSyncService.syncSettings("barkNotification",this.settings,this.settingsForm.valueChanges.pipe((0,at.Sc)(this.settingsForm))).subscribe(n=>{this.syncStatus={...this.syncStatus,...P(n)},this.changeDetector.markForCheck()})}}function Vr(i,n){if(1&i&&(t.TgZ(0,"app-page-section"),t._UZ(1,"app-notifier-settings",2),t.qZA(),t.TgZ(2,"app-page-section",3),t._UZ(3,"app-bark-settings",4),t.qZA(),t.TgZ(4,"app-page-section",5),t._UZ(5,"app-event-settings",2),t.qZA(),t.TgZ(6,"app-page-section",6),t._UZ(7,"app-message-template-settings",2),t.qZA()),2&i){const e=t.oxw();t.xp6(1),t.Q6J("settings",e.notifierSettings),t.xp6(2),t.Q6J("settings",e.barkSettings),t.xp6(2),t.Q6J("settings",e.notificationSettings),t.xp6(2),t.Q6J("settings",e.messageTemplateSettings)}}Xt.\u0275fac=function(n){return new(n||Xt)(t.Y36(r.qu),t.Y36(t.sBO),t.Y36(z))},Xt.\u0275cmp=t.Xpm({type:Xt,selectors:[["app-bark-settings"]],inputs:{settings:"settings"},features:[t.TTD],decls:15,vars:7,consts:[["nz-form","",3,"formGroup"],[1,"setting-item"],["nzFor","server","nzNoColon","",1,"setting-label","align-required"],["nzHasFeedback","",1,"setting-control","input",3,"nzErrorTip","nzWarningTip","nzValidateStatus"],["id","server","type","url","placeholder","\u9ed8\u8ba4\u4e3a\u5b98\u65b9\u670d\u52a1\u5668\uff0c\u5982\u679c\u81ea\u5b9a\u4e49\u670d\u52a1\u5668\u4e14url\u5e26\u8def\u5f84\uff0curl\u672b\u5c3e\u8bf7\u52a0\u4e0a/","nz-input","","formControlName","server"],["serverErrorTip",""],["nzFor","pushkey","nzNoColon","","nzRequired","",1,"setting-label"],["id","pushkey","type","text","placeholder","","required","","nz-input","","formControlName","pushkey"],["pushkeyErrorTip",""],[4,"ngIf"]],template:function(n,e){if(1&n&&(t.TgZ(0,"form",0)(1,"nz-form-item",1)(2,"nz-form-label",2),t._uU(3,"server"),t.qZA(),t.TgZ(4,"nz-form-control",3),t._UZ(5,"input",4),t.YNc(6,Ur,1,1,"ng-template",null,5,t.W1O),t.qZA()(),t.TgZ(8,"nz-form-item",1)(9,"nz-form-label",6),t._uU(10,"pushkey"),t.qZA(),t.TgZ(11,"nz-form-control",3),t._UZ(12,"input",7),t.YNc(13,Qr,2,2,"ng-template",null,8,t.W1O),t.qZA()()()),2&n){const o=t.MAs(7),a=t.MAs(14);t.Q6J("formGroup",e.settingsForm),t.xp6(4),t.Q6J("nzErrorTip",o)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.serverControl.valid&&!e.syncStatus.server?"warning":e.serverControl),t.xp6(7),t.Q6J("nzErrorTip",a)("nzWarningTip",e.syncFailedWarningTip)("nzValidateStatus",e.pushkeyControl.valid&&!e.syncStatus.pushkey?"warning":e.pushkeyControl)}},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,O.Zp],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}.setting-label[_ngcontent-%COMP%]{max-width:5em!important;width:5em!important}"],changeDetection:0});class jt{constructor(n,e){this.changeDetector=n,this.route=e}ngOnInit(){this.route.data.subscribe(n=>{const e=n.settings;this.barkSettings=f(e,C.LV),this.notifierSettings=f(e,C._1),this.notificationSettings=f(e,C.X),this.messageTemplateSettings=f(e,C.tI),this.changeDetector.markForCheck()})}}function Lr(i,n){1&i&&(t.ynx(0),t._uU(1," \u8bf7\u8f93\u5165 url\uff01 "),t.BQk())}function qr(i,n){1&i&&(t.ynx(0),t._uU(1," url \u65e0\u6548\uff01 "),t.BQk())}function Yr(i,n){if(1&i&&(t.YNc(0,Lr,2,0,"ng-container",29),t.YNc(1,qr,2,0,"ng-container",29)),2&i){const e=n.$implicit;t.Q6J("ngIf",e.hasError("required")),t.xp6(1),t.Q6J("ngIf",e.hasError("pattern"))}}function Wr(i,n){if(1&i){const e=t.EpF();t.ynx(0),t.TgZ(1,"form",2)(2,"nz-form-item",3)(3,"nz-form-label",4),t._uU(4,"URL"),t.qZA(),t.TgZ(5,"nz-form-control",5),t._UZ(6,"input",6),t.YNc(7,Yr,2,2,"ng-template",null,7,t.W1O),t.qZA()(),t.TgZ(9,"div",8)(10,"h2"),t._uU(11,"\u4e8b\u4ef6"),t.qZA(),t.TgZ(12,"nz-form-item",3)(13,"nz-form-control",9)(14,"label",10),t.NdJ("nzCheckedChange",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.setAllChecked(a))}),t._uU(15,"\u5168\u9009"),t.qZA()()(),t.TgZ(16,"nz-form-item",3)(17,"nz-form-control",11)(18,"label",12),t._uU(19,"\u5f00\u64ad"),t.qZA()()(),t.TgZ(20,"nz-form-item",3)(21,"nz-form-control",11)(22,"label",13),t._uU(23,"\u4e0b\u64ad"),t.qZA()()(),t.TgZ(24,"nz-form-item",3)(25,"nz-form-control",11)(26,"label",14),t._uU(27,"\u76f4\u64ad\u95f4\u4fe1\u606f\u6539\u53d8"),t.qZA()()(),t.TgZ(28,"nz-form-item",3)(29,"nz-form-control",11)(30,"label",15),t._uU(31,"\u5f55\u5236\u5f00\u59cb"),t.qZA()()(),t.TgZ(32,"nz-form-item",3)(33,"nz-form-control",11)(34,"label",16),t._uU(35,"\u5f55\u5236\u5b8c\u6210"),t.qZA()()(),t.TgZ(36,"nz-form-item",3)(37,"nz-form-control",11)(38,"label",17),t._uU(39,"\u5f55\u5236\u53d6\u6d88"),t.qZA()()(),t.TgZ(40,"nz-form-item",3)(41,"nz-form-control",11)(42,"label",18),t._uU(43,"\u89c6\u9891\u6587\u4ef6\u521b\u5efa"),t.qZA()()(),t.TgZ(44,"nz-form-item",3)(45,"nz-form-control",11)(46,"label",19),t._uU(47,"\u89c6\u9891\u6587\u4ef6\u5b8c\u6210"),t.qZA()()(),t.TgZ(48,"nz-form-item",3)(49,"nz-form-control",11)(50,"label",20),t._uU(51,"\u5f39\u5e55\u6587\u4ef6\u521b\u5efa"),t.qZA()()(),t.TgZ(52,"nz-form-item",3)(53,"nz-form-control",11)(54,"label",21),t._uU(55,"\u5f39\u5e55\u6587\u4ef6\u5b8c\u6210"),t.qZA()()(),t.TgZ(56,"nz-form-item",3)(57,"nz-form-control",11)(58,"label",22),t._uU(59,"\u539f\u59cb\u5f39\u5e55\u6587\u4ef6\u521b\u5efa"),t.qZA()()(),t.TgZ(60,"nz-form-item",3)(61,"nz-form-control",11)(62,"label",23),t._uU(63,"\u539f\u59cb\u5f39\u5e55\u6587\u4ef6\u5b8c\u6210"),t.qZA()()(),t.TgZ(64,"nz-form-item",3)(65,"nz-form-control",11)(66,"label",24),t._uU(67,"\u76f4\u64ad\u5c01\u9762\u4e0b\u8f7d\u5b8c\u6210"),t.qZA()()(),t.TgZ(68,"nz-form-item",3)(69,"nz-form-control",11)(70,"label",25),t._uU(71,"\u89c6\u9891\u540e\u5904\u7406\u5b8c\u6210"),t.qZA()()(),t.TgZ(72,"nz-form-item",3)(73,"nz-form-control",11)(74,"label",26),t._uU(75,"\u6587\u4ef6\u540e\u5904\u7406\u5b8c\u6210"),t.qZA()()(),t.TgZ(76,"nz-form-item",3)(77,"nz-form-control",11)(78,"label",27),t._uU(79,"\u786c\u76d8\u7a7a\u95f4\u4e0d\u8db3"),t.qZA()()(),t.TgZ(80,"nz-form-item",3)(81,"nz-form-control",11)(82,"label",28),t._uU(83,"\u7a0b\u5e8f\u51fa\u73b0\u5f02\u5e38"),t.qZA()()()()(),t.BQk()}if(2&i){const e=t.MAs(8),o=t.oxw();t.xp6(1),t.Q6J("formGroup",o.settingsForm),t.xp6(4),t.Q6J("nzErrorTip",e),t.xp6(9),t.Q6J("nzChecked",o.allChecked)("nzIndeterminate",o.indeterminate)}}jt.\u0275fac=function(n){return new(n||jt)(t.Y36(t.sBO),t.Y36(v.gz))},jt.\u0275cmp=t.Xpm({type:jt,selectors:[["app-bark-notification-settings"]],decls:2,vars:0,consts:[["pageTitle","Bark \u901a\u77e5"],["appSubPageContent",""],["keyOfSettings","barkNotification",3,"settings"],["name","Bark"],[3,"settings"],["name","\u4e8b\u4ef6"],["name","\u6d88\u606f"]],template:function(n,e){1&n&&(t.TgZ(0,"app-sub-page",0),t.YNc(1,Vr,8,4,"ng-template",1),t.qZA())},dependencies:[rt.Y,st.q,q.g,N,Xt,B,A],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}"],changeDetection:0});const Rr={url:"",liveBegan:!0,liveEnded:!0,roomChange:!0,recordingStarted:!0,recordingFinished:!0,recordingCancelled:!0,videoFileCreated:!0,videoFileCompleted:!0,danmakuFileCreated:!0,danmakuFileCompleted:!0,rawDanmakuFileCreated:!0,rawDanmakuFileCompleted:!0,coverImageDownloaded:!0,videoPostprocessingCompleted:!0,postprocessingCompleted:!0,spaceNoEnough:!0,errorOccurred:!0};class te{constructor(n,e){this.changeDetector=e,this.title="\u6807\u9898",this.okButtonText="\u786e\u5b9a",this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.allChecked=!1,this.indeterminate=!0,this.settingsForm=n.group({url:["",[r.kI.required,r.kI.pattern(/^https?:\/\/.*$/)]],liveBegan:[""],liveEnded:[""],roomChange:[""],recordingStarted:[""],recordingFinished:[""],recordingCancelled:[""],videoFileCreated:[""],videoFileCompleted:[""],danmakuFileCreated:[""],danmakuFileCompleted:[""],rawDanmakuFileCreated:[""],rawDanmakuFileCompleted:[""],coverImageDownloaded:[""],videoPostprocessingCompleted:[""],postprocessingCompleted:[""],spaceNoEnough:[""],errorOccurred:[""]}),this.checkboxControls=Object.entries(this.settingsForm.controls).filter(([o])=>"url"!==o).map(([,o])=>o),this.checkboxControls.forEach(o=>o.valueChanges.subscribe(()=>this.updateAllChecked()))}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.settingsForm.reset(),this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){void 0===this.settings&&(this.settings={...Rr}),this.settingsForm.setValue(this.settings),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){this.confirm.emit(this.settingsForm.value),this.close()}setAllChecked(n){this.indeterminate=!1,this.allChecked=n,this.checkboxControls.forEach(e=>e.setValue(n))}updateAllChecked(){const n=this.checkboxControls.map(e=>e.value);this.allChecked=n.every(e=>e),this.indeterminate=!this.allChecked&&n.some(e=>e)}}te.\u0275fac=function(n){return new(n||te)(t.Y36(r.qu),t.Y36(t.sBO))},te.\u0275cmp=t.Xpm({type:te,selectors:[["app-webhook-edit-dialog"]],inputs:{settings:"settings",title:"title",okButtonText:"okButtonText",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:2,vars:4,consts:[["nzCentered","",3,"nzTitle","nzOkText","nzVisible","nzOkDisabled","nzOnOk","nzOnCancel"],[4,"nzModalContent"],["nz-form","",3,"formGroup"],[1,"setting-item"],["nzFor","url","nzNoColon","",1,"setting-label"],["nzHasFeedback","",1,"setting-control","input",3,"nzErrorTip"],["id","url","type","url","required","","nz-input","","formControlName","url"],["urlErrorTip",""],[1,"form-group"],[1,"setting-control","checkbox","check-all"],["nz-checkbox","",3,"nzChecked","nzIndeterminate","nzCheckedChange"],[1,"setting-control","checkbox"],["nz-checkbox","","formControlName","liveBegan"],["nz-checkbox","","formControlName","liveEnded"],["nz-checkbox","","formControlName","roomChange"],["nz-checkbox","","formControlName","recordingStarted"],["nz-checkbox","","formControlName","recordingFinished"],["nz-checkbox","","formControlName","recordingCancelled"],["nz-checkbox","","formControlName","videoFileCreated"],["nz-checkbox","","formControlName","videoFileCompleted"],["nz-checkbox","","formControlName","danmakuFileCreated"],["nz-checkbox","","formControlName","danmakuFileCompleted"],["nz-checkbox","","formControlName","rawDanmakuFileCreated"],["nz-checkbox","","formControlName","rawDanmakuFileCompleted"],["nz-checkbox","","formControlName","coverImageDownloaded"],["nz-checkbox","","formControlName","videoPostprocessingCompleted"],["nz-checkbox","","formControlName","postprocessingCompleted"],["nz-checkbox","","formControlName","spaceNoEnough"],["nz-checkbox","","formControlName","errorOccurred"],[4,"ngIf"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzOnOk",function(){return e.handleConfirm()})("nzOnCancel",function(){return e.handleCancel()}),t.YNc(1,Wr,84,4,"ng-container",1),t.qZA()),2&n&&t.Q6J("nzTitle",e.title)("nzOkText",e.okButtonText)("nzVisible",e.visible)("nzOkDisabled",e.settingsForm.invalid)},dependencies:[p.O5,r._Y,r.Fj,r.JJ,r.JL,r.Q7,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,O.Zp,Oe.Ie,_.du,_.Hf],styles:[".settings-page[_ngcontent-%COMP%]{max-width:680px;margin:0 auto}.setting-item[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:1em 2em;border-top:1px solid rgba(0,0,0,.06)}.setting-item[_ngcontent-%COMP%]:first-child{border-top:none}.settings-page-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:100%}.form-group[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:700;font-size:1.2em;border-bottom:1px solid rgba(0,0,0,.1)}.setting-item[_ngcontent-%COMP%]{gap:.5em}.setting-item.actionable[_ngcontent-%COMP%]{cursor:pointer}.setting-item.actionable[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]{outline:none;text-decoration:none;color:inherit;cursor:pointer;height:60px}a.setting-item[_ngcontent-%COMP%]:hover{background-color:#2021241a}a.setting-item[_ngcontent-%COMP%]:not(:first-child){height:61px}.setting-label[_ngcontent-%COMP%]{padding:0!important;max-width:-moz-fit-content!important;max-width:fit-content!important;text-align:left}.setting-label.align-required[_ngcontent-%COMP%]{position:relative;left:11px}.setting-control[_ngcontent-%COMP%], .setting-value[_ngcontent-%COMP%]{max-width:-moz-fit-content!important;max-width:fit-content!important;margin-left:auto!important}.setting-control.input[_ngcontent-%COMP%], .setting-value.input[_ngcontent-%COMP%]{max-width:100%!important}.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{max-width:8em!important;width:8em!important}.setting-control.switch[_ngcontent-%COMP%], .setting-value.switch[_ngcontent-%COMP%]{flex-direction:row-reverse;align-items:center}.setting-control.checkbox[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .setting-value.checkbox[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{width:100%}.setting-control.textarea[_ngcontent-%COMP%], .setting-value.textarea[_ngcontent-%COMP%]{max-width:100%!important;width:100%!important;margin-left:0}.setting-control.textarea[_ngcontent-%COMP%]::-webkit-scrollbar, .setting-value.textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}@media screen and (max-width: 332px){.setting-control.radio[_ngcontent-%COMP%], .setting-value.radio[_ngcontent-%COMP%]{margin-left:0!important}}@media screen and (max-width: 319px){.setting-control.select[_ngcontent-%COMP%], .setting-value.select[_ngcontent-%COMP%]{margin-left:0!important}}.setting-value[_ngcontent-%COMP%]{color:#5f6368;font-weight:400;width:100%;max-height:3em;overflow:hidden}.setting-item[_ngcontent-%COMP%]{padding:1em 0;border:none}.setting-item[_ngcontent-%COMP%]:first-child{padding-top:0}.setting-item[_ngcontent-%COMP%]:first-child .setting-control[_ngcontent-%COMP%]{flex:1 1 auto;max-width:100%!important}.setting-item[_ngcontent-%COMP%]:last-child{padding-bottom:0}.setting-item[_ngcontent-%COMP%] .check-all[_ngcontent-%COMP%]{border-bottom:1px solid rgba(0,0,0,.06)}"],changeDetection:0});var tn=c(3325);function Gr(i,n){1&i&&t._UZ(0,"nz-list-empty")}function Hr(i,n){if(1&i){const e=t.EpF();t.TgZ(0,"nz-list-item",9)(1,"span",10),t._uU(2),t.qZA(),t.TgZ(3,"button",11),t._UZ(4,"i",12),t.qZA(),t.TgZ(5,"nz-dropdown-menu",null,13)(7,"ul",14)(8,"li",15),t.NdJ("click",function(){const s=t.CHM(e).index,g=t.oxw();return t.KtG(g.edit.emit(s))}),t._uU(9,"\u4fee\u6539"),t.qZA(),t.TgZ(10,"li",15),t.NdJ("click",function(){const s=t.CHM(e).index,g=t.oxw();return t.KtG(g.remove.emit(s))}),t._uU(11,"\u5220\u9664"),t.qZA()()()()}if(2&i){const e=n.$implicit,o=t.MAs(6);t.xp6(2),t.Oqu(e.url),t.xp6(1),t.Q6J("nzDropdownMenu",o)}}class ee{constructor(){this.header="",this.addable=!0,this.clearable=!0,this.add=new t.vpe,this.edit=new t.vpe,this.remove=new t.vpe,this.clear=new t.vpe}}function $r(i,n){if(1&i){const e=t.EpF();t.TgZ(0,"app-page-section")(1,"app-webhook-list",3),t.NdJ("add",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.addWebhook())})("edit",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.editWebhook(a))})("remove",function(a){t.CHM(e);const s=t.oxw();return t.KtG(s.removeWebhook(a))})("clear",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.clearWebhook())}),t.qZA()()}if(2&i){const e=t.oxw();t.xp6(1),t.Q6J("data",e.webhooks)("addable",e.canAdd)}}ee.\u0275fac=function(n){return new(n||ee)},ee.\u0275cmp=t.Xpm({type:ee,selectors:[["app-webhook-list"]],inputs:{data:"data",header:"header",addable:"addable",clearable:"clearable"},outputs:{add:"add",edit:"edit",remove:"remove",clear:"clear"},decls:11,vars:5,consts:[["nzBordered","",1,"list"],[1,"list-header"],[1,"list-actions"],["nz-button","","nzType","text","nzSize","large","nz-tooltip","","nzTooltipTitle","\u6e05\u7a7a",1,"clear-button",3,"disabled","click"],["nz-icon","","nzType","clear"],["nz-button","","nzType","text","nzSize","large","nz-tooltip","","nzTooltipTitle","\u6dfb\u52a0",1,"add-button",3,"disabled","click"],["nz-icon","","nzType","plus"],[4,"ngIf"],["class","list-item",4,"ngFor","ngForOf"],[1,"list-item"],[1,"item-content"],["nz-button","","nzType","text","nzSize","default","nz-dropdown","","nzPlacement","bottomRight",1,"more-action-button",3,"nzDropdownMenu"],["nz-icon","","nzType","more"],["menu","nzDropdownMenu"],["nz-menu",""],["nz-menu-item","",3,"click"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-list",0)(1,"nz-list-header",1)(2,"h3"),t._uU(3),t.qZA(),t.TgZ(4,"div",2)(5,"button",3),t.NdJ("click",function(){return e.clear.emit()}),t._UZ(6,"i",4),t.qZA(),t.TgZ(7,"button",5),t.NdJ("click",function(){return e.add.emit()}),t._UZ(8,"i",6),t.qZA()()(),t.YNc(9,Gr,1,0,"nz-list-empty",7),t.YNc(10,Hr,12,2,"nz-list-item",8),t.qZA()),2&n&&(t.xp6(3),t.Oqu(e.header),t.xp6(2),t.Q6J("disabled",e.data.length<=0||!e.clearable),t.xp6(2),t.Q6J("disabled",!e.addable),t.xp6(2),t.Q6J("ngIf",e.data.length<=0),t.xp6(1),t.Q6J("ngForOf",e.data))},dependencies:[p.sg,p.O5,Q.ix,I.w,lt.Ls,ve,_e,he,ke,tn.wO,tn.r9,oe.cm,oe.RR,oe.wA,ue.SY],styles:[".list[_ngcontent-%COMP%]{background-color:#fff}.list[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap;align-items:center;padding:.5em 1.5em}.list[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0}.list[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] .list-actions[_ngcontent-%COMP%]{margin-left:auto;position:relative;left:1em}.list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap;padding:.5em 1.5em}.list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .item-content[_ngcontent-%COMP%]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .more-action-button[_ngcontent-%COMP%]{margin-left:auto;flex:0 0 auto;position:relative;left:1em}"],changeDetection:0});class R{constructor(n,e,o,a,s){this.changeDetector=n,this.route=e,this.message=o,this.modal=a,this.settingService=s,this.dialogTitle="",this.dialogOkButtonText="",this.dialogVisible=!1,this.editingIndex=-1}get canAdd(){return this.webhooks.length<R.MAX_WEBHOOKS}ngOnInit(){this.route.data.subscribe(n=>{this.webhooks=n.settings,this.changeDetector.markForCheck()})}addWebhook(){this.editingIndex=-1,this.editingSettings=void 0,this.dialogTitle="\u6dfb\u52a0 webhook",this.dialogOkButtonText="\u6dfb\u52a0",this.dialogVisible=!0}removeWebhook(n){const e=this.webhooks.filter((o,a)=>a!==n);this.changeSettings(e).subscribe(()=>this.reset())}editWebhook(n){this.editingIndex=n,this.editingSettings={...this.webhooks[n]},this.dialogTitle="\u4fee\u6539 webhook",this.dialogOkButtonText="\u4fdd\u5b58",this.dialogVisible=!0}clearWebhook(){this.modal.confirm({nzTitle:"\u786e\u5b9a\u8981\u6e05\u7a7a Webhook \uff1f",nzOnOk:()=>new Promise((n,e)=>{this.changeSettings([]).subscribe(n,e)})})}onDialogCanceled(){this.reset()}onDialogConfirmed(n){let e;-1===this.editingIndex?e=[...this.webhooks,n]:(e=[...this.webhooks],e[this.editingIndex]=n),this.changeSettings(e).subscribe(()=>this.reset())}reset(){this.editingIndex=-1,delete this.editingSettings}changeSettings(n){return this.settingService.changeSettings({webhooks:n}).pipe((0,F.X)(3,300),(0,re.b)(e=>{this.webhooks=e.webhooks,this.changeDetector.markForCheck()},e=>{this.message.error(`Webhook \u8bbe\u7f6e\u51fa\u9519: ${e.message}`)}))}}R.MAX_WEBHOOKS=50,R.\u0275fac=function(n){return new(n||R)(t.Y36(t.sBO),t.Y36(v.gz),t.Y36(se.dD),t.Y36(_.Sf),t.Y36(S.R))},R.\u0275cmp=t.Xpm({type:R,selectors:[["app-webhook-manager"]],decls:3,vars:4,consts:[["pageTitle","Webhooks"],["appSubPageContent",""],[3,"title","okButtonText","settings","visible","visibleChange","cancel","confirm"],["header","Webhook \u5217\u8868",3,"data","addable","add","edit","remove","clear"]],template:function(n,e){1&n&&(t.TgZ(0,"app-sub-page",0),t.YNc(1,$r,2,2,"ng-template",1),t.qZA(),t.TgZ(2,"app-webhook-edit-dialog",2),t.NdJ("visibleChange",function(a){return e.dialogVisible=a})("cancel",function(){return e.onDialogCanceled()})("confirm",function(a){return e.onDialogConfirmed(a)}),t.qZA()),2&n&&(t.xp6(2),t.Q6J("title",e.dialogTitle)("okButtonText",e.dialogOkButtonText)("settings",e.editingSettings)("visible",e.dialogVisible))},dependencies:[rt.Y,st.q,q.g,te,ee],changeDetection:0});const Kr=[{path:"email-notification",component:Lt,resolve:{settings:K}},{path:"serverchan-notification",component:Yt,resolve:{settings:X}},{path:"pushdeer-notification",component:Rt,resolve:{settings:j}},{path:"pushplus-notification",component:Ht,resolve:{settings:tt}},{path:"telegram-notification",component:Kt,resolve:{settings:et}},{path:"bark-notification",component:jt,resolve:{settings:it}},{path:"webhooks",component:R,resolve:{settings:nt}},{path:"",component:Qt,resolve:{settings:$}}];class ht{}function Xr(i,n){1&i&&(t.TgZ(0,"p"),t._uU(1," \u8bed\u6cd5\u3001\u53d8\u91cf\u53c2\u8003 "),t.TgZ(2,"a",16),t._uU(3,"wiki"),t.qZA()(),t.TgZ(4,"p"),t._uU(5,"\u7a7a\u503c\u5c06\u4f7f\u7528\u9ed8\u8ba4\u6d88\u606f\u6a21\u677f"),t.qZA())}function jr(i,n){if(1&i&&(t.ynx(0),t.YNc(1,Xr,6,0,"ng-template",null,3,t.W1O),t.TgZ(3,"form",4)(4,"nz-form-item",5)(5,"nz-form-label",6),t._uU(6," \u6d88\u606f\u6807\u9898 "),t.qZA(),t.TgZ(7,"nz-form-control",7),t._UZ(8,"input",8),t.qZA()(),t.TgZ(9,"nz-form-item",9)(10,"nz-form-label",10),t._uU(11," \u6d88\u606f\u7c7b\u578b "),t.qZA(),t.TgZ(12,"nz-form-control",11),t._UZ(13,"nz-select",12),t.qZA()(),t.TgZ(14,"nz-form-item",13)(15,"nz-form-label",6),t._uU(16," \u6d88\u606f\u5185\u5bb9 "),t.qZA(),t.TgZ(17,"nz-form-control",14),t._UZ(18,"textarea",15),t.qZA()()(),t.BQk()),2&i){const e=t.MAs(2),o=t.oxw();t.xp6(3),t.Q6J("nzLayout","vertical")("formGroup",o.settingsForm),t.xp6(2),t.Q6J("nzTooltipTitle",e),t.xp6(8),t.Q6J("nzOptions",o.MESSAGE_TYPE_OPTIONS),t.xp6(2),t.Q6J("nzTooltipTitle",e),t.xp6(3),t.Q6J("rows",10)}}function ts(i,n){if(1&i){const e=t.EpF();t.TgZ(0,"button",17),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleCancel())}),t._uU(1,"\u53d6\u6d88"),t.qZA(),t.TgZ(2,"button",18),t.NdJ("click",function(){t.CHM(e);const a=t.oxw();return t.KtG(a.handleConfirm())}),t._uU(3," \u786e\u5b9a "),t.qZA()}if(2&i){const e=t.oxw();t.xp6(2),t.Q6J("disabled",e.settingsForm.invalid)}}ht.\u0275fac=function(n){return new(n||ht)},ht.\u0275mod=t.oAB({type:ht}),ht.\u0275inj=t.cJS({imports:[v.Bz.forChild(Kr),v.Bz]});class ne{constructor(n,e){this.changeDetector=e,this.messageTypes=[],this.title="\u4fee\u6539\u6d88\u606f\u6a21\u677f",this.visible=!1,this.visibleChange=new t.vpe,this.cancel=new t.vpe,this.confirm=new t.vpe,this.MESSAGE_TYPE_OPTIONS=[],this.settingsForm=n.group({messageType:[""],messageTitle:[""],messageContent:[""]})}get messageTypeControl(){return this.settingsForm.get("messageType")}get messageTitleControl(){return this.settingsForm.get("messageTitle")}get messageContentControl(){return this.settingsForm.get("messageContent")}ngOnInit(){this.MESSAGE_TYPE_OPTIONS=Array.from(new Set(this.messageTypes)).map(n=>({label:n,value:n}))}ngOnChanges(){this.setValue()}open(){this.setValue(),this.setVisible(!0)}close(){this.setVisible(!1)}setVisible(n){this.visible=n,this.visibleChange.emit(n),this.changeDetector.markForCheck()}setValue(){this.settingsForm.setValue(this.value),this.changeDetector.markForCheck()}handleCancel(){this.cancel.emit(),this.close()}handleConfirm(){this.confirm.emit(this.settingsForm.value),this.close()}}ne.\u0275fac=function(n){return new(n||ne)(t.Y36(r.qu),t.Y36(t.sBO))},ne.\u0275cmp=t.Xpm({type:ne,selectors:[["app-message-template-edit-dialog"]],inputs:{value:"value",messageTypes:"messageTypes",title:"title",visible:"visible"},outputs:{visibleChange:"visibleChange",cancel:"cancel",confirm:"confirm"},features:[t.TTD],decls:4,vars:3,consts:[["nzCentered","",3,"nzTitle","nzVisible","nzOkDisabled","nzVisibleChange","nzOnOk","nzOnCancel"],[4,"nzModalContent"],["modalFooter",""],["messageTemplateTip",""],["nz-form","",3,"nzLayout","formGroup"],[1,"setting-item","input"],["nzFor","messageTitle","nzNoColon","",1,"setting-label",3,"nzTooltipTitle"],[1,"setting-control","input"],["type","text","nz-input","","formControlName","messageTitle"],[1,"setting-item","switch"],["nzFor","messageType","nzNoColon","",1,"setting-label"],[1,"setting-control","select"],["formControlName","messageType",3,"nzOptions"],[1,"setting-item","textarea"],[1,"setting-control","textarea"],["nz-input","","wrap","off","formControlName","messageContent",3,"rows"],["href","https://github.com/acgnhiki/blrec/wiki/MessageTemplate","_blank",""],["nz-button","","nzType","default",3,"click"],["nz-button","","nzType","default",3,"disabled","click"]],template:function(n,e){1&n&&(t.TgZ(0,"nz-modal",0),t.NdJ("nzVisibleChange",function(a){return e.visible=a})("nzOnOk",function(){return e.handleConfirm()})("nzOnCancel",function(){return e.handleCancel()}),t.YNc(1,jr,19,6,"ng-container",1),t.YNc(2,ts,4,1,"ng-template",null,2,t.W1O),t.qZA()),2&n&&t.Q6J("nzTitle",e.title)("nzVisible",e.visible)("nzOkDisabled",e.settingsForm.invalid)},dependencies:[r._Y,r.Fj,r.JJ,r.JL,r.sg,r.u,u.t3,u.SK,l.Lr,l.Nx,l.iK,l.Fd,O.Zp,zt.Vq,_.du,_.Hf,Q.ix,I.w,dt.dQ],styles:["textarea[_ngcontent-%COMP%]::-webkit-scrollbar{width:4px;height:4px}"],changeDetection:0});class _t{}_t.\u0275fac=function(n){return new(n||_t)},_t.\u0275mod=t.oAB({type:_t}),_t.\u0275inj=t.cJS({providers:[$,K,X,j,tt,et,it,nt],imports:[p.ez,ht,r.u5,r.UX,ge.j,en.KJ,nn.vh,l.U5,O.o7,U.m,Oe.Wr,G.aF,sn,zt.LV,_.Qp,Q.sL,lt.PV,pi,oe.b1,ue.cg,di.S,H.HQ,bi,Pi.m]}),t.B6R(A,[ne],[])}}]); \ No newline at end of file diff --git a/src/blrec/data/webapp/index.html b/src/blrec/data/webapp/index.html index 629a2a1..deb0058 100644 --- a/src/blrec/data/webapp/index.html +++ b/src/blrec/data/webapp/index.html @@ -10,6 +10,6 @@ <body> <app-root></app-root> <noscript>Please enable JavaScript to continue using this application.</noscript> -<script src="runtime.bad8d115055bada4.js" type="module"></script><script src="polyfills.4e5433063877ea34.js" type="module"></script><script src="main.f21b7d831ad9cafb.js" type="module"></script> +<script src="runtime.8688afa20dbe5cc7.js" type="module"></script><script src="polyfills.4e5433063877ea34.js" type="module"></script><script src="main.f21b7d831ad9cafb.js" type="module"></script> </body></html> \ No newline at end of file diff --git a/src/blrec/data/webapp/ngsw.json b/src/blrec/data/webapp/ngsw.json index 2a997df..b0e6c3c 100644 --- a/src/blrec/data/webapp/ngsw.json +++ b/src/blrec/data/webapp/ngsw.json @@ -1,6 +1,6 @@ { "configVersion": 1, - "timestamp": 1697282115210, + "timestamp": 1697949101780, "index": "/index.html", "assetGroups": [ { @@ -12,17 +12,17 @@ }, "urls": [ "/103.4a2aea63cc3bf42b.js", - "/287.5c768f00dcd24631.js", + "/287.63ace7ac80c3d9f2.js", "/386.2404f3bc252e1df3.js", "/503.6553f508f4a9247d.js", - "/548.73ee5c2419f2617e.js", + "/548.f8a3199ca2412e0d.js", "/688.7032fddba7983cf6.js", "/common.1fc175bce139f4df.js", "/index.html", "/main.f21b7d831ad9cafb.js", "/manifest.webmanifest", "/polyfills.4e5433063877ea34.js", - "/runtime.bad8d115055bada4.js", + "/runtime.8688afa20dbe5cc7.js", "/styles.ae81e04dfa5b2860.css" ], "patterns": [] @@ -1635,10 +1635,10 @@ "dataGroups": [], "hashTable": { "/103.4a2aea63cc3bf42b.js": "2711817f2977bfdc18c34fee4fe9385fe012bb22", - "/287.5c768f00dcd24631.js": "4cd0f85040b1a482bf9796575738afdd2dcda00e", + "/287.63ace7ac80c3d9f2.js": "7a52c7715de66142dae39668a3a0fb0f9ee4bb50", "/386.2404f3bc252e1df3.js": "f937945645579b9651be2666f70cec2c5de4e367", "/503.6553f508f4a9247d.js": "0878ea0e91bfd5458dd55875561e91060ecb0837", - "/548.73ee5c2419f2617e.js": "93153313f106aed86859050288e59e6c19e3d4cf", + "/548.f8a3199ca2412e0d.js": "58ae6ac139c0b62ed266313e7a75a8266770387f", "/688.7032fddba7983cf6.js": "eae55044529782a51b7e534365255bbfa5522b05", "/assets/animal/panda.js": "fec2868bb3053dd2da45f96bbcb86d5116ed72b1", "/assets/animal/panda.svg": "bebd302cdc601e0ead3a6d2710acf8753f3d83b1", @@ -3234,11 +3234,11 @@ "/assets/twotone/warning.js": "fb2d7ea232f3a99bf8f080dbc94c65699232ac01", "/assets/twotone/warning.svg": "8c7a2d3e765a2e7dd58ac674870c6655cecb0068", "/common.1fc175bce139f4df.js": "af1775164711ec49e5c3a91ee45bd77509c17c54", - "/index.html": "8dc97bacb089295cf14011c3c3e21b14ba7108a1", + "/index.html": "28dc5eb629ca29943d45677dac7fded24c0362c3", "/main.f21b7d831ad9cafb.js": "fc51efa446c2ac21ee17e165217dd3faeacc5290", "/manifest.webmanifest": "62c1cb8c5ad2af551a956b97013ab55ce77dd586", "/polyfills.4e5433063877ea34.js": "68159ab99e0608976404a17132f60b5ceb6f12d2", - "/runtime.bad8d115055bada4.js": "a679fb0193729e75a72e77d0551dc85e080d9b41", + "/runtime.8688afa20dbe5cc7.js": "602d7051e97524a7becae76c8e76e7db29370b2b", "/styles.ae81e04dfa5b2860.css": "5933b4f1c4d8fcc1891b68940ee78af4091472b7" }, "navigationUrls": [ diff --git a/src/blrec/data/webapp/runtime.bad8d115055bada4.js b/src/blrec/data/webapp/runtime.8688afa20dbe5cc7.js similarity index 56% rename from src/blrec/data/webapp/runtime.bad8d115055bada4.js rename to src/blrec/data/webapp/runtime.8688afa20dbe5cc7.js index 2a3db33..e1e0aef 100644 --- a/src/blrec/data/webapp/runtime.bad8d115055bada4.js +++ b/src/blrec/data/webapp/runtime.8688afa20dbe5cc7.js @@ -1 +1 @@ -(()=>{"use strict";var e,v={},m={};function r(e){var n=m[e];if(void 0!==n)return n.exports;var t=m[e]={exports:{}};return v[e](t,t.exports,r),t.exports}r.m=v,e=[],r.O=(n,t,f,o)=>{if(!t){var a=1/0;for(i=0;i<e.length;i++){for(var[t,f,o]=e[i],c=!0,u=0;u<t.length;u++)(!1&o||a>=o)&&Object.keys(r.O).every(b=>r.O[b](t[u]))?t.splice(u--,1):(c=!1,o<a&&(a=o));if(c){e.splice(i--,1);var d=f();void 0!==d&&(n=d)}}return n}o=o||0;for(var i=e.length;i>0&&e[i-1][2]>o;i--)e[i]=e[i-1];e[i]=[t,f,o]},r.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return r.d(n,{a:n}),n},r.d=(e,n)=>{for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((n,t)=>(r.f[t](e,n),n),[])),r.u=e=>(592===e?"common":e)+"."+{103:"4a2aea63cc3bf42b",287:"5c768f00dcd24631",386:"2404f3bc252e1df3",503:"6553f508f4a9247d",548:"73ee5c2419f2617e",592:"1fc175bce139f4df",688:"7032fddba7983cf6"}[e]+".js",r.miniCssF=e=>{},r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={},n="blrec:";r.l=(t,f,o,i)=>{if(e[t])e[t].push(f);else{var a,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d<u.length;d++){var l=u[d];if(l.getAttribute("src")==t||l.getAttribute("data-webpack")==n+o){a=l;break}}a||(c=!0,(a=document.createElement("script")).type="module",a.charset="utf-8",a.timeout=120,r.nc&&a.setAttribute("nonce",r.nc),a.setAttribute("data-webpack",n+o),a.src=r.tu(t)),e[t]=[f];var s=(g,b)=>{a.onerror=a.onload=null,clearTimeout(p);var _=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),_&&_.forEach(h=>h(b)),g)return g(b)},p=setTimeout(s.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=s.bind(null,a.onerror),a.onload=s.bind(null,a.onload),c&&document.head.appendChild(a)}}})(),r.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:n=>n},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="",(()=>{var e={666:0};r.f.j=(f,o)=>{var i=r.o(e,f)?e[f]:void 0;if(0!==i)if(i)o.push(i[2]);else if(666!=f){var a=new Promise((l,s)=>i=e[f]=[l,s]);o.push(i[2]=a);var c=r.p+r.u(f),u=new Error;r.l(c,l=>{if(r.o(e,f)&&(0!==(i=e[f])&&(e[f]=void 0),i)){var s=l&&("load"===l.type?"missing":l.type),p=l&&l.target&&l.target.src;u.message="Loading chunk "+f+" failed.\n("+s+": "+p+")",u.name="ChunkLoadError",u.type=s,u.request=p,i[1](u)}},"chunk-"+f,f)}else e[f]=0},r.O.j=f=>0===e[f];var n=(f,o)=>{var u,d,[i,a,c]=o,l=0;if(i.some(p=>0!==e[p])){for(u in a)r.o(a,u)&&(r.m[u]=a[u]);if(c)var s=c(r)}for(f&&f(o);l<i.length;l++)r.o(e,d=i[l])&&e[d]&&e[d][0](),e[d]=0;return r.O(s)},t=self.webpackChunkblrec=self.webpackChunkblrec||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))})()})(); \ No newline at end of file +(()=>{"use strict";var e,v={},m={};function r(e){var n=m[e];if(void 0!==n)return n.exports;var t=m[e]={exports:{}};return v[e](t,t.exports,r),t.exports}r.m=v,e=[],r.O=(n,t,i,o)=>{if(!t){var a=1/0;for(f=0;f<e.length;f++){for(var[t,i,o]=e[f],c=!0,u=0;u<t.length;u++)(!1&o||a>=o)&&Object.keys(r.O).every(b=>r.O[b](t[u]))?t.splice(u--,1):(c=!1,o<a&&(a=o));if(c){e.splice(f--,1);var d=i();void 0!==d&&(n=d)}}return n}o=o||0;for(var f=e.length;f>0&&e[f-1][2]>o;f--)e[f]=e[f-1];e[f]=[t,i,o]},r.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return r.d(n,{a:n}),n},r.d=(e,n)=>{for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((n,t)=>(r.f[t](e,n),n),[])),r.u=e=>(592===e?"common":e)+"."+{103:"4a2aea63cc3bf42b",287:"63ace7ac80c3d9f2",386:"2404f3bc252e1df3",503:"6553f508f4a9247d",548:"f8a3199ca2412e0d",592:"1fc175bce139f4df",688:"7032fddba7983cf6"}[e]+".js",r.miniCssF=e=>{},r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={},n="blrec:";r.l=(t,i,o,f)=>{if(e[t])e[t].push(i);else{var a,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d<u.length;d++){var l=u[d];if(l.getAttribute("src")==t||l.getAttribute("data-webpack")==n+o){a=l;break}}a||(c=!0,(a=document.createElement("script")).type="module",a.charset="utf-8",a.timeout=120,r.nc&&a.setAttribute("nonce",r.nc),a.setAttribute("data-webpack",n+o),a.src=r.tu(t)),e[t]=[i];var s=(g,b)=>{a.onerror=a.onload=null,clearTimeout(p);var _=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),_&&_.forEach(h=>h(b)),g)return g(b)},p=setTimeout(s.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=s.bind(null,a.onerror),a.onload=s.bind(null,a.onload),c&&document.head.appendChild(a)}}})(),r.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:n=>n},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="",(()=>{var e={666:0};r.f.j=(i,o)=>{var f=r.o(e,i)?e[i]:void 0;if(0!==f)if(f)o.push(f[2]);else if(666!=i){var a=new Promise((l,s)=>f=e[i]=[l,s]);o.push(f[2]=a);var c=r.p+r.u(i),u=new Error;r.l(c,l=>{if(r.o(e,i)&&(0!==(f=e[i])&&(e[i]=void 0),f)){var s=l&&("load"===l.type?"missing":l.type),p=l&&l.target&&l.target.src;u.message="Loading chunk "+i+" failed.\n("+s+": "+p+")",u.name="ChunkLoadError",u.type=s,u.request=p,f[1](u)}},"chunk-"+i,i)}else e[i]=0},r.O.j=i=>0===e[i];var n=(i,o)=>{var u,d,[f,a,c]=o,l=0;if(f.some(p=>0!==e[p])){for(u in a)r.o(a,u)&&(r.m[u]=a[u]);if(c)var s=c(r)}for(i&&i(o);l<f.length;l++)r.o(e,d=f[l])&&e[d]&&e[d][0](),e[d]=0;return r.O(s)},t=self.webpackChunkblrec=self.webpackChunkblrec||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))})()})(); \ No newline at end of file diff --git a/src/blrec/disk_space/space_reclaimer.py b/src/blrec/disk_space/space_reclaimer.py index 9736c4d..a146c68 100644 --- a/src/blrec/disk_space/space_reclaimer.py +++ b/src/blrec/disk_space/space_reclaimer.py @@ -22,7 +22,19 @@ logger = logging.getLogger(__name__) class SpaceReclaimer(SpaceEventListener, SwitchableMixin): _SUFFIX_SET = frozenset( - ('.flv', '.mp4', '.ts', '.m4s', '.m3u8' '.xml', '.jsonl', '.jpg') + ( + '.flv', + '.mp4', + '.ts', + '.m4s', + '.m3u8', + '.xml', + '.json', + '.meta', + '.jsonl', + '.jpg', + '.png', + ) ) def __init__( diff --git a/src/blrec/flv/operators/analyse.py b/src/blrec/flv/operators/analyse.py index dc8d1aa..c136c9d 100644 --- a/src/blrec/flv/operators/analyse.py +++ b/src/blrec/flv/operators/analyse.py @@ -103,6 +103,7 @@ class MetaDataDict: class Analyser: def __init__(self) -> None: self._metadatas: Subject[Optional[MetaData]] = Subject() + self._duration_updated: Subject[float] = Subject() self._reset() def _reset(self) -> None: @@ -135,6 +136,10 @@ class Analyser: def metadatas(self) -> Observable[Optional[MetaData]]: return self._metadatas + @property + def duration_updated(self) -> Observable[float]: + return self._duration_updated + def __call__(self, source: FLVStream) -> FLVStream: return self._analyse(source) @@ -307,6 +312,7 @@ class Analyser: self._size_of_tags += tag.tag_size self._size_of_data += tag.data_size self._last_timestamp = tag.timestamp + self._duration_updated.on_next(self._last_timestamp / 1000) def _analyse_audio_tag(self, tag: AudioTag) -> None: if not self._audio_analysed: diff --git a/src/blrec/flv/operators/helpers.py b/src/blrec/flv/operators/helpers.py index 4a0c981..c88d4c8 100644 --- a/src/blrec/flv/operators/helpers.py +++ b/src/blrec/flv/operators/helpers.py @@ -31,7 +31,7 @@ def from_file( path: str, *, backup_timestamp: bool = False, restore_timestamp: bool = False ) -> FLVStream: return from_stream( - open(path, 'rb'), + open(path, 'rb'), # type: ignore complete_on_eof=True, backup_timestamp=backup_timestamp, restore_timestamp=restore_timestamp, diff --git a/src/blrec/flv/operators/parse.py b/src/blrec/flv/operators/parse.py index 994ba57..695cda9 100644 --- a/src/blrec/flv/operators/parse.py +++ b/src/blrec/flv/operators/parse.py @@ -36,7 +36,7 @@ def parse( try: try: reader = FlvReader( - stream, + stream, # type: ignore backup_timestamp=backup_timestamp, restore_timestamp=restore_timestamp, ) diff --git a/src/blrec/flv/operators/probe.py b/src/blrec/flv/operators/probe.py index 009a447..943a54e 100644 --- a/src/blrec/flv/operators/probe.py +++ b/src/blrec/flv/operators/probe.py @@ -7,7 +7,7 @@ from typing import List, Optional, cast from reactivex import Observable, Subject, abc from reactivex.disposable import CompositeDisposable, Disposable, SerialDisposable -from ...utils.ffprobe import StreamProfile, ffprobe +from ...utils.ffprobe import StreamProfile, ffprobe_on from ..common import find_aac_header_tag, find_avc_header_tag from ..io import FlvWriter from ..models import FlvHeader, FlvTag @@ -99,4 +99,4 @@ class Prober: def on_error(e: Exception) -> None: logger.warning(f'Failed to probe stream by ffprobe: {repr(e)}') - ffprobe(bytes_io.getvalue()).subscribe(on_next, on_error) + ffprobe_on(bytes_io.getvalue()).subscribe(on_next, on_error) diff --git a/src/blrec/hls/helpler.py b/src/blrec/hls/helpler.py new file mode 100644 index 0000000..c4773c2 --- /dev/null +++ b/src/blrec/hls/helpler.py @@ -0,0 +1,12 @@ +import os + +__all__ = ('name_of', 'sequence_number_of') + + +def name_of(uri: str) -> str: + name, _ext = os.path.splitext(uri) + return name + + +def sequence_number_of(uri: str) -> int: + return int(name_of(uri)) diff --git a/src/blrec/hls/metadata_dumper.py b/src/blrec/hls/metadata_dumper.py index 72e45ed..3068e12 100644 --- a/src/blrec/hls/metadata_dumper.py +++ b/src/blrec/hls/metadata_dumper.py @@ -18,17 +18,17 @@ logger = logging.getLogger(__name__) class MetadataDumper(SwitchableMixin): def __init__( self, - playlist_dumper: hls_ops.PlaylistDumper, + segment_dumper: hls_ops.SegmentDumper, metadata_provider: Callable[[Dict[str, Any]], Dict[str, Any]], ) -> None: super().__init__() - self._playlist_dumper = playlist_dumper + self._segment_dumper = segment_dumper self._metadata_provider = metadata_provider self._metadata: Dict[str, Any] = {} def _do_enable(self) -> None: - self._file_opened_subscription = self._playlist_dumper.file_opened.subscribe( - self._on_playlist_file_opened + self._file_opened_subscription = self._segment_dumper.file_opened.subscribe( + self._on_video_file_opened ) logger.debug('Enabled metadata dumper') @@ -39,13 +39,13 @@ class MetadataDumper(SwitchableMixin): self._metadata.clear() logger.debug('Disabled metadata dumper') - def _on_playlist_file_opened(self, args: Tuple[str, int]) -> None: - playlist_path, _ = args + def _on_video_file_opened(self, args: Tuple[str, int]) -> None: + video_path, _timestamp = args metadata = self._metadata_provider({}) - self._dump_metadata(playlist_path, metadata) + self._dump_metadata(video_path, metadata) - def _dump_metadata(self, playlist_path: str, metadata: Dict[str, Any]) -> None: - path = record_metadata_path(playlist_path) + def _dump_metadata(self, video_path: str, metadata: Dict[str, Any]) -> None: + path = record_metadata_path(video_path) logger.debug(f"Dumping metadata to file: '{path}'") with open(path, 'wt', encoding='utf8') as file: diff --git a/src/blrec/hls/operators/__init__.py b/src/blrec/hls/operators/__init__.py index a21cd32..27afc7b 100644 --- a/src/blrec/hls/operators/__init__.py +++ b/src/blrec/hls/operators/__init__.py @@ -1,14 +1,19 @@ +from .analyser import Analyser, MetaData +from .cutter import Cutter +from .limiter import Limiter from .playlist_dumper import PlaylistDumper from .playlist_fetcher import PlaylistFetcher from .playlist_resolver import PlaylistResolver from .prober import Prober, StreamProfile from .segment_dumper import SegmentDumper from .segment_fetcher import InitSectionData, SegmentData, SegmentFetcher -from .segment_parser import SegmentParser -from .segment_remuxer import SegmentRemuxer __all__ = ( + 'Analyser', + 'Cutter', 'InitSectionData', + 'Limiter', + 'MetaData', 'PlaylistDumper', 'PlaylistFetcher', 'PlaylistResolver', @@ -16,7 +21,5 @@ __all__ = ( 'SegmentData', 'SegmentDumper', 'SegmentFetcher', - 'SegmentParser', - 'SegmentRemuxer', 'StreamProfile', ) diff --git a/src/blrec/hls/operators/analyser.py b/src/blrec/hls/operators/analyser.py new file mode 100644 index 0000000..4539288 --- /dev/null +++ b/src/blrec/hls/operators/analyser.py @@ -0,0 +1,91 @@ +from __future__ import annotations + +import logging +from typing import Optional, Union + +import attr +from reactivex import Observable, abc +from reactivex.disposable import CompositeDisposable, Disposable, SerialDisposable + +from .prober import Prober, StreamProfile +from .segment_fetcher import InitSectionData, SegmentData +from .playlist_dumper import PlaylistDumper +from .segment_dumper import SegmentDumper + +__all__ = ('Analyser', 'MetaData') + +logger = logging.getLogger(__name__) + + +@attr.s(auto_attribs=True, slots=True, frozen=True, kw_only=True) +class MetaData: + duration: float + filesize: int + width: int + height: int + + +class Analyser: + def __init__( + self, + playlist_dumper: PlaylistDumper, + segment_dumper: SegmentDumper, + prober: Prober, + ) -> None: + self._playlist_dumper = playlist_dumper + self._segment_dumper = segment_dumper + self._prober = prober + + self._reset() + self._prober.profiles.subscribe(self._on_profile_updated) + + def _reset(self) -> None: + self._video_width: int = 0 + self._video_height: int = 0 + + def _on_profile_updated(self, profile: StreamProfile) -> None: + video_profile = profile['streams'][0] + assert video_profile['codec_type'] == 'video' + self._video_width = video_profile['width'] + self._video_height = video_profile['height'] + + def make_metadata(self) -> MetaData: + return MetaData( + duration=self._playlist_dumper.duration, + filesize=self._segment_dumper.filesize, + width=self._video_width, + height=self._video_height, + ) + + def __call__( + self, source: Observable[Union[InitSectionData, SegmentData]] + ) -> Observable[Union[InitSectionData, SegmentData]]: + return self._analyse(source) + + def _analyse( + self, source: Observable[Union[InitSectionData, SegmentData]] + ) -> Observable[Union[InitSectionData, SegmentData]]: + def subscribe( + observer: abc.ObserverBase[Union[InitSectionData, SegmentData]], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + disposed = False + subscription = SerialDisposable() + + self._reset() + + def on_next(item: Union[InitSectionData, SegmentData]) -> None: + observer.on_next(item) + + def dispose() -> None: + nonlocal disposed + disposed = True + self._reset() + + subscription.disposable = source.subscribe( + on_next, observer.on_error, observer.on_completed, scheduler=scheduler + ) + + return CompositeDisposable(subscription, Disposable(dispose)) + + return Observable(subscribe) diff --git a/src/blrec/hls/operators/cutter.py b/src/blrec/hls/operators/cutter.py new file mode 100644 index 0000000..e9ebbc7 --- /dev/null +++ b/src/blrec/hls/operators/cutter.py @@ -0,0 +1,90 @@ +from __future__ import annotations + +import logging +from typing import Optional, Tuple, Union + +from reactivex import Observable, abc +from reactivex.disposable import CompositeDisposable, Disposable, SerialDisposable + +from .segment_fetcher import InitSectionData, SegmentData +from .playlist_dumper import PlaylistDumper + +__all__ = ('Cutter',) + + +logger = logging.getLogger(__name__) + + +class Cutter: + def __init__( + self, playlist_dumper: PlaylistDumper, min_duration: float = 5.0 + ) -> None: + self._playlist_dumper = playlist_dumper + self._min_duration = min_duration # seconds + + self._cutting: bool + self._triggered: bool + self._reset() + + def on_open(args: Tuple[str, int]) -> None: + self._cutting = False + + self._playlist_dumper.file_opened.subscribe(on_open) + + def _reset(self) -> None: + self._cutting = False + self._triggered = False + + def is_cutting(self) -> bool: + return self._cutting + + def can_cut_stream(self) -> bool: + if self._triggered or self._cutting: + return False + return self._playlist_dumper.duration >= self._min_duration + + def cut_stream(self) -> bool: + if self.can_cut_stream(): + self._triggered = True + return True + return False + + def _add_flag(self, item: Union[InitSectionData, SegmentData]) -> None: + item.segment.custom_parser_values['split'] = True + + def __call__( + self, source: Observable[Union[InitSectionData, SegmentData]] + ) -> Observable[Union[InitSectionData, SegmentData]]: + return self._cut(source) + + def _cut( + self, source: Observable[Union[InitSectionData, SegmentData]] + ) -> Observable[Union[InitSectionData, SegmentData]]: + def subscribe( + observer: abc.ObserverBase[Union[InitSectionData, SegmentData]], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + disposed = False + subscription = SerialDisposable() + + self._reset() + + def on_next(item: Union[InitSectionData, SegmentData]) -> None: + if self._triggered: + self._add_flag(item) + self._cutting = True + self._triggered = False + + observer.on_next(item) + + def dispose() -> None: + nonlocal disposed + disposed = True + + subscription.disposable = source.subscribe( + on_next, observer.on_error, observer.on_completed, scheduler=scheduler + ) + + return CompositeDisposable(subscription, Disposable(dispose)) + + return Observable(subscribe) diff --git a/src/blrec/hls/operators/limiter.py b/src/blrec/hls/operators/limiter.py new file mode 100644 index 0000000..85ac7a6 --- /dev/null +++ b/src/blrec/hls/operators/limiter.py @@ -0,0 +1,93 @@ +from __future__ import annotations + +import logging +from typing import Optional, Union + +from reactivex import Observable, abc +from reactivex.disposable import CompositeDisposable, Disposable, SerialDisposable + +from .segment_fetcher import InitSectionData, SegmentData +from .playlist_dumper import PlaylistDumper +from .segment_dumper import SegmentDumper + +__all__ = ('Limiter',) + + +logger = logging.getLogger(__name__) + + +class Limiter: + def __init__( + self, + playlist_dumper: PlaylistDumper, + segment_dumper: SegmentDumper, + *, + filesize_limit: int = 0, # file size in bytes, no limit by default. + duration_limit: int = 0, # duration in seconds, no limit by default. + ) -> None: + self._playlist_dumper = playlist_dumper + self._segment_dumper = segment_dumper + + self.filesize_limit = filesize_limit + self.duration_limit = duration_limit + + def _will_over_limits(self, item: Union[InitSectionData, SegmentData]) -> bool: + if ( + self.filesize_limit > 0 + and self._segment_dumper.filesize + len(item) >= self.filesize_limit + ): + logger.debug( + 'File size will be over the limit: {} + {}'.format( + self._segment_dumper.filesize, len(item) + ) + ) + return True + + if ( + self.duration_limit > 0 + and self._playlist_dumper.duration + float(item.segment.duration) + >= self.duration_limit + ): + logger.debug( + 'Duration will be over the limit: {} + {}'.format( + self._playlist_dumper.duration, item.segment.duration + ) + ) + return True + + return False + + def _add_flag(self, item: Union[InitSectionData, SegmentData]) -> None: + item.segment.custom_parser_values['split'] = True + + def __call__( + self, source: Observable[Union[InitSectionData, SegmentData]] + ) -> Observable[Union[InitSectionData, SegmentData]]: + return self._limit(source) + + def _limit( + self, source: Observable[Union[InitSectionData, SegmentData]] + ) -> Observable[Union[InitSectionData, SegmentData]]: + def subscribe( + observer: abc.ObserverBase[Union[InitSectionData, SegmentData]], + scheduler: Optional[abc.SchedulerBase] = None, + ) -> abc.DisposableBase: + disposed = False + subscription = SerialDisposable() + + def on_next(item: Union[InitSectionData, SegmentData]) -> None: + if self._will_over_limits(item): + self._add_flag(item) + observer.on_next(item) + + def dispose() -> None: + nonlocal disposed + disposed = True + + subscription.disposable = source.subscribe( + on_next, observer.on_error, observer.on_completed, scheduler=scheduler + ) + + return CompositeDisposable(subscription, Disposable(dispose)) + + return Observable(subscribe) diff --git a/src/blrec/hls/operators/playlist_dumper.py b/src/blrec/hls/operators/playlist_dumper.py index a5600b4..9101682 100644 --- a/src/blrec/hls/operators/playlist_dumper.py +++ b/src/blrec/hls/operators/playlist_dumper.py @@ -2,31 +2,52 @@ from __future__ import annotations import io import logging -import os from copy import deepcopy from decimal import Decimal -from typing import Callable, Optional, Tuple +from pathlib import PurePath +from typing import Optional, Tuple, Union import m3u8 from reactivex import Observable, Subject, abc from reactivex.disposable import CompositeDisposable, Disposable, SerialDisposable +from ..helpler import sequence_number_of +from .segment_fetcher import InitSectionData, SegmentData +from .segment_dumper import SegmentDumper + __all__ = ('PlaylistDumper',) logger = logging.getLogger(__name__) class PlaylistDumper: - def __init__(self, path_provider: Callable[..., Tuple[str, int]]) -> None: - self._path_provider = path_provider + def __init__(self, segment_dumper: SegmentDumper) -> None: + self._segment_dumper = segment_dumper + + def on_open(args: Tuple[str, int]) -> None: + self._open_file(*args) + + def on_close(path: str) -> None: + self._close_file() + self._reset() + + self._segment_dumper.file_opened.subscribe(on_open) + self._segment_dumper.file_closed.subscribe(on_close) + self._file_opened: Subject[Tuple[str, int]] = Subject() self._file_closed: Subject[str] = Subject() + self._duration_updated: Subject[float] = Subject() + self._segments_lost: Subject[int] = Subject() + self._reset() def _reset(self) -> None: self._path: str = '' self._file: Optional[io.TextIOWrapper] = None self._duration: Decimal = Decimal() + self._last_segment: Optional[m3u8.Segment] = None + self._last_seq_num: Optional[int] = None + self._num_of_segments_lost: int = 0 @property def path(self) -> str: @@ -36,6 +57,10 @@ class PlaylistDumper: def duration(self) -> float: return float(self._duration) + @property + def num_of_segments_lost(self) -> int: + return self._num_of_segments_lost + @property def file_opened(self) -> Observable[Tuple[str, int]]: return self._file_opened @@ -44,17 +69,27 @@ class PlaylistDumper: def file_closed(self) -> Observable[str]: return self._file_closed - def __call__(self, source: Observable[m3u8.M3U8]) -> Observable[m3u8.Segment]: + @property + def duration_updated(self) -> Observable[float]: + return self._duration_updated + + @property + def segments_lost(self) -> Observable[int]: + return self._segments_lost + + def __call__( + self, source: Observable[Union[InitSectionData, SegmentData]] + ) -> Observable[Union[InitSectionData, SegmentData]]: return self._dump(source) - def _open_file(self) -> None: - path, timestamp = self._path_provider() - root, ext = os.path.splitext(path) - os.makedirs(root, exist_ok=True) - self._path = os.path.join(root, 'index.m3u8') + def _open_file(self, video_path: str, timestamp: int) -> None: + path = PurePath(video_path) + self._video_file_name = path.name + self._path = str(path.with_suffix('.m3u8')) self._file = open(self._path, 'wt', encoding='utf8') # type: ignore logger.debug(f'Opened file: {self._path}') self._file_opened.on_next((self._path, timestamp)) + self._header_dumped = False def _close_file(self) -> None: if self._file is not None and not self._file.closed: @@ -63,97 +98,87 @@ class PlaylistDumper: logger.debug(f'Closed file: {self._path}') self._file_closed.on_next(self._path) - def _name_of(self, uri: str) -> str: - name, ext = os.path.splitext(uri) - return name + def _dump_header(self, item: InitSectionData) -> None: + if self._header_dumped: + return + playlist: m3u8.M3U8 = deepcopy(item.segment.custom_parser_values['playlist']) + playlist.segments.clear() + playlist.is_endlist = False + assert self._file is not None + self._file.write(playlist.dumps()) + self._file.flush() + self._header_dumped = True - def _sequence_number_of(self, uri: str) -> int: - return int(self._name_of(uri)) - - def _replace_uri(self, segment: m3u8.Segment) -> m3u8.Segment: - copied_seg = deepcopy(segment) - if init_section := getattr(copied_seg, 'init_section', None): - init_section.uri = f'segments/{init_section.uri}' - uri = segment.uri - name = self._name_of(uri) - copied_seg.uri = 'segments/%s/%s' % (name[:-3], uri) - return copied_seg - - def _replace_all_uri(self, playlist: m3u8.M3U8) -> m3u8.M3U8: - copied_playlist = deepcopy(playlist) - copied_playlist.segments = m3u8.SegmentList( - self._replace_uri(s) for s in copied_playlist.segments + def _dump_segment(self, init_item: InitSectionData, item: SegmentData) -> None: + seg = self._make_segment( + item.segment, + self._video_file_name, + init_section_byterange=f'{len(init_item)}@{init_item.offset}', + segment_byterange=f'{len(item)}@{item.offset}', ) - return copied_playlist + + curr_seq_num = sequence_number_of(item.segment.uri) + if self._last_seq_num is not None: + if self._last_seq_num + 1 != curr_seq_num: + seg.discontinuity = True + if self._last_seq_num + 1 < curr_seq_num: + self._num_of_segments_lost += curr_seq_num - self._last_seq_num - 1 + self._segments_lost.on_next(self._num_of_segments_lost) + + assert self._file is not None + self._file.write(seg.dumps(self._last_segment) + '\n') + self._file.flush() + + self._last_segment = seg + self._last_seq_num = curr_seq_num + + def _make_segment( + self, + segment: m3u8.Segment, + uri: str, + init_section_byterange: str, + segment_byterange: str, + ) -> m3u8.Segment: + seg = deepcopy(segment) + if init_section := getattr(seg, 'init_section', None): + init_section.uri = uri + init_section.byterange = init_section_byterange + seg.uri = uri + seg.byterange = segment_byterange + seg.title += '|' + segment.uri + return seg def _update_duration(self, segment: m3u8.Segment) -> None: self._duration += Decimal(str(segment.duration)) + self._duration_updated.on_next(float(self._duration)) - def _dump(self, source: Observable[m3u8.M3U8]) -> Observable[m3u8.Segment]: + def _dump( + self, source: Observable[Union[InitSectionData, SegmentData]] + ) -> Observable[Union[InitSectionData, SegmentData]]: def subscribe( - observer: abc.ObserverBase[m3u8.Segment], + observer: abc.ObserverBase[Union[InitSectionData, SegmentData]], scheduler: Optional[abc.SchedulerBase] = None, ) -> abc.DisposableBase: disposed = False subscription = SerialDisposable() + last_init_item: Optional[InitSectionData] = None - last_segment: Optional[m3u8.Segment] = None - last_sequence_number: Optional[int] = None - first_playlist_dumped: bool = False - - self._close_file() - self._reset() - - def on_next(playlist: m3u8.M3U8) -> None: - nonlocal last_sequence_number, last_segment, first_playlist_dumped - - if playlist.is_endlist: - logger.debug('Playlist ended') - + def on_next(item: Union[InitSectionData, SegmentData]) -> None: + nonlocal last_init_item try: - if not first_playlist_dumped: - self._close_file() - self._reset() - self._open_file() - assert self._file is not None - playlist.is_endlist = False - self._file.write(self._replace_all_uri(playlist).dumps()) - self._file.flush() - for seg in playlist.segments: - observer.on_next(seg) - self._update_duration(seg) - last_segment = seg - last_sequence_number = self._sequence_number_of(seg.uri) - first_playlist_dumped = True - logger.debug('The first playlist has been dumped') - return - - assert self._file is not None - for seg in playlist.segments: - num = self._sequence_number_of(seg.uri) - discontinuity = False - if last_sequence_number is not None: - if last_sequence_number >= num: - continue - if last_sequence_number + 1 != num: - logger.warning( - 'Segments discontinuous: ' - f'last sequence number: {last_sequence_number}, ' - f'current sequence number: {num}' - ) - discontinuity = True - new_seg = self._replace_uri(seg) - new_seg.discontinuity = discontinuity - new_last_seg = self._replace_uri(last_segment) - self._file.write(new_seg.dumps(new_last_seg) + '\n') - observer.on_next(seg) - self._update_duration(seg) - last_segment = seg - last_sequence_number = num + if isinstance(item, InitSectionData): + self._dump_header(item) + last_init_item = item + else: + assert last_init_item is not None + self._dump_segment(last_init_item, item) + self._update_duration(item.segment) except Exception as e: self._close_file() self._reset() observer.on_error(e) + else: + observer.on_next(item) def on_completed() -> None: self._close_file() @@ -167,10 +192,9 @@ class PlaylistDumper: def dispose() -> None: nonlocal disposed - nonlocal last_segment, last_sequence_number + nonlocal last_init_item disposed = True - last_segment = None - last_sequence_number = None + last_init_item = None self._close_file() self._reset() diff --git a/src/blrec/hls/operators/playlist_fetcher.py b/src/blrec/hls/operators/playlist_fetcher.py index 4efc6d6..8a8e224 100644 --- a/src/blrec/hls/operators/playlist_fetcher.py +++ b/src/blrec/hls/operators/playlist_fetcher.py @@ -49,9 +49,14 @@ class PlaylistFetcher(SupportDebugMixin): def on_next(url: str) -> None: logger.info(f'Fetching playlist... {url}') + while not disposed: try: content = self._fetch_playlist(url) + except Exception as e: + logger.warning(f'Failed to fetch playlist: {repr(e)}') + observer.on_error(e) + else: if self._debug: playlist_debug_file.write(content + '\n') playlist = m3u8.loads(content, uri=url) @@ -59,12 +64,9 @@ class PlaylistFetcher(SupportDebugMixin): url = self._get_best_quality_url(playlist) logger.debug('Playlist changed to variant playlist') on_next(url) - except Exception as e: - logger.warning(f'Failed to fetch playlist: {repr(e)}') - observer.on_error(e) - else: - observer.on_next(playlist) - time.sleep(1) + else: + observer.on_next(playlist) + time.sleep(1) def dispose() -> None: nonlocal disposed @@ -96,10 +98,15 @@ class PlaylistFetcher(SupportDebugMixin): ) ), wait=wait_exponential(multiplier=0.1, max=1), - stop=stop_after_delay(10), + stop=stop_after_delay(8), ) def _fetch_playlist(self, url: str) -> str: - response = self._session.get(url, headers=self._live.headers, timeout=3) - response.raise_for_status() - response.encoding = 'utf-8' - return response.text + try: + response = self._session.get(url, headers=self._live.headers, timeout=3) + response.raise_for_status() + except Exception as e: + logger.debug(f'Failed to fetch playlist: {repr(e)}') + raise + else: + response.encoding = 'utf-8' + return response.text diff --git a/src/blrec/hls/operators/playlist_resolver.py b/src/blrec/hls/operators/playlist_resolver.py index 6d9cda6..1deac56 100644 --- a/src/blrec/hls/operators/playlist_resolver.py +++ b/src/blrec/hls/operators/playlist_resolver.py @@ -1,7 +1,6 @@ from __future__ import annotations import logging -import os from typing import Optional import m3u8 @@ -13,6 +12,7 @@ from blrec.core import operators as core_ops from blrec.utils import operators as utils_ops from ..exceptions import NoNewSegments +from ..helpler import sequence_number_of __all__ = ('PlaylistResolver',) @@ -23,6 +23,8 @@ logger = logging.getLogger(__name__) class PlaylistResolver: def __init__(self, stream_url_resolver: core_ops.StreamURLResolver) -> None: self._stream_url_resolver = stream_url_resolver + self._last_media_sequence: int = 0 + self._last_sequence_number: Optional[int] = None def __call__(self, source: Observable[m3u8.M3U8]) -> Observable[m3u8.Segment]: return self._solve(source).pipe( @@ -30,14 +32,10 @@ class PlaylistResolver: utils_ops.retry(should_retry=self._should_retry), ) - def _name_of(self, uri: str) -> str: - name, ext = os.path.splitext(uri) - return name - - def _sequence_number_of(self, uri: str) -> int: - return int(self._name_of(uri)) - def _solve(self, source: Observable[m3u8.M3U8]) -> Observable[m3u8.Segment]: + self._last_media_sequence = 0 + self._last_sequence_number = None + def subscribe( observer: abc.ObserverBase[m3u8.Segment], scheduler: Optional[abc.SchedulerBase] = None, @@ -46,29 +44,43 @@ class PlaylistResolver: subscription = SerialDisposable() attempts: int = 0 - last_sequence_number: Optional[int] = None def on_next(playlist: m3u8.M3U8) -> None: - nonlocal attempts, last_sequence_number + nonlocal attempts + discontinuity = False if playlist.is_endlist: logger.debug('Playlist ended') + if playlist.media_sequence < self._last_media_sequence: + logger.warning( + 'Segments discontinuous: ' + f'last media sequence: {self._last_media_sequence}, ' + f'current media sequence: {playlist.media_sequence}' + ) + discontinuity = True + self._last_sequence_number = None + self._last_media_sequence = playlist.media_sequence + new_segments = [] for seg in playlist.segments: - num = self._sequence_number_of(seg.uri) - if last_sequence_number is not None: - if last_sequence_number >= num: + num = sequence_number_of(seg.uri) + if self._last_sequence_number is not None: + if num <= self._last_sequence_number: continue - if last_sequence_number + 1 != num: + if num == self._last_sequence_number + 1: + discontinuity = False + else: logger.warning( 'Segments discontinuous: ' - f'last sequence number: {last_sequence_number}, ' + f'last sequence number: {self._last_sequence_number}, ' f'current sequence number: {num}' ) - seg.discontinuity = True + discontinuity = True + seg.discontinuity = discontinuity + seg.custom_parser_values['playlist'] = playlist new_segments.append(seg) - last_sequence_number = num + self._last_sequence_number = num if not new_segments: attempts += 1 @@ -84,9 +96,7 @@ class PlaylistResolver: def dispose() -> None: nonlocal disposed - nonlocal last_sequence_number disposed = True - last_sequence_number = None subscription.disposable = source.subscribe( on_next, observer.on_error, observer.on_completed, scheduler=scheduler diff --git a/src/blrec/hls/operators/prober.py b/src/blrec/hls/operators/prober.py index 0157e04..7d42c8e 100644 --- a/src/blrec/hls/operators/prober.py +++ b/src/blrec/hls/operators/prober.py @@ -7,7 +7,7 @@ from typing import List, Optional, Union from reactivex import Observable, Subject, abc from reactivex.disposable import CompositeDisposable, Disposable, SerialDisposable -from blrec.utils.ffprobe import StreamProfile, ffprobe +from blrec.utils.ffprobe import StreamProfile, ffprobe_on from .segment_fetcher import InitSectionData, SegmentData @@ -88,4 +88,4 @@ class Prober: def on_error(e: Exception) -> None: logger.warning(f'Failed to probe stream by ffprobe: {repr(e)}') - ffprobe(bytes_io.getvalue()).subscribe(on_next, on_error) + ffprobe_on(bytes_io.getvalue()).subscribe(on_next, on_error) diff --git a/src/blrec/hls/operators/segment_dumper.py b/src/blrec/hls/operators/segment_dumper.py index 0230707..9e19d11 100644 --- a/src/blrec/hls/operators/segment_dumper.py +++ b/src/blrec/hls/operators/segment_dumper.py @@ -1,13 +1,17 @@ +import io import logging -import os -from typing import Optional, Tuple, Union +from datetime import datetime, timedelta, timezone +from pathlib import PurePath +from typing import Callable, Optional, Tuple, Union +import attr from reactivex import Observable, Subject, abc from reactivex.disposable import CompositeDisposable, Disposable, SerialDisposable -from blrec.hls.operators.segment_fetcher import InitSectionData, SegmentData +from blrec.utils.ffprobe import ffprobe -from .playlist_dumper import PlaylistDumper +from ..helpler import sequence_number_of +from .segment_fetcher import InitSectionData, SegmentData __all__ = ('SegmentDumper',) @@ -15,17 +19,31 @@ logger = logging.getLogger(__name__) class SegmentDumper: - def __init__(self, playlist_dumper: PlaylistDumper) -> None: - self._playlist_dumper = playlist_dumper - self._out_dir: str = '' - - def on_next(args: Tuple[str, int]) -> None: - path, timestamp = args - self._out_dir = os.path.dirname(path) - - self._playlist_dumper.file_opened.subscribe(on_next) + def __init__( + self, path_provider: Callable[[Optional[int]], Tuple[str, int]] + ) -> None: + self._path_provider = path_provider self._file_opened: Subject[Tuple[str, int]] = Subject() self._file_closed: Subject[str] = Subject() + self._reset() + + def _reset(self) -> None: + self._path: str = '' + self._file: Optional[io.BufferedWriter] = None + self._filesize: int = 0 + self._record_start_time: Optional[int] = None + + @property + def path(self) -> str: + return self._path + + @property + def filesize(self) -> int: + return self._filesize + + @property + def record_start_time(self) -> Optional[int]: + return self._record_start_time @property def file_opened(self) -> Observable[Tuple[str, int]]: @@ -40,6 +58,84 @@ class SegmentDumper: ) -> Observable[Union[InitSectionData, SegmentData]]: return self._dump(source) + def _open_file(self) -> None: + assert self._record_start_time is not None + path, timestamp = self._path_provider(self._record_start_time) + self._path = str(PurePath(path).with_suffix('.m4s')) + self._file = open(self._path, 'wb') # type: ignore + logger.debug(f'Opened file: {self._path}') + self._file_opened.on_next((self._path, timestamp)) + + def _close_file(self) -> None: + if self._file is not None and not self._file.closed: + self._file.close() + logger.debug(f'Closed file: {self._path}') + self._file_closed.on_next(self._path) + + def _write_data(self, item: Union[InitSectionData, SegmentData]) -> Tuple[int, int]: + assert self._file is not None + offset = self._file.tell() + size = self._file.write(item.payload) + assert size == len(item) + return offset, size + + def _update_filesize(self, size: int) -> None: + self._filesize += size + + def _set_record_start_time(self, item: Union[InitSectionData, SegmentData]) -> None: + seq = sequence_number_of(item.segment.uri) + dt = datetime.utcfromtimestamp(seq) + tz = timezone(timedelta(hours=8)) + ts = dt.replace(year=datetime.today().year, tzinfo=tz).timestamp() + self._record_start_time = int(ts) + + def _must_split_file( + self, prev_init_item: Optional[InitSectionData], curr_init_item: InitSectionData + ) -> bool: + if prev_init_item is None: + curr_profile = ffprobe(curr_init_item.payload) + logger.debug(f'current init section profile: {curr_profile}') + return True + + prev_profile = ffprobe(prev_init_item.payload) + logger.debug(f'previous init section profile: {prev_profile}') + curr_profile = ffprobe(curr_init_item.payload) + logger.debug(f'current init section profile: {curr_profile}') + + prev_video_profile = prev_profile['streams'][0] + prev_audio_profile = prev_profile['streams'][1] + assert prev_video_profile['codec_type'] == 'video' + assert prev_audio_profile['codec_type'] == 'audio' + + curr_video_profile = curr_profile['streams'][0] + curr_audio_profile = curr_profile['streams'][1] + assert curr_video_profile['codec_type'] == 'video' + assert curr_audio_profile['codec_type'] == 'audio' + + if ( + prev_video_profile['codec_name'] != curr_video_profile['codec_name'] + or prev_video_profile['width'] != curr_video_profile['width'] + or prev_video_profile['height'] != curr_video_profile['height'] + or prev_video_profile['coded_width'] != curr_video_profile['coded_width'] + or prev_video_profile['coded_height'] != curr_video_profile['coded_height'] + ): + logger.warning('Video parameters changed') + return True + + if ( + prev_audio_profile['codec_name'] != curr_audio_profile['codec_name'] + or prev_audio_profile['channels'] != curr_audio_profile['channels'] + or prev_audio_profile['sample_rate'] != curr_audio_profile['sample_rate'] + or prev_audio_profile['bit_rate'] != curr_audio_profile['bit_rate'] + ): + logger.warning('Audio parameters changed') + return True + + return False + + def _need_split_file(self, item: Union[InitSectionData, SegmentData]) -> bool: + return item.segment.custom_parser_values.get('split', False) + def _dump( self, source: Observable[Union[InitSectionData, SegmentData]] ) -> Observable[Union[InitSectionData, SegmentData]]: @@ -47,31 +143,63 @@ class SegmentDumper: observer: abc.ObserverBase[Union[InitSectionData, SegmentData]], scheduler: Optional[abc.SchedulerBase] = None, ) -> abc.DisposableBase: + disposed = False subscription = SerialDisposable() + last_init_item: Optional[InitSectionData] = None def on_next(item: Union[InitSectionData, SegmentData]) -> None: + nonlocal last_init_item + split_file = False + if isinstance(item, InitSectionData): - uri = item.init_section.uri - path = os.path.join(self._out_dir, 'segments', uri) - else: - uri = item.segment.uri - name, ext = os.path.splitext(uri) - path = os.path.join(self._out_dir, 'segments', name[:-3], uri) - os.makedirs(os.path.dirname(path), exist_ok=True) + split_file = self._must_split_file(last_init_item, item) + last_init_item = item + + if not split_file: + split_file = self._need_split_file(item) + + if split_file: + self._close_file() + self._reset() + self._set_record_start_time(item) + self._open_file() + try: - with open(path, 'wb') as file: - file.write(item.payload) + if split_file and not isinstance(item, InitSectionData): + assert last_init_item is not None + offset, size = self._write_data(last_init_item) + self._update_filesize(size) + observer.on_next(attr.evolve(last_init_item, offset=offset)) + + offset, size = self._write_data(item) + self._update_filesize(size) + observer.on_next(attr.evolve(item, offset=offset)) except Exception as e: - logger.error(f'Failed to dump segmemt: {repr(e)}') + logger.error(f'Failed to write data: {repr(e)}') + self._close_file() + self._reset() observer.on_error(e) - else: - observer.on_next(item) + + def on_completed() -> None: + self._close_file() + self._reset() + observer.on_completed() + + def on_error(e: Exception) -> None: + self._close_file() + self._reset() + observer.on_error(e) def dispose() -> None: - pass + nonlocal disposed + nonlocal last_init_item + disposed = True + last_init_item = None + self._close_file() + self._reset() subscription.disposable = source.subscribe( - on_next, observer.on_error, observer.on_completed, scheduler=scheduler + on_next, on_error, on_completed, scheduler=scheduler ) return CompositeDisposable(subscription, Disposable(dispose)) diff --git a/src/blrec/hls/operators/segment_fetcher.py b/src/blrec/hls/operators/segment_fetcher.py index 93dabee..f1559be 100644 --- a/src/blrec/hls/operators/segment_fetcher.py +++ b/src/blrec/hls/operators/segment_fetcher.py @@ -8,7 +8,6 @@ import attr import m3u8 import requests import urllib3 -from m3u8.model import InitializationSection from reactivex import Observable, abc from reactivex import operators as ops from reactivex.disposable import CompositeDisposable, Disposable, SerialDisposable @@ -36,8 +35,9 @@ logger = logging.getLogger(__name__) @attr.s(auto_attribs=True, slots=True, frozen=True) class InitSectionData: - init_section: InitializationSection + segment: m3u8.Segment payload: bytes + offset: int = 0 def __len__(self) -> int: return len(self.payload) @@ -47,6 +47,7 @@ class InitSectionData: class SegmentData: segment: m3u8.Segment payload: bytes + offset: int = 0 def __len__(self) -> int: return len(self.payload) @@ -116,9 +117,7 @@ class SegmentFetcher: f'init section url: {url}' ) data = _data - observer.on_next( - InitSectionData(init_section=seg.init_section, payload=data) - ) + observer.on_next(InitSectionData(segment=seg, payload=data)) last_segment = seg url = seg.absolute_uri @@ -172,8 +171,13 @@ class SegmentFetcher: stop=stop_after_delay(60), ) def _fetch_segment(self, url: str) -> bytes: - with self._session.get(url, headers=self._live.headers, timeout=10) as response: + try: + response = self._session.get(url, headers=self._live.headers, timeout=5) response.raise_for_status() + except Exception as e: + logger.debug(f'Failed to fetch segment {url}: {repr(e)}') + raise + else: return response.content def _should_retry(self, exc: Exception) -> bool: @@ -189,3 +193,4 @@ class SegmentFetcher: 'Fetch segments failed continuously, trying to update the stream url.' ) self._stream_url_resolver.reset() + self._stream_url_resolver.rotate_routes() diff --git a/src/blrec/hls/operators/segment_parser.py b/src/blrec/hls/operators/segment_parser.py deleted file mode 100644 index 3c78824..0000000 --- a/src/blrec/hls/operators/segment_parser.py +++ /dev/null @@ -1,104 +0,0 @@ -from __future__ import annotations - -import io -import logging -from typing import Optional - -from reactivex import Observable, abc -from reactivex.disposable import CompositeDisposable, Disposable, SerialDisposable - -from blrec.flv.common import ( - is_audio_sequence_header, - is_metadata_tag, - is_video_sequence_header, -) -from blrec.flv.io import FlvReader -from blrec.flv.models import AudioTag, FlvHeader, ScriptTag, VideoTag -from blrec.flv.operators.typing import FLVStream, FLVStreamItem - -__all__ = ('SegmentParser',) - - -logger = logging.getLogger(__name__) - - -class SegmentParser: - def __init__(self) -> None: - self._backup_timestamp = True - - def __call__(self, source: Observable[bytes]) -> FLVStream: - return self._parse(source) - - def _parse(self, source: Observable[bytes]) -> FLVStream: - def subscribe( - observer: abc.ObserverBase[FLVStreamItem], - scheduler: Optional[abc.SchedulerBase] = None, - ) -> abc.DisposableBase: - disposed = False - subscription = SerialDisposable() - - last_flv_header: Optional[FlvHeader] = None - last_metadata_tag: Optional[ScriptTag] = None - last_audio_sequence_header: Optional[AudioTag] = None - last_video_sequence_header: Optional[VideoTag] = None - - def reset() -> None: - nonlocal last_flv_header, last_metadata_tag - nonlocal last_audio_sequence_header, last_video_sequence_header - last_flv_header = None - last_metadata_tag = None - last_audio_sequence_header = None - last_video_sequence_header = None - - def on_next(data: bytes) -> None: - nonlocal last_flv_header, last_metadata_tag - nonlocal last_audio_sequence_header, last_video_sequence_header - - if b'' == data: - reset() - return - - try: - reader = FlvReader( - io.BytesIO(data), backup_timestamp=self._backup_timestamp - ) - - flv_header = reader.read_header() - if not last_flv_header: - observer.on_next(flv_header) - last_flv_header = flv_header - else: - assert last_flv_header == flv_header - - while not disposed: - tag = reader.read_tag() - if is_metadata_tag(tag): - if last_metadata_tag is not None: - continue - last_metadata_tag = tag - elif is_video_sequence_header(tag): - if tag == last_video_sequence_header: - continue - last_video_sequence_header = tag - elif is_audio_sequence_header(tag): - if tag == last_audio_sequence_header: - continue - last_audio_sequence_header = tag - observer.on_next(tag) - except EOFError: - pass - except Exception as e: - observer.on_error(e) - - def dispose() -> None: - nonlocal disposed - disposed = True - reset() - - subscription.disposable = source.subscribe( - on_next, observer.on_error, observer.on_completed, scheduler=scheduler - ) - - return CompositeDisposable(subscription, Disposable(dispose)) - - return Observable(subscribe) diff --git a/src/blrec/hls/operators/segment_remuxer.py b/src/blrec/hls/operators/segment_remuxer.py deleted file mode 100644 index 56add94..0000000 --- a/src/blrec/hls/operators/segment_remuxer.py +++ /dev/null @@ -1,111 +0,0 @@ -from __future__ import annotations - -import io -import logging -import os -from typing import Optional, Union - -import av -from reactivex import Observable, abc -from reactivex.disposable import CompositeDisposable, Disposable, SerialDisposable - -from blrec.bili.live import Live - -from .segment_fetcher import InitSectionData, SegmentData - -__all__ = ('SegmentRemuxer',) - - -logger = logging.getLogger(__name__) - -TRACE_REMUX_SEGMENT = bool(os.environ.get('BLREC_TRACE_REMUX_SEGMENT')) -TRACE_LIBAV = bool(os.environ.get('BLREC_TRACE_LIBAV')) -if TRACE_LIBAV: - logging.getLogger('libav').setLevel(5) -else: - av.logging.set_level(av.logging.FATAL) - - -class SegmentRemuxer: - def __init__(self, live: Live) -> None: - self._live = live - - def __call__( - self, source: Observable[Union[InitSectionData, SegmentData]] - ) -> Observable[bytes]: - return self._remux(source) - - def _remux( - self, source: Observable[Union[InitSectionData, SegmentData]] - ) -> Observable[bytes]: - def subscribe( - observer: abc.ObserverBase[bytes], - scheduler: Optional[abc.SchedulerBase] = None, - ) -> abc.DisposableBase: - disposed = False - subscription = SerialDisposable() - - init_section_data: Optional[bytes] = None - - def reset() -> None: - nonlocal init_section_data - init_section_data = None - - def on_next(data: Union[InitSectionData, SegmentData]) -> None: - nonlocal init_section_data - - if isinstance(data, InitSectionData): - init_section_data = data.payload - observer.on_next(b'') - return - - if init_section_data is None: - return - - try: - remuxed_data = self._remux_segemnt(init_section_data + data.payload) - except av.FFmpegError as e: - logger.warning(f'Failed to remux segment: {repr(e)}', exc_info=e) - else: - observer.on_next(remuxed_data) - - def dispose() -> None: - nonlocal disposed - disposed = True - reset() - - subscription.disposable = source.subscribe( - on_next, observer.on_error, observer.on_completed, scheduler=scheduler - ) - - return CompositeDisposable(subscription, Disposable(dispose)) - - return Observable(subscribe) - - def _remux_segemnt(self, data: bytes, format: str = 'flv') -> bytes: - in_file = io.BytesIO(data) - out_file = io.BytesIO() - - with av.open(in_file) as in_container: - with av.open(out_file, mode='w', format=format) as out_container: - in_video_stream = in_container.streams.video[0] - in_audio_stream = in_container.streams.audio[0] - out_video_stream = out_container.add_stream(template=in_video_stream) - out_audio_stream = out_container.add_stream(template=in_audio_stream) - - for packet in in_container.demux(): - if TRACE_REMUX_SEGMENT: - logger.debug(repr(packet)) - # We need to skip the "flushing" packets that `demux` generates. - if packet.dts is None: - continue - # We need to assign the packet to the new stream. - if packet.stream.type == 'video': - packet.stream = out_video_stream - elif packet.stream.type == 'audio': - packet.stream = out_audio_stream - else: - raise NotImplementedError(packet.stream.type) - out_container.mux(packet) - - return out_file.getvalue() diff --git a/src/blrec/notification/notifiers.py b/src/blrec/notification/notifiers.py index fbdff50..aacd760 100644 --- a/src/blrec/notification/notifiers.py +++ b/src/blrec/notification/notifiers.py @@ -47,7 +47,7 @@ __all__ = ( 'PushdeerNotifier', 'PushplusNotifier', 'TelegramNotifier', - 'BarkNotifer', + 'BarkNotifier', ) diff --git a/src/blrec/notification/providers.py b/src/blrec/notification/providers.py index 873b8c7..007620d 100644 --- a/src/blrec/notification/providers.py +++ b/src/blrec/notification/providers.py @@ -296,7 +296,7 @@ class Bark(MessagingProvider): "body": content, "device_key": self.pushkey, "badge": 1, - "icon": "https://raw.githubusercontent.com/acgnhiki/blrec/master/webapp/src/assets/icons/icon-72x72.png", + "icon": "https://raw.githubusercontent.com/acgnhiki/blrec/master/webapp/src/assets/icons/icon-72x72.png", # noqa "group": "blrec", } async with aiohttp.ClientSession(raise_for_status=True) as session: diff --git a/src/blrec/path/__init__.py b/src/blrec/path/__init__.py index 40d3e13..9917b73 100644 --- a/src/blrec/path/__init__.py +++ b/src/blrec/path/__init__.py @@ -4,9 +4,12 @@ from .helpers import ( danmaku_path, escape_path, extra_metadata_path, + ffmpeg_metadata_path, file_exists, + playlist_path, raw_danmaku_path, record_metadata_path, + video_path, ) __all__ = ( @@ -15,7 +18,10 @@ __all__ = ( 'danmaku_path', 'escape_path', 'extra_metadata_path', + 'ffmpeg_metadata_path', 'file_exists', + 'playlist_path', 'raw_danmaku_path', 'record_metadata_path', + 'video_path', ) diff --git a/src/blrec/path/helpers.py b/src/blrec/path/helpers.py index f08c972..4757f06 100644 --- a/src/blrec/path/helpers.py +++ b/src/blrec/path/helpers.py @@ -6,6 +6,7 @@ __all__ = ( 'cover_path', 'create_file', 'danmaku_path', + 'playlist_path', 'escape_path', 'extra_metadata_path', 'ffmpeg_metadata_path', @@ -29,6 +30,14 @@ def danmaku_path(video_path: str) -> str: return str(PurePath(video_path).with_suffix('.xml')) +def playlist_path(video_path: str) -> str: + return str(PurePath(video_path).with_suffix('.m3u8')) + + +def video_path(playlist_path: str) -> str: + return str(PurePath(playlist_path).with_suffix('.m4s')) + + def cover_path(video_path: str, ext: str = 'jpg') -> str: return str(PurePath(video_path).with_suffix('.' + ext)) diff --git a/src/blrec/postprocess/ffmpeg_metadata.py b/src/blrec/postprocess/ffmpeg_metadata.py index 6b9d91b..b772e1e 100644 --- a/src/blrec/postprocess/ffmpeg_metadata.py +++ b/src/blrec/postprocess/ffmpeg_metadata.py @@ -3,6 +3,7 @@ from __future__ import annotations import asyncio import json import logging +import os from decimal import Decimal from typing import Iterable, List, Tuple, cast @@ -12,7 +13,7 @@ import m3u8 from blrec.flv.helpers import make_comment_for_joinpoints from blrec.flv.operators import JoinPoint from blrec.flv.utils import format_timestamp -from blrec.path.helpers import ffmpeg_metadata_path +from blrec.path.helpers import ffmpeg_metadata_path, playlist_path from .helpers import get_extra_metadata, get_metadata, get_record_metadata @@ -21,11 +22,13 @@ logger = logging.getLogger(__name__) async def make_metadata_file(video_path: str) -> str: path = ffmpeg_metadata_path(video_path) + async with aiofiles.open(path, 'wb') as file: - if video_path.endswith('.flv'): + _, ext = os.path.splitext(video_path) + if ext == '.flv': content = await _make_metadata_content_for_flv(video_path) - elif video_path.endswith('.m3u8'): - content = await _make_metadata_content_for_m3u8(video_path) + elif ext == '.m4s': + content = await _make_metadata_content_for_m3u8(playlist_path(video_path)) else: raise NotImplementedError(video_path) await file.write(content.encode(encoding='utf8')) diff --git a/src/blrec/postprocess/helpers.py b/src/blrec/postprocess/helpers.py index a1436d8..9a203d6 100644 --- a/src/blrec/postprocess/helpers.py +++ b/src/blrec/postprocess/helpers.py @@ -3,7 +3,6 @@ import json import logging import os import shutil -from pathlib import PurePath from typing import Any, Dict, Iterable, Literal import aiofiles @@ -11,6 +10,7 @@ import aiofiles from blrec.path.helpers import ( cover_path, danmaku_path, + playlist_path, raw_danmaku_path, record_metadata_path, ) @@ -45,31 +45,21 @@ async def discard_dir(path: str, log_level: Literal['INFO', 'DEBUG'] = 'INFO') - def files_related(video_path: str) -> Iterable[str]: - for path in [ + file_paths = [ danmaku_path(video_path), raw_danmaku_path(video_path), cover_path(video_path, ext='jpg'), cover_path(video_path, ext='png'), - ]: + ] + + if video_path.endswith('.m4s'): + file_paths.append(playlist_path(video_path)) + + for path in file_paths: if os.path.isfile(path): yield path -async def copy_files_related(video_path: str) -> None: - loop = asyncio.get_running_loop() - dirname = os.path.dirname(video_path) - - for src_path in files_related(video_path): - root, ext = os.path.splitext(src_path) - dst_path = PurePath(dirname).with_suffix(ext) - try: - await loop.run_in_executor(None, shutil.copy, src_path, dst_path) - except Exception as e: - logger.error(f"Failed to copy '{src_path}' to '{dst_path}': {repr(e)}") - else: - logger.info(f"Copied '{src_path}' to '{dst_path}'") - - async def get_metadata(flv_path: str) -> Dict[str, Any]: loop = asyncio.get_running_loop() return await loop.run_in_executor(None, _get_metadata, flv_path) diff --git a/src/blrec/postprocess/postprocessor.py b/src/blrec/postprocess/postprocessor.py index 76a6dc5..ae76151 100644 --- a/src/blrec/postprocess/postprocessor.py +++ b/src/blrec/postprocess/postprocessor.py @@ -17,16 +17,15 @@ from ..flv.helpers import is_valid_flv_file from ..flv.metadata_analysis import analyse_metadata from ..flv.metadata_injection import InjectingProgress, inject_metadata from ..logging.room_id import aio_task_with_room_id -from ..path import danmaku_path, extra_metadata_path, record_metadata_path +from ..path import ( + extra_metadata_path, + ffmpeg_metadata_path, + playlist_path, + record_metadata_path, +) from ..utils.mixins import AsyncCooperationMixin, AsyncStoppableMixin, SupportDebugMixin from .ffmpeg_metadata import make_metadata_file -from .helpers import ( - copy_files_related, - discard_dir, - discard_file, - files_related, - get_extra_metadata, -) +from .helpers import discard_file, files_related, get_extra_metadata from .models import DeleteStrategy, PostprocessorStatus from .remux import RemuxingProgress, RemuxingResult, remux_video from .typing import Progress @@ -144,75 +143,78 @@ class Postprocessor( @aio_task_with_room_id async def _worker(self) -> None: - while True: - self._status = PostprocessorStatus.WAITING - self._postprocessing_path = None - self._postprocessing_progress = None + await self._postprocess() - video_path = await self._queue.get() + async def _postprocess(self) -> None: + self._status = PostprocessorStatus.WAITING + self._postprocessing_path = None + self._postprocessing_progress = None - async with self._worker_semaphore: - logger.debug(f'Postprocessing... {video_path}') + video_path = await self._queue.get() + self._completed_files.append(video_path) - await self._wait_for_metadata_file(video_path) + async with self._worker_semaphore: + logger.debug(f'Postprocessing... {video_path}') + await self._wait_for_metadata_file(video_path) - try: - if video_path.endswith('.flv'): - if not await self._is_vaild_flv_file(video_path): - logger.warning(f'The flv file may be invalid: {video_path}') - if os.path.getsize(video_path) < 1024**2: - continue - if self.remux_to_mp4: - self._status = PostprocessorStatus.REMUXING - ( - result_path, - remuxing_result, - ) = await self._remux_video_to_mp4(video_path) - if not self._debug: - if self._should_delete_source_files(remuxing_result): - await discard_file(video_path) - elif self.inject_extra_metadata: - self._status = PostprocessorStatus.INJECTING - result_path = await self._inject_extra_metadata(video_path) - else: - result_path = video_path - if not self._debug: - await discard_file(extra_metadata_path(video_path), 'DEBUG') - - elif video_path.endswith('.m3u8'): - if self.remux_to_mp4: - self._status = PostprocessorStatus.REMUXING - ( - result_path, - remuxing_result, - ) = await self._remux_video_to_mp4(video_path) - await copy_files_related(video_path) - if result_path != video_path: - self._completed_files.append(danmaku_path(result_path)) - with suppress(ValueError): - self._completed_files.remove( - danmaku_path(video_path) - ) - if not self._debug: - if self._should_delete_source_files(remuxing_result): - await discard_dir(os.path.dirname(video_path)) - else: - result_path = video_path - else: - result_path = video_path + try: + _, ext = os.path.splitext(video_path) + if ext == '.flv': + result_path = await self._process_flv(video_path) + elif ext == '.m4s': + result_path = await self._process_m4s(video_path) + else: + result_path = video_path + if result_path != video_path: self._completed_files.append(result_path) - await self._emit( - 'video_postprocessing_completed', self, result_path - ) + await self._emit('video_postprocessing_completed', self, result_path) - files = [result_path, *files_related(result_path)] - await self._emit('postprocessing_completed', self, files) - except Exception as exc: - submit_exception(exc) - finally: - self._queue.task_done() + files = [result_path, *files_related(result_path)] + await self._emit('postprocessing_completed', self, files) + except Exception as exc: + submit_exception(exc) + finally: + self._queue.task_done() + + async def _process_flv(self, video_path: str) -> str: + if not await self._is_vaild_flv_file(video_path): + logger.warning(f'The flv file may be invalid: {video_path}') + if os.path.getsize(video_path) < 1024**2: + return video_path + + if self.remux_to_mp4: + self._status = PostprocessorStatus.REMUXING + result_path, remuxing_result = await self._remux_video_to_mp4(video_path) + if not self._debug: + if self._should_delete_source_files(remuxing_result): + await discard_file(video_path) + elif self.inject_extra_metadata: + self._status = PostprocessorStatus.INJECTING + result_path = await self._inject_extra_metadata(video_path) + else: + result_path = video_path + + if not self._debug: + await discard_file(extra_metadata_path(video_path), 'DEBUG') + + return result_path + + async def _process_m4s(self, video_path: str) -> str: + if not self.remux_to_mp4: + return video_path + + self._status = PostprocessorStatus.REMUXING + result_path, remuxing_result = await self._remux_video_to_mp4(video_path) + + if not self._debug and self._should_delete_source_files(remuxing_result): + await discard_file(video_path) + await discard_file(playlist_path(video_path)) + await discard_file(record_metadata_path(video_path), 'DEBUG') + await discard_file(ffmpeg_metadata_path(video_path), 'DEBUG') + + return result_path async def _inject_extra_metadata(self, path: str) -> str: logger.info(f"Injecting metadata for '{path}' ...") @@ -240,12 +242,16 @@ class Postprocessor( return path async def _remux_video_to_mp4(self, in_path: str) -> Tuple[str, RemuxingResult]: - if in_path.endswith('.flv'): + _, ext = os.path.splitext(in_path) + + if ext == '.flv': out_path = str(PurePath(in_path).with_suffix('.mp4')) metadata_path = await make_metadata_file(in_path) - elif in_path.endswith('.m3u8'): - out_path = str(PurePath(in_path).parent.with_suffix('.mp4')) - metadata_path = await make_metadata_file(in_path) + elif ext == '.m4s': + _in_path = in_path + in_path = playlist_path(in_path) + out_path = str(PurePath(in_path).with_suffix('.mp4')) + metadata_path = await make_metadata_file(_in_path) else: raise NotImplementedError(in_path) @@ -254,7 +260,7 @@ class Postprocessor( if remux_result.is_failed(): logger.error(f"Failed to remux '{in_path}' to '{out_path}'") - result_path = in_path + result_path = _in_path if ext == 'm4s' else in_path elif remux_result.is_warned(): logger.warning('Remuxing done, but ran into problems.') result_path = out_path @@ -266,7 +272,7 @@ class Postprocessor( logger.debug(f'ffmpeg output:\n{remux_result.output}') - if not self._debug and in_path.endswith('.flv'): + if not self._debug and ext == '.flv': await discard_file(metadata_path, 'DEBUG') return result_path, remux_result @@ -349,15 +355,17 @@ class Postprocessor( return False async def _wait_for_metadata_file(self, video_path: str) -> None: - loop = asyncio.get_running_loop() + _, ext = os.path.splitext(video_path) - if video_path.endswith('.flv'): + if ext == '.flv': path = extra_metadata_path(video_path) - elif video_path.endswith('.m3u8'): + elif ext == '.m4s': path = record_metadata_path(video_path) else: return + loop = asyncio.get_running_loop() + for _ in range(10): if await loop.run_in_executor(None, os.path.isfile, path): break diff --git a/src/blrec/postprocess/remux.py b/src/blrec/postprocess/remux.py index f4b034f..1f9d29d 100644 --- a/src/blrec/postprocess/remux.py +++ b/src/blrec/postprocess/remux.py @@ -10,6 +10,8 @@ from reactivex.disposable import CompositeDisposable, Disposable, SerialDisposab from reactivex.scheduler.currentthreadscheduler import CurrentThreadScheduler from tqdm import tqdm +from blrec.path.helpers import video_path + __all__ = 'RemuxingResult', 'remux_video' @@ -63,15 +65,9 @@ def remux_video( ) -> Observable[Union[RemuxingProgress, RemuxingResult]]: SIZE_PATTERN: Final = re.compile(r'size=\s*(?P<number>\d+)(?P<unit>[a-zA-Z]?B)') if in_path.endswith('.m3u8'): - total = 0 - for root, dirs, files in os.walk(os.path.dirname(in_path)): - for filename in files: - if not (filename.endswith('.m4s') or filename.endswith('.ts')): - continue - total += os.path.getsize(os.path.join(root, filename)) - postfix = os.path.join( - os.path.basename(os.path.dirname(in_path)), os.path.basename(in_path) - ) + _in_path = video_path(in_path) + total = os.path.getsize(_in_path) + postfix = os.path.basename(_in_path) else: total = os.path.getsize(in_path) postfix = os.path.basename(in_path) diff --git a/src/blrec/setting/models.py b/src/blrec/setting/models.py index efda424..f0795ac 100644 --- a/src/blrec/setting/models.py +++ b/src/blrec/setting/models.py @@ -18,13 +18,14 @@ from blrec.postprocess import DeleteStrategy from blrec.utils.string import camel_case from .typing import ( + BarkMessageType, EmailMessageType, + MessageType, PushdeerMessageType, PushplusMessageType, RecordingMode, ServerchanMessageType, TelegramMessageType, - BarkMessageType, ) logger = logging.getLogger(__name__) @@ -462,16 +463,16 @@ class NotificationSettings(BaseModel): class MessageTemplateSettings(BaseModel): - began_message_type: str + began_message_type: MessageType began_message_title: str began_message_content: str - ended_message_type: str + ended_message_type: MessageType ended_message_title: str ended_message_content: str - space_message_type: str + space_message_type: MessageType space_message_title: str space_message_content: str - error_message_type: str + error_message_type: MessageType error_message_title: str error_message_content: str diff --git a/src/blrec/task/models.py b/src/blrec/task/models.py index fe23193..c7cf1a0 100644 --- a/src/blrec/task/models.py +++ b/src/blrec/task/models.py @@ -93,14 +93,14 @@ class VideoFileStatus(str, Enum): INJECTING = 'injecting' COMPLETED = 'completed' MISSING = 'missing' - BROKEN = 'broken' + UNKNOWN = 'unknown' class DanmukuFileStatus(str, Enum): RECORDING = 'recording' COMPLETED = 'completed' MISSING = 'missing' - BROKEN = 'broken' + UNKNOWN = 'unknown' @attr.s(auto_attribs=True, slots=True, frozen=True) diff --git a/src/blrec/task/task.py b/src/blrec/task/task.py index d22826b..1249281 100644 --- a/src/blrec/task/task.py +++ b/src/blrec/task/task.py @@ -11,13 +11,14 @@ from blrec.bili.models import RoomInfo, UserInfo from blrec.bili.typing import QualityNumber, StreamFormat from blrec.core import Recorder from blrec.core.cover_downloader import CoverSaveStrategy +from blrec.core.typing import MetaData from blrec.event.event_submitters import ( LiveEventSubmitter, PostprocessorEventSubmitter, RecorderEventSubmitter, ) from blrec.flv.metadata_injection import InjectingProgress -from blrec.flv.operators import MetaData, StreamProfile +from blrec.flv.operators import StreamProfile from blrec.logging.room_id import aio_task_with_room_id from blrec.postprocess import DeleteStrategy, Postprocessor, PostprocessorStatus from blrec.postprocess.remux import RemuxingProgress @@ -134,10 +135,7 @@ class RecordTask: size = os.path.getsize(path) exists = True except FileNotFoundError: - if path.endswith('.m3u8'): - mp4_path = str(PurePath(path).parent.with_suffix('.mp4')) - else: - mp4_path = str(PurePath(path).with_suffix('.mp4')) + mp4_path = str(PurePath(path).with_suffix('.mp4')) try: size = os.path.getsize(mp4_path) exists = True @@ -165,7 +163,7 @@ class RecordTask: status = VideoFileStatus.INJECTING else: # disabling recorder by force or stoping task by force - status = VideoFileStatus.BROKEN + status = VideoFileStatus.UNKNOWN yield VideoFileDetail(path=path, size=size, status=status) @@ -196,7 +194,7 @@ class RecordTask: status = DanmukuFileStatus.RECORDING else: # disabling recorder by force or stoping task by force - status = DanmukuFileStatus.BROKEN + status = DanmukuFileStatus.UNKNOWN yield DanmakuFileDetail(path=path, size=size, status=status) diff --git a/src/blrec/task/task_manager.py b/src/blrec/task/task_manager.py index 5daa221..18eaceb 100644 --- a/src/blrec/task/task_manager.py +++ b/src/blrec/task/task_manager.py @@ -10,8 +10,9 @@ from tenacity import retry, retry_if_exception_type, stop_after_delay, wait_expo from blrec.utils.libc import malloc_trim from ..bili.exceptions import ApiRequestError +from ..core.typing import MetaData from ..exception import NotFoundError, submit_exception -from ..flv.operators import MetaData, StreamProfile +from ..flv.operators import StreamProfile from .models import DanmakuFileDetail, TaskData, TaskParam, VideoFileDetail from .task import RecordTask diff --git a/src/blrec/utils/ffprobe.py b/src/blrec/utils/ffprobe.py index 5c6523d..95e77d1 100644 --- a/src/blrec/utils/ffprobe.py +++ b/src/blrec/utils/ffprobe.py @@ -2,17 +2,113 @@ from __future__ import annotations import json from subprocess import PIPE, Popen -from typing import Any, Dict, Optional +from typing import Any, Dict, List, Literal, Optional, TypedDict, Union from reactivex import Observable, abc from reactivex.scheduler import CurrentThreadScheduler -__all__ = ('ffprobe', 'StreamProfile') - -StreamProfile = Dict[str, Any] +__all__ = ( + 'ffprobe', + 'ffprobe_on', + 'StreamProfile', + 'FormatProfile', + 'VideoProfile', + 'AudioProfile', +) -def ffprobe(data: bytes) -> Observable[StreamProfile]: +class VideoProfile(TypedDict, total=False): + index: int + codec_name: str + codec_long_name: str + codec_type: Literal['video'] + codec_tag_string: str + codec_tag: str + width: int + height: int + coded_width: int + coded_height: int + closed_captions: int + film_grain: int + has_b_frames: int + level: int + refs: int + is_avc: str + nal_length_size: str + id: str + r_frame_rate: str + avg_frame_rate: str + time_base: str + duration_ts: int + duration: str + extradata_size: int + disposition: Dict[str, int] + tags: Dict[str, Any] + + +class AudioProfile(TypedDict, total=False): + index: int + codec_name: str + codec_long_name: str + codec_type: Literal['audio'] + codec_tag_string: str + codec_tag: str + sample_fmt: str + sample_rate: str + channels: int + channel_layout: str + bits_per_sample: int + id: str + r_frame_rate: str + avg_frame_rate: str + time_base: str + duration_ts: int + duration: str + bit_rate: str + extradata_size: int + disposition: Dict[str, int] + tags: Dict[str, Any] + + +class FormatProfile(TypedDict, total=False): + filename: str + nb_streams: int + nb_programs: int + format_name: str + format_long_name: str + size: str + probe_score: int + tags: Dict[str, Any] + + +class StreamProfile(TypedDict, total=False): + streams: List[Union[VideoProfile, AudioProfile]] + format: FormatProfile + + +def ffprobe(data: bytes) -> StreamProfile: + args = [ + 'ffprobe', + '-show_streams', + '-show_format', + '-print_format', + 'json', + 'pipe:0', + ] + + with Popen(args, stdin=PIPE, stdout=PIPE, stderr=PIPE) as process: + try: + stdout, _stderr = process.communicate(data, timeout=10) + profile = json.loads(stdout) + except Exception: + process.kill() + process.wait() + raise + else: + return profile + + +def ffprobe_on(data: bytes) -> Observable[StreamProfile]: def subscribe( observer: abc.ObserverBase[StreamProfile], scheduler: Optional[abc.SchedulerBase] = None, @@ -20,26 +116,13 @@ def ffprobe(data: bytes) -> Observable[StreamProfile]: _scheduler = scheduler or CurrentThreadScheduler() def action(scheduler: abc.SchedulerBase, state: Optional[Any] = None) -> None: - args = [ - 'ffprobe', - '-show_streams', - '-show_format', - '-print_format', - 'json', - 'pipe:0', - ] - - with Popen(args, stdin=PIPE, stdout=PIPE, stderr=PIPE) as process: - try: - stdout, stderr = process.communicate(data, timeout=10) - except Exception as e: - process.kill() - process.wait() - observer.on_error(e) - else: - profile = json.loads(stdout) - observer.on_next(profile) - observer.on_completed() + try: + profile = ffprobe(data) + except Exception as e: + observer.on_error(e) + else: + observer.on_next(profile) + observer.on_completed() return _scheduler.schedule(action) diff --git a/src/blrec/utils/mixins.py b/src/blrec/utils/mixins.py index d526724..9db975b 100644 --- a/src/blrec/utils/mixins.py +++ b/src/blrec/utils/mixins.py @@ -2,6 +2,7 @@ import asyncio import os import threading from abc import ABC, abstractmethod +from concurrent.futures import Future from typing import Awaitable, TypeVar, final from blrec.logging.room_id import aio_task_with_room_id @@ -130,10 +131,13 @@ class AsyncCooperationMixin(ABC): # workaround for `RuntimeError: no running event loop` submit_exception(exc) - self._run_coroutine(wrapper()) + self._call_coroutine(wrapper()) - def _run_coroutine(self, coro: Awaitable[_T]) -> _T: - future = asyncio.run_coroutine_threadsafe(self._with_room_id(coro), self._loop) + def _run_coroutine(self, coro: Awaitable[_T]) -> Future[_T]: + return asyncio.run_coroutine_threadsafe(coro, self._loop) + + def _call_coroutine(self, coro: Awaitable[_T]) -> _T: + future = self._run_coroutine(coro) return future.result() @aio_task_with_room_id diff --git a/src/blrec/web/routers/tasks.py b/src/blrec/web/routers/tasks.py index 6289c42..b5b5a77 100644 --- a/src/blrec/web/routers/tasks.py +++ b/src/blrec/web/routers/tasks.py @@ -1,41 +1,32 @@ from typing import Any, Dict, List import attr +from fastapi import APIRouter, BackgroundTasks, Body, Depends, status from pydantic import PositiveInt, conint -from fastapi import ( - APIRouter, - status, - Body, - Depends, - BackgroundTasks, -) -from ..dependencies import task_data_filter, TaskDataFilter -from ..schemas import ResponseMessage -from ..responses import ( - not_found_responses, - forbidden_responses, - confict_responses, - accepted_responses, - created_responses, -) -from ...exception import NotFoundError, ForbiddenError from ...application import Application - +from ...exception import ForbiddenError, NotFoundError +from ...utils.ffprobe import StreamProfile +from ..dependencies import TaskDataFilter, task_data_filter +from ..responses import ( + accepted_responses, + confict_responses, + created_responses, + forbidden_responses, + not_found_responses, +) +from ..schemas import ResponseMessage app: Application = None # type: ignore # bypass flake8 F821 -router = APIRouter( - prefix='/api/v1/tasks', - tags=['tasks'], -) +router = APIRouter(prefix='/api/v1/tasks', tags=['tasks']) @router.get('/data') async def get_task_data( page: PositiveInt = 1, size: conint(ge=10, le=100) = 100, # type: ignore - filter: TaskDataFilter = Depends(task_data_filter) + filter: TaskDataFilter = Depends(task_data_filter), ) -> List[Dict[str, Any]]: start = (page - 1) * size stop = page * size @@ -51,26 +42,17 @@ async def get_task_data( return task_data -@router.get( - '/{room_id}/data', - responses={**not_found_responses}, -) +@router.get('/{room_id}/data', responses={**not_found_responses}) async def get_one_task_data(room_id: int) -> Dict[str, Any]: return attr.asdict(app.get_task_data(room_id)) -@router.get( - '/{room_id}/param', - responses={**not_found_responses}, -) +@router.get('/{room_id}/param', responses={**not_found_responses}) async def get_task_param(room_id: int) -> Dict[str, Any]: return attr.asdict(app.get_task_param(room_id)) -@router.get( - '/{room_id}/metadata', - responses={**not_found_responses}, -) +@router.get('/{room_id}/metadata', responses={**not_found_responses}) async def get_task_metadata(room_id: int) -> Dict[str, Any]: metadata = app.get_task_metadata(room_id) if not metadata: @@ -78,44 +60,29 @@ async def get_task_metadata(room_id: int) -> Dict[str, Any]: return attr.asdict(metadata) -@router.get( - '/{room_id}/profile', - responses={**not_found_responses}, -) -async def get_task_stream_profile(room_id: int) -> Dict[str, Any]: +@router.get('/{room_id}/profile', responses={**not_found_responses}) +async def get_task_stream_profile(room_id: int) -> StreamProfile: return app.get_task_stream_profile(room_id) -@router.get( - '/{room_id}/videos', - responses={**not_found_responses}, -) +@router.get('/{room_id}/videos', responses={**not_found_responses}) async def get_task_video_file_details(room_id: int) -> List[Dict[str, Any]]: return [attr.asdict(d) for d in app.get_task_video_file_details(room_id)] -@router.get( - '/{room_id}/danmakus', - responses={**not_found_responses}, -) +@router.get('/{room_id}/danmakus', responses={**not_found_responses}) async def get_task_danmaku_file_details(room_id: int) -> List[Dict[str, Any]]: return [attr.asdict(d) for d in app.get_task_danmaku_file_details(room_id)] -@router.post( - '/info', - response_model=ResponseMessage, - responses={**not_found_responses}, -) +@router.post('/info', response_model=ResponseMessage, responses={**not_found_responses}) async def update_all_task_infos() -> ResponseMessage: await app.update_all_task_infos() return ResponseMessage(message='All task infos have been updated') @router.post( - '/{room_id}/info', - response_model=ResponseMessage, - responses={**not_found_responses}, + '/{room_id}/info', response_model=ResponseMessage, responses={**not_found_responses} ) async def update_task_info(room_id: int) -> ResponseMessage: await app.update_task_info(room_id) @@ -123,20 +90,14 @@ async def update_task_info(room_id: int) -> ResponseMessage: @router.get( - '/{room_id}/cut', - response_model=ResponseMessage, - responses={**not_found_responses}, + '/{room_id}/cut', response_model=ResponseMessage, responses={**not_found_responses} ) async def can_cut_stream(room_id: int) -> ResponseMessage: if app.can_cut_stream(room_id): - return ResponseMessage( - message='The stream can been cut', - data={'result': True}, - ) + return ResponseMessage(message='The stream can been cut', data={'result': True}) else: return ResponseMessage( - message='The stream cannot been cut', - data={'result': False}, + message='The stream cannot been cut', data={'result': False} ) @@ -153,9 +114,7 @@ async def cut_stream(room_id: int) -> ResponseMessage: @router.post( - '/start', - response_model=ResponseMessage, - responses={**not_found_responses}, + '/start', response_model=ResponseMessage, responses={**not_found_responses} ) async def start_all_tasks() -> ResponseMessage: await app.start_all_tasks() @@ -214,10 +173,7 @@ async def stop_task( return ResponseMessage(message='The task has been stopped') -@router.post( - '/recorder/enable', - response_model=ResponseMessage, -) +@router.post('/recorder/enable', response_model=ResponseMessage) async def enable_all_task_recorders() -> ResponseMessage: await app.enable_all_task_recorders() return ResponseMessage(message='All task recorders have been enabled') @@ -246,9 +202,7 @@ async def disable_all_task_recorders( ) -> ResponseMessage: if background: background_tasks.add_task(app.disable_all_task_recorders, force) - return ResponseMessage( - message='Disabling all task recorders on the background' - ) + return ResponseMessage(message='Disabling all task recorders on the background') await app.disable_all_task_recorders(force) return ResponseMessage(message='All task recorders have been disabled') @@ -271,9 +225,7 @@ async def disable_task_recorder( if background: background_tasks.add_task(app.disable_task_recorder, room_id, force) - return ResponseMessage( - message='Disabling the task recorder on the background' - ) + return ResponseMessage(message='Disabling the task recorder on the background') await app.disable_task_recorder(room_id, force) return ResponseMessage(message='The task recorder has been disabled') @@ -283,9 +235,7 @@ async def disable_task_recorder( '/{room_id}', response_model=ResponseMessage, status_code=status.HTTP_201_CREATED, - responses={ - **created_responses, **confict_responses, **forbidden_responses - }, + responses={**created_responses, **confict_responses, **forbidden_responses}, ) async def add_task(room_id: int) -> ResponseMessage: """Add a task for a room. @@ -298,24 +248,18 @@ async def add_task(room_id: int) -> ResponseMessage: """ real_room_id = await app.add_task(room_id) return ResponseMessage( - message='Successfully Added Task', - data={'room_id': real_room_id}, + message='Successfully Added Task', data={'room_id': real_room_id} ) -@router.delete( - '', - response_model=ResponseMessage, -) +@router.delete('', response_model=ResponseMessage) async def remove_all_tasks() -> ResponseMessage: await app.remove_all_tasks() return ResponseMessage(message='All tasks have been removed') @router.delete( - '/{room_id}', - response_model=ResponseMessage, - responses={**not_found_responses}, + '/{room_id}', response_model=ResponseMessage, responses={**not_found_responses} ) async def remove_task(room_id: int) -> ResponseMessage: await app.remove_task(room_id) diff --git a/webapp/src/app/settings/recorder-settings/recorder-settings.component.html b/webapp/src/app/settings/recorder-settings/recorder-settings.component.html index 17818c0..da80b69 100644 --- a/webapp/src/app/settings/recorder-settings/recorder-settings.component.html +++ b/webapp/src/app/settings/recorder-settings/recorder-settings.component.html @@ -74,38 +74,6 @@ </nz-select> </nz-form-control> </nz-form-item> - <nz-form-item - class="setting-item" - *ngIf="streamFormatControl.value === 'fmp4'" - > - <nz-form-label - class="setting-label" - nzNoColon - [nzTooltipTitle]="recordingModeTip" - >录制模式</nz-form-label - > - <ng-template #recordingModeTip> - <p> - 标准模式: 对下载的流数据进行解析处理,支持自动分割文件等功能。 - <br /> - 原始模式: 直接下载流数据,没有进行解析处理,不支持自动分割文件等功能。 - <br /> - </p> - </ng-template> - <nz-form-control - class="setting-control select" - [nzWarningTip]="syncFailedWarningTip" - [nzValidateStatus]=" - syncStatus.recordingMode ? recordingModeControl : 'warning' - " - > - <nz-select - formControlName="recordingMode" - [nzOptions]="recordingModeOptions" - > - </nz-select> - </nz-form-control> - </nz-form-item> <nz-form-item class="setting-item"> <nz-form-label class="setting-label" @@ -224,11 +192,7 @@ </nz-form-item> <nz-form-item class="setting-item" - *ngIf=" - streamFormatControl.value === 'flv' || - (streamFormatControl.value === 'fmp4' && - recordingModeControl.value === 'standard') - " + *ngIf="streamFormatControl.value === 'flv'" > <nz-form-label class="setting-label" diff --git a/webapp/src/app/settings/shared/setting.model.ts b/webapp/src/app/settings/shared/setting.model.ts index dc1781f..1dfb616 100644 --- a/webapp/src/app/settings/shared/setting.model.ts +++ b/webapp/src/app/settings/shared/setting.model.ts @@ -214,7 +214,6 @@ export type PushplusMessageType = export type TelegramMessageType = MarkdownMessageType | HtmlMessageType; export type BarkMessageType = TextMessageType; - export interface MessageTemplateSettings { beganMessageType: string; beganMessageTitle: string; diff --git a/webapp/src/app/shared/pipes/filestatus.pipe.ts b/webapp/src/app/shared/pipes/filestatus.pipe.ts index 37e9461..53a0ca4 100644 --- a/webapp/src/app/shared/pipes/filestatus.pipe.ts +++ b/webapp/src/app/shared/pipes/filestatus.pipe.ts @@ -11,7 +11,7 @@ const STATUS_MAPPING = new Map([ [VideoFileStatus.REMUXING, '处理中'], [VideoFileStatus.COMPLETED, '已完成'], [VideoFileStatus.MISSING, '不存在'], - [VideoFileStatus.BROKEN, '录制中断'], + [VideoFileStatus.UNKNOWN, '???'], ]); @Pipe({ diff --git a/webapp/src/app/tasks/shared/task.model.ts b/webapp/src/app/tasks/shared/task.model.ts index d55161d..877f25b 100644 --- a/webapp/src/app/tasks/shared/task.model.ts +++ b/webapp/src/app/tasks/shared/task.model.ts @@ -296,14 +296,14 @@ export enum VideoFileStatus { INJECTING = 'injecting', COMPLETED = 'completed', MISSING = 'missing', - BROKEN = 'broken', + UNKNOWN = 'unknown', } export enum DanmakuFileStatus { RECORDING = 'recording', COMPLETED = 'completed', MISSING = 'missing', - BROKEN = 'broken', + UNKNOWN = 'unknown', } export interface VideoFileDetail { diff --git a/webapp/src/app/tasks/task-settings-dialog/task-settings-dialog.component.html b/webapp/src/app/tasks/task-settings-dialog/task-settings-dialog.component.html index c566292..8813b69 100644 --- a/webapp/src/app/tasks/task-settings-dialog/task-settings-dialog.component.html +++ b/webapp/src/app/tasks/task-settings-dialog/task-settings-dialog.component.html @@ -52,17 +52,7 @@ >覆盖全局设置</label > </nz-form-item> - <nz-form-item - class="setting-item filesize-limit" - *ngIf=" - (options.recorder.streamFormat || model.recorder.streamFormat) === - 'flv' || - ((options.recorder.streamFormat || model.recorder.streamFormat) === - 'fmp4' && - (options.recorder.recordingMode || - model.recorder.recordingMode) === 'standard') - " - > + <nz-form-item class="setting-item filesize-limit"> <nz-form-label class="setting-label" nzNoColon @@ -97,17 +87,7 @@ >覆盖全局设置</label > </nz-form-item> - <nz-form-item - class="setting-item duration-limit" - *ngIf=" - (options.recorder.streamFormat || model.recorder.streamFormat) === - 'flv' || - ((options.recorder.streamFormat || model.recorder.streamFormat) === - 'fmp4' && - (options.recorder.recordingMode || - model.recorder.recordingMode) === 'standard') - " - > + <nz-form-item class="setting-item duration-limit"> <nz-form-label class="setting-label" nzNoColon @@ -237,48 +217,6 @@ >覆盖全局设置</label > </nz-form-item> - <nz-form-item - class="setting-item" - *ngIf=" - (options.recorder.streamFormat || model.recorder.streamFormat) === - 'fmp4' - " - > - <nz-form-label - class="setting-label" - nzNoColon - [nzTooltipTitle]="recordingModeTip" - >录制模式</nz-form-label - > - <ng-template #recordingModeTip> - <p> - 标准模式: 对下载的流数据进行解析处理,支持自动分割文件等功能。 - <br /> - 原始模式: - 直接下载流数据,没有进行解析处理,不支持自动分割文件等功能。 - <br /> - </p> - </ng-template> - <nz-form-control class="setting-control select"> - <nz-select - name="recordingMode" - [(ngModel)]="model.recorder.recordingMode" - [disabled]="options.recorder.recordingMode === null" - [nzOptions]="recordingModeOptions" - > - </nz-select> - </nz-form-control> - <label - nz-checkbox - [nzChecked]="options.recorder.recordingMode !== null" - (nzCheckedChange)=" - options.recorder.recordingMode = $event - ? globalSettings.recorder.recordingMode - : null - " - >覆盖全局设置</label - > - </nz-form-item> <nz-form-item class="setting-item"> <nz-form-label class="setting-label" @@ -440,11 +378,7 @@ class="setting-item" *ngIf=" (options.recorder.streamFormat || model.recorder.streamFormat) === - 'flv' || - ((options.recorder.streamFormat || model.recorder.streamFormat) === - 'fmp4' && - (options.recorder.recordingMode || - model.recorder.recordingMode) === 'standard') + 'flv' " > <nz-form-label @@ -644,17 +578,7 @@ <div ngModelGroup="postprocessing" class="form-group postprocessing"> <h2>文件处理</h2> - <nz-form-item - class="setting-item" - *ngIf=" - (options.recorder.streamFormat || model.recorder.streamFormat) === - 'flv' || - ((options.recorder.streamFormat || model.recorder.streamFormat) === - 'fmp4' && - (options.recorder.recordingMode || - model.recorder.recordingMode) === 'standard') - " - > + <nz-form-item class="setting-item"> <nz-form-label class="setting-label" nzNoColon