diff --git a/registry/dist/components/style/player-on-top-new.js b/registry/dist/components/style/player-on-top-new.js deleted file mode 100644 index b291589f7..000000000 --- a/registry/dist/components/style/player-on-top-new.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports["style/player-on-top-new"]=o():e["style/player-on-top-new"]=o()}(globalThis,(()=>(()=>{"use strict";var e={d:(o,t)=>{for(var n in t)e.o(t,n)&&!e.o(o,n)&&Object.defineProperty(o,n,{enumerable:!0,get:t[n]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)},o={};e.d(o,{component:()=>p});const t=coreApis.componentApis.define,n=coreApis.utils;function r(e,o){const t=e.parentElement;t&&(t.removeChild(e),t.insertBefore(e,o.nextSibling))}const p=(0,t.defineComponentMetadata)({name:"playerOnTopNew",author:{name:"RieN7",link:"https://github.com/rien7"},tags:[componentsTags.style,componentsTags.video],displayName:"播放器置顶(新)",description:"原来的播放器置顶插件,现在已经不可用了,这是一个新的版本,可以在视频页面中将播放器放在页面最上方.",entry:async()=>{await(0,n.playerReady)();r(document.querySelector("#viewbox_report"),document.querySelector("#arc_toolbar_report"));r(document.querySelector("#v_upinfo").parentElement,document.querySelector("#danmukuBox"))},commitHash:"b08ebfbef7d0b5320ae67d8f0568d8bb0ed24635",coreVersion:"2.7.0"});return o=o.component})())); \ No newline at end of file diff --git a/registry/lib/components/style/player-on-top-new/index.ts b/registry/lib/components/style/player-on-top-new/index.ts index 542712644..f1f3e4d2b 100644 --- a/registry/lib/components/style/player-on-top-new/index.ts +++ b/registry/lib/components/style/player-on-top-new/index.ts @@ -1,6 +1,13 @@ import { defineComponentMetadata } from '@/components/define' -import { playerReady } from '@/core/utils' +import { getComponentSettings, addComponentListener } from '@/core/settings' +import { playerReady, getNumberValidator } from '@/core/utils' +import { videoUrls } from '@/core/utils/urls' +/** + * 将 element 移动到 after 后面 + * @param element 要移动的元素 + * @param after 目标元素 + */ function moveElementAfter(element: Element, after: Element) { const parent = element.parentElement if (!parent) { @@ -10,7 +17,11 @@ function moveElementAfter(element: Element, after: Element) { parent.insertBefore(element, after.nextSibling) } -const playerOnTop = async () => { +/** + * 播放器置顶 + * 从设置中获取顶部留白的高度 + */ +const playerOnTop = async ({ settings: { options: opt }, metadata }) => { await playerReady() const title = document.querySelector('#viewbox_report') const toolbar = document.querySelector('#arc_toolbar_report') @@ -19,18 +30,41 @@ const playerOnTop = async () => { const author = document.querySelector('#v_upinfo').parentElement const danmuku = document.querySelector('#danmukuBox') moveElementAfter(author, danmuku) + + const player = document.querySelector('#playerWrap') as HTMLDivElement + player.style.marginTop = `${opt.marginTop}px` + + // 监听设置变化 实时更新到页面 + addComponentListener(`${metadata.name}.marginTop`, (value: number) => { + player.style.marginTop = `${value}px` + }) } export const component = defineComponentMetadata({ name: 'playerOnTopNew', - author: { - name: 'RieN7', - link: 'https://github.com/rien7', - }, + author: [ + { + name: 'RieN7', + link: 'https://github.com/rien7', + }, + { + name: 'ZiuChen', + link: 'https://github.com/ZiuChen', + }, + ], tags: [componentsTags.style, componentsTags.video], + options: { + marginTop: { + displayName: '顶部留白 (px)', + defaultValue: 20, + validator: getNumberValidator(0, Infinity), + }, + }, + urlInclude: videoUrls, displayName: '播放器置顶(新)', description: '原来的播放器置顶插件,现在已经不可用了,这是一个新的版本,可以在视频页面中将播放器放在页面最上方.', entry: playerOnTop, - reload: playerOnTop, + reload: () => + playerOnTop({ settings: getComponentSettings('playerOnTopNew'), metadata: component }), })