!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports["video/player/custom-auto-play"]=e():t["video/player/custom-auto-play"]=e()}(globalThis,(()=>(()=>{var t,e,r={834:t=>{function e(t){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}e.keys=()=>[],e.resolve=e,e.id=834,t.exports=e},397:t=>{"use strict";t.exports="定制自动连播行为,可根据自动连播视频类型分别配置\n\n---\n\n自动连播行为:\n\n- 自动:类似 `传统连播模式`,区别是多P视频包括番剧,具体如下\n - 单P视频放完禁止连播其他推荐视频\n - 多P视频(番剧、多P列表、收藏夹等)连播到最后1P停止\n- 禁用:不自动连播\n- 总是:总是自动连播\n"}},n={};function o(t){var e=n[t];if(void 0!==e)return e.exports;var i=n[t]={exports:{}};return r[t](i,i.exports,o),i.exports}e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,o.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if("object"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&"function"==typeof r.then)return r}var i=Object.create(null);o.r(i);var u={};t=t||[null,e({}),e([]),e(e)];for(var a=2&n&&r;"object"==typeof a&&!~t.indexOf(a);a=e(a))Object.getOwnPropertyNames(a).forEach((t=>u[t]=()=>r[t]));return u.default=()=>r,o.d(i,u),i},o.d=(t,e)=>{for(var r in e)o.o(e,r)&&!o.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var i={};return(()=>{"use strict";o.d(i,{component:()=>N,v:()=>j});const t=coreApis.componentApis.define,e=coreApis.utils.urls,r=coreApis.utils.log,n=coreApis.spinQuery,u=coreApis.utils,a=coreApis.settings,s=coreApis.observer;let l=function(t){return t.AUTO="自动",t.DISABLE="禁用",t.ALWAYS="总是",t}({});function c(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}class p{constructor(){c(this,"type",void 0)}static register(t){p.handlers.push(t)}static async getHandler(){for(const t of p.handlers)if(await t.match())return t;return null}static shouldAutoplayWithAutoHandler(t,e){switch(t){case l.ALWAYS:return!0;case l.DISABLE:return!1;case l.AUTO:default:return e()}}getSequentialNumberString(){return""}parseSequentialNumbers(){return this.getSequentialNumberString().replace(/[()()]/g,"").split("/").map((t=>parseInt(t)))}isLastSequentialNumber(){const t=this.parseSequentialNumbers();return!t||t.length<2||t[0]>=t[1]}async setupAutoPlay_SwitchBtn(t){(0,n.sq)((()=>{try{const e=document.getElementById("app");return(0,u.getVue2Data)(e).setContinuousPlay(t),!0}catch(t){return j.debug(`${this.constructor.name}:设置自动连播按钮状态发生错误,错误信息:${t}`),!1}}))}async setupAutoPlay_Player(t){const e=t?'.bpx-player-ctrl-setting-handoff input[type="radio"][value="0"]':'.bpx-player-ctrl-setting-handoff input[type="radio"][value="2"]',r=await(0,n.select)(e);null===r&&j.error(`${this.constructor.name}:未找到对应的播放方式按钮`),r.click()}}function y(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}c(p,"settings",void 0),c(p,"handlers",[]);class m extends p{constructor(){super(...arguments),y(this,"type","番剧")}async match(){return e.bangumiUrls.some((t=>(0,u.matchUrlPattern)(t)))}getSequentialNumberString(){return document.querySelector(".plp-r span[class^=eplist_ep_list_progress]").innerHTML}isLastSequentialNumber(){if(this.getSequentialNumberString().length>0)return super.isLastSequentialNumber();return!document.querySelector(".plp-r img[class^=PlayingIcon_playIcon]").closest("div[class^=imageListItem_wrap]").nextElementSibling}async shouldAutoplay(){return p.shouldAutoplayWithAutoHandler(p.settings.options.bangumiAutoplayAction,(()=>!this.isLastSequentialNumber()))}async setupAutoPlay(t){await this.setupAutoPlay_Player(t)}}function d(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}class f extends p{constructor(){super(...arguments),d(this,"type","收藏夹")}async match(){return e.favoriteListUrls.some((t=>(0,u.matchUrlPattern)(t)))}getSequentialNumberString(){return document.querySelector(".list-count").innerHTML}async shouldAutoplay(){return p.shouldAutoplayWithAutoHandler(p.settings.options.favoriteAutoplayAction,(()=>!this.isLastSequentialNumber()))}async setupAutoPlay(t){await this.setupAutoPlay_SwitchBtn(t)}}function b(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}class h extends p{constructor(){super(...arguments),b(this,"type","视频合集")}async match(){const t=document.querySelector(".video-pod .section"),e=document.querySelector(".video-pod .auto-play .switch-btn");return(0,u.matchUrlPattern)("//www.bilibili.com/video/")&&null!=t&&null!=e}getSequentialNumberString(){return document.querySelector(".video-pod__header .amt").innerHTML}async shouldAutoplay(){return p.shouldAutoplayWithAutoHandler(p.settings.options.playlistAutoplayAction,(()=>!this.isLastSequentialNumber()))}async setupAutoPlay(t){await this.setupAutoPlay_SwitchBtn(t)}}function v(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}class g extends p{constructor(){super(...arguments),v(this,"type","推荐视频")}async match(){const t=document.querySelector(".recommend-list-v1 .switch-btn");return(0,u.matchUrlPattern)("//www.bilibili.com/video/")&&null!==t}async shouldAutoplay(){return p.shouldAutoplayWithAutoHandler(p.settings.options.recommendAutoplayAction,(()=>!1))}async setupAutoPlay(t){await this.setupAutoPlay_SwitchBtn(t)}}function A(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}class w extends p{constructor(){super(...arguments),A(this,"type","稍后再看")}async match(){return e.watchlaterUrls.some((t=>(0,u.matchUrlPattern)(t)))}getSequentialNumberString(){return document.querySelector(".list-count").innerHTML}async shouldAutoplay(){return p.shouldAutoplayWithAutoHandler(p.settings.options.watchLaterAutoplayAction,(()=>!this.isLastSequentialNumber()))}async setupAutoPlay(t){await this.setupAutoPlay_SwitchBtn(t)}}function S(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}class P extends p{constructor(){super(...arguments),S(this,"type","分P视频")}async match(){const t=document.querySelector(".video-pod .multip"),e=document.querySelector(".video-pod .auto-play .switch-btn");return(0,u.matchUrlPattern)("//www.bilibili.com/video/")&&null!=t&&null!=e}getSequentialNumberString(){return document.querySelector(".video-pod__header .amt").innerHTML}async shouldAutoplay(){return p.shouldAutoplayWithAutoHandler(p.settings.options.multipartAutoplayAction,(()=>!this.isLastSequentialNumber()))}async setupAutoPlay(t){await this.setupAutoPlay_SwitchBtn(t)}}const j=(0,r.useScopedConsole)("定制自动连播行为"),N=(0,t.defineComponentMetadata)({name:"customAutoPlay",displayName:"定制自动连播行为",tags:[componentsTags.video],urlInclude:[...e.videoUrls,...e.bangumiUrls],entry:async t=>{let{metadata:e,settings:r}=t;async function o(){await(0,u.playerReady)();const t=await p.getHandler();if(!t)return void j.warn("未找到匹配的自动播放处理器");const e=await t.shouldAutoplay();j.log(`导航变化(${document.URL}),重新初始化脚本\n自动连播类型:${t.type}\n是否应该自动连播:${e}`),await t.setupAutoPlay(e)}p.register(new m),p.register(new f),p.register(new P),p.register(new h),p.register(new g),p.register(new w),p.settings=r;const i=lodash.debounce(o,1e3),l=await Promise.any([(0,n.select)(".right-container-inner"),(0,n.select)(".playlist-container--right"),(0,n.select)(".plp-r")]);l?((0,s.childListSubtree)(l,(()=>{i()})),Object.keys(r.options).forEach((t=>{(0,a.addComponentListener)(`${e.name}.${t}`,(async()=>{await o()}),!0)}))):j.warn("未找到 rightPanelContainer 或 playListContainer")},options:{bangumiAutoplayAction:{displayName:"自动连播行为-番剧",defaultValue:l.ALWAYS,dropdownEnum:l},recommendAutoplayAction:{displayName:"自动连播行为-推荐视频",defaultValue:l.AUTO,dropdownEnum:l},watchLaterAutoplayAction:{displayName:"自动连播行为-稍后再看",defaultValue:l.AUTO,dropdownEnum:l},multipartAutoplayAction:{displayName:"自动连播行为-分p视频",defaultValue:l.AUTO,dropdownEnum:l},playlistAutoplayAction:{displayName:"自动连播行为-视频合集",defaultValue:l.AUTO,dropdownEnum:l},favoriteAutoplayAction:{displayName:"自动连播行为-收藏夹",defaultValue:l.AUTO,dropdownEnum:l}},commitHash:"7329f077f3f19ae45200c348976c106b35e33103",coreVersion:"2.10.4",description:(()=>{const t=o(834);return{...Object.fromEntries(t.keys().map((e=>[e.match(/index\.(.+)\.md$/)[1],t(e)]))),"zh-CN":()=>Promise.resolve().then(o.t.bind(o,397,17)).then((t=>t.default))}})()})})(),i=i.component})()));