mirror of
https://github.com/truewhile/MeBox.git
synced 2026-09-28 03:06:38 +08:00
优化
This commit is contained in:
@@ -10,7 +10,6 @@ import {
|
|||||||
Loader2,
|
Loader2,
|
||||||
Lock,
|
Lock,
|
||||||
Maximize,
|
Maximize,
|
||||||
MessageSquareText,
|
|
||||||
Minimize,
|
Minimize,
|
||||||
Pause,
|
Pause,
|
||||||
PictureInPicture,
|
PictureInPicture,
|
||||||
@@ -155,10 +154,12 @@ type PlayerControlsProps = {
|
|||||||
onSubtitleStyleChange: (style: SubtitleStylePreset) => void
|
onSubtitleStyleChange: (style: SubtitleStylePreset) => void
|
||||||
/** 弹幕设置面板是否打开。 */
|
/** 弹幕设置面板是否打开。 */
|
||||||
danmakuOpen: boolean
|
danmakuOpen: boolean
|
||||||
/** 弹幕当前是否渲染在画面上(操作栏上的「弹」开关)。 */
|
/** 弹幕当前是否渲染在画面上:操作栏的「弹」按钮用它显示开关状态。 */
|
||||||
danmakuEnabled: boolean
|
danmakuEnabled: boolean
|
||||||
onToggleDanmakuEnabled?: (next: boolean) => void
|
/**
|
||||||
/** 打开弹幕设置面板(弹幕服务的搜索与参数都在那里)。 */
|
* 打开弹幕设置面板。弹幕的加载开关、来源搜索、渲染参数都收在这个面板里,
|
||||||
|
* 所以「弹」按钮直接指向它——不再经过「设置」面板中转。
|
||||||
|
*/
|
||||||
onOpenDanmaku?: () => void
|
onOpenDanmaku?: () => void
|
||||||
hasPrevEpisode?: boolean
|
hasPrevEpisode?: boolean
|
||||||
hasNextEpisode?: boolean
|
hasNextEpisode?: boolean
|
||||||
@@ -217,7 +218,6 @@ export function PlayerControls({
|
|||||||
onSubtitleStyleChange,
|
onSubtitleStyleChange,
|
||||||
danmakuOpen,
|
danmakuOpen,
|
||||||
danmakuEnabled,
|
danmakuEnabled,
|
||||||
onToggleDanmakuEnabled,
|
|
||||||
onOpenDanmaku,
|
onOpenDanmaku,
|
||||||
hasPrevEpisode = false,
|
hasPrevEpisode = false,
|
||||||
hasNextEpisode = false,
|
hasNextEpisode = false,
|
||||||
@@ -1021,27 +1021,6 @@ export function PlayerControls({
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{onOpenDanmaku && (
|
|
||||||
<div>
|
|
||||||
<p className={PLAYER_MENU_LABEL}>弹幕</p>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
onClick={() => {
|
|
||||||
setSettingsMenuOpen(false)
|
|
||||||
onOpenDanmaku()
|
|
||||||
}}
|
|
||||||
className={PLAYER_MENU_ITEM}
|
|
||||||
title="打开弹幕设置(搜索弹幕库、调整渲染参数)"
|
|
||||||
>
|
|
||||||
<MessageSquareText size={14} className="shrink-0 text-white/50" />
|
|
||||||
<span className="min-w-0 flex-1 truncate">弹幕设置</span>
|
|
||||||
{danmakuOpen ? (
|
|
||||||
<span className="shrink-0 text-[10px] text-rose-300">已打开</span>
|
|
||||||
) : null}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -1237,13 +1216,15 @@ export function PlayerControls({
|
|||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{/* 弹幕开关:只负责开/关,「弹幕设置」在设置面板里 */}
|
{/* 弹幕:点开就是弹幕设置面板。弹幕的加载开关、来源搜索、渲染参数都在
|
||||||
|
那个面板里,所以这里不再做「先切设置再找弹幕」的中转;按钮上的方块
|
||||||
|
颜色仍然反映当前弹幕是否显示。 */}
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
onClick={() => onToggleDanmakuEnabled?.(!danmakuEnabled)}
|
onClick={onOpenDanmaku}
|
||||||
disabled={!onToggleDanmakuEnabled}
|
disabled={!onOpenDanmaku}
|
||||||
className={PLAYER_ICON_BUTTON}
|
className={`${PLAYER_ICON_BUTTON} ${danmakuOpen ? 'bg-white/15' : ''}`}
|
||||||
title={danmakuEnabled ? '关闭弹幕显示' : '开启弹幕显示'}
|
title={danmakuOpen ? '弹幕设置(已打开)' : '弹幕设置'}
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className={`flex h-[18px] w-[18px] items-center justify-center rounded-[4px] text-[10px] font-bold leading-none transition ${
|
className={`flex h-[18px] w-[18px] items-center justify-center rounded-[4px] text-[10px] font-bold leading-none transition ${
|
||||||
|
|||||||
@@ -215,9 +215,10 @@ export function PlayerDanmakuPanel({
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="min-h-0 flex-1 overflow-y-auto overscroll-contain px-4 py-3.5">
|
<div className="min-h-0 flex-1 overflow-y-auto overscroll-contain px-4 py-3.5">
|
||||||
{/* 是否加载弹幕 */}
|
{/* 弹幕总开关。从操作栏的「弹」按钮直接进来就到了这里,所以这一项就是
|
||||||
|
用户找的「开关弹幕」;文案跟旧的按钮提示保持一致,避免换个说法让人找不到。 */}
|
||||||
<label className="mb-3 flex cursor-pointer items-center justify-between rounded-lg bg-white/5 px-2.5 py-2 text-sm transition hover:bg-white/10">
|
<label className="mb-3 flex cursor-pointer items-center justify-between rounded-lg bg-white/5 px-2.5 py-2 text-sm transition hover:bg-white/10">
|
||||||
<span className="text-white/85">加载弹幕</span>
|
<span className="text-white/85">显示弹幕</span>
|
||||||
<input
|
<input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
checked={enabled}
|
checked={enabled}
|
||||||
|
|||||||
@@ -1696,7 +1696,6 @@ export function PlayerPage() {
|
|||||||
danmakuSearchTrigger={danmakuSearchTrigger}
|
danmakuSearchTrigger={danmakuSearchTrigger}
|
||||||
danmakuOpen={danmakuOpen}
|
danmakuOpen={danmakuOpen}
|
||||||
onOpenDanmaku={toggleDanmakuOpen}
|
onOpenDanmaku={toggleDanmakuOpen}
|
||||||
onToggleDanmakuEnabled={danmakuChangeEnabled}
|
|
||||||
onDanmakuLoaded={danmakuLoaded}
|
onDanmakuLoaded={danmakuLoaded}
|
||||||
onDanmakuCandidates={danmakuGotCandidates}
|
onDanmakuCandidates={danmakuGotCandidates}
|
||||||
onDanmakuAlternatives={danmakuGotAlternatives}
|
onDanmakuAlternatives={danmakuGotAlternatives}
|
||||||
|
|||||||
@@ -187,8 +187,6 @@ type PlayerVideoStageProps = {
|
|||||||
danmakuOpen: boolean
|
danmakuOpen: boolean
|
||||||
/** 打开弹幕设置面板(搜索弹幕库、调整渲染参数)。 */
|
/** 打开弹幕设置面板(搜索弹幕库、调整渲染参数)。 */
|
||||||
onOpenDanmaku: () => void
|
onOpenDanmaku: () => void
|
||||||
/** 操作栏上的「弹」开关:只控制画面上的弹幕是否渲染。 */
|
|
||||||
onToggleDanmakuEnabled: (next: boolean) => void
|
|
||||||
onDanmakuLoaded: (info: DanmakuLoadedInfo | null) => void
|
onDanmakuLoaded: (info: DanmakuLoadedInfo | null) => void
|
||||||
onDanmakuCandidates: (candidates: DanmakuAnime[]) => void
|
onDanmakuCandidates: (candidates: DanmakuAnime[]) => void
|
||||||
onDanmakuAlternatives: (alternatives: DanmakuAnime[]) => void
|
onDanmakuAlternatives: (alternatives: DanmakuAnime[]) => void
|
||||||
@@ -264,7 +262,6 @@ export function PlayerVideoStage({
|
|||||||
danmakuSearchTrigger = 0,
|
danmakuSearchTrigger = 0,
|
||||||
danmakuOpen,
|
danmakuOpen,
|
||||||
onOpenDanmaku,
|
onOpenDanmaku,
|
||||||
onToggleDanmakuEnabled,
|
|
||||||
onDanmakuLoaded,
|
onDanmakuLoaded,
|
||||||
onDanmakuCandidates,
|
onDanmakuCandidates,
|
||||||
onDanmakuAlternatives,
|
onDanmakuAlternatives,
|
||||||
@@ -876,7 +873,6 @@ export function PlayerVideoStage({
|
|||||||
onSubtitleStyleChange={onSubtitleStyleChange}
|
onSubtitleStyleChange={onSubtitleStyleChange}
|
||||||
danmakuOpen={danmakuOpen}
|
danmakuOpen={danmakuOpen}
|
||||||
danmakuEnabled={danmakuEnabled}
|
danmakuEnabled={danmakuEnabled}
|
||||||
onToggleDanmakuEnabled={onToggleDanmakuEnabled}
|
|
||||||
onOpenDanmaku={onOpenDanmaku}
|
onOpenDanmaku={onOpenDanmaku}
|
||||||
hasPrevEpisode={hasPrevEpisode}
|
hasPrevEpisode={hasPrevEpisode}
|
||||||
hasNextEpisode={hasNextEpisode}
|
hasNextEpisode={hasNextEpisode}
|
||||||
|
|||||||
Reference in New Issue
Block a user