From d5dfeb710209494f03e06da3b2922ca6436d0bef Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 17 Aug 2026 18:21:47 +0800 Subject: [PATCH] feat(widgets): complete phase 3 atomic integration --- .specs/plans/aksrt-widgets-rewrite.md | 8 +- assets/css/frontend/widget-batch3.css | 277 -- assets/css/frontend/widget-batch3c.css | 48 - assets/css/frontend/widget-batch3d.css | 29 - assets/css/frontend/widget-batch3e.css | 78 - assets/css/frontend/widget-batch3f.css | 278 -- assets/css/frontend/widget-batch5.css | 2296 ----------------- assets/css/frontend/widget-slider.css | 93 - assets/css/frontend/widgets.css | 11 - assets/css/frontend/widgets/part-1.css | 299 --- assets/css/frontend/widgets/part-2.css | 312 --- assets/css/frontend/widgets/part-3.css | 332 --- assets/css/frontend/widgets/part-4.css | 95 - assets/js/widget-set.js | 337 --- assets/widgets/admin.css | 33 + assets/widgets/admin.js | 43 +- assets/widgets/third-party/DPlayer.min.js | 2 + assets/widgets/third-party/THIRD_PARTY.md | 15 + assets/widgets/third-party/dash.all.min.js | 4 + assets/widgets/third-party/flv.min.js | 7 + assets/widgets/third-party/hls.min.js | 3 + .../widgets/third-party/vanilla-tilt.min.js | 1 + footer.php | 14 +- functions.php | 5 +- header.php | 2 + inc/bootstrap.php | 1 - inc/helpers/aksrt-single-aside.php | 6 +- inc/helpers/aksrt-single.php | 2 +- inc/helpers/aksrt-template-tags.php | 4 +- inc/helpers/homepage/layout.php | 4 +- inc/modules/widget-areas.php | 148 -- inc/modules/widget-common.php | 29 - inc/modules/widgets-register.php | 144 -- single.php | 3 +- src/Admin/ImportExportController.php | 43 - src/Admin/ImportExportControllerPart1.php | 171 -- src/Core/ScriptsPart1b.php | 11 +- src/Core/ScriptsPart1c.php | 15 +- src/Core/Setup.php | 2 - src/Core/SetupPart1.php | 424 --- src/Core/WidgetAjax.php | 351 --- src/WidgetSystem/AdminFormController.php | 5 +- src/WidgetSystem/AssetManager.php | 26 +- src/WidgetSystem/Runtime.php | 68 + src/WidgetSystem/SchemaWidget.php | 3 + src/WidgetSystem/TransferController.php | 153 ++ src/WidgetSystem/WidgetAreas.php | 146 ++ src/WidgetSystem/WidgetTransfer.php | 214 ++ src/Widgets/ButtonsWidget.php | 245 -- src/Widgets/CategoriesWidget.php | 263 -- src/Widgets/CategoryBlockWidget.php | 518 ---- src/Widgets/CategoryRecommendWidget.php | 264 -- src/Widgets/CategoryTabsWidget.php | 203 -- src/Widgets/CommonWidgetFields.php | 11 - src/Widgets/FaqWidget.php | 3 - src/Widgets/HighlightsWidget.php | 3 - src/Widgets/HotPostsWidget.php | 276 -- src/Widgets/IconCardsWidget.php | 206 -- src/Widgets/MarketingBlocksWidget.php | 18 - src/Widgets/NoticeWidget.php | 206 -- src/Widgets/PartnersWidget.php | 3 - src/Widgets/PricingPlansWidget.php | 3 - src/Widgets/RecentCommentsWidget.php | 214 -- src/Widgets/SearchWidget.php | 176 -- src/Widgets/StatsWidget.php | 3 - src/Widgets/TabPostsWidget.php | 391 --- src/Widgets/TagCloudWidget.php | 192 -- src/Widgets/TestimonialsWidget.php | 3 - src/Widgets/WidgetAnnouncement.php | 175 -- src/Widgets/WidgetAuthorCard.php | 117 - src/Widgets/WidgetComboInfo.php | 253 -- src/Widgets/WidgetCoverCards.php | 227 -- src/Widgets/WidgetIconCoverCards.php | 207 -- src/Widgets/WidgetIframe.php | 157 -- src/Widgets/WidgetMainPosts.php | 459 ---- src/Widgets/WidgetOnelinePosts.php | 287 --- src/Widgets/WidgetPostPayBox.php | 186 -- src/Widgets/WidgetSlider.php | 292 --- src/Widgets/WidgetTermAggregation.php | 354 --- src/Widgets/WidgetTermCards.php | 304 --- src/Widgets/WidgetTextTitle.php | 166 -- src/Widgets/WidgetUserCard.php | 324 --- src/Widgets/WidgetVideoPlayer.php | 150 -- src/Widgets/WidgetYiyan.php | 167 -- templates/pages/page-messages.php | 3 + templates/pages/page-profile.php | 4 + templates/pages/page-submit.php | 2 + templates/pages/page-user-home.php | 4 + tools/audit-widget-system.php | 95 +- 89 files changed, 843 insertions(+), 12886 deletions(-) delete mode 100644 assets/css/frontend/widget-batch3.css delete mode 100644 assets/css/frontend/widget-batch3c.css delete mode 100644 assets/css/frontend/widget-batch3d.css delete mode 100644 assets/css/frontend/widget-batch3e.css delete mode 100644 assets/css/frontend/widget-batch3f.css delete mode 100644 assets/css/frontend/widget-batch5.css delete mode 100644 assets/css/frontend/widget-slider.css delete mode 100644 assets/css/frontend/widgets.css delete mode 100644 assets/css/frontend/widgets/part-1.css delete mode 100644 assets/css/frontend/widgets/part-2.css delete mode 100644 assets/css/frontend/widgets/part-3.css delete mode 100644 assets/css/frontend/widgets/part-4.css delete mode 100644 assets/js/widget-set.js create mode 100644 assets/widgets/third-party/DPlayer.min.js create mode 100644 assets/widgets/third-party/THIRD_PARTY.md create mode 100644 assets/widgets/third-party/dash.all.min.js create mode 100644 assets/widgets/third-party/flv.min.js create mode 100644 assets/widgets/third-party/hls.min.js create mode 100644 assets/widgets/third-party/vanilla-tilt.min.js delete mode 100644 inc/modules/widget-areas.php delete mode 100644 inc/modules/widget-common.php delete mode 100644 inc/modules/widgets-register.php delete mode 100644 src/Core/SetupPart1.php delete mode 100644 src/Core/WidgetAjax.php create mode 100644 src/WidgetSystem/Runtime.php create mode 100644 src/WidgetSystem/TransferController.php create mode 100644 src/WidgetSystem/WidgetAreas.php create mode 100644 src/WidgetSystem/WidgetTransfer.php delete mode 100644 src/Widgets/ButtonsWidget.php delete mode 100644 src/Widgets/CategoriesWidget.php delete mode 100644 src/Widgets/CategoryBlockWidget.php delete mode 100644 src/Widgets/CategoryRecommendWidget.php delete mode 100644 src/Widgets/CategoryTabsWidget.php delete mode 100644 src/Widgets/CommonWidgetFields.php delete mode 100644 src/Widgets/FaqWidget.php delete mode 100644 src/Widgets/HighlightsWidget.php delete mode 100644 src/Widgets/HotPostsWidget.php delete mode 100644 src/Widgets/IconCardsWidget.php delete mode 100644 src/Widgets/MarketingBlocksWidget.php delete mode 100644 src/Widgets/NoticeWidget.php delete mode 100644 src/Widgets/PartnersWidget.php delete mode 100644 src/Widgets/PricingPlansWidget.php delete mode 100644 src/Widgets/RecentCommentsWidget.php delete mode 100644 src/Widgets/SearchWidget.php delete mode 100644 src/Widgets/StatsWidget.php delete mode 100644 src/Widgets/TabPostsWidget.php delete mode 100644 src/Widgets/TagCloudWidget.php delete mode 100644 src/Widgets/TestimonialsWidget.php delete mode 100644 src/Widgets/WidgetAnnouncement.php delete mode 100644 src/Widgets/WidgetAuthorCard.php delete mode 100644 src/Widgets/WidgetComboInfo.php delete mode 100644 src/Widgets/WidgetCoverCards.php delete mode 100644 src/Widgets/WidgetIconCoverCards.php delete mode 100644 src/Widgets/WidgetIframe.php delete mode 100644 src/Widgets/WidgetMainPosts.php delete mode 100644 src/Widgets/WidgetOnelinePosts.php delete mode 100644 src/Widgets/WidgetPostPayBox.php delete mode 100644 src/Widgets/WidgetSlider.php delete mode 100644 src/Widgets/WidgetTermAggregation.php delete mode 100644 src/Widgets/WidgetTermCards.php delete mode 100644 src/Widgets/WidgetTextTitle.php delete mode 100644 src/Widgets/WidgetUserCard.php delete mode 100644 src/Widgets/WidgetVideoPlayer.php delete mode 100644 src/Widgets/WidgetYiyan.php diff --git a/.specs/plans/aksrt-widgets-rewrite.md b/.specs/plans/aksrt-widgets-rewrite.md index d2597196..7c323a9a 100644 --- a/.specs/plans/aksrt-widgets-rewrite.md +++ b/.specs/plans/aksrt-widgets-rewrite.md @@ -27,10 +27,10 @@ ## Phase 3 — 原子切换、挂载区域与导入导出 -- [ ] 替换注册器并删除旧小工具类、旧公共层、旧路由和重复资源。 -- [ ] 重写 40 个静态挂载区域、动态页面区域及所有模板消费点。 -- [ ] 实现 `aksrt.widgets.v1` 导入导出和 5 套知识付费模板。 -- [ ] 核对默认 WordPress 小工具注销策略与区块编辑器/自定义器行为。 +- [x] 替换注册器并删除旧小工具类、旧公共层、旧路由和重复资源。 +- [x] 重写 40 个静态挂载区域、动态页面区域及所有模板消费点。 +- [x] 实现 `aksrt.widgets.v1` 导入导出和 5 套知识付费模板。 +- [x] 核对默认 WordPress 小工具注销策略与区块编辑器/自定义器行为。 ## Phase 4 — 自动化与视觉终验 diff --git a/assets/css/frontend/widget-batch3.css b/assets/css/frontend/widget-batch3.css deleted file mode 100644 index ee42ba19..00000000 --- a/assets/css/frontend/widget-batch3.css +++ /dev/null @@ -1,277 +0,0 @@ -/** - * Batch3 widgets: iframe, combo info, text title, and user lists. - * @package AKSRT - */ - -/* ---- Iframe embed ---- */ -.aksrt-iframe-embed { - margin-bottom: 16px; -} -.aksrt-iframe-ratio { - position: relative; - width: 100%; - height: 0; - border-radius: 8px; - overflow: hidden; - background: var(--surface-2, #f3f4f6); -} -.aksrt-iframe-ratio iframe, -.aksrt-iframe-el { - position: absolute; - inset: 0; - width: 100%; - height: 100%; - border: 0; -} - -/* ---- Combo info cards ---- */ -.aksrt-combo-info { - display: grid; - grid-template-columns: repeat(var(--aksrt-zci-pc, 4), minmax(0, 1fr)); - gap: 14px; - margin-bottom: 16px; - --aksrt-zci-radius: 12px; - --aksrt-zci-band-h: 70px; -} -@media (max-width: 991.98px) { - .aksrt-combo-info { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } -} -@media (max-width: 575.98px) { - .aksrt-combo-info { - grid-template-columns: repeat(var(--aksrt-zci-m, 1), minmax(0, 1fr)); - } -} -.aksrt-zci-card { - position: relative; - display: flex; - flex-direction: column; - border-radius: var(--aksrt-zci-radius); - background: var(--surface-1, #fff); - border: 1px solid var(--color-line, #e5e7eb); - padding: 18px 16px 16px; - overflow: hidden; - min-height: 100%; -} -.aksrt-combo-info.has-band .aksrt-zci-card::before { - content: ""; - position: absolute; - left: 0; - right: 0; - top: 0; - height: 4px; - background: var(--color-primary, #3b82f6); -} -.aksrt-zci-band-blue::before { background: #3b82f6; } -.aksrt-zci-band-cyan::before { background: #06b6d4; } -.aksrt-zci-band-green::before { background: #22c55e; } -.aksrt-zci-band-yellow::before { background: #eab308; } -.aksrt-zci-band-pink::before { background: #ec4899; } -.aksrt-zci-band-purple::before { background: #a855f7; } -.aksrt-zci-icon { - width: 48px; - height: 48px; - margin-bottom: 14px; - display: flex; - align-items: center; - justify-content: center; - font-size: 28px; - color: var(--color-primary, #3b82f6); -} -.aksrt-zci-icon img { - max-width: 48px; - max-height: 48px; - object-fit: contain; -} -.aksrt-zci-title { - font-weight: 700; - font-size: 16px; - margin-bottom: 8px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.aksrt-zci-tags { - display: flex; - flex-wrap: wrap; - gap: 6px; - margin-bottom: 8px; -} -.aksrt-zci-tag { - display: inline-block; - font-size: 12px; - padding: 2px 10px; - border-radius: 999px; - background: var(--surface-2, #f3f4f6); - color: var(--color-ink-3, #666); -} -.aksrt-zci-desc { - font-size: 13px; - color: var(--muted-2-color, #888); - line-height: 1.5; - display: -webkit-box; - -webkit-line-clamp: 3; - -webkit-box-orient: vertical; - overflow: hidden; - flex: 1; -} -.aksrt-zci-cta { - margin-top: 14px; - display: inline-flex; - align-items: center; - gap: 6px; - font-size: 13px; - font-weight: 600; - color: var(--color-primary, #3b82f6); - text-decoration: none; -} -.aksrt-zci-cta:hover i { - transform: translateX(3px); -} -.aksrt-zci-cta i { - transition: transform .2s ease; - font-size: 12px; -} - -/* ---- Text title ---- */ -.aksrt-text-title { - margin: 8px 0 18px; - --aksrt-tt-title-size: 22px; - --aksrt-tt-desc-size: 14px; -} -.aksrt-text-title.align-center { text-align: center; } -.aksrt-text-title.align-left { text-align: left; } -.aksrt-text-title.align-right { text-align: right; } -.aksrt-text-title__main { - display: inline-flex; - align-items: center; - gap: 8px; - font-size: var(--aksrt-tt-title-size); - font-weight: 700; - color: var(--aksrt-tt-title-color, inherit); - line-height: 1.3; -} -.aksrt-text-title.align-center .aksrt-text-title__main { - justify-content: center; -} -.aksrt-text-title__desc { - margin-top: 8px; - font-size: var(--aksrt-tt-desc-size); - color: var(--aksrt-tt-desc-color, var(--muted-2-color, #888)); - line-height: 1.5; -} -.aksrt-text-title__icon { - display: inline-flex; - opacity: .85; -} - -/* ---- User lists ---- */ -.aksrt-user-lists { - display: grid; - grid-template-columns: repeat(4, minmax(0, 1fr)); - gap: 12px 8px; - text-align: center; - padding: 4px 0 8px; -} -.aksrt-user-lists.is-bare { - padding: 0; -} -@media (max-width: 575.98px) { - .aksrt-user-lists { - grid-template-columns: repeat(3, minmax(0, 1fr)); - } -} -.aksrt-user-lists__item { - display: flex; - flex-direction: column; - align-items: center; - gap: 6px; - text-decoration: none; - color: inherit; - min-width: 0; -} -.aksrt-user-lists__avatar { - width: 48px; - height: 48px; - border-radius: 50%; - object-fit: cover; - background: var(--surface-2, #eee); -} -.aksrt-user-lists__name { - font-size: 12px; - max-width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -/* ---- FAQ ---- */ -.aksrt-faq { margin-bottom: 16px; } -.aksrt-faq__search { display: flex; gap: 8px; margin-bottom: 14px; } -.aksrt-faq__search-input { - flex: 1; - border: 1px solid var(--color-line, #e5e7eb); - border-radius: 8px; - padding: 8px 12px; -} -.aksrt-faq__search-btn { - border: 0; - border-radius: 8px; - padding: 8px 14px; - background: var(--color-primary, #3b82f6); - color: #fff; - cursor: pointer; -} -.aksrt-faq__item { - border: 1px solid var(--color-line, #e5e7eb); - border-radius: 10px; - padding: 0; - margin-bottom: 10px; - background: var(--surface-1, #fff); -} -.aksrt-faq__q { - list-style: none; - display: flex; - align-items: center; - gap: 10px; - padding: 12px 14px; - cursor: pointer; - font-weight: 600; -} -.aksrt-faq__q::-webkit-details-marker { display: none; } -.aksrt-faq__num { - width: 28px; - height: 28px; - border-radius: 8px; - display: inline-flex; - align-items: center; - justify-content: center; - font-size: 12px; - background: var(--surface-2, #f3f4f6); - color: var(--color-primary, #3b82f6); - flex-shrink: 0; -} -.aksrt-faq__a { - padding: 0 14px 14px 52px; - font-size: 13px; - color: var(--muted-2-color, #666); - line-height: 1.6; -} -.aksrt-faq__aside { display: grid; gap: 12px; margin-top: 14px; } -.aksrt-faq__doc, .aksrt-faq__help { - border-radius: 10px; - border: 1px solid var(--color-line, #e5e7eb); - padding: 14px; - background: var(--surface-2, #f8fafc); -} -.aksrt-faq__help-btn { - display: inline-block; - margin-top: 8px; - padding: 6px 12px; - border-radius: 999px; - background: var(--color-primary, #3b82f6); - color: #fff !important; - text-decoration: none; - font-size: 13px; -} diff --git a/assets/css/frontend/widget-batch3c.css b/assets/css/frontend/widget-batch3c.css deleted file mode 100644 index c9c0475a..00000000 --- a/assets/css/frontend/widget-batch3c.css +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Batch3c: highlights. - */ - -.aksrt-highlights { margin-bottom: 16px; display: flex; flex-direction: column; gap: 12px; } -.aksrt-highlights__row { - display: grid; - gap: 12px; -} -.aksrt-highlights__row.is-large { grid-template-columns: 1fr; } -.aksrt-highlights__row.is-medium { grid-template-columns: repeat(2, minmax(0, 1fr)); } -.aksrt-highlights__row.is-small { grid-template-columns: repeat(3, minmax(0, 1fr)); } -@media (max-width: 767.98px) { - .aksrt-highlights__row.is-medium, - .aksrt-highlights__row.is-small { grid-template-columns: 1fr; } -} -.aksrt-hl-card { - display: flex; - gap: 12px; - border-radius: 12px; - border: 1px solid var(--color-line, #e5e7eb); - background: var(--surface-1, #fff); - padding: 14px; - text-decoration: none; - color: inherit; - overflow: hidden; - min-height: 100%; -} -.aksrt-hl-card.color-blue { --hl: #3b82f6; } -.aksrt-hl-card.color-pink { --hl: #ec4899; } -.aksrt-hl-card.color-purple { --hl: #a855f7; } -.aksrt-hl-card.color-green { --hl: #22c55e; } -.aksrt-hl-card.color-orange { --hl: #f97316; } -.aksrt-hl-card.color-cyan { --hl: #06b6d4; } -.aksrt-hl-card.size-large { min-height: 140px; } -.aksrt-hl-card__media { - width: 96px; - flex-shrink: 0; - border-radius: 10px; - overflow: hidden; - background: var(--surface-2, #f3f4f6); -} -.aksrt-hl-card.size-large .aksrt-hl-card__media { width: 160px; } -.aksrt-hl-card__media img { width: 100%; height: 100%; object-fit: cover; display: block; min-height: 80px; } -.aksrt-hl-card__body { min-width: 0; flex: 1; display: flex; flex-direction: column; } -.aksrt-hl-card__icon { color: var(--hl, #3b82f6); font-size: 22px; margin-bottom: 8px; } -.aksrt-hl-card__title { font-weight: 700; font-size: 15px; margin-bottom: 4px; } -.aksrt-hl-card__desc { font-size: 12px; color: var(--muted-2-color, #888); line-height: 1.5; } diff --git a/assets/css/frontend/widget-batch3d.css b/assets/css/frontend/widget-batch3d.css deleted file mode 100644 index 203b8859..00000000 --- a/assets/css/frontend/widget-batch3d.css +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Batch3d: term cards. - */ - -.aksrt-term-cards { - display: grid; - grid-template-columns: repeat(var(--aksrt-tc-cols, 2), minmax(0, 1fr)); - gap: 12px; - margin-bottom: 12px; -} -.aksrt-term-card { - display: block; - border-radius: 12px; - overflow: hidden; - border: 1px solid var(--color-line, #e5e7eb); - text-decoration: none; - color: inherit; - background: var(--surface-1, #fff); -} -.aksrt-term-card__cover { - height: 88px; - background: var(--surface-2, #f3f4f6) center/cover no-repeat; -} -.aksrt-term-card__cover.is-empty { - background: linear-gradient(135deg, #dbeafe, #eff6ff); -} -.aksrt-term-card__body { padding: 10px 12px 12px; } -.aksrt-term-card__name { font-weight: 700; font-size: 14px; } -.aksrt-term-card__count { font-size: 12px; color: var(--muted-2-color, #888); margin-top: 2px; } diff --git a/assets/css/frontend/widget-batch3e.css b/assets/css/frontend/widget-batch3e.css deleted file mode 100644 index 05a04663..00000000 --- a/assets/css/frontend/widget-batch3e.css +++ /dev/null @@ -1,78 +0,0 @@ -/** - * Batch3e: author card. - */ - -.aksrt-author-card { - border-radius: 12px; - overflow: hidden; - border: 1px solid var(--color-line, #e5e7eb); - background: var(--surface-1, #fff); - margin-bottom: 0; - text-align: center; -} -.aksrt-author-card__cover { - height: 139px; - min-height: 139px; - max-height: 139px; - background: linear-gradient(135deg, #93c5fd, #c4b5fd) center/cover no-repeat; -} -.aksrt-author-card__body { - display: flex; - flex-direction: column; - align-items: center; - padding: 0 14px 16px; -} -.aksrt-author-card__body .user-content { - display: flex; - flex-direction: column; - align-items: center; - width: 100%; -} -.aksrt-author-card__avatar { - display: flex; - flex: 0 0 auto; - margin: -38px auto 0; - border-radius: 50%; - overflow: hidden; - border: 3px solid var(--surface-1, #fff); - width: 76px; - height: 76px; -} -.aksrt-author-card__avatar img { width: 100%; height: 100%; object-fit: cover; display: block; } -.aksrt-author-card__name { - display: block; - margin-top: 8px; - font-weight: 700; - font-size: 16px; - color: inherit; - text-decoration: none; -} -.aksrt-author-card__bio { - margin-top: 6px; - font-size: 12px; - color: var(--muted-2-color, #888); - line-height: 1.5; -} -.aksrt-author-card__stats { - display: flex; - justify-content: center; - gap: 16px; - margin-top: 12px; - font-size: 12px; - color: var(--muted-2-color, #888); -} -.aksrt-author-card__stats b { - display: block; - font-size: 16px; - color: var(--color-ink, #111); -} -.aksrt-author-card__btn { - display: inline-block; - margin-top: 12px; - padding: 6px 16px; - border-radius: 999px; - background: var(--color-primary, #3b82f6); - color: #fff !important; - text-decoration: none; - font-size: 13px; -} diff --git a/assets/css/frontend/widget-batch3f.css b/assets/css/frontend/widget-batch3f.css deleted file mode 100644 index 9609e788..00000000 --- a/assets/css/frontend/widget-batch3f.css +++ /dev/null @@ -1,278 +0,0 @@ -/** - * Batch3f: oneline posts + tilt cases. - */ - -.aksrt-oneline { margin-bottom: 12px; } -.aksrt-oneline__track { - display: grid; - grid-auto-flow: column; - grid-auto-columns: minmax(180px, 220px); - gap: 12px; - overflow-x: auto; - scroll-snap-type: x mandatory; - padding-bottom: 6px; - -webkit-overflow-scrolling: touch; -} -.aksrt-oneline.style-mini .aksrt-oneline__track { - grid-auto-columns: minmax(140px, 160px); -} -.aksrt-oneline__item { - display: flex; - flex-direction: column; - border-radius: 12px; - overflow: hidden; - border: 1px solid var(--color-line, #e5e7eb); - background: var(--surface-1, #fff); - text-decoration: none; - color: inherit; - scroll-snap-align: start; - min-width: 0; -} -.aksrt-oneline.style-list .aksrt-oneline__item { - flex-direction: row; - align-items: center; - gap: 10px; - padding: 8px; -} -.aksrt-oneline__thumb { - height: 110px; - background: var(--surface-2, #f3f4f6) center/cover no-repeat; - overflow: hidden; -} -.aksrt-oneline.style-mini .aksrt-oneline__thumb { height: 90px; } -.aksrt-oneline.style-list .aksrt-oneline__thumb { - width: 64px; - height: 64px; - border-radius: 8px; - flex-shrink: 0; -} -.aksrt-oneline__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; } -.aksrt-oneline__thumb.is-empty { background: linear-gradient(135deg, #e2e8f0, #f8fafc); } -.aksrt-oneline__body { padding: 10px 12px 12px; min-width: 0; } -.aksrt-oneline.style-list .aksrt-oneline__body { padding: 0; } -.aksrt-oneline__title { - font-size: 13px; - font-weight: 600; - line-height: 1.4; - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - overflow: hidden; -} -.aksrt-oneline__meta { margin-top: 4px; font-size: 11px; color: var(--muted-2-color, #999); } - -.aksrt-tilt { - display: grid; - grid-template-columns: 1fr 1.1fr; - gap: 28px; - align-items: center; - margin-bottom: 18px; -} -@media (max-width: 991.98px) { - .aksrt-tilt { grid-template-columns: 1fr; } -} -.aksrt-tilt__badge { - display: inline-flex; - align-items: center; - gap: 6px; - font-size: 12px; - padding: 4px 10px; - border-radius: 999px; - background: #eff6ff; - color: #2563eb; - margin-bottom: 12px; -} -.aksrt-tilt__title { - font-size: 30px; - line-height: 1.25; - margin: 0 0 12px; -} -.aksrt-tilt__hl { - font-style: normal; - background: linear-gradient(90deg, #3b82f6, #a855f7); - -webkit-background-clip: text; - background-clip: text; - color: transparent; -} -.aksrt-tilt__subtitle { - font-size: 14px; - color: var(--muted-2-color, #666); - line-height: 1.7; - margin: 0 0 14px; -} -.aksrt-tilt__features { - list-style: none; - margin: 0 0 16px; - padding: 0; - display: flex; - flex-wrap: wrap; - gap: 8px 14px; - font-size: 13px; -} -.aksrt-tilt__features i { color: var(--color-primary, #3b82f6); margin-right: 4px; } -.aksrt-tilt__actions { display: flex; flex-wrap: wrap; gap: 10px; } -.aksrt-tilt__btn { - display: inline-flex; - align-items: center; - padding: 8px 16px; - border-radius: 999px; - background: var(--color-primary, #3b82f6); - color: #fff !important; - text-decoration: none; - font-size: 13px; - font-weight: 600; -} -.aksrt-tilt__showcase { - position: relative; - min-height: 260px; -} -.aksrt-tilt__img { - position: absolute; - border-radius: 14px; - overflow: hidden; - box-shadow: 0 16px 40px rgba(0,0,0,.12); - background: var(--surface-2, #f3f4f6); -} -.aksrt-tilt__img.is-main { - position: relative; - width: 100%; - aspect-ratio: 4/3; -} -.aksrt-tilt__img:not(.is-main) { - width: 42%; - aspect-ratio: 4/3; - right: -4%; - bottom: -8%; - z-index: 2; -} -.aksrt-tilt__img:nth-child(3) { - left: -4%; - top: -6%; - right: auto; - bottom: auto; - width: 38%; - z-index: 1; -} -.aksrt-tilt__img img { width: 100%; height: 100%; object-fit: cover; display: block; } -.aksrt-tilt__img.is-empty { background: linear-gradient(135deg, #dbeafe, #ede9fe); } - - -/* Check-in details modal */ -.aksrt-checkin-modal { padding: 4px 2px 8px; } -.aksrt-checkin-modal__head { - display: flex; - align-items: center; - gap: 8px; - font-size: 16px; - margin-bottom: 14px; -} -.aksrt-checkin-modal__head .aksrt-modal-runtime__close { - margin-left: auto; - border: 0; - background: transparent; - font-size: 22px; - line-height: 1; - cursor: pointer; - opacity: .55; -} -.aksrt-checkin-modal__user { - display: flex; - align-items: center; - gap: 10px; - margin-bottom: 12px; -} -.aksrt-checkin-modal__avatar { - width: 40px; - height: 40px; - border-radius: 50%; - object-fit: cover; -} -.aksrt-checkin-modal__name { font-weight: 700; } -.aksrt-checkin-modal__sub { font-size: 12px; color: var(--muted-2-color, #888); } -.aksrt-checkin-modal__wallet { margin-bottom: 12px; } -.aksrt-checkin-modal__wallet-item { - display: flex; - justify-content: space-between; - align-items: center; - padding: 10px 12px; - border-radius: 10px; - background: var(--surface-2, #f3f4f6); - text-decoration: none; - color: inherit; -} -.aksrt-checkin-modal__card { - display: flex; - align-items: center; - justify-content: space-between; - gap: 12px; - padding: 12px; - border-radius: 12px; - border: 1px solid var(--color-line, #e5e7eb); - margin-bottom: 14px; -} -.aksrt-checkin-modal__card-title { font-size: 13px; margin-bottom: 6px; } -.aksrt-checkin-modal__badge { - display: inline-block; - font-size: 12px; - padding: 2px 8px; - border-radius: 999px; - background: #ecfdf5; - color: #059669; -} -.aksrt-checkin-modal__done { text-align: right; color: #2563eb; font-size: 13px; } -.aksrt-checkin-modal__btn { white-space: nowrap; } -.aksrt-checkin-modal__streak-head { - display: flex; - justify-content: space-between; - align-items: center; - font-size: 13px; - margin-bottom: 8px; -} -.aksrt-checkin-modal__ladder { - display: grid; - grid-template-columns: repeat(7, minmax(0, 1fr)); - gap: 6px; - margin-bottom: 14px; -} -.aksrt-checkin-modal__day { - text-align: center; - border-radius: 8px; - padding: 8px 2px; - background: var(--surface-2, #f8fafc); - border: 1px solid transparent; - font-size: 11px; -} -.aksrt-checkin-modal__day.is-done { - background: #eff6ff; - border-color: #bfdbfe; - color: #1d4ed8; -} -.aksrt-checkin-modal__day-n { font-weight: 700; margin-bottom: 2px; } -.aksrt-checkin-modal__cal-title { - font-size: 13px; - margin-bottom: 8px; -} -.aksrt-signin-calendar__grid { - display: grid; - grid-template-columns: repeat(10, minmax(0, 1fr)); - gap: 4px; -} -.aksrt-signin-calendar__day { - aspect-ratio: 1; - border-radius: 6px; - display: flex; - align-items: center; - justify-content: center; - font-size: 11px; - background: var(--surface-2, #f3f4f6); - color: #999; -} -.aksrt-signin-calendar__day.is-signed { - background: #dbeafe; - color: #1d4ed8; - font-weight: 700; -} -.aksrt-signin-calendar__day.is-today { - outline: 1px solid var(--color-primary, #3b82f6); -} -.aksrt-header-checkin-details { text-decoration: none; } diff --git a/assets/css/frontend/widget-batch5.css b/assets/css/frontend/widget-batch5.css deleted file mode 100644 index b649d729..00000000 --- a/assets/css/frontend/widget-batch5.css +++ /dev/null @@ -1,2296 +0,0 @@ -/** - * Batch5: user card guest/login depth, main posts, term aggregation. - */ - -/* 用户卡/作者卡:外层 .zib-widget 包裹层永不作为卡片绘制, - 内层 .aksrt-user-card / .aksrt-author-card 是唯一卡片。 - - classname 钩子(.widget_aksrt_user_card / _author_card)命中侧栏 before_widget 包裹层; - - :has() 兜底:无论包裹层类名如何,只要它内部含一张 .aksrt-*-card 就透明化 - (用后代而非直接子选择器,因为开启吸顶时中间还隔着 .is-affix 包裹层); - - !important 确保胜过 widgets/part-1.css 的 `html.dark .zib-widget`(0-2-1)、 - homepage-fixed/base-3.css 的 `.aksrt-homepage__aside > .zib-widget` 等卡片绘制规则。 */ -.zib-widget.widget_aksrt_user_card, -.zib-widget.widget_aksrt_author_card, -.zib-widget:has(.aksrt-user-card), -.zib-widget:has(.aksrt-author-card) { - background: none !important; - border: 0 !important; - box-shadow: none !important; - padding: 0 !important; - border-radius: 0 !important; - margin-bottom: 20px; -} - -.aksrt-user-card { - position: relative; - box-sizing: border-box; - width: 100%; - max-width: 100%; - min-width: 0; - border-radius: 8px; - overflow: visible; - border: 1px solid var(--color-line, #e5e7eb); - background: var(--surface-1, #fff); - text-align: center; - margin-bottom: 0; -} -.aksrt-user-card__cover { - position: relative; - box-sizing: border-box; - width: 100%; - height: 139px; - min-height: 139px; - max-height: 139px; - margin: 0; - padding: 0 !important; - overflow: hidden; - border-radius: 7px 7px 0 0; - background-color: #93c5fd; - background-image: linear-gradient(135deg, #93c5fd, #c4b5fd); - background-position: center; - background-repeat: no-repeat; - background-size: cover; -} -.aksrt-user-card__cover.is-empty { - background: linear-gradient(135deg, #e2e8f0, #f8fafc); -} -.aksrt-user-card__body { - position: relative; - display: flex; - flex-direction: column; - align-items: center; - min-width: 0; - padding: 0 16px 18px; -} -.aksrt-user-card__checkin { - position: absolute; - top: 66%; - right: 0; - z-index: 3; - max-width: calc(100% - 56px); - transform: translateY(-50%); -} -.aksrt-user-card__checkin--without-cover { - position: relative; - top: auto; - right: auto; - display: flex; - justify-content: flex-end; - max-width: none; - margin: 10px 0 0; - transform: none; -} -.aksrt-user-card .aksrt-user-card__checkin .aksrt-header-checkin { - width: auto !important; - min-height: 40px; - padding: 8px 12px !important; - border-radius: 6px 0 0 6px !important; - font-size: 13px !important; - line-height: 1.25; -} -.aksrt-user-card__checkin .aksrt-header-checkin-details { display: none; } -.aksrt-user-card__avatar-wrap { - position: relative; - display: inline-block; - flex: 0 0 auto; - width: 76px; - height: 76px; - margin: -38px auto 0; -} -.aksrt-user-card.no-cover .aksrt-user-card__avatar-wrap { - margin-top: 16px; -} -.aksrt-user-card__avatar { - display: block; - box-sizing: border-box; - width: 76px; - height: 76px; - border-radius: 50%; - overflow: hidden; - border: 3px solid var(--surface-1, #fff); - background: var(--surface-2, #eee); -} -.aksrt-user-card__avatar > a { - display: block; - width: 100%; - height: 100%; -} -.aksrt-user-card__avatar > img, -.aksrt-user-card__avatar > a > img { - display: block; - width: 100%; - height: 100%; - object-fit: cover; -} -.aksrt-user-card__name { - display: flex; - align-items: center; - justify-content: center; - width: 100%; - min-width: 0; - margin: 10px 0 0; - font-size: 16px; - font-weight: 700; - line-height: 1.35; -} -.aksrt-user-card__name-row { - display: inline-flex; - align-items: center; - justify-content: center; - min-width: 0; - max-width: 100%; - gap: 4px; -} -.aksrt-user-card__name .display-name { - min-width: 0; - max-width: 100%; -} -.aksrt-user-card__name a { color: inherit; text-decoration: none; } -.aksrt-user-card__bio, -.aksrt-user-card__guest-title { - width: 100%; - margin: 8px 0 0; - font-size: 12px; - color: var(--muted-2-color, #888); - line-height: 1.5; - overflow-wrap: anywhere; -} -.aksrt-user-card__guest-title { font-size: 14px; font-weight: 600; color: inherit; } -.aksrt-user-card__stats { - display: flex; - width: 100%; - justify-content: center; - gap: 18px; - margin-top: 12px; -} -.aksrt-user-card__stat-value { - display: block; - font-size: 16px; - font-weight: 700; -} -.aksrt-user-card__stat-label { - font-size: 11px; - color: var(--muted-2-color, #999); -} -.aksrt-user-card__actions { - display: flex; - width: 100%; - justify-content: center; - flex-wrap: wrap; - gap: 8px; - margin-top: 14px; -} -.aksrt-user-card__btn { - display: inline-flex; - align-items: center; - justify-content: center; - min-width: 96px; - padding: 7px 14px; - border-radius: 999px; - font-size: 13px; - text-decoration: none; - font-weight: 600; -} -.aksrt-user-card__btn--primary { - background: var(--color-primary, #3b82f6); - color: #fff !important; -} -.aksrt-user-card__btn--ghost { - background: var(--surface-2, #f3f4f6); - color: inherit !important; -} - -/* Main posts */ -.aksrt-main-posts { display: flex; flex-direction: column; gap: 10px; } -.aksrt-main-posts.style-card { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 12px; -} -@media (max-width: 575.98px) { - .aksrt-main-posts.style-card { grid-template-columns: 1fr; } -} -.aksrt-main-posts__card { - display: block; - border-radius: 12px; - overflow: hidden; - border: 1px solid var(--color-line, #e5e7eb); - background: var(--surface-1, #fff); - text-decoration: none; - color: inherit; -} -.aksrt-main-posts__thumb { - height: 110px; - background: var(--surface-2, #f3f4f6); - overflow: hidden; -} -.aksrt-main-posts__thumb.mini { - width: 56px; - height: 56px; - border-radius: 8px; - flex-shrink: 0; -} -.aksrt-main-posts__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; } -.aksrt-main-posts__thumb.is-empty { background: linear-gradient(135deg, #e2e8f0, #f8fafc); } -.aksrt-main-posts__body { padding: 10px 12px 12px; min-width: 0; flex: 1; display: flex; flex-direction: column; gap: 4px; } -.aksrt-main-posts__title { - font-size: 13px; - font-weight: 600; - line-height: 1.4; - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - overflow: hidden; -} -.aksrt-main-posts__meta { - display: flex; - gap: 10px; - font-size: 11px; - color: var(--muted-2-color, #999); -} -.aksrt-main-posts__row { - display: flex; - align-items: center; - gap: 10px; - text-decoration: none; - color: inherit; - padding: 4px 0; - border-bottom: 1px dashed var(--color-line, #e5e7eb); -} -.aksrt-main-posts__row:last-child { border-bottom: 0; } -.aksrt-main-posts__num { - width: 20px; - flex-shrink: 0; - font-size: 12px; - font-weight: 700; - color: var(--color-primary, #3b82f6); - text-align: center; -} - -/* Term aggregation */ -.aksrt-term-agg { - display: grid; - grid-template-columns: repeat(var(--aksrt-ta-cols, 1), minmax(0, 1fr)); - gap: 12px; -} -.aksrt-term-agg__card { - border: 1px solid var(--color-line, #e5e7eb); - border-radius: 12px; - overflow: hidden; - background: var(--surface-1, #fff); -} -.aksrt-term-agg__head { - display: block; - text-decoration: none; - color: inherit; - position: relative; -} -.aksrt-term-agg__cover { - height: 96px; - background: var(--surface-2, #f3f4f6) center/cover no-repeat; -} -.aksrt-term-agg__cover.is-empty { - background: linear-gradient(135deg, #dbeafe, #eff6ff); -} -.aksrt-term-agg__name { - position: absolute; - left: 12px; - bottom: 10px; - font-weight: 700; - color: #fff; - text-shadow: 0 1px 3px rgba(0,0,0,.45); -} -.aksrt-term-agg__count { - position: absolute; - right: 10px; - top: 10px; - font-size: 11px; - padding: 2px 8px; - border-radius: 999px; - background: rgba(0,0,0,.45); - color: #fff; -} -.aksrt-term-agg__posts { - list-style: none; - margin: 0; - padding: 8px 12px 10px; -} -.aksrt-term-agg__posts li { - padding: 6px 0; - border-bottom: 1px dashed var(--color-line, #eee); -} -.aksrt-term-agg__posts li:last-child { border-bottom: 0; } -.aksrt-term-agg__posts a { - color: inherit; - text-decoration: none; - font-size: 13px; - display: block; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - - -/* Icon cover cards */ -.aksrt-icon-cover { - display: grid; - grid-template-columns: repeat(var(--aksrt-icc-pc, 2), minmax(0, 1fr)); - gap: 10px; - --aksrt-icc-icon: 25px; -} -@media (max-width: 575.98px) { - .aksrt-icon-cover { - grid-template-columns: repeat(var(--aksrt-icc-m, 1), minmax(0, 1fr)); - } -} -.aksrt-icon-cover__item { - display: flex; - align-items: center; - gap: 10px; - padding: 12px; - border-radius: 12px; - border: 1px solid var(--color-line, #e5e7eb); - background: var(--surface-1, #fff); - text-decoration: none; - color: inherit; -} -.aksrt-icon-cover__icon { - width: calc(var(--aksrt-icc-icon) + 18px); - height: calc(var(--aksrt-icc-icon) + 18px); - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - font-size: var(--aksrt-icc-icon); - color: var(--color-primary, #3b82f6); - background: var(--surface-2, #f3f4f6); - flex-shrink: 0; - overflow: hidden; -} -.aksrt-icon-cover.is-radius .aksrt-icon-cover__icon { border-radius: 10px; } -.aksrt-icon-cover__icon img { width: 70%; height: 70%; object-fit: contain; } -.aksrt-icon-cover__title { font-weight: 700; font-size: 14px; } -.aksrt-icon-cover__desc { font-size: 12px; color: var(--muted-2-color, #888); margin-top: 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } - -/* Bookmark links */ -.aksrt-bookmark-links { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 10px; -} -.aksrt-bookmark-links.has-box { - padding: 10px; - border: 1px solid var(--color-line, #e5e7eb); - border-radius: 12px; -} -.aksrt-bookmark-links.style-simple { - grid-template-columns: 1fr; -} -.aksrt-bookmark-links__item { - display: flex; - align-items: center; - gap: 10px; - padding: 8px; - border-radius: 10px; - background: var(--surface-2, #f8fafc); - text-decoration: none; - color: inherit; - min-width: 0; -} -.aksrt-bookmark-links__img { - width: 36px; - height: 36px; - border-radius: 8px; - object-fit: cover; - flex-shrink: 0; -} -.aksrt-bookmark-links__text { min-width: 0; display: flex; flex-direction: column; } -.aksrt-bookmark-links__name { font-size: 13px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } -.aksrt-bookmark-links__desc { font-size: 11px; color: var(--muted-2-color, #999); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } - - -/* Search keywords */ -.aksrt-search-widget__keywords { margin-top: 10px; } -.aksrt-search-widget__kw-head { - display: flex; - align-items: center; - justify-content: space-between; - gap: 8px; - margin-bottom: 6px; -} -.aksrt-search-widget__kw-title { - font-size: 12px; - color: var(--muted-2-color, #888); - margin-bottom: 6px; -} -.aksrt-search-widget__kw-head .aksrt-search-widget__kw-title { margin-bottom: 0; } -.aksrt-search-widget__kw-refresh { - display: inline-flex; - align-items: center; - justify-content: center; - width: 18px; - height: 18px; - padding: 0; - border: 0; - border-radius: 50%; - background: transparent; - color: var(--muted-2-color, #999); - font-size: 12px; - opacity: .65; - cursor: pointer; -} -.aksrt-search-widget__kw-refresh:hover, -.aksrt-search-widget__kw-refresh:focus-visible { color: var(--color-primary, #3b82f6); opacity: 1; } -.aksrt-search-widget__kw-refresh.is-refreshing i { animation: aksrt-search-keyword-refresh .2s linear; } -@keyframes aksrt-search-keyword-refresh { to { transform: rotate(360deg); } } -.aksrt-search-widget__kw-list { display: flex; flex-wrap: wrap; gap: 6px; } -.aksrt-search-widget__kw { - display: inline-block; - padding: 3px 10px; - border-radius: 999px; - background: var(--surface-2, #f3f4f6); - color: inherit; - text-decoration: none; - font-size: 12px; -} -/* Product list widgets (batch6) */ -.aksrt-product-widget { margin-bottom: 8px; } -.aksrt-product-widget__grid { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 10px; -} -.aksrt-product-widget--list .aksrt-product-widget__grid, -.aksrt-product-widget--mini .aksrt-product-widget__grid { - grid-template-columns: 1fr; -} -.aksrt-product-widget--oneline .aksrt-product-widget__grid { - display: flex; - overflow-x: auto; - gap: 10px; - scroll-snap-type: x mandatory; - -webkit-overflow-scrolling: touch; - padding-bottom: 4px; -} -.aksrt-product-widget--oneline .aksrt-product-widget__item, -.aksrt-product-widget--oneline .aksrt-product-card { - flex: 0 0 42%; - min-width: 140px; - scroll-snap-align: start; -} -.aksrt-product-widget__item, -.aksrt-product-widget .aksrt-product-card { - border: 1px solid var(--color-line, #e5e7eb); - border-radius: 10px; - overflow: hidden; - background: var(--surface-1, #fff); -} -.aksrt-product-widget__thumb, -.aksrt-product-widget .aksrt-product-card__image { - display: block; - aspect-ratio: 1 / 1; - background: var(--surface-2, #f3f4f6); - overflow: hidden; -} -.aksrt-product-widget__thumb img, -.aksrt-product-widget .aksrt-product-card__image img { - width: 100%; - height: 100%; - object-fit: cover; - display: block; -} -.aksrt-product-widget__info, -.aksrt-product-widget .aksrt-product-card__body { padding: 8px 10px 10px; } -.aksrt-product-widget__title, -.aksrt-product-widget .aksrt-product-card__title { - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - overflow: hidden; - font-size: 13px; - font-weight: 600; - line-height: 1.35; - color: inherit; - text-decoration: none; -} -.aksrt-product-widget__meta { - display: flex; - justify-content: space-between; - gap: 6px; - margin-top: 6px; - font-size: 12px; -} -.aksrt-product-widget__price, -.aksrt-product-widget .aksrt-product-card__price { - color: var(--color-primary, #ef4444); - font-weight: 700; -} -.aksrt-product-widget__sales { color: var(--muted-2-color, #999); font-size: 11px; } -.aksrt-product-widget__empty { font-size: 13px; color: var(--muted-2-color, #999); padding: 12px 0; } -.aksrt-product-widget .ajax-pag { margin-top: 12px; text-align: center; } -.aksrt-product-tab__headers { - display: flex; - gap: 6px; - overflow-x: auto; - margin-bottom: 12px; - -webkit-overflow-scrolling: touch; -} -.aksrt-product-tab__header { - flex: 0 0 auto; - border: 0; - background: var(--surface-2, #f3f4f6); - border-radius: 999px; - padding: 6px 12px; - font-size: 13px; - cursor: pointer; - color: inherit; -} -.aksrt-product-tab__header.is-active { - background: var(--color-primary, #3b82f6); - color: #fff; -} - -/* Scroll notice */ -.aksrt-scroll-notice { - display: flex; - align-items: center; - gap: 10px; - padding: 8px 14px; - border-radius: 10px; - background: #eff6ff; - color: #1d4ed8; - margin-bottom: 8px; - overflow: hidden; -} -.aksrt-scroll-notice.is-radius, -.aksrt-scroll-notice.radius { border-radius: 999px; } -.aksrt-scroll-notice.color-c-green { background: #ecfdf5; color: #047857; } -.aksrt-scroll-notice.color-c-yellow { background: #fffbeb; color: #b45309; } -.aksrt-scroll-notice.color-c-red { background: #fef2f2; color: #b91c1c; } -.aksrt-scroll-notice.color-c-purple { background: #f5f3ff; color: #6d28d9; } -.aksrt-scroll-notice.color-c-blue-2 { background: #dbeafe; color: #1e3a8a; } -.aksrt-scroll-notice.color-c-green-2 { background: #d1fae5; color: #065f46; } -.aksrt-scroll-notice.color-c-yellow-2 { background: #ffedd5; color: #9a3412; } -.aksrt-scroll-notice.color-c-red-2 { background: #fee2e2; color: #991b1b; } -.aksrt-scroll-notice.color-c-purple-2 { background: #ede9fe; color: #5b21b6; } -.aksrt-scroll-notice.color-b-theme { background: var(--color-primary, #3b82f6); color: #fff; } -.aksrt-scroll-notice.color-b-red { background: #ef4444; color: #fff; } -.aksrt-scroll-notice.color-b-yellow { background: #f59e0b; color: #fff; } -.aksrt-scroll-notice.color-b-blue { background: #3b82f6; color: #fff; } -.aksrt-scroll-notice.color-b-green { background: #10b981; color: #fff; } -.aksrt-scroll-notice.color-b-purple { background: #8b5cf6; color: #fff; } -.aksrt-scroll-notice.text-center { justify-content: center; text-align: center; } -.aksrt-scroll-notice.text-right { justify-content: flex-end; text-align: right; } -.aksrt-scroll-notice.is-affix[data-affix="true"] { - position: sticky; - top: calc(var(--nav-height, 60px) + 12px); - z-index: 5; -} -.aksrt-scroll-notice__icon { flex-shrink: 0; } -.aksrt-scroll-notice .aksrt-notice-swiper, -.aksrt-scroll-notice .new-swiper { - flex: 1; - min-width: 0; - height: 1.5em; - margin: 0; -} -.aksrt-scroll-notice .swiper-slide { - height: 1.5em !important; - display: flex; - align-items: center; -} -.aksrt-scroll-notice .swiper-slide a, -.aksrt-scroll-notice .swiper-slide .text-ellipsis { - display: block; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - color: inherit; - text-decoration: none; - font-size: 13px; - line-height: 1.5; -} -.aksrt-scroll-notice .bulletin-icon { - display: inline-flex; - width: 1.1em; - margin-right: 6px; -} -.aksrt-scroll-notice__viewport { position: relative; flex: 1; min-width: 0; height: 1.4em; } -.aksrt-scroll-notice__item { - position: absolute; - inset: 0; - opacity: 0; - transform: translateY(8px); - transition: opacity .35s ease, transform .35s ease; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - line-height: 1.4em; - font-size: 13px; -} -.aksrt-scroll-notice__item.is-active { - opacity: 1; - transform: translateY(0); -} -.aksrt-scroll-notice__item a { color: inherit; text-decoration: none; } -.aksrt-scroll-notice__item i { margin-right: 6px; opacity: .85; } - -.hot-post-item { display: flex; align-items: center; gap: 10px; } -.hot-post-item__thumb { - width: 48px; height: 48px; border-radius: 8px; overflow: hidden; flex-shrink: 0; - background: var(--surface-2, #eee); -} -.hot-post-item__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; } -.aksrt-cover-card__bg.is-video video { - width: 100%; height: 100%; object-fit: cover; display: block; -} - -.widget-buttons { - display: flex; - flex-wrap: wrap; - gap: var(--btn-gap, 10px); - margin-bottom: 8px; -} -.widget-buttons--vertical { flex-direction: column; } -.widget-buttons.align-center { justify-content: center; } -.widget-buttons.align-left { justify-content: flex-start; } -.widget-buttons.align-right { justify-content: flex-end; } -.widget-buttons__btn { - display: inline-flex; - align-items: center; - justify-content: center; - gap: 6px; - padding: 8px 16px; - border-radius: 8px; - text-decoration: none; - font-size: 13px; - font-weight: 600; - background: var(--color-primary, #3b82f6); - color: #fff !important; -} -.widget-buttons.is-radius .widget-buttons__btn { border-radius: 999px; } -.widget-buttons.is-hollow .widget-buttons__btn { - background: transparent; - color: var(--color-primary, #3b82f6) !important; - border: 1px solid currentColor; -} -.widget-buttons__btn--secondary { background: #64748b; } -.widget-buttons__btn--outline { - background: transparent; - color: inherit !important; - border: 1px solid var(--color-line, #ddd); -} -.widget-buttons__btn--text { - background: transparent; - color: var(--color-primary, #3b82f6) !important; - padding-left: 0; - padding-right: 0; -} -.widget-buttons__btn--pink { background: #ec4899; } -.widget-buttons__btn--blue { background: #3b82f6; } -.widget-buttons__btn--green { background: #22c55e; } - -.aksrt-video-widget { - position: relative; - width: 100%; - height: 0; - border-radius: 8px; - overflow: hidden; - background: #111; - margin-bottom: 10px; -} -.aksrt-video-widget iframe, -.aksrt-video-widget video { - position: absolute; - inset: 0; - width: 100%; - height: 100%; - border: 0; - object-fit: cover; -} -.aksrt-video-widget.controller-hide video::-webkit-media-controls { - display: none !important; -} - -.widget-recent-comments__post { - margin-top: 2px; - font-size: 11px; -} -.widget-recent-comments__post a { - color: var(--muted-2-color, #999); - text-decoration: none; -} - -.widget-icon-cards { - display: grid; - grid-template-columns: repeat(var(--ic-columns, 2), minmax(0, 1fr)); - gap: 10px; -} -@media (max-width: 575.98px) { - .widget-icon-cards { - grid-template-columns: repeat(var(--ic-m-columns, 2), minmax(0, 1fr)); - } -} -.widget-icon-cards.is-bare .widget-icon-cards__item { - background: transparent; - border: 0; - box-shadow: none; -} -.widget-icon-cards__item.is-vertical { - flex-direction: column; - text-align: center; - padding: 16px 10px; -} -.widget-icon-cards__item.is-vertical .widget-icon-cards__icon { - margin: 0 auto 10px; - width: calc(var(--ic-icon, 28px) + 20px); - height: calc(var(--ic-icon, 28px) + 20px); - font-size: var(--ic-icon, 28px); - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - background: var(--surface-2, #f3f4f6); - color: var(--color-primary, #3b82f6); -} -.aksrt-tag-cloud.tag-cloud { - display: flex; - flex-wrap: wrap; - gap: 8px; -} -.aksrt-tag-cloud .but { - display: inline-flex; - align-items: center; - padding: 4px 10px; - border-radius: 999px; - background: var(--surface-2, #f3f4f6); - color: inherit; - text-decoration: none; - font-size: 12px; -} -.aksrt-tag-cloud .c-blue { background: #dbeafe; color: #1d4ed8; } -.aksrt-tag-cloud .c-green { background: #dcfce7; color: #15803d; } -.aksrt-tag-cloud .c-yellow { background: #fef3c7; color: #b45309; } -.aksrt-tag-cloud .c-purple { background: #ede9fe; color: #6d28d9; } -.aksrt-tag-cloud .c-red { background: #fee2e2; color: #b91c1c; } -.aksrt-tag-cloud.fixed-width a { min-width: 72px; justify-content: center; } -.aksrt-cat-list .count { - float: right; - color: var(--muted-2-color, #999); - font-size: 12px; -} - -.aksrt-user-card__oauth { - margin-top: 14px; - padding-top: 12px; - border-top: 1px dashed var(--color-line, #e5e7eb); -} -.aksrt-user-card__oauth .social-login-divider { - font-size: 12px; - color: var(--muted-2-color, #999); - margin-bottom: 8px; -} -.aksrt-user-card__oauth .social-login-item, -.aksrt-user-card__oauth a { - margin: 0 4px; -} - -.aksrt-author-card__follow { - border: 0; - cursor: pointer; - margin-right: 6px; - background: #ef4444; - color: #fff !important; -} -.aksrt-author-card__follow.is-following { - background: var(--surface-2, #e5e7eb); - color: inherit !important; -} - -/* 徽章入口与弹窗样式统一由 assets/css/frontend/medal.css 提供。 */ - -/* User ranking extras (batch8) */ -.aksrt-user-ranking__item { align-items: center; } -.aksrt-user-ranking__meta { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; } -.aksrt-user-ranking__desc { - font-size: 11px; - color: var(--muted-2-color, #999); - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.aksrt-tag-cloud .c-blue-2 { background: #bfdbfe; color: #1e40af; } -.aksrt-tag-cloud .c-green-2 { background: #bbf7d0; color: #166534; } -.aksrt-tag-cloud .c-yellow-2 { background: #fde68a; color: #92400e; } -.aksrt-tag-cloud .c-purple-2 { background: #ddd6fe; color: #5b21b6; } -.aksrt-tag-cloud .c-red-2 { background: #fecaca; color: #991b1b; } - -.aksrt-home-widget__ajax .ajax-pag { margin-top: 12px; text-align: center; } - -/* ---- batch10: user-card more-posts + slider wrap + ranking top badge ---- */ -.user-card-posts .more-posts-mini .item { - padding: 6px 0; - border-bottom: 1px dashed var(--color-line, rgba(0, 0, 0, 0.06)); -} -.user-card-posts .more-posts-mini .item:last-child { border-bottom: 0; } -.user-card-posts .more-posts-mini .item a { - display: block; - color: inherit; - text-decoration: none; - font-size: 13px; -} -.user-card-posts .more-posts-mini .item a:hover { - color: var(--color-primary, #3b82f6); -} -.user-card-posts .more-posts.swiper-container { - margin: 8px 0 0; - padding: 0 2px 4px; - overflow: hidden; -} -.user-card-posts .more-posts .swiper-slide { - width: auto; - max-width: 46%; -} -.aksrt-more-post-card { - display: block; - color: inherit; - text-decoration: none; - border-radius: 8px; - overflow: hidden; - background: var(--surface-2, #f8fafc); -} -.aksrt-more-post-card__thumb { - display: block; - aspect-ratio: 16 / 10; - overflow: hidden; - background: var(--surface-3, #eef2f7); -} -.aksrt-more-post-card__thumb img { - width: 100%; - height: 100%; - object-fit: cover; - display: block; -} -.aksrt-more-post-card__body { - display: block; - padding: 6px 8px 8px; -} -.aksrt-more-post-card__title { - display: block; - font-size: 12px; - font-weight: 600; - line-height: 1.35; -} -.aksrt-more-post-card__meta { - display: flex; - justify-content: space-between; - gap: 6px; - margin-top: 4px; - font-size: 11px; -} - -.aksrt-widget-slider-wrap { - border-radius: 10px; - overflow: hidden; -} -.aksrt-widget-slider-wrap .new-swiper { - --pc-height: 220px; - --m-height: 180px; - height: var(--pc-height); -} -@media (max-width: 768px) { - .aksrt-widget-slider-wrap .new-swiper { - height: var(--m-height); - } -} -.aksrt-widget-slider-wrap .swiper-slide img.fit-cover { - width: 100%; - height: 100%; - object-fit: cover; - display: block; -} -.aksrt-widget-slider-wrap .aksrt-slide-text { - position: absolute; - left: 0; - right: 0; - bottom: 0; - padding: 18px 14px 12px; - background: linear-gradient(transparent, rgba(0, 0, 0, 0.55)); - color: #fff; - pointer-events: none; -} -.aksrt-widget-slider-wrap .aksrt-slide-text__title { - font-size: 15px; - font-weight: 700; -} -.aksrt-widget-slider-wrap .aksrt-slide-text__desc { - font-size: 12px; - opacity: 0.9; - margin-top: 2px; -} - -.muted-box.c-red, -.c-red.muted-box { - color: #b91c1c; - background: #fef2f2; - border: 1px solid #fecaca; - border-radius: 8px; - padding: 12px 14px; - font-size: 13px; -} - -/* ranking empty state */ -.aksrt-user-ranking__empty { - margin: 8px 0 0; - font-size: 13px; - color: var(--muted-2-color, #999); - text-align: center; -} - -/* ---- batch11: search widget type/cat + FAQ structure ---- */ -.aksrt-search-widget__form { margin: 0; } -.aksrt-search-widget__types { - display: flex; - flex-wrap: wrap; - gap: 6px; - margin-bottom: 10px; -} -.aksrt-search-widget__type { - border: 1px solid var(--color-line, #e5e7eb); - background: var(--surface-2, #f8fafc); - color: inherit; - border-radius: 999px; - padding: 4px 12px; - font-size: 12px; - font-weight: 600; - cursor: pointer; - line-height: 1.4; -} -.aksrt-search-widget__type.is-active { - background: var(--color-primary, #3b82f6); - border-color: var(--color-primary, #3b82f6); - color: #fff; -} -.aksrt-search-widget__line { - display: flex; - align-items: stretch; - gap: 0; - border: 1px solid var(--color-line, #e5e7eb); - border-radius: 10px; - overflow: hidden; - background: var(--surface-1, #fff); -} -.aksrt-search-widget__cat { - flex: 0 0 auto; - max-width: 38%; - border-right: 1px solid var(--color-line, #e5e7eb); - background: var(--surface-2, #f8fafc); -} -.aksrt-search-widget__cat-select { - width: 100%; - height: 42px; - border: 0; - background: transparent; - padding: 0 10px; - font-size: 13px; - color: inherit; - outline: none; - cursor: pointer; -} -.aksrt-search-widget__field { - position: relative; - flex: 1; - min-width: 0; - display: flex; - align-items: center; -} -.aksrt-search-widget__field .widget-search-box__input, -.aksrt-search-widget .widget-search-box__input { - width: 100%; - height: 42px; - border: 0; - background: transparent; - padding: 0 44px 0 12px; - font-size: 14px; - color: inherit; - outline: none; -} -.aksrt-search-widget .widget-search-box__btn { - position: absolute; - right: 4px; - top: 50%; - transform: translateY(-50%); - width: 34px; - height: 34px; - border: 0; - border-radius: 8px; - background: var(--color-primary, #3b82f6); - color: #fff; - cursor: pointer; - display: inline-flex; - align-items: center; - justify-content: center; -} -.aksrt-search-widget .widget-search-box__btn:hover { filter: brightness(1.05); } - -/* FAQ structure parity */ -.aksrt-faq.produck-wid-faq-block { margin: 0; } -.aksrt-faq__head { margin-bottom: 14px; } -.aksrt-faq__search-wrap { - display: flex; - align-items: center; - gap: 8px; - padding: 8px 10px; - border-radius: 12px; - background: var(--surface-2, #f3f4f6); - border: 1px solid var(--color-line, #e5e7eb); -} -.aksrt-faq__search-icon { color: var(--muted-2-color, #999); } -.aksrt-faq__search-input { - flex: 1; - min-width: 0; - border: 0; - background: transparent; - outline: none; - font-size: 14px; - color: inherit; - height: 34px; -} -.aksrt-faq__search-btn { - border: 0; - border-radius: 8px; - background: var(--color-primary, #3b82f6); - color: #fff; - padding: 0 14px; - height: 34px; - font-weight: 600; - cursor: pointer; - font-size: 13px; -} -.aksrt-faq__main { - display: grid; - grid-template-columns: minmax(0, 1.4fr) minmax(220px, .9fr); - gap: 16px; - align-items: start; -} -.aksrt-faq__main.is-full { grid-template-columns: 1fr; } -.aksrt-faq__list { display: flex; flex-direction: column; gap: 10px; } -.aksrt-faq__item { - border: 1px solid var(--color-line, #e5e7eb); - border-radius: 12px; - background: var(--surface-1, #fff); - padding: 0; - overflow: hidden; -} -.aksrt-faq__summary { - list-style: none; - display: flex; - align-items: center; - gap: 12px; - padding: 12px 14px; - cursor: pointer; -} -.aksrt-faq__summary::-webkit-details-marker { display: none; } -.aksrt-faq__badge { - flex-shrink: 0; - width: 34px; - height: 34px; - border-radius: 10px; - display: inline-flex; - align-items: center; - justify-content: center; - font-size: 12px; - font-weight: 700; - color: #fff; - background: #8b5cf6; -} -.aksrt-faq__badge.tone-pink { background: #ec4899; } -.aksrt-faq__badge.tone-green { background: #10b981; } -.aksrt-faq__badge.tone-orange { background: #f59e0b; } -.aksrt-faq__badge.tone-blue { background: #3b82f6; } -.aksrt-faq__badge.tone-purple { background: #8b5cf6; } -.aksrt-faq__qblock { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; } -.aksrt-faq__q { font-weight: 700; font-size: 14px; line-height: 1.35; } -.aksrt-faq__preview { - font-size: 12px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.aksrt-faq__chevron { - color: var(--muted-2-color, #999); - transition: transform .2s ease; - flex-shrink: 0; -} -.aksrt-faq__item[open] .aksrt-faq__chevron { transform: rotate(180deg); } -.aksrt-faq__a { - padding: 0 14px 14px 60px; - font-size: 13px; - color: var(--color-ink-3, #555); - line-height: 1.65; -} -.aksrt-faq__aside { display: flex; flex-direction: column; gap: 12px; } -.aksrt-faq__doc { - border: 1px solid var(--color-line, #e5e7eb); - border-radius: 12px; - padding: 14px; - background: var(--surface-1, #fff); -} -.aksrt-faq__doc-head { display: flex; gap: 10px; align-items: flex-start; margin-bottom: 10px; } -.aksrt-faq__doc-ico { - width: 36px; height: 36px; border-radius: 10px; - display: inline-flex; align-items: center; justify-content: center; - background: #eff6ff; color: #2563eb; flex-shrink: 0; -} -.aksrt-faq__doc-title { margin: 0; font-size: 15px; } -.aksrt-faq__doc-desc { margin: 4px 0 0; font-size: 12px; } -.aksrt-faq__doc-list { list-style: none; margin: 0; padding: 0; } -.aksrt-faq__doc-li + .aksrt-faq__doc-li { margin-top: 8px; } -.aksrt-faq__doc-a { - display: flex; - align-items: center; - gap: 10px; - padding: 8px; - border-radius: 10px; - background: var(--surface-2, #f8fafc); - text-decoration: none; - color: inherit; -} -.aksrt-faq__doc-li-ico { - width: 28px; height: 28px; border-radius: 8px; - display: inline-flex; align-items: center; justify-content: center; - background: #fff; color: var(--color-primary, #3b82f6); flex-shrink: 0; -} -.aksrt-faq__doc-li-mid { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; } -.aksrt-faq__doc-li-title { font-size: 13px; font-weight: 600; } -.aksrt-faq__doc-li-desc { font-size: 11px; } -.aksrt-faq__doc-go { - font-size: 12px; - color: var(--color-primary, #3b82f6); - white-space: nowrap; - flex-shrink: 0; -} -.aksrt-faq__help { - border-radius: 12px; - padding: 14px; - background: linear-gradient(135deg, #3b82f6, #8b5cf6); - color: #fff; -} -.aksrt-faq__help-top { display: flex; gap: 10px; align-items: flex-start; } -.aksrt-faq__help-ico { - width: 36px; height: 36px; border-radius: 10px; - display: inline-flex; align-items: center; justify-content: center; - background: rgba(255,255,255,.18); flex-shrink: 0; -} -.aksrt-faq__help-title { margin: 0; font-size: 15px; } -.aksrt-faq__help-sub { margin: 4px 0 0; font-size: 12px; opacity: .92; } -.aksrt-faq__help-btn { - display: inline-flex; - align-items: center; - gap: 6px; - margin-top: 12px; - padding: 8px 14px; - border-radius: 999px; - background: #fff; - color: #1d4ed8 !important; - text-decoration: none; - font-weight: 700; - font-size: 13px; -} -@media (max-width: 900px) { - .aksrt-faq__main { grid-template-columns: 1fr; } - .aksrt-faq__a { padding-left: 14px; } -} - -/* ---- batch12: video shell + bookmark links styles + product oneline swiper ---- */ -.aksrt-video-widget { - position: relative; - width: 100%; - overflow: hidden; - border-radius: 10px; - background: #000; -} -.aksrt-video-widget.radius8 { border-radius: 10px; } -.aksrt-video-widget__frame, -.aksrt-video-widget__player, -.aksrt-video-widget .aksrt-video { - position: absolute; - inset: 0; - width: 100%; - height: 100%; -} -.aksrt-video-widget__frame { - border: 0; - display: block; -} -.aksrt-video-widget.controller-hide .aksrt-video video::-webkit-media-controls { - opacity: 0; - transition: opacity .2s ease; -} -.aksrt-video-widget.controller-hide:hover .aksrt-video video::-webkit-media-controls { - opacity: 1; -} - -.aksrt-bookmark-links.links-box { - display: flex; - flex-wrap: wrap; - gap: 12px; -} -.aksrt-bookmark-links.style-card .author-minicard, -.aksrt-bookmark-links.style-bigcard .author-minicard { - flex: 1 1 calc(50% - 12px); - min-width: 140px; - background: var(--surface-2, #f8fafc); - border: 1px solid var(--color-line, #e5e7eb); - padding: 12px; - box-sizing: border-box; -} -.aksrt-bookmark-links.style-bigcard .author-minicard { - flex: 1 1 100%; - text-align: center; -} -.aksrt-bookmark-links .avatar-img img, -.aksrt-bookmark-links .link-img img { - width: 42px; - height: 42px; - border-radius: 50%; - object-fit: cover; -} -.aksrt-bookmark-links.style-bigcard .avatar-img img { - width: 64px; - height: 64px; -} -.aksrt-bookmark-links.style-image { - display: flex; - flex-wrap: wrap; - gap: 10px; -} -.aksrt-bookmark-links.style-image .link-only-img img { - width: 48px; - height: 48px; - border-radius: 10px; - object-fit: cover; -} -.aksrt-bookmark-links.style-simple { - display: block; - line-height: 1.9; - font-size: 13px; -} -.aksrt-bookmark-links.style-simple a { - color: inherit; - text-decoration: none; - margin-right: 8px; -} -.aksrt-bookmark-links.style-simple a:hover { - color: var(--color-primary, #3b82f6); -} -.aksrt-bookmark-links.has-box { - padding: 12px; - border: 1px solid var(--color-line, #e5e7eb); - border-radius: 12px; - background: var(--surface-1, #fff); -} - -.aksrt-product-oneline-swiper { - position: relative; - overflow: hidden; - padding: 0 28px 4px; -} -.aksrt-product-oneline-swiper .swiper-wrapper { - display: flex; -} -.aksrt-product-oneline-swiper .swiper-slide { - width: auto; - max-width: 46%; - min-width: 150px; - height: auto; -} -.aksrt-product-oneline-swiper .aksrt-product-card { - height: 100%; -} -.aksrt-product-oneline-swiper .swiper-button-prev, -.aksrt-product-oneline-swiper .swiper-button-next { - width: 28px; - height: 28px; - margin-top: 0; - top: 42%; - border-radius: 50%; - background: var(--surface-1, #fff); - border: 1px solid var(--color-line, #e5e7eb); - color: var(--color-ink, #111); - box-shadow: 0 2px 8px rgba(0,0,0,.06); -} -.aksrt-product-oneline-swiper .swiper-button-prev:after, -.aksrt-product-oneline-swiper .swiper-button-next:after { - font-size: 12px; - font-weight: 700; -} -.aksrt-product-oneline-swiper .swiper-button-prev { left: 0; } -.aksrt-product-oneline-swiper .swiper-button-next { right: 0; } -.aksrt-product-widget--oneline .aksrt-product-widget__grid { - /* legacy flex fallback if swiper unavailable */ -} - -/* ===== Batch13: oneline posts swiper-scroll + user minicards + term graphic ===== */ - -.widget-main-post.aksrt-oneline-posts { - margin-bottom: 16px; -} -.aksrt-oneline-swiper { - position: relative; - overflow: hidden; - padding: 0 28px 4px; -} -.aksrt-oneline-swiper .swiper-wrapper { - display: flex; - align-items: stretch; -} -.aksrt-oneline-swiper .swiper-slide { - width: auto; - max-width: 46%; - min-width: 160px; - height: auto; -} -.widget-main-post.style-mini .aksrt-oneline-swiper .swiper-slide { - max-width: 280px; - min-width: 220px; -} -.widget-main-post.style-list .aksrt-oneline-swiper .swiper-slide { - max-width: 320px; - min-width: 240px; -} -.aksrt-oneline-swiper .posts-item, -.aksrt-oneline-swiper .posts-mini { - height: 100%; - margin: 0 8px 0 0; -} -.aksrt-oneline-swiper .swiper-button-prev, -.aksrt-oneline-swiper .swiper-button-next { - width: 28px; - height: 28px; - margin-top: 0; - top: 42%; - border-radius: 50%; - background: var(--surface-1, #fff); - border: 1px solid var(--color-line, #e5e7eb); - color: var(--color-ink, #111); - box-shadow: 0 2px 8px rgba(0,0,0,.06); -} -.aksrt-oneline-swiper .swiper-button-prev:after, -.aksrt-oneline-swiper .swiper-button-next:after { - font-size: 12px; - font-weight: 700; -} -.aksrt-oneline-swiper .swiper-button-prev { left: 0; } -.aksrt-oneline-swiper .swiper-button-next { right: 0; } - -/* User lists → author-minicard */ -.aksrt-user-lists .user_lists { - display: flex; - flex-direction: column; - gap: 10px; - text-align: left; -} -.aksrt-user-lists .author-minicard { - display: block; - padding: 12px 14px; - border-radius: 8px; - background: var(--surface-1, #fff); - border: 1px solid var(--color-line, #e5e7eb); - overflow: hidden; -} -.aksrt-user-lists.is-bare .author-minicard { - background: transparent; -} -.aksrt-user-lists .author-minicard > ul.list-inline { - display: flex; - align-items: center; - gap: 12px; - margin: 0; - padding: 0; - list-style: none; -} -.aksrt-user-lists .author-minicard > ul.list-inline > li { - margin: 0; - list-style: none; -} -.aksrt-user-lists .author-minicard .avatar-img img.avatar { - width: 42px; - height: 42px; - border-radius: 50%; - object-fit: cover; - display: block; -} -.aksrt-user-lists .author-minicard dl { - margin: 0; - min-width: 0; -} -.aksrt-user-lists .author-minicard dt.flex { - display: flex; - align-items: center; - flex-wrap: wrap; - gap: 4px; -} -.aksrt-user-lists .author-minicard dd { - margin: 0; - max-width: 100%; -} -.aksrt-user-lists .author-minicard .abs-blur-bg { - position: absolute; - inset: 0; - overflow: hidden; - z-index: 0; - opacity: .18; - pointer-events: none; -} -.aksrt-user-lists .author-minicard .abs-blur-bg img { - width: 100%; - height: 100%; - object-fit: cover; - filter: blur(18px); - transform: scale(1.2); -} -.aksrt-user-lists .author-minicard .relative { - position: relative; - z-index: 1; -} - -/* Graphic card polish */ -.graphic { - background: var(--surface-2, #f3f4f6); -} -.graphic .graphic-mask { - position: absolute; - inset: 0; - background: #000; - pointer-events: none; - z-index: 1; -} -.graphic .graphic-text, -.graphic .abs-center { - z-index: 2; - padding: 10px 12px; -} -.graphic .title-h-center { - font-size: 16px; - font-weight: 700; -} -.graphic badge.b-black, -.graphic .img-badge { - display: inline-flex; - align-items: center; - gap: 4px; - padding: 2px 8px; - border-radius: 4px; - background: rgba(0,0,0,.55); - color: #fff; - font-size: 12px; - line-height: 1.4; -} -.graphic video.fit-cover { - position: absolute; - inset: 0; - width: 100%; - height: 100%; - object-fit: cover; -} -.hover-zoom-img .graphic img.fit-cover, -.hover-zoom-img.graphic img.fit-cover { - transition: transform .45s ease; -} -.hover-zoom-img:hover .graphic img.fit-cover, -.hover-zoom-img.graphic:hover img.fit-cover { - transform: scale(1.06); -} -.aksrt-term-cards .row.gutters-5 { - display: flex; - flex-wrap: wrap; - margin: 0 -4px; -} -.aksrt-term-cards .row.gutters-5 > [class*="col-"] { - padding: 0 4px; - box-sizing: border-box; -} -.aksrt-term-cards .col-sm-12 { width: 100%; } -.aksrt-term-cards .col-sm-6 { width: 50%; } -.aksrt-term-cards .col-sm-4 { width: 33.333%; } -.aksrt-term-cards .col-sm-3 { width: 25%; } -.aksrt-term-cards .col-sm-2 { width: 16.666%; } -@media (max-width: 767px) { - .aksrt-term-cards .col-xs-12 { width: 100%; } - .aksrt-term-cards .col-xs-6 { width: 50%; } - .aksrt-term-cards .col-xs-4 { width: 33.333%; } -} - -/* Term aggregation (zibll term-aggregation) */ -.term-aggregation.aksrt-term-agg__card, -.zib-widget.term-aggregation { - padding: 14px; - border-radius: 10px; - background: var(--surface-1, #fff); - border: 1px solid var(--color-line, #e5e7eb); - margin-bottom: 12px; -} -.aksrt-term-agg { - display: grid; - gap: 12px; - grid-template-columns: repeat(var(--aksrt-ta-cols, 1), minmax(0, 1fr)); -} -.term-aggregation .hover-zoom-img.flex { - display: flex; - align-items: stretch; - gap: 0; -} -.term-aggregation .term-img { - width: 38%; - max-width: 180px; - min-width: 110px; -} -.term-aggregation .term-img .graphic { - margin: 0; - border-radius: 8px; -} -.term-aggregation .term-title { - min-width: 0; - padding-left: 4px; -} -.term-aggregation .term-title > a { - font-weight: 700; - text-decoration: none; - color: inherit; -} -.term-aggregation .term-meta { - display: flex; - justify-content: space-between; - align-items: center; - gap: 8px; - margin-top: 6px; -} -.term-aggregation .icon-circle { - position: relative; - padding-left: 14px; - color: inherit; - text-decoration: none; -} -.term-aggregation .icon-circle:before { - content: ""; - position: absolute; - left: 0; - top: 50%; - width: 6px; - height: 6px; - border-radius: 50%; - background: var(--theme-color, var(--focus-color, #f04494)); - transform: translateY(-50%); -} -.term-aggregation .but.c-blue { - display: inline-flex; - align-items: center; - gap: 2px; - border-radius: 999px; - padding: 2px 10px; - font-size: 12px; - background: rgba(59,130,246,.1); - color: #2563eb; - text-decoration: none; -} -@media (max-width: 640px) { - .aksrt-term-agg { grid-template-columns: 1fr; } - .term-aggregation .term-img { max-width: 120px; min-width: 88px; width: 34%; } - .term-aggregation .hide-sm { display: none !important; } - .aksrt-oneline-swiper .swiper-slide { max-width: 72%; min-width: 140px; } -} - -/* ===== Batch14: recent comments mini + friend links + iframe + cover ===== */ - -.comment-mini-lists.widget-recent-comments, -.comment-mini-lists.zib-widget { - padding: 4px 0; -} -.comment-mini-lists .posts-mini { - display: flex; - align-items: flex-start; - gap: 0; - padding: 10px 0; - border-bottom: 1px solid var(--color-line, rgba(0,0,0,.06)); -} -.comment-mini-lists .posts-mini:last-child { - border-bottom: 0; -} -.comment-mini-lists .avatar-img { - flex: 0 0 auto; - --this-size: 36px; -} -.comment-mini-lists .avatar-img img.avatar { - width: 36px; - height: 36px; - border-radius: 50%; - object-fit: cover; - display: block; -} -.comment-mini-lists .posts-mini-con { - min-width: 0; - flex: 1; -} -.comment-mini-lists .posts-mini-con > p.flex { - display: flex; - justify-content: space-between; - align-items: center; - margin: 0 0 4px; - gap: 8px; -} -.comment-mini-lists .icon-spot:before { - content: "·"; - margin: 0 6px; - opacity: .5; -} -.comment-mini-lists a.muted-color { - color: var(--muted-2-color, #666); - text-decoration: none; - display: -webkit-box; - -webkit-line-clamp: 3; - -webkit-box-orient: vertical; - overflow: hidden; - line-height: 1.5; -} -.comment-mini-lists a.muted-color:hover { - color: var(--theme-color, var(--focus-color, #f04494)); -} - -/* Friend links reuse bookmark-links styles */ -.aksrt-friend-links.links-box { - display: flex; - flex-wrap: wrap; - gap: 10px; -} -.aksrt-friend-links.style-simple { - gap: 6px 12px; -} -.aksrt-friend-links.style-image { - gap: 8px; -} - -/* Iframe lazy shell */ -.wp-block-embed.is-type-video.relative-h, -.aksrt-iframe-embed .relative-h { - position: relative; - overflow: hidden; - border-radius: 8px; - background: #0f172a; -} -.aksrt-iframe-ratio { - position: relative; - width: 100%; - height: 0; -} -.aksrt-iframe-ratio iframe, -.aksrt-iframe-el { - position: absolute; - inset: 0; - width: 100%; - height: 100%; - border: 0; -} - -/* Cover cards row already covered by term-cards col rules — scope shared */ -.widget-graphic-cover .row.gutters-5 { - display: flex; - flex-wrap: wrap; - margin: 0 -4px; -} -.widget-graphic-cover .row.gutters-5 > [class*="col-"] { - padding: 0 4px; - box-sizing: border-box; -} -.widget-graphic-cover .col-sm-12 { width: 100%; } -.widget-graphic-cover .col-sm-6 { width: 50%; } -.widget-graphic-cover .col-sm-4 { width: 33.333%; } -.widget-graphic-cover .col-sm-3 { width: 25%; } -.widget-graphic-cover .col-sm-2 { width: 16.666%; } -@media (max-width: 767px) { - .widget-graphic-cover .col-xs-12 { width: 100%; } - .widget-graphic-cover .col-xs-6 { width: 50%; } - .widget-graphic-cover .col-xs-4 { width: 33.333%; } -} -.widget-graphic-cover .this-font { - font-size: var(--font-size, 18px); - font-weight: var(--font-weight, 600); - color: var(--color, #fff); -} -@media (max-width: 767px) { - .widget-graphic-cover .this-font { - font-size: var(--font-size-sm, 14px); - font-weight: var(--font-weight-sm, 600); - } -} - -/* ===== Batch15: icon-card / icon-cover / buttons / yiyan / text-title ===== */ - -.icon-card { - text-align: center; - padding: 16px 10px; -} -.icon-card .card-icon { - display: inline-flex; - align-items: center; - justify-content: center; - line-height: 1; - color: var(--theme-color, var(--focus-color, #f04494)); -} -.icon-card .card-icon.toggle-radius { - width: 3.2em; - height: 3.2em; - border-radius: 50%; - background: rgba(240, 68, 148, 0.1); -} -.icon-card .card-icon img { - width: 1em; - height: 1em; - object-fit: contain; -} -.icon-card .main-color { - color: inherit; - text-decoration: none; -} -.icon-card .main-color:hover { - color: var(--theme-color, var(--focus-color, #f04494)); -} - -.icon-cover-card { - display: flex; - align-items: center; - gap: 0; - /* Surface: .zib-widget / .padding-10 on same node (zibll). Do not re-box. */ -} -a.main-color > .icon-cover-card:hover { - opacity: 0.92; -} -/* Icon badge uses .badg.cir (+ c-* / jb-*); only ensure flex centering. */ -.icon-cover-icon.badg.cir { - display: inline-flex; - align-items: center; - justify-content: center; - flex-shrink: 0; -} -.icon-cover-icon.radius4, -.icon-cover-icon.badg.cir.radius4 { - border-radius: 4px !important; -} -.icon-cover-icon img { - width: 70%; - height: 70%; - object-fit: contain; -} -.icon-cover-desc { - min-width: 0; - overflow: hidden; -} -.icon-cover-desc .font-bold { - font-weight: bold; -} - -/* Buttons wrap (zibll flex hh) */ -.widget-buttons .widget-buttons-wrap { - display: flex; - flex-wrap: wrap; - align-items: center; - gap: var(--pc-gap, 12px); -} -.widget-buttons .widget-buttons-wrap.align-center { justify-content: center; } -.widget-buttons .widget-buttons-wrap.align-left { justify-content: flex-start; } -.widget-buttons .widget-buttons-wrap.align-right { justify-content: flex-end; } -.widget-buttons .widget-buttons-wrap .but { - display: inline-flex; - align-items: center; - justify-content: center; - gap: 4px; - padding: 8px 16px; - border-radius: 6px; - text-decoration: none; - font-size: 14px; - line-height: 1.3; - background: var(--theme-color, #3b82f6); - color: #fff; - border: 1px solid transparent; - min-width: var(--pc-width, auto); -} -.widget-buttons .widget-buttons-wrap .but.radius { - border-radius: 999px; -} -.widget-buttons .widget-buttons-wrap .but.hollow { - background: transparent; - color: var(--theme-color, #3b82f6); - border-color: currentColor; -} -.widget-buttons .widget-buttons-wrap .but.c-blue { background: #3b82f6; } -.widget-buttons .widget-buttons-wrap .but.c-green { background: #22c55e; } -.widget-buttons .widget-buttons-wrap .but.c-yellow { background: #eab308; color: #1a1a1a; } -.widget-buttons .widget-buttons-wrap .but.c-red { background: #ef4444; } -.widget-buttons .widget-buttons-wrap .but.c-purple { background: #a855f7; } -.widget-buttons .widget-buttons-wrap .but.hollow.c-blue { color: #3b82f6; background: transparent; } -.widget-buttons .widget-buttons-wrap .but.hollow.c-green { color: #22c55e; background: transparent; } -.widget-buttons .widget-buttons-wrap .but.hollow.c-red { color: #ef4444; background: transparent; } -.widget-buttons .widget-buttons-wrap .but.hollow.c-purple { color: #a855f7; background: transparent; } -.widget-buttons .widget-buttons-wrap .but.hollow.c-yellow { color: #ca8a04; background: transparent; } -.widget-buttons.pc-size-small .but { padding: 4px 10px; font-size: 12px; } -.widget-buttons.pc-size-medium .but { padding: 6px 14px; font-size: 13px; } -.widget-buttons.pc-size-large .but { padding: 10px 18px; font-size: 15px; } -@media (max-width: 767px) { - .widget-buttons .widget-buttons-wrap { - gap: var(--m-gap, 6px); - } - .widget-buttons .widget-buttons-wrap .but { - min-width: var(--m-width, auto); - } - .widget-buttons.m-size-small .but { padding: 4px 10px; font-size: 12px; } - .widget-buttons.m-size-medium .but { padding: 6px 12px; font-size: 13px; } - .widget-buttons.m-size-large .but { padding: 8px 14px; font-size: 14px; } -} - -/* Yiyan shell */ -.yiyan-box.main-bg, -.yiyan-box-wrap .yiyan-box { - background: var(--surface-1, #fff); - border-radius: 8px; - box-shadow: 0 0 10px var(--main-shadow, rgba(116,116,116,.08)); - padding: 18px 16px; - text-align: center; -} -.yiyan-box .aksrt-yiyan, -.yiyan-box .yiyan { - margin: 0; -} - -/* Text title char animation inherits data-aksrt-animate */ -.aksrt-text-title__main > span[data-aksrt-animate] { - display: inline-block; -} - -/* Shared icon grid columns (reuse term-cards pattern) */ -.widget_aksrt_icon_cards .row.gutters-5, -.widget_aksrt_icon_cover_cards .row.gutters-5 { - display: flex; - flex-wrap: wrap; - margin: 0 -4px; -} -.widget_aksrt_icon_cards .row.gutters-5 > [class*="col-"], -.widget_aksrt_icon_cover_cards .row.gutters-5 > [class*="col-"] { - padding: 0 4px; - box-sizing: border-box; -} -.widget_aksrt_icon_cards .col-sm-12, -.widget_aksrt_icon_cover_cards .col-sm-12 { width: 100%; } -.widget_aksrt_icon_cards .col-sm-6, -.widget_aksrt_icon_cover_cards .col-sm-6 { width: 50%; } -.widget_aksrt_icon_cards .col-sm-4, -.widget_aksrt_icon_cover_cards .col-sm-4 { width: 33.333%; } -.widget_aksrt_icon_cards .col-sm-3, -.widget_aksrt_icon_cover_cards .col-sm-3 { width: 25%; } -.widget_aksrt_icon_cards .col-sm-2, -.widget_aksrt_icon_cover_cards .col-sm-2 { width: 16.666%; } -@media (max-width: 767px) { - .widget_aksrt_icon_cards .col-xs-12, - .widget_aksrt_icon_cover_cards .col-xs-12 { width: 100%; } - .widget_aksrt_icon_cards .col-xs-6, - .widget_aksrt_icon_cover_cards .col-xs-6 { width: 50%; } - .widget_aksrt_icon_cards .col-xs-4, - .widget_aksrt_icon_cover_cards .col-xs-4 { width: 33.333%; } - .widget_aksrt_icon_cards .col-xs-3, - .widget_aksrt_icon_cover_cards .col-xs-3 { width: 25%; } -} - -/* ===== Batch16-18: highlights/combo/announcement/gap polish ===== */ - -.aksrt-highlights__row { - display: grid; - gap: 12px; - margin-bottom: 12px; -} -.aksrt-highlights__row.is-large { grid-template-columns: 1fr; } -.aksrt-highlights__row.is-medium { grid-template-columns: repeat(2, minmax(0, 1fr)); } -.aksrt-highlights__row.is-small { grid-template-columns: repeat(3, minmax(0, 1fr)); } -@media (max-width: 767px) { - .aksrt-highlights__row.is-medium, - .aksrt-highlights__row.is-small { grid-template-columns: 1fr; } -} -.aksrt-hl-card { - display: block; - position: relative; - overflow: hidden; - border-radius: 12px; - text-decoration: none; - color: inherit; - background: var(--surface-1, #fff); - border: 1px solid var(--color-line, #e5e7eb); - min-height: 120px; - transition: transform .25s ease, box-shadow .25s ease; -} -.aksrt-hl-card:hover { - transform: translateY(-2px); - box-shadow: 0 10px 24px rgba(0,0,0,.06); -} -.aksrt-hl-card__media { - position: absolute; - inset: 0; - z-index: 0; -} -.aksrt-hl-card__media img { - width: 100%; - height: 100%; - object-fit: cover; -} -.aksrt-hl-card__body { - position: relative; - z-index: 1; - padding: 16px; -} -.aksrt-hl-card.color-blue { --hl: #3b82f6; } -.aksrt-hl-card.color-pink { --hl: #ec4899; } -.aksrt-hl-card.color-purple { --hl: #a855f7; } -.aksrt-hl-card.color-green { --hl: #22c55e; } -.aksrt-hl-card.color-orange { --hl: #f97316; } -.aksrt-hl-card.color-cyan { --hl: #06b6d4; } -.aksrt-hl-card__icon { - width: 36px; - height: 36px; - border-radius: 10px; - display: inline-flex; - align-items: center; - justify-content: center; - background: color-mix(in srgb, var(--hl, #3b82f6) 16%, transparent); - color: var(--hl, #3b82f6); - margin-bottom: 8px; -} -.aksrt-hl-card__title { font-weight: 700; font-size: 16px; } -.aksrt-hl-card__desc { margin-top: 6px; font-size: 13px; color: var(--muted-2-color, #888); } - -/* Combo row gutters */ -.aksrt-combo-info.row.gutters-10 { - display: flex; - flex-wrap: wrap; - margin: 0 -5px; -} -.aksrt-combo-info.row.gutters-10 > [class*="col-"] { - padding: 0 5px 10px; - box-sizing: border-box; -} -.aksrt-combo-info .col-sm-12 { width: 100%; } -.aksrt-combo-info .col-sm-6 { width: 50%; } -.aksrt-combo-info .col-sm-4 { width: 33.333%; } -.aksrt-combo-info .col-sm-3 { width: 25%; } -.aksrt-combo-info .col-sm-2 { width: 16.666%; } -@media (max-width: 767px) { - .aksrt-combo-info .col-xs-12 { width: 100%; } - .aksrt-combo-info .col-xs-6 { width: 50%; } - .aksrt-combo-info .col-xs-4 { width: 33.333%; } -} - -/* Announcement vertical swiper reuse notice styles */ -body .content-layout__aside .widget.widget_aksrt_announcement, -.theme-dark .content-layout__aside .widget.widget_aksrt_announcement, -html.dark .content-layout__aside .widget.widget_aksrt_announcement, -.theme-dark .zib-widget.widget_aksrt_announcement, -html.dark .zib-widget.widget_aksrt_announcement, -.zib-widget.widget_aksrt_announcement, -.zib-widget[id^="aksrt_announcement-"], -.zib-widget:has(> .aksrt-announcement), -.widget.widget_aksrt_announcement { - /* The announcement bar owns its surface; avoid stacking the generic widget card around it. */ - background: transparent !important; - background-color: transparent !important; - border: 0 !important; - border-radius: 0 !important; - box-shadow: none !important; - padding: 0 !important; - overflow: visible !important; -} - -/* Category block owns the post cards inside it; remove the generic widget card around the block. */ -.zib-widget.widget_aksrt_category_block, -.zib-widget[id^="aksrt_category_block-"], -.zib-widget:has(> .aksrt-home-widget--category-block) { - background: transparent !important; - background-color: transparent !important; - border: 0 !important; - border-radius: 0 !important; - box-shadow: none !important; - padding: 0 !important; - overflow: visible !important; -} - -.aksrt-announcement-swiper-wrap { - display: flex; - align-items: center; - gap: 10px; - padding: 10px 12px; - border-radius: 8px; - background: var(--surface-1, #fff); - border: 1px solid var(--color-line, #e5e7eb); -} -.aksrt-announcement-swiper-wrap .aksrt-notice-swiper, -.aksrt-announcement-swiper { - flex: 1; - min-width: 0; - height: 28px; - overflow: hidden; -} -.aksrt-announcement-swiper .notice-slide, -.aksrt-announcement-swiper .swiper-slide { - height: 28px; - line-height: 28px; -} -.aksrt-announcement-swiper .text-ellipsis { - display: block; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - color: inherit; - text-decoration: none; -} - -/* Layout gap responsive */ -.aksrt-layout-gap { - width: 100%; - pointer-events: none; -} -@media (max-width: 767px) { - .aksrt-layout-gap { - height: var(--aksrt-gap-m, 20px) !important; - } -} -.widget-custom-html.is-full { - margin-left: calc(50% - 50vw); - margin-right: calc(50% - 50vw); - width: 100vw; - max-width: 100vw; -} - -/* ===== Batch19-21: categories tree, hot meta, paid mini, main renderer, lang ===== */ - -.aksrt-cat-list.has-thumb .aksrt-cat-list__link, -.aksrt-cat-list.is-tree .aksrt-cat-list__link { - display: flex; - align-items: center; - gap: 10px; - text-decoration: none; - color: inherit; -} -.aksrt-cat-list__thumb { - width: 32px; - height: 32px; - border-radius: 8px; - overflow: hidden; - flex: 0 0 auto; - background: var(--surface-2, #f3f4f6); - display: inline-flex; - align-items: center; - justify-content: center; - color: #999; -} -.aksrt-cat-list__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; } -.aksrt-cat-list__text { min-width: 0; flex: 1; display: flex; flex-direction: column; } -.aksrt-cat-list__name { font-weight: 600; } -.aksrt-cat-list__desc { margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.aksrt-cat-list__children { - list-style: none; - margin: 6px 0 0 18px; - padding: 0; - border-left: 2px solid var(--color-line, #e5e7eb); - padding-left: 10px; -} -.aksrt-cat-list .count { - margin-left: auto; - font-size: 12px; - color: var(--muted-2-color, #999); - background: var(--surface-2, #f3f4f6); - border-radius: 999px; - padding: 1px 8px; -} - -.tag-cloud.aksrt-tag-cloud a { transition: transform .15s ease; } -.tag-cloud.aksrt-tag-cloud a:hover { transform: translateY(-1px); } - - -.user-ranking-box .user-ranking-item, -.aksrt-user-ranking-box .user-ranking-item { position: relative; } -.user-ranking-item .avatar-img img { width: 36px; height: 36px; border-radius: 50%; object-fit: cover; display: block; } -.user-ranking-item .badg { white-space: nowrap; } - -.aksrt-category-recommend__card[data-aksrt-animate] { will-change: transform, opacity; } -.aksrt-category-recommend__posts.posts-mini-wrap { margin-top: 8px; } - -/* batch34-36 residual */ -.widget-hot-posts--graphic .hot-posts-graphic { margin-bottom: 12px; border-radius: 8px; overflow: hidden; } -.widget-hot-posts--graphic .hot-posts-graphic .graphic { position: relative; overflow: hidden; border-radius: 8px; background: var(--surface-2, #f3f4f6); } -.widget-hot-posts--graphic .hot-posts-graphic img.fit-cover { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; } -.widget-hot-posts--graphic .linear-mask { - position: absolute; inset: 0; - background: linear-gradient(to top, rgba(0,0,0,.62), transparent 55%); - pointer-events: none; -} -.widget-hot-posts--graphic .abs-center.left-bottom { position: absolute; left: 0; right: 0; bottom: 0; color: #fff; } -.widget-hot-posts--graphic .hot-posts-graphic__title { font-weight: 600; line-height: 1.35; } -.widget-hot-posts--graphic .hot-post-item { position: relative; align-items: flex-start; gap: 0; } -.widget-hot-posts--graphic .hot-post-item__thumb { - flex: 0 0 72px; width: 72px; height: 54px; border-radius: 8px; overflow: hidden; - position: relative; background: var(--surface-2, #f3f4f6); -} -.widget-hot-posts--graphic .hot-post-item__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; } -.widget-hot-posts--graphic badge.img-badge.left.hot { - position: absolute; top: 6px; left: 6px; z-index: 2; - padding: 2px 6px; border-radius: 4px; font-size: 11px; line-height: 1.2; color: #fff; -} -.widget-hot-posts--graphic badge.img-badge.jb-red { background: #f04438; } -.widget-hot-posts--graphic badge.img-badge.jb-yellow { background: #f79009; color: #111; } -.widget-hot-posts--graphic badge.img-badge.b-gray { background: #667085; } -.widget-hot-posts--graphic badge.img-badge.em12 { font-size: 12px; } -.pagenav.ajax-pag { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; align-items: center; margin-top: 12px; } -.pagenav.ajax-pag .page-numbers { - display: inline-flex; min-width: 32px; height: 32px; padding: 0 8px; - align-items: center; justify-content: center; border-radius: 8px; - background: var(--surface-2, #f3f4f6); color: inherit; text-decoration: none; font-size: 13px; -} -.pagenav.ajax-pag .page-numbers.current { background: var(--theme-color, #f04494); color: #fff; } -.pagenav.ajax-pag .page-numbers.dots { background: transparent; min-width: auto; } -.widget-tab-posts__skeleton .placeholder-row { - display: flex; gap: 10px; align-items: center; padding: 8px 0; -} -.widget-tab-posts__skeleton .thumb-placeholder { - width: 56px; height: 42px; border-radius: 6px; background: var(--surface-2, #eee); -} -.widget-tab-posts__skeleton .placeholder.k1, -.widget-tab-posts__skeleton .placeholder.s1 { - height: 12px; border-radius: 4px; background: var(--surface-2, #eee); -} -.widget-tab-posts__skeleton .placeholder.k1 { width: 80%; } -.widget-tab-posts__skeleton .placeholder.s1 { width: 48%; } -.posts-mini-lists.aksrt-main-posts { /* zibll mini outer */ } - - -/* Compact paid-content purchase card for the article sidebar. */ -.aksrt-post-pay-card { - --aksrt-pay-accent: var(--color-primary, #3b82f6); - display: grid; - gap: 12px; - padding: 16px; - border: 1px solid color-mix(in srgb, var(--aksrt-pay-accent) 26%, var(--color-line, #e5e7eb)); - border-radius: 12px; - background: linear-gradient(145deg, color-mix(in srgb, var(--aksrt-pay-accent) 8%, var(--surface-1, #fff)), var(--surface-1, #fff)); -} -.aksrt-post-pay-card.jb-red { --aksrt-pay-accent: #ef4444; } -.aksrt-post-pay-card.jb-yellow { --aksrt-pay-accent: #f59e0b; } -.aksrt-post-pay-card.jb-blue { --aksrt-pay-accent: #3b82f6; } -.aksrt-post-pay-card.jb-green { --aksrt-pay-accent: #22c55e; } -.aksrt-post-pay-card.jb-purple { --aksrt-pay-accent: #8b5cf6; } -.aksrt-post-pay-card.jb-vip1 { --aksrt-pay-accent: #d49a25; } -.aksrt-post-pay-card.jb-vip2 { --aksrt-pay-accent: #64748b; } -.aksrt-post-pay-card__header, -.aksrt-post-pay-card__price-row, -.aksrt-post-pay-card__actions { display: flex; align-items: center; gap: 8px; } -.aksrt-post-pay-card__header { justify-content: space-between; } -.aksrt-post-pay-card__type, -.aksrt-post-pay-card__sales { - font-size: 12px; - line-height: 1; -} -.aksrt-post-pay-card__type { - padding: 5px 8px; - border-radius: 999px; - color: var(--aksrt-pay-accent); - background: color-mix(in srgb, var(--aksrt-pay-accent) 13%, transparent); - font-weight: 700; -} -.aksrt-post-pay-card__sales { color: var(--muted-2-color, #888); } -.aksrt-post-pay-card__price-row { min-height: 32px; } -.aksrt-post-pay-card__price, -.aksrt-post-pay-card__status { color: var(--aksrt-pay-accent); font-size: 25px; line-height: 1.2; } -.aksrt-post-pay-card__status { font-size: 19px; } -.aksrt-post-pay-card__status i { margin-right: 6px; } -.aksrt-post-pay-card__price-row del { color: var(--muted-2-color, #888); font-size: 13px; } -.aksrt-post-pay-card__hint { margin: -4px 0 0; color: var(--muted-2-color, #888); font-size: 12px; } -.aksrt-post-pay-card__actions { align-items: stretch; flex-direction: column; } -.aksrt-post-pay-card__actions .but { justify-content: center; width: 100%; } -.aksrt-main-posts__skeleton .placeholder-row, -.aksrt-product-tab__skeleton .placeholder-row { - display: flex; flex-direction: column; gap: 8px; margin-bottom: 12px; -} -.aksrt-main-posts__skeleton .posts-mini.placeholder-row { flex-direction: row; align-items: center; gap: 10px; } -.aksrt-main-posts__skeleton .thumb-placeholder, -.aksrt-product-tab__skeleton .placeholder.thumb { - width: 72px; height: 54px; border-radius: 8px; background: var(--surface-2, #eee); -} -.aksrt-product-tab__skeleton .placeholder.thumb { width: 100%; height: 100px; } -.aksrt-main-posts__skeleton .placeholder.k1, -.aksrt-main-posts__skeleton .placeholder.t1, -.aksrt-main-posts__skeleton .placeholder.s1, -.aksrt-product-tab__skeleton .placeholder.k1, -.aksrt-product-tab__skeleton .placeholder.s1 { - height: 12px; border-radius: 4px; background: var(--surface-2, #eee); -} -.aksrt-main-posts__skeleton .placeholder.k1, -.aksrt-product-tab__skeleton .placeholder.k1 { width: 80%; } -.aksrt-main-posts__skeleton .placeholder.s1, -.aksrt-product-tab__skeleton .placeholder.s1 { width: 48%; } -.aksrt-main-posts[data-load-mode="ajax"].is-ajax-loading { opacity: .85; } -.widget-search-box.is-affix { position: sticky; top: 72px; } - - -/* batch43-45 residual */ -.aksrt-product-widget__item--mini { - gap: 10px; padding: 8px 0; - border-bottom: 1px solid var(--color-line, rgba(0,0,0,.06)); -} -.aksrt-product-widget__item--mini:last-child { border-bottom: 0; } -.aksrt-product-widget__thumb.mini { - flex: 0 0 56px; width: 56px; height: 56px; border-radius: 8px; overflow: hidden; - background: var(--surface-2, #f3f4f6); display: block; -} -.aksrt-product-widget__thumb.mini img { width: 100%; height: 100%; object-fit: cover; display: block; } -/* batch46-48 residual */ -.widget .is-affix[data-affix="true"], -.ajaxpager.is-affix[data-affix="true"], -.zib-widget.is-affix[data-affix="true"], -.aksrt-author-card.is-affix[data-affix="true"], -.aksrt-text-title.is-affix[data-affix="true"] { - position: sticky; - top: 72px; - z-index: 2; -} -.avatar-img.link-img img.aksrt-lazy { object-fit: cover; } - - -/* batch49-51 residual */ -.aksrt-mod-apply-modal[hidden] { display: none !important; } -.aksrt-mod-apply-modal { - position: fixed; inset: 0; z-index: 10050; - display: flex; align-items: center; justify-content: center; -} -.aksrt-mod-apply-modal__backdrop { - position: absolute; inset: 0; background: rgba(15, 23, 42, .45); -} -.aksrt-mod-apply-modal__dialog { - position: relative; z-index: 1; width: min(420px, calc(100vw - 32px)); - max-height: min(80vh, 560px); overflow: auto; - padding: 16px; border-radius: 12px; background: var(--surface-1, #fff); - box-shadow: 0 18px 50px rgba(0,0,0,.2); -} -.aksrt-mod-apply-modal__dialog textarea { - width: 100%; min-height: 96px; border: 1px solid var(--color-line, #e5e7eb); - border-radius: 8px; padding: 8px 10px; resize: vertical; -} -.aksrt-mod-apply-modal__dialog .js-aksrt-action-feedback.is-error { color: #ef4444; } -.aksrt-mod-apply-modal__dialog .js-aksrt-action-feedback.is-success { color: #10b981; } -.aksrt-mod-apply-modal__dialog .js-aksrt-action-feedback.is-loading { color: #64748b; } -body.aksrt-mod-apply-open { overflow: hidden; } -.aksrt-product-widget__item--list { gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--color-line, rgba(0,0,0,.06)); } -.aksrt-product-widget__item--list:last-child { border-bottom: 0; } -.aksrt-product-widget__thumb.list { - flex: 0 0 80px; width: 80px; height: 80px; border-radius: 10px; overflow: hidden; - background: var(--surface-2, #f3f4f6); display: block; -} -.aksrt-product-widget__thumb.list img { width: 100%; height: 100%; object-fit: cover; display: block; } -.text-ellipsis-2 { - display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; -} diff --git a/assets/css/frontend/widget-slider.css b/assets/css/frontend/widget-slider.css deleted file mode 100644 index 7e64fbec..00000000 --- a/assets/css/frontend/widget-slider.css +++ /dev/null @@ -1,93 +0,0 @@ -/** - * Widget slider (AKSRT 幻灯片). - * @package AKSRT - */ -.aksrt-widget-slider { - position: relative; - overflow: hidden; - border-radius: 8px; - background: var(--surface-2, #f3f4f6); -} -.aksrt-widget-slider__track { - position: relative; - width: 100%; - height: var(--aksrt-slider-h, 220px); -} -.aksrt-widget-slider__slide { - position: absolute; - inset: 0; - opacity: 0; - pointer-events: none; - transition: opacity .35s ease; -} -.aksrt-widget-slider__slide.is-active { - opacity: 1; - pointer-events: auto; - z-index: 1; -} -.aksrt-widget-slider__slide img, -.aksrt-widget-slider__link { - display: block; - width: 100%; - height: 100%; - object-fit: cover; -} -.aksrt-widget-slider__caption { - position: absolute; - left: 0; - right: 0; - bottom: 0; - padding: 10px 12px; - background: linear-gradient(transparent, rgba(0,0,0,.55)); - color: #fff; - display: flex; - flex-direction: column; - gap: 2px; - font-size: 13px; -} -.aksrt-widget-slider__caption strong { - font-size: 14px; -} -.aksrt-widget-slider__prev, -.aksrt-widget-slider__next { - position: absolute; - top: 50%; - transform: translateY(-50%); - z-index: 2; - width: 28px; - height: 28px; - border: 0; - border-radius: 50%; - background: rgba(0,0,0,.35); - color: #fff; - cursor: pointer; - line-height: 28px; - text-align: center; - padding: 0; -} -.aksrt-widget-slider__prev { left: 8px; } -.aksrt-widget-slider__next { right: 8px; } -.aksrt-widget-slider__dots { - position: absolute; - left: 0; - right: 0; - bottom: 8px; - z-index: 2; - display: flex; - justify-content: center; - gap: 6px; - pointer-events: none; -} -.aksrt-widget-slider__dot { - pointer-events: auto; - width: 7px; - height: 7px; - border-radius: 50%; - border: 0; - padding: 0; - background: rgba(255,255,255,.45); - cursor: pointer; -} -.aksrt-widget-slider__dot.is-active { - background: #fff; -} diff --git a/assets/css/frontend/widgets.css b/assets/css/frontend/widgets.css deleted file mode 100644 index 69820df2..00000000 --- a/assets/css/frontend/widgets.css +++ /dev/null @@ -1,11 +0,0 @@ -@import url("widgets/part-1.css"); -@import url("widgets/part-2.css"); -@import url("widgets/part-3.css"); -@import url("widgets/part-4.css"); -@import url("widget-slider.css"); -@import url("widget-batch3.css"); -@import url("widget-batch3c.css"); -@import url("widget-batch3d.css"); -@import url("widget-batch3e.css"); -@import url("widget-batch3f.css"); -@import url("widget-batch5.css"); diff --git a/assets/css/frontend/widgets/part-1.css b/assets/css/frontend/widgets/part-1.css deleted file mode 100644 index c9d68f41..00000000 --- a/assets/css/frontend/widgets/part-1.css +++ /dev/null @@ -1,299 +0,0 @@ -/* ========== 侧栏小工具(模仿 zibll .zib-widget) ========== */ -.content-layout__aside .widget, -.widget-card, -.zib-widget { - clear: both; - background: var(--surface-1); - padding: var(--card-padding); - box-shadow: var(--shadow-sm); - border-radius: var(--radius); - margin-bottom: 20px; - border: 1px solid var(--color-line); -} - -/* Custom HTML widgets: de-card (no background, no padding — matches Zibll) */ -.widget_custom_html, -.zib-widget.widget_custom_html { - background: transparent; - padding: 0; - box-shadow: none; -} - -/* Zibll zib-widget-sm / noshadow modifier */ -.zib-widget-sm, -.zib-widget.noshadow { - box-shadow: none !important; -} - -.widget-title { - font-size: 15px; - font-weight: 700; - margin: 0 0 10px; - padding-bottom: 8px; - position: relative; - color: var(--color-ink); - border-bottom: none; - text-transform: none; - letter-spacing: normal; -} - -/* 标题下划线装饰(模仿 zibll) */ -.widget-title::before { - content: ''; - position: absolute; - left: 0; - bottom: 3px; - width: 40px; - height: 3px; - background: var(--color-primary); - border-radius: 5px; - box-shadow: 1px 1px 3px -1px var(--color-primary); - transition: transform 0.4s ease; - transform-origin: left; -} - -/* 暗色模式 */ -.theme-dark .content-layout__aside .widget, -html.dark .content-layout__aside .widget, -.theme-dark .widget-card, -html.dark .widget-card, -.theme-dark .zib-widget, -html.dark .zib-widget { - background: var(--surface-1); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); -} - -.author-card { - text-align: center; - padding: 28px 20px; - border-radius: var(--radius-lg); - background: linear-gradient(145deg, var(--color-primary) 0%, var(--color-primary-dark) 100%); - color: #fff; - box-shadow: var(--shadow-md); - border: none; -} - -.author-card img { - width: 100px; - height: 100px; - border-radius: var(--radius-avatar); - border: 3px solid rgba(255, 255, 255, 0.35); - margin-bottom: 14px; - object-fit: cover; -} - -.author-card h3 { - margin: 0 0 8px; - color: #fff; - font-size: 1.125rem; -} - -.author-card p { - margin: 0 0 16px; - font-size: 0.875rem; - opacity: 0.92; - line-height: 1.55; -} - -.author-card .social-row, -.author-card .profile-social-links { - justify-content: center; -} - -.profile-social-links { - display: flex; - flex-wrap: wrap; - gap: 10px; - justify-content: center; -} - -.profile-social-links a, -.social-icon-link { - width: 36px; - height: 36px; - border-radius: var(--radius-avatar); - background: rgba(255, 255, 255, 0.2); - display: flex; - align-items: center; - justify-content: center; - color: #fff; - transition: background 0.2s; -} -.profile-social-links a i, -.social-icon-link i { - font-size: 18px; - line-height: 1; - display: block; -} - - -.profile-social-links a:hover, -.social-icon-link:hover { - background: rgba(255, 255, 255, 0.35); - color: #fff; -} - -.widget_search .search-form { - display: flex; - position: relative; -} - -.widget_search label { - position: absolute; - left: 16px; - top: 50%; - transform: translateY(-50%); - color: var(--color-ink-4); -} - -.widget_search .search-field { - width: 100%; - height: 44px; - padding: 0 16px 0 44px; - border-radius: var(--radius-btn); - border: 1px solid var(--color-line); - background: var(--surface-3); - color: var(--color-ink); - font-size: 14px; -} - -.widget_search .search-field:focus { - outline: none; - border-color: var(--color-primary); - box-shadow: 0 0 0 3px var(--color-primary-50); -} - -.widget_search .search-submit { - position: absolute; - right: 4px; - top: 4px; - height: 36px; - padding: 0 14px; - border-radius: 6px; - border: none; - background: var(--color-primary); - color: #fff; - font-weight: 600; - cursor: pointer; -} - -.widget-list { - list-style: none; - margin: 0; - padding: 0; -} - -.widget-list li { - display: flex; - justify-content: space-between; - align-items: center; - padding: 10px 0; - border-bottom: 1px solid var(--color-line); - font-size: 14px; - color: var(--color-ink-3); -} - -.widget-list li:last-child { - border-bottom: none; -} - -.widget-list li a { - flex: 1; - transition: color 0.2s, padding 0.2s; -} - -.widget-list li a:hover { - color: var(--color-primary); - padding-left: 6px; -} - -.widget-list li span { - color: var(--color-ink-4); - font-variant-numeric: tabular-nums; -} - -.widget_recent_entries li, -.recent-posts-row { - display: flex; - gap: 12px; - align-items: flex-start; - padding: 10px 0; - border-bottom: 1px solid var(--color-line); -} - -.widget_recent_entries li:last-child, -.recent-posts-row:last-child { - border-bottom: none; -} - -.recent-posts-row img { - width: 60px; - height: 60px; - border-radius: var(--radius-btn); - object-fit: cover; - flex-shrink: 0; -} - -.tag-cloud { - display: flex; - flex-wrap: wrap; - gap: 8px; -} - -.tag-cloud a { - padding: 6px 12px; - border-radius: var(--radius-pill); - border: 1px solid var(--color-line); - font-weight: 500; - color: var(--color-ink-3); - transition: background 0.2s, border-color 0.2s, color 0.2s; -} - -.tag-cloud a:hover { - border-color: var(--color-primary); - background: var(--color-primary); - color: #fff; -} - -.content-layout__aside .widget:last-child { - margin-bottom: 0; -} - -/* ============================================================ - * 热榜文章小工具 — v4.0 Zibll-Inspired - * ============================================================ */ -.widget-hot-posts { - display: flex; - flex-direction: column; - gap: 0; -} - -.hot-post-item { - display: flex; - align-items: flex-start; - gap: 10px; - padding: 10px 0; - border-bottom: 1px solid var(--color-line); -} - -.hot-post-item:last-child { - border-bottom: none; - padding-bottom: 0; -} - -.hot-post-item:first-child { - padding-top: 0; -} - -.hot-post-item__rank { - display: inline-flex; - align-items: center; - justify-content: center; - width: 22px; - height: 22px; - min-width: 22px; - border-radius: 4px; - font-size: 12px; - font-weight: 700; - background: var(--surface-3); - color: var(--color-ink-4); diff --git a/assets/css/frontend/widgets/part-2.css b/assets/css/frontend/widgets/part-2.css deleted file mode 100644 index 9cc4840d..00000000 --- a/assets/css/frontend/widgets/part-2.css +++ /dev/null @@ -1,312 +0,0 @@ - flex-shrink: 0; - margin-top: 2px; -} - -/* 前三名高亮 */ -.hot-post-item.rank-top .hot-post-item__rank { - background: var(--color-primary); - color: #fff; -} - -.hot-post-item__info { - flex: 1; - min-width: 0; -} - -.hot-post-item__title { - font-size: 13px; - font-weight: 500; - line-height: 1.4; - color: var(--color-ink); - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - overflow: hidden; - transition: color 0.15s ease; -} - -.hot-post-item__title:hover { - color: var(--color-primary); -} - -.hot-post-item__meta { - display: flex; - gap: 10px; - font-size: 11px; - color: var(--color-ink-4); - margin-top: 4px; -} - -.hot-post-item__meta span { - display: inline-flex; - align-items: center; - gap: 3px; -} - -.hot-post-item__meta i { - font-size: 10px; -} - -/* ============================================================ - * 多栏目 Tab 切换小工具 — v4.0 Zibll-Inspired - * ============================================================ */ -.widget-tab-posts__nav { - display: flex; - list-style: none; - margin: 0 0 12px; - padding: 0; - gap: 2px; - border-bottom: 1px solid var(--color-line); -} - -.widget-tab-posts__nav li { - margin: 0; -} - -.widget-tab-posts__tab { - display: inline-block; - padding: 6px 14px; - font-size: 13px; - font-weight: 500; - color: var(--color-ink-4); - background: none; - border: none; - border-bottom: 2px solid transparent; - cursor: pointer; - transition: color 0.15s ease, border-color 0.15s ease; - margin-bottom: -1px; -} - -.widget-tab-posts__tab:hover { - color: var(--color-ink); -} - -.widget-tab-posts__tab.active { - color: var(--color-primary); - border-bottom-color: var(--color-primary); - font-weight: 600; -} - -.widget-tab-posts__panel { - display: none; -} - -.widget-tab-posts__panel.active { - display: block; -} - -.widget-tab-posts__list { - list-style: none; - margin: 0; - padding: 0; -} - -.widget-tab-posts__item { - display: flex; - gap: 10px; - padding: 8px 0; - border-bottom: 1px solid var(--color-line); -} - -.widget-tab-posts__item:last-child { - border-bottom: none; -} - -.widget-tab-posts__thumb { - width: 56px; - height: 42px; - border-radius: 4px; - overflow: hidden; - flex-shrink: 0; -} - -.widget-tab-posts__thumb img { - width: 100%; - height: 100%; - object-fit: cover; -} - -.widget-tab-posts__info { - flex: 1; - min-width: 0; - display: flex; - flex-direction: column; - justify-content: center; -} - -.widget-tab-posts__title { - font-size: 13px; - font-weight: 500; - line-height: 1.4; - color: var(--color-ink); - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - overflow: hidden; - transition: color 0.15s ease; -} - -.widget-tab-posts__title:hover { - color: var(--color-primary); -} - -.widget-tab-posts__meta { - font-size: 11px; - color: var(--color-ink-4); - margin-top: 2px; -} - -.aksrt-homepage__aside .widget-tab-posts__list--mini, -.aksrt-homepage__aside .aksrt-home-widget__sidebar-list { - display: block; -} - -.aksrt-homepage__aside .posts-mini { - display: flex; - align-items: flex-start; - width: 100% !important; - gap: 12px; - padding: 10px 0; - min-width: 0; -} - -.aksrt-homepage__aside .widget-tab-posts__list--mini .posts-mini + .posts-mini, -.aksrt-homepage__aside .aksrt-home-widget__sidebar-list .posts-mini + .posts-mini { - border-top: 1px solid var(--color-line); -} - -.aksrt-homepage__aside .widget-tab-posts__list--mini .posts-mini:first-of-type, -.aksrt-homepage__aside .aksrt-home-widget__sidebar-list .posts-mini:first-of-type { - padding-top: 0; -} - -.aksrt-homepage__aside .widget-tab-posts__list--mini .posts-mini:last-of-type, -.aksrt-homepage__aside .aksrt-home-widget__sidebar-list .posts-mini:last-of-type { - padding-bottom: 0; -} - -.aksrt-homepage__aside .posts-mini-con { - flex: auto; - min-width: 0; - overflow: hidden; -} - -.aksrt-homepage__aside .posts-mini .item-thumbnail { - display: block; - position: relative; - flex: 0 0 96px; - width: 96px; - min-width: 96px; - height: 0; - padding-bottom: var(--posts-list-scale, 70%); - border-radius: var(--radius, 8px); - overflow: hidden; - line-height: 0; -} - -.aksrt-homepage__aside .posts-mini .item-thumbnail img { - position: absolute; - inset: 0; - width: 100%; - height: 100%; - object-fit: cover; - display: block; -} - -.aksrt-homepage__aside .posts-mini .item-heading { - margin: 0; - font-size: 13px; - font-weight: 500; - line-height: 1.45; - max-height: 2.9em; - overflow: hidden; - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; -} - -.aksrt-homepage__aside .posts-mini .item-heading a { - color: var(--color-ink); - text-decoration: none; - transition: color 0.15s ease; -} - -.aksrt-homepage__aside .posts-mini .item-heading a:hover { - color: var(--color-primary, var(--color-primary)); -} - -.aksrt-homepage__aside .posts-mini .item-meta { - display: flex; - align-items: center; - flex-wrap: wrap; - gap: 6px; - margin-top: 6px; - font-size: 12px; - color: var(--color-ink-4); -} - -.aksrt-homepage__aside .posts-mini .item-meta .meta-dot { - width: 3px; - height: 3px; - min-width: 3px; - border-radius: 50%; - background: currentColor; - opacity: 0.55; -} - -.aksrt-homepage__aside .posts-mini .item-meta .meta-item { - display: inline-flex; - align-items: center; - gap: 4px; -} - -.aksrt-homepage__aside .posts-mini .item-meta i { - font-size: 10px; -} - -.aksrt-homepage__aside .widget-hot-posts--mini .hot-post-item { - align-items: stretch; - gap: 12px; -} - -.aksrt-homepage__aside .widget-hot-posts--mini .hot-post-item .posts-mini { - flex: 1; - align-items: flex-start; - min-width: 0; - width: auto !important; - padding: 0; -} - -.aksrt-homepage__aside .widget-hot-posts--mini .hot-post-item .posts-mini-con { - display: flex; - flex: 1 1 auto; - flex-direction: column; - justify-content: center; - min-width: 0; -} - -.aksrt-homepage__aside .widget-hot-posts--mini .hot-post-item__rank { - margin-top: 2px; - align-self: flex-start; -} - -.widget-empty { - text-align: center; - font-size: 13px; - color: var(--color-ink-4); - padding: 16px 0; -} - -/* ============================================================ - - -.aksrt-null--widget { - padding: 12px 0 !important; -} -.aksrt-null--widget .aksrt-null__img { - margin: 0 auto; - display: block; -} -.aksrt-null .separator { - border: 0; -} diff --git a/assets/css/frontend/widgets/part-3.css b/assets/css/frontend/widgets/part-3.css deleted file mode 100644 index b203094d..00000000 --- a/assets/css/frontend/widgets/part-3.css +++ /dev/null @@ -1,332 +0,0 @@ - * Homepage content widgets - * ============================================================ */ -.aksrt-home-widget { - display: block; -} - -.aksrt-home-widget__header { - display: flex; - align-items: center; - justify-content: space-between; - gap: 12px; - margin-bottom: 14px; -} - -.aksrt-home-widget__header--tabs { - align-items: flex-end; - flex-wrap: wrap; -} - -.aksrt-home-widget__title { - position: relative; - margin: 0; - padding-left: 16px; - color: var(--color-ink); - font: 700 15px/1.4 var(--font-ui, var(--font-ui)); -} - -.aksrt-home-widget__title::before { - content: ""; - position: absolute; - top: 10%; - bottom: 10%; - left: 2px; - width: 4px; - border-radius: 5px; - background: var(--color-primary); - box-shadow: 1px 1px 3px -1px var(--color-primary); -} - -.aksrt-home-widget__more { - display: inline-flex; - align-items: center; - justify-content: center; - min-height: 30px; - padding: 0 12px; - border-radius: 20px; - background: var(--surface-3); - color: var(--color-ink-3); - font-size: 12px; - font-weight: 600; - transition: background 0.2s ease, color 0.2s ease; -} - -.aksrt-home-widget__more:hover { - background: var(--color-primary); - color: #fff; -} - -.aksrt-home-widget__footer { - display: flex; - justify-content: center; - margin-top: 16px; -} - -.aksrt-home-widget__tab-nav.widget-tab-posts__nav { - margin: 0; - padding: 0; - gap: 4px; - border-bottom: 0; - flex: 1 1 auto; - justify-content: flex-end; - flex-wrap: wrap; -} - -.aksrt-home-widget__tab-nav .widget-tab-posts__tab { - padding: 5px 12px; - margin-bottom: 0; - border: 0; - border-radius: 20px; - background: var(--surface-3); - color: var(--color-ink-3); -} - -.aksrt-home-widget__tab-nav .widget-tab-posts__tab:hover { - color: var(--color-primary); -} - -.aksrt-home-widget__tab-nav .widget-tab-posts__tab.active { - background: var(--color-primary); - color: #fff; -} - -.aksrt-home-widget__post-grid { - display: grid; - grid-template-columns: 1fr; - gap: 16px; -} - -.aksrt-home-widget__post-grid--list { - gap: 0; -} - -@media (min-width: 640px) { - .aksrt-home-widget__post-grid--card, - .aksrt-home-widget__post-grid--grid-cms { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } -} - -@media (min-width: 992px) { - .aksrt-home-widget__post-grid--card, - .aksrt-home-widget__post-grid--grid-cms { - grid-template-columns: repeat(var(--aksrt-widget-columns, 3), minmax(0, 1fr)); - } -} - -.aksrt-home-widget__post-grid .posts-item.card { - height: 100%; - border: 1px solid var(--color-line); - box-shadow: none; -} - -.aksrt-home-widget__post-grid .posts-item.card:hover { - transform: none; - box-shadow: 0 0 10px var(--main-shadow, rgba(116, 116, 116, 0.08)); -} - -/* Category block uses the unified renderer's .posts-row wrapper. Keep its card - * layout horizontal and wrap according to the configured column count. */ -.zib-widget.widget_aksrt_category_block .posts-row.post-grid--card, -.zib-widget[id^="aksrt_category_block-"] .posts-row.post-grid--card { - display: grid; - grid-template-columns: 1fr; - gap: 16px; - margin: 0; - font-size: initial; -} - -.zib-widget.widget_aksrt_category_block .posts-row.post-grid--card > .posts-item.card, -.zib-widget[id^="aksrt_category_block-"] .posts-row.post-grid--card > .posts-item.card { - width: auto; - display: block; - margin: 0; -} - -@media (min-width: 640px) { - .zib-widget.widget_aksrt_category_block .posts-row.post-grid--card, - .zib-widget[id^="aksrt_category_block-"] .posts-row.post-grid--card { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } -} - -@media (min-width: 992px) { - .zib-widget.widget_aksrt_category_block .posts-row.post-grid--card, - .zib-widget[id^="aksrt_category_block-"] .posts-row.post-grid--card { - grid-template-columns: repeat(var(--aksrt-widget-columns, 3), minmax(0, 1fr)); - } -} - -.aksrt-home-widget__post-grid .posts-item.list { - border-bottom: 1px solid var(--color-line); -} - -.aksrt-home-widget__post-grid .posts-item.list:last-child { - border-bottom: 0; -} - -.aksrt-home-widget__post-grid .item-heading { - font-size: 14px; -} - -.aksrt-home-widget__post-grid .item-tags { - gap: 0; - margin-bottom: 6px; -} - -.aksrt-home-widget__post-grid .item-tags .badge { - margin-right: 5px; - padding: 2px 5px; - font-size: 11px; - line-height: 1.4; -} - -.aksrt-home-widget__post-grid .item-meta { - font-size: 12px; -} - -.aksrt-home-widget__sidebar-list { - margin: 0; - padding: 0; -} - -.aksrt-home-widget__sidebar-list .widget-tab-posts__item:first-child { - padding-top: 0; -} - -.aksrt-category-recommend__grid { - display: grid; - grid-template-columns: 1fr; - gap: 16px; -} - -@media (min-width: 768px) { - .aksrt-category-recommend__grid { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } -} - -@media (min-width: 992px) { - .aksrt-category-recommend__grid { - grid-template-columns: repeat(var(--aksrt-recommend-columns, 2), minmax(0, 1fr)); - } -} - -.aksrt-category-recommend__card { - display: flex; - flex-direction: column; - min-width: 0; - background: var(--surface-page); - border: 1px solid var(--color-line); - border-radius: 8px; - overflow: hidden; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04); - transition: transform 0.2s ease, box-shadow 0.2s ease; -} - -.aksrt-category-recommend__card:hover { - transform: none; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04); -} - -.aksrt-category-recommend__hero { - position: relative; - aspect-ratio: 16 / 9; - overflow: hidden; - background: var(--surface-3); -} - -.aksrt-category-recommend__hero > a { - position: absolute; - inset: 0; - display: block; -} - -.aksrt-category-recommend__cover { - width: 100%; - height: 100%; - object-fit: cover; - transition: transform 0.3s ease; -} - -.aksrt-category-recommend__card:hover .aksrt-category-recommend__cover { - transform: scale(1.04); -} - -.aksrt-category-recommend__badge, -.aksrt-category-recommend__views { - position: absolute; - top: 10px; - z-index: 2; - display: inline-flex; - align-items: center; - gap: 4px; - min-height: 24px; - padding: 0 9px; - border-radius: 20px; - font-size: 11px; - font-weight: 600; - color: #fff; - background: rgba(17, 24, 39, 0.72); - backdrop-filter: blur(8px); -} - -.aksrt-category-recommend__badge { - left: 10px; -} - -.aksrt-category-recommend__views { - right: 10px; -} - -.aksrt-category-recommend__body { - display: flex; - flex: 1 1 auto; - flex-direction: column; - gap: 12px; - padding: 14px; -} - -.aksrt-category-recommend__meta { - display: flex; - flex-direction: column; - gap: 6px; -} - -.aksrt-category-recommend__name { - margin: 0; - font-size: 15px; - line-height: 1.35; -} - -.aksrt-category-recommend__name a { - color: var(--color-ink); -} - -.aksrt-category-recommend__name a:hover { - color: var(--color-primary); -} - -.aksrt-category-recommend__desc { - margin: 0; - color: var(--color-ink-4); - font-size: 13px; - line-height: 1.55; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; - overflow: hidden; -} - -.aksrt-category-recommend__posts { - list-style: none; - margin: 0; - padding: 0; - border-top: 1px solid var(--color-line); -} - -.aksrt-category-recommend__post { - display: flex; - align-items: center; - gap: 8px; - justify-content: space-between; diff --git a/assets/css/frontend/widgets/part-4.css b/assets/css/frontend/widgets/part-4.css deleted file mode 100644 index 4775276a..00000000 --- a/assets/css/frontend/widgets/part-4.css +++ /dev/null @@ -1,95 +0,0 @@ - padding: 9px 0; - border-bottom: 1px dashed var(--color-line); -} - -.aksrt-category-recommend__post:last-child { - border-bottom: 0; -} - -.aksrt-category-recommend__post-link { - flex: 1 1 auto; - min-width: 0; - font-size: 13px; - line-height: 1.45; - color: var(--color-ink); - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.aksrt-category-recommend__post-link:hover { - color: var(--color-primary); -} - -.aksrt-category-recommend__date { - flex: 0 0 auto; - color: var(--color-ink-4); - font-size: 11px; - white-space: nowrap; -} - -@media (max-width: 767.98px) { - .aksrt-home-widget__header, - .aksrt-home-widget__header--tabs { - align-items: flex-start; - flex-direction: column; - } - - .aksrt-home-widget__tab-nav.widget-tab-posts__nav { - justify-content: flex-start; - } -} - -/* ============================================================ - * 流体挂件区(Fluid Widget Areas) - * 模仿 zibll 的 all_top_fluid / single_top_fluid 等全宽挂载位 - * ============================================================ */ -.aksrt-fluid-widget { - width: 100%; - max-width: var(--container-wide, 1440px); - margin: 0 auto; - padding: 0 16px; -} - -@media (min-width: 768px) { - .aksrt-fluid-widget { - padding: 0 24px; - } -} - -.aksrt-fluid-widget .widget { - margin-bottom: 0; -} - -.aksrt-fluid-widget--all-top { - padding-top: 16px; -} - -.aksrt-fluid-widget--all-bottom { - padding-bottom: 16px; -} - -.aksrt-fluid-widget--home-top { - margin-bottom: 24px; -} - -.aksrt-fluid-widget--single-top { - margin-bottom: 24px; -} - -.aksrt-fluid-widget--single-bottom { - margin-top: 24px; -} - -.aksrt-fluid-widget--archive-bottom { - margin-top: 24px; -} - -/* 流体挂件区内无边框无背景(全宽展示) */ -.aksrt-fluid-widget .widget_custom_html { - background: transparent; - border: none; - box-shadow: none; - padding: 0; -} - diff --git a/assets/js/widget-set.js b/assets/js/widget-set.js deleted file mode 100644 index 71bcb5b6..00000000 --- a/assets/js/widget-set.js +++ /dev/null @@ -1,337 +0,0 @@ -/** - * AKSRT Widget Set - * - * Handles widget-local interactions and floating QR widgets. - * - * @package AKSRT - */ - -(function () { - 'use strict'; - - function restHeaders() { - var headers = { Accept: 'application/json' }; - if (window.aksrtData && aksrtData.restNonce) { - headers['X-WP-Nonce'] = aksrtData.restNonce; - } - return headers; - } - - function initWidgetTabs() { - document.querySelectorAll('.widget-tab-posts[data-aksrt-tab-posts]').forEach(function (widget) { - if (widget.dataset.aksrtWidgetTabsBound === '1') return; - widget.dataset.aksrtWidgetTabsBound = '1'; - - var tabs = widget.querySelectorAll('.widget-tab-posts__tab'); - var panels = widget.querySelectorAll('.widget-tab-posts__panel'); - if (!tabs.length || !panels.length) return; - var rest = widget.getAttribute('data-rest') || ''; - var defaultCount = widget.getAttribute('data-count') || '5'; - - function loadPanel(panel, tab) { - if (!panel || panel.getAttribute('data-loaded') === '1' || !rest) return; - var orderby = tab.getAttribute('data-orderby') || 'date'; - var cat = tab.getAttribute('data-cat') || '0'; - var tabCount = tab.getAttribute('data-tab-count') || '0'; - var style = widget.getAttribute('data-style') || 'mini'; - var paginate = widget.getAttribute('data-paginate') || 'none'; - var qs = new URLSearchParams({ - count: defaultCount, - orderby: orderby, - cat: cat, - tab_count: tabCount, - style: style, - paginate: paginate, - limit_day: tab.getAttribute('data-limit-day') || '0', - pay_type: tab.getAttribute('data-pay-type') || '', - }); - var url = rest + (rest.indexOf('?') > -1 ? '&' : '?') + qs.toString(); - panel.classList.add('is-ajax-loading'); - fetch(url, { credentials: 'same-origin', headers: restHeaders() }) - .then(function (r) { return r.json(); }) - .then(function (j) { - var d = (j && j.data) || j || {}; - var html = d.html || ''; - var pag = d.paginate_html || d.paginateHtml || ''; - panel.innerHTML = (html || '

暂无文章

') + (pag || ''); - panel.setAttribute('data-loaded', '1'); - panel.classList.remove('is-ajax-loading'); - }) - .catch(function () { - panel.classList.remove('is-ajax-loading'); - }); - } - - tabs.forEach(function (tab) { - tab.addEventListener('click', function () { - var target = tab.getAttribute('data-tab'); - tabs.forEach(function (item) { - var active = item === tab; - item.classList.toggle('active', active); - item.classList.toggle('is-active', active); - item.setAttribute('aria-selected', active ? 'true' : 'false'); - }); - panels.forEach(function (panel) { - var active = panel.getAttribute('data-tab-panel') === target; - panel.classList.toggle('active', active); - panel.classList.toggle('is-active', active); - if (active) { - panel.removeAttribute('hidden'); - loadPanel(panel, tab); - } else { - panel.setAttribute('hidden', ''); - } - }); - }); - }); - }); - } - - // Homepage category tabs (was inline in CategoryTabsWidget). - function initCategoryTabs() { - document.querySelectorAll('[data-aksrt-home-cat-tabs]').forEach(function (section) { - if (section.dataset.aksrtCatTabsBound === '1') return; - section.dataset.aksrtCatTabsBound = '1'; - var rest = section.getAttribute('data-rest') || ''; - var count = section.getAttribute('data-count') || '6'; - var layout = section.getAttribute('data-layout') || 'card'; - var columns = section.getAttribute('data-columns') || '3'; - var context = section.getAttribute('data-context') || 'homepage'; - var showMore = section.getAttribute('data-show-more') === '1'; - var tabs = [].slice.call(section.querySelectorAll('.widget-tab-posts__tab')); - var panels = [].slice.call(section.querySelectorAll('.widget-tab-posts__panel')); - if (!tabs.length || !panels.length || !rest) return; - - function load(panel) { - if (!panel || panel.getAttribute('data-loaded') === '1') return; - var cat = panel.getAttribute('data-cat') || '0'; - var more = panel.getAttribute('data-more') || ''; - var qs = new URLSearchParams({ - cat: cat, - count: String(count), - layout: layout, - columns: String(columns), - context: context, - }); - var url = rest + (rest.indexOf('?') > -1 ? '&' : '?') + qs.toString(); - panel.classList.add('is-ajax-loading'); - fetch(url, { credentials: 'same-origin', headers: restHeaders() }) - .then(function (r) { return r.json(); }) - .then(function (j) { - var d = (j && j.data) || j || {}; - var html = d.html || ''; - if (showMore && more) { - html += ''; - } - panel.innerHTML = html || '
暂无文章
'; - panel.setAttribute('data-loaded', '1'); - panel.classList.remove('is-ajax-loading'); - }) - .catch(function () { - panel.classList.remove('is-ajax-loading'); - }); - } - - tabs.forEach(function (tab) { - tab.addEventListener('click', function () { - var target = tab.getAttribute('data-tab'); - tabs.forEach(function (item) { - var active = item === tab; - item.classList.toggle('active', active); - item.setAttribute('aria-selected', active ? 'true' : 'false'); - }); - panels.forEach(function (panel) { - var active = panel.getAttribute('data-tab-panel') === target; - panel.classList.toggle('active', active); - if (active) { - panel.removeAttribute('hidden'); - load(panel); - } else { - panel.setAttribute('hidden', ''); - } - }); - }); - }); - }); - } - - // Product multi-tab. - function initProductTabs() { - document.querySelectorAll('[data-aksrt-product-tab]').forEach(function (root) { - if (root.dataset.aksrtProductTabBound === '1') return; - root.dataset.aksrtProductTabBound = '1'; - var rest = root.getAttribute('data-rest') || ''; - var per = root.getAttribute('data-per-page') || '8'; - var style = root.getAttribute('data-style') || 'default'; - var paginate = root.getAttribute('data-paginate') || 'ajax'; - - function skeleton(n) { - n = Math.max(1, Math.min(12, parseInt(n, 10) || 4)); - var html = '
'; - for (var i = 0; i < n; i++) { - html += '
'; - } - return html + '
'; - } - - function loadPanel(panel, btn) { - if (!panel || panel.getAttribute('data-loaded') === '1' || !rest) return; - var grid = panel.querySelector('[data-aksrt-ajaxpager]'); - if (!grid) return; - var qs = new URLSearchParams({ - page: '1', - per_page: per, - style: style, - paginate: paginate, - orderby: btn.getAttribute('data-orderby') || 'date', - order: 'DESC', - cat_ids: btn.getAttribute('data-cat-ids') || '', - tag_ids: btn.getAttribute('data-tag-ids') || '', - discount_ids: btn.getAttribute('data-discount-ids') || '', - }); - var url = rest + (rest.indexOf('?') > -1 ? '&' : '?') + qs.toString(); - grid.classList.add('is-ajax-loading'); - if (!grid.querySelector('.aksrt-product-tab__skeleton') && !grid.querySelector('.ajax-item')) { - grid.insertAdjacentHTML('afterbegin', skeleton(per)); - } - fetch(url, { credentials: 'same-origin', headers: restHeaders() }) - .then(function (r) { return r.json(); }) - .then(function (j) { - var d = (j && j.data && (j.data.data || j.data)) || j || {}; - var html = d.html || ''; - var pag = d.paginate_html || d.paginateHtml || ''; - var loader = grid.querySelector('[data-aksrt-ajax-loader]'); - grid.innerHTML = ''; - if (html) grid.insertAdjacentHTML('beforeend', html); - else grid.insertAdjacentHTML('beforeend', '

暂无商品

'); - if (pag) grid.insertAdjacentHTML('beforeend', pag); - if (loader) grid.appendChild(loader); - panel.setAttribute('data-loaded', '1'); - grid.classList.remove('is-ajax-loading'); - }) - .catch(function () { - grid.classList.remove('is-ajax-loading'); - }); - } - - root.querySelectorAll('.aksrt-product-tab__header').forEach(function (btn) { - btn.addEventListener('click', function () { - root.querySelectorAll('.aksrt-product-tab__header').forEach(function (b) { - b.classList.remove('is-active'); - }); - root.querySelectorAll('.aksrt-product-tab__panel').forEach(function (p) { - p.style.display = 'none'; - p.classList.remove('is-active'); - }); - btn.classList.add('is-active'); - var idx = btn.getAttribute('data-tab-index'); - var panel = root.querySelector('.aksrt-product-tab__panel[data-tab-index="' + idx + '"]'); - if (panel) { - panel.style.display = ''; - panel.classList.add('is-active'); - loadPanel(panel, btn); - } - }); - }); - }); - } - - // Main posts load_mode=ajax first paint. - function initMainPostsLazy() { - document.querySelectorAll('.aksrt-main-posts[data-load-mode="ajax"]').forEach(function (root) { - if (root.dataset.aksrtMainLazyBound === '1') return; - root.dataset.aksrtMainLazyBound = '1'; - if (root.getAttribute('data-loaded') === '1') return; - var rest = root.getAttribute('data-aksrt-ajax-url') || root.getAttribute('data-rest') || ''; - if (!rest) return; - var qs = root.getAttribute('data-query') || ''; - var url = rest + (rest.indexOf('?') > -1 ? '&' : '?') + (qs || 'page=1'); - root.classList.add('is-ajax-loading'); - fetch(url, { credentials: 'same-origin', headers: restHeaders() }) - .then(function (r) { return r.json(); }) - .then(function (j) { - var d = (j && j.data) || j || {}; - var html = d.html || ''; - var pag = d.paginate_html || d.paginateHtml || ''; - var loader = root.querySelector('[data-aksrt-ajax-loader]'); - // Remove skeleton rows. - root.querySelectorAll('.aksrt-main-posts__skeleton, .posts-mini.placeholder-row, .placeholder-row').forEach(function (n) { - n.remove(); - }); - if (html) { - root.insertAdjacentHTML('afterbegin', html); - } else { - root.insertAdjacentHTML('afterbegin', '

暂无文章

'); - } - // Replace/append paginate. - var oldPag = root.querySelector('.ajax-pag, .pagenav.ajax-pag'); - if (oldPag) oldPag.remove(); - if (pag) { - if (loader) loader.insertAdjacentHTML('beforebegin', pag); - else root.insertAdjacentHTML('beforeend', pag); - } - root.setAttribute('data-loaded', '1'); - root.classList.remove('is-ajax-loading'); - }) - .catch(function () { - root.classList.remove('is-ajax-loading'); - }); - }); - } - - function initFloatingQRCodes() { - var wrap = document.querySelector('.float-right'); - if (!wrap) return; - - wrap.querySelectorAll('.service-wechat .hover-show-con p, .service-qq .hover-show-con p').forEach(function (node) { - node.remove(); - }); - - if (typeof window.kjua !== 'function') return; - - wrap.querySelectorAll('.float-btn-qrcode').forEach(function (node) { - if (node.dataset.qrReady === '1') return; - - // footer.php uses data-qrcode-url; keep data-qr-text as fallback alias - var qrText = - node.getAttribute('data-qrcode-url') || - node.getAttribute('data-qr-text') || - window.location.href; - var qrSize = parseInt(node.getAttribute('data-qr-size') || '120', 10); - if (!qrText || !qrSize) return; - - try { - node.innerHTML = ''; - node.appendChild(window.kjua({ - render: 'svg', - text: qrText, - size: qrSize, - ecLevel: 'H', - fill: '#15171A', - back: '#FFFFFF', - quiet: 0, - crisp: true - })); - node.style.width = qrSize + 'px'; - node.style.height = qrSize + 'px'; - node.dataset.qrReady = '1'; - } catch (error) { - node.dataset.qrReady = '0'; - } - }); - } - - function init() { - initWidgetTabs(); - initCategoryTabs(); - initProductTabs(); - initMainPostsLazy(); - initFloatingQRCodes(); - } - - if (document.readyState === 'loading') { - document.addEventListener('DOMContentLoaded', init); - } else { - init(); - } -})(); diff --git a/assets/widgets/admin.css b/assets/widgets/admin.css index 1326c64f..a5a68d8a 100644 --- a/assets/widgets/admin.css +++ b/assets/widgets/admin.css @@ -159,6 +159,39 @@ .aksrt-widget-form-lazy__status { margin-top: 0; color: #646970; } +.aksrt-widget-placement-hint { + display: flex; + gap: 6px; + align-items: flex-start; + margin: 10px 0 0; + padding: 8px; + border-left: 3px solid #72aee6; + background: #f0f6fc; + color: #50575e; +} + +.aksrt-widget-placement-hint.is-warning { + border-color: #dba617; + background: #fcf9e8; + color: #614200; +} + +.aksrt-widget-transfer { margin: 16px 20px 16px 0; } +.aksrt-widget-transfer__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; } +.aksrt-widget-transfer form { display: grid; align-content: start; gap: 9px; padding: 12px; border: 1px solid #dcdcde; border-radius: 6px; } +.aksrt-widget-transfer form h3 { margin: 0 0 3px; } +.aksrt-widget-transfer select, +.aksrt-widget-transfer input[type="file"] { width: 100%; } +.aksrt-widget-transfer__actions { display: flex; flex-wrap: wrap; gap: 8px; } +.aksrt-widget-template-preview-output { grid-column: 1 / -1; max-height: 520px; overflow: auto; padding: 14px; border: 1px solid #dcdcde; background: #fff; } +.aksrt-widget-template-preview__area { margin-bottom: 18px; } +.aksrt-widget-template-preview__module { margin: 10px 0; padding: 12px; border: 1px dashed #c3c4c7; border-radius: 6px; } + +@media (max-width: 1100px) { + .aksrt-widget-transfer__grid { grid-template-columns: 1fr; } + .aksrt-widget-template-preview-output { grid-column: auto; } +} + @media (prefers-reduced-motion: reduce) { .aksrt-widget-switch span, .aksrt-widget-switch span::after { transition: none; } diff --git a/assets/widgets/admin.js b/assets/widgets/admin.js index 7e60bc3d..f411b637 100644 --- a/assets/widgets/admin.js +++ b/assets/widgets/admin.js @@ -16,8 +16,29 @@ if (output) this.addEventListener('input', () => { output.textContent = this.value; }); }); evaluateDependencies($root); + updateWidgetTitle($root); + updatePlacementWarning($root); } + function updateWidgetTitle(root) { + const $root = $(root); + const title = String($root.find('.aksrt-widget-field[data-field-id="title"] input').first().val() || '').trim(); + if (!title) return; + $root.closest('.widget').find('.widget-title h3, .widget-title-action + h3').first().contents().filter(function () { + return this.nodeType === Node.TEXT_NODE; + }).first().replaceWith(`${title} `); + } + + function updatePlacementWarning(root) { + const $widget = $(root).closest('.widget'); + const $hint = $widget.find('.aksrt-widget-placement-hint').first(); + if (!$hint.length) return; + const size = String($hint.data('widget-size') || 'any'); + const area = String($widget.closest('.widgets-sortables').attr('id') || ''); + const isSidebar = /sidebar/.test(area); + $hint.toggleClass('is-warning', (size === 'wide' && isSidebar) || (size === 'sidebar' && !isSidebar && area !== '')); + } + function loadForm(container) { const $container = $(container); if ($container.data('loading') || $container.data('loaded')) return; @@ -82,7 +103,11 @@ $(document) .on('click', '.aksrt-widget-form-lazy__load', function () { loadForm($(this).closest('.aksrt-widget-form-lazy')); }) .on('click', '.widget.open .aksrt-widget-form-lazy', function () { loadForm(this); }) - .on('change input', '.aksrt-widget-form input, .aksrt-widget-form select, .aksrt-widget-form textarea', function () { evaluateDependencies($(this).closest('.aksrt-widget-form')); }) + .on('change input', '.aksrt-widget-form input, .aksrt-widget-form select, .aksrt-widget-form textarea', function () { + const $form = $(this).closest('.aksrt-widget-form'); + evaluateDependencies($form); + updateWidgetTitle($form); + }) .on('click', '.aksrt-widget-repeater__add', function () { const $repeater = $(this).closest('.aksrt-widget-repeater'); const max = Number($repeater.data('max-items') || 50); @@ -116,10 +141,24 @@ const $wrap = $(this).closest('.aksrt-widget-upload'); $wrap.find('input[type="url"]').val('').trigger('change'); $wrap.find('img').remove(); - }); + }) + .on('click', '.aksrt-widget-template-preview', function () { + const $form = $(this).closest('form'); + const $output = $('.aksrt-widget-template-preview-output').first(); + $output.prop('hidden', false).html('

正在生成预览…

'); + $.post(config.ajaxUrl, { + action: 'aksrt_widgets_template_preview', + nonce: config.transferNonce, + template: $form.find('[name="template"]').val(), + }).done((response) => { + if (!response?.success) throw new Error('Invalid response'); + $output.html(response.data.html || '

模板为空。

'); + }).fail(() => $output.html('

预览加载失败。

')); + }); $(document).on('widget-added widget-updated', function (_event, widget) { $(widget).find('.aksrt-widget-form-lazy').each(function () { loadForm(this); }); + updatePlacementWarning(widget); }); $(function () { diff --git a/assets/widgets/third-party/DPlayer.min.js b/assets/widgets/third-party/DPlayer.min.js new file mode 100644 index 00000000..f15b197b --- /dev/null +++ b/assets/widgets/third-party/DPlayer.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("DPlayer",[],t):"object"==typeof exports?exports.DPlayer=t():e.DPlayer=t()}(window,function(){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:i})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var r in e)t.d(i,r,function(t){return e[t]}.bind(null,r));return i},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/",t(t.s=23)}([function(e,t){function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var i;i=function(){return this}();try{i=i||new Function("return this")()}catch(e){"object"===("undefined"==typeof window?"undefined":n(window))&&(i=window)}e.exports=i},function(e,t,n){"use strict";var i=n(4),r=n.n(i)()(function(e){return e[1]});r.push([e.i,'.dplayer{position:relative;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:1}.dplayer *{box-sizing:content-box}.dplayer svg{width:100%;height:100%}.dplayer svg circle,.dplayer svg path{fill:#fff}.dplayer:-webkit-full-screen{width:100%;height:100%;background:#000;position:fixed;z-index:100000;left:0;top:0;margin:0;padding:0;transform:translate(0)}.dplayer.dplayer-live .dplayer-bar-wrap,.dplayer.dplayer-live .dplayer-controller .dplayer-icons .dplayer-loop,.dplayer.dplayer-live .dplayer-time{display:none}@media (min-width:900px){.dplayer.dplayer-playing .dplayer-controller,.dplayer.dplayer-playing .dplayer-controller-mask{opacity:0}.dplayer.dplayer-playing:hover .dplayer-controller,.dplayer.dplayer-playing:hover .dplayer-controller-mask{opacity:1}}.dplayer.dplayer-loading .dplayer-bezel .diplayer-loading-icon{display:block}.dplayer.dplayer-hide-controller{cursor:none}.dplayer.dplayer-hide-controller .dplayer-controller,.dplayer.dplayer-hide-controller .dplayer-controller-mask{opacity:0;transform:translateY(100%)}.dplayer.dplayer-fulled{position:fixed;z-index:100000;left:0;top:0;width:100%!important;height:100%!important}.dplayer.dplayer-mobile .dplayer-bar-time,.dplayer.dplayer-mobile .dplayer-controller .dplayer-icons .dplayer-full-in,.dplayer.dplayer-mobile .dplayer-controller .dplayer-icons .dplayer-volume{display:none}.dplayer-web-fullscreen-fix{position:fixed;top:0;left:0;margin:0;padding:0}.dplayer-bezel{position:absolute;left:0;right:0;top:0;bottom:0;font-size:22px;color:#fff;pointer-events:none}.dplayer-bezel .dplayer-bezel-icon{position:absolute;top:50%;left:50%;margin:-26px 0 0 -26px;height:52px;width:52px;padding:12px;box-sizing:border-box;background:rgba(0,0,0,.5);border-radius:50%;opacity:0;pointer-events:none}.dplayer-bezel .dplayer-bezel-icon.dplayer-bezel-transition{-webkit-animation:bezel-hide .5s linear;animation:bezel-hide .5s linear}@-webkit-keyframes bezel-hide{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}@keyframes bezel-hide{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}.dplayer-bezel .diplayer-loading-icon{display:none;position:absolute;top:50%;left:50%;margin:-18px 0 0 -18px;height:36px;width:36px;pointer-events:none}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-hide{display:none}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot{-webkit-animation:diplayer-loading-dot-fade .8s ease infinite;animation:diplayer-loading-dot-fade .8s ease infinite;opacity:0;transform-origin:4px 4px}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-7{-webkit-animation-delay:.7s;animation-delay:.7s}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-6{-webkit-animation-delay:.6s;animation-delay:.6s}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-5{-webkit-animation-delay:.5s;animation-delay:.5s}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-4{-webkit-animation-delay:.4s;animation-delay:.4s}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-3{-webkit-animation-delay:.3s;animation-delay:.3s}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-2{-webkit-animation-delay:.2s;animation-delay:.2s}.dplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-1{-webkit-animation-delay:.1s;animation-delay:.1s}@-webkit-keyframes diplayer-loading-dot-fade{0%{opacity:.7;transform:scale(1.2)}50%{opacity:.25;transform:scale(.9)}to{opacity:.25;transform:scale(.85)}}@keyframes diplayer-loading-dot-fade{0%{opacity:.7;transform:scale(1.2)}50%{opacity:.25;transform:scale(.9)}to{opacity:.25;transform:scale(.85)}}.dplayer-controller-mask{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==) repeat-x bottom;height:98px;width:100%}.dplayer-controller,.dplayer-controller-mask{position:absolute;bottom:0;transition:all .3s ease}.dplayer-controller{left:0;right:0;height:41px;padding:0 20px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dplayer-controller .dplayer-bar-wrap{padding:5px 0;cursor:pointer;position:absolute;bottom:33px;width:calc(100% - 40px);height:3px}.dplayer-controller .dplayer-bar-wrap:hover .dplayer-bar .dplayer-played .dplayer-thumb{transform:scale(1)}.dplayer-controller .dplayer-bar-wrap .dplayer-bar-time{position:absolute;left:0;top:-20px;border-radius:4px;padding:5px 7px;background-color:rgba(0,0,0,.62);color:#fff;font-size:12px;text-align:center;opacity:1;transition:opacity .1s ease-in-out;word-wrap:normal;word-break:normal;z-index:2;pointer-events:none}.dplayer-controller .dplayer-bar-wrap .dplayer-bar-time.hidden{opacity:0}.dplayer-controller .dplayer-bar-wrap .dplayer-bar{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.dplayer-controller .dplayer-bar-wrap .dplayer-bar .dplayer-loaded{background:hsla(0,0%,100%,.4);transition:all .5s ease}.dplayer-controller .dplayer-bar-wrap .dplayer-bar .dplayer-loaded,.dplayer-controller .dplayer-bar-wrap .dplayer-bar .dplayer-played{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width}.dplayer-controller .dplayer-bar-wrap .dplayer-bar .dplayer-played .dplayer-thumb{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0)}.dplayer-controller .dplayer-icons{height:38px;position:absolute;bottom:0}.dplayer-controller .dplayer-icons.dplayer-icons-left .dplayer-icon{padding:7px}.dplayer-controller .dplayer-icons.dplayer-icons-right{right:20px}.dplayer-controller .dplayer-icons.dplayer-icons-right .dplayer-icon{padding:8px}.dplayer-controller .dplayer-icons .dplayer-live-badge,.dplayer-controller .dplayer-icons .dplayer-time{line-height:38px;color:#eee;text-shadow:0 0 2px rgba(0,0,0,.5);vertical-align:middle;font-size:13px;cursor:default}.dplayer-controller .dplayer-icons .dplayer-live-dot{display:inline-block;width:6px;height:6px;vertical-align:4%;margin-right:5px;content:"";border-radius:6px}.dplayer-controller .dplayer-icons .dplayer-icon{width:40px;height:100%;border:none;background-color:transparent;outline:none;position:relative;cursor:pointer;vertical-align:middle;box-sizing:border-box;display:inline-block}.dplayer-controller .dplayer-icons .dplayer-icon .dplayer-icon-content{transition:all .2s ease-in-out;opacity:.8}.dplayer-controller .dplayer-icons .dplayer-icon:hover .dplayer-icon-content{opacity:1}.dplayer-controller .dplayer-icons .dplayer-icon.dplayer-volume-icon{width:43px}.dplayer-controller .dplayer-icons .dplayer-volume{position:relative;display:inline-block;cursor:pointer;height:100%}.dplayer-controller .dplayer-icons .dplayer-volume:hover .dplayer-volume-bar-wrap .dplayer-volume-bar{width:45px}.dplayer-controller .dplayer-icons .dplayer-volume:hover .dplayer-volume-bar-wrap .dplayer-volume-bar .dplayer-volume-bar-inner .dplayer-thumb{transform:scale(1)}.dplayer-controller .dplayer-icons .dplayer-volume.dplayer-volume-active .dplayer-volume-bar-wrap .dplayer-volume-bar{width:45px}.dplayer-controller .dplayer-icons .dplayer-volume.dplayer-volume-active .dplayer-volume-bar-wrap .dplayer-volume-bar .dplayer-volume-bar-inner .dplayer-thumb{transform:scale(1)}.dplayer-controller .dplayer-icons .dplayer-volume .dplayer-volume-bar-wrap{display:inline-block;margin:0 15px 0 -5px;vertical-align:middle;height:100%}.dplayer-controller .dplayer-icons .dplayer-volume .dplayer-volume-bar-wrap .dplayer-volume-bar{position:relative;top:17px;width:0;height:3px;background:#aaa;transition:all .3s ease-in-out}.dplayer-controller .dplayer-icons .dplayer-volume .dplayer-volume-bar-wrap .dplayer-volume-bar .dplayer-volume-bar-inner{position:absolute;bottom:0;left:0;height:100%;transition:all .1s ease;will-change:width}.dplayer-controller .dplayer-icons .dplayer-volume .dplayer-volume-bar-wrap .dplayer-volume-bar .dplayer-volume-bar-inner .dplayer-thumb{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0)}.dplayer-controller .dplayer-icons .dplayer-full,.dplayer-controller .dplayer-icons .dplayer-full-in,.dplayer-controller .dplayer-icons .dplayer-loop,.dplayer-icons .dplayer-setting{display:inline-block;height:100%}.dplayer-setting-box.dplayer-setting-box-speed { position: absolute;color:#aaa; left: -11px;transform-origin: bottom; bottom: 40px; transform: scale(0); border-radius: 2px; background: rgba(28, 28, 28, 0.9); padding: 0; transition: all 0.2s ease; overflow: hidden; z-index: 2; width: 70px; }.dplayer-setting-box.dplayer-setting-box-open { transform: scale(1); }.dplayer-setting-speed-item {padding: 7px 10px; box-sizing: border-box; cursor: pointer; position: relative; }.dplayer-setting .dplayer-setting-speed-item:hover { background-color: rgba(255, 255, 255, 0.1); }.dplayer-controller .dplayer-icons.dplayer-icons-right .dplayer-icon.dplayer-setting-icon { width: auto; color: #eee; }@media (max-width: 640px){.dplayer-controller .dplayer-icons.dplayer-icons-right { right: 10px; }.dplayer-icons.dplayer-icons-left { left: 6px; }} .dplayer-notice{opacity:0;position:absolute;bottom:60px;left:20px;font-size:14px;border-radius:2px;background:rgba(28,28,28,.9);padding:7px 20px;transition:all .3s ease-in-out;overflow:hidden;color:#fff;pointer-events:none}.dplayer-mask{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1;display:none}.dplayer-mask.dplayer-mask-show{display:block}.dplayer-video-wrap{position:relative;background:#000;font-size:0;width:100%;height:100%}.dplayer-video-wrap .dplayer-video{width:100%;height:100%;display:none}.dplayer-video-wrap .dplayer-video-current{display:block}',""]),t.a=r},function(e,t,n){"use strict";e.exports=n(21)},function(e,t,n){"use strict";function i(e){for(var t=-1,n=0;n'},function(e){e.exports=''},function(e){e.exports=''},function(e){e.exports=''},function(e){e.exports=''},function(e){e.exports=''},function(e){e.exports=''},function(e){e.exports=''},function(e){e.exports=''},function(e,t,n){var i=n(2);e.exports=function(e){"use strict";var t="",r=function(e){return t+=e},o=(e=e||{}).video,a=e.icons,l=i.$escape,s=e.options,c=e.tran;return t+='
\n
\n ',r(n(22)(o)),t+='\n
\n \n ',t+=a.loading,t+='\n
\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n \n
\n
\n
\n
\n \n 0:00 / 0:00\n \n ',s.live&&(t+='\n ',t+=l(c("Live")),t+="\n "),t+='\n
\n
\n
0.75x
1.0x
1.25x
1.5x
2.0x
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n
'}},function(e,t,n){(function(e){function i(e,t){this._id=e,this._clearFn=t}var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;t.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},n(19),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(0))},function(e,t,n){(function(e,t){!function(e){"use strict";function n(e){delete d[e]}function i(e){if(p)setTimeout(i,0,e);else{var t=d[e];if(t){p=!0;try{!function(e){var t=e.callback,n=e.args;switch(n.length){case 0:t();break;case 1:t(n[0]);break;case 2:t(n[0],n[1]);break;case 3:t(n[0],n[1],n[2]);break;default:t.apply(void 0,n)}}(t)}finally{n(e),p=!1}}}}if(!e.setImmediate){var r,o,a,l,s,c=1,d={},p=!1,u=e.document,y=Object.getPrototypeOf&&Object.getPrototypeOf(e);y=y&&y.setTimeout?y:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick(function(){i(e)})}:function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?(l="setImmediate$"+Math.random()+"$",s=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(l)&&i(+t.data.slice(l.length))},e.addEventListener?e.addEventListener("message",s,!1):e.attachEvent("onmessage",s),r=function(t){e.postMessage(l+t,"*")}):e.MessageChannel?((a=new MessageChannel).port1.onmessage=function(e){i(e.data)},r=function(e){a.port2.postMessage(e)}):u&&"onreadystatechange"in u.createElement("script")?(o=u.documentElement,r=function(e){var t=u.createElement("script");t.onreadystatechange=function(){i(e),t.onreadystatechange=null,o.removeChild(t),t=null},o.appendChild(t)}):r=function(e){setTimeout(i,0,e)},y.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n1)for(var n=1;n]/;i.$escape=function(e){return function(e){var t=""+e,n=r.exec(t);if(!n)return e;var i="",o=void 0,a=void 0,l=void 0;for(o=n.index,a=0;o"}},function(e,t,n){"use strict";function i(e,t){for(var n=0;n0?[t,n,i]:[n,i]).map(function(e){return e<10?"0"+e:""+e}).join(":")},getElementViewLeft:function(e){var t=e.offsetLeft,n=e.offsetParent,i=document.body.scrollLeft+document.documentElement.scrollLeft;if(document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement)for(;null!==n&&n!==e;)t+=n.offsetLeft,n=n.offsetParent;else for(;null!==n;)t+=n.offsetLeft,n=n.offsetParent;return t-i},getBoundingClientRectViewLeft:function(e){var t=window.scrollY||window.pageYOffset||document.body.scrollTop+(document.documentElement&&document.documentElement.scrollTop||0);if(e.getBoundingClientRect){if("number"!=typeof this.getBoundingClientRectViewLeft.offset){var n=document.createElement("div");n.style.cssText="position:absolute;top:0;left:0;",document.body.appendChild(n),this.getBoundingClientRectViewLeft.offset=-n.getBoundingClientRect().top-t,document.body.removeChild(n),n=null}var i=e.getBoundingClientRect(),r=this.getBoundingClientRectViewLeft.offset;return i.left+r}return this.getElementViewLeft(e)},getScrollPosition:function(){return{left:window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0,top:window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0}},setScrollPosition:function(e){var t=e.left,n=void 0===t?0:t,i=e.top,r=void 0===i?0:i;this.isFirefox?(document.documentElement.scrollLeft=n,document.documentElement.scrollTop=r):window.scrollTo(n,r)},isMobile:g,isFirefox:/firefox/i.test(window.navigator.userAgent),isChrome:/chrome/i.test(window.navigator.userAgent),nameMap:{dragStart:g?"touchstart":"mousedown",dragMove:g?"touchmove":"mousemove",dragEnd:g?"touchend":"mouseup"}},w={"zh-cn":{"Video load failed":"视频加载失败","Go forward":"快进","Go back":"快退",seconds:"秒",Volume:"音量",Live:"直播",speed:"倍速"},"zh-tw":{"Video load failed":"視頻加載失敗","Go forward":"快進","Go back":"快退",seconds:"秒",Volume:"音量",Live:"直播",speed:"倍速"}},x=function(e){var t=this;this.lang=e,this.tran=function(e){return w[t.lang]&&w[t.lang][e]?w[t.lang][e]:e}},k=n(8),T=n.n(k),E=n(9),L=n.n(E),S=n(10),M=n.n(S),B=n(11),z=n.n(B),q=n(12),F=n.n(q),j=n(13),_=n.n(j),O=n(14),C=n.n(O),A=n(15),P=n.n(A),I=n(16),R=n.n(I),W={play:T.a,pause:L.a,loop:M.a,volumeUp:z.a,volumeDown:F.a,volumeOff:_.a,full:C.a,fullWeb:P.a,loading:R.a},H=n(17),V=n.n(H),D=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.container=t.container,this.options=t.options,this.tran=t.tran,this.init()}var t,n,r;return t=e,(n=[{key:"init",value:function(){this.container.innerHTML=V()({options:this.options,tran:this.tran,icons:W,video:{pic:this.options.video.pic,preload:this.options.preload,url:this.options.video.url}}),this.volumeBar=this.container.querySelector(".dplayer-volume-bar-inner"),this.volumeBarWrap=this.container.querySelector(".dplayer-volume-bar"),this.volumeBarWrapWrap=this.container.querySelector(".dplayer-volume-bar-wrap"),this.volumeButton=this.container.querySelector(".dplayer-volume"),this.volumeButtonIcon=this.container.querySelector(".dplayer-volume-icon"),this.volumeIcon=this.container.querySelector(".dplayer-volume-icon .dplayer-icon-content"),this.playedBar=this.container.querySelector(".dplayer-played"),this.loadedBar=this.container.querySelector(".dplayer-loaded"),this.playedBarWrap=this.container.querySelector(".dplayer-bar-wrap"),this.playedBarTime=this.container.querySelector(".dplayer-bar-time"),this.video=this.container.querySelector(".dplayer-video-current"),this.bezel=this.container.querySelector(".dplayer-bezel-icon"),this.playButton=this.container.querySelector(".dplayer-play-icon"),this.videoWrap=this.container.querySelector(".dplayer-video-wrap"),this.controllerMask=this.container.querySelector(".dplayer-controller-mask"),this.ptime=this.container.querySelector(".dplayer-ptime"),this.loopButton=this.container.querySelector(".dplayer-loop-icon"),this.loopIcon=this.container.querySelector(".dplayer-loop-icon .dplayer-icon-content"),this.dtime=this.container.querySelector(".dplayer-dtime"),this.browserFullButton=this.container.querySelector(".dplayer-full-icon"),this.webFullButton=this.container.querySelector(".dplayer-full-in-icon"),this.settingBox=this.container.querySelector(".dplayer-setting-box"),this.settingButton=this.container.querySelector(".dplayer-setting-icon"),this.speedItem=this.container.querySelectorAll(".dplayer-setting-speed-item"),this.notice=this.container.querySelector(".dplayer-notice")}}])&&i(t.prototype,n),r&&i(t,r),e}(),U=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.events={},this.videoEvents=["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","mozaudioavailable","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"],this.playerEvents=["loop_enable","loop_disable","notice_show","notice_hide","destroy","resize","fullscreen","fullscreen_cancel","webfullscreen","webfullscreen_cancel"]}var t,n,i;return t=e,(n=[{key:"on",value:function(e,t){this.type(e)&&"function"==typeof t&&(this.events[e]||(this.events[e]=[]),this.events[e].push(t))}},{key:"trigger",value:function(e,t){if(this.events[e]&&this.events[e].length)for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:"browser";switch(e){case"browser":return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;case"web":return this.player.container.classList.contains("dplayer-fulled")}}},{key:"request",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"browser",t="browser"===e?"web":"browser",n=this.isFullScreen(t);switch(n||(this.lastScrollPosition=b.getScrollPosition()),e){case"browser":this.player.container.classList.add("dplayer-fulled-browser"),this.player.container.requestFullscreen?this.player.container.requestFullscreen():this.player.container.mozRequestFullScreen?this.player.container.mozRequestFullScreen():this.player.container.webkitRequestFullscreen?this.player.container.webkitRequestFullscreen():this.player.video.webkitEnterFullscreen?this.player.video.webkitEnterFullscreen():this.player.video.webkitEnterFullScreen?this.player.video.webkitEnterFullScreen():this.player.container.msRequestFullscreen&&this.player.container.msRequestFullscreen();break;case"web":this.player.container.classList.add("dplayer-fulled"),document.body.classList.add("dplayer-web-fullscreen-fix"),this.player.events.trigger("webfullscreen")}n&&this.cancel(t)}},{key:"cancel",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"browser";switch(e){case"browser":this.player.container.classList.remove("dplayer-fulled-browser"),document.cancelFullScreen?document.cancelFullScreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitCancelFullScreen?document.webkitCancelFullScreen():document.webkitCancelFullscreen?document.webkitCancelFullscreen():document.msCancelFullScreen?document.msCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen();break;case"web":this.player.container.classList.remove("dplayer-fulled"),document.body.classList.remove("dplayer-web-fullscreen-fix"),this.player.events.trigger("webfullscreen_cancel")}}},{key:"toggle",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"browser";this.isFullScreen(e)?this.cancel(e):this.request(e)}}])&&o(t.prototype,n),i&&o(t,i),e}(),X=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.elements={},this.elements.volume=t.volumeBar,this.elements.played=t.playedBar,this.elements.loaded=t.loadedBar}var t,n,i;return t=e,(n=[{key:"set",value:function(e,t,n){t=Math.max(t,0),t=Math.min(t,1),this.elements[e].style[n]=100*t+"%"}},{key:"get",value:function(e){return parseFloat(this.elements[e].style.width)/100}}])&&a(t.prototype,n),i&&a(t,i),e}(),$=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.player=t,window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)},this.types=["loading"],this.init()}var t,n,i;return t=e,(n=[{key:"init",value:function(){var e=this;this.types.map(function(t){return e["init".concat(t,"Checker")](),t})}},{key:"initloadingChecker",value:function(){var e=this,t=0,n=0,i=!1;this.loadingChecker=setInterval(function(){e.enableloadingChecker&&(n=e.player.video.currentTime,i||n!==t||e.player.video.paused||(e.player.container.classList.add("dplayer-loading"),i=!0),i&&n>t&&!e.player.video.paused&&(e.player.container.classList.remove("dplayer-loading"),i=!1),t=n)},100)}},{key:"enable",value:function(e){this["enable".concat(e,"Checker")]=!0}},{key:"disable",value:function(e){this["enable".concat(e,"Checker")]=!1}},{key:"destroy",value:function(){var e=this;this.types.map(function(t){return e["enable".concat(t,"Checker")]=!1,e["".concat(t,"Checker")]&&clearInterval(e["".concat(t,"Checker")]),t})}}])&&l(t.prototype,n),i&&l(t,i),e}(),G=function(){function e(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.container=t,this.container.addEventListener("animationend",function(){n.container.classList.remove("dplayer-bezel-transition")})}var t,n,i;return t=e,(n=[{key:"switch",value:function(e){this.container.innerHTML=e,this.container.classList.add("dplayer-bezel-transition")}}])&&s(t.prototype,n),i&&s(t,i),e}(),Y=function(){function e(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.player=t,this.autoHideTimer=0,b.isMobile||this.player.container.addEventListener("mousemove",function(){n.setAutoHide()}),this.player.container.addEventListener("click",function(){n.setAutoHide()}),this.player.on("play",function(){n.setAutoHide(),n.hideSetting()}),this.player.on("pause",function(){n.setAutoHide()}),this.initPlayButton(),this.initPlayedBar(),this.initFullButton(),b.isMobile||this.initVolumeButton(),n.player.template.settingButton.addEventListener("click",function(e){e.preventDefault(),n.toggleSetting()});for(var i=0;ie.player.template.playedBarWrap.offsetWidth)return;var r=e.player.video.duration*(i/e.player.template.playedBarWrap.offsetWidth);e.player.template.playedBarTime.style.left="".concat(i-(r>=3600?25:20),"px"),e.player.template.playedBarTime.innerText=b.secondToTime(r),e.player.template.playedBarTime.classList.remove("hidden")}e.setAutoHide()}),b.isMobile||(this.player.template.playedBarWrap.addEventListener("mouseenter",function(){e.player.video.duration&&e.player.template.playedBarTime.classList.remove("hidden")}),this.player.template.playedBarWrap.addEventListener("mouseleave",function(){e.player.video.duration&&e.player.template.playedBarTime.classList.add("hidden")}))}},{key:"initFullButton",value:function(){var e=this;this.player.template.browserFullButton.addEventListener("click",function(){e.player.fullScreen.toggle("browser")}),this.player.template.webFullButton.addEventListener("click",function(){e.player.fullScreen.toggle("web")})}},{key:"initVolumeButton",value:function(){var e=this,t=function(t){var n=t||window.event,i=((n.clientX||n.changedTouches[0].clientX)-b.getBoundingClientRectViewLeft(e.player.template.volumeBarWrap)-5.5)/35;e.player.volume(i)},n=function n(){document.removeEventListener(b.nameMap.dragEnd,n),document.removeEventListener(b.nameMap.dragMove,t),e.player.template.volumeButton.classList.remove("dplayer-volume-active")};this.player.template.volumeBarWrapWrap.addEventListener("click",function(t){var n=t||window.event,i=((n.clientX||n.changedTouches[0].clientX)-b.getBoundingClientRectViewLeft(e.player.template.volumeBarWrap)-5.5)/35;e.player.volume(i)}),this.player.template.volumeBarWrapWrap.addEventListener(b.nameMap.dragStart,function(){document.addEventListener(b.nameMap.dragMove,t),document.addEventListener(b.nameMap.dragEnd,n),e.player.template.volumeButton.classList.add("dplayer-volume-active")}),this.player.template.volumeButtonIcon.addEventListener("click",function(){e.player.video.muted?(e.player.video.muted=!1,e.player.switchVolumeIcon(),e.player.bar.set("volume",e.player.volume(),"width")):(e.player.video.muted=!0,e.player.template.volumeIcon.innerHTML=W.volumeOff,e.player.bar.set("volume",0,"width"))})}},{key:"setAutoHide",value:function(){var e=this;this.show(),clearTimeout(this.autoHideTimer),this.autoHideTimer=setTimeout(function(){e.player.video.played.length&&e.hide()},3e3)}},{key:"show",value:function(){this.player.container.classList.remove("dplayer-hide-controller")}},{key:"hide",value:function(){this.player.container.classList.add("dplayer-hide-controller")}},{key:"isShow",value:function(){return!this.player.container.classList.contains("dplayer-hide-controller")}},{key:"toggle",value:function(){this.isShow()?this.hide():this.show()}},{key:"destroy",value:function(){clearTimeout(this.autoHideTimer)}},{key:"showSetting",value:function(){this.player.template.settingBox.classList.add("dplayer-setting-box-open")}},{key:"hideSetting",value:function(){this.player.template.settingBox.classList.remove("dplayer-setting-box-open")}},{key:"toggleSetting",value:function(){this.player.template.settingBox.classList.contains("dplayer-setting-box-open")?this.hideSetting():this.showSetting()}}])&&c(t.prototype,n),i&&c(t,i),e}(),J=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),document.addEventListener("keydown",function(e){if(t.focus){var n,i=e||window.event;switch(i.keyCode){case 27:t.fullScreen.isFullScreen("web")&&t.fullScreen.cancel("web");break;case 32:i.preventDefault(),t.toggle(),t.controller.setAutoHide();break;case 37:if(i.preventDefault(),t.options.live)break;t.seek(t.video.currentTime-3,!0);break;case 39:if(i.preventDefault(),t.options.live)break;t.seek(t.video.currentTime+3,!0);break;case 38:i.preventDefault(),n=t.volume()+.01,t.volume(n,!0);break;case 40:i.preventDefault(),n=t.volume()-.01,t.volume(n,!0)}}})},Q=[],Z=function(){function e(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.options=function(e){var t={container:e.element||document.getElementsByClassName("dplayer")[0],live:!1,autoplay:!1,theme:"#b7daff",loop:!1,lang:(navigator.language||navigator.browserLanguage).toLowerCase(),preload:"auto",volume:1,video:{},mutex:!0,pluginOptions:{hls:{},flv:{},dash:{},webtorrent:{}}};for(var n in t)t.hasOwnProperty(n)&&!e.hasOwnProperty(n)&&(e[n]=t[n]);return e.video&&!e.video.type&&(e.video.type="auto"),e.lang&&(e.lang=e.lang.toLowerCase()),e}(function(e){for(var t=1;te&&t&&this.notice("".concat(this.tran("Go back")," ").concat((this.video.currentTime-e).toFixed(0)," ").concat(this.tran("seconds"))),this.video.currentTime=e,this.bar.set("played",e/this.video.duration,"width"),this.template.ptime.innerHTML=b.secondToTime(e)}},{key:"play",value:function(e){var t=this;if(this.paused=!1,this.video.paused&&this.bezel.switch(W.play),this.template.playButton.innerHTML=W.pause,e||m.a.resolve(this.video.play()).catch(function(){t.pause()}).then(function(){}),this.timer.enable("loading"),this.container.classList.add("dplayer-playing"),this.options.mutex)for(var n=0;n=.8?this.template.volumeIcon.innerHTML=W.volumeUp:this.volume()>0?this.template.volumeIcon.innerHTML=W.volumeDown:this.template.volumeIcon.innerHTML=W.volumeOff}},{key:"volume",value:function(e,t){return e=parseFloat(e),isNaN(e)||(e=Math.max(e,0),e=Math.min(e,1),this.bar.set("volume",e,"width"),t&&this.notice("".concat(this.tran("Volume")," ").concat((100*e).toFixed(0),"%")),this.video.volume=e,this.video.muted&&(this.video.muted=!1),this.switchVolumeIcon()),this.video.volume}},{key:"toggle",value:function(){this.video.paused?this.play():this.pause()}},{key:"on",value:function(e,t){this.events.on(e,t)}},{key:"speed",value:function(e){this.video.playbackRate=e,e=e%1==0?e+".0":e.toString(),this.template.settingButton.innerHTML=e+"x"}},{key:"switchVideo",value:function(e,t){var n=this.video.playbackRate;this.pause(),this.video.poster=e.pic?e.pic:"",this.video.src=e.url,this.initMSE(this.video,e.type||"auto"),t&&(this.template.danmakuLoading.style.display="block",this.bar.set("played",0,"width"),this.bar.set("loaded",0,"width"),this.template.ptime.innerHTML="00:00",this.template.danmaku.innerHTML=""),this.speed(n)}},{key:"initMSE",value:function(e,t){var n=this;if(this.type=t,this.options.video.customType&&this.options.video.customType[t])"[object Function]"===Object.prototype.toString.call(this.options.video.customType[t])?this.options.video.customType[t](this.video,this):console.error("Illegal customType: ".concat(t));else switch("auto"===this.type&&(/m3u8(#|\?|$)/i.exec(e.src)?this.type="hls":/.flv(#|\?|$)/i.exec(e.src)?this.type="flv":/.mpd(#|\?|$)/i.exec(e.src)?this.type="dash":this.type="normal"),"hls"===this.type&&(e.canPlayType("application/x-mpegURL")||e.canPlayType("application/vnd.apple.mpegURL"))&&(this.type="normal"),this.type){case"hls":if(window.Hls)if(window.Hls.isSupported()){var i=this.options.pluginOptions.hls,r=new window.Hls(i);this.plugins.hls=r,r.loadSource(e.src),r.attachMedia(e),this.events.on("destroy",function(){r.destroy(),delete n.plugins.hls})}else this.notice("Error: Hls is not supported.");else this.notice("Error: Can't find Hls.");break;case"flv":if(window.flvjs)if(window.flvjs.isSupported()){var o=window.flvjs.createPlayer(Object.assign(this.options.pluginOptions.flv.mediaDataSource||{},{type:"flv",url:e.src}),this.options.pluginOptions.flv.config);this.plugins.flvjs=o,o.attachMediaElement(e),o.load(),this.events.on("destroy",function(){o.unload(),o.detachMediaElement(),o.destroy(),delete n.plugins.flvjs})}else this.notice("Error: flvjs is not supported.");else this.notice("Error: Can't find flvjs.");break;case"dash":if(window.dashjs){var a=window.dashjs.MediaPlayer().create(),l=this.options.pluginOptions.dash;a.initialize(e,e.src,!1),a.updateSettings(l),this.plugins.dash=a,this.events.on("destroy",function(){window.dashjs.MediaPlayer().reset(),delete n.plugins.dash})}else this.notice("Error: Can't find dashjs.");break;case"webtorrent":if(window.WebTorrent)if(window.WebTorrent.WEBRTC_SUPPORT){this.container.classList.add("dplayer-loading");var s=this.options.pluginOptions.webtorrent,c=new window.WebTorrent(s);this.plugins.webtorrent=c;var d=e.src;e.src="",e.preload="metadata",e.addEventListener("durationchange",function(){return n.container.classList.remove("dplayer-loading")},{once:!0}),c.add(d,function(e){e.files.find(function(e){return e.name.endsWith(".mp4")}).renderTo(n.video,{autoplay:n.options.autoplay,controls:!1})}),this.events.on("destroy",function(){c.remove(d),c.destroy(),delete n.plugins.webtorrent})}else this.notice("Error: Webtorrent is not supported.");else this.notice("Error: Can't find Webtorrent.")}}},{key:"initVideo",value:function(e,t){var n=this;this.initMSE(e,t),this.on("durationchange",function(){1!==e.duration&&e.duration!==1/0&&(n.template.dtime.innerHTML=b.secondToTime(e.duration))}),this.on("progress",function(){var t=e.buffered.length?e.buffered.end(e.buffered.length-1)/e.duration:0;n.bar.set("loaded",t,"width")}),this.on("error",function(){n.video.error&&n.tran&&n.notice&&"webtorrent"!==n.type&&n.notice(n.tran("Video load failed"),-1)}),this.on("ended",function(){n.bar.set("played",1,"width"),n.loop?(n.seek(0),n.play()):n.pause()}),this.on("play",function(){n.paused&&n.play(!0)}),this.on("pause",function(){n.paused||n.pause(!0)}),this.on("timeupdate",function(){n.bar.set("played",n.video.currentTime/n.video.duration,"width");var e=b.secondToTime(n.video.currentTime);n.template.ptime.innerHTML!==e&&(n.template.ptime.innerHTML=e)});for(var i=function(t){e.addEventListener(n.events.videoEvents[t],function(){n.events.trigger(n.events.videoEvents[t])})},r=0;r1&&void 0!==arguments[1]?arguments[1]:1500,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.8;this.template.notice.innerHTML=e,this.template.notice.style.opacity=i,this.noticeTime&&clearTimeout(this.noticeTime),this.events.trigger("notice_show",e),n>0&&(this.noticeTime=setTimeout(function(){t.template.notice.style.opacity=0,t.events.trigger("notice_hide")},n))}},{key:"resize",value:function(){this.events.trigger("resize")}},{key:"destroy",value:function(){Q.splice(Q.indexOf(this),1),this.pause(),this.controller.destroy(),this.timer.destroy(),this.video.src="",this.container.innerHTML="",this.events.trigger("destroy")}}])&&u(t.prototype,n),i&&u(t,i),e}();t.default=Z}]).default}); \ No newline at end of file diff --git a/assets/widgets/third-party/THIRD_PARTY.md b/assets/widgets/third-party/THIRD_PARTY.md new file mode 100644 index 00000000..e3ee9a13 --- /dev/null +++ b/assets/widgets/third-party/THIRD_PARTY.md @@ -0,0 +1,15 @@ +# Widget third-party assets + +Only libraries requested by the 37-widget registry are shipped. The five player/tilt files are pinned byte-for-byte from the frozen reference directory `C:\Users\Xing\Desktop\zibll\js\libs`; Swiper was already bundled by AKSRT and is shared with the new widget runtime. + +| Asset | Upstream | License | SHA-256 | +|---|---|---|---| +| `DPlayer.min.js` | [DPlayer](https://github.com/DIYgod/DPlayer) | MIT | `361689807fc1e856f868df91036e41195d2c255619bd1c5526849c5ad7491241` | +| `hls.min.js` | [hls.js](https://github.com/video-dev/hls.js) | Apache-2.0 | `e876282a26116e323c8ed3e86bed3838a80dbbe3a2faa09f834bee86963ff760` | +| `flv.min.js` | [flv.js](https://github.com/bilibili/flv.js) | Apache-2.0 | `0668d36757cdc17804d5c0bd6fe8956d76370e73a733bf5bbc0eddbfbca2c6cc` | +| `dash.all.min.js` | [dash.js](https://github.com/Dash-Industry-Forum/dash.js) | BSD-3-Clause | `3e753969c16a2a78f420a25d24869f14721eb1d284418f9f22d35a31c3693cd9` | +| `vanilla-tilt.min.js` | [vanilla-tilt.js](https://github.com/micku7zu/vanilla-tilt.js) | MIT | `de6fa8d3f40dbae2726a72f7d1ae46bb0588267af05355bef1d128f737f4a282` | +| `../../js/swiper-bundle.min.js` | [Swiper 11.2.10](https://github.com/nolimits4web/swiper) | MIT | `985f1224c0eeec99d367a9db35e58e44b21e7eb9ce45831b15b4c108e41fd97f` | +| `../../css/frontend/swiper-bundle.min.css` | [Swiper 11.2.10](https://github.com/nolimits4web/swiper) | MIT | `74ca6aae5468dbc924790c3b4d219a089b90a34bad53a0f7ca3a73e73b6f5ab8` | + +The hashes are the release contract. Do not replace these files through a CDN or silently update them. diff --git a/assets/widgets/third-party/dash.all.min.js b/assets/widgets/third-party/dash.all.min.js new file mode 100644 index 00000000..dd2d63d5 --- /dev/null +++ b/assets/widgets/third-party/dash.all.min.js @@ -0,0 +1,4 @@ + +/*! v3.2.1-a2315f4e, 2021-02-22T11:57:47Z */ +!function r(i,a,o){function s(t,e){if(!a[t]){if(!i[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(u)return u(t,!0);throw(n=new Error("Cannot find module '"+t+"'")).code="MODULE_NOT_FOUND",n}n=a[t]={exports:{}},i[t][0].call(n.exports,function(e){return s(i[t][1][e]||e)},n,n.exports,r,i,a,o)}return a[t].exports}for(var u="function"==typeof require&&require,e=0;e>6):(r<65536?t.push(224|r>>12):(t.push(240|r>>18),t.push(128|63&r>>12)),t.push(128|63&r>>6)),t.push(128|63&r))}return t},decode:function(e){for(var t=[],n=0;n>18)),n.push(o.charAt(63&i>>12)),n.push(o.charAt(63&i>>6)),n.push(o.charAt(63&i))}return 2==e.length-t?(i=(e[t]<<16)+(e[t+1]<<8),n.push(o.charAt(63&i>>18)),n.push(o.charAt(63&i>>12)),n.push(o.charAt(63&i>>6)),n.push("=")):1==e.length-t&&(i=e[t]<<16,n.push(o.charAt(63&i>>18)),n.push(o.charAt(63&i>>12)),n.push("==")),n.join("")}function f(e){for(var t=0,n=[],r=0|e.length/4;0>16),n.push(255&i>>8),n.push(255&i),t+=4}return n&&("="==e.charAt(t-2)?(n.pop(),n.pop()):"="==e.charAt(t-1)&&n.pop()),n}o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=function(){for(var e=[],t=0;t=n&&console.log(this.time+" ["+e+"] "+t)}};u.prototype={reset:function(){this.foreground="white",this.underline=!1,this.italics=!1,this.background="black",this.flash=!1},setStyles:function(e){for(var t=["foreground","underline","italics","background","flash"],n=0;n ("+s([a,o])+")"),(n=(n=(n=(n=this.parseCmd(a,o))||this.parseMidrow(a,o))||this.parsePAC(a,o))||this.parseBackgroundAttributes(a,o))||(r=this.parseChars(a,o))&&(this.currChNr&&0<=this.currChNr?this.channels[this.currChNr-1].insertChars(r):c.log("WARNING","No channel found yet. TEXT-MODE?")),n?this.dataCounters.cmd+=2:r?this.dataCounters.char+=2:(this.dataCounters.other+=2,c.log("WARNING","Couldn't parse cleaned data "+s([a,o])+" orig: "+s([t[i],t[i+1]])))):this.dataCounters.padding+=2}},parseCmd:function(e,t){var n=null;if(!((20===e||21===e||28===e||29===e)&&32<=t&&t<=47)&&!((23===e||31===e)&&33<=t&&t<=35))return!1;n=20===e||21===e||23===e?1:2;var r=this.channels[n-1];return 20===e||21===e||28===e||29===e?32===t?r.cc_RCL():33===t?r.cc_BS():34===t?r.cc_AOF():35===t?r.cc_AON():36===t?r.cc_DER():37===t?r.cc_RU(2):38===t?r.cc_RU(3):39===t?r.cc_RU(4):40===t?r.cc_FON():41===t?r.cc_RDC():42===t?r.cc_TR():43===t?r.cc_RTD():44===t?r.cc_EDM():45===t?r.cc_CR():46===t?r.cc_ENM():47===t&&r.cc_EOC():r.cc_TO(t-32),this.lastCmdA=e,this.lastCmdB=t,this.currChNr=n,!0},parseMidrow:function(e,t){var n=null;if((17===e||25===e)&&32<=t&&t<=47){if((n=17===e?1:2)!==this.currChNr)return c.log("ERROR","Mismatch channel in midrow parsing"),!1;n=this.channels[n-1];return n.insertChars([32]),n.cc_MIDROW(t),c.log("DEBUG","MIDROW ("+s([e,t])+")"),this.lastCmdA=e,this.lastCmdB=t,!0}return!1},parsePAC:function(e,t){var n,r=null;if(!((17<=e&&e<=23||25<=e&&e<=31)&&64<=t&&t<=127)&&!((16===e||24===e)&&64<=t&&t<=95))return!1;n=e<=23?1:2,r=(64<=t&&t<=95?1==n?i:l:1==n?a:d)[e];r=this.interpretPAC(r,t);return this.channels[n-1].setPAC(r),this.lastCmdA=e,this.lastCmdB=t,this.currChNr=n,!0},interpretPAC:function(e,t){var n=t,e={color:null,italics:!1,indent:null,underline:!1,row:e},n=95/g,">").replace(/"/g,""").replace(/'/g,"'"):e}function R(e,t,n,r){for(var i=0;i":">"}function l(e,t){return""}function d(e,t){return"property"==A.arrayAccessForm&&(n=t.toString(),r="_asArray",-1!==n.indexOf(r,n.length-r.length))||0==t.toString().indexOf(A.attributePrefix)||0==t.toString().indexOf("__")||e[t]instanceof Function;var n,r}function f(e){var t=0;if(e instanceof Object)for(var n in e)d(e,n)||t++;return t}function c(e){var t=[];if(e instanceof Object)for(var n in e)-1==n.toString().indexOf("__")&&0==n.toString().indexOf(A.attributePrefix)&&t.push(n);return t}function h(e){var t,n,r="";return e instanceof Object?r+=(n="",null!=(t=e).__cdata&&(n+=""),null!=t.__text&&(A.escapeMode?n+=u(t.__text):n+=t.__text),n):null!=e&&(A.escapeMode?r+=u(e):r+=e),r}function p(e,t){return""===e?t:e+"."+t}function g(e,t){var n,r,i,a="";if(0")+2)),(t=new ActiveXObject("Microsoft.XMLDOM")).async="false",t.loadXML(e);return t},this.asArray=function(e){return void 0===e||null==e?[]:e instanceof Array?e:[e]},this.toXmlDateTime=function(e){return e instanceof Date?e.toISOString():"number"==typeof e?new Date(e).toISOString():null},this.asDateTime=function(e){return"string"==typeof e?N(e):e},this.xml2json=function(e){return D(e)},this.xml_str2json=function(e){e=this.parseXmlString(e);return null!=e?this.xml2json(e):null},this.json2xml_str=function(e){return g(e,"")},this.json2xml=function(e){e=this.json2xml_str(e);return this.parseXmlString(e)},this.getVersion=function(){return"1.2.0"}},t.exports=n.default},{}],4:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var i=e(5),a=e(220),o=r(e(129)),s=r(e(166)),u=r(e(105)),e=r(e(45));dashjs.Protection=s.default,dashjs.MetricsReporting=o.default,dashjs.MediaPlayerFactory=u.default,dashjs.Debug=e.default,dashjs.supportsMediaSource=a.supportsMediaSource,n.default=dashjs,n.MediaPlayer=i.MediaPlayer,n.Protection=s.default,n.MetricsReporting=o.default,n.MediaPlayerFactory=u.default,n.Debug=e.default,n.supportsMediaSource=a.supportsMediaSource},{105:105,129:129,166:166,220:220,45:45,5:5}],5:[function(s,e,u){(function(e){"use strict";function t(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(u,"__esModule",{value:!0});var n=t(s(103)),r=t(s(47)),i=t(s(45)),a=s(50),o="undefined"!=typeof window&&window||e,e=o.dashjs;(e=e||(o.dashjs={})).MediaPlayer=n.default,e.FactoryMaker=r.default,e.Debug=i.default,e.Version=(0,a.getVersionString)(),u.default=e,u.MediaPlayer=n.default,u.FactoryMaker=r.default,u.Debug=i.default}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{103:103,45:45,47:47,50:50}],6:[function(e,t,n){"use strict";n.byteLength=function(e){var t=d(e),e=t[0],t=t[1];return 3*(e+t)/4-t},n.toByteArray=function(e){for(var t,n=d(e),r=n[0],n=n[1],i=new l(function(e,t){return 3*(e+t)/4-t}(r,n)),a=0,o=0>16&255,i[a++]=t>>8&255,i[a++]=255&t;2===n&&(t=u[e.charCodeAt(s)]<<2|u[e.charCodeAt(s+1)]>>4,i[a++]=255&t);1===n&&(t=u[e.charCodeAt(s)]<<10|u[e.charCodeAt(s+1)]<<4|u[e.charCodeAt(s+2)]>>2,i[a++]=t>>8&255,i[a++]=255&t);return i},n.fromByteArray=function(e){for(var t,n=e.length,r=n%3,i=[],a=0,o=n-r;a>18&63]+s[e>>12&63]+s[e>>6&63]+s[63&e]}(r));return i.join("")}(e,a,o>2]+s[t<<4&63]+"==")):2==r&&(t=(e[n-2]<<8)+e[n-1],i.push(s[t>>10]+s[t>>4&63]+s[t<<2&63]+"="));return i.join("")};for(var s=[],u=[],l="undefined"!=typeof Uint8Array?Uint8Array:Array,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,a=r.length;i>>1;case"base64":return D(e).length;default:if(i)return r?-1:N(e).length;t=(""+t).toLowerCase(),i=!0}}function p(e,t,n){var r,i,a,o=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e=e||"utf8";;)switch(e){case"hex":return function(e,t,n){var r=e.length;(!t||t<0)&&(t=0);(!n||n<0||r=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=f.from(t,r)),f.isBuffer(t))return 0===t.length?-1:m(e,t,n,r,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?(i?Uint8Array.prototype.indexOf:Uint8Array.prototype.lastIndexOf).call(e,t,n):m(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function m(e,t,n,r,i){var a=1,o=e.length,s=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o/=a=2,s/=2,n/=2}function u(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i)for(var l=-1,d=n;d>8,r=r%256,i.push(r),i.push(n);return i}(t,e.length-n),e,n,r)}function v(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i>>10&1023|55296),d=56320|1023&d),r.push(d),i+=f}return function(e){var t=e.length;if(t<=T)return String.fromCharCode.apply(String,e);var n="",r=0;for(;rt&&(e+=" ... "),""},f.prototype.compare=function(e,t,n,r,i){if(w(e,Uint8Array)&&(e=f.from(e,e.offset,e.byteLength)),!f.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(i<=r&&n<=t)return 0;if(i<=r)return-1;if(n<=t)return 1;if(this===e)return 0;for(var a=(i>>>=0)-(r>>>=0),o=(n>>>=0)-(t>>>=0),s=Math.min(a,o),u=this.slice(r,i),l=e.slice(t,n),d=0;d>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-t;if((void 0===n||ithis.length)throw new RangeError("Attempt to write outside buffer bounds");r=r||"utf8";for(var a,o,s,u=!1;;)switch(r){case"hex":return function(e,t,n,r){n=Number(n)||0;var i=e.length-n;(!r||i<(r=Number(r)))&&(r=i),(i=t.length)/2e.length)throw new RangeError("Index out of range")}function I(e,t,n,r){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function b(e,t,n,r,i){return t=+t,n>>>=0,i||I(e,0,n,4),a.write(e,t,n,r,23,4),n+4}function R(e,t,n,r,i){return t=+t,n>>>=0,i||I(e,0,n,8),a.write(e,t,n,r,52,8),n+8}f.prototype.slice=function(e,t){var n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):n>>=0,t>>>=0,n||S(e,t,this.length);for(var r=this[e],i=1,a=0;++a>>=0,t>>>=0,n||S(e,t,this.length);for(var r=this[e+--t],i=1;0>>=0,t||S(e,1,this.length),this[e]},f.prototype.readUInt16LE=function(e,t){return e>>>=0,t||S(e,2,this.length),this[e]|this[e+1]<<8},f.prototype.readUInt16BE=function(e,t){return e>>>=0,t||S(e,2,this.length),this[e]<<8|this[e+1]},f.prototype.readUInt32LE=function(e,t){return e>>>=0,t||S(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},f.prototype.readUInt32BE=function(e,t){return e>>>=0,t||S(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},f.prototype.readIntLE=function(e,t,n){e>>>=0,t>>>=0,n||S(e,t,this.length);for(var r=this[e],i=1,a=0;++a>>=0,t>>>=0,n||S(e,t,this.length);for(var r=t,i=1,a=this[e+--r];0>>=0,t||S(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},f.prototype.readInt16LE=function(e,t){e>>>=0,t||S(e,2,this.length);e=this[e]|this[e+1]<<8;return 32768&e?4294901760|e:e},f.prototype.readInt16BE=function(e,t){e>>>=0,t||S(e,2,this.length);e=this[e+1]|this[e]<<8;return 32768&e?4294901760|e:e},f.prototype.readInt32LE=function(e,t){return e>>>=0,t||S(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},f.prototype.readInt32BE=function(e,t){return e>>>=0,t||S(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},f.prototype.readFloatLE=function(e,t){return e>>>=0,t||S(e,4,this.length),a.read(this,e,!0,23,4)},f.prototype.readFloatBE=function(e,t){return e>>>=0,t||S(e,4,this.length),a.read(this,e,!1,23,4)},f.prototype.readDoubleLE=function(e,t){return e>>>=0,t||S(e,8,this.length),a.read(this,e,!0,52,8)},f.prototype.readDoubleBE=function(e,t){return e>>>=0,t||S(e,8,this.length),a.read(this,e,!1,52,8)},f.prototype.writeUIntLE=function(e,t,n,r){e=+e,t>>>=0,n>>>=0,r||A(this,e,t,n,Math.pow(2,8*n)-1,0);var i=1,a=0;for(this[t]=255&e;++a>>=0,n>>>=0,r||A(this,e,t,n,Math.pow(2,8*n)-1,0);var i=n-1,a=1;for(this[t+i]=255&e;0<=--i&&(a*=256);)this[t+i]=e/a&255;return t+n},f.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,1,255,0),this[t]=255&e,t+1},f.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},f.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},f.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},f.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},f.prototype.writeIntLE=function(e,t,n,r){e=+e,t>>>=0,r||A(this,e,t,n,(r=Math.pow(2,8*n-1))-1,-r);var i=0,a=1,o=0;for(this[t]=255&e;++i>0)-o&255;return t+n},f.prototype.writeIntBE=function(e,t,n,r){e=+e,t>>>=0,r||A(this,e,t,n,(r=Math.pow(2,8*n-1))-1,-r);var i=n-1,a=1,o=0;for(this[t+i]=255&e;0<=--i&&(a*=256);)e<0&&0===o&&0!==this[t+i+1]&&(o=1),this[t+i]=(e/a>>0)-o&255;return t+n},f.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},f.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},f.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},f.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},f.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||A(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},f.prototype.writeFloatLE=function(e,t,n){return b(this,e,t,!0,n)},f.prototype.writeFloatBE=function(e,t,n){return b(this,e,t,!1,n)},f.prototype.writeDoubleLE=function(e,t,n){return R(this,e,t,!0,n)},f.prototype.writeDoubleBE=function(e,t,n){return R(this,e,t,!1,n)},f.prototype.copy=function(e,t,n,r){if(!f.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n=n||0,r||0===r||(r=this.length),t>=e.length&&(t=e.length),t=t||0,0=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,"number"==typeof(e=e||0))for(a=t;a>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;a.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return a}function D(e){return s.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(M,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function C(e,t,n,r){for(var i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function w(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function O(e){return e!=e}},{13:13,6:6}],9:[function(e,t,n){var i={parseBuffer:function(e){return new a(e).parse()},addBoxProcessor:function(e,t){"string"==typeof e&&"function"==typeof t&&(r.prototype._boxProcessors[e]=t)},createFile:function(){return new a},createBox:function(e,t,n){e=r.create(e);return t&&t.append(e,n),e},createFullBox:function(e,t,n){n=i.createBox(e,t,n);return n.version=0,n.flags=0,n},Utils:{}};i.Utils.dataViewToString=function(e,t){t=t||"utf-8";if("undefined"!=typeof TextDecoder)return new TextDecoder(t).decode(e);var n=[],r=0;if("utf-8"===t)for(;r>6):(r<65536?t.push(224|r>>12):(t.push(240|r>>18),t.push(128|63&r>>12)),t.push(128|63&r>>6)),t.push(128|63&r))}return t},i.Utils.appendBox=function(e,t,n){if(t._offset=e._cursor.offset,t._root=e._root?e._root:e,t._raw=e._raw,t._parent=e,-1!==n)if(null!=n){var r,i=-1;if("number"==typeof n)i=n;else{if("string"==typeof n)r=n;else{if("object"!=typeof n||!n.type)return void e.boxes.push(t);r=n.type}for(var a=0;a>3,t},r.prototype._readUint=function(e){var t,n,r=null,i=this._cursor.offset-this._raw.byteOffset;switch(e){case 8:r=this._raw.getUint8(i);break;case 16:r=this._raw.getUint16(i);break;case 24:r=((t=this._raw.getUint16(i))<<8)+(n=this._raw.getUint8(2+i));break;case 32:r=this._raw.getUint32(i);break;case 64:t=this._raw.getUint32(i),n=this._raw.getUint32(4+i),r=t*Math.pow(2,32)+n}return this._cursor.offset+=e>>3,r},r.prototype._readString=function(e){for(var t="",n=0;nthis._raw.buffer.byteLength)this._root._incomplete=!0;else{switch(this._procField("size","uint",32),this._procField("type","string",4),1===this.size&&this._procField("largesize","uint",64),"uuid"===this.type&&this._procFieldArray("usertype",16,"uint",8),this.size){case 0:this._raw=new DataView(this._raw.buffer,this._offset,this._raw.byteLength-this._cursor.offset+8);break;case 1:this._offset+this.size>this._raw.buffer.byteLength?(this._incomplete=!0,this._root._incomplete=!0):this._raw=new DataView(this._raw.buffer,this._offset,this.largesize);break;default:this._offset+this.size>this._raw.buffer.byteLength?(this._incomplete=!0,this._root._incomplete=!0):this._raw=new DataView(this._raw.buffer,this._offset,this.size)}this._incomplete||(this._boxProcessors[this.type]&&this._boxProcessors[this.type].call(this),-1!==this._boxContainers.indexOf(this.type)?this._parseContainerBox():this._data=this._readData())}},r.prototype._parseFullBox=function(){this.version=this._readUint(8),this.flags=this._readUint(24)},r.prototype._parseContainerBox=function(){for(this.boxes=[];this._cursor.offset-this._raw.byteOffset>3}else this.size+=e>>3},r.prototype._writeUint=function(e,t){if(this._rawo){var n,r,i=this._cursor.offset-this._rawo.byteOffset;switch(e){case 8:this._rawo.setUint8(i,t);break;case 16:this._rawo.setUint16(i,t);break;case 24:n=(16776960&t)>>8,r=255&t,this._rawo.setUint16(i,n),this._rawo.setUint8(2+i,r);break;case 32:this._rawo.setUint32(i,t);break;case 64:r=t-(n=Math.floor(t/Math.pow(2,32)))*Math.pow(2,32),this._rawo.setUint32(i,n),this._rawo.setUint32(4+i,r)}this._cursor.offset+=e>>3}else this.size+=e>>3},r.prototype._writeString=function(e,t){for(var n=0;n>10&31),96+(this.language>>5&31),96+(31&this.language))),this._procField("pre_defined","uint",16)},r.prototype._boxProcessors.mehd=function(){this._procFullBox(),this._procField("fragment_duration","uint",1==this.version?64:32)},r.prototype._boxProcessors.mfhd=function(){this._procFullBox(),this._procField("sequence_number","uint",32)},r.prototype._boxProcessors.mfro=function(){this._procFullBox(),this._procField("mfra_size","uint",32)},r.prototype._boxProcessors.mp4a=r.prototype._boxProcessors.enca=function(){this._procFieldArray("reserved1",6,"uint",8),this._procField("data_reference_index","uint",16),this._procFieldArray("reserved2",2,"uint",32),this._procField("channelcount","uint",16),this._procField("samplesize","uint",16),this._procField("pre_defined","uint",16),this._procField("reserved3","uint",16),this._procField("samplerate","template",32),this._procField("esds","data",-1)},r.prototype._boxProcessors.mvhd=function(){this._procFullBox(),this._procField("creation_time","uint",1==this.version?64:32),this._procField("modification_time","uint",1==this.version?64:32),this._procField("timescale","uint",32),this._procField("duration","uint",1==this.version?64:32),this._procField("rate","template",32),this._procField("volume","template",16),this._procField("reserved1","uint",16),this._procFieldArray("reserved2",2,"uint",32),this._procFieldArray("matrix",9,"template",32),this._procFieldArray("pre_defined",6,"uint",32),this._procField("next_track_ID","uint",32)},r.prototype._boxProcessors.payl=function(){this._procField("cue_text","utf8")},r.prototype._boxProcessors.pssh=function(){this._procFullBox(),this._procFieldArray("SystemID",16,"uint",8),this._procField("DataSize","uint",32),this._procFieldArray("Data",this.DataSize,"uint",8)},r.prototype._boxProcessors.schm=function(){this._procFullBox(),this._procField("scheme_type","uint",32),this._procField("scheme_version","uint",32),1&this.flags&&this._procField("scheme_uri","string",-1)},r.prototype._boxProcessors.sdtp=function(){this._procFullBox();var e=-1;this._parsing&&(e=this._raw.byteLength-(this._cursor.offset-this._raw.byteOffset)),this._procFieldArray("sample_dependency_table",e,"uint",8)},r.prototype._boxProcessors.sidx=function(){this._procFullBox(),this._procField("reference_ID","uint",32),this._procField("timescale","uint",32),this._procField("earliest_presentation_time","uint",1==this.version?64:32),this._procField("first_offset","uint",1==this.version?64:32),this._procField("reserved","uint",16),this._procField("reference_count","uint",16),this._procEntries("references",this.reference_count,function(e){this._parsing||(e.reference=(1&e.reference_type)<<31,e.reference|=2147483647&e.referenced_size,e.sap=(1&e.starts_with_SAP)<<31,e.sap|=(3&e.SAP_type)<<28,e.sap|=268435455&e.SAP_delta_time),this._procEntryField(e,"reference","uint",32),this._procEntryField(e,"subsegment_duration","uint",32),this._procEntryField(e,"sap","uint",32),this._parsing&&(e.reference_type=e.reference>>31&1,e.referenced_size=2147483647&e.reference,e.starts_with_SAP=e.sap>>31&1,e.SAP_type=e.sap>>28&7,e.SAP_delta_time=268435455&e.sap)})},r.prototype._boxProcessors.smhd=function(){this._procFullBox(),this._procField("balance","uint",16),this._procField("reserved","uint",16)},r.prototype._boxProcessors.ssix=function(){this._procFullBox(),this._procField("subsegment_count","uint",32),this._procEntries("subsegments",this.subsegment_count,function(e){this._procEntryField(e,"ranges_count","uint",32),this._procSubEntries(e,"ranges",e.ranges_count,function(e){this._procEntryField(e,"level","uint",8),this._procEntryField(e,"range_size","uint",24)})})},r.prototype._boxProcessors.stsd=function(){this._procFullBox(),this._procField("entry_count","uint",32),this._procSubBoxes("entries",this.entry_count)},r.prototype._boxProcessors.subs=function(){this._procFullBox(),this._procField("entry_count","uint",32),this._procEntries("entries",this.entry_count,function(e){this._procEntryField(e,"sample_delta","uint",32),this._procEntryField(e,"subsample_count","uint",16),this._procSubEntries(e,"subsamples",e.subsample_count,function(e){this._procEntryField(e,"subsample_size","uint",1===this.version?32:16),this._procEntryField(e,"subsample_priority","uint",8),this._procEntryField(e,"discardable","uint",8),this._procEntryField(e,"codec_specific_parameters","uint",32)})})},r.prototype._boxProcessors.tenc=function(){this._procFullBox(),this._procField("default_IsEncrypted","uint",24),this._procField("default_IV_size","uint",8),this._procFieldArray("default_KID",16,"uint",8)},r.prototype._boxProcessors.tfdt=function(){this._procFullBox(),this._procField("baseMediaDecodeTime","uint",1==this.version?64:32)},r.prototype._boxProcessors.tfhd=function(){this._procFullBox(),this._procField("track_ID","uint",32),1&this.flags&&this._procField("base_data_offset","uint",64),2&this.flags&&this._procField("sample_description_offset","uint",32),8&this.flags&&this._procField("default_sample_duration","uint",32),16&this.flags&&this._procField("default_sample_size","uint",32),32&this.flags&&this._procField("default_sample_flags","uint",32)},r.prototype._boxProcessors.tfra=function(){this._procFullBox(),this._procField("track_ID","uint",32),this._parsing||(this.reserved=0,this.reserved|=(48&this.length_size_of_traf_num)<<4,this.reserved|=(12&this.length_size_of_trun_num)<<2,this.reserved|=3&this.length_size_of_sample_num),this._procField("reserved","uint",32),this._parsing&&(this.length_size_of_traf_num=(48&this.reserved)>>4,this.length_size_of_trun_num=(12&this.reserved)>>2,this.length_size_of_sample_num=3&this.reserved),this._procField("number_of_entry","uint",32),this._procEntries("entries",this.number_of_entry,function(e){this._procEntryField(e,"time","uint",1===this.version?64:32),this._procEntryField(e,"moof_offset","uint",1===this.version?64:32),this._procEntryField(e,"traf_number","uint",8*(this.length_size_of_traf_num+1)),this._procEntryField(e,"trun_number","uint",8*(this.length_size_of_trun_num+1)),this._procEntryField(e,"sample_number","uint",8*(this.length_size_of_sample_num+1))})},r.prototype._boxProcessors.tkhd=function(){this._procFullBox(),this._procField("creation_time","uint",1==this.version?64:32),this._procField("modification_time","uint",1==this.version?64:32),this._procField("track_ID","uint",32),this._procField("reserved1","uint",32),this._procField("duration","uint",1==this.version?64:32),this._procFieldArray("reserved2",2,"uint",32),this._procField("layer","uint",16),this._procField("alternate_group","uint",16),this._procField("volume","template",16),this._procField("reserved3","uint",16),this._procFieldArray("matrix",9,"template",32),this._procField("width","template",32),this._procField("height","template",32)},r.prototype._boxProcessors.trex=function(){this._procFullBox(),this._procField("track_ID","uint",32),this._procField("default_sample_description_index","uint",32),this._procField("default_sample_duration","uint",32),this._procField("default_sample_size","uint",32),this._procField("default_sample_flags","uint",32)},r.prototype._boxProcessors.trun=function(){this._procFullBox(),this._procField("sample_count","uint",32),1&this.flags&&this._procField("data_offset","int",32),4&this.flags&&this._procField("first_sample_flags","uint",32),this._procEntries("samples",this.sample_count,function(e){256&this.flags&&this._procEntryField(e,"sample_duration","uint",32),512&this.flags&&this._procEntryField(e,"sample_size","uint",32),1024&this.flags&&this._procEntryField(e,"sample_flags","uint",32),2048&this.flags&&this._procEntryField(e,"sample_composition_time_offset",1===this.version?"int":"uint",32)})},r.prototype._boxProcessors["url "]=r.prototype._boxProcessors["urn "]=function(){this._procFullBox(),"urn "===this.type&&this._procField("name","string",-1),this._procField("location","string",-1)},r.prototype._boxProcessors.vlab=function(){this._procField("source_label","utf8")},r.prototype._boxProcessors.vmhd=function(){this._procFullBox(),this._procField("graphicsmode","uint",16),this._procFieldArray("opcolor",3,"uint",16)},r.prototype._boxProcessors.vttC=function(){this._procField("config","utf8")},r.prototype._boxProcessors.vtte=function(){}},{}],10:[function(e,t,n){(function(e){function t(e){return Object.prototype.toString.call(e)}n.isArray=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===t(e)},n.isBoolean=function(e){return"boolean"==typeof e},n.isNull=function(e){return null===e},n.isNullOrUndefined=function(e){return null==e},n.isNumber=function(e){return"number"==typeof e},n.isString=function(e){return"string"==typeof e},n.isSymbol=function(e){return"symbol"==typeof e},n.isUndefined=function(e){return void 0===e},n.isRegExp=function(e){return"[object RegExp]"===t(e)},n.isObject=function(e){return"object"==typeof e&&null!==e},n.isDate=function(e){return"[object Date]"===t(e)},n.isError=function(e){return"[object Error]"===t(e)||e instanceof Error},n.isFunction=function(e){return"function"==typeof e},n.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},n.isBuffer=e.isBuffer}).call(this,{isBuffer:e(22)})},{22:22}],11:[function(e,t,n){var s=Object.create||function(e){function t(){}return t.prototype=e,new t},o=Object.keys||function(e){var t,n=[];for(t in e)Object.prototype.hasOwnProperty.call(e,t)&&n.push(t);return t},r=Function.prototype.bind||function(e){var t=this;return function(){return t.apply(e,arguments)}};function i(){this._events&&Object.prototype.hasOwnProperty.call(this,"_events")||(this._events=s(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}((t.exports=i).EventEmitter=i).prototype._events=void 0,i.prototype._maxListeners=void 0;var a,u=10;try{var l={};Object.defineProperty&&Object.defineProperty(l,"x",{value:0}),a=0===l.x}catch(e){a=!1}function d(e){return void 0===e._maxListeners?i.defaultMaxListeners:e._maxListeners}function f(e,t,n,r){var i,a;if("function"!=typeof n)throw new TypeError('"listener" argument must be a function');return(i=e._events)?(i.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),i=e._events),a=i[t]):(i=e._events=s(null),e._eventsCount=0),a?("function"==typeof a?a=i[t]=r?[n,a]:[a,n]:r?a.unshift(n):a.push(n),a.warned||(r=d(e))&&0r&&(a.warned=!0,(r=new Error("Possible EventEmitter memory leak detected. "+a.length+' "'+String(t)+'" listeners added. Use emitter.setMaxListeners() to increase limit.')).name="MaxListenersExceededWarning",r.emitter=e,r.type=t,r.count=a.length,"object"==typeof console&&console.warn&&console.warn("%s: %s",r.name,r.message))):(a=i[t]=n,++e._eventsCount),e}function c(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var e=new Array(arguments.length),t=0;t>1,d=-7,f=n?i-1:0,c=n?-1:1,n=e[t+f];for(f+=c,a=n&(1<<-d)-1,n>>=-d,d+=s;0>=-d,d+=r;0>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,c=r?0:a-1,h=r?1:-1,a=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(r=Math.pow(2,-o))<1&&(o--,r*=2),2<=(t+=1<=o+d?f/r:f*Math.pow(2,1-d))*r&&(o++,r/=2),l<=o+d?(s=0,o=l):1<=o+d?(s=(t*r-1)*Math.pow(2,i),o+=d):(s=t*Math.pow(2,d-1)*Math.pow(2,i),o=0));8<=i;e[n+c]=255&s,c+=h,s/=256,i-=8);for(o=o< elements at ("+this.line+","+this.column+")"),(p=new m).initFromNode(e,u),d.unshift(p)):"head"===e.local?(d[0]instanceof m||L(u,"Parent of element is not at ("+this.line+","+this.column+")"),null!==p.head&&L("Second element at ("+this.line+","+this.column+")"),p.head=new E,d.unshift(p.head)):"styling"===e.local?(d[0]instanceof E||L(u,"Parent of element is not at ("+this.line+","+this.column+")"),null!==p.head.styling&&L("Second element at ("+this.line+","+this.column+")"),p.head.styling=new y,d.unshift(p.head.styling)):"style"===e.local?d[0]instanceof y?((n=new v).initFromNode(e,u),n.id?p.head.styling.styles[n.id]=n:P(u,"