From ea3174daa28e698af3db2ff36aecf4ef2da54470 Mon Sep 17 00:00:00 2001 From: Harvey Zhao Date: Tue, 15 Sep 2026 16:45:35 +0800 Subject: [PATCH] docs(danmuku): [SITE-DANMUKU-01] complete bilingual usage guides --- docs/document/404.html | 4 +- docs/document/advanced/built-in.html | 6 +- docs/document/advanced/class.html | 6 +- docs/document/advanced/event.html | 6 +- docs/document/advanced/global.html | 6 +- docs/document/advanced/plugin.html | 6 +- docs/document/advanced/property.html | 6 +- .../{app.BfyKMyXg.js => app.CUpGwB5x.js} | 2 +- .../{theme.DWC8mntC.js => theme.DllzBSR9.js} | 2 +- .../chunks/virtual_search-data.BhiJ7XR7.js | 1404 ---------- .../chunks/virtual_search-data.CLDmFAmC.js | 1407 ++++++++++ .../assets/en_plugin_danmuku.md.DqSk_DK5.js | 102 + .../en_plugin_danmuku.md.DqSk_DK5.lean.js | 1 + ...ljCkq.js => plugin_danmuku.md.gN3hMRyB.js} | 76 +- ....js => plugin_danmuku.md.gN3hMRyB.lean.js} | 2 +- docs/document/component/contextmenu.html | 6 +- docs/document/component/controls.html | 6 +- docs/document/component/layers.html | 6 +- docs/document/component/setting.html | 6 +- docs/document/en/advanced/built-in.html | 8 +- docs/document/en/advanced/class.html | 8 +- docs/document/en/advanced/event.html | 8 +- docs/document/en/advanced/global.html | 8 +- docs/document/en/advanced/plugin.html | 10 +- docs/document/en/advanced/property.html | 8 +- docs/document/en/component/contextmenu.html | 8 +- docs/document/en/component/controls.html | 8 +- docs/document/en/component/layers.html | 8 +- docs/document/en/component/setting.html | 8 +- docs/document/en/index.html | 8 +- docs/document/en/plugin/danmuku.html | 131 + docs/document/en/start/i18n.html | 8 +- docs/document/en/start/option.html | 8 +- docs/document/hashmap.json | 2 +- docs/document/index.html | 6 +- docs/document/main.js | 2 +- docs/document/plugin/danmuku.html | 84 +- docs/document/start/i18n.html | 6 +- docs/document/start/option.html | 6 +- docs/llms.manifest.json | 12 +- docs/llms.txt | 1738 +++---------- packages/artplayer-vitepress/README.md | 19 +- .../docs/.vitepress/config.js | 1 + .../docs/en/plugin/danmuku.md | 319 +++ .../docs/plugin/danmuku.md | 129 +- .../artplayer-vitepress/docs/public/main.js | 2 +- .../baselines/danmuku-docs-validation.json | 2256 +++++++++++++++++ refactor/baselines/site-inventory.json | 345 ++- .../2026-09-15-SITE-DANMUKU-01-guides.md | 78 + refactor/plan.md | 12 +- refactor/progress.md | 16 + refactor/site-inventory.md | 7 +- refactor/tasks.json | 24 +- test/browser/README.md | 10 + test/browser/document-danmuku.spec.js | 44 + test/browser/document-site.spec.js | 14 +- 56 files changed, 5321 insertions(+), 3108 deletions(-) rename docs/document/assets/{app.BfyKMyXg.js => app.CUpGwB5x.js} (95%) rename docs/document/assets/chunks/{theme.DWC8mntC.js => theme.DllzBSR9.js} (99%) delete mode 100644 docs/document/assets/chunks/virtual_search-data.BhiJ7XR7.js create mode 100644 docs/document/assets/chunks/virtual_search-data.CLDmFAmC.js create mode 100644 docs/document/assets/en_plugin_danmuku.md.DqSk_DK5.js create mode 100644 docs/document/assets/en_plugin_danmuku.md.DqSk_DK5.lean.js rename docs/document/assets/{plugin_danmuku.md.CFjljCkq.js => plugin_danmuku.md.gN3hMRyB.js} (72%) rename docs/document/assets/{plugin_danmuku.md.CFjljCkq.lean.js => plugin_danmuku.md.gN3hMRyB.lean.js} (78%) create mode 100644 docs/document/en/plugin/danmuku.html create mode 100644 packages/artplayer-vitepress/docs/en/plugin/danmuku.md create mode 100644 refactor/baselines/danmuku-docs-validation.json create mode 100644 refactor/changes/2026-09-15-SITE-DANMUKU-01-guides.md create mode 100644 test/browser/document-danmuku.spec.js diff --git a/docs/document/404.html b/docs/document/404.html index 9fffd996f..fd6c4c2c6 100644 --- a/docs/document/404.html +++ b/docs/document/404.html @@ -9,7 +9,7 @@ - + @@ -21,7 +21,7 @@
- + \ No newline at end of file diff --git a/docs/document/advanced/built-in.html b/docs/document/advanced/built-in.html index 7f93879c5..e8ff17a1f 100644 --- a/docs/document/advanced/built-in.html +++ b/docs/document/advanced/built-in.html @@ -9,9 +9,9 @@ - + - + @@ -217,7 +217,7 @@ art.on('ready', () => { art.plugins.add(myPlugin); }); - + \ No newline at end of file diff --git a/docs/document/advanced/class.html b/docs/document/advanced/class.html index 8aacf0e35..e91e96df3 100644 --- a/docs/document/advanced/class.html +++ b/docs/document/advanced/class.html @@ -9,9 +9,9 @@ - + - + @@ -31,7 +31,7 @@ }); console.info([...Artplayer.instances]);

version ​

返回播放器的版本信息

▶ Run Code
js
console.info(Artplayer.version);

env ​

返回播放器的环境变量

▶ Run Code
js
console.info(Artplayer.env);

build ​

返回播放器的打包时间

▶ Run Code
js
console.info(Artplayer.build);

config ​

返回视频的默认配置

▶ Run Code
js
console.info(Artplayer.config);

utils ​

返回播放器的工具函数集合

▶ Run Code
js
console.info(Artplayer.utils);

全部工具函数请参考以下地址:

artplayer/types/utils.d.ts

scheme ​

返回播放器选项的校验方案

▶ Run Code
js
console.info(Artplayer.scheme);

Emitter ​

返回事件分发器的构造函数

▶ Run Code
js
console.info(Artplayer.Emitter);

validator ​

返回选项的校验函数

▶ Run Code
js
console.info(Artplayer.validator);

kindOf ​

返回类型检测的函数工具

▶ Run Code
js
console.info(Artplayer.kindOf);

html ​

返回播放器所需的 html 字符串

▶ Run Code
js
console.info(Artplayer.html);

option ​

返回播放器的默认选项

▶ Run Code
js
console.info(Artplayer.option);
- + \ No newline at end of file diff --git a/docs/document/advanced/event.html b/docs/document/advanced/event.html index 6d66ca55f..9ac73df64 100644 --- a/docs/document/advanced/event.html +++ b/docs/document/advanced/event.html @@ -9,9 +9,9 @@ - + - + @@ -385,7 +385,7 @@ art.on('keydown', (event) => { console.log(event.code); });

video:canplay ​

浏览器可以播放媒体文件了,但估计没有足够的数据来支撑播放到结束,不必停下来进一步缓冲内容

video:canplaythrough ​

浏览器估计它可以在不停止内容缓冲的情况下播放媒体直到结束

video:complete ​

OfflineAudioContext 渲染完成

video:durationchange ​

duration 属性的值改变时触发

video:emptied ​

媒体内容变为空;例如,当这个 media 已经加载完成(或者部分加载完成),则发送此事件,并调用 load() 方法重新加载它

video:ended ​

视频停止播放,因为 media 已经到达结束点

video:error ​

获取媒体数据时出错,或者资源类型不是受支持的媒体格式

video:loadeddata ​

media 中的首帧已经完成加载

video:loadedmetadata ​

已加载元数据

video:pause ​

播放已暂停

video:play ​

播放已开始

video:playing ​

由于缺乏数据而暂停或延迟后,播放准备开始

video:progress ​

在浏览器加载资源时周期性触发

video:ratechange ​

播放速率发生变化

video:seeked ​

跳帧(seek)操作完成

video:seeking ​

跳帧(seek)操作开始

video:stalled ​

用户代理(user agent)正在尝试获取媒体数据,但数据意外未出现

video:suspend ​

媒体数据加载已暂停

video:timeupdate ​

currentTime 属性指定的时间发生变化

video:volumechange ​

音量发生变化

video:waiting ​

由于暂时缺少数据,播放已停止

- + \ No newline at end of file diff --git a/docs/document/advanced/global.html b/docs/document/advanced/global.html index c061df91b..20abede52 100644 --- a/docs/document/advanced/global.html +++ b/docs/document/advanced/global.html @@ -9,9 +9,9 @@ - + - + @@ -248,7 +248,7 @@ // 只销毁界面,不主动清空 src art.destroy(); - + \ No newline at end of file diff --git a/docs/document/advanced/plugin.html b/docs/document/advanced/plugin.html index c1eb494b9..bc565f62f 100644 --- a/docs/document/advanced/plugin.html +++ b/docs/document/advanced/plugin.html @@ -9,9 +9,9 @@ - + - + @@ -122,7 +122,7 @@ }) ], }); - + \ No newline at end of file diff --git a/docs/document/advanced/property.html b/docs/document/advanced/property.html index 22a6720f2..a7488d513 100644 --- a/docs/document/advanced/property.html +++ b/docs/document/advanced/property.html @@ -9,9 +9,9 @@ - + - + @@ -457,7 +457,7 @@ art.on('ready', () => { art.subtitleOffset = 1; }); - + \ No newline at end of file diff --git a/docs/document/assets/app.BfyKMyXg.js b/docs/document/assets/app.CUpGwB5x.js similarity index 95% rename from docs/document/assets/app.BfyKMyXg.js rename to docs/document/assets/app.CUpGwB5x.js index 6e7658bb0..77681affb 100644 --- a/docs/document/assets/app.BfyKMyXg.js +++ b/docs/document/assets/app.CUpGwB5x.js @@ -1 +1 @@ -import{t as p}from"./chunks/theme.DWC8mntC.js";import{R as s,a6 as i,a7 as u,a8 as c,a9 as l,aa as f,ab as d,ac as m,ad as h,ae as g,af as A,d as v,u as y,v as C,s as P,ag as b,ah as w,ai as R,aj as E}from"./chunks/framework.xxfEszSJ.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=y();return C(()=>{P(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),R(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=D(),a=j();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function j(){return A(S)}function D(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp}; +import{t as p}from"./chunks/theme.DllzBSR9.js";import{R as s,a6 as i,a7 as u,a8 as c,a9 as l,aa as f,ab as d,ac as m,ad as h,ae as g,af as A,d as v,u as y,v as C,s as P,ag as b,ah as w,ai as R,aj as E}from"./chunks/framework.xxfEszSJ.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=y();return C(()=>{P(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),R(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=D(),a=j();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function j(){return A(S)}function D(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp}; diff --git a/docs/document/assets/chunks/theme.DWC8mntC.js b/docs/document/assets/chunks/theme.DllzBSR9.js similarity index 99% rename from docs/document/assets/chunks/theme.DWC8mntC.js rename to docs/document/assets/chunks/theme.DllzBSR9.js index a46f1f36e..2a58b8d61 100644 --- a/docs/document/assets/chunks/theme.DWC8mntC.js +++ b/docs/document/assets/chunks/theme.DllzBSR9.js @@ -1 +1 @@ -import{d as k,c as h,r as p,n as A,o as i,a as ee,t as C,b as P,w as f,T as we,e as g,_ as V,u as Re,i as it,f as lt,g as he,h as S,j as d,k as c,l as te,m as Pe,p as T,q as J,s as fe,v as Q,x as Me,y as Ne,z as ct,A as ut,F as H,B as z,C as Z,D as We,E as ve,G as y,H as W,I as Ke,J as me,K as Y,L as _e,M as dt,N as Je,O as pt,P as Ie,Q as xe,R as ge,S as ht,U as ft,V as vt,W as Fe,X as mt,Y as Xe,Z as _t,$ as gt,a0 as Ye,a1 as Qe,a2 as kt,a3 as bt,a4 as $t,a5 as yt}from"./framework.xxfEszSJ.js";const Pt=k({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(n){return(e,t)=>(i(),h("span",{class:A(["VPBadge",e.type])},[p(e.$slots,"default",{},()=>[ee(C(e.text),1)])],2))}}),Lt={key:0,class:"VPBackdrop"},Vt=k({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(n){return(e,t)=>(i(),P(we,{name:"fade"},{default:f(()=>[e.show?(i(),h("div",Lt)):g("",!0)]),_:1}))}}),St=V(Vt,[["__scopeId","data-v-b2600058"]]),M=Re;function Tt(n,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(n,e):(n(),(s=!0)&&setTimeout(()=>s=!1,e))}}function Le(n){return n.startsWith("/")?n:`/${n}`}function Ce(n){const{pathname:e,search:t,hash:s,protocol:o}=new URL(n,"http://a.com");if(it(n)||n.startsWith("#")||!o.startsWith("http")||!lt(e))return n;const{site:a}=M(),r=e.endsWith("/")||e.endsWith(".html")?n:n.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,a.value.cleanUrls?"":".html")}${t}${s}`);return he(r)}function ae({correspondingLink:n=!1}={}){const{site:e,localeIndex:t,page:s,theme:o,hash:a}=M(),r=S(()=>{var u,v;return{label:(u=e.value.locales[t.value])==null?void 0:u.label,link:((v=e.value.locales[t.value])==null?void 0:v.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:S(()=>Object.entries(e.value.locales).flatMap(([u,v])=>r.value.label===v.label?[]:{text:v.label,link:wt(v.link||(u==="root"?"/":`/${u}/`),o.value.i18nRouting!==!1&&n,s.value.relativePath.slice(r.value.link.length-1),!e.value.cleanUrls)+a.value})),currentLang:r}}function wt(n,e,t,s){return e?n.replace(/\/$/,"")+Le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):n}const Mt={class:"NotFound"},Nt={class:"code"},It={class:"title"},Ct={class:"quote"},At={class:"action"},Ht=["href","aria-label"],Bt=k({__name:"NotFound",setup(n){const{theme:e}=M(),{currentLang:t}=ae();return(s,o)=>{var a,r,l,u,v;return i(),h("div",Mt,[d("p",Nt,C(((a=c(e).notFound)==null?void 0:a.code)??"404"),1),d("h1",It,C(((r=c(e).notFound)==null?void 0:r.title)??"PAGE NOT FOUND"),1),o[0]||(o[0]=d("div",{class:"divider"},null,-1)),d("blockquote",Ct,C(((l=c(e).notFound)==null?void 0:l.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),d("div",At,[d("a",{class:"link",href:c(he)(c(t).link),"aria-label":((u=c(e).notFound)==null?void 0:u.linkLabel)??"go to home"},C(((v=c(e).notFound)==null?void 0:v.linkText)??"Take me home"),9,Ht)])])}}}),Et=V(Bt,[["__scopeId","data-v-93fd8736"]]);function Ze(n,e){if(Array.isArray(n))return le(n);if(n==null)return[];e=Le(e);const t=Object.keys(n).sort((o,a)=>a.split("/").length-o.split("/").length).find(o=>e.startsWith(Le(o))),s=t?n[t]:[];return Array.isArray(s)?le(s):le(s.items,s.base)}function Ot(n){const e=[];let t=0;for(const s in n){const o=n[s];if(o.items){t=e.push(o);continue}e[t]||e.push({items:[]}),e[t].items.push(o)}return e}function Dt(n){const e=[];function t(s){for(const o of s)o.text&&o.link&&e.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&t(o.items)}return t(n),e}function Ve(n,e){return Array.isArray(e)?e.some(t=>Ve(n,t)):te(n,e.link)?!0:e.items?Ve(n,e.items):!1}function le(n,e){return[...n].map(t=>{const s={...t},o=s.base||e;return o&&s.link&&(s.link=o+s.link),s.items&&(s.items=le(s.items,o)),s})}function x(){const{frontmatter:n,page:e,theme:t}=M(),s=Pe("(min-width: 960px)"),o=T(!1),a=S(()=>{const N=t.value.sidebar,w=e.value.relativePath;return N?Ze(N,w):[]}),r=T(a.value);J(a,(N,w)=>{JSON.stringify(N)!==JSON.stringify(w)&&(r.value=a.value)});const l=S(()=>n.value.sidebar!==!1&&r.value.length>0&&n.value.layout!=="home"),u=S(()=>v?n.value.aside==null?t.value.aside==="left":n.value.aside==="left":!1),v=S(()=>n.value.layout==="home"?!1:n.value.aside!=null?!!n.value.aside:t.value.aside!==!1),_=S(()=>l.value&&s.value),m=S(()=>l.value?Ot(r.value):[]);function L(){o.value=!0}function b(){o.value=!1}function $(){o.value?b():L()}return{isOpen:o,sidebar:r,sidebarGroups:m,hasSidebar:l,hasAside:v,leftAside:u,isSidebarEnabled:_,open:L,close:b,toggle:$}}function Ft(n,e){let t;fe(()=>{t=n.value?document.activeElement:void 0}),Q(()=>{window.addEventListener("keyup",s)}),Me(()=>{window.removeEventListener("keyup",s)});function s(o){o.key==="Escape"&&n.value&&(e(),t==null||t.focus())}}function zt(n){const{page:e,hash:t}=M(),s=T(!1),o=S(()=>n.value.collapsed!=null),a=S(()=>!!n.value.link),r=T(!1),l=()=>{r.value=te(e.value.relativePath,n.value.link)};J([e,n,t],l),Q(l);const u=S(()=>r.value?!0:n.value.items?Ve(e.value.relativePath,n.value.items):!1),v=S(()=>!!(n.value.items&&n.value.items.length));fe(()=>{s.value=!!(o.value&&n.value.collapsed)}),Ne(()=>{(r.value||u.value)&&(s.value=!1)});function _(){o.value&&(s.value=!s.value)}return{collapsed:s,collapsible:o,isLink:a,isActiveLink:r,hasActiveLink:u,hasChildren:v,toggle:_}}function jt(){const{hasSidebar:n}=x(),e=Pe("(min-width: 960px)"),t=Pe("(min-width: 1280px)");return{isAsideEnabled:S(()=>!t.value&&!e.value?!1:n.value?t.value:e.value)}}const Ut=/\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/,Se=[];function et(n){return typeof n.outline=="object"&&!Array.isArray(n.outline)&&n.outline.label||n.outlineTitle||"On this page"}function Ae(n){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:qt(t),link:"#"+t.id,level:s}});return Gt(e,n)}function qt(n){let e="";for(const t of n.childNodes)if(t.nodeType===1){if(Ut.test(t.className))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Gt(n,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,o]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return Kt(n,s,o)}function Rt(n,e){const{isAsideEnabled:t}=jt(),s=Tt(a,100);let o=null;Q(()=>{requestAnimationFrame(a),window.addEventListener("scroll",s)}),ct(()=>{r(location.hash)}),Me(()=>{window.removeEventListener("scroll",s)});function a(){if(!t.value)return;const l=window.scrollY,u=window.innerHeight,v=document.body.offsetHeight,_=Math.abs(l+u-v)<1,m=Se.map(({element:b,link:$})=>({link:$,top:Wt(b)})).filter(({top:b})=>!Number.isNaN(b)).sort((b,$)=>b.top-$.top);if(!m.length){r(null);return}if(l<1){r(null);return}if(_){r(m[m.length-1].link);return}let L=null;for(const{link:b,top:$}of m){if($>l+ut()+4)break;L=b}r(L)}function r(l){o&&o.classList.remove("active"),l==null?o=null:o=n.value.querySelector(`a[href="${decodeURIComponent(l)}"]`);const u=o;u?(u.classList.add("active"),e.value.style.top=u.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Wt(n){let e=0;for(;n!==document.body;){if(n===null)return NaN;e+=n.offsetTop,n=n.offsetParent}return e}function Kt(n,e,t){Se.length=0;const s=[],o=[];return n.forEach(a=>{const r={...a,children:[]};let l=o[o.length-1];for(;l&&l.level>=r.level;)o.pop(),l=o[o.length-1];if(r.element.classList.contains("ignore-header")||l&&"shouldIgnore"in l){o.push({level:r.level,shouldIgnore:!0});return}r.level>t||r.level{const o=Z("VPDocOutlineItem",!0);return i(),h("ul",{class:A(["VPDocOutlineItem",t.root?"root":"nested"])},[(i(!0),h(H,null,z(t.headers,({children:a,link:r,title:l})=>(i(),h("li",null,[d("a",{class:"outline-link",href:r,onClick:e,title:l},C(l),9,Jt),a!=null&&a.length?(i(),P(o,{key:0,headers:a},null,8,["headers"])):g("",!0)]))),256))],2)}}}),tt=V(xt,[["__scopeId","data-v-da421f78"]]),Xt={class:"content"},Yt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Qt=k({__name:"VPDocAsideOutline",setup(n){const{frontmatter:e,theme:t}=M(),s=We([]);ve(()=>{s.value=Ae(e.value.outline??t.value.outline)});const o=T(),a=T();return Rt(o,a),(r,l)=>(i(),h("nav",{"aria-labelledby":"doc-outline-aria-label",class:A(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:o},[d("div",Xt,[d("div",{class:"outline-marker",ref_key:"marker",ref:a},null,512),d("div",Yt,C(c(et)(c(t))),1),y(tt,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),Zt=V(Qt,[["__scopeId","data-v-dfbd9fb8"]]),en={class:"VPDocAsideCarbonAds"},tn=k({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(n){const e=()=>null;return(t,s)=>(i(),h("div",en,[y(c(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),nn={class:"VPDocAside"},sn=k({__name:"VPDocAside",setup(n){const{theme:e}=M();return(t,s)=>(i(),h("div",nn,[p(t.$slots,"aside-top",{},void 0,!0),p(t.$slots,"aside-outline-before",{},void 0,!0),y(Zt),p(t.$slots,"aside-outline-after",{},void 0,!0),s[0]||(s[0]=d("div",{class:"spacer"},null,-1)),p(t.$slots,"aside-ads-before",{},void 0,!0),c(e).carbonAds?(i(),P(tn,{key:0,"carbon-ads":c(e).carbonAds},null,8,["carbon-ads"])):g("",!0),p(t.$slots,"aside-ads-after",{},void 0,!0),p(t.$slots,"aside-bottom",{},void 0,!0)]))}}),on=V(sn,[["__scopeId","data-v-79cae1a0"]]);function an(){const{theme:n,page:e}=M();return S(()=>{const{text:t="Edit this page",pattern:s=""}=n.value.editLink||{};let o;return typeof s=="function"?o=s(e.value):o=s.replace(/:path/g,e.value.filePath),{url:o,text:t}})}function rn(){const{page:n,theme:e,frontmatter:t}=M();return S(()=>{var v,_,m,L,b,$,N,w;const s=Ze(e.value.sidebar,n.value.relativePath),o=Dt(s),a=ln(o,O=>O.link.replace(/[?#].*$/,"")),r=a.findIndex(O=>te(n.value.relativePath,O.link)),l=((v=e.value.docFooter)==null?void 0:v.prev)===!1&&!t.value.prev||t.value.prev===!1,u=((_=e.value.docFooter)==null?void 0:_.next)===!1&&!t.value.next||t.value.next===!1;return{prev:l?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((m=a[r-1])==null?void 0:m.docFooterText)??((L=a[r-1])==null?void 0:L.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((b=a[r-1])==null?void 0:b.link)},next:u?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??(($=a[r+1])==null?void 0:$.docFooterText)??((N=a[r+1])==null?void 0:N.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((w=a[r+1])==null?void 0:w.link)}}})}function ln(n,e){const t=new Set;return n.filter(s=>{const o=e(s);return t.has(o)?!1:t.add(o)})}const K=k({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(n){const e=n,t=S(()=>e.tag??(e.href?"a":"span")),s=S(()=>e.href&&Ke.test(e.href)||e.target==="_blank");return(o,a)=>(i(),P(W(t.value),{class:A(["VPLink",{link:o.href,"vp-external-link-icon":s.value,"no-icon":o.noIcon}]),href:o.href?c(Ce)(o.href):void 0,target:o.target??(s.value?"_blank":void 0),rel:o.rel??(s.value?"noreferrer":void 0)},{default:f(()=>[p(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),cn={class:"VPLastUpdated"},un=["datetime"],dn=k({__name:"VPDocFooterLastUpdated",setup(n){const{theme:e,page:t,lang:s}=M(),o=S(()=>new Date(t.value.lastUpdated)),a=S(()=>o.value.toISOString()),r=T("");return Q(()=>{fe(()=>{var l,u,v;r.value=new Intl.DateTimeFormat((u=(l=e.value.lastUpdated)==null?void 0:l.formatOptions)!=null&&u.forceLocale?s.value:void 0,((v=e.value.lastUpdated)==null?void 0:v.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(o.value)})}),(l,u)=>{var v;return i(),h("p",cn,[ee(C(((v=c(e).lastUpdated)==null?void 0:v.text)||c(e).lastUpdatedText||"Last updated")+": ",1),d("time",{datetime:a.value},C(r.value),9,un)])}}}),pn=V(dn,[["__scopeId","data-v-e95db471"]]),hn={key:0,class:"VPDocFooter"},fn={key:0,class:"edit-info"},vn={key:0,class:"edit-link"},mn={key:1,class:"last-updated"},_n={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},gn={class:"pager"},kn=["innerHTML"],bn=["innerHTML"],$n={class:"pager"},yn=["innerHTML"],Pn=["innerHTML"],Ln=k({__name:"VPDocFooter",setup(n){const{theme:e,page:t,frontmatter:s}=M(),o=an(),a=rn(),r=S(()=>e.value.editLink&&s.value.editLink!==!1),l=S(()=>t.value.lastUpdated),u=S(()=>r.value||l.value||a.value.prev||a.value.next);return(v,_)=>{var m,L,b,$;return u.value?(i(),h("footer",hn,[p(v.$slots,"doc-footer-before",{},void 0,!0),r.value||l.value?(i(),h("div",fn,[r.value?(i(),h("div",vn,[y(K,{class:"edit-link-button",href:c(o).url,"no-icon":!0},{default:f(()=>[_[0]||(_[0]=d("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),ee(" "+C(c(o).text),1)]),_:1},8,["href"])])):g("",!0),l.value?(i(),h("div",mn,[y(pn)])):g("",!0)])):g("",!0),(m=c(a).prev)!=null&&m.link||(L=c(a).next)!=null&&L.link?(i(),h("nav",_n,[_[1]||(_[1]=d("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),d("div",gn,[(b=c(a).prev)!=null&&b.link?(i(),P(K,{key:0,class:"pager-link prev",href:c(a).prev.link},{default:f(()=>{var N;return[d("span",{class:"desc",innerHTML:((N=c(e).docFooter)==null?void 0:N.prev)||"Previous page"},null,8,kn),d("span",{class:"title",innerHTML:c(a).prev.text},null,8,bn)]}),_:1},8,["href"])):g("",!0)]),d("div",$n,[($=c(a).next)!=null&&$.link?(i(),P(K,{key:0,class:"pager-link next",href:c(a).next.link},{default:f(()=>{var N;return[d("span",{class:"desc",innerHTML:((N=c(e).docFooter)==null?void 0:N.next)||"Next page"},null,8,yn),d("span",{class:"title",innerHTML:c(a).next.text},null,8,Pn)]}),_:1},8,["href"])):g("",!0)])])):g("",!0)])):g("",!0)}}}),Vn=V(Ln,[["__scopeId","data-v-07d71ff1"]]),Sn={class:"container"},Tn={class:"aside-container"},wn={class:"aside-content"},Mn={class:"content"},Nn={class:"content-container"},In={class:"main"},Cn=k({__name:"VPDoc",setup(n){const{theme:e}=M(),t=me(),{hasSidebar:s,hasAside:o,leftAside:a}=x(),r=S(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(l,u)=>{const v=Z("Content");return i(),h("div",{class:A(["VPDoc",{"has-sidebar":c(s),"has-aside":c(o)}])},[p(l.$slots,"doc-top",{},void 0,!0),d("div",Sn,[c(o)?(i(),h("div",{key:0,class:A(["aside",{"left-aside":c(a)}])},[u[0]||(u[0]=d("div",{class:"aside-curtain"},null,-1)),d("div",Tn,[d("div",wn,[y(on,null,{"aside-top":f(()=>[p(l.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[p(l.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[p(l.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[p(l.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[p(l.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[p(l.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):g("",!0),d("div",Mn,[d("div",Nn,[p(l.$slots,"doc-before",{},void 0,!0),d("main",In,[y(v,{class:A(["vp-doc",[r.value,c(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),y(Vn,null,{"doc-footer-before":f(()=>[p(l.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),p(l.$slots,"doc-after",{},void 0,!0)])])]),p(l.$slots,"doc-bottom",{},void 0,!0)],2)}}}),An=V(Cn,[["__scopeId","data-v-ef3a4dda"]]),Hn=k({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(n){const e=n,t=S(()=>e.href&&Ke.test(e.href)),s=S(()=>e.tag||(e.href?"a":"button"));return(o,a)=>(i(),P(W(s.value),{class:A(["VPButton",[o.size,o.theme]]),href:o.href?c(Ce)(o.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[ee(C(o.text),1)]),_:1},8,["class","href","target","rel"]))}}),Bn=V(Hn,[["__scopeId","data-v-b20c43c2"]]),En=["src","alt"],On=k({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(n){return(e,t)=>{const s=Z("VPImage",!0);return e.image?(i(),h(H,{key:0},[typeof e.image=="string"||"src"in e.image?(i(),h("img",Y({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:c(he)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,En)):(i(),h(H,{key:1},[y(s,Y({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),y(s,Y({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):g("",!0)}}}),ue=V(On,[["__scopeId","data-v-4d414b82"]]),Dn={class:"container"},Fn={class:"main"},zn={class:"heading"},jn=["innerHTML"],Un=["innerHTML"],qn=["innerHTML"],Gn={key:0,class:"actions"},Rn={key:0,class:"image"},Wn={class:"image-container"},Kn=k({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(n){const e=_e("hero-image-slot-exists");return(t,s)=>(i(),h("div",{class:A(["VPHero",{"has-image":t.image||c(e)}])},[d("div",Dn,[d("div",Fn,[p(t.$slots,"home-hero-info-before",{},void 0,!0),p(t.$slots,"home-hero-info",{},()=>[d("h1",zn,[t.name?(i(),h("span",{key:0,innerHTML:t.name,class:"name clip"},null,8,jn)):g("",!0),t.text?(i(),h("span",{key:1,innerHTML:t.text,class:"text"},null,8,Un)):g("",!0)]),t.tagline?(i(),h("p",{key:0,innerHTML:t.tagline,class:"tagline"},null,8,qn)):g("",!0)],!0),p(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(i(),h("div",Gn,[(i(!0),h(H,null,z(t.actions,o=>(i(),h("div",{key:o.link,class:"action"},[y(Bn,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link,target:o.target,rel:o.rel},null,8,["theme","text","href","target","rel"])]))),128))])):g("",!0),p(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||c(e)?(i(),h("div",Rn,[d("div",Wn,[s[0]||(s[0]=d("div",{class:"image-bg"},null,-1)),p(t.$slots,"home-hero-image",{},()=>[t.image?(i(),P(ue,{key:0,class:"image-src",image:t.image},null,8,["image"])):g("",!0)],!0)])])):g("",!0)])],2))}}),Jn=V(Kn,[["__scopeId","data-v-d266baba"]]),xn=k({__name:"VPHomeHero",setup(n){const{frontmatter:e}=M();return(t,s)=>c(e).hero?(i(),P(Jn,{key:0,class:"VPHomeHero",name:c(e).hero.name,text:c(e).hero.text,tagline:c(e).hero.tagline,image:c(e).hero.image,actions:c(e).hero.actions},{"home-hero-info-before":f(()=>[p(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[p(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[p(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[p(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[p(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):g("",!0)}}),Xn={class:"box"},Yn={key:0,class:"icon"},Qn=["innerHTML"],Zn=["innerHTML"],es=["innerHTML"],ts={key:4,class:"link-text"},ns={class:"link-text-value"},ss=k({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(n){return(e,t)=>(i(),P(K,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[d("article",Xn,[typeof e.icon=="object"&&e.icon.wrap?(i(),h("div",Yn,[y(ue,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(i(),P(ue,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(i(),h("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Qn)):g("",!0),d("h2",{class:"title",innerHTML:e.title},null,8,Zn),e.details?(i(),h("p",{key:3,class:"details",innerHTML:e.details},null,8,es)):g("",!0),e.linkText?(i(),h("div",ts,[d("p",ns,[ee(C(e.linkText)+" ",1),t[0]||(t[0]=d("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):g("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),os=V(ss,[["__scopeId","data-v-95001937"]]),as={key:0,class:"VPFeatures"},rs={class:"container"},is={class:"items"},ls=k({__name:"VPFeatures",props:{features:{}},setup(n){const e=n,t=S(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,o)=>s.features?(i(),h("div",as,[d("div",rs,[d("div",is,[(i(!0),h(H,null,z(s.features,a=>(i(),h("div",{key:a.title,class:A(["item",[t.value]])},[y(os,{icon:a.icon,title:a.title,details:a.details,link:a.link,"link-text":a.linkText,rel:a.rel,target:a.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):g("",!0)}}),cs=V(ls,[["__scopeId","data-v-1da4ff3d"]]),us=k({__name:"VPHomeFeatures",setup(n){const{frontmatter:e}=M();return(t,s)=>c(e).features?(i(),P(cs,{key:0,class:"VPHomeFeatures",features:c(e).features},null,8,["features"])):g("",!0)}}),ds=k({__name:"VPHomeContent",setup(n){const{width:e}=dt({initialWidth:0,includeScrollbar:!1});return(t,s)=>(i(),h("div",{class:"vp-doc container",style:Je(c(e)?{"--vp-offset":`calc(50% - ${c(e)/2}px)`}:{})},[p(t.$slots,"default",{},void 0,!0)],4))}}),ps=V(ds,[["__scopeId","data-v-2498cc33"]]),hs=k({__name:"VPHome",setup(n){const{frontmatter:e,theme:t}=M();return(s,o)=>{const a=Z("Content");return i(),h("div",{class:A(["VPHome",{"external-link-icon-enabled":c(t).externalLinkIcon}])},[p(s.$slots,"home-hero-before",{},void 0,!0),y(xn,null,{"home-hero-info-before":f(()=>[p(s.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[p(s.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[p(s.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[p(s.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[p(s.$slots,"home-hero-image",{},void 0,!0)]),_:3}),p(s.$slots,"home-hero-after",{},void 0,!0),p(s.$slots,"home-features-before",{},void 0,!0),y(us),p(s.$slots,"home-features-after",{},void 0,!0),c(e).markdownStyles!==!1?(i(),P(ps,{key:0},{default:f(()=>[y(a)]),_:1})):(i(),P(a,{key:1}))],2)}}}),fs=V(hs,[["__scopeId","data-v-8b59c434"]]),vs={},ms={class:"VPPage"};function _s(n,e){const t=Z("Content");return i(),h("div",ms,[p(n.$slots,"page-top"),y(t),p(n.$slots,"page-bottom")])}const gs=V(vs,[["render",_s]]),ks=k({__name:"VPContent",setup(n){const{page:e,frontmatter:t}=M(),{hasSidebar:s}=x();return(o,a)=>(i(),h("div",{class:A(["VPContent",{"has-sidebar":c(s),"is-home":c(t).layout==="home"}]),id:"VPContent"},[c(e).isNotFound?p(o.$slots,"not-found",{key:0},()=>[y(Et)],!0):c(t).layout==="page"?(i(),P(gs,{key:1},{"page-top":f(()=>[p(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[p(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):c(t).layout==="home"?(i(),P(fs,{key:2},{"home-hero-before":f(()=>[p(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[p(o.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[p(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[p(o.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[p(o.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[p(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[p(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[p(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[p(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):c(t).layout&&c(t).layout!=="doc"?(i(),P(W(c(t).layout),{key:3})):(i(),P(An,{key:4},{"doc-top":f(()=>[p(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[p(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[p(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[p(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[p(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[p(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[p(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[p(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[p(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[p(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[p(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),bs=V(ks,[["__scopeId","data-v-d2aef184"]]),$s={class:"container"},ys=["innerHTML"],Ps=["innerHTML"],Ls=k({__name:"VPFooter",setup(n){const{theme:e,frontmatter:t}=M(),{hasSidebar:s}=x();return(o,a)=>c(e).footer&&c(t).footer!==!1?(i(),h("footer",{key:0,class:A(["VPFooter",{"has-sidebar":c(s)}])},[d("div",$s,[c(e).footer.message?(i(),h("p",{key:0,class:"message",innerHTML:c(e).footer.message},null,8,ys)):g("",!0),c(e).footer.copyright?(i(),h("p",{key:1,class:"copyright",innerHTML:c(e).footer.copyright},null,8,Ps)):g("",!0)])],2)):g("",!0)}}),Vs=V(Ls,[["__scopeId","data-v-e3157d6d"]]);function Ss(){const{theme:n,frontmatter:e}=M(),t=We([]),s=S(()=>t.value.length>0);return ve(()=>{t.value=Ae(e.value.outline??n.value.outline)}),{headers:t,hasLocalNav:s}}const Ts={class:"menu-text"},ws={class:"header"},Ms={class:"outline"},Ns=k({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(n){const e=n,{theme:t}=M(),s=T(!1),o=T(0),a=T(),r=T();function l(m){var L;(L=a.value)!=null&&L.contains(m.target)||(s.value=!1)}J(s,m=>{if(m){document.addEventListener("click",l);return}document.removeEventListener("click",l)}),pt("Escape",()=>{s.value=!1}),ve(()=>{s.value=!1});function u(){s.value=!s.value,o.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function v(m){m.target.classList.contains("outline-link")&&(r.value&&(r.value.style.transition="none"),Ie(()=>{s.value=!1}))}function _(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(m,L)=>(i(),h("div",{class:"VPLocalNavOutlineDropdown",style:Je({"--vp-vh":o.value+"px"}),ref_key:"main",ref:a},[m.headers.length>0?(i(),h("button",{key:0,onClick:u,class:A({open:s.value})},[d("span",Ts,C(c(et)(c(t))),1),L[0]||(L[0]=d("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(i(),h("button",{key:1,onClick:_},C(c(t).returnToTopLabel||"Return to top"),1)),y(we,{name:"flyout"},{default:f(()=>[s.value?(i(),h("div",{key:0,ref_key:"items",ref:r,class:"items",onClick:v},[d("div",ws,[d("a",{class:"top-link",href:"#",onClick:_},C(c(t).returnToTopLabel||"Return to top"),1)]),d("div",Ms,[y(tt,{headers:m.headers},null,8,["headers"])])],512)):g("",!0)]),_:1})],4))}}),Is=V(Ns,[["__scopeId","data-v-d61422fe"]]),Cs={class:"container"},As=["aria-expanded"],Hs={class:"menu-text"},Bs=k({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(n){const{theme:e,frontmatter:t}=M(),{hasSidebar:s}=x(),{headers:o}=Ss(),{y:a}=xe(),r=T(0);Q(()=>{r.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),ve(()=>{o.value=Ae(t.value.outline??e.value.outline)});const l=S(()=>o.value.length===0),u=S(()=>l.value&&!s.value),v=S(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:l.value,fixed:u.value}));return(_,m)=>c(t).layout!=="home"&&(!u.value||c(a)>=r.value)?(i(),h("div",{key:0,class:A(v.value)},[d("div",Cs,[c(s)?(i(),h("button",{key:0,class:"menu","aria-expanded":_.open,"aria-controls":"VPSidebarNav",onClick:m[0]||(m[0]=L=>_.$emit("open-menu"))},[m[1]||(m[1]=d("span",{class:"vpi-align-left menu-icon"},null,-1)),d("span",Hs,C(c(e).sidebarMenuLabel||"Menu"),1)],8,As)):g("",!0),y(Is,{headers:c(o),navHeight:r.value},null,8,["headers","navHeight"])])],2)):g("",!0)}}),Es=V(Bs,[["__scopeId","data-v-9d8129cc"]]);function Os(){const n=T(!1);function e(){n.value=!0,window.addEventListener("resize",o)}function t(){n.value=!1,window.removeEventListener("resize",o)}function s(){n.value?t():e()}function o(){window.outerWidth>=768&&t()}const a=me();return J(()=>a.path,t),{isScreenOpen:n,openScreen:e,closeScreen:t,toggleScreen:s}}const Ds={},Fs={class:"VPSwitch",type:"button",role:"switch"},zs={class:"check"},js={key:0,class:"icon"};function Us(n,e){return i(),h("button",Fs,[d("span",zs,[n.$slots.default?(i(),h("span",js,[p(n.$slots,"default",{},void 0,!0)])):g("",!0)])])}const qs=V(Ds,[["render",Us],["__scopeId","data-v-7012e5dd"]]),Gs=k({__name:"VPSwitchAppearance",setup(n){const{isDark:e,theme:t}=M(),s=_e("toggle-appearance",()=>{e.value=!e.value}),o=T("");return Ne(()=>{o.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(a,r)=>(i(),P(qs,{title:o.value,class:"VPSwitchAppearance","aria-checked":c(e),onClick:c(s)},{default:f(()=>r[0]||(r[0]=[d("span",{class:"vpi-sun sun"},null,-1),d("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),He=V(Gs,[["__scopeId","data-v-fa1daf57"]]),Rs={key:0,class:"VPNavBarAppearance"},Ws=k({__name:"VPNavBarAppearance",setup(n){const{site:e}=M();return(t,s)=>c(e).appearance&&c(e).appearance!=="force-dark"&&c(e).appearance!=="force-auto"?(i(),h("div",Rs,[y(He)])):g("",!0)}}),Ks=V(Ws,[["__scopeId","data-v-123fcb2f"]]),Be=T();let nt=!1,be=0;function Js(n){const e=T(!1);if(ge){!nt&&xs(),be++;const t=J(Be,s=>{var o,a,r;s===n.el.value||(o=n.el.value)!=null&&o.contains(s)?(e.value=!0,(a=n.onFocus)==null||a.call(n)):(e.value=!1,(r=n.onBlur)==null||r.call(n))});Me(()=>{t(),be--,be||Xs()})}return ht(e)}function xs(){document.addEventListener("focusin",st),nt=!0,Be.value=document.activeElement}function Xs(){document.removeEventListener("focusin",st)}function st(){Be.value=document.activeElement}const Ys={class:"VPMenuLink"},Qs=["innerHTML"],Zs=k({__name:"VPMenuLink",props:{item:{}},setup(n){const{page:e}=M();return(t,s)=>(i(),h("div",Ys,[y(K,{class:A({active:c(te)(c(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:f(()=>[d("span",{innerHTML:t.item.text},null,8,Qs)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ke=V(Zs,[["__scopeId","data-v-65e4a6b1"]]),eo={class:"VPMenuGroup"},to={key:0,class:"title"},no=k({__name:"VPMenuGroup",props:{text:{},items:{}},setup(n){return(e,t)=>(i(),h("div",eo,[e.text?(i(),h("p",to,C(e.text),1)):g("",!0),(i(!0),h(H,null,z(e.items,s=>(i(),h(H,null,["link"in s?(i(),P(ke,{key:0,item:s},null,8,["item"])):g("",!0)],64))),256))]))}}),so=V(no,[["__scopeId","data-v-2bec9359"]]),oo={class:"VPMenu"},ao={key:0,class:"items"},ro=k({__name:"VPMenu",props:{items:{}},setup(n){return(e,t)=>(i(),h("div",oo,[e.items?(i(),h("div",ao,[(i(!0),h(H,null,z(e.items,s=>(i(),h(H,{key:JSON.stringify(s)},["link"in s?(i(),P(ke,{key:0,item:s},null,8,["item"])):"component"in s?(i(),P(W(s.component),Y({key:1,ref_for:!0},s.props),null,16)):(i(),P(so,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):g("",!0),p(e.$slots,"default",{},void 0,!0)]))}}),io=V(ro,[["__scopeId","data-v-39eca401"]]),lo=["aria-expanded","aria-label"],co={key:0,class:"text"},uo=["innerHTML"],po={key:1,class:"vpi-more-horizontal icon"},ho={class:"menu"},fo=k({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(n){const e=T(!1),t=T();Js({el:t,onBlur:s});function s(){e.value=!1}return(o,a)=>(i(),h("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:a[1]||(a[1]=r=>e.value=!0),onMouseleave:a[2]||(a[2]=r=>e.value=!1)},[d("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":o.label,onClick:a[0]||(a[0]=r=>e.value=!e.value)},[o.button||o.icon?(i(),h("span",co,[o.icon?(i(),h("span",{key:0,class:A([o.icon,"option-icon"])},null,2)):g("",!0),o.button?(i(),h("span",{key:1,innerHTML:o.button},null,8,uo)):g("",!0),a[3]||(a[3]=d("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(i(),h("span",po))],8,lo),d("div",ho,[y(io,{items:o.items},{default:f(()=>[p(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),Ee=V(fo,[["__scopeId","data-v-40e55da0"]]),vo=["href","aria-label","innerHTML"],mo=k({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(n){const e=n,t=T();Q(async()=>{var a;await Ie();const o=(a=t.value)==null?void 0:a.children[0];o instanceof HTMLElement&&o.className.startsWith("vpi-social-")&&(getComputedStyle(o).maskImage||getComputedStyle(o).webkitMaskImage)==="none"&&o.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const s=S(()=>typeof e.icon=="object"?e.icon.svg:``);return(o,a)=>(i(),h("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:o.link,"aria-label":o.ariaLabel??(typeof o.icon=="string"?o.icon:""),target:"_blank",rel:"noopener",innerHTML:s.value},null,8,vo))}}),_o=V(mo,[["__scopeId","data-v-fbf39218"]]),go={class:"VPSocialLinks"},ko=k({__name:"VPSocialLinks",props:{links:{}},setup(n){return(e,t)=>(i(),h("div",go,[(i(!0),h(H,null,z(e.links,({link:s,icon:o,ariaLabel:a})=>(i(),P(_o,{key:s,icon:o,link:s,ariaLabel:a},null,8,["icon","link","ariaLabel"]))),128))]))}}),Oe=V(ko,[["__scopeId","data-v-f2234a39"]]),bo={key:0,class:"group translations"},$o={class:"trans-title"},yo={key:1,class:"group"},Po={class:"item appearance"},Lo={class:"label"},Vo={class:"appearance-action"},So={key:2,class:"group"},To={class:"item social-links"},wo=k({__name:"VPNavBarExtra",setup(n){const{site:e,theme:t}=M(),{localeLinks:s,currentLang:o}=ae({correspondingLink:!0}),a=S(()=>s.value.length&&o.value.label||e.value.appearance||t.value.socialLinks);return(r,l)=>a.value?(i(),P(Ee,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[c(s).length&&c(o).label?(i(),h("div",bo,[d("p",$o,C(c(o).label),1),(i(!0),h(H,null,z(c(s),u=>(i(),P(ke,{key:u.link,item:u},null,8,["item"]))),128))])):g("",!0),c(e).appearance&&c(e).appearance!=="force-dark"&&c(e).appearance!=="force-auto"?(i(),h("div",yo,[d("div",Po,[d("p",Lo,C(c(t).darkModeSwitchLabel||"Appearance"),1),d("div",Vo,[y(He)])])])):g("",!0),c(t).socialLinks?(i(),h("div",So,[d("div",To,[y(Oe,{class:"social-links-list",links:c(t).socialLinks},null,8,["links"])])])):g("",!0)]),_:1})):g("",!0)}}),Mo=V(wo,[["__scopeId","data-v-0c845e5d"]]),No=["aria-expanded"],Io=k({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(n){return(e,t)=>(i(),h("button",{type:"button",class:A(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},t[1]||(t[1]=[d("span",{class:"container"},[d("span",{class:"top"}),d("span",{class:"middle"}),d("span",{class:"bottom"})],-1)]),10,No))}}),Co=V(Io,[["__scopeId","data-v-670493dd"]]),Ao=["innerHTML"],Ho=k({__name:"VPNavBarMenuLink",props:{item:{}},setup(n){const{page:e}=M();return(t,s)=>(i(),P(K,{class:A({VPNavBarMenuLink:!0,active:c(te)(c(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:f(()=>[d("span",{innerHTML:t.item.text},null,8,Ao)]),_:1},8,["class","href","target","rel","no-icon"]))}}),Bo=V(Ho,[["__scopeId","data-v-8dbce4d0"]]),Eo=k({__name:"VPNavBarMenuGroup",props:{item:{}},setup(n){const e=n,{page:t}=M(),s=a=>"component"in a?!1:"link"in a?te(t.value.relativePath,a.link,!!e.item.activeMatch):a.items.some(s),o=S(()=>s(e.item));return(a,r)=>(i(),P(Ee,{class:A({VPNavBarMenuGroup:!0,active:c(te)(c(t).relativePath,a.item.activeMatch,!!a.item.activeMatch)||o.value}),button:a.item.text,items:a.item.items},null,8,["class","button","items"]))}}),Oo={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Do=k({__name:"VPNavBarMenu",setup(n){const{theme:e}=M();return(t,s)=>c(e).nav?(i(),h("nav",Oo,[s[0]||(s[0]=d("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(i(!0),h(H,null,z(c(e).nav,o=>(i(),h(H,{key:JSON.stringify(o)},["link"in o?(i(),P(Bo,{key:0,item:o},null,8,["item"])):"component"in o?(i(),P(W(o.component),Y({key:1,ref_for:!0},o.props),null,16)):(i(),P(Eo,{key:2,item:o},null,8,["item"]))],64))),128))])):g("",!0)}}),Fo=V(Do,[["__scopeId","data-v-5bacfe89"]]),zo="/document/assets/flex-logo.BJA2J7hW.svg";function $e(n,e){return typeof n>"u"?e:n}function ze(n){const e=Array(n);for(let t=0;t=this.minlength&&(l||!r[_])){let L=ie(u,o,v),b="";switch(this.tokenize){case"full":if(3$;N--)if(N-$>=this.minlength){const w=ie(u,o,v,m,$);b=_.substring($,N),this.push_index(r,b,w,n,t)}break}case"reverse":if(2=this.minlength){const N=ie(u,o,v,m,$);this.push_index(r,b,N,n,t)}b=""}case"forward":if(1=this.minlength&&this.push_index(r,b,L,n,t);break}default:if(this.boost&&(L=Math.min(0|L/this.boost(e,_,v),u-1)),this.push_index(r,_,L,n,t),l&&1=this.minlength&&!$[_]){$[_]=1;const R=ie(N+(o/2>N?0:1),o,v,O-1,F-1),X=this.bidirectional&&_>w;this.push_index(a,X?w:_,R,n,t,X?_:w)}}}}}this.fastupdate||(this.register[n]=1)}}return this};function ie(n,e,t,s,o){return t&&1=this.minlength&&!m[b]){if(!this.optimize&&!a&&!this.map[b])return r;L[N++]=b,m[b]=1}n=L,s=n.length}if(!s)return r;e||(e=100);let u,v=this.depth&&1=t)))));b++);if(v)return o?qe(l,t,0):void(n[n.length]=l)}return!e&&l};function qe(n,e,t){return n=n.length===1?n[0]:Uo(n),t||n.length>e?n.slice(t,t+e):n}function Ge(n,e,t,s){if(t){const o=s&&e>t;n=n[o?e:t],n=n&&n[o?t:e]}else n=n[e];return n}q.prototype.contain=function(n){return!!this.register[n]},q.prototype.update=function(n,e){return this.remove(n).add(n,e)},q.prototype.remove=function(n,e){const t=this.register[n];if(t){if(this.fastupdate)for(let s,o=0;o{if(a.value){for(var B=m.value.search(a.value,{enrich:!0}),I=[],j=0;j!B||!B.length?[]:B.reduce((j,E)=>(j[I(E)]||(j[I(E)]=[]),j[I(E)].push(E),j),{}),R=()=>{setTimeout(()=>{l.value&&l.value.focus()},100),De(),o.value=!0};Q(async()=>{var E,D;const B=await vt(()=>import("./virtual_search-data.BhiJ7XR7.js"),[]);u.value=B.default.INDEX_DATA,v.value=B.default.PREVIEW_LOOKUP,_.value=B.default.Options,r.value=window.location.origin+he(t.value==="root"?"/":t.value),L.value=((E=_.value)==null?void 0:E.buttonLabel)||L.value,b.value=((D=_.value)==null?void 0:D.placeholder)||b.value;var I=new q(_.value);I.import("reg",u.value.reg),I.import("cfg",u.value.cfg),I.import("map",u.value.map),I.import("ctx",u.value.ctx),m.value=I,s.value.innerHTML=/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?"⌘":"Ctrl";const j=U=>{var se;U.key==="k"&&(U.ctrlKey||U.metaKey)&&(U.preventDefault(),R()),U.key==="Escape"&&((se=a.value)==null?void 0:se.length)==0&&o.value&&(o.value=!1)};window.addEventListener("keydown",j)});const X=S(()=>F(O.value,B=>B.link.split("/").slice(0,-1).join("-"))),ne=S(()=>Object.values(X.value).flat().map(B=>B.id));function De(){o.value=!1,a.value=""}const at=B=>{var I,j;if(document.getElementsByClassName("search-group")[0]){if(B.key=="ArrowUp"||B.key=="ArrowDown"){const E=ne.value.indexOf($.value);if(B.key=="ArrowUp"){const D=E==0?ne.value.length-1:E-1;$.value=ne.value[D]}if(B.key=="ArrowDown"){const D=E>ne.value.length-2?0:E+1;$.value=ne.value[D]}if(E<5){const D=N.value.getElementsByClassName("VPPluginSearch-search-group")[0];D==null||D.scrollIntoView(!0)}else(I=document.getElementById(ne.value[$.value]))==null||I.scrollIntoView(!0);Ie()}B.key=="Enter"&&w.go(e.site.value.base+((j=N.value.getElementsByClassName("link-focused")[0].getAttribute("href"))==null?void 0:j.replace(r.value,"")))}};return(B,I)=>{const j=Z("ClientOnly");return i(),h("div",la,[y(j,null,{default:f(()=>[(i(),P(gt,{to:"body"},[Fe(d("div",{class:"VPPluginSearch-modal-back",onClick:I[2]||(I[2]=E=>o.value=!1),onKeydown:at},[d("div",{class:"VPPluginSearch-modal",onClick:I[1]||(I[1]=Xe(()=>{},["stop"])),ref_key:"modal",ref:N},[d("form",ca,[I[4]||(I[4]=d("label",{class:"DocSearch-MagnifierLabel",for:"docsearch-input",id:"docsearch-label"},[d("svg",{width:"20",height:"20",class:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},[d("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})])],-1)),Fe(d("input",{class:"DocSearch-Input","aria-autocomplete":"both","aria-labelledby":"docsearch-label",id:"docsearch-input",autocomplete:"off",autocorrect:"off",autocapitalize:"off",enterkeyhint:"search",spellcheck:"false",autofocus:"true","onUpdate:modelValue":I[0]||(I[0]=E=>a.value=E),placeholder:b.value,maxlength:"64",type:"search",ref_key:"input",ref:l},null,8,ua),[[_t,a.value]])]),d("div",da,[(i(!0),h(H,null,z(X.value,(E,D)=>(i(),h("div",{class:"search-group",key:D},[d("span",pa,C(D?D.toString()[0].toUpperCase()+D.toString().slice(1):"Home"),1),(i(!0),h(H,null,z(E,(U,se)=>(i(),h("a",{href:r.value+U.link,key:U.id,onClick:De,onMouseenter:re=>$.value=U.id,class:A({"link-focused":$.value==U.id}),id:se.toString()},[d("div",fa,[d("span",va,C(U.link.includes("#")?"#":"▤"),1),d("div",ma,[d("h3",null,C(U.title),1),d("p",null,[d("div",{innerHTML:U.preview},null,8,_a)])]),I[5]||(I[5]=d("span",{class:"VPPluginSearch-search-item-icon"},"↪",-1))])],42,ha))),128))]))),128))]),I[6]||(I[6]=d("img",{class:"VPPluginSearch-flex-logo",src:zo,alt:"flex logo"},null,-1))],512)],544),[[mt,o.value]])]))]),_:1}),d("div",{id:"docsearch",onClick:I[3]||(I[3]=E=>R())},[d("button",ga,[d("span",ka,[I[7]||(I[7]=d("svg",{width:"20",height:"20",class:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},[d("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1)),d("span",ba,C(L.value),1)]),d("span",$a,[d("span",{class:"DocSearch-Button-Key",ref_key:"metaKey",ref:s},"Meta",512),I[8]||(I[8]=d("span",{class:"DocSearch-Button-Key"},"K",-1))])])])])}}}),Pa=k({__name:"VPNavBarSocialLinks",setup(n){const{theme:e}=M();return(t,s)=>c(e).socialLinks?(i(),P(Oe,{key:0,class:"VPNavBarSocialLinks",links:c(e).socialLinks},null,8,["links"])):g("",!0)}}),La=V(Pa,[["__scopeId","data-v-08b35e6f"]]),Va=["href","rel","target"],Sa=["innerHTML"],Ta={key:2},wa=k({__name:"VPNavBarTitle",setup(n){const{site:e,theme:t}=M(),{hasSidebar:s}=x(),{currentLang:o}=ae(),a=S(()=>{var u;return typeof t.value.logoLink=="string"?t.value.logoLink:(u=t.value.logoLink)==null?void 0:u.link}),r=S(()=>{var u;return typeof t.value.logoLink=="string"||(u=t.value.logoLink)==null?void 0:u.rel}),l=S(()=>{var u;return typeof t.value.logoLink=="string"||(u=t.value.logoLink)==null?void 0:u.target});return(u,v)=>(i(),h("div",{class:A(["VPNavBarTitle",{"has-sidebar":c(s)}])},[d("a",{class:"title",href:a.value??c(Ce)(c(o).link),rel:r.value,target:l.value},[p(u.$slots,"nav-bar-title-before",{},void 0,!0),c(t).logo?(i(),P(ue,{key:0,class:"logo",image:c(t).logo},null,8,["image"])):g("",!0),c(t).siteTitle?(i(),h("span",{key:1,innerHTML:c(t).siteTitle},null,8,Sa)):c(t).siteTitle===void 0?(i(),h("span",Ta,C(c(e).title),1)):g("",!0),p(u.$slots,"nav-bar-title-after",{},void 0,!0)],8,Va)],2))}}),Ma=V(wa,[["__scopeId","data-v-5622a072"]]),Na={class:"items"},Ia={class:"title"},Ca=k({__name:"VPNavBarTranslations",setup(n){const{theme:e}=M(),{localeLinks:t,currentLang:s}=ae({correspondingLink:!0});return(o,a)=>c(t).length&&c(s).label?(i(),P(Ee,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:c(e).langMenuLabel||"Change language"},{default:f(()=>[d("div",Na,[d("p",Ia,C(c(s).label),1),(i(!0),h(H,null,z(c(t),r=>(i(),P(ke,{key:r.link,item:r},null,8,["item"]))),128))])]),_:1},8,["label"])):g("",!0)}}),Aa=V(Ca,[["__scopeId","data-v-dac637f3"]]),Ha={class:"wrapper"},Ba={class:"container"},Ea={class:"title"},Oa={class:"content"},Da={class:"content-body"},Fa=k({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(n){const e=n,{y:t}=xe(),{hasSidebar:s}=x(),{frontmatter:o}=M(),a=T({});return Ne(()=>{a.value={"has-sidebar":s.value,home:o.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(r,l)=>(i(),h("div",{class:A(["VPNavBar",a.value])},[d("div",Ha,[d("div",Ba,[d("div",Ea,[y(Ma,null,{"nav-bar-title-before":f(()=>[p(r.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[p(r.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),d("div",Oa,[d("div",Da,[p(r.$slots,"nav-bar-content-before",{},void 0,!0),y(ya,{class:"search"}),y(Fo,{class:"menu"}),y(Aa,{class:"translations"}),y(Ks,{class:"appearance"}),y(La,{class:"social-links"}),y(Mo,{class:"extra"}),p(r.$slots,"nav-bar-content-after",{},void 0,!0),y(Co,{class:"hamburger",active:r.isScreenOpen,onClick:l[0]||(l[0]=u=>r.$emit("toggle-screen"))},null,8,["active"])])])])]),l[1]||(l[1]=d("div",{class:"divider"},[d("div",{class:"divider-line"})],-1))],2))}}),za=V(Fa,[["__scopeId","data-v-bb7529ee"]]),ja={key:0,class:"VPNavScreenAppearance"},Ua={class:"text"},qa=k({__name:"VPNavScreenAppearance",setup(n){const{site:e,theme:t}=M();return(s,o)=>c(e).appearance&&c(e).appearance!=="force-dark"&&c(e).appearance!=="force-auto"?(i(),h("div",ja,[d("p",Ua,C(c(t).darkModeSwitchLabel||"Appearance"),1),y(He)])):g("",!0)}}),Ga=V(qa,[["__scopeId","data-v-774971f8"]]),Ra=["innerHTML"],Wa=k({__name:"VPNavScreenMenuLink",props:{item:{}},setup(n){const e=_e("close-screen");return(t,s)=>(i(),P(K,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:c(e)},{default:f(()=>[d("span",{innerHTML:t.item.text},null,8,Ra)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Ka=V(Wa,[["__scopeId","data-v-29871565"]]),Ja=["innerHTML"],xa=k({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(n){const e=_e("close-screen");return(t,s)=>(i(),P(K,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:c(e)},{default:f(()=>[d("span",{innerHTML:t.item.text},null,8,Ja)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),ot=V(xa,[["__scopeId","data-v-581896e9"]]),Xa={class:"VPNavScreenMenuGroupSection"},Ya={key:0,class:"title"},Qa=k({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(n){return(e,t)=>(i(),h("div",Xa,[e.text?(i(),h("p",Ya,C(e.text),1)):g("",!0),(i(!0),h(H,null,z(e.items,s=>(i(),P(ot,{key:s.text,item:s},null,8,["item"]))),128))]))}}),Za=V(Qa,[["__scopeId","data-v-836cddb8"]]),er=["aria-controls","aria-expanded"],tr=["innerHTML"],nr=["id"],sr={key:0,class:"item"},or={key:1,class:"item"},ar={key:2,class:"group"},rr=k({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(n){const e=n,t=T(!1),s=S(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function o(){t.value=!t.value}return(a,r)=>(i(),h("div",{class:A(["VPNavScreenMenuGroup",{open:t.value}])},[d("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:o},[d("span",{class:"button-text",innerHTML:a.text},null,8,tr),r[0]||(r[0]=d("span",{class:"vpi-plus button-icon"},null,-1))],8,er),d("div",{id:s.value,class:"items"},[(i(!0),h(H,null,z(a.items,l=>(i(),h(H,{key:JSON.stringify(l)},["link"in l?(i(),h("div",sr,[y(ot,{item:l},null,8,["item"])])):"component"in l?(i(),h("div",or,[(i(),P(W(l.component),Y({ref_for:!0},l.props,{"screen-menu":""}),null,16))])):(i(),h("div",ar,[y(Za,{text:l.text,items:l.items},null,8,["text","items"])]))],64))),128))],8,nr)],2))}}),ir=V(rr,[["__scopeId","data-v-a8d3502a"]]),lr={key:0,class:"VPNavScreenMenu"},cr=k({__name:"VPNavScreenMenu",setup(n){const{theme:e}=M();return(t,s)=>c(e).nav?(i(),h("nav",lr,[(i(!0),h(H,null,z(c(e).nav,o=>(i(),h(H,{key:JSON.stringify(o)},["link"in o?(i(),P(Ka,{key:0,item:o},null,8,["item"])):"component"in o?(i(),P(W(o.component),Y({key:1,ref_for:!0},o.props,{"screen-menu":""}),null,16)):(i(),P(ir,{key:2,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):g("",!0)}}),ur=k({__name:"VPNavScreenSocialLinks",setup(n){const{theme:e}=M();return(t,s)=>c(e).socialLinks?(i(),P(Oe,{key:0,class:"VPNavScreenSocialLinks",links:c(e).socialLinks},null,8,["links"])):g("",!0)}}),dr={class:"list"},pr=k({__name:"VPNavScreenTranslations",setup(n){const{localeLinks:e,currentLang:t}=ae({correspondingLink:!0}),s=T(!1);function o(){s.value=!s.value}return(a,r)=>c(e).length&&c(t).label?(i(),h("div",{key:0,class:A(["VPNavScreenTranslations",{open:s.value}])},[d("button",{class:"title",onClick:o},[r[0]||(r[0]=d("span",{class:"vpi-languages icon lang"},null,-1)),ee(" "+C(c(t).label)+" ",1),r[1]||(r[1]=d("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),d("ul",dr,[(i(!0),h(H,null,z(c(e),l=>(i(),h("li",{key:l.link,class:"item"},[y(K,{class:"link",href:l.link},{default:f(()=>[ee(C(l.text),1)]),_:2},1032,["href"])]))),128))])],2)):g("",!0)}}),hr=V(pr,[["__scopeId","data-v-0d43316b"]]),fr={class:"container"},vr=k({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(n){const e=T(null),t=Ye(ge?document.body:null);return(s,o)=>(i(),P(we,{name:"fade",onEnter:o[0]||(o[0]=a=>t.value=!0),onAfterLeave:o[1]||(o[1]=a=>t.value=!1)},{default:f(()=>[s.open?(i(),h("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[d("div",fr,[p(s.$slots,"nav-screen-content-before",{},void 0,!0),y(cr,{class:"menu"}),y(hr,{class:"translations"}),y(Ga,{class:"appearance"}),y(ur,{class:"social-links"}),p(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):g("",!0)]),_:3}))}}),mr=V(vr,[["__scopeId","data-v-34fa79a7"]]),_r={key:0,class:"VPNav"},gr=k({__name:"VPNav",setup(n){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=Os(),{frontmatter:o}=M(),a=S(()=>o.value.navbar!==!1);return Qe("close-screen",t),fe(()=>{ge&&document.documentElement.classList.toggle("hide-nav",!a.value)}),(r,l)=>a.value?(i(),h("header",_r,[y(za,{"is-screen-open":c(e),onToggleScreen:c(s)},{"nav-bar-title-before":f(()=>[p(r.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[p(r.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[p(r.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[p(r.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),y(mr,{open:c(e)},{"nav-screen-content-before":f(()=>[p(r.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[p(r.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):g("",!0)}}),kr=V(gr,[["__scopeId","data-v-a46e73f0"]]),br=["role","tabindex"],$r={key:1,class:"items"},yr=k({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(n){const e=n,{collapsed:t,collapsible:s,isLink:o,isActiveLink:a,hasActiveLink:r,hasChildren:l,toggle:u}=zt(S(()=>e.item)),v=S(()=>l.value?"section":"div"),_=S(()=>o.value?"a":"div"),m=S(()=>l.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),L=S(()=>o.value?void 0:"button"),b=S(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":o.value},{"is-active":a.value},{"has-active":r.value}]);function $(w){"key"in w&&w.key!=="Enter"||!e.item.link&&u()}function N(){e.item.link&&u()}return(w,O)=>{const F=Z("VPSidebarItem",!0);return i(),P(W(v.value),{class:A(["VPSidebarItem",b.value])},{default:f(()=>[w.item.text?(i(),h("div",Y({key:0,class:"item",role:L.value},kt(w.item.items?{click:$,keydown:$}:{},!0),{tabindex:w.item.items&&0}),[O[1]||(O[1]=d("div",{class:"indicator"},null,-1)),w.item.link?(i(),P(K,{key:0,tag:_.value,class:"link",href:w.item.link,rel:w.item.rel,target:w.item.target},{default:f(()=>[(i(),P(W(m.value),{class:"text",innerHTML:w.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(i(),P(W(m.value),{key:1,class:"text",innerHTML:w.item.text},null,8,["innerHTML"])),w.item.collapsed!=null&&w.item.items&&w.item.items.length?(i(),h("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:N,onKeydown:bt(N,["enter"]),tabindex:"0"},O[0]||(O[0]=[d("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):g("",!0)],16,br)):g("",!0),w.item.items&&w.item.items.length?(i(),h("div",$r,[w.depth<5?(i(!0),h(H,{key:0},z(w.item.items,R=>(i(),P(F,{key:R.text,item:R,depth:w.depth+1},null,8,["item","depth"]))),128)):g("",!0)])):g("",!0)]),_:1},8,["class"])}}}),Pr=V(yr,[["__scopeId","data-v-2e0476bc"]]),Lr=k({__name:"VPSidebarGroup",props:{items:{}},setup(n){const e=T(!0);let t=null;return Q(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),$t(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,o)=>(i(!0),h(H,null,z(s.items,a=>(i(),h("div",{key:a.text,class:A(["group",{"no-transition":e.value}])},[y(Pr,{item:a,depth:0},null,8,["item"])],2))),128))}}),Vr=V(Lr,[["__scopeId","data-v-ec086cd5"]]),Sr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Tr=k({__name:"VPSidebar",props:{open:{type:Boolean}},setup(n){const{sidebarGroups:e,hasSidebar:t}=x(),s=n,o=T(null),a=Ye(ge?document.body:null);J([s,o],()=>{var l;s.open?(a.value=!0,(l=o.value)==null||l.focus()):a.value=!1},{immediate:!0,flush:"post"});const r=T(0);return J(e,()=>{r.value+=1},{deep:!0}),(l,u)=>c(t)?(i(),h("aside",{key:0,class:A(["VPSidebar",{open:l.open}]),ref_key:"navEl",ref:o,onClick:u[0]||(u[0]=Xe(()=>{},["stop"]))},[u[2]||(u[2]=d("div",{class:"curtain"},null,-1)),d("nav",Sr,[u[1]||(u[1]=d("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),p(l.$slots,"sidebar-nav-before",{},void 0,!0),(i(),P(Vr,{items:c(e),key:r.value},null,8,["items"])),p(l.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):g("",!0)}}),wr=V(Tr,[["__scopeId","data-v-12a40e3d"]]),Mr=k({__name:"VPSkipLink",setup(n){const{theme:e}=M(),t=me(),s=T();J(()=>t.path,()=>s.value.focus());function o({target:a}){const r=document.getElementById(decodeURIComponent(a.hash).slice(1));if(r){const l=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",l)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",l),r.focus(),window.scrollTo(0,0)}}return(a,r)=>(i(),h(H,null,[d("span",{ref_key:"backToTop",ref:s,tabindex:"-1"},null,512),d("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o},C(c(e).skipToContentLabel||"Skip to content"),1)],64))}}),Nr=V(Mr,[["__scopeId","data-v-17ad389b"]]),Ir=k({__name:"Layout",setup(n){const{isOpen:e,open:t,close:s}=x(),o=me();J(()=>o.path,s),Ft(e,s);const{frontmatter:a}=M(),r=yt(),l=S(()=>!!r["home-hero-image"]);return Qe("hero-image-slot-exists",l),(u,v)=>{const _=Z("Content");return c(a).layout!==!1?(i(),h("div",{key:0,class:A(["Layout",c(a).pageClass])},[p(u.$slots,"layout-top",{},void 0,!0),y(Nr),y(St,{class:"backdrop",show:c(e),onClick:c(s)},null,8,["show","onClick"]),y(kr,null,{"nav-bar-title-before":f(()=>[p(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[p(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[p(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[p(u.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[p(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[p(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),y(Es,{open:c(e),onOpenMenu:c(t)},null,8,["open","onOpenMenu"]),y(wr,{open:c(e)},{"sidebar-nav-before":f(()=>[p(u.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[p(u.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),y(bs,null,{"page-top":f(()=>[p(u.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[p(u.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[p(u.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[p(u.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[p(u.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[p(u.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[p(u.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[p(u.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[p(u.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[p(u.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[p(u.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[p(u.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[p(u.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[p(u.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[p(u.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[p(u.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[p(u.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[p(u.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[p(u.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[p(u.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[p(u.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[p(u.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[p(u.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),y(Vs),p(u.$slots,"layout-bottom",{},void 0,!0)],2)):(i(),P(_,{key:1}))}}}),Cr=V(Ir,[["__scopeId","data-v-c4daae71"]]),Hr={Layout:Cr,enhanceApp:({app:n})=>{n.component("Badge",Pt)}};export{Hr as t}; +import{d as k,c as h,r as p,n as A,o as i,a as ee,t as C,b as P,w as f,T as we,e as g,_ as V,u as Re,i as it,f as lt,g as he,h as S,j as d,k as c,l as te,m as Pe,p as T,q as J,s as fe,v as Q,x as Me,y as Ne,z as ct,A as ut,F as H,B as z,C as Z,D as We,E as ve,G as y,H as W,I as Ke,J as me,K as Y,L as _e,M as dt,N as Je,O as pt,P as Ie,Q as xe,R as ge,S as ht,U as ft,V as vt,W as Fe,X as mt,Y as Xe,Z as _t,$ as gt,a0 as Ye,a1 as Qe,a2 as kt,a3 as bt,a4 as $t,a5 as yt}from"./framework.xxfEszSJ.js";const Pt=k({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(n){return(e,t)=>(i(),h("span",{class:A(["VPBadge",e.type])},[p(e.$slots,"default",{},()=>[ee(C(e.text),1)])],2))}}),Lt={key:0,class:"VPBackdrop"},Vt=k({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(n){return(e,t)=>(i(),P(we,{name:"fade"},{default:f(()=>[e.show?(i(),h("div",Lt)):g("",!0)]),_:1}))}}),St=V(Vt,[["__scopeId","data-v-b2600058"]]),M=Re;function Tt(n,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(n,e):(n(),(s=!0)&&setTimeout(()=>s=!1,e))}}function Le(n){return n.startsWith("/")?n:`/${n}`}function Ce(n){const{pathname:e,search:t,hash:s,protocol:o}=new URL(n,"http://a.com");if(it(n)||n.startsWith("#")||!o.startsWith("http")||!lt(e))return n;const{site:a}=M(),r=e.endsWith("/")||e.endsWith(".html")?n:n.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,a.value.cleanUrls?"":".html")}${t}${s}`);return he(r)}function ae({correspondingLink:n=!1}={}){const{site:e,localeIndex:t,page:s,theme:o,hash:a}=M(),r=S(()=>{var u,v;return{label:(u=e.value.locales[t.value])==null?void 0:u.label,link:((v=e.value.locales[t.value])==null?void 0:v.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:S(()=>Object.entries(e.value.locales).flatMap(([u,v])=>r.value.label===v.label?[]:{text:v.label,link:wt(v.link||(u==="root"?"/":`/${u}/`),o.value.i18nRouting!==!1&&n,s.value.relativePath.slice(r.value.link.length-1),!e.value.cleanUrls)+a.value})),currentLang:r}}function wt(n,e,t,s){return e?n.replace(/\/$/,"")+Le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):n}const Mt={class:"NotFound"},Nt={class:"code"},It={class:"title"},Ct={class:"quote"},At={class:"action"},Ht=["href","aria-label"],Bt=k({__name:"NotFound",setup(n){const{theme:e}=M(),{currentLang:t}=ae();return(s,o)=>{var a,r,l,u,v;return i(),h("div",Mt,[d("p",Nt,C(((a=c(e).notFound)==null?void 0:a.code)??"404"),1),d("h1",It,C(((r=c(e).notFound)==null?void 0:r.title)??"PAGE NOT FOUND"),1),o[0]||(o[0]=d("div",{class:"divider"},null,-1)),d("blockquote",Ct,C(((l=c(e).notFound)==null?void 0:l.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),d("div",At,[d("a",{class:"link",href:c(he)(c(t).link),"aria-label":((u=c(e).notFound)==null?void 0:u.linkLabel)??"go to home"},C(((v=c(e).notFound)==null?void 0:v.linkText)??"Take me home"),9,Ht)])])}}}),Et=V(Bt,[["__scopeId","data-v-93fd8736"]]);function Ze(n,e){if(Array.isArray(n))return le(n);if(n==null)return[];e=Le(e);const t=Object.keys(n).sort((o,a)=>a.split("/").length-o.split("/").length).find(o=>e.startsWith(Le(o))),s=t?n[t]:[];return Array.isArray(s)?le(s):le(s.items,s.base)}function Ot(n){const e=[];let t=0;for(const s in n){const o=n[s];if(o.items){t=e.push(o);continue}e[t]||e.push({items:[]}),e[t].items.push(o)}return e}function Dt(n){const e=[];function t(s){for(const o of s)o.text&&o.link&&e.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&t(o.items)}return t(n),e}function Ve(n,e){return Array.isArray(e)?e.some(t=>Ve(n,t)):te(n,e.link)?!0:e.items?Ve(n,e.items):!1}function le(n,e){return[...n].map(t=>{const s={...t},o=s.base||e;return o&&s.link&&(s.link=o+s.link),s.items&&(s.items=le(s.items,o)),s})}function x(){const{frontmatter:n,page:e,theme:t}=M(),s=Pe("(min-width: 960px)"),o=T(!1),a=S(()=>{const N=t.value.sidebar,w=e.value.relativePath;return N?Ze(N,w):[]}),r=T(a.value);J(a,(N,w)=>{JSON.stringify(N)!==JSON.stringify(w)&&(r.value=a.value)});const l=S(()=>n.value.sidebar!==!1&&r.value.length>0&&n.value.layout!=="home"),u=S(()=>v?n.value.aside==null?t.value.aside==="left":n.value.aside==="left":!1),v=S(()=>n.value.layout==="home"?!1:n.value.aside!=null?!!n.value.aside:t.value.aside!==!1),_=S(()=>l.value&&s.value),m=S(()=>l.value?Ot(r.value):[]);function L(){o.value=!0}function b(){o.value=!1}function $(){o.value?b():L()}return{isOpen:o,sidebar:r,sidebarGroups:m,hasSidebar:l,hasAside:v,leftAside:u,isSidebarEnabled:_,open:L,close:b,toggle:$}}function Ft(n,e){let t;fe(()=>{t=n.value?document.activeElement:void 0}),Q(()=>{window.addEventListener("keyup",s)}),Me(()=>{window.removeEventListener("keyup",s)});function s(o){o.key==="Escape"&&n.value&&(e(),t==null||t.focus())}}function zt(n){const{page:e,hash:t}=M(),s=T(!1),o=S(()=>n.value.collapsed!=null),a=S(()=>!!n.value.link),r=T(!1),l=()=>{r.value=te(e.value.relativePath,n.value.link)};J([e,n,t],l),Q(l);const u=S(()=>r.value?!0:n.value.items?Ve(e.value.relativePath,n.value.items):!1),v=S(()=>!!(n.value.items&&n.value.items.length));fe(()=>{s.value=!!(o.value&&n.value.collapsed)}),Ne(()=>{(r.value||u.value)&&(s.value=!1)});function _(){o.value&&(s.value=!s.value)}return{collapsed:s,collapsible:o,isLink:a,isActiveLink:r,hasActiveLink:u,hasChildren:v,toggle:_}}function jt(){const{hasSidebar:n}=x(),e=Pe("(min-width: 960px)"),t=Pe("(min-width: 1280px)");return{isAsideEnabled:S(()=>!t.value&&!e.value?!1:n.value?t.value:e.value)}}const Ut=/\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/,Se=[];function et(n){return typeof n.outline=="object"&&!Array.isArray(n.outline)&&n.outline.label||n.outlineTitle||"On this page"}function Ae(n){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:qt(t),link:"#"+t.id,level:s}});return Gt(e,n)}function qt(n){let e="";for(const t of n.childNodes)if(t.nodeType===1){if(Ut.test(t.className))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Gt(n,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,o]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return Kt(n,s,o)}function Rt(n,e){const{isAsideEnabled:t}=jt(),s=Tt(a,100);let o=null;Q(()=>{requestAnimationFrame(a),window.addEventListener("scroll",s)}),ct(()=>{r(location.hash)}),Me(()=>{window.removeEventListener("scroll",s)});function a(){if(!t.value)return;const l=window.scrollY,u=window.innerHeight,v=document.body.offsetHeight,_=Math.abs(l+u-v)<1,m=Se.map(({element:b,link:$})=>({link:$,top:Wt(b)})).filter(({top:b})=>!Number.isNaN(b)).sort((b,$)=>b.top-$.top);if(!m.length){r(null);return}if(l<1){r(null);return}if(_){r(m[m.length-1].link);return}let L=null;for(const{link:b,top:$}of m){if($>l+ut()+4)break;L=b}r(L)}function r(l){o&&o.classList.remove("active"),l==null?o=null:o=n.value.querySelector(`a[href="${decodeURIComponent(l)}"]`);const u=o;u?(u.classList.add("active"),e.value.style.top=u.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Wt(n){let e=0;for(;n!==document.body;){if(n===null)return NaN;e+=n.offsetTop,n=n.offsetParent}return e}function Kt(n,e,t){Se.length=0;const s=[],o=[];return n.forEach(a=>{const r={...a,children:[]};let l=o[o.length-1];for(;l&&l.level>=r.level;)o.pop(),l=o[o.length-1];if(r.element.classList.contains("ignore-header")||l&&"shouldIgnore"in l){o.push({level:r.level,shouldIgnore:!0});return}r.level>t||r.level{const o=Z("VPDocOutlineItem",!0);return i(),h("ul",{class:A(["VPDocOutlineItem",t.root?"root":"nested"])},[(i(!0),h(H,null,z(t.headers,({children:a,link:r,title:l})=>(i(),h("li",null,[d("a",{class:"outline-link",href:r,onClick:e,title:l},C(l),9,Jt),a!=null&&a.length?(i(),P(o,{key:0,headers:a},null,8,["headers"])):g("",!0)]))),256))],2)}}}),tt=V(xt,[["__scopeId","data-v-da421f78"]]),Xt={class:"content"},Yt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Qt=k({__name:"VPDocAsideOutline",setup(n){const{frontmatter:e,theme:t}=M(),s=We([]);ve(()=>{s.value=Ae(e.value.outline??t.value.outline)});const o=T(),a=T();return Rt(o,a),(r,l)=>(i(),h("nav",{"aria-labelledby":"doc-outline-aria-label",class:A(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:o},[d("div",Xt,[d("div",{class:"outline-marker",ref_key:"marker",ref:a},null,512),d("div",Yt,C(c(et)(c(t))),1),y(tt,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),Zt=V(Qt,[["__scopeId","data-v-dfbd9fb8"]]),en={class:"VPDocAsideCarbonAds"},tn=k({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(n){const e=()=>null;return(t,s)=>(i(),h("div",en,[y(c(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),nn={class:"VPDocAside"},sn=k({__name:"VPDocAside",setup(n){const{theme:e}=M();return(t,s)=>(i(),h("div",nn,[p(t.$slots,"aside-top",{},void 0,!0),p(t.$slots,"aside-outline-before",{},void 0,!0),y(Zt),p(t.$slots,"aside-outline-after",{},void 0,!0),s[0]||(s[0]=d("div",{class:"spacer"},null,-1)),p(t.$slots,"aside-ads-before",{},void 0,!0),c(e).carbonAds?(i(),P(tn,{key:0,"carbon-ads":c(e).carbonAds},null,8,["carbon-ads"])):g("",!0),p(t.$slots,"aside-ads-after",{},void 0,!0),p(t.$slots,"aside-bottom",{},void 0,!0)]))}}),on=V(sn,[["__scopeId","data-v-79cae1a0"]]);function an(){const{theme:n,page:e}=M();return S(()=>{const{text:t="Edit this page",pattern:s=""}=n.value.editLink||{};let o;return typeof s=="function"?o=s(e.value):o=s.replace(/:path/g,e.value.filePath),{url:o,text:t}})}function rn(){const{page:n,theme:e,frontmatter:t}=M();return S(()=>{var v,_,m,L,b,$,N,w;const s=Ze(e.value.sidebar,n.value.relativePath),o=Dt(s),a=ln(o,O=>O.link.replace(/[?#].*$/,"")),r=a.findIndex(O=>te(n.value.relativePath,O.link)),l=((v=e.value.docFooter)==null?void 0:v.prev)===!1&&!t.value.prev||t.value.prev===!1,u=((_=e.value.docFooter)==null?void 0:_.next)===!1&&!t.value.next||t.value.next===!1;return{prev:l?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((m=a[r-1])==null?void 0:m.docFooterText)??((L=a[r-1])==null?void 0:L.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((b=a[r-1])==null?void 0:b.link)},next:u?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??(($=a[r+1])==null?void 0:$.docFooterText)??((N=a[r+1])==null?void 0:N.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((w=a[r+1])==null?void 0:w.link)}}})}function ln(n,e){const t=new Set;return n.filter(s=>{const o=e(s);return t.has(o)?!1:t.add(o)})}const K=k({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(n){const e=n,t=S(()=>e.tag??(e.href?"a":"span")),s=S(()=>e.href&&Ke.test(e.href)||e.target==="_blank");return(o,a)=>(i(),P(W(t.value),{class:A(["VPLink",{link:o.href,"vp-external-link-icon":s.value,"no-icon":o.noIcon}]),href:o.href?c(Ce)(o.href):void 0,target:o.target??(s.value?"_blank":void 0),rel:o.rel??(s.value?"noreferrer":void 0)},{default:f(()=>[p(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),cn={class:"VPLastUpdated"},un=["datetime"],dn=k({__name:"VPDocFooterLastUpdated",setup(n){const{theme:e,page:t,lang:s}=M(),o=S(()=>new Date(t.value.lastUpdated)),a=S(()=>o.value.toISOString()),r=T("");return Q(()=>{fe(()=>{var l,u,v;r.value=new Intl.DateTimeFormat((u=(l=e.value.lastUpdated)==null?void 0:l.formatOptions)!=null&&u.forceLocale?s.value:void 0,((v=e.value.lastUpdated)==null?void 0:v.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(o.value)})}),(l,u)=>{var v;return i(),h("p",cn,[ee(C(((v=c(e).lastUpdated)==null?void 0:v.text)||c(e).lastUpdatedText||"Last updated")+": ",1),d("time",{datetime:a.value},C(r.value),9,un)])}}}),pn=V(dn,[["__scopeId","data-v-e95db471"]]),hn={key:0,class:"VPDocFooter"},fn={key:0,class:"edit-info"},vn={key:0,class:"edit-link"},mn={key:1,class:"last-updated"},_n={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},gn={class:"pager"},kn=["innerHTML"],bn=["innerHTML"],$n={class:"pager"},yn=["innerHTML"],Pn=["innerHTML"],Ln=k({__name:"VPDocFooter",setup(n){const{theme:e,page:t,frontmatter:s}=M(),o=an(),a=rn(),r=S(()=>e.value.editLink&&s.value.editLink!==!1),l=S(()=>t.value.lastUpdated),u=S(()=>r.value||l.value||a.value.prev||a.value.next);return(v,_)=>{var m,L,b,$;return u.value?(i(),h("footer",hn,[p(v.$slots,"doc-footer-before",{},void 0,!0),r.value||l.value?(i(),h("div",fn,[r.value?(i(),h("div",vn,[y(K,{class:"edit-link-button",href:c(o).url,"no-icon":!0},{default:f(()=>[_[0]||(_[0]=d("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),ee(" "+C(c(o).text),1)]),_:1},8,["href"])])):g("",!0),l.value?(i(),h("div",mn,[y(pn)])):g("",!0)])):g("",!0),(m=c(a).prev)!=null&&m.link||(L=c(a).next)!=null&&L.link?(i(),h("nav",_n,[_[1]||(_[1]=d("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),d("div",gn,[(b=c(a).prev)!=null&&b.link?(i(),P(K,{key:0,class:"pager-link prev",href:c(a).prev.link},{default:f(()=>{var N;return[d("span",{class:"desc",innerHTML:((N=c(e).docFooter)==null?void 0:N.prev)||"Previous page"},null,8,kn),d("span",{class:"title",innerHTML:c(a).prev.text},null,8,bn)]}),_:1},8,["href"])):g("",!0)]),d("div",$n,[($=c(a).next)!=null&&$.link?(i(),P(K,{key:0,class:"pager-link next",href:c(a).next.link},{default:f(()=>{var N;return[d("span",{class:"desc",innerHTML:((N=c(e).docFooter)==null?void 0:N.next)||"Next page"},null,8,yn),d("span",{class:"title",innerHTML:c(a).next.text},null,8,Pn)]}),_:1},8,["href"])):g("",!0)])])):g("",!0)])):g("",!0)}}}),Vn=V(Ln,[["__scopeId","data-v-07d71ff1"]]),Sn={class:"container"},Tn={class:"aside-container"},wn={class:"aside-content"},Mn={class:"content"},Nn={class:"content-container"},In={class:"main"},Cn=k({__name:"VPDoc",setup(n){const{theme:e}=M(),t=me(),{hasSidebar:s,hasAside:o,leftAside:a}=x(),r=S(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(l,u)=>{const v=Z("Content");return i(),h("div",{class:A(["VPDoc",{"has-sidebar":c(s),"has-aside":c(o)}])},[p(l.$slots,"doc-top",{},void 0,!0),d("div",Sn,[c(o)?(i(),h("div",{key:0,class:A(["aside",{"left-aside":c(a)}])},[u[0]||(u[0]=d("div",{class:"aside-curtain"},null,-1)),d("div",Tn,[d("div",wn,[y(on,null,{"aside-top":f(()=>[p(l.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[p(l.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[p(l.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[p(l.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[p(l.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[p(l.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):g("",!0),d("div",Mn,[d("div",Nn,[p(l.$slots,"doc-before",{},void 0,!0),d("main",In,[y(v,{class:A(["vp-doc",[r.value,c(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),y(Vn,null,{"doc-footer-before":f(()=>[p(l.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),p(l.$slots,"doc-after",{},void 0,!0)])])]),p(l.$slots,"doc-bottom",{},void 0,!0)],2)}}}),An=V(Cn,[["__scopeId","data-v-ef3a4dda"]]),Hn=k({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(n){const e=n,t=S(()=>e.href&&Ke.test(e.href)),s=S(()=>e.tag||(e.href?"a":"button"));return(o,a)=>(i(),P(W(s.value),{class:A(["VPButton",[o.size,o.theme]]),href:o.href?c(Ce)(o.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[ee(C(o.text),1)]),_:1},8,["class","href","target","rel"]))}}),Bn=V(Hn,[["__scopeId","data-v-b20c43c2"]]),En=["src","alt"],On=k({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(n){return(e,t)=>{const s=Z("VPImage",!0);return e.image?(i(),h(H,{key:0},[typeof e.image=="string"||"src"in e.image?(i(),h("img",Y({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:c(he)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,En)):(i(),h(H,{key:1},[y(s,Y({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),y(s,Y({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):g("",!0)}}}),ue=V(On,[["__scopeId","data-v-4d414b82"]]),Dn={class:"container"},Fn={class:"main"},zn={class:"heading"},jn=["innerHTML"],Un=["innerHTML"],qn=["innerHTML"],Gn={key:0,class:"actions"},Rn={key:0,class:"image"},Wn={class:"image-container"},Kn=k({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(n){const e=_e("hero-image-slot-exists");return(t,s)=>(i(),h("div",{class:A(["VPHero",{"has-image":t.image||c(e)}])},[d("div",Dn,[d("div",Fn,[p(t.$slots,"home-hero-info-before",{},void 0,!0),p(t.$slots,"home-hero-info",{},()=>[d("h1",zn,[t.name?(i(),h("span",{key:0,innerHTML:t.name,class:"name clip"},null,8,jn)):g("",!0),t.text?(i(),h("span",{key:1,innerHTML:t.text,class:"text"},null,8,Un)):g("",!0)]),t.tagline?(i(),h("p",{key:0,innerHTML:t.tagline,class:"tagline"},null,8,qn)):g("",!0)],!0),p(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(i(),h("div",Gn,[(i(!0),h(H,null,z(t.actions,o=>(i(),h("div",{key:o.link,class:"action"},[y(Bn,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link,target:o.target,rel:o.rel},null,8,["theme","text","href","target","rel"])]))),128))])):g("",!0),p(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||c(e)?(i(),h("div",Rn,[d("div",Wn,[s[0]||(s[0]=d("div",{class:"image-bg"},null,-1)),p(t.$slots,"home-hero-image",{},()=>[t.image?(i(),P(ue,{key:0,class:"image-src",image:t.image},null,8,["image"])):g("",!0)],!0)])])):g("",!0)])],2))}}),Jn=V(Kn,[["__scopeId","data-v-d266baba"]]),xn=k({__name:"VPHomeHero",setup(n){const{frontmatter:e}=M();return(t,s)=>c(e).hero?(i(),P(Jn,{key:0,class:"VPHomeHero",name:c(e).hero.name,text:c(e).hero.text,tagline:c(e).hero.tagline,image:c(e).hero.image,actions:c(e).hero.actions},{"home-hero-info-before":f(()=>[p(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[p(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[p(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[p(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[p(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):g("",!0)}}),Xn={class:"box"},Yn={key:0,class:"icon"},Qn=["innerHTML"],Zn=["innerHTML"],es=["innerHTML"],ts={key:4,class:"link-text"},ns={class:"link-text-value"},ss=k({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(n){return(e,t)=>(i(),P(K,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[d("article",Xn,[typeof e.icon=="object"&&e.icon.wrap?(i(),h("div",Yn,[y(ue,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(i(),P(ue,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(i(),h("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Qn)):g("",!0),d("h2",{class:"title",innerHTML:e.title},null,8,Zn),e.details?(i(),h("p",{key:3,class:"details",innerHTML:e.details},null,8,es)):g("",!0),e.linkText?(i(),h("div",ts,[d("p",ns,[ee(C(e.linkText)+" ",1),t[0]||(t[0]=d("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):g("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),os=V(ss,[["__scopeId","data-v-95001937"]]),as={key:0,class:"VPFeatures"},rs={class:"container"},is={class:"items"},ls=k({__name:"VPFeatures",props:{features:{}},setup(n){const e=n,t=S(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,o)=>s.features?(i(),h("div",as,[d("div",rs,[d("div",is,[(i(!0),h(H,null,z(s.features,a=>(i(),h("div",{key:a.title,class:A(["item",[t.value]])},[y(os,{icon:a.icon,title:a.title,details:a.details,link:a.link,"link-text":a.linkText,rel:a.rel,target:a.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):g("",!0)}}),cs=V(ls,[["__scopeId","data-v-1da4ff3d"]]),us=k({__name:"VPHomeFeatures",setup(n){const{frontmatter:e}=M();return(t,s)=>c(e).features?(i(),P(cs,{key:0,class:"VPHomeFeatures",features:c(e).features},null,8,["features"])):g("",!0)}}),ds=k({__name:"VPHomeContent",setup(n){const{width:e}=dt({initialWidth:0,includeScrollbar:!1});return(t,s)=>(i(),h("div",{class:"vp-doc container",style:Je(c(e)?{"--vp-offset":`calc(50% - ${c(e)/2}px)`}:{})},[p(t.$slots,"default",{},void 0,!0)],4))}}),ps=V(ds,[["__scopeId","data-v-2498cc33"]]),hs=k({__name:"VPHome",setup(n){const{frontmatter:e,theme:t}=M();return(s,o)=>{const a=Z("Content");return i(),h("div",{class:A(["VPHome",{"external-link-icon-enabled":c(t).externalLinkIcon}])},[p(s.$slots,"home-hero-before",{},void 0,!0),y(xn,null,{"home-hero-info-before":f(()=>[p(s.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[p(s.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[p(s.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[p(s.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[p(s.$slots,"home-hero-image",{},void 0,!0)]),_:3}),p(s.$slots,"home-hero-after",{},void 0,!0),p(s.$slots,"home-features-before",{},void 0,!0),y(us),p(s.$slots,"home-features-after",{},void 0,!0),c(e).markdownStyles!==!1?(i(),P(ps,{key:0},{default:f(()=>[y(a)]),_:1})):(i(),P(a,{key:1}))],2)}}}),fs=V(hs,[["__scopeId","data-v-8b59c434"]]),vs={},ms={class:"VPPage"};function _s(n,e){const t=Z("Content");return i(),h("div",ms,[p(n.$slots,"page-top"),y(t),p(n.$slots,"page-bottom")])}const gs=V(vs,[["render",_s]]),ks=k({__name:"VPContent",setup(n){const{page:e,frontmatter:t}=M(),{hasSidebar:s}=x();return(o,a)=>(i(),h("div",{class:A(["VPContent",{"has-sidebar":c(s),"is-home":c(t).layout==="home"}]),id:"VPContent"},[c(e).isNotFound?p(o.$slots,"not-found",{key:0},()=>[y(Et)],!0):c(t).layout==="page"?(i(),P(gs,{key:1},{"page-top":f(()=>[p(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[p(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):c(t).layout==="home"?(i(),P(fs,{key:2},{"home-hero-before":f(()=>[p(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[p(o.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[p(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[p(o.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[p(o.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[p(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[p(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[p(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[p(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):c(t).layout&&c(t).layout!=="doc"?(i(),P(W(c(t).layout),{key:3})):(i(),P(An,{key:4},{"doc-top":f(()=>[p(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[p(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[p(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[p(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[p(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[p(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[p(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[p(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[p(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[p(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[p(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),bs=V(ks,[["__scopeId","data-v-d2aef184"]]),$s={class:"container"},ys=["innerHTML"],Ps=["innerHTML"],Ls=k({__name:"VPFooter",setup(n){const{theme:e,frontmatter:t}=M(),{hasSidebar:s}=x();return(o,a)=>c(e).footer&&c(t).footer!==!1?(i(),h("footer",{key:0,class:A(["VPFooter",{"has-sidebar":c(s)}])},[d("div",$s,[c(e).footer.message?(i(),h("p",{key:0,class:"message",innerHTML:c(e).footer.message},null,8,ys)):g("",!0),c(e).footer.copyright?(i(),h("p",{key:1,class:"copyright",innerHTML:c(e).footer.copyright},null,8,Ps)):g("",!0)])],2)):g("",!0)}}),Vs=V(Ls,[["__scopeId","data-v-e3157d6d"]]);function Ss(){const{theme:n,frontmatter:e}=M(),t=We([]),s=S(()=>t.value.length>0);return ve(()=>{t.value=Ae(e.value.outline??n.value.outline)}),{headers:t,hasLocalNav:s}}const Ts={class:"menu-text"},ws={class:"header"},Ms={class:"outline"},Ns=k({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(n){const e=n,{theme:t}=M(),s=T(!1),o=T(0),a=T(),r=T();function l(m){var L;(L=a.value)!=null&&L.contains(m.target)||(s.value=!1)}J(s,m=>{if(m){document.addEventListener("click",l);return}document.removeEventListener("click",l)}),pt("Escape",()=>{s.value=!1}),ve(()=>{s.value=!1});function u(){s.value=!s.value,o.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function v(m){m.target.classList.contains("outline-link")&&(r.value&&(r.value.style.transition="none"),Ie(()=>{s.value=!1}))}function _(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(m,L)=>(i(),h("div",{class:"VPLocalNavOutlineDropdown",style:Je({"--vp-vh":o.value+"px"}),ref_key:"main",ref:a},[m.headers.length>0?(i(),h("button",{key:0,onClick:u,class:A({open:s.value})},[d("span",Ts,C(c(et)(c(t))),1),L[0]||(L[0]=d("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(i(),h("button",{key:1,onClick:_},C(c(t).returnToTopLabel||"Return to top"),1)),y(we,{name:"flyout"},{default:f(()=>[s.value?(i(),h("div",{key:0,ref_key:"items",ref:r,class:"items",onClick:v},[d("div",ws,[d("a",{class:"top-link",href:"#",onClick:_},C(c(t).returnToTopLabel||"Return to top"),1)]),d("div",Ms,[y(tt,{headers:m.headers},null,8,["headers"])])],512)):g("",!0)]),_:1})],4))}}),Is=V(Ns,[["__scopeId","data-v-d61422fe"]]),Cs={class:"container"},As=["aria-expanded"],Hs={class:"menu-text"},Bs=k({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(n){const{theme:e,frontmatter:t}=M(),{hasSidebar:s}=x(),{headers:o}=Ss(),{y:a}=xe(),r=T(0);Q(()=>{r.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),ve(()=>{o.value=Ae(t.value.outline??e.value.outline)});const l=S(()=>o.value.length===0),u=S(()=>l.value&&!s.value),v=S(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:l.value,fixed:u.value}));return(_,m)=>c(t).layout!=="home"&&(!u.value||c(a)>=r.value)?(i(),h("div",{key:0,class:A(v.value)},[d("div",Cs,[c(s)?(i(),h("button",{key:0,class:"menu","aria-expanded":_.open,"aria-controls":"VPSidebarNav",onClick:m[0]||(m[0]=L=>_.$emit("open-menu"))},[m[1]||(m[1]=d("span",{class:"vpi-align-left menu-icon"},null,-1)),d("span",Hs,C(c(e).sidebarMenuLabel||"Menu"),1)],8,As)):g("",!0),y(Is,{headers:c(o),navHeight:r.value},null,8,["headers","navHeight"])])],2)):g("",!0)}}),Es=V(Bs,[["__scopeId","data-v-9d8129cc"]]);function Os(){const n=T(!1);function e(){n.value=!0,window.addEventListener("resize",o)}function t(){n.value=!1,window.removeEventListener("resize",o)}function s(){n.value?t():e()}function o(){window.outerWidth>=768&&t()}const a=me();return J(()=>a.path,t),{isScreenOpen:n,openScreen:e,closeScreen:t,toggleScreen:s}}const Ds={},Fs={class:"VPSwitch",type:"button",role:"switch"},zs={class:"check"},js={key:0,class:"icon"};function Us(n,e){return i(),h("button",Fs,[d("span",zs,[n.$slots.default?(i(),h("span",js,[p(n.$slots,"default",{},void 0,!0)])):g("",!0)])])}const qs=V(Ds,[["render",Us],["__scopeId","data-v-7012e5dd"]]),Gs=k({__name:"VPSwitchAppearance",setup(n){const{isDark:e,theme:t}=M(),s=_e("toggle-appearance",()=>{e.value=!e.value}),o=T("");return Ne(()=>{o.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(a,r)=>(i(),P(qs,{title:o.value,class:"VPSwitchAppearance","aria-checked":c(e),onClick:c(s)},{default:f(()=>r[0]||(r[0]=[d("span",{class:"vpi-sun sun"},null,-1),d("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),He=V(Gs,[["__scopeId","data-v-fa1daf57"]]),Rs={key:0,class:"VPNavBarAppearance"},Ws=k({__name:"VPNavBarAppearance",setup(n){const{site:e}=M();return(t,s)=>c(e).appearance&&c(e).appearance!=="force-dark"&&c(e).appearance!=="force-auto"?(i(),h("div",Rs,[y(He)])):g("",!0)}}),Ks=V(Ws,[["__scopeId","data-v-123fcb2f"]]),Be=T();let nt=!1,be=0;function Js(n){const e=T(!1);if(ge){!nt&&xs(),be++;const t=J(Be,s=>{var o,a,r;s===n.el.value||(o=n.el.value)!=null&&o.contains(s)?(e.value=!0,(a=n.onFocus)==null||a.call(n)):(e.value=!1,(r=n.onBlur)==null||r.call(n))});Me(()=>{t(),be--,be||Xs()})}return ht(e)}function xs(){document.addEventListener("focusin",st),nt=!0,Be.value=document.activeElement}function Xs(){document.removeEventListener("focusin",st)}function st(){Be.value=document.activeElement}const Ys={class:"VPMenuLink"},Qs=["innerHTML"],Zs=k({__name:"VPMenuLink",props:{item:{}},setup(n){const{page:e}=M();return(t,s)=>(i(),h("div",Ys,[y(K,{class:A({active:c(te)(c(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:f(()=>[d("span",{innerHTML:t.item.text},null,8,Qs)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ke=V(Zs,[["__scopeId","data-v-65e4a6b1"]]),eo={class:"VPMenuGroup"},to={key:0,class:"title"},no=k({__name:"VPMenuGroup",props:{text:{},items:{}},setup(n){return(e,t)=>(i(),h("div",eo,[e.text?(i(),h("p",to,C(e.text),1)):g("",!0),(i(!0),h(H,null,z(e.items,s=>(i(),h(H,null,["link"in s?(i(),P(ke,{key:0,item:s},null,8,["item"])):g("",!0)],64))),256))]))}}),so=V(no,[["__scopeId","data-v-2bec9359"]]),oo={class:"VPMenu"},ao={key:0,class:"items"},ro=k({__name:"VPMenu",props:{items:{}},setup(n){return(e,t)=>(i(),h("div",oo,[e.items?(i(),h("div",ao,[(i(!0),h(H,null,z(e.items,s=>(i(),h(H,{key:JSON.stringify(s)},["link"in s?(i(),P(ke,{key:0,item:s},null,8,["item"])):"component"in s?(i(),P(W(s.component),Y({key:1,ref_for:!0},s.props),null,16)):(i(),P(so,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):g("",!0),p(e.$slots,"default",{},void 0,!0)]))}}),io=V(ro,[["__scopeId","data-v-39eca401"]]),lo=["aria-expanded","aria-label"],co={key:0,class:"text"},uo=["innerHTML"],po={key:1,class:"vpi-more-horizontal icon"},ho={class:"menu"},fo=k({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(n){const e=T(!1),t=T();Js({el:t,onBlur:s});function s(){e.value=!1}return(o,a)=>(i(),h("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:a[1]||(a[1]=r=>e.value=!0),onMouseleave:a[2]||(a[2]=r=>e.value=!1)},[d("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":o.label,onClick:a[0]||(a[0]=r=>e.value=!e.value)},[o.button||o.icon?(i(),h("span",co,[o.icon?(i(),h("span",{key:0,class:A([o.icon,"option-icon"])},null,2)):g("",!0),o.button?(i(),h("span",{key:1,innerHTML:o.button},null,8,uo)):g("",!0),a[3]||(a[3]=d("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(i(),h("span",po))],8,lo),d("div",ho,[y(io,{items:o.items},{default:f(()=>[p(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),Ee=V(fo,[["__scopeId","data-v-40e55da0"]]),vo=["href","aria-label","innerHTML"],mo=k({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(n){const e=n,t=T();Q(async()=>{var a;await Ie();const o=(a=t.value)==null?void 0:a.children[0];o instanceof HTMLElement&&o.className.startsWith("vpi-social-")&&(getComputedStyle(o).maskImage||getComputedStyle(o).webkitMaskImage)==="none"&&o.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const s=S(()=>typeof e.icon=="object"?e.icon.svg:``);return(o,a)=>(i(),h("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:o.link,"aria-label":o.ariaLabel??(typeof o.icon=="string"?o.icon:""),target:"_blank",rel:"noopener",innerHTML:s.value},null,8,vo))}}),_o=V(mo,[["__scopeId","data-v-fbf39218"]]),go={class:"VPSocialLinks"},ko=k({__name:"VPSocialLinks",props:{links:{}},setup(n){return(e,t)=>(i(),h("div",go,[(i(!0),h(H,null,z(e.links,({link:s,icon:o,ariaLabel:a})=>(i(),P(_o,{key:s,icon:o,link:s,ariaLabel:a},null,8,["icon","link","ariaLabel"]))),128))]))}}),Oe=V(ko,[["__scopeId","data-v-f2234a39"]]),bo={key:0,class:"group translations"},$o={class:"trans-title"},yo={key:1,class:"group"},Po={class:"item appearance"},Lo={class:"label"},Vo={class:"appearance-action"},So={key:2,class:"group"},To={class:"item social-links"},wo=k({__name:"VPNavBarExtra",setup(n){const{site:e,theme:t}=M(),{localeLinks:s,currentLang:o}=ae({correspondingLink:!0}),a=S(()=>s.value.length&&o.value.label||e.value.appearance||t.value.socialLinks);return(r,l)=>a.value?(i(),P(Ee,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[c(s).length&&c(o).label?(i(),h("div",bo,[d("p",$o,C(c(o).label),1),(i(!0),h(H,null,z(c(s),u=>(i(),P(ke,{key:u.link,item:u},null,8,["item"]))),128))])):g("",!0),c(e).appearance&&c(e).appearance!=="force-dark"&&c(e).appearance!=="force-auto"?(i(),h("div",yo,[d("div",Po,[d("p",Lo,C(c(t).darkModeSwitchLabel||"Appearance"),1),d("div",Vo,[y(He)])])])):g("",!0),c(t).socialLinks?(i(),h("div",So,[d("div",To,[y(Oe,{class:"social-links-list",links:c(t).socialLinks},null,8,["links"])])])):g("",!0)]),_:1})):g("",!0)}}),Mo=V(wo,[["__scopeId","data-v-0c845e5d"]]),No=["aria-expanded"],Io=k({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(n){return(e,t)=>(i(),h("button",{type:"button",class:A(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},t[1]||(t[1]=[d("span",{class:"container"},[d("span",{class:"top"}),d("span",{class:"middle"}),d("span",{class:"bottom"})],-1)]),10,No))}}),Co=V(Io,[["__scopeId","data-v-670493dd"]]),Ao=["innerHTML"],Ho=k({__name:"VPNavBarMenuLink",props:{item:{}},setup(n){const{page:e}=M();return(t,s)=>(i(),P(K,{class:A({VPNavBarMenuLink:!0,active:c(te)(c(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:f(()=>[d("span",{innerHTML:t.item.text},null,8,Ao)]),_:1},8,["class","href","target","rel","no-icon"]))}}),Bo=V(Ho,[["__scopeId","data-v-8dbce4d0"]]),Eo=k({__name:"VPNavBarMenuGroup",props:{item:{}},setup(n){const e=n,{page:t}=M(),s=a=>"component"in a?!1:"link"in a?te(t.value.relativePath,a.link,!!e.item.activeMatch):a.items.some(s),o=S(()=>s(e.item));return(a,r)=>(i(),P(Ee,{class:A({VPNavBarMenuGroup:!0,active:c(te)(c(t).relativePath,a.item.activeMatch,!!a.item.activeMatch)||o.value}),button:a.item.text,items:a.item.items},null,8,["class","button","items"]))}}),Oo={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Do=k({__name:"VPNavBarMenu",setup(n){const{theme:e}=M();return(t,s)=>c(e).nav?(i(),h("nav",Oo,[s[0]||(s[0]=d("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(i(!0),h(H,null,z(c(e).nav,o=>(i(),h(H,{key:JSON.stringify(o)},["link"in o?(i(),P(Bo,{key:0,item:o},null,8,["item"])):"component"in o?(i(),P(W(o.component),Y({key:1,ref_for:!0},o.props),null,16)):(i(),P(Eo,{key:2,item:o},null,8,["item"]))],64))),128))])):g("",!0)}}),Fo=V(Do,[["__scopeId","data-v-5bacfe89"]]),zo="/document/assets/flex-logo.BJA2J7hW.svg";function $e(n,e){return typeof n>"u"?e:n}function ze(n){const e=Array(n);for(let t=0;t=this.minlength&&(l||!r[_])){let L=ie(u,o,v),b="";switch(this.tokenize){case"full":if(3$;N--)if(N-$>=this.minlength){const w=ie(u,o,v,m,$);b=_.substring($,N),this.push_index(r,b,w,n,t)}break}case"reverse":if(2=this.minlength){const N=ie(u,o,v,m,$);this.push_index(r,b,N,n,t)}b=""}case"forward":if(1=this.minlength&&this.push_index(r,b,L,n,t);break}default:if(this.boost&&(L=Math.min(0|L/this.boost(e,_,v),u-1)),this.push_index(r,_,L,n,t),l&&1=this.minlength&&!$[_]){$[_]=1;const R=ie(N+(o/2>N?0:1),o,v,O-1,F-1),X=this.bidirectional&&_>w;this.push_index(a,X?w:_,R,n,t,X?_:w)}}}}}this.fastupdate||(this.register[n]=1)}}return this};function ie(n,e,t,s,o){return t&&1=this.minlength&&!m[b]){if(!this.optimize&&!a&&!this.map[b])return r;L[N++]=b,m[b]=1}n=L,s=n.length}if(!s)return r;e||(e=100);let u,v=this.depth&&1=t)))));b++);if(v)return o?qe(l,t,0):void(n[n.length]=l)}return!e&&l};function qe(n,e,t){return n=n.length===1?n[0]:Uo(n),t||n.length>e?n.slice(t,t+e):n}function Ge(n,e,t,s){if(t){const o=s&&e>t;n=n[o?e:t],n=n&&n[o?t:e]}else n=n[e];return n}q.prototype.contain=function(n){return!!this.register[n]},q.prototype.update=function(n,e){return this.remove(n).add(n,e)},q.prototype.remove=function(n,e){const t=this.register[n];if(t){if(this.fastupdate)for(let s,o=0;o{if(a.value){for(var B=m.value.search(a.value,{enrich:!0}),I=[],j=0;j!B||!B.length?[]:B.reduce((j,E)=>(j[I(E)]||(j[I(E)]=[]),j[I(E)].push(E),j),{}),R=()=>{setTimeout(()=>{l.value&&l.value.focus()},100),De(),o.value=!0};Q(async()=>{var E,D;const B=await vt(()=>import("./virtual_search-data.CLDmFAmC.js"),[]);u.value=B.default.INDEX_DATA,v.value=B.default.PREVIEW_LOOKUP,_.value=B.default.Options,r.value=window.location.origin+he(t.value==="root"?"/":t.value),L.value=((E=_.value)==null?void 0:E.buttonLabel)||L.value,b.value=((D=_.value)==null?void 0:D.placeholder)||b.value;var I=new q(_.value);I.import("reg",u.value.reg),I.import("cfg",u.value.cfg),I.import("map",u.value.map),I.import("ctx",u.value.ctx),m.value=I,s.value.innerHTML=/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?"⌘":"Ctrl";const j=U=>{var se;U.key==="k"&&(U.ctrlKey||U.metaKey)&&(U.preventDefault(),R()),U.key==="Escape"&&((se=a.value)==null?void 0:se.length)==0&&o.value&&(o.value=!1)};window.addEventListener("keydown",j)});const X=S(()=>F(O.value,B=>B.link.split("/").slice(0,-1).join("-"))),ne=S(()=>Object.values(X.value).flat().map(B=>B.id));function De(){o.value=!1,a.value=""}const at=B=>{var I,j;if(document.getElementsByClassName("search-group")[0]){if(B.key=="ArrowUp"||B.key=="ArrowDown"){const E=ne.value.indexOf($.value);if(B.key=="ArrowUp"){const D=E==0?ne.value.length-1:E-1;$.value=ne.value[D]}if(B.key=="ArrowDown"){const D=E>ne.value.length-2?0:E+1;$.value=ne.value[D]}if(E<5){const D=N.value.getElementsByClassName("VPPluginSearch-search-group")[0];D==null||D.scrollIntoView(!0)}else(I=document.getElementById(ne.value[$.value]))==null||I.scrollIntoView(!0);Ie()}B.key=="Enter"&&w.go(e.site.value.base+((j=N.value.getElementsByClassName("link-focused")[0].getAttribute("href"))==null?void 0:j.replace(r.value,"")))}};return(B,I)=>{const j=Z("ClientOnly");return i(),h("div",la,[y(j,null,{default:f(()=>[(i(),P(gt,{to:"body"},[Fe(d("div",{class:"VPPluginSearch-modal-back",onClick:I[2]||(I[2]=E=>o.value=!1),onKeydown:at},[d("div",{class:"VPPluginSearch-modal",onClick:I[1]||(I[1]=Xe(()=>{},["stop"])),ref_key:"modal",ref:N},[d("form",ca,[I[4]||(I[4]=d("label",{class:"DocSearch-MagnifierLabel",for:"docsearch-input",id:"docsearch-label"},[d("svg",{width:"20",height:"20",class:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},[d("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})])],-1)),Fe(d("input",{class:"DocSearch-Input","aria-autocomplete":"both","aria-labelledby":"docsearch-label",id:"docsearch-input",autocomplete:"off",autocorrect:"off",autocapitalize:"off",enterkeyhint:"search",spellcheck:"false",autofocus:"true","onUpdate:modelValue":I[0]||(I[0]=E=>a.value=E),placeholder:b.value,maxlength:"64",type:"search",ref_key:"input",ref:l},null,8,ua),[[_t,a.value]])]),d("div",da,[(i(!0),h(H,null,z(X.value,(E,D)=>(i(),h("div",{class:"search-group",key:D},[d("span",pa,C(D?D.toString()[0].toUpperCase()+D.toString().slice(1):"Home"),1),(i(!0),h(H,null,z(E,(U,se)=>(i(),h("a",{href:r.value+U.link,key:U.id,onClick:De,onMouseenter:re=>$.value=U.id,class:A({"link-focused":$.value==U.id}),id:se.toString()},[d("div",fa,[d("span",va,C(U.link.includes("#")?"#":"▤"),1),d("div",ma,[d("h3",null,C(U.title),1),d("p",null,[d("div",{innerHTML:U.preview},null,8,_a)])]),I[5]||(I[5]=d("span",{class:"VPPluginSearch-search-item-icon"},"↪",-1))])],42,ha))),128))]))),128))]),I[6]||(I[6]=d("img",{class:"VPPluginSearch-flex-logo",src:zo,alt:"flex logo"},null,-1))],512)],544),[[mt,o.value]])]))]),_:1}),d("div",{id:"docsearch",onClick:I[3]||(I[3]=E=>R())},[d("button",ga,[d("span",ka,[I[7]||(I[7]=d("svg",{width:"20",height:"20",class:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},[d("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1)),d("span",ba,C(L.value),1)]),d("span",$a,[d("span",{class:"DocSearch-Button-Key",ref_key:"metaKey",ref:s},"Meta",512),I[8]||(I[8]=d("span",{class:"DocSearch-Button-Key"},"K",-1))])])])])}}}),Pa=k({__name:"VPNavBarSocialLinks",setup(n){const{theme:e}=M();return(t,s)=>c(e).socialLinks?(i(),P(Oe,{key:0,class:"VPNavBarSocialLinks",links:c(e).socialLinks},null,8,["links"])):g("",!0)}}),La=V(Pa,[["__scopeId","data-v-08b35e6f"]]),Va=["href","rel","target"],Sa=["innerHTML"],Ta={key:2},wa=k({__name:"VPNavBarTitle",setup(n){const{site:e,theme:t}=M(),{hasSidebar:s}=x(),{currentLang:o}=ae(),a=S(()=>{var u;return typeof t.value.logoLink=="string"?t.value.logoLink:(u=t.value.logoLink)==null?void 0:u.link}),r=S(()=>{var u;return typeof t.value.logoLink=="string"||(u=t.value.logoLink)==null?void 0:u.rel}),l=S(()=>{var u;return typeof t.value.logoLink=="string"||(u=t.value.logoLink)==null?void 0:u.target});return(u,v)=>(i(),h("div",{class:A(["VPNavBarTitle",{"has-sidebar":c(s)}])},[d("a",{class:"title",href:a.value??c(Ce)(c(o).link),rel:r.value,target:l.value},[p(u.$slots,"nav-bar-title-before",{},void 0,!0),c(t).logo?(i(),P(ue,{key:0,class:"logo",image:c(t).logo},null,8,["image"])):g("",!0),c(t).siteTitle?(i(),h("span",{key:1,innerHTML:c(t).siteTitle},null,8,Sa)):c(t).siteTitle===void 0?(i(),h("span",Ta,C(c(e).title),1)):g("",!0),p(u.$slots,"nav-bar-title-after",{},void 0,!0)],8,Va)],2))}}),Ma=V(wa,[["__scopeId","data-v-5622a072"]]),Na={class:"items"},Ia={class:"title"},Ca=k({__name:"VPNavBarTranslations",setup(n){const{theme:e}=M(),{localeLinks:t,currentLang:s}=ae({correspondingLink:!0});return(o,a)=>c(t).length&&c(s).label?(i(),P(Ee,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:c(e).langMenuLabel||"Change language"},{default:f(()=>[d("div",Na,[d("p",Ia,C(c(s).label),1),(i(!0),h(H,null,z(c(t),r=>(i(),P(ke,{key:r.link,item:r},null,8,["item"]))),128))])]),_:1},8,["label"])):g("",!0)}}),Aa=V(Ca,[["__scopeId","data-v-dac637f3"]]),Ha={class:"wrapper"},Ba={class:"container"},Ea={class:"title"},Oa={class:"content"},Da={class:"content-body"},Fa=k({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(n){const e=n,{y:t}=xe(),{hasSidebar:s}=x(),{frontmatter:o}=M(),a=T({});return Ne(()=>{a.value={"has-sidebar":s.value,home:o.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(r,l)=>(i(),h("div",{class:A(["VPNavBar",a.value])},[d("div",Ha,[d("div",Ba,[d("div",Ea,[y(Ma,null,{"nav-bar-title-before":f(()=>[p(r.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[p(r.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),d("div",Oa,[d("div",Da,[p(r.$slots,"nav-bar-content-before",{},void 0,!0),y(ya,{class:"search"}),y(Fo,{class:"menu"}),y(Aa,{class:"translations"}),y(Ks,{class:"appearance"}),y(La,{class:"social-links"}),y(Mo,{class:"extra"}),p(r.$slots,"nav-bar-content-after",{},void 0,!0),y(Co,{class:"hamburger",active:r.isScreenOpen,onClick:l[0]||(l[0]=u=>r.$emit("toggle-screen"))},null,8,["active"])])])])]),l[1]||(l[1]=d("div",{class:"divider"},[d("div",{class:"divider-line"})],-1))],2))}}),za=V(Fa,[["__scopeId","data-v-bb7529ee"]]),ja={key:0,class:"VPNavScreenAppearance"},Ua={class:"text"},qa=k({__name:"VPNavScreenAppearance",setup(n){const{site:e,theme:t}=M();return(s,o)=>c(e).appearance&&c(e).appearance!=="force-dark"&&c(e).appearance!=="force-auto"?(i(),h("div",ja,[d("p",Ua,C(c(t).darkModeSwitchLabel||"Appearance"),1),y(He)])):g("",!0)}}),Ga=V(qa,[["__scopeId","data-v-774971f8"]]),Ra=["innerHTML"],Wa=k({__name:"VPNavScreenMenuLink",props:{item:{}},setup(n){const e=_e("close-screen");return(t,s)=>(i(),P(K,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:c(e)},{default:f(()=>[d("span",{innerHTML:t.item.text},null,8,Ra)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Ka=V(Wa,[["__scopeId","data-v-29871565"]]),Ja=["innerHTML"],xa=k({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(n){const e=_e("close-screen");return(t,s)=>(i(),P(K,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:c(e)},{default:f(()=>[d("span",{innerHTML:t.item.text},null,8,Ja)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),ot=V(xa,[["__scopeId","data-v-581896e9"]]),Xa={class:"VPNavScreenMenuGroupSection"},Ya={key:0,class:"title"},Qa=k({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(n){return(e,t)=>(i(),h("div",Xa,[e.text?(i(),h("p",Ya,C(e.text),1)):g("",!0),(i(!0),h(H,null,z(e.items,s=>(i(),P(ot,{key:s.text,item:s},null,8,["item"]))),128))]))}}),Za=V(Qa,[["__scopeId","data-v-836cddb8"]]),er=["aria-controls","aria-expanded"],tr=["innerHTML"],nr=["id"],sr={key:0,class:"item"},or={key:1,class:"item"},ar={key:2,class:"group"},rr=k({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(n){const e=n,t=T(!1),s=S(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function o(){t.value=!t.value}return(a,r)=>(i(),h("div",{class:A(["VPNavScreenMenuGroup",{open:t.value}])},[d("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:o},[d("span",{class:"button-text",innerHTML:a.text},null,8,tr),r[0]||(r[0]=d("span",{class:"vpi-plus button-icon"},null,-1))],8,er),d("div",{id:s.value,class:"items"},[(i(!0),h(H,null,z(a.items,l=>(i(),h(H,{key:JSON.stringify(l)},["link"in l?(i(),h("div",sr,[y(ot,{item:l},null,8,["item"])])):"component"in l?(i(),h("div",or,[(i(),P(W(l.component),Y({ref_for:!0},l.props,{"screen-menu":""}),null,16))])):(i(),h("div",ar,[y(Za,{text:l.text,items:l.items},null,8,["text","items"])]))],64))),128))],8,nr)],2))}}),ir=V(rr,[["__scopeId","data-v-a8d3502a"]]),lr={key:0,class:"VPNavScreenMenu"},cr=k({__name:"VPNavScreenMenu",setup(n){const{theme:e}=M();return(t,s)=>c(e).nav?(i(),h("nav",lr,[(i(!0),h(H,null,z(c(e).nav,o=>(i(),h(H,{key:JSON.stringify(o)},["link"in o?(i(),P(Ka,{key:0,item:o},null,8,["item"])):"component"in o?(i(),P(W(o.component),Y({key:1,ref_for:!0},o.props,{"screen-menu":""}),null,16)):(i(),P(ir,{key:2,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):g("",!0)}}),ur=k({__name:"VPNavScreenSocialLinks",setup(n){const{theme:e}=M();return(t,s)=>c(e).socialLinks?(i(),P(Oe,{key:0,class:"VPNavScreenSocialLinks",links:c(e).socialLinks},null,8,["links"])):g("",!0)}}),dr={class:"list"},pr=k({__name:"VPNavScreenTranslations",setup(n){const{localeLinks:e,currentLang:t}=ae({correspondingLink:!0}),s=T(!1);function o(){s.value=!s.value}return(a,r)=>c(e).length&&c(t).label?(i(),h("div",{key:0,class:A(["VPNavScreenTranslations",{open:s.value}])},[d("button",{class:"title",onClick:o},[r[0]||(r[0]=d("span",{class:"vpi-languages icon lang"},null,-1)),ee(" "+C(c(t).label)+" ",1),r[1]||(r[1]=d("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),d("ul",dr,[(i(!0),h(H,null,z(c(e),l=>(i(),h("li",{key:l.link,class:"item"},[y(K,{class:"link",href:l.link},{default:f(()=>[ee(C(l.text),1)]),_:2},1032,["href"])]))),128))])],2)):g("",!0)}}),hr=V(pr,[["__scopeId","data-v-0d43316b"]]),fr={class:"container"},vr=k({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(n){const e=T(null),t=Ye(ge?document.body:null);return(s,o)=>(i(),P(we,{name:"fade",onEnter:o[0]||(o[0]=a=>t.value=!0),onAfterLeave:o[1]||(o[1]=a=>t.value=!1)},{default:f(()=>[s.open?(i(),h("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[d("div",fr,[p(s.$slots,"nav-screen-content-before",{},void 0,!0),y(cr,{class:"menu"}),y(hr,{class:"translations"}),y(Ga,{class:"appearance"}),y(ur,{class:"social-links"}),p(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):g("",!0)]),_:3}))}}),mr=V(vr,[["__scopeId","data-v-34fa79a7"]]),_r={key:0,class:"VPNav"},gr=k({__name:"VPNav",setup(n){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=Os(),{frontmatter:o}=M(),a=S(()=>o.value.navbar!==!1);return Qe("close-screen",t),fe(()=>{ge&&document.documentElement.classList.toggle("hide-nav",!a.value)}),(r,l)=>a.value?(i(),h("header",_r,[y(za,{"is-screen-open":c(e),onToggleScreen:c(s)},{"nav-bar-title-before":f(()=>[p(r.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[p(r.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[p(r.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[p(r.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),y(mr,{open:c(e)},{"nav-screen-content-before":f(()=>[p(r.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[p(r.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):g("",!0)}}),kr=V(gr,[["__scopeId","data-v-a46e73f0"]]),br=["role","tabindex"],$r={key:1,class:"items"},yr=k({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(n){const e=n,{collapsed:t,collapsible:s,isLink:o,isActiveLink:a,hasActiveLink:r,hasChildren:l,toggle:u}=zt(S(()=>e.item)),v=S(()=>l.value?"section":"div"),_=S(()=>o.value?"a":"div"),m=S(()=>l.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),L=S(()=>o.value?void 0:"button"),b=S(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":o.value},{"is-active":a.value},{"has-active":r.value}]);function $(w){"key"in w&&w.key!=="Enter"||!e.item.link&&u()}function N(){e.item.link&&u()}return(w,O)=>{const F=Z("VPSidebarItem",!0);return i(),P(W(v.value),{class:A(["VPSidebarItem",b.value])},{default:f(()=>[w.item.text?(i(),h("div",Y({key:0,class:"item",role:L.value},kt(w.item.items?{click:$,keydown:$}:{},!0),{tabindex:w.item.items&&0}),[O[1]||(O[1]=d("div",{class:"indicator"},null,-1)),w.item.link?(i(),P(K,{key:0,tag:_.value,class:"link",href:w.item.link,rel:w.item.rel,target:w.item.target},{default:f(()=>[(i(),P(W(m.value),{class:"text",innerHTML:w.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(i(),P(W(m.value),{key:1,class:"text",innerHTML:w.item.text},null,8,["innerHTML"])),w.item.collapsed!=null&&w.item.items&&w.item.items.length?(i(),h("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:N,onKeydown:bt(N,["enter"]),tabindex:"0"},O[0]||(O[0]=[d("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):g("",!0)],16,br)):g("",!0),w.item.items&&w.item.items.length?(i(),h("div",$r,[w.depth<5?(i(!0),h(H,{key:0},z(w.item.items,R=>(i(),P(F,{key:R.text,item:R,depth:w.depth+1},null,8,["item","depth"]))),128)):g("",!0)])):g("",!0)]),_:1},8,["class"])}}}),Pr=V(yr,[["__scopeId","data-v-2e0476bc"]]),Lr=k({__name:"VPSidebarGroup",props:{items:{}},setup(n){const e=T(!0);let t=null;return Q(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),$t(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,o)=>(i(!0),h(H,null,z(s.items,a=>(i(),h("div",{key:a.text,class:A(["group",{"no-transition":e.value}])},[y(Pr,{item:a,depth:0},null,8,["item"])],2))),128))}}),Vr=V(Lr,[["__scopeId","data-v-ec086cd5"]]),Sr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Tr=k({__name:"VPSidebar",props:{open:{type:Boolean}},setup(n){const{sidebarGroups:e,hasSidebar:t}=x(),s=n,o=T(null),a=Ye(ge?document.body:null);J([s,o],()=>{var l;s.open?(a.value=!0,(l=o.value)==null||l.focus()):a.value=!1},{immediate:!0,flush:"post"});const r=T(0);return J(e,()=>{r.value+=1},{deep:!0}),(l,u)=>c(t)?(i(),h("aside",{key:0,class:A(["VPSidebar",{open:l.open}]),ref_key:"navEl",ref:o,onClick:u[0]||(u[0]=Xe(()=>{},["stop"]))},[u[2]||(u[2]=d("div",{class:"curtain"},null,-1)),d("nav",Sr,[u[1]||(u[1]=d("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),p(l.$slots,"sidebar-nav-before",{},void 0,!0),(i(),P(Vr,{items:c(e),key:r.value},null,8,["items"])),p(l.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):g("",!0)}}),wr=V(Tr,[["__scopeId","data-v-12a40e3d"]]),Mr=k({__name:"VPSkipLink",setup(n){const{theme:e}=M(),t=me(),s=T();J(()=>t.path,()=>s.value.focus());function o({target:a}){const r=document.getElementById(decodeURIComponent(a.hash).slice(1));if(r){const l=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",l)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",l),r.focus(),window.scrollTo(0,0)}}return(a,r)=>(i(),h(H,null,[d("span",{ref_key:"backToTop",ref:s,tabindex:"-1"},null,512),d("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o},C(c(e).skipToContentLabel||"Skip to content"),1)],64))}}),Nr=V(Mr,[["__scopeId","data-v-17ad389b"]]),Ir=k({__name:"Layout",setup(n){const{isOpen:e,open:t,close:s}=x(),o=me();J(()=>o.path,s),Ft(e,s);const{frontmatter:a}=M(),r=yt(),l=S(()=>!!r["home-hero-image"]);return Qe("hero-image-slot-exists",l),(u,v)=>{const _=Z("Content");return c(a).layout!==!1?(i(),h("div",{key:0,class:A(["Layout",c(a).pageClass])},[p(u.$slots,"layout-top",{},void 0,!0),y(Nr),y(St,{class:"backdrop",show:c(e),onClick:c(s)},null,8,["show","onClick"]),y(kr,null,{"nav-bar-title-before":f(()=>[p(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[p(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[p(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[p(u.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[p(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[p(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),y(Es,{open:c(e),onOpenMenu:c(t)},null,8,["open","onOpenMenu"]),y(wr,{open:c(e)},{"sidebar-nav-before":f(()=>[p(u.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[p(u.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),y(bs,null,{"page-top":f(()=>[p(u.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[p(u.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[p(u.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[p(u.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[p(u.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[p(u.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[p(u.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[p(u.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[p(u.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[p(u.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[p(u.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[p(u.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[p(u.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[p(u.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[p(u.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[p(u.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[p(u.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[p(u.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[p(u.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[p(u.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[p(u.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[p(u.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[p(u.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),y(Vs),p(u.$slots,"layout-bottom",{},void 0,!0)],2)):(i(),P(_,{key:1}))}}}),Cr=V(Ir,[["__scopeId","data-v-c4daae71"]]),Hr={Layout:Cr,enhanceApp:({app:n})=>{n.component("Badge",Pt)}};export{Hr as t}; diff --git a/docs/document/assets/chunks/virtual_search-data.BhiJ7XR7.js b/docs/document/assets/chunks/virtual_search-data.BhiJ7XR7.js deleted file mode 100644 index 2c67507d6..000000000 --- a/docs/document/assets/chunks/virtual_search-data.BhiJ7XR7.js +++ /dev/null @@ -1,1404 +0,0 @@ -const e={map:'[{"高级属性":["0.0"],"option":["0.1","1.12","10.1","11.12","20.9","23.9","24.17"],"template":["0.2","10.2"],"events":["0.3","10.3"],"storage":["0.4","10.4"],"icons":["0.5","10.5","22.39","26.39"],"i18n":["0.6","10.6","22.43","26.43"],"notice":["0.7","3.4","10.7","13.4"],"layers":["0.8","10.8","18.0","22.29","26.29"],"controls":["0.9","10.9","17.0","22.32","26.32"],"contextmenu":["0.10","2.37","3.3","10.10","12.37","13.3","22.31","26.31"],"subtitle":["0.11","2.36","10.11","12.36","22.37","26.37"],"info":["0.12","2.32","3.22","10.12","12.32","13.22"],"loading":["0.13","2.34","10.13","12.34"],"hotkey":["0.14","2.5","10.14","12.5","22.19","26.19"],"mask":["0.15","2.35","10.15","12.35"],"setting":["0.16","2.39","3.5","3.6","3.7","10.16","12.39","13.5","13.6","13.7","22.18","26.18"],"plugins":["0.17","10.17","22.35","26.35"],"静态属性":["1.0"],"instances":["1.1","11.1"],"version":["1.2","11.2"],"env":["1.3","11.3"],"build":["1.4","11.4"],"config":["1.5","11.5","24.13"],"utils":["1.6","11.6"],"scheme":["1.7","11.7"],"emitter":["1.8","11.8"],"validator":["1.9","11.9"],"kindof":["1.10","11.10"],"html":["1.11","11.11"],"实例事件":["2.0"],"ready":["2.1","12.1"],"restart":["2.2","12.2"],"pause":["2.3","5.2","12.3","15.2"],"play":["2.4","5.1","12.4","15.1"],"destroy":["2.6","5.4","12.6","15.4"],"focus":["2.7","12.7"],"blur":["2.8","12.8"],"dblclick":["2.9","12.9"],"click":["2.10","12.10"],"error":["2.11","12.11"],"hover":["2.12","12.12"],"mousemove":["2.13","12.13"],"resize":["2.14","3.8","12.14","13.8"],"view":["2.15","12.15"],"lock":["2.16","12.16","22.44","26.44"],"aspectratio":["2.17","5.32","12.17","15.32","22.16","26.16"],"autoheight":["2.18","5.33","12.18","15.33"],"autosize":["2.19","5.27","12.19","15.27","22.11","26.11"],"flip":["2.20","3.30","5.30","12.20","13.30","15.30","22.14","26.14"],"fullscreen":["2.21","3.31","5.20","12.21","13.31","15.20","22.23","26.23"],"fullscreenerror":["2.22","12.22"],"fullscreenweb":["2.23","5.21","12.23","15.21","22.24","26.24"],"mini":["2.24","5.24","12.24","15.24"],"pip":["2.25","5.22","12.25","15.22","22.20","26.20"],"screenshot":["2.26","5.17","12.26","15.17","22.17","26.17"],"seek":["2.27","3.27","5.6","12.27","13.27","15.6"],"subtitleoffset":["2.28","5.47","12.28","15.47","22.25","26.25"],"subtitlebeforeupdate":["2.29","12.29"],"subtitleafterupdate":["2.30","12.30"],"subtitleload":["2.31","12.31"],"layer":["2.33","12.33"],"control":["2.38","3.16","12.38","13.16"],"muted":["2.40","5.14","12.40","15.14","22.9","26.9"],"keydown":["2.41","12.41"],"video":["2.42","2.43","2.44","2.45","2.46","2.47","2.48","2.49","2.50","2.51","2.52","2.53","2.54","2.55","2.56","2.57","2.58","2.59","2.60","2.61","2.62","5.43","12.42","12.43","12.44","12.45","12.46","12.47","12.48","12.49","12.50","12.51","12.52","12.53","12.54","12.55","12.56","12.57","12.58","12.59","12.60","12.61","12.62","15.43"],"全局属性":["3.0"],"debug":["3.1","13.1"],"style":["3.2","13.2"],"scroll":["3.9","3.10","13.9","13.10"],"auto":["3.11","3.12","3.13","3.21","13.11","13.12","13.13","13.21"],"reconnect":["3.14","3.15","13.14","13.15"],"dbclick":["3.17","3.18","13.17","13.18"],"mobile":["3.19","3.20","13.19","13.20"],"fast":["3.23","3.24","13.23","13.24"],"touch":["3.25","13.25"],"volume":["3.26","5.9","13.26","15.9","22.7","26.7"],"playback":["3.28","13.28"],"aspect":["3.29","13.29"],"log":["3.32","13.32"],"use":["3.33","13.33"],"remove":["3.34","13.34","19.8"],"编写插件":["4.0"],"实例属性":["5.0"],"toggle":["5.3","15.3"],"reset":["5.5","15.5","24.15"],"forward":["5.7","15.7"],"backward":["5.8","15.8"],"url":["5.10","15.10","22.2","26.2"],"switch":["5.11","15.11"],"switchurl":["5.12","15.12"],"switchquality":["5.13","15.13"],"currenttime":["5.15","15.15"],"duration":["5.16","15.16"],"getdataurl":["5.18","15.18"],"getbloburl":["5.19","15.19"],"poster":["5.23","15.23","22.5","26.5"],"playing":["5.25","15.25"],"state":["5.26","15.26"],"rect":["5.28","15.28"],"bottom":["5.29","15.29"],"playbackrate":["5.31","15.31","22.15","26.15"],"attr":["5.34","15.34"],"type":["5.35","15.35","22.40","26.40"],"theme":["5.36","15.36","22.6","26.6"],"airplay":["5.37","15.37","22.49","26.49"],"loaded":["5.38","15.38"],"loadedtime":["5.39","15.39"],"played":["5.40","15.40"],"proxy":["5.41","15.41","22.51","26.51"],"query":["5.42","15.42"],"cssvar":["5.44","15.44","22.50","26.50"],"quality":["5.45","15.45","22.33","26.33"],"thumbnails":["5.46","15.46","22.36","26.36"],"右键菜单":["6.0"],"配置":["6.1","7.1","8.1"],"创建":["6.2","7.2","8.2","9.2","9.3","9.4","9.5","9.6"],"添加":["6.3","7.3","8.3","9.7"],"删除":["6.4","7.4","8.4","9.8"],"更新":["6.5","7.5","8.5","9.9"],"控制器":["7.0"],"业务层":["8.0"],"设置面板":["9.0"],"内置":["9.1"],"advanced":["10.0"],"static":["11.0"],"instance":["12.0","15.0"],"global":["13.0"],"writing":["14.0"],"context":["16.0"],"configuration":["16.1","17.1","18.1"],"creation":["16.2","17.2","18.2"],"addition":["16.3","18.3"],"deletion":["16.4"],"update":["16.5","18.5","19.9"],"adding":["17.3","21.3"],"removal":["17.4","18.4"],"updating":["17.5"],"settings":["19.0","22.30","26.30"],"built":["19.1"],"create":["19.2","19.3","19.4","19.5","19.6"],"add":["19.7"],"installation":["20.0","20.1"],"cdn":["20.2","23.2","24.3"],"usage":["20.3"],"vue":["20.4","20.7","23.4","23.7"],"react":["20.5","20.8","23.5","23.8"],"typescript":["20.6","23.6"],"javascript":["20.10","23.10"],"legacy":["20.11"],"ecmascript":["20.12","23.12"],"custom":["20.13"],"language":["21.0"],"default":["21.1"],"importing":["21.2"],"modifying":["21.4"],"basic":["22.0"],"container":["22.1","26.1"],"id":["22.3","26.3"],"onready":["22.4","26.4"],"islive":["22.8","26.8"],"autoplay":["22.10","26.10"],"automini":["22.12","26.12"],"loop":["22.13","26.13"],"mutex":["22.21","26.21"],"backdrop":["22.22","26.22"],"miniprogressbar":["22.26","26.26"],"usessr":["22.27","26.27"],"playsinline":["22.28","26.28"],"highlight":["22.34","26.34"],"morevideoattr":["22.38","26.38"],"customtype":["22.41","26.41"],"lang":["22.42","26.42"],"gesture":["22.45","26.45"],"fastforward":["22.46","26.46"],"autoplayback":["22.47","26.47"],"autoorientation":["22.48","26.48"],"安装使用":["23.0"],"安装":["23.1","24.2"],"使用":["23.3"],"古老的浏览器":["23.11"],"自定义":["23.13"],"弹幕库":["24.0"],"演示":["24.1"],"弹幕结构":["24.4"],"全部选项":["24.5"],"生命周期":["24.6"],"使用弹幕数组":["24.7"],"使用弹幕":["24.8"],"使用异步返回":["24.9"],"hide":["24.10"],"ishide":["24.11"],"emit":["24.12"],"load":["24.14"],"mount":["24.16"],"事件":["24.18"],"语言设置":["25.0"],"默认语言":["25.1"],"导入语言":["25.2"],"新增语言":["25.3"],"修改语言":["25.4"],"基础选项":["26.0"]},{"0":["3.28","5.38","5.40","22.7","26.7"],"1":["23.11","24.5"],"3":["3.29","23.9"],"4":["3.29","25.3"],"5":["3.28","8.2","18.2","24.5"],"7":["8.3","18.3","22.7"],"9":["25.3"],"10":["24.5"],"15":["4.0"],"21":["8.5","9.9","18.5","19.9"],"26":["7.5","17.5"],"27":["9.9","19.9"],"75":["3.28"],"250":["3.5"],"这里的":["0.0","1.0","3.0","5.0"],"播放器的选项":["0.1"],"div":["0.1","0.2","0.4","0.5","0.7","0.14","0.17","1.1","1.6","2.0","2.1","2.2","2.3","2.4","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.17","2.18","2.19","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.27","2.28","2.29","2.30","2.31","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","3.3","4.0","5.1","5.2","5.3","5.16","5.28","5.33","5.37","5.45","6.2","6.3","6.4","6.5","7.2","7.3","7.4","7.5","8.2","8.3","8.4","8.5","9.4","9.7","9.8","9.9","10.1","10.2","14.0","16.2","16.3","16.4","16.5","17.2","17.3","17.4","17.5","18.2","18.3","18.4","18.5","19.4","19.7","19.8","19.9","22.2","22.29","22.30","24.6","24.7","24.9","24.10","24.11","24.12","24.13","24.14","24.15","24.17","24.18","26.2","26.29","26.30","26.31","26.32"],"classname":["0.1","0.2","0.17","2.0","2.1","2.2","2.3","2.4","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.17","2.18","2.19","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.27","2.28","2.29","2.30","2.31","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","4.0","5.45","6.2","6.3","6.4","6.5","7.2","7.3","7.4","7.5","8.2","8.3","8.4","8.5","9.4","9.7","9.8","9.9","10.2","14.0","16.2","16.3","16.4","16.5","17.2","17.3","17.4","17.5","18.2","18.3","18.4","18.5","19.4","19.7","19.8","19.9","22.2","22.29","22.30","24.6","24.7","24.9","24.11","24.12","24.13","24.14","24.15","24.17","24.18","26.2","26.29","26.30"],"run":["0.1","0.2","2.0","2.2","2.6","2.11","2.12","2.17","2.18","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.28","2.29","2.30","2.31","2.39","4.0","5.45","6.2","6.3","6.4","6.5","7.2","7.3","7.4","7.5","8.2","8.3","8.4","8.5","9.4","9.7","9.8","9.9","14.0","16.2","16.3","16.4","16.5","17.2","17.3","17.4","17.5","18.2","18.3","18.4","18.5","19.4","19.7","19.8","19.9","22.2","22.29","24.6","24.7","24.9","24.11","24.12","24.13","24.14","24.15","24.17","24.18","26.2","26.29","26.30"],"管理播放器所有的":["0.2","0.3","0.5"],"dom":["0.2","0.3","5.41","5.42","9.2","9.3","9.5","9.6","10.2","10.3","15.41","15.42","19.2","19.3","19.5","19.6","22.1","26.1"],"元素":["0.2","9.5","9.6"],"事件":["0.3","4.0"],"实质上是代理了":["0.3"],"addeventlistener":["0.3","5.41","10.3","15.41"],"和":["0.3","4.0","5.13","24.8","24.10","26.4"],"removeeventlistener":["0.3","10.3"],"当使用以下方法来处理事件":["0.3"],"播放器销毁时也会自动销毁该事件":["0.3"],"管理播放器的本地存储":["0.4"],"name":["0.4","4.0","10.4","17.1"],"属性用于设置缓存的":["0.4"],"key":["0.4","10.4"],"set":["0.4","10.4","15.9","15.11","15.12","15.44","15.45","22.36","22.37"],"方法用于设置缓存":["0.4"],"get":["0.4","0.6","10.6","15.34","15.44"],"方法用于获取缓存":["0.4"],"del":["0.4"],"方法用于删除缓存":["0.4"],"clear":["0.4"],"方法用于清空缓存":["0.4"],"svg":["0.5","10.5"],"图标":["0.5"],"管理播放器的":["0.6"],"方法用于获取":["0.6"],"的值":["0.6"],"update":["0.6","0.8","0.9","0.10","0.16"],"管理播放器的提示语":["0.7"],"只有一个":["0.7"],"show":["0.7","0.13","0.15","10.13","10.15","24.10"],"属性用于显示提示语":["0.7"],"管理播放器的层":["0.8"],"add":["0.8","0.9","0.10","0.14","0.16","0.17","10.8","10.9","10.10","10.14","10.16"],"方法用于动态添加层":["0.8"],"remove":["0.8","0.9","0.10","0.14","0.16"],"方法用于动态删除层":["0.8"],"管理播放器的控制器":["0.9"],"方法用于动态添加控制器":["0.9"],"方法用于动态删除控制器":["0.9"],"管理播放器的右键菜单":["0.10"],"方法用于动态添加菜单":["0.10"],"方法用于动态删除菜单":["0.10"],"方法用于动态更新菜单":["0.10"],"管理播放器的字幕功能":["0.11"],"url":["0.11","5.12","10.11","15.12","15.18","15.19"],"属性设置和返回当前字幕地址":["0.11"],"style":["0.11"],"方法设置当前字幕的样式":["0.11"],"switch":["0.11"],"管理播放器的信息面板":["0.12"],"常用于查看当前播放器和视频的运行状态":["0.12"],"例如版本号":["0.12"],"分辨率":["0.12"],"时长等":["0.12"],"管理播放器的加载层":["0.13"],"属性用于设置是否显示加载层":["0.13"],"toggle":["0.13","0.15","19.5"],"管理播放器的快捷键功能":["0.14"],"方法用于添加快捷键":["0.14"],"方法用于删除快捷键":["0.14"],"管理播放器的遮罩层":["0.15"],"属性用于设置是否显示遮罩层":["0.15"],"管理播放器的设置面板":["0.16"],"方法用于动态添加设置项":["0.16"],"方法用于动态删除设置项":["0.16"],"方法用于动态更新设置项":["0.16"],"管理播放器的插件功能":["0.17"],"只有一个方法":["0.17"],"用于动态添加插件":["0.17"],"返回全部播放器实例的数组":["1.1"],"假如你想同时管理多个播放器的时候":["1.1"],"可以用到该属性":["1.1"],"返回播放器的版本信息":["1.2"],"返回播放器的环境变量":["1.3"],"返回播放器的打包时间":["1.4"],"返回视频的默认配置":["1.5"],"返回播放器的工具函数集合":["1.6"],"返回播放器选项的校验方案":["1.7"],"返回事件分发器的构造函数":["1.8"],"返回选项的校验函数":["1.9"],"返回类型检测的函数工具":["1.10"],"返回播放器所需的":["1.11"],"返回播放器的默认选项":["1.12"],"播放器的事件分为两种":["2.0"],"一种视频的":["2.0"],"原生事件":["2.0"],"前缀":["2.0"],"video":["2.0","12.0","13.29","13.30","13.34","15.3","15.5","15.11","15.12","15.13","15.16","15.38","15.40","22.2","22.5","22.37","22.40","22.41"],"另外一种是":["2.0"],"自定义事件":["2.0"],"监听事件":["2.0"],"code":["2.0","2.2","2.28","4.0","6.2","6.3","6.4","6.5","7.2","7.3","7.4","7.5","8.2","8.3","8.4","8.5","9.4","9.7","9.8","9.9","14.0","16.2","16.3","16.4","16.5","17.2","17.3","17.4","17.5","18.2","18.3","18.4","18.5","19.4","19.7","19.8","19.9","20.1","20.2","20.3","20.4","20.5","22.2","22.29","23.1","23.2","23.3","23.4","23.5","24.2","24.3","24.6","24.7","24.9","24.11","24.12","24.13","24.14","24.15","24.17","24.18","26.2","26.29"],"js":["2.0","4.0","6.5","7.2","7.3","7.5","8.2","8.3","8.5","9.4","9.8","9.9","16.5","17.2","17.3","17.5","18.2","18.3","18.5","19.4","19.8","19.9","20.4","20.5","20.7","20.8","20.10","20.11","21.2","21.4","23.4","23.5","23.7","23.8","23.10","23.11","24.5","24.18","25.2","25.3","25.4"],"当播放器首次可以播放器时触发":["2.1"],"当播放器切换地址后并可以播放时触发":["2.2"],"当播放器暂停时触发":["2.3"],"当播放器播放时触发":["2.4"],"当播放器热键被按下时触发":["2.5"],"当播放器销毁时触发":["2.6"],"当播放器获得焦点时触发":["2.7"],"当播放器失去焦点时触发":["2.8"],"当播放器被双击时触发":["2.9"],"当播放器被单击时触发":["2.10"],"当播放器加载视频发生错误时触发":["2.11"],"当播放器被鼠标移出或者移入时触发":["2.12"],"当播放器被鼠标经过时触发":["2.13"],"当播放器尺寸变化时触发":["2.14"],"当播放器出现在视口时触发":["2.15"],"在移动端":["2.16","3.19","3.20","3.21","3.23","3.24","3.25"],"当锁定的状态发生变化时触发":["2.16"],"当播放器长宽比变化时触发":["2.17"],"当播放器自动设置高度时触发":["2.18"],"当播放器自动设置尺寸时触发":["2.19"],"当播放器发生翻转时触发":["2.20"],"当播放器发生窗口全屏时触发":["2.21"],"当播放器发生窗口全屏错误时触发":["2.22"],"当播放器发生网页全屏时触发":["2.23"],"当播放器进入迷你模式时触发":["2.24"],"当播放器进入画中画时触发":["2.25"],"当播放器被截图时触发":["2.26"],"当播放器发生时间跳转时触发":["2.27"],"当播放器发生字幕偏移时触发":["2.28"],"当字幕更新前触发":["2.29"],"当字幕更新后触发":["2.30"],"当字幕加载时触发":["2.31"],"当信息面板显示或隐藏时触发":["2.32"],"当自定义层显示或隐藏时触发":["2.33"],"当加载器显示或隐藏时触发":["2.34"],"当遮罩层显示或隐藏时触发":["2.35"],"当字幕层显示或隐藏时触发":["2.36"],"当右键菜单显示或隐藏时触发":["2.37"],"当控制器显示或隐藏时触发":["2.38"],"当设置面板显示或隐藏时触发":["2.39"],"当静音的状态变化时触发":["2.40"],"监听来自":["2.41"],"document":["2.41"],"的":["2.41"],"canplay":["2.42","12.42"],"canplaythrough":["2.43","12.43"],"complete":["2.44","12.44"],"durationchange":["2.45","12.45"],"emptied":["2.46","12.46"],"ended":["2.47","12.47"],"error":["2.48","12.48"],"loadeddata":["2.49","12.49"],"loadedmetadata":["2.50","12.50"],"pause":["2.51","12.51"],"play":["2.52","3.19","3.20","12.52","13.19","13.20","15.3"],"playing":["2.53","12.53"],"progress":["2.54","12.54","22.36"],"ratechange":["2.55","12.55"],"seeked":["2.56","12.56"],"seeking":["2.57","12.57"],"stalled":["2.58","12.58"],"suspend":["2.59","12.59"],"timeupdate":["2.60","12.60"],"volumechange":["2.61","12.61"],"waiting":["2.62","12.62"],"是否开始":["3.1"],"模式":["3.1"],"返回播放器样式文本":["3.2"],"是否开启右键菜单":["3.3"],"默认开启":["3.3"],"time":["3.4","3.8","3.9","3.14","3.15","3.16","3.17","3.21","3.22","3.24","13.4","13.8","13.9","13.14","13.15","13.16","13.17","13.21","13.22","13.24","22.25"],"提示信息的显示时长":["3.4"],"单位为毫秒":["3.4","3.8","3.9","3.13","3.16","3.17","3.22"],"width":["3.5","3.6","5.29","9.3","13.5","13.6","15.29","15.33"],"设置面板的默认宽度":["3.5"],"单位为像素":["3.5","3.6","3.7","3.10"],"默认为":["3.5","3.6","3.7","3.11","3.17","3.26","3.28","3.29","3.30","3.32","3.33"],"item":["3.6","3.7","13.6","13.7","19.6"],"设置面板的设置项的默认宽度":["3.6"],"height":["3.7","5.29","13.7","15.29"],"设置面板的设置项的默认高度":["3.7"],"事件的节流时间":["3.8","3.9"],"gap":["3.10","13.10"],"view":["3.10","10.12"],"事件的边界容差距离":["3.10"],"playback":["3.11","3.12","3.13","12.53","13.11","13.12","13.13","22.47"],"max":["3.11","3.14","13.11","13.14"],"自动回放功能的最大记录数":["3.11"],"min":["3.12","13.12"],"自动回放功能的最小记录时长":["3.12"],"单位为秒":["3.12","3.27","5.39"],"timeout":["3.13","13.13"],"自动回放功能的隐藏延迟时长":["3.13"],"发生连接错误时":["3.14","3.15"],"自动连接的最大次数":["3.14"],"sleep":["3.15","13.15"],"自动连接的延迟时间":["3.15"],"hide":["3.16","13.13","13.16"],"底部控制栏的自动隐藏的延迟时间":["3.16"],"双击事件的延迟事件":["3.17"],"fullscreen":["3.18","12.22","13.18"],"在桌面端":["3.18"],"是否双击切换全屏":["3.18"],"dbclick":["3.19","13.19"],"是否双击切换播放暂停":["3.19"],"click":["3.20","13.20"],"是否单击切换播放暂停":["3.20"],"orientation":["3.21","13.21"],"自动旋屏的延迟时间":["3.21"],"loop":["3.22","13.22"],"信息面板的刷新时间":["3.22"],"forward":["3.23","3.24","13.23","13.24"],"value":["3.23","13.23"],"长按加速的速率倍数":["3.23"],"长按加速的延迟时间":["3.24"],"move":["3.25","13.25"],"ratio":["3.25","3.29","13.25","13.29"],"左右滑动进度的速率倍数":["3.25"],"step":["3.26","3.27","13.26","13.27"],"快捷键调节音量的幅度比例":["3.26"],"快捷键调节播放进度的幅度":["3.27"],"rate":["3.28","13.28"],"内置播放速率的列表":["3.28"],"内置视频长宽比的列表":["3.29"],"default":["3.29","13.5","13.6","13.7","22.1","22.2","22.3","22.4","22.5","22.6","22.7","22.8","22.9","22.10","22.11","22.12","22.13","22.14","22.15","22.16","22.17","22.18","22.19","22.20","22.21","22.22","22.23","22.24","22.25","22.26","22.27","22.28","22.29","22.30","22.31","22.32","22.33","22.34","22.35","22.36","22.37","22.38","22.39","22.40","22.41","22.42","22.43","22.44","22.45","22.46","22.47","22.48","22.49","22.50","22.51","26.1","26.2","26.3","26.4","26.5","26.6","26.7","26.8","26.9","26.10","26.11","26.12","26.13","26.14","26.15","26.16","26.17","26.18","26.19","26.20","26.21","26.22","26.23","26.24","26.25","26.26","26.27","26.28","26.29","26.30","26.31","26.32","26.33","26.34","26.35","26.36","26.37","26.38","26.39","26.40","26.41","26.42","26.43","26.44","26.45","26.46","26.47","26.48","26.49","26.50","26.51"],"内置视频翻转的列表":["3.30"],"normal":["3.30"],"horizontal":["3.30"],"vertical":["3.30"],"web":["3.31","13.31"],"in":["3.31","13.28","13.29","13.30","13.31","19.1","20.10"],"body":["3.31","13.31"],"网页全屏时":["3.31"],"version":["3.32","13.32"],"设置是否打印播放器版本":["3.32"],"raf":["3.33","13.33"],"设置是否使用":["3.33"],"requestanimationframe":["3.33"],"src":["3.34","5.5","13.34","21.2","25.2"],"when":["3.34","10.3","12.1","12.2","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.17","12.18","12.19","12.20","12.21","12.22","12.23","12.24","12.25","12.26","12.27","12.28","12.31","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","13.34","15.33"],"destroy":["3.34","13.34"],"在销毁播放器时":["3.34"],"是否同时移除视频的":["3.34"],"但你已经知道播放器的":["4.0"],"属性":["4.0","6.1","7.1","8.1","9.2","9.3","9.5","9.6","26.33","26.34","26.36","26.37"],"方法":["4.0"],"后":["4.0"],"再编写插件是非常简单的事":["4.0"],"可以在实例化的时候加载插件的函数":["4.0"],"function":["4.0","5.1","5.2","5.3","5.4","5.5","5.12","5.13","5.17","5.18","5.19","5.27","5.33","5.34","5.37","5.41","5.42","5.44","9.3","14.0","15.1","15.2","15.3","15.4","15.5","15.12","15.13","15.17","15.18","15.19","15.27","15.33","15.34","15.37","15.41","15.42","15.44","22.4","22.51","26.4","26.51"],"myplugin":["4.0"],"art":["4.0","5.12","7.2","15.12","17.2"],"console":["4.0"],"info":["4.0"],"return":["4.0"],"something":["4.0"],"type":["5.1","5.2","5.3","5.4","5.5","5.6","5.7","5.8","5.9","5.10","5.11","5.12","5.13","5.14","5.15","5.16","5.17","5.18","5.19","5.20","5.21","5.22","5.23","5.24","5.25","5.26","5.27","5.28","5.30","5.31","5.32","5.33","5.34","5.36","5.37","5.38","5.39","5.40","5.41","5.42","5.43","5.44","5.45","5.46","5.47","15.1","15.2","15.3","15.4","15.5","15.6","15.7","15.8","15.9","15.10","15.11","15.12","15.13","15.14","15.15","15.16","15.17","15.18","15.19","15.20","15.21","15.22","15.23","15.24","15.25","15.26","15.27","15.28","15.29","15.30","15.31","15.32","15.33","15.34","15.36","15.37","15.38","15.39","15.40","15.41","15.42","15.43","15.44","15.45","15.46","15.47","16.1","17.1","18.1","19.2","19.3","19.5","19.6","20.10","22.1","22.2","22.3","22.4","22.5","22.6","22.7","22.8","22.9","22.10","22.11","22.12","22.13","22.14","22.15","22.16","22.17","22.18","22.19","22.20","22.21","22.22","22.23","22.24","22.25","22.26","22.27","22.28","22.29","22.30","22.31","22.32","22.33","22.34","22.35","22.36","22.37","22.38","22.39","22.41","22.42","22.43","22.44","22.45","22.46","22.47","22.48","22.49","22.50","22.51","26.1","26.2","26.3","26.4","26.5","26.6","26.7","26.8","26.9","26.10","26.11","26.12","26.13","26.14","26.15","26.16","26.17","26.18","26.19","26.20","26.21","26.22","26.23","26.24","26.25","26.26","26.27","26.28","26.29","26.30","26.31","26.32","26.33","26.34","26.35","26.36","26.37","26.38","26.39","26.41","26.42","26.43","26.44","26.45","26.46","26.47","26.48","26.49","26.50","26.51"],"播放视频":["5.1"],"暂停视频":["5.2"],"切换视频的播放和暂停":["5.3"],"parameter":["5.4","5.6","5.7","5.8","5.9","5.10","5.11","5.12","5.13","5.14","5.15","5.20","5.21","5.22","5.23","5.24","5.25","5.26","5.30","5.31","5.32","5.34","5.35","5.36","5.45","5.46","5.47","15.4","15.6","15.7","15.8","15.9","15.10","15.11","15.12","15.13","15.14","15.15","15.20","15.21","15.22","15.23","15.24","15.25","15.26","15.30","15.31","15.32","15.34","15.35","15.36","15.45","15.46","15.47","22.4"],"boolean":["5.4","5.14","5.20","5.21","5.22","5.25","7.1","15.4","15.14","15.20","15.21","15.22","15.24","15.25","16.1","17.1","18.1","22.8","22.9","22.10","22.11","22.12","22.13","22.14","22.15","22.16","22.17","22.18","22.19","22.20","22.21","22.22","22.23","22.24","22.25","22.26","22.27","22.28","22.44","22.45","22.46","22.47","22.48","22.49","26.8","26.9","26.10","26.11","26.12","26.13","26.14","26.15","26.16","26.17","26.18","26.19","26.20","26.21","26.22","26.23","26.24","26.25","26.26","26.27","26.28","26.44","26.45","26.46","26.47","26.48","26.49"],"重置播放器的视频元素":["5.5"],"会移除当前":["5.5"],"并调用一次":["5.5"],"setter":["5.6","5.7","5.8","5.9","5.10","5.11","5.14","5.15","5.20","5.21","5.22","5.23","5.24","5.26","5.30","5.31","5.32","5.35","5.36","5.45","5.46","5.47","15.6","15.7","15.8","15.9","15.10","15.11","15.14","15.15","15.20","15.21","15.22","15.23","15.24","15.26","15.30","15.31","15.32","15.35","15.36","15.45","15.46","15.47"],"number":["5.6","5.7","5.8","5.9","5.15","5.31","13.14","15.6","15.7","15.8","15.9","15.15","15.31","15.47","21.0","22.7","26.7"],"getter":["5.9","5.10","5.14","5.15","5.16","5.20","5.21","5.22","5.23","5.24","5.25","5.26","5.28","5.30","5.31","5.32","5.35","5.36","5.38","5.39","5.40","5.46","5.47","15.9","15.10","15.14","15.15","15.16","15.20","15.21","15.22","15.23","15.24","15.25","15.26","15.28","15.29","15.30","15.31","15.32","15.35","15.36","15.38","15.39","15.40","15.46","15.47"],"string":["5.11","5.12","5.13","5.23","5.26","5.30","5.32","5.34","5.35","5.36","9.2","9.3","9.5","9.6","15.10","15.11","15.12","15.13","15.23","15.26","15.30","15.32","15.34","15.35","15.36","17.1","19.2","19.3","19.5","19.6","22.1","22.2","22.3","22.5","22.6","22.40","22.42","26.1","26.2","26.3","26.5","26.6","26.40","26.42"],"设置视频地址":["5.11","5.12"],"设置时和":["5.11","5.12"],"设置视频画质地址":["5.13"],"获取视频时长":["5.16"],"下载当前视频帧的截图":["5.17"],"可选参数为截图名字":["5.17"],"获取当前视频帧的截图的":["5.18","5.19"],"base64":["5.18","15.18"],"地址":["5.18","5.19"],"blob":["5.19","15.19"],"设置和获取视频海报":["5.23"],"获取或设置播放器当前状态":["5.26"],"设置视频是否自适应尺寸":["5.27"],"获取播放器的尺寸和坐标信息":["5.28"],"top":["5.29","15.29"],"left":["5.29","15.29"],"right":["5.29","15.29"],"x":["5.29","15.29"],"y":["5.29","15.29"],"当容器只有宽度":["5.33"],"该属性可以自动计算出并设置视频的高度":["5.33"],"动态获取和设置":["5.34"],"开启隔空播放":["5.37"],"视频缓存的比例":["5.38"],"范围是":["5.38","5.40"],"已缓存的媒体时长":["5.39"],"视频播放的比例":["5.40"],"事件的代理函数":["5.41"],"实质上代理了":["5.41"],"的查询函数":["5.42"],"element":["5.43","9.2","9.3","9.5","9.6","15.5","15.43","19.2","19.3","19.5","19.6","22.1","26.1"],"快捷返回播放器的":["5.43"],"动态获取或设置":["5.44"],"css":["5.44"],"变量":["5.44","23.10"],"array":["5.45","9.3","11.1","15.45","19.3","22.29","22.30","22.31","22.32","22.33","22.34","22.35","26.29","26.30","26.31","26.32","26.33","26.34","26.35"],"动态设置画质列表":["5.45"],"object":["5.46","15.46","22.36","22.37","22.38","22.39","22.41","22.43","22.50","26.36","26.37","26.38","26.39","26.41","26.43","26.50"],"类型":["6.1","7.1","8.1","9.2","9.3","9.5","9.6","26.34","26.36","26.37"],"描述":["6.1","7.1","8.1","9.2","9.3","9.5","9.6","26.36"],"disable":["6.1","7.1","8.1","16.1","17.1","18.1"],"var":["7.2","9.4","17.2"],"new":["7.2","17.2","21.3"],"artplayer":["7.2","17.2","20.4","20.5","20.11","20.12","21.2","22.1","23.5","23.11","23.12","24.18","25.2","25.4","26.1"],"container":["7.2","15.33","17.2"],"须先打开设置面板":["9.1"],"然后自带四个内置项":["9.1"],"flip":["9.1"],"playbackrate":["9.1"],"按钮":["9.2"],"html":["9.2","9.3","9.5","9.6","19.2","19.3","19.5","19.6","20.3","23.3","26.39"],"元素的":["9.2","9.3","9.5","9.6"],"选择列表":["9.3"],"icon":["9.3","9.5","9.6","19.3","19.6"],"元素的图标":["9.3"],"selector":["9.3","19.3"],"元素列表":["9.3"],"onselect":["9.3"],"元素点击事件":["9.3"],"列表嵌套":["9.4"],"切换按钮":["9.5"],"范围滑块":["9.6"],"properties":["10.0","11.0","13.0","14.0","15.0"],"the":["10.0","10.1","10.2","10.3","10.4","10.6","10.7","10.8","10.9","10.10","10.11","10.12","10.13","10.14","10.15","10.16","10.17","11.2","11.3","11.4","11.5","11.6","11.7","11.8","11.9","11.10","11.11","11.12","12.0","12.1","12.2","12.3","12.4","12.6","12.7","12.8","12.9","12.10","12.12","12.13","12.14","12.15","12.16","12.17","12.18","12.19","12.20","12.21","12.23","12.24","12.25","12.26","12.27","12.28","12.32","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","12.42","12.43","12.46","12.58","13.0","13.2","13.3","13.4","13.5","13.6","13.7","13.8","13.9","13.10","13.11","13.12","13.13","13.14","13.15","13.16","13.17","13.21","13.22","13.23","13.24","13.25","13.26","13.27","13.28","13.29","13.30","13.34","14.0","15.1","15.2","15.4","15.5","15.11","15.12","15.13","15.16","15.18","15.19","15.22","15.28","15.33","15.38","15.39","15.40","15.45","17.1","19.2","19.3","19.5","19.6","20.6","20.9","20.11","20.13","21.0","21.1","22.1","22.2","22.3","22.4","22.5","22.6","22.7","22.11","22.22","22.33","22.34","22.36","22.40","22.41","22.47","22.51"],"player":["10.1","10.2","10.3","10.4","10.6","10.7","10.8","10.9","10.10","10.11","10.12","10.13","10.14","10.15","10.16","10.17","11.1","12.0","12.1","12.2","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.14","12.15","12.17","12.18","12.19","12.20","12.21","12.23","12.24","12.25","12.26","12.27","14.0","15.5","15.28","22.7"],"s":["10.1","10.4","10.6","10.7","10.8","10.9","10.10","10.11","10.12","10.13","10.14","10.15","10.16","10.17","12.17","12.18","13.34","14.0","15.5","15.28"],"options":["10.1","22.0"],"manages":["10.2","10.3","10.4","10.5","10.6","10.7","10.8","10.9","10.10","10.11","10.12","10.13","10.14","10.15","10.16","10.17"],"all":["10.2","10.3","10.5","11.1"],"elements":["10.2"],"of":["10.2","11.1","11.6","12.0","13.5","13.6","13.7","13.28","13.29","13.30","15.16","15.38","15.40","20.13","21.0"],"for":["10.3","10.5","12.41","13.8","13.9","13.17","13.26","15.41","19.5","19.6"],"it":["10.3","10.7","22.40"],"essentially":["10.3","15.41"],"proxies":["10.3"],"and":["10.3","10.11","12.0","13.34","14.0","15.23","20.0"],"using":["10.3"],"local":["10.4"],"property":["10.4","10.11","16.1","17.1","18.1","19.2","19.3","19.5","19.6"],"is":["10.4","10.6","10.8","10.9","10.10","10.14","10.16","12.20","20.13"],"used":["10.4","10.6","10.8","10.9","10.10","10.12","10.16","22.39","22.40","22.50"],"to":["10.4","10.6","10.8","10.9","10.10","10.12","10.16","13.1","13.3","13.31","13.32","13.33","13.34","15.12","16.1","17.1","19.1","21.0","22.10","22.15","22.16","22.17","22.19","22.22","22.27","22.33","22.39","22.40","22.47","22.50"],"cache":["10.4"],"method":["10.4","10.6","10.8","10.9","10.10","10.14","10.16"],"notifications":["10.7"],"only":["10.7","15.33","20.11"],"dynamically":["10.8","10.9","10.10","10.16","15.34","15.35","15.36","15.44","15.45"],"context":["10.10","12.37","22.31"],"menu":["10.10","16.0"],"functionality":["10.11","10.14","10.17"],"sets":["10.11","13.32","13.33","15.13","15.14","15.15","15.20","15.21","15.22","15.23","15.26","15.27","15.30","15.31","15.32"],"information":["10.12","22.34"],"panel":["10.12","10.16","12.39","19.0"],"commonly":["10.12"],"layer":["10.13","10.15"],"settings":["10.16","12.39","21.0"],"plugin":["10.17","14.0","24.18"],"with":["10.17","12.0","14.0"],"here":["11.0","15.0"],"returns":["11.1","11.2","11.3","11.4","11.5","11.6","11.7","11.8","11.9","11.10","11.11","11.12","13.2","15.43"],"an":["11.1","12.11","12.48"],"collection":["11.6"],"events":["12.0","14.0","15.41"],"are":["12.0","12.29","12.30","12.31","14.0","21.2"],"divided":["12.0"],"into":["12.0"],"two":["12.0"],"types":["12.0"],"native":["12.0"],"prefixed":["12.0"],"custom":["12.0","12.33","22.29","22.30","22.31","22.32","22.35","22.43"],"listening":["12.0"],"triggered":["12.1","12.2","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.17","12.18","12.19","12.20","12.21","12.22","12.23","12.24","12.25","12.26","12.27","12.28","12.29","12.30","12.31","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40"],"switches":["12.2"],"urls":["12.2"],"a":["12.5","12.22","12.33","14.0","15.17","15.33","15.41","15.42","20.13","21.3","21.4","22.4","22.26"],"occurs":["12.11"],"mouse":["12.12","12.13"],"enters":["12.12","12.21","12.23","12.24","12.25"],"state":["12.16"],"windowed":["12.22"],"subtitle":["12.28","22.25"],"offset":["12.28"],"changes":["12.28"],"before":["12.29","21.2"],"subtitles":["12.29","12.30","12.31","22.37"],"updated":["12.29","12.30"],"after":["12.30"],"loaded":["12.31"],"loader":["12.34"],"listens":["12.41"],"browser":["12.42"],"media":["12.46","15.39"],"has":["12.46","15.33"],"whether":["13.1","13.3","13.18","13.31","13.32","13.33","13.34","15.27","16.1","17.1","18.1","20.13","22.10","22.14","22.15","22.16","22.17","22.18","22.19","22.20","22.22","22.23","22.24","22.27","22.33","22.44","22.45","22.46","22.47","22.48","22.49"],"enable":["13.1","13.3","22.8","22.22"],"mode":["13.1"],"display":["13.4","22.17","22.33","22.34"],"duration":["13.4"],"throttle":["13.8","13.9"],"boundary":["13.10"],"tolerance":["13.10"],"distance":["13.10"],"maximum":["13.11","13.14"],"record":["13.11","13.12"],"minimum":["13.12"],"delay":["13.13","13.15","13.17"],"auto":["13.16"],"on":["13.18","13.19","13.20","13.21","13.23","13.24","13.25","22.34","22.36","22.41"],"desktop":["13.18"],"mobile":["13.21","13.23","13.24","13.25","20.13"],"refresh":["13.22"],"interval":["13.22"],"size":["13.26","13.27"],"built":["13.28","13.29","13.30"],"list":["13.28","13.29","13.30","15.45","19.3","19.4"],"mount":["13.31"],"attribute":["13.34"],"call":["13.34"],"plugins":["14.0"],"once":["14.0"],"you":["14.0","19.1","20.9"],"familiar":["14.0"],"methods":["14.0"],"becomes":["14.0"],"very":["14.0"],"straightforward":["14.0"],"task":["14.0"],"can":["14.0","20.9"],"load":["14.0"],"during":["14.0"],"instantiation":["14.0"],"removes":["15.5"],"rewind":["15.8"],"similar":["15.12"],"or":["15.15","15.20","15.22","15.26","15.44"],"gets":["15.15","15.16","15.18","15.19","15.20","15.22","15.23","15.25","15.26","15.28"],"downloads":["15.17"],"defined":["15.33"],"this":["15.33","22.4","22.43"],"initiate":["15.37"],"proportion":["15.38","15.40"],"buffered":["15.39"],"proxying":["15.41"],"quickly":["15.43"],"description":["16.1","17.1","18.1","19.2","19.3","19.5","19.6"],"control":["17.1","22.32"],"first":["19.1"],"need":["19.1"],"open":["19.1"],"button":["19.2","19.5"],"selection":["19.3","22.33"],"nested":["19.4"],"range":["19.6"],"slider":["19.6"],"group":["20.1","20.2","20.3","20.4","20.5","23.1","23.2","23.3","23.4","23.5","24.2","24.3"],"bash":["20.1","20.2","23.1","23.2","24.2","24.3"],"index":["20.3","23.3","24.18"],"jsx":["20.5","20.8","23.5","23.8"],"import":["20.5","21.4","23.5","23.9","25.4"],"from":["20.5","23.5","25.4"],"useeffect":["20.5","23.5"],"useref":["20.5"],"also":["20.9"],"use":["20.9","22.19","22.27","22.47"],"sometimes":["20.10"],"your":["20.10"],"files":["20.10","21.2"],"may":["20.10"],"lose":["20.10"],"typescript":["20.10","23.10"],"hints":["20.10"],"browsers":["20.11"],"production":["20.11"],"build":["20.11"],"supports":["20.11"],"latest":["20.11"],"major":["20.11"],"module":["20.12","23.12"],"tip":["20.12","23.12"],"esm":["20.12","23.12"],"demo":["20.12","23.12"],"https":["20.12","23.12"],"org":["20.12","23.12"],"useragent":["20.13","23.13"],"currently":["20.13"],"detection":["20.13"],"device":["20.13"],"danger":["21.0","25.0"],"due":["21.0"],"increasing":["21.0"],"languages":["21.1","21.2"],"language":["21.2","21.3","21.4","22.42","26.42"],"bundling":["21.2"],"located":["21.2"],"at":["21.2"],"i18n":["21.2","25.2"],"zhtw":["21.4","25.4"],"where":["22.1"],"source":["22.2"],"unique":["22.3"],"undefined":["22.4","22.51","26.4","26.51"],"constructor":["22.4"],"accepts":["22.4"],"as":["22.4"],"second":["22.4"],"f00":["22.6","26.6"],"false":["22.8","22.9","22.10","22.11","22.12","22.13","22.14","22.15","22.16","22.17","22.18","22.20","22.23","22.24","22.25","22.26","22.27","22.38","22.44","22.46","22.47","22.48","22.49","26.10","26.11","26.12","26.14","26.15","26.16","26.17","26.25","26.27","26.38","26.44","26.47","26.49"],"by":["22.11"],"automatically":["22.12"],"true":["22.19","22.21","22.22","22.28","22.45","26.19","26.22"],"hotkeys":["22.19"],"if":["22.21"],"blur":["22.22"],"ssr":["22.27","26.27"],"server":["22.27"],"initialize":["22.29","22.30","22.31","22.32","22.35"],"panels":["22.30"],"bottom":["22.32"],"preview":["22.36"],"bar":["22.36"],"supported":["22.37"],"formats":["22.37"],"vtt":["22.37","26.37"],"srt":["22.37","26.37"],"ass":["22.37","26.37"],"controls":["22.38","26.38"],"preload":["22.38"],"metadata":["22.38"],"replace":["22.39"],"specify":["22.40"],"format":["22.40"],"needs":["22.40"],"be":["22.40","22.43"],"matches":["22.41"],"based":["22.41"],"navigator":["22.42","26.42"],"configuration":["22.43"],"will":["22.43"],"deeply":["22.43"],"merged":["22.43"],"automatic":["22.47"],"导入":["23.6"],"你也可以使用选项的类型":["23.9"],"ts":["23.9"],"有时你的":["23.10"],"文件会丢失":["23.10"],"的类型提示":["23.10"],"这时候你可以手动导入类型":["23.10"],"生产构建的":["23.11"],"只兼容最新一个主版本的":["23.11"],"chrome":["23.11"],"last":["23.11"],"目前对于是否移动设备的判断并不准确":["23.13"],"有时候希望通过改变":["23.13"],"来调整播放器的ui":["23.13"],"查看完整演示":["24.1"],"jsdelivr":["24.3"],"每一个弹幕是一个对象":["24.4"],"多个弹幕组成的数组就是弹幕库":["24.4"],"通常只需要":["24.4"],"text":["24.4"],"只有":["24.5"],"danmuku":["24.5","24.18"],"是必须的参数":["24.5"],"其余都是非必填":["24.5"],"弹幕数据":["24.5"],"speed":["24.5"],"弹幕持续时间":["24.5"],"范围在":["24.5"],"margin":["24.5"],"来自用户输入的弹幕":["24.6"],"beforeemit":["24.6"],"filter":["24.6"],"beforevisible":["24.6"],"artplayerplugindanmuku":["24.6"],"visible":["24.6"],"来自服务器的弹幕":["24.6"],"xml":["24.8"],"弹幕":["24.8"],"文件":["24.8"],"data":["24.9","24.11","24.12","24.13","24.14","24.18"],"通过方法":["24.10","24.12","24.13"],"进行隐藏或者显示弹幕":["24.10"],"通过属性":["24.11"],"判断当前弹幕是隐藏或者显示":["24.11"],"发送一条实时弹幕":["24.12"],"libs":["24.12","24.13","24.14","24.18"],"实时改变弹幕配置":["24.13"],"uncompiled":["24.13","24.14","24.18"],"通过":["24.14"],"方法可以重载弹幕库":["24.14"],"或者切换新弹幕库":["24.14"],"或者追加新的弹幕库":["24.14"],"用于清空当前显示的弹幕":["24.15"],"在初始化弹幕插件的时候":["24.16"],"是可以指定弹幕发射器的挂载位置的":["24.16"],"默认是挂载在控制栏的中部":["24.16"],"你也可以把它挂载在播放器以外的地方":["24.16"],"当播放器全屏的时候":["24.16"],"发射器会自动回到控制栏的中部":["24.16"],"假如你挂载的地方是亮色的话":["24.16"],"建议把":["24.16"],"用于获取当前弹幕配置":["24.17"],"鉴于捆绑的多国语言越来越多":["25.0"],"从":["25.0"],"默认语言有":["25.1"],"en":["25.1"],"zh":["25.1"],"打包前的语言文件存放于":["25.2"],"欢迎来添加你的语言":["25.2"],"打包后的语言文件存放于":["25.2"],"dist":["25.2"],"播放器挂载的":["26.1"],"视频源地址":["26.2"],"播放器的唯一标识":["26.3"],"构造函数接受一个函数作为第二个参数":["26.4"],"播放器初始化成功且视频可以播放时触发":["26.4"],"ready":["26.4"],"视频的海报":["26.5"],"是否自动播放":["26.10"],"是否使用快捷键":["26.19"],"是否开启播放器":["26.22"],"字幕时间偏移":["26.25"],"是否使用":["26.27"],"初始化自定义的":["26.29","26.30","26.31","26.35"],"层":["26.29"],"设置面板":["26.30"],"右键菜单":["26.31"],"初始化自定义的底部":["26.32"],"控制栏":["26.32"],"是否在底部控制栏里显示":["26.33"],"画质选择":["26.33"],"列表":["26.33"],"在进度条上显示":["26.34"],"高亮信息":["26.34"],"插件":["26.35"],"在进度条上设置":["26.36"],"预览图":["26.36"],"设置视频的字幕":["26.37"],"支持字幕格式":["26.37"],"用于替换默认图标":["26.39"],"支持":["26.39"],"用于指明视频的格式":["26.40"],"需要配合":["26.40"],"customtype":["26.40"],"通过视频的":["26.41"],"自定义":["26.43"],"配置":["26.43"],"该配置会和自带的":["26.43"],"进行深度合并":["26.43"],"新增你的语言":["26.43"],"是否使用自动":["26.47"],"回放功能":["26.47"],"用于改变内置的css变量":["26.50"]},{"0":["3.25","3.26","5.9","13.28","15.38","15.40","21.0","24.5","25.0"],"1":["3.26","3.28","5.9","5.38","5.40","13.28","15.38","15.40","20.11","21.0","23.10","25.0"],"2":["3.28","20.8","20.12","23.8","23.12","23.13"],"3":["3.23","13.29","20.9","22.2","23.10","26.2"],"4":["6.2","13.29","16.2","21.3","22.47","23.13","26.43"],"5":["3.12","3.14","3.25","3.27","13.28","20.12","21.0","22.29","22.30","23.12","23.13","25.0","26.29","26.30"],"6":["2.0","6.3","7.3","12.0","16.3","17.3","20.12","23.12"],"7":["26.7"],"9":["3.29","9.7","19.7","21.3","26.43"],"10":["2.2","3.11","7.2","17.2"],"11":["2.28"],"13":["6.2","6.3","16.2","16.3"],"14":["9.7","19.7"],"15":["14.0"],"16":["3.29","13.29"],"19":["5.45","15.45"],"21":["6.4","6.5","7.3","7.4","8.4","16.4","16.5","17.3","17.4","18.4"],"22":["8.2","8.3","9.8","18.2","18.3","19.8"],"23":["22.29","26.29"],"24":["6.5","16.5"],"25":["3.28","24.5"],"29":["5.45","8.5","18.5"],"34":["22.30","26.30"],"35":["3.7"],"40":["7.5","17.5"],"50":["3.10"],"75":["13.28"],"200":["3.6","3.8","3.9","3.21"],"300":["3.17"],"1000":["3.15","3.22","3.24"],"2000":["3.4"],"3000":["3.13","3.16"],"code":["0.1","0.2","0.4","0.5","0.6","0.7","0.13","0.14","0.15","0.16","0.17","1.1","1.6","2.1","2.3","2.4","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.17","2.18","2.19","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.27","2.29","2.30","2.31","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","3.3","3.5","3.6","3.7","3.17","3.29","3.30","5.1","5.2","5.3","5.12","5.14","5.16","5.17","5.20","5.21","5.22","5.23","5.25","5.27","5.28","5.31","5.32","5.33","5.34","5.35","5.36","5.37","5.44","5.45","5.46","9.3","10.1","10.2","10.5","12.0","12.20","12.29","12.30","12.31","15.2","15.12","15.16","15.37","15.44","15.45","19.3","22.1","22.7","22.10","22.19","22.30","22.31","22.32","22.35","22.43","22.47","24.10","24.16","25.2","26.1","26.4","26.10","26.19","26.30","26.31","26.32","26.35","26.39","26.43","26.47","26.50"],"js":["0.2","0.4","0.14","0.17","2.2","2.18","2.22","2.24","2.28","2.29","2.30","2.31","5.45","6.2","6.3","6.4","7.4","8.4","9.3","9.6","9.7","10.2","12.0","14.0","15.16","15.45","16.2","16.3","16.4","17.4","18.4","19.7","21.3","22.2","22.10","22.19","22.29","22.30","22.47","24.4","24.6","24.11","24.12","24.13","24.14","25.1","26.2","26.4","26.29","26.30","26.32","26.43"],"var":["0.2","0.4","2.0","4.0","5.45","6.2","6.3","6.4","6.5","7.3","7.4","7.5","8.2","8.3","8.4","8.5","9.3","9.7","9.8","9.9","10.2","12.0","14.0","16.2","16.3","16.4","16.5","17.3","17.4","17.5","18.2","18.3","18.4","18.5","19.4","19.7","19.8","19.9","21.3","22.2","22.29","22.30","24.13","24.14","24.18","25.3","25.4","26.2","26.29","26.30"],"proxy":["0.3"],"方法用于代理":["0.3"],"hover":["0.3"],"方法用于代理自定义的":["0.3"],"div":["0.3","0.6","0.8","0.9","0.10","0.13","0.15","0.16","1.2","1.3","1.4","1.5","1.7","1.8","1.9","1.10","1.11","1.12","2.41","3.1","3.2","3.4","3.5","3.6","3.7","3.8","3.9","3.10","3.11","3.12","3.13","3.14","3.15","3.16","3.17","3.18","3.19","3.20","3.21","3.22","3.23","3.24","3.25","3.26","3.27","3.28","3.29","3.30","3.32","3.33","5.6","5.7","5.8","5.9","5.10","5.11","5.12","5.13","5.14","5.15","5.17","5.18","5.19","5.20","5.21","5.22","5.23","5.24","5.25","5.27","5.30","5.31","5.32","5.34","5.35","5.36","5.39","5.41","5.43","5.44","5.46","5.47","9.1","9.3","10.5","12.0","12.2","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.12","12.13","12.14","12.15","12.16","12.17","12.18","12.20","12.22","12.24","12.26","12.27","12.28","12.29","12.30","12.31","12.34","12.39","12.40","12.41","15.1","15.2","15.3","15.12","15.16","15.20","15.22","15.28","15.33","15.37","15.44","15.45","15.46","15.47","19.3","20.4","22.1","22.7","22.10","22.19","22.31","22.32","22.35","22.39","22.43","22.47","23.4","24.8","24.16","26.1","26.3","26.4","26.5","26.7","26.8","26.9","26.10","26.13","26.17","26.19","26.21","26.26","26.35","26.39","26.43","26.45","26.46","26.47","26.50"],"classname":["0.4","0.5","0.6","0.7","0.8","0.9","0.10","0.13","0.14","0.15","0.16","1.1","1.2","1.3","1.4","1.5","1.6","1.7","1.8","1.9","1.10","1.12","2.41","3.1","3.2","3.3","3.4","3.5","3.6","3.7","3.8","3.9","3.10","3.11","3.12","3.13","3.14","3.16","3.17","3.18","3.19","3.20","3.22","3.23","3.26","3.27","3.29","3.30","3.32","3.33","5.1","5.2","5.3","5.6","5.7","5.8","5.9","5.10","5.11","5.12","5.13","5.14","5.16","5.17","5.18","5.19","5.20","5.21","5.22","5.23","5.24","5.25","5.27","5.28","5.31","5.32","5.33","5.34","5.35","5.36","5.37","5.43","5.44","5.46","5.47","9.1","9.3","10.1","10.5","12.0","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.15","12.17","12.18","12.20","12.22","12.24","12.26","12.28","12.29","12.30","12.31","12.40","15.1","15.2","15.3","15.12","15.16","15.20","15.22","15.28","15.37","15.44","15.45","15.46","19.3","22.1","22.7","22.10","22.19","22.31","22.32","22.35","22.39","22.43","22.47","24.8","24.10","24.16","26.1","26.3","26.4","26.5","26.7","26.9","26.10","26.13","26.17","26.19","26.31","26.32","26.35","26.39","26.43","26.45","26.46","26.47","26.50"],"run":["0.4","0.5","0.6","0.7","0.10","0.13","0.14","0.15","0.16","0.17","1.1","1.6","2.1","2.3","2.4","2.5","2.7","2.8","2.9","2.10","2.13","2.14","2.15","2.16","2.19","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.40","2.41","3.3","3.5","3.6","3.7","3.8","3.9","3.10","3.11","3.17","3.22","3.29","3.30","3.32","5.1","5.2","5.3","5.8","5.10","5.12","5.14","5.16","5.17","5.18","5.19","5.20","5.21","5.22","5.23","5.25","5.27","5.28","5.31","5.32","5.33","5.34","5.35","5.36","5.37","5.44","5.46","5.47","9.1","9.3","10.1","10.2","10.5","12.0","12.6","12.7","12.8","12.10","12.20","12.22","12.28","12.29","12.30","12.31","15.1","15.2","15.3","15.12","15.16","15.20","15.28","15.37","15.44","15.45","19.3","22.1","22.7","22.10","22.19","22.30","22.31","22.32","22.35","22.43","22.47","24.8","24.10","24.16","26.1","26.4","26.5","26.7","26.10","26.19","26.31","26.32","26.35","26.39","26.43","26.47","26.50"],"art":["0.4","0.12","2.0","5.11","5.13","5.45","6.2","6.3","6.4","6.5","7.3","7.4","7.5","8.2","8.3","8.5","9.3","9.4","9.7","9.8","9.9","10.2","12.0","14.0","15.11","15.13","16.2","16.3","16.4","16.5","17.3","17.4","17.5","18.2","18.3","18.5","19.4","19.7","19.8","19.9","22.2","23.10","24.14","24.18","25.3","25.4","26.2"],"new":["0.4","2.0","4.0","6.2","6.3","6.4","6.5","7.3","7.4","7.5","8.3","9.3","9.4","9.7","9.8","9.9","10.2","12.0","14.0","16.2","16.3","16.4","16.5","17.3","17.4","17.5","18.3","19.4","19.7","19.8","19.9","21.2","22.2","24.14","24.18","25.3","26.2"],"artplayer":["0.4","2.0","4.0","5.5","6.2","6.3","6.4","6.5","7.3","7.4","7.5","9.3","9.4","9.8","9.9","12.0","14.0","16.2","16.3","16.4","16.5","17.3","17.4","17.5","19.4","19.8","19.9","20.3","20.6","21.4","22.2","23.3","23.4","23.6","23.9","23.10","24.6","24.7","24.9","24.10","24.11","24.12","24.13","24.14","24.15","24.17","26.2"],"container":["0.4","2.0","4.0","6.4","6.5","7.3","7.5","9.3","9.4","9.8","9.9","12.0","14.0","16.4","16.5","17.3","17.5","19.4","19.8","19.9","20.4","20.5","22.2","22.11","23.5","24.18","26.11"],"方法用于更新":["0.6"],"对象":["0.6"],"方法用于动态更新层":["0.8"],"show":["0.8","0.9","0.10","0.12","0.16","10.7"],"属性用于设置是否显示全部层":["0.8"],"toggle":["0.8","0.9","0.10","0.16","22.18"],"方法用于切换是否显示全部层":["0.8"],"方法用于动态更新控制器":["0.9"],"属性用于设置是否显示全部控制器":["0.9"],"方法用于切换是否显示全部控制器":["0.9"],"属性用于设置是否显示全部菜单":["0.10"],"方法用于切换是否显示全部菜单":["0.10"],"方法设置当前字幕地址和选项":["0.11"],"texttrack":["0.11"],"获取当前字幕轨":["0.11"],"activecues":["0.11"],"获取当前活跃的字幕列表":["0.11"],"cues":["0.11"],"通过":["0.12"],"控制面板的显示与隐藏":["0.12"],"触发的事件名为":["0.12"],"属性用于切换是否显示加载层":["0.13"],"属性用于切换是否显示遮罩层":["0.15"],"属性用于设置是否显示全部设置项":["0.16"],"方法用于切换是否显示全部设置项":["0.16"],"字符串":["1.11"],"app":["2.0","4.0","7.2","7.5","9.3","9.4","9.8","9.9","12.0","14.0","17.2","17.5","19.4","19.8","19.9","22.2","24.18"],"url":["2.0","4.0","5.11","7.2","7.5","9.4","9.9","12.0","14.0","15.11","15.13","17.2","17.5","19.4","19.9","22.36","22.37","24.18","26.36","26.37"],"assets":["2.0","4.0","7.2","8.2","8.3","8.4","8.5","9.4","9.9","12.0","14.0","17.2","18.2","18.3","18.4","18.5","19.4","19.9","22.2","22.29","24.18","26.29"],"sample":["2.0","4.0","7.2","8.2","8.3","8.4","8.5","9.4","9.9","12.0","14.0","17.2","18.2","18.3","18.4","18.5","19.4","19.9","22.29","24.18","26.29"],"mp4":["2.0","4.0","7.2","14.0","17.2","24.18"],"on":["2.0","4.0","12.16","19.6","22.21","22.45"],"canplay":["2.0"],"事件":["2.41"],"浏览器可以播放媒体文件了":["2.42"],"浏览器估计它可以在不停止内容缓冲的情况下播放媒体直到结束":["2.43"],"offlineaudiocontext":["2.44"],"duration":["2.45","13.12","13.13","15.39"],"媒体内容变为空":["2.46"],"例如":["2.46"],"视频停止播放":["2.47"],"获取媒体数据时出错":["2.48"],"media":["2.49","12.59","13.34"],"已加载元数据":["2.50"],"播放已暂停":["2.51"],"播放已开始":["2.52"],"由于缺乏数据而暂停或延迟后":["2.53"],"在浏览器加载资源时周期性触发":["2.54"],"播放速率发生变化":["2.55"],"跳帧":["2.56","2.57"],"用户代理":["2.58"],"媒体数据加载已暂停":["2.59"],"currenttime":["2.60"],"音量发生变化":["2.61"],"由于暂时缺少数据":["2.62"],"可以打印出视频全部的内置事件":["3.1"],"默认关闭":["3.1"],"默认为":["3.4","3.8","3.9","3.10","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.22","3.23","3.24","3.25","3.27","3.31","3.34","5.4"],"单位为毫秒":["3.15","3.21","3.24"],"true":["3.18","3.19","3.31","3.32","3.34","5.4","13.34","26.21","26.28","26.45"],"false":["3.20","3.33","13.33","26.8","26.9","26.13","26.18","26.20","26.23","26.24","26.26","26.46","26.48"],"是否把播放器挂在在":["3.31"],"元素下":["3.31"],"目前主要用于进度条的平滑效果":["3.33"],"属性并调用":["3.34"],"load":["3.34","5.5","13.34","15.5"],"以主动释放媒体资源":["3.34"],"开启后可以在单页应用或频繁创建":["3.34"],"销毁播放器的场景下":["3.34"],"dosomething":["4.0","14.0"],"video":["4.0","5.34","5.38","5.40","7.2","9.4","9.9","10.12","14.0","15.1","15.2","15.7","15.8","15.9","15.10","15.14","15.15","15.17","15.23","15.25","15.27","15.33","15.34","15.35","17.2","19.4","19.9","22.4","22.14","22.15","22.16","24.18","26.41"],"plugins":["4.0"],"ready":["4.0","12.2","12.53","22.4"],"可以在实例化之后再加载插件的函数":["4.0"],"销毁播放器":["5.4"],"接受一个参数表示是否销毁后同时移除播放器的":["5.4"],"html":["5.4","20.12","22.39","23.12","26.27","26.33"],"常用于在单页应用中手动释放媒体资源或重新初始化视频标签":["5.5"],"注意":["5.5"],"全局配置":["5.5"],"remove":["5.5","10.8","10.9","10.10","10.14","10.16"],"视频时间跳转":["5.6"],"单位秒":["5.6","5.7","5.8","26.34"],"视频时间快进":["5.7"],"视频时间快退":["5.8"],"设置和获取视频音量":["5.9"],"范围在":["5.9","26.25"],"string":["5.10","6.1","7.1","8.1","11.11","16.1","18.1","22.36","22.37","26.33","26.34","26.36","26.37"],"设置和获取视频地址":["5.10"],"类似":["5.11","5.12","5.13","5.15","5.42"],"但会执行一些优化操作":["5.11","5.12"],"switchurl":["5.13","15.13"],"但会带上之前的播放进度":["5.13"],"设置和获取视频是否静音":["5.14"],"设置和获取视频当前时间":["5.15"],"设置时间时和":["5.15"],"seek":["5.15"],"但它不会触发额外的事件":["5.15"],"返回的是一个":["5.18","5.19"],"promise":["5.18","5.19"],"设置和获取播放器窗口全屏":["5.20"],"设置和获取播放器网页全屏":["5.21"],"设置和获取播放器画中画模式":["5.22"],"只有在视频播放前才能看到海报效果":["5.23"],"boolean":["5.24","6.1","8.1","9.5","19.5","26.33"],"设置和获取播放器迷你模式":["5.24"],"获取视频是否正在播放中":["5.25"],"支持":["5.26","5.30"],"standard":["5.26","15.26"],"正常":["5.26"],"mini":["5.26","22.12","22.26"],"迷你窗":["5.26"],"pip":["5.26"],"type":["5.29","11.10","20.9","23.9","23.10"],"getter":["5.29"],"这些属性是对":["5.29"],"rect":["5.29","15.29"],"的快捷访问":["5.29"],"设置和获取播放器翻转":["5.30"],"normal":["5.30","13.30"],"horizontal":["5.30","13.30"],"vertical":["5.30"],"设置和获取播放器播放速度":["5.31"],"设置和获取播放器长宽比":["5.32"],"元素的属性":["5.34"],"动态获取和设置视频类型":["5.35"],"动态获取和设置播放器主题颜色":["5.36"],"常配合":["5.38","5.40"],"timeupdate":["5.38","5.40"],"事件使用":["5.38","5.40"],"通常与":["5.39"],"loaded":["5.39"],"一起使用":["5.39","26.40"],"用于展示缓冲进度细节":["5.39"],"和":["5.41","26.6","26.14","26.15","26.16"],"removeeventlistener":["5.41","15.41"],"当使用":["5.41"],"来处理事件":["5.41"],"播放器销毁时也会自动销毁该事件":["5.41"],"document":["5.42","12.41","15.42"],"queryselector":["5.42","15.42"],"但被查询的对象局限于当前播放器内":["5.42"],"可以避免同类名的错误":["5.42"],"元素":["5.43"],"动态设置缩略图":["5.46"],"number":["5.47","9.2","9.3","17.1","19.3","22.34","22.36","26.34","26.36"],"动态设置字幕偏移":["5.47"],"是否禁用组件":["6.1","7.1","8.1"],"name":["6.1","7.1","7.2","8.1","14.0","16.1","17.2","18.1","22.37","26.37"],"组件唯一名称":["7.1"],"用于标记类名":["7.1"],"index":["7.1","7.2","17.1","17.2","24.6","24.9","24.11","24.12","24.13","24.14"],"controls":["7.2","17.2"],"your":["7.2","17.2","22.43"],"button":["7.2","17.2","22.18","22.44","22.49"],"img":["8.2","8.3","8.4","8.5","18.2","18.3","18.4","18.5","22.29","26.29"],"layer":["8.2","8.3","8.4","8.5","10.8","12.35","12.36","18.2","18.3","18.4","18.5"],"png":["8.2","8.3","8.5","18.2","18.3","18.5"],"aspectratio":["9.1"],"subtitleoffset":["9.1"],"icon":["9.2","19.2","19.5"],"元素的图标":["9.2","9.5","9.6"],"onclick":["9.2","19.2"],"function":["9.2","9.5","9.6","11.9","19.2","19.3","19.6","20.5","22.14","22.15","22.16","22.17","23.5","24.6"],"元素点击事件":["9.2"],"width":["9.2","19.3"],"列表宽度":["9.3"],"tooltip":["9.3","9.5","9.6","19.3"],"提示文本":["9.3","9.6"],"switch":["9.5","19.5"],"按钮默认状态":["9.5"],"onswitch":["9.5"],"按钮切换事件":["9.5"],"range":["9.6","15.9"],"array":["9.6","19.6"],"默认状态数组":["9.6"],"onrange":["9.6","19.6"],"完成时触发的事件":["9.6"],"onchange":["9.6"],"变化时触发的事件":["9.6"],"here":["10.0","13.0"],"following":["10.3"],"methods":["10.3"],"to":["10.3","10.13","10.14","10.15","12.0","12.2","13.0","15.5","15.6","15.11","15.13","15.29","15.41","15.42","18.1","20.13","22.4","22.9","22.13","22.14","22.18","22.20","22.23","22.24","22.28","22.38","22.41","22.44","22.45","22.46","22.48","22.49"],"handle":["10.3","15.41"],"will":["10.3","22.8","22.38"],"also":["10.3"],"be":["10.3","11.1"],"automatically":["10.3","12.18","12.19","15.33","15.41","22.38"],"destroyed":["10.3","12.6"],"is":["10.3","10.13","10.15","12.1","12.3","12.5","12.6","12.9","12.10","12.11","12.18","12.19","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.53","13.3","13.5","13.28","13.29","13.30","13.33","13.34","15.14","15.23","15.25","15.41","22.1","22.4","22.40"],"a":["10.4","10.7","10.8","10.9","12.26","12.27","12.56","12.57","13.6","13.7","13.15","15.4","15.6","15.18","15.19","22.44","22.46","22.51"],"get":["10.4","15.9","15.10","15.35","15.36"],"retrieve":["10.4","10.6"],"del":["10.4"],"the":["10.5","12.11","12.44","12.49","12.55","12.60","12.61","13.31","13.32","15.7","15.8","15.9","15.10","15.14","15.15","15.17","15.20","15.21","15.23","15.24","15.25","15.26","15.27","15.30","15.31","15.32","15.34","15.35","15.36","15.41","15.42","15.43","16.1","18.1","19.1","20.10","22.14","22.15","22.16","22.17","22.18","22.20","22.21","22.23","22.24","22.42","22.43","22.48","22.49","22.50"],"player":["10.5","11.6","12.11","12.12","12.13","12.28","13.2","13.31","13.32","13.34","15.4","15.20","15.21","15.22","15.24","15.26","15.30","15.31","15.32","15.36","15.43","20.5","22.1","22.3","22.4","22.6","22.11","22.12","22.22","22.23","22.24","22.48","23.5"],"an":["10.6","15.17"],"value":["10.6"],"update":["10.6","10.10","10.16"],"has":["10.7","12.47","12.62"],"property":["10.7","10.13","10.15","11.1","15.33","22.33","22.34","22.36","22.37"],"for":["10.7","10.17","11.6","11.7","12.1","12.46","13.10","13.11","13.12","13.13","13.15","13.16","13.21","13.22","13.23","13.24","13.25","13.27","17.1","20.9","20.11","21.2","22.3","22.22"],"displaying":["10.7"],"control":["10.9","22.17","22.33"],"items":["10.10","10.16"],"returns":["10.11"],"current":["10.11","10.12","15.5","15.15","15.17","15.18","15.19","15.26"],"style":["10.11"],"method":["10.11","10.17"],"of":["10.11","10.12","11.2","11.3","11.4","11.8","11.12","13.4","13.14","15.15","15.17","15.18","15.19","15.34","17.1","19.3","19.5","20.11","22.40"],"status":["10.12"],"and":["10.12","12.2","15.3","15.5","15.9","15.10","15.24","15.28","15.30","15.31","15.32","15.33","15.34","15.35","15.36","15.41","20.12","22.4","22.39","22.41"],"such":["10.12","20.10","22.22"],"as":["10.12","22.22"],"used":["10.13","10.14","10.15","15.5","15.39","17.1"],"set":["10.13","10.15","12.18","12.19","15.10","15.33","15.34","15.35","15.36","15.46","15.47"],"whether":["10.13","10.15","13.19","13.20","15.4","15.14","15.25","22.9","22.13","22.28"],"display":["10.13","10.15","22.14","22.15","22.16","22.18","22.20","22.23","22.24","22.42","22.44","22.49"],"hotkeys":["10.14"],"only":["10.17","15.23","22.5","22.26"],"one":["10.17"],"add":["10.17","22.43","22.46"],"dynamically":["10.17","15.46","15.47"],"adding":["10.17"],"this":["11.1","22.8"],"can":["11.1","12.42","13.1","15.33","20.10","20.11","22.51"],"useful":["11.1","22.27"],"information":["11.2","15.28"],"environment":["11.3"],"variables":["11.3","15.44","22.50"],"timestamp":["11.4"],"default":["11.5","11.12","13.3","13.8","13.9","13.18","13.28","13.29","13.30","13.32","13.33","13.34","19.5","19.6","20.5","23.5"],"configuration":["11.5"],"utility":["11.6"],"functions":["11.6"],"validation":["11.7","11.9"],"schema":["11.7"],"constructor":["11.8"],"detection":["11.10"],"required":["11.11"],"options":["11.12","13.30","20.9"],"first":["12.1"],"becomes":["12.2"],"play":["12.2"],"paused":["12.3"],"starts":["12.4"],"playing":["12.4","12.42"],"pressed":["12.5"],"gains":["12.7"],"loses":["12.8"],"focus":["12.8"],"double":["12.9","13.17","13.18","13.19"],"clicked":["12.9","12.10"],"while":["12.11","12.48"],"loading":["12.11"],"or":["12.12","12.21","12.23","12.24","12.25","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","15.14","15.21"],"leaves":["12.12"],"moves":["12.13"],"over":["12.13"],"s":["12.14","12.19","15.20","15.21","15.22","15.26","15.30","15.31","15.32","15.33","15.36","15.43","22.6","22.7","22.11","22.41"],"dimensions":["12.14","15.28","22.11"],"change":["12.14"],"enters":["12.15","22.12"],"viewport":["12.15"],"changes":["12.16","12.17","12.40"],"mobile":["12.16"],"devices":["12.16"],"aspect":["12.17","15.32","22.16"],"ratio":["12.17","22.16"],"height":["12.18","15.33"],"size":["12.19","15.27"],"flipped":["12.20"],"exits":["12.21","12.23","12.24","12.25"],"windowed":["12.21"],"mode":["12.21","12.23","12.24","15.22","22.8","22.12","22.27","22.28","24.5"],"error":["12.22"],"occurs":["12.22"],"web":["12.23","15.21","22.24"],"fullscreen":["12.23","22.48"],"picture":["12.25","15.22","22.20"],"in":["12.25","12.28","13.4","13.5","13.6","13.7","13.8","13.9","13.10","13.17","13.22","15.6","15.8","15.22","15.39","22.17","22.20","22.33","22.38","22.43","22.48","22.50"],"takes":["12.26"],"performs":["12.27","15.12"],"time":["12.27","15.6","15.7","15.8","15.15","22.34","26.34"],"panel":["12.32","13.5","13.6","13.7","13.22","19.1"],"shown":["12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39"],"hidden":["12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39"],"menu":["12.37","13.3"],"bar":["12.38","22.17","22.26","22.32","22.33","22.34"],"state":["12.40","15.20","15.30","19.5","19.6"],"event":["12.41","13.8","13.9","13.10","13.17","15.41","19.3","19.6"],"from":["12.41","15.38","15.40","20.12","21.0","21.4","22.25","23.9","25.2"],"start":["12.42","22.9"],"browser":["12.43"],"estimates":["12.43"],"triggered":["12.45","19.6","22.4"],"become":["12.46"],"empty":["12.46"],"example":["12.46"],"playback":["12.47","12.51","12.52","12.62","15.15","15.31","22.13","22.15"],"occurred":["12.48"],"metadata":["12.50","26.38"],"fired":["12.54"],"user":["12.58"],"agent":["12.58"],"refer":["13.0"],"which":["13.1","22.5"],"print":["13.1","13.32"],"all":["13.1"],"built":["13.1","22.43","22.50"],"context":["13.3"],"notification":["13.4"],"messages":["13.4"],"milliseconds":["13.4","13.8","13.9","13.17","13.22"],"settings":["13.5","13.6","13.7","19.1"],"pixels":["13.5","13.10"],"view":["13.10"],"count":["13.11"],"feature":["13.12","13.13","22.47"],"automatic":["13.14","13.15"],"reconnection":["13.14","13.15"],"attempts":["13.14"],"when":["13.14","13.15","15.11","15.12","15.41","22.4","22.5","22.12","22.22"],"connection":["13.15"],"delay":["13.16","13.21","13.24"],"bottom":["13.16","22.17","22.33"],"click":["13.17","13.18","13.19","19.2","19.3"],"toggles":["13.18","13.19","13.20"],"single":["13.20"],"rotation":["13.21"],"speed":["13.23","13.25","22.15"],"multiplier":["13.23","13.25"],"long":["13.23","13.24","22.46"],"press":["13.23","13.24","22.46"],"left":["13.25"],"right":["13.25"],"adjustment":["13.26"],"via":["13.26","13.27"],"keyboard":["13.26","13.27"],"shortcuts":["13.26","13.27"],"seeking":["13.27"],"rates":["13.28"],"ratios":["13.29"],"under":["13.31"],"element":["13.31","15.34"],"requestanimationframe":["13.33"],"currently":["13.33","15.25","22.3","22.6","22.42"],"it":["13.33","19.1","22.38"],"actively":["13.34"],"release":["13.34","15.5"],"resources":["13.34","21.0"],"destroying":["13.34"],"myplugin":["14.0"],"console":["14.0"],"info":["14.0"],"return":["14.0","22.51"],"something":["14.0"],"pause":["15.3"],"accepts":["15.4"],"indicating":["15.4"],"src":["15.5"],"calls":["15.5"],"once":["15.5"],"commonly":["15.5"],"manually":["15.5","20.10"],"specific":["15.6"],"fast":["15.7"],"seconds":["15.8","15.39"],"similar":["15.11","15.13","15.42"],"setting":["15.11","15.12","15.15"],"but":["15.12","15.13","15.42"],"some":["15.12"],"optimization":["15.12"],"operations":["15.12"],"quality":["15.13"],"gets":["15.14","15.21","15.24","15.30","15.31","15.32"],"frame":["15.17"],"screenshot":["15.18","15.19"],"window":["15.20","22.23"],"effect":["15.23","22.22"],"visible":["15.23"],"sets":["15.24"],"supported":["15.26"],"values":["15.26"],"adapts":["15.27"],"its":["15.27"],"coordinate":["15.28"],"these":["15.29"],"properties":["15.29"],"provide":["15.29"],"quick":["15.29"],"access":["15.29"],"calculate":["15.33"],"attributes":["15.34"],"buffered":["15.38"],"ranging":["15.38","15.40","22.25"],"often":["15.38","15.40","22.11"],"typically":["15.39"],"alongside":["15.39"],"using":["15.41"],"search":["15.42"],"css":["15.44","22.50"],"subtitle":["15.47"],"offset":["15.47","22.25"],"component":["16.1","18.1"],"unique":["16.1","17.1","18.1"],"class":["17.1"],"marking":["17.1"],"comes":["19.1"],"with":["19.1","22.40","22.43"],"four":["19.1"],"elements":["19.3"],"onselect":["19.3"],"text":["19.3","26.34"],"item":["19.5"],"usage":["20.0"],"npm":["20.1","23.1","24.2"],"install":["20.1","23.1","24.2"],"jsdelivr":["20.2","23.2"],"net":["20.2","23.2","24.3"],"https":["20.2","23.2","24.3"],"head":["20.3","23.3"],"title":["20.3","23.3"],"demo":["20.3"],"meta":["20.3"],"charset":["20.3"],"template":["20.4","23.4"],"ref":["20.4"],"export":["20.5","23.5"],"option":["20.5","23.5"],"getinstance":["20.5","23.5"],"rest":["20.5","23.5"],"const":["20.5","23.5"],"d":["20.6"],"import":["20.8","20.10","23.8","23.10","25.2"],"ts":["20.9","26.40"],"cases":["20.10"],"you":["20.10","20.11","20.13","22.27"],"types":["20.10"],"variable":["20.10"],"version":["20.11","20.12","21.0","23.11"],"chrome":["20.11"],"last":["20.11"],"starting":["20.12","21.0"],"not":["20.13"],"always":["20.13"],"accurate":["20.13"],"sometimes":["20.13"],"may":["20.13"],"want":["20.13","22.27"],"adjust":["20.13","22.38"],"bundled":["21.0","21.2"],"multilingual":["21.0"],"are":["21.1"],"en":["21.1","26.42"],"zh":["21.1","21.4","25.4","26.42"],"cn":["21.1","25.1"],"contributions":["21.2"],"welcome":["21.2"],"i18n":["21.4","25.4"],"tw":["21.4","25.4"],"mounted":["22.1"],"identifier":["22.3"],"successfully":["22.4"],"initialized":["22.4"],"image":["22.5","22.36"],"appears":["22.5","22.25"],"color":["22.6","24.5"],"live":["22.8"],"streaming":["22.8"],"fill":["22.11"],"entire":["22.11"],"multiple":["22.21"],"players":["22.21"],"exist":["22.21"],"page":["22.21"],"ui":["22.22","26.22"],"enabled":["22.22"],"overlays":["22.22"],"5s":["22.25","26.25"],"progress":["22.26","22.34"],"that":["22.26"],"side":["22.27"],"rendering":["22.27"],"mount":["22.27"],"if":["22.27"],"use":["22.28"],"menus":["22.31"],"list":["22.33"],"description":["22.33","22.34","22.36","22.37"],"thumbnail":["22.36"],"safari":["22.38","26.38"],"supports":["22.39"],"strings":["22.39"],"htmlelement":["22.39","26.39"],"together":["22.40"],"customtype":["22.40"],"by":["22.40"],"determined":["22.40"],"suffix":["22.40"],"delegates":["22.41"],"decoding":["22.41"],"third":["22.41","22.51"],"party":["22.41","22.51"],"tolowercase":["22.42","26.42"],"language":["22.43"],"enable":["22.45"],"events":["22.45"],"rotate":["22.48"],"modify":["22.50"],"htmlcanvaselement":["22.51","26.51"],"useref":["23.5"],"let":["23.10"],"null":["23.10"],"参数":["23.10"],"对于古老的浏览器":["23.11"],"可以使用":["23.11"],"legacy":["23.11"],"文件":["23.11"],"从":["23.12"],"开始":["23.12"],"所以在":["23.13"],"开始新增了一个":["23.13"],"就可以发送一个弹幕":["24.4"],"其余都是非必要参数":["24.4"],"弹幕文本":["24.4"],"弹幕上下边距":["24.5"],"支持像素数字和百分比":["24.5"],"opacity":["24.5"],"弹幕透明度":["24.5"],"ffffff":["24.5"],"默认弹幕颜色":["24.5"],"可以被单独弹幕项覆盖":["24.5"],"data":["24.6","24.7","24.10","24.15","24.17"],"libs":["24.6","24.7","24.9","24.10","24.11","24.15","24.17"],"uncompiled":["24.6","24.7","24.9","24.10","24.11","24.12","24.15","24.17"],"plugin":["24.6","24.7","24.9","24.10","24.11","24.12","24.13","24.14","24.15","24.17"],"danmuku":["24.6","24.9","24.11","24.12","24.13","24.14","24.15","24.17"],"保存到数据库":["24.6"],"savedanmu":["24.6"],"bilibili":["24.8"],"网站的弹幕格式一致":["24.8"],"theme":["24.16"],"设置成":["24.16"],"light":["24.16"],"否则会看不清":["24.16"],"无需手动导入":["25.1"],"group":["25.2"],"id":["25.2"],"容器":["26.1"],"目前只用于记忆播放":["26.3"],"autoplayback":["26.3"],"事件一样":["26.4"],"只会出现在播放器初始化且未播放的状态下":["26.5"],"播放器主题颜色":["26.6"],"目前用于":["26.6"],"进度条":["26.6"],"播放器的默认音量":["26.7"],"使用直播模式":["26.8"],"会隐藏进度条和播放时间":["26.8"],"是否默认静音":["26.9"],"播放器的尺寸默认会填充整个":["26.11"],"容器尺寸":["26.11"],"所以经常出现黑边":["26.11"],"该值能自动调整播放器尺寸以隐藏黑边":["26.11"],"当播放器滚动到浏览器视口以外时":["26.12"],"自动进入":["26.12"],"迷你播放":["26.12"],"模式":["26.12","26.28"],"是否循环播放":["26.13"],"是否显示视频翻转功能":["26.14"],"目前只出现在":["26.14"],"设置面板":["26.14","26.15","26.16","26.18","26.22","26.25"],"右键菜单":["26.14","26.15","26.16","26.22"],"是否显示视频播放速度功能":["26.15"],"会出现在":["26.15","26.16"],"是否显示视频长宽比功能":["26.16"],"是否在底部控制栏里显示":["26.17","26.18","26.20"],"视频截图":["26.17"],"功能":["26.17"],"的开关按钮":["26.18","26.20"],"画中画":["26.20"],"假如页面里同时存在多个播放器":["26.21"],"是否只能让一个播放器播放":["26.21"],"的背景虚化效果":["26.22"],"开启后":["26.22"],"是否在底部控制栏里显示播放器":["26.23","26.24"],"窗口全屏":["26.23"],"按钮":["26.23","26.24","26.49"],"网页全屏":["26.24"],"出现在":["26.25"],"迷你进度条":["26.26"],"只在播放器失去焦点后且正在播放时出现":["26.26"],"挂载模式":["26.27"],"假如你希望在播放器挂载前":["26.27"],"就提前渲染好播放器所需的":["26.27"],"时有用":["26.27"],"你可以通过":["26.27"],"在移动端是否使用":["26.28"],"类型":["26.33"],"描述":["26.33","26.34","26.37"],"默认画质":["26.33"],"画质名字":["26.33"],"高亮时间":["26.34"],"高亮文本":["26.34"],"预览图地址":["26.36"],"预览图数量":["26.36"],"column":["26.36"],"字幕名字":["26.37"],"字幕地址":["26.37"],"字幕类型":["26.37"],"可选":["26.37"],"preload":["26.38"],"中会自动调整为":["26.38"],"字符串和":["26.39"],"默认视频的格式就是视频地址的后缀":["26.40"],"如":["26.40"],"m3u8":["26.40"],"mkv":["26.40"],"但有时候视频地地址没有正确的后缀":["26.40"],"进行匹配":["26.41"],"把视频解码权交给第三方程序进行处理":["26.41"],"处理的函数能接收三个参数":["26.41"],"视频":["26.41"],"dom":["26.41"],"默认显示语言":["26.42"],"目前支持":["26.42"],"是否在移动端显示一个":["26.44"],"锁定按钮":["26.44"],"用于隐藏底部":["26.44"],"控制栏":["26.44"],"是否在移动端启用视频元素上的手势事件":["26.45"],"是否在移动端添加长按视频快进功能":["26.46"],"是否在移动端的网页全屏时":["26.48"],"根据视频尺寸和视口尺寸":["26.48"],"旋转播放器":["26.48"],"是否显示":["26.49"],"当前只有部分浏览器支持该功能":["26.49"],"函数可以返回一个第三方的":["26.51"],"或者":["26.51"],"htmlvideoelement":["26.51"],"例如可以代理一个已经存在的":["26.51"]},{"0":["9.6","13.25","13.26","15.9"],"1":["9.6","13.26","15.9","19.6","20.10"],"2":["13.28","22.1","24.5","26.1"],"3":["13.23","20.7","20.10","23.7"],"4":["22.7","22.10","22.19","22.31","22.32","22.39","22.43","25.1","26.10","26.19","26.31","26.32","26.39","26.47","26.50"],"5":["9.6","13.12","13.27","19.6","22.47","26.47"],"6":["2.1","2.3","2.4","2.5","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40"],"7":["2.19","2.21","2.23","2.25","2.26","5.16","5.28","5.33","15.16","15.28","15.33","22.4","26.4","26.39"],"8":["2.17","2.20","5.1","5.14","5.21","5.31","5.32","5.34","5.35","5.36","5.44","12.20","15.44","20.3"],"9":["2.29","2.30","2.31","5.12","5.20","5.22","5.23","5.37","12.29","12.30","12.31","13.29","15.12","15.20","15.22","15.37","22.43","26.4"],"10":["2.6","2.18","2.24","7.5","9.6","13.11","17.5","24.4"],"11":["5.2","5.3","5.21","5.33","12.28","15.2","15.33","23.11"],"12":["22.31","26.31"],"15":["22.35","26.35"],"16":["22.32","26.32"],"17":["4.0","14.0"],"25":["13.28"],"29":["15.45"],"35":["13.7"],"50":["13.10"],"200":["13.6","13.8","13.9","13.21"],"250":["9.3","13.5","19.3"],"300":["13.17"],"1000":["13.22","13.24","24.6"],"2000":["13.4"],"3000":["13.13"],"是指挂载在":["0.0","1.0","5.0"],"js":["0.1","0.3","0.5","0.6","0.7","0.8","0.9","0.10","0.13","0.15","0.16","1.1","2.1","2.3","2.4","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.17","2.19","2.20","2.21","2.23","2.25","2.26","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","2.41","3.3","3.5","3.6","3.7","3.8","3.9","3.10","3.17","3.28","3.29","3.30","5.1","5.2","5.3","5.8","5.9","5.10","5.11","5.12","5.13","5.14","5.16","5.17","5.18","5.19","5.20","5.21","5.22","5.23","5.25","5.27","5.28","5.31","5.32","5.33","5.34","5.35","5.36","5.37","5.41","5.44","5.46","5.47","9.1","9.5","10.1","10.4","10.5","10.6","10.14","12.2","12.6","12.17","12.20","12.22","12.24","12.28","12.29","12.30","12.31","15.1","15.2","15.3","15.12","15.20","15.22","15.28","15.33","15.37","15.44","15.46","19.3","19.6","21.0","22.1","22.4","22.7","22.31","22.32","22.35","22.39","22.43","24.7","24.9","24.10","24.15","24.16","24.17","25.0","26.1","26.7","26.10","26.19","26.31","26.34","26.35","26.39","26.47","26.50"],"var":["0.1","0.3","0.5","0.6","0.7","0.8","0.9","0.10","0.13","0.14","0.15","0.16","0.17","2.1","2.2","2.3","2.4","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.17","2.18","2.19","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.27","2.28","2.29","2.30","2.31","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","5.2","5.3","5.12","5.14","5.16","5.20","5.22","5.23","5.28","5.31","5.32","5.33","5.34","5.35","5.36","5.37","5.44","5.46","9.5","10.1","10.5","10.14","12.22","12.29","12.30","12.31","15.12","15.16","15.20","15.22","15.33","15.44","15.45","19.3","21.4","22.1","22.7","22.10","22.19","22.31","22.32","22.43","22.47","24.6","24.9","24.10","24.11","24.12","25.1","25.2","26.1","26.4","26.10","26.19","26.31","26.32","26.39","26.43","26.47"],"art":["0.1","0.2","0.5","0.6","0.7","0.10","0.14","0.16","0.17","2.2","2.6","2.11","2.12","2.16","2.17","2.18","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.28","2.29","2.30","2.31","2.39","5.16","5.20","5.22","5.23","5.28","5.33","5.44","8.4","9.5","10.1","10.5","12.31","15.16","15.20","15.22","15.33","15.44","15.45","18.4","19.3","20.5","20.10","21.3","21.4","22.1","22.7","22.10","22.19","22.29","22.30","22.31","22.32","22.43","22.47","23.5","24.6","24.11","24.12","24.13","25.1","25.2","26.1","26.4","26.19","26.29","26.30","26.31","26.32","26.35","26.39","26.41","26.43","26.47"],"new":["0.1","0.2","0.6","0.7","0.14","0.16","0.17","2.2","2.6","2.17","2.18","2.20","2.22","2.24","2.28","2.29","2.30","2.31","5.12","5.23","5.44","5.45","8.2","8.4","8.5","10.1","15.12","15.16","15.20","15.33","15.45","18.2","18.4","18.5","19.3","20.5","21.4","22.1","22.7","22.10","22.19","22.29","22.30","22.31","22.32","22.43","22.47","23.5","24.6","24.11","24.12","24.13","25.4","26.1","26.4","26.29","26.30","26.31","26.32","26.43"],"artplayer":["0.2","0.7","0.14","0.16","0.17","2.2","2.22","2.24","2.28","2.29","2.30","2.31","3.5","3.6","3.7","3.29","3.30","5.12","5.23","5.45","8.2","8.3","8.4","8.5","9.7","10.1","10.2","15.12","15.16","15.45","18.2","18.3","18.4","18.5","19.3","19.7","20.1","20.8","20.9","20.10","21.0","21.3","22.10","22.19","22.29","22.30","22.32","22.43","22.47","23.1","23.8","24.2","24.3","24.8","24.16","25.0","25.3","26.4","26.27","26.29","26.30","26.32","26.43"],"container":["0.2","0.3","0.14","0.17","2.2","2.28","5.12","5.45","6.2","6.3","7.4","8.2","8.3","8.4","8.5","9.7","10.2","15.12","15.16","15.45","16.2","16.3","17.4","18.2","18.3","18.4","18.5","19.3","19.7","21.4","22.10","22.19","22.29","22.30","22.32","22.43","22.47","23.4","23.9","24.6","24.11","24.12","24.13","24.14","25.3","25.4","26.2","26.4","26.29","26.30","26.32","26.43"],"app":["0.2","0.4","0.14","5.45","6.2","6.3","6.4","6.5","7.3","7.4","8.2","8.3","8.4","8.5","9.7","10.2","15.12","15.16","15.45","16.2","16.3","16.4","16.5","17.3","17.4","18.2","18.3","18.4","18.5","19.3","19.7","20.4","22.1","22.19","22.29","22.30","22.47","23.4","24.11","24.12","24.13","24.14","25.4","26.2","26.4","26.29","26.30","26.43"],"url":["0.2","0.4","5.45","6.2","6.3","6.4","6.5","7.3","7.4","8.2","8.3","8.5","9.3","9.7","9.8","10.2","15.16","15.45","16.2","16.3","16.4","16.5","17.3","17.4","18.2","18.3","18.5","19.3","19.7","19.8","22.29","22.30","22.33","22.40","22.47","24.12","24.13","24.14","26.29","26.30","26.33","26.41","26.43"],"classname":["0.3","0.11","0.12","1.11","3.15","3.21","3.24","3.25","3.28","3.31","5.4","5.15","5.26","5.30","5.38","5.39","5.40","5.41","5.42","9.2","9.5","10.4","10.6","10.7","10.14","10.17","11.6","12.1","12.2","12.11","12.12","12.13","12.14","12.16","12.19","12.21","12.23","12.25","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.41","13.2","13.3","13.4","13.5","13.6","13.7","13.8","13.9","13.10","13.11","13.17","13.18","13.22","13.28","13.29","13.30","13.32","15.6","15.7","15.8","15.9","15.10","15.11","15.13","15.14","15.18","15.19","15.21","15.23","15.24","15.25","15.27","15.30","15.31","15.32","15.33","15.34","15.35","15.36","15.41","15.43","15.47","19.5","22.4","22.9","22.13","22.17","22.25","22.34","22.42","22.50","26.6","26.8","26.12","26.14","26.15","26.16","26.18","26.20","26.21","26.23","26.24","26.25","26.26","26.27","26.28","26.33","26.34","26.38","26.40","26.42","26.44","26.48","26.49","26.51"],"run":["0.3","0.8","0.9","0.11","0.12","1.2","1.3","1.4","1.5","1.7","1.8","1.9","1.10","1.11","1.12","3.1","3.2","3.4","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.23","3.24","3.25","3.26","3.27","3.28","3.31","3.33","5.4","5.6","5.7","5.9","5.11","5.13","5.15","5.24","5.30","5.38","5.39","5.40","5.41","5.42","5.43","9.2","9.5","10.4","10.6","10.7","10.14","10.17","11.6","12.1","12.2","12.3","12.4","12.5","12.9","12.11","12.12","12.13","12.14","12.15","12.16","12.17","12.18","12.19","12.21","12.23","12.24","12.25","12.26","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.3","13.5","13.8","13.9","13.10","13.17","13.28","13.29","13.30","15.7","15.8","15.9","15.10","15.14","15.21","15.22","15.23","15.25","15.27","15.31","15.32","15.33","15.34","15.35","15.36","15.41","15.43","15.46","15.47","22.4","22.9","22.13","22.17","22.34","22.39","22.50","26.3","26.6","26.8","26.9","26.12","26.13","26.14","26.15","26.16","26.17","26.18","26.20","26.21","26.23","26.24","26.25","26.26","26.28","26.33","26.34","26.40","26.42","26.44","26.45","26.46","26.48","26.49","26.51"],"code":["0.3","0.8","0.9","0.10","0.11","0.12","1.2","1.3","1.4","1.5","1.7","1.8","1.9","1.10","1.12","2.41","3.1","3.2","3.4","3.8","3.9","3.10","3.11","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.22","3.23","3.24","3.25","3.26","3.27","3.28","3.31","3.32","3.33","5.4","5.6","5.7","5.8","5.9","5.10","5.11","5.13","5.15","5.18","5.19","5.24","5.30","5.38","5.39","5.40","5.41","5.42","5.43","5.47","9.1","9.2","9.5","10.4","10.6","10.7","10.14","10.17","11.6","12.1","12.2","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.17","12.18","12.19","12.21","12.22","12.23","12.24","12.25","12.26","12.27","12.28","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.5","13.29","13.30","15.1","15.3","15.8","15.9","15.10","15.14","15.20","15.21","15.22","15.25","15.27","15.28","15.31","15.32","15.33","15.34","15.35","15.36","15.41","15.43","15.46","15.47","21.0","21.2","22.4","22.13","22.17","22.39","22.50","24.8","26.3","26.5","26.7","26.8","26.9","26.12","26.13","26.17","26.18","26.20","26.21","26.23","26.24","26.25","26.26","26.28","26.33","26.34","26.40","26.42","26.44","26.45","26.46","26.48","26.49"],"document":["0.3","22.1"],"assets":["0.4","5.45","6.2","6.3","6.4","6.5","7.3","7.4","7.5","9.3","9.7","9.8","10.2","15.45","16.2","16.3","16.4","16.5","17.3","17.4","17.5","19.3","19.7","19.8","22.30","22.47","24.12","24.13","24.14","26.2","26.30","26.43"],"sample":["0.4","5.45","6.2","6.3","6.4","6.5","7.3","7.4","7.5","9.3","9.8","10.2","16.2","16.3","16.4","16.5","17.3","17.4","17.5","19.3","19.8","22.2","22.30","24.13","24.14","26.2","26.30","26.43"],"video":["0.4","3.34","5.45","6.2","6.3","6.4","6.5","7.3","7.5","8.2","8.3","8.5","9.3","9.8","10.2","12.11","13.1","15.6","15.18","15.19","16.2","16.3","16.4","16.5","17.3","17.5","18.2","18.3","18.5","19.3","19.8","22.38","22.45","22.46","24.13","24.14","26.2","26.51"],"mp4":["0.4","6.3","6.4","6.5","7.3","7.5","8.2","8.3","8.5","9.3","9.4","9.8","9.9","10.2","12.0","16.3","16.4","16.5","17.3","17.5","18.2","18.3","18.5","19.3","19.4","19.8","19.9","22.2","24.14","26.2"],"test":["0.4"],"foo":["0.4"],"bar":["0.4","13.16","22.6","22.8","22.22"],"const":["0.4","9.6","19.6","23.9"],"获取整体的字幕列表":["0.11"],"div":["0.11","0.12","3.31","5.4","5.26","5.38","5.40","5.42","9.2","9.5","10.4","10.6","10.7","10.14","10.17","11.5","11.6","11.9","11.10","12.1","12.11","12.19","12.21","12.23","12.25","12.32","12.33","12.35","12.36","12.37","12.38","13.2","13.3","13.4","13.5","13.6","13.7","13.8","13.9","13.10","13.11","13.17","13.18","13.19","13.20","13.21","13.22","13.23","13.26","13.28","13.29","13.30","13.32","15.6","15.7","15.8","15.9","15.10","15.11","15.13","15.14","15.18","15.19","15.21","15.23","15.24","15.25","15.27","15.30","15.31","15.32","15.34","15.35","15.36","15.41","15.43","19.5","20.3","22.4","22.9","22.13","22.17","22.25","22.28","22.34","22.42","22.50","26.6","26.12","26.14","26.15","26.16","26.18","26.20","26.23","26.24","26.25","26.27","26.28","26.33","26.34","26.38","26.40","26.41","26.42","26.44","26.48","26.49","26.51"],"详见事件文档":["0.12"],"console":["1.1","2.0","12.0","24.18"],"info":["2.0","12.0","24.18"],"只监听一次事件":["2.0"],"但估计没有足够的数据来支撑播放到结束":["2.42"],"渲染完成":["2.44"],"属性的值改变时触发":["2.45"],"当这个":["2.46"],"因为":["2.47"],"或者资源类型不是受支持的媒体格式":["2.48"],"中的首帧已经完成加载":["2.49"],"播放准备开始":["2.53"],"seek":["2.56","2.57","12.56","12.57","13.25","15.15"],"user":["2.58","23.13"],"属性指定的时间发生变化":["2.60"],"播放已停止":["2.62"],"也是指挂载在":["3.0"],"构造函数":["3.0"],"减少视频资源占用":["3.34"],"如果你希望保留":["3.34"],"元素的状态":["3.34"],"仅移除界面":["3.34"],"可将其设置为":["3.34"],"when":["5.5","11.1","12.45","22.26"],"destroy":["5.5"],"也会在调用":["5.5"],"时自动执行类似逻辑":["5.5"],"画中画":["5.26"],"fullscreen":["5.26","15.21","22.24"],"窗口全屏":["5.26"],"fullscreenweb":["5.26"],"网页全屏":["5.26"],"对应":["5.29"],"domrect":["5.29"],"的同名字段":["5.29"],"组件唯一名称":["6.1","8.1"],"用于标记类名":["6.1","8.1"],"index":["6.1","7.5","8.1","16.1","17.5","18.1","24.7","24.10","24.15","24.16","24.17"],"number":["6.1","7.1","8.1","10.12","16.1","18.1","19.2"],"contextmenu":["6.4","6.5","16.4","16.5"],"name":["6.5","7.5","9.9","16.5","17.5","19.9","22.33"],"组件索引":["7.1"],"用于显示的优先级":["7.1"],"html":["7.1","7.2","9.4","9.9","15.4","17.1","17.2","19.4","19.9","22.27","22.33"],"element":["7.1","17.1","22.45"],"position":["7.2","7.5","17.2","17.5"],"left":["7.2","17.2"],"tooltip":["7.2","9.2","9.9","17.2","19.2","19.5","19.6","19.9"],"style":["7.2","9.3","17.1","17.2","22.37","26.37"],"color":["7.2","15.36","17.2"],"red":["7.2","17.2"],"click":["7.2","17.2"],"function":["7.2","11.10","17.2","19.5","22.35","22.41","23.10","26.35"],"args":["7.2","17.2"],"controls":["7.3","7.5","17.3","17.5"],"add":["7.3","17.3"],"button1":["7.5","17.5"],"png":["8.4","18.4","22.29","26.29"],"列表宽度":["9.2"],"提示文本":["9.2","9.5"],"setting":["9.3","9.4","9.8","9.9","19.3","19.4","19.8","19.9"],"true":["9.3","9.4","9.8","9.9","13.18","13.19","13.32","19.3","19.4","19.8","19.9","24.6"],"settings":["9.3","9.4","9.9","19.3","19.4","19.9","22.14","22.15","22.16","22.18","22.22","22.25"],"subtitle":["9.3","19.3"],"01":["9.3","9.4"],"default":["9.3","13.1","13.4","13.10","13.11","13.12","13.13","13.14","13.15","13.16","13.17","13.19","13.20","13.21","13.22","13.23","13.24","13.25","13.26","13.27","13.31"],"span":["9.3"],"multi":["9.4","19.4"],"level":["9.4","13.0","19.4"],"selector":["9.4","19.4"],"value":["9.6"],"min":["9.6"],"flip":["9.8","19.1","19.8"],"slider":["9.9","19.9"],"5x":["9.9","19.9"],"icon":["9.9","19.9"],"refer":["10.0","11.0","15.0"],"to":["10.0","11.0","11.1","12.53","13.25","15.0","15.4","15.15","15.39","20.11"],"proxy":["10.3"],"method":["10.3"],"used":["10.3","13.33","15.38","15.40","22.3","22.6"],"hover":["10.3"],"delete":["10.4"],"clear":["10.4"],"all":["10.4","20.12"],"caches":["10.4"],"object":["10.6","26.11"],"update":["10.8","10.9"],"show":["10.8","10.9","10.10","10.16"],"property":["10.8","10.9","10.10","10.16"],"switch":["10.11"],"version":["10.12"],"resolution":["10.12"],"duration":["10.12"],"etc":["10.12"],"control":["10.12"],"visibility":["10.12"],"toggle":["10.13","10.15","22.20"],"set":["10.16"],"the":["11.0","12.45","12.48","15.0","15.6","15.29","22.8","22.12","22.25","22.26","22.27","22.44","22.45"],"you":["11.1"],"need":["11.1"],"manage":["11.1"],"multiple":["11.1"],"player":["11.2","11.3","11.4","11.7","11.11","11.12","15.41","15.42","20.13","22.5","22.21","22.26","22.27"],"for":["11.5","11.9","13.33","16.1","18.1","22.6","22.18","22.38","22.41","22.51"],"videos":["11.5"],"options":["11.7","11.9","22.37"],"event":["11.8","12.0","12.46","15.38","15.40","19.2","19.5","22.4"],"utility":["11.10"],"by":["11.11","20.13","22.9"],"on":["12.0","13.0","13.3","14.0","22.28","22.44","22.46","22.48","24.18"],"canplay":["12.0"],"an":["12.0","20.12"],"only":["12.0","22.3","22.14","22.21","22.49"],"once":["12.0"],"time":["12.1","12.60","24.4"],"a":["12.11","13.14","22.22"],"mode":["12.25","13.31","15.24","22.48"],"media":["12.42","15.5"],"but":["12.42","15.11","15.15"],"estimates":["12.42"],"it":["12.43","15.15","22.15","22.16","22.51"],"can":["12.43","13.34","22.41"],"play":["12.43","22.4"],"offlineaudiocontext":["12.44"],"this":["12.46","13.34","22.11"],"is":["12.46","12.58","13.1","13.4","13.6","13.7","13.8","13.9","13.10","13.11","13.12","13.13","13.14","13.16","13.17","13.18","13.19","13.20","13.21","13.22","13.23","13.24","13.25","13.26","13.27","13.31","13.32","15.15","15.42","20.11","21.1","22.2","22.5","22.21"],"sent":["12.46"],"stopped":["12.47","12.62"],"fetching":["12.48"],"first":["12.49"],"frame":["12.49","15.18","15.19"],"has":["12.50","12.51","12.52"],"start":["12.53"],"after":["12.53","14.0"],"periodically":["12.54"],"as":["12.54"],"playback":["12.55","15.13","22.3"],"trying":["12.58"],"data":["12.59","24.8","24.16"],"indicated":["12.60"],"volume":["12.61","22.22"],"top":["13.0"],"mounted":["13.0"],"in":["13.1","13.12","13.13","13.15","13.16","13.21","13.24","13.27","13.34","15.5","15.7","15.26","20.12","22.2","22.11","22.14","22.15","22.16","22.18","22.23","22.24","22.25","22.34"],"events":["13.1"],"text":["13.2","19.2","19.5","19.6","22.34"],"pixels":["13.6","13.7"],"feature":["13.11","22.46"],"seconds":["13.12","13.27","15.6","15.7","22.34"],"milliseconds":["13.13","13.15","13.16","13.21","13.24"],"connection":["13.14"],"error":["13.14","13.15"],"occurs":["13.14","13.15"],"pause":["13.19","13.20"],"false":["13.20"],"swipe":["13.25"],"vertical":["13.30","15.30"],"during":["13.31"],"primarily":["13.33"],"smooth":["13.33"],"progress":["13.33","15.13","15.39","22.6","22.8"],"enabling":["13.34"],"reduce":["13.34"],"resource":["13.34"],"usage":["13.34"],"single":["13.34","15.5"],"page":["13.34","15.5","15.21"],"applications":["13.34","15.5"],"or":["13.34","15.5","22.51"],"scenarios":["13.34"],"where":["13.34"],"ready":["14.0"],"also":["14.0","15.4","20.12"],"remove":["15.4"],"s":["15.4","15.24","20.13","22.27"],"resources":["15.5"],"reinitialize":["15.5"],"tag":["15.5"],"performs":["15.11"],"some":["15.11","22.49"],"optimization":["15.11"],"operations":["15.11"],"retains":["15.13"],"previous":["15.13"],"similar":["15.15","22.4"],"optional":["15.17"],"parameter":["15.17","20.10"],"specifies":["15.17"],"filename":["15.17"],"returns":["15.18","15.19"],"promise":["15.18","15.19","24.6"],"state":["15.21"],"before":["15.23","22.27"],"starts":["15.23"],"playing":["15.23"],"normal":["15.26","15.30"],"mini":["15.26"],"window":["15.26"],"pip":["15.26"],"picture":["15.26"],"automatically":["15.27","22.11"],"correspond":["15.29"],"fields":["15.29"],"of":["15.29","22.12","22.36"],"same":["15.29"],"supported":["15.30","22.42"],"values":["15.30"],"horizontal":["15.30"],"speed":["15.31"],"ratio":["15.32"],"with":["15.38","15.40"],"timeupdate":["15.38","15.40"],"loaded":["15.39"],"display":["15.39","17.1"],"detailed":["15.39"],"buffering":["15.39"],"cleaned":["15.41"],"up":["15.41"],"destroyed":["15.41"],"scoped":["15.42"],"current":["15.42","20.5","23.5"],"preventing":["15.42"],"css":["16.1","18.1","26.11"],"class":["16.1","18.1","20.3"],"determines":["17.1"],"priority":["17.1"],"dom":["17.1"],"items":["19.1"],"playbackrate":["19.1"],"aspectratio":["19.1"],"width":["19.2","22.36","26.36"],"list":["19.2"],"onswitch":["19.5"],"completion":["19.6"],"onchange":["19.6"],"change":["19.6"],"yarn":["20.1","23.1"],"utf":["20.3","26.37"],"body":["20.3"],"if":["20.5","23.5"],"typeof":["20.5","23.5"],"ts":["20.6","22.40"],"file":["20.6","20.11"],"from":["20.8","20.9","20.13","21.2","23.8","23.11"],"import":["20.9","21.1","21.2","23.11"],"let":["20.10"],"null":["20.10"],"use":["20.11"],"which":["20.11"],"compatible":["20.11"],"down":["20.11"],"ie":["20.11","23.11"],"plugins":["20.12","24.14","24.18"],"provide":["20.12"],"ui":["20.13"],"changing":["20.13"],"therefore":["20.13"],"starting":["20.13"],"core":["21.0"],"will":["21.0","22.15","22.16","22.22"],"no":["21.0","21.1"],"longer":["21.0"],"bundle":["21.0"],"manual":["21.1"],"dist":["21.2","23.12"],"group":["21.2"],"id":["21.2"],"sometimes":["22.2","22.40"],"not":["22.2","22.5","22.40"],"known":["22.2"],"immediately":["22.2"],"such":["22.2"],"cases":["22.2"],"memory":["22.3"],"autoplayback":["22.3"],"initialized":["22.5"],"and":["22.5","22.6","22.8","22.22"],"hide":["22.8","22.44"],"resulting":["22.11"],"black":["22.11"],"bars":["22.11"],"option":["22.11"],"adjusts":["22.11"],"scrolls":["22.12"],"out":["22.12"],"currently":["22.14","22.49"],"appears":["22.14","22.26"],"appear":["22.15","22.16"],"panel":["22.18","22.22","22.25"],"button":["22.20","22.23","22.24"],"bottom":["22.20","22.23","22.24"],"simultaneously":["22.21"],"whether":["22.21"],"one":["22.21"],"context":["22.22"],"menu":["22.22"],"apply":["22.22"],"loses":["22.26"],"focus":["22.26"],"pre":["22.27"],"render":["22.27"],"required":["22.27"],"mobile":["22.28","22.44","22.45","22.48"],"devices":["22.28","22.44"],"layer":["22.29","26.29"],"boolean":["22.33"],"string":["22.33","22.34"],"myplugin":["22.35","26.35"],"column":["22.36"],"columns":["22.36"],"encoding":["22.37","26.37"],"auto":["22.38","26.38"],"better":["22.38"],"loading":["22.38"],"experience":["22.38"],"more":["22.38"],"attributes":["22.38"],"e":["22.40"],"g":["22.40"],"m3u8":["22.40"],"mkv":["22.40"],"however":["22.40"],"may":["22.40"],"have":["22.40"],"programs":["22.41"],"processing":["22.41"],"receive":["22.41"],"three":["22.41"],"en":["22.42"],"zh":["22.42","25.2"],"cn":["22.42","26.42"],"fast":["22.46"],"forward":["22.46"],"web":["22.48"],"based":["22.48"],"browsers":["22.49"],"support":["22.49"],"htmlvideoelement":["22.51"],"example":["22.51"],"demo":["23.3"],"meta":["23.3"],"charset":["23.3"],"ref":["23.4"],"时会自动导入的":["23.6"],"param":["23.10"],"getinstance":["23.10"],"可以兼容到":["23.11"],"和所有插件还会提供一个":["23.12"],"版本的":["23.12"],"mjs":["23.12"],"如":["23.12"],"globalthis":["23.13"],"custom":["23.13"],"agent":["23.13"],"全局变量":["23.13"],"plugin":["24.2","24.3","24.8","24.16"],"danmuku":["24.2","24.7","24.10","24.16"],"npm":["24.3"],"弹幕时间":["24.4"],"默认为当前播放器时间":["24.4"],"默认弹幕模式":["24.5"],"滚动":["24.5"],"顶部":["24.5"],"底部":["24.5"],"modes":["24.5"],"弹幕可见的模式":["24.5"],"fontsize":["24.5"],"danmu":["24.6","24.18"],"return":["24.6"],"resolve":["24.6"],"settimeout":["24.6"],"libs":["24.8","24.16"],"uncompiled":["24.8","24.16"],"artplayerplugindanmuku":["24.14","24.18"],"xml":["24.18"],"visible":["24.18"],"显示弹幕":["24.18"],"版本开始":["25.0"],"核心代码除了包含":["25.0"],"zhtw":["25.2"],"tw":["25.2"],"高亮元素":["26.6"],"上":["26.6"],"类似":["26.11"],"的":["26.11"],"fit":["26.11"],"里":["26.14","26.15","26.16","26.25"],"音量条等浮层会应用":["26.22"],"filter":["26.22"],"毛玻璃效果":["26.22"],"看起来更通透":["26.22"],"访问到播放器所需的":["26.27"],"画质地址":["26.33"],"预览图列数":["26.36"],"预览图宽度":["26.36"],"height":["26.36"],"预览图高度":["26.36"],"scale":["26.36"],"字幕样式":["26.37"],"字幕编码":["26.37"],"默认":["26.37"],"以提升加载体验":["26.38"],"更多视频属性":["26.38"],"这些属性将直接写入视频元素里":["26.38"],"所以需要特别指明":["26.40"],"元素":["26.41"],"视频地址":["26.41"],"当前实例":["26.41"],"dom元素":["26.51"]},{"0":["19.6","24.4"],"1":["3.29","9.3","13.29","19.3"],"2":["3.29","9.6","19.6","20.13","26.3"],"3":["9.6"],"4":["9.1","20.13","21.1","22.17","22.34","22.50","23.10","26.5","26.7","26.8","26.9","26.13","26.17","26.21","26.25","26.26","26.33","26.34","26.40","26.42","26.45","26.46"],"5":["13.14","13.25","20.13"],"6":["2.41","5.42","5.43","12.1","12.3","12.4","12.5","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","23.10"],"7":["5.4","5.6","5.7","5.10","5.17","5.18","5.19","5.24","5.38","5.39","5.40","12.19","12.21","12.23","12.25","12.26","15.10","22.39"],"8":["5.9","5.15","5.25","5.27","5.30","5.41","12.17","15.1","15.9","15.14","15.21","15.25","15.30","15.31","15.32","15.34","15.35","15.36","15.41","22.37","23.3","26.37"],"9":["5.11","5.13","15.11","15.13","15.23","22.4"],"10":["5.8","5.41","7.3","7.4","12.2","12.6","12.18","12.24","15.8","15.12","15.41","17.3","17.4","19.6"],"11":["15.3","15.21","20.11"],"14":["26.33"],"22":["9.9","19.9"],"25":["22.34","26.34"],"40":["3.7"],"100":["3.10"],"150":["9.4","19.4"],"300":["3.5","3.6"],"500":["3.8","3.9","3.17"],"1000":["13.15"],"3000":["13.16"],"实例":["0.0","5.0"],"artplayer":["0.1","0.3","0.5","0.6","0.8","0.9","0.10","0.13","0.15","1.1","2.1","2.3","2.4","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.17","2.18","2.19","2.20","2.21","2.23","2.25","2.26","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","3.1","3.3","3.4","3.8","3.9","3.10","3.11","3.12","3.13","3.14","3.15","3.16","3.17","3.18","3.19","3.20","3.21","3.22","3.23","3.24","3.25","3.26","3.27","3.28","3.31","3.32","3.33","5.1","5.2","5.3","5.8","5.9","5.10","5.11","5.13","5.14","5.15","5.16","5.18","5.19","5.20","5.21","5.22","5.25","5.28","5.30","5.31","5.32","5.33","5.34","5.35","5.36","5.37","5.41","5.44","5.46","5.47","9.1","9.2","9.5","10.3","10.4","10.5","10.6","10.7","10.14","10.17","12.2","12.6","12.17","12.18","12.20","12.22","12.24","12.28","12.29","12.30","12.31","13.5","13.6","13.7","13.8","13.9","13.28","13.29","13.30","15.2","15.3","15.5","15.20","15.22","15.28","15.33","15.34","15.37","15.41","15.44","15.46","15.47","19.5","20.2","22.4","22.7","22.17","22.31","22.39","23.2","23.13","25.1","26.10","26.19","26.31","26.34","26.39","26.40","26.47","26.50"],"container":["0.1","0.5","0.6","0.7","0.8","0.9","0.10","0.13","0.15","0.16","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.15","2.16","2.17","2.18","2.19","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.27","2.29","2.30","2.31","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","5.2","5.3","5.9","5.11","5.13","5.14","5.16","5.20","5.21","5.22","5.23","5.28","5.31","5.32","5.33","5.34","5.35","5.36","5.37","5.41","5.44","5.46","5.47","9.2","9.5","10.1","10.3","10.4","10.5","10.6","10.7","10.14","10.17","12.2","12.20","12.22","12.28","12.29","12.30","12.31","15.2","15.20","15.22","15.28","15.41","15.44","15.46","19.5","20.9","21.3","22.4","22.7","22.17","22.31","22.39","24.9","24.10","24.15","24.17","25.1","25.2","26.10","26.19","26.31","26.34","26.39","26.47"],"app":["0.1","0.3","0.5","0.6","0.7","0.8","0.9","0.10","0.16","0.17","2.2","2.6","2.17","2.18","2.20","2.22","2.24","2.28","2.29","2.30","2.31","5.12","5.16","5.20","5.22","5.23","5.28","5.33","5.34","5.44","9.5","10.1","10.4","10.5","10.6","10.14","12.31","15.20","15.22","15.28","15.33","15.41","15.44","19.5","20.3","20.5","21.3","21.4","22.4","22.7","22.10","22.31","22.32","22.39","22.43","23.9","24.6","24.10","25.2","25.3","26.1","26.19","26.31","26.32","26.39","26.47"],"assets":["0.2","0.6","0.7","0.10","0.14","0.16","0.17","2.2","2.22","2.28","2.31","5.12","5.23","5.44","9.5","10.1","10.4","10.6","10.14","15.12","15.16","15.20","15.22","15.33","21.4","22.1","22.4","22.7","22.10","22.19","22.31","22.32","22.43","23.9","24.6","24.10","24.11","25.2","25.3","25.4","26.1","26.4","26.31","26.32"],"sample":["0.2","0.6","0.14","0.16","0.17","2.2","2.28","5.12","5.23","9.5","9.7","10.1","10.4","10.6","10.14","15.12","15.16","15.20","15.22","15.33","15.45","19.7","21.4","22.1","22.4","22.7","22.10","22.19","22.31","22.32","22.43","22.47","23.9","24.6","24.11","24.12","25.2","25.4","26.4","26.32"],"video":["0.2","0.14","0.16","0.17","5.12","7.4","8.4","9.5","9.7","10.4","10.6","10.14","15.20","15.22","15.45","17.4","18.4","19.7","21.4","22.1","22.10","22.19","22.29","22.30","22.32","22.43","22.47","22.48","22.51","24.6","24.11","24.12","25.2","25.4","26.4","26.29","26.30","26.32","26.43"],"mp4":["0.2","0.14","0.17","5.12","5.45","6.2","7.4","8.4","9.5","9.7","10.4","10.14","15.12","15.16","15.20","15.33","15.45","16.2","17.4","18.4","19.7","22.1","22.4","22.10","22.19","22.29","22.30","22.32","22.43","22.47","24.6","24.11","24.12","24.13","25.2","25.4","26.4","26.29","26.30","26.43"],"console":["0.2","0.4","1.6","7.2","10.2","11.6","15.16","17.2","22.35","26.35"],"info":["0.2","0.4","1.1","7.2","10.2","11.6","17.2","22.35","26.35"],"queryselector":["0.3","5.41","10.3","15.41","22.1","24.16","26.1"],"art":["0.3","0.8","0.9","0.11","0.13","0.15","2.1","2.3","2.4","2.5","2.7","2.8","2.9","2.10","2.13","2.14","2.15","2.19","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.40","2.41","3.5","3.6","3.7","3.30","5.1","5.2","5.3","5.6","5.7","5.8","5.9","5.10","5.14","5.15","5.17","5.18","5.19","5.21","5.24","5.25","5.27","5.30","5.31","5.32","5.34","5.35","5.36","5.37","5.39","5.46","5.47","9.1","9.2","10.4","10.6","10.7","10.12","10.14","10.17","12.2","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.12","12.13","12.15","12.16","12.17","12.18","12.20","12.21","12.22","12.23","12.24","12.26","12.27","12.28","12.29","12.30","12.39","12.40","12.41","15.1","15.2","15.3","15.8","15.9","15.10","15.14","15.23","15.28","15.31","15.32","15.34","15.35","15.36","15.37","15.46","15.47","19.2","19.5","21.2","22.4","22.17","22.35","22.39","22.50","24.7","24.9","24.10","24.15","24.17","26.5","26.7","26.10","26.17","26.33","26.34","26.40","26.50"],"new":["0.3","0.5","0.8","0.9","0.10","0.11","0.13","0.15","2.1","2.3","2.4","2.5","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.19","2.21","2.23","2.25","2.26","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","2.41","3.5","3.30","5.1","5.2","5.3","5.8","5.9","5.10","5.11","5.13","5.14","5.15","5.16","5.17","5.18","5.19","5.20","5.21","5.22","5.25","5.27","5.28","5.30","5.31","5.32","5.33","5.34","5.35","5.36","5.37","5.46","5.47","9.1","9.2","9.5","10.4","10.5","10.6","10.7","10.14","10.17","12.2","12.6","12.7","12.8","12.10","12.17","12.18","12.20","12.22","12.24","12.26","12.28","12.29","12.30","12.31","15.1","15.2","15.3","15.22","15.23","15.28","15.32","15.34","15.35","15.37","15.44","15.46","15.47","19.5","22.4","22.17","22.39","24.9","24.10","24.15","24.17","25.1","25.2","26.7","26.10","26.19","26.34","26.39","26.40","26.47","26.50"],"url":["0.6","0.7","0.9","0.10","0.14","0.16","0.17","2.2","2.18","2.22","2.24","2.28","2.29","2.30","2.31","5.20","5.23","5.33","5.44","8.4","9.5","10.1","10.4","10.5","10.6","10.14","15.20","15.22","15.33","15.44","18.4","21.3","21.4","22.1","22.4","22.7","22.10","22.19","22.31","22.32","22.41","22.43","23.9","24.6","24.10","24.11","25.2","25.3","25.4","26.1","26.4","26.31","26.32","26.39","26.47"],"js":["0.11","0.12","1.6","3.1","3.4","3.11","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.22","3.23","3.24","3.25","3.26","3.27","3.31","3.32","3.33","5.4","5.6","5.7","5.15","5.24","5.26","5.30","5.38","5.39","5.40","5.42","5.43","9.2","10.3","10.7","10.17","11.6","12.1","12.3","12.4","12.5","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.18","12.19","12.21","12.23","12.25","12.26","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.5","13.6","13.7","13.8","13.9","13.10","13.17","13.22","13.28","13.29","13.30","15.7","15.8","15.9","15.10","15.11","15.13","15.14","15.18","15.19","15.21","15.23","15.25","15.27","15.30","15.31","15.32","15.34","15.35","15.36","15.41","15.43","15.47","19.2","19.5","21.1","22.13","22.17","22.25","22.34","22.42","22.50","24.8","26.3","26.5","26.8","26.9","26.12","26.13","26.14","26.15","26.16","26.17","26.18","26.20","26.21","26.23","26.24","26.25","26.26","26.27","26.28","26.33","26.40","26.42","26.44","26.45","26.46","26.48","26.49"],"var":["0.11","0.12","1.1","2.41","3.5","3.6","3.7","3.17","3.30","5.1","5.6","5.7","5.8","5.9","5.10","5.11","5.13","5.15","5.17","5.18","5.19","5.21","5.24","5.25","5.27","5.30","5.38","5.39","5.40","5.41","5.43","5.47","9.1","9.2","10.3","10.4","10.6","10.7","10.17","12.2","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.12","12.13","12.14","12.15","12.16","12.17","12.18","12.19","12.20","12.21","12.23","12.24","12.25","12.26","12.27","12.28","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","15.1","15.2","15.3","15.8","15.9","15.10","15.14","15.23","15.25","15.28","15.31","15.32","15.34","15.35","15.36","15.37","15.41","15.46","15.47","19.2","19.5","21.1","21.2","22.4","22.17","22.34","22.39","22.50","24.7","24.15","24.16","24.17","26.3","26.5","26.7","26.17","26.25","26.33","26.34","26.40","26.50"],"function":["0.14","6.5","16.5","17.1","20.10","26.37"],"构造函数":["1.0"],"code":["1.11","3.34","5.5","5.26","5.29","9.6","10.3","11.1","13.1","13.2","13.3","13.4","13.6","13.7","13.8","13.9","13.10","13.11","13.12","13.13","13.14","13.15","13.16","13.17","13.18","13.19","13.20","13.21","13.22","13.23","13.24","13.25","13.26","13.27","13.28","13.31","13.32","13.33","15.6","15.7","15.11","15.13","15.17","15.18","15.19","15.23","15.24","15.30","15.38","15.39","15.40","19.1","19.2","19.5","20.11","22.3","22.5","22.9","22.25","22.28","22.33","22.34","22.40","22.42","22.45","23.11","26.6","26.11","26.14","26.15","26.16","26.22","26.27","26.36","26.38","26.41","26.51"],"once":["2.0"],"不必停下来进一步缓冲内容":["2.42"],"media":["2.46","2.47","12.43","12.48"],"已经加载完成":["2.46"],"操作完成":["2.56"],"操作开始":["2.57"],"agent":["2.58"],"的":["3.0"],"false":["3.3","3.34","20.5","23.5","24.5","24.14"],"div":["3.34","5.5","5.29","9.6","10.3","10.13","10.15","11.1","11.2","11.3","11.4","11.7","11.8","11.11","11.12","13.1","13.12","13.13","13.14","13.15","13.16","13.24","13.25","13.27","13.31","13.33","15.4","15.15","15.17","15.26","15.38","15.39","15.40","15.42","19.1","19.2","20.5","22.3","22.5","22.6","22.8","22.12","22.14","22.15","22.16","22.18","22.20","22.23","22.24","22.26","22.33","22.40","22.44","22.45","22.46","22.49","22.51","23.3","23.5","26.11","26.22","26.36"],"classname":["3.34","5.5","5.29","9.6","10.3","11.1","11.2","11.3","11.4","11.5","11.7","11.8","11.9","11.10","11.11","11.12","13.1","13.12","13.13","13.14","13.15","13.16","13.19","13.20","13.21","13.23","13.24","13.25","13.26","13.27","13.31","13.33","15.15","15.17","15.26","15.38","15.39","15.40","19.1","19.2","22.3","22.5","22.6","22.8","22.12","22.14","22.15","22.16","22.18","22.20","22.23","22.24","22.26","22.28","22.33","22.40","22.44","22.45","22.46","22.49","26.11","26.22","26.36","26.41"],"run":["3.34","5.5","5.26","5.29","9.6","10.3","11.1","11.2","11.3","11.4","11.5","11.7","11.8","11.9","11.10","11.12","13.1","13.2","13.4","13.6","13.7","13.11","13.12","13.13","13.14","13.15","13.16","13.18","13.19","13.20","13.21","13.22","13.23","13.24","13.25","13.26","13.27","13.31","13.32","13.33","15.6","15.11","15.13","15.15","15.17","15.18","15.19","15.24","15.30","15.38","15.39","15.40","19.1","19.2","19.5","22.3","22.5","22.6","22.8","22.12","22.20","22.23","22.24","22.25","22.28","22.33","22.40","22.42","22.45","22.46","22.49","26.11","26.22","26.27","26.36","26.38","26.41"],"add":["4.0","6.3","8.3","14.0","16.3","18.3","20.1","23.1","24.2"],"例如我想写一个在视频暂停后":["4.0"],"显示一个图片广告的插件":["4.0"],"on":["5.12","15.12","15.16","15.33"],"播放器当前可见宽高":["5.29"],"document":["5.41","10.3","15.41","24.16","26.1"],"default":["5.45","7.5","15.45","17.5","19.3","23.10"],"true":["5.45","7.5","9.7","13.31","15.4","15.45","17.5","19.7","22.4","22.10","22.30","22.47","24.5","26.4","26.30","26.37"],"html":["5.45","6.1","6.2","6.3","6.4","6.5","7.3","7.5","8.1","8.2","8.3","8.5","9.8","15.45","16.1","16.2","16.3","16.4","16.5","17.3","17.5","18.1","18.2","18.3","18.5","19.8","22.29","22.30","22.37","23.13","24.14","26.29","26.30","26.37"],"sd":["5.45","15.45"],"480p":["5.45","15.45"],"组件索引":["6.1","8.1"],"用于显示的优先级":["6.1","8.1"],"contextmenu":["6.2","6.3","16.2","16.3"],"name":["6.2","6.3","6.4","7.3","7.4","8.2","8.3","8.4","8.5","9.8","15.29","16.2","16.3","16.4","17.3","17.4","18.2","18.3","18.4","18.5","19.8","22.29","22.35","26.29","26.35"],"your":["6.2","6.3","6.4","6.5","7.3","16.2","16.3","16.4","16.5","17.3","22.47","26.43"],"menu":["6.2","6.3","6.4","6.5","16.2","16.3","16.4","16.5","22.14","22.15","22.16"],"click":["6.4","6.5","16.4","16.5","17.1","24.14"],"args":["6.5","16.5"],"组件的":["7.1"],"dom":["7.1","22.41","22.51"],"元素":["7.1"],"style":["7.1","8.2","8.3","8.5","18.2","18.3","18.5","19.3","20.4","22.29"],"object":["7.1","17.1"],"mounted":["7.2","17.2","22.27"],"subtitle":["7.2","7.5","17.2","17.5"],"button1":["7.3","7.4","17.3","17.4"],"index":["7.3","7.4","17.3","17.4","24.8"],"position":["7.3","17.3","24.13","24.14"],"left":["7.3","17.3"],"controls":["7.4","17.4","24.13","24.14"],"right":["7.5","17.5","24.14"],"selector":["7.5","17.5","22.30","26.30"],"01":["7.5","17.5","19.3","19.4"],"layers":["8.2","8.3","8.4","8.5","18.2","18.3","18.4","18.5"],"potser":["8.2","8.3","8.5","18.2","18.3","18.5","22.29","26.29"],"width":["8.2","8.3","8.5","9.4","9.9","18.2","18.3","18.5","19.4","19.9","22.29"],"100px":["8.2","8.3","8.5","18.2","18.3","18.5"],"src":["8.2","8.5","9.9","18.2","18.5","19.9"],"color":["9.3","19.3"],"red":["9.3","19.3"],"srt":["9.3","19.3"],"id":["9.3","19.3","22.47"],"yellow":["9.3"],"02":["9.3"],"setting":["9.5","9.7","19.7","22.30","26.30"],"max":["9.6","19.6"],"step":["9.6"],"settings":["9.8","19.8"],"slider":["9.8","19.8"],"tooltip":["9.8","19.8"],"5x":["9.8","19.8"],"icon":["9.8","19.8"],"img":["9.9","19.9"],"height":["9.9","19.9","22.36"],"state":["9.9","13.34","19.9"],"svg":["9.9","19.9"],"secondary":["10.0"],"custom":["10.3"],"test":["10.4"],"foo":["10.4"],"bar":["10.4","13.33","22.18","22.20","22.23","22.24","22.44"],"const":["10.4","20.8","20.9","23.8"],"set":["10.8","10.9","10.10","22.2"],"whether":["10.8","10.9","10.10","10.16","22.37"],"all":["10.8","10.9","10.10","10.16","13.0"],"are":["10.8","13.34"],"displayed":["10.8"],"toggle":["10.8","10.9","10.10","10.16"],"display":["10.9","10.10","10.16","16.1","18.1"],"options":["10.11"],"texttrack":["10.11"],"gets":["10.11"],"text":["10.11"],"track":["10.11"],"activecues":["10.11"],"list":["10.11"],"via":["10.12"],"show":["10.12"],"triggered":["10.12"],"event":["10.12","17.1"],"is":["10.12","12.42","13.15","20.6","22.26","22.27"],"named":["10.12"],"of":["10.13","10.15","12.49","12.62","13.34"],"first":["11.0","15.0"],"level":["11.0","15.0"],"players":["11.1","13.34"],"simultaneously":["11.1"],"there":["12.42"],"not":["12.42","15.15"],"rendering":["12.44"],"value":["12.45","19.6"],"when":["12.46","15.5"],"because":["12.47","12.62"],"the":["12.47","12.54","20.3","22.38"],"data":["12.48","23.10"],"or":["12.48"],"been":["12.50","12.51","12.53"],"begun":["12.52"],"having":["12.53"],"rate":["12.55"],"operation":["12.56","12.57"],"to":["12.58","22.11","22.21","22.37"],"fetch":["12.58"],"loading":["12.59"],"by":["12.60"],"has":["12.61"],"constructor":["13.0"],"property":["13.0","20.10"],"off":["13.1"],"effects":["13.33"],"frequently":["13.34"],"created":["13.34"],"destroyed":["13.34"],"if":["13.34"],"you":["13.34","22.1","22.2"],"wish":["13.34"],"preserve":["13.34"],"for":["14.0"],"example":["14.0"],"let":["14.0"],"after":["15.4"],"destruction":["15.4"],"defaults":["15.4"],"note":["15.5","20.3"],"global":["15.5","20.13"],"configuration":["15.5"],"remove":["15.5"],"destroy":["15.5","20.5","23.5"],"will":["15.5"],"also":["15.5"],"ready":["15.12","15.16"],"seek":["15.12"],"settimeout":["15.12"],"does":["15.15"],"trigger":["15.15"],"additional":["15.15"],"events":["15.15"],"fullscreen":["15.26"],"fullscreenweb":["15.26"],"webpage":["15.26"],"in":["15.29"],"domrect":["15.29"],"player":["15.29"],"s":["15.29"],"current":["15.29"],"errors":["15.42"],"with":["15.42"],"duplicate":["15.42"],"class":["15.42"],"names":["15.42"],"priority":["16.1","18.1"],"element":["16.1","22.41","22.51"],"handler":["17.1"],"subtitleoffset":["19.1"],"span":["19.3"],"min":["19.6"],"npm":["20.2","23.2"],"dist":["20.2","20.12","23.2","24.3"],"warning":["20.3","22.47"],"option":["20.4","23.4"],"get":["20.4"],"return":["20.5","22.35","23.5","23.10","26.35"],"ref":["20.5","23.5"],"param":["20.10"],"getinstance":["20.10"],"import":["20.11"],"from":["20.11"],"group":["20.11","23.11"],"bash":["20.11","23.11"],"jsdelivr":["20.11","23.11"],"net":["20.11","23.11"],"mjs":["20.12"],"format":["20.12"],"such":["20.12"],"as":["20.12"],"version":["20.13"],"variable":["20.13"],"globalthis":["20.13"],"user":["20.13"],"any":["21.0"],"languages":["21.0"],"other":["21.0"],"than":["21.0"],"simplified":["21.0"],"chinese":["21.0"],"and":["21.0","22.14","22.15","22.16","22.26","22.48"],"english":["21.0"],"required":["21.1"],"zhtw":["21.2"],"zh":["21.2"],"tw":["21.2"],"may":["22.1"],"can":["22.2","22.27"],"asynchronously":["22.2"],"muted":["22.4","26.4"],"yet":["22.5"],"playing":["22.5","22.26"],"highlighted":["22.6"],"elements":["22.6"],"playback":["22.8"],"time":["22.8","22.21"],"size":["22.11"],"hide":["22.11"],"browser":["22.12"],"viewport":["22.12","22.48"],"panel":["22.14","22.15","22.16"],"context":["22.14","22.15","22.16"],"bottom":["22.18","22.44"],"control":["22.18","22.20","22.23","22.24","22.44"],"allowed":["22.21"],"play":["22.21","26.43"],"at":["22.21"],"a":["22.21"],"filter":["22.22"],"frosted":["22.22"],"glass":["22.22"],"more":["22.22"],"transparent":["22.22"],"look":["22.22"],"however":["22.22"],"access":["22.27"],"setting01":["22.30","26.30"],"scale":["22.36"],"utf":["22.37","23.3"],"escape":["22.37","26.37"],"boolean":["22.37","26.37"],"tags":["22.37"],"these":["22.38"],"be":["22.38"],"written":["22.38"],"directly":["22.38"],"into":["22.38"],"correct":["22.40"],"so":["22.40"],"explicitly":["22.40"],"specified":["22.40"],"parameters":["22.41"],"lang":["22.43","26.43"],"devices":["22.45","22.46"],"mobile":["22.46"],"dimensions":["22.48"],"this":["22.49"],"feature":["22.49"],"an":["22.51"],"existing":["22.51"],"body":["23.3"],"属性":["23.10"],"export":["23.10"],"https":["23.11"],"plugin":["23.12"],"danmuku":["23.12","24.3","24.8"],"head":["23.13"],"title":["23.13"],"yarn":["24.2"],"mode":["24.4"],"弹幕模式":["24.4"],"滚动":["24.4"],"弹幕字体大小":["24.5"],"antioverlap":["24.5"],"弹幕是否防重叠":["24.5"],"synchronousplayback":["24.5"],"是否同步播放速度":["24.5"],"mount":["24.5"],"undefined":["24.5"],"弹幕发射器挂载点":["24.5"],"默认为播放器控制栏中部":["24.5"],"heatmap":["24.5"],"plugins":["24.6","24.11","24.12","24.13"],"xml":["24.6","24.13","24.14"],"这是用户在输入框输入弹幕文本":["24.6"],"然后点击发送按钮后触发的函数":["24.6"],"artplayerplugindanmuku":["24.11","24.12","24.13"],"emitter":["24.14"],"重载":["24.14"],"danmu":["24.16"],"loaded":["24.18"],"danmus":["24.18"],"加载弹幕":["24.18"],"length":["24.18"],"简体中文":["25.0"],"和":["25.0"],"英文":["25.0"],"有时候":["26.2"],"地址没那么快知道":["26.2"],"这时候你可以异步设置":["26.2"],"cover":["26.11"],"但在部分低性能设备或老旧浏览器上可能会有性能或兼容性问题":["26.22"],"预览图缩放":["26.36"],"是否转义":["26.37"],"标签":["26.37"],"默认为":["26.37"],"onvttload":["26.37"],"用于修改":["26.37"]},{"0":["15.12","23.9"],"1":["3.25","9.9","19.9","24.4"],"2":["3.26","9.3","13.29","19.3","22.3","24.4"],"3":["3.28","13.28","19.6","26.1"],"4":["3.28","13.28","19.1","20.10","22.5","22.8","22.9","22.13","22.23","22.24","22.25","22.28","22.33","22.36","22.40","22.42","22.45","22.46","22.49","26.6","26.11","26.12","26.14","26.15","26.16","26.18","26.20","26.22","26.23","26.24","26.28","26.36","26.37","26.38","26.41","26.44","26.48","26.49","26.51"],"5":["3.23","3.29","9.9","13.29","19.9","22.7"],"6":["3.29","13.29","15.43","20.10","22.2","26.2"],"7":["5.29","15.6","15.7","15.17","15.18","15.19","15.24","15.38","15.39","15.40","26.27","26.38"],"8":["5.26","15.15","15.26","15.27","22.36","23.13","26.36","26.41"],"9":["5.5"],"10":["3.12","3.14","3.27","5.12","9.9","19.9"],"12":["24.13"],"14":["22.33"],"20":["3.11"],"22":["9.5"],"40":["13.7"],"50":["24.13"],"100":["13.10"],"300":["13.5","13.6"],"500":["3.21","13.8","13.9","13.17"],"512":["24.5"],"2000":["3.22","3.24","13.22"],"3000":["3.15","15.12"],"5000":["3.4","3.13","3.16"],"的":["0.0","0.4","1.0","5.0"],"url":["0.1","0.3","0.5","0.8","0.12","0.13","0.15","2.1","2.3","2.4","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.17","2.19","2.20","2.21","2.23","2.25","2.26","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","2.41","3.5","3.30","5.1","5.2","5.3","5.8","5.9","5.13","5.14","5.15","5.16","5.17","5.18","5.19","5.21","5.22","5.25","5.28","5.30","5.31","5.32","5.34","5.35","5.36","5.37","5.46","5.47","9.1","9.2","9.6","10.3","10.7","10.17","12.2","12.6","12.7","12.8","12.10","12.12","12.16","12.17","12.18","12.20","12.22","12.24","12.26","12.28","12.29","12.30","12.31","15.2","15.3","15.8","15.9","15.14","15.23","15.28","15.31","15.32","15.34","15.35","15.36","15.37","15.41","15.46","15.47","19.2","19.5","20.5","20.9","21.2","22.17","22.34","22.39","22.50","24.9","24.15","24.17","25.1","26.7","26.10","26.19","26.34","26.40","26.50"],"assets":["0.1","0.3","0.5","0.8","0.9","0.11","0.13","0.15","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.15","2.16","2.17","2.18","2.19","2.20","2.21","2.23","2.24","2.25","2.26","2.27","2.29","2.30","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","3.30","5.2","5.3","5.8","5.9","5.10","5.11","5.13","5.14","5.15","5.16","5.18","5.19","5.20","5.21","5.22","5.25","5.28","5.30","5.31","5.32","5.33","5.34","5.35","5.36","5.37","5.46","5.47","9.1","9.2","9.6","10.3","10.5","10.7","10.17","12.2","12.6","12.17","12.18","12.20","12.22","12.24","12.28","12.29","12.30","12.31","15.2","15.3","15.9","15.14","15.23","15.28","15.31","15.32","15.34","15.35","15.37","15.41","15.44","15.46","15.47","19.2","19.5","20.9","21.2","21.3","22.17","22.34","22.39","22.40","24.9","24.15","24.17","25.1","26.10","26.19","26.33","26.34","26.39","26.40","26.47","26.50"],"sample":["0.1","0.3","0.5","0.7","0.8","0.9","0.10","0.11","0.13","0.15","2.6","2.11","2.12","2.16","2.17","2.18","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.29","2.30","2.31","2.39","5.2","5.3","5.9","5.11","5.13","5.14","5.15","5.16","5.18","5.19","5.20","5.21","5.22","5.28","5.30","5.31","5.32","5.33","5.34","5.35","5.36","5.44","5.46","5.47","9.2","9.6","10.3","10.5","10.7","10.17","12.2","12.18","12.20","12.22","12.24","12.28","12.29","12.30","12.31","15.2","15.23","15.28","15.34","15.41","15.44","15.46","19.2","19.5","20.9","21.2","21.3","22.17","22.34","22.39","22.40","24.9","24.10","24.15","24.17","25.3","26.1","26.10","26.19","26.31","26.33","26.34","26.39","26.40","26.47"],"video":["0.1","0.3","0.5","0.6","0.7","0.8","0.9","0.10","0.13","0.15","2.2","2.6","2.12","2.17","2.18","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.28","2.29","2.30","2.31","5.2","5.3","5.9","5.11","5.13","5.14","5.16","5.20","5.22","5.23","5.28","5.31","5.32","5.33","5.35","5.36","5.44","5.46","9.2","9.6","10.1","10.3","10.5","10.7","10.17","12.2","12.22","12.28","12.29","12.30","12.31","15.28","15.41","15.44","15.46","19.2","19.5","20.9","21.2","21.3","22.7","22.17","22.31","22.39","23.9","24.9","24.10","24.15","24.17","25.3","26.1","26.10","26.19","26.31","26.34","26.39","26.40","26.47"],"mp4":["0.3","0.5","0.6","0.7","0.8","0.9","0.10","0.16","2.2","2.17","2.18","2.20","2.22","2.24","2.28","2.29","2.30","2.31","5.16","5.20","5.22","5.23","5.28","5.32","5.33","5.34","5.44","5.46","9.2","10.1","10.3","10.5","10.6","10.7","10.17","12.28","12.29","12.30","12.31","15.22","15.23","15.28","15.41","15.44","19.2","19.5","20.9","21.2","21.3","21.4","22.7","22.17","22.31","22.39","23.9","24.9","24.10","24.17","25.3","26.1","26.10","26.19","26.31","26.32","26.34","26.39","26.47"],"warning":["0.4","10.2","10.4","11.6","15.12","15.16","15.33","20.4","22.7","22.10","25.0"],"提示":["0.4"],"默认所有播放器实例都是共享同一个":["0.4"],"localstorage":["0.4"],"而且默认的":["0.4"],"是":["0.4"],"settings":["0.4","9.2","9.5","19.5"],"如果你想不同的播放器使用不同的":["0.4"],"console":["0.6","0.14","0.17","6.2","6.3","6.4","6.5","9.3","9.4","10.1","10.4","10.5","10.6","10.14","11.1","16.2","16.3","16.4","16.5","19.3","19.4","22.30"],"info":["0.6","0.14","0.17","1.6","6.2","6.3","6.4","6.5","9.3","9.4","10.1","10.4","10.5","10.6","10.14","11.1","15.16","16.2","16.3","16.4","16.5","19.3","19.4","22.30"],"play":["0.6","10.6","12.42","22.43","26.4"],"on":["0.7","0.8","0.9","0.10","2.2","2.22","5.33","5.44","7.5","8.5","9.9","10.7","10.14","15.0","15.28","15.44","17.5","18.5","19.9","20.3","22.22"],"ready":["0.9","0.10","2.2","5.12","5.44","7.5","10.14","15.33","17.5"],"artplayer":["0.11","0.12","1.6","2.41","3.34","5.4","5.6","5.7","5.17","5.24","5.26","5.27","5.29","5.38","5.39","5.40","5.42","5.43","9.6","11.1","11.6","12.1","12.3","12.4","12.5","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.19","12.21","12.23","12.25","12.26","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.1","13.3","13.4","13.10","13.11","13.12","13.13","13.14","13.15","13.16","13.17","13.18","13.19","13.20","13.21","13.22","13.23","13.24","13.25","13.26","13.27","13.31","13.32","13.33","15.1","15.7","15.8","15.9","15.10","15.11","15.13","15.14","15.18","15.19","15.21","15.23","15.24","15.25","15.27","15.30","15.31","15.32","15.35","15.36","15.43","19.1","19.2","19.6","20.13","21.1","22.25","22.27","22.33","22.34","22.40","22.42","22.50","26.3","26.5","26.7","26.8","26.9","26.13","26.14","26.15","26.16","26.17","26.21","26.25","26.26","26.33","26.36","26.42","26.45","26.46"],"container":["0.11","0.12","1.1","2.1","2.3","2.4","2.14","2.41","3.5","3.6","3.7","3.8","3.9","3.10","3.17","3.29","3.30","5.1","5.4","5.6","5.7","5.8","5.10","5.15","5.17","5.18","5.19","5.24","5.25","5.26","5.27","5.30","5.38","5.39","5.40","5.42","5.43","9.1","9.6","12.1","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.17","12.18","12.19","12.21","12.23","12.24","12.25","12.26","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.5","13.30","15.1","15.3","15.8","15.9","15.10","15.11","15.13","15.14","15.18","15.19","15.21","15.23","15.25","15.30","15.31","15.32","15.34","15.35","15.36","15.37","15.47","19.2","19.6","21.1","21.2","22.25","22.33","22.34","22.40","22.42","22.50","24.7","24.16","26.5","26.7","26.17","26.25","26.27","26.33","26.40","26.42","26.50"],"app":["0.11","0.12","0.13","0.15","2.1","2.3","2.4","2.5","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.19","2.21","2.23","2.25","2.26","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","2.41","3.5","3.6","3.7","3.30","5.1","5.2","5.3","5.8","5.9","5.10","5.11","5.13","5.14","5.15","5.17","5.18","5.19","5.21","5.25","5.27","5.30","5.31","5.32","5.35","5.36","5.37","5.39","5.41","5.46","5.47","9.1","9.2","9.6","10.3","10.7","10.17","12.2","12.5","12.6","12.7","12.8","12.9","12.10","12.12","12.13","12.15","12.16","12.17","12.18","12.20","12.21","12.22","12.23","12.24","12.25","12.26","12.27","12.28","12.29","12.30","12.39","12.40","12.41","15.1","15.2","15.3","15.8","15.9","15.10","15.11","15.13","15.14","15.21","15.23","15.30","15.31","15.32","15.34","15.35","15.36","15.37","15.46","15.47","19.2","20.9","21.2","22.17","22.34","22.40","22.50","23.3","23.5","24.7","24.9","24.15","24.16","24.17","25.1","26.7","26.10","26.17","26.25","26.27","26.33","26.34","26.40","26.50"],"new":["0.12","1.1","3.3","3.6","3.7","3.8","3.9","3.10","3.11","3.17","3.22","3.28","3.29","3.33","5.4","5.5","5.6","5.7","5.24","5.26","5.29","5.38","5.39","5.40","5.41","5.42","5.43","9.6","10.3","10.16","12.1","12.3","12.4","12.5","12.9","12.11","12.12","12.13","12.14","12.15","12.16","12.19","12.21","12.23","12.25","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.5","13.6","13.7","13.8","13.9","13.30","15.6","15.7","15.8","15.9","15.10","15.11","15.13","15.14","15.15","15.17","15.18","15.19","15.21","15.24","15.25","15.27","15.30","15.31","15.36","15.38","15.39","15.40","15.41","15.43","19.1","19.2","19.6","21.1","22.13","22.25","22.33","22.34","22.40","22.42","22.50","24.7","24.8","24.16","26.3","26.5","26.8","26.9","26.12","26.13","26.14","26.15","26.16","26.17","26.18","26.20","26.21","26.23","26.24","26.25","26.26","26.28","26.33","26.36","26.38","26.42","26.44","26.45","26.46","26.48","26.49","26.51"],"hotkeyevent":["0.14","10.14"],"event":["0.14","9.3","9.4","10.14","19.4"],"click":["0.14","6.2","6.3","7.1","7.3","10.14","15.20","15.22","16.2","16.3","17.3","22.31","24.12"],"true":["0.16","2.28","3.1","3.20","3.33","7.2","9.2","9.5","17.2","19.5","22.17","22.37"],"flip":["0.16"],"playbackrate":["0.16"],"aspectratio":["0.16"],"function":["0.17","6.2","6.3","6.4","7.1","7.3","9.4","10.14","10.17","15.20","15.22","16.2","16.3","16.4","17.3","19.4","22.30","22.37","24.12","24.14","26.30"],"myplugin":["0.17","10.17"],"art":["1.1","3.1","3.3","3.4","3.8","3.9","3.10","3.11","3.12","3.13","3.17","3.18","3.21","3.22","3.23","3.24","3.27","3.28","3.29","3.32","3.33","5.4","5.5","5.26","5.29","5.38","5.40","5.41","5.42","5.43","9.6","10.3","10.16","12.1","12.11","12.14","12.19","12.25","12.32","12.33","12.34","12.35","12.36","12.37","12.38","13.5","13.6","13.7","13.8","13.9","13.10","13.17","13.29","13.30","15.6","15.7","15.15","15.17","15.18","15.19","15.21","15.24","15.25","15.26","15.27","15.30","15.38","15.39","15.40","15.41","15.43","19.1","19.6","20.8","21.1","22.9","22.13","22.25","22.28","22.33","22.34","22.40","22.41","22.42","23.8","24.8","24.16","26.3","26.6","26.8","26.9","26.12","26.13","26.14","26.15","26.16","26.18","26.20","26.21","26.23","26.24","26.25","26.26","26.28","26.36","26.38","26.42","26.44","26.45","26.46","26.48","26.49","26.51"],"js":["1.2","1.3","1.4","1.5","1.7","1.8","1.9","1.10","1.12","3.2","3.34","5.5","5.29","10.9","10.10","10.13","10.15","10.16","11.1","13.1","13.3","13.4","13.11","13.12","13.13","13.14","13.15","13.16","13.18","13.19","13.20","13.21","13.23","13.24","13.25","13.26","13.27","13.31","13.32","13.33","15.4","15.6","15.15","15.17","15.24","15.26","15.38","15.39","15.40","15.42","19.1","20.2","22.3","22.5","22.6","22.8","22.9","22.12","22.14","22.15","22.16","22.18","22.20","22.23","22.24","22.26","22.28","22.33","22.36","22.40","22.44","22.45","22.46","22.49","23.2","24.3","26.6","26.11","26.22","26.36","26.37","26.38","26.41","26.51"],"手动触发事件":["2.0"],"subtitle":["2.28","2.29","2.30","2.31","12.31"],"或者部分加载完成":["2.46"],"则发送此事件":["2.46"],"已经到达结束点":["2.47"],"正在尝试获取媒体数据":["2.58"],"一级属性":["3.0"],"var":["3.1","3.3","3.4","3.8","3.9","3.10","3.11","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.22","3.23","3.24","3.25","3.26","3.27","3.28","3.29","3.31","3.32","3.33","5.4","5.5","5.26","5.29","5.42","9.6","10.13","10.15","10.16","12.1","12.11","13.3","13.5","13.6","13.7","13.8","13.9","13.10","13.17","13.22","13.28","13.29","13.30","15.6","15.7","15.11","15.13","15.15","15.17","15.18","15.19","15.21","15.24","15.26","15.27","15.30","15.38","15.39","15.40","15.43","19.1","19.6","22.3","22.5","22.9","22.13","22.25","22.28","22.33","22.40","22.42","24.8","26.6","26.8","26.9","26.12","26.13","26.14","26.15","26.16","26.18","26.20","26.21","26.22","26.23","26.24","26.26","26.27","26.28","26.36","26.38","26.41","26.42","26.44","26.45","26.46","26.48","26.49","26.51"],"false":["3.18","3.19","3.31","3.32","6.5","13.3","13.18","13.32","16.5"],"adsplugin":["4.0","14.0"],"option":["4.0","14.0","24.18"],"layers":["4.0","14.0"],"ads":["4.0"],"html":["4.0","7.4","8.4","9.7","15.20","15.22","17.4","18.4","19.7","20.13","22.31","22.32","24.11","24.12","24.13","26.31","26.32"],"img":["4.0","9.5","9.8","19.8","22.39","26.39"],"style":["4.0","6.1","7.3","8.1","8.4","16.1","17.3","18.1","18.4","23.4","26.29"],"width":["4.0","8.4","9.5","9.8","18.4","19.8","24.5","26.29"],"100px":["4.0","8.4","18.4","22.29","26.29"],"src":["4.0","8.3","8.4","9.8","18.3","18.4","19.8","22.29","26.29"],"display":["4.0","10.8"],"none":["4.0"],"position":["4.0","5.20","7.4","8.2","8.3","8.5","15.20","15.22","17.4","18.2","18.3","18.5","22.29","22.32","24.11","24.12","26.29","26.32"],"absolute":["4.0","8.2","8.3","8.5","18.2","18.3","18.5","22.29","26.29"],"top":["4.0","8.2","8.3","8.5","18.2","18.3","18.5","22.29","26.29"],"20px":["4.0","22.29","26.29"],"right":["4.0","7.2","7.4","8.2","8.5","15.20","15.22","17.2","17.4","18.2","18.5","22.29","24.11","24.12","24.13"],"seek":["5.12","22.19"],"settimeout":["5.12","7.5","17.5","22.2"],"controls":["5.20","5.22","15.20","15.22","24.11","24.12"],"jpg":["5.23"],"hd":["5.45","15.45"],"720p":["5.45","15.45"],"element":["6.1","8.1","13.34","18.1","22.38"],"组件的":["6.1","8.1"],"dom":["6.1","8.1","9.4","16.1","18.1","19.4"],"元素":["6.1","8.1"],"args":["6.2","6.3","6.4","16.2","16.3","16.4","22.30","26.30"],"show":["6.5","9.7","9.9","16.5","19.7","19.9"],"组件样式对象":["7.1"],"组件点击事件":["7.1"],"mounted":["7.1","15.0","17.1"],"selector":["7.2","17.2"],"default":["7.2","10.4","17.2","20.10","21.4","25.4"],"span":["7.2","17.2"],"01":["7.2","17.2","22.30","26.30"],"button":["7.3","7.4","17.3","17.4"],"tooltip":["7.3","7.4","8.2","8.3","17.1","17.3","17.4","18.2","18.3","22.32"],"color":["7.3","17.3"],"red":["7.3","17.3"],"your":["7.4","17.4","22.31","22.32","26.31","26.32","26.47"],"02":["7.5","9.4","17.5","19.3","19.4","22.30","26.30"],"update":["7.5","17.5"],"the":["7.5","17.5","21.4","22.10","25.4"],"tip":["8.2","8.3","18.2","18.3"],"50px":["8.2","8.3","8.5","18.2","18.3","18.5"],"potser":["8.4","18.4"],"setting":["9.2","19.5"],"item":["9.3","9.4","19.3","19.4"],"onselect":["9.4","19.4","22.30","26.30"],"pip":["9.5","19.5"],"mode":["9.5","19.5"],"close":["9.5","19.5"],"height":["9.5","9.8","19.8"],"add":["9.7"],"slider":["9.7","19.7"],"state":["9.8","19.8"],"range":["9.9","19.9","24.13"],"attached":["10.0","11.0"],"note":["10.2","10.4","15.12","15.16","15.33","22.7","22.10","22.47"],"to":["10.2","12.42","12.43","14.0","22.1"],"easily":["10.2"],"distinguish":["10.2"],"between":["10.2"],"and":["10.2","15.29"],"by":["10.4"],"zh":["10.6"],"cn":["10.6"],"of":["10.8","10.9","10.10","10.16","12.45","16.1","22.1"],"div":["10.8","10.9","10.10","10.11","10.12","10.16","15.5","15.29","19.6","22.11","22.21","22.27","22.36","22.37","22.38","22.41","22.48","26.37"],"classname":["10.8","10.9","10.10","10.12","10.13","10.15","10.16","15.4","15.5","15.29","15.42","19.6","22.21","22.27","22.36","22.37","22.38","22.41","22.48","22.51","26.37"],"run":["10.8","10.9","10.10","10.12","10.13","10.15","10.16","11.11","15.4","15.5","15.26","15.29","15.42","19.6","22.14","22.15","22.16","22.18","22.21","22.26","22.27","22.36","22.37","22.38","22.41","22.44","22.48","22.51","26.37"],"code":["10.8","10.9","10.10","10.12","10.13","10.15","10.16","11.2","11.3","11.4","11.5","11.7","11.8","11.9","11.10","11.11","11.12","15.4","15.15","15.26","15.29","15.42","19.6","22.6","22.8","22.12","22.14","22.15","22.16","22.18","22.20","22.21","22.23","22.24","22.26","22.27","22.36","22.37","22.38","22.44","22.46","22.48","22.49","22.51","26.37"],"currently":["10.11"],"active":["10.11"],"cues":["10.11"],"overall":["10.11"],"see":["10.12"],"documentation":["10.12"],"for":["10.12","22.1","22.37"],"details":["10.12"],"all":["11.6"],"manually":["12.0","21.0"],"triggering":["12.0"],"enough":["12.42"],"data":["12.42","12.58","20.10"],"through":["12.43"],"is":["12.44","14.0","15.5","17.1"],"already":["12.46"],"been":["12.46","20.13"],"loaded":["12.46","12.50"],"or":["12.46","12.53","22.22"],"media":["12.47","12.49","12.58"],"resource":["12.48"],"type":["12.48","24.13"],"paused":["12.51","12.53","14.0"],"browser":["12.54"],"has":["12.55","12.56","12.57","12.59","20.13"],"but":["12.58"],"currenttime":["12.60"],"changed":["12.61"],"a":["12.62"],"temporary":["12.62"],"names":["13.0"],"are":["13.0"],"in":["13.0"],"uppercase":["13.0"],"only":["13.34"],"ui":["13.34"],"set":["13.34","22.1"],"say":["14.0"],"i":["14.0","24.6"],"want":["14.0","22.10"],"write":["14.0"],"that":["14.0"],"displays":["14.0"],"an":["14.0","22.43"],"image":["14.0"],"ad":["14.0"],"when":["14.0"],"automatically":["15.5","20.6"],"execute":["15.5"],"similar":["15.5","22.11"],"logic":["15.5"],"called":["15.5"],"t":["15.12"],"some":["15.16","22.22"],"videos":["15.16"],"may":["15.16","22.22"],"not":["15.16"],"switch":["15.20"],"visible":["15.29"],"resize":["15.33"],"object":["16.1","18.1","22.11"],"triggered":["17.1"],"after":["17.1"],"yellow":["19.3"],"step":["19.6","24.13"],"pnpm":["20.1","23.1"],"unpkg":["20.2","20.11","23.2","24.3"],"player":["20.3","22.47"],"s":["20.3"],"dimensions":["20.3"],"depend":["20.3"],"instance":["20.4","22.41"],"getinstance":["20.4"],"path":["20.5"],"imported":["20.6"],"useref":["20.8","23.8"],"export":["20.10"],"return":["20.10"],"https":["20.11"],"cdn":["20.11","23.11"],"npm":["20.11","23.11"],"dist":["20.11","23.11"],"plugin":["20.12"],"danmuku":["20.12"],"doctype":["20.12","23.12"],"agent":["20.13"],"added":["20.13"],"head":["20.13"],"title":["20.13"],"demo":["20.13","23.13"],"you":["21.0","22.10"],"need":["21.0","22.1"],"import":["21.0"],"change":["21.4","25.4"],"size":["22.1"],"example":["22.1"],"equivalent":["22.4"],"muted":["22.10"],"if":["22.10","24.6"],"css":["22.11","26.1"],"fit":["22.11"],"cover":["22.11"],"description":["22.19"],"increase":["22.19"],"volume":["22.19","23.9"],"decrease":["22.19"],"forward":["22.19"],"backward":["22.19"],"this":["22.22","26.4"],"cause":["22.22"],"performance":["22.22"],"compatibility":["22.22"],"issues":["22.22"],"low":["22.22"],"via":["22.27"],"menu":["22.31","26.31"],"left":["22.32","26.32"],"something":["22.35","26.35"],"dosomething":["22.35","26.35"],"onvttload":["22.37"],"modifying":["22.37"],"text":["22.37","24.6","24.12"],"loading":["22.39","26.39"],"current":["22.41"],"modify":["22.43"],"existing":["22.43"],"because":["22.47"],"uses":["22.47"],"as":["22.47"],"key":["22.47"],"class":["23.3"],"get":["23.4"],"d":["23.6"],"选项":["23.10"],"lang":["23.12","25.2","25.3"],"meta":["23.13"],"charset":["23.13"],"utf":["23.13"],"com":["24.3"],"默认":["24.4"],"顶部":["24.4"],"底部":["24.4"],"是否开启热力图":["24.5"],"当播放器宽度小于此值时":["24.5"],"弹幕发射器置于播放器底部":["24.5"],"points":["24.5"],"热力图数据":["24.5"],"filter":["24.5"],"弹幕载入前的过滤器":["24.5"],"只支持返回布尔值":["24.5"],"beforeemit":["24.5"],"弹幕发送前的过滤器":["24.5"],"支持返回":["24.5"],"你可以对弹幕做合法校验":["24.6"],"或者做存库处理":["24.6"],"当返回true后才表示把弹幕加入到弹幕队列":["24.6"],"async":["24.6"],"const":["24.6"],"isdirty":["24.6"],"fuck":["24.6"],"test":["24.6"],"plugins":["24.10"],"artplayerplugindanmuku":["24.10"],"xml":["24.11","24.12"],"隐藏弹幕":["24.11"],"发送弹幕":["24.12"],"弹幕大小":["24.13"],"input":["24.13"],"min":["24.13"],"max":["24.13"],"重新加载当前弹幕库":["24.14"],"切换":["24.14"],"error":["24.18"],"加载错误":["24.18"],"config":["24.18"],"配置变化":["24.18"],"外":["25.0"],"不再捆绑其它多国语言":["25.0"],"需要自行导入需要的语言":["25.0"],"language":["25.4"],"您可能需要初始化容器元素的大小":["26.1"],"如":["26.1"],"等同于":["26.4"],"document":["26.27"],"queryselector":["26.27"],"control":["26.32"],"文本的函数":["26.37"],"修改现有的语言":["26.43"],"id":["26.47"]},{"0":["5.12","20.5","20.9"],"1":["9.8","13.25","19.8","24.13"],"2":["13.26"],"3":["22.1"],"4":["22.6","22.11","22.12","22.14","22.15","22.16","22.18","22.20","22.21","22.26","22.37","22.38","22.41","22.44","22.48","22.51"],"5":["9.8","13.23","19.8","20.9","23.9"],"6":["15.42"],"7":["15.4","15.29","22.27","22.38"],"8":["20.13","22.41","23.12"],"9":["15.5","22.29","26.29"],"10":["9.8","13.12","13.14","13.27","19.8"],"11":["22.43","26.43"],"12":["22.37","26.37"],"20":["13.11"],"22":["9.2","9.6","9.7","19.2","19.5","19.7"],"25":["24.13"],"32":["0.14","10.14"],"60":["22.34","26.34"],"120":["26.34"],"150":["9.3","19.3"],"200":["24.5"],"404":["2.11","12.11"],"500":["13.21"],"1000":["22.2"],"2000":["13.24"],"3000":["5.12","13.15"],"5000":["13.4","13.13","13.16"],"二级属性":["0.0"],"mp4":["0.1","0.11","0.12","0.13","0.15","2.1","2.3","2.4","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.19","2.21","2.23","2.25","2.26","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","2.41","3.5","3.6","3.7","3.29","3.30","5.1","5.2","5.3","5.8","5.9","5.10","5.11","5.13","5.14","5.15","5.17","5.18","5.19","5.21","5.25","5.26","5.30","5.31","5.35","5.36","5.37","5.39","5.41","5.47","9.1","9.6","10.8","10.9","10.10","10.16","12.2","12.5","12.6","12.7","12.8","12.9","12.10","12.12","12.13","12.15","12.16","12.17","12.18","12.20","12.21","12.22","12.23","12.24","12.25","12.26","12.27","12.39","12.41","13.30","15.1","15.2","15.3","15.8","15.9","15.10","15.11","15.13","15.14","15.18","15.19","15.21","15.25","15.30","15.31","15.32","15.34","15.35","15.36","15.37","15.46","15.47","19.6","20.5","22.33","22.34","22.50","23.5","24.15","24.16","25.1","26.7","26.25","26.33","26.36","26.50"],"console":["0.1","0.3","0.5","1.2","1.3","1.4","1.5","1.7","1.8","1.9","1.10","1.11","1.12","3.2","5.9","5.14","5.15","5.16","5.23","5.28","5.30","5.31","5.32","5.34","5.35","5.36","5.44","7.3","8.2","8.3","10.3","10.17","13.2","15.28","15.32","15.34","15.41","15.44","17.3","18.2","18.3","22.29","22.31","22.32","26.29","26.30","26.31"],"info":["0.1","0.3","0.5","1.2","1.3","1.4","1.5","1.7","1.8","1.9","1.10","1.12","5.9","5.14","5.16","5.23","5.28","5.31","5.32","5.34","5.35","5.36","7.3","8.2","8.3","10.3","10.17","15.28","15.34","15.41","17.3","18.2","18.3","22.29","22.31","22.32","26.29","26.30","26.31"],"warning":["0.2","1.6","5.12","10.1","10.5","10.6","15.20","15.22","15.41","21.0","22.2","22.4","22.17","22.19","22.40","23.3","23.4","26.10","26.40","26.47"],"提示":["0.2","5.12","23.3","26.47"],"为了方便区别":["0.2"],"元素和普通对象":["0.2"],"播放器里的所有":["0.2"],"click":["0.3","5.20","5.22","6.1","8.1","8.2","8.3","10.3","15.41","16.1","18.1","18.2","18.3","22.29","22.32","24.10","24.11","26.29","26.31","26.32"],"event":["0.3","10.3","16.1","24.11"],"你可以修改":["0.4"],"即可":["0.4"],"zh":["0.6"],"cn":["0.6","21.4","25.4"],"your":["0.6","10.6","15.33","20.3","21.3","21.4","22.3","25.3","25.4","26.3"],"ready":["0.7","0.8","0.11","0.13","0.14","0.15","0.16","2.6","2.18","2.22","2.24","5.9","5.11","5.13","5.14","5.15","5.16","5.18","5.19","5.23","5.28","5.30","5.31","5.32","5.33","5.34","5.35","5.36","5.45","5.46","6.5","8.5","9.9","10.7","12.18","12.22","12.24","15.9","15.11","15.13","15.14","15.23","15.28","15.31","15.32","15.34","15.35","15.36","15.44","15.45","15.46","16.5","18.5","19.9"],"html":["0.8","0.9","0.10","5.20","5.22","14.0","24.10"],"some":["0.8","0.9","0.10"],"text":["0.8","0.9","0.10","17.1"],"position":["0.9","5.22","5.37","7.1","8.4","14.0","17.1","18.4","24.10"],"video":["0.11","0.12","2.1","2.3","2.4","2.5","2.7","2.8","2.9","2.10","2.13","2.14","2.15","2.16","2.19","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","2.41","3.5","3.6","3.7","3.28","3.29","3.30","5.1","5.6","5.7","5.8","5.10","5.15","5.17","5.18","5.19","5.21","5.24","5.25","5.26","5.27","5.29","5.30","5.37","5.39","5.41","5.47","9.1","10.8","10.9","10.10","10.16","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.12","12.13","12.15","12.16","12.17","12.18","12.19","12.20","12.21","12.23","12.24","12.25","12.26","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.5","15.21","15.30","15.31","15.32","15.36","15.37","15.47","19.6","20.5","22.25","22.33","22.34","22.42","22.50","23.5","24.7","24.16","25.1","26.7","26.17","26.25","26.33","26.36","26.50"],"on":["0.11","0.12","0.13","0.14","0.15","0.16","2.6","2.11","2.12","2.18","2.24","5.8","5.9","5.10","5.11","5.13","5.14","5.15","5.16","5.18","5.19","5.21","5.23","5.28","5.30","5.31","5.32","5.34","5.35","5.36","5.45","5.46","6.4","6.5","7.4","10.9","10.10","12.2","12.6","12.18","12.22","12.24","15.9","15.11","15.13","15.14","15.23","15.30","15.31","15.32","15.34","15.35","15.36","15.45","15.46","16.4","16.5","17.4","22.4"],"assets":["0.12","1.1","2.1","2.3","2.4","2.14","2.41","3.5","3.6","3.7","3.8","3.9","3.10","3.17","3.28","3.29","5.1","5.4","5.5","5.6","5.7","5.17","5.24","5.26","5.27","5.29","5.38","5.39","5.40","5.41","5.42","5.43","10.8","10.9","10.10","10.13","10.15","10.16","12.1","12.3","12.4","12.5","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.19","12.21","12.23","12.25","12.26","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.5","13.6","13.7","13.28","13.29","13.30","15.1","15.6","15.7","15.8","15.10","15.11","15.13","15.15","15.17","15.18","15.19","15.21","15.24","15.25","15.26","15.27","15.30","15.36","15.38","15.39","15.40","19.1","19.6","21.1","22.25","22.33","22.36","22.42","22.50","24.7","24.8","24.16","26.5","26.7","26.17","26.25","26.36","26.37","26.42"],"sample":["0.12","2.1","2.3","2.4","2.5","2.7","2.8","2.9","2.10","2.13","2.14","2.15","2.19","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.40","2.41","3.5","3.6","3.7","3.8","3.9","3.10","3.17","3.28","3.29","3.30","5.1","5.6","5.7","5.8","5.10","5.17","5.24","5.25","5.26","5.27","5.29","5.37","5.38","5.39","5.40","5.41","5.42","9.1","10.8","10.9","10.10","10.13","10.15","10.16","12.1","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.17","12.19","12.21","12.23","12.25","12.26","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.5","13.6","13.7","13.29","13.30","15.1","15.3","15.8","15.9","15.10","15.11","15.13","15.14","15.15","15.18","15.19","15.21","15.25","15.26","15.30","15.31","15.32","15.35","15.36","15.37","15.47","19.1","19.6","21.1","22.25","22.33","22.36","22.42","22.50","24.7","24.16","25.1","26.5","26.7","26.17","26.25","26.36","26.37","26.42","26.50"],"subtitleoffset":["0.16"],"return":["0.17","9.3","9.4","10.17","19.3","19.4","24.9","24.12"],"name":["0.17","10.17"],"something":["0.17"],"dosomething":["0.17"],"一级属性":["1.0","5.0"],"app":["1.1","3.3","3.8","3.9","3.10","3.11","3.12","3.13","3.17","3.22","3.23","3.28","3.29","3.33","5.4","5.5","5.6","5.7","5.24","5.26","5.29","5.38","5.40","5.42","5.43","10.8","10.9","10.10","10.13","10.15","10.16","12.1","12.3","12.4","12.11","12.14","12.19","12.32","12.33","12.34","12.35","12.36","12.37","12.38","13.5","13.6","13.7","13.8","13.9","13.10","13.17","13.28","13.29","13.30","15.6","15.7","15.15","15.17","15.18","15.19","15.24","15.25","15.26","15.27","15.29","15.38","15.39","15.40","15.43","19.1","19.6","20.13","21.1","22.5","22.9","22.13","22.25","22.27","22.33","22.36","22.37","22.42","24.8","26.5","26.6","26.8","26.9","26.12","26.13","26.14","26.15","26.16","26.18","26.20","26.21","26.23","26.24","26.26","26.28","26.36","26.37","26.38","26.41","26.42","26.44","26.45","26.46","26.48","26.49","26.51"],"url":["1.1","3.6","3.7","3.8","3.9","3.10","3.17","3.22","3.28","3.29","5.4","5.5","5.6","5.7","5.24","5.26","5.27","5.29","5.38","5.39","5.40","5.41","5.42","5.43","10.8","10.9","10.10","10.13","10.15","10.16","12.1","12.3","12.4","12.5","12.9","12.11","12.13","12.14","12.15","12.19","12.21","12.23","12.25","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.5","13.6","13.7","13.8","13.9","13.10","13.17","13.28","13.29","13.30","15.1","15.6","15.7","15.15","15.17","15.21","15.24","15.25","15.26","15.27","15.30","15.38","15.39","15.40","15.43","19.1","19.6","21.1","22.3","22.25","22.42","23.5","24.7","24.8","24.16","26.3","26.5","26.8","26.9","26.13","26.14","26.15","26.16","26.17","26.21","26.25","26.26","26.38","26.42","26.45","26.46","26.51"],"全部工具函数请参考以下地址":["1.6"],"js":["1.11","10.8","10.11","10.12","11.2","11.3","11.4","11.5","11.7","11.8","11.9","11.10","11.11","11.12","13.2","13.34","15.5","15.29","22.11","22.21","22.27","22.37","22.38","22.41","22.48","22.51"],"emit":["2.0","12.0"],"focus":["2.0","12.0"],"移除事件":["2.0"],"true":["2.16","2.17","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.39","3.30","5.2","5.3","5.21","6.2","6.4","6.5","9.1","9.6","10.16","12.17","12.20","12.28","13.1","13.20","13.33","15.2","15.3","16.2","16.4","16.5","19.2","19.6","24.16","26.10","26.33","26.47"],"setting":["2.17","2.20","2.28","3.30","9.1","9.6","12.17","12.20","13.30","19.2","19.6","22.7"],"fullscreen":["2.22"],"srt":["2.28","2.29","2.30","2.31","12.31"],"并调用":["2.46"],"但数据意外未出现":["2.58"],"属性名字全部都是大写的形式":["3.0"],"未来容易发生变动":["3.0"],"new":["3.1","3.4","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.23","3.24","3.25","3.26","3.27","3.31","3.32","3.34","10.8","10.9","10.10","10.11","10.12","10.13","10.15","11.1","13.1","13.3","13.4","13.10","13.11","13.12","13.13","13.17","13.18","13.19","13.20","13.21","13.22","13.23","13.24","13.26","13.27","13.28","13.29","13.31","13.32","13.33","15.4","15.5","15.26","15.29","15.42","22.3","22.5","22.6","22.8","22.9","22.12","22.14","22.15","22.16","22.18","22.20","22.21","22.23","22.24","22.26","22.28","22.35","22.36","22.37","22.38","22.44","22.45","22.46","22.48","22.49","22.51","23.9","26.6","26.11","26.22","26.35","26.37","26.41"],"container":["3.1","3.3","3.4","3.11","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.22","3.23","3.24","3.25","3.26","3.27","3.28","3.31","3.32","3.33","3.34","5.5","5.29","10.8","10.9","10.10","10.11","10.12","10.13","10.15","10.16","11.1","13.3","13.6","13.7","13.8","13.9","13.10","13.11","13.17","13.22","13.28","13.29","15.4","15.5","15.6","15.7","15.15","15.17","15.24","15.26","15.27","15.29","15.38","15.39","15.40","15.42","15.43","19.1","20.3","22.5","22.6","22.8","22.9","22.12","22.13","22.14","22.15","22.16","22.20","22.23","22.24","22.27","22.28","22.36","22.37","22.45","22.46","22.49","22.51","23.10","24.8","26.3","26.6","26.8","26.9","26.12","26.13","26.14","26.15","26.16","26.18","26.20","26.21","26.22","26.23","26.24","26.26","26.28","26.36","26.37","26.38","26.41","26.44","26.45","26.46","26.48","26.49","26.51"],"log":["3.2","5.44","15.44"],"art":["3.14","3.15","3.16","3.19","3.20","3.25","3.26","3.31","3.34","10.8","10.9","10.10","10.11","10.13","10.15","11.1","13.1","13.3","13.4","13.11","13.12","13.13","13.14","13.15","13.16","13.18","13.19","13.20","13.21","13.22","13.23","13.24","13.25","13.26","13.27","13.28","13.31","13.32","13.33","15.4","15.5","15.29","15.42","20.9","22.3","22.5","22.6","22.8","22.12","22.14","22.15","22.16","22.18","22.20","22.21","22.23","22.24","22.26","22.36","22.37","22.38","22.44","22.45","22.46","22.48","22.49","22.51","23.9","26.11","26.22","26.27","26.37"],"var":["3.34","10.8","10.9","10.10","10.11","10.12","11.1","13.1","13.4","13.11","13.12","13.13","13.14","13.15","13.16","13.18","13.19","13.20","13.21","13.23","13.24","13.25","13.26","13.27","13.31","13.32","13.33","15.4","15.5","15.29","15.42","22.6","22.8","22.12","22.14","22.15","22.16","22.18","22.20","22.21","22.23","22.24","22.26","22.27","22.35","22.36","22.37","22.38","22.41","22.44","22.45","22.46","22.48","22.49","22.51","26.11","26.35","26.37"],"show":["4.0","6.2","6.3","6.4","14.0","16.2","16.3","16.4"],"block":["4.0","14.0"],"hide":["4.0","14.0"],"controls":["4.0","5.37","15.37","17.1","24.10"],"tooltip":["4.0","7.1","9.7","19.7","26.32"],"muted":["5.2","5.3","5.25","15.2","15.3","26.10"],"seek":["5.11","5.13"],"t":["5.12"],"right":["5.20","5.22","8.3","8.4","14.0","17.1","18.3","18.4","24.10","26.29"],"switch":["5.20","15.12"],"function":["5.20","5.22","6.1","8.1","8.2","8.3","16.1","18.1","18.2","18.3","22.29","22.31","22.32","24.9","24.11","24.13","26.29","26.31"],"theme":["5.44","15.44"],"settimeout":["5.45","6.5","8.5","9.9","10.14","15.45","16.5","18.5","19.9","26.2"],"subtitle":["5.47","12.29","12.30"],"object":["6.1","8.1"],"组件样式对象":["6.1","8.1"],"false":["6.2","6.3","6.4","9.5","13.19","13.31","13.34","16.2","16.3","16.4","19.5","24.6"],"update":["6.5","8.5","9.9"],"组件挂载后触发":["7.1"],"组件的提示文本":["7.1"],"yellow":["7.2","17.2"],"02":["7.2","17.2"],"onselect":["7.2","17.2"],"item":["7.2","9.5","17.2"],"dom":["7.2","17.2"],"args":["7.3","8.2","8.3","17.3","18.2","18.3","22.29","22.31","22.32","26.29","26.31"],"mounted":["7.3","8.2","8.3","17.3","18.2","18.3","24.13"],"style":["7.4","14.0","17.4","20.5","22.32","23.5","24.13","26.32"],"color":["7.4","17.4","22.32","24.4","26.32"],"red":["7.4","17.4"],"control":["7.5","17.5"],"by":["7.5","8.5","9.9","17.5","18.5","19.9","22.2","22.47"],"absolute":["8.4","14.0","18.4"],"top":["8.4","14.0","18.4"],"50px":["8.4","18.4"],"the":["8.5","9.9","18.5","19.9","20.4"],"button":["9.2"],"img":["9.2","9.6","9.7","14.0","19.2","19.5","19.7"],"height":["9.2","9.6","19.2","19.5","20.5","22.1","23.5","26.1"],"src":["9.2","9.5","14.0","19.5","22.39","26.39"],"quality":["9.3","19.3"],"1080p":["9.3","19.3"],"state":["9.5","22.39","24.6","26.39"],"svg":["9.5","9.8","19.5","19.8"],"settings":["9.6","10.4","19.2","19.6"],"slider":["9.6"],"5x":["9.6","9.7","19.6","19.7"],"width":["9.6","9.7","14.0","19.5","19.7","20.5","22.1","23.5","26.1"],"icon":["9.7","19.7"],"range":["9.8","19.8"],"instance":["10.0","23.4"],"which":["10.0","17.1"],"note":["10.1","15.20","15.22","15.41","22.2","22.17","22.19"],"if":["10.1","10.4","15.41","20.11","22.47","24.11","24.12"],"you":["10.1","10.4","15.41","20.6"],"directly":["10.1","20.4"],"regular":["10.2"],"objects":["10.2"],"within":["10.2"],"are":["10.2"],"mouseenter":["10.3"],"instances":["10.4"],"share":["10.4"],"same":["10.4","15.12"],"localstorage":["10.4"],"and":["10.4","12.46","15.12"],"want":["10.4"],"different":["10.4"],"players":["10.4"],"use":["10.4"],"loading":["10.5"],"this":["10.5","22.40"],"is":["10.5","12.48","15.33","20.4"],"using":["10.6"],"can":["10.6","22.40"],"only":["10.6","22.40"],"to":["10.7","11.6","15.20","15.22","20.5","23.5"],"artplayer":["10.8","10.9","10.10","10.11","10.12","10.13","10.15","10.16","13.34","15.4","15.6","15.15","15.17","15.26","15.29","15.38","15.39","15.40","15.42","22.3","22.5","22.6","22.8","22.9","22.12","22.13","22.14","22.15","22.16","22.18","22.20","22.23","22.24","22.26","22.28","22.35","22.36","22.37","22.38","22.44","22.45","22.46","22.49","22.51","26.6","26.11","26.12","26.18","26.20","26.22","26.23","26.24","26.28","26.35","26.37","26.38","26.41","26.44","26.48","26.49","26.51"],"classname":["10.11","13.34","22.11","22.22"],"run":["10.11","13.34","22.11","22.22"],"code":["10.11","13.34","15.5","22.11","22.22","22.41"],"flip":["10.16"],"playbackrate":["10.16"],"constructor":["11.0"],"please":["11.6"],"refer":["11.6"],"removing":["12.0"],"through":["12.42"],"end":["12.43"],"without":["12.43"],"duration":["12.45"],"partially":["12.46"],"reached":["12.47"],"not":["12.48","20.4"],"has":["12.49"],"delayed":["12.53"],"due":["12.53","15.20","15.22","22.17"],"loads":["12.54"],"changed":["12.55"],"completed":["12.56"],"begun":["12.57"],"been":["12.59"],"property":["12.60"],"lack":["12.62"],"these":["13.0","22.19"],"subject":["13.0"],"change":["13.0"],"div":["13.34","20.13","22.22","23.13"],"ads":["14.0"],"100px":["14.0"],"display":["14.0","24.13"],"none":["14.0"],"20px":["14.0"],"have":["15.12","15.16"],"functionality":["15.12"],"a":["15.16","21.0"],"such":["15.16"],"as":["15.16"],"live":["15.16"],"streams":["15.16"],"or":["15.16","17.1","22.1"],"browser":["15.20","15.22","22.17"],"security":["15.20","15.22","22.17"],"mechanisms":["15.22","22.17"],"jpg":["15.23"],"json":["15.28"],"stringify":["15.28"],"useful":["15.33"],"but":["15.33"],"need":["15.41"],"certain":["15.41"],"left":["17.1"],"side":["17.1"],"bun":["20.1","23.1"],"com":["20.2","20.11","23.2","23.11"],"of":["20.3"],"its":["20.3"],"therefore":["20.3"],"must":["20.3"],"reactive":["20.4"],"modifying":["20.4"],"600px":["20.5","23.5"],"400px":["20.5","22.1","26.1"],"margin":["20.5"],"60px":["20.5"],"auto":["20.5"],"when":["20.6","21.0"],"null":["20.8","23.8"],"volume":["20.9"],"option":["20.10","23.10"],"tip":["20.11"],"lang":["20.12","21.2","21.3"],"en":["20.12","23.12"],"head":["20.12","23.12"],"meta":["20.12","20.13","23.12"],"charset":["20.12","20.13","23.12"],"utf":["20.12","20.13","23.12"],"body":["20.13","23.13"],"class":["20.13","23.13"],"require":["21.0"],"cannot":["21.0"],"be":["21.0"],"matched":["21.0"],"script":["21.2","25.2"],"play":["21.4","22.19","25.4"],"css":["22.1"],"300px":["22.1","26.1"],"three":["22.2"],"file":["22.2"],"formats":["22.2"],"caches":["22.7"],"last":["22.7"],"upon":["22.7","22.10"],"immediately":["22.10"],"page":["22.10"],"load":["22.10"],"space":["22.19"],"toggle":["22.19"],"pause":["22.19"],"devices":["22.22"],"older":["22.22"],"browsers":["22.22"],"document":["22.27"],"queryselector":["22.27"],"opacity":["22.29","26.29"],"setting02":["22.30","26.30"],"green":["22.32","26.32"],"one":["22.34","26.34"],"more":["22.34","26.34"],"chance":["22.34","26.34"],"ploading":["22.39","26.39"],"gif":["22.39","26.39"],"recognition":["22.40"],"player":["22.40"],"parse":["22.40"],"suffixes":["22.40"],"like":["22.40"],"cache":["22.47"],"progress":["22.47"],"however":["22.47"],"for":["22.47"],"播放器的尺寸依赖于容器":["23.3"],"getinstance":["23.4"],"path":["23.5"],"ts":["23.6"],"types":["23.10"],"const":["23.10"],"unpkg":["23.11"],"title":["23.12"],"pnpm":["24.2"],"ffffff":["24.4"],"弹幕颜色":["24.4"],"默认为白色":["24.4"],"promise":["24.5"],"beforevisible":["24.5"],"弹幕显示前的过滤器":["24.5"],"visible":["24.5"],"弹幕层是否可见":["24.5"],"emitter":["24.5"],"是否开启弹幕发射器":["24.5"],"maxlength":["24.5"],"弹幕输入框最大长度":["24.5"],"await":["24.6"],"这里是所有弹幕的过滤器":["24.6"],"包含来自服务端的和来自用户输入的":["24.6"],"plugins":["24.9","24.15","24.16","24.17"],"artplayerplugindanmuku":["24.9","24.15","24.16","24.17"],"xml":["24.10"],"隐藏弹幕":["24.10"],"prompt":["24.12"],"请输入弹幕文本":["24.12"],"弹幕测试文本":["24.12"],"trim":["24.12"],"value":["24.13"],"flex":["24.13"],"alignitems":["24.13"],"center":["24.13"],"切换到新的弹幕库":["24.14"],"config":["24.14"],"v2":["24.14"],"fullscreenweb":["24.16"],"stop":["24.18"],"弹幕停止":["24.18"],"start":["24.18"],"弹幕开始":["24.18"],"当无法匹配到语言时":["25.0"],"会默认显示英文":["25.0"],"i18n":["25.0","25.3"],"或者使用":["26.1"],"aspect":["26.1"],"热键":["26.19"],"描述":["26.19"],"增加音量":["26.19"],"降低音量":["26.19"],"innerhtml":["26.27"],"sd":["26.33"],"后缀的识别":["26.40"],"播放器只能解析这种后缀":["26.40"],"因为播放器默认使用":["26.47"]},{"0":["23.5"],"2":["5.31"],"4":["22.22"],"5":["5.8","5.9","5.15","15.8","26.7"],"8":["2.0","12.0","20.12"],"9":["5.32","22.1"],"10":["5.11","5.13","15.11","15.13"],"16":["5.32","15.32","22.1","24.12","26.1"],"22":["19.6"],"60":["22.36","24.5","26.36"],"120":["22.34"],"180":["22.34","26.34"],"200":["24.6"],"240":["26.34"],"360":["9.3"],"720":["9.3","19.3"],"1000":["0.8","0.9","0.10","0.16","24.5","26.2"],"1080":["9.3","19.3"],"5000":["0.14","10.14"],"比较少用":["0.0"],"warning":["0.1","0.5","0.6","0.7","0.8","5.16","5.20","5.22","5.28","5.33","5.41","10.3","10.7","10.14","15.28","20.5","20.13","22.29","22.30","22.31","22.32","22.39","22.42","22.50","23.13","26.2","26.4","26.7","26.17","26.19","26.31","26.32","26.39","26.42","26.50"],"提示":["0.1","5.16","5.20","5.22","5.33","26.2","26.7","26.10","26.17"],"假如直接修改这个":["0.1"],"元素都是以":["0.2"],"开头命名的":["0.2"],"这是所有":["0.2"],"元素的定义":["0.2"],"mouseenter":["0.3"],"mouseleave":["0.3","10.3"],"loading":["0.5","12.49"],"这是所有图标的定义":["0.5"],"types":["0.5","1.6","11.6","25.0","26.50"],"使用":["0.6","24.9"],"只能更新实例化之后的":["0.6"],"to":["0.7","22.2"],"play":["0.7","4.0","5.2","10.7","15.2","21.3","22.2","25.3"],"如果想马上隐藏":["0.7"],"settimeout":["0.8","0.9","0.10","0.12","0.13","0.14","0.15","0.16","5.2","5.3","5.8","5.11","5.13","5.21","6.4","7.4","8.4","9.8","10.8","10.9","10.10","10.16","15.2","15.8","15.11","15.13","16.4","17.4","18.4","19.8"],"false":["0.8","0.9","0.10","0.15","0.16","22.29","22.31","24.4","26.29","26.31"],"left":["0.9","7.1","10.9"],"true":["0.10","0.12","0.13","2.19","3.5","3.6","3.7","3.28","3.29","5.1","5.14","5.25","5.34","6.3","10.10","12.16","12.19","12.21","12.22","12.23","12.24","12.25","12.26","12.39","13.5","13.6","13.7","13.28","13.29","13.30","15.1","15.21","15.25","15.34","16.3","19.1","22.25","22.33","26.17","26.25"],"srt":["0.11","5.47","12.28","12.29","12.30","15.47"],"ready":["0.12","5.2","5.3","5.5","5.6","5.7","5.8","5.10","5.17","5.21","5.24","5.25","5.26","5.27","5.29","6.4","7.4","8.4","9.8","10.8","10.9","10.10","10.11","10.12","10.13","10.15","10.16","12.0","12.6","15.2","15.3","15.5","15.8","15.10","15.15","15.17","15.18","15.19","15.21","15.25","15.26","15.29","15.30","16.4","17.4","18.4","19.8","24.17"],"on":["0.17","2.1","2.3","2.4","2.5","2.7","2.8","2.9","2.10","2.13","2.14","2.15","2.16","2.17","2.19","2.20","2.21","2.23","2.25","2.26","2.27","2.28","2.29","2.30","2.31","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","2.41","3.8","3.9","3.10","3.17","5.1","5.2","5.3","5.4","5.5","5.6","5.7","5.17","5.24","5.25","5.26","5.27","5.29","5.38","5.39","5.40","5.47","8.4","9.8","10.8","10.11","10.12","10.13","10.15","10.16","12.1","12.3","12.4","12.5","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.17","12.19","12.20","12.21","12.23","12.25","12.26","12.27","12.28","12.29","12.30","12.31","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.8","13.9","13.10","13.17","15.1","15.2","15.3","15.5","15.6","15.7","15.8","15.10","15.15","15.17","15.18","15.19","15.20","15.21","15.22","15.24","15.25","15.26","15.27","15.29","15.38","15.39","15.40","15.47","17.1","18.4","19.8","24.15","24.17","26.4"],"非常少使用":["1.0"],"sample":["1.1","3.1","3.3","3.4","3.11","3.12","3.13","3.18","3.21","3.22","3.23","3.24","3.27","3.31","3.32","3.33","3.34","5.4","5.5","5.43","10.11","10.12","11.1","13.8","13.9","13.10","13.11","13.12","13.13","13.17","13.21","13.22","13.23","13.24","13.28","13.33","13.34","15.4","15.5","15.6","15.7","15.17","15.24","15.27","15.29","15.38","15.39","15.40","15.42","15.43","20.10","22.5","22.6","22.8","22.9","22.12","22.13","22.14","22.15","22.16","22.18","22.20","22.23","22.24","22.26","22.28","22.35","22.37","22.38","22.41","22.44","22.45","22.46","22.49","22.51","23.10","24.8","26.6","26.8","26.9","26.11","26.12","26.13","26.14","26.15","26.16","26.18","26.20","26.21","26.22","26.23","26.24","26.26","26.28","26.35","26.38","26.41","26.44","26.45","26.46","26.48","26.49","26.51"],"video":["1.1","3.8","3.9","3.10","3.11","3.12","3.13","3.17","3.21","3.22","3.23","3.24","3.31","3.33","5.4","5.5","5.42","10.11","10.13","10.15","11.1","12.1","12.14","13.6","13.7","13.8","13.9","13.10","13.17","13.22","13.28","15.4","15.24","15.26","15.29","15.39","15.42","19.1","20.10","21.1","22.9","22.13","22.28","22.36","23.10","24.8","26.5","26.6","26.8","26.9","26.12","26.13","26.14","26.15","26.16","26.18","26.20","26.21","26.22","26.23","26.24","26.26","26.28","26.37","26.38","26.42","26.44","26.45","26.46","26.48","26.49"],"mp4":["1.1","3.8","3.9","3.10","3.17","3.22","3.28","3.34","5.4","5.5","5.6","5.7","5.24","5.27","5.29","5.38","5.40","5.42","5.43","10.11","10.12","10.13","10.15","12.1","12.3","12.4","12.11","12.14","12.19","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.40","13.5","13.6","13.7","13.8","13.9","13.10","13.17","13.22","13.28","13.29","13.34","15.4","15.5","15.6","15.7","15.15","15.17","15.24","15.26","15.27","15.29","15.38","15.39","15.40","15.42","15.43","19.1","20.10","21.1","22.5","22.25","22.36","22.37","22.38","22.42","23.10","24.7","24.8","26.5","26.8","26.9","26.13","26.14","26.15","26.16","26.17","26.21","26.26","26.37","26.38","26.42","26.45","26.46","26.51"],"artplayer":["1.2","1.3","1.4","1.5","1.7","1.8","1.9","1.10","1.11","1.12","3.2","11.2","11.3","11.4","11.5","11.7","11.8","11.9","11.10","11.11","11.12","13.2","22.11","22.21","22.22","22.41","22.48"],"d":["1.6"],"info":["1.11","2.12","5.15","5.26","5.29","5.30","5.41","5.42","9.5","11.2","11.3","11.4","11.5","11.7","11.8","11.9","11.10","11.11","11.12","15.9","15.14","15.15","15.23","15.26","15.29","15.30","15.31","15.32","15.35","15.36","19.5","24.17","26.32"],"const":["2.0","5.18","5.19","9.5","12.0","15.18","15.19","19.5","20.10","24.13"],"onready":["2.0","12.0"],"console":["2.1","2.3","2.4","2.5","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.17","2.18","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.27","2.29","2.30","2.31","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.40","2.41","5.25","5.26","5.29","5.39","5.41","5.42","5.43","9.5","11.2","11.3","11.4","11.5","11.7","11.8","11.9","11.10","11.11","11.12","12.5","12.7","12.8","12.9","12.10","12.12","12.13","12.15","12.27","12.31","12.41","15.9","15.14","15.15","15.23","15.26","15.29","15.30","15.31","15.35","15.36","15.42","15.43","19.5","20.5","23.5","24.17","26.32"],"event":["2.5","2.7","2.8","2.9","2.10","2.12","2.13","2.22","2.41","5.41","9.2","9.5","12.5","12.7","12.8","12.9","12.10","12.12","12.13","12.22","18.1"],"reconnecttime":["2.11","12.11"],"state":["2.12","2.15","2.16","2.21","2.23","2.24","2.25","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","9.2","9.6","9.7","12.12","12.15","12.21","12.23","12.24","12.25","12.32","12.33","12.34","12.35","12.36","12.37","12.38","19.2","19.7"],"height":["2.18","9.7","19.6","19.7"],"datauri":["2.26","12.26"],"currenttime":["2.27","12.27"],"offset":["2.28"],"cues":["2.29","2.30","2.31","12.29","12.30","12.31"],"option":["2.31","12.31"],"load":["2.46","12.46"],"方法重新加载它":["2.46"],"基本上用不到":["3.0"],"app":["3.1","3.4","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.24","3.25","3.26","3.27","3.31","3.32","3.34","10.11","10.12","11.1","13.1","13.3","13.4","13.11","13.12","13.13","13.14","13.15","13.16","13.18","13.19","13.20","13.21","13.22","13.23","13.24","13.25","13.26","13.27","13.31","13.32","13.33","13.34","15.4","15.5","15.42","20.10","22.3","22.6","22.8","22.11","22.12","22.14","22.15","22.16","22.18","22.20","22.21","22.22","22.23","22.24","22.26","22.28","22.35","22.38","22.41","22.44","22.45","22.46","22.48","22.49","22.51","23.10","23.13","26.3","26.11","26.22","26.35"],"url":["3.1","3.3","3.4","3.11","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.23","3.24","3.25","3.26","3.27","3.31","3.32","3.33","3.34","10.12","11.1","13.1","13.3","13.4","13.11","13.12","13.13","13.14","13.15","13.16","13.18","13.19","13.20","13.21","13.22","13.23","13.24","13.25","13.26","13.27","13.31","13.32","13.33","13.34","15.4","15.5","15.29","15.42","20.10","22.5","22.6","22.8","22.9","22.11","22.12","22.13","22.14","22.15","22.16","22.18","22.20","22.21","22.22","22.23","22.24","22.26","22.28","22.35","22.38","22.44","22.45","22.46","22.48","22.49","22.51","23.10","26.6","26.11","26.12","26.18","26.20","26.22","26.23","26.24","26.27","26.28","26.35","26.44","26.48","26.49"],"assets":["3.1","3.3","3.4","3.11","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.22","3.23","3.24","3.25","3.26","3.27","3.31","3.32","3.33","3.34","10.11","10.12","11.1","13.3","13.4","13.8","13.9","13.10","13.11","13.12","13.13","13.17","13.18","13.21","13.22","13.23","13.24","13.31","13.32","13.33","13.34","15.4","15.5","15.29","15.42","15.43","20.10","22.5","22.6","22.8","22.9","22.12","22.13","22.14","22.15","22.16","22.18","22.20","22.21","22.22","22.23","22.24","22.26","22.28","22.35","22.37","22.38","22.41","22.44","22.45","22.46","22.48","22.49","22.51","23.10","26.3","26.6","26.8","26.9","26.11","26.12","26.13","26.14","26.15","26.16","26.18","26.20","26.21","26.22","26.23","26.24","26.26","26.27","26.28","26.35","26.38","26.41","26.44","26.45","26.46","26.48","26.49","26.51"],"loop":["3.5","3.6","3.7","13.5","13.6","13.7"],"flip":["3.5","3.6","3.7","13.5","13.6","13.7"],"dblclick":["3.17"],"setting":["3.28","3.29","12.28","13.28","13.29","19.1","24.13"],"playbackrate":["3.28","13.28"],"contextmenu":["3.28","3.29","3.30","13.29","13.30"],"aspectratio":["3.29","10.16","13.29"],"show":["3.29","3.30","9.8","13.30","19.8","22.29","22.31","24.11","24.18","26.29","26.31"],"click":["4.0","5.37","5.41","14.0","15.37"],"marginright":["4.0","14.0"],"比较常用":["5.0"],"muted":["5.1","15.1","15.25"],"seek":["5.8","15.8","15.11","15.13"],"switch":["5.12"],"和":["5.12","7.1","24.5"],"的功能是一样的":["5.12"],"只是":["5.12"],"有的视频是没有时长的":["5.16"],"async":["5.18","5.19","15.18","15.19"],"await":["5.18","5.19","15.18","15.19"],"t":["5.23"],"json":["5.28"],"stringify":["5.28"],"resize":["5.33","24.15"],"当你的容器只有宽度":["5.33"],"playsinline":["5.34","15.34"],"m3u8":["5.35","22.2","26.41"],"000":["5.36"],"right":["5.37","7.1","15.37"],"html":["5.37","10.8","10.9","10.10","15.37"],"timeupdate":["5.39"],"green":["5.44","15.44"],"1080p":["5.45","15.45"],"png":["5.46","15.46","22.36","22.39","26.36","26.39"],"组件点击事件":["6.1","8.1"],"mounted":["6.1","8.1","16.1","18.1","22.29","26.29"],"组件挂载后触发":["6.1","8.1"],"get":["6.2","6.3","7.2","7.3","8.2","8.3","16.2","16.3","17.2","17.3","18.2","18.3"],"the":["6.2","6.3","6.4","6.5","7.2","7.3","7.4","8.2","8.3","8.4","9.8","16.2","16.3","16.4","16.5","17.2","17.3","17.4","18.2","18.3","18.4","19.8","22.19"],"element":["6.2","6.3","7.2","7.3","8.2","8.3","16.2","16.3","17.2","17.3","18.2","18.3"],"of":["6.2","6.3","7.2","7.3","8.2","8.3","10.5","12.53","16.2","16.3","17.2","17.3","18.2","18.3"],"by":["6.2","6.3","6.4","6.5","7.2","7.4","8.4","16.2","16.3","16.4","16.5","17.2","17.4","18.4","21.0"],"delete":["6.4","7.4","8.4","9.8","16.4","17.4","18.4","19.8"],"控制控制器出现的左右位置":["7.1"],"selector":["7.1","17.1"],"array":["7.1","17.1"],"return":["7.2","17.2"],"control":["7.2","7.3","7.4","17.2","17.3","17.4"],"200px":["8.5","18.5"],"svg":["9.2","9.6","9.7","19.2","19.6","19.7"],"item":["9.2","9.6","19.2"],"720p":["9.3","19.3"],"360p":["9.3","19.3"],"nextstate":["9.5","19.5"],"src":["9.6","9.7","19.2","19.6","19.7"],"pip":["9.9","19.9"],"mode":["9.9","19.9"],"close":["9.9","19.9"],"are":["10.0","11.0","15.0","22.2"],"less":["10.0"],"commonly":["10.0","15.0"],"modify":["10.1","10.4","20.11","20.13"],"this":["10.1","10.2"],"object":["10.1"],"named":["10.2"],"with":["10.2","20.12","23.12"],"a":["10.2","12.48","15.12","15.20","15.22"],"prefix":["10.2"],"is":["10.2","15.12","20.5","22.47"],"definition":["10.2","10.5"],"note":["10.3","10.14","15.28","20.13","22.4"],"if":["10.3","10.6","10.7","22.4","22.17"],"you":["10.3","10.6","10.7","22.47"],"need":["10.3","20.11","20.13","22.47"],"that":["10.3","15.16"],"should":["10.3"],"only":["10.3","10.14","15.5","15.41","22.19"],"exist":["10.3","15.41"],"during":["10.3"],"can":["10.4"],"after":["10.6","10.14","16.1","18.1","22.19"],"instantiation":["10.6"],"want":["10.6","10.7"],"before":["10.6","20.13"],"hide":["10.7","24.18"],"some":["10.8","10.9","10.10"],"text":["10.8","10.9","10.10","24.7","24.9"],"position":["10.9","15.37"],"these":["10.14"],"take":["10.14","22.19"],"effect":["10.14","22.19"],"subtitleoffset":["10.16"],"something":["10.17"],"dosomething":["10.17"],"which":["11.0","15.0"],"rarely":["11.0"],"following":["11.6","20.11"],"address":["11.6"],"off":["12.0"],"end":["12.42","12.47"],"without":["12.42"],"stopping":["12.42","12.43"],"for":["12.42","12.43","21.0","22.10","22.30","22.31","22.32","22.50"],"property":["12.45"],"changes":["12.45"],"method":["12.46","15.12"],"called":["12.46"],"its":["12.47"],"supported":["12.48","22.2"],"finished":["12.49"],"lack":["12.53"],"resource":["12.54"],"unexpectedly":["12.58"],"not":["12.58","20.5"],"suspended":["12.59"],"has":["12.60"],"changed":["12.60"],"data":["12.62"],"future":["13.0"],"and":["13.0","20.11"],"container":["13.1","13.4","13.12","13.13","13.14","13.15","13.16","13.18","13.19","13.20","13.21","13.23","13.24","13.25","13.26","13.27","13.31","13.32","13.33","13.34","20.10","22.3","22.18","22.21","22.22","22.26","22.35","22.38","22.41","22.44","22.48","23.3","26.35"],"log":["13.2","20.5","23.5"],"new":["13.14","13.15","13.16","13.25","13.34","20.8","20.9","22.11","22.22","22.27","22.41","23.8","26.27"],"var":["13.34","22.11","22.22"],"art":["13.34","22.11","22.22","22.27"],"controls":["14.0"],"tooltip":["14.0","16.1"],"returns":["15.12"],"promise":["15.12","24.9"],"it":["15.12","15.33","15.41","20.13"],"resolve":["15.12"],"s":["15.12","15.41"],"been":["15.16"],"fully":["15.16"],"decoded":["15.16"],"in":["15.16","20.4"],"mechanisms":["15.20"],"user":["15.20","15.22"],"interaction":["15.20","15.22"],"e":["15.20","15.22","22.7"],"g":["15.20","15.22","22.7"],"dimension":["15.28"],"exact":["15.33"],"unknown":["15.33"],"lifecycle":["15.41"],"triggered":["16.1","18.1"],"mount":["16.1","18.1"],"appears":["17.1"],"objects":["17.1"],"selection":["17.1"],"list":["17.1"],"img":["19.6"],"width":["19.6"],"have":["20.3"],"defined":["20.3"],"tip":["20.3","20.9","23.9","23.11"],"see":["20.3"],"more":["20.3","22.10","22.42"],"will":["20.4"],"reactive":["20.5"],"import":["20.6","20.12","23.12"],"current":["20.8","23.8"],"full":["20.9"],"typescript":["20.9","23.9"],"support":["20.11"],"even":["20.11"],"older":["20.11"],"configuration":["20.11","22.31","22.32"],"title":["20.12"],"map":["20.12","23.12"],"displayed":["21.0"],"default":["21.0"],"i18n":["21.0","21.3"],"syntax":["21.0","22.50"],"lang":["21.1","25.1"],"window":["21.2","25.2"],"imported":["21.4","25.4"],"use":["22.1"],"aspect":["22.1"],"ratio":["22.1","26.1"],"ogg":["22.2","26.2"],"webm":["22.2","26.2"],"other":["22.2"],"like":["22.2"],"or":["22.2"],"flv":["22.2"],"inside":["22.4"],"callback":["22.4"],"refers":["22.4"],"instance":["22.4"],"however":["22.4"],"an":["22.4"],"arrow":["22.4"],"next":["22.7"],"initialization":["22.7"],"page":["22.7"],"refresh":["22.7"],"must":["22.10"],"be":["22.10"],"set":["22.10"],"screenshotting":["22.17"],"may":["22.17"],"fail":["22.17"],"source":["22.17"],"player":["22.19"],"gains":["22.19"],"focus":["22.19"],"js":["22.22"],"innerhtml":["22.27"],"component":["22.31","22.32"],"please":["22.32"],"refer":["22.32"],"sd":["22.33"],"480p":["22.33","26.33"],"谁でもいいはずなのに":["22.34","26.34"],"夏の想い出がまわる":["22.34","26.34"],"all":["22.39"],"icon":["22.39"],"but":["22.40"],"cannot":["22.40"],"zh":["22.43","26.43"],"cn":["22.43","26.43"],"same":["22.47"],"different":["22.47"],"then":["22.47"],"reference":["22.50"],"的尺寸":["23.3"],"所以你的容器":["23.3"],"必须是有尺寸的":["23.3"],"非响应式":["23.4"],"在":["23.4"],"400px":["23.5"],"margin":["23.5"],"60px":["23.5"],"auto":["23.5"],"全部":["23.9"],"定义":["23.9"],"volume":["23.10"],"假如你要兼容更古老的浏览器时":["23.11"],"请修改以下配置然后自行构建":["23.11"],"body":["23.12"],"border":["24.4"],"弹幕是否有描边":["24.4"],"默认为":["24.4"],"locktime":["24.5"],"输入框锁定时间":["24.5"],"theme":["24.5"],"dark":["24.5","24.16"],"弹幕主题":["24.5"],"支持":["24.5"],"length":["24.6"],"这是弹幕即将显示的时触发的函数":["24.6"],"当返回true后才表示可以马上发送到播放器里":["24.6"],"弹幕已经出现在播放器里":["24.6"],"你可以访问到弹幕的dom元素里":["24.6"],"plugins":["24.7","24.8"],"artplayerplugindanmuku":["24.7","24.8"],"resovle":["24.9"],"function":["24.10","26.32"],"target":["24.11"],"innertext":["24.11"],"else":["24.11"],"color":["24.12"],"math":["24.12"],"floor":["24.12"],"random":["24.12"],"0xffffff":["24.12"],"tostring":["24.12"],"queryselector":["24.13"],"addeventlistener":["24.13"],"追加":["24.14"],"追加新的弹幕库":["24.14"],"参数类型和option":["24.14"],"danmuku相同":["24.14"],"xml":["24.15","24.17"],"弹幕隐藏":["24.18"],"弹幕显示":["24.18"],"写法参考":["25.0","26.50"],"默认支持三种视频文件格式":["26.2"],"播放器会缓存最后一次音量的大小":["26.7"],"假如希望默认进入页面就能自动播放视频":["26.10"],"必需为":["26.10"],"视频快进":["26.19"],"视频快退":["26.19"],"space":["26.19"],"切换播放":["26.19"],"暂停":["26.19"],"subtitle":["26.25"],"args":["26.32"],"hd":["26.33"],"webkit":["26.38"],"全部图标的定义":["26.39"],"但无法解析这种后缀":["26.40"],"作为":["26.47"],"key":["26.47"],"来缓存播放进度的":["26.47"],"但假如你的同一个视频的":["26.47"]},{"0":["5.10","5.11","5.13","5.16","5.23","15.10","15.11","15.13","15.16","15.23","20.10","23.10"],"1":["5.47","9.7","15.47","19.7","24.7","24.9"],"2":["5.8","15.8","15.31"],"5":["5.6","5.7","9.7","15.6","15.7","15.9","15.15","19.7","20.10","23.10"],"9":["15.32","26.1"],"10":["5.46","9.7","15.46","19.7","22.36","26.36"],"60":["5.46","15.46"],"240":["22.34"],"300":["22.34","26.34"],"360":["19.3"],"404":["3.14","3.15","13.14","13.15"],"1000":["0.13","0.15","10.8","10.9","10.10","10.13","10.15","10.16"],"3000":["0.12","5.2","5.3","5.8","5.11","5.13","5.21","5.45","6.4","6.5","7.4","7.5","8.4","8.5","9.8","9.9","10.12","15.2","15.3","15.8","15.11","15.13","15.21","15.45","16.4","16.5","17.4","17.5","18.4","18.5","19.8","19.9"],"对象":["0.1"],"播放器不会马上做出响应":["0.1"],"types":["0.2","2.0","10.2","10.5","20.9","21.0","22.39","22.50","23.9","26.39"],"d":["0.2","0.5","2.0","10.2","10.5","11.6","12.0","21.0","22.39","22.50","25.0","26.39","26.50"],"ts":["0.2","0.5","1.6","2.0","10.2","10.5","11.6","12.0","21.0","22.39","22.50","25.0","26.39","26.50"],"warning":["0.3","0.9","0.10","0.14","0.16","2.0","10.8","10.9","10.10","10.16","12.0","22.1","22.36","22.43","23.5","26.1","26.29","26.30","26.36","26.43"],"提示":["0.3","0.14","5.28","5.41","23.13","26.1","26.4","26.19"],"假如你需要一些":["0.3","5.41"],"事件只存在于播放器的生命周期上时":["0.3","5.41"],"强烈建议使用这些函数":["0.3"],"以避免造成内存泄漏":["0.3","5.41"],"your":["0.4","5.17","10.4","15.17"],"假如想在实例化之前更新":["0.6"],"请使用基础选项的":["0.6"],"来更新":["0.6"],"的显示":["0.7"],"组件配置":["0.8","0.9","0.10","26.29","26.31","26.32"],"请参考以下地址":["0.8","0.9","0.10","0.16","26.29","26.30","26.31","26.32"],"component":["0.8","0.9","0.10","0.16","10.8","10.9","10.10","10.16","22.29","22.30","26.29","26.30","26.31","26.32"],"color":["0.11","10.11","22.37","26.37"],"red":["0.11","10.11"],"false":["0.12","0.13","5.21","9.9","10.8","10.9","10.10","10.12","10.13","10.15","10.16","15.21","19.9","22.22","22.45","26.22","26.45"],"只在播放器获得焦点后":["0.14","26.19"],"如点击了播放器后":["0.14","26.19"],"这些快捷键才会生效":["0.14","26.19"],"true":["0.15","3.11","3.12","3.13","3.21","3.22","3.23","3.24","5.24","10.12","10.13","10.15","13.11","13.12","13.13","13.21","13.22","13.23","13.24","15.14","15.24","22.8","22.9","22.11","22.12","22.13","22.14","22.15","22.16","22.18","22.20","22.23","22.24","22.26","22.27","22.38","22.44","22.46","22.48","22.49","24.12","26.8","26.9","26.11","26.12","26.13","26.14","26.15","26.16","26.18","26.20","26.23","26.24","26.26","26.27","26.38","26.44","26.46","26.48","26.49"],"设置面板":["0.16"],"html":["0.16","10.16","20.1","22.42","22.43","23.1","24.2","26.42","26.43"],"ready":["0.17","2.0","5.1","5.4","5.47","10.17","15.1","15.4","15.6","15.7","15.24","15.27","15.47"],"off":["2.0"],"全部事件请参考以下地址":["2.0"],"events":["2.0"],"info":["2.1","2.2","2.3","2.4","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.13","2.14","2.15","2.16","2.17","2.18","2.19","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.27","2.28","2.29","2.30","2.31","5.18","5.19","5.25","5.38","5.39","5.40","5.43","9.2","9.6","12.1","12.2","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.17","12.18","12.19","12.20","12.21","12.22","12.23","12.24","12.25","12.26","12.27","12.28","12.29","12.30","12.31","15.18","15.19","15.25","15.38","15.39","15.40","15.42","15.43","19.2","19.6"],"console":["2.2","2.6","2.19","2.28","2.39","3.8","3.9","3.10","3.17","5.18","5.19","5.38","5.40","9.2","9.6","12.1","12.2","12.3","12.4","12.6","12.11","12.14","12.16","12.17","12.18","12.19","12.20","12.21","12.22","12.23","12.24","12.25","12.26","12.28","12.29","12.30","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","13.8","13.9","13.10","13.17","15.18","15.19","15.25","15.38","15.39","15.40","19.2","19.6"],"log":["2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","2.41","3.8","3.9","3.10","3.17","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.8","13.9","13.10","13.17"],"video":["3.1","3.3","3.4","3.16","3.18","3.19","3.20","3.25","3.26","3.27","3.32","13.3","13.4","13.11","13.12","13.13","13.16","13.18","13.19","13.20","13.21","13.23","13.24","13.25","13.26","13.27","13.31","13.32","13.33","22.3","22.6","22.8","22.11","22.12","22.18","22.20","22.21","22.22","22.23","22.24","22.26","22.27","22.35","22.44","22.49","26.3","26.11","26.27","26.35"],"mp4":["3.1","3.3","3.4","3.11","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.23","3.24","3.25","3.26","3.27","3.31","3.32","3.33","11.1","13.1","13.3","13.4","13.11","13.12","13.13","13.14","13.15","13.16","13.18","13.19","13.20","13.21","13.23","13.24","13.25","13.26","13.27","13.31","13.32","13.33","22.3","22.6","22.8","22.9","22.11","22.12","22.13","22.14","22.15","22.16","22.18","22.20","22.21","22.22","22.23","22.24","22.26","22.27","22.28","22.35","22.44","22.45","22.46","22.48","22.49","22.51","26.3","26.6","26.11","26.12","26.18","26.20","26.22","26.23","26.24","26.27","26.28","26.35","26.44","26.48","26.49"],"playbackrate":["3.5","3.6","3.7","13.5","13.6","13.7"],"aspectratio":["3.5","3.6","3.7","13.5","13.6","13.7"],"autoplayback":["3.11","3.12","3.13","13.11","13.12","13.13"],"sample":["3.14","3.15","3.16","3.19","3.20","3.25","3.26","13.1","13.3","13.4","13.14","13.15","13.16","13.18","13.19","13.20","13.25","13.26","13.27","13.31","13.32","22.3","22.11","22.21","22.22","22.27","22.48","26.3","26.27"],"autoorientation":["3.21","13.21"],"show":["3.22","3.28","13.22","13.28","13.29"],"fastforward":["3.23","3.24","13.23","13.24"],"fullscreenweb":["3.31","13.31"],"miniprogressbar":["3.33","13.33"],"只销毁界面":["3.34"],"不主动清空":["3.34"],"pause":["4.0","14.0"],"layer":["4.0","14.0"],"png":["4.0","14.0"],"仅重置":["5.5"],"不移除界面":["5.5"],"t":["5.10","5.11","5.13","15.10","15.11","15.13","15.23"],"方法会返回":["5.12"],"promise":["5.12"],"当":["5.12"],"resolve":["5.12"],"时表示新地址是可以播放":["5.12"],"reject":["5.12","15.12"],"时表示新地址加载错误":["5.12"],"例如直播中的视频或者没被解码完成的视频":["5.16"],"这个时候获取的时长会是":["5.16"],"name":["5.17","15.17"],"由于浏览器安全机制":["5.20","5.22","26.17"],"触发窗口全屏前":["5.20"],"页面必须先存在交互":["5.20","5.22"],"例如用户点击过页面":["5.20","5.22"],"触发画中画前":["5.22"],"默认":["5.26"],"尺寸和坐标信息是通过":["5.28"],"getboundingclientrect":["5.28","15.28"],"获取的":["5.28"],"但不知道具体高度时":["5.33"],"这个属性很有用":["5.33"],"它能自动计算出视频的高度":["5.33"],"但你需要确定设置这个属性的时机":["5.33"],"强烈建议使用该函数":["5.41"],"4k":["5.45","15.45"],"number":["5.46","15.46","24.13"],"column":["5.46","15.46"],"tooltip":["6.1","8.1","18.1"],"组件的提示文本":["6.1","8.1"],"remove":["6.4","7.4","8.4","9.8","16.4","17.4","18.4"],"选择列表的对象数组":["7.1"],"onselect":["7.1","17.1"],"选择列表的元素被点击时触发的函数":["7.1"],"by":["7.3","8.2","8.3","9.8","17.3","18.2","18.3","19.8"],"left":["8.5","18.5","22.2"],"return":["9.2","9.5","9.6","19.2","19.5","19.6"],"switchquality":["9.3","19.3"],"open":["9.5","19.5"],"event":["9.6"],"x":["9.6","19.6"],"range":["9.7","19.7"],"switch":["9.9","19.9"],"used":["10.0","11.0","13.0","15.0","22.4"],"will":["10.1","15.16","20.5","22.4","22.7"],"not":["10.1","13.34","15.5","22.4"],"respond":["10.1"],"immediately":["10.1","10.7"],"s":["10.3","22.40"],"lifecycle":["10.3"],"strongly":["10.3","15.41"],"recommended":["10.3","15.41"],"use":["10.3","10.6","15.41","22.40"],"these":["10.3"],"functions":["10.3"],"avoid":["10.3","15.41"],"memory":["10.3","15.41"],"leaks":["10.3","15.41"],"please":["10.6","10.8","10.9","10.10","10.16","12.0","22.2","22.10","22.29","22.30","22.31"],"option":["10.6"],"in":["10.6","20.5"],"basic":["10.6"],"settings":["10.6","22.42","22.43"],"for":["10.8","10.9","10.10","10.16","12.0","15.33","20.13","22.4","22.29"],"configuration":["10.8","10.9","10.10","22.29"],"refer":["10.8","10.9","10.10","10.16","12.0","22.2","22.29","22.30","22.31"],"srt":["10.11","22.25","26.25"],"settimeout":["10.12","10.13","10.15","15.3","15.21"],"gains":["10.14"],"focus":["10.14"],"e":["10.14","22.19"],"g":["10.14","22.19"],"clicking":["10.14","22.19"],"on":["10.17","15.4","22.2","22.19","24.6"],"a":["12.0","17.1"],"complete":["12.0"],"list":["12.0"],"state":["12.39"],"further":["12.42"],"buffering":["12.42","12.43"],"to":["12.46","15.33","22.29","22.30","22.31","22.32"],"reload":["12.46"],"it":["12.46","20.11"],"format":["12.48"],"data":["12.53"],"forthcoming":["12.58"],"rarely":["13.0"],"assets":["13.1","13.14","13.15","13.16","13.19","13.20","13.25","13.26","13.27","22.3","22.11","22.27"],"dblclick":["13.17"],"contextmenu":["13.28"],"do":["13.34","15.5"],"clear":["13.34"],"play":["14.0"],"interface":["15.5"],"playable":["15.12"],"fails":["15.12"],"load":["15.12"],"cases":["15.16"],"obtained":["15.16","15.28"],"be":["15.16"],"page":["15.20","15.22"],"must":["15.20","15.22"],"occur":["15.20","15.22"],"before":["15.20","15.22"],"triggering":["15.20","15.22"],"default":["15.26"],"is":["15.26","15.28","22.17"],"via":["15.28"],"you":["15.33","22.40"],"need":["15.33"],"determine":["15.33"],"timing":["15.33"],"setting":["15.33","22.14","22.15","22.16","22.25","26.14","26.15","26.16","26.25"],"m3u8":["15.35","22.41","26.2"],"000":["15.36"],"timeupdate":["15.39"],"this":["15.41","22.7"],"text":["16.1","18.1"],"when":["17.1"],"item":["17.1"],"clicked":["17.1"],"script":["20.1","23.1","24.2"],"examples":["20.3"],"at":["20.3"],"following":["20.3","22.32"],"link":["20.3"],"example":["20.3","23.3"],"update":["20.4","20.5"],"player":["20.4","20.12","23.12"],"directly":["20.5"],"modifying":["20.5"],"the":["20.5","22.32"],"definitions":["20.9","22.39"],"packages":["20.9","23.9"],"volume":["20.10"],"art8":["20.10","23.10"],"new":["20.10","23.10"],"yourself":["20.11"],"scripts":["20.11","23.11"],"reference":["20.11","21.0"],"documentation":["20.11"],"browserslist":["20.11","23.11"],"body":["20.12"],"div":["20.12","23.12"],"id":["20.12","23.12"],"importing":["20.13"],"dependency":["20.13"],"take":["20.13"],"effect":["20.13"],"see":["21.0"],"or":["21.1","25.1"],"note":["22.1"],"among":["22.1"],"all":["22.1"],"options":["22.1"],"only":["22.1"],"required":["22.1"],"third":["22.2"],"party":["22.2"],"libraries":["22.2"],"section":["22.2"],"point":["22.4"],"jpg":["22.5","26.5"],"ffad00":["22.6","26.6"],"read":["22.7","22.10"],"cached":["22.7"],"value":["22.7"],"information":["22.10"],"policy":["22.10","26.10"],"changes":["22.10","26.10"],"cross":["22.17"],"origin":["22.17"],"with":["22.17"],"website":["22.17"],"disable":["22.22"],"url":["22.27"],"panel":["22.30"],"address":["22.32"],"hd":["22.33"],"720p":["22.33","26.33"],"こんなとこにあるはずもないのに":["22.34","26.34"],"终わり":["22.34","26.34"],"generate":["22.36"],"online":["22.36"],"tool":["22.36","26.36"],"03a9f4":["22.37","26.37"],"font":["22.37","24.5","26.37"],"size":["22.37","24.5","26.37"],"30px":["22.37","26.37"],"webkit":["22.38"],"playsinline":["22.38","26.38"],"therefore":["22.40"],"if":["22.40"],"best":["22.40"],"also":["22.40"],"start":["22.42","22.43","26.42","26.43"],"i18n":["22.42","26.42"],"tw":["22.43","26.43"],"more":["22.43"],"identify":["22.47"],"unique":["22.47"],"document":["22.51","26.51"],"createelement":["22.51","26.51"],"tip":["23.3"],"以下链接可以看到更多的使用例子":["23.3"],"里直接修改":["23.4","23.5"],"是不会改变播放器的":["23.4","23.5"],"非响应式":["23.5"],"在":["23.5"],"构建配置":["23.11"],"build":["23.11"],"参考文档":["23.11"],"你需要在引入":["23.13"],"依赖前来修改它才会生效":["23.13"],"style":["24.4"],"弹幕自定义样式":["24.4"],"默认为空对象":["24.4"],"light":["24.5"],"只在自定义挂载时生效":["24.5"],"不透明度配置项":["24.5"],"弹幕字号配置项":["24.5"],"显示区域配置项":["24.5"],"弹幕速度配置项":["24.5"],"颜色列表配置项":["24.5"],"ref":["24.6"],"innerhtml":["24.6"],"ଘ":["24.6"],"੭ˊᵕˋ":["24.6"],"੭":["24.6"],"使用数组":["24.7"],"time":["24.7","24.9"],"异步返回":["24.9"],"显示弹幕":["24.10","24.11"],"hide":["24.11"],"border":["24.12"],"change":["24.13"],"fontsize":["24.13"],"const":["24.14"],"target":["24.14"],"xml":["24.16"],"也可以手动挂载":["24.16"],"reset":["24.18"],"弹幕重置":["24.18"],"destroy":["24.18"],"弹幕销毁":["24.18"],"全部选项里":["26.1"],"只有":["26.1"],"是必填的":["26.1"],"如需要播放":["26.2"],"或者":["26.2"],"flv":["26.2"],"等其它格式":["26.2"],"请参考左侧的":["26.2"],"第三方库":["26.2"],"回调函数里的":["26.4"],"就是播放器实例":["26.4"],"但回调函数假如使用了箭头函数":["26.4"],"则不会指向播放器实例":["26.4"],"下次初始化时":["26.7"],"如刷新页面":["26.7"],"播放器会读取该缓存值":["26.7"],"更多信息请阅读":["26.10"],"假如视频源地址和网站是跨域的":["26.17"],"可能会出现截图失败":["26.17"],"关闭毛玻璃效果":["26.22"],"在线生成预览图":["26.36"],"thumbnail":["26.36"],"所以假如你使用了":["26.40"],"最好同时要指明":["26.40"],"function":["26.41"],"更多的语言设置":["26.42","26.43"],"是不同的话":["26.47"],"那么你需要使用":["26.47"],"来标识视频的唯一":["26.47"]}]'},t={"0.0":{t:"# 高级属性\r",p:`这里的 高级属性 是指挂载在 实例 的 二级属性,比较少用 -`,l:"advanced/built-in.html",a:"高级属性"},"0.1":{t:"`option`\r",p:`播放器的选项 -<div className="run-code">▶ Run Code< ...`,l:"advanced/built-in.html#option",a:"option"},"0.2":{t:"`template`\r",p:`管理播放器所有的 DOM 元素 -<div className="run-code">▶ Ru ...`,l:"advanced/built-in.html#template",a:"template"},"0.3":{t:"`events`\r",p:"管理播放器所有的 DOM 事件,实质上是代理了 addEventListener 和 removeEventListener ...",l:"advanced/built-in.html#events",a:"events"},"0.4":{t:"`storage`\r",p:`管理播放器的本地存储 - -name 属性用于设置缓存的 key -set 方法用于设置缓存 -get 方法用于获取缓存 -del 方 ...`,l:"advanced/built-in.html#storage",a:"storage"},"0.5":{t:"`icons`\r",p:`管理播放器所有的 svg 图标 -<div className="run-code">▶ Ru ...`,l:"advanced/built-in.html#icons",a:"icons"},"0.6":{t:"`i18n`\r",p:`管理播放器的 i18n - -get 方法用于获取 i18n 的值 -update 方法用于更新 i18n 对象 - -<div ...`,l:"advanced/built-in.html#i18n",a:"i18n"},"0.7":{t:"`notice`\r",p:`管理播放器的提示语,只有一个 show 属性用于显示提示语 -<div className="run-code ...`,l:"advanced/built-in.html#notice",a:"notice"},"0.8":{t:"`layers`\r",p:`管理播放器的层 - -add 方法用于动态添加层 -remove 方法用于动态删除层 -update 方法用于动态更新层 -show ...`,l:"advanced/built-in.html#layers",a:"layers"},"0.9":{t:"`controls`\r",p:`管理播放器的控制器 - -add 方法用于动态添加控制器 -remove 方法用于动态删除控制器 -update 方法用于动态更新控 ...`,l:"advanced/built-in.html#controls",a:"controls"},"0.10":{t:"`contextmenu`\r",p:`管理播放器的右键菜单 - -add 方法用于动态添加菜单 -remove 方法用于动态删除菜单 -update 方法用于动态更新菜单 ...`,l:"advanced/built-in.html#contextmenu",a:"contextmenu"},"0.11":{t:"`subtitle`\r",p:`管理播放器的字幕功能 - -url 属性设置和返回当前字幕地址 -style 方法设置当前字幕的样式 -switch 方法设置当前字 ...`,l:"advanced/built-in.html#subtitle",a:"subtitle"},"0.12":{t:"`info`\r",p:`管理播放器的信息面板,常用于查看当前播放器和视频的运行状态,例如版本号、分辨率、时长等。 - -通过 art.info.show ...`,l:"advanced/built-in.html#info",a:"info"},"0.13":{t:"`loading`\r",p:`管理播放器的加载层 - -show 属性用于设置是否显示加载层 -toggle 属性用于切换是否显示加载层 - -<div cl ...`,l:"advanced/built-in.html#loading",a:"loading"},"0.14":{t:"`hotkey`\r",p:`管理播放器的快捷键功能 - -add 方法用于添加快捷键 -remove 方法用于删除快捷键 - -<div className ...`,l:"advanced/built-in.html#hotkey",a:"hotkey"},"0.15":{t:"`mask`\r",p:`管理播放器的遮罩层 - -show 属性用于设置是否显示遮罩层 -toggle 属性用于切换是否显示遮罩层 - -<div cl ...`,l:"advanced/built-in.html#mask",a:"mask"},"0.16":{t:"`setting`\r",p:`管理播放器的设置面板 - -add 方法用于动态添加设置项 -remove 方法用于动态删除设置项 -update 方法用于动态更新 ...`,l:"advanced/built-in.html#setting",a:"setting"},"0.17":{t:"`plugins`\r",p:`管理播放器的插件功能,只有一个方法 add 用于动态添加插件 -<div className="run-cod ...`,l:"advanced/built-in.html#plugins",a:"plugins"},"1.0":{t:"# 静态属性\r",p:`这里的 静态属性 是指挂载在 构造函数 的 一级属性,非常少使用 -`,l:"advanced/class.html",a:"静态属性"},"1.1":{t:"`instances`\r",p:`返回全部播放器实例的数组,假如你想同时管理多个播放器的时候,可以用到该属性 -<div className=" ...`,l:"advanced/class.html#instances",a:"instances"},"1.2":{t:"`version`\r",p:`返回播放器的版本信息 -<div className="run-code">▶ Run Cod ...`,l:"advanced/class.html#version",a:"version"},"1.3":{t:"`env`\r",p:`返回播放器的环境变量 -<div className="run-code">▶ Run Cod ...`,l:"advanced/class.html#env",a:"env"},"1.4":{t:"`build`\r",p:`返回播放器的打包时间 -<div className="run-code">▶ Run Cod ...`,l:"advanced/class.html#build",a:"build"},"1.5":{t:"`config`\r",p:`返回视频的默认配置 -<div className="run-code">▶ Run Code ...`,l:"advanced/class.html#config",a:"config"},"1.6":{t:"`utils`\r",p:`返回播放器的工具函数集合 -<div className="run-code">▶ Run C ...`,l:"advanced/class.html#utils",a:"utils"},"1.7":{t:"`scheme`\r",p:`返回播放器选项的校验方案 -<div className="run-code">▶ Run C ...`,l:"advanced/class.html#scheme",a:"scheme"},"1.8":{t:"`Emitter`\r",p:`返回事件分发器的构造函数 -<div className="run-code">▶ Run C ...`,l:"advanced/class.html#emitter",a:"emitter"},"1.9":{t:"`validator`\r",p:`返回选项的校验函数 -<div className="run-code">▶ Run Code ...`,l:"advanced/class.html#validator",a:"validator"},"1.10":{t:"`kindOf`\r",p:`返回类型检测的函数工具 -<div className="run-code">▶ Run Co ...`,l:"advanced/class.html#kindof",a:"kindof"},"1.11":{t:"`html`\r",p:`返回播放器所需的 html 字符串 -<div className="run-code">▶ ...`,l:"advanced/class.html#html",a:"html"},"1.12":{t:"`option`\r",p:`返回播放器的默认选项 -<div className="run-code">▶ Run Cod ...`,l:"advanced/class.html#option",a:"option"},"2.0":{t:"# 实例事件\r",p:`播放器的事件分为两种,一种视频的 原生事件 (前缀 video:),另外一种是 自定义事件 -监听事件: -<div cl ...`,l:"advanced/event.html",a:"实例事件"},"2.1":{t:"`ready`\r",p:`当播放器首次可以播放器时触发 -<div className="run-code">▶ Run ...`,l:"advanced/event.html#ready",a:"ready"},"2.2":{t:"`restart`\r",p:`当播放器切换地址后并可以播放时触发 -<div className="run-code">▶ ...`,l:"advanced/event.html#restart",a:"restart"},"2.3":{t:"`pause`\r",p:`当播放器暂停时触发 -<div className="run-code">▶ Run Code ...`,l:"advanced/event.html#pause",a:"pause"},"2.4":{t:"`play`\r",p:`当播放器播放时触发 -<div className="run-code">▶ Run Code ...`,l:"advanced/event.html#play",a:"play"},"2.5":{t:"`hotkey`\r",p:`当播放器热键被按下时触发 -<div className="run-code">▶ Run C ...`,l:"advanced/event.html#hotkey",a:"hotkey"},"2.6":{t:"`destroy`\r",p:`当播放器销毁时触发 -<div className="run-code">▶ Run Code ...`,l:"advanced/event.html#destroy",a:"destroy"},"2.7":{t:"`focus`\r",p:`当播放器获得焦点时触发 -<div className="run-code">▶ Run Co ...`,l:"advanced/event.html#focus",a:"focus"},"2.8":{t:"`blur`\r",p:`当播放器失去焦点时触发 -<div className="run-code">▶ Run Co ...`,l:"advanced/event.html#blur",a:"blur"},"2.9":{t:"`dblclick`\r",p:`当播放器被双击时触发 -<div className="run-code">▶ Run Cod ...`,l:"advanced/event.html#dblclick",a:"dblclick"},"2.10":{t:"`click`\r",p:`当播放器被单击时触发 -<div className="run-code">▶ Run Cod ...`,l:"advanced/event.html#click",a:"click"},"2.11":{t:"`error`\r",p:`当播放器加载视频发生错误时触发 -<div className="run-code">▶ Ru ...`,l:"advanced/event.html#error",a:"error"},"2.12":{t:"`hover`\r",p:`当播放器被鼠标移出或者移入时触发 -<div className="run-code">▶ R ...`,l:"advanced/event.html#hover",a:"hover"},"2.13":{t:"`mousemove`\r",p:`当播放器被鼠标经过时触发 -<div className="run-code">▶ Run C ...`,l:"advanced/event.html#mousemove",a:"mousemove"},"2.14":{t:"`resize`\r",p:`当播放器尺寸变化时触发 -<div className="run-code">▶ Run Co ...`,l:"advanced/event.html#resize",a:"resize"},"2.15":{t:"`view`\r",p:`当播放器出现在视口时触发 -<div className="run-code">▶ Run C ...`,l:"advanced/event.html#view",a:"view"},"2.16":{t:"`lock`\r",p:`在移动端,当锁定的状态发生变化时触发 -<div className="run-code">▶ ...`,l:"advanced/event.html#lock",a:"lock"},"2.17":{t:"`aspectRatio`\r",p:`当播放器长宽比变化时触发 -<div className="run-code">▶ Run C ...`,l:"advanced/event.html#aspectratio",a:"aspectratio"},"2.18":{t:"`autoHeight`\r",p:`当播放器自动设置高度时触发 -<div className="run-code">▶ Run ...`,l:"advanced/event.html#autoheight",a:"autoheight"},"2.19":{t:"`autoSize`\r",p:`当播放器自动设置尺寸时触发 -<div className="run-code">▶ Run ...`,l:"advanced/event.html#autosize",a:"autosize"},"2.20":{t:"`flip`\r",p:`当播放器发生翻转时触发 -<div className="run-code">▶ Run Co ...`,l:"advanced/event.html#flip",a:"flip"},"2.21":{t:"`fullscreen`\r",p:`当播放器发生窗口全屏时触发 -<div className="run-code">▶ Run ...`,l:"advanced/event.html#fullscreen",a:"fullscreen"},"2.22":{t:"`fullscreenError`\r",p:`当播放器发生窗口全屏错误时触发 -<div className="run-code">▶ Ru ...`,l:"advanced/event.html#fullscreenerror",a:"fullscreenerror"},"2.23":{t:"`fullscreenWeb`\r",p:`当播放器发生网页全屏时触发 -<div className="run-code">▶ Run ...`,l:"advanced/event.html#fullscreenweb",a:"fullscreenweb"},"2.24":{t:"`mini`\r",p:`当播放器进入迷你模式时触发 -<div className="run-code">▶ Run ...`,l:"advanced/event.html#mini",a:"mini"},"2.25":{t:"`pip`\r",p:`当播放器进入画中画时触发 -<div className="run-code">▶ Run C ...`,l:"advanced/event.html#pip",a:"pip"},"2.26":{t:"`screenshot`\r",p:`当播放器被截图时触发 -<div className="run-code">▶ Run Cod ...`,l:"advanced/event.html#screenshot",a:"screenshot"},"2.27":{t:"`seek`\r",p:`当播放器发生时间跳转时触发 -<div className="run-code">▶ Run ...`,l:"advanced/event.html#seek",a:"seek"},"2.28":{t:"`subtitleOffset`\r",p:`当播放器发生字幕偏移时触发 -<div className="run-code">▶ Run ...`,l:"advanced/event.html#subtitleoffset",a:"subtitleoffset"},"2.29":{t:"`subtitleBeforeUpdate`\r",p:`当字幕更新前触发 -<div className="run-code">▶ Run Code& ...`,l:"advanced/event.html#subtitlebeforeupdate",a:"subtitlebeforeupdate"},"2.30":{t:"`subtitleAfterUpdate`\r",p:`当字幕更新后触发 -<div className="run-code">▶ Run Code& ...`,l:"advanced/event.html#subtitleafterupdate",a:"subtitleafterupdate"},"2.31":{t:"`subtitleLoad`\r",p:`当字幕加载时触发 -<div className="run-code">▶ Run Code& ...`,l:"advanced/event.html#subtitleload",a:"subtitleload"},"2.32":{t:"`info`\r",p:`当信息面板显示或隐藏时触发 -<div className="run-code">▶ Run ...`,l:"advanced/event.html#info",a:"info"},"2.33":{t:"`layer`\r",p:`当自定义层显示或隐藏时触发 -<div className="run-code">▶ Run ...`,l:"advanced/event.html#layer",a:"layer"},"2.34":{t:"`loading`\r",p:`当加载器显示或隐藏时触发 -<div className="run-code">▶ Run C ...`,l:"advanced/event.html#loading",a:"loading"},"2.35":{t:"`mask`\r",p:`当遮罩层显示或隐藏时触发 -<div className="run-code">▶ Run C ...`,l:"advanced/event.html#mask",a:"mask"},"2.36":{t:"`subtitle`\r",p:`当字幕层显示或隐藏时触发 -<div className="run-code">▶ Run C ...`,l:"advanced/event.html#subtitle",a:"subtitle"},"2.37":{t:"`contextmenu`\r",p:`当右键菜单显示或隐藏时触发 -<div className="run-code">▶ Run ...`,l:"advanced/event.html#contextmenu",a:"contextmenu"},"2.38":{t:"`control`\r",p:`当控制器显示或隐藏时触发 -<div className="run-code">▶ Run C ...`,l:"advanced/event.html#control",a:"control"},"2.39":{t:"`setting`\r",p:`当设置面板显示或隐藏时触发 -<div className="run-code">▶ Run ...`,l:"advanced/event.html#setting",a:"setting"},"2.40":{t:"`muted`\r",p:`当静音的状态变化时触发 -<div className="run-code">▶ Run Co ...`,l:"advanced/event.html#muted",a:"muted"},"2.41":{t:"`keydown`\r",p:`监听来自 document 的 keydown 事件 -<div className="run-code&qu ...`,l:"advanced/event.html#keydown",a:"keydown"},"2.42":{t:"`video:canplay`\r",p:`浏览器可以播放媒体文件了,但估计没有足够的数据来支撑播放到结束,不必停下来进一步缓冲内容 -`,l:"advanced/event.html#video-canplay",a:"video-canplay"},"2.43":{t:"`video:canplaythrough`\r",p:`浏览器估计它可以在不停止内容缓冲的情况下播放媒体直到结束 -`,l:"advanced/event.html#video-canplaythrough",a:"video-canplaythrough"},"2.44":{t:"`video:complete`\r",p:`OfflineAudioContext 渲染完成 -`,l:"advanced/event.html#video-complete",a:"video-complete"},"2.45":{t:"`video:durationchange`\r",p:`duration 属性的值改变时触发 -`,l:"advanced/event.html#video-durationchange",a:"video-durationchange"},"2.46":{t:"`video:emptied`\r",p:"媒体内容变为空;例如,当这个 media 已经加载完成(或者部分加载完成),则发送此事件,并调用 load() 方法重新加载 ...",l:"advanced/event.html#video-emptied",a:"video-emptied"},"2.47":{t:"`video:ended`\r",p:`视频停止播放,因为 media 已经到达结束点 -`,l:"advanced/event.html#video-ended",a:"video-ended"},"2.48":{t:"`video:error`\r",p:`获取媒体数据时出错,或者资源类型不是受支持的媒体格式 -`,l:"advanced/event.html#video-error",a:"video-error"},"2.49":{t:"`video:loadeddata`\r",p:`media 中的首帧已经完成加载 -`,l:"advanced/event.html#video-loadeddata",a:"video-loadeddata"},"2.50":{t:"`video:loadedmetadata`\r",p:`已加载元数据 -`,l:"advanced/event.html#video-loadedmetadata",a:"video-loadedmetadata"},"2.51":{t:"`video:pause`\r",p:`播放已暂停 -`,l:"advanced/event.html#video-pause",a:"video-pause"},"2.52":{t:"`video:play`\r",p:`播放已开始 -`,l:"advanced/event.html#video-play",a:"video-play"},"2.53":{t:"`video:playing`\r",p:`由于缺乏数据而暂停或延迟后,播放准备开始 -`,l:"advanced/event.html#video-playing",a:"video-playing"},"2.54":{t:"`video:progress`\r",p:`在浏览器加载资源时周期性触发 -`,l:"advanced/event.html#video-progress",a:"video-progress"},"2.55":{t:"`video:ratechange`\r",p:`播放速率发生变化 -`,l:"advanced/event.html#video-ratechange",a:"video-ratechange"},"2.56":{t:"`video:seeked`\r",p:`跳帧(seek)操作完成 -`,l:"advanced/event.html#video-seeked",a:"video-seeked"},"2.57":{t:"`video:seeking`\r",p:`跳帧(seek)操作开始 -`,l:"advanced/event.html#video-seeking",a:"video-seeking"},"2.58":{t:"`video:stalled`\r",p:`用户代理(user agent)正在尝试获取媒体数据,但数据意外未出现 -`,l:"advanced/event.html#video-stalled",a:"video-stalled"},"2.59":{t:"`video:suspend`\r",p:`媒体数据加载已暂停 -`,l:"advanced/event.html#video-suspend",a:"video-suspend"},"2.60":{t:"`video:timeupdate`\r",p:`currentTime 属性指定的时间发生变化 -`,l:"advanced/event.html#video-timeupdate",a:"video-timeupdate"},"2.61":{t:"`video:volumechange`\r",p:`音量发生变化 -`,l:"advanced/event.html#video-volumechange",a:"video-volumechange"},"2.62":{t:"`video:waiting`\r",p:`由于暂时缺少数据,播放已停止 -`,l:"advanced/event.html#video-waiting",a:"video-waiting"},"3.0":{t:"# 全局属性\r",p:`这里的 全局属性 也是指挂载在 构造函数 的 一级属性,属性名字全部都是大写的形式,未来容易发生变动,基本上用不到 -`,l:"advanced/global.html",a:"全局属性"},"3.1":{t:"DEBUG\r",p:`是否开始 debug 模式,可以打印出视频全部的内置事件,默认关闭 -<div className="run- ...`,l:"advanced/global.html#debug",a:"debug"},"3.2":{t:"STYLE\r",p:`返回播放器样式文本 -<div className="run-code">▶ Run Code ...`,l:"advanced/global.html#style",a:"style"},"3.3":{t:"CONTEXTMENU\r",p:`是否开启右键菜单,默认开启 -<div className="run-code">▶ Run ...`,l:"advanced/global.html#contextmenu",a:"contextmenu"},"3.4":{t:"NOTICE_TIME\r",p:`提示信息的显示时长,单位为毫秒,默认为 2000 -<div className="run-code" ...`,l:"advanced/global.html#notice-time",a:"notice-time"},"3.5":{t:"SETTING_WIDTH\r",p:`设置面板的默认宽度,单位为像素,默认为 250 -<div className="run-code" ...`,l:"advanced/global.html#setting-width",a:"setting-width"},"3.6":{t:"SETTING_ITEM_WIDTH\r",p:`设置面板的设置项的默认宽度,单位为像素,默认为 200 -<div className="run-code&q ...`,l:"advanced/global.html#setting-item-width",a:"setting-item-width"},"3.7":{t:"SETTING_ITEM_HEIGHT\r",p:`设置面板的设置项的默认高度,单位为像素,默认为 35 -<div className="run-code&qu ...`,l:"advanced/global.html#setting-item-height",a:"setting-item-height"},"3.8":{t:"RESIZE_TIME\r",p:`resize 事件的节流时间,单位为毫秒,默认为 200 -<div className="run-code& ...`,l:"advanced/global.html#resize-time",a:"resize-time"},"3.9":{t:"SCROLL_TIME\r",p:`scroll 事件的节流时间,单位为毫秒,默认为 200 -<div className="run-code& ...`,l:"advanced/global.html#scroll-time",a:"scroll-time"},"3.10":{t:"SCROLL_GAP\r",p:`view 事件的边界容差距离,单位为像素,默认为 50 -<div className="run-code&q ...`,l:"advanced/global.html#scroll-gap",a:"scroll-gap"},"3.11":{t:"AUTO_PLAYBACK_MAX\r",p:`自动回放功能的最大记录数,默认为 10 -<div className="run-code"> ...`,l:"advanced/global.html#auto-playback-max",a:"auto-playback-max"},"3.12":{t:"AUTO_PLAYBACK_MIN\r",p:`自动回放功能的最小记录时长,单位为秒,默认为 5 -<div className="run-code" ...`,l:"advanced/global.html#auto-playback-min",a:"auto-playback-min"},"3.13":{t:"AUTO_PLAYBACK_TIMEOUT\r",p:`自动回放功能的隐藏延迟时长,单位为毫秒,默认为 3000 -<div className="run-code& ...`,l:"advanced/global.html#auto-playback-timeout",a:"auto-playback-timeout"},"3.14":{t:"RECONNECT_TIME_MAX\r",p:`发生连接错误时,自动连接的最大次数,默认为 5 -<div className="run-code" ...`,l:"advanced/global.html#reconnect-time-max",a:"reconnect-time-max"},"3.15":{t:"RECONNECT_SLEEP_TIME\r",p:`发生连接错误时,自动连接的延迟时间,单位为毫秒,默认为 1000 -<div className="run-c ...`,l:"advanced/global.html#reconnect-sleep-time",a:"reconnect-sleep-time"},"3.16":{t:"CONTROL_HIDE_TIME\r",p:`底部控制栏的自动隐藏的延迟时间,单位为毫秒,默认为 3000 -<div className="run-cod ...`,l:"advanced/global.html#control-hide-time",a:"control-hide-time"},"3.17":{t:"DBCLICK_TIME\r",p:`双击事件的延迟事件,单位为毫秒,默认为 300 -<div className="run-code" ...`,l:"advanced/global.html#dbclick-time",a:"dbclick-time"},"3.18":{t:"DBCLICK_FULLSCREEN\r",p:`在桌面端,是否双击切换全屏,默认为 true -<div className="run-code"& ...`,l:"advanced/global.html#dbclick-fullscreen",a:"dbclick-fullscreen"},"3.19":{t:"MOBILE_DBCLICK_PLAY\r",p:`在移动端,是否双击切换播放暂停,默认为 true -<div className="run-code" ...`,l:"advanced/global.html#mobile-dbclick-play",a:"mobile-dbclick-play"},"3.20":{t:"MOBILE_CLICK_PLAY\r",p:`在移动端,是否单击切换播放暂停,默认为 false -<div className="run-code&quo ...`,l:"advanced/global.html#mobile-click-play",a:"mobile-click-play"},"3.21":{t:"AUTO_ORIENTATION_TIME\r",p:`在移动端,自动旋屏的延迟时间,单位为毫秒,默认为 200 -<div className="run-code& ...`,l:"advanced/global.html#auto-orientation-time",a:"auto-orientation-time"},"3.22":{t:"INFO_LOOP_TIME\r",p:`信息面板的刷新时间,单位为毫秒,默认为 1000 -<div className="run-code" ...`,l:"advanced/global.html#info-loop-time",a:"info-loop-time"},"3.23":{t:"FAST_FORWARD_VALUE\r",p:`在移动端,长按加速的速率倍数,默认为 3 -<div className="run-code"> ...`,l:"advanced/global.html#fast-forward-value",a:"fast-forward-value"},"3.24":{t:"FAST_FORWARD_TIME\r",p:`在移动端,长按加速的延迟时间,单位为毫秒,默认为 1000 -<div className="run-code ...`,l:"advanced/global.html#fast-forward-time",a:"fast-forward-time"},"3.25":{t:"TOUCH_MOVE_RATIO\r",p:`在移动端,左右滑动进度的速率倍数,默认为 0.5 -<div className="run-code" ...`,l:"advanced/global.html#touch-move-ratio",a:"touch-move-ratio"},"3.26":{t:"VOLUME_STEP\r",p:`快捷键调节音量的幅度比例,默认为 0.1 -<div className="run-code"> ...`,l:"advanced/global.html#volume-step",a:"volume-step"},"3.27":{t:"SEEK_STEP\r",p:`快捷键调节播放进度的幅度,单位为秒,默认为 5 -<div className="run-code" ...`,l:"advanced/global.html#seek-step",a:"seek-step"},"3.28":{t:"PLAYBACK_RATE\r",p:`内置播放速率的列表,默认为 [0.5, 0.75, 1, 1.25, 1.5, 2] -<div className=& ...`,l:"advanced/global.html#playback-rate",a:"playback-rate"},"3.29":{t:"ASPECT_RATIO\r",p:`内置视频长宽比的列表,默认为 ['default', '4:3', '16:9'] -<div className=&q ...`,l:"advanced/global.html#aspect-ratio",a:"aspect-ratio"},"3.30":{t:"FLIP\r",p:`内置视频翻转的列表,默认为 ['normal', 'horizontal', 'vertical'] -<div cla ...`,l:"advanced/global.html#flip",a:"flip"},"3.31":{t:"FULLSCREEN_WEB_IN_BODY\r",p:`网页全屏时,是否把播放器挂在在 body 元素下,默认为 true -<div className="run- ...`,l:"advanced/global.html#fullscreen-web-in-body",a:"fullscreen-web-in-body"},"3.32":{t:"LOG_VERSION\r",p:`设置是否打印播放器版本,默认为 true -<div className="run-code"> ...`,l:"advanced/global.html#log-version",a:"log-version"},"3.33":{t:"USE_RAF\r",p:`设置是否使用 requestAnimationFrame ,默认为 false,目前主要用于进度条的平滑效果 -<div ...`,l:"advanced/global.html#use-raf",a:"use-raf"},"3.34":{t:"REMOVE_SRC_WHEN_DESTROY\r",p:`在销毁播放器时,是否同时移除视频的 src 属性并调用 load() 以主动释放媒体资源,默认为 true。 -开启后可以在单 ...`,l:"advanced/global.html#remove-src-when-destroy",a:"remove-src-when-destroy"},"4.0":{t:"# 编写插件\r",p:`但你已经知道播放器的属性, 方法和事件后,再编写插件是非常简单的事 -可以在实例化的时候加载插件的函数 -<div cla ...`,l:"advanced/plugin.html",a:"编写插件"},"5.0":{t:"# 实例属性\r",p:`这里的 实例属性 是指挂载在 实例 的 一级属性,比较常用 -`,l:"advanced/property.html",a:"实例属性"},"5.1":{t:"`play`\r",p:` -Type: Function - -播放视频 -<div className="run-code"&g ...`,l:"advanced/property.html#play",a:"play"},"5.2":{t:"`pause`\r",p:` -Type: Function - -暂停视频 -<div className="run-code"&g ...`,l:"advanced/property.html#pause",a:"pause"},"5.3":{t:"`toggle`\r",p:` -Type: Function - -切换视频的播放和暂停 -<div className="run-code&q ...`,l:"advanced/property.html#toggle",a:"toggle"},"5.4":{t:"`destroy`\r",p:` -Type: Function -Parameter: Boolean - -销毁播放器,接受一个参数表示是否销毁后同时移除播放器 ...`,l:"advanced/property.html#destroy",a:"destroy"},"5.5":{t:"`reset`\r",p:` -Type: Function - -重置播放器的视频元素:会移除当前 src 并调用一次 load(),常用于在单页应用中手动 ...`,l:"advanced/property.html#reset",a:"reset"},"5.6":{t:"`seek`\r",p:` -Type: Setter -Parameter: Number - -视频时间跳转,单位秒 -<div className= ...`,l:"advanced/property.html#seek",a:"seek"},"5.7":{t:"`forward`\r",p:` -Type: Setter -Parameter: Number - -视频时间快进,单位秒 -<div className= ...`,l:"advanced/property.html#forward",a:"forward"},"5.8":{t:"`backward`\r",p:` -Type: Setter -Parameter: Number - -视频时间快退,单位秒 -<div className= ...`,l:"advanced/property.html#backward",a:"backward"},"5.9":{t:"`volume`\r",p:` -Type: Setter/Getter -Parameter: Number - -设置和获取视频音量,范围在:[0, 1] -& ...`,l:"advanced/property.html#volume",a:"volume"},"5.10":{t:"`url`\r",p:` -Type: Setter/Getter -Parameter: String - -设置和获取视频地址 -<div clas ...`,l:"advanced/property.html#url",a:"url"},"5.11":{t:"`switch`\r",p:` -Type: Setter -Parameter: String - -设置视频地址,设置时和 art.url 类似,但会执行一些 ...`,l:"advanced/property.html#switch",a:"switch"},"5.12":{t:"`switchUrl`\r",p:` -Type: Function -Parameter: String - -设置视频地址,设置时和 art.url 类似,但会执行 ...`,l:"advanced/property.html#switchurl",a:"switchurl"},"5.13":{t:"`switchQuality`\r",p:` -Type: Function -Parameter: String - -设置视频画质地址,和 art.switchUrl 类似 ...`,l:"advanced/property.html#switchquality",a:"switchquality"},"5.14":{t:"`muted`\r",p:` -Type: Setter/Getter -Parameter: Boolean - -设置和获取视频是否静音 -<div c ...`,l:"advanced/property.html#muted",a:"muted"},"5.15":{t:"`currentTime`\r",p:` -Type: Setter/Getter -Parameter: Number - -设置和获取视频当前时间,设置时间时和 see ...`,l:"advanced/property.html#currenttime",a:"currenttime"},"5.16":{t:"`duration`\r",p:` -Type: Getter - -获取视频时长 -<div className="run-code"&g ...`,l:"advanced/property.html#duration",a:"duration"},"5.17":{t:"`screenshot`\r",p:` -Type: Function - -下载当前视频帧的截图, 可选参数为截图名字 -<div className=" ...`,l:"advanced/property.html#screenshot",a:"screenshot"},"5.18":{t:"`getDataURL`\r",p:` -Type: Function - -获取当前视频帧的截图的base64地址,返回的是一个 Promise -<div cl ...`,l:"advanced/property.html#getdataurl",a:"getdataurl"},"5.19":{t:"`getBlobUrl`\r",p:` -Type: Function - -获取当前视频帧的截图的blob地址,返回的是一个 Promise -<div clas ...`,l:"advanced/property.html#getbloburl",a:"getbloburl"},"5.20":{t:"`fullscreen`\r",p:` -Type: Setter/Getter -Parameter: Boolean - -设置和获取播放器窗口全屏 -<div ...`,l:"advanced/property.html#fullscreen",a:"fullscreen"},"5.21":{t:"`fullscreenWeb`\r",p:` -Type: Setter/Getter -Parameter: Boolean - -设置和获取播放器网页全屏 -<div ...`,l:"advanced/property.html#fullscreenweb",a:"fullscreenweb"},"5.22":{t:"`pip`\r",p:` -Type: Setter/Getter -Parameter: Boolean - -设置和获取播放器画中画模式 -<div ...`,l:"advanced/property.html#pip",a:"pip"},"5.23":{t:"`poster`\r",p:` -Type: Setter/Getter -Parameter: String - -设置和获取视频海报,只有在视频播放前才能看到 ...`,l:"advanced/property.html#poster",a:"poster"},"5.24":{t:"`mini`\r",p:` -Type: Setter/Getter -Parameter: Boolean - -设置和获取播放器迷你模式 -<div ...`,l:"advanced/property.html#mini",a:"mini"},"5.25":{t:"`playing`\r",p:` -Type: Getter -Parameter: Boolean - -获取视频是否正在播放中 -<div classNam ...`,l:"advanced/property.html#playing",a:"playing"},"5.26":{t:"`state`\r",p:` -Type: Setter/Getter -Parameter: String - -获取或设置播放器当前状态,支持:standa ...`,l:"advanced/property.html#state",a:"state"},"5.27":{t:"`autoSize`\r",p:` -Type: Function - -设置视频是否自适应尺寸 -<div className="run-code& ...`,l:"advanced/property.html#autosize",a:"autosize"},"5.28":{t:"`rect`\r",p:` -Type: Getter - -获取播放器的尺寸和坐标信息 -<div className="run-code& ...`,l:"advanced/property.html#rect",a:"rect"},"5.29":{t:"`bottom` / `top` / `left` / `right` / `x` / `y` / `width` / `height`\r",p:` -Type: Getter - -这些属性是对 rect 的快捷访问: - -bottom, top, left, right, x ...`,l:"advanced/property.html#bottom-top-left-right-x-y-width-height",a:"bottom-top-left-right-x-y-width-height"},"5.30":{t:"`flip`\r",p:` -Type: Setter/Getter -Parameter: String - -设置和获取播放器翻转,支持normal, ...`,l:"advanced/property.html#flip",a:"flip"},"5.31":{t:"`playbackRate`\r",p:` -Type: Setter/Getter -Parameter: Number - -设置和获取播放器播放速度 -<div c ...`,l:"advanced/property.html#playbackrate",a:"playbackrate"},"5.32":{t:"`aspectRatio`\r",p:` -Type: Setter/Getter -Parameter: String - -设置和获取播放器长宽比 -<div cl ...`,l:"advanced/property.html#aspectratio",a:"aspectratio"},"5.33":{t:"`autoHeight`\r",p:` -Type: Function - -当容器只有宽度,该属性可以自动计算出并设置视频的高度 -<div className= ...`,l:"advanced/property.html#autoheight",a:"autoheight"},"5.34":{t:"`attr`\r",p:` -Type: Function -Parameter: String - -动态获取和设置 video 元素的属性 -<div ...`,l:"advanced/property.html#attr",a:"attr"},"5.35":{t:"`type`\r",p:` -Type: Setter/Getter -Parameter: String - -动态获取和设置视频类型 -<div cl ...`,l:"advanced/property.html#type",a:"type"},"5.36":{t:"`theme`\r",p:` -Type: Setter/Getter -Parameter: String - -动态获取和设置播放器主题颜色 -<div ...`,l:"advanced/property.html#theme",a:"theme"},"5.37":{t:"`airplay`\r",p:` -Type: Function - -开启隔空播放 -<div className="run-code" ...`,l:"advanced/property.html#airplay",a:"airplay"},"5.38":{t:"`loaded`\r",p:` -Type: Getter - -视频缓存的比例,范围是 [0, 1],常配合 video:timeupdate 事件使用 -&l ...`,l:"advanced/property.html#loaded",a:"loaded"},"5.39":{t:"`loadedTime`\r",p:` -Type: Getter - -已缓存的媒体时长,单位为秒。通常与 loaded 一起使用,用于展示缓冲进度细节。 -<d ...`,l:"advanced/property.html#loadedtime",a:"loadedtime"},"5.40":{t:"`played`\r",p:` -Type: Getter - -视频播放的比例,范围是 [0, 1],常配合 video:timeupdate 事件使用 -&l ...`,l:"advanced/property.html#played",a:"played"},"5.41":{t:"`proxy`\r",p:` -Type: Function - -DOM 事件的代理函数,实质上代理了 addEventListener 和 removeE ...`,l:"advanced/property.html#proxy",a:"proxy"},"5.42":{t:"`query`\r",p:` -Type: Function - -DOM 的查询函数,类似 document.querySelector,但被查询的对象局限 ...`,l:"advanced/property.html#query",a:"query"},"5.43":{t:"`video`\r",p:` -Type: Element - -快捷返回播放器的 video 元素 -<div className="run- ...`,l:"advanced/property.html#video",a:"video"},"5.44":{t:"`cssVar`\r",p:` -Type: Function - -动态获取或设置 css 变量 -<div className="run-co ...`,l:"advanced/property.html#cssvar",a:"cssvar"},"5.45":{t:"`quality`\r",p:` -Type: Setter -Parameter: Array - -动态设置画质列表 -<div className=&qu ...`,l:"advanced/property.html#quality",a:"quality"},"5.46":{t:"`thumbnails`\r",p:` -Type: Setter/Getter -Parameter: Object - -动态设置缩略图 -<div classN ...`,l:"advanced/property.html#thumbnails",a:"thumbnails"},"5.47":{t:"`subtitleOffset`\r",p:` -Type: Setter/Getter -Parameter: Number - -动态设置字幕偏移 -<div class ...`,l:"advanced/property.html#subtitleoffset",a:"subtitleoffset"},"6.0":{t:"# 右键菜单\r",p:"\r",l:"component/contextmenu.html",a:"右键菜单"},"6.1":{t:"配置\r",p:` - - -属性 -类型 -描述 - - - - -disable -Boolean -是否禁用组件 - - -name -String -组件唯一名称,用于 ...`,l:"component/contextmenu.html#配置",a:"配置"},"6.2":{t:"创建\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/contextmenu.html#创建",a:"创建"},"6.3":{t:"添加\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/contextmenu.html#添加",a:"添加"},"6.4":{t:"删除\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/contextmenu.html#删除",a:"删除"},"6.5":{t:"更新\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/contextmenu.html#更新",a:"更新"},"7.0":{t:"# 控制器\r",p:"\r",l:"component/controls.html",a:"控制器"},"7.1":{t:"配置\r",p:` - - -属性 -类型 -描述 - - - - -disable -Boolean -是否禁用组件 - - -name -String -组件唯一名称,用于 ...`,l:"component/controls.html#配置",a:"配置"},"7.2":{t:"创建\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/controls.html#创建",a:"创建"},"7.3":{t:"添加\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/controls.html#添加",a:"添加"},"7.4":{t:"删除\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/controls.html#删除",a:"删除"},"7.5":{t:"更新\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/controls.html#更新",a:"更新"},"8.0":{t:"# 业务层\r",p:"\r",l:"component/layers.html",a:"业务层"},"8.1":{t:"配置\r",p:` - - -属性 -类型 -描述 - - - - -disable -Boolean -是否禁用组件 - - -name -String -组件唯一名称,用于 ...`,l:"component/layers.html#配置",a:"配置"},"8.2":{t:"创建\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/layers.html#创建",a:"创建"},"8.3":{t:"添加\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/layers.html#添加",a:"添加"},"8.4":{t:"删除\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/layers.html#删除",a:"删除"},"8.5":{t:"更新\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/layers.html#更新",a:"更新"},"9.0":{t:"# 设置面板\r",p:"\r",l:"component/setting.html",a:"设置面板"},"9.1":{t:"内置\r",p:"须先打开设置面板,然后自带四个内置项:flip, playbackRate, aspectRatio, subtitleOf ...",l:"component/setting.html#内置",a:"内置"},"9.2":{t:"创建 - 按钮\r",p:` - - -属性 -类型 -描述 - - - - -html -String, Element -元素的 DOM - - -icon -String, El ...`,l:"component/setting.html#创建-按钮",a:"创建-按钮"},"9.3":{t:"创建 - 选择列表\r",p:` - - -属性 -类型 -描述 - - - - -html -String, Element -元素的 DOM - - -icon -String, El ...`,l:"component/setting.html#创建-选择列表",a:"创建-选择列表"},"9.4":{t:"创建 - 列表嵌套\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/setting.html#创建-列表嵌套",a:"创建-列表嵌套"},"9.5":{t:"创建 - 切换按钮\r",p:` - - -属性 -类型 -描述 - - - - -html -String, Element -元素的 DOM 元素 - - -icon -String, ...`,l:"component/setting.html#创建-切换按钮",a:"创建-切换按钮"},"9.6":{t:"创建 - 范围滑块\r",p:` - - -属性 -类型 -描述 - - - - -html -String, Element -元素的 DOM 元素 - - -icon -String, ...`,l:"component/setting.html#创建-范围滑块",a:"创建-范围滑块"},"9.7":{t:"添加\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/setting.html#添加",a:"添加"},"9.8":{t:"删除\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/setting.html#删除",a:"删除"},"9.9":{t:"更新\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/setting.html#更新",a:"更新"},"10.0":{t:"# Advanced Properties\r",p:"The Advanced Properties here refer to the secondary properties ...",l:"en/advanced/built-in.html",a:"advanced-properties"},"10.1":{t:"`option`\r",p:`The player's options. -<div className="run-code"&g ...`,l:"en/advanced/built-in.html#option",a:"option"},"10.2":{t:"`template`\r",p:`Manages all DOM elements of the player. -<div className=&quo ...`,l:"en/advanced/built-in.html#template",a:"template"},"10.3":{t:"`events`\r",p:"Manages all DOM events for the player. It essentially proxies ...",l:"en/advanced/built-in.html#events",a:"events"},"10.4":{t:"`storage`\r",p:`Manages the player's local storage. - -The name property is used ...`,l:"en/advanced/built-in.html#storage",a:"storage"},"10.5":{t:"`icons`\r",p:`Manages all svg icons for the player. -<div className=" ...`,l:"en/advanced/built-in.html#icons",a:"icons"},"10.6":{t:"`i18n`\r",p:`Manages the player's i18n. - -The get method is used to retrieve ...`,l:"en/advanced/built-in.html#i18n",a:"i18n"},"10.7":{t:"`notice`\r",p:"Manages the player's notifications. It only has a show propert ...",l:"en/advanced/built-in.html#notice",a:"notice"},"10.8":{t:"`layers`\r",p:`Manages the player's layers. - -The add method is used to dynami ...`,l:"en/advanced/built-in.html#layers",a:"layers"},"10.9":{t:"`controls`\r",p:`Manages the player's controls. - - -The add method is used to dyn ...`,l:"en/advanced/built-in.html#controls",a:"controls"},"10.10":{t:"`contextmenu`\r",p:`Manages the player's context menu - -The add method is used to d ...`,l:"en/advanced/built-in.html#contextmenu",a:"contextmenu"},"10.11":{t:"`subtitle`\r",p:`Manages the player's subtitle functionality - -The url property ...`,l:"en/advanced/built-in.html#subtitle",a:"subtitle"},"10.12":{t:"`info`\r",p:"Manages the player's information panel, commonly used to view ...",l:"en/advanced/built-in.html#info",a:"info"},"10.13":{t:"`loading`\r",p:`Manages the player's loading layer - -The show property is used ...`,l:"en/advanced/built-in.html#loading",a:"loading"},"10.14":{t:"`hotkey`\r",p:`Manages the player's hotkey functionality - -The add method is u ...`,l:"en/advanced/built-in.html#hotkey",a:"hotkey"},"10.15":{t:"`mask`\r",p:`Manages the player's mask layer - -The show property is used to ...`,l:"en/advanced/built-in.html#mask",a:"mask"},"10.16":{t:"`setting`\r",p:`Manages the player's settings panel - -The add method is used to ...`,l:"en/advanced/built-in.html#setting",a:"setting"},"10.17":{t:"`plugins`\r",p:"Manages the player's plugin functionality, with only one metho ...",l:"en/advanced/built-in.html#plugins",a:"plugins"},"11.0":{t:"# Static Properties\r",p:"Here, static properties refer to the first-level properties at ...",l:"en/advanced/class.html",a:"static-properties"},"11.1":{t:"`instances`\r",p:"Returns an array of all player instances. This property can be ...",l:"en/advanced/class.html#instances",a:"instances"},"11.2":{t:"`version`\r",p:`Returns the version information of the player. -<div classNa ...`,l:"en/advanced/class.html#version",a:"version"},"11.3":{t:"`env`\r",p:`Returns the environment variables of the player. -<div class ...`,l:"en/advanced/class.html#env",a:"env"},"11.4":{t:"`build`\r",p:`Returns the build timestamp of the player. -<div className=& ...`,l:"en/advanced/class.html#build",a:"build"},"11.5":{t:"`config`\r",p:`Returns the default configuration for videos. -<div classNam ...`,l:"en/advanced/class.html#config",a:"config"},"11.6":{t:"`utils`\r",p:`Returns the collection of utility functions for the player. -&l ...`,l:"en/advanced/class.html#utils",a:"utils"},"11.7":{t:"`scheme`\r",p:`Returns the validation schema for player options. -<div clas ...`,l:"en/advanced/class.html#scheme",a:"scheme"},"11.8":{t:"`Emitter`\r",p:`Returns the constructor of the event emitter. -<div classNam ...`,l:"en/advanced/class.html#emitter",a:"emitter"},"11.9":{t:"`validator`\r",p:`Returns the validation function for options. -<div className ...`,l:"en/advanced/class.html#validator",a:"validator"},"11.10":{t:"`kindOf`\r",p:`Returns the type detection utility function. -<div className ...`,l:"en/advanced/class.html#kindof",a:"kindof"},"11.11":{t:"`html`\r",p:`Returns the html string required by the player. -<div classN ...`,l:"en/advanced/class.html#html",a:"html"},"11.12":{t:"`option`\r",p:`Returns the default options of the player. -<div className=& ...`,l:"en/advanced/class.html#option",a:"option"},"12.0":{t:"# Instance Events\r",p:"Player events are divided into two types: native events of the ...",l:"en/advanced/event.html",a:"instance-events"},"12.1":{t:"`ready`\r",p:`Triggered when the player is ready for the first time. -<div ...`,l:"en/advanced/event.html#ready",a:"ready"},"12.2":{t:"`restart`\r",p:"Triggered when the player switches URLs and becomes ready to p ...",l:"en/advanced/event.html#restart",a:"restart"},"12.3":{t:"`pause`\r",p:`Triggered when the player is paused. -<div className="r ...`,l:"en/advanced/event.html#pause",a:"pause"},"12.4":{t:"`play`\r",p:`Triggered when the player starts playing. -<div className=&q ...`,l:"en/advanced/event.html#play",a:"play"},"12.5":{t:"`hotkey`\r",p:`Triggered when a player hotkey is pressed. -<div className=& ...`,l:"en/advanced/event.html#hotkey",a:"hotkey"},"12.6":{t:"`destroy`\r",p:`Triggered when the player is destroyed. -<div className=&quo ...`,l:"en/advanced/event.html#destroy",a:"destroy"},"12.7":{t:"`focus`\r",p:`Triggered when the player gains focus. -<div className=" ...`,l:"en/advanced/event.html#focus",a:"focus"},"12.8":{t:"`blur`\r",p:`Triggered when the player loses focus. -<div className=" ...`,l:"en/advanced/event.html#blur",a:"blur"},"12.9":{t:"`dblclick`\r",p:`Triggered when the player is double-clicked. -<div className ...`,l:"en/advanced/event.html#dblclick",a:"dblclick"},"12.10":{t:"`click`\r",p:`Triggered when the player is clicked. -<div className=" ...`,l:"en/advanced/event.html#click",a:"click"},"12.11":{t:"`error`\r",p:"Triggered when an error occurs while the player is loading a v ...",l:"en/advanced/event.html#error",a:"error"},"12.12":{t:"`hover`\r",p:`Triggered when the mouse enters or leaves the player. -<div ...`,l:"en/advanced/event.html#hover",a:"hover"},"12.13":{t:"`mousemove`\r",p:`Triggered when the mouse moves over the player. -<div classN ...`,l:"en/advanced/event.html#mousemove",a:"mousemove"},"12.14":{t:"`resize`\r",p:`Triggered when the player's dimensions change. -<div classNa ...`,l:"en/advanced/event.html#resize",a:"resize"},"12.15":{t:"`view`\r",p:`Triggered when the player enters the viewport. -<div classNa ...`,l:"en/advanced/event.html#view",a:"view"},"12.16":{t:"`lock`\r",p:`Triggered when the lock state changes on mobile devices. -<d ...`,l:"en/advanced/event.html#lock",a:"lock"},"12.17":{t:"`aspectRatio`\r",p:`Triggered when the player's aspect ratio changes. -<div clas ...`,l:"en/advanced/event.html#aspectratio",a:"aspectratio"},"12.18":{t:"`autoHeight`\r",p:`Triggered when the player's height is automatically set. -<d ...`,l:"en/advanced/event.html#autoheight",a:"autoheight"},"12.19":{t:"`autoSize`\r",p:`Triggered when the player's size is automatically set. -<div ...`,l:"en/advanced/event.html#autosize",a:"autosize"},"12.20":{t:"`flip`\r",p:`Triggered when the player is flipped. -<div className=" ...`,l:"en/advanced/event.html#flip",a:"flip"},"12.21":{t:"`fullscreen`\r",p:"Triggered when the player enters or exits windowed fullscreen ...",l:"en/advanced/event.html#fullscreen",a:"fullscreen"},"12.22":{t:"`fullscreenError`\r",p:`Triggered when a windowed fullscreen error occurs. -<div cla ...`,l:"en/advanced/event.html#fullscreenerror",a:"fullscreenerror"},"12.23":{t:"`fullscreenWeb`\r",p:"Triggered when the player enters or exits web fullscreen mode. ...",l:"en/advanced/event.html#fullscreenweb",a:"fullscreenweb"},"12.24":{t:"`mini`\r",p:`Triggered when the player enters or exits mini mode. -<div c ...`,l:"en/advanced/event.html#mini",a:"mini"},"12.25":{t:"`pip`\r",p:"Triggered when the player enters or exits Picture-in-Picture m ...",l:"en/advanced/event.html#pip",a:"pip"},"12.26":{t:"`screenshot`\r",p:`Triggered when the player takes a screenshot. -<div classNam ...`,l:"en/advanced/event.html#screenshot",a:"screenshot"},"12.27":{t:"`seek`\r",p:`Triggered when the player performs a time seek. -<div classN ...`,l:"en/advanced/event.html#seek",a:"seek"},"12.28":{t:"`subtitleOffset`\r",p:`Triggered when the subtitle offset changes in the player. -< ...`,l:"en/advanced/event.html#subtitleoffset",a:"subtitleoffset"},"12.29":{t:"`subtitleBeforeUpdate`\r",p:`Triggered before subtitles are updated. -<div className=&quo ...`,l:"en/advanced/event.html#subtitlebeforeupdate",a:"subtitlebeforeupdate"},"12.30":{t:"`subtitleAfterUpdate`\r",p:`Triggered after subtitles are updated. -<div className=" ...`,l:"en/advanced/event.html#subtitleafterupdate",a:"subtitleafterupdate"},"12.31":{t:"`subtitleLoad`\r",p:`Triggered when subtitles are loaded. -<div className="r ...`,l:"en/advanced/event.html#subtitleload",a:"subtitleload"},"12.32":{t:"`info`\r",p:`Triggered when the info panel is shown or hidden. -<div clas ...`,l:"en/advanced/event.html#info",a:"info"},"12.33":{t:"`layer`\r",p:`Triggered when a custom layer is shown or hidden. -<div clas ...`,l:"en/advanced/event.html#layer",a:"layer"},"12.34":{t:"`loading`\r",p:`Triggered when the loader is shown or hidden. -<div classNam ...`,l:"en/advanced/event.html#loading",a:"loading"},"12.35":{t:"`mask`\r",p:`Triggered when the mask layer is shown or hidden. -<div clas ...`,l:"en/advanced/event.html#mask",a:"mask"},"12.36":{t:"`subtitle`\r",p:`Triggered when the subtitle layer is shown or hidden. -<div ...`,l:"en/advanced/event.html#subtitle",a:"subtitle"},"12.37":{t:"`contextmenu`\r",p:`Triggered when the context menu is shown or hidden. -<div cl ...`,l:"en/advanced/event.html#contextmenu",a:"contextmenu"},"12.38":{t:"`control`\r",p:`Triggered when the control bar is shown or hidden. -<div cla ...`,l:"en/advanced/event.html#control",a:"control"},"12.39":{t:"`setting`\r",p:`Triggered when the settings panel is shown or hidden. -<div ...`,l:"en/advanced/event.html#setting",a:"setting"},"12.40":{t:"`muted`\r",p:`Triggered when the muted state changes. -<div className=&quo ...`,l:"en/advanced/event.html#muted",a:"muted"},"12.41":{t:"`keydown`\r",p:`Listens for the keydown event from the document. -<div class ...`,l:"en/advanced/event.html#keydown",a:"keydown"},"12.42":{t:"`video:canplay`\r",p:"The browser can start playing the media, but estimates there i ...",l:"en/advanced/event.html#video-canplay",a:"video-canplay"},"12.43":{t:"`video:canplaythrough`\r",p:"The browser estimates it can play the media through to the end ...",l:"en/advanced/event.html#video-canplaythrough",a:"video-canplaythrough"},"12.44":{t:"`video:complete`\r",p:`The OfflineAudioContext rendering is complete. -`,l:"en/advanced/event.html#video-complete",a:"video-complete"},"12.45":{t:"`video:durationchange`\r",p:`Triggered when the value of the duration property changes. -`,l:"en/advanced/event.html#video-durationchange",a:"video-durationchange"},"12.46":{t:"`video:emptied`\r",p:"The media has become empty; for example, this event is sent wh ...",l:"en/advanced/event.html#video-emptied",a:"video-emptied"},"12.47":{t:"`video:ended`\r",p:`Playback has stopped because the media has reached its end. -`,l:"en/advanced/event.html#video-ended",a:"video-ended"},"12.48":{t:"`video:error`\r",p:"An error occurred while fetching the media data, or the resour ...",l:"en/advanced/event.html#video-error",a:"video-error"},"12.49":{t:"`video:loadeddata`\r",p:`The first frame of the media has finished loading. -`,l:"en/advanced/event.html#video-loadeddata",a:"video-loadeddata"},"12.50":{t:"`video:loadedmetadata`\r",p:`Metadata has been loaded. -`,l:"en/advanced/event.html#video-loadedmetadata",a:"video-loadedmetadata"},"12.51":{t:"`video:pause`\r",p:`Playback has been paused. -`,l:"en/advanced/event.html#video-pause",a:"video-pause"},"12.52":{t:"`video:play`\r",p:`Playback has begun. -`,l:"en/advanced/event.html#video-play",a:"video-play"},"12.53":{t:"`video:playing`\r",p:"Playback is ready to start after having been paused or delayed ...",l:"en/advanced/event.html#video-playing",a:"video-playing"},"12.54":{t:"`video:progress`\r",p:`Fired periodically as the browser loads the resource. -`,l:"en/advanced/event.html#video-progress",a:"video-progress"},"12.55":{t:"`video:ratechange`\r",p:`The playback rate has changed. -`,l:"en/advanced/event.html#video-ratechange",a:"video-ratechange"},"12.56":{t:"`video:seeked`\r",p:`A seek operation has completed. -`,l:"en/advanced/event.html#video-seeked",a:"video-seeked"},"12.57":{t:"`video:seeking`\r",p:`A seek operation has begun. -`,l:"en/advanced/event.html#video-seeking",a:"video-seeking"},"12.58":{t:"`video:stalled`\r",p:"The user agent is trying to fetch media data, but data is unex ...",l:"en/advanced/event.html#video-stalled",a:"video-stalled"},"12.59":{t:"`video:suspend`\r",p:`Media data loading has been suspended. -`,l:"en/advanced/event.html#video-suspend",a:"video-suspend"},"12.60":{t:"`video:timeupdate`\r",p:`The time indicated by the currentTime property has changed. -`,l:"en/advanced/event.html#video-timeupdate",a:"video-timeupdate"},"12.61":{t:"`video:volumechange`\r",p:`The volume has changed. -`,l:"en/advanced/event.html#video-volumechange",a:"video-volumechange"},"12.62":{t:"`video:waiting`\r",p:`Playback has stopped because of a temporary lack of data. -`,l:"en/advanced/event.html#video-waiting",a:"video-waiting"},"13.0":{t:"# Global Properties\r",p:"The global properties here refer to the top-level properties m ...",l:"en/advanced/global.html",a:"global-properties"},"13.1":{t:"DEBUG\r",p:"Whether to enable debug mode, which can print all built-in vid ...",l:"en/advanced/global.html#debug",a:"debug"},"13.2":{t:"STYLE\r",p:`Returns the player style text. -<div className="run-cod ...`,l:"en/advanced/global.html#style",a:"style"},"13.3":{t:"CONTEXTMENU\r",p:`Whether to enable the context menu. Default is on. -<div cla ...`,l:"en/advanced/global.html#contextmenu",a:"contextmenu"},"13.4":{t:"NOTICE_TIME\r",p:"The display duration of notification messages, in milliseconds ...",l:"en/advanced/global.html#notice-time",a:"notice-time"},"13.5":{t:"SETTING_WIDTH\r",p:"The default width of the settings panel, in pixels. Default is ...",l:"en/advanced/global.html#setting-width",a:"setting-width"},"13.6":{t:"SETTING_ITEM_WIDTH\r",p:"The default width of a setting item in the settings panel, in ...",l:"en/advanced/global.html#setting-item-width",a:"setting-item-width"},"13.7":{t:"SETTING_ITEM_HEIGHT\r",p:"The default height of a setting item in the settings panel, in ...",l:"en/advanced/global.html#setting-item-height",a:"setting-item-height"},"13.8":{t:"RESIZE_TIME\r",p:"The throttle time for the resize event, in milliseconds. Defau ...",l:"en/advanced/global.html#resize-time",a:"resize-time"},"13.9":{t:"SCROLL_TIME\r",p:"The throttle time for the scroll event, in milliseconds. Defau ...",l:"en/advanced/global.html#scroll-time",a:"scroll-time"},"13.10":{t:"SCROLL_GAP\r",p:"The boundary tolerance distance for the view event, in pixels. ...",l:"en/advanced/global.html#scroll-gap",a:"scroll-gap"},"13.11":{t:"AUTO_PLAYBACK_MAX\r",p:"The maximum record count for the auto-playback feature. Defaul ...",l:"en/advanced/global.html#auto-playback-max",a:"auto-playback-max"},"13.12":{t:"AUTO_PLAYBACK_MIN\r",p:"The minimum record duration for the auto-playback feature, in ...",l:"en/advanced/global.html#auto-playback-min",a:"auto-playback-min"},"13.13":{t:"AUTO_PLAYBACK_TIMEOUT\r",p:"The hide delay duration for the auto-playback feature, in mill ...",l:"en/advanced/global.html#auto-playback-timeout",a:"auto-playback-timeout"},"13.14":{t:"RECONNECT_TIME_MAX\r",p:"The maximum number of automatic reconnection attempts when a c ...",l:"en/advanced/global.html#reconnect-time-max",a:"reconnect-time-max"},"13.15":{t:"RECONNECT_SLEEP_TIME\r",p:"The delay time for automatic reconnection when a connection er ...",l:"en/advanced/global.html#reconnect-sleep-time",a:"reconnect-sleep-time"},"13.16":{t:"CONTROL_HIDE_TIME\r",p:"The auto-hide delay time for the bottom control bar, in millis ...",l:"en/advanced/global.html#control-hide-time",a:"control-hide-time"},"13.17":{t:"DBCLICK_TIME\r",p:"The delay time for the double-click event, in milliseconds. De ...",l:"en/advanced/global.html#dbclick-time",a:"dbclick-time"},"13.18":{t:"DBCLICK_FULLSCREEN\r",p:"On desktop, whether double-click toggles fullscreen. Default i ...",l:"en/advanced/global.html#dbclick-fullscreen",a:"dbclick-fullscreen"},"13.19":{t:"MOBILE_DBCLICK_PLAY\r",p:"On mobile, whether double-click toggles play/pause. Default is ...",l:"en/advanced/global.html#mobile-dbclick-play",a:"mobile-dbclick-play"},"13.20":{t:"MOBILE_CLICK_PLAY\r",p:"On mobile, whether single-click toggles play/pause. Default is ...",l:"en/advanced/global.html#mobile-click-play",a:"mobile-click-play"},"13.21":{t:"AUTO_ORIENTATION_TIME\r",p:"On mobile, the delay time for auto-rotation, in milliseconds. ...",l:"en/advanced/global.html#auto-orientation-time",a:"auto-orientation-time"},"13.22":{t:"INFO_LOOP_TIME\r",p:"The refresh interval for the info panel, in milliseconds. Defa ...",l:"en/advanced/global.html#info-loop-time",a:"info-loop-time"},"13.23":{t:"FAST_FORWARD_VALUE\r",p:"On mobile, the speed multiplier for long-press fast-forward. D ...",l:"en/advanced/global.html#fast-forward-value",a:"fast-forward-value"},"13.24":{t:"FAST_FORWARD_TIME\r",p:"On mobile, the delay time for long-press fast-forward, in mill ...",l:"en/advanced/global.html#fast-forward-time",a:"fast-forward-time"},"13.25":{t:"TOUCH_MOVE_RATIO\r",p:"On mobile, the speed multiplier for left/right swipe to seek. ...",l:"en/advanced/global.html#touch-move-ratio",a:"touch-move-ratio"},"13.26":{t:"VOLUME_STEP\r",p:"The step size for volume adjustment via keyboard shortcuts. De ...",l:"en/advanced/global.html#volume-step",a:"volume-step"},"13.27":{t:"SEEK_STEP\r",p:"The step size for seeking via keyboard shortcuts, in seconds. ...",l:"en/advanced/global.html#seek-step",a:"seek-step"},"13.28":{t:"PLAYBACK_RATE\r",p:"The built-in list of playback rates. Default is [0.5, 0.75, 1, ...",l:"en/advanced/global.html#playback-rate",a:"playback-rate"},"13.29":{t:"ASPECT_RATIO\r",p:"The built-in list of video aspect ratios. Default is ['default ...",l:"en/advanced/global.html#aspect-ratio",a:"aspect-ratio"},"13.30":{t:"FLIP\r",p:"The built-in list of video flip options. Default is ['normal', ...",l:"en/advanced/global.html#flip",a:"flip"},"13.31":{t:"FULLSCREEN_WEB_IN_BODY\r",p:"Whether to mount the player under the body element during web ...",l:"en/advanced/global.html#fullscreen-web-in-body",a:"fullscreen-web-in-body"},"13.32":{t:"LOG_VERSION\r",p:`Sets whether to print the player version. Default is true. -< ...`,l:"en/advanced/global.html#log-version",a:"log-version"},"13.33":{t:"USE_RAF\r",p:"Sets whether to use requestAnimationFrame. Default is false. C ...",l:"en/advanced/global.html#use-raf",a:"use-raf"},"13.34":{t:"REMOVE_SRC_WHEN_DESTROY\r",p:"Whether to remove the video's src attribute and call load() to ...",l:"en/advanced/global.html#remove-src-when-destroy",a:"remove-src-when-destroy"},"14.0":{t:"# Writing Plugins\r",p:"Once you are familiar with the player's properties, methods, a ...",l:"en/advanced/plugin.html",a:"writing-plugins"},"15.0":{t:"# Instance Properties\r",p:"Here, Instance Properties refer to the first-level properties ...",l:"en/advanced/property.html",a:"instance-properties"},"15.1":{t:"`play`\r",p:` -Type: Function - -Play the video. -<div className="run-c ...`,l:"en/advanced/property.html#play",a:"play"},"15.2":{t:"`pause`\r",p:` -Type: Function - -Pause the video. -<div className="run- ...`,l:"en/advanced/property.html#pause",a:"pause"},"15.3":{t:"`toggle`\r",p:` -Type: Function - -Toggle video play and pause. -<div classNam ...`,l:"en/advanced/property.html#toggle",a:"toggle"},"15.4":{t:"`destroy`\r",p:` -Type: Function -Parameter: Boolean - -Destroy the player. Accept ...`,l:"en/advanced/property.html#destroy",a:"destroy"},"15.5":{t:"`reset`\r",p:` -Type: Function - -Reset the player's video element: removes the ...`,l:"en/advanced/property.html#reset",a:"reset"},"15.6":{t:"`seek`\r",p:` -Type: Setter -Parameter: Number - -Seek to a specific time in th ...`,l:"en/advanced/property.html#seek",a:"seek"},"15.7":{t:"`forward`\r",p:` -Type: Setter -Parameter: Number - -Fast-forward the video time, ...`,l:"en/advanced/property.html#forward",a:"forward"},"15.8":{t:"`backward`\r",p:` -Type: Setter -Parameter: Number - -Rewind the video time, in sec ...`,l:"en/advanced/property.html#backward",a:"backward"},"15.9":{t:"`volume`\r",p:` -Type: Setter/Getter -Parameter: Number - -Set and get the video ...`,l:"en/advanced/property.html#volume",a:"volume"},"15.10":{t:"`url`\r",p:` -Type: Setter/Getter -Parameter: String - -Set and get the video ...`,l:"en/advanced/property.html#url",a:"url"},"15.11":{t:"`switch`\r",p:` -Type: Setter -Parameter: String - -Set the video URL. Similar to ...`,l:"en/advanced/property.html#switch",a:"switch"},"15.12":{t:"`switchUrl`\r",p:` -Type: Function -Parameter: String - -Set the video URL. Similar ...`,l:"en/advanced/property.html#switchurl",a:"switchurl"},"15.13":{t:"`switchQuality`\r",p:` -Type: Function -Parameter: String - -Sets the video quality URL. ...`,l:"en/advanced/property.html#switchquality",a:"switchquality"},"15.14":{t:"`muted`\r",p:` -Type: Setter/Getter -Parameter: Boolean - -Sets or gets whether ...`,l:"en/advanced/property.html#muted",a:"muted"},"15.15":{t:"`currentTime`\r",p:` -Type: Setter/Getter -Parameter: Number - -Sets or gets the curre ...`,l:"en/advanced/property.html#currenttime",a:"currenttime"},"15.16":{t:"`duration`\r",p:` -Type: Getter - -Gets the duration of the video. -<div classNa ...`,l:"en/advanced/property.html#duration",a:"duration"},"15.17":{t:"`screenshot`\r",p:` -Type: Function - -Downloads a screenshot of the current video f ...`,l:"en/advanced/property.html#screenshot",a:"screenshot"},"15.18":{t:"`getDataURL`\r",p:` -Type: Function - -Gets the base64 URL of a screenshot of the cu ...`,l:"en/advanced/property.html#getdataurl",a:"getdataurl"},"15.19":{t:"`getBlobUrl`\r",p:` -Type: Function - -Gets the blob URL of a screenshot of the curr ...`,l:"en/advanced/property.html#getbloburl",a:"getbloburl"},"15.20":{t:"`fullscreen`\r",p:` -Type: Setter/Getter -Parameter: Boolean - -Sets or gets the play ...`,l:"en/advanced/property.html#fullscreen",a:"fullscreen"},"15.21":{t:"`fullscreenWeb`\r",p:` -Type: Setter/Getter -Parameter: Boolean - -Sets or gets the play ...`,l:"en/advanced/property.html#fullscreenweb",a:"fullscreenweb"},"15.22":{t:"`pip`\r",p:` -Type: Setter/Getter -Parameter: Boolean - -Sets or gets the play ...`,l:"en/advanced/property.html#pip",a:"pip"},"15.23":{t:"`poster`\r",p:` -Type: Setter/Getter -Parameter: String - -Sets and gets the vide ...`,l:"en/advanced/property.html#poster",a:"poster"},"15.24":{t:"`mini`\r",p:` -Type: Setter/Getter -Parameter: Boolean - -Sets and gets the pla ...`,l:"en/advanced/property.html#mini",a:"mini"},"15.25":{t:"`playing`\r",p:` -Type: Getter -Parameter: Boolean - -Gets whether the video is cu ...`,l:"en/advanced/property.html#playing",a:"playing"},"15.26":{t:"`state`\r",p:` -Type: Setter/Getter -Parameter: String - -Gets or sets the playe ...`,l:"en/advanced/property.html#state",a:"state"},"15.27":{t:"`autoSize`\r",p:` -Type: Function - -Sets whether the video adapts its size automa ...`,l:"en/advanced/property.html#autosize",a:"autosize"},"15.28":{t:"`rect`\r",p:` -Type: Getter - -Gets the player's dimensions and coordinate inf ...`,l:"en/advanced/property.html#rect",a:"rect"},"15.29":{t:"`bottom` / `top` / `left` / `right` / `x` / `y` / `width` / `height`\r",p:` -Type: Getter - -These properties provide quick access to rect: - ...`,l:"en/advanced/property.html#bottom-top-left-right-x-y-width-height",a:"bottom-top-left-right-x-y-width-height"},"15.30":{t:"`flip`\r",p:` -Type: Setter/Getter -Parameter: String - -Sets and gets the play ...`,l:"en/advanced/property.html#flip",a:"flip"},"15.31":{t:"`playbackRate`\r",p:` -Type: Setter/Getter -Parameter: Number - -Sets and gets the play ...`,l:"en/advanced/property.html#playbackrate",a:"playbackrate"},"15.32":{t:"`aspectRatio`\r",p:` -Type: Setter/Getter -Parameter: String - -Sets and gets the play ...`,l:"en/advanced/property.html#aspectratio",a:"aspectratio"},"15.33":{t:"`autoHeight`\r",p:` -Type: Function - -When the container only has a defined width, ...`,l:"en/advanced/property.html#autoheight",a:"autoheight"},"15.34":{t:"`attr`\r",p:` -Type: Function -Parameter: String - -Dynamically get and set att ...`,l:"en/advanced/property.html#attr",a:"attr"},"15.35":{t:"`type`\r",p:` -Type: Setter/Getter -Parameter: String - -Dynamically get and se ...`,l:"en/advanced/property.html#type",a:"type"},"15.36":{t:"`theme`\r",p:` -Type: Setter/Getter -Parameter: String - -Dynamically get and se ...`,l:"en/advanced/property.html#theme",a:"theme"},"15.37":{t:"`airplay`\r",p:` -Type: Function - -Initiate AirPlay. -<div className="run ...`,l:"en/advanced/property.html#airplay",a:"airplay"},"15.38":{t:"`loaded`\r",p:` -Type: Getter - -The proportion of video buffered, ranging from ...`,l:"en/advanced/property.html#loaded",a:"loaded"},"15.39":{t:"`loadedTime`\r",p:` -Type: Getter - -The buffered media duration in seconds. Typical ...`,l:"en/advanced/property.html#loadedtime",a:"loadedtime"},"15.40":{t:"`played`\r",p:` -Type: Getter - -The proportion of video played, ranging from [0 ...`,l:"en/advanced/property.html#played",a:"played"},"15.41":{t:"`proxy`\r",p:` -Type: Function - -A proxy function for DOM events, essentially ...`,l:"en/advanced/property.html#proxy",a:"proxy"},"15.42":{t:"`query`\r",p:` -Type: Function - -A DOM query function, similar to document.que ...`,l:"en/advanced/property.html#query",a:"query"},"15.43":{t:"`video`\r",p:` -Type: Element - -Quickly returns the player's video element. -&l ...`,l:"en/advanced/property.html#video",a:"video"},"15.44":{t:"`cssVar`\r",p:` -Type: Function - -Dynamically get or set CSS variables. -<div ...`,l:"en/advanced/property.html#cssvar",a:"cssvar"},"15.45":{t:"`quality`\r",p:` -Type: Setter -Parameter: Array - -Dynamically set the quality li ...`,l:"en/advanced/property.html#quality",a:"quality"},"15.46":{t:"`thumbnails`\r",p:` -Type: Setter/Getter -Parameter: Object - -Dynamically set thumbn ...`,l:"en/advanced/property.html#thumbnails",a:"thumbnails"},"15.47":{t:"`subtitleOffset`\r",p:` -Type: Setter/Getter -Parameter: Number - -Dynamically set subtit ...`,l:"en/advanced/property.html#subtitleoffset",a:"subtitleoffset"},"16.0":{t:"# Context Menu\r",p:"\r",l:"en/component/contextmenu.html",a:"context-menu"},"16.1":{t:"Configuration\r",p:` - - -Property -Type -Description - - - - -disable -Boolean -Whether to di ...`,l:"en/component/contextmenu.html#configuration",a:"configuration"},"16.2":{t:"Creation\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/contextmenu.html#creation",a:"creation"},"16.3":{t:"Addition\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/contextmenu.html#addition",a:"addition"},"16.4":{t:"Deletion\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/contextmenu.html#deletion",a:"deletion"},"16.5":{t:"Update\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/contextmenu.html#update",a:"update"},"17.0":{t:"# Controls\r",p:"\r",l:"en/component/controls.html",a:"controls"},"17.1":{t:"Configuration\r",p:` - - -Property -Type -Description - - - - -disable -Boolean -Whether to di ...`,l:"en/component/controls.html#configuration",a:"configuration"},"17.2":{t:"Creation\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/controls.html#creation",a:"creation"},"17.3":{t:"Adding\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/controls.html#adding",a:"adding"},"17.4":{t:"Removal\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/controls.html#removal",a:"removal"},"17.5":{t:"Updating\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/controls.html#updating",a:"updating"},"18.0":{t:"# Layers\r",p:"\r",l:"en/component/layers.html",a:"layers"},"18.1":{t:"Configuration\r",p:` - - -Property -Type -Description - - - - -disable -Boolean -Whether to di ...`,l:"en/component/layers.html#configuration",a:"configuration"},"18.2":{t:"Creation\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/layers.html#creation",a:"creation"},"18.3":{t:"Addition\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/layers.html#addition",a:"addition"},"18.4":{t:"Removal\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/layers.html#removal",a:"removal"},"18.5":{t:"Update\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/layers.html#update",a:"update"},"19.0":{t:"# Settings Panel\r",p:"\r",l:"en/component/setting.html",a:"settings-panel"},"19.1":{t:"Built-in\r",p:"First, you need to open the settings panel. It comes with four ...",l:"en/component/setting.html#built-in",a:"built-in"},"19.2":{t:"Create - Button\r",p:` - - -Property -Type -Description - - - - -html -String, Element -The DOM ...`,l:"en/component/setting.html#create-button",a:"create-button"},"19.3":{t:"Create - Selection List\r",p:` - - -Property -Type -Description - - - - -html -String, Element -The DOM ...`,l:"en/component/setting.html#create-selection-list",a:"create-selection-list"},"19.4":{t:"Create - Nested List\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/setting.html#create-nested-list",a:"create-nested-list"},"19.5":{t:"Create - Toggle Button\r",p:` - - -Property -Type -Description - - - - -html -String, Element -DOM elem ...`,l:"en/component/setting.html#create-toggle-button",a:"create-toggle-button"},"19.6":{t:"Create - Range Slider\r",p:` - - -Property -Type -Description - - - - -html -String, Element -DOM elem ...`,l:"en/component/setting.html#create-range-slider",a:"create-range-slider"},"19.7":{t:"Add\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/setting.html#add",a:"add"},"19.8":{t:"Remove\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/setting.html#remove",a:"remove"},"19.9":{t:"Update\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/setting.html#update",a:"update"},"20.0":{t:"# Installation and Usage\r",p:"\r",l:"en/index.html",a:"installation-and-usage"},"20.1":{t:"Installation\r",p:`::: code-group -npm install artplayer - -yarn add artplayer - -pnpm ...`,l:"en/index.html#installation",a:"installation"},"20.2":{t:"`CDN`\r",p:`::: code-group -https://cdn.jsdelivr.net/npm/artplayer/dist/art ...`,l:"en/index.html#cdn",a:"cdn"},"20.3":{t:"Usage\r",p:`::: code-group -<html> - <head> - <title ...`,l:"en/index.html#usage",a:"usage"},"20.4":{t:"`Vue.js`\r",p:`::: code-group -<template> - <div ref="$container ...`,l:"en/index.html#vue-js",a:"vue-js"},"20.5":{t:"`React.js`\r",p:`::: code-group -import Artplayer from 'artplayer' -import { useE ...`,l:"en/index.html#react-js",a:"react-js"},"20.6":{t:"TypeScript\r",p:"The artplayer.d.ts file is automatically imported when you imp ...",l:"en/index.html#typescript",a:"typescript"},"20.7":{t:"Vue.js\r",p:` - -`,l:"en/index.html#vue-js",a:"vue-js"},"20.8":{t:"React.js\r",p:`import Artplayer from 'artplayer'; -const art = useRef<Artpl ...`,l:"en/index.html#react-js",a:"react-js"},"20.9":{t:"Option\r",p:`You can also use the type for the options. -import Artplayer, { ...`,l:"en/index.html#option",a:"option"},"20.10":{t:"JavaScript\r",p:"Sometimes your js files may lose TypeScript type hints. In suc ...",l:"en/index.html#javascript",a:"javascript"},"20.11":{t:"Legacy Browsers\r",p:"The production build artplayer.js only supports the latest maj ...",l:"en/index.html#legacy-browsers",a:"legacy-browsers"},"20.12":{t:"ECMAScript Module\r",p:`::: tip ESM Demo: -https://artplayer.org/esm.html -::: -Starting ...`,l:"en/index.html#ecmascript-module",a:"ecmascript-module"},"20.13":{t:"Custom userAgent\r",p:"Currently, the detection of whether a device is mobile is not ...",l:"en/index.html#custom-useragent",a:"custom-useragent"},"21.0":{t:"# Language Settings\r",p:`::: danger -Due to the increasing number of bundled multilingua ...`,l:"en/start/i18n.html",a:"language-settings"},"21.1":{t:"Default Languages\r",p:"The default languages are: en, zh-cn. No manual import is requ ...",l:"en/start/i18n.html#default-languages",a:"default-languages"},"21.2":{t:"Importing Languages\r",p:"Language files before bundling are located at: artplayer/src/i ...",l:"en/start/i18n.html#importing-languages",a:"importing-languages"},"21.3":{t:"Adding a New Language\r",p:`var art = new Artplayer({ - container: '.artplayer-app', - ...`,l:"en/start/i18n.html#adding-a-new-language",a:"adding-a-new-language"},"21.4":{t:"Modifying a Language\r",p:`import zhTw from 'artplayer/i18n/zh-tw'; - -var art = new Artpla ...`,l:"en/start/i18n.html#modifying-a-language",a:"modifying-a-language"},"22.0":{t:"# Basic Options\r",p:"\r",l:"en/start/option.html",a:"basic-options"},"22.1":{t:"`container`\r",p:` -Type: String, Element -Default: #artplayer - -The DOM container ...`,l:"en/start/option.html#container",a:"container"},"22.2":{t:"`url`\r",p:` -Type: String -Default: '' - -The video source URL. -<div class ...`,l:"en/start/option.html#url",a:"url"},"22.3":{t:"`id`\r",p:` -Type: String -Default: '' - -The unique identifier for the playe ...`,l:"en/start/option.html#id",a:"id"},"22.4":{t:"`onReady`\r",p:` -Type: Function -Default: undefined - -The constructor accepts a ...`,l:"en/start/option.html#onready",a:"onready"},"22.5":{t:"`poster`\r",p:` -Type: String -Default: '' - -The video poster image, which only ...`,l:"en/start/option.html#poster",a:"poster"},"22.6":{t:"`theme`\r",p:` -Type: String -Default: #f00 - -The player's theme color, current ...`,l:"en/start/option.html#theme",a:"theme"},"22.7":{t:"`volume`\r",p:` -Type: Number -Default: 0.7 - -The player's default volume. -<d ...`,l:"en/start/option.html#volume",a:"volume"},"22.8":{t:"`isLive`\r",p:` -Type: Boolean -Default: false - -Enable live streaming mode. Thi ...`,l:"en/start/option.html#islive",a:"islive"},"22.9":{t:"`muted`\r",p:` -Type: Boolean -Default: false - -Whether to start muted by defau ...`,l:"en/start/option.html#muted",a:"muted"},"22.10":{t:"`autoplay`\r",p:` -Type: Boolean -Default: false - -Whether to autoplay. -<div cl ...`,l:"en/start/option.html#autoplay",a:"autoplay"},"22.11":{t:"`autoSize`\r",p:` -Type: Boolean -Default: false - -By default, the player's dimens ...`,l:"en/start/option.html#autosize",a:"autosize"},"22.12":{t:"`autoMini`\r",p:` -Type: Boolean -Default: false - -Automatically enters Mini Playe ...`,l:"en/start/option.html#automini",a:"automini"},"22.13":{t:"`loop`\r",p:` -Type: Boolean -Default: false - -Whether to loop playback. -<d ...`,l:"en/start/option.html#loop",a:"loop"},"22.14":{t:"`flip`\r",p:` -Type: Boolean -Default: false - -Whether to display the video fl ...`,l:"en/start/option.html#flip",a:"flip"},"22.15":{t:"`playbackRate`\r",p:` -Type: Boolean -Default: false - -Whether to display the video pl ...`,l:"en/start/option.html#playbackrate",a:"playbackrate"},"22.16":{t:"`aspectRatio`\r",p:` -Type: Boolean -Default: false - -Whether to display the video as ...`,l:"en/start/option.html#aspectratio",a:"aspectratio"},"22.17":{t:"`screenshot`\r",p:` -Type: Boolean -Default: false - -Whether to display the Screensh ...`,l:"en/start/option.html#screenshot",a:"screenshot"},"22.18":{t:"`setting`\r",p:` -Type: Boolean -Default: false - -Whether to display the toggle b ...`,l:"en/start/option.html#setting",a:"setting"},"22.19":{t:"`hotkey`\r",p:` -Type: Boolean -Default: true - -Whether to use hotkeys. -<div ...`,l:"en/start/option.html#hotkey",a:"hotkey"},"22.20":{t:"`pip`\r",p:` -Type: Boolean -Default: false - -Whether to display the Picture- ...`,l:"en/start/option.html#pip",a:"pip"},"22.21":{t:"`mutex`\r",p:` -Type: Boolean -Default: true - -If multiple players exist on the ...`,l:"en/start/option.html#mutex",a:"mutex"},"22.22":{t:"`backdrop`\r",p:` -Type: Boolean -Default: true - -Whether to enable the backdrop b ...`,l:"en/start/option.html#backdrop",a:"backdrop"},"22.23":{t:"`fullscreen`\r",p:` -Type: Boolean -Default: false - -Whether to display the player W ...`,l:"en/start/option.html#fullscreen",a:"fullscreen"},"22.24":{t:"`fullscreenWeb`\r",p:` -Type: Boolean -Default: false - -Whether to display the player W ...`,l:"en/start/option.html#fullscreenweb",a:"fullscreenweb"},"22.25":{t:"`subtitleOffset`\r",p:` -Type: Boolean -Default: false - -Subtitle time offset, ranging f ...`,l:"en/start/option.html#subtitleoffset",a:"subtitleoffset"},"22.26":{t:"`miniProgressBar`\r",p:` -Type: Boolean -Default: false - -A mini progress bar that only a ...`,l:"en/start/option.html#miniprogressbar",a:"miniprogressbar"},"22.27":{t:"`useSSR`\r",p:` -Type: Boolean -Default: false - -Whether to use SSR (Server-Side ...`,l:"en/start/option.html#usessr",a:"usessr"},"22.28":{t:"`playsInline`\r",p:` -Type: Boolean -Default: true - -Whether to use playsInline mode ...`,l:"en/start/option.html#playsinline",a:"playsinline"},"22.29":{t:"`layers`\r",p:` -Type: Array -Default: [] - -Initialize custom layers. -<div cl ...`,l:"en/start/option.html#layers",a:"layers"},"22.30":{t:"`settings`\r",p:` -Type: Array -Default: [] - -Initialize custom settings panels. -& ...`,l:"en/start/option.html#settings",a:"settings"},"22.31":{t:"`contextmenu`\r",p:` -Type: Array -Default: [] - -Initialize custom context menus. -< ...`,l:"en/start/option.html#contextmenu",a:"contextmenu"},"22.32":{t:"`controls`\r",p:` -Type: Array -Default: [] - -Initialize custom bottom control bar ...`,l:"en/start/option.html#controls",a:"controls"},"22.33":{t:"`quality`\r",p:` -Type: Array -Default: [] - -Whether to display the Quality Selec ...`,l:"en/start/option.html#quality",a:"quality"},"22.34":{t:"`highlight`\r",p:` -Type: Array -Default: [] - -Display Highlight Information on the ...`,l:"en/start/option.html#highlight",a:"highlight"},"22.35":{t:"`plugins`\r",p:` -Type: Array -Default: [] - -Initialize custom plugins. -<div c ...`,l:"en/start/option.html#plugins",a:"plugins"},"22.36":{t:"`thumbnails`\r",p:` -Type: Object -Default: {} - -Set Preview Thumbnails on the progr ...`,l:"en/start/option.html#thumbnails",a:"thumbnails"},"22.37":{t:"`subtitle`\r",p:` -Type: Object -Default: {} - -Set video subtitles. Supported subt ...`,l:"en/start/option.html#subtitle",a:"subtitle"},"22.38":{t:"`moreVideoAttr`\r",p:` -Type: Object -Default: {'controls': false, 'preload': 'metadat ...`,l:"en/start/option.html#morevideoattr",a:"morevideoattr"},"22.39":{t:"`icons`\r",p:` -Type: Object -Default: {} - -Used to replace default icons. Supp ...`,l:"en/start/option.html#icons",a:"icons"},"22.40":{t:"`type`\r",p:` -Type: String -Default: '' - -Used to specify the video format. I ...`,l:"en/start/option.html#type",a:"type"},"22.41":{t:"`customType`\r",p:` -Type: Object -Default: {} - -Matches based on the video's type a ...`,l:"en/start/option.html#customtype",a:"customtype"},"22.42":{t:"`lang`\r",p:` -Type: String -Default: navigator.language.toLowerCase() - -The d ...`,l:"en/start/option.html#lang",a:"lang"},"22.43":{t:"`i18n`\r",p:` -Type: Object -Default: {} - -Custom i18n configuration. This con ...`,l:"en/start/option.html#i18n",a:"i18n"},"22.44":{t:"`lock`\r",p:` -Type: Boolean -Default: false - -Whether to display a lock butto ...`,l:"en/start/option.html#lock",a:"lock"},"22.45":{t:"`gesture`\r",p:` -Type: Boolean -Default: true - -Whether to enable gesture events ...`,l:"en/start/option.html#gesture",a:"gesture"},"22.46":{t:"`fastForward`\r",p:` -Type: Boolean -Default: false - -Whether to add a long-press vid ...`,l:"en/start/option.html#fastforward",a:"fastforward"},"22.47":{t:"`autoPlayback`\r",p:` -Type: Boolean -Default: false - -Whether to use the automatic pl ...`,l:"en/start/option.html#autoplayback",a:"autoplayback"},"22.48":{t:"`autoOrientation`\r",p:` -Type: Boolean -Default: false - -Whether to rotate the player in ...`,l:"en/start/option.html#autoorientation",a:"autoorientation"},"22.49":{t:"`airplay`\r",p:` -Type: Boolean -Default: false - -Whether to display the airplay ...`,l:"en/start/option.html#airplay",a:"airplay"},"22.50":{t:"`cssVar`\r",p:` -Type: Object -Default: {} - -Used to modify the built-in CSS var ...`,l:"en/start/option.html#cssvar",a:"cssvar"},"22.51":{t:"`proxy`\r",p:` -Type: function -Default: undefined - -The function can return a ...`,l:"en/start/option.html#proxy",a:"proxy"},"23.0":{t:"# 安装使用\r",p:"\r",l:"index.html",a:"安装使用"},"23.1":{t:"安装\r",p:`::: code-group -npm install artplayer - -yarn add artplayer - -pnpm ...`,l:"index.html#安装",a:"安装"},"23.2":{t:"`CDN`\r",p:`::: code-group -https://cdn.jsdelivr.net/npm/artplayer/dist/art ...`,l:"index.html#cdn",a:"cdn"},"23.3":{t:"使用\r",p:`::: code-group -<html> - <head> - <title ...`,l:"index.html#使用",a:"使用"},"23.4":{t:"`Vue.js`\r",p:`::: code-group -<template> - <div ref="$container ...`,l:"index.html#vue-js",a:"vue-js"},"23.5":{t:"`React.js`\r",p:`::: code-group -import Artplayer from 'artplayer' -import { useE ...`,l:"index.html#react-js",a:"react-js"},"23.6":{t:"TypeScript\r",p:`导入 Artplayer 时会自动导入的 artplayer.d.ts -`,l:"index.html#typescript",a:"typescript"},"23.7":{t:"Vue.js\r",p:` - -`,l:"index.html#vue-js",a:"vue-js"},"23.8":{t:"React.js\r",p:`import Artplayer from 'artplayer'; -const art = useRef<Artpl ...`,l:"index.html#react-js",a:"react-js"},"23.9":{t:"Option\r",p:`你也可以使用选项的类型 -import Artplayer, { type Option } from 'artplayer' ...`,l:"index.html#option",a:"option"},"23.10":{t:"JavaScript\r",p:`有时你的 js 文件会丢失 TypeScript 的类型提示,这时候你可以手动导入类型 -变量: -/** - * @type { ...`,l:"index.html#javascript",a:"javascript"},"23.11":{t:"古老的浏览器\r",p:`生产构建的 artplayer.js 只兼容最新一个主版本的 Chrome:last 1 Chrome version -对于 ...`,l:"index.html#古老的浏览器",a:"古老的浏览器"},"23.12":{t:"ECMAScript Module\r",p:`::: tip ESM Demo: -https://artplayer.org/esm.html -::: -从 5.2.6 开 ...`,l:"index.html#ecmascript-module",a:"ecmascript-module"},"23.13":{t:"自定义 userAgent\r",p:"目前对于是否移动设备的判断并不准确,有时候希望通过改变 userAgent 来调整播放器的UI, 所以在 5.2.4 开始新 ...",l:"index.html#自定义-useragent",a:"自定义-useragent"},"24.0":{t:"# 弹幕库\r",p:"\r",l:"plugin/danmuku.html",a:"弹幕库"},"24.1":{t:"演示\r",p:`👉 查看完整演示 -`,l:"plugin/danmuku.html#演示",a:"演示"},"24.2":{t:"安装\r",p:`::: code-group -npm install artplayer-plugin-danmuku - -yarn add ...`,l:"plugin/danmuku.html#安装",a:"安装"},"24.3":{t:"CDN\r",p:`::: code-group -https://cdn.jsdelivr.net/npm/artplayer-plugin-d ...`,l:"plugin/danmuku.html#cdn",a:"cdn"},"24.4":{t:"弹幕结构\r",p:`每一个弹幕是一个对象,多个弹幕组成的数组就是弹幕库,通常只需要text就可以发送一个弹幕,其余都是非必要参数 -{ - t ...`,l:"plugin/danmuku.html#弹幕结构",a:"弹幕结构"},"24.5":{t:"全部选项\r",p:`只有danmuku是必须的参数,其余都是非必填 -{ - danmuku: [], // 弹幕数据 - speed: ...`,l:"plugin/danmuku.html#全部选项",a:"全部选项"},"24.6":{t:"生命周期\r",p:`来自用户输入的弹幕: -beforeEmit -> filter -> beforeVisible -> a ...`,l:"plugin/danmuku.html#生命周期",a:"生命周期"},"24.7":{t:"使用弹幕数组\r",p:"<div className="run-code" data-libs="./uncom ...",l:"plugin/danmuku.html#使用弹幕数组",a:"使用弹幕数组"},"24.8":{t:"使用弹幕 XML\r",p:`弹幕 XML 文件,和 Bilibili 网站的弹幕格式一致 -<div className="run-cod ...`,l:"plugin/danmuku.html#使用弹幕-xml",a:"使用弹幕-xml"},"24.9":{t:"使用异步返回\r",p:"<div className="run-code" data-libs="./uncom ...",l:"plugin/danmuku.html#使用异步返回",a:"使用异步返回"},"24.10":{t:"`hide/show`\r",p:`通过方法 hide 和 show 进行隐藏或者显示弹幕 -<div className="run-code&q ...`,l:"plugin/danmuku.html#hide-show",a:"hide-show"},"24.11":{t:"`isHide`\r",p:`通过属性 isHide 判断当前弹幕是隐藏或者显示 -<div className="run-code&quo ...`,l:"plugin/danmuku.html#ishide",a:"ishide"},"24.12":{t:"`emit`\r",p:`通过方法 emit 发送一条实时弹幕 -<div className="run-code" data ...`,l:"plugin/danmuku.html#emit",a:"emit"},"24.13":{t:"`config`\r",p:`通过方法 config 实时改变弹幕配置 -<div className="run-code" da ...`,l:"plugin/danmuku.html#config",a:"config"},"24.14":{t:"`load`\r",p:`通过 load 方法可以重载弹幕库,或者切换新弹幕库,或者追加新的弹幕库 -<div className="r ...`,l:"plugin/danmuku.html#load",a:"load"},"24.15":{t:"`reset`\r",p:`用于清空当前显示的弹幕 -<div className="run-code" data-libs=& ...`,l:"plugin/danmuku.html#reset",a:"reset"},"24.16":{t:"`mount`\r",p:`在初始化弹幕插件的时候,是可以指定弹幕发射器的挂载位置的,默认是挂载在控制栏的中部,你也可以把它挂载在播放器以外的地方。 -当 ...`,l:"plugin/danmuku.html#mount",a:"mount"},"24.17":{t:"`option`\r",p:`用于获取当前弹幕配置 -<div className="run-code" data-libs=&q ...`,l:"plugin/danmuku.html#option",a:"option"},"24.18":{t:"事件\r",p:"<div className="run-code" data-libs="./uncom ...",l:"plugin/danmuku.html#事件",a:"事件"},"25.0":{t:"# 语言设置\r",p:`::: danger -鉴于捆绑的多国语言越来越多, 从 5.1.0 版本开始, artplayer.js 核心代码除了包含 ...`,l:"start/i18n.html",a:"语言设置"},"25.1":{t:"默认语言\r",p:`默认语言有: en, zh-cn, 无需手动导入 -var art = new Artplayer({ - contain ...`,l:"start/i18n.html#默认语言",a:"默认语言"},"25.2":{t:"导入语言\r",p:`打包前的语言文件存放于: artplayer/src/i18n/*.js, 欢迎来添加你的语言 -打包后的语言文件存放于: a ...`,l:"start/i18n.html#导入语言",a:"导入语言"},"25.3":{t:"新增语言\r",p:`var art = new Artplayer({ - container: '.artplayer-app', - ...`,l:"start/i18n.html#新增语言",a:"新增语言"},"25.4":{t:"修改语言\r",p:`import zhTw from 'artplayer/i18n/zh-tw'; - -var art = new Artpla ...`,l:"start/i18n.html#修改语言",a:"修改语言"},"26.0":{t:"# 基础选项\r",p:"\r",l:"start/option.html",a:"基础选项"},"26.1":{t:"`container`\r",p:` -Type: String, Element -Default: #artplayer - -播放器挂载的 DOM 容器 -< ...`,l:"start/option.html#container",a:"container"},"26.2":{t:"`url`\r",p:` -Type: String -Default: '' - -视频源地址 -<div className="run-c ...`,l:"start/option.html#url",a:"url"},"26.3":{t:"`id`\r",p:` -Type: String -Default: '' - -播放器的唯一标识,目前只用于记忆播放 autoplayback -< ...`,l:"start/option.html#id",a:"id"},"26.4":{t:"`onReady`\r",p:` -Type: Function -Default: undefined - -构造函数接受一个函数作为第二个参数,播放器初始化成功 ...`,l:"start/option.html#onready",a:"onready"},"26.5":{t:"`poster`\r",p:` -Type: String -Default: '' - -视频的海报,只会出现在播放器初始化且未播放的状态下 -<div c ...`,l:"start/option.html#poster",a:"poster"},"26.6":{t:"`theme`\r",p:` -Type: String -Default: #f00 - -播放器主题颜色,目前用于 进度条 和 高亮元素 上 -<div ...`,l:"start/option.html#theme",a:"theme"},"26.7":{t:"`volume`\r",p:` -Type: Number -Default: 0.7 - -播放器的默认音量 -<div className="r ...`,l:"start/option.html#volume",a:"volume"},"26.8":{t:"`isLive`\r",p:` -Type: Boolean -Default: false - -使用直播模式,会隐藏进度条和播放时间 -<div clas ...`,l:"start/option.html#islive",a:"islive"},"26.9":{t:"`muted`\r",p:` -Type: Boolean -Default: false - -是否默认静音 -<div className=" ...`,l:"start/option.html#muted",a:"muted"},"26.10":{t:"`autoplay`\r",p:` -Type: Boolean -Default: false - -是否自动播放 -<div className=" ...`,l:"start/option.html#autoplay",a:"autoplay"},"26.11":{t:"`autoSize`\r",p:` -Type: Boolean -Default: false - -播放器的尺寸默认会填充整个 container 容器尺寸,所以 ...`,l:"start/option.html#autosize",a:"autosize"},"26.12":{t:"`autoMini`\r",p:` -Type: Boolean -Default: false - -当播放器滚动到浏览器视口以外时,自动进入 迷你播放 模式 -&l ...`,l:"start/option.html#automini",a:"automini"},"26.13":{t:"`loop`\r",p:` -Type: Boolean -Default: false - -是否循环播放 -<div className=" ...`,l:"start/option.html#loop",a:"loop"},"26.14":{t:"`flip`\r",p:` -Type: Boolean -Default: false - -是否显示视频翻转功能,目前只出现在 设置面板 和 右键菜单 里 ...`,l:"start/option.html#flip",a:"flip"},"26.15":{t:"`playbackRate`\r",p:` -Type: Boolean -Default: false - -是否显示视频播放速度功能,会出现在 设置面板 和 右键菜单 里 ...`,l:"start/option.html#playbackrate",a:"playbackrate"},"26.16":{t:"`aspectRatio`\r",p:` -Type: Boolean -Default: false - -是否显示视频长宽比功能,会出现在 设置面板 和 右键菜单 里 - ...`,l:"start/option.html#aspectratio",a:"aspectratio"},"26.17":{t:"`screenshot`\r",p:` -Type: Boolean -Default: false - -是否在底部控制栏里显示 视频截图 功能 -<div cla ...`,l:"start/option.html#screenshot",a:"screenshot"},"26.18":{t:"`setting`\r",p:` -Type: Boolean -Default: false - -是否在底部控制栏里显示 设置面板 的开关按钮 -<div ...`,l:"start/option.html#setting",a:"setting"},"26.19":{t:"`hotkey`\r",p:` -Type: Boolean -Default: true - -是否使用快捷键 -<div className=" ...`,l:"start/option.html#hotkey",a:"hotkey"},"26.20":{t:"`pip`\r",p:` -Type: Boolean -Default: false - -是否在底部控制栏里显示 画中画 的开关按钮 -<div c ...`,l:"start/option.html#pip",a:"pip"},"26.21":{t:"`mutex`\r",p:` -Type: Boolean -Default: true - -假如页面里同时存在多个播放器,是否只能让一个播放器播放 -< ...`,l:"start/option.html#mutex",a:"mutex"},"26.22":{t:"`backdrop`\r",p:` -Type: Boolean -Default: true - -是否开启播放器 UI 的背景虚化效果。开启后,设置面板、右键菜单 ...`,l:"start/option.html#backdrop",a:"backdrop"},"26.23":{t:"`fullscreen`\r",p:` -Type: Boolean -Default: false - -是否在底部控制栏里显示播放器 窗口全屏 按钮 -<div ...`,l:"start/option.html#fullscreen",a:"fullscreen"},"26.24":{t:"`fullscreenWeb`\r",p:` -Type: Boolean -Default: false - -是否在底部控制栏里显示播放器 网页全屏 按钮 -<div ...`,l:"start/option.html#fullscreenweb",a:"fullscreenweb"},"26.25":{t:"`subtitleOffset`\r",p:` -Type: Boolean -Default: false - -字幕时间偏移,范围在 [-5s, 5s],出现在 设置面板 里 ...`,l:"start/option.html#subtitleoffset",a:"subtitleoffset"},"26.26":{t:"`miniProgressBar`\r",p:` -Type: Boolean -Default: false - -迷你进度条,只在播放器失去焦点后且正在播放时出现 -<di ...`,l:"start/option.html#miniprogressbar",a:"miniprogressbar"},"26.27":{t:"`useSSR`\r",p:` -Type: Boolean -Default: false - -是否使用 SSR 挂载模式,假如你希望在播放器挂载前,就提前渲 ...`,l:"start/option.html#usessr",a:"usessr"},"26.28":{t:"`playsInline`\r",p:` -Type: Boolean -Default: true - -在移动端是否使用 playsInline 模式 -<div ...`,l:"start/option.html#playsinline",a:"playsinline"},"26.29":{t:"`layers`\r",p:` -Type: Array -Default: [] - -初始化自定义的 层 -<div className="ru ...`,l:"start/option.html#layers",a:"layers"},"26.30":{t:"`settings`\r",p:` -Type: Array -Default: [] - -初始化自定义的 设置面板 -<div className=" ...`,l:"start/option.html#settings",a:"settings"},"26.31":{t:"`contextmenu`\r",p:` -Type: Array -Default: [] - -初始化自定义的 右键菜单 -<div className=" ...`,l:"start/option.html#contextmenu",a:"contextmenu"},"26.32":{t:"`controls`\r",p:` -Type: Array -Default: [] - -初始化自定义的底部 控制栏 -<div className=&quo ...`,l:"start/option.html#controls",a:"controls"},"26.33":{t:"`quality`\r",p:` -Type: Array -Default: [] - -是否在底部控制栏里显示 画质选择 列表 - - - -属性 -类型 -描述 - - - - - ...`,l:"start/option.html#quality",a:"quality"},"26.34":{t:"`highlight`\r",p:` -Type: Array -Default: [] - -在进度条上显示 高亮信息 - - - -属性 -类型 -描述 - - - - -time -Nu ...`,l:"start/option.html#highlight",a:"highlight"},"26.35":{t:"`plugins`\r",p:` -Type: Array -Default: [] - -初始化自定义的 插件 -<div className="r ...`,l:"start/option.html#plugins",a:"plugins"},"26.36":{t:"`thumbnails`\r",p:` -Type: Object -Default: {} - -在进度条上设置 预览图 - - - -属性 -类型 -描述 - - - - -url -Str ...`,l:"start/option.html#thumbnails",a:"thumbnails"},"26.37":{t:"`subtitle`\r",p:` -Type: Object -Default: {} - -设置视频的字幕,支持字幕格式:vtt, srt, ass - - - -属性 - ...`,l:"start/option.html#subtitle",a:"subtitle"},"26.38":{t:"`moreVideoAttr`\r",p:` -Type: Object -Default: {'controls': false, 'preload': 'metadat ...`,l:"start/option.html#morevideoattr",a:"morevideoattr"},"26.39":{t:"`icons`\r",p:` -Type: Object -Default: {} - -用于替换默认图标,支持 Html 字符串和 HTMLElement -& ...`,l:"start/option.html#icons",a:"icons"},"26.40":{t:"`type`\r",p:` -Type: String -Default: '' - -用于指明视频的格式,需要配合 customType 一起使用,默认视频 ...`,l:"start/option.html#type",a:"type"},"26.41":{t:"`customType`\r",p:` -Type: Object -Default: {} - -通过视频的 type 进行匹配,把视频解码权交给第三方程序进行处理,处 ...`,l:"start/option.html#customtype",a:"customtype"},"26.42":{t:"`lang`\r",p:` -Type: String -Default: navigator.language.toLowerCase() - -默认显示语 ...`,l:"start/option.html#lang",a:"lang"},"26.43":{t:"`i18n`\r",p:` -Type: Object -Default: {} - -自定义 i18n 配置,该配置会和自带的 i18n 进行深度合并 -新增 ...`,l:"start/option.html#i18n",a:"i18n"},"26.44":{t:"`lock`\r",p:` -Type: Boolean -Default: false - -是否在移动端显示一个 锁定按钮 ,用于隐藏底部 控制栏 -< ...`,l:"start/option.html#lock",a:"lock"},"26.45":{t:"`gesture`\r",p:` -Type: Boolean -Default: true - -是否在移动端启用视频元素上的手势事件 -<div class ...`,l:"start/option.html#gesture",a:"gesture"},"26.46":{t:"`fastForward`\r",p:` -Type: Boolean -Default: false - -是否在移动端添加长按视频快进功能 -<div classN ...`,l:"start/option.html#fastforward",a:"fastforward"},"26.47":{t:"`autoPlayback`\r",p:` -Type: Boolean -Default: false - -是否使用自动 回放功能 -<div className=& ...`,l:"start/option.html#autoplayback",a:"autoplayback"},"26.48":{t:"`autoOrientation`\r",p:` -Type: Boolean -Default: false - -是否在移动端的网页全屏时,根据视频尺寸和视口尺寸,旋转播放器 - ...`,l:"start/option.html#autoorientation",a:"autoorientation"},"26.49":{t:"`airplay`\r",p:` -Type: Boolean -Default: false - -是否显示 airplay 按钮,当前只有部分浏览器支持该功能 - ...`,l:"start/option.html#airplay",a:"airplay"},"26.50":{t:"`cssVar`\r",p:` -Type: Object -Default: {} - -用于改变内置的css变量 -<div className=&quo ...`,l:"start/option.html#cssvar",a:"cssvar"},"26.51":{t:"`proxy`\r",p:` -Type: function -Default: undefined - -函数可以返回一个第三方的 HTMLCanvasEle ...`,l:"start/option.html#proxy",a:"proxy"}},n={previewLength:62,buttonLabel:"Search",placeholder:"Search docs",allow:[],ignore:[]},a={INDEX_DATA:e,PREVIEW_LOOKUP:t,Options:n};export{a as default}; diff --git a/docs/document/assets/chunks/virtual_search-data.CLDmFAmC.js b/docs/document/assets/chunks/virtual_search-data.CLDmFAmC.js new file mode 100644 index 000000000..c5520c6bb --- /dev/null +++ b/docs/document/assets/chunks/virtual_search-data.CLDmFAmC.js @@ -0,0 +1,1407 @@ +const e={map:'[{"高级属性":["0.0"],"option":["0.1","1.12","10.1","11.12","20.9","24.9","25.17"],"template":["0.2","10.2"],"events":["0.3","10.3","21.12"],"storage":["0.4","10.4"],"icons":["0.5","10.5","23.39","27.39"],"i18n":["0.6","10.6","23.43","27.43"],"notice":["0.7","3.4","10.7","13.4"],"layers":["0.8","10.8","18.0","23.29","27.29"],"controls":["0.9","10.9","17.0","23.32","27.32"],"contextmenu":["0.10","2.37","3.3","10.10","12.37","13.3","23.31","27.31"],"subtitle":["0.11","2.36","10.11","12.36","23.37","27.37"],"info":["0.12","2.32","3.22","10.12","12.32","13.22"],"loading":["0.13","2.34","10.13","12.34","21.9"],"hotkey":["0.14","2.5","10.14","12.5","23.19","27.19"],"mask":["0.15","2.35","10.15","12.35"],"setting":["0.16","2.39","3.5","3.6","3.7","10.16","12.39","13.5","13.6","13.7","23.18","27.18"],"plugins":["0.17","10.17","23.35","27.35"],"静态属性":["1.0"],"instances":["1.1","11.1"],"version":["1.2","11.2"],"env":["1.3","11.3"],"build":["1.4","11.4"],"config":["1.5","11.5","25.13"],"utils":["1.6","11.6"],"scheme":["1.7","11.7"],"emitter":["1.8","11.8"],"validator":["1.9","11.9"],"kindof":["1.10","11.10"],"html":["1.11","11.11"],"实例事件":["2.0"],"ready":["2.1","12.1"],"restart":["2.2","12.2"],"pause":["2.3","5.2","12.3","15.2"],"play":["2.4","5.1","12.4","15.1"],"destroy":["2.6","5.4","12.6","15.4"],"focus":["2.7","12.7"],"blur":["2.8","12.8"],"dblclick":["2.9","12.9"],"click":["2.10","12.10"],"error":["2.11","12.11"],"hover":["2.12","12.12"],"mousemove":["2.13","12.13"],"resize":["2.14","3.8","12.14","13.8"],"view":["2.15","12.15"],"lock":["2.16","12.16","23.44","27.44"],"aspectratio":["2.17","5.32","12.17","15.32","23.16","27.16"],"autoheight":["2.18","5.33","12.18","15.33"],"autosize":["2.19","5.27","12.19","15.27","23.11","27.11"],"flip":["2.20","3.30","5.30","12.20","13.30","15.30","23.14","27.14"],"fullscreen":["2.21","3.31","5.20","12.21","13.31","15.20","23.23","27.23"],"fullscreenerror":["2.22","12.22"],"fullscreenweb":["2.23","5.21","12.23","15.21","23.24","27.24"],"mini":["2.24","5.24","12.24","15.24"],"pip":["2.25","5.22","12.25","15.22","23.20","27.20"],"screenshot":["2.26","5.17","12.26","15.17","23.17","27.17"],"seek":["2.27","3.27","5.6","12.27","13.27","15.6"],"subtitleoffset":["2.28","5.47","12.28","15.47","23.25","27.25"],"subtitlebeforeupdate":["2.29","12.29"],"subtitleafterupdate":["2.30","12.30"],"subtitleload":["2.31","12.31"],"layer":["2.33","12.33"],"control":["2.38","3.16","12.38","13.16"],"muted":["2.40","5.14","12.40","15.14","23.9","27.9"],"keydown":["2.41","12.41"],"video":["2.42","2.43","2.44","2.45","2.46","2.47","2.48","2.49","2.50","2.51","2.52","2.53","2.54","2.55","2.56","2.57","2.58","2.59","2.60","2.61","2.62","5.43","12.42","12.43","12.44","12.45","12.46","12.47","12.48","12.49","12.50","12.51","12.52","12.53","12.54","12.55","12.56","12.57","12.58","12.59","12.60","12.61","12.62","15.43"],"全局属性":["3.0"],"debug":["3.1","13.1"],"style":["3.2","13.2"],"scroll":["3.9","3.10","13.9","13.10"],"auto":["3.11","3.12","3.13","3.21","13.11","13.12","13.13","13.21"],"reconnect":["3.14","3.15","13.14","13.15"],"dbclick":["3.17","3.18","13.17","13.18"],"mobile":["3.19","3.20","13.19","13.20"],"fast":["3.23","3.24","13.23","13.24"],"touch":["3.25","13.25"],"volume":["3.26","5.9","13.26","15.9","23.7","27.7"],"playback":["3.28","13.28"],"aspect":["3.29","13.29"],"log":["3.32","13.32"],"use":["3.33","13.33"],"remove":["3.34","13.34","19.8"],"编写插件":["4.0"],"实例属性":["5.0"],"toggle":["5.3","15.3"],"reset":["5.5","15.5","25.15"],"forward":["5.7","15.7"],"backward":["5.8","15.8"],"url":["5.10","15.10","23.2","27.2"],"switch":["5.11","15.11"],"switchurl":["5.12","15.12"],"switchquality":["5.13","15.13"],"currenttime":["5.15","15.15"],"duration":["5.16","15.16"],"getdataurl":["5.18","15.18"],"getbloburl":["5.19","15.19"],"poster":["5.23","15.23","23.5","27.5"],"playing":["5.25","15.25"],"state":["5.26","15.26"],"rect":["5.28","15.28"],"bottom":["5.29","15.29"],"playbackrate":["5.31","15.31","23.15","27.15"],"attr":["5.34","15.34"],"type":["5.35","15.35","23.40","27.40"],"theme":["5.36","15.36","23.6","27.6"],"airplay":["5.37","15.37","23.49","27.49"],"loaded":["5.38","15.38"],"loadedtime":["5.39","15.39"],"played":["5.40","15.40"],"proxy":["5.41","15.41","23.51","27.51"],"query":["5.42","15.42"],"cssvar":["5.44","15.44","23.50","27.50"],"quality":["5.45","15.45","23.33","27.33"],"thumbnails":["5.46","15.46","23.36","27.36"],"右键菜单":["6.0"],"配置":["6.1","7.1","8.1"],"创建":["6.2","7.2","8.2","9.2","9.3","9.4","9.5","9.6"],"添加":["6.3","7.3","8.3","9.7"],"删除":["6.4","7.4","8.4","9.8"],"更新":["6.5","7.5","8.5","9.9"],"控制器":["7.0"],"业务层":["8.0"],"设置面板":["9.0"],"内置":["9.1"],"advanced":["10.0"],"static":["11.0"],"instance":["12.0","15.0"],"global":["13.0"],"writing":["14.0"],"context":["16.0"],"configuration":["16.1","17.1","18.1"],"creation":["16.2","17.2","18.2"],"addition":["16.3","18.3"],"deletion":["16.4"],"update":["16.5","18.5","19.9"],"adding":["17.3","22.3"],"removal":["17.4","18.4"],"updating":["17.5"],"settings":["19.0","23.30","27.30"],"built":["19.1"],"create":["19.2","19.3","19.4","19.5","19.6"],"add":["19.7"],"installation":["20.0","20.1","21.2"],"cdn":["20.2","21.3","24.2","25.3"],"usage":["20.3"],"vue":["20.4","20.7","24.4","24.7"],"react":["20.5","20.8","24.5","24.8"],"typescript":["20.6","21.13","24.6","25.21"],"javascript":["20.10","24.10"],"legacy":["20.11"],"ecmascript":["20.12","24.12"],"custom":["20.13"],"danmuku":["21.0"],"demo":["21.1"],"comment":["21.4"],"all":["21.5"],"array":["21.6"],"lifecycle":["21.7"],"methods":["21.8"],"external":["21.10"],"heatmap":["21.11"],"language":["22.0"],"default":["22.1"],"importing":["22.2"],"modifying":["22.4"],"basic":["23.0"],"container":["23.1","27.1"],"id":["23.3","27.3"],"onready":["23.4","27.4"],"islive":["23.8","27.8"],"autoplay":["23.10","27.10"],"automini":["23.12","27.12"],"loop":["23.13","27.13"],"mutex":["23.21","27.21"],"backdrop":["23.22","27.22"],"miniprogressbar":["23.26","27.26"],"usessr":["23.27","27.27"],"playsinline":["23.28","27.28"],"highlight":["23.34","27.34"],"morevideoattr":["23.38","27.38"],"customtype":["23.41","27.41"],"lang":["23.42","27.42"],"gesture":["23.45","27.45"],"fastforward":["23.46","27.46"],"autoplayback":["23.47","27.47"],"autoorientation":["23.48","27.48"],"安装使用":["24.0"],"安装":["24.1","25.2"],"使用":["24.3"],"古老的浏览器":["24.11"],"自定义":["24.13"],"弹幕库":["25.0"],"演示":["25.1"],"弹幕结构":["25.4"],"全部选项":["25.5"],"生命周期":["25.6"],"使用弹幕数组":["25.7"],"使用弹幕":["25.8"],"使用异步返回":["25.9"],"hide":["25.10"],"ishide":["25.11"],"emit":["25.12"],"load":["25.14"],"mount":["25.16"],"事件":["25.18"],"isstop":["25.19"],"热力图":["25.20"],"语言设置":["26.0"],"默认语言":["26.1"],"导入语言":["26.2"],"新增语言":["26.3"],"修改语言":["26.4"],"基础选项":["27.0"]},{"0":["3.28","5.38","5.40","21.13","23.7","25.21","27.7"],"1":["24.11","25.5"],"3":["3.29","21.13","24.9","25.21"],"4":["3.29","26.3"],"5":["3.28","8.2","18.2","21.13","25.5","25.21"],"7":["8.3","18.3","23.7"],"9":["26.3"],"10":["25.5"],"15":["4.0"],"21":["8.5","9.9","18.5","19.9"],"26":["7.5","17.5"],"27":["9.9","19.9"],"75":["3.28"],"250":["3.5"],"958":["25.20"],"这里的":["0.0","1.0","3.0","5.0"],"播放器的选项":["0.1"],"div":["0.1","0.2","0.4","0.5","0.7","0.14","0.17","1.1","1.6","2.0","2.1","2.2","2.3","2.4","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.17","2.18","2.19","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.27","2.28","2.29","2.30","2.31","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","3.3","4.0","5.1","5.2","5.3","5.16","5.28","5.33","5.37","5.45","6.2","6.3","6.4","6.5","7.2","7.3","7.4","7.5","8.2","8.3","8.4","8.5","9.4","9.7","9.8","9.9","10.1","10.2","14.0","16.2","16.3","16.4","16.5","17.2","17.3","17.4","17.5","18.2","18.3","18.4","18.5","19.4","19.7","19.8","19.9","23.2","23.29","23.30","25.7","25.10","25.11","25.15","27.2","27.29","27.30","27.31","27.32"],"classname":["0.1","0.2","0.17","2.0","2.1","2.2","2.3","2.4","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.17","2.18","2.19","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.27","2.28","2.29","2.30","2.31","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","4.0","5.45","6.2","6.3","6.4","6.5","7.2","7.3","7.4","7.5","8.2","8.3","8.4","8.5","9.4","9.7","9.8","9.9","10.2","14.0","16.2","16.3","16.4","16.5","17.2","17.3","17.4","17.5","18.2","18.3","18.4","18.5","19.4","19.7","19.8","19.9","23.2","23.29","23.30","25.7","25.11","25.15","27.2","27.29","27.30"],"run":["0.1","0.2","2.0","2.2","2.6","2.11","2.12","2.17","2.18","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.28","2.29","2.30","2.31","2.39","4.0","5.45","6.2","6.3","6.4","6.5","7.2","7.3","7.4","7.5","8.2","8.3","8.4","8.5","9.4","9.7","9.8","9.9","14.0","16.2","16.3","16.4","16.5","17.2","17.3","17.4","17.5","18.2","18.3","18.4","18.5","19.4","19.7","19.8","19.9","21.7","23.2","23.29","25.7","25.11","27.2","27.29","27.30"],"管理播放器所有的":["0.2","0.3","0.5"],"dom":["0.2","0.3","5.41","5.42","9.2","9.3","9.5","9.6","10.2","10.3","15.41","15.42","19.2","19.3","19.5","19.6","23.1","27.1"],"元素":["0.2","9.5","9.6"],"事件":["0.3","4.0"],"实质上是代理了":["0.3"],"addeventlistener":["0.3","5.41","10.3","15.41"],"和":["0.3","4.0","5.13","25.8","25.10","27.4"],"removeeventlistener":["0.3","10.3"],"当使用以下方法来处理事件":["0.3"],"播放器销毁时也会自动销毁该事件":["0.3"],"管理播放器的本地存储":["0.4"],"name":["0.4","4.0","10.4","17.1","21.12","25.18"],"属性用于设置缓存的":["0.4"],"key":["0.4","10.4"],"set":["0.4","10.4","15.9","15.11","15.12","15.44","15.45","21.11","23.36","23.37"],"方法用于设置缓存":["0.4"],"get":["0.4","0.6","10.6","15.34","15.44"],"方法用于获取缓存":["0.4"],"del":["0.4"],"方法用于删除缓存":["0.4"],"clear":["0.4"],"方法用于清空缓存":["0.4"],"svg":["0.5","10.5"],"图标":["0.5"],"管理播放器的":["0.6"],"方法用于获取":["0.6"],"的值":["0.6"],"update":["0.6","0.8","0.9","0.10","0.16"],"管理播放器的提示语":["0.7"],"只有一个":["0.7"],"show":["0.7","0.13","0.15","10.13","10.15","25.10"],"属性用于显示提示语":["0.7"],"管理播放器的层":["0.8"],"add":["0.8","0.9","0.10","0.14","0.16","0.17","10.8","10.9","10.10","10.14","10.16"],"方法用于动态添加层":["0.8"],"remove":["0.8","0.9","0.10","0.14","0.16","21.12"],"方法用于动态删除层":["0.8"],"管理播放器的控制器":["0.9"],"方法用于动态添加控制器":["0.9"],"方法用于动态删除控制器":["0.9"],"管理播放器的右键菜单":["0.10"],"方法用于动态添加菜单":["0.10"],"方法用于动态删除菜单":["0.10"],"方法用于动态更新菜单":["0.10"],"管理播放器的字幕功能":["0.11"],"url":["0.11","5.12","10.11","15.12","15.18","15.19"],"属性设置和返回当前字幕地址":["0.11"],"style":["0.11"],"方法设置当前字幕的样式":["0.11"],"switch":["0.11"],"管理播放器的信息面板":["0.12"],"常用于查看当前播放器和视频的运行状态":["0.12"],"例如版本号":["0.12"],"分辨率":["0.12"],"时长等":["0.12"],"管理播放器的加载层":["0.13"],"属性用于设置是否显示加载层":["0.13"],"toggle":["0.13","0.15","19.5"],"管理播放器的快捷键功能":["0.14"],"方法用于添加快捷键":["0.14"],"方法用于删除快捷键":["0.14"],"管理播放器的遮罩层":["0.15"],"属性用于设置是否显示遮罩层":["0.15"],"管理播放器的设置面板":["0.16"],"方法用于动态添加设置项":["0.16"],"方法用于动态删除设置项":["0.16"],"方法用于动态更新设置项":["0.16"],"管理播放器的插件功能":["0.17"],"只有一个方法":["0.17"],"用于动态添加插件":["0.17"],"返回全部播放器实例的数组":["1.1"],"假如你想同时管理多个播放器的时候":["1.1"],"可以用到该属性":["1.1"],"返回播放器的版本信息":["1.2"],"返回播放器的环境变量":["1.3"],"返回播放器的打包时间":["1.4"],"返回视频的默认配置":["1.5"],"返回播放器的工具函数集合":["1.6"],"返回播放器选项的校验方案":["1.7"],"返回事件分发器的构造函数":["1.8"],"返回选项的校验函数":["1.9"],"返回类型检测的函数工具":["1.10"],"返回播放器所需的":["1.11"],"返回播放器的默认选项":["1.12"],"播放器的事件分为两种":["2.0"],"一种视频的":["2.0"],"原生事件":["2.0"],"前缀":["2.0"],"video":["2.0","12.0","13.29","13.30","13.34","15.3","15.5","15.11","15.12","15.13","15.16","15.38","15.40","23.2","23.5","23.37","23.40","23.41"],"另外一种是":["2.0"],"自定义事件":["2.0"],"监听事件":["2.0"],"code":["2.0","2.2","2.28","4.0","6.2","6.3","6.4","6.5","7.2","7.3","7.4","7.5","8.2","8.3","8.4","8.5","9.4","9.7","9.8","9.9","14.0","16.2","16.3","16.4","16.5","17.2","17.3","17.4","17.5","18.2","18.3","18.4","18.5","19.4","19.7","19.8","19.9","20.1","20.2","20.3","20.4","20.5","21.2","21.3","23.2","23.29","24.1","24.2","24.3","24.4","24.5","25.2","25.3","25.7","25.11","27.2","27.29"],"js":["2.0","4.0","6.5","7.2","7.3","7.5","8.2","8.3","8.5","9.4","9.8","9.9","16.5","17.2","17.3","17.5","18.2","18.3","18.5","19.4","19.8","19.9","20.4","20.5","20.7","20.8","20.10","20.11","22.2","22.4","24.4","24.5","24.7","24.8","24.10","24.11","25.5","26.2","26.3","26.4"],"当播放器首次可以播放器时触发":["2.1"],"当播放器切换地址后并可以播放时触发":["2.2"],"当播放器暂停时触发":["2.3"],"当播放器播放时触发":["2.4"],"当播放器热键被按下时触发":["2.5"],"当播放器销毁时触发":["2.6"],"当播放器获得焦点时触发":["2.7"],"当播放器失去焦点时触发":["2.8"],"当播放器被双击时触发":["2.9"],"当播放器被单击时触发":["2.10"],"当播放器加载视频发生错误时触发":["2.11"],"当播放器被鼠标移出或者移入时触发":["2.12"],"当播放器被鼠标经过时触发":["2.13"],"当播放器尺寸变化时触发":["2.14"],"当播放器出现在视口时触发":["2.15"],"在移动端":["2.16","3.19","3.20","3.21","3.23","3.24","3.25"],"当锁定的状态发生变化时触发":["2.16"],"当播放器长宽比变化时触发":["2.17"],"当播放器自动设置高度时触发":["2.18"],"当播放器自动设置尺寸时触发":["2.19"],"当播放器发生翻转时触发":["2.20"],"当播放器发生窗口全屏时触发":["2.21"],"当播放器发生窗口全屏错误时触发":["2.22"],"当播放器发生网页全屏时触发":["2.23"],"当播放器进入迷你模式时触发":["2.24"],"当播放器进入画中画时触发":["2.25"],"当播放器被截图时触发":["2.26"],"当播放器发生时间跳转时触发":["2.27"],"当播放器发生字幕偏移时触发":["2.28"],"当字幕更新前触发":["2.29"],"当字幕更新后触发":["2.30"],"当字幕加载时触发":["2.31"],"当信息面板显示或隐藏时触发":["2.32"],"当自定义层显示或隐藏时触发":["2.33"],"当加载器显示或隐藏时触发":["2.34"],"当遮罩层显示或隐藏时触发":["2.35"],"当字幕层显示或隐藏时触发":["2.36"],"当右键菜单显示或隐藏时触发":["2.37"],"当控制器显示或隐藏时触发":["2.38"],"当设置面板显示或隐藏时触发":["2.39"],"当静音的状态变化时触发":["2.40"],"监听来自":["2.41"],"document":["2.41"],"的":["2.41"],"canplay":["2.42","12.42"],"canplaythrough":["2.43","12.43"],"complete":["2.44","12.44"],"durationchange":["2.45","12.45"],"emptied":["2.46","12.46"],"ended":["2.47","12.47"],"error":["2.48","12.48"],"loadeddata":["2.49","12.49"],"loadedmetadata":["2.50","12.50"],"pause":["2.51","12.51"],"play":["2.52","3.19","3.20","12.52","13.19","13.20","15.3"],"playing":["2.53","12.53"],"progress":["2.54","12.54","23.36"],"ratechange":["2.55","12.55"],"seeked":["2.56","12.56"],"seeking":["2.57","12.57"],"stalled":["2.58","12.58"],"suspend":["2.59","12.59"],"timeupdate":["2.60","12.60"],"volumechange":["2.61","12.61"],"waiting":["2.62","12.62"],"是否开始":["3.1"],"模式":["3.1"],"返回播放器样式文本":["3.2"],"是否开启右键菜单":["3.3"],"默认开启":["3.3"],"time":["3.4","3.8","3.9","3.14","3.15","3.16","3.17","3.21","3.22","3.24","13.4","13.8","13.9","13.14","13.15","13.16","13.17","13.21","13.22","13.24","23.25"],"提示信息的显示时长":["3.4"],"单位为毫秒":["3.4","3.8","3.9","3.13","3.16","3.17","3.22"],"width":["3.5","3.6","5.29","9.3","13.5","13.6","15.29","15.33"],"设置面板的默认宽度":["3.5"],"单位为像素":["3.5","3.6","3.7","3.10"],"默认为":["3.5","3.6","3.7","3.11","3.17","3.26","3.28","3.29","3.30","3.32","3.33"],"item":["3.6","3.7","13.6","13.7","19.6"],"设置面板的设置项的默认宽度":["3.6"],"height":["3.7","5.29","13.7","15.29"],"设置面板的设置项的默认高度":["3.7"],"事件的节流时间":["3.8","3.9"],"gap":["3.10","13.10"],"view":["3.10","10.12"],"事件的边界容差距离":["3.10"],"playback":["3.11","3.12","3.13","12.53","13.11","13.12","13.13","23.47"],"max":["3.11","3.14","13.11","13.14"],"自动回放功能的最大记录数":["3.11"],"min":["3.12","13.12"],"自动回放功能的最小记录时长":["3.12"],"单位为秒":["3.12","3.27","5.39"],"timeout":["3.13","13.13"],"自动回放功能的隐藏延迟时长":["3.13"],"发生连接错误时":["3.14","3.15"],"自动连接的最大次数":["3.14"],"sleep":["3.15","13.15"],"自动连接的延迟时间":["3.15"],"hide":["3.16","13.13","13.16"],"底部控制栏的自动隐藏的延迟时间":["3.16"],"双击事件的延迟事件":["3.17"],"fullscreen":["3.18","12.22","13.18"],"在桌面端":["3.18"],"是否双击切换全屏":["3.18"],"dbclick":["3.19","13.19"],"是否双击切换播放暂停":["3.19"],"click":["3.20","13.20"],"是否单击切换播放暂停":["3.20"],"orientation":["3.21","13.21"],"自动旋屏的延迟时间":["3.21"],"loop":["3.22","13.22"],"信息面板的刷新时间":["3.22"],"forward":["3.23","3.24","13.23","13.24"],"value":["3.23","13.23","21.8"],"长按加速的速率倍数":["3.23"],"长按加速的延迟时间":["3.24"],"move":["3.25","13.25"],"ratio":["3.25","3.29","13.25","13.29"],"左右滑动进度的速率倍数":["3.25"],"step":["3.26","3.27","13.26","13.27"],"快捷键调节音量的幅度比例":["3.26"],"快捷键调节播放进度的幅度":["3.27"],"rate":["3.28","13.28"],"内置播放速率的列表":["3.28"],"内置视频长宽比的列表":["3.29"],"default":["3.29","13.5","13.6","13.7","23.1","23.2","23.3","23.4","23.5","23.6","23.7","23.8","23.9","23.10","23.11","23.12","23.13","23.14","23.15","23.16","23.17","23.18","23.19","23.20","23.21","23.22","23.23","23.24","23.25","23.26","23.27","23.28","23.29","23.30","23.31","23.32","23.33","23.34","23.35","23.36","23.37","23.38","23.39","23.40","23.41","23.42","23.43","23.44","23.45","23.46","23.47","23.48","23.49","23.50","23.51","27.1","27.2","27.3","27.4","27.5","27.6","27.7","27.8","27.9","27.10","27.11","27.12","27.13","27.14","27.15","27.16","27.17","27.18","27.19","27.20","27.21","27.22","27.23","27.24","27.25","27.26","27.27","27.28","27.29","27.30","27.31","27.32","27.33","27.34","27.35","27.36","27.37","27.38","27.39","27.40","27.41","27.42","27.43","27.44","27.45","27.46","27.47","27.48","27.49","27.50","27.51"],"内置视频翻转的列表":["3.30"],"normal":["3.30"],"horizontal":["3.30"],"vertical":["3.30"],"web":["3.31","13.31"],"in":["3.31","13.28","13.29","13.30","13.31","19.1","20.10","21.11"],"body":["3.31","13.31"],"网页全屏时":["3.31"],"version":["3.32","13.32"],"设置是否打印播放器版本":["3.32"],"raf":["3.33","13.33"],"设置是否使用":["3.33"],"requestanimationframe":["3.33"],"src":["3.34","5.5","13.34","22.2","26.2"],"when":["3.34","10.3","12.1","12.2","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.17","12.18","12.19","12.20","12.21","12.22","12.23","12.24","12.25","12.26","12.27","12.28","12.31","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","13.34","15.33"],"destroy":["3.34","13.34"],"在销毁播放器时":["3.34"],"是否同时移除视频的":["3.34"],"但你已经知道播放器的":["4.0"],"属性":["4.0","6.1","7.1","8.1","9.2","9.3","9.5","9.6","27.33","27.34","27.36","27.37"],"方法":["4.0"],"后":["4.0"],"再编写插件是非常简单的事":["4.0"],"可以在实例化的时候加载插件的函数":["4.0"],"function":["4.0","5.1","5.2","5.3","5.4","5.5","5.12","5.13","5.17","5.18","5.19","5.27","5.33","5.34","5.37","5.41","5.42","5.44","9.3","14.0","15.1","15.2","15.3","15.4","15.5","15.12","15.13","15.17","15.18","15.19","15.27","15.33","15.34","15.37","15.41","15.42","15.44","23.4","23.51","27.4","27.51"],"myplugin":["4.0"],"art":["4.0","5.12","7.2","15.12","17.2","21.8","21.12","25.18","25.19"],"console":["4.0"],"info":["4.0"],"return":["4.0","21.8"],"something":["4.0"],"type":["5.1","5.2","5.3","5.4","5.5","5.6","5.7","5.8","5.9","5.10","5.11","5.12","5.13","5.14","5.15","5.16","5.17","5.18","5.19","5.20","5.21","5.22","5.23","5.24","5.25","5.26","5.27","5.28","5.30","5.31","5.32","5.33","5.34","5.36","5.37","5.38","5.39","5.40","5.41","5.42","5.43","5.44","5.45","5.46","5.47","15.1","15.2","15.3","15.4","15.5","15.6","15.7","15.8","15.9","15.10","15.11","15.12","15.13","15.14","15.15","15.16","15.17","15.18","15.19","15.20","15.21","15.22","15.23","15.24","15.25","15.26","15.27","15.28","15.29","15.30","15.31","15.32","15.33","15.34","15.36","15.37","15.38","15.39","15.40","15.41","15.42","15.43","15.44","15.45","15.46","15.47","16.1","17.1","18.1","19.2","19.3","19.5","19.6","20.10","23.1","23.2","23.3","23.4","23.5","23.6","23.7","23.8","23.9","23.10","23.11","23.12","23.13","23.14","23.15","23.16","23.17","23.18","23.19","23.20","23.21","23.22","23.23","23.24","23.25","23.26","23.27","23.28","23.29","23.30","23.31","23.32","23.33","23.34","23.35","23.36","23.37","23.38","23.39","23.41","23.42","23.43","23.44","23.45","23.46","23.47","23.48","23.49","23.50","23.51","27.1","27.2","27.3","27.4","27.5","27.6","27.7","27.8","27.9","27.10","27.11","27.12","27.13","27.14","27.15","27.16","27.17","27.18","27.19","27.20","27.21","27.22","27.23","27.24","27.25","27.26","27.27","27.28","27.29","27.30","27.31","27.32","27.33","27.34","27.35","27.36","27.37","27.38","27.39","27.41","27.42","27.43","27.44","27.45","27.46","27.47","27.48","27.49","27.50","27.51"],"播放视频":["5.1"],"暂停视频":["5.2"],"切换视频的播放和暂停":["5.3"],"parameter":["5.4","5.6","5.7","5.8","5.9","5.10","5.11","5.12","5.13","5.14","5.15","5.20","5.21","5.22","5.23","5.24","5.25","5.26","5.30","5.31","5.32","5.34","5.35","5.36","5.45","5.46","5.47","15.4","15.6","15.7","15.8","15.9","15.10","15.11","15.12","15.13","15.14","15.15","15.20","15.21","15.22","15.23","15.24","15.25","15.26","15.30","15.31","15.32","15.34","15.35","15.36","15.45","15.46","15.47","23.4"],"boolean":["5.4","5.14","5.20","5.21","5.22","5.25","7.1","15.4","15.14","15.20","15.21","15.22","15.24","15.25","16.1","17.1","18.1","23.8","23.9","23.10","23.11","23.12","23.13","23.14","23.15","23.16","23.17","23.18","23.19","23.20","23.21","23.22","23.23","23.24","23.25","23.26","23.27","23.28","23.44","23.45","23.46","23.47","23.48","23.49","27.8","27.9","27.10","27.11","27.12","27.13","27.14","27.15","27.16","27.17","27.18","27.19","27.20","27.21","27.22","27.23","27.24","27.25","27.26","27.27","27.28","27.44","27.45","27.46","27.47","27.48","27.49"],"重置播放器的视频元素":["5.5"],"会移除当前":["5.5"],"并调用一次":["5.5"],"setter":["5.6","5.7","5.8","5.9","5.10","5.11","5.14","5.15","5.20","5.21","5.22","5.23","5.24","5.26","5.30","5.31","5.32","5.35","5.36","5.45","5.46","5.47","15.6","15.7","15.8","15.9","15.10","15.11","15.14","15.15","15.20","15.21","15.22","15.23","15.24","15.26","15.30","15.31","15.32","15.35","15.36","15.45","15.46","15.47"],"number":["5.6","5.7","5.8","5.9","5.15","5.31","13.14","15.6","15.7","15.8","15.9","15.15","15.31","15.47","22.0","23.7","27.7"],"getter":["5.9","5.10","5.14","5.15","5.16","5.20","5.21","5.22","5.23","5.24","5.25","5.26","5.28","5.30","5.31","5.32","5.35","5.36","5.38","5.39","5.40","5.46","5.47","15.9","15.10","15.14","15.15","15.16","15.20","15.21","15.22","15.23","15.24","15.25","15.26","15.28","15.29","15.30","15.31","15.32","15.35","15.36","15.38","15.39","15.40","15.46","15.47"],"string":["5.11","5.12","5.13","5.23","5.26","5.30","5.32","5.34","5.35","5.36","9.2","9.3","9.5","9.6","15.10","15.11","15.12","15.13","15.23","15.26","15.30","15.32","15.34","15.35","15.36","17.1","19.2","19.3","19.5","19.6","23.1","23.2","23.3","23.5","23.6","23.40","23.42","27.1","27.2","27.3","27.5","27.6","27.40","27.42"],"设置视频地址":["5.11","5.12"],"设置时和":["5.11","5.12"],"设置视频画质地址":["5.13"],"获取视频时长":["5.16"],"下载当前视频帧的截图":["5.17"],"可选参数为截图名字":["5.17"],"获取当前视频帧的截图的":["5.18","5.19"],"base64":["5.18","15.18"],"地址":["5.18","5.19"],"blob":["5.19","15.19"],"设置和获取视频海报":["5.23"],"获取或设置播放器当前状态":["5.26"],"设置视频是否自适应尺寸":["5.27"],"获取播放器的尺寸和坐标信息":["5.28"],"top":["5.29","15.29"],"left":["5.29","15.29"],"right":["5.29","15.29"],"x":["5.29","15.29"],"y":["5.29","15.29"],"当容器只有宽度":["5.33"],"该属性可以自动计算出并设置视频的高度":["5.33"],"动态获取和设置":["5.34"],"开启隔空播放":["5.37"],"视频缓存的比例":["5.38"],"范围是":["5.38","5.40"],"已缓存的媒体时长":["5.39"],"视频播放的比例":["5.40"],"事件的代理函数":["5.41"],"实质上代理了":["5.41"],"的查询函数":["5.42"],"element":["5.43","9.2","9.3","9.5","9.6","15.5","15.43","19.2","19.3","19.5","19.6","21.10","23.1","27.1"],"快捷返回播放器的":["5.43"],"动态获取或设置":["5.44"],"css":["5.44"],"变量":["5.44","24.10"],"array":["5.45","9.3","11.1","15.45","19.3","23.29","23.30","23.31","23.32","23.33","23.34","23.35","27.29","27.30","27.31","27.32","27.33","27.34","27.35"],"动态设置画质列表":["5.45"],"object":["5.46","15.46","21.5","23.36","23.37","23.38","23.39","23.41","23.43","23.50","27.36","27.37","27.38","27.39","27.41","27.43","27.50"],"类型":["6.1","7.1","8.1","9.2","9.3","9.5","9.6","27.34","27.36","27.37"],"描述":["6.1","7.1","8.1","9.2","9.3","9.5","9.6","27.36"],"disable":["6.1","7.1","8.1","16.1","17.1","18.1"],"var":["7.2","9.4","17.2"],"new":["7.2","17.2","21.9","22.3"],"artplayer":["7.2","17.2","20.4","20.5","20.11","20.12","22.2","23.1","24.5","24.11","24.12","26.2","26.4","27.1"],"container":["7.2","15.33","17.2"],"须先打开设置面板":["9.1"],"然后自带四个内置项":["9.1"],"flip":["9.1"],"playbackrate":["9.1"],"按钮":["9.2"],"html":["9.2","9.3","9.5","9.6","19.2","19.3","19.5","19.6","20.3","24.3","27.39"],"元素的":["9.2","9.3","9.5","9.6"],"选择列表":["9.3"],"icon":["9.3","9.5","9.6","19.3","19.6"],"元素的图标":["9.3"],"selector":["9.3","19.3"],"元素列表":["9.3"],"onselect":["9.3"],"元素点击事件":["9.3"],"列表嵌套":["9.4"],"切换按钮":["9.5"],"范围滑块":["9.6"],"properties":["10.0","11.0","13.0","14.0","15.0"],"the":["10.0","10.1","10.2","10.3","10.4","10.6","10.7","10.8","10.9","10.10","10.11","10.12","10.13","10.14","10.15","10.16","10.17","11.2","11.3","11.4","11.5","11.6","11.7","11.8","11.9","11.10","11.11","11.12","12.0","12.1","12.2","12.3","12.4","12.6","12.7","12.8","12.9","12.10","12.12","12.13","12.14","12.15","12.16","12.17","12.18","12.19","12.20","12.21","12.23","12.24","12.25","12.26","12.27","12.28","12.32","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","12.42","12.43","12.46","12.58","13.0","13.2","13.3","13.4","13.5","13.6","13.7","13.8","13.9","13.10","13.11","13.12","13.13","13.14","13.15","13.16","13.17","13.21","13.22","13.23","13.24","13.25","13.26","13.27","13.28","13.29","13.30","13.34","14.0","15.1","15.2","15.4","15.5","15.11","15.12","15.13","15.16","15.18","15.19","15.22","15.28","15.33","15.38","15.39","15.40","15.45","17.1","19.2","19.3","19.5","19.6","20.6","20.9","20.11","20.13","21.1","21.5","21.8","21.9","21.10","21.11","21.13","22.0","22.1","23.1","23.2","23.3","23.4","23.5","23.6","23.7","23.11","23.22","23.33","23.34","23.36","23.40","23.41","23.47","23.51"],"player":["10.1","10.2","10.3","10.4","10.6","10.7","10.8","10.9","10.10","10.11","10.12","10.13","10.14","10.15","10.16","10.17","11.1","12.0","12.1","12.2","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.14","12.15","12.17","12.18","12.19","12.20","12.21","12.23","12.24","12.25","12.26","12.27","14.0","15.5","15.28","23.7"],"s":["10.1","10.4","10.6","10.7","10.8","10.9","10.10","10.11","10.12","10.13","10.14","10.15","10.16","10.17","12.17","12.18","13.34","14.0","15.5","15.28","21.6"],"options":["10.1","21.5","23.0"],"manages":["10.2","10.3","10.4","10.5","10.6","10.7","10.8","10.9","10.10","10.11","10.12","10.13","10.14","10.15","10.16","10.17"],"all":["10.2","10.3","10.5","11.1"],"elements":["10.2"],"of":["10.2","11.1","11.6","12.0","13.5","13.6","13.7","13.28","13.29","13.30","15.16","15.38","15.40","20.13","21.11","22.0"],"for":["10.3","10.5","12.41","13.8","13.9","13.17","13.26","15.41","19.5","19.6","21.5","21.13"],"it":["10.3","10.7","21.5","21.9","23.40"],"essentially":["10.3","15.41"],"proxies":["10.3"],"and":["10.3","10.11","12.0","13.34","14.0","15.23","20.0","21.4","21.5","21.6","21.7","21.8","21.9","21.12","21.13"],"using":["10.3"],"local":["10.4"],"property":["10.4","10.11","16.1","17.1","18.1","19.2","19.3","19.5","19.6"],"is":["10.4","10.6","10.8","10.9","10.10","10.14","10.16","12.20","20.13","21.4","21.5","21.8"],"used":["10.4","10.6","10.8","10.9","10.10","10.12","10.16","23.39","23.40","23.50"],"to":["10.4","10.6","10.8","10.9","10.10","10.12","10.16","13.1","13.3","13.31","13.32","13.33","13.34","15.12","16.1","17.1","19.1","21.5","21.9","21.11","22.0","23.10","23.15","23.16","23.17","23.19","23.22","23.27","23.33","23.39","23.40","23.47","23.50"],"cache":["10.4"],"method":["10.4","10.6","10.8","10.9","10.10","10.14","10.16"],"notifications":["10.7"],"only":["10.7","15.33","20.11","21.4"],"dynamically":["10.8","10.9","10.10","10.16","15.34","15.35","15.36","15.44","15.45"],"context":["10.10","12.37","23.31"],"menu":["10.10","16.0"],"functionality":["10.11","10.14","10.17"],"sets":["10.11","13.32","13.33","15.13","15.14","15.15","15.20","15.21","15.22","15.23","15.26","15.27","15.30","15.31","15.32"],"information":["10.12","23.34"],"panel":["10.12","10.16","12.39","19.0","21.7","21.10"],"commonly":["10.12"],"layer":["10.13","10.15"],"settings":["10.16","12.39","22.0"],"plugin":["10.17","14.0","21.8","21.10"],"with":["10.17","12.0","14.0","21.9","21.12"],"here":["11.0","15.0"],"returns":["11.1","11.2","11.3","11.4","11.5","11.6","11.7","11.8","11.9","11.10","11.11","11.12","13.2","15.43"],"an":["11.1","12.11","12.48","21.5"],"collection":["11.6"],"events":["12.0","14.0","15.41"],"are":["12.0","12.29","12.30","12.31","14.0","22.2"],"divided":["12.0"],"into":["12.0","21.10"],"two":["12.0"],"types":["12.0"],"native":["12.0"],"prefixed":["12.0"],"custom":["12.0","12.33","23.29","23.30","23.31","23.32","23.35","23.43"],"listening":["12.0"],"triggered":["12.1","12.2","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.17","12.18","12.19","12.20","12.21","12.22","12.23","12.24","12.25","12.26","12.27","12.28","12.29","12.30","12.31","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40"],"switches":["12.2"],"urls":["12.2"],"a":["12.5","12.22","12.33","14.0","15.17","15.33","15.41","15.42","20.13","21.6","21.10","21.11","22.3","22.4","23.4","23.26"],"occurs":["12.11"],"mouse":["12.12","12.13"],"enters":["12.12","12.21","12.23","12.24","12.25"],"state":["12.16","21.8"],"windowed":["12.22"],"subtitle":["12.28","23.25"],"offset":["12.28"],"changes":["12.28"],"before":["12.29","21.10","22.2"],"subtitles":["12.29","12.30","12.31","23.37"],"updated":["12.29","12.30"],"after":["12.30"],"loaded":["12.31","21.7","25.18"],"loader":["12.34"],"listens":["12.41"],"browser":["12.42"],"media":["12.46","15.39"],"has":["12.46","15.33"],"whether":["13.1","13.3","13.18","13.31","13.32","13.33","13.34","15.27","16.1","17.1","18.1","20.13","23.10","23.14","23.15","23.16","23.17","23.18","23.19","23.20","23.22","23.23","23.24","23.27","23.33","23.44","23.45","23.46","23.47","23.48","23.49"],"enable":["13.1","13.3","23.8","23.22"],"mode":["13.1"],"display":["13.4","21.0","23.17","23.33","23.34"],"duration":["13.4"],"throttle":["13.8","13.9"],"boundary":["13.10"],"tolerance":["13.10"],"distance":["13.10"],"maximum":["13.11","13.14"],"record":["13.11","13.12"],"minimum":["13.12"],"delay":["13.13","13.15","13.17"],"auto":["13.16"],"on":["13.18","13.19","13.20","13.21","13.23","13.24","13.25","21.12","23.34","23.36","23.41","25.18"],"desktop":["13.18"],"mobile":["13.21","13.23","13.24","13.25","20.13"],"refresh":["13.22"],"interval":["13.22"],"size":["13.26","13.27"],"built":["13.28","13.29","13.30"],"list":["13.28","13.29","13.30","15.45","19.3","19.4"],"mount":["13.31","21.10","25.13"],"attribute":["13.34"],"call":["13.34"],"plugins":["14.0","21.8","25.19"],"once":["14.0"],"you":["14.0","19.1","20.9"],"familiar":["14.0"],"methods":["14.0"],"becomes":["14.0"],"very":["14.0"],"straightforward":["14.0"],"task":["14.0"],"can":["14.0","20.9","21.5"],"load":["14.0","21.9","25.13","25.18"],"during":["14.0"],"instantiation":["14.0"],"removes":["15.5"],"rewind":["15.8"],"similar":["15.12"],"or":["15.15","15.20","15.22","15.26","15.44"],"gets":["15.15","15.16","15.18","15.19","15.20","15.22","15.23","15.25","15.26","15.28"],"downloads":["15.17"],"defined":["15.33"],"this":["15.33","21.7","23.4","23.43","25.6","25.9"],"initiate":["15.37"],"proportion":["15.38","15.40"],"buffered":["15.39"],"proxying":["15.41"],"quickly":["15.43"],"description":["16.1","17.1","18.1","19.2","19.3","19.5","19.6"],"control":["17.1","23.32"],"first":["19.1"],"need":["19.1"],"open":["19.1","21.1"],"button":["19.2","19.5"],"selection":["19.3","23.33"],"nested":["19.4"],"range":["19.6"],"slider":["19.6"],"group":["20.1","20.2","20.3","20.4","20.5","21.2","21.3","24.1","24.2","24.3","24.4","24.5","25.2","25.3"],"bash":["20.1","20.2","24.1","24.2","25.2","25.3"],"index":["20.3","24.3"],"jsx":["20.5","20.8","24.5","24.8"],"import":["20.5","22.4","24.5","24.9","26.4"],"from":["20.5","24.5","26.4"],"useeffect":["20.5","24.5"],"useref":["20.5"],"also":["20.9"],"use":["20.9","23.19","23.27","23.47"],"sometimes":["20.10"],"your":["20.10"],"files":["20.10","22.2"],"may":["20.10"],"lose":["20.10"],"typescript":["20.10","21.5","24.10","25.5"],"hints":["20.10"],"browsers":["20.11"],"production":["20.11"],"build":["20.11"],"supports":["20.11"],"latest":["20.11"],"major":["20.11"],"module":["20.12","24.12"],"tip":["20.12","24.12"],"esm":["20.12","24.12"],"demo":["20.12","24.12"],"https":["20.12","24.12"],"org":["20.12","24.12"],"useragent":["20.13","24.13"],"currently":["20.13"],"detection":["20.13"],"device":["20.13"],"中文说明":["21.0"],"timed":["21.0"],"comments":["21.0","21.7"],"over":["21.0"],"full":["21.1"],"sh":["21.2"],"npm":["21.2","21.13","25.21"],"install":["21.2"],"text":["21.3","21.4","25.4"],"structure":["21.4"],"required":["21.4"],"leading":["21.4"],"trailing":["21.4"],"whitespace":["21.4"],"pass":["21.5"],"option":["21.5"],"factory":["21.5"],"at":["21.5","21.11","22.2"],"runtime":["21.5","25.21"],"valid":["21.5"],"fields":["21.5"],"have":["21.5"],"defaults":["21.5"],"historical":["21.5","21.13"],"root":["21.5","21.13"],"declarations":["21.5"],"still":["21.5"],"require":["21.5"],"danmuku":["21.5","21.9","25.5","25.13"],"existing":["21.5","21.9"],"projects":["21.5"],"keep":["21.5","21.13"],"providing":["21.5"],"see":["21.5"],"xml":["21.6","25.8"],"asynchronous":["21.6"],"input":["21.6","21.7","21.9","25.14"],"uses":["21.6"],"bilibili":["21.6"],"comment":["21.6","21.8"],"format":["21.6","23.40"],"fetching":["21.6"],"callbacks":["21.7"],"submissions":["21.7"],"beforeemit":["21.7","25.6"],"filter":["21.7","25.6"],"beforevisible":["21.7","25.6"],"artplayerplugindanmuku":["21.7","21.8","21.12","25.19"],"visible":["21.7"],"direct":["21.7"],"emit":["21.7","21.8","25.6"],"calls":["21.7"],"registered":["21.8"],"available":["21.8"],"synchronously":["21.8"],"as":["21.8","23.4"],"member":["21.8"],"behavior":["21.8"],"processes":["21.8"],"one":["21.8"],"configuration":["21.9","23.43"],"changing":["21.9"],"config":["21.9","25.17"],"does":["21.9","21.11"],"not":["21.9","21.11"],"follow":["21.9"],"replace":["21.9","23.39"],"queue":["21.9","21.11"],"read":["21.9"],"failures":["21.9"],"leave":["21.9"],"intact":["21.9"],"create":["21.10"],"separate":["21.10"],"constructing":["21.10"],"moves":["21.10"],"controls":["21.10","23.38","27.38"],"true":["21.11","23.19","23.21","23.22","23.28","23.45","25.6","25.20","27.19","27.22"],"construction":["21.11"],"sample":["21.11"],"automatically":["21.11","23.12"],"live":["21.11"],"stream":["21.11"],"draw":["21.11"],"dense":["21.11"],"automatic":["21.11","23.47"],"curves":["21.11"],"now":["21.11"],"fit":["21.11"],"bottom":["21.11","23.32"],"quarter":["21.11"],"chart":["21.11"],"instead":["21.11"],"subscribe":["21.12"],"callback":["21.12","25.18"],"subscriptions":["21.12"],"off":["21.12","25.18"],"event":["21.12"],"payload":["21.12"],"meaning":["21.12"],"legacy":["21.13","25.21"],"entrypoints":["21.13"],"declaration":["21.13"],"shapes":["21.13"],"compatibility":["21.13"],"including":["21.13"],"danger":["22.0","26.0"],"due":["22.0"],"increasing":["22.0"],"languages":["22.1","22.2"],"language":["22.2","22.3","22.4","23.42","27.42"],"bundling":["22.2"],"located":["22.2"],"i18n":["22.2","26.2"],"zhtw":["22.4","26.4"],"where":["23.1"],"source":["23.2"],"unique":["23.3"],"undefined":["23.4","23.51","27.4","27.51"],"constructor":["23.4"],"accepts":["23.4"],"second":["23.4"],"f00":["23.6","27.6"],"false":["23.8","23.9","23.10","23.11","23.12","23.13","23.14","23.15","23.16","23.17","23.18","23.20","23.23","23.24","23.25","23.26","23.27","23.38","23.44","23.46","23.47","23.48","23.49","27.10","27.11","27.12","27.14","27.15","27.16","27.17","27.25","27.27","27.38","27.44","27.47","27.49"],"by":["23.11"],"hotkeys":["23.19"],"if":["23.21"],"blur":["23.22"],"ssr":["23.27","27.27"],"server":["23.27"],"initialize":["23.29","23.30","23.31","23.32","23.35"],"panels":["23.30"],"preview":["23.36"],"bar":["23.36"],"supported":["23.37"],"formats":["23.37"],"vtt":["23.37","27.37"],"srt":["23.37","27.37"],"ass":["23.37","27.37"],"preload":["23.38"],"metadata":["23.38"],"specify":["23.40"],"needs":["23.40"],"be":["23.40","23.43"],"matches":["23.41"],"based":["23.41"],"navigator":["23.42","27.42"],"will":["23.43"],"deeply":["23.43"],"merged":["23.43"],"导入":["24.6"],"你也可以使用选项的类型":["24.9"],"ts":["24.9"],"有时你的":["24.10"],"文件会丢失":["24.10"],"的类型提示":["24.10"],"这时候你可以手动导入类型":["24.10"],"生产构建的":["24.11"],"只兼容最新一个主版本的":["24.11"],"chrome":["24.11"],"last":["24.11"],"目前对于是否移动设备的判断并不准确":["24.13"],"有时候希望通过改变":["24.13"],"来调整播放器的ui":["24.13"],"english":["25.0"],"查看完整演示":["25.1"],"jsdelivr":["25.3"],"每一个弹幕是一个对象":["25.4"],"多个弹幕组成的数组就是弹幕库":["25.4"],"通常只需要":["25.4"],"就可以发送一个弹幕":["25.4"],"工厂需要一个配置对象":["25.5"],"运行时可传":["25.5"],"每个字段都有默认值":["25.5"],"旧版根入口类型仍要求":["25.5"],"旧项目继续传入它即可":["25.5"],"准确类型见下方":["25.5"],"说明":["25.5"],"弹幕数据":["25.5"],"speed":["25.5"],"弹幕持续时间":["25.5"],"范围在":["25.5"],"同步执行":["25.6"],"不应返回":["25.6"],"promise":["25.6","25.9","25.12","25.14"],"可异步":["25.6"],"但只有严格返回":["25.6"],"才发送":["25.6"],"可以异步":["25.6"],"普通函数形式的这三个回调":["25.6"],"其":["25.6"],"都是当前配置对象":["25.6"],"直接调用":["25.6"],"弹幕":["25.8"],"文件":["25.8"],"也可以直接传入":["25.9"],"弹幕数组":["25.9"],"或传入同步返回数组的函数":["25.9"],"输入函数没有配置对象作为":["25.9"],"通过方法":["25.10","25.12","25.13"],"进行隐藏或者显示弹幕":["25.10"],"通过属性":["25.11"],"判断当前弹幕是隐藏或者显示":["25.11"],"data":["25.11"],"向队列添加一条弹幕":["25.12"],"它返回":["25.12"],"完成表示入队处理完成":["25.12"],"不代表已经显示":["25.12"],"请用":["25.12"],"await":["25.12"],"或":["25.12"],"catch":["25.12"],"同步合并弹幕配置":["25.13"],"更改":["25.13"],"不会自动重新加载":["25.13"],"之后调用无参数的":["25.13"],"才会替换队列":["25.13"],"无效配置不会覆盖现有配置":["25.13"],"需要移动发射器时调用":["25.13"],"通过":["25.14"],"重载":["25.14"],"切换或追加弹幕库":["25.14"],"返回":["25.14"],"无参数":["25.14"],"在读取配置中的输入成功后替换队列":["25.14"],"传入":["25.14"],"则追加":["25.14"],"输入读取失败不会清空现有队列":["25.14"],"但逐条过滤时发生异常不保证整批回滚":["25.14"],"用于清空当前显示的弹幕并将队列项重置为等待状态":["25.15"],"它不删除队列":["25.15"],"后续播放仍可按时间显示弹幕":["25.15"],"在初始化弹幕插件的时候":["25.16"],"是可以指定弹幕发射器的挂载位置的":["25.16"],"默认是挂载在控制栏的中部":["25.16"],"你也可以把它挂载在播放器以外的地方":["25.16"],"当播放器全屏的时候":["25.16"],"发射器会自动回到控制栏的中部":["25.16"],"假如你挂载的地方是亮色的话":["25.16"],"建议把":["25.16"],"theme":["25.16"],"设置成":["25.16"],"用于获取当前弹幕配置":["25.17"],"返回实时配置对象":["25.17"],"更新配置请调用":["25.17"],"避免直接修改对象而绕过校验和":["25.17"],"ui":["25.17"],"使用":["25.18"],"订阅":["25.18"],"取消订阅":["25.18"],"事件不会向迟到的监听器重放":["25.18"],"初始空数组可能在构造期间就完成加载":["25.18"],"若需要观察后续加载":["25.18"],"先订阅再调用":["25.18"],"与方法返回值":["25.19"],"初始化时设置":["25.20"],"heatmap":["25.20"],"按队列自动采样":["25.20"],"直播不绘制热力图":["25.20"],"本轮修复了密集弹幕曲线过高遮挡视频的问题":["25.20"],"issue":["25.20"],"自动曲线会适配到图表底部四分之一区域":["25.20"],"显式设置有限的":["25.20"],"ymin":["25.20"],"ymax":["25.20"],"或发送自定义":["25.20"],"points":["25.20"],"时保留原坐标映射":["25.20"],"也可传配置对象":["25.20"],"xmin":["25.20"],"xmax":["25.20"],"根入口和":["25.21"],"保留":["25.21"],"的历史声明形状":["25.21"],"其中部分方法返回值与真实运行时不一致":["25.21"],"当前分支新增":["25.21"],"鉴于捆绑的多国语言越来越多":["26.0"],"从":["26.0"],"默认语言有":["26.1"],"en":["26.1"],"zh":["26.1"],"打包前的语言文件存放于":["26.2"],"欢迎来添加你的语言":["26.2"],"打包后的语言文件存放于":["26.2"],"dist":["26.2"],"播放器挂载的":["27.1"],"视频源地址":["27.2"],"播放器的唯一标识":["27.3"],"构造函数接受一个函数作为第二个参数":["27.4"],"播放器初始化成功且视频可以播放时触发":["27.4"],"ready":["27.4"],"视频的海报":["27.5"],"是否自动播放":["27.10"],"是否使用快捷键":["27.19"],"是否开启播放器":["27.22"],"字幕时间偏移":["27.25"],"是否使用":["27.27"],"初始化自定义的":["27.29","27.30","27.31","27.35"],"层":["27.29"],"设置面板":["27.30"],"右键菜单":["27.31"],"初始化自定义的底部":["27.32"],"控制栏":["27.32"],"是否在底部控制栏里显示":["27.33"],"画质选择":["27.33"],"列表":["27.33"],"在进度条上显示":["27.34"],"高亮信息":["27.34"],"插件":["27.35"],"在进度条上设置":["27.36"],"预览图":["27.36"],"设置视频的字幕":["27.37"],"支持字幕格式":["27.37"],"用于替换默认图标":["27.39"],"支持":["27.39"],"用于指明视频的格式":["27.40"],"需要配合":["27.40"],"customtype":["27.40"],"通过视频的":["27.41"],"自定义":["27.43"],"配置":["27.43"],"该配置会和自带的":["27.43"],"进行深度合并":["27.43"],"新增你的语言":["27.43"],"是否使用自动":["27.47"],"回放功能":["27.47"],"用于改变内置的css变量":["27.50"]},{"0":["3.25","3.26","5.9","13.28","15.38","15.40","22.0","25.5","25.12","25.20","26.0"],"1":["3.26","3.28","5.9","5.38","5.40","13.28","15.38","15.40","20.11","21.5","22.0","24.10","26.0"],"2":["3.28","20.8","20.12","24.8","24.12","24.13","25.20"],"3":["3.23","13.29","20.9","23.2","24.10","27.2"],"4":["6.2","13.29","16.2","22.3","23.47","24.13","27.43"],"5":["3.12","3.14","3.25","3.27","13.28","20.12","21.5","22.0","23.29","23.30","24.12","24.13","25.12","26.0","27.29","27.30"],"6":["2.0","6.3","7.3","12.0","16.3","17.3","20.12","24.12"],"7":["27.7"],"9":["3.29","9.7","19.7","22.3","27.43"],"10":["2.2","3.11","7.2","17.2","21.5","25.4"],"11":["2.28"],"13":["6.2","6.3","16.2","16.3"],"14":["9.7","19.7"],"15":["14.0"],"16":["3.29","13.29"],"19":["5.45","15.45"],"21":["6.4","6.5","7.3","7.4","8.4","16.4","16.5","17.3","17.4","18.4"],"22":["8.2","8.3","9.8","18.2","18.3","19.8"],"23":["23.29","27.29"],"24":["6.5","16.5"],"25":["3.28","21.5","25.5","25.20"],"29":["5.45","8.5","18.5"],"34":["23.30","27.30"],"35":["3.7"],"40":["7.5","17.5"],"50":["3.10"],"75":["13.28"],"128":["25.20"],"200":["3.6","3.8","3.9","3.21"],"300":["3.17"],"958":["21.11"],"1000":["3.15","3.22","3.24"],"2000":["3.4"],"3000":["3.13","3.16"],"code":["0.1","0.2","0.4","0.5","0.6","0.7","0.13","0.14","0.15","0.16","0.17","1.1","1.6","2.1","2.3","2.4","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.17","2.18","2.19","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.27","2.29","2.30","2.31","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","3.3","3.5","3.6","3.7","3.17","3.29","3.30","5.1","5.2","5.3","5.12","5.14","5.16","5.17","5.20","5.21","5.22","5.23","5.25","5.27","5.28","5.31","5.32","5.33","5.34","5.35","5.36","5.37","5.44","5.45","5.46","9.3","10.1","10.2","10.5","12.0","12.20","12.29","12.30","12.31","15.2","15.12","15.16","15.37","15.44","15.45","19.3","21.1","23.1","23.7","23.10","23.19","23.30","23.31","23.32","23.35","23.43","23.47","25.9","25.10","25.12","25.13","25.14","25.15","25.17","25.18","26.2","27.1","27.4","27.10","27.19","27.30","27.31","27.32","27.35","27.39","27.43","27.47","27.50"],"js":["0.2","0.4","0.14","0.17","2.2","2.18","2.22","2.24","2.28","2.29","2.30","2.31","5.45","6.2","6.3","6.4","7.4","8.4","9.3","9.6","9.7","10.2","12.0","14.0","15.16","15.45","16.2","16.3","16.4","17.4","18.4","19.7","21.4","21.5","22.3","23.2","23.10","23.19","23.29","23.30","23.47","25.4","25.11","26.1","27.2","27.4","27.29","27.30","27.32","27.43"],"var":["0.2","0.4","2.0","4.0","5.45","6.2","6.3","6.4","6.5","7.3","7.4","7.5","8.2","8.3","8.4","8.5","9.3","9.7","9.8","9.9","10.2","12.0","14.0","16.2","16.3","16.4","16.5","17.3","17.4","17.5","18.2","18.3","18.4","18.5","19.4","19.7","19.8","19.9","22.3","23.2","23.29","23.30","26.3","26.4","27.2","27.29","27.30"],"proxy":["0.3"],"方法用于代理":["0.3"],"hover":["0.3"],"方法用于代理自定义的":["0.3"],"div":["0.3","0.6","0.8","0.9","0.10","0.13","0.15","0.16","1.2","1.3","1.4","1.5","1.7","1.8","1.9","1.10","1.11","1.12","2.41","3.1","3.2","3.4","3.5","3.6","3.7","3.8","3.9","3.10","3.11","3.12","3.13","3.14","3.15","3.16","3.17","3.18","3.19","3.20","3.21","3.22","3.23","3.24","3.25","3.26","3.27","3.28","3.29","3.30","3.32","3.33","5.6","5.7","5.8","5.9","5.10","5.11","5.12","5.13","5.14","5.15","5.17","5.18","5.19","5.20","5.21","5.22","5.23","5.24","5.25","5.27","5.30","5.31","5.32","5.34","5.35","5.36","5.39","5.41","5.43","5.44","5.46","5.47","9.1","9.3","10.5","12.0","12.2","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.12","12.13","12.14","12.15","12.16","12.17","12.18","12.20","12.22","12.24","12.26","12.27","12.28","12.29","12.30","12.31","12.34","12.39","12.40","12.41","15.1","15.2","15.3","15.12","15.16","15.20","15.22","15.28","15.33","15.37","15.44","15.45","15.46","15.47","19.3","20.4","23.1","23.7","23.10","23.19","23.31","23.32","23.35","23.39","23.43","23.47","24.4","25.6","25.8","25.9","25.12","25.13","25.14","25.17","25.18","27.1","27.3","27.4","27.5","27.7","27.8","27.9","27.10","27.13","27.17","27.19","27.21","27.26","27.35","27.39","27.43","27.45","27.46","27.47","27.50"],"classname":["0.4","0.5","0.6","0.7","0.8","0.9","0.10","0.13","0.14","0.15","0.16","1.1","1.2","1.3","1.4","1.5","1.6","1.7","1.8","1.9","1.10","1.12","2.41","3.1","3.2","3.3","3.4","3.5","3.6","3.7","3.8","3.9","3.10","3.11","3.12","3.13","3.14","3.16","3.17","3.18","3.19","3.20","3.22","3.23","3.26","3.27","3.29","3.30","3.32","3.33","5.1","5.2","5.3","5.6","5.7","5.8","5.9","5.10","5.11","5.12","5.13","5.14","5.16","5.17","5.18","5.19","5.20","5.21","5.22","5.23","5.24","5.25","5.27","5.28","5.31","5.32","5.33","5.34","5.35","5.36","5.37","5.43","5.44","5.46","5.47","9.1","9.3","10.1","10.5","12.0","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.15","12.17","12.18","12.20","12.22","12.24","12.26","12.28","12.29","12.30","12.31","12.40","15.1","15.2","15.3","15.12","15.16","15.20","15.22","15.28","15.37","15.44","15.45","15.46","19.3","23.1","23.7","23.10","23.19","23.31","23.32","23.35","23.39","23.43","23.47","25.6","25.8","25.9","25.10","25.12","25.13","25.14","25.17","25.18","27.1","27.3","27.4","27.5","27.7","27.9","27.10","27.13","27.17","27.19","27.31","27.32","27.35","27.39","27.43","27.45","27.46","27.47","27.50"],"run":["0.4","0.5","0.6","0.7","0.10","0.13","0.14","0.15","0.16","0.17","1.1","1.6","2.1","2.3","2.4","2.5","2.7","2.8","2.9","2.10","2.13","2.14","2.15","2.16","2.19","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.40","2.41","3.3","3.5","3.6","3.7","3.8","3.9","3.10","3.11","3.17","3.22","3.29","3.30","3.32","5.1","5.2","5.3","5.8","5.10","5.12","5.14","5.16","5.17","5.18","5.19","5.20","5.21","5.22","5.23","5.25","5.27","5.28","5.31","5.32","5.33","5.34","5.35","5.36","5.37","5.44","5.46","5.47","9.1","9.3","10.1","10.2","10.5","12.0","12.6","12.7","12.8","12.10","12.20","12.22","12.28","12.29","12.30","12.31","15.1","15.2","15.3","15.12","15.16","15.20","15.28","15.37","15.44","15.45","19.3","21.1","23.1","23.7","23.10","23.19","23.30","23.31","23.32","23.35","23.43","23.47","25.8","25.9","25.10","25.12","25.13","25.14","25.15","25.17","25.18","27.1","27.4","27.5","27.7","27.10","27.19","27.31","27.32","27.35","27.39","27.43","27.47","27.50"],"art":["0.4","0.12","2.0","5.11","5.13","5.45","6.2","6.3","6.4","6.5","7.3","7.4","7.5","8.2","8.3","8.5","9.3","9.4","9.7","9.8","9.9","10.2","12.0","14.0","15.11","15.13","16.2","16.3","16.4","16.5","17.3","17.4","17.5","18.2","18.3","18.5","19.4","19.7","19.8","19.9","23.2","24.10","26.3","26.4","27.2"],"new":["0.4","2.0","4.0","6.2","6.3","6.4","6.5","7.3","7.4","7.5","8.3","9.3","9.4","9.7","9.8","9.9","10.2","12.0","14.0","16.2","16.3","16.4","16.5","17.3","17.4","17.5","18.3","19.4","19.7","19.8","19.9","22.2","23.2","26.3","27.2"],"artplayer":["0.4","2.0","4.0","5.5","6.2","6.3","6.4","6.5","7.3","7.4","7.5","9.3","9.4","9.8","9.9","12.0","14.0","16.2","16.3","16.4","16.5","17.3","17.4","17.5","19.4","19.8","19.9","20.3","20.6","21.2","22.4","23.2","24.3","24.4","24.6","24.9","24.10","25.7","25.10","25.11","25.15","25.18","25.21","27.2"],"container":["0.4","2.0","4.0","6.4","6.5","7.3","7.5","9.3","9.4","9.8","9.9","12.0","14.0","16.4","16.5","17.3","17.5","19.4","19.8","19.9","20.4","20.5","23.2","23.11","24.5","27.11"],"方法用于更新":["0.6"],"对象":["0.6"],"方法用于动态更新层":["0.8"],"show":["0.8","0.9","0.10","0.12","0.16","10.7"],"属性用于设置是否显示全部层":["0.8"],"toggle":["0.8","0.9","0.10","0.16","23.18"],"方法用于切换是否显示全部层":["0.8"],"方法用于动态更新控制器":["0.9"],"属性用于设置是否显示全部控制器":["0.9"],"方法用于切换是否显示全部控制器":["0.9"],"属性用于设置是否显示全部菜单":["0.10"],"方法用于切换是否显示全部菜单":["0.10"],"方法设置当前字幕地址和选项":["0.11"],"texttrack":["0.11"],"获取当前字幕轨":["0.11"],"activecues":["0.11"],"获取当前活跃的字幕列表":["0.11"],"cues":["0.11"],"通过":["0.12"],"控制面板的显示与隐藏":["0.12"],"触发的事件名为":["0.12"],"属性用于切换是否显示加载层":["0.13"],"属性用于切换是否显示遮罩层":["0.15"],"属性用于设置是否显示全部设置项":["0.16"],"方法用于切换是否显示全部设置项":["0.16"],"字符串":["1.11"],"app":["2.0","4.0","7.2","7.5","9.3","9.4","9.8","9.9","12.0","14.0","17.2","17.5","19.4","19.8","19.9","23.2"],"url":["2.0","4.0","5.11","7.2","7.5","9.4","9.9","12.0","14.0","15.11","15.13","17.2","17.5","19.4","19.9","21.5","21.6","23.36","23.37","27.36","27.37"],"assets":["2.0","4.0","7.2","8.2","8.3","8.4","8.5","9.4","9.9","12.0","14.0","17.2","18.2","18.3","18.4","18.5","19.4","19.9","23.2","23.29","27.29"],"sample":["2.0","4.0","7.2","8.2","8.3","8.4","8.5","9.4","9.9","12.0","14.0","17.2","18.2","18.3","18.4","18.5","19.4","19.9","23.29","27.29"],"mp4":["2.0","4.0","7.2","14.0","17.2"],"on":["2.0","4.0","12.16","19.6","21.10","23.21","23.45"],"canplay":["2.0"],"事件":["2.41","25.14"],"浏览器可以播放媒体文件了":["2.42"],"浏览器估计它可以在不停止内容缓冲的情况下播放媒体直到结束":["2.43"],"offlineaudiocontext":["2.44"],"duration":["2.45","13.12","13.13","15.39","21.5"],"媒体内容变为空":["2.46"],"例如":["2.46"],"视频停止播放":["2.47"],"获取媒体数据时出错":["2.48"],"media":["2.49","12.59","13.34"],"已加载元数据":["2.50"],"播放已暂停":["2.51"],"播放已开始":["2.52"],"由于缺乏数据而暂停或延迟后":["2.53"],"在浏览器加载资源时周期性触发":["2.54"],"播放速率发生变化":["2.55"],"跳帧":["2.56","2.57"],"用户代理":["2.58"],"媒体数据加载已暂停":["2.59"],"currenttime":["2.60"],"音量发生变化":["2.61"],"由于暂时缺少数据":["2.62"],"可以打印出视频全部的内置事件":["3.1"],"默认关闭":["3.1"],"默认为":["3.4","3.8","3.9","3.10","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.22","3.23","3.24","3.25","3.27","3.31","3.34","5.4"],"单位为毫秒":["3.15","3.21","3.24"],"true":["3.18","3.19","3.31","3.32","3.34","5.4","13.34","25.13","27.21","27.28","27.45"],"false":["3.20","3.33","13.33","27.8","27.9","27.13","27.18","27.20","27.23","27.24","27.26","27.46","27.48"],"是否把播放器挂在在":["3.31"],"元素下":["3.31"],"目前主要用于进度条的平滑效果":["3.33"],"属性并调用":["3.34"],"load":["3.34","5.5","13.34","15.5","21.8","21.12"],"以主动释放媒体资源":["3.34"],"开启后可以在单页应用或频繁创建":["3.34"],"销毁播放器的场景下":["3.34"],"dosomething":["4.0","14.0"],"video":["4.0","5.34","5.38","5.40","7.2","9.4","9.9","10.12","14.0","15.1","15.2","15.7","15.8","15.9","15.10","15.14","15.15","15.17","15.23","15.25","15.27","15.33","15.34","15.35","17.2","19.4","19.9","21.0","21.11","23.4","23.14","23.15","23.16","27.41"],"plugins":["4.0"],"ready":["4.0","12.2","12.53","23.4"],"可以在实例化之后再加载插件的函数":["4.0"],"销毁播放器":["5.4"],"接受一个参数表示是否销毁后同时移除播放器的":["5.4"],"html":["5.4","20.12","23.39","24.12","27.27","27.33"],"常用于在单页应用中手动释放媒体资源或重新初始化视频标签":["5.5"],"注意":["5.5"],"全局配置":["5.5"],"remove":["5.5","10.8","10.9","10.10","10.14","10.16"],"视频时间跳转":["5.6"],"单位秒":["5.6","5.7","5.8","27.34"],"视频时间快进":["5.7"],"视频时间快退":["5.8"],"设置和获取视频音量":["5.9"],"范围在":["5.9","27.25"],"string":["5.10","6.1","7.1","8.1","11.11","16.1","18.1","23.36","23.37","27.33","27.34","27.36","27.37"],"设置和获取视频地址":["5.10"],"类似":["5.11","5.12","5.13","5.15","5.42"],"但会执行一些优化操作":["5.11","5.12"],"switchurl":["5.13","15.13"],"但会带上之前的播放进度":["5.13"],"设置和获取视频是否静音":["5.14"],"设置和获取视频当前时间":["5.15"],"设置时间时和":["5.15"],"seek":["5.15"],"但它不会触发额外的事件":["5.15"],"返回的是一个":["5.18","5.19"],"promise":["5.18","5.19","21.5","21.8","25.18"],"设置和获取播放器窗口全屏":["5.20"],"设置和获取播放器网页全屏":["5.21"],"设置和获取播放器画中画模式":["5.22"],"只有在视频播放前才能看到海报效果":["5.23"],"boolean":["5.24","6.1","8.1","9.5","19.5","27.33"],"设置和获取播放器迷你模式":["5.24"],"获取视频是否正在播放中":["5.25"],"支持":["5.26","5.30"],"standard":["5.26","15.26"],"正常":["5.26"],"mini":["5.26","23.12","23.26"],"迷你窗":["5.26"],"pip":["5.26"],"type":["5.29","11.10","20.9","24.9","24.10"],"getter":["5.29"],"这些属性是对":["5.29"],"rect":["5.29","15.29"],"的快捷访问":["5.29"],"设置和获取播放器翻转":["5.30"],"normal":["5.30","13.30"],"horizontal":["5.30","13.30"],"vertical":["5.30"],"设置和获取播放器播放速度":["5.31"],"设置和获取播放器长宽比":["5.32"],"元素的属性":["5.34"],"动态获取和设置视频类型":["5.35"],"动态获取和设置播放器主题颜色":["5.36"],"常配合":["5.38","5.40"],"timeupdate":["5.38","5.40"],"事件使用":["5.38","5.40"],"通常与":["5.39"],"loaded":["5.39","21.12","25.14"],"一起使用":["5.39","27.40"],"用于展示缓冲进度细节":["5.39"],"和":["5.41","27.6","27.14","27.15","27.16"],"removeeventlistener":["5.41","15.41"],"当使用":["5.41"],"来处理事件":["5.41"],"播放器销毁时也会自动销毁该事件":["5.41"],"document":["5.42","12.41","15.42"],"queryselector":["5.42","15.42"],"但被查询的对象局限于当前播放器内":["5.42"],"可以避免同类名的错误":["5.42"],"元素":["5.43"],"动态设置缩略图":["5.46"],"number":["5.47","9.2","9.3","17.1","19.3","23.34","23.36","27.34","27.36"],"动态设置字幕偏移":["5.47"],"是否禁用组件":["6.1","7.1","8.1"],"name":["6.1","7.1","7.2","8.1","14.0","16.1","17.2","18.1","23.37","27.37"],"组件唯一名称":["7.1"],"用于标记类名":["7.1"],"index":["7.1","7.2","17.1","17.2","25.11"],"controls":["7.2","17.2"],"your":["7.2","17.2","23.43"],"button":["7.2","17.2","23.18","23.44","23.49"],"img":["8.2","8.3","8.4","8.5","18.2","18.3","18.4","18.5","23.29","27.29"],"layer":["8.2","8.3","8.4","8.5","10.8","12.35","12.36","18.2","18.3","18.4","18.5"],"png":["8.2","8.3","8.5","18.2","18.3","18.5"],"aspectratio":["9.1"],"subtitleoffset":["9.1"],"icon":["9.2","19.2","19.5"],"元素的图标":["9.2","9.5","9.6"],"onclick":["9.2","19.2"],"function":["9.2","9.5","9.6","11.9","19.2","19.3","19.6","20.5","21.5","23.14","23.15","23.16","23.17","24.5"],"元素点击事件":["9.2"],"width":["9.2","19.3"],"列表宽度":["9.3"],"tooltip":["9.3","9.5","9.6","19.3"],"提示文本":["9.3","9.6"],"switch":["9.5","19.5"],"按钮默认状态":["9.5"],"onswitch":["9.5"],"按钮切换事件":["9.5"],"range":["9.6","15.9"],"array":["9.6","19.6","21.5"],"默认状态数组":["9.6"],"onrange":["9.6","19.6"],"完成时触发的事件":["9.6"],"onchange":["9.6"],"变化时触发的事件":["9.6"],"here":["10.0","13.0"],"following":["10.3"],"methods":["10.3"],"to":["10.3","10.13","10.14","10.15","12.0","12.2","13.0","15.5","15.6","15.11","15.13","15.29","15.41","15.42","18.1","20.13","21.6","21.10","23.4","23.9","23.13","23.14","23.18","23.20","23.23","23.24","23.28","23.38","23.41","23.44","23.45","23.46","23.48","23.49"],"handle":["10.3","15.41"],"will":["10.3","23.8","23.38"],"also":["10.3"],"be":["10.3","11.1"],"automatically":["10.3","12.18","12.19","15.33","15.41","23.38"],"destroyed":["10.3","12.6"],"is":["10.3","10.13","10.15","12.1","12.3","12.5","12.6","12.9","12.10","12.11","12.18","12.19","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.53","13.3","13.5","13.28","13.29","13.30","13.33","13.34","15.14","15.23","15.25","15.41","21.12","23.1","23.4","23.40"],"a":["10.4","10.7","10.8","10.9","12.26","12.27","12.56","12.57","13.6","13.7","13.15","15.4","15.6","15.18","15.19","21.8","21.9","21.12","23.44","23.46","23.51"],"get":["10.4","15.9","15.10","15.35","15.36"],"retrieve":["10.4","10.6"],"del":["10.4"],"the":["10.5","12.11","12.44","12.49","12.55","12.60","12.61","13.31","13.32","15.7","15.8","15.9","15.10","15.14","15.15","15.17","15.20","15.21","15.23","15.24","15.25","15.26","15.27","15.30","15.31","15.32","15.34","15.35","15.36","15.41","15.42","15.43","16.1","18.1","19.1","20.10","21.0","21.12","23.14","23.15","23.16","23.17","23.18","23.20","23.21","23.23","23.24","23.42","23.43","23.48","23.49","23.50"],"player":["10.5","11.6","12.11","12.12","12.13","12.28","13.2","13.31","13.32","13.34","15.4","15.20","15.21","15.22","15.24","15.26","15.30","15.31","15.32","15.36","15.43","20.5","21.10","23.1","23.3","23.4","23.6","23.11","23.12","23.22","23.23","23.24","23.48","24.5"],"an":["10.6","15.17","21.0","21.6","21.7","21.9","21.11"],"value":["10.6"],"update":["10.6","10.10","10.16"],"has":["10.7","12.47","12.62"],"property":["10.7","10.13","10.15","11.1","15.33","23.33","23.34","23.36","23.37"],"for":["10.7","10.17","11.6","11.7","12.1","12.46","13.10","13.11","13.12","13.13","13.15","13.16","13.21","13.22","13.23","13.24","13.25","13.27","17.1","20.9","20.11","21.8","22.2","23.3","23.22"],"displaying":["10.7"],"control":["10.9","23.17","23.33"],"items":["10.10","10.16"],"returns":["10.11","21.8","21.10"],"current":["10.11","10.12","15.5","15.15","15.17","15.18","15.19","15.26","21.12","21.13"],"style":["10.11"],"method":["10.11","10.17"],"of":["10.11","10.12","11.2","11.3","11.4","11.8","11.12","13.4","13.14","15.15","15.17","15.18","15.19","15.34","17.1","19.3","19.5","20.11","21.5","21.9","23.40"],"status":["10.12"],"and":["10.12","12.2","15.3","15.5","15.9","15.10","15.24","15.28","15.30","15.31","15.32","15.33","15.34","15.35","15.36","15.41","20.12","21.10","21.11","23.4","23.39","23.41"],"such":["10.12","20.10","23.22"],"as":["10.12","23.22"],"used":["10.13","10.14","10.15","15.5","15.39","17.1"],"set":["10.13","10.15","12.18","12.19","15.10","15.33","15.34","15.35","15.36","15.46","15.47"],"whether":["10.13","10.15","13.19","13.20","15.4","15.14","15.25","23.9","23.13","23.28"],"display":["10.13","10.15","21.5","23.14","23.15","23.16","23.18","23.20","23.23","23.24","23.42","23.44","23.49"],"hotkeys":["10.14"],"only":["10.17","15.23","23.5","23.26"],"one":["10.17","21.9"],"add":["10.17","23.43","23.46"],"dynamically":["10.17","15.46","15.47"],"adding":["10.17"],"this":["11.1","23.8"],"can":["11.1","12.42","13.1","15.33","20.10","20.11","21.7","21.11","23.51"],"useful":["11.1","23.27"],"information":["11.2","15.28"],"environment":["11.3"],"variables":["11.3","15.44","23.50"],"timestamp":["11.4"],"default":["11.5","11.12","13.3","13.8","13.9","13.18","13.28","13.29","13.30","13.32","13.33","13.34","19.5","19.6","20.5","24.5"],"configuration":["11.5"],"utility":["11.6"],"functions":["11.6"],"validation":["11.7","11.9"],"schema":["11.7"],"constructor":["11.8"],"detection":["11.10"],"required":["11.11"],"options":["11.12","13.30","20.9"],"first":["12.1"],"becomes":["12.2"],"play":["12.2"],"paused":["12.3"],"starts":["12.4"],"playing":["12.4","12.42"],"pressed":["12.5"],"gains":["12.7"],"loses":["12.8"],"focus":["12.8"],"double":["12.9","13.17","13.18","13.19"],"clicked":["12.9","12.10"],"while":["12.11","12.48","21.9","21.13"],"loading":["12.11","21.13"],"or":["12.12","12.21","12.23","12.24","12.25","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","15.14","15.21","21.5","21.10","21.11"],"leaves":["12.12"],"moves":["12.13"],"over":["12.13"],"s":["12.14","12.19","15.20","15.21","15.22","15.26","15.30","15.31","15.32","15.33","15.36","15.43","23.6","23.7","23.11","23.41"],"dimensions":["12.14","15.28","23.11"],"change":["12.14"],"enters":["12.15","23.12"],"viewport":["12.15"],"changes":["12.16","12.17","12.40"],"mobile":["12.16"],"devices":["12.16"],"aspect":["12.17","15.32","23.16"],"ratio":["12.17","23.16"],"height":["12.18","15.33"],"size":["12.19","15.27"],"flipped":["12.20"],"exits":["12.21","12.23","12.24","12.25"],"windowed":["12.21"],"mode":["12.21","12.23","12.24","15.22","23.8","23.12","23.27","23.28","25.5"],"error":["12.22","25.14","25.18"],"occurs":["12.22"],"web":["12.23","15.21","21.10","23.24"],"fullscreen":["12.23","21.10","23.48"],"picture":["12.25","15.22","23.20"],"in":["12.25","12.28","13.4","13.5","13.6","13.7","13.8","13.9","13.10","13.17","13.22","15.6","15.8","15.22","15.39","21.5","23.17","23.20","23.33","23.38","23.43","23.48","23.50"],"takes":["12.26"],"performs":["12.27","15.12"],"time":["12.27","15.6","15.7","15.8","15.15","21.4","23.34","25.4","27.34"],"panel":["12.32","13.5","13.6","13.7","13.22","19.1","21.0"],"shown":["12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39"],"hidden":["12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39"],"menu":["12.37","13.3"],"bar":["12.38","23.17","23.26","23.32","23.33","23.34"],"state":["12.40","15.20","15.30","19.5","19.6"],"event":["12.41","13.8","13.9","13.10","13.17","15.41","19.3","19.6"],"from":["12.41","15.38","15.40","20.12","22.0","22.4","23.25","24.9","25.21","26.2"],"start":["12.42","23.9"],"browser":["12.43","21.6"],"estimates":["12.43"],"triggered":["12.45","19.6","23.4"],"become":["12.46"],"empty":["12.46","21.4"],"example":["12.46","21.1"],"playback":["12.47","12.51","12.52","12.62","15.15","15.31","21.7","23.13","23.15"],"occurred":["12.48"],"metadata":["12.50","27.38"],"fired":["12.54"],"user":["12.58"],"agent":["12.58"],"refer":["13.0"],"which":["13.1","23.5"],"print":["13.1","13.32"],"all":["13.1"],"built":["13.1","23.43","23.50"],"context":["13.3"],"notification":["13.4"],"messages":["13.4"],"milliseconds":["13.4","13.8","13.9","13.17","13.22"],"settings":["13.5","13.6","13.7","19.1"],"pixels":["13.5","13.10","21.5"],"view":["13.10"],"count":["13.11"],"feature":["13.12","13.13","23.47"],"automatic":["13.14","13.15"],"reconnection":["13.14","13.15"],"attempts":["13.14"],"when":["13.14","13.15","15.11","15.12","15.41","23.4","23.5","23.12","23.22"],"connection":["13.15"],"delay":["13.16","13.21","13.24"],"bottom":["13.16","21.5","23.17","23.33"],"click":["13.17","13.18","13.19","19.2","19.3"],"toggles":["13.18","13.19","13.20"],"single":["13.20"],"rotation":["13.21"],"speed":["13.23","13.25","21.5","23.15"],"multiplier":["13.23","13.25"],"long":["13.23","13.24","23.46"],"press":["13.23","13.24","23.46"],"left":["13.25"],"right":["13.25"],"adjustment":["13.26"],"via":["13.26","13.27"],"keyboard":["13.26","13.27"],"shortcuts":["13.26","13.27"],"seeking":["13.27"],"rates":["13.28"],"ratios":["13.29"],"under":["13.31"],"element":["13.31","15.34","21.12"],"requestanimationframe":["13.33"],"currently":["13.33","15.25","23.3","23.6","23.42"],"it":["13.33","19.1","23.38"],"actively":["13.34"],"release":["13.34","15.5"],"resources":["13.34","22.0"],"destroying":["13.34"],"myplugin":["14.0"],"console":["14.0"],"info":["14.0"],"return":["14.0","21.13","23.51"],"something":["14.0"],"pause":["15.3"],"accepts":["15.4"],"indicating":["15.4"],"src":["15.5"],"calls":["15.5"],"once":["15.5"],"commonly":["15.5"],"manually":["15.5","20.10"],"specific":["15.6"],"fast":["15.7"],"seconds":["15.8","15.39","21.5"],"similar":["15.11","15.13","15.42"],"setting":["15.11","15.12","15.15"],"but":["15.12","15.13","15.42"],"some":["15.12"],"optimization":["15.12"],"operations":["15.12","21.9"],"quality":["15.13"],"gets":["15.14","15.21","15.24","15.30","15.31","15.32"],"frame":["15.17"],"screenshot":["15.18","15.19"],"window":["15.20","23.23"],"effect":["15.23","23.22"],"visible":["15.23","21.12","25.6"],"sets":["15.24"],"supported":["15.26"],"values":["15.26","21.13"],"adapts":["15.27"],"its":["15.27","21.10","21.12"],"coordinate":["15.28","21.11"],"these":["15.29"],"properties":["15.29"],"provide":["15.29"],"quick":["15.29"],"access":["15.29","21.6"],"calculate":["15.33"],"attributes":["15.34"],"buffered":["15.38"],"ranging":["15.38","15.40","23.25"],"often":["15.38","15.40","23.11"],"typically":["15.39"],"alongside":["15.39"],"using":["15.41"],"search":["15.42"],"css":["15.44","23.50"],"subtitle":["15.47"],"offset":["15.47","23.25"],"component":["16.1","18.1"],"unique":["16.1","17.1","18.1"],"class":["17.1"],"marking":["17.1"],"comes":["19.1"],"with":["19.1","21.0","23.40","23.43"],"four":["19.1"],"elements":["19.3"],"onselect":["19.3"],"text":["19.3","27.34"],"item":["19.5","21.12"],"usage":["20.0"],"npm":["20.1","24.1","25.2"],"install":["20.1","24.1","25.2"],"jsdelivr":["20.2","21.3","24.2"],"net":["20.2","24.2","25.3"],"https":["20.2","21.3","24.2","25.3"],"head":["20.3","24.3"],"title":["20.3","24.3"],"demo":["20.3"],"meta":["20.3"],"charset":["20.3"],"template":["20.4","24.4"],"ref":["20.4","21.12"],"export":["20.5","24.5"],"option":["20.5","21.8","24.5"],"getinstance":["20.5","24.5"],"rest":["20.5","24.5"],"const":["20.5","24.5"],"d":["20.6"],"import":["20.8","20.10","24.8","24.10","25.21","26.2"],"ts":["20.9","25.21","27.40"],"cases":["20.10"],"you":["20.10","20.11","20.13","23.27"],"types":["20.10","21.13"],"variable":["20.10"],"version":["20.11","20.12","22.0","24.11"],"chrome":["20.11"],"last":["20.11"],"starting":["20.12","22.0"],"not":["20.13"],"always":["20.13"],"accurate":["20.13","21.5","21.13"],"sometimes":["20.13"],"may":["20.13"],"want":["20.13","23.27"],"adjust":["20.13","23.38"],"input":["21.0","21.8"],"examples":["21.1"],"plugin":["21.2","25.7","25.10","25.11","25.18"],"danmuku":["21.2","21.8","25.11","25.18"],"yarn":["21.2"],"removed":["21.4"],"comments":["21.4","21.8"],"are":["21.4","22.1"],"ignored":["21.4"],"hello":["21.4"],"xml":["21.5"],"returning":["21.5"],"clamped":["21.5"],"margin":["21.5","25.5"],"top":["21.5"],"spacing":["21.5"],"cross":["21.6"],"origin":["21.6"],"requires":["21.6","21.7"],"that":["21.6","23.26"],"server":["21.6"],"allow":["21.6"],"describes":["21.7"],"accepted":["21.7"],"reject":["21.7"],"them":["21.7"],"scheduling":["21.7"],"still":["21.7"],"available":["21.7"],"track":["21.7"],"callback":["21.7"],"acceptance":["21.7"],"comment":["21.7"],"queue":["21.8","21.12"],"reads":["21.8"],"replaces":["21.8"],"appends":["21.8"],"filtering":["21.9"],"individual":["21.9"],"rows":["21.9"],"do":["21.9"],"guarantee":["21.9"],"atomic":["21.9"],"rollback":["21.9"],"entire":["21.9","23.11"],"batch":["21.9"],"independent":["21.9"],"append":["21.9"],"cancel":["21.9"],"another":["21.9"],"newer":["21.9"],"replacement":["21.9"],"cancels":["21.9"],"unfinished":["21.9"],"during":["21.10"],"configured":["21.10"],"exit":["21.10"],"use":["21.10","23.28"],"theme":["21.10"],"light":["21.10","25.16"],"covering":["21.11"],"issue":["21.11"],"explicit":["21.11"],"finite":["21.11"],"ymin":["21.11"],"ymax":["21.11"],"custom":["21.11"],"points":["21.11"],"retain":["21.11"],"their":["21.11"],"mapping":["21.11"],"object":["21.11"],"xmin":["21.11"],"xmax":["21.11"],"scale":["21.11","25.20"],"opacity":["21.11","25.5","25.20"],"minheight":["21.11","25.20"],"sampling":["21.11","25.20"],"smoothing":["21.11","25.20"],"flattening":["21.11","25.20"],"displayed":["21.12"],"full":["21.12"],"after":["21.12"],"successful":["21.12"],"inaccuracies":["21.13"],"about":["21.13"],"branch":["21.13"],"adds":["21.13"],"runtime":["21.13"],"same":["21.13"],"bundled":["22.0","22.2"],"multilingual":["22.0"],"en":["22.1","27.42"],"zh":["22.1","22.4","26.4","27.42"],"cn":["22.1","26.1"],"contributions":["22.2"],"welcome":["22.2"],"i18n":["22.4","26.4"],"tw":["22.4","26.4"],"mounted":["23.1"],"identifier":["23.3"],"successfully":["23.4"],"initialized":["23.4"],"image":["23.5","23.36"],"appears":["23.5","23.25"],"color":["23.6","25.5"],"live":["23.8"],"streaming":["23.8"],"fill":["23.11"],"multiple":["23.21"],"players":["23.21"],"exist":["23.21"],"page":["23.21"],"ui":["23.22","27.22"],"enabled":["23.22"],"overlays":["23.22"],"5s":["23.25","27.25"],"progress":["23.26","23.34"],"side":["23.27"],"rendering":["23.27"],"mount":["23.27"],"if":["23.27"],"menus":["23.31"],"list":["23.33"],"description":["23.33","23.34","23.36","23.37"],"thumbnail":["23.36"],"safari":["23.38","27.38"],"supports":["23.39"],"strings":["23.39"],"htmlelement":["23.39","27.39"],"together":["23.40"],"customtype":["23.40"],"by":["23.40"],"determined":["23.40"],"suffix":["23.40"],"delegates":["23.41"],"decoding":["23.41"],"third":["23.41","23.51"],"party":["23.41","23.51"],"tolowercase":["23.42","27.42"],"language":["23.43"],"enable":["23.45"],"events":["23.45"],"rotate":["23.48"],"modify":["23.50"],"htmlcanvaselement":["23.51","27.51"],"useref":["24.5"],"let":["24.10"],"null":["24.10"],"参数":["24.10"],"对于古老的浏览器":["24.11"],"可以使用":["24.11"],"legacy":["24.11"],"文件":["24.11"],"从":["24.12"],"开始":["24.12"],"所以在":["24.13"],"开始新增了一个":["24.13"],"guide":["25.0"],"下方":["25.1"],"其余都是非必要参数":["25.4"],"弹幕文本":["25.4"],"弹幕上下边距":["25.5"],"支持像素数字和百分比":["25.5"],"弹幕透明度":["25.5"],"ffffff":["25.5"],"默认弹幕颜色":["25.5"],"可以被单独弹幕项覆盖":["25.5"],"默认弹幕模式":["25.5"],"不执行":["25.6"],"需要业务校验时请在调用前完成":["25.6"],"来自用户输入的弹幕":["25.6"],"artplayerplugindanmuku":["25.6"],"来自服务器或直接调用":["25.6"],"的弹幕":["25.6"],"data":["25.7","25.9","25.10","25.12","25.13","25.14","25.15","25.17","25.18"],"libs":["25.7","25.9","25.10","25.11","25.13","25.14","25.15","25.17","25.18"],"uncompiled":["25.7","25.10","25.11","25.15","25.18"],"bilibili":["25.8"],"网站的弹幕格式一致":["25.8"],"处理拒绝":["25.12"],"省略时间时安排在当前播放时间之后":["25.12"],"秒":["25.12"],"显示仍受播放状态":["25.12"],"过滤器和可用轨道影响":["25.12"],"target":["25.13","25.16"],"热力图应在初始化时启用":["25.13"],"heatmap":["25.13"],"不会创建热力图":["25.13"],"并发追加互不取消":["25.14"],"新的替换会取消尚未完成的旧替换":["25.14"],"销毁会取消未完成加载":["25.14"],"被取消的":["25.14"],"仍正常结束":["25.14"],"但不会发出迟到的":["25.14"],"否则会看不清":["25.16"],"退出全屏后会返回配置的挂载点":["25.16"],"必须传入已存在的元素或选择器":["25.16"],"省略参数不会恢复默认位置":["25.16"],"它返回":["25.16"],"undefined":["25.16"],"销毁会移除插件面板":["25.16"],"应用创建的外部容器由应用清理":["25.16"],"同步":["25.17"],"参数是当前完整队列":["25.18"],"包含已追加数据":["25.18"],"也可能来自显示调度":["25.18"],"监听错误事件并不能代替处理公开方法的":["25.18"],"拒绝":["25.18"],"是实时只读的停止状态":["25.19"],"与":["25.19"],"ishide":["25.19"],"不同":["25.19"],"也不表示媒体是否准备就绪":["25.19"],"emit":["25.19"],"默认分别为":["25.20"],"图表宽度":["25.20"],"floor":["25.20"],"图表高度":["25.20"],"提供准确类型":["25.21"],"加载的仍是同一个运行时工厂":["25.21"],"该入口尚未发布":["25.21"],"不能从旧":["25.21"],"cdn":["25.21"],"版本导入":["25.21"],"无需手动导入":["26.1"],"group":["26.2"],"id":["26.2"],"容器":["27.1"],"目前只用于记忆播放":["27.3"],"autoplayback":["27.3"],"事件一样":["27.4"],"只会出现在播放器初始化且未播放的状态下":["27.5"],"播放器主题颜色":["27.6"],"目前用于":["27.6"],"进度条":["27.6"],"播放器的默认音量":["27.7"],"使用直播模式":["27.8"],"会隐藏进度条和播放时间":["27.8"],"是否默认静音":["27.9"],"播放器的尺寸默认会填充整个":["27.11"],"容器尺寸":["27.11"],"所以经常出现黑边":["27.11"],"该值能自动调整播放器尺寸以隐藏黑边":["27.11"],"当播放器滚动到浏览器视口以外时":["27.12"],"自动进入":["27.12"],"迷你播放":["27.12"],"模式":["27.12","27.28"],"是否循环播放":["27.13"],"是否显示视频翻转功能":["27.14"],"目前只出现在":["27.14"],"设置面板":["27.14","27.15","27.16","27.18","27.22","27.25"],"右键菜单":["27.14","27.15","27.16","27.22"],"是否显示视频播放速度功能":["27.15"],"会出现在":["27.15","27.16"],"是否显示视频长宽比功能":["27.16"],"是否在底部控制栏里显示":["27.17","27.18","27.20"],"视频截图":["27.17"],"功能":["27.17"],"的开关按钮":["27.18","27.20"],"画中画":["27.20"],"假如页面里同时存在多个播放器":["27.21"],"是否只能让一个播放器播放":["27.21"],"的背景虚化效果":["27.22"],"开启后":["27.22"],"是否在底部控制栏里显示播放器":["27.23","27.24"],"窗口全屏":["27.23"],"按钮":["27.23","27.24","27.49"],"网页全屏":["27.24"],"出现在":["27.25"],"迷你进度条":["27.26"],"只在播放器失去焦点后且正在播放时出现":["27.26"],"挂载模式":["27.27"],"假如你希望在播放器挂载前":["27.27"],"就提前渲染好播放器所需的":["27.27"],"时有用":["27.27"],"你可以通过":["27.27"],"在移动端是否使用":["27.28"],"类型":["27.33"],"描述":["27.33","27.34","27.37"],"默认画质":["27.33"],"画质名字":["27.33"],"高亮时间":["27.34"],"高亮文本":["27.34"],"预览图地址":["27.36"],"预览图数量":["27.36"],"column":["27.36"],"字幕名字":["27.37"],"字幕地址":["27.37"],"字幕类型":["27.37"],"可选":["27.37"],"preload":["27.38"],"中会自动调整为":["27.38"],"字符串和":["27.39"],"默认视频的格式就是视频地址的后缀":["27.40"],"如":["27.40"],"m3u8":["27.40"],"mkv":["27.40"],"但有时候视频地地址没有正确的后缀":["27.40"],"进行匹配":["27.41"],"把视频解码权交给第三方程序进行处理":["27.41"],"处理的函数能接收三个参数":["27.41"],"视频":["27.41"],"dom":["27.41"],"默认显示语言":["27.42"],"目前支持":["27.42"],"是否在移动端显示一个":["27.44"],"锁定按钮":["27.44"],"用于隐藏底部":["27.44"],"控制栏":["27.44"],"是否在移动端启用视频元素上的手势事件":["27.45"],"是否在移动端添加长按视频快进功能":["27.46"],"是否在移动端的网页全屏时":["27.48"],"根据视频尺寸和视口尺寸":["27.48"],"旋转播放器":["27.48"],"是否显示":["27.49"],"当前只有部分浏览器支持该功能":["27.49"],"函数可以返回一个第三方的":["27.51"],"或者":["27.51"],"htmlvideoelement":["27.51"],"例如可以代理一个已经存在的":["27.51"]},{"0":["9.6","13.25","13.26","15.9","21.4","21.5","21.11","25.4"],"1":["9.6","13.26","15.9","19.6","20.10","21.11","25.20"],"2":["13.28","21.5","21.11","23.1","25.5","27.1"],"3":["13.23","20.7","20.10","24.7"],"4":["23.7","23.10","23.19","23.31","23.32","23.39","23.43","26.1","27.10","27.19","27.31","27.32","27.39","27.47","27.50"],"5":["9.6","13.12","13.27","19.6","21.4","23.47","25.4","27.47"],"6":["2.1","2.3","2.4","2.5","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40"],"7":["2.19","2.21","2.23","2.25","2.26","5.16","5.28","5.33","15.16","15.28","15.33","23.4","27.4","27.39"],"8":["2.17","2.20","5.1","5.14","5.21","5.31","5.32","5.34","5.35","5.36","5.44","12.20","15.44","20.3"],"9":["2.29","2.30","2.31","5.12","5.20","5.22","5.23","5.37","12.29","12.30","12.31","13.29","15.12","15.20","15.22","15.37","23.43","27.4"],"10":["2.6","2.18","2.24","7.5","9.6","13.11","17.5","21.4"],"11":["5.2","5.3","5.21","5.33","12.28","15.2","15.33","24.11"],"12":["23.31","27.31"],"15":["23.35","27.35"],"16":["23.32","27.32"],"17":["4.0","14.0"],"25":["13.28","21.11"],"29":["15.45"],"35":["13.7"],"50":["13.10"],"100":["21.11","25.20"],"128":["21.11"],"200":["13.6","13.8","13.9","13.21"],"250":["9.3","13.5","19.3"],"300":["13.17"],"1000":["13.22","13.24"],"2000":["13.4"],"3000":["13.13"],"是指挂载在":["0.0","1.0","5.0"],"js":["0.1","0.3","0.5","0.6","0.7","0.8","0.9","0.10","0.13","0.15","0.16","1.1","2.1","2.3","2.4","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.17","2.19","2.20","2.21","2.23","2.25","2.26","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","2.41","3.3","3.5","3.6","3.7","3.8","3.9","3.10","3.17","3.28","3.29","3.30","5.1","5.2","5.3","5.8","5.9","5.10","5.11","5.12","5.13","5.14","5.16","5.17","5.18","5.19","5.20","5.21","5.22","5.23","5.25","5.27","5.28","5.31","5.32","5.33","5.34","5.35","5.36","5.37","5.41","5.44","5.46","5.47","9.1","9.5","10.1","10.4","10.5","10.6","10.14","12.2","12.6","12.17","12.20","12.22","12.24","12.28","12.29","12.30","12.31","15.1","15.2","15.3","15.12","15.20","15.22","15.28","15.33","15.37","15.44","15.46","19.3","19.6","22.0","23.1","23.4","23.7","23.31","23.32","23.35","23.39","23.43","25.6","25.7","25.9","25.10","25.12","25.13","25.14","25.15","25.17","25.18","26.0","27.1","27.7","27.10","27.19","27.31","27.34","27.35","27.39","27.47","27.50"],"var":["0.1","0.3","0.5","0.6","0.7","0.8","0.9","0.10","0.13","0.14","0.15","0.16","0.17","2.1","2.2","2.3","2.4","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.17","2.18","2.19","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.27","2.28","2.29","2.30","2.31","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","5.2","5.3","5.12","5.14","5.16","5.20","5.22","5.23","5.28","5.31","5.32","5.33","5.34","5.35","5.36","5.37","5.44","5.46","9.5","10.1","10.5","10.14","12.22","12.29","12.30","12.31","15.12","15.16","15.20","15.22","15.33","15.44","15.45","19.3","22.4","23.1","23.7","23.10","23.19","23.31","23.32","23.43","23.47","25.10","25.11","25.12","25.13","25.14","25.18","26.1","26.2","27.1","27.4","27.10","27.19","27.31","27.32","27.39","27.43","27.47"],"art":["0.1","0.2","0.5","0.6","0.7","0.10","0.14","0.16","0.17","2.2","2.6","2.11","2.12","2.16","2.17","2.18","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.28","2.29","2.30","2.31","2.39","5.16","5.20","5.22","5.23","5.28","5.33","5.44","8.4","9.5","10.1","10.5","12.31","15.16","15.20","15.22","15.33","15.44","15.45","18.4","19.3","20.5","20.10","22.3","22.4","23.1","23.7","23.10","23.19","23.29","23.30","23.31","23.32","23.43","23.47","24.5","25.11","25.13","25.14","25.20","26.1","26.2","27.1","27.4","27.19","27.29","27.30","27.31","27.32","27.35","27.39","27.41","27.43","27.47"],"new":["0.1","0.2","0.6","0.7","0.14","0.16","0.17","2.2","2.6","2.17","2.18","2.20","2.22","2.24","2.28","2.29","2.30","2.31","5.12","5.23","5.44","5.45","8.2","8.4","8.5","10.1","15.12","15.16","15.20","15.33","15.45","18.2","18.4","18.5","19.3","20.5","22.4","23.1","23.7","23.10","23.19","23.29","23.30","23.31","23.32","23.43","23.47","24.5","25.11","25.14","25.18","26.4","27.1","27.4","27.29","27.30","27.31","27.32","27.43"],"artplayer":["0.2","0.7","0.14","0.16","0.17","2.2","2.22","2.24","2.28","2.29","2.30","2.31","3.5","3.6","3.7","3.29","3.30","5.12","5.23","5.45","8.2","8.3","8.4","8.5","9.7","10.1","10.2","15.12","15.16","15.45","18.2","18.3","18.4","18.5","19.3","19.7","20.1","20.8","20.9","20.10","21.3","21.13","22.0","22.3","23.10","23.19","23.29","23.30","23.32","23.43","23.47","24.1","24.8","25.2","25.3","25.6","25.8","25.9","25.12","25.13","25.14","25.16","25.17","26.0","26.3","27.4","27.27","27.29","27.30","27.32","27.43"],"container":["0.2","0.3","0.14","0.17","2.2","2.28","5.12","5.45","6.2","6.3","7.4","8.2","8.3","8.4","8.5","9.7","10.2","15.12","15.16","15.45","16.2","16.3","17.4","18.2","18.3","18.4","18.5","19.3","19.7","22.4","23.10","23.19","23.29","23.30","23.32","23.43","23.47","24.4","24.9","25.11","25.14","25.18","26.3","26.4","27.2","27.4","27.29","27.30","27.32","27.43"],"app":["0.2","0.4","0.14","5.45","6.2","6.3","6.4","6.5","7.3","7.4","8.2","8.3","8.4","8.5","9.7","10.2","15.12","15.16","15.45","16.2","16.3","16.4","16.5","17.3","17.4","18.2","18.3","18.4","18.5","19.3","19.7","20.4","23.1","23.19","23.29","23.30","23.47","24.4","25.11","25.18","26.4","27.2","27.4","27.29","27.30","27.43"],"url":["0.2","0.4","5.45","6.2","6.3","6.4","6.5","7.3","7.4","8.2","8.3","8.5","9.3","9.7","9.8","10.2","15.16","15.45","16.2","16.3","16.4","16.5","17.3","17.4","18.2","18.3","18.5","19.3","19.7","19.8","23.29","23.30","23.33","23.40","23.47","25.18","27.29","27.30","27.33","27.41","27.43"],"classname":["0.3","0.11","0.12","1.11","3.15","3.21","3.24","3.25","3.28","3.31","5.4","5.15","5.26","5.30","5.38","5.39","5.40","5.41","5.42","9.2","9.5","10.4","10.6","10.7","10.14","10.17","11.6","12.1","12.2","12.11","12.12","12.13","12.14","12.16","12.19","12.21","12.23","12.25","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.41","13.2","13.3","13.4","13.5","13.6","13.7","13.8","13.9","13.10","13.11","13.17","13.18","13.22","13.28","13.29","13.30","13.32","15.6","15.7","15.8","15.9","15.10","15.11","15.13","15.14","15.18","15.19","15.21","15.23","15.24","15.25","15.27","15.30","15.31","15.32","15.33","15.34","15.35","15.36","15.41","15.43","15.47","19.5","23.4","23.9","23.13","23.17","23.25","23.34","23.42","23.50","25.16","27.6","27.8","27.12","27.14","27.15","27.16","27.18","27.20","27.21","27.23","27.24","27.25","27.26","27.27","27.28","27.33","27.34","27.38","27.40","27.42","27.44","27.48","27.49","27.51"],"run":["0.3","0.8","0.9","0.11","0.12","1.2","1.3","1.4","1.5","1.7","1.8","1.9","1.10","1.11","1.12","3.1","3.2","3.4","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.23","3.24","3.25","3.26","3.27","3.28","3.31","3.33","5.4","5.6","5.7","5.9","5.11","5.13","5.15","5.24","5.30","5.38","5.39","5.40","5.41","5.42","5.43","9.2","9.5","10.4","10.6","10.7","10.14","10.17","11.6","12.1","12.2","12.3","12.4","12.5","12.9","12.11","12.12","12.13","12.14","12.15","12.16","12.17","12.18","12.19","12.21","12.23","12.24","12.25","12.26","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.3","13.5","13.8","13.9","13.10","13.17","13.28","13.29","13.30","15.7","15.8","15.9","15.10","15.14","15.21","15.22","15.23","15.25","15.27","15.31","15.32","15.33","15.34","15.35","15.36","15.41","15.43","15.46","15.47","23.4","23.9","23.13","23.17","23.34","23.39","23.50","25.1","25.6","25.16","27.3","27.6","27.8","27.9","27.12","27.13","27.14","27.15","27.16","27.17","27.18","27.20","27.21","27.23","27.24","27.25","27.26","27.28","27.33","27.34","27.40","27.42","27.44","27.45","27.46","27.48","27.49","27.51"],"code":["0.3","0.8","0.9","0.10","0.11","0.12","1.2","1.3","1.4","1.5","1.7","1.8","1.9","1.10","1.12","2.41","3.1","3.2","3.4","3.8","3.9","3.10","3.11","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.22","3.23","3.24","3.25","3.26","3.27","3.28","3.31","3.32","3.33","5.4","5.6","5.7","5.8","5.9","5.10","5.11","5.13","5.15","5.18","5.19","5.24","5.30","5.38","5.39","5.40","5.41","5.42","5.43","5.47","9.1","9.2","9.5","10.4","10.6","10.7","10.14","10.17","11.6","12.1","12.2","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.17","12.18","12.19","12.21","12.22","12.23","12.24","12.25","12.26","12.27","12.28","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.5","13.29","13.30","15.1","15.3","15.8","15.9","15.10","15.14","15.20","15.21","15.22","15.25","15.27","15.28","15.31","15.32","15.33","15.34","15.35","15.36","15.41","15.43","15.46","15.47","22.0","22.2","23.4","23.13","23.17","23.39","23.50","25.6","25.8","25.16","27.3","27.5","27.7","27.8","27.9","27.12","27.13","27.17","27.18","27.20","27.21","27.23","27.24","27.25","27.26","27.28","27.33","27.34","27.40","27.42","27.44","27.45","27.46","27.48","27.49"],"document":["0.3","23.1"],"assets":["0.4","5.45","6.2","6.3","6.4","6.5","7.3","7.4","7.5","9.3","9.7","9.8","10.2","15.45","16.2","16.3","16.4","16.5","17.3","17.4","17.5","19.3","19.7","19.8","23.30","23.47","25.18","27.2","27.30","27.43"],"sample":["0.4","5.45","6.2","6.3","6.4","6.5","7.3","7.4","7.5","9.3","9.8","10.2","16.2","16.3","16.4","16.5","17.3","17.4","17.5","19.3","19.8","23.2","23.30","25.18","27.2","27.30","27.43"],"video":["0.4","3.34","5.45","6.2","6.3","6.4","6.5","7.3","7.5","8.2","8.3","8.5","9.3","9.8","10.2","12.11","13.1","15.6","15.18","15.19","16.2","16.3","16.4","16.5","17.3","17.5","18.2","18.3","18.5","19.3","19.8","23.38","23.45","23.46","25.18","27.2","27.51"],"mp4":["0.4","6.3","6.4","6.5","7.3","7.5","8.2","8.3","8.5","9.3","9.4","9.8","9.9","10.2","12.0","16.3","16.4","16.5","17.3","17.5","18.2","18.3","18.5","19.3","19.4","19.8","19.9","23.2","25.18","27.2"],"test":["0.4"],"foo":["0.4"],"bar":["0.4","13.16","23.6","23.8","23.22"],"const":["0.4","9.6","19.6","24.9"],"获取整体的字幕列表":["0.11"],"div":["0.11","0.12","3.31","5.4","5.26","5.38","5.40","5.42","9.2","9.5","10.4","10.6","10.7","10.14","10.17","11.5","11.6","11.9","11.10","12.1","12.11","12.19","12.21","12.23","12.25","12.32","12.33","12.35","12.36","12.37","12.38","13.2","13.3","13.4","13.5","13.6","13.7","13.8","13.9","13.10","13.11","13.17","13.18","13.19","13.20","13.21","13.22","13.23","13.26","13.28","13.29","13.30","13.32","15.6","15.7","15.8","15.9","15.10","15.11","15.13","15.14","15.18","15.19","15.21","15.23","15.24","15.25","15.27","15.30","15.31","15.32","15.34","15.35","15.36","15.41","15.43","19.5","20.3","23.4","23.9","23.13","23.17","23.25","23.28","23.34","23.42","23.50","25.16","27.6","27.12","27.14","27.15","27.16","27.18","27.20","27.23","27.24","27.25","27.27","27.28","27.33","27.34","27.38","27.40","27.41","27.42","27.44","27.48","27.49","27.51"],"详见事件文档":["0.12"],"console":["1.1","2.0","12.0"],"info":["2.0","12.0"],"只监听一次事件":["2.0"],"但估计没有足够的数据来支撑播放到结束":["2.42"],"渲染完成":["2.44"],"属性的值改变时触发":["2.45"],"当这个":["2.46"],"因为":["2.47"],"或者资源类型不是受支持的媒体格式":["2.48"],"中的首帧已经完成加载":["2.49"],"播放准备开始":["2.53"],"seek":["2.56","2.57","12.56","12.57","13.25","15.15"],"user":["2.58","24.13"],"属性指定的时间发生变化":["2.60"],"播放已停止":["2.62"],"也是指挂载在":["3.0"],"构造函数":["3.0"],"减少视频资源占用":["3.34"],"如果你希望保留":["3.34"],"元素的状态":["3.34"],"仅移除界面":["3.34"],"可将其设置为":["3.34"],"when":["5.5","11.1","12.45","23.26"],"destroy":["5.5","21.9"],"也会在调用":["5.5"],"时自动执行类似逻辑":["5.5"],"画中画":["5.26"],"fullscreen":["5.26","15.21","23.24"],"窗口全屏":["5.26"],"fullscreenweb":["5.26"],"网页全屏":["5.26"],"对应":["5.29"],"domrect":["5.29"],"的同名字段":["5.29"],"组件唯一名称":["6.1","8.1"],"用于标记类名":["6.1","8.1"],"index":["6.1","7.5","8.1","16.1","17.5","18.1","25.6","25.7","25.9","25.10","25.12","25.13","25.14","25.15","25.16","25.17","25.18"],"number":["6.1","7.1","8.1","10.12","16.1","18.1","19.2"],"contextmenu":["6.4","6.5","16.4","16.5"],"name":["6.5","7.5","9.9","16.5","17.5","19.9","23.33"],"组件索引":["7.1"],"用于显示的优先级":["7.1"],"html":["7.1","7.2","9.4","9.9","15.4","17.1","17.2","19.4","19.9","23.27","23.33"],"element":["7.1","17.1","23.45"],"position":["7.2","7.5","17.2","17.5"],"left":["7.2","17.2"],"tooltip":["7.2","9.2","9.9","17.2","19.2","19.5","19.6","19.9"],"style":["7.2","9.3","17.1","17.2","21.7","23.37","27.37"],"color":["7.2","15.36","17.2","21.5","21.7"],"red":["7.2","17.2"],"click":["7.2","17.2"],"function":["7.2","11.10","17.2","19.5","21.6","23.35","23.41","24.10","25.6","27.35"],"args":["7.2","17.2"],"controls":["7.3","7.5","17.3","17.5"],"add":["7.3","17.3","21.2"],"button1":["7.5","17.5"],"png":["8.4","18.4","23.29","27.29"],"列表宽度":["9.2"],"提示文本":["9.2","9.5"],"setting":["9.3","9.4","9.8","9.9","19.3","19.4","19.8","19.9"],"true":["9.3","9.4","9.8","9.9","13.18","13.19","13.32","19.3","19.4","19.8","19.9","21.5","21.7","25.5"],"settings":["9.3","9.4","9.9","19.3","19.4","19.9","21.0","23.14","23.15","23.16","23.18","23.22","23.25"],"subtitle":["9.3","19.3"],"01":["9.3","9.4"],"default":["9.3","13.1","13.4","13.10","13.11","13.12","13.13","13.14","13.15","13.16","13.17","13.19","13.20","13.21","13.22","13.23","13.24","13.25","13.26","13.27","13.31","21.5"],"span":["9.3"],"multi":["9.4","19.4"],"level":["9.4","13.0","19.4"],"selector":["9.4","19.4"],"value":["9.6","25.20"],"min":["9.6"],"flip":["9.8","19.1","19.8"],"slider":["9.9","19.9"],"5x":["9.9","19.9"],"icon":["9.9","19.9"],"refer":["10.0","11.0","15.0"],"to":["10.0","11.0","11.1","12.53","13.25","15.0","15.4","15.15","15.39","20.11","21.4","21.7"],"proxy":["10.3"],"method":["10.3","21.10"],"used":["10.3","13.33","15.38","15.40","23.3","23.6"],"hover":["10.3"],"delete":["10.4"],"clear":["10.4"],"all":["10.4","20.12"],"caches":["10.4"],"object":["10.6","21.6","27.11"],"update":["10.8","10.9"],"show":["10.8","10.9","10.10","10.16","21.8"],"property":["10.8","10.9","10.10","10.16"],"switch":["10.11"],"version":["10.12"],"resolution":["10.12"],"duration":["10.12"],"etc":["10.12"],"control":["10.12"],"visibility":["10.12"],"toggle":["10.13","10.15","23.20"],"set":["10.16"],"the":["11.0","12.45","12.48","15.0","15.6","15.29","21.6","23.8","23.12","23.25","23.26","23.27","23.44","23.45"],"you":["11.1"],"need":["11.1"],"manage":["11.1"],"multiple":["11.1"],"player":["11.2","11.3","11.4","11.7","11.11","11.12","15.41","15.42","20.13","21.5","23.5","23.21","23.26","23.27"],"for":["11.5","11.9","13.33","16.1","18.1","23.6","23.18","23.38","23.41","23.51"],"videos":["11.5"],"options":["11.7","11.9","23.37"],"event":["11.8","12.0","12.46","15.38","15.40","19.2","19.5","21.9","23.4"],"utility":["11.10"],"by":["11.11","20.13","23.9"],"on":["12.0","13.0","13.3","14.0","23.28","23.44","23.46","23.48"],"canplay":["12.0"],"an":["12.0","20.12"],"only":["12.0","21.7","23.3","23.14","23.21","23.49"],"once":["12.0"],"time":["12.1","12.60","21.7"],"a":["12.11","13.14","21.5","21.7","23.22"],"mode":["12.25","13.31","15.24","21.5","21.7","23.48"],"media":["12.42","15.5"],"but":["12.42","15.11","15.15"],"estimates":["12.42"],"it":["12.43","15.15","21.6","21.7","23.15","23.16","23.51"],"can":["12.43","13.34","23.41"],"play":["12.43","23.4"],"offlineaudiocontext":["12.44"],"this":["12.46","13.34","23.11"],"is":["12.46","12.58","13.1","13.4","13.6","13.7","13.8","13.9","13.10","13.11","13.12","13.13","13.14","13.16","13.17","13.18","13.19","13.20","13.21","13.22","13.23","13.24","13.25","13.26","13.27","13.31","13.32","15.15","15.42","20.11","22.1","23.2","23.5","23.21"],"sent":["12.46"],"stopped":["12.47","12.62"],"fetching":["12.48"],"first":["12.49"],"frame":["12.49","15.18","15.19"],"has":["12.50","12.51","12.52"],"start":["12.53"],"after":["12.53","14.0"],"periodically":["12.54"],"as":["12.54","21.6"],"playback":["12.55","15.13","23.3"],"trying":["12.58"],"data":["12.59","25.6","25.8","25.16"],"indicated":["12.60"],"volume":["12.61","23.22"],"top":["13.0"],"mounted":["13.0"],"in":["13.1","13.12","13.13","13.15","13.16","13.21","13.24","13.27","13.34","15.5","15.7","15.26","20.12","21.7","23.2","23.11","23.14","23.15","23.16","23.18","23.23","23.24","23.25","23.34"],"events":["13.1"],"text":["13.2","19.2","19.5","19.6","21.9","23.34"],"pixels":["13.6","13.7"],"feature":["13.11","23.46"],"seconds":["13.12","13.27","15.6","15.7","21.4","23.34"],"milliseconds":["13.13","13.15","13.16","13.21","13.24"],"connection":["13.14"],"error":["13.14","13.15","21.9","21.12"],"occurs":["13.14","13.15"],"pause":["13.19","13.20"],"false":["13.20","25.5"],"swipe":["13.25"],"vertical":["13.30","15.30"],"during":["13.31"],"primarily":["13.33"],"smooth":["13.33"],"progress":["13.33","15.13","15.39","23.6","23.8"],"enabling":["13.34"],"reduce":["13.34"],"resource":["13.34"],"usage":["13.34"],"single":["13.34","15.5"],"page":["13.34","15.5","15.21"],"applications":["13.34","15.5"],"or":["13.34","15.5","21.7","21.8","21.9","21.12","23.51"],"scenarios":["13.34"],"where":["13.34"],"ready":["14.0"],"also":["14.0","15.4","20.12"],"remove":["15.4"],"s":["15.4","15.24","20.13","23.27"],"resources":["15.5"],"reinitialize":["15.5"],"tag":["15.5"],"performs":["15.11"],"some":["15.11","23.49"],"optimization":["15.11"],"operations":["15.11"],"retains":["15.13"],"previous":["15.13"],"similar":["15.15","23.4"],"optional":["15.17","21.0"],"parameter":["15.17","20.10"],"specifies":["15.17"],"filename":["15.17"],"returns":["15.18","15.19"],"promise":["15.18","15.19","21.7","21.12","25.19"],"state":["15.21"],"before":["15.23","23.27"],"starts":["15.23"],"playing":["15.23"],"normal":["15.26","15.30"],"mini":["15.26"],"window":["15.26"],"pip":["15.26"],"picture":["15.26"],"automatically":["15.27","23.11"],"correspond":["15.29"],"fields":["15.29"],"of":["15.29","23.12","23.36"],"same":["15.29"],"supported":["15.30","23.42"],"values":["15.30"],"horizontal":["15.30"],"speed":["15.31"],"ratio":["15.32"],"with":["15.38","15.40","21.7"],"timeupdate":["15.38","15.40"],"loaded":["15.39","21.9"],"display":["15.39","17.1"],"detailed":["15.39"],"buffering":["15.39"],"cleaned":["15.41"],"up":["15.41"],"destroyed":["15.41"],"scoped":["15.42"],"current":["15.42","20.5","24.5"],"preventing":["15.42"],"css":["16.1","18.1","27.11"],"class":["16.1","18.1","20.3"],"determines":["17.1"],"priority":["17.1"],"dom":["17.1"],"items":["19.1"],"playbackrate":["19.1"],"aspectratio":["19.1"],"width":["19.2","23.36","27.36"],"list":["19.2"],"onswitch":["19.5"],"completion":["19.6"],"onchange":["19.6"],"change":["19.6"],"yarn":["20.1","24.1"],"utf":["20.3","27.37"],"body":["20.3"],"if":["20.5","24.5"],"typeof":["20.5","24.5"],"ts":["20.6","21.13","23.40"],"file":["20.6","20.11"],"from":["20.8","20.9","20.13","21.8","21.12","21.13","22.2","24.8","24.11"],"import":["20.9","21.13","22.1","22.2","24.11"],"let":["20.10"],"null":["20.10"],"use":["20.11","21.1"],"which":["20.11"],"compatible":["20.11"],"down":["20.11"],"ie":["20.11","24.11"],"plugins":["20.12"],"provide":["20.12"],"ui":["20.13"],"changing":["20.13"],"therefore":["20.13"],"starting":["20.13"],"and":["21.0","23.5","23.6","23.8","23.22"],"heatmap":["21.0"],"below":["21.1"],"site":["21.1"],"pnpm":["21.2"],"net":["21.3"],"npm":["21.3","25.3"],"plugin":["21.3","21.13","25.2","25.3","25.6","25.8","25.9","25.12","25.13","25.14","25.15","25.16","25.17","25.21"],"omitted":["21.4"],"defaults":["21.4","21.11"],"currenttime":["21.4"],"percentages":["21.5"],"opacity":["21.5"],"ffffff":["21.5"],"comment":["21.5"],"modes":["21.5","25.5"],"visible":["21.5"],"fontsize":["21.5","25.5"],"percentage":["21.5"],"height":["21.5","27.36"],"antioverlap":["21.5","25.5"],"synchronousplayback":["21.5","25.5"],"runs":["21.6"],"without":["21.6","21.9"],"option":["21.6","23.11"],"its":["21.6"],"receiver":["21.6"],"may":["21.6","23.40"],"return":["21.6"],"strict":["21.7"],"resolving":["21.7"],"sends":["21.7"],"filled":["21.7"],"synchronous":["21.7"],"config":["21.8","21.12"],"partialoption":["21.8"],"merges":["21.8"],"configuration":["21.8"],"hide":["21.8","23.8","23.44"],"hides":["21.8"],"shows":["21.8"],"layer":["21.8","23.29","27.29"],"reset":["21.8"],"clears":["21.8"],"older":["21.9"],"pending":["21.9"],"loads":["21.9"],"cancelled":["21.9"],"promises":["21.9"],"resolve":["21.9"],"owner":["21.9"],"late":["21.9"],"fetch":["21.9"],"response":["21.9"],"emit":["21.9","25.20"],"artplayerplugindanmuku":["21.9","25.20"],"reject":["21.9"],"background":["21.10"],"live":["21.10"],"target":["21.10"],"requires":["21.10"],"valid":["21.10"],"omitting":["21.10"],"argument":["21.10"],"does":["21.10"],"are":["21.11"],"chartwidth":["21.11"],"floor":["21.11"],"chartheight":["21.11"],"05":["21.11","25.20"],"max":["21.11","25.20"],"including":["21.12"],"appends":["21.12"],"original":["21.12"],"loading":["21.12","23.38"],"scheduling":["21.12"],"handle":["21.12"],"public":["21.12"],"rejections":["21.12"],"separately":["21.12"],"factory":["21.13"],"danmuku":["21.13","25.2","25.6","25.7","25.9","25.10","25.12","25.14","25.15","25.16","25.17","25.19","25.21"],"type":["21.13","25.21"],"runtimeoption":["21.13","25.21"],"point":["21.13","25.21"],"eventmap":["21.13","25.21"],"core":["22.0"],"will":["22.0","23.15","23.16","23.22"],"no":["22.0","22.1"],"longer":["22.0"],"bundle":["22.0"],"manual":["22.1"],"dist":["22.2","24.12"],"group":["22.2"],"id":["22.2"],"sometimes":["23.2","23.40"],"not":["23.2","23.5","23.40"],"known":["23.2"],"immediately":["23.2"],"such":["23.2"],"cases":["23.2"],"memory":["23.3"],"autoplayback":["23.3"],"initialized":["23.5"],"resulting":["23.11"],"black":["23.11"],"bars":["23.11"],"adjusts":["23.11"],"scrolls":["23.12"],"out":["23.12"],"currently":["23.14","23.49"],"appears":["23.14","23.26"],"appear":["23.15","23.16"],"panel":["23.18","23.22","23.25"],"button":["23.20","23.23","23.24"],"bottom":["23.20","23.23","23.24"],"simultaneously":["23.21"],"whether":["23.21"],"one":["23.21"],"context":["23.22"],"menu":["23.22"],"apply":["23.22"],"loses":["23.26"],"focus":["23.26"],"pre":["23.27"],"render":["23.27"],"required":["23.27"],"mobile":["23.28","23.44","23.45","23.48"],"devices":["23.28","23.44"],"boolean":["23.33"],"string":["23.33","23.34"],"myplugin":["23.35","27.35"],"column":["23.36"],"columns":["23.36"],"encoding":["23.37","27.37"],"auto":["23.38","27.38"],"better":["23.38"],"experience":["23.38"],"more":["23.38"],"attributes":["23.38"],"e":["23.40"],"g":["23.40"],"m3u8":["23.40"],"mkv":["23.40"],"however":["23.40"],"have":["23.40"],"programs":["23.41"],"processing":["23.41"],"receive":["23.41"],"three":["23.41"],"en":["23.42"],"zh":["23.42","26.2"],"cn":["23.42","27.42"],"fast":["23.46"],"forward":["23.46"],"web":["23.48"],"based":["23.48"],"browsers":["23.49"],"support":["23.49"],"htmlvideoelement":["23.51"],"example":["23.51"],"demo":["24.3"],"meta":["24.3"],"charset":["24.3"],"ref":["24.4"],"时会自动导入的":["24.6"],"param":["24.10"],"getinstance":["24.10"],"可以兼容到":["24.11"],"和所有插件还会提供一个":["24.12"],"版本的":["24.12"],"mjs":["24.12"],"如":["24.12"],"globalthis":["24.13"],"custom":["24.13"],"agent":["24.13"],"全局变量":["24.13"],"本文描述当前重构分支":["25.0"],"弹幕时间":["25.4"],"单位秒":["25.4"],"省略时为当前播放器时间加":["25.4"],"秒":["25.4"],"滚动":["25.5"],"顶部":["25.5"],"底部":["25.5"],"弹幕可见的模式":["25.5"],"弹幕字体大小":["25.5"],"弹幕是否防重叠":["25.5"],"libs":["25.6","25.8","25.12","25.16"],"uncompiled":["25.6","25.8","25.9","25.12","25.13","25.14","25.16","25.17"],"保存到数据库":["25.6"],"savedanmu":["25.6"],"danmu":["25.6"],"load":["25.19"],"返回的":["25.19"],"完成后得到内部":["25.19"],"对象":["25.19"],"绘制自定义数据使用":["25.20"],"每项为":["25.20"],"x":["25.20"],"默认":["25.20","27.37"],"版本开始":["26.0"],"核心代码除了包含":["26.0"],"zhtw":["26.2"],"tw":["26.2"],"高亮元素":["27.6"],"上":["27.6"],"类似":["27.11"],"的":["27.11"],"fit":["27.11"],"里":["27.14","27.15","27.16","27.25"],"音量条等浮层会应用":["27.22"],"filter":["27.22"],"毛玻璃效果":["27.22"],"看起来更通透":["27.22"],"访问到播放器所需的":["27.27"],"画质地址":["27.33"],"预览图列数":["27.36"],"预览图宽度":["27.36"],"预览图高度":["27.36"],"scale":["27.36"],"字幕样式":["27.37"],"字幕编码":["27.37"],"以提升加载体验":["27.38"],"更多视频属性":["27.38"],"这些属性将直接写入视频元素里":["27.38"],"所以需要特别指明":["27.40"],"元素":["27.41"],"视频地址":["27.41"],"当前实例":["27.41"],"dom元素":["27.51"]},{"0":["19.6"],"1":["3.29","9.3","13.29","19.3","21.4"],"2":["3.29","9.6","19.6","20.13","21.4","27.3"],"3":["9.6"],"4":["9.1","20.13","22.1","23.17","23.34","23.50","24.10","27.5","27.7","27.8","27.9","27.13","27.17","27.21","27.25","27.26","27.33","27.34","27.40","27.42","27.45","27.46"],"5":["13.14","13.25","20.13"],"6":["2.41","5.42","5.43","12.1","12.3","12.4","12.5","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","24.10"],"7":["5.4","5.6","5.7","5.10","5.17","5.18","5.19","5.24","5.38","5.39","5.40","12.19","12.21","12.23","12.25","12.26","15.10","23.39"],"8":["5.9","5.15","5.25","5.27","5.30","5.41","12.17","15.1","15.9","15.14","15.21","15.25","15.30","15.31","15.32","15.34","15.35","15.36","15.41","23.37","24.3","27.37"],"9":["5.11","5.13","15.11","15.13","15.23","23.4"],"10":["5.8","5.41","7.3","7.4","12.2","12.6","12.18","12.24","15.8","15.12","15.41","17.3","17.4","19.6"],"11":["15.3","15.21","20.11"],"14":["27.33"],"22":["9.9","19.9"],"25":["23.34","27.34"],"40":["3.7"],"100":["3.10","21.13"],"150":["9.4","19.4"],"300":["3.5","3.6"],"500":["3.8","3.9","3.17"],"512":["21.5","25.5"],"1000":["13.15","25.6"],"3000":["13.16"],"实例":["0.0","5.0"],"artplayer":["0.1","0.3","0.5","0.6","0.8","0.9","0.10","0.13","0.15","1.1","2.1","2.3","2.4","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.17","2.18","2.19","2.20","2.21","2.23","2.25","2.26","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","3.1","3.3","3.4","3.8","3.9","3.10","3.11","3.12","3.13","3.14","3.15","3.16","3.17","3.18","3.19","3.20","3.21","3.22","3.23","3.24","3.25","3.26","3.27","3.28","3.31","3.32","3.33","5.1","5.2","5.3","5.8","5.9","5.10","5.11","5.13","5.14","5.15","5.16","5.18","5.19","5.20","5.21","5.22","5.25","5.28","5.30","5.31","5.32","5.33","5.34","5.35","5.36","5.37","5.41","5.44","5.46","5.47","9.1","9.2","9.5","10.3","10.4","10.5","10.6","10.7","10.14","10.17","12.2","12.6","12.17","12.18","12.20","12.22","12.24","12.28","12.29","12.30","12.31","13.5","13.6","13.7","13.8","13.9","13.28","13.29","13.30","15.2","15.3","15.5","15.20","15.22","15.28","15.33","15.34","15.37","15.41","15.44","15.46","15.47","19.5","20.2","21.6","23.4","23.7","23.17","23.31","23.39","24.2","24.13","26.1","27.10","27.19","27.31","27.34","27.39","27.40","27.47","27.50"],"container":["0.1","0.5","0.6","0.7","0.8","0.9","0.10","0.13","0.15","0.16","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.15","2.16","2.17","2.18","2.19","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.27","2.29","2.30","2.31","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","5.2","5.3","5.9","5.11","5.13","5.14","5.16","5.20","5.21","5.22","5.23","5.28","5.31","5.32","5.33","5.34","5.35","5.36","5.37","5.41","5.44","5.46","5.47","9.2","9.5","10.1","10.3","10.4","10.5","10.6","10.7","10.14","10.17","12.2","12.20","12.22","12.28","12.29","12.30","12.31","15.2","15.20","15.22","15.28","15.41","15.44","15.46","19.5","20.9","21.10","22.3","23.4","23.7","23.17","23.31","23.39","25.6","25.10","25.12","25.13","26.1","26.2","27.10","27.19","27.31","27.34","27.39","27.47"],"app":["0.1","0.3","0.5","0.6","0.7","0.8","0.9","0.10","0.16","0.17","2.2","2.6","2.17","2.18","2.20","2.22","2.24","2.28","2.29","2.30","2.31","5.12","5.16","5.20","5.22","5.23","5.28","5.33","5.34","5.44","9.5","10.1","10.4","10.5","10.6","10.14","12.31","15.20","15.22","15.28","15.33","15.41","15.44","19.5","20.3","20.5","22.3","22.4","23.4","23.7","23.10","23.31","23.32","23.39","23.43","24.9","25.6","25.10","25.12","25.13","25.14","26.2","26.3","27.1","27.19","27.31","27.32","27.39","27.47"],"assets":["0.2","0.6","0.7","0.10","0.14","0.16","0.17","2.2","2.22","2.28","2.31","5.12","5.23","5.44","9.5","10.1","10.4","10.6","10.14","15.12","15.16","15.20","15.22","15.33","22.4","23.1","23.4","23.7","23.10","23.19","23.31","23.32","23.43","24.9","25.6","25.10","25.11","25.12","25.13","25.14","26.2","26.3","26.4","27.1","27.4","27.31","27.32"],"sample":["0.2","0.6","0.14","0.16","0.17","2.2","2.28","5.12","5.23","9.5","9.7","10.1","10.4","10.6","10.14","15.12","15.16","15.20","15.22","15.33","15.45","19.7","22.4","23.1","23.4","23.7","23.10","23.19","23.31","23.32","23.43","23.47","24.9","25.6","25.11","25.12","25.13","25.14","26.2","26.4","27.4","27.32"],"video":["0.2","0.14","0.16","0.17","5.12","7.4","8.4","9.5","9.7","10.4","10.6","10.14","15.20","15.22","15.45","17.4","18.4","19.7","21.5","22.4","23.1","23.10","23.19","23.29","23.30","23.32","23.43","23.47","23.48","23.51","25.11","25.12","25.13","25.14","26.2","26.4","27.4","27.29","27.30","27.32","27.43"],"mp4":["0.2","0.14","0.17","5.12","5.45","6.2","7.4","8.4","9.5","9.7","10.4","10.14","15.12","15.16","15.20","15.33","15.45","16.2","17.4","18.4","19.7","23.1","23.4","23.10","23.19","23.29","23.30","23.32","23.43","23.47","25.11","25.12","25.13","25.14","26.2","26.4","27.4","27.29","27.30","27.43"],"console":["0.2","0.4","1.6","7.2","10.2","11.6","15.16","17.2","23.35","25.18","27.35"],"info":["0.2","0.4","1.1","7.2","10.2","11.6","17.2","23.35","25.18","27.35"],"queryselector":["0.3","5.41","10.3","15.41","23.1","27.1"],"art":["0.3","0.8","0.9","0.11","0.13","0.15","2.1","2.3","2.4","2.5","2.7","2.8","2.9","2.10","2.13","2.14","2.15","2.19","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.40","2.41","3.5","3.6","3.7","3.30","5.1","5.2","5.3","5.6","5.7","5.8","5.9","5.10","5.14","5.15","5.17","5.18","5.19","5.21","5.24","5.25","5.27","5.30","5.31","5.32","5.34","5.35","5.36","5.37","5.39","5.46","5.47","9.1","9.2","10.4","10.6","10.7","10.12","10.14","10.17","12.2","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.12","12.13","12.15","12.16","12.17","12.18","12.20","12.21","12.22","12.23","12.24","12.26","12.27","12.28","12.29","12.30","12.39","12.40","12.41","15.1","15.2","15.3","15.8","15.9","15.10","15.14","15.23","15.28","15.31","15.32","15.34","15.35","15.36","15.37","15.46","15.47","19.2","19.5","21.11","22.2","23.4","23.17","23.35","23.39","23.50","25.6","25.7","25.9","25.10","25.12","25.15","25.17","27.5","27.7","27.10","27.17","27.33","27.34","27.40","27.50"],"new":["0.3","0.5","0.8","0.9","0.10","0.11","0.13","0.15","2.1","2.3","2.4","2.5","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.19","2.21","2.23","2.25","2.26","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","2.41","3.5","3.30","5.1","5.2","5.3","5.8","5.9","5.10","5.11","5.13","5.14","5.15","5.16","5.17","5.18","5.19","5.20","5.21","5.22","5.25","5.27","5.28","5.30","5.31","5.32","5.33","5.34","5.35","5.36","5.37","5.46","5.47","9.1","9.2","9.5","10.4","10.5","10.6","10.7","10.14","10.17","12.2","12.6","12.7","12.8","12.10","12.17","12.18","12.20","12.22","12.24","12.26","12.28","12.29","12.30","12.31","15.1","15.2","15.3","15.22","15.23","15.28","15.32","15.34","15.35","15.37","15.44","15.46","15.47","19.5","23.4","23.17","23.39","25.6","25.9","25.10","25.12","25.13","25.15","25.17","26.1","26.2","27.7","27.10","27.19","27.34","27.39","27.40","27.47","27.50"],"url":["0.6","0.7","0.9","0.10","0.14","0.16","0.17","2.2","2.18","2.22","2.24","2.28","2.29","2.30","2.31","5.20","5.23","5.33","5.44","8.4","9.5","10.1","10.4","10.5","10.6","10.14","15.20","15.22","15.33","15.44","18.4","22.3","22.4","23.1","23.4","23.7","23.10","23.19","23.31","23.32","23.41","23.43","24.9","25.6","25.10","25.11","25.12","25.13","25.14","26.2","26.3","26.4","27.1","27.4","27.31","27.32","27.39","27.47"],"js":["0.11","0.12","1.6","3.1","3.4","3.11","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.22","3.23","3.24","3.25","3.26","3.27","3.31","3.32","3.33","5.4","5.6","5.7","5.15","5.24","5.26","5.30","5.38","5.39","5.40","5.42","5.43","9.2","10.3","10.7","10.17","11.6","12.1","12.3","12.4","12.5","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.18","12.19","12.21","12.23","12.25","12.26","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.5","13.6","13.7","13.8","13.9","13.10","13.17","13.22","13.28","13.29","13.30","15.7","15.8","15.9","15.10","15.11","15.13","15.14","15.18","15.19","15.21","15.23","15.25","15.27","15.30","15.31","15.32","15.34","15.35","15.36","15.41","15.43","15.47","19.2","19.5","22.1","23.13","23.17","23.25","23.34","23.42","23.50","25.8","25.16","27.3","27.5","27.8","27.9","27.12","27.13","27.14","27.15","27.16","27.17","27.18","27.20","27.21","27.23","27.24","27.25","27.26","27.27","27.28","27.33","27.40","27.42","27.44","27.45","27.46","27.48","27.49"],"var":["0.11","0.12","1.1","2.41","3.5","3.6","3.7","3.17","3.30","5.1","5.6","5.7","5.8","5.9","5.10","5.11","5.13","5.15","5.17","5.18","5.19","5.21","5.24","5.25","5.27","5.30","5.38","5.39","5.40","5.41","5.43","5.47","9.1","9.2","10.3","10.4","10.6","10.7","10.17","12.2","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.12","12.13","12.14","12.15","12.16","12.17","12.18","12.19","12.20","12.21","12.23","12.24","12.25","12.26","12.27","12.28","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","15.1","15.2","15.3","15.8","15.9","15.10","15.14","15.23","15.25","15.28","15.31","15.32","15.34","15.35","15.36","15.37","15.41","15.46","15.47","19.2","19.5","22.1","22.2","23.4","23.17","23.34","23.39","23.50","25.6","25.7","25.9","25.15","25.16","25.17","27.3","27.5","27.7","27.17","27.25","27.33","27.34","27.40","27.50"],"function":["0.14","6.5","16.5","17.1","20.10","27.37"],"构造函数":["1.0"],"code":["1.11","3.34","5.5","5.26","5.29","9.6","10.3","11.1","13.1","13.2","13.3","13.4","13.6","13.7","13.8","13.9","13.10","13.11","13.12","13.13","13.14","13.15","13.16","13.17","13.18","13.19","13.20","13.21","13.22","13.23","13.24","13.25","13.26","13.27","13.28","13.31","13.32","13.33","15.6","15.7","15.11","15.13","15.17","15.18","15.19","15.23","15.24","15.30","15.38","15.39","15.40","19.1","19.2","19.5","20.11","21.6","23.3","23.5","23.9","23.25","23.28","23.33","23.34","23.40","23.42","23.45","24.11","25.1","25.20","27.6","27.11","27.14","27.15","27.16","27.22","27.27","27.36","27.38","27.41","27.51"],"once":["2.0"],"不必停下来进一步缓冲内容":["2.42"],"media":["2.46","2.47","12.43","12.48"],"已经加载完成":["2.46"],"操作完成":["2.56"],"操作开始":["2.57"],"agent":["2.58"],"的":["3.0"],"false":["3.3","3.34","20.5","21.5","24.5","25.14"],"div":["3.34","5.5","5.29","9.6","10.3","10.13","10.15","11.1","11.2","11.3","11.4","11.7","11.8","11.11","11.12","13.1","13.12","13.13","13.14","13.15","13.16","13.24","13.25","13.27","13.31","13.33","15.4","15.15","15.17","15.26","15.38","15.39","15.40","15.42","19.1","19.2","20.5","21.6","21.10","23.3","23.5","23.6","23.8","23.12","23.14","23.15","23.16","23.18","23.20","23.23","23.24","23.26","23.33","23.40","23.44","23.45","23.46","23.49","23.51","24.3","24.5","25.20","27.11","27.22","27.36"],"classname":["3.34","5.5","5.29","9.6","10.3","11.1","11.2","11.3","11.4","11.5","11.7","11.8","11.9","11.10","11.11","11.12","13.1","13.12","13.13","13.14","13.15","13.16","13.19","13.20","13.21","13.23","13.24","13.25","13.26","13.27","13.31","13.33","15.15","15.17","15.26","15.38","15.39","15.40","19.1","19.2","21.6","23.3","23.5","23.6","23.8","23.12","23.14","23.15","23.16","23.18","23.20","23.23","23.24","23.26","23.28","23.33","23.40","23.44","23.45","23.46","23.49","25.20","27.11","27.22","27.36","27.41"],"run":["3.34","5.5","5.26","5.29","9.6","10.3","11.1","11.2","11.3","11.4","11.5","11.7","11.8","11.9","11.10","11.12","13.1","13.2","13.4","13.6","13.7","13.11","13.12","13.13","13.14","13.15","13.16","13.18","13.19","13.20","13.21","13.22","13.23","13.24","13.25","13.26","13.27","13.31","13.32","13.33","15.6","15.11","15.13","15.15","15.17","15.18","15.19","15.24","15.30","15.38","15.39","15.40","19.1","19.2","19.5","21.6","23.3","23.5","23.6","23.8","23.12","23.20","23.23","23.24","23.25","23.28","23.33","23.40","23.42","23.45","23.46","23.49","25.20","27.11","27.22","27.27","27.36","27.38","27.41"],"add":["4.0","6.3","8.3","14.0","16.3","18.3","20.1","24.1","25.2"],"例如我想写一个在视频暂停后":["4.0"],"显示一个图片广告的插件":["4.0"],"on":["5.12","15.12","15.16","15.33"],"播放器当前可见宽高":["5.29"],"document":["5.41","10.3","15.41","25.16","27.1"],"default":["5.45","7.5","15.45","17.5","19.3","21.10","21.11","24.10"],"true":["5.45","7.5","9.7","13.31","15.4","15.45","17.5","19.7","21.13","23.4","23.10","23.30","23.47","25.21","27.4","27.30","27.37"],"html":["5.45","6.1","6.2","6.3","6.4","6.5","7.3","7.5","8.1","8.2","8.3","8.5","9.8","15.45","16.1","16.2","16.3","16.4","16.5","17.3","17.5","18.1","18.2","18.3","18.5","19.8","23.29","23.30","23.37","24.13","27.29","27.30","27.37"],"sd":["5.45","15.45"],"480p":["5.45","15.45"],"组件索引":["6.1","8.1"],"用于显示的优先级":["6.1","8.1"],"contextmenu":["6.2","6.3","16.2","16.3"],"name":["6.2","6.3","6.4","7.3","7.4","8.2","8.3","8.4","8.5","9.8","15.29","16.2","16.3","16.4","17.3","17.4","18.2","18.3","18.4","18.5","19.8","23.29","23.35","27.29","27.35"],"your":["6.2","6.3","6.4","6.5","7.3","16.2","16.3","16.4","16.5","17.3","23.47","27.43"],"menu":["6.2","6.3","6.4","6.5","16.2","16.3","16.4","16.5","23.14","23.15","23.16"],"click":["6.4","6.5","16.4","16.5","17.1"],"args":["6.5","16.5"],"组件的":["7.1"],"dom":["7.1","23.41","23.51"],"元素":["7.1"],"style":["7.1","8.2","8.3","8.5","18.2","18.3","18.5","19.3","20.4","23.29"],"object":["7.1","17.1"],"mounted":["7.2","17.2","23.27"],"subtitle":["7.2","7.5","17.2","17.5"],"button1":["7.3","7.4","17.3","17.4"],"index":["7.3","7.4","17.3","17.4","25.8"],"position":["7.3","17.3"],"left":["7.3","17.3"],"controls":["7.4","17.4","21.5"],"right":["7.5","17.5"],"selector":["7.5","17.5","23.30","27.30"],"01":["7.5","17.5","19.3","19.4"],"layers":["8.2","8.3","8.4","8.5","18.2","18.3","18.4","18.5"],"potser":["8.2","8.3","8.5","18.2","18.3","18.5","23.29","27.29"],"width":["8.2","8.3","8.5","9.4","9.9","18.2","18.3","18.5","19.4","19.9","21.5","23.29","25.5"],"100px":["8.2","8.3","8.5","18.2","18.3","18.5"],"src":["8.2","8.5","9.9","18.2","18.5","19.9"],"color":["9.3","19.3"],"red":["9.3","19.3"],"srt":["9.3","19.3"],"id":["9.3","19.3","23.47"],"yellow":["9.3"],"02":["9.3"],"setting":["9.5","9.7","19.7","23.30","27.30"],"max":["9.6","19.6"],"step":["9.6"],"settings":["9.8","19.8"],"slider":["9.8","19.8"],"tooltip":["9.8","19.8"],"5x":["9.8","19.8"],"icon":["9.8","19.8"],"img":["9.9","19.9"],"height":["9.9","19.9","23.36"],"state":["9.9","13.34","19.9"],"svg":["9.9","19.9"],"secondary":["10.0"],"custom":["10.3"],"test":["10.4"],"foo":["10.4"],"bar":["10.4","13.33","23.18","23.20","23.23","23.24","23.44"],"const":["10.4","20.8","20.9","21.13","24.8","25.21"],"set":["10.8","10.9","10.10","23.2"],"whether":["10.8","10.9","10.10","10.16","23.37"],"all":["10.8","10.9","10.10","10.16","13.0"],"are":["10.8","13.34"],"displayed":["10.8","21.8"],"toggle":["10.8","10.9","10.10","10.16"],"display":["10.9","10.10","10.16","16.1","18.1","21.7"],"options":["10.11"],"texttrack":["10.11"],"gets":["10.11"],"text":["10.11"],"track":["10.11"],"activecues":["10.11"],"list":["10.11"],"via":["10.12"],"show":["10.12","25.19"],"triggered":["10.12"],"event":["10.12","17.1"],"is":["10.12","12.42","13.15","20.6","23.26","23.27"],"named":["10.12"],"of":["10.13","10.15","12.49","12.62","13.34"],"first":["11.0","15.0"],"level":["11.0","15.0"],"players":["11.1","13.34"],"simultaneously":["11.1"],"there":["12.42"],"not":["12.42","15.15","21.8","21.10"],"rendering":["12.44","21.11"],"value":["12.45","19.6","21.11"],"when":["12.46","15.5","21.5"],"because":["12.47","12.62"],"the":["12.47","12.54","20.3","21.7","23.38"],"data":["12.48","21.6","24.10","25.20"],"or":["12.48","21.6"],"been":["12.50","12.51","12.53"],"begun":["12.52"],"having":["12.53"],"rate":["12.55"],"operation":["12.56","12.57"],"to":["12.58","21.8","23.11","23.21","23.37"],"fetch":["12.58"],"loading":["12.59"],"by":["12.60"],"has":["12.61"],"constructor":["13.0"],"property":["13.0","20.10"],"off":["13.1"],"effects":["13.33"],"frequently":["13.34"],"created":["13.34","21.10"],"destroyed":["13.34"],"if":["13.34","21.11"],"you":["13.34","23.1","23.2"],"wish":["13.34"],"preserve":["13.34"],"for":["14.0"],"example":["14.0"],"let":["14.0"],"after":["15.4"],"destruction":["15.4"],"defaults":["15.4"],"note":["15.5","20.3"],"global":["15.5","20.13"],"configuration":["15.5","21.12"],"remove":["15.5"],"destroy":["15.5","20.5","21.10","24.5"],"will":["15.5"],"also":["15.5"],"ready":["15.12","15.16"],"seek":["15.12"],"settimeout":["15.12","25.6"],"does":["15.15","21.8"],"trigger":["15.15"],"additional":["15.15"],"events":["15.15"],"fullscreen":["15.26"],"fullscreenweb":["15.26"],"webpage":["15.26"],"in":["15.29"],"domrect":["15.29"],"player":["15.29"],"s":["15.29","21.1"],"current":["15.29","21.0","21.9"],"errors":["15.42"],"with":["15.42"],"duplicate":["15.42"],"class":["15.42"],"names":["15.42"],"priority":["16.1","18.1"],"element":["16.1","23.41","23.51"],"handler":["17.1"],"subtitleoffset":["19.1"],"span":["19.3"],"min":["19.6"],"npm":["20.2","24.2"],"dist":["20.2","20.12","21.3","24.2","25.3"],"warning":["20.3","21.9","23.47"],"option":["20.4","21.9","21.13","24.4","25.21"],"get":["20.4"],"return":["20.5","23.35","24.5","24.10","25.6","27.35"],"ref":["20.5","24.5"],"param":["20.10"],"getinstance":["20.10"],"import":["20.11"],"from":["20.11"],"group":["20.11","24.11"],"bash":["20.11","24.11"],"jsdelivr":["20.11","24.11"],"net":["20.11","24.11"],"mjs":["20.12"],"format":["20.12"],"such":["20.12"],"as":["20.12"],"version":["20.13"],"variable":["20.13"],"globalthis":["20.13"],"user":["20.13"],"this":["21.0","21.5","23.49"],"guide":["21.0"],"describes":["21.0"],"refactor":["21.0"],"local":["21.1"],"plugin":["21.1","21.6","24.12"],"danmuku":["21.3","24.12","25.3","25.8"],"mode":["21.4","25.4"],"scrolling":["21.4"],"top":["21.4"],"bottom":["21.4","23.18","23.44"],"follow":["21.5"],"playbackrate":["21.5"],"enabled":["21.5"],"mount":["21.5","21.8","25.5"],"undefined":["21.5","25.5"],"center":["21.5"],"heatmap":["21.5","21.13","25.5","25.21"],"enable":["21.5"],"construction":["21.5"],"below":["21.5"],"input":["21.5"],"directly":["21.6","23.38"],"asynchronously":["21.6","23.2"],"libs":["21.6","25.20"],"uncompiled":["21.6"],"truthy":["21.7"],"result":["21.7"],"adds":["21.7"],"queue":["21.7"],"item":["21.7"],"including":["21.7"],"awaited":["21.7"],"permits":["21.7"],"normal":["21.7"],"functions":["21.7"],"receive":["21.7"],"items":["21.8"],"waiting":["21.8"],"delete":["21.8"],"target":["21.8"],"moves":["21.8"],"panel":["21.8","23.14","23.15","23.16"],"an":["21.8","23.51"],"existing":["21.8","23.51"],"corresponding":["21.9"],"public":["21.9"],"promise":["21.9"],"handle":["21.9"],"rejection":["21.9"],"await":["21.9"],"try":["21.9"],"catch":["21.9"],"initial":["21.9"],"automatic":["21.9"],"observes":["21.9"],"logs":["21.9"],"invalid":["21.9"],"leaves":["21.9"],"select":["21.10"],"releases":["21.10"],"application":["21.10"],"owns":["21.10"],"any":["21.10","22.0"],"it":["21.10"],"send":["21.11"],"emit":["21.11"],"artplayerplugindanmuku":["21.11","25.11","25.13","25.14","25.18"],"x":["21.11"],"pairs":["21.11"],"axis":["21.11"],"uses":["21.11"],"pixels":["21.11"],"seconds":["21.11"],"explicitly":["21.11","23.40"],"supplying":["21.11"],"another":["21.11"],"range":["21.11"],"start":["21.12"],"no":["21.12"],"starts":["21.12"],"stop":["21.12"],"stops":["21.12"],"hide":["21.12","23.11","25.19"],"layer":["21.12"],"points":["21.13","25.5"],"languages":["22.0"],"other":["22.0"],"than":["22.0"],"simplified":["22.0"],"chinese":["22.0"],"and":["22.0","23.14","23.15","23.16","23.26","23.48"],"english":["22.0"],"required":["22.1"],"zhtw":["22.2"],"zh":["22.2"],"tw":["22.2"],"may":["23.1"],"can":["23.2","23.27"],"muted":["23.4","27.4"],"yet":["23.5"],"playing":["23.5","23.26"],"highlighted":["23.6"],"elements":["23.6"],"playback":["23.8"],"time":["23.8","23.21"],"size":["23.11"],"browser":["23.12"],"viewport":["23.12","23.48"],"context":["23.14","23.15","23.16"],"control":["23.18","23.20","23.23","23.24","23.44"],"allowed":["23.21"],"play":["23.21","27.43"],"at":["23.21"],"a":["23.21"],"filter":["23.22","25.5"],"frosted":["23.22"],"glass":["23.22"],"more":["23.22"],"transparent":["23.22"],"look":["23.22"],"however":["23.22"],"access":["23.27"],"setting01":["23.30","27.30"],"scale":["23.36"],"utf":["23.37","24.3"],"escape":["23.37","27.37"],"boolean":["23.37","27.37"],"tags":["23.37"],"these":["23.38"],"be":["23.38"],"written":["23.38"],"into":["23.38"],"correct":["23.40"],"so":["23.40"],"specified":["23.40"],"parameters":["23.41"],"lang":["23.43","27.43"],"devices":["23.45","23.46"],"mobile":["23.46"],"dimensions":["23.48"],"feature":["23.49"],"body":["24.3"],"属性":["24.10"],"export":["24.10"],"https":["24.11"],"head":["24.13"],"title":["24.13"],"runtime":["25.0"],"yarn":["25.2"],"显式":["25.4"],"保留":["25.4"],"是否同步播放速度":["25.5"],"弹幕发射器挂载点":["25.5"],"默认为播放器控制栏中部":["25.5"],"是否开启热力图":["25.5"],"当播放器宽度小于此值时":["25.5"],"弹幕发射器置于播放器底部":["25.5"],"保留的配置字段":["25.5"],"绘制自定义数据请发送":["25.5"],"事件":["25.5"],"resolve":["25.6"],"plugins":["25.11","25.13","25.14","25.18"],"xml":["25.14","25.18"],"emitter":["25.14"],"danmu":["25.16","25.18"],"createelement":["25.16"],"visible":["25.18"],"显示弹幕":["25.18"],"config":["25.19"],"reset":["25.19"],"同步返回同一个内部对象":["25.19"],"它与注册在":["25.19"],"是图表像素坐标":["25.20"],"不是秒":["25.20"],"渲染会修改内层数组的第二项":["25.20"],"保留原数据时请复制每一对坐标":["25.20"],"配置中的":["25.20"],"字段仅存储":["25.20"],"不会自动绘图":["25.20"],"resize":["25.20"],"或成功":["25.20"],"load":["25.20"],"会恢复自动曲线":["25.20"],"需要自定义曲线时可在这些事件后重新发送":["25.20"],"简体中文":["26.0"],"和":["26.0"],"英文":["26.0"],"有时候":["27.2"],"地址没那么快知道":["27.2"],"这时候你可以异步设置":["27.2"],"cover":["27.11"],"但在部分低性能设备或老旧浏览器上可能会有性能或兼容性问题":["27.22"],"预览图缩放":["27.36"],"是否转义":["27.37"],"标签":["27.37"],"默认为":["27.37"],"onvttload":["27.37"],"用于修改":["27.37"]},{"0":["15.12","24.9"],"1":["3.25","9.9","19.9","25.4"],"2":["3.26","9.3","13.29","19.3","23.3"],"3":["3.28","13.28","19.6","27.1"],"4":["3.28","13.28","19.1","20.10","23.5","23.8","23.9","23.13","23.23","23.24","23.25","23.28","23.33","23.36","23.40","23.42","23.45","23.46","23.49","27.6","27.11","27.12","27.14","27.15","27.16","27.18","27.20","27.22","27.23","27.24","27.28","27.36","27.37","27.38","27.41","27.44","27.48","27.49","27.51"],"5":["3.23","3.29","9.9","13.29","19.9","23.7"],"6":["3.29","13.29","15.43","20.10","23.2","27.2"],"7":["5.29","15.6","15.7","15.17","15.18","15.19","15.24","15.38","15.39","15.40","27.27","27.38"],"8":["5.26","15.15","15.26","15.27","23.36","24.13","27.36","27.41"],"9":["5.5"],"10":["3.12","3.14","3.27","5.12","9.9","19.9","21.13","25.21"],"14":["23.33"],"20":["3.11"],"22":["9.5"],"40":["13.7"],"100":["13.10","25.21"],"300":["13.5","13.6"],"500":["3.21","13.8","13.9","13.17"],"2000":["3.22","3.24","13.22"],"3000":["3.15","15.12"],"5000":["3.4","3.13","3.16"],"的":["0.0","0.4","1.0","5.0"],"url":["0.1","0.3","0.5","0.8","0.12","0.13","0.15","2.1","2.3","2.4","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.17","2.19","2.20","2.21","2.23","2.25","2.26","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","2.41","3.5","3.30","5.1","5.2","5.3","5.8","5.9","5.13","5.14","5.15","5.16","5.17","5.18","5.19","5.21","5.22","5.25","5.28","5.30","5.31","5.32","5.34","5.35","5.36","5.37","5.46","5.47","9.1","9.2","9.6","10.3","10.7","10.17","12.2","12.6","12.7","12.8","12.10","12.12","12.16","12.17","12.18","12.20","12.22","12.24","12.26","12.28","12.29","12.30","12.31","15.2","15.3","15.8","15.9","15.14","15.23","15.28","15.31","15.32","15.34","15.35","15.36","15.37","15.41","15.46","15.47","19.2","19.5","20.5","20.9","21.13","22.2","23.17","23.34","23.39","23.50","25.9","25.15","25.17","25.20","26.1","27.7","27.10","27.19","27.34","27.40","27.50"],"assets":["0.1","0.3","0.5","0.8","0.9","0.11","0.13","0.15","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.15","2.16","2.17","2.18","2.19","2.20","2.21","2.23","2.24","2.25","2.26","2.27","2.29","2.30","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","3.30","5.2","5.3","5.8","5.9","5.10","5.11","5.13","5.14","5.15","5.16","5.18","5.19","5.20","5.21","5.22","5.25","5.28","5.30","5.31","5.32","5.33","5.34","5.35","5.36","5.37","5.46","5.47","9.1","9.2","9.6","10.3","10.5","10.7","10.17","12.2","12.6","12.17","12.18","12.20","12.22","12.24","12.28","12.29","12.30","12.31","15.2","15.3","15.9","15.14","15.23","15.28","15.31","15.32","15.34","15.35","15.37","15.41","15.44","15.46","15.47","19.2","19.5","20.9","22.2","22.3","23.17","23.34","23.39","23.40","25.9","25.15","25.17","25.20","26.1","27.10","27.19","27.33","27.34","27.39","27.40","27.47","27.50"],"sample":["0.1","0.3","0.5","0.7","0.8","0.9","0.10","0.11","0.13","0.15","2.6","2.11","2.12","2.16","2.17","2.18","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.29","2.30","2.31","2.39","5.2","5.3","5.9","5.11","5.13","5.14","5.15","5.16","5.18","5.19","5.20","5.21","5.22","5.28","5.30","5.31","5.32","5.33","5.34","5.35","5.36","5.44","5.46","5.47","9.2","9.6","10.3","10.5","10.7","10.17","12.2","12.18","12.20","12.22","12.24","12.28","12.29","12.30","12.31","15.2","15.23","15.28","15.34","15.41","15.44","15.46","19.2","19.5","20.9","21.1","22.2","22.3","23.17","23.34","23.39","23.40","25.9","25.10","25.15","25.17","25.20","26.3","27.1","27.10","27.19","27.31","27.33","27.34","27.39","27.40","27.47"],"video":["0.1","0.3","0.5","0.6","0.7","0.8","0.9","0.10","0.13","0.15","2.2","2.6","2.12","2.17","2.18","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.28","2.29","2.30","2.31","5.2","5.3","5.9","5.11","5.13","5.14","5.16","5.20","5.22","5.23","5.28","5.31","5.32","5.33","5.35","5.36","5.44","5.46","9.2","9.6","10.1","10.3","10.5","10.7","10.17","12.2","12.22","12.28","12.29","12.30","12.31","15.28","15.41","15.44","15.46","19.2","19.5","20.9","21.13","22.2","22.3","23.7","23.17","23.31","23.39","24.9","25.6","25.10","26.3","27.1","27.10","27.19","27.31","27.34","27.39","27.40","27.47"],"mp4":["0.3","0.5","0.6","0.7","0.8","0.9","0.10","0.16","2.2","2.17","2.18","2.20","2.22","2.24","2.28","2.29","2.30","2.31","5.16","5.20","5.22","5.23","5.28","5.32","5.33","5.34","5.44","5.46","9.2","10.1","10.3","10.5","10.6","10.7","10.17","12.28","12.29","12.30","12.31","15.22","15.23","15.28","15.41","15.44","19.2","19.5","20.9","22.2","22.3","22.4","23.7","23.17","23.31","23.39","24.9","25.6","25.10","26.3","27.1","27.10","27.19","27.31","27.32","27.34","27.39","27.47"],"warning":["0.4","10.2","10.4","11.6","15.12","15.16","15.33","20.4","23.7","23.10","26.0"],"提示":["0.4"],"默认所有播放器实例都是共享同一个":["0.4"],"localstorage":["0.4"],"而且默认的":["0.4"],"是":["0.4"],"settings":["0.4","9.2","9.5","19.5"],"如果你想不同的播放器使用不同的":["0.4"],"console":["0.6","0.14","0.17","6.2","6.3","6.4","6.5","9.3","9.4","10.1","10.4","10.5","10.6","10.14","11.1","16.2","16.3","16.4","16.5","19.3","19.4","21.13","23.30","25.14"],"info":["0.6","0.14","0.17","1.6","6.2","6.3","6.4","6.5","9.3","9.4","10.1","10.4","10.5","10.6","10.14","11.1","15.16","16.2","16.3","16.4","16.5","19.3","19.4","23.30"],"play":["0.6","10.6","12.42","23.43","27.4"],"on":["0.7","0.8","0.9","0.10","2.2","2.22","5.33","5.44","7.5","8.5","9.9","10.7","10.14","15.0","15.28","15.44","17.5","18.5","19.9","20.3","23.22"],"ready":["0.9","0.10","2.2","5.12","5.44","7.5","10.14","15.33","17.5"],"artplayer":["0.11","0.12","1.6","2.41","3.34","5.4","5.6","5.7","5.17","5.24","5.26","5.27","5.29","5.38","5.39","5.40","5.42","5.43","9.6","11.1","11.6","12.1","12.3","12.4","12.5","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.19","12.21","12.23","12.25","12.26","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.1","13.3","13.4","13.10","13.11","13.12","13.13","13.14","13.15","13.16","13.17","13.18","13.19","13.20","13.21","13.22","13.23","13.24","13.25","13.26","13.27","13.31","13.32","13.33","15.1","15.7","15.8","15.9","15.10","15.11","15.13","15.14","15.18","15.19","15.21","15.23","15.24","15.25","15.27","15.30","15.31","15.32","15.35","15.36","15.43","19.1","19.2","19.6","20.13","21.10","22.1","23.25","23.27","23.33","23.34","23.40","23.42","23.50","25.20","27.3","27.5","27.7","27.8","27.9","27.13","27.14","27.15","27.16","27.17","27.21","27.25","27.26","27.33","27.36","27.42","27.45","27.46"],"container":["0.11","0.12","1.1","2.1","2.3","2.4","2.14","2.41","3.5","3.6","3.7","3.8","3.9","3.10","3.17","3.29","3.30","5.1","5.4","5.6","5.7","5.8","5.10","5.15","5.17","5.18","5.19","5.24","5.25","5.26","5.27","5.30","5.38","5.39","5.40","5.42","5.43","9.1","9.6","12.1","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.17","12.18","12.19","12.21","12.23","12.24","12.25","12.26","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.5","13.30","15.1","15.3","15.8","15.9","15.10","15.11","15.13","15.14","15.18","15.19","15.21","15.23","15.25","15.30","15.31","15.32","15.34","15.35","15.36","15.37","15.47","19.2","19.6","21.6","21.13","22.1","22.2","23.25","23.33","23.34","23.40","23.42","23.50","25.7","25.9","25.15","25.16","25.17","25.20","27.5","27.7","27.17","27.25","27.27","27.33","27.40","27.42","27.50"],"app":["0.11","0.12","0.13","0.15","2.1","2.3","2.4","2.5","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.19","2.21","2.23","2.25","2.26","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","2.41","3.5","3.6","3.7","3.30","5.1","5.2","5.3","5.8","5.9","5.10","5.11","5.13","5.14","5.15","5.17","5.18","5.19","5.21","5.25","5.27","5.30","5.31","5.32","5.35","5.36","5.37","5.39","5.41","5.46","5.47","9.1","9.2","9.6","10.3","10.7","10.17","12.2","12.5","12.6","12.7","12.8","12.9","12.10","12.12","12.13","12.15","12.16","12.17","12.18","12.20","12.21","12.22","12.23","12.24","12.25","12.26","12.27","12.28","12.29","12.30","12.39","12.40","12.41","15.1","15.2","15.3","15.8","15.9","15.10","15.11","15.13","15.14","15.21","15.23","15.30","15.31","15.32","15.34","15.35","15.36","15.37","15.46","15.47","19.2","20.9","21.6","22.2","23.17","23.34","23.40","23.50","24.3","24.5","25.7","25.9","25.15","25.16","25.17","25.20","26.1","27.7","27.10","27.17","27.25","27.27","27.33","27.34","27.40","27.50"],"new":["0.12","1.1","3.3","3.6","3.7","3.8","3.9","3.10","3.11","3.17","3.22","3.28","3.29","3.33","5.4","5.5","5.6","5.7","5.24","5.26","5.29","5.38","5.39","5.40","5.41","5.42","5.43","9.6","10.3","10.16","12.1","12.3","12.4","12.5","12.9","12.11","12.12","12.13","12.14","12.15","12.16","12.19","12.21","12.23","12.25","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.5","13.6","13.7","13.8","13.9","13.30","15.6","15.7","15.8","15.9","15.10","15.11","15.13","15.14","15.15","15.17","15.18","15.19","15.21","15.24","15.25","15.27","15.30","15.31","15.36","15.38","15.39","15.40","15.41","15.43","19.1","19.2","19.6","21.6","21.13","22.1","23.13","23.25","23.33","23.34","23.40","23.42","23.50","25.7","25.8","25.16","25.20","27.3","27.5","27.8","27.9","27.12","27.13","27.14","27.15","27.16","27.17","27.18","27.20","27.21","27.23","27.24","27.25","27.26","27.28","27.33","27.36","27.38","27.42","27.44","27.45","27.46","27.48","27.49","27.51"],"hotkeyevent":["0.14","10.14"],"event":["0.14","9.3","9.4","10.14","19.4","21.5"],"click":["0.14","6.2","6.3","7.1","7.3","10.14","15.20","15.22","16.2","16.3","17.3","23.31","25.14"],"true":["0.16","2.28","3.1","3.20","3.33","7.2","9.2","9.5","17.2","19.5","21.8","21.9","23.17","23.37"],"flip":["0.16"],"playbackrate":["0.16"],"aspectratio":["0.16"],"function":["0.17","6.2","6.3","6.4","7.1","7.3","9.4","10.14","10.17","15.20","15.22","16.2","16.3","16.4","17.3","19.4","23.30","23.37","25.14","27.30"],"myplugin":["0.17","10.17"],"art":["1.1","3.1","3.3","3.4","3.8","3.9","3.10","3.11","3.12","3.13","3.17","3.18","3.21","3.22","3.23","3.24","3.27","3.28","3.29","3.32","3.33","5.4","5.5","5.26","5.29","5.38","5.40","5.41","5.42","5.43","9.6","10.3","10.16","12.1","12.11","12.14","12.19","12.25","12.32","12.33","12.34","12.35","12.36","12.37","12.38","13.5","13.6","13.7","13.8","13.9","13.10","13.17","13.29","13.30","15.6","15.7","15.15","15.17","15.18","15.19","15.21","15.24","15.25","15.26","15.27","15.30","15.38","15.39","15.40","15.41","15.43","19.1","19.6","20.8","21.6","21.13","22.1","23.9","23.13","23.25","23.28","23.33","23.34","23.40","23.41","23.42","24.8","25.8","25.16","27.3","27.6","27.8","27.9","27.12","27.13","27.14","27.15","27.16","27.18","27.20","27.21","27.23","27.24","27.25","27.26","27.28","27.36","27.38","27.42","27.44","27.45","27.46","27.48","27.49","27.51"],"js":["1.2","1.3","1.4","1.5","1.7","1.8","1.9","1.10","1.12","3.2","3.34","5.5","5.29","10.9","10.10","10.13","10.15","10.16","11.1","13.1","13.3","13.4","13.11","13.12","13.13","13.14","13.15","13.16","13.18","13.19","13.20","13.21","13.23","13.24","13.25","13.26","13.27","13.31","13.32","13.33","15.4","15.6","15.15","15.17","15.24","15.26","15.38","15.39","15.40","15.42","19.1","20.2","21.3","21.6","21.10","23.3","23.5","23.6","23.8","23.9","23.12","23.14","23.15","23.16","23.18","23.20","23.23","23.24","23.26","23.28","23.33","23.36","23.40","23.44","23.45","23.46","23.49","24.2","25.3","25.20","27.6","27.11","27.22","27.36","27.37","27.38","27.41","27.51"],"手动触发事件":["2.0"],"subtitle":["2.28","2.29","2.30","2.31","12.31"],"或者部分加载完成":["2.46"],"则发送此事件":["2.46"],"已经到达结束点":["2.47"],"正在尝试获取媒体数据":["2.58"],"一级属性":["3.0"],"var":["3.1","3.3","3.4","3.8","3.9","3.10","3.11","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.22","3.23","3.24","3.25","3.26","3.27","3.28","3.29","3.31","3.32","3.33","5.4","5.5","5.26","5.29","5.42","9.6","10.13","10.15","10.16","12.1","12.11","13.3","13.5","13.6","13.7","13.8","13.9","13.10","13.17","13.22","13.28","13.29","13.30","15.6","15.7","15.11","15.13","15.15","15.17","15.18","15.19","15.21","15.24","15.26","15.27","15.30","15.38","15.39","15.40","15.43","19.1","19.6","21.6","21.10","23.3","23.5","23.9","23.13","23.25","23.28","23.33","23.40","23.42","25.8","25.20","27.6","27.8","27.9","27.12","27.13","27.14","27.15","27.16","27.18","27.20","27.21","27.22","27.23","27.24","27.26","27.27","27.28","27.36","27.38","27.41","27.42","27.44","27.45","27.46","27.48","27.49","27.51"],"false":["3.18","3.19","3.31","3.32","6.5","13.3","13.18","13.32","16.5","21.4"],"adsplugin":["4.0","14.0"],"option":["4.0","14.0","21.4","21.7","21.11"],"layers":["4.0","14.0"],"ads":["4.0"],"html":["4.0","7.4","8.4","9.7","15.20","15.22","17.4","18.4","19.7","20.13","21.2","23.31","23.32","25.11","25.12","25.13","25.14","27.31","27.32"],"img":["4.0","9.5","9.8","19.8","23.39","27.39"],"style":["4.0","6.1","7.3","8.1","8.4","16.1","17.3","18.1","18.4","24.4","27.29"],"width":["4.0","8.4","9.5","9.8","18.4","19.8","27.29"],"100px":["4.0","8.4","18.4","23.29","27.29"],"src":["4.0","8.3","8.4","9.8","18.3","18.4","19.8","23.29","27.29"],"display":["4.0","10.8"],"none":["4.0"],"position":["4.0","5.20","7.4","8.2","8.3","8.5","15.20","15.22","17.4","18.2","18.3","18.5","23.29","23.32","25.11","25.12","25.13","25.14","27.29","27.32"],"absolute":["4.0","8.2","8.3","8.5","18.2","18.3","18.5","23.29","27.29"],"top":["4.0","8.2","8.3","8.5","18.2","18.3","18.5","23.29","27.29"],"20px":["4.0","23.29","27.29"],"right":["4.0","7.2","7.4","8.2","8.5","15.20","15.22","17.2","17.4","18.2","18.5","23.29","25.11","25.12","25.13","25.14"],"seek":["5.12","23.19"],"settimeout":["5.12","7.5","17.5","23.2"],"controls":["5.20","5.22","15.20","15.22","25.11","25.12","25.13","25.14"],"jpg":["5.23"],"hd":["5.45","15.45"],"720p":["5.45","15.45"],"element":["6.1","8.1","13.34","18.1","21.8","23.38"],"组件的":["6.1","8.1"],"dom":["6.1","8.1","9.4","16.1","18.1","19.4"],"元素":["6.1","8.1"],"args":["6.2","6.3","6.4","16.2","16.3","16.4","23.30","27.30"],"show":["6.5","9.7","9.9","16.5","19.7","19.9","21.12"],"组件样式对象":["7.1"],"组件点击事件":["7.1"],"mounted":["7.1","15.0","17.1"],"selector":["7.2","17.2","21.8"],"default":["7.2","10.4","17.2","20.10","22.4","26.4"],"span":["7.2","17.2"],"01":["7.2","17.2","23.30","27.30"],"button":["7.3","7.4","17.3","17.4"],"tooltip":["7.3","7.4","8.2","8.3","17.1","17.3","17.4","18.2","18.3","23.32"],"color":["7.3","17.3","21.4"],"red":["7.3","17.3"],"your":["7.4","17.4","23.31","23.32","27.31","27.32","27.47"],"02":["7.5","9.4","17.5","19.3","19.4","23.30","27.30"],"update":["7.5","17.5"],"the":["7.5","17.5","21.2","22.4","23.10","26.4"],"tip":["8.2","8.3","18.2","18.3"],"50px":["8.2","8.3","8.5","18.2","18.3","18.5"],"potser":["8.4","18.4"],"setting":["9.2","19.5"],"item":["9.3","9.4","19.3","19.4"],"onselect":["9.4","19.4","23.30","27.30"],"pip":["9.5","19.5"],"mode":["9.5","19.5"],"close":["9.5","19.5"],"height":["9.5","9.8","19.8"],"add":["9.7"],"slider":["9.7","19.7"],"state":["9.8","19.8"],"range":["9.9","19.9"],"attached":["10.0","11.0"],"note":["10.2","10.4","15.12","15.16","15.33","23.7","23.10","23.47"],"to":["10.2","12.42","12.43","14.0","23.1"],"easily":["10.2"],"distinguish":["10.2"],"between":["10.2"],"and":["10.2","15.29","21.1"],"by":["10.4"],"zh":["10.6"],"cn":["10.6"],"of":["10.8","10.9","10.10","10.16","12.45","16.1","23.1"],"div":["10.8","10.9","10.10","10.11","10.12","10.16","15.5","15.29","19.6","23.11","23.21","23.27","23.36","23.37","23.38","23.41","23.48","27.37"],"classname":["10.8","10.9","10.10","10.12","10.13","10.15","10.16","15.4","15.5","15.29","15.42","19.6","21.10","23.21","23.27","23.36","23.37","23.38","23.41","23.48","23.51","27.37"],"run":["10.8","10.9","10.10","10.12","10.13","10.15","10.16","11.11","15.4","15.5","15.26","15.29","15.42","19.6","21.10","23.14","23.15","23.16","23.18","23.21","23.26","23.27","23.36","23.37","23.38","23.41","23.44","23.48","23.51","27.37"],"code":["10.8","10.9","10.10","10.12","10.13","10.15","10.16","11.2","11.3","11.4","11.5","11.7","11.8","11.9","11.10","11.11","11.12","15.4","15.15","15.26","15.29","15.42","19.6","21.10","23.6","23.8","23.12","23.14","23.15","23.16","23.18","23.20","23.21","23.23","23.24","23.26","23.27","23.36","23.37","23.38","23.44","23.46","23.48","23.49","23.51","27.37"],"currently":["10.11"],"active":["10.11"],"cues":["10.11"],"overall":["10.11"],"see":["10.12"],"documentation":["10.12"],"for":["10.12","21.7","21.11","23.1","23.37"],"details":["10.12"],"all":["11.6","21.7"],"manually":["12.0","22.0"],"triggering":["12.0"],"enough":["12.42"],"data":["12.42","12.58","20.10","21.5","21.10","21.11"],"through":["12.43","21.9"],"is":["12.44","14.0","15.5","17.1"],"already":["12.46"],"been":["12.46","20.13"],"loaded":["12.46","12.50"],"or":["12.46","12.53","23.22"],"media":["12.47","12.49","12.58","21.1"],"resource":["12.48"],"type":["12.48","25.13"],"paused":["12.51","12.53","14.0"],"browser":["12.54"],"has":["12.55","12.56","12.57","12.59","20.13"],"but":["12.58"],"currenttime":["12.60"],"changed":["12.61"],"a":["12.62"],"temporary":["12.62"],"names":["13.0"],"are":["13.0"],"in":["13.0"],"uppercase":["13.0"],"only":["13.34","21.5","21.8"],"ui":["13.34"],"set":["13.34","23.1"],"say":["14.0"],"i":["14.0"],"want":["14.0","23.10"],"write":["14.0"],"that":["14.0"],"displays":["14.0"],"an":["14.0","23.43"],"image":["14.0"],"ad":["14.0"],"when":["14.0","21.8","21.9"],"automatically":["15.5","20.6"],"execute":["15.5"],"similar":["15.5","23.11"],"logic":["15.5"],"called":["15.5"],"t":["15.12"],"some":["15.16","23.22"],"videos":["15.16"],"may":["15.16","21.5","23.22"],"not":["15.16","21.5","21.7"],"switch":["15.20"],"visible":["15.29","25.5"],"resize":["15.33","21.11"],"object":["16.1","18.1","21.7","23.11"],"triggered":["17.1"],"after":["17.1","25.16"],"yellow":["19.3"],"step":["19.6"],"pnpm":["20.1","24.1"],"unpkg":["20.2","20.11","21.3","24.2","25.3"],"player":["20.3","21.13","23.47"],"s":["20.3"],"dimensions":["20.3"],"depend":["20.3"],"instance":["20.4","23.41"],"getinstance":["20.4"],"path":["20.5"],"imported":["20.6"],"useref":["20.8","24.8"],"export":["20.10"],"return":["20.10","21.5"],"https":["20.11"],"cdn":["20.11","24.11"],"npm":["20.11","24.11","25.0"],"dist":["20.11","24.11"],"plugin":["20.12","21.9","25.20"],"danmuku":["20.12","21.6","21.10","25.20"],"doctype":["20.12","24.12"],"agent":["20.13"],"added":["20.13"],"head":["20.13"],"title":["20.13"],"demo":["20.13","24.13"],"branch":["21.0"],"runtime":["21.0"],"entrypoint":["21.0"],"build":["21.1"],"script":["21.2"],"javascript":["21.2"],"projects":["21.2"],"can":["21.2"],"import":["21.2","22.0"],"ffffff":["21.4"],"border":["21.4"],"panel":["21.5","21.9"],"moves":["21.5"],"points":["21.5","25.21"],"stored":["21.5","21.11"],"use":["21.5","21.8","21.9"],"draw":["21.5"],"custom":["21.5"],"filter":["21.5"],"synchronous":["21.5"],"do":["21.5"],"beforeemit":["21.5","25.5","25.19"],"submissions":["21.5"],"beforevisible":["21.5","25.5"],"index":["21.6","21.10","25.20"],"current":["21.7","21.8","23.41"],"as":["21.7","23.47"],"three":["21.7"],"arrow":["21.7"],"retain":["21.7"],"their":["21.7"],"lexical":["21.7"],"does":["21.7"],"call":["21.7"],"perform":["21.7","21.9"],"application":["21.7"],"undefined":["21.8"],"live":["21.8"],"validated":["21.8"],"updates":["21.8"],"ishide":["21.8"],"read":["21.8"],"visibility":["21.8"],"mount":["21.9"],"target":["21.9"],"move":["21.9"],"enable":["21.9"],"heatmap":["21.9"],"constructing":["21.9"],"libs":["21.10"],"uncompiled":["21.10","25.20"],"danmu":["21.10"],"mutates":["21.11"],"inner":["21.11"],"point":["21.11"],"arrays":["21.11"],"historical":["21.11"],"compatibility":["21.11","23.22"],"copy":["21.11"],"each":["21.11"],"pair":["21.11"],"reusing":["21.11"],"original":["21.11"],"successful":["21.11"],"load":["21.11"],"redraws":["21.11"],"hidden":["21.12"],"shown":["21.12"],"reset":["21.12"],"items":["21.12"],"destroy":["21.12"],"onerror":["21.13","25.21"],"error":["21.13","25.21"],"artplayerplugindanmuku":["21.13","25.10","25.12","25.21"],"you":["22.0","23.10"],"need":["22.0","23.1"],"change":["22.4","26.4"],"size":["23.1"],"example":["23.1"],"equivalent":["23.4"],"muted":["23.10"],"if":["23.10"],"css":["23.11","27.1"],"fit":["23.11"],"cover":["23.11"],"description":["23.19"],"increase":["23.19"],"volume":["23.19","24.9"],"decrease":["23.19"],"forward":["23.19"],"backward":["23.19"],"this":["23.22","27.4"],"cause":["23.22"],"performance":["23.22"],"issues":["23.22"],"low":["23.22"],"via":["23.27"],"menu":["23.31","27.31"],"left":["23.32","27.32"],"something":["23.35","27.35"],"dosomething":["23.35","27.35"],"onvttload":["23.37"],"modifying":["23.37"],"text":["23.37"],"loading":["23.39","27.39"],"modify":["23.43"],"existing":["23.43"],"because":["23.47"],"uses":["23.47"],"key":["23.47"],"class":["24.3"],"get":["24.4"],"d":["24.6"],"选项":["24.10"],"lang":["24.12","26.2","26.3"],"meta":["24.13"],"charset":["24.13"],"utf":["24.13"],"类型入口与本轮修复尚未发布到":["25.0"],"使用本站构建的插件与样本":["25.1"],"接入自己的应用时":["25.1"],"com":["25.3"],"弹幕模式":["25.4"],"滚动":["25.4"],"默认":["25.4"],"顶部":["25.4"],"弹幕载入前的过滤器":["25.5"],"只支持返回布尔值":["25.5"],"输入框发送前的过滤器":["25.5"],"支持返回":["25.5"],"promise":["25.5"],"弹幕显示前的过滤器":["25.5"],"弹幕层是否可见":["25.5"],"emitter":["25.5"],"是否开启弹幕发射器":["25.5"],"maxlength":["25.5"],"plugins":["25.6","25.10","25.12"],"xml":["25.6","25.11","25.12","25.13"],"这是用户在输入框输入弹幕文本":["25.6"],"然后点击发送按钮后触发的函数":["25.6"],"你可以对弹幕做合法校验":["25.6"],"或者做存库处理":["25.6"],"当返回true后才表示把弹幕加入到弹幕队列":["25.6"],"async":["25.6"],"const":["25.6"],"隐藏弹幕":["25.11"],"发送弹幕":["25.12"],"弹幕大小":["25.13"],"input":["25.13"],"重新加载当前弹幕库":["25.14"],"catch":["25.14"],"queryselector":["25.16","27.27"],"danmus":["25.18"],"加载弹幕":["25.18"],"length":["25.18"],"弹幕错误":["25.18"],"上的插件对象不是同一个对象":["25.19"],"后续命令继续通过注册的插件调用即可":["25.19"],"抛出或拒绝时会在控制台报告错误":["25.19"],"外":["26.0"],"不再捆绑其它多国语言":["26.0"],"需要自行导入需要的语言":["26.0"],"language":["26.4"],"您可能需要初始化容器元素的大小":["27.1"],"如":["27.1"],"等同于":["27.4"],"document":["27.27"],"control":["27.32"],"文本的函数":["27.37"],"修改现有的语言":["27.43"],"id":["27.47"]},{"0":["5.12","20.5","20.9"],"1":["9.8","13.25","19.8","25.13"],"2":["13.26","25.4"],"3":["23.1"],"4":["23.6","23.11","23.12","23.14","23.15","23.16","23.18","23.20","23.21","23.26","23.37","23.38","23.41","23.44","23.48","23.51"],"5":["9.8","13.23","19.8","20.9","24.9","25.20"],"6":["15.42"],"7":["15.4","15.29","23.27","23.38"],"8":["20.13","23.41","24.12"],"9":["15.5","23.29","27.29"],"10":["9.8","13.12","13.14","13.27","19.8"],"11":["23.43","27.43"],"12":["23.37","25.13","25.20","27.37"],"20":["13.11"],"22":["9.2","9.6","9.7","19.2","19.5","19.7"],"25":["25.13"],"32":["0.14","10.14"],"50":["25.13"],"60":["23.34","25.5","27.34"],"120":["27.34"],"150":["9.3","19.3"],"200":["21.5","25.5"],"404":["2.11","12.11"],"500":["13.21"],"1000":["21.5","23.2","25.5"],"2000":["13.24"],"3000":["5.12","13.15"],"5000":["13.4","13.13","13.16"],"二级属性":["0.0"],"mp4":["0.1","0.11","0.12","0.13","0.15","2.1","2.3","2.4","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.19","2.21","2.23","2.25","2.26","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","2.41","3.5","3.6","3.7","3.29","3.30","5.1","5.2","5.3","5.8","5.9","5.10","5.11","5.13","5.14","5.15","5.17","5.18","5.19","5.21","5.25","5.26","5.30","5.31","5.35","5.36","5.37","5.39","5.41","5.47","9.1","9.6","10.8","10.9","10.10","10.16","12.2","12.5","12.6","12.7","12.8","12.9","12.10","12.12","12.13","12.15","12.16","12.17","12.18","12.20","12.21","12.22","12.23","12.24","12.25","12.26","12.27","12.39","12.41","13.30","15.1","15.2","15.3","15.8","15.9","15.10","15.11","15.13","15.14","15.18","15.19","15.21","15.25","15.30","15.31","15.32","15.34","15.35","15.36","15.37","15.46","15.47","19.6","20.5","21.6","21.13","23.33","23.34","23.50","24.5","25.9","25.15","25.16","25.17","25.20","25.21","26.1","27.7","27.25","27.33","27.36","27.50"],"console":["0.1","0.3","0.5","1.2","1.3","1.4","1.5","1.7","1.8","1.9","1.10","1.11","1.12","3.2","5.9","5.14","5.15","5.16","5.23","5.28","5.30","5.31","5.32","5.34","5.35","5.36","5.44","7.3","8.2","8.3","10.3","10.17","13.2","15.28","15.32","15.34","15.41","15.44","17.3","18.2","18.3","21.7","23.29","23.31","23.32","25.21","27.29","27.30","27.31"],"info":["0.1","0.3","0.5","1.2","1.3","1.4","1.5","1.7","1.8","1.9","1.10","1.12","5.9","5.14","5.16","5.23","5.28","5.31","5.32","5.34","5.35","5.36","7.3","8.2","8.3","10.3","10.17","15.28","15.34","15.41","17.3","18.2","18.3","23.29","23.31","23.32","27.29","27.30","27.31"],"warning":["0.2","1.6","5.12","10.1","10.5","10.6","15.20","15.22","15.41","22.0","23.2","23.4","23.17","23.19","23.40","24.3","24.4","27.10","27.40","27.47"],"提示":["0.2","5.12","24.3","27.47"],"为了方便区别":["0.2"],"元素和普通对象":["0.2"],"播放器里的所有":["0.2"],"click":["0.3","5.20","5.22","6.1","8.1","8.2","8.3","10.3","15.41","16.1","18.1","18.2","18.3","23.29","23.32","25.10","25.11","25.12","27.29","27.31","27.32"],"event":["0.3","10.3","16.1","25.11"],"你可以修改":["0.4"],"即可":["0.4"],"zh":["0.6"],"cn":["0.6","22.4","26.4"],"your":["0.6","10.6","15.33","20.3","21.1","22.3","22.4","23.3","26.3","26.4","27.3"],"ready":["0.7","0.8","0.11","0.13","0.14","0.15","0.16","2.6","2.18","2.22","2.24","5.9","5.11","5.13","5.14","5.15","5.16","5.18","5.19","5.23","5.28","5.30","5.31","5.32","5.33","5.34","5.35","5.36","5.45","5.46","6.5","8.5","9.9","10.7","12.18","12.22","12.24","15.9","15.11","15.13","15.14","15.23","15.28","15.31","15.32","15.34","15.35","15.36","15.44","15.45","15.46","16.5","18.5","19.9"],"html":["0.8","0.9","0.10","5.20","5.22","14.0","25.10"],"some":["0.8","0.9","0.10"],"text":["0.8","0.9","0.10","17.1","21.6","25.6","25.12","25.20"],"position":["0.9","5.22","5.37","7.1","8.4","14.0","17.1","18.4","25.10"],"video":["0.11","0.12","2.1","2.3","2.4","2.5","2.7","2.8","2.9","2.10","2.13","2.14","2.15","2.16","2.19","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","2.41","3.5","3.6","3.7","3.28","3.29","3.30","5.1","5.6","5.7","5.8","5.10","5.15","5.17","5.18","5.19","5.21","5.24","5.25","5.26","5.27","5.29","5.30","5.37","5.39","5.41","5.47","9.1","10.8","10.9","10.10","10.16","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.12","12.13","12.15","12.16","12.17","12.18","12.19","12.20","12.21","12.23","12.24","12.25","12.26","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.5","15.21","15.30","15.31","15.32","15.36","15.37","15.47","19.6","20.5","21.6","23.25","23.33","23.34","23.42","23.50","24.5","25.7","25.9","25.15","25.16","25.17","25.20","25.21","26.1","27.7","27.17","27.25","27.33","27.36","27.50"],"on":["0.11","0.12","0.13","0.14","0.15","0.16","2.6","2.11","2.12","2.18","2.24","5.8","5.9","5.10","5.11","5.13","5.14","5.15","5.16","5.18","5.19","5.21","5.23","5.28","5.30","5.31","5.32","5.34","5.35","5.36","5.45","5.46","6.4","6.5","7.4","10.9","10.10","12.2","12.6","12.18","12.22","12.24","15.9","15.11","15.13","15.14","15.23","15.30","15.31","15.32","15.34","15.35","15.36","15.45","15.46","16.4","16.5","17.4","21.13","23.4"],"assets":["0.12","1.1","2.1","2.3","2.4","2.14","2.41","3.5","3.6","3.7","3.8","3.9","3.10","3.17","3.28","3.29","5.1","5.4","5.5","5.6","5.7","5.17","5.24","5.26","5.27","5.29","5.38","5.39","5.40","5.41","5.42","5.43","10.8","10.9","10.10","10.13","10.15","10.16","12.1","12.3","12.4","12.5","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.19","12.21","12.23","12.25","12.26","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.5","13.6","13.7","13.28","13.29","13.30","15.1","15.6","15.7","15.8","15.10","15.11","15.13","15.15","15.17","15.18","15.19","15.21","15.24","15.25","15.26","15.27","15.30","15.36","15.38","15.39","15.40","19.1","19.6","21.6","21.9","22.1","23.25","23.33","23.36","23.42","23.50","25.7","25.8","25.16","27.5","27.7","27.17","27.25","27.36","27.37","27.42"],"sample":["0.12","2.1","2.3","2.4","2.5","2.7","2.8","2.9","2.10","2.13","2.14","2.15","2.19","2.27","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.40","2.41","3.5","3.6","3.7","3.8","3.9","3.10","3.17","3.28","3.29","3.30","5.1","5.6","5.7","5.8","5.10","5.17","5.24","5.25","5.26","5.27","5.29","5.37","5.38","5.39","5.40","5.41","5.42","9.1","10.8","10.9","10.10","10.13","10.15","10.16","12.1","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.17","12.19","12.21","12.23","12.25","12.26","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.5","13.6","13.7","13.29","13.30","15.1","15.3","15.8","15.9","15.10","15.11","15.13","15.14","15.15","15.18","15.19","15.21","15.25","15.26","15.30","15.31","15.32","15.35","15.36","15.37","15.47","19.1","19.6","21.6","21.9","22.1","23.25","23.33","23.36","23.42","23.50","25.7","25.16","26.1","27.5","27.7","27.17","27.25","27.36","27.37","27.42","27.50"],"subtitleoffset":["0.16"],"return":["0.17","9.3","9.4","10.17","19.3","19.4","25.12"],"name":["0.17","10.17"],"something":["0.17"],"dosomething":["0.17"],"一级属性":["1.0","5.0"],"app":["1.1","3.3","3.8","3.9","3.10","3.11","3.12","3.13","3.17","3.22","3.23","3.28","3.29","3.33","5.4","5.5","5.6","5.7","5.24","5.26","5.29","5.38","5.40","5.42","5.43","10.8","10.9","10.10","10.13","10.15","10.16","12.1","12.3","12.4","12.11","12.14","12.19","12.32","12.33","12.34","12.35","12.36","12.37","12.38","13.5","13.6","13.7","13.8","13.9","13.10","13.17","13.28","13.29","13.30","15.6","15.7","15.15","15.17","15.18","15.19","15.24","15.25","15.26","15.27","15.29","15.38","15.39","15.40","15.43","19.1","19.6","20.13","21.9","21.10","22.1","23.5","23.9","23.13","23.25","23.27","23.33","23.36","23.37","23.42","25.8","27.5","27.6","27.8","27.9","27.12","27.13","27.14","27.15","27.16","27.18","27.20","27.21","27.23","27.24","27.26","27.28","27.36","27.37","27.38","27.41","27.42","27.44","27.45","27.46","27.48","27.49","27.51"],"url":["1.1","3.6","3.7","3.8","3.9","3.10","3.17","3.22","3.28","3.29","5.4","5.5","5.6","5.7","5.24","5.26","5.27","5.29","5.38","5.39","5.40","5.41","5.42","5.43","10.8","10.9","10.10","10.13","10.15","10.16","12.1","12.3","12.4","12.5","12.9","12.11","12.13","12.14","12.15","12.19","12.21","12.23","12.25","12.27","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.5","13.6","13.7","13.8","13.9","13.10","13.17","13.28","13.29","13.30","15.1","15.6","15.7","15.15","15.17","15.21","15.24","15.25","15.26","15.27","15.30","15.38","15.39","15.40","15.43","19.1","19.6","21.9","21.10","22.1","23.3","23.25","23.42","24.5","25.7","25.8","25.16","25.21","27.3","27.5","27.8","27.9","27.13","27.14","27.15","27.16","27.17","27.21","27.25","27.26","27.38","27.42","27.45","27.46","27.51"],"全部工具函数请参考以下地址":["1.6"],"js":["1.11","10.8","10.11","10.12","11.2","11.3","11.4","11.5","11.7","11.8","11.9","11.10","11.11","11.12","13.2","13.34","15.5","15.29","21.9","21.11","23.11","23.21","23.27","23.37","23.38","23.41","23.48","23.51"],"emit":["2.0","12.0"],"focus":["2.0","12.0"],"移除事件":["2.0"],"true":["2.16","2.17","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.39","3.30","5.2","5.3","5.21","6.2","6.4","6.5","9.1","9.6","10.16","12.17","12.20","12.28","13.1","13.20","13.33","15.2","15.3","16.2","16.4","16.5","19.2","19.6","25.16","27.10","27.33","27.47"],"setting":["2.17","2.20","2.28","3.30","9.1","9.6","12.17","12.20","13.30","19.2","19.6","23.7"],"fullscreen":["2.22"],"srt":["2.28","2.29","2.30","2.31","12.31"],"并调用":["2.46"],"但数据意外未出现":["2.58"],"属性名字全部都是大写的形式":["3.0"],"未来容易发生变动":["3.0"],"new":["3.1","3.4","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.23","3.24","3.25","3.26","3.27","3.31","3.32","3.34","10.8","10.9","10.10","10.11","10.12","10.13","10.15","11.1","13.1","13.3","13.4","13.10","13.11","13.12","13.13","13.17","13.18","13.19","13.20","13.21","13.22","13.23","13.24","13.26","13.27","13.28","13.29","13.31","13.32","13.33","15.4","15.5","15.26","15.29","15.42","21.10","21.11","23.3","23.5","23.6","23.8","23.9","23.12","23.14","23.15","23.16","23.18","23.20","23.21","23.23","23.24","23.26","23.28","23.35","23.36","23.37","23.38","23.44","23.45","23.46","23.48","23.49","23.51","24.9","25.21","27.6","27.11","27.22","27.35","27.37","27.41"],"container":["3.1","3.3","3.4","3.11","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.22","3.23","3.24","3.25","3.26","3.27","3.28","3.31","3.32","3.33","3.34","5.5","5.29","10.8","10.9","10.10","10.11","10.12","10.13","10.15","10.16","11.1","13.3","13.6","13.7","13.8","13.9","13.10","13.11","13.17","13.22","13.28","13.29","15.4","15.5","15.6","15.7","15.15","15.17","15.24","15.26","15.27","15.29","15.38","15.39","15.40","15.42","15.43","19.1","20.3","21.9","21.11","23.5","23.6","23.8","23.9","23.12","23.13","23.14","23.15","23.16","23.20","23.23","23.24","23.27","23.28","23.36","23.37","23.45","23.46","23.49","23.51","24.10","25.8","25.21","27.3","27.6","27.8","27.9","27.12","27.13","27.14","27.15","27.16","27.18","27.20","27.21","27.22","27.23","27.24","27.26","27.28","27.36","27.37","27.38","27.41","27.44","27.45","27.46","27.48","27.49","27.51"],"log":["3.2","5.44","15.44"],"art":["3.14","3.15","3.16","3.19","3.20","3.25","3.26","3.31","3.34","10.8","10.9","10.10","10.11","10.13","10.15","11.1","13.1","13.3","13.4","13.11","13.12","13.13","13.14","13.15","13.16","13.18","13.19","13.20","13.21","13.22","13.23","13.24","13.25","13.26","13.27","13.28","13.31","13.32","13.33","15.4","15.5","15.29","15.42","20.9","21.9","21.10","23.3","23.5","23.6","23.8","23.12","23.14","23.15","23.16","23.18","23.20","23.21","23.23","23.24","23.26","23.36","23.37","23.38","23.44","23.45","23.46","23.48","23.49","23.51","24.9","25.21","27.11","27.22","27.27","27.37"],"var":["3.34","10.8","10.9","10.10","10.11","10.12","11.1","13.1","13.4","13.11","13.12","13.13","13.14","13.15","13.16","13.18","13.19","13.20","13.21","13.23","13.24","13.25","13.26","13.27","13.31","13.32","13.33","15.4","15.5","15.29","15.42","21.9","21.11","23.6","23.8","23.12","23.14","23.15","23.16","23.18","23.20","23.21","23.23","23.24","23.26","23.27","23.35","23.36","23.37","23.38","23.41","23.44","23.45","23.46","23.48","23.49","23.51","27.11","27.35","27.37"],"show":["4.0","6.2","6.3","6.4","14.0","16.2","16.3","16.4","21.5"],"block":["4.0","14.0"],"hide":["4.0","14.0"],"controls":["4.0","5.37","15.37","17.1","25.10"],"tooltip":["4.0","7.1","9.7","19.7","27.32"],"muted":["5.2","5.3","5.25","15.2","15.3","27.10"],"seek":["5.11","5.13"],"t":["5.12"],"right":["5.20","5.22","8.3","8.4","14.0","17.1","18.3","18.4","25.10","27.29"],"switch":["5.20","15.12"],"function":["5.20","5.22","6.1","8.1","8.2","8.3","16.1","18.1","18.2","18.3","23.29","23.31","23.32","25.9","25.11","25.12","27.29","27.31"],"theme":["5.44","15.44","25.5"],"settimeout":["5.45","6.5","8.5","9.9","10.14","15.45","16.5","18.5","19.9","27.2"],"subtitle":["5.47","12.29","12.30"],"object":["6.1","8.1"],"组件样式对象":["6.1","8.1"],"false":["6.2","6.3","6.4","9.5","13.19","13.31","13.34","16.2","16.3","16.4","19.5","25.6"],"update":["6.5","8.5","9.9"],"组件挂载后触发":["7.1"],"组件的提示文本":["7.1"],"yellow":["7.2","17.2"],"02":["7.2","17.2"],"onselect":["7.2","17.2"],"item":["7.2","9.5","17.2"],"dom":["7.2","17.2"],"args":["7.3","8.2","8.3","17.3","18.2","18.3","23.29","23.31","23.32","27.29","27.31"],"mounted":["7.3","8.2","8.3","17.3","18.2","18.3"],"style":["7.4","14.0","17.4","20.5","21.4","23.32","24.5","25.13","27.32"],"color":["7.4","17.4","23.32","25.4","27.32"],"red":["7.4","17.4"],"control":["7.5","17.5"],"by":["7.5","8.5","9.9","17.5","18.5","19.9","23.2","23.47"],"absolute":["8.4","14.0","18.4"],"top":["8.4","14.0","18.4"],"50px":["8.4","18.4"],"the":["8.5","9.9","18.5","19.9","20.4"],"button":["9.2"],"img":["9.2","9.6","9.7","14.0","19.2","19.5","19.7"],"height":["9.2","9.6","19.2","19.5","20.5","23.1","24.5","27.1"],"src":["9.2","9.5","14.0","19.5","23.39","27.39"],"quality":["9.3","19.3"],"1080p":["9.3","19.3"],"state":["9.5","23.39","25.6","27.39"],"svg":["9.5","9.8","19.5","19.8"],"settings":["9.6","10.4","19.2","19.6"],"slider":["9.6"],"5x":["9.6","9.7","19.6","19.7"],"width":["9.6","9.7","14.0","19.5","19.7","20.5","23.1","24.5","27.1"],"icon":["9.7","19.7"],"range":["9.8","19.8","25.13"],"instance":["10.0","24.4"],"which":["10.0","17.1"],"note":["10.1","15.20","15.22","15.41","23.2","23.17","23.19"],"if":["10.1","10.4","15.41","20.11","23.47","25.6","25.11","25.12"],"you":["10.1","10.4","15.41","20.6"],"directly":["10.1","20.4"],"regular":["10.2"],"objects":["10.2"],"within":["10.2"],"are":["10.2","21.7","21.12"],"mouseenter":["10.3"],"instances":["10.4"],"share":["10.4"],"same":["10.4","15.12"],"localstorage":["10.4"],"and":["10.4","12.46","15.12"],"want":["10.4"],"different":["10.4"],"players":["10.4"],"use":["10.4"],"loading":["10.5"],"this":["10.5","21.4","23.40"],"is":["10.5","12.48","15.33","20.4"],"using":["10.6"],"can":["10.6","23.40"],"only":["10.6","23.40"],"to":["10.7","11.6","15.20","15.22","20.5","21.12","24.5"],"artplayer":["10.8","10.9","10.10","10.11","10.12","10.13","10.15","10.16","13.34","15.4","15.6","15.15","15.17","15.26","15.29","15.38","15.39","15.40","15.42","21.9","21.11","23.3","23.5","23.6","23.8","23.9","23.12","23.13","23.14","23.15","23.16","23.18","23.20","23.23","23.24","23.26","23.28","23.35","23.36","23.37","23.38","23.44","23.45","23.46","23.49","23.51","27.6","27.11","27.12","27.18","27.20","27.22","27.23","27.24","27.28","27.35","27.37","27.38","27.41","27.44","27.48","27.49","27.51"],"classname":["10.11","13.34","21.9","21.11","23.11","23.22"],"run":["10.11","13.34","21.9","21.11","23.11","23.22"],"code":["10.11","13.34","15.5","21.9","21.11","23.11","23.22","23.41"],"flip":["10.16"],"playbackrate":["10.16"],"constructor":["11.0"],"please":["11.6"],"refer":["11.6"],"removing":["12.0"],"through":["12.42"],"end":["12.43"],"without":["12.43"],"duration":["12.45"],"partially":["12.46"],"reached":["12.47"],"not":["12.48","20.4","21.0","21.12","21.13"],"has":["12.49"],"delayed":["12.53"],"due":["12.53","15.20","15.22","23.17"],"loads":["12.54"],"changed":["12.55"],"completed":["12.56"],"begun":["12.57"],"been":["12.59","21.0"],"property":["12.60"],"lack":["12.62"],"these":["13.0","23.19"],"subject":["13.0"],"change":["13.0"],"div":["13.34","20.13","21.9","21.11","23.22","24.13"],"ads":["14.0"],"100px":["14.0"],"display":["14.0","25.13"],"none":["14.0"],"20px":["14.0"],"have":["15.12","15.16","21.0"],"functionality":["15.12"],"a":["15.16","22.0"],"such":["15.16"],"as":["15.16"],"live":["15.16"],"streams":["15.16"],"or":["15.16","17.1","23.1"],"browser":["15.20","15.22","23.17"],"security":["15.20","15.22","23.17"],"mechanisms":["15.22","23.17"],"jpg":["15.23"],"json":["15.28"],"stringify":["15.28"],"useful":["15.33"],"but":["15.33"],"need":["15.41"],"certain":["15.41"],"left":["17.1"],"side":["17.1"],"bun":["20.1","24.1"],"com":["20.2","20.11","21.3","24.2","24.11"],"of":["20.3"],"its":["20.3"],"therefore":["20.3"],"must":["20.3"],"reactive":["20.4"],"modifying":["20.4"],"600px":["20.5","24.5"],"400px":["20.5","23.1","27.1"],"margin":["20.5"],"60px":["20.5"],"auto":["20.5"],"when":["20.6","21.7","21.11","22.0"],"null":["20.8","24.8"],"volume":["20.9"],"option":["20.10","24.10","25.18"],"tip":["20.11"],"lang":["20.12","22.2","22.3"],"en":["20.12","24.12"],"head":["20.12","24.12"],"meta":["20.12","20.13","24.12"],"charset":["20.12","20.13","24.12"],"utf":["20.12","20.13","24.12"],"body":["20.13","24.13"],"class":["20.13","24.13"],"fixes":["21.0"],"yet":["21.0"],"published":["21.0"],"in":["21.1"],"application":["21.1","21.12"],"default":["21.2"],"factory":["21.2"],"from":["21.2","21.6"],"css":["21.4","23.1"],"properties":["21.4"],"for":["21.4","21.12","23.47"],"explicit":["21.4","21.13"],"called":["21.5"],"before":["21.5","21.7"],"emitter":["21.5"],"s":["21.5"],"sending":["21.5"],"ui":["21.5"],"maxlength":["21.5"],"length":["21.5"],"locktime":["21.5","25.5"],"between":["21.5"],"plugins":["21.6","21.13","25.9","25.15","25.16","25.17","25.20"],"artplayerplugindanmuku":["21.6","25.9","25.15","25.16","25.17"],"hello":["21.6"],"validation":["21.7"],"calling":["21.7"],"needed":["21.7","21.11"],"failures":["21.7"],"logged":["21.7"],"leave":["21.7"],"another":["21.7"],"attempt":["21.7"],"asynchronous":["21.7"],"hidden":["21.8"],"isstop":["21.8"],"stopped":["21.8"],"distinct":["21.8"],"media":["21.8"],"readiness":["21.8"],"signal":["21.8"],"promises":["21.8"],"resolve":["21.8"],"create":["21.9"],"later":["21.9","21.12"],"data":["21.9"],"libs":["21.9","21.11"],"uncompiled":["21.9","21.11"],"index":["21.9","21.11"],"document":["21.10","23.27"],"createelement":["21.10"],"queryselector":["21.10","23.27"],"after":["21.10","21.11"],"curve":["21.11"],"so":["21.11"],"resend":["21.11"],"those":["21.11"],"events":["21.11"],"plugin":["21.11","21.12"],"danmuku":["21.11"],"destroyed":["21.12"],"points":["21.12"],"sent":["21.12"],"custom":["21.12"],"heatmap":["21.12"],"replayed":["21.12"],"listeners":["21.12"],"describes":["21.13"],"payloads":["21.13"],"it":["21.13"],"does":["21.13"],"require":["22.0"],"cannot":["22.0"],"be":["22.0"],"matched":["22.0"],"script":["22.2","26.2"],"play":["22.4","23.19","26.4"],"300px":["23.1","27.1"],"three":["23.2"],"file":["23.2"],"formats":["23.2"],"caches":["23.7"],"last":["23.7"],"upon":["23.7","23.10"],"immediately":["23.10"],"page":["23.10"],"load":["23.10"],"space":["23.19"],"toggle":["23.19"],"pause":["23.19"],"devices":["23.22"],"older":["23.22"],"browsers":["23.22"],"opacity":["23.29","27.29"],"setting02":["23.30","27.30"],"green":["23.32","27.32"],"one":["23.34","27.34"],"more":["23.34","27.34"],"chance":["23.34","27.34"],"ploading":["23.39","27.39"],"gif":["23.39","27.39"],"recognition":["23.40"],"player":["23.40","25.21"],"parse":["23.40"],"suffixes":["23.40"],"like":["23.40"],"cache":["23.47"],"progress":["23.47"],"however":["23.47"],"播放器的尺寸依赖于容器":["24.3"],"getinstance":["24.4"],"path":["24.5"],"ts":["24.6"],"types":["24.10"],"const":["24.10"],"unpkg":["24.11"],"title":["24.12"],"cdn":["25.0"],"请替换容器和媒体":["25.1"],"pnpm":["25.2"],"底部":["25.4"],"ffffff":["25.4"],"弹幕颜色":["25.4"],"默认使用配置":["25.4"],"弹幕输入框最大长度":["25.5"],"输入框锁定时间":["25.5"],"dark":["25.5"],"弹幕主题":["25.5"],"支持":["25.5"],"和":["25.5"],"light":["25.5"],"只在自定义挂载时生效":["25.5"],"isdirty":["25.6"],"fuck":["25.6"],"i":["25.6"],"test":["25.6"],"await":["25.6"],"这里是所有弹幕的过滤器":["25.6"],"xml":["25.10"],"隐藏弹幕":["25.10"],"prompt":["25.12"],"请输入弹幕文本":["25.12"],"弹幕测试文本":["25.12"],"trim":["25.12"],"min":["25.13"],"max":["25.13"],"step":["25.13"],"value":["25.13"],"flex":["25.13"],"切换":["25.14"],"切换到新的弹幕库":["25.14"],"config":["25.14","25.18"],"v2":["25.14"],"fullscreenweb":["25.16"],"配置变化":["25.18"],"stop":["25.18"],"弹幕停止":["25.18"],"输入框可再次尝试发送":["25.19"],"beforevisible":["25.19"],"拒绝时":["25.19"],"对该项在当前调度轮报告一次":["25.19"],"error":["25.19"],"热力图示例":["25.20"],"time":["25.20"],"当无法匹配到语言时":["26.0"],"会默认显示英文":["26.0"],"i18n":["26.0","26.3"],"或者使用":["27.1"],"aspect":["27.1"],"热键":["27.19"],"描述":["27.19"],"增加音量":["27.19"],"降低音量":["27.19"],"innerhtml":["27.27"],"sd":["27.33"],"后缀的识别":["27.40"],"播放器只能解析这种后缀":["27.40"],"因为播放器默认使用":["27.47"]},{"0":["24.5"],"1":["21.6","21.9","21.10"],"2":["5.31"],"4":["23.22"],"5":["5.8","5.9","5.15","15.8","21.11","27.7"],"8":["2.0","12.0","20.12"],"9":["5.32","23.1"],"10":["5.11","5.13","15.11","15.13","21.11","25.20"],"12":["21.11"],"16":["5.32","15.32","23.1","25.12","27.1"],"22":["19.6"],"30":["21.11","25.20"],"60":["21.5","23.36","27.36"],"75":["21.11","25.20"],"120":["23.34"],"180":["23.34","27.34"],"200":["25.6"],"240":["27.34"],"360":["9.3"],"720":["9.3","19.3"],"1000":["0.8","0.9","0.10","0.16","27.2"],"1080":["9.3","19.3"],"5000":["0.14","10.14"],"比较少用":["0.0"],"warning":["0.1","0.5","0.6","0.7","0.8","5.16","5.20","5.22","5.28","5.33","5.41","10.3","10.7","10.14","15.28","20.5","20.13","23.29","23.30","23.31","23.32","23.39","23.42","23.50","24.13","27.2","27.4","27.7","27.17","27.19","27.31","27.32","27.39","27.42","27.50"],"提示":["0.1","5.16","5.20","5.22","5.33","27.2","27.7","27.10","27.17"],"假如直接修改这个":["0.1"],"元素都是以":["0.2"],"开头命名的":["0.2"],"这是所有":["0.2"],"元素的定义":["0.2"],"mouseenter":["0.3"],"mouseleave":["0.3","10.3"],"loading":["0.5","12.49"],"这是所有图标的定义":["0.5"],"types":["0.5","1.6","11.6","26.0","27.50"],"使用":["0.6"],"只能更新实例化之后的":["0.6"],"to":["0.7","21.0","21.2","23.2"],"play":["0.7","4.0","5.2","10.7","15.2","22.3","23.2","26.3"],"如果想马上隐藏":["0.7"],"settimeout":["0.8","0.9","0.10","0.12","0.13","0.14","0.15","0.16","5.2","5.3","5.8","5.11","5.13","5.21","6.4","7.4","8.4","9.8","10.8","10.9","10.10","10.16","15.2","15.8","15.11","15.13","16.4","17.4","18.4","19.8"],"false":["0.8","0.9","0.10","0.15","0.16","21.9","23.29","23.31","25.4","27.29","27.31"],"left":["0.9","7.1","10.9"],"true":["0.10","0.12","0.13","2.19","3.5","3.6","3.7","3.28","3.29","5.1","5.14","5.25","5.34","6.3","10.10","12.16","12.19","12.21","12.22","12.23","12.24","12.25","12.26","12.39","13.5","13.6","13.7","13.28","13.29","13.30","15.1","15.21","15.25","15.34","16.3","19.1","21.10","23.25","23.33","27.17","27.25"],"srt":["0.11","5.47","12.28","12.29","12.30","15.47"],"ready":["0.12","5.2","5.3","5.5","5.6","5.7","5.8","5.10","5.17","5.21","5.24","5.25","5.26","5.27","5.29","6.4","7.4","8.4","9.8","10.8","10.9","10.10","10.11","10.12","10.13","10.15","10.16","12.0","12.6","15.2","15.3","15.5","15.8","15.10","15.15","15.17","15.18","15.19","15.21","15.25","15.26","15.29","15.30","16.4","17.4","18.4","19.8","25.17"],"on":["0.17","2.1","2.3","2.4","2.5","2.7","2.8","2.9","2.10","2.13","2.14","2.15","2.16","2.17","2.19","2.20","2.21","2.23","2.25","2.26","2.27","2.28","2.29","2.30","2.31","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","2.41","3.8","3.9","3.10","3.17","5.1","5.2","5.3","5.4","5.5","5.6","5.7","5.17","5.24","5.25","5.26","5.27","5.29","5.38","5.39","5.40","5.47","8.4","9.8","10.8","10.11","10.12","10.13","10.15","10.16","12.1","12.3","12.4","12.5","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.17","12.19","12.20","12.21","12.23","12.25","12.26","12.27","12.28","12.29","12.30","12.31","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.8","13.9","13.10","13.17","15.1","15.2","15.3","15.5","15.6","15.7","15.8","15.10","15.15","15.17","15.18","15.19","15.20","15.21","15.22","15.24","15.25","15.26","15.27","15.29","15.38","15.39","15.40","15.47","17.1","18.4","19.8","25.15","25.16","25.17","25.21","27.4"],"非常少使用":["1.0"],"sample":["1.1","3.1","3.3","3.4","3.11","3.12","3.13","3.18","3.21","3.22","3.23","3.24","3.27","3.31","3.32","3.33","3.34","5.4","5.5","5.43","10.11","10.12","11.1","13.8","13.9","13.10","13.11","13.12","13.13","13.17","13.21","13.22","13.23","13.24","13.28","13.33","13.34","15.4","15.5","15.6","15.7","15.17","15.24","15.27","15.29","15.38","15.39","15.40","15.42","15.43","20.10","21.10","23.5","23.6","23.8","23.9","23.12","23.13","23.14","23.15","23.16","23.18","23.20","23.23","23.24","23.26","23.28","23.35","23.37","23.38","23.41","23.44","23.45","23.46","23.49","23.51","24.10","25.8","27.6","27.8","27.9","27.11","27.12","27.13","27.14","27.15","27.16","27.18","27.20","27.21","27.22","27.23","27.24","27.26","27.28","27.35","27.38","27.41","27.44","27.45","27.46","27.48","27.49","27.51"],"video":["1.1","3.8","3.9","3.10","3.11","3.12","3.13","3.17","3.21","3.22","3.23","3.24","3.31","3.33","5.4","5.5","5.42","10.11","10.13","10.15","11.1","12.1","12.14","13.6","13.7","13.8","13.9","13.10","13.17","13.22","13.28","15.4","15.24","15.26","15.29","15.39","15.42","19.1","20.10","21.9","21.10","22.1","23.9","23.13","23.28","23.36","24.10","25.8","27.5","27.6","27.8","27.9","27.12","27.13","27.14","27.15","27.16","27.18","27.20","27.21","27.22","27.23","27.24","27.26","27.28","27.37","27.38","27.42","27.44","27.45","27.46","27.48","27.49"],"mp4":["1.1","3.8","3.9","3.10","3.17","3.22","3.28","3.34","5.4","5.5","5.6","5.7","5.24","5.27","5.29","5.38","5.40","5.42","5.43","10.11","10.12","10.13","10.15","12.1","12.3","12.4","12.11","12.14","12.19","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.40","13.5","13.6","13.7","13.8","13.9","13.10","13.17","13.22","13.28","13.29","13.34","15.4","15.5","15.6","15.7","15.15","15.17","15.24","15.26","15.27","15.29","15.38","15.39","15.40","15.42","15.43","19.1","20.10","21.9","21.10","21.11","22.1","23.5","23.25","23.36","23.37","23.38","23.42","24.10","25.7","25.8","27.5","27.8","27.9","27.13","27.14","27.15","27.16","27.17","27.21","27.26","27.37","27.38","27.42","27.45","27.46","27.51"],"artplayer":["1.2","1.3","1.4","1.5","1.7","1.8","1.9","1.10","1.11","1.12","3.2","11.2","11.3","11.4","11.5","11.7","11.8","11.9","11.10","11.11","11.12","13.2","23.11","23.21","23.22","23.41","23.48"],"d":["1.6"],"info":["1.11","2.12","5.15","5.26","5.29","5.30","5.41","5.42","9.5","11.2","11.3","11.4","11.5","11.7","11.8","11.9","11.10","11.11","11.12","15.9","15.14","15.15","15.23","15.26","15.29","15.30","15.31","15.32","15.35","15.36","19.5","27.32"],"const":["2.0","5.18","5.19","9.5","12.0","15.18","15.19","19.5","20.10","25.13"],"onready":["2.0","12.0"],"console":["2.1","2.3","2.4","2.5","2.7","2.8","2.9","2.10","2.11","2.12","2.13","2.14","2.15","2.16","2.17","2.18","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.27","2.29","2.30","2.31","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.40","2.41","5.25","5.26","5.29","5.39","5.41","5.42","5.43","9.5","11.2","11.3","11.4","11.5","11.7","11.8","11.9","11.10","11.11","11.12","12.5","12.7","12.8","12.9","12.10","12.12","12.13","12.15","12.27","12.31","12.41","15.9","15.14","15.15","15.23","15.26","15.29","15.30","15.31","15.35","15.36","15.42","15.43","19.5","20.5","24.5","25.17","27.32"],"event":["2.5","2.7","2.8","2.9","2.10","2.12","2.13","2.22","2.41","5.41","9.2","9.5","12.5","12.7","12.8","12.9","12.10","12.12","12.13","12.22","18.1","21.13"],"reconnecttime":["2.11","12.11"],"state":["2.12","2.15","2.16","2.21","2.23","2.24","2.25","2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","9.2","9.6","9.7","12.12","12.15","12.21","12.23","12.24","12.25","12.32","12.33","12.34","12.35","12.36","12.37","12.38","19.2","19.7"],"height":["2.18","9.7","19.6","19.7"],"datauri":["2.26","12.26"],"currenttime":["2.27","12.27"],"offset":["2.28"],"cues":["2.29","2.30","2.31","12.29","12.30","12.31"],"option":["2.31","12.31"],"load":["2.46","12.46"],"方法重新加载它":["2.46"],"基本上用不到":["3.0"],"app":["3.1","3.4","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.24","3.25","3.26","3.27","3.31","3.32","3.34","10.11","10.12","11.1","13.1","13.3","13.4","13.11","13.12","13.13","13.14","13.15","13.16","13.18","13.19","13.20","13.21","13.22","13.23","13.24","13.25","13.26","13.27","13.31","13.32","13.33","13.34","15.4","15.5","15.42","20.10","21.11","23.3","23.6","23.8","23.11","23.12","23.14","23.15","23.16","23.18","23.20","23.21","23.22","23.23","23.24","23.26","23.28","23.35","23.38","23.41","23.44","23.45","23.46","23.48","23.49","23.51","24.10","24.13","27.3","27.11","27.22","27.35"],"url":["3.1","3.3","3.4","3.11","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.23","3.24","3.25","3.26","3.27","3.31","3.32","3.33","3.34","10.12","11.1","13.1","13.3","13.4","13.11","13.12","13.13","13.14","13.15","13.16","13.18","13.19","13.20","13.21","13.22","13.23","13.24","13.25","13.26","13.27","13.31","13.32","13.33","13.34","15.4","15.5","15.29","15.42","20.10","21.11","23.5","23.6","23.8","23.9","23.11","23.12","23.13","23.14","23.15","23.16","23.18","23.20","23.21","23.22","23.23","23.24","23.26","23.28","23.35","23.38","23.44","23.45","23.46","23.48","23.49","23.51","24.10","25.1","27.6","27.11","27.12","27.18","27.20","27.22","27.23","27.24","27.27","27.28","27.35","27.44","27.48","27.49"],"assets":["3.1","3.3","3.4","3.11","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.22","3.23","3.24","3.25","3.26","3.27","3.31","3.32","3.33","3.34","10.11","10.12","11.1","13.3","13.4","13.8","13.9","13.10","13.11","13.12","13.13","13.17","13.18","13.21","13.22","13.23","13.24","13.31","13.32","13.33","13.34","15.4","15.5","15.29","15.42","15.43","20.10","21.10","21.11","23.5","23.6","23.8","23.9","23.12","23.13","23.14","23.15","23.16","23.18","23.20","23.21","23.22","23.23","23.24","23.26","23.28","23.35","23.37","23.38","23.41","23.44","23.45","23.46","23.48","23.49","23.51","24.10","27.3","27.6","27.8","27.9","27.11","27.12","27.13","27.14","27.15","27.16","27.18","27.20","27.21","27.22","27.23","27.24","27.26","27.27","27.28","27.35","27.38","27.41","27.44","27.45","27.46","27.48","27.49","27.51"],"loop":["3.5","3.6","3.7","13.5","13.6","13.7"],"flip":["3.5","3.6","3.7","13.5","13.6","13.7"],"dblclick":["3.17"],"setting":["3.28","3.29","12.28","13.28","13.29","19.1","25.13"],"playbackrate":["3.28","13.28"],"contextmenu":["3.28","3.29","3.30","13.29","13.30"],"aspectratio":["3.29","10.16","13.29"],"show":["3.29","3.30","9.8","13.30","19.8","23.29","23.31","25.11","25.18","27.29","27.31"],"click":["4.0","5.37","5.41","14.0","15.37"],"marginright":["4.0","14.0"],"比较常用":["5.0"],"muted":["5.1","15.1","15.25"],"seek":["5.8","15.8","15.11","15.13"],"switch":["5.12"],"和":["5.12","7.1"],"的功能是一样的":["5.12"],"只是":["5.12"],"有的视频是没有时长的":["5.16"],"async":["5.18","5.19","15.18","15.19","21.9"],"await":["5.18","5.19","15.18","15.19"],"t":["5.23"],"json":["5.28"],"stringify":["5.28"],"resize":["5.33","25.15"],"当你的容器只有宽度":["5.33"],"playsinline":["5.34","15.34"],"m3u8":["5.35","23.2","27.41"],"000":["5.36"],"right":["5.37","7.1","15.37"],"html":["5.37","10.8","10.9","10.10","15.37"],"timeupdate":["5.39"],"green":["5.44","15.44"],"1080p":["5.45","15.45"],"png":["5.46","15.46","23.36","23.39","27.36","27.39"],"组件点击事件":["6.1","8.1"],"mounted":["6.1","8.1","16.1","18.1","23.29","25.13","27.29"],"组件挂载后触发":["6.1","8.1"],"get":["6.2","6.3","7.2","7.3","8.2","8.3","16.2","16.3","17.2","17.3","18.2","18.3"],"the":["6.2","6.3","6.4","6.5","7.2","7.3","7.4","8.2","8.3","8.4","9.8","16.2","16.3","16.4","16.5","17.2","17.3","17.4","18.2","18.3","18.4","19.8","23.19"],"element":["6.2","6.3","7.2","7.3","8.2","8.3","16.2","16.3","17.2","17.3","18.2","18.3"],"of":["6.2","6.3","7.2","7.3","8.2","8.3","10.5","12.53","16.2","16.3","17.2","17.3","18.2","18.3"],"by":["6.2","6.3","6.4","6.5","7.2","7.4","8.4","16.2","16.3","16.4","16.5","17.2","17.4","18.4","22.0"],"delete":["6.4","7.4","8.4","9.8","16.4","17.4","18.4","19.8"],"控制控制器出现的左右位置":["7.1"],"selector":["7.1","17.1"],"array":["7.1","17.1","21.12"],"return":["7.2","17.2","25.9"],"control":["7.2","7.3","7.4","17.2","17.3","17.4"],"200px":["8.5","18.5"],"svg":["9.2","9.6","9.7","19.2","19.6","19.7"],"item":["9.2","9.6","19.2"],"720p":["9.3","19.3"],"360p":["9.3","19.3"],"nextstate":["9.5","19.5"],"src":["9.6","9.7","19.2","19.6","19.7"],"pip":["9.9","19.9"],"mode":["9.9","19.9"],"close":["9.9","19.9"],"are":["10.0","11.0","15.0","23.2"],"less":["10.0"],"commonly":["10.0","15.0"],"modify":["10.1","10.4","20.11","20.13"],"this":["10.1","10.2"],"object":["10.1","21.13"],"named":["10.2"],"with":["10.2","20.12","21.5","24.12"],"a":["10.2","12.48","15.12","15.20","15.22"],"prefix":["10.2"],"is":["10.2","15.12","20.5","23.47"],"definition":["10.2","10.5"],"note":["10.3","10.14","15.28","20.13","23.4"],"if":["10.3","10.6","10.7","21.12","23.4","23.17"],"you":["10.3","10.6","10.7","23.47"],"need":["10.3","20.11","20.13","23.47"],"that":["10.3","15.16","21.7","21.8"],"should":["10.3"],"only":["10.3","10.14","15.5","15.41","23.19"],"exist":["10.3","15.41"],"during":["10.3","21.12"],"can":["10.4","21.12"],"after":["10.6","10.14","16.1","18.1","23.19"],"instantiation":["10.6"],"want":["10.6","10.7"],"before":["10.6","20.13","21.12"],"hide":["10.7","25.18"],"some":["10.8","10.9","10.10"],"text":["10.8","10.9","10.10","21.10","21.11","25.7","25.9"],"position":["10.9","15.37"],"these":["10.14"],"take":["10.14","23.19"],"effect":["10.14","23.19"],"subtitleoffset":["10.16"],"something":["10.17"],"dosomething":["10.17"],"which":["11.0","15.0"],"rarely":["11.0"],"following":["11.6","20.11"],"address":["11.6"],"off":["12.0"],"end":["12.42","12.47"],"without":["12.42"],"stopping":["12.42","12.43"],"for":["12.42","12.43","22.0","23.10","23.30","23.31","23.32","23.50"],"property":["12.45"],"changes":["12.45"],"method":["12.46","15.12"],"called":["12.46"],"its":["12.47","21.2"],"supported":["12.48","23.2"],"finished":["12.49"],"lack":["12.53"],"resource":["12.54"],"unexpectedly":["12.58"],"not":["12.58","20.5"],"suspended":["12.59"],"has":["12.60"],"changed":["12.60"],"data":["12.62"],"future":["13.0"],"and":["13.0","20.11"],"container":["13.1","13.4","13.12","13.13","13.14","13.15","13.16","13.18","13.19","13.20","13.21","13.23","13.24","13.25","13.26","13.27","13.31","13.32","13.33","13.34","20.10","21.1","23.3","23.18","23.21","23.22","23.26","23.35","23.38","23.41","23.44","23.48","24.3","27.35"],"log":["13.2","20.5","24.5"],"new":["13.14","13.15","13.16","13.25","13.34","20.8","20.9","23.11","23.22","23.27","23.41","24.8","27.27"],"var":["13.34","23.11","23.22"],"art":["13.34","23.11","23.22","23.27"],"controls":["14.0","25.20"],"tooltip":["14.0","16.1"],"returns":["15.12"],"promise":["15.12","21.6"],"it":["15.12","15.33","15.41","20.13"],"resolve":["15.12","21.6","25.9"],"s":["15.12","15.41","21.13"],"been":["15.16"],"fully":["15.16"],"decoded":["15.16"],"in":["15.16","20.4","21.12"],"mechanisms":["15.20"],"user":["15.20","15.22"],"interaction":["15.20","15.22"],"e":["15.20","15.22","23.7"],"g":["15.20","15.22","23.7"],"dimension":["15.28"],"exact":["15.33"],"unknown":["15.33"],"lifecycle":["15.41"],"triggered":["16.1","18.1"],"mount":["16.1","18.1"],"appears":["17.1"],"objects":["17.1"],"selection":["17.1"],"list":["17.1"],"img":["19.6"],"width":["19.6","25.20"],"have":["20.3"],"defined":["20.3"],"tip":["20.3","20.9","24.9","24.11"],"see":["20.3"],"more":["20.3","23.10","23.42"],"will":["20.4"],"reactive":["20.5"],"import":["20.6","20.12","24.12"],"current":["20.8","24.8"],"full":["20.9"],"typescript":["20.9","24.9"],"support":["20.11"],"even":["20.11"],"older":["20.11"],"configuration":["20.11","23.31","23.32"],"title":["20.12"],"map":["20.12","24.12","25.20"],"npm":["21.0"],"unversioned":["21.0"],"cdn":["21.0"],"links":["21.0"],"still":["21.0"],"own":["21.1"],"builds":["21.2"],"expose":["21.2"],"artplayerplugindanmuku":["21.2","21.10","25.7","25.8"],"pass":["21.2"],"result":["21.2"],"preserved":["21.4"],"negative":["21.4"],"times":["21.4"],"clamped":["21.4"],"zero":["21.4"],"other":["21.4","21.7","23.2"],"than":["21.4"],"theme":["21.5"],"dark":["21.5","25.16"],"light":["21.5"],"external":["21.5"],"font":["21.5","25.5"],"size":["21.5","25.5"],"override":["21.5"],"slider":["21.5"],"definitions":["21.5"],"min":["21.5","25.5"],"max":["21.5","25.5"],"steps":["21.5"],"each":["21.5"],"step":["21.5"],"time":["21.6","21.9","21.10","21.11"],"alternatives":["21.6"],"rejection":["21.7"],"emits":["21.7"],"error":["21.7"],"once":["21.7"],"items":["21.7"],"continue":["21.7"],"pause":["21.7"],"resume":["21.7"],"reset":["21.7"],"replacing":["21.7"],"internal":["21.8"],"owner":["21.8"],"same":["21.8","23.47"],"different":["21.8","23.47"],"facade":["21.8"],"keep":["21.8"],"plugins":["21.9","21.10","21.11","25.7","25.8","25.21"],"emitter":["21.9"],"function":["21.9","21.11","25.10","25.13","25.20","27.32"],"updatecomments":["21.9"],"fullscreenweb":["21.10"],"input":["21.10"],"example":["21.11"],"particular":["21.12"],"an":["21.12","23.4"],"initially":["21.12"],"empty":["21.12"],"finish":["21.12"],"construction":["21.12"],"invoking":["21.12"],"augment":["21.13"],"core":["21.13"],"declarations":["21.13"],"automatically":["21.13"],"also":["21.13"],"exposes":["21.13"],"existing":["21.13"],"icons":["21.13"],"customization":["21.13"],"displayed":["22.0"],"default":["22.0"],"i18n":["22.0","22.3"],"syntax":["22.0","23.50"],"lang":["22.1","26.1"],"window":["22.2","26.2"],"imported":["22.4","26.4"],"use":["23.1"],"aspect":["23.1"],"ratio":["23.1","27.1"],"ogg":["23.2","27.2"],"webm":["23.2","27.2"],"like":["23.2"],"or":["23.2"],"flv":["23.2"],"inside":["23.4"],"callback":["23.4"],"refers":["23.4"],"instance":["23.4"],"however":["23.4"],"arrow":["23.4"],"next":["23.7"],"initialization":["23.7"],"page":["23.7"],"refresh":["23.7"],"must":["23.10"],"be":["23.10"],"set":["23.10"],"screenshotting":["23.17"],"may":["23.17"],"fail":["23.17"],"source":["23.17"],"player":["23.19"],"gains":["23.19"],"focus":["23.19"],"js":["23.22"],"innerhtml":["23.27"],"component":["23.31","23.32"],"please":["23.32"],"refer":["23.32"],"sd":["23.33"],"480p":["23.33","27.33"],"谁でもいいはずなのに":["23.34","27.34"],"夏の想い出がまわる":["23.34","27.34"],"all":["23.39"],"icon":["23.39"],"but":["23.40"],"cannot":["23.40"],"zh":["23.43","27.43"],"cn":["23.43","27.43"],"then":["23.47"],"reference":["23.50"],"的尺寸":["24.3"],"所以你的容器":["24.3"],"必须是有尺寸的":["24.3"],"非响应式":["24.4"],"在":["24.4"],"400px":["24.5"],"margin":["24.5"],"60px":["24.5"],"auto":["24.5"],"全部":["24.9"],"定义":["24.9"],"volume":["24.10"],"假如你要兼容更古老的浏览器时":["24.11"],"请修改以下配置然后自行构建":["24.11"],"body":["24.12"],"默认仍加载已发布版本":["25.0"],"初始为白色":["25.4"],"border":["25.4"],"弹幕是否有描边":["25.4"],"默认为":["25.4"],"不透明度配置项":["25.5"],"弹幕字号配置项":["25.5"],"显示区域配置项":["25.5"],"弹幕速度配置项":["25.5"],"颜色列表配置项":["25.5"],"可覆盖滑块的":["25.5"],"包含来自服务端的和来自用户输入的":["25.6"],"length":["25.6"],"这是弹幕即将显示的时触发的函数":["25.6"],"当返回true后才表示可以马上发送到播放器里":["25.6"],"target":["25.11"],"innertext":["25.11"],"else":["25.11"],"color":["25.12"],"math":["25.12"],"floor":["25.12"],"random":["25.12"],"0xffffff":["25.12"],"tostring":["25.12"],"alignitems":["25.13"],"center":["25.13"],"queryselector":["25.13"],"追加":["25.14"],"追加新的弹幕库":["25.14"],"参数类型和option":["25.14"],"danmuku相同":["25.14"],"xml":["25.15","25.16","25.17"],"start":["25.18"],"弹幕开始":["25.18"],"弹幕隐藏":["25.18"],"其他项继续处理":["25.19"],"暂停后恢复":["25.19"],"或更换回调后":["25.19"],"仍符合时间条件的项可重试":["25.19"],"暂停":["25.19","27.19"],"drawpoints":["25.20"],"offsetwidth":["25.20"],"显式描述事件参数":["25.21"],"不会自动扩展核心历史事件声明":["25.21"],"工厂仍暴露":["25.21"],"写法参考":["26.0","27.50"],"默认支持三种视频文件格式":["27.2"],"播放器会缓存最后一次音量的大小":["27.7"],"假如希望默认进入页面就能自动播放视频":["27.10"],"必需为":["27.10"],"视频快进":["27.19"],"视频快退":["27.19"],"space":["27.19"],"切换播放":["27.19"],"subtitle":["27.25"],"args":["27.32"],"hd":["27.33"],"webkit":["27.38"],"全部图标的定义":["27.39"],"但无法解析这种后缀":["27.40"],"作为":["27.47"],"key":["27.47"],"来缓存播放进度的":["27.47"],"但假如你的同一个视频的":["27.47"]},{"0":["5.10","5.11","5.13","5.16","5.23","15.10","15.11","15.13","15.16","15.23","20.10","24.10"],"1":["5.47","9.7","15.47","19.7","25.7","25.9"],"2":["5.8","15.8","15.31","21.9"],"5":["5.6","5.7","9.7","15.6","15.7","15.9","15.15","19.7","20.10","24.10"],"9":["15.32","27.1"],"10":["5.46","9.7","15.46","19.7","23.36","27.36"],"50":["21.5"],"60":["5.46","15.46"],"240":["23.34"],"300":["23.34","27.34"],"360":["19.3"],"404":["3.14","3.15","13.14","13.15"],"1000":["0.13","0.15","10.8","10.9","10.10","10.13","10.15","10.16"],"3000":["0.12","5.2","5.3","5.8","5.11","5.13","5.21","5.45","6.4","6.5","7.4","7.5","8.4","8.5","9.8","9.9","10.12","15.2","15.3","15.8","15.11","15.13","15.21","15.45","16.4","16.5","17.4","17.5","18.4","18.5","19.8","19.9"],"对象":["0.1"],"播放器不会马上做出响应":["0.1"],"types":["0.2","2.0","10.2","10.5","20.9","22.0","23.39","23.50","24.9","27.39"],"d":["0.2","0.5","2.0","10.2","10.5","11.6","12.0","22.0","23.39","23.50","26.0","27.39","27.50"],"ts":["0.2","0.5","1.6","2.0","10.2","10.5","11.6","12.0","22.0","23.39","23.50","26.0","27.39","27.50"],"warning":["0.3","0.9","0.10","0.14","0.16","2.0","10.8","10.9","10.10","10.16","12.0","23.1","23.36","23.43","24.5","27.1","27.29","27.30","27.36","27.43"],"提示":["0.3","0.14","5.28","5.41","24.13","27.1","27.4","27.19"],"假如你需要一些":["0.3","5.41"],"事件只存在于播放器的生命周期上时":["0.3","5.41"],"强烈建议使用这些函数":["0.3"],"以避免造成内存泄漏":["0.3","5.41"],"your":["0.4","5.17","10.4","15.17"],"假如想在实例化之前更新":["0.6"],"请使用基础选项的":["0.6"],"来更新":["0.6"],"的显示":["0.7"],"组件配置":["0.8","0.9","0.10","27.29","27.31","27.32"],"请参考以下地址":["0.8","0.9","0.10","0.16","27.29","27.30","27.31","27.32"],"component":["0.8","0.9","0.10","0.16","10.8","10.9","10.10","10.16","23.29","23.30","27.29","27.30","27.31","27.32"],"color":["0.11","10.11","23.37","27.37"],"red":["0.11","10.11"],"false":["0.12","0.13","5.21","9.9","10.8","10.9","10.10","10.12","10.13","10.15","10.16","15.21","19.9","23.22","23.45","27.22","27.45"],"只在播放器获得焦点后":["0.14","27.19"],"如点击了播放器后":["0.14","27.19"],"这些快捷键才会生效":["0.14","27.19"],"true":["0.15","3.11","3.12","3.13","3.21","3.22","3.23","3.24","5.24","10.12","10.13","10.15","13.11","13.12","13.13","13.21","13.22","13.23","13.24","15.14","15.24","23.8","23.9","23.11","23.12","23.13","23.14","23.15","23.16","23.18","23.20","23.23","23.24","23.26","23.27","23.38","23.44","23.46","23.48","23.49","25.12","27.8","27.9","27.11","27.12","27.13","27.14","27.15","27.16","27.18","27.20","27.23","27.24","27.26","27.27","27.38","27.44","27.46","27.48","27.49"],"设置面板":["0.16"],"html":["0.16","10.16","20.1","23.42","23.43","24.1","25.2","27.42","27.43"],"ready":["0.17","2.0","5.1","5.4","5.47","10.17","15.1","15.4","15.6","15.7","15.24","15.27","15.47","21.11","25.20"],"off":["2.0"],"全部事件请参考以下地址":["2.0"],"events":["2.0"],"info":["2.1","2.2","2.3","2.4","2.5","2.6","2.7","2.8","2.9","2.10","2.11","2.13","2.14","2.15","2.16","2.17","2.18","2.19","2.20","2.21","2.22","2.23","2.24","2.25","2.26","2.27","2.28","2.29","2.30","2.31","5.18","5.19","5.25","5.38","5.39","5.40","5.43","9.2","9.6","12.1","12.2","12.3","12.4","12.5","12.6","12.7","12.8","12.9","12.10","12.11","12.12","12.13","12.14","12.15","12.16","12.17","12.18","12.19","12.20","12.21","12.22","12.23","12.24","12.25","12.26","12.27","12.28","12.29","12.30","12.31","15.18","15.19","15.25","15.38","15.39","15.40","15.42","15.43","19.2","19.6","21.9","25.17"],"console":["2.2","2.6","2.19","2.28","2.39","3.8","3.9","3.10","3.17","5.18","5.19","5.38","5.40","9.2","9.6","12.1","12.2","12.3","12.4","12.6","12.11","12.14","12.16","12.17","12.18","12.19","12.20","12.21","12.22","12.23","12.24","12.25","12.26","12.28","12.29","12.30","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","13.8","13.9","13.10","13.17","15.18","15.19","15.25","15.38","15.39","15.40","19.2","19.6","21.9","25.12"],"log":["2.32","2.33","2.34","2.35","2.36","2.37","2.38","2.39","2.40","2.41","3.8","3.9","3.10","3.17","12.32","12.33","12.34","12.35","12.36","12.37","12.38","12.39","12.40","12.41","13.8","13.9","13.10","13.17"],"video":["3.1","3.3","3.4","3.16","3.18","3.19","3.20","3.25","3.26","3.27","3.32","13.3","13.4","13.11","13.12","13.13","13.16","13.18","13.19","13.20","13.21","13.23","13.24","13.25","13.26","13.27","13.31","13.32","13.33","23.3","23.6","23.8","23.11","23.12","23.18","23.20","23.21","23.22","23.23","23.24","23.26","23.27","23.35","23.44","23.49","27.3","27.11","27.27","27.35"],"mp4":["3.1","3.3","3.4","3.11","3.12","3.13","3.14","3.15","3.16","3.18","3.19","3.20","3.21","3.23","3.24","3.25","3.26","3.27","3.31","3.32","3.33","11.1","13.1","13.3","13.4","13.11","13.12","13.13","13.14","13.15","13.16","13.18","13.19","13.20","13.21","13.23","13.24","13.25","13.26","13.27","13.31","13.32","13.33","23.3","23.6","23.8","23.9","23.11","23.12","23.13","23.14","23.15","23.16","23.18","23.20","23.21","23.22","23.23","23.24","23.26","23.27","23.28","23.35","23.44","23.45","23.46","23.48","23.49","23.51","27.3","27.6","27.11","27.12","27.18","27.20","27.22","27.23","27.24","27.27","27.28","27.35","27.44","27.48","27.49"],"playbackrate":["3.5","3.6","3.7","13.5","13.6","13.7"],"aspectratio":["3.5","3.6","3.7","13.5","13.6","13.7"],"autoplayback":["3.11","3.12","3.13","13.11","13.12","13.13"],"sample":["3.14","3.15","3.16","3.19","3.20","3.25","3.26","13.1","13.3","13.4","13.14","13.15","13.16","13.18","13.19","13.20","13.25","13.26","13.27","13.31","13.32","23.3","23.11","23.21","23.22","23.27","23.48","27.3","27.27"],"autoorientation":["3.21","13.21"],"show":["3.22","3.28","13.22","13.28","13.29","21.9","25.5"],"fastforward":["3.23","3.24","13.23","13.24"],"fullscreenweb":["3.31","13.31"],"miniprogressbar":["3.33","13.33"],"只销毁界面":["3.34"],"不主动清空":["3.34"],"pause":["4.0","14.0"],"layer":["4.0","14.0"],"png":["4.0","14.0"],"仅重置":["5.5"],"不移除界面":["5.5"],"t":["5.10","5.11","5.13","15.10","15.11","15.13","15.23"],"方法会返回":["5.12"],"promise":["5.12"],"当":["5.12"],"resolve":["5.12"],"时表示新地址是可以播放":["5.12"],"reject":["5.12","15.12"],"时表示新地址加载错误":["5.12"],"例如直播中的视频或者没被解码完成的视频":["5.16"],"这个时候获取的时长会是":["5.16"],"name":["5.17","15.17","21.5","25.5"],"由于浏览器安全机制":["5.20","5.22","27.17"],"触发窗口全屏前":["5.20"],"页面必须先存在交互":["5.20","5.22"],"例如用户点击过页面":["5.20","5.22"],"触发画中画前":["5.22"],"默认":["5.26"],"尺寸和坐标信息是通过":["5.28"],"getboundingclientrect":["5.28","15.28"],"获取的":["5.28"],"但不知道具体高度时":["5.33"],"这个属性很有用":["5.33"],"它能自动计算出视频的高度":["5.33"],"但你需要确定设置这个属性的时机":["5.33"],"强烈建议使用该函数":["5.41"],"4k":["5.45","15.45"],"number":["5.46","15.46","25.13"],"column":["5.46","15.46"],"tooltip":["6.1","8.1","18.1"],"组件的提示文本":["6.1","8.1"],"remove":["6.4","7.4","8.4","9.8","16.4","17.4","18.4","21.10","25.16"],"选择列表的对象数组":["7.1"],"onselect":["7.1","17.1"],"选择列表的元素被点击时触发的函数":["7.1"],"by":["7.3","8.2","8.3","9.8","17.3","18.2","18.3","19.8","21.7"],"left":["8.5","18.5","23.2"],"return":["9.2","9.5","9.6","19.2","19.5","19.6"],"switchquality":["9.3","19.3"],"open":["9.5","19.5"],"event":["9.6"],"x":["9.6","19.6"],"range":["9.7","19.7"],"switch":["9.9","19.9"],"used":["10.0","11.0","13.0","15.0","23.4"],"will":["10.1","15.16","20.5","23.4","23.7"],"not":["10.1","13.34","15.5","23.4"],"respond":["10.1"],"immediately":["10.1","10.7"],"s":["10.3","21.2","23.40"],"lifecycle":["10.3"],"strongly":["10.3","15.41"],"recommended":["10.3","15.41"],"use":["10.3","10.6","15.41","21.12","23.40"],"these":["10.3"],"functions":["10.3"],"avoid":["10.3","15.41"],"memory":["10.3","15.41"],"leaks":["10.3","15.41"],"please":["10.6","10.8","10.9","10.10","10.16","12.0","23.2","23.10","23.29","23.30","23.31"],"option":["10.6"],"in":["10.6","20.5"],"basic":["10.6"],"settings":["10.6","23.42","23.43"],"for":["10.8","10.9","10.10","10.16","12.0","15.33","20.13","23.4","23.29"],"configuration":["10.8","10.9","10.10","23.29"],"refer":["10.8","10.9","10.10","10.16","12.0","23.2","23.29","23.30","23.31"],"srt":["10.11","23.25","27.25"],"settimeout":["10.12","10.13","10.15","15.3","15.21"],"gains":["10.14"],"focus":["10.14"],"e":["10.14","23.19"],"g":["10.14","23.19"],"clicking":["10.14","23.19"],"on":["10.17","15.4","21.11","23.2","23.19","25.6","25.20"],"a":["12.0","17.1"],"complete":["12.0"],"list":["12.0"],"state":["12.39"],"further":["12.42"],"buffering":["12.42","12.43"],"to":["12.46","15.33","23.29","23.30","23.31","23.32"],"reload":["12.46"],"it":["12.46","20.11"],"format":["12.48"],"data":["12.53"],"forthcoming":["12.58"],"rarely":["13.0"],"assets":["13.1","13.14","13.15","13.16","13.19","13.20","13.25","13.26","13.27","23.3","23.11","23.27"],"dblclick":["13.17"],"contextmenu":["13.28"],"do":["13.34","15.5"],"clear":["13.34"],"play":["14.0"],"interface":["15.5"],"playable":["15.12"],"fails":["15.12"],"load":["15.12","21.0"],"cases":["15.16"],"obtained":["15.16","15.28"],"be":["15.16"],"page":["15.20","15.22"],"must":["15.20","15.22"],"occur":["15.20","15.22"],"before":["15.20","15.22"],"triggering":["15.20","15.22"],"default":["15.26"],"is":["15.26","15.28","21.7","23.17"],"via":["15.28"],"you":["15.33","21.12","23.40"],"need":["15.33","21.12"],"determine":["15.33"],"timing":["15.33"],"setting":["15.33","23.14","23.15","23.16","23.25","27.14","27.15","27.16","27.25"],"m3u8":["15.35","23.41","27.2"],"000":["15.36"],"timeupdate":["15.39"],"this":["15.41","23.7"],"text":["16.1","18.1","21.12"],"when":["17.1","21.12"],"item":["17.1"],"clicked":["17.1"],"script":["20.1","24.1","25.2"],"examples":["20.3"],"at":["20.3"],"following":["20.3","23.32"],"link":["20.3"],"example":["20.3","24.3"],"update":["20.4","20.5"],"player":["20.4","20.12","21.2","24.12"],"directly":["20.5"],"modifying":["20.5"],"the":["20.5","23.32"],"definitions":["20.9","23.39"],"packages":["20.9","24.9"],"volume":["20.10"],"art8":["20.10","24.10"],"new":["20.10","24.10"],"yourself":["20.11"],"scripts":["20.11","24.11"],"reference":["20.11","22.0"],"documentation":["20.11"],"browserslist":["20.11","24.11"],"body":["20.12"],"div":["20.12","24.12"],"id":["20.12","24.12"],"importing":["20.13"],"dependency":["20.13"],"take":["20.13"],"effect":["20.13"],"release":["21.0"],"urls":["21.1"],"plugins":["21.2"],"array":["21.2"],"modes":["21.4"],"contain":["21.5"],"value":["21.5","23.7","25.5"],"hide":["21.5","21.9","25.5","25.11"],"values":["21.5"],"are":["21.5"],"pairs":["21.5"],"such":["21.5"],"as":["21.5"],"replaces":["21.5"],"palette":["21.5"],"css":["21.5","25.5"],"strings":["21.5"],"empty":["21.5"],"uses":["21.5"],"built":["21.5"],"async":["21.6"],"retry":["21.7"],"if":["21.7","23.40"],"eligible":["21.7"],"pausing":["21.7"],"seeking":["21.7"],"hiding":["21.7"],"resetting":["21.7"],"destroying":["21.7"],"cancels":["21.7"],"unfinished":["21.7"],"visibility":["21.7"],"preparation":["21.7"],"using":["21.8"],"subsequent":["21.8"],"commands":["21.8","21.13"],"awaiting":["21.8"],"means":["21.8"],"processing":["21.8"],"has":["21.8"],"finished":["21.8"],"appeared":["21.8"],"appended":["21.9"],"scheduled":["21.9"],"from":["21.9"],"hidden":["21.9"],"ishide":["21.9"],"reset":["21.9","25.18"],"dark":["21.10"],"move":["21.10"],"later":["21.10"],"with":["21.10","23.17"],"otherelement":["21.10"],"drawpoints":["21.11"],"width":["21.11"],"controls":["21.11"],"offsetwidth":["21.11"],"map":["21.11"],"ratio":["21.11","25.20"],"loaded":["21.11","25.20"],"observe":["21.12"],"completion":["21.12"],"textcontent":["21.12","25.6"],"adding":["21.12"],"handler":["21.12"],"package":["21.13"],"readme":["21.13","25.21"],"md":["21.13","25.21"],"architecture":["21.13","25.21"],"describe":["21.13"],"module":["21.13"],"ownership":["21.13"],"maintenance":["21.13"],"remaining":["21.13"],"device":["21.13"],"combination":["21.13"],"validation":["21.13"],"see":["22.0"],"or":["22.1","26.1"],"note":["23.1"],"among":["23.1"],"all":["23.1"],"options":["23.1"],"only":["23.1"],"required":["23.1"],"third":["23.2"],"party":["23.2"],"libraries":["23.2"],"section":["23.2"],"point":["23.4"],"jpg":["23.5","27.5"],"ffad00":["23.6","27.6"],"read":["23.7","23.10"],"cached":["23.7"],"information":["23.10"],"policy":["23.10","27.10"],"changes":["23.10","27.10"],"cross":["23.17"],"origin":["23.17"],"website":["23.17"],"disable":["23.22"],"url":["23.27"],"panel":["23.30"],"address":["23.32"],"hd":["23.33"],"720p":["23.33","27.33"],"こんなとこにあるはずもないのに":["23.34","27.34"],"终わり":["23.34","27.34"],"generate":["23.36"],"online":["23.36"],"tool":["23.36","27.36"],"03a9f4":["23.37","27.37"],"font":["23.37","27.37"],"size":["23.37","27.37"],"30px":["23.37","27.37"],"webkit":["23.38"],"playsinline":["23.38","27.38"],"therefore":["23.40"],"best":["23.40"],"also":["23.40"],"start":["23.42","23.43","27.42","27.43"],"i18n":["23.42","27.42"],"tw":["23.43","27.43"],"more":["23.43"],"identify":["23.47"],"unique":["23.47"],"document":["23.51","27.51"],"createelement":["23.51","27.51"],"tip":["24.3"],"以下链接可以看到更多的使用例子":["24.3"],"里直接修改":["24.4","24.5"],"是不会改变播放器的":["24.4","24.5"],"非响应式":["24.5"],"在":["24.5"],"构建配置":["24.11"],"build":["24.11"],"参考文档":["24.11"],"你需要在引入":["24.13"],"依赖前来修改它才会生效":["24.13"],"style":["25.4"],"弹幕自定义样式":["25.4"],"默认为空对象":["25.4"],"steps":["25.5"],"每个":["25.5"],"step":["25.5"],"可包含":["25.5"],"的":["25.5"],"是上下边距数组":["25.5"],"用":["25.5"],"颜色字符串数组替换调色板":["25.5"],"空数组使用内置调色板":["25.5"],"弹幕已经出现在播放器里":["25.6"],"你可以访问到弹幕的dom元素里":["25.6"],"ref":["25.6"],"ଘ":["25.6"],"੭ˊᵕˋ":["25.6"],"੭":["25.6"],"使用数组":["25.7"],"time":["25.7","25.9"],"使用":["25.9"],"异步返回":["25.9"],"显示弹幕":["25.10","25.11"],"border":["25.12"],"error":["25.12"],"addeventlistener":["25.13"],"change":["25.13"],"fontsize":["25.13"],"const":["25.14"],"target":["25.14"],"destroy":["25.16","25.18"],"也可以手动挂载":["25.16"],"弹幕显示":["25.18"],"弹幕重置":["25.18"],"弹幕销毁":["25.18"],"seek":["25.19"],"隐藏":["25.19"],"和销毁会取消尚未完成的显示准备":["25.19"],"icons":["25.21"],"对象供自定义图标":["25.21"],"包内":["25.21"],"和":["25.21"],"维护模块职责":["25.21"],"验证命令及尚未完成的设备和组合验收":["25.21"],"全部选项里":["27.1"],"只有":["27.1"],"是必填的":["27.1"],"如需要播放":["27.2"],"或者":["27.2"],"flv":["27.2"],"等其它格式":["27.2"],"请参考左侧的":["27.2"],"第三方库":["27.2"],"回调函数里的":["27.4"],"就是播放器实例":["27.4"],"但回调函数假如使用了箭头函数":["27.4"],"则不会指向播放器实例":["27.4"],"下次初始化时":["27.7"],"如刷新页面":["27.7"],"播放器会读取该缓存值":["27.7"],"更多信息请阅读":["27.10"],"假如视频源地址和网站是跨域的":["27.17"],"可能会出现截图失败":["27.17"],"关闭毛玻璃效果":["27.22"],"在线生成预览图":["27.36"],"thumbnail":["27.36"],"所以假如你使用了":["27.40"],"最好同时要指明":["27.40"],"function":["27.41"],"更多的语言设置":["27.42","27.43"],"是不同的话":["27.47"],"那么你需要使用":["27.47"],"来标识视频的唯一":["27.47"]}]'},t={"0.0":{t:"# 高级属性\r",p:`这里的 高级属性 是指挂载在 实例 的 二级属性,比较少用 +`,l:"advanced/built-in.html",a:"高级属性"},"0.1":{t:"`option`\r",p:`播放器的选项 +<div className="run-code">▶ Run Code< ...`,l:"advanced/built-in.html#option",a:"option"},"0.2":{t:"`template`\r",p:`管理播放器所有的 DOM 元素 +<div className="run-code">▶ Ru ...`,l:"advanced/built-in.html#template",a:"template"},"0.3":{t:"`events`\r",p:"管理播放器所有的 DOM 事件,实质上是代理了 addEventListener 和 removeEventListener ...",l:"advanced/built-in.html#events",a:"events"},"0.4":{t:"`storage`\r",p:`管理播放器的本地存储 + +name 属性用于设置缓存的 key +set 方法用于设置缓存 +get 方法用于获取缓存 +del 方 ...`,l:"advanced/built-in.html#storage",a:"storage"},"0.5":{t:"`icons`\r",p:`管理播放器所有的 svg 图标 +<div className="run-code">▶ Ru ...`,l:"advanced/built-in.html#icons",a:"icons"},"0.6":{t:"`i18n`\r",p:`管理播放器的 i18n + +get 方法用于获取 i18n 的值 +update 方法用于更新 i18n 对象 + +<div ...`,l:"advanced/built-in.html#i18n",a:"i18n"},"0.7":{t:"`notice`\r",p:`管理播放器的提示语,只有一个 show 属性用于显示提示语 +<div className="run-code ...`,l:"advanced/built-in.html#notice",a:"notice"},"0.8":{t:"`layers`\r",p:`管理播放器的层 + +add 方法用于动态添加层 +remove 方法用于动态删除层 +update 方法用于动态更新层 +show ...`,l:"advanced/built-in.html#layers",a:"layers"},"0.9":{t:"`controls`\r",p:`管理播放器的控制器 + +add 方法用于动态添加控制器 +remove 方法用于动态删除控制器 +update 方法用于动态更新控 ...`,l:"advanced/built-in.html#controls",a:"controls"},"0.10":{t:"`contextmenu`\r",p:`管理播放器的右键菜单 + +add 方法用于动态添加菜单 +remove 方法用于动态删除菜单 +update 方法用于动态更新菜单 ...`,l:"advanced/built-in.html#contextmenu",a:"contextmenu"},"0.11":{t:"`subtitle`\r",p:`管理播放器的字幕功能 + +url 属性设置和返回当前字幕地址 +style 方法设置当前字幕的样式 +switch 方法设置当前字 ...`,l:"advanced/built-in.html#subtitle",a:"subtitle"},"0.12":{t:"`info`\r",p:`管理播放器的信息面板,常用于查看当前播放器和视频的运行状态,例如版本号、分辨率、时长等。 + +通过 art.info.show ...`,l:"advanced/built-in.html#info",a:"info"},"0.13":{t:"`loading`\r",p:`管理播放器的加载层 + +show 属性用于设置是否显示加载层 +toggle 属性用于切换是否显示加载层 + +<div cl ...`,l:"advanced/built-in.html#loading",a:"loading"},"0.14":{t:"`hotkey`\r",p:`管理播放器的快捷键功能 + +add 方法用于添加快捷键 +remove 方法用于删除快捷键 + +<div className ...`,l:"advanced/built-in.html#hotkey",a:"hotkey"},"0.15":{t:"`mask`\r",p:`管理播放器的遮罩层 + +show 属性用于设置是否显示遮罩层 +toggle 属性用于切换是否显示遮罩层 + +<div cl ...`,l:"advanced/built-in.html#mask",a:"mask"},"0.16":{t:"`setting`\r",p:`管理播放器的设置面板 + +add 方法用于动态添加设置项 +remove 方法用于动态删除设置项 +update 方法用于动态更新 ...`,l:"advanced/built-in.html#setting",a:"setting"},"0.17":{t:"`plugins`\r",p:`管理播放器的插件功能,只有一个方法 add 用于动态添加插件 +<div className="run-cod ...`,l:"advanced/built-in.html#plugins",a:"plugins"},"1.0":{t:"# 静态属性\r",p:`这里的 静态属性 是指挂载在 构造函数 的 一级属性,非常少使用 +`,l:"advanced/class.html",a:"静态属性"},"1.1":{t:"`instances`\r",p:`返回全部播放器实例的数组,假如你想同时管理多个播放器的时候,可以用到该属性 +<div className=" ...`,l:"advanced/class.html#instances",a:"instances"},"1.2":{t:"`version`\r",p:`返回播放器的版本信息 +<div className="run-code">▶ Run Cod ...`,l:"advanced/class.html#version",a:"version"},"1.3":{t:"`env`\r",p:`返回播放器的环境变量 +<div className="run-code">▶ Run Cod ...`,l:"advanced/class.html#env",a:"env"},"1.4":{t:"`build`\r",p:`返回播放器的打包时间 +<div className="run-code">▶ Run Cod ...`,l:"advanced/class.html#build",a:"build"},"1.5":{t:"`config`\r",p:`返回视频的默认配置 +<div className="run-code">▶ Run Code ...`,l:"advanced/class.html#config",a:"config"},"1.6":{t:"`utils`\r",p:`返回播放器的工具函数集合 +<div className="run-code">▶ Run C ...`,l:"advanced/class.html#utils",a:"utils"},"1.7":{t:"`scheme`\r",p:`返回播放器选项的校验方案 +<div className="run-code">▶ Run C ...`,l:"advanced/class.html#scheme",a:"scheme"},"1.8":{t:"`Emitter`\r",p:`返回事件分发器的构造函数 +<div className="run-code">▶ Run C ...`,l:"advanced/class.html#emitter",a:"emitter"},"1.9":{t:"`validator`\r",p:`返回选项的校验函数 +<div className="run-code">▶ Run Code ...`,l:"advanced/class.html#validator",a:"validator"},"1.10":{t:"`kindOf`\r",p:`返回类型检测的函数工具 +<div className="run-code">▶ Run Co ...`,l:"advanced/class.html#kindof",a:"kindof"},"1.11":{t:"`html`\r",p:`返回播放器所需的 html 字符串 +<div className="run-code">▶ ...`,l:"advanced/class.html#html",a:"html"},"1.12":{t:"`option`\r",p:`返回播放器的默认选项 +<div className="run-code">▶ Run Cod ...`,l:"advanced/class.html#option",a:"option"},"2.0":{t:"# 实例事件\r",p:`播放器的事件分为两种,一种视频的 原生事件 (前缀 video:),另外一种是 自定义事件 +监听事件: +<div cl ...`,l:"advanced/event.html",a:"实例事件"},"2.1":{t:"`ready`\r",p:`当播放器首次可以播放器时触发 +<div className="run-code">▶ Run ...`,l:"advanced/event.html#ready",a:"ready"},"2.2":{t:"`restart`\r",p:`当播放器切换地址后并可以播放时触发 +<div className="run-code">▶ ...`,l:"advanced/event.html#restart",a:"restart"},"2.3":{t:"`pause`\r",p:`当播放器暂停时触发 +<div className="run-code">▶ Run Code ...`,l:"advanced/event.html#pause",a:"pause"},"2.4":{t:"`play`\r",p:`当播放器播放时触发 +<div className="run-code">▶ Run Code ...`,l:"advanced/event.html#play",a:"play"},"2.5":{t:"`hotkey`\r",p:`当播放器热键被按下时触发 +<div className="run-code">▶ Run C ...`,l:"advanced/event.html#hotkey",a:"hotkey"},"2.6":{t:"`destroy`\r",p:`当播放器销毁时触发 +<div className="run-code">▶ Run Code ...`,l:"advanced/event.html#destroy",a:"destroy"},"2.7":{t:"`focus`\r",p:`当播放器获得焦点时触发 +<div className="run-code">▶ Run Co ...`,l:"advanced/event.html#focus",a:"focus"},"2.8":{t:"`blur`\r",p:`当播放器失去焦点时触发 +<div className="run-code">▶ Run Co ...`,l:"advanced/event.html#blur",a:"blur"},"2.9":{t:"`dblclick`\r",p:`当播放器被双击时触发 +<div className="run-code">▶ Run Cod ...`,l:"advanced/event.html#dblclick",a:"dblclick"},"2.10":{t:"`click`\r",p:`当播放器被单击时触发 +<div className="run-code">▶ Run Cod ...`,l:"advanced/event.html#click",a:"click"},"2.11":{t:"`error`\r",p:`当播放器加载视频发生错误时触发 +<div className="run-code">▶ Ru ...`,l:"advanced/event.html#error",a:"error"},"2.12":{t:"`hover`\r",p:`当播放器被鼠标移出或者移入时触发 +<div className="run-code">▶ R ...`,l:"advanced/event.html#hover",a:"hover"},"2.13":{t:"`mousemove`\r",p:`当播放器被鼠标经过时触发 +<div className="run-code">▶ Run C ...`,l:"advanced/event.html#mousemove",a:"mousemove"},"2.14":{t:"`resize`\r",p:`当播放器尺寸变化时触发 +<div className="run-code">▶ Run Co ...`,l:"advanced/event.html#resize",a:"resize"},"2.15":{t:"`view`\r",p:`当播放器出现在视口时触发 +<div className="run-code">▶ Run C ...`,l:"advanced/event.html#view",a:"view"},"2.16":{t:"`lock`\r",p:`在移动端,当锁定的状态发生变化时触发 +<div className="run-code">▶ ...`,l:"advanced/event.html#lock",a:"lock"},"2.17":{t:"`aspectRatio`\r",p:`当播放器长宽比变化时触发 +<div className="run-code">▶ Run C ...`,l:"advanced/event.html#aspectratio",a:"aspectratio"},"2.18":{t:"`autoHeight`\r",p:`当播放器自动设置高度时触发 +<div className="run-code">▶ Run ...`,l:"advanced/event.html#autoheight",a:"autoheight"},"2.19":{t:"`autoSize`\r",p:`当播放器自动设置尺寸时触发 +<div className="run-code">▶ Run ...`,l:"advanced/event.html#autosize",a:"autosize"},"2.20":{t:"`flip`\r",p:`当播放器发生翻转时触发 +<div className="run-code">▶ Run Co ...`,l:"advanced/event.html#flip",a:"flip"},"2.21":{t:"`fullscreen`\r",p:`当播放器发生窗口全屏时触发 +<div className="run-code">▶ Run ...`,l:"advanced/event.html#fullscreen",a:"fullscreen"},"2.22":{t:"`fullscreenError`\r",p:`当播放器发生窗口全屏错误时触发 +<div className="run-code">▶ Ru ...`,l:"advanced/event.html#fullscreenerror",a:"fullscreenerror"},"2.23":{t:"`fullscreenWeb`\r",p:`当播放器发生网页全屏时触发 +<div className="run-code">▶ Run ...`,l:"advanced/event.html#fullscreenweb",a:"fullscreenweb"},"2.24":{t:"`mini`\r",p:`当播放器进入迷你模式时触发 +<div className="run-code">▶ Run ...`,l:"advanced/event.html#mini",a:"mini"},"2.25":{t:"`pip`\r",p:`当播放器进入画中画时触发 +<div className="run-code">▶ Run C ...`,l:"advanced/event.html#pip",a:"pip"},"2.26":{t:"`screenshot`\r",p:`当播放器被截图时触发 +<div className="run-code">▶ Run Cod ...`,l:"advanced/event.html#screenshot",a:"screenshot"},"2.27":{t:"`seek`\r",p:`当播放器发生时间跳转时触发 +<div className="run-code">▶ Run ...`,l:"advanced/event.html#seek",a:"seek"},"2.28":{t:"`subtitleOffset`\r",p:`当播放器发生字幕偏移时触发 +<div className="run-code">▶ Run ...`,l:"advanced/event.html#subtitleoffset",a:"subtitleoffset"},"2.29":{t:"`subtitleBeforeUpdate`\r",p:`当字幕更新前触发 +<div className="run-code">▶ Run Code& ...`,l:"advanced/event.html#subtitlebeforeupdate",a:"subtitlebeforeupdate"},"2.30":{t:"`subtitleAfterUpdate`\r",p:`当字幕更新后触发 +<div className="run-code">▶ Run Code& ...`,l:"advanced/event.html#subtitleafterupdate",a:"subtitleafterupdate"},"2.31":{t:"`subtitleLoad`\r",p:`当字幕加载时触发 +<div className="run-code">▶ Run Code& ...`,l:"advanced/event.html#subtitleload",a:"subtitleload"},"2.32":{t:"`info`\r",p:`当信息面板显示或隐藏时触发 +<div className="run-code">▶ Run ...`,l:"advanced/event.html#info",a:"info"},"2.33":{t:"`layer`\r",p:`当自定义层显示或隐藏时触发 +<div className="run-code">▶ Run ...`,l:"advanced/event.html#layer",a:"layer"},"2.34":{t:"`loading`\r",p:`当加载器显示或隐藏时触发 +<div className="run-code">▶ Run C ...`,l:"advanced/event.html#loading",a:"loading"},"2.35":{t:"`mask`\r",p:`当遮罩层显示或隐藏时触发 +<div className="run-code">▶ Run C ...`,l:"advanced/event.html#mask",a:"mask"},"2.36":{t:"`subtitle`\r",p:`当字幕层显示或隐藏时触发 +<div className="run-code">▶ Run C ...`,l:"advanced/event.html#subtitle",a:"subtitle"},"2.37":{t:"`contextmenu`\r",p:`当右键菜单显示或隐藏时触发 +<div className="run-code">▶ Run ...`,l:"advanced/event.html#contextmenu",a:"contextmenu"},"2.38":{t:"`control`\r",p:`当控制器显示或隐藏时触发 +<div className="run-code">▶ Run C ...`,l:"advanced/event.html#control",a:"control"},"2.39":{t:"`setting`\r",p:`当设置面板显示或隐藏时触发 +<div className="run-code">▶ Run ...`,l:"advanced/event.html#setting",a:"setting"},"2.40":{t:"`muted`\r",p:`当静音的状态变化时触发 +<div className="run-code">▶ Run Co ...`,l:"advanced/event.html#muted",a:"muted"},"2.41":{t:"`keydown`\r",p:`监听来自 document 的 keydown 事件 +<div className="run-code&qu ...`,l:"advanced/event.html#keydown",a:"keydown"},"2.42":{t:"`video:canplay`\r",p:`浏览器可以播放媒体文件了,但估计没有足够的数据来支撑播放到结束,不必停下来进一步缓冲内容 +`,l:"advanced/event.html#video-canplay",a:"video-canplay"},"2.43":{t:"`video:canplaythrough`\r",p:`浏览器估计它可以在不停止内容缓冲的情况下播放媒体直到结束 +`,l:"advanced/event.html#video-canplaythrough",a:"video-canplaythrough"},"2.44":{t:"`video:complete`\r",p:`OfflineAudioContext 渲染完成 +`,l:"advanced/event.html#video-complete",a:"video-complete"},"2.45":{t:"`video:durationchange`\r",p:`duration 属性的值改变时触发 +`,l:"advanced/event.html#video-durationchange",a:"video-durationchange"},"2.46":{t:"`video:emptied`\r",p:"媒体内容变为空;例如,当这个 media 已经加载完成(或者部分加载完成),则发送此事件,并调用 load() 方法重新加载 ...",l:"advanced/event.html#video-emptied",a:"video-emptied"},"2.47":{t:"`video:ended`\r",p:`视频停止播放,因为 media 已经到达结束点 +`,l:"advanced/event.html#video-ended",a:"video-ended"},"2.48":{t:"`video:error`\r",p:`获取媒体数据时出错,或者资源类型不是受支持的媒体格式 +`,l:"advanced/event.html#video-error",a:"video-error"},"2.49":{t:"`video:loadeddata`\r",p:`media 中的首帧已经完成加载 +`,l:"advanced/event.html#video-loadeddata",a:"video-loadeddata"},"2.50":{t:"`video:loadedmetadata`\r",p:`已加载元数据 +`,l:"advanced/event.html#video-loadedmetadata",a:"video-loadedmetadata"},"2.51":{t:"`video:pause`\r",p:`播放已暂停 +`,l:"advanced/event.html#video-pause",a:"video-pause"},"2.52":{t:"`video:play`\r",p:`播放已开始 +`,l:"advanced/event.html#video-play",a:"video-play"},"2.53":{t:"`video:playing`\r",p:`由于缺乏数据而暂停或延迟后,播放准备开始 +`,l:"advanced/event.html#video-playing",a:"video-playing"},"2.54":{t:"`video:progress`\r",p:`在浏览器加载资源时周期性触发 +`,l:"advanced/event.html#video-progress",a:"video-progress"},"2.55":{t:"`video:ratechange`\r",p:`播放速率发生变化 +`,l:"advanced/event.html#video-ratechange",a:"video-ratechange"},"2.56":{t:"`video:seeked`\r",p:`跳帧(seek)操作完成 +`,l:"advanced/event.html#video-seeked",a:"video-seeked"},"2.57":{t:"`video:seeking`\r",p:`跳帧(seek)操作开始 +`,l:"advanced/event.html#video-seeking",a:"video-seeking"},"2.58":{t:"`video:stalled`\r",p:`用户代理(user agent)正在尝试获取媒体数据,但数据意外未出现 +`,l:"advanced/event.html#video-stalled",a:"video-stalled"},"2.59":{t:"`video:suspend`\r",p:`媒体数据加载已暂停 +`,l:"advanced/event.html#video-suspend",a:"video-suspend"},"2.60":{t:"`video:timeupdate`\r",p:`currentTime 属性指定的时间发生变化 +`,l:"advanced/event.html#video-timeupdate",a:"video-timeupdate"},"2.61":{t:"`video:volumechange`\r",p:`音量发生变化 +`,l:"advanced/event.html#video-volumechange",a:"video-volumechange"},"2.62":{t:"`video:waiting`\r",p:`由于暂时缺少数据,播放已停止 +`,l:"advanced/event.html#video-waiting",a:"video-waiting"},"3.0":{t:"# 全局属性\r",p:`这里的 全局属性 也是指挂载在 构造函数 的 一级属性,属性名字全部都是大写的形式,未来容易发生变动,基本上用不到 +`,l:"advanced/global.html",a:"全局属性"},"3.1":{t:"DEBUG\r",p:`是否开始 debug 模式,可以打印出视频全部的内置事件,默认关闭 +<div className="run- ...`,l:"advanced/global.html#debug",a:"debug"},"3.2":{t:"STYLE\r",p:`返回播放器样式文本 +<div className="run-code">▶ Run Code ...`,l:"advanced/global.html#style",a:"style"},"3.3":{t:"CONTEXTMENU\r",p:`是否开启右键菜单,默认开启 +<div className="run-code">▶ Run ...`,l:"advanced/global.html#contextmenu",a:"contextmenu"},"3.4":{t:"NOTICE_TIME\r",p:`提示信息的显示时长,单位为毫秒,默认为 2000 +<div className="run-code" ...`,l:"advanced/global.html#notice-time",a:"notice-time"},"3.5":{t:"SETTING_WIDTH\r",p:`设置面板的默认宽度,单位为像素,默认为 250 +<div className="run-code" ...`,l:"advanced/global.html#setting-width",a:"setting-width"},"3.6":{t:"SETTING_ITEM_WIDTH\r",p:`设置面板的设置项的默认宽度,单位为像素,默认为 200 +<div className="run-code&q ...`,l:"advanced/global.html#setting-item-width",a:"setting-item-width"},"3.7":{t:"SETTING_ITEM_HEIGHT\r",p:`设置面板的设置项的默认高度,单位为像素,默认为 35 +<div className="run-code&qu ...`,l:"advanced/global.html#setting-item-height",a:"setting-item-height"},"3.8":{t:"RESIZE_TIME\r",p:`resize 事件的节流时间,单位为毫秒,默认为 200 +<div className="run-code& ...`,l:"advanced/global.html#resize-time",a:"resize-time"},"3.9":{t:"SCROLL_TIME\r",p:`scroll 事件的节流时间,单位为毫秒,默认为 200 +<div className="run-code& ...`,l:"advanced/global.html#scroll-time",a:"scroll-time"},"3.10":{t:"SCROLL_GAP\r",p:`view 事件的边界容差距离,单位为像素,默认为 50 +<div className="run-code&q ...`,l:"advanced/global.html#scroll-gap",a:"scroll-gap"},"3.11":{t:"AUTO_PLAYBACK_MAX\r",p:`自动回放功能的最大记录数,默认为 10 +<div className="run-code"> ...`,l:"advanced/global.html#auto-playback-max",a:"auto-playback-max"},"3.12":{t:"AUTO_PLAYBACK_MIN\r",p:`自动回放功能的最小记录时长,单位为秒,默认为 5 +<div className="run-code" ...`,l:"advanced/global.html#auto-playback-min",a:"auto-playback-min"},"3.13":{t:"AUTO_PLAYBACK_TIMEOUT\r",p:`自动回放功能的隐藏延迟时长,单位为毫秒,默认为 3000 +<div className="run-code& ...`,l:"advanced/global.html#auto-playback-timeout",a:"auto-playback-timeout"},"3.14":{t:"RECONNECT_TIME_MAX\r",p:`发生连接错误时,自动连接的最大次数,默认为 5 +<div className="run-code" ...`,l:"advanced/global.html#reconnect-time-max",a:"reconnect-time-max"},"3.15":{t:"RECONNECT_SLEEP_TIME\r",p:`发生连接错误时,自动连接的延迟时间,单位为毫秒,默认为 1000 +<div className="run-c ...`,l:"advanced/global.html#reconnect-sleep-time",a:"reconnect-sleep-time"},"3.16":{t:"CONTROL_HIDE_TIME\r",p:`底部控制栏的自动隐藏的延迟时间,单位为毫秒,默认为 3000 +<div className="run-cod ...`,l:"advanced/global.html#control-hide-time",a:"control-hide-time"},"3.17":{t:"DBCLICK_TIME\r",p:`双击事件的延迟事件,单位为毫秒,默认为 300 +<div className="run-code" ...`,l:"advanced/global.html#dbclick-time",a:"dbclick-time"},"3.18":{t:"DBCLICK_FULLSCREEN\r",p:`在桌面端,是否双击切换全屏,默认为 true +<div className="run-code"& ...`,l:"advanced/global.html#dbclick-fullscreen",a:"dbclick-fullscreen"},"3.19":{t:"MOBILE_DBCLICK_PLAY\r",p:`在移动端,是否双击切换播放暂停,默认为 true +<div className="run-code" ...`,l:"advanced/global.html#mobile-dbclick-play",a:"mobile-dbclick-play"},"3.20":{t:"MOBILE_CLICK_PLAY\r",p:`在移动端,是否单击切换播放暂停,默认为 false +<div className="run-code&quo ...`,l:"advanced/global.html#mobile-click-play",a:"mobile-click-play"},"3.21":{t:"AUTO_ORIENTATION_TIME\r",p:`在移动端,自动旋屏的延迟时间,单位为毫秒,默认为 200 +<div className="run-code& ...`,l:"advanced/global.html#auto-orientation-time",a:"auto-orientation-time"},"3.22":{t:"INFO_LOOP_TIME\r",p:`信息面板的刷新时间,单位为毫秒,默认为 1000 +<div className="run-code" ...`,l:"advanced/global.html#info-loop-time",a:"info-loop-time"},"3.23":{t:"FAST_FORWARD_VALUE\r",p:`在移动端,长按加速的速率倍数,默认为 3 +<div className="run-code"> ...`,l:"advanced/global.html#fast-forward-value",a:"fast-forward-value"},"3.24":{t:"FAST_FORWARD_TIME\r",p:`在移动端,长按加速的延迟时间,单位为毫秒,默认为 1000 +<div className="run-code ...`,l:"advanced/global.html#fast-forward-time",a:"fast-forward-time"},"3.25":{t:"TOUCH_MOVE_RATIO\r",p:`在移动端,左右滑动进度的速率倍数,默认为 0.5 +<div className="run-code" ...`,l:"advanced/global.html#touch-move-ratio",a:"touch-move-ratio"},"3.26":{t:"VOLUME_STEP\r",p:`快捷键调节音量的幅度比例,默认为 0.1 +<div className="run-code"> ...`,l:"advanced/global.html#volume-step",a:"volume-step"},"3.27":{t:"SEEK_STEP\r",p:`快捷键调节播放进度的幅度,单位为秒,默认为 5 +<div className="run-code" ...`,l:"advanced/global.html#seek-step",a:"seek-step"},"3.28":{t:"PLAYBACK_RATE\r",p:`内置播放速率的列表,默认为 [0.5, 0.75, 1, 1.25, 1.5, 2] +<div className=& ...`,l:"advanced/global.html#playback-rate",a:"playback-rate"},"3.29":{t:"ASPECT_RATIO\r",p:`内置视频长宽比的列表,默认为 ['default', '4:3', '16:9'] +<div className=&q ...`,l:"advanced/global.html#aspect-ratio",a:"aspect-ratio"},"3.30":{t:"FLIP\r",p:`内置视频翻转的列表,默认为 ['normal', 'horizontal', 'vertical'] +<div cla ...`,l:"advanced/global.html#flip",a:"flip"},"3.31":{t:"FULLSCREEN_WEB_IN_BODY\r",p:`网页全屏时,是否把播放器挂在在 body 元素下,默认为 true +<div className="run- ...`,l:"advanced/global.html#fullscreen-web-in-body",a:"fullscreen-web-in-body"},"3.32":{t:"LOG_VERSION\r",p:`设置是否打印播放器版本,默认为 true +<div className="run-code"> ...`,l:"advanced/global.html#log-version",a:"log-version"},"3.33":{t:"USE_RAF\r",p:`设置是否使用 requestAnimationFrame ,默认为 false,目前主要用于进度条的平滑效果 +<div ...`,l:"advanced/global.html#use-raf",a:"use-raf"},"3.34":{t:"REMOVE_SRC_WHEN_DESTROY\r",p:`在销毁播放器时,是否同时移除视频的 src 属性并调用 load() 以主动释放媒体资源,默认为 true。 +开启后可以在单 ...`,l:"advanced/global.html#remove-src-when-destroy",a:"remove-src-when-destroy"},"4.0":{t:"# 编写插件\r",p:`但你已经知道播放器的属性, 方法和事件后,再编写插件是非常简单的事 +可以在实例化的时候加载插件的函数 +<div cla ...`,l:"advanced/plugin.html",a:"编写插件"},"5.0":{t:"# 实例属性\r",p:`这里的 实例属性 是指挂载在 实例 的 一级属性,比较常用 +`,l:"advanced/property.html",a:"实例属性"},"5.1":{t:"`play`\r",p:` +Type: Function + +播放视频 +<div className="run-code"&g ...`,l:"advanced/property.html#play",a:"play"},"5.2":{t:"`pause`\r",p:` +Type: Function + +暂停视频 +<div className="run-code"&g ...`,l:"advanced/property.html#pause",a:"pause"},"5.3":{t:"`toggle`\r",p:` +Type: Function + +切换视频的播放和暂停 +<div className="run-code&q ...`,l:"advanced/property.html#toggle",a:"toggle"},"5.4":{t:"`destroy`\r",p:` +Type: Function +Parameter: Boolean + +销毁播放器,接受一个参数表示是否销毁后同时移除播放器 ...`,l:"advanced/property.html#destroy",a:"destroy"},"5.5":{t:"`reset`\r",p:` +Type: Function + +重置播放器的视频元素:会移除当前 src 并调用一次 load(),常用于在单页应用中手动 ...`,l:"advanced/property.html#reset",a:"reset"},"5.6":{t:"`seek`\r",p:` +Type: Setter +Parameter: Number + +视频时间跳转,单位秒 +<div className= ...`,l:"advanced/property.html#seek",a:"seek"},"5.7":{t:"`forward`\r",p:` +Type: Setter +Parameter: Number + +视频时间快进,单位秒 +<div className= ...`,l:"advanced/property.html#forward",a:"forward"},"5.8":{t:"`backward`\r",p:` +Type: Setter +Parameter: Number + +视频时间快退,单位秒 +<div className= ...`,l:"advanced/property.html#backward",a:"backward"},"5.9":{t:"`volume`\r",p:` +Type: Setter/Getter +Parameter: Number + +设置和获取视频音量,范围在:[0, 1] +& ...`,l:"advanced/property.html#volume",a:"volume"},"5.10":{t:"`url`\r",p:` +Type: Setter/Getter +Parameter: String + +设置和获取视频地址 +<div clas ...`,l:"advanced/property.html#url",a:"url"},"5.11":{t:"`switch`\r",p:` +Type: Setter +Parameter: String + +设置视频地址,设置时和 art.url 类似,但会执行一些 ...`,l:"advanced/property.html#switch",a:"switch"},"5.12":{t:"`switchUrl`\r",p:` +Type: Function +Parameter: String + +设置视频地址,设置时和 art.url 类似,但会执行 ...`,l:"advanced/property.html#switchurl",a:"switchurl"},"5.13":{t:"`switchQuality`\r",p:` +Type: Function +Parameter: String + +设置视频画质地址,和 art.switchUrl 类似 ...`,l:"advanced/property.html#switchquality",a:"switchquality"},"5.14":{t:"`muted`\r",p:` +Type: Setter/Getter +Parameter: Boolean + +设置和获取视频是否静音 +<div c ...`,l:"advanced/property.html#muted",a:"muted"},"5.15":{t:"`currentTime`\r",p:` +Type: Setter/Getter +Parameter: Number + +设置和获取视频当前时间,设置时间时和 see ...`,l:"advanced/property.html#currenttime",a:"currenttime"},"5.16":{t:"`duration`\r",p:` +Type: Getter + +获取视频时长 +<div className="run-code"&g ...`,l:"advanced/property.html#duration",a:"duration"},"5.17":{t:"`screenshot`\r",p:` +Type: Function + +下载当前视频帧的截图, 可选参数为截图名字 +<div className=" ...`,l:"advanced/property.html#screenshot",a:"screenshot"},"5.18":{t:"`getDataURL`\r",p:` +Type: Function + +获取当前视频帧的截图的base64地址,返回的是一个 Promise +<div cl ...`,l:"advanced/property.html#getdataurl",a:"getdataurl"},"5.19":{t:"`getBlobUrl`\r",p:` +Type: Function + +获取当前视频帧的截图的blob地址,返回的是一个 Promise +<div clas ...`,l:"advanced/property.html#getbloburl",a:"getbloburl"},"5.20":{t:"`fullscreen`\r",p:` +Type: Setter/Getter +Parameter: Boolean + +设置和获取播放器窗口全屏 +<div ...`,l:"advanced/property.html#fullscreen",a:"fullscreen"},"5.21":{t:"`fullscreenWeb`\r",p:` +Type: Setter/Getter +Parameter: Boolean + +设置和获取播放器网页全屏 +<div ...`,l:"advanced/property.html#fullscreenweb",a:"fullscreenweb"},"5.22":{t:"`pip`\r",p:` +Type: Setter/Getter +Parameter: Boolean + +设置和获取播放器画中画模式 +<div ...`,l:"advanced/property.html#pip",a:"pip"},"5.23":{t:"`poster`\r",p:` +Type: Setter/Getter +Parameter: String + +设置和获取视频海报,只有在视频播放前才能看到 ...`,l:"advanced/property.html#poster",a:"poster"},"5.24":{t:"`mini`\r",p:` +Type: Setter/Getter +Parameter: Boolean + +设置和获取播放器迷你模式 +<div ...`,l:"advanced/property.html#mini",a:"mini"},"5.25":{t:"`playing`\r",p:` +Type: Getter +Parameter: Boolean + +获取视频是否正在播放中 +<div classNam ...`,l:"advanced/property.html#playing",a:"playing"},"5.26":{t:"`state`\r",p:` +Type: Setter/Getter +Parameter: String + +获取或设置播放器当前状态,支持:standa ...`,l:"advanced/property.html#state",a:"state"},"5.27":{t:"`autoSize`\r",p:` +Type: Function + +设置视频是否自适应尺寸 +<div className="run-code& ...`,l:"advanced/property.html#autosize",a:"autosize"},"5.28":{t:"`rect`\r",p:` +Type: Getter + +获取播放器的尺寸和坐标信息 +<div className="run-code& ...`,l:"advanced/property.html#rect",a:"rect"},"5.29":{t:"`bottom` / `top` / `left` / `right` / `x` / `y` / `width` / `height`\r",p:` +Type: Getter + +这些属性是对 rect 的快捷访问: + +bottom, top, left, right, x ...`,l:"advanced/property.html#bottom-top-left-right-x-y-width-height",a:"bottom-top-left-right-x-y-width-height"},"5.30":{t:"`flip`\r",p:` +Type: Setter/Getter +Parameter: String + +设置和获取播放器翻转,支持normal, ...`,l:"advanced/property.html#flip",a:"flip"},"5.31":{t:"`playbackRate`\r",p:` +Type: Setter/Getter +Parameter: Number + +设置和获取播放器播放速度 +<div c ...`,l:"advanced/property.html#playbackrate",a:"playbackrate"},"5.32":{t:"`aspectRatio`\r",p:` +Type: Setter/Getter +Parameter: String + +设置和获取播放器长宽比 +<div cl ...`,l:"advanced/property.html#aspectratio",a:"aspectratio"},"5.33":{t:"`autoHeight`\r",p:` +Type: Function + +当容器只有宽度,该属性可以自动计算出并设置视频的高度 +<div className= ...`,l:"advanced/property.html#autoheight",a:"autoheight"},"5.34":{t:"`attr`\r",p:` +Type: Function +Parameter: String + +动态获取和设置 video 元素的属性 +<div ...`,l:"advanced/property.html#attr",a:"attr"},"5.35":{t:"`type`\r",p:` +Type: Setter/Getter +Parameter: String + +动态获取和设置视频类型 +<div cl ...`,l:"advanced/property.html#type",a:"type"},"5.36":{t:"`theme`\r",p:` +Type: Setter/Getter +Parameter: String + +动态获取和设置播放器主题颜色 +<div ...`,l:"advanced/property.html#theme",a:"theme"},"5.37":{t:"`airplay`\r",p:` +Type: Function + +开启隔空播放 +<div className="run-code" ...`,l:"advanced/property.html#airplay",a:"airplay"},"5.38":{t:"`loaded`\r",p:` +Type: Getter + +视频缓存的比例,范围是 [0, 1],常配合 video:timeupdate 事件使用 +&l ...`,l:"advanced/property.html#loaded",a:"loaded"},"5.39":{t:"`loadedTime`\r",p:` +Type: Getter + +已缓存的媒体时长,单位为秒。通常与 loaded 一起使用,用于展示缓冲进度细节。 +<d ...`,l:"advanced/property.html#loadedtime",a:"loadedtime"},"5.40":{t:"`played`\r",p:` +Type: Getter + +视频播放的比例,范围是 [0, 1],常配合 video:timeupdate 事件使用 +&l ...`,l:"advanced/property.html#played",a:"played"},"5.41":{t:"`proxy`\r",p:` +Type: Function + +DOM 事件的代理函数,实质上代理了 addEventListener 和 removeE ...`,l:"advanced/property.html#proxy",a:"proxy"},"5.42":{t:"`query`\r",p:` +Type: Function + +DOM 的查询函数,类似 document.querySelector,但被查询的对象局限 ...`,l:"advanced/property.html#query",a:"query"},"5.43":{t:"`video`\r",p:` +Type: Element + +快捷返回播放器的 video 元素 +<div className="run- ...`,l:"advanced/property.html#video",a:"video"},"5.44":{t:"`cssVar`\r",p:` +Type: Function + +动态获取或设置 css 变量 +<div className="run-co ...`,l:"advanced/property.html#cssvar",a:"cssvar"},"5.45":{t:"`quality`\r",p:` +Type: Setter +Parameter: Array + +动态设置画质列表 +<div className=&qu ...`,l:"advanced/property.html#quality",a:"quality"},"5.46":{t:"`thumbnails`\r",p:` +Type: Setter/Getter +Parameter: Object + +动态设置缩略图 +<div classN ...`,l:"advanced/property.html#thumbnails",a:"thumbnails"},"5.47":{t:"`subtitleOffset`\r",p:` +Type: Setter/Getter +Parameter: Number + +动态设置字幕偏移 +<div class ...`,l:"advanced/property.html#subtitleoffset",a:"subtitleoffset"},"6.0":{t:"# 右键菜单\r",p:"\r",l:"component/contextmenu.html",a:"右键菜单"},"6.1":{t:"配置\r",p:` + + +属性 +类型 +描述 + + + + +disable +Boolean +是否禁用组件 + + +name +String +组件唯一名称,用于 ...`,l:"component/contextmenu.html#配置",a:"配置"},"6.2":{t:"创建\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/contextmenu.html#创建",a:"创建"},"6.3":{t:"添加\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/contextmenu.html#添加",a:"添加"},"6.4":{t:"删除\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/contextmenu.html#删除",a:"删除"},"6.5":{t:"更新\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/contextmenu.html#更新",a:"更新"},"7.0":{t:"# 控制器\r",p:"\r",l:"component/controls.html",a:"控制器"},"7.1":{t:"配置\r",p:` + + +属性 +类型 +描述 + + + + +disable +Boolean +是否禁用组件 + + +name +String +组件唯一名称,用于 ...`,l:"component/controls.html#配置",a:"配置"},"7.2":{t:"创建\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/controls.html#创建",a:"创建"},"7.3":{t:"添加\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/controls.html#添加",a:"添加"},"7.4":{t:"删除\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/controls.html#删除",a:"删除"},"7.5":{t:"更新\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/controls.html#更新",a:"更新"},"8.0":{t:"# 业务层\r",p:"\r",l:"component/layers.html",a:"业务层"},"8.1":{t:"配置\r",p:` + + +属性 +类型 +描述 + + + + +disable +Boolean +是否禁用组件 + + +name +String +组件唯一名称,用于 ...`,l:"component/layers.html#配置",a:"配置"},"8.2":{t:"创建\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/layers.html#创建",a:"创建"},"8.3":{t:"添加\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/layers.html#添加",a:"添加"},"8.4":{t:"删除\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/layers.html#删除",a:"删除"},"8.5":{t:"更新\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/layers.html#更新",a:"更新"},"9.0":{t:"# 设置面板\r",p:"\r",l:"component/setting.html",a:"设置面板"},"9.1":{t:"内置\r",p:"须先打开设置面板,然后自带四个内置项:flip, playbackRate, aspectRatio, subtitleOf ...",l:"component/setting.html#内置",a:"内置"},"9.2":{t:"创建 - 按钮\r",p:` + + +属性 +类型 +描述 + + + + +html +String, Element +元素的 DOM + + +icon +String, El ...`,l:"component/setting.html#创建-按钮",a:"创建-按钮"},"9.3":{t:"创建 - 选择列表\r",p:` + + +属性 +类型 +描述 + + + + +html +String, Element +元素的 DOM + + +icon +String, El ...`,l:"component/setting.html#创建-选择列表",a:"创建-选择列表"},"9.4":{t:"创建 - 列表嵌套\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/setting.html#创建-列表嵌套",a:"创建-列表嵌套"},"9.5":{t:"创建 - 切换按钮\r",p:` + + +属性 +类型 +描述 + + + + +html +String, Element +元素的 DOM 元素 + + +icon +String, ...`,l:"component/setting.html#创建-切换按钮",a:"创建-切换按钮"},"9.6":{t:"创建 - 范围滑块\r",p:` + + +属性 +类型 +描述 + + + + +html +String, Element +元素的 DOM 元素 + + +icon +String, ...`,l:"component/setting.html#创建-范围滑块",a:"创建-范围滑块"},"9.7":{t:"添加\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/setting.html#添加",a:"添加"},"9.8":{t:"删除\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/setting.html#删除",a:"删除"},"9.9":{t:"更新\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"component/setting.html#更新",a:"更新"},"10.0":{t:"# Advanced Properties\r",p:"The Advanced Properties here refer to the secondary properties ...",l:"en/advanced/built-in.html",a:"advanced-properties"},"10.1":{t:"`option`\r",p:`The player's options. +<div className="run-code"&g ...`,l:"en/advanced/built-in.html#option",a:"option"},"10.2":{t:"`template`\r",p:`Manages all DOM elements of the player. +<div className=&quo ...`,l:"en/advanced/built-in.html#template",a:"template"},"10.3":{t:"`events`\r",p:"Manages all DOM events for the player. It essentially proxies ...",l:"en/advanced/built-in.html#events",a:"events"},"10.4":{t:"`storage`\r",p:`Manages the player's local storage. + +The name property is used ...`,l:"en/advanced/built-in.html#storage",a:"storage"},"10.5":{t:"`icons`\r",p:`Manages all svg icons for the player. +<div className=" ...`,l:"en/advanced/built-in.html#icons",a:"icons"},"10.6":{t:"`i18n`\r",p:`Manages the player's i18n. + +The get method is used to retrieve ...`,l:"en/advanced/built-in.html#i18n",a:"i18n"},"10.7":{t:"`notice`\r",p:"Manages the player's notifications. It only has a show propert ...",l:"en/advanced/built-in.html#notice",a:"notice"},"10.8":{t:"`layers`\r",p:`Manages the player's layers. + +The add method is used to dynami ...`,l:"en/advanced/built-in.html#layers",a:"layers"},"10.9":{t:"`controls`\r",p:`Manages the player's controls. + + +The add method is used to dyn ...`,l:"en/advanced/built-in.html#controls",a:"controls"},"10.10":{t:"`contextmenu`\r",p:`Manages the player's context menu + +The add method is used to d ...`,l:"en/advanced/built-in.html#contextmenu",a:"contextmenu"},"10.11":{t:"`subtitle`\r",p:`Manages the player's subtitle functionality + +The url property ...`,l:"en/advanced/built-in.html#subtitle",a:"subtitle"},"10.12":{t:"`info`\r",p:"Manages the player's information panel, commonly used to view ...",l:"en/advanced/built-in.html#info",a:"info"},"10.13":{t:"`loading`\r",p:`Manages the player's loading layer + +The show property is used ...`,l:"en/advanced/built-in.html#loading",a:"loading"},"10.14":{t:"`hotkey`\r",p:`Manages the player's hotkey functionality + +The add method is u ...`,l:"en/advanced/built-in.html#hotkey",a:"hotkey"},"10.15":{t:"`mask`\r",p:`Manages the player's mask layer + +The show property is used to ...`,l:"en/advanced/built-in.html#mask",a:"mask"},"10.16":{t:"`setting`\r",p:`Manages the player's settings panel + +The add method is used to ...`,l:"en/advanced/built-in.html#setting",a:"setting"},"10.17":{t:"`plugins`\r",p:"Manages the player's plugin functionality, with only one metho ...",l:"en/advanced/built-in.html#plugins",a:"plugins"},"11.0":{t:"# Static Properties\r",p:"Here, static properties refer to the first-level properties at ...",l:"en/advanced/class.html",a:"static-properties"},"11.1":{t:"`instances`\r",p:"Returns an array of all player instances. This property can be ...",l:"en/advanced/class.html#instances",a:"instances"},"11.2":{t:"`version`\r",p:`Returns the version information of the player. +<div classNa ...`,l:"en/advanced/class.html#version",a:"version"},"11.3":{t:"`env`\r",p:`Returns the environment variables of the player. +<div class ...`,l:"en/advanced/class.html#env",a:"env"},"11.4":{t:"`build`\r",p:`Returns the build timestamp of the player. +<div className=& ...`,l:"en/advanced/class.html#build",a:"build"},"11.5":{t:"`config`\r",p:`Returns the default configuration for videos. +<div classNam ...`,l:"en/advanced/class.html#config",a:"config"},"11.6":{t:"`utils`\r",p:`Returns the collection of utility functions for the player. +&l ...`,l:"en/advanced/class.html#utils",a:"utils"},"11.7":{t:"`scheme`\r",p:`Returns the validation schema for player options. +<div clas ...`,l:"en/advanced/class.html#scheme",a:"scheme"},"11.8":{t:"`Emitter`\r",p:`Returns the constructor of the event emitter. +<div classNam ...`,l:"en/advanced/class.html#emitter",a:"emitter"},"11.9":{t:"`validator`\r",p:`Returns the validation function for options. +<div className ...`,l:"en/advanced/class.html#validator",a:"validator"},"11.10":{t:"`kindOf`\r",p:`Returns the type detection utility function. +<div className ...`,l:"en/advanced/class.html#kindof",a:"kindof"},"11.11":{t:"`html`\r",p:`Returns the html string required by the player. +<div classN ...`,l:"en/advanced/class.html#html",a:"html"},"11.12":{t:"`option`\r",p:`Returns the default options of the player. +<div className=& ...`,l:"en/advanced/class.html#option",a:"option"},"12.0":{t:"# Instance Events\r",p:"Player events are divided into two types: native events of the ...",l:"en/advanced/event.html",a:"instance-events"},"12.1":{t:"`ready`\r",p:`Triggered when the player is ready for the first time. +<div ...`,l:"en/advanced/event.html#ready",a:"ready"},"12.2":{t:"`restart`\r",p:"Triggered when the player switches URLs and becomes ready to p ...",l:"en/advanced/event.html#restart",a:"restart"},"12.3":{t:"`pause`\r",p:`Triggered when the player is paused. +<div className="r ...`,l:"en/advanced/event.html#pause",a:"pause"},"12.4":{t:"`play`\r",p:`Triggered when the player starts playing. +<div className=&q ...`,l:"en/advanced/event.html#play",a:"play"},"12.5":{t:"`hotkey`\r",p:`Triggered when a player hotkey is pressed. +<div className=& ...`,l:"en/advanced/event.html#hotkey",a:"hotkey"},"12.6":{t:"`destroy`\r",p:`Triggered when the player is destroyed. +<div className=&quo ...`,l:"en/advanced/event.html#destroy",a:"destroy"},"12.7":{t:"`focus`\r",p:`Triggered when the player gains focus. +<div className=" ...`,l:"en/advanced/event.html#focus",a:"focus"},"12.8":{t:"`blur`\r",p:`Triggered when the player loses focus. +<div className=" ...`,l:"en/advanced/event.html#blur",a:"blur"},"12.9":{t:"`dblclick`\r",p:`Triggered when the player is double-clicked. +<div className ...`,l:"en/advanced/event.html#dblclick",a:"dblclick"},"12.10":{t:"`click`\r",p:`Triggered when the player is clicked. +<div className=" ...`,l:"en/advanced/event.html#click",a:"click"},"12.11":{t:"`error`\r",p:"Triggered when an error occurs while the player is loading a v ...",l:"en/advanced/event.html#error",a:"error"},"12.12":{t:"`hover`\r",p:`Triggered when the mouse enters or leaves the player. +<div ...`,l:"en/advanced/event.html#hover",a:"hover"},"12.13":{t:"`mousemove`\r",p:`Triggered when the mouse moves over the player. +<div classN ...`,l:"en/advanced/event.html#mousemove",a:"mousemove"},"12.14":{t:"`resize`\r",p:`Triggered when the player's dimensions change. +<div classNa ...`,l:"en/advanced/event.html#resize",a:"resize"},"12.15":{t:"`view`\r",p:`Triggered when the player enters the viewport. +<div classNa ...`,l:"en/advanced/event.html#view",a:"view"},"12.16":{t:"`lock`\r",p:`Triggered when the lock state changes on mobile devices. +<d ...`,l:"en/advanced/event.html#lock",a:"lock"},"12.17":{t:"`aspectRatio`\r",p:`Triggered when the player's aspect ratio changes. +<div clas ...`,l:"en/advanced/event.html#aspectratio",a:"aspectratio"},"12.18":{t:"`autoHeight`\r",p:`Triggered when the player's height is automatically set. +<d ...`,l:"en/advanced/event.html#autoheight",a:"autoheight"},"12.19":{t:"`autoSize`\r",p:`Triggered when the player's size is automatically set. +<div ...`,l:"en/advanced/event.html#autosize",a:"autosize"},"12.20":{t:"`flip`\r",p:`Triggered when the player is flipped. +<div className=" ...`,l:"en/advanced/event.html#flip",a:"flip"},"12.21":{t:"`fullscreen`\r",p:"Triggered when the player enters or exits windowed fullscreen ...",l:"en/advanced/event.html#fullscreen",a:"fullscreen"},"12.22":{t:"`fullscreenError`\r",p:`Triggered when a windowed fullscreen error occurs. +<div cla ...`,l:"en/advanced/event.html#fullscreenerror",a:"fullscreenerror"},"12.23":{t:"`fullscreenWeb`\r",p:"Triggered when the player enters or exits web fullscreen mode. ...",l:"en/advanced/event.html#fullscreenweb",a:"fullscreenweb"},"12.24":{t:"`mini`\r",p:`Triggered when the player enters or exits mini mode. +<div c ...`,l:"en/advanced/event.html#mini",a:"mini"},"12.25":{t:"`pip`\r",p:"Triggered when the player enters or exits Picture-in-Picture m ...",l:"en/advanced/event.html#pip",a:"pip"},"12.26":{t:"`screenshot`\r",p:`Triggered when the player takes a screenshot. +<div classNam ...`,l:"en/advanced/event.html#screenshot",a:"screenshot"},"12.27":{t:"`seek`\r",p:`Triggered when the player performs a time seek. +<div classN ...`,l:"en/advanced/event.html#seek",a:"seek"},"12.28":{t:"`subtitleOffset`\r",p:`Triggered when the subtitle offset changes in the player. +< ...`,l:"en/advanced/event.html#subtitleoffset",a:"subtitleoffset"},"12.29":{t:"`subtitleBeforeUpdate`\r",p:`Triggered before subtitles are updated. +<div className=&quo ...`,l:"en/advanced/event.html#subtitlebeforeupdate",a:"subtitlebeforeupdate"},"12.30":{t:"`subtitleAfterUpdate`\r",p:`Triggered after subtitles are updated. +<div className=" ...`,l:"en/advanced/event.html#subtitleafterupdate",a:"subtitleafterupdate"},"12.31":{t:"`subtitleLoad`\r",p:`Triggered when subtitles are loaded. +<div className="r ...`,l:"en/advanced/event.html#subtitleload",a:"subtitleload"},"12.32":{t:"`info`\r",p:`Triggered when the info panel is shown or hidden. +<div clas ...`,l:"en/advanced/event.html#info",a:"info"},"12.33":{t:"`layer`\r",p:`Triggered when a custom layer is shown or hidden. +<div clas ...`,l:"en/advanced/event.html#layer",a:"layer"},"12.34":{t:"`loading`\r",p:`Triggered when the loader is shown or hidden. +<div classNam ...`,l:"en/advanced/event.html#loading",a:"loading"},"12.35":{t:"`mask`\r",p:`Triggered when the mask layer is shown or hidden. +<div clas ...`,l:"en/advanced/event.html#mask",a:"mask"},"12.36":{t:"`subtitle`\r",p:`Triggered when the subtitle layer is shown or hidden. +<div ...`,l:"en/advanced/event.html#subtitle",a:"subtitle"},"12.37":{t:"`contextmenu`\r",p:`Triggered when the context menu is shown or hidden. +<div cl ...`,l:"en/advanced/event.html#contextmenu",a:"contextmenu"},"12.38":{t:"`control`\r",p:`Triggered when the control bar is shown or hidden. +<div cla ...`,l:"en/advanced/event.html#control",a:"control"},"12.39":{t:"`setting`\r",p:`Triggered when the settings panel is shown or hidden. +<div ...`,l:"en/advanced/event.html#setting",a:"setting"},"12.40":{t:"`muted`\r",p:`Triggered when the muted state changes. +<div className=&quo ...`,l:"en/advanced/event.html#muted",a:"muted"},"12.41":{t:"`keydown`\r",p:`Listens for the keydown event from the document. +<div class ...`,l:"en/advanced/event.html#keydown",a:"keydown"},"12.42":{t:"`video:canplay`\r",p:"The browser can start playing the media, but estimates there i ...",l:"en/advanced/event.html#video-canplay",a:"video-canplay"},"12.43":{t:"`video:canplaythrough`\r",p:"The browser estimates it can play the media through to the end ...",l:"en/advanced/event.html#video-canplaythrough",a:"video-canplaythrough"},"12.44":{t:"`video:complete`\r",p:`The OfflineAudioContext rendering is complete. +`,l:"en/advanced/event.html#video-complete",a:"video-complete"},"12.45":{t:"`video:durationchange`\r",p:`Triggered when the value of the duration property changes. +`,l:"en/advanced/event.html#video-durationchange",a:"video-durationchange"},"12.46":{t:"`video:emptied`\r",p:"The media has become empty; for example, this event is sent wh ...",l:"en/advanced/event.html#video-emptied",a:"video-emptied"},"12.47":{t:"`video:ended`\r",p:`Playback has stopped because the media has reached its end. +`,l:"en/advanced/event.html#video-ended",a:"video-ended"},"12.48":{t:"`video:error`\r",p:"An error occurred while fetching the media data, or the resour ...",l:"en/advanced/event.html#video-error",a:"video-error"},"12.49":{t:"`video:loadeddata`\r",p:`The first frame of the media has finished loading. +`,l:"en/advanced/event.html#video-loadeddata",a:"video-loadeddata"},"12.50":{t:"`video:loadedmetadata`\r",p:`Metadata has been loaded. +`,l:"en/advanced/event.html#video-loadedmetadata",a:"video-loadedmetadata"},"12.51":{t:"`video:pause`\r",p:`Playback has been paused. +`,l:"en/advanced/event.html#video-pause",a:"video-pause"},"12.52":{t:"`video:play`\r",p:`Playback has begun. +`,l:"en/advanced/event.html#video-play",a:"video-play"},"12.53":{t:"`video:playing`\r",p:"Playback is ready to start after having been paused or delayed ...",l:"en/advanced/event.html#video-playing",a:"video-playing"},"12.54":{t:"`video:progress`\r",p:`Fired periodically as the browser loads the resource. +`,l:"en/advanced/event.html#video-progress",a:"video-progress"},"12.55":{t:"`video:ratechange`\r",p:`The playback rate has changed. +`,l:"en/advanced/event.html#video-ratechange",a:"video-ratechange"},"12.56":{t:"`video:seeked`\r",p:`A seek operation has completed. +`,l:"en/advanced/event.html#video-seeked",a:"video-seeked"},"12.57":{t:"`video:seeking`\r",p:`A seek operation has begun. +`,l:"en/advanced/event.html#video-seeking",a:"video-seeking"},"12.58":{t:"`video:stalled`\r",p:"The user agent is trying to fetch media data, but data is unex ...",l:"en/advanced/event.html#video-stalled",a:"video-stalled"},"12.59":{t:"`video:suspend`\r",p:`Media data loading has been suspended. +`,l:"en/advanced/event.html#video-suspend",a:"video-suspend"},"12.60":{t:"`video:timeupdate`\r",p:`The time indicated by the currentTime property has changed. +`,l:"en/advanced/event.html#video-timeupdate",a:"video-timeupdate"},"12.61":{t:"`video:volumechange`\r",p:`The volume has changed. +`,l:"en/advanced/event.html#video-volumechange",a:"video-volumechange"},"12.62":{t:"`video:waiting`\r",p:`Playback has stopped because of a temporary lack of data. +`,l:"en/advanced/event.html#video-waiting",a:"video-waiting"},"13.0":{t:"# Global Properties\r",p:"The global properties here refer to the top-level properties m ...",l:"en/advanced/global.html",a:"global-properties"},"13.1":{t:"DEBUG\r",p:"Whether to enable debug mode, which can print all built-in vid ...",l:"en/advanced/global.html#debug",a:"debug"},"13.2":{t:"STYLE\r",p:`Returns the player style text. +<div className="run-cod ...`,l:"en/advanced/global.html#style",a:"style"},"13.3":{t:"CONTEXTMENU\r",p:`Whether to enable the context menu. Default is on. +<div cla ...`,l:"en/advanced/global.html#contextmenu",a:"contextmenu"},"13.4":{t:"NOTICE_TIME\r",p:"The display duration of notification messages, in milliseconds ...",l:"en/advanced/global.html#notice-time",a:"notice-time"},"13.5":{t:"SETTING_WIDTH\r",p:"The default width of the settings panel, in pixels. Default is ...",l:"en/advanced/global.html#setting-width",a:"setting-width"},"13.6":{t:"SETTING_ITEM_WIDTH\r",p:"The default width of a setting item in the settings panel, in ...",l:"en/advanced/global.html#setting-item-width",a:"setting-item-width"},"13.7":{t:"SETTING_ITEM_HEIGHT\r",p:"The default height of a setting item in the settings panel, in ...",l:"en/advanced/global.html#setting-item-height",a:"setting-item-height"},"13.8":{t:"RESIZE_TIME\r",p:"The throttle time for the resize event, in milliseconds. Defau ...",l:"en/advanced/global.html#resize-time",a:"resize-time"},"13.9":{t:"SCROLL_TIME\r",p:"The throttle time for the scroll event, in milliseconds. Defau ...",l:"en/advanced/global.html#scroll-time",a:"scroll-time"},"13.10":{t:"SCROLL_GAP\r",p:"The boundary tolerance distance for the view event, in pixels. ...",l:"en/advanced/global.html#scroll-gap",a:"scroll-gap"},"13.11":{t:"AUTO_PLAYBACK_MAX\r",p:"The maximum record count for the auto-playback feature. Defaul ...",l:"en/advanced/global.html#auto-playback-max",a:"auto-playback-max"},"13.12":{t:"AUTO_PLAYBACK_MIN\r",p:"The minimum record duration for the auto-playback feature, in ...",l:"en/advanced/global.html#auto-playback-min",a:"auto-playback-min"},"13.13":{t:"AUTO_PLAYBACK_TIMEOUT\r",p:"The hide delay duration for the auto-playback feature, in mill ...",l:"en/advanced/global.html#auto-playback-timeout",a:"auto-playback-timeout"},"13.14":{t:"RECONNECT_TIME_MAX\r",p:"The maximum number of automatic reconnection attempts when a c ...",l:"en/advanced/global.html#reconnect-time-max",a:"reconnect-time-max"},"13.15":{t:"RECONNECT_SLEEP_TIME\r",p:"The delay time for automatic reconnection when a connection er ...",l:"en/advanced/global.html#reconnect-sleep-time",a:"reconnect-sleep-time"},"13.16":{t:"CONTROL_HIDE_TIME\r",p:"The auto-hide delay time for the bottom control bar, in millis ...",l:"en/advanced/global.html#control-hide-time",a:"control-hide-time"},"13.17":{t:"DBCLICK_TIME\r",p:"The delay time for the double-click event, in milliseconds. De ...",l:"en/advanced/global.html#dbclick-time",a:"dbclick-time"},"13.18":{t:"DBCLICK_FULLSCREEN\r",p:"On desktop, whether double-click toggles fullscreen. Default i ...",l:"en/advanced/global.html#dbclick-fullscreen",a:"dbclick-fullscreen"},"13.19":{t:"MOBILE_DBCLICK_PLAY\r",p:"On mobile, whether double-click toggles play/pause. Default is ...",l:"en/advanced/global.html#mobile-dbclick-play",a:"mobile-dbclick-play"},"13.20":{t:"MOBILE_CLICK_PLAY\r",p:"On mobile, whether single-click toggles play/pause. Default is ...",l:"en/advanced/global.html#mobile-click-play",a:"mobile-click-play"},"13.21":{t:"AUTO_ORIENTATION_TIME\r",p:"On mobile, the delay time for auto-rotation, in milliseconds. ...",l:"en/advanced/global.html#auto-orientation-time",a:"auto-orientation-time"},"13.22":{t:"INFO_LOOP_TIME\r",p:"The refresh interval for the info panel, in milliseconds. Defa ...",l:"en/advanced/global.html#info-loop-time",a:"info-loop-time"},"13.23":{t:"FAST_FORWARD_VALUE\r",p:"On mobile, the speed multiplier for long-press fast-forward. D ...",l:"en/advanced/global.html#fast-forward-value",a:"fast-forward-value"},"13.24":{t:"FAST_FORWARD_TIME\r",p:"On mobile, the delay time for long-press fast-forward, in mill ...",l:"en/advanced/global.html#fast-forward-time",a:"fast-forward-time"},"13.25":{t:"TOUCH_MOVE_RATIO\r",p:"On mobile, the speed multiplier for left/right swipe to seek. ...",l:"en/advanced/global.html#touch-move-ratio",a:"touch-move-ratio"},"13.26":{t:"VOLUME_STEP\r",p:"The step size for volume adjustment via keyboard shortcuts. De ...",l:"en/advanced/global.html#volume-step",a:"volume-step"},"13.27":{t:"SEEK_STEP\r",p:"The step size for seeking via keyboard shortcuts, in seconds. ...",l:"en/advanced/global.html#seek-step",a:"seek-step"},"13.28":{t:"PLAYBACK_RATE\r",p:"The built-in list of playback rates. Default is [0.5, 0.75, 1, ...",l:"en/advanced/global.html#playback-rate",a:"playback-rate"},"13.29":{t:"ASPECT_RATIO\r",p:"The built-in list of video aspect ratios. Default is ['default ...",l:"en/advanced/global.html#aspect-ratio",a:"aspect-ratio"},"13.30":{t:"FLIP\r",p:"The built-in list of video flip options. Default is ['normal', ...",l:"en/advanced/global.html#flip",a:"flip"},"13.31":{t:"FULLSCREEN_WEB_IN_BODY\r",p:"Whether to mount the player under the body element during web ...",l:"en/advanced/global.html#fullscreen-web-in-body",a:"fullscreen-web-in-body"},"13.32":{t:"LOG_VERSION\r",p:`Sets whether to print the player version. Default is true. +< ...`,l:"en/advanced/global.html#log-version",a:"log-version"},"13.33":{t:"USE_RAF\r",p:"Sets whether to use requestAnimationFrame. Default is false. C ...",l:"en/advanced/global.html#use-raf",a:"use-raf"},"13.34":{t:"REMOVE_SRC_WHEN_DESTROY\r",p:"Whether to remove the video's src attribute and call load() to ...",l:"en/advanced/global.html#remove-src-when-destroy",a:"remove-src-when-destroy"},"14.0":{t:"# Writing Plugins\r",p:"Once you are familiar with the player's properties, methods, a ...",l:"en/advanced/plugin.html",a:"writing-plugins"},"15.0":{t:"# Instance Properties\r",p:"Here, Instance Properties refer to the first-level properties ...",l:"en/advanced/property.html",a:"instance-properties"},"15.1":{t:"`play`\r",p:` +Type: Function + +Play the video. +<div className="run-c ...`,l:"en/advanced/property.html#play",a:"play"},"15.2":{t:"`pause`\r",p:` +Type: Function + +Pause the video. +<div className="run- ...`,l:"en/advanced/property.html#pause",a:"pause"},"15.3":{t:"`toggle`\r",p:` +Type: Function + +Toggle video play and pause. +<div classNam ...`,l:"en/advanced/property.html#toggle",a:"toggle"},"15.4":{t:"`destroy`\r",p:` +Type: Function +Parameter: Boolean + +Destroy the player. Accept ...`,l:"en/advanced/property.html#destroy",a:"destroy"},"15.5":{t:"`reset`\r",p:` +Type: Function + +Reset the player's video element: removes the ...`,l:"en/advanced/property.html#reset",a:"reset"},"15.6":{t:"`seek`\r",p:` +Type: Setter +Parameter: Number + +Seek to a specific time in th ...`,l:"en/advanced/property.html#seek",a:"seek"},"15.7":{t:"`forward`\r",p:` +Type: Setter +Parameter: Number + +Fast-forward the video time, ...`,l:"en/advanced/property.html#forward",a:"forward"},"15.8":{t:"`backward`\r",p:` +Type: Setter +Parameter: Number + +Rewind the video time, in sec ...`,l:"en/advanced/property.html#backward",a:"backward"},"15.9":{t:"`volume`\r",p:` +Type: Setter/Getter +Parameter: Number + +Set and get the video ...`,l:"en/advanced/property.html#volume",a:"volume"},"15.10":{t:"`url`\r",p:` +Type: Setter/Getter +Parameter: String + +Set and get the video ...`,l:"en/advanced/property.html#url",a:"url"},"15.11":{t:"`switch`\r",p:` +Type: Setter +Parameter: String + +Set the video URL. Similar to ...`,l:"en/advanced/property.html#switch",a:"switch"},"15.12":{t:"`switchUrl`\r",p:` +Type: Function +Parameter: String + +Set the video URL. Similar ...`,l:"en/advanced/property.html#switchurl",a:"switchurl"},"15.13":{t:"`switchQuality`\r",p:` +Type: Function +Parameter: String + +Sets the video quality URL. ...`,l:"en/advanced/property.html#switchquality",a:"switchquality"},"15.14":{t:"`muted`\r",p:` +Type: Setter/Getter +Parameter: Boolean + +Sets or gets whether ...`,l:"en/advanced/property.html#muted",a:"muted"},"15.15":{t:"`currentTime`\r",p:` +Type: Setter/Getter +Parameter: Number + +Sets or gets the curre ...`,l:"en/advanced/property.html#currenttime",a:"currenttime"},"15.16":{t:"`duration`\r",p:` +Type: Getter + +Gets the duration of the video. +<div classNa ...`,l:"en/advanced/property.html#duration",a:"duration"},"15.17":{t:"`screenshot`\r",p:` +Type: Function + +Downloads a screenshot of the current video f ...`,l:"en/advanced/property.html#screenshot",a:"screenshot"},"15.18":{t:"`getDataURL`\r",p:` +Type: Function + +Gets the base64 URL of a screenshot of the cu ...`,l:"en/advanced/property.html#getdataurl",a:"getdataurl"},"15.19":{t:"`getBlobUrl`\r",p:` +Type: Function + +Gets the blob URL of a screenshot of the curr ...`,l:"en/advanced/property.html#getbloburl",a:"getbloburl"},"15.20":{t:"`fullscreen`\r",p:` +Type: Setter/Getter +Parameter: Boolean + +Sets or gets the play ...`,l:"en/advanced/property.html#fullscreen",a:"fullscreen"},"15.21":{t:"`fullscreenWeb`\r",p:` +Type: Setter/Getter +Parameter: Boolean + +Sets or gets the play ...`,l:"en/advanced/property.html#fullscreenweb",a:"fullscreenweb"},"15.22":{t:"`pip`\r",p:` +Type: Setter/Getter +Parameter: Boolean + +Sets or gets the play ...`,l:"en/advanced/property.html#pip",a:"pip"},"15.23":{t:"`poster`\r",p:` +Type: Setter/Getter +Parameter: String + +Sets and gets the vide ...`,l:"en/advanced/property.html#poster",a:"poster"},"15.24":{t:"`mini`\r",p:` +Type: Setter/Getter +Parameter: Boolean + +Sets and gets the pla ...`,l:"en/advanced/property.html#mini",a:"mini"},"15.25":{t:"`playing`\r",p:` +Type: Getter +Parameter: Boolean + +Gets whether the video is cu ...`,l:"en/advanced/property.html#playing",a:"playing"},"15.26":{t:"`state`\r",p:` +Type: Setter/Getter +Parameter: String + +Gets or sets the playe ...`,l:"en/advanced/property.html#state",a:"state"},"15.27":{t:"`autoSize`\r",p:` +Type: Function + +Sets whether the video adapts its size automa ...`,l:"en/advanced/property.html#autosize",a:"autosize"},"15.28":{t:"`rect`\r",p:` +Type: Getter + +Gets the player's dimensions and coordinate inf ...`,l:"en/advanced/property.html#rect",a:"rect"},"15.29":{t:"`bottom` / `top` / `left` / `right` / `x` / `y` / `width` / `height`\r",p:` +Type: Getter + +These properties provide quick access to rect: + ...`,l:"en/advanced/property.html#bottom-top-left-right-x-y-width-height",a:"bottom-top-left-right-x-y-width-height"},"15.30":{t:"`flip`\r",p:` +Type: Setter/Getter +Parameter: String + +Sets and gets the play ...`,l:"en/advanced/property.html#flip",a:"flip"},"15.31":{t:"`playbackRate`\r",p:` +Type: Setter/Getter +Parameter: Number + +Sets and gets the play ...`,l:"en/advanced/property.html#playbackrate",a:"playbackrate"},"15.32":{t:"`aspectRatio`\r",p:` +Type: Setter/Getter +Parameter: String + +Sets and gets the play ...`,l:"en/advanced/property.html#aspectratio",a:"aspectratio"},"15.33":{t:"`autoHeight`\r",p:` +Type: Function + +When the container only has a defined width, ...`,l:"en/advanced/property.html#autoheight",a:"autoheight"},"15.34":{t:"`attr`\r",p:` +Type: Function +Parameter: String + +Dynamically get and set att ...`,l:"en/advanced/property.html#attr",a:"attr"},"15.35":{t:"`type`\r",p:` +Type: Setter/Getter +Parameter: String + +Dynamically get and se ...`,l:"en/advanced/property.html#type",a:"type"},"15.36":{t:"`theme`\r",p:` +Type: Setter/Getter +Parameter: String + +Dynamically get and se ...`,l:"en/advanced/property.html#theme",a:"theme"},"15.37":{t:"`airplay`\r",p:` +Type: Function + +Initiate AirPlay. +<div className="run ...`,l:"en/advanced/property.html#airplay",a:"airplay"},"15.38":{t:"`loaded`\r",p:` +Type: Getter + +The proportion of video buffered, ranging from ...`,l:"en/advanced/property.html#loaded",a:"loaded"},"15.39":{t:"`loadedTime`\r",p:` +Type: Getter + +The buffered media duration in seconds. Typical ...`,l:"en/advanced/property.html#loadedtime",a:"loadedtime"},"15.40":{t:"`played`\r",p:` +Type: Getter + +The proportion of video played, ranging from [0 ...`,l:"en/advanced/property.html#played",a:"played"},"15.41":{t:"`proxy`\r",p:` +Type: Function + +A proxy function for DOM events, essentially ...`,l:"en/advanced/property.html#proxy",a:"proxy"},"15.42":{t:"`query`\r",p:` +Type: Function + +A DOM query function, similar to document.que ...`,l:"en/advanced/property.html#query",a:"query"},"15.43":{t:"`video`\r",p:` +Type: Element + +Quickly returns the player's video element. +&l ...`,l:"en/advanced/property.html#video",a:"video"},"15.44":{t:"`cssVar`\r",p:` +Type: Function + +Dynamically get or set CSS variables. +<div ...`,l:"en/advanced/property.html#cssvar",a:"cssvar"},"15.45":{t:"`quality`\r",p:` +Type: Setter +Parameter: Array + +Dynamically set the quality li ...`,l:"en/advanced/property.html#quality",a:"quality"},"15.46":{t:"`thumbnails`\r",p:` +Type: Setter/Getter +Parameter: Object + +Dynamically set thumbn ...`,l:"en/advanced/property.html#thumbnails",a:"thumbnails"},"15.47":{t:"`subtitleOffset`\r",p:` +Type: Setter/Getter +Parameter: Number + +Dynamically set subtit ...`,l:"en/advanced/property.html#subtitleoffset",a:"subtitleoffset"},"16.0":{t:"# Context Menu\r",p:"\r",l:"en/component/contextmenu.html",a:"context-menu"},"16.1":{t:"Configuration\r",p:` + + +Property +Type +Description + + + + +disable +Boolean +Whether to di ...`,l:"en/component/contextmenu.html#configuration",a:"configuration"},"16.2":{t:"Creation\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/contextmenu.html#creation",a:"creation"},"16.3":{t:"Addition\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/contextmenu.html#addition",a:"addition"},"16.4":{t:"Deletion\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/contextmenu.html#deletion",a:"deletion"},"16.5":{t:"Update\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/contextmenu.html#update",a:"update"},"17.0":{t:"# Controls\r",p:"\r",l:"en/component/controls.html",a:"controls"},"17.1":{t:"Configuration\r",p:` + + +Property +Type +Description + + + + +disable +Boolean +Whether to di ...`,l:"en/component/controls.html#configuration",a:"configuration"},"17.2":{t:"Creation\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/controls.html#creation",a:"creation"},"17.3":{t:"Adding\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/controls.html#adding",a:"adding"},"17.4":{t:"Removal\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/controls.html#removal",a:"removal"},"17.5":{t:"Updating\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/controls.html#updating",a:"updating"},"18.0":{t:"# Layers\r",p:"\r",l:"en/component/layers.html",a:"layers"},"18.1":{t:"Configuration\r",p:` + + +Property +Type +Description + + + + +disable +Boolean +Whether to di ...`,l:"en/component/layers.html#configuration",a:"configuration"},"18.2":{t:"Creation\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/layers.html#creation",a:"creation"},"18.3":{t:"Addition\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/layers.html#addition",a:"addition"},"18.4":{t:"Removal\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/layers.html#removal",a:"removal"},"18.5":{t:"Update\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/layers.html#update",a:"update"},"19.0":{t:"# Settings Panel\r",p:"\r",l:"en/component/setting.html",a:"settings-panel"},"19.1":{t:"Built-in\r",p:"First, you need to open the settings panel. It comes with four ...",l:"en/component/setting.html#built-in",a:"built-in"},"19.2":{t:"Create - Button\r",p:` + + +Property +Type +Description + + + + +html +String, Element +The DOM ...`,l:"en/component/setting.html#create-button",a:"create-button"},"19.3":{t:"Create - Selection List\r",p:` + + +Property +Type +Description + + + + +html +String, Element +The DOM ...`,l:"en/component/setting.html#create-selection-list",a:"create-selection-list"},"19.4":{t:"Create - Nested List\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/setting.html#create-nested-list",a:"create-nested-list"},"19.5":{t:"Create - Toggle Button\r",p:` + + +Property +Type +Description + + + + +html +String, Element +DOM elem ...`,l:"en/component/setting.html#create-toggle-button",a:"create-toggle-button"},"19.6":{t:"Create - Range Slider\r",p:` + + +Property +Type +Description + + + + +html +String, Element +DOM elem ...`,l:"en/component/setting.html#create-range-slider",a:"create-range-slider"},"19.7":{t:"Add\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/setting.html#add",a:"add"},"19.8":{t:"Remove\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/setting.html#remove",a:"remove"},"19.9":{t:"Update\r",p:"<div className="run-code">▶ Run Code</div&g ...",l:"en/component/setting.html#update",a:"update"},"20.0":{t:"# Installation and Usage\r",p:"\r",l:"en/index.html",a:"installation-and-usage"},"20.1":{t:"Installation\r",p:`::: code-group +npm install artplayer + +yarn add artplayer + +pnpm ...`,l:"en/index.html#installation",a:"installation"},"20.2":{t:"`CDN`\r",p:`::: code-group +https://cdn.jsdelivr.net/npm/artplayer/dist/art ...`,l:"en/index.html#cdn",a:"cdn"},"20.3":{t:"Usage\r",p:`::: code-group +<html> + <head> + <title ...`,l:"en/index.html#usage",a:"usage"},"20.4":{t:"`Vue.js`\r",p:`::: code-group +<template> + <div ref="$container ...`,l:"en/index.html#vue-js",a:"vue-js"},"20.5":{t:"`React.js`\r",p:`::: code-group +import Artplayer from 'artplayer' +import { useE ...`,l:"en/index.html#react-js",a:"react-js"},"20.6":{t:"TypeScript\r",p:"The artplayer.d.ts file is automatically imported when you imp ...",l:"en/index.html#typescript",a:"typescript"},"20.7":{t:"Vue.js\r",p:` + +`,l:"en/index.html#vue-js",a:"vue-js"},"20.8":{t:"React.js\r",p:`import Artplayer from 'artplayer'; +const art = useRef<Artpl ...`,l:"en/index.html#react-js",a:"react-js"},"20.9":{t:"Option\r",p:`You can also use the type for the options. +import Artplayer, { ...`,l:"en/index.html#option",a:"option"},"20.10":{t:"JavaScript\r",p:"Sometimes your js files may lose TypeScript type hints. In suc ...",l:"en/index.html#javascript",a:"javascript"},"20.11":{t:"Legacy Browsers\r",p:"The production build artplayer.js only supports the latest maj ...",l:"en/index.html#legacy-browsers",a:"legacy-browsers"},"20.12":{t:"ECMAScript Module\r",p:`::: tip ESM Demo: +https://artplayer.org/esm.html +::: +Starting ...`,l:"en/index.html#ecmascript-module",a:"ecmascript-module"},"20.13":{t:"Custom userAgent\r",p:"Currently, the detection of whether a device is mobile is not ...",l:"en/index.html#custom-useragent",a:"custom-useragent"},"21.0":{t:"# Danmuku",p:`中文说明 +Display timed comments over the video, with an input pane ...`,l:"en/plugin/danmuku.html",a:"danmuku"},"21.1":{t:"Demo",p:`Open the full example. +Run Code examples below use the site's ...`,l:"en/plugin/danmuku.html#demo",a:"demo"},"21.2":{t:"Installation",p:`::: code-group +npm install artplayer artplayer-plugin-danmuku + ...`,l:"en/plugin/danmuku.html#installation",a:"installation"},"21.3":{t:"CDN",p:`::: code-group +https://cdn.jsdelivr.net/npm/artplayer-plugin-d ...`,l:"en/plugin/danmuku.html#cdn",a:"cdn"},"21.4":{t:"Comment structure",p:"Only text is required. Leading and trailing whitespace is remo ...",l:"en/plugin/danmuku.html#comment-structure",a:"comment-structure"},"21.5":{t:"All options",p:"Pass an option object to the factory. At runtime, {} is valid ...",l:"en/plugin/danmuku.html#all-options",a:"all-options"},"21.6":{t:"Array, XML and asynchronous input",p:"XML input uses Bilibili's comment format. Fetching a cross-ori ...",l:"en/plugin/danmuku.html#array-xml-and-asynchronous-input",a:"array-xml-and-asynchronous-input"},"21.7":{t:"Lifecycle callbacks",p:"Input-panel submissions run beforeEmit → filter → beforeVisibl ...",l:"en/plugin/danmuku.html#lifecycle-callbacks",a:"lifecycle-callbacks"},"21.8":{t:"Methods and state",p:"The registered plugin is available synchronously as art.plugin ...",l:"en/plugin/danmuku.html#methods-and-state",a:"methods-and-state"},"21.9":{t:"Loading and configuration",p:"Changing config({ danmuku: input }) does not load the new inpu ...",l:"en/plugin/danmuku.html#loading-and-configuration",a:"loading-and-configuration"},"21.10":{t:"External mount",p:"Create a separate mount element before constructing the plugin ...",l:"en/plugin/danmuku.html#external-mount",a:"external-mount"},"21.11":{t:"Heatmap",p:"Set heatmap: true at construction to sample the queue automati ...",l:"en/plugin/danmuku.html#heatmap",a:"heatmap"},"21.12":{t:"Events",p:"Subscribe with art.on(name, callback) and remove subscriptions ...",l:"en/plugin/danmuku.html#events",a:"events"},"21.13":{t:"TypeScript",p:"The root and /legacy entrypoints keep the npm 5.3.0 declaratio ...",l:"en/plugin/danmuku.html#typescript",a:"typescript"},"22.0":{t:"# Language Settings\r",p:`::: danger +Due to the increasing number of bundled multilingua ...`,l:"en/start/i18n.html",a:"language-settings"},"22.1":{t:"Default Languages\r",p:"The default languages are: en, zh-cn. No manual import is requ ...",l:"en/start/i18n.html#default-languages",a:"default-languages"},"22.2":{t:"Importing Languages\r",p:"Language files before bundling are located at: artplayer/src/i ...",l:"en/start/i18n.html#importing-languages",a:"importing-languages"},"22.3":{t:"Adding a New Language\r",p:`var art = new Artplayer({ + container: '.artplayer-app', + ...`,l:"en/start/i18n.html#adding-a-new-language",a:"adding-a-new-language"},"22.4":{t:"Modifying a Language\r",p:`import zhTw from 'artplayer/i18n/zh-tw'; + +var art = new Artpla ...`,l:"en/start/i18n.html#modifying-a-language",a:"modifying-a-language"},"23.0":{t:"# Basic Options\r",p:"\r",l:"en/start/option.html",a:"basic-options"},"23.1":{t:"`container`\r",p:` +Type: String, Element +Default: #artplayer + +The DOM container ...`,l:"en/start/option.html#container",a:"container"},"23.2":{t:"`url`\r",p:` +Type: String +Default: '' + +The video source URL. +<div class ...`,l:"en/start/option.html#url",a:"url"},"23.3":{t:"`id`\r",p:` +Type: String +Default: '' + +The unique identifier for the playe ...`,l:"en/start/option.html#id",a:"id"},"23.4":{t:"`onReady`\r",p:` +Type: Function +Default: undefined + +The constructor accepts a ...`,l:"en/start/option.html#onready",a:"onready"},"23.5":{t:"`poster`\r",p:` +Type: String +Default: '' + +The video poster image, which only ...`,l:"en/start/option.html#poster",a:"poster"},"23.6":{t:"`theme`\r",p:` +Type: String +Default: #f00 + +The player's theme color, current ...`,l:"en/start/option.html#theme",a:"theme"},"23.7":{t:"`volume`\r",p:` +Type: Number +Default: 0.7 + +The player's default volume. +<d ...`,l:"en/start/option.html#volume",a:"volume"},"23.8":{t:"`isLive`\r",p:` +Type: Boolean +Default: false + +Enable live streaming mode. Thi ...`,l:"en/start/option.html#islive",a:"islive"},"23.9":{t:"`muted`\r",p:` +Type: Boolean +Default: false + +Whether to start muted by defau ...`,l:"en/start/option.html#muted",a:"muted"},"23.10":{t:"`autoplay`\r",p:` +Type: Boolean +Default: false + +Whether to autoplay. +<div cl ...`,l:"en/start/option.html#autoplay",a:"autoplay"},"23.11":{t:"`autoSize`\r",p:` +Type: Boolean +Default: false + +By default, the player's dimens ...`,l:"en/start/option.html#autosize",a:"autosize"},"23.12":{t:"`autoMini`\r",p:` +Type: Boolean +Default: false + +Automatically enters Mini Playe ...`,l:"en/start/option.html#automini",a:"automini"},"23.13":{t:"`loop`\r",p:` +Type: Boolean +Default: false + +Whether to loop playback. +<d ...`,l:"en/start/option.html#loop",a:"loop"},"23.14":{t:"`flip`\r",p:` +Type: Boolean +Default: false + +Whether to display the video fl ...`,l:"en/start/option.html#flip",a:"flip"},"23.15":{t:"`playbackRate`\r",p:` +Type: Boolean +Default: false + +Whether to display the video pl ...`,l:"en/start/option.html#playbackrate",a:"playbackrate"},"23.16":{t:"`aspectRatio`\r",p:` +Type: Boolean +Default: false + +Whether to display the video as ...`,l:"en/start/option.html#aspectratio",a:"aspectratio"},"23.17":{t:"`screenshot`\r",p:` +Type: Boolean +Default: false + +Whether to display the Screensh ...`,l:"en/start/option.html#screenshot",a:"screenshot"},"23.18":{t:"`setting`\r",p:` +Type: Boolean +Default: false + +Whether to display the toggle b ...`,l:"en/start/option.html#setting",a:"setting"},"23.19":{t:"`hotkey`\r",p:` +Type: Boolean +Default: true + +Whether to use hotkeys. +<div ...`,l:"en/start/option.html#hotkey",a:"hotkey"},"23.20":{t:"`pip`\r",p:` +Type: Boolean +Default: false + +Whether to display the Picture- ...`,l:"en/start/option.html#pip",a:"pip"},"23.21":{t:"`mutex`\r",p:` +Type: Boolean +Default: true + +If multiple players exist on the ...`,l:"en/start/option.html#mutex",a:"mutex"},"23.22":{t:"`backdrop`\r",p:` +Type: Boolean +Default: true + +Whether to enable the backdrop b ...`,l:"en/start/option.html#backdrop",a:"backdrop"},"23.23":{t:"`fullscreen`\r",p:` +Type: Boolean +Default: false + +Whether to display the player W ...`,l:"en/start/option.html#fullscreen",a:"fullscreen"},"23.24":{t:"`fullscreenWeb`\r",p:` +Type: Boolean +Default: false + +Whether to display the player W ...`,l:"en/start/option.html#fullscreenweb",a:"fullscreenweb"},"23.25":{t:"`subtitleOffset`\r",p:` +Type: Boolean +Default: false + +Subtitle time offset, ranging f ...`,l:"en/start/option.html#subtitleoffset",a:"subtitleoffset"},"23.26":{t:"`miniProgressBar`\r",p:` +Type: Boolean +Default: false + +A mini progress bar that only a ...`,l:"en/start/option.html#miniprogressbar",a:"miniprogressbar"},"23.27":{t:"`useSSR`\r",p:` +Type: Boolean +Default: false + +Whether to use SSR (Server-Side ...`,l:"en/start/option.html#usessr",a:"usessr"},"23.28":{t:"`playsInline`\r",p:` +Type: Boolean +Default: true + +Whether to use playsInline mode ...`,l:"en/start/option.html#playsinline",a:"playsinline"},"23.29":{t:"`layers`\r",p:` +Type: Array +Default: [] + +Initialize custom layers. +<div cl ...`,l:"en/start/option.html#layers",a:"layers"},"23.30":{t:"`settings`\r",p:` +Type: Array +Default: [] + +Initialize custom settings panels. +& ...`,l:"en/start/option.html#settings",a:"settings"},"23.31":{t:"`contextmenu`\r",p:` +Type: Array +Default: [] + +Initialize custom context menus. +< ...`,l:"en/start/option.html#contextmenu",a:"contextmenu"},"23.32":{t:"`controls`\r",p:` +Type: Array +Default: [] + +Initialize custom bottom control bar ...`,l:"en/start/option.html#controls",a:"controls"},"23.33":{t:"`quality`\r",p:` +Type: Array +Default: [] + +Whether to display the Quality Selec ...`,l:"en/start/option.html#quality",a:"quality"},"23.34":{t:"`highlight`\r",p:` +Type: Array +Default: [] + +Display Highlight Information on the ...`,l:"en/start/option.html#highlight",a:"highlight"},"23.35":{t:"`plugins`\r",p:` +Type: Array +Default: [] + +Initialize custom plugins. +<div c ...`,l:"en/start/option.html#plugins",a:"plugins"},"23.36":{t:"`thumbnails`\r",p:` +Type: Object +Default: {} + +Set Preview Thumbnails on the progr ...`,l:"en/start/option.html#thumbnails",a:"thumbnails"},"23.37":{t:"`subtitle`\r",p:` +Type: Object +Default: {} + +Set video subtitles. Supported subt ...`,l:"en/start/option.html#subtitle",a:"subtitle"},"23.38":{t:"`moreVideoAttr`\r",p:` +Type: Object +Default: {'controls': false, 'preload': 'metadat ...`,l:"en/start/option.html#morevideoattr",a:"morevideoattr"},"23.39":{t:"`icons`\r",p:` +Type: Object +Default: {} + +Used to replace default icons. Supp ...`,l:"en/start/option.html#icons",a:"icons"},"23.40":{t:"`type`\r",p:` +Type: String +Default: '' + +Used to specify the video format. I ...`,l:"en/start/option.html#type",a:"type"},"23.41":{t:"`customType`\r",p:` +Type: Object +Default: {} + +Matches based on the video's type a ...`,l:"en/start/option.html#customtype",a:"customtype"},"23.42":{t:"`lang`\r",p:` +Type: String +Default: navigator.language.toLowerCase() + +The d ...`,l:"en/start/option.html#lang",a:"lang"},"23.43":{t:"`i18n`\r",p:` +Type: Object +Default: {} + +Custom i18n configuration. This con ...`,l:"en/start/option.html#i18n",a:"i18n"},"23.44":{t:"`lock`\r",p:` +Type: Boolean +Default: false + +Whether to display a lock butto ...`,l:"en/start/option.html#lock",a:"lock"},"23.45":{t:"`gesture`\r",p:` +Type: Boolean +Default: true + +Whether to enable gesture events ...`,l:"en/start/option.html#gesture",a:"gesture"},"23.46":{t:"`fastForward`\r",p:` +Type: Boolean +Default: false + +Whether to add a long-press vid ...`,l:"en/start/option.html#fastforward",a:"fastforward"},"23.47":{t:"`autoPlayback`\r",p:` +Type: Boolean +Default: false + +Whether to use the automatic pl ...`,l:"en/start/option.html#autoplayback",a:"autoplayback"},"23.48":{t:"`autoOrientation`\r",p:` +Type: Boolean +Default: false + +Whether to rotate the player in ...`,l:"en/start/option.html#autoorientation",a:"autoorientation"},"23.49":{t:"`airplay`\r",p:` +Type: Boolean +Default: false + +Whether to display the airplay ...`,l:"en/start/option.html#airplay",a:"airplay"},"23.50":{t:"`cssVar`\r",p:` +Type: Object +Default: {} + +Used to modify the built-in CSS var ...`,l:"en/start/option.html#cssvar",a:"cssvar"},"23.51":{t:"`proxy`\r",p:` +Type: function +Default: undefined + +The function can return a ...`,l:"en/start/option.html#proxy",a:"proxy"},"24.0":{t:"# 安装使用\r",p:"\r",l:"index.html",a:"安装使用"},"24.1":{t:"安装\r",p:`::: code-group +npm install artplayer + +yarn add artplayer + +pnpm ...`,l:"index.html#安装",a:"安装"},"24.2":{t:"`CDN`\r",p:`::: code-group +https://cdn.jsdelivr.net/npm/artplayer/dist/art ...`,l:"index.html#cdn",a:"cdn"},"24.3":{t:"使用\r",p:`::: code-group +<html> + <head> + <title ...`,l:"index.html#使用",a:"使用"},"24.4":{t:"`Vue.js`\r",p:`::: code-group +<template> + <div ref="$container ...`,l:"index.html#vue-js",a:"vue-js"},"24.5":{t:"`React.js`\r",p:`::: code-group +import Artplayer from 'artplayer' +import { useE ...`,l:"index.html#react-js",a:"react-js"},"24.6":{t:"TypeScript\r",p:`导入 Artplayer 时会自动导入的 artplayer.d.ts +`,l:"index.html#typescript",a:"typescript"},"24.7":{t:"Vue.js\r",p:` + +`,l:"index.html#vue-js",a:"vue-js"},"24.8":{t:"React.js\r",p:`import Artplayer from 'artplayer'; +const art = useRef<Artpl ...`,l:"index.html#react-js",a:"react-js"},"24.9":{t:"Option\r",p:`你也可以使用选项的类型 +import Artplayer, { type Option } from 'artplayer' ...`,l:"index.html#option",a:"option"},"24.10":{t:"JavaScript\r",p:`有时你的 js 文件会丢失 TypeScript 的类型提示,这时候你可以手动导入类型 +变量: +/** + * @type { ...`,l:"index.html#javascript",a:"javascript"},"24.11":{t:"古老的浏览器\r",p:`生产构建的 artplayer.js 只兼容最新一个主版本的 Chrome:last 1 Chrome version +对于 ...`,l:"index.html#古老的浏览器",a:"古老的浏览器"},"24.12":{t:"ECMAScript Module\r",p:`::: tip ESM Demo: +https://artplayer.org/esm.html +::: +从 5.2.6 开 ...`,l:"index.html#ecmascript-module",a:"ecmascript-module"},"24.13":{t:"自定义 userAgent\r",p:"目前对于是否移动设备的判断并不准确,有时候希望通过改变 userAgent 来调整播放器的UI, 所以在 5.2.4 开始新 ...",l:"index.html#自定义-useragent",a:"自定义-useragent"},"25.0":{t:"# 弹幕库",p:`English guide +本文描述当前重构分支。/runtime 类型入口与本轮修复尚未发布到 npm;CDN 默认仍加载 ...`,l:"plugin/danmuku.html",a:"弹幕库"},"25.1":{t:"演示",p:`👉 查看完整演示 +下方 Run Code 使用本站构建的插件与样本。接入自己的应用时,请替换容器和媒体 URL。 +`,l:"plugin/danmuku.html#演示",a:"演示"},"25.2":{t:"安装",p:`::: code-group +npm install artplayer-plugin-danmuku + +yarn add ...`,l:"plugin/danmuku.html#安装",a:"安装"},"25.3":{t:"CDN",p:`::: code-group +https://cdn.jsdelivr.net/npm/artplayer-plugin-d ...`,l:"plugin/danmuku.html#cdn",a:"cdn"},"25.4":{t:"弹幕结构",p:`每一个弹幕是一个对象,多个弹幕组成的数组就是弹幕库,通常只需要text就可以发送一个弹幕,其余都是非必要参数 +{ + t ...`,l:"plugin/danmuku.html#弹幕结构",a:"弹幕结构"},"25.5":{t:"全部选项",p:"工厂需要一个配置对象。运行时可传 {},每个字段都有默认值;旧版根入口类型仍要求 danmuku,旧项目继续传入它即可。准确 ...",l:"plugin/danmuku.html#全部选项",a:"全部选项"},"25.6":{t:"生命周期",p:"filter 同步执行,不应返回 Promise;beforeEmit 可异步,但只有严格返回 true 才发送。befor ...",l:"plugin/danmuku.html#生命周期",a:"生命周期"},"25.7":{t:"使用弹幕数组",p:"<div className="run-code" data-libs="./uncom ...",l:"plugin/danmuku.html#使用弹幕数组",a:"使用弹幕数组"},"25.8":{t:"使用弹幕 XML",p:`弹幕 XML 文件,和 Bilibili 网站的弹幕格式一致 +<div className="run-cod ...`,l:"plugin/danmuku.html#使用弹幕-xml",a:"使用弹幕-xml"},"25.9":{t:"使用异步返回",p:`也可以直接传入 Promise<弹幕数组>,或传入同步返回数组的函数。输入函数没有配置对象作为 this。 +&l ...`,l:"plugin/danmuku.html#使用异步返回",a:"使用异步返回"},"25.10":{t:"`hide/show`",p:`通过方法 hide 和 show 进行隐藏或者显示弹幕 +<div className="run-code&q ...`,l:"plugin/danmuku.html#hide-show",a:"hide-show"},"25.11":{t:"`isHide`",p:`通过属性 isHide 判断当前弹幕是隐藏或者显示 +<div className="run-code&quo ...`,l:"plugin/danmuku.html#ishide",a:"ishide"},"25.12":{t:"`emit`",p:"通过方法 emit 向队列添加一条弹幕。它返回 Promise;完成表示入队处理完成,不代表已经显示。请用 await 或 ...",l:"plugin/danmuku.html#emit",a:"emit"},"25.13":{t:"`config`",p:"通过方法 config 同步合并弹幕配置。更改 danmuku 不会自动重新加载,之后调用无参数的 load() 才会替换队 ...",l:"plugin/danmuku.html#config",a:"config"},"25.14":{t:"`load`",p:"通过 load 重载、切换或追加弹幕库,返回 Promise。无参数 load() 在读取配置中的输入成功后替换队列;传入 ...",l:"plugin/danmuku.html#load",a:"load"},"25.15":{t:"`reset`",p:`用于清空当前显示的弹幕并将队列项重置为等待状态。它不删除队列;后续播放仍可按时间显示弹幕。 +<div classNam ...`,l:"plugin/danmuku.html#reset",a:"reset"},"25.16":{t:"`mount`",p:`在初始化弹幕插件的时候,是可以指定弹幕发射器的挂载位置的,默认是挂载在控制栏的中部,你也可以把它挂载在播放器以外的地方。 +当 ...`,l:"plugin/danmuku.html#mount",a:"mount"},"25.17":{t:"`option`",p:`用于获取当前弹幕配置,返回实时配置对象。更新配置请调用 config,避免直接修改对象而绕过校验和 UI 同步。 +<d ...`,l:"plugin/danmuku.html#option",a:"option"},"25.18":{t:"事件",p:"使用 art.on(name, callback) 订阅,art.off(name, callback) 取消订阅。事件不会 ...",l:"plugin/danmuku.html#事件",a:"事件"},"25.19":{t:"`isStop` 与方法返回值",p:"art.plugins.artplayerPluginDanmuku.isStop 是实时只读的停止状态,与 isHide ...",l:"plugin/danmuku.html#isstop-与方法返回值",a:"isstop-与方法返回值"},"25.20":{t:"热力图",p:`初始化时设置 heatmap: true,按队列自动采样;直播不绘制热力图。 +本轮修复了密集弹幕曲线过高遮挡视频的问题(is ...`,l:"plugin/danmuku.html#热力图",a:"热力图"},"25.21":{t:"TypeScript",p:`根入口和 /legacy 保留 npm 5.3.0 的历史声明形状,其中部分方法返回值与真实运行时不一致。 +当前分支新增 / ...`,l:"plugin/danmuku.html#typescript",a:"typescript"},"26.0":{t:"# 语言设置\r",p:`::: danger +鉴于捆绑的多国语言越来越多, 从 5.1.0 版本开始, artplayer.js 核心代码除了包含 ...`,l:"start/i18n.html",a:"语言设置"},"26.1":{t:"默认语言\r",p:`默认语言有: en, zh-cn, 无需手动导入 +var art = new Artplayer({ + contain ...`,l:"start/i18n.html#默认语言",a:"默认语言"},"26.2":{t:"导入语言\r",p:`打包前的语言文件存放于: artplayer/src/i18n/*.js, 欢迎来添加你的语言 +打包后的语言文件存放于: a ...`,l:"start/i18n.html#导入语言",a:"导入语言"},"26.3":{t:"新增语言\r",p:`var art = new Artplayer({ + container: '.artplayer-app', + ...`,l:"start/i18n.html#新增语言",a:"新增语言"},"26.4":{t:"修改语言\r",p:`import zhTw from 'artplayer/i18n/zh-tw'; + +var art = new Artpla ...`,l:"start/i18n.html#修改语言",a:"修改语言"},"27.0":{t:"# 基础选项\r",p:"\r",l:"start/option.html",a:"基础选项"},"27.1":{t:"`container`\r",p:` +Type: String, Element +Default: #artplayer + +播放器挂载的 DOM 容器 +< ...`,l:"start/option.html#container",a:"container"},"27.2":{t:"`url`\r",p:` +Type: String +Default: '' + +视频源地址 +<div className="run-c ...`,l:"start/option.html#url",a:"url"},"27.3":{t:"`id`\r",p:` +Type: String +Default: '' + +播放器的唯一标识,目前只用于记忆播放 autoplayback +< ...`,l:"start/option.html#id",a:"id"},"27.4":{t:"`onReady`\r",p:` +Type: Function +Default: undefined + +构造函数接受一个函数作为第二个参数,播放器初始化成功 ...`,l:"start/option.html#onready",a:"onready"},"27.5":{t:"`poster`\r",p:` +Type: String +Default: '' + +视频的海报,只会出现在播放器初始化且未播放的状态下 +<div c ...`,l:"start/option.html#poster",a:"poster"},"27.6":{t:"`theme`\r",p:` +Type: String +Default: #f00 + +播放器主题颜色,目前用于 进度条 和 高亮元素 上 +<div ...`,l:"start/option.html#theme",a:"theme"},"27.7":{t:"`volume`\r",p:` +Type: Number +Default: 0.7 + +播放器的默认音量 +<div className="r ...`,l:"start/option.html#volume",a:"volume"},"27.8":{t:"`isLive`\r",p:` +Type: Boolean +Default: false + +使用直播模式,会隐藏进度条和播放时间 +<div clas ...`,l:"start/option.html#islive",a:"islive"},"27.9":{t:"`muted`\r",p:` +Type: Boolean +Default: false + +是否默认静音 +<div className=" ...`,l:"start/option.html#muted",a:"muted"},"27.10":{t:"`autoplay`\r",p:` +Type: Boolean +Default: false + +是否自动播放 +<div className=" ...`,l:"start/option.html#autoplay",a:"autoplay"},"27.11":{t:"`autoSize`\r",p:` +Type: Boolean +Default: false + +播放器的尺寸默认会填充整个 container 容器尺寸,所以 ...`,l:"start/option.html#autosize",a:"autosize"},"27.12":{t:"`autoMini`\r",p:` +Type: Boolean +Default: false + +当播放器滚动到浏览器视口以外时,自动进入 迷你播放 模式 +&l ...`,l:"start/option.html#automini",a:"automini"},"27.13":{t:"`loop`\r",p:` +Type: Boolean +Default: false + +是否循环播放 +<div className=" ...`,l:"start/option.html#loop",a:"loop"},"27.14":{t:"`flip`\r",p:` +Type: Boolean +Default: false + +是否显示视频翻转功能,目前只出现在 设置面板 和 右键菜单 里 ...`,l:"start/option.html#flip",a:"flip"},"27.15":{t:"`playbackRate`\r",p:` +Type: Boolean +Default: false + +是否显示视频播放速度功能,会出现在 设置面板 和 右键菜单 里 ...`,l:"start/option.html#playbackrate",a:"playbackrate"},"27.16":{t:"`aspectRatio`\r",p:` +Type: Boolean +Default: false + +是否显示视频长宽比功能,会出现在 设置面板 和 右键菜单 里 + ...`,l:"start/option.html#aspectratio",a:"aspectratio"},"27.17":{t:"`screenshot`\r",p:` +Type: Boolean +Default: false + +是否在底部控制栏里显示 视频截图 功能 +<div cla ...`,l:"start/option.html#screenshot",a:"screenshot"},"27.18":{t:"`setting`\r",p:` +Type: Boolean +Default: false + +是否在底部控制栏里显示 设置面板 的开关按钮 +<div ...`,l:"start/option.html#setting",a:"setting"},"27.19":{t:"`hotkey`\r",p:` +Type: Boolean +Default: true + +是否使用快捷键 +<div className=" ...`,l:"start/option.html#hotkey",a:"hotkey"},"27.20":{t:"`pip`\r",p:` +Type: Boolean +Default: false + +是否在底部控制栏里显示 画中画 的开关按钮 +<div c ...`,l:"start/option.html#pip",a:"pip"},"27.21":{t:"`mutex`\r",p:` +Type: Boolean +Default: true + +假如页面里同时存在多个播放器,是否只能让一个播放器播放 +< ...`,l:"start/option.html#mutex",a:"mutex"},"27.22":{t:"`backdrop`\r",p:` +Type: Boolean +Default: true + +是否开启播放器 UI 的背景虚化效果。开启后,设置面板、右键菜单 ...`,l:"start/option.html#backdrop",a:"backdrop"},"27.23":{t:"`fullscreen`\r",p:` +Type: Boolean +Default: false + +是否在底部控制栏里显示播放器 窗口全屏 按钮 +<div ...`,l:"start/option.html#fullscreen",a:"fullscreen"},"27.24":{t:"`fullscreenWeb`\r",p:` +Type: Boolean +Default: false + +是否在底部控制栏里显示播放器 网页全屏 按钮 +<div ...`,l:"start/option.html#fullscreenweb",a:"fullscreenweb"},"27.25":{t:"`subtitleOffset`\r",p:` +Type: Boolean +Default: false + +字幕时间偏移,范围在 [-5s, 5s],出现在 设置面板 里 ...`,l:"start/option.html#subtitleoffset",a:"subtitleoffset"},"27.26":{t:"`miniProgressBar`\r",p:` +Type: Boolean +Default: false + +迷你进度条,只在播放器失去焦点后且正在播放时出现 +<di ...`,l:"start/option.html#miniprogressbar",a:"miniprogressbar"},"27.27":{t:"`useSSR`\r",p:` +Type: Boolean +Default: false + +是否使用 SSR 挂载模式,假如你希望在播放器挂载前,就提前渲 ...`,l:"start/option.html#usessr",a:"usessr"},"27.28":{t:"`playsInline`\r",p:` +Type: Boolean +Default: true + +在移动端是否使用 playsInline 模式 +<div ...`,l:"start/option.html#playsinline",a:"playsinline"},"27.29":{t:"`layers`\r",p:` +Type: Array +Default: [] + +初始化自定义的 层 +<div className="ru ...`,l:"start/option.html#layers",a:"layers"},"27.30":{t:"`settings`\r",p:` +Type: Array +Default: [] + +初始化自定义的 设置面板 +<div className=" ...`,l:"start/option.html#settings",a:"settings"},"27.31":{t:"`contextmenu`\r",p:` +Type: Array +Default: [] + +初始化自定义的 右键菜单 +<div className=" ...`,l:"start/option.html#contextmenu",a:"contextmenu"},"27.32":{t:"`controls`\r",p:` +Type: Array +Default: [] + +初始化自定义的底部 控制栏 +<div className=&quo ...`,l:"start/option.html#controls",a:"controls"},"27.33":{t:"`quality`\r",p:` +Type: Array +Default: [] + +是否在底部控制栏里显示 画质选择 列表 + + + +属性 +类型 +描述 + + + + + ...`,l:"start/option.html#quality",a:"quality"},"27.34":{t:"`highlight`\r",p:` +Type: Array +Default: [] + +在进度条上显示 高亮信息 + + + +属性 +类型 +描述 + + + + +time +Nu ...`,l:"start/option.html#highlight",a:"highlight"},"27.35":{t:"`plugins`\r",p:` +Type: Array +Default: [] + +初始化自定义的 插件 +<div className="r ...`,l:"start/option.html#plugins",a:"plugins"},"27.36":{t:"`thumbnails`\r",p:` +Type: Object +Default: {} + +在进度条上设置 预览图 + + + +属性 +类型 +描述 + + + + +url +Str ...`,l:"start/option.html#thumbnails",a:"thumbnails"},"27.37":{t:"`subtitle`\r",p:` +Type: Object +Default: {} + +设置视频的字幕,支持字幕格式:vtt, srt, ass + + + +属性 + ...`,l:"start/option.html#subtitle",a:"subtitle"},"27.38":{t:"`moreVideoAttr`\r",p:` +Type: Object +Default: {'controls': false, 'preload': 'metadat ...`,l:"start/option.html#morevideoattr",a:"morevideoattr"},"27.39":{t:"`icons`\r",p:` +Type: Object +Default: {} + +用于替换默认图标,支持 Html 字符串和 HTMLElement +& ...`,l:"start/option.html#icons",a:"icons"},"27.40":{t:"`type`\r",p:` +Type: String +Default: '' + +用于指明视频的格式,需要配合 customType 一起使用,默认视频 ...`,l:"start/option.html#type",a:"type"},"27.41":{t:"`customType`\r",p:` +Type: Object +Default: {} + +通过视频的 type 进行匹配,把视频解码权交给第三方程序进行处理,处 ...`,l:"start/option.html#customtype",a:"customtype"},"27.42":{t:"`lang`\r",p:` +Type: String +Default: navigator.language.toLowerCase() + +默认显示语 ...`,l:"start/option.html#lang",a:"lang"},"27.43":{t:"`i18n`\r",p:` +Type: Object +Default: {} + +自定义 i18n 配置,该配置会和自带的 i18n 进行深度合并 +新增 ...`,l:"start/option.html#i18n",a:"i18n"},"27.44":{t:"`lock`\r",p:` +Type: Boolean +Default: false + +是否在移动端显示一个 锁定按钮 ,用于隐藏底部 控制栏 +< ...`,l:"start/option.html#lock",a:"lock"},"27.45":{t:"`gesture`\r",p:` +Type: Boolean +Default: true + +是否在移动端启用视频元素上的手势事件 +<div class ...`,l:"start/option.html#gesture",a:"gesture"},"27.46":{t:"`fastForward`\r",p:` +Type: Boolean +Default: false + +是否在移动端添加长按视频快进功能 +<div classN ...`,l:"start/option.html#fastforward",a:"fastforward"},"27.47":{t:"`autoPlayback`\r",p:` +Type: Boolean +Default: false + +是否使用自动 回放功能 +<div className=& ...`,l:"start/option.html#autoplayback",a:"autoplayback"},"27.48":{t:"`autoOrientation`\r",p:` +Type: Boolean +Default: false + +是否在移动端的网页全屏时,根据视频尺寸和视口尺寸,旋转播放器 + ...`,l:"start/option.html#autoorientation",a:"autoorientation"},"27.49":{t:"`airplay`\r",p:` +Type: Boolean +Default: false + +是否显示 airplay 按钮,当前只有部分浏览器支持该功能 + ...`,l:"start/option.html#airplay",a:"airplay"},"27.50":{t:"`cssVar`\r",p:` +Type: Object +Default: {} + +用于改变内置的css变量 +<div className=&quo ...`,l:"start/option.html#cssvar",a:"cssvar"},"27.51":{t:"`proxy`\r",p:` +Type: function +Default: undefined + +函数可以返回一个第三方的 HTMLCanvasEle ...`,l:"start/option.html#proxy",a:"proxy"}},n={previewLength:62,buttonLabel:"Search",placeholder:"Search docs",allow:[],ignore:[]},a={INDEX_DATA:e,PREVIEW_LOOKUP:t,Options:n};export{a as default}; diff --git a/docs/document/assets/en_plugin_danmuku.md.DqSk_DK5.js b/docs/document/assets/en_plugin_danmuku.md.DqSk_DK5.js new file mode 100644 index 000000000..ba7c18273 --- /dev/null +++ b/docs/document/assets/en_plugin_danmuku.md.DqSk_DK5.js @@ -0,0 +1,102 @@ +import{_ as n,o as e,c as t,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";const E=JSON.parse('{"title":"Danmuku","description":"","frontmatter":{},"headers":[],"relativePath":"en/plugin/danmuku.md","filePath":"en/plugin/danmuku.md","lastUpdated":1764426402000}'),l={name:"en/plugin/danmuku.md"};function p(h,a,r,k,d,o){return e(),t("div",null,a[0]||(a[0]=[s(`

Danmuku ​

中文说明

Display timed comments over the video, with an input panel, display settings and an optional heatmap. This guide describes the current refactor branch. The /runtime entrypoint and refactor fixes have not yet been published to npm; unversioned CDN links still load the published release.

Demo ​

Open the full example. Run Code examples below use the site's local plugin build and sample media. In your application, use your own container and media URLs.

Installation ​

sh
npm install artplayer artplayer-plugin-danmuku
sh
yarn add artplayer artplayer-plugin-danmuku
sh
pnpm add artplayer artplayer-plugin-danmuku
html
<script src="path/to/artplayer.js"></script>
+<script src="path/to/artplayer-plugin-danmuku.js"></script>

JavaScript projects can import the default factory from artplayer-plugin-danmuku. Script builds expose artplayerPluginDanmuku; pass its result to the player's plugins array.

CDN ​

text
https://cdn.jsdelivr.net/npm/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js
text
https://unpkg.com/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js

Comment structure ​

Only text is required. Leading and trailing whitespace is removed; empty comments are ignored.

js
({
+    text: 'Hello!',
+    time: 10, // Seconds; omitted time defaults to currentTime + 0.5
+    mode: 0, // 0: scrolling, 1: top, 2: bottom; defaults to option.mode
+    color: '#FFFFFF', // Defaults to option.color
+    border: false,
+    style: {}, // CSS properties for this comment
+});

Explicit time: 0 is preserved. Negative times are clamped to zero. Other than 0, 1 and 2, comment modes are ignored.

All options ​

Pass an option object to the factory. At runtime, {} is valid and all fields have defaults. The historical root declarations still require danmuku; existing TypeScript projects can keep providing it. See TypeScript for accurate declarations.

js
({
+    danmuku: [], // Array, XML URL, Promise of an array, or function returning an array/Promise
+    speed: 5, // Display duration in seconds, clamped to 1–10
+    margin: [10, '25%'], // Top/bottom spacing: pixels or percentages
+    opacity: 1, // Clamped to 0–1
+    color: '#FFFFFF', // Default comment color
+    mode: 0, // Default comment mode
+    modes: [0, 1, 2], // Visible modes
+    fontSize: 25, // Pixels or a percentage of player height
+    antiOverlap: true,
+    synchronousPlayback: false, // Follow video playbackRate when enabled
+    mount: undefined, // Defaults to the center of the player controls
+    heatmap: false, // Enable at construction: true or a heatmap options object
+    width: 512, // Below this width, the default input panel moves below the player
+    points: [], // Stored option; use the points event to draw custom data
+    filter: () => true, // Synchronous; do not return a Promise
+    beforeEmit: () => true, // Input-panel submissions only; may return a Promise
+    beforeVisible: () => true, // Called before display; may return a Promise
+    visible: true,
+    emitter: true, // Show the input panel's sending UI
+    maxLength: 200, // Input length, clamped to 1–1000
+    lockTime: 5, // Seconds between input-panel submissions, clamped to 1–60
+    theme: 'dark', // 'dark' or 'light' for an external mount
+    OPACITY: {},
+    FONT_SIZE: {},
+    MARGIN: {},
+    SPEED: {},
+    COLOR: [],
+});

OPACITY, FONT_SIZE, MARGIN and SPEED override slider definitions with min, max and steps. Each step can contain name, value, hide and show; margin values are pairs such as [10, '50%']. COLOR replaces the palette with an array of CSS color strings; an empty array uses the built-in palette.

Array, XML and asynchronous input ​

XML input uses Bilibili's comment format. Fetching a cross-origin XML URL requires that server to allow browser access. An input function runs without the option object as its receiver. It may return an array directly or asynchronously.

`,20),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var art = new Artplayer({
+    container: '.artplayer-app',
+    url: '/assets/sample/video.mp4',
+    plugins: [
+        artplayerPluginDanmuku({
+            danmuku: [{ text: 'Hello from an array', time: 1 }],
+            // Alternatives:
+            // danmuku: '/assets/sample/danmuku.xml',
+            // danmuku: Promise.resolve([{ text: 'From a Promise', time: 1 }]),
+            // danmuku: async () => [{ text: 'From a function', time: 1 }],
+        }),
+    ],
+});

Lifecycle callbacks ​

Input-panel submissions run beforeEmit → filter → beforeVisible → artplayerPluginDanmuku:visible. Loaded comments and direct emit calls run filter → beforeVisible → artplayerPluginDanmuku:visible. This describes accepted comments; callbacks can reject them, and scheduling still requires playback and an available track.

CallbackInputAcceptance
beforeEmitInput-panel commentOnly strict true, or a Promise resolving to true, sends it
filterComment with time, mode, color and style filled inA synchronous truthy result adds it to the queue
beforeVisibleQueue itemA truthy result, including an awaited result, permits display

Normal functions receive the current option object as this for all three callbacks. Arrow functions retain their lexical this. emit() does not call beforeEmit: perform application validation before calling it when needed. beforeEmit failures are logged in the console and leave the input available for another attempt.

An asynchronous beforeVisible rejection emits artplayerPluginDanmuku:error once for that item in the current run; other items continue. Pause/resume, reset or replacing the callback permits a retry if the item is still eligible by time. Pausing, seeking, hiding, resetting or destroying cancels unfinished visibility preparation.

Methods and state ​

The registered plugin is available synchronously as art.plugins.artplayerPluginDanmuku.

MemberBehavior and return value
emit(comment)Processes one comment for the queue; returns a Promise
load()Reads option.danmuku and replaces the queue; returns a Promise
load(input)Appends comments from the input; returns a Promise
config(partialOption)Synchronously merges configuration
hide() / show()Synchronously hides or shows the comment layer
reset()Clears displayed comments and returns queue items to waiting; does not delete the queue
mount(target)Moves the panel to an existing element or selector; returns undefined
optionLive current configuration; use config() for validated updates
isHideRead-only live visibility state: true when hidden
isStopRead-only live stopped state; distinct from visibility and not a media-readiness signal

emit/load Promises resolve to the internal Danmuku owner. config/hide/show/reset return that same owner synchronously. The owner is different from the registered plugin facade. Keep using the registered facade for subsequent commands. Awaiting emit() means queue processing has finished, not that the comment has appeared.

Loading and configuration ​

Changing config({ danmuku: input }) does not load the new input. Follow it with load() to replace the queue. Input-read failures leave the existing queue intact; failures while filtering individual rows do not guarantee an atomic rollback of the entire batch. Independent append operations do not cancel one another. A newer replacement cancels an unfinished older replacement. Destroy cancels pending loads. Cancelled Promises resolve to the owner without a late loaded or error event.

Fetch and response-text failures emit artplayerPluginDanmuku:error and reject the corresponding public load() Promise. Handle rejection with await/try...catch or .catch(...). Initial automatic loading observes rejection and logs a warning. Invalid configuration leaves the current option intact. Use mount(target) to move the panel; changing option.mount through config() does not perform a mount. Enable heatmap when constructing the plugin; config({ heatmap: true }) does not create it later.

`,13),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var art = new Artplayer({
+    container: '.artplayer-app',
+    url: '/assets/sample/video.mp4',
+    plugins: [artplayerPluginDanmuku({ danmuku: [], emitter: false })],
+});
+
+async function updateComments() {
+    var plugin = art.plugins.artplayerPluginDanmuku;
+    plugin.config({ danmuku: [{ text: 'Replacement', time: 1 }] });
+    await plugin.load();
+    await plugin.load([{ text: 'Appended', time: 2 }]);
+    await plugin.emit({ text: 'Scheduled from the current time' });
+    plugin.hide();
+    console.info('Hidden:', plugin.isHide);
+    plugin.show();
+    plugin.reset();
+}
+updateComments().catch(console.error);

External mount ​

Create a separate mount element before constructing the plugin. The panel moves into the controls during player fullscreen or web fullscreen and returns to its configured mount on exit. Use theme: 'light' on a light background. The live mount(target) method requires a valid target; omitting its argument does not select the default. Destroy releases the plugin panel; the application owns any container it created.

`,3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var $danmu = document.createElement('div');
+document.querySelector('.artplayer-app').after($danmu);
+var art = new Artplayer({
+    container: '.artplayer-app',
+    url: '/assets/sample/video.mp4',
+    fullscreenWeb: true,
+    plugins: [artplayerPluginDanmuku({
+        danmuku: [{ text: 'External input panel', time: 1 }],
+        mount: $danmu,
+        theme: 'dark',
+    })],
+});
+art.on('destroy', () => $danmu.remove());
+// Move it later with art.plugins.artplayerPluginDanmuku.mount(otherElement).

Heatmap ​

Set heatmap: true at construction to sample the queue automatically. A live stream does not draw a heatmap. Dense automatic curves now fit in the bottom quarter of the chart instead of covering the video (issue #958). Explicit finite yMin or yMax and custom points retain their coordinate mapping.

An object can set xMin, xMax, yMin, yMax, scale, opacity, minHeight, sampling, smoothing and flattening. Defaults are xMin: 0, xMax: chartWidth, yMin: 0, yMax: 128, scale: 0.25, opacity: 0.2, minHeight: floor(chartHeight * 0.05), sampling: max(1, floor(chartWidth / 100)), smoothing: 0.2, flattening: 0.2.

Send art.emit('artplayerPluginDanmuku:points', points) to draw custom [x, value] pairs. The default x-axis uses chart pixels, not seconds. Set xMin/xMax explicitly if supplying another coordinate range. Rendering mutates the inner point arrays for historical compatibility: copy each pair if reusing the original data. The stored points option does not draw custom data. A resize or successful load redraws the automatic curve, so resend custom data after those events when needed.

`,5),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var art = new Artplayer({
+    container: '.artplayer-app',
+    url: '/assets/sample/video.mp4',
+    plugins: [artplayerPluginDanmuku({
+        danmuku: [{ text: 'Heatmap example', time: 1 }],
+        heatmap: true,
+    })],
+});
+var points = [[0, 5], [0.25, 12], [0.5, 30], [0.75, 10], [1, 5]];
+function drawPoints() {
+    var width = art.controls.heatmap.offsetWidth;
+    art.emit('artplayerPluginDanmuku:points', points.map(([ratio, value]) => [ratio * width, value]));
+}
+art.on('ready', drawPoints);
+art.on('resize', drawPoints);
+art.on('artplayerPluginDanmuku:loaded', drawPoints);

Events ​

Subscribe with art.on(name, callback) and remove subscriptions with art.off(name, callback).

EventPayload / meaning
artplayerPluginDanmuku:visibleQueue item; its $ref is the displayed element
artplayerPluginDanmuku:loadedCurrent full queue after a successful load, including appends
artplayerPluginDanmuku:errorOriginal error from loading or scheduling; handle public Promise rejections separately
artplayerPluginDanmuku:configCurrent configuration
artplayerPluginDanmuku:startNo payload; scheduling starts
artplayerPluginDanmuku:stopNo payload; scheduling stops
artplayerPluginDanmuku:hideNo payload; layer hidden
artplayerPluginDanmuku:showNo payload; layer shown
artplayerPluginDanmuku:resetNo payload; displayed items reset
artplayerPluginDanmuku:destroyNo payload; plugin destroyed
artplayerPluginDanmuku:pointsApplication-sent custom points for the heatmap

Events are not replayed to later listeners. In particular, an initially empty array can finish loading during construction. Subscribe before invoking a later load() if you need to observe its completion event. Use $ref.textContent when adding text in a visible handler.

TypeScript ​

The root and /legacy entrypoints keep the npm 5.3.0 declaration shapes for compatibility, including historical inaccuracies about return values. The current branch adds /runtime for accurate types while loading the same runtime factory:

ts
import Artplayer from 'artplayer';
+import danmuku from 'artplayer-plugin-danmuku/runtime';
+import type { RuntimeOption, Point, EventMap } from 'artplayer-plugin-danmuku/runtime';
+
+const option: RuntimeOption = { danmuku: [], heatmap: true };
+const points: Point[] = [[0, 5], [100, 10]];
+const onError = (...[error]: EventMap['artplayerPluginDanmuku:error']) => console.error(error);
+const art = new Artplayer({ container: '#player', url: '/video.mp4', plugins: [danmuku(option)] });
+art.on('artplayerPluginDanmuku:error', onError);

The explicit EventMap describes payloads; it does not augment the core's historical event declarations automatically. The factory also exposes the existing icons object for customization. Package README.md and ARCHITECTURE.md describe module ownership, maintenance commands and remaining device/combination validation.

`,9)]))}const u=n(l,[["render",p]]);export{E as __pageData,u as default}; diff --git a/docs/document/assets/en_plugin_danmuku.md.DqSk_DK5.lean.js b/docs/document/assets/en_plugin_danmuku.md.DqSk_DK5.lean.js new file mode 100644 index 000000000..4a5508d20 --- /dev/null +++ b/docs/document/assets/en_plugin_danmuku.md.DqSk_DK5.lean.js @@ -0,0 +1 @@ +import{_ as n,o as e,c as t,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";const E=JSON.parse('{"title":"Danmuku","description":"","frontmatter":{},"headers":[],"relativePath":"en/plugin/danmuku.md","filePath":"en/plugin/danmuku.md","lastUpdated":1764426402000}'),l={name:"en/plugin/danmuku.md"};function p(h,a,r,k,d,o){return e(),t("div",null,a[0]||(a[0]=[s("",20),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",13),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",5),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",9)]))}const u=n(l,[["render",p]]);export{E as __pageData,u as default}; diff --git a/docs/document/assets/plugin_danmuku.md.CFjljCkq.js b/docs/document/assets/plugin_danmuku.md.gN3hMRyB.js similarity index 72% rename from docs/document/assets/plugin_danmuku.md.CFjljCkq.js rename to docs/document/assets/plugin_danmuku.md.gN3hMRyB.js index 3a2f85db0..e47ed9d03 100644 --- a/docs/document/assets/plugin_danmuku.md.CFjljCkq.js +++ b/docs/document/assets/plugin_danmuku.md.gN3hMRyB.js @@ -1,11 +1,11 @@ -import{_ as n,o as l,c as p,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";const c=JSON.parse('{"title":"弹幕库","description":"","frontmatter":{},"headers":[],"relativePath":"plugin/danmuku.md","filePath":"plugin/danmuku.md","lastUpdated":1734270991000}'),h={name:"plugin/danmuku.md"};function e(k,a,t,r,E,d){return l(),p("div",null,a[0]||(a[0]=[s(`

弹幕库 ​

演示 ​

👉 查看完整演示

安装 ​

bash
npm install artplayer-plugin-danmuku
bash
yarn add artplayer-plugin-danmuku
bash
pnpm add artplayer-plugin-danmuku
html
<script src="path/to/artplayer-plugin-danmuku.js"></script>

CDN ​

bash
https://cdn.jsdelivr.net/npm/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js
bash
https://unpkg.com/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js

弹幕结构 ​

每一个弹幕是一个对象,多个弹幕组成的数组就是弹幕库,通常只需要text就可以发送一个弹幕,其余都是非必要参数

js
{
+import{_ as n,o as l,c as p,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";const c=JSON.parse('{"title":"弹幕库","description":"","frontmatter":{},"headers":[],"relativePath":"plugin/danmuku.md","filePath":"plugin/danmuku.md","lastUpdated":1734270991000}'),h={name:"plugin/danmuku.md"};function e(k,a,t,r,E,d){return l(),p("div",null,a[0]||(a[0]=[s(`

弹幕库 ​

English guide

本文描述当前重构分支。/runtime 类型入口与本轮修复尚未发布到 npm;CDN 默认仍加载已发布版本。

演示 ​

👉 查看完整演示

下方 Run Code 使用本站构建的插件与样本。接入自己的应用时,请替换容器和媒体 URL。

安装 ​

bash
npm install artplayer-plugin-danmuku
bash
yarn add artplayer-plugin-danmuku
bash
pnpm add artplayer-plugin-danmuku
html
<script src="path/to/artplayer-plugin-danmuku.js"></script>

CDN ​

bash
https://cdn.jsdelivr.net/npm/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js
bash
https://unpkg.com/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js

弹幕结构 ​

每一个弹幕是一个对象,多个弹幕组成的数组就是弹幕库,通常只需要text就可以发送一个弹幕,其余都是非必要参数

js
{
     text: '', // 弹幕文本
-    time: 10, // 弹幕时间, 默认为当前播放器时间
+    time: 10, // 弹幕时间, 单位秒,省略时为当前播放器时间加 0.5 秒;显式 0 保留
     mode: 0, // 弹幕模式: 0: 滚动(默认),1: 顶部,2: 底部
-    color: '#FFFFFF', // 弹幕颜色,默认为白色
+    color: '#FFFFFF', // 弹幕颜色,默认使用配置 color(初始为白色)
     border: false, // 弹幕是否有描边, 默认为 false
     style: {}, // 弹幕自定义样式, 默认为空对象
-}

全部选项 ​

只有danmuku是必须的参数,其余都是非必填

js
{
+}

全部选项 ​

工厂需要一个配置对象。运行时可传 {},每个字段都有默认值;旧版根入口类型仍要求 danmuku,旧项目继续传入它即可。准确类型见下方 TypeScript 说明。

js
{
     danmuku: [], // 弹幕数据
     speed: 5, // 弹幕持续时间,范围在[1 ~ 10]
     margin: [10, '25%'], // 弹幕上下边距,支持像素数字和百分比
@@ -19,9 +19,9 @@ import{_ as n,o as l,c as p,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";
     mount: undefined, // 弹幕发射器挂载点, 默认为播放器控制栏中部
     heatmap: false, // 是否开启热力图
     width: 512, // 当播放器宽度小于此值时,弹幕发射器置于播放器底部
-    points: [], // 热力图数据
+    points: [], // 保留的配置字段;绘制自定义数据请发送 points 事件
     filter: () => true, // 弹幕载入前的过滤器,只支持返回布尔值
-    beforeEmit: () => true, // 弹幕发送前的过滤器,支持返回 Promise
+    beforeEmit: () => true, // 输入框发送前的过滤器,支持返回 Promise
     beforeVisible: () => true, // 弹幕显示前的过滤器,支持返回 Promise
     visible: true, // 弹幕层是否可见
     emitter: true, // 是否开启弹幕发射器
@@ -33,7 +33,7 @@ import{_ as n,o as l,c as p,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";
     MARGIN: {}, // 显示区域配置项
     SPEED: {}, // 弹幕速度配置项
     COLOR: [], // 颜色列表配置项
-}

生命周期 ​

来自用户输入的弹幕:

beforeEmit -> filter -> beforeVisible -> artplayerPluginDanmuku:visible

来自服务器的弹幕:

filter -> beforeVisible -> artplayerPluginDanmuku:visible

`,18),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
// 保存到数据库
+}

OPACITY、FONT_SIZE、MARGIN、SPEED 可覆盖滑块的 min、max、steps。 每个 step 可包含 name、value、hide、show;MARGIN 的 value 是上下边距数组。 COLOR 用 CSS 颜色字符串数组替换调色板,空数组使用内置调色板。

生命周期 ​

filter 同步执行,不应返回 Promise;beforeEmit 可异步,但只有严格返回 true 才发送。beforeVisible 可以异步。普通函数形式的这三个回调,其 this 都是当前配置对象。直接调用 emit 不执行 beforeEmit,需要业务校验时请在调用前完成。

来自用户输入的弹幕:

beforeEmit -> filter -> beforeVisible -> artplayerPluginDanmuku:visible

来自服务器或直接调用 emit 的弹幕:

filter -> beforeVisible -> artplayerPluginDanmuku:visible

`,23),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
// 保存到数据库
 function saveDanmu(danmu) {
     return new Promise(resolve => {
         setTimeout(() => {
@@ -78,7 +78,7 @@ import{_ as n,o as l,c as p,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";
 
 // 弹幕已经出现在播放器里,你可以访问到弹幕的dom元素里
 art.on('artplayerPluginDanmuku:visible', danmu => {
-    danmu.$ref.innerHTML = 'ଘ(੭ˊᵕˋ)੭: ' + danmu.$ref.innerHTML;
+    danmu.$ref.textContent = 'ଘ(੭ˊᵕˋ)੭: ' + danmu.$ref.textContent;
 })

使用弹幕数组 ​

`,2),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
@@ -100,14 +100,14 @@ import{_ as n,o as l,c as p,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";
             danmuku: '/assets/sample/danmuku.xml',
         }),
     ],
-});

使用异步返回 ​

`,2),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var art = new Artplayer({
+});

使用异步返回 ​

也可以直接传入 Promise<弹幕数组>,或传入同步返回数组的函数。输入函数没有配置对象作为 this。

`,3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
     plugins: [
         artplayerPluginDanmuku({
             danmuku: function () {
-                return new Promise((resovle) => {
-                    return resovle([
+                return new Promise((resolve) => {
+                    return resolve([
                         {
                             text: '使用 Promise 异步返回',
                             time: 1
@@ -164,7 +164,7 @@ import{_ as n,o as l,c as p,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";
             },
         },
     ],
-});

emit ​

通过方法 emit 发送一条实时弹幕

`,3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var art = new Artplayer({
+});

emit ​

通过方法 emit 向队列添加一条弹幕。它返回 Promise;完成表示入队处理完成,不代表已经显示。请用 await 或 .catch(...) 处理拒绝。省略时间时安排在当前播放时间之后 0.5 秒,显示仍受播放状态、过滤器和可用轨道影响。

`,3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
     plugins: [
@@ -184,11 +184,11 @@ import{_ as n,o as l,c as p,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";
                     text: text,
                     color: color,
                     border: true,
-                });
+                }).catch(console.error);
             },
         },
     ],
-});

config ​

通过方法 config 实时改变弹幕配置

`,3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var art = new Artplayer({
+});

config ​

通过方法 config 同步合并弹幕配置。更改 danmuku 不会自动重新加载,之后调用无参数的 load() 才会替换队列;无效配置不会覆盖现有配置。需要移动发射器时调用 mount(target);热力图应在初始化时启用,config({ heatmap: true }) 不会创建热力图。

`,3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
     plugins: [
@@ -214,7 +214,7 @@ import{_ as n,o as l,c as p,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";
             },
         },
     ],
-});

load ​

通过 load 方法可以重载弹幕库,或者切换新弹幕库,或者追加新的弹幕库

`,3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var art = new Artplayer({
+});

load ​

通过 load 重载、切换或追加弹幕库,返回 Promise。无参数 load() 在读取配置中的输入成功后替换队列;传入 load(input) 则追加。输入读取失败不会清空现有队列,但逐条过滤时发生异常不保证整批回滚。并发追加互不取消,新的替换会取消尚未完成的旧替换。销毁会取消未完成加载;被取消的 Promise 仍正常结束,但不会发出迟到的 loaded/error 事件。

`,3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
     plugins: [
@@ -229,7 +229,7 @@ import{_ as n,o as l,c as p,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";
             html: '重载',
             click: function () {
                 // 重新加载当前弹幕库
-                art.plugins.artplayerPluginDanmuku.load();
+                art.plugins.artplayerPluginDanmuku.load().catch(console.error);
             },
         },
         {
@@ -240,7 +240,7 @@ import{_ as n,o as l,c as p,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";
                 art.plugins.artplayerPluginDanmuku.config({
                     danmuku: '/assets/sample/danmuku-v2.xml',
                 });
-                art.plugins.artplayerPluginDanmuku.load();
+                art.plugins.artplayerPluginDanmuku.load().catch(console.error);
             },
         },
         {
@@ -249,11 +249,11 @@ import{_ as n,o as l,c as p,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";
             click: function () {
                 // 追加新的弹幕库,参数类型和option.danmuku相同
                 const target = '/assets/sample/danmuku.xml'
-                art.plugins.artplayerPluginDanmuku.load(target);
+                art.plugins.artplayerPluginDanmuku.load(target).catch(console.error);
             },
         },
     ],
-});

reset ​

用于清空当前显示的弹幕

`,3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var art = new Artplayer({
+});

reset ​

用于清空当前显示的弹幕并将队列项重置为等待状态。它不删除队列;后续播放仍可按时间显示弹幕。

`,3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
     plugins: [
@@ -265,7 +265,8 @@ import{_ as n,o as l,c as p,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";
 
 art.on('resize', () => {
     art.plugins.artplayerPluginDanmuku.reset();
-});

mount ​

在初始化弹幕插件的时候,是可以指定弹幕发射器的挂载位置的,默认是挂载在控制栏的中部,你也可以把它挂载在播放器以外的地方。 当播放器全屏的时候,发射器会自动回到控制栏的中部。假如你挂载的地方是亮色的话,建议把 theme 设置成 light,否则会看不清。

`,3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var $danmu = document.querySelector('.artplayer-app');
+});

mount ​

在初始化弹幕插件的时候,是可以指定弹幕发射器的挂载位置的,默认是挂载在控制栏的中部,你也可以把它挂载在播放器以外的地方。 当播放器全屏的时候,发射器会自动回到控制栏的中部。假如你挂载的地方是亮色的话,建议把 theme 设置成 light,否则会看不清。

退出全屏后会返回配置的挂载点。mount(target) 必须传入已存在的元素或选择器,省略参数不会恢复默认位置;它返回 undefined。销毁会移除插件面板,应用创建的外部容器由应用清理。

`,4),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var $danmu = document.createElement('div');
+document.querySelector('.artplayer-app').after($danmu);
 
 var art = new Artplayer({
     container: '.artplayer-app',
@@ -273,15 +274,17 @@ import{_ as n,o as l,c as p,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";
     fullscreenWeb: true,
     plugins: [
         artplayerPluginDanmuku({
-			mount: $danmu,
+            mount: $danmu,
             theme: 'dark',
             danmuku: '/assets/sample/danmuku.xml',
         }),
     ],
 });
 
+art.on('destroy', () => $danmu.remove());
+
 // 也可以手动挂载
-// art.plugins.artplayerPluginDanmuku.mount($danmu);

option ​

用于获取当前弹幕配置

`,3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var art = new Artplayer({
+// art.plugins.artplayerPluginDanmuku.mount($danmu);

option ​

用于获取当前弹幕配置,返回实时配置对象。更新配置请调用 config,避免直接修改对象而绕过校验和 UI 同步。

`,3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
     plugins: [
@@ -293,7 +296,7 @@ import{_ as n,o as l,c as p,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";
 
 art.on('ready', () => {
     console.info(art.plugins.artplayerPluginDanmuku.option);
-});

事件 ​

`,2),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var art = new Artplayer({
+});

事件 ​

使用 art.on(name, callback) 订阅,art.off(name, callback) 取消订阅。事件不会向迟到的监听器重放;初始空数组可能在构造期间就完成加载。若需要观察后续加载,先订阅再调用 load()。

loaded 参数是当前完整队列,包含已追加数据;error 也可能来自显示调度。监听错误事件并不能代替处理公开方法的 Promise 拒绝。

`,4),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
     plugins: [
@@ -312,7 +315,7 @@ import{_ as n,o as l,c as p,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";
 });
 
 art.on('artplayerPluginDanmuku:error', (error) => {
-    console.info('加载错误', error);
+    console.info('弹幕错误', error);
 });
 
 art.on('artplayerPluginDanmuku:config', (option) => {
@@ -341,4 +344,27 @@ import{_ as n,o as l,c as p,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";
 
 art.on('artplayerPluginDanmuku:destroy', () => {
     console.info('弹幕销毁');
-});
`,1)]))}const y=n(h,[["render",e]]);export{c as __pageData,y as default}; +});

isStop 与方法返回值 ​

art.plugins.artplayerPluginDanmuku.isStop 是实时只读的停止状态,与 isHide 不同,也不表示媒体是否准备就绪。 emit/load 返回的 Promise 完成后得到内部 Danmuku 对象;config/hide/show/reset 同步返回同一个内部对象。它与注册在 art.plugins 上的插件对象不是同一个对象。后续命令继续通过注册的插件调用即可。

beforeEmit 抛出或拒绝时会在控制台报告错误,输入框可再次尝试发送。 beforeVisible 拒绝时,对该项在当前调度轮报告一次 artplayerPluginDanmuku:error,其他项继续处理;暂停后恢复、reset 或更换回调后,仍符合时间条件的项可重试。 暂停、seek、隐藏、reset 和销毁会取消尚未完成的显示准备。

热力图 ​

初始化时设置 heatmap: true,按队列自动采样;直播不绘制热力图。 本轮修复了密集弹幕曲线过高遮挡视频的问题(issue #958),自动曲线会适配到图表底部四分之一区域。显式设置有限的 yMin/yMax 或发送自定义 points 时保留原坐标映射。

heatmap 也可传配置对象:xMin、xMax、yMin、yMax、scale、opacity、minHeight、sampling、smoothing、flattening。 默认分别为 0、图表宽度、0、128、0.25、0.2、floor(图表高度 * 0.05)、max(1, floor(图表宽度 / 100))、0.2、0.2。

绘制自定义数据使用 art.emit('artplayerPluginDanmuku:points', points),每项为 [x, value]。默认 x 是图表像素坐标,不是秒。 渲染会修改内层数组的第二项,保留原数据时请复制每一对坐标。配置中的 points 字段仅存储,不会自动绘图。 resize 或成功 load 会恢复自动曲线,需要自定义曲线时可在这些事件后重新发送。

`,8),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s(`
js
var art = new Artplayer({
+    container: '.artplayer-app',
+    url: '/assets/sample/video.mp4',
+    plugins: [artplayerPluginDanmuku({
+        danmuku: [{ text: '热力图示例', time: 1 }],
+        heatmap: true,
+    })],
+});
+var points = [[0, 5], [0.25, 12], [0.5, 30], [0.75, 10], [1, 5]];
+function drawPoints() {
+    var width = art.controls.heatmap.offsetWidth;
+    art.emit('artplayerPluginDanmuku:points', points.map(([ratio, value]) => [ratio * width, value]));
+}
+art.on('ready', drawPoints);
+art.on('resize', drawPoints);
+art.on('artplayerPluginDanmuku:loaded', drawPoints);

TypeScript ​

根入口和 /legacy 保留 npm 5.3.0 的历史声明形状,其中部分方法返回值与真实运行时不一致。 当前分支新增 /runtime 提供准确类型,加载的仍是同一个运行时工厂;该入口尚未发布,不能从旧 CDN 版本导入。

ts
import Artplayer from 'artplayer';
+import danmuku from 'artplayer-plugin-danmuku/runtime';
+import type { RuntimeOption, Point, EventMap } from 'artplayer-plugin-danmuku/runtime';
+
+const option: RuntimeOption = { danmuku: [], heatmap: true };
+const points: Point[] = [[0, 5], [100, 10]];
+const onError = (...[error]: EventMap['artplayerPluginDanmuku:error']) => console.error(error);
+const art = new Artplayer({ container: '#player', url: '/video.mp4', plugins: [danmuku(option)] });
+art.on('artplayerPluginDanmuku:error', onError);

EventMap 显式描述事件参数,不会自动扩展核心历史事件声明。工厂仍暴露 icons 对象供自定义图标。 包内 README.md 和 ARCHITECTURE.md 维护模块职责、验证命令及尚未完成的设备和组合验收。

`,5)]))}const y=n(h,[["render",e]]);export{c as __pageData,y as default}; diff --git a/docs/document/assets/plugin_danmuku.md.CFjljCkq.lean.js b/docs/document/assets/plugin_danmuku.md.gN3hMRyB.lean.js similarity index 78% rename from docs/document/assets/plugin_danmuku.md.CFjljCkq.lean.js rename to docs/document/assets/plugin_danmuku.md.gN3hMRyB.lean.js index 28f8d99cb..ef3f6bf51 100644 --- a/docs/document/assets/plugin_danmuku.md.CFjljCkq.lean.js +++ b/docs/document/assets/plugin_danmuku.md.gN3hMRyB.lean.js @@ -1 +1 @@ -import{_ as n,o as l,c as p,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";const c=JSON.parse('{"title":"弹幕库","description":"","frontmatter":{},"headers":[],"relativePath":"plugin/danmuku.md","filePath":"plugin/danmuku.md","lastUpdated":1734270991000}'),h={name:"plugin/danmuku.md"};function e(k,a,t,r,E,d){return l(),p("div",null,a[0]||(a[0]=[s("",18),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",2),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",2),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",2),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",1)]))}const y=n(h,[["render",e]]);export{c as __pageData,y as default}; +import{_ as n,o as l,c as p,ak as s,j as i}from"./chunks/framework.xxfEszSJ.js";const c=JSON.parse('{"title":"弹幕库","description":"","frontmatter":{},"headers":[],"relativePath":"plugin/danmuku.md","filePath":"plugin/danmuku.md","lastUpdated":1734270991000}'),h={name:"plugin/danmuku.md"};function e(k,a,t,r,E,d){return l(),p("div",null,a[0]||(a[0]=[s("",23),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",2),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",4),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",3),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",4),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",8),i("div",{className:"run-code","data-libs":"./uncompiled/artplayer-plugin-danmuku/index.js"}," ▶ Run Code ",-1),s("",5)]))}const y=n(h,[["render",e]]);export{c as __pageData,y as default}; diff --git a/docs/document/component/contextmenu.html b/docs/document/component/contextmenu.html index 4a6a0ade8..b9035776b 100644 --- a/docs/document/component/contextmenu.html +++ b/docs/document/component/contextmenu.html @@ -9,9 +9,9 @@ - + - + @@ -106,7 +106,7 @@ }) }, 3000); }); - + \ No newline at end of file diff --git a/docs/document/component/controls.html b/docs/document/component/controls.html index c80984f91..0d387f0c6 100644 --- a/docs/document/component/controls.html +++ b/docs/document/component/controls.html @@ -9,9 +9,9 @@ - + - + @@ -153,7 +153,7 @@ }); }, 3000); }); - + \ No newline at end of file diff --git a/docs/document/component/layers.html b/docs/document/component/layers.html index 51e1d5f56..364df8b1f 100644 --- a/docs/document/component/layers.html +++ b/docs/document/component/layers.html @@ -9,9 +9,9 @@ - + - + @@ -125,7 +125,7 @@ }); }, 3000); }); - + \ No newline at end of file diff --git a/docs/document/component/setting.html b/docs/document/component/setting.html index 11e77d496..b35069378 100644 --- a/docs/document/component/setting.html +++ b/docs/document/component/setting.html @@ -9,9 +9,9 @@ - + - + @@ -245,7 +245,7 @@ }); }, 3000); }); - + \ No newline at end of file diff --git a/docs/document/en/advanced/built-in.html b/docs/document/en/advanced/built-in.html index 1e778c969..4bad66cbb 100644 --- a/docs/document/en/advanced/built-in.html +++ b/docs/document/en/advanced/built-in.html @@ -9,9 +9,9 @@ - + - + @@ -23,7 +23,7 @@ -
Skip to content

Advanced Properties ​

The Advanced Properties here refer to the secondary properties attached to the instance, which are less commonly used.

option ​

The player's options.

▶ Run Code
js
var art = new Artplayer({
+    
Skip to content

Advanced Properties ​

The Advanced Properties here refer to the secondary properties attached to the instance, which are less commonly used.

option ​

The player's options.

▶ Run Code
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
 });
@@ -217,7 +217,7 @@
 art.on('ready', () => {
     art.plugins.add(myPlugin);
 });
- + \ No newline at end of file diff --git a/docs/document/en/advanced/class.html b/docs/document/en/advanced/class.html index 415d95fb1..f31cb5425 100644 --- a/docs/document/en/advanced/class.html +++ b/docs/document/en/advanced/class.html @@ -9,9 +9,9 @@ - + - + @@ -23,7 +23,7 @@ -
Skip to content

Static Properties ​

Here, static properties refer to the first-level properties attached to the constructor, which are rarely used.

instances ​

Returns an array of all player instances. This property can be useful when you need to manage multiple players simultaneously.

▶ Run Code
js
console.info([...Artplayer.instances]);
+    
Skip to content

Static Properties ​

Here, static properties refer to the first-level properties attached to the constructor, which are rarely used.

instances ​

Returns an array of all player instances. This property can be useful when you need to manage multiple players simultaneously.

▶ Run Code
js
console.info([...Artplayer.instances]);
 
 var art = new Artplayer({
     container: '.artplayer-app',
@@ -31,7 +31,7 @@
 });
 
 console.info([...Artplayer.instances]);

version ​

Returns the version information of the player.

▶ Run Code
js
console.info(Artplayer.version);

env ​

Returns the environment variables of the player.

▶ Run Code
js
console.info(Artplayer.env);

build ​

Returns the build timestamp of the player.

▶ Run Code
js
console.info(Artplayer.build);

config ​

Returns the default configuration for videos.

▶ Run Code
js
console.info(Artplayer.config);

utils ​

Returns the collection of utility functions for the player.

▶ Run Code
js
console.info(Artplayer.utils);

For all utility functions, please refer to the following address:

artplayer/types/utils.d.ts

scheme ​

Returns the validation schema for player options.

▶ Run Code
js
console.info(Artplayer.scheme);

Emitter ​

Returns the constructor of the event emitter.

▶ Run Code
js
console.info(Artplayer.Emitter);

validator ​

Returns the validation function for options.

▶ Run Code
js
console.info(Artplayer.validator);

kindOf ​

Returns the type detection utility function.

▶ Run Code
js
console.info(Artplayer.kindOf);

html ​

Returns the html string required by the player.

▶ Run Code
js
console.info(Artplayer.html);

option ​

Returns the default options of the player.

▶ Run Code
js
console.info(Artplayer.option);
- + \ No newline at end of file diff --git a/docs/document/en/advanced/event.html b/docs/document/en/advanced/event.html index 16d9a352d..78f13d8e4 100644 --- a/docs/document/en/advanced/event.html +++ b/docs/document/en/advanced/event.html @@ -9,9 +9,9 @@ - + - + @@ -23,7 +23,7 @@ -
Skip to content

Instance Events ​

Player events are divided into two types: native events of the video (prefixed with video:), and custom events.

Listening to events:

▶ Run Code
js
var art = new Artplayer({
+    
Skip to content

Instance Events ​

Player events are divided into two types: native events of the video (prefixed with video:), and custom events.

Listening to events:

▶ Run Code
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
 });
@@ -385,7 +385,7 @@
 art.on('keydown', (event) => {
     console.log(event.code);
 });

video:canplay ​

The browser can start playing the media, but estimates there is not enough data to play through to the end without stopping for further buffering.

video:canplaythrough ​

The browser estimates it can play the media through to the end without stopping for buffering.

video:complete ​

The OfflineAudioContext rendering is complete.

video:durationchange ​

Triggered when the value of the duration property changes.

video:emptied ​

The media has become empty; for example, this event is sent when the media has already been loaded (or partially loaded), and the load() method is called to reload it.

video:ended ​

Playback has stopped because the media has reached its end.

video:error ​

An error occurred while fetching the media data, or the resource type is not a supported media format.

video:loadeddata ​

The first frame of the media has finished loading.

video:loadedmetadata ​

Metadata has been loaded.

video:pause ​

Playback has been paused.

video:play ​

Playback has begun.

video:playing ​

Playback is ready to start after having been paused or delayed due to lack of data.

video:progress ​

Fired periodically as the browser loads the resource.

video:ratechange ​

The playback rate has changed.

video:seeked ​

A seek operation has completed.

video:seeking ​

A seek operation has begun.

video:stalled ​

The user agent is trying to fetch media data, but data is unexpectedly not forthcoming.

video:suspend ​

Media data loading has been suspended.

video:timeupdate ​

The time indicated by the currentTime property has changed.

video:volumechange ​

The volume has changed.

video:waiting ​

Playback has stopped because of a temporary lack of data.

- + \ No newline at end of file diff --git a/docs/document/en/advanced/global.html b/docs/document/en/advanced/global.html index e7bf03c80..b854da122 100644 --- a/docs/document/en/advanced/global.html +++ b/docs/document/en/advanced/global.html @@ -9,9 +9,9 @@ - + - + @@ -23,7 +23,7 @@ -
Skip to content

Global Properties ​

The global properties here refer to the top-level properties mounted on the constructor. All property names are in uppercase. These are subject to change in the future and are rarely used.

DEBUG ​

Whether to enable debug mode, which can print all built-in video events. Default is off.

▶ Run Code
js
Artplayer.DEBUG = true;
+    
Skip to content

Global Properties ​

The global properties here refer to the top-level properties mounted on the constructor. All property names are in uppercase. These are subject to change in the future and are rarely used.

DEBUG ​

Whether to enable debug mode, which can print all built-in video events. Default is off.

▶ Run Code
js
Artplayer.DEBUG = true;
 
 var art = new Artplayer({
     container: '.artplayer-app',
@@ -248,7 +248,7 @@
 
 // Only destroy the UI, do not actively clear the src
 art.destroy();
- + \ No newline at end of file diff --git a/docs/document/en/advanced/plugin.html b/docs/document/en/advanced/plugin.html index 0b4433c78..8639c71d9 100644 --- a/docs/document/en/advanced/plugin.html +++ b/docs/document/en/advanced/plugin.html @@ -9,9 +9,9 @@ - + - + @@ -23,7 +23,7 @@ -
Skip to content

Writing Plugins ​

Once you are familiar with the player's properties, methods, and events, writing a plugin becomes a very straightforward task.

You can load a plugin function during instantiation.

▶ Run Code
js
function myPlugin(art) {
+    
Skip to content

Writing Plugins ​

Once you are familiar with the player's properties, methods, and events, writing a plugin becomes a very straightforward task.

You can load a plugin function during instantiation.

▶ Run Code
js
function myPlugin(art) {
     console.info(art);
     return {
         name: 'myPlugin',
@@ -121,8 +121,8 @@
             url: '/assets/sample/layer.png'
         })
     ],
-});
- +});
+ \ No newline at end of file diff --git a/docs/document/en/advanced/property.html b/docs/document/en/advanced/property.html index 33f4f3494..26f8d7c4b 100644 --- a/docs/document/en/advanced/property.html +++ b/docs/document/en/advanced/property.html @@ -9,9 +9,9 @@ - + - + @@ -23,7 +23,7 @@ -
Skip to content

Instance Properties ​

Here, Instance Properties refer to the first-level properties mounted on the instance, which are commonly used.

play ​

  • Type: Function

Play the video.

▶ Run Code
js
var art = new Artplayer({
+    
Skip to content

Instance Properties ​

Here, Instance Properties refer to the first-level properties mounted on the instance, which are commonly used.

play ​

  • Type: Function

Play the video.

▶ Run Code
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
     muted: true,
@@ -457,7 +457,7 @@
 art.on('ready', () => {
     art.subtitleOffset = 1;
 });
- + \ No newline at end of file diff --git a/docs/document/en/component/contextmenu.html b/docs/document/en/component/contextmenu.html index 4c3c633d3..f3c2f1536 100644 --- a/docs/document/en/component/contextmenu.html +++ b/docs/document/en/component/contextmenu.html @@ -9,9 +9,9 @@ - + - + @@ -23,7 +23,7 @@ -
Skip to content

Context Menu ​

Configuration ​

PropertyTypeDescription
disableBooleanWhether to disable the component
nameStringUnique component name for CSS class
indexNumberComponent index for display priority
htmlString, ElementDOM element of the component
styleObjectComponent style object
clickFunctionComponent click event
mountedFunctionTriggered after component mount
tooltipStringTooltip text for the component

Creation ​

▶ Run Code
js
var art = new Artplayer({
+    
Skip to content

Context Menu ​

Configuration ​

PropertyTypeDescription
disableBooleanWhether to disable the component
nameStringUnique component name for CSS class
indexNumberComponent index for display priority
htmlString, ElementDOM element of the component
styleObjectComponent style object
clickFunctionComponent click event
mountedFunctionTriggered after component mount
tooltipStringTooltip text for the component

Creation ​

▶ Run Code
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
     contextmenu: [
@@ -106,7 +106,7 @@
         })
     }, 3000);
 });
- + \ No newline at end of file diff --git a/docs/document/en/component/controls.html b/docs/document/en/component/controls.html index b5d44536d..17b6b3bc8 100644 --- a/docs/document/en/component/controls.html +++ b/docs/document/en/component/controls.html @@ -9,9 +9,9 @@ - + - + @@ -23,7 +23,7 @@ -
Skip to content

Controls ​

Configuration ​

PropertyTypeDescription
disableBooleanWhether to disable the control
nameStringUnique name of the control, used for class marking
indexNumberControl index, determines display priority
htmlString, ElementDOM element of the control
styleObjectStyle object for the control
clickFunctionClick event handler for the control
mountedFunctionTriggered after the control is mounted
tooltipStringTooltip text for the control
positionStringleft or right - controls which side the control appears on
selectorArrayArray of objects for selection list
onSelectFunctionFunction triggered when a selection list item is clicked

Creation ​

▶ Run Code
js
var art = new Artplayer({
+    
Skip to content

Controls ​

Configuration ​

PropertyTypeDescription
disableBooleanWhether to disable the control
nameStringUnique name of the control, used for class marking
indexNumberControl index, determines display priority
htmlString, ElementDOM element of the control
styleObjectStyle object for the control
clickFunctionClick event handler for the control
mountedFunctionTriggered after the control is mounted
tooltipStringTooltip text for the control
positionStringleft or right - controls which side the control appears on
selectorArrayArray of objects for selection list
onSelectFunctionFunction triggered when a selection list item is clicked

Creation ​

▶ Run Code
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
     controls: [
@@ -153,7 +153,7 @@
         });
     }, 3000);
 });
- + \ No newline at end of file diff --git a/docs/document/en/component/layers.html b/docs/document/en/component/layers.html index 7e7f520cd..745f1bcaf 100644 --- a/docs/document/en/component/layers.html +++ b/docs/document/en/component/layers.html @@ -9,9 +9,9 @@ - + - + @@ -23,7 +23,7 @@ -
Skip to content

Layers ​

Configuration ​

PropertyTypeDescription
disableBooleanWhether to disable the component
nameStringUnique component name for CSS class
indexNumberComponent index for display priority
htmlString, ElementComponent DOM element
styleObjectComponent style object
clickFunctionComponent click event
mountedFunctionTriggered after component mount
tooltipStringComponent tooltip text

Creation ​

▶ Run Code
js
var img = '/assets/sample/layer.png';
+    
Skip to content

Layers ​

Configuration ​

PropertyTypeDescription
disableBooleanWhether to disable the component
nameStringUnique component name for CSS class
indexNumberComponent index for display priority
htmlString, ElementComponent DOM element
styleObjectComponent style object
clickFunctionComponent click event
mountedFunctionTriggered after component mount
tooltipStringComponent tooltip text

Creation ​

▶ Run Code
js
var img = '/assets/sample/layer.png';
 var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
@@ -125,7 +125,7 @@
         });
     }, 3000);
 });
- + \ No newline at end of file diff --git a/docs/document/en/component/setting.html b/docs/document/en/component/setting.html index 995312e66..45680f632 100644 --- a/docs/document/en/component/setting.html +++ b/docs/document/en/component/setting.html @@ -9,9 +9,9 @@ - + - + @@ -23,7 +23,7 @@ -
Skip to content

Settings Panel ​

Built-in ​

First, you need to open the settings panel. It comes with four built-in items: flip, playbackRate, aspectRatio, subtitleOffset.

▶ Run Code
js
var art = new Artplayer({
+    
Skip to content

Settings Panel ​

Built-in ​

First, you need to open the settings panel. It comes with four built-in items: flip, playbackRate, aspectRatio, subtitleOffset.

▶ Run Code
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
     setting: true,
@@ -245,7 +245,7 @@
         });
     }, 3000);
 });
- + \ No newline at end of file diff --git a/docs/document/en/index.html b/docs/document/en/index.html index 135a94d8f..cd3b8278e 100644 --- a/docs/document/en/index.html +++ b/docs/document/en/index.html @@ -9,9 +9,9 @@ - + - + @@ -23,7 +23,7 @@ -
Skip to content

Installation and Usage ​

Installation ​

bash
npm install artplayer
bash
yarn add artplayer
bash
pnpm add artplayer
bash
bun add artplayer
html
<script src="path/to/artplayer.js"></script>

CDN ​

bash
https://cdn.jsdelivr.net/npm/artplayer/dist/artplayer.js
bash
https://unpkg.com/artplayer/dist/artplayer.js

Usage ​

html
<html>
+    
Skip to content

Installation and Usage ​

Installation ​

bash
npm install artplayer
bash
yarn add artplayer
bash
pnpm add artplayer
bash
bun add artplayer
html
<script src="path/to/artplayer.js"></script>

CDN ​

bash
https://cdn.jsdelivr.net/npm/artplayer/dist/artplayer.js
bash
https://unpkg.com/artplayer/dist/artplayer.js

Usage ​

html
<html>
     <head>
         <title>ArtPlayer Demo</title>
         <meta charset="UTF-8" />
@@ -237,7 +237,7 @@
         </script>
     </body>
 </html>

Note

You need to modify it before importing the Artplayer dependency for it to take effect.

- + \ No newline at end of file diff --git a/docs/document/en/plugin/danmuku.html b/docs/document/en/plugin/danmuku.html new file mode 100644 index 000000000..216a0b33a --- /dev/null +++ b/docs/document/en/plugin/danmuku.html @@ -0,0 +1,131 @@ + + + + + + Danmuku | Artplayer.js + + + + + + + + + + + + + + + + + + + +
Skip to content

Danmuku ​

中文说明

Display timed comments over the video, with an input panel, display settings and an optional heatmap. This guide describes the current refactor branch. The /runtime entrypoint and refactor fixes have not yet been published to npm; unversioned CDN links still load the published release.

Demo ​

Open the full example. Run Code examples below use the site's local plugin build and sample media. In your application, use your own container and media URLs.

Installation ​

sh
npm install artplayer artplayer-plugin-danmuku
sh
yarn add artplayer artplayer-plugin-danmuku
sh
pnpm add artplayer artplayer-plugin-danmuku
html
<script src="path/to/artplayer.js"></script>
+<script src="path/to/artplayer-plugin-danmuku.js"></script>

JavaScript projects can import the default factory from artplayer-plugin-danmuku. Script builds expose artplayerPluginDanmuku; pass its result to the player's plugins array.

CDN ​

text
https://cdn.jsdelivr.net/npm/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js
text
https://unpkg.com/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js

Comment structure ​

Only text is required. Leading and trailing whitespace is removed; empty comments are ignored.

js
({
+    text: 'Hello!',
+    time: 10, // Seconds; omitted time defaults to currentTime + 0.5
+    mode: 0, // 0: scrolling, 1: top, 2: bottom; defaults to option.mode
+    color: '#FFFFFF', // Defaults to option.color
+    border: false,
+    style: {}, // CSS properties for this comment
+});

Explicit time: 0 is preserved. Negative times are clamped to zero. Other than 0, 1 and 2, comment modes are ignored.

All options ​

Pass an option object to the factory. At runtime, {} is valid and all fields have defaults. The historical root declarations still require danmuku; existing TypeScript projects can keep providing it. See TypeScript for accurate declarations.

js
({
+    danmuku: [], // Array, XML URL, Promise of an array, or function returning an array/Promise
+    speed: 5, // Display duration in seconds, clamped to 1–10
+    margin: [10, '25%'], // Top/bottom spacing: pixels or percentages
+    opacity: 1, // Clamped to 0–1
+    color: '#FFFFFF', // Default comment color
+    mode: 0, // Default comment mode
+    modes: [0, 1, 2], // Visible modes
+    fontSize: 25, // Pixels or a percentage of player height
+    antiOverlap: true,
+    synchronousPlayback: false, // Follow video playbackRate when enabled
+    mount: undefined, // Defaults to the center of the player controls
+    heatmap: false, // Enable at construction: true or a heatmap options object
+    width: 512, // Below this width, the default input panel moves below the player
+    points: [], // Stored option; use the points event to draw custom data
+    filter: () => true, // Synchronous; do not return a Promise
+    beforeEmit: () => true, // Input-panel submissions only; may return a Promise
+    beforeVisible: () => true, // Called before display; may return a Promise
+    visible: true,
+    emitter: true, // Show the input panel's sending UI
+    maxLength: 200, // Input length, clamped to 1–1000
+    lockTime: 5, // Seconds between input-panel submissions, clamped to 1–60
+    theme: 'dark', // 'dark' or 'light' for an external mount
+    OPACITY: {},
+    FONT_SIZE: {},
+    MARGIN: {},
+    SPEED: {},
+    COLOR: [],
+});

OPACITY, FONT_SIZE, MARGIN and SPEED override slider definitions with min, max and steps. Each step can contain name, value, hide and show; margin values are pairs such as [10, '50%']. COLOR replaces the palette with an array of CSS color strings; an empty array uses the built-in palette.

Array, XML and asynchronous input ​

XML input uses Bilibili's comment format. Fetching a cross-origin XML URL requires that server to allow browser access. An input function runs without the option object as its receiver. It may return an array directly or asynchronously.

▶ Run Code
js
var art = new Artplayer({
+    container: '.artplayer-app',
+    url: '/assets/sample/video.mp4',
+    plugins: [
+        artplayerPluginDanmuku({
+            danmuku: [{ text: 'Hello from an array', time: 1 }],
+            // Alternatives:
+            // danmuku: '/assets/sample/danmuku.xml',
+            // danmuku: Promise.resolve([{ text: 'From a Promise', time: 1 }]),
+            // danmuku: async () => [{ text: 'From a function', time: 1 }],
+        }),
+    ],
+});

Lifecycle callbacks ​

Input-panel submissions run beforeEmit → filter → beforeVisible → artplayerPluginDanmuku:visible. Loaded comments and direct emit calls run filter → beforeVisible → artplayerPluginDanmuku:visible. This describes accepted comments; callbacks can reject them, and scheduling still requires playback and an available track.

CallbackInputAcceptance
beforeEmitInput-panel commentOnly strict true, or a Promise resolving to true, sends it
filterComment with time, mode, color and style filled inA synchronous truthy result adds it to the queue
beforeVisibleQueue itemA truthy result, including an awaited result, permits display

Normal functions receive the current option object as this for all three callbacks. Arrow functions retain their lexical this. emit() does not call beforeEmit: perform application validation before calling it when needed. beforeEmit failures are logged in the console and leave the input available for another attempt.

An asynchronous beforeVisible rejection emits artplayerPluginDanmuku:error once for that item in the current run; other items continue. Pause/resume, reset or replacing the callback permits a retry if the item is still eligible by time. Pausing, seeking, hiding, resetting or destroying cancels unfinished visibility preparation.

Methods and state ​

The registered plugin is available synchronously as art.plugins.artplayerPluginDanmuku.

MemberBehavior and return value
emit(comment)Processes one comment for the queue; returns a Promise
load()Reads option.danmuku and replaces the queue; returns a Promise
load(input)Appends comments from the input; returns a Promise
config(partialOption)Synchronously merges configuration
hide() / show()Synchronously hides or shows the comment layer
reset()Clears displayed comments and returns queue items to waiting; does not delete the queue
mount(target)Moves the panel to an existing element or selector; returns undefined
optionLive current configuration; use config() for validated updates
isHideRead-only live visibility state: true when hidden
isStopRead-only live stopped state; distinct from visibility and not a media-readiness signal

emit/load Promises resolve to the internal Danmuku owner. config/hide/show/reset return that same owner synchronously. The owner is different from the registered plugin facade. Keep using the registered facade for subsequent commands. Awaiting emit() means queue processing has finished, not that the comment has appeared.

Loading and configuration ​

Changing config({ danmuku: input }) does not load the new input. Follow it with load() to replace the queue. Input-read failures leave the existing queue intact; failures while filtering individual rows do not guarantee an atomic rollback of the entire batch. Independent append operations do not cancel one another. A newer replacement cancels an unfinished older replacement. Destroy cancels pending loads. Cancelled Promises resolve to the owner without a late loaded or error event.

Fetch and response-text failures emit artplayerPluginDanmuku:error and reject the corresponding public load() Promise. Handle rejection with await/try...catch or .catch(...). Initial automatic loading observes rejection and logs a warning. Invalid configuration leaves the current option intact. Use mount(target) to move the panel; changing option.mount through config() does not perform a mount. Enable heatmap when constructing the plugin; config({ heatmap: true }) does not create it later.

▶ Run Code
js
var art = new Artplayer({
+    container: '.artplayer-app',
+    url: '/assets/sample/video.mp4',
+    plugins: [artplayerPluginDanmuku({ danmuku: [], emitter: false })],
+});
+
+async function updateComments() {
+    var plugin = art.plugins.artplayerPluginDanmuku;
+    plugin.config({ danmuku: [{ text: 'Replacement', time: 1 }] });
+    await plugin.load();
+    await plugin.load([{ text: 'Appended', time: 2 }]);
+    await plugin.emit({ text: 'Scheduled from the current time' });
+    plugin.hide();
+    console.info('Hidden:', plugin.isHide);
+    plugin.show();
+    plugin.reset();
+}
+updateComments().catch(console.error);

External mount ​

Create a separate mount element before constructing the plugin. The panel moves into the controls during player fullscreen or web fullscreen and returns to its configured mount on exit. Use theme: 'light' on a light background. The live mount(target) method requires a valid target; omitting its argument does not select the default. Destroy releases the plugin panel; the application owns any container it created.

▶ Run Code
js
var $danmu = document.createElement('div');
+document.querySelector('.artplayer-app').after($danmu);
+var art = new Artplayer({
+    container: '.artplayer-app',
+    url: '/assets/sample/video.mp4',
+    fullscreenWeb: true,
+    plugins: [artplayerPluginDanmuku({
+        danmuku: [{ text: 'External input panel', time: 1 }],
+        mount: $danmu,
+        theme: 'dark',
+    })],
+});
+art.on('destroy', () => $danmu.remove());
+// Move it later with art.plugins.artplayerPluginDanmuku.mount(otherElement).

Heatmap ​

Set heatmap: true at construction to sample the queue automatically. A live stream does not draw a heatmap. Dense automatic curves now fit in the bottom quarter of the chart instead of covering the video (issue #958). Explicit finite yMin or yMax and custom points retain their coordinate mapping.

An object can set xMin, xMax, yMin, yMax, scale, opacity, minHeight, sampling, smoothing and flattening. Defaults are xMin: 0, xMax: chartWidth, yMin: 0, yMax: 128, scale: 0.25, opacity: 0.2, minHeight: floor(chartHeight * 0.05), sampling: max(1, floor(chartWidth / 100)), smoothing: 0.2, flattening: 0.2.

Send art.emit('artplayerPluginDanmuku:points', points) to draw custom [x, value] pairs. The default x-axis uses chart pixels, not seconds. Set xMin/xMax explicitly if supplying another coordinate range. Rendering mutates the inner point arrays for historical compatibility: copy each pair if reusing the original data. The stored points option does not draw custom data. A resize or successful load redraws the automatic curve, so resend custom data after those events when needed.

▶ Run Code
js
var art = new Artplayer({
+    container: '.artplayer-app',
+    url: '/assets/sample/video.mp4',
+    plugins: [artplayerPluginDanmuku({
+        danmuku: [{ text: 'Heatmap example', time: 1 }],
+        heatmap: true,
+    })],
+});
+var points = [[0, 5], [0.25, 12], [0.5, 30], [0.75, 10], [1, 5]];
+function drawPoints() {
+    var width = art.controls.heatmap.offsetWidth;
+    art.emit('artplayerPluginDanmuku:points', points.map(([ratio, value]) => [ratio * width, value]));
+}
+art.on('ready', drawPoints);
+art.on('resize', drawPoints);
+art.on('artplayerPluginDanmuku:loaded', drawPoints);

Events ​

Subscribe with art.on(name, callback) and remove subscriptions with art.off(name, callback).

EventPayload / meaning
artplayerPluginDanmuku:visibleQueue item; its $ref is the displayed element
artplayerPluginDanmuku:loadedCurrent full queue after a successful load, including appends
artplayerPluginDanmuku:errorOriginal error from loading or scheduling; handle public Promise rejections separately
artplayerPluginDanmuku:configCurrent configuration
artplayerPluginDanmuku:startNo payload; scheduling starts
artplayerPluginDanmuku:stopNo payload; scheduling stops
artplayerPluginDanmuku:hideNo payload; layer hidden
artplayerPluginDanmuku:showNo payload; layer shown
artplayerPluginDanmuku:resetNo payload; displayed items reset
artplayerPluginDanmuku:destroyNo payload; plugin destroyed
artplayerPluginDanmuku:pointsApplication-sent custom points for the heatmap

Events are not replayed to later listeners. In particular, an initially empty array can finish loading during construction. Subscribe before invoking a later load() if you need to observe its completion event. Use $ref.textContent when adding text in a visible handler.

TypeScript ​

The root and /legacy entrypoints keep the npm 5.3.0 declaration shapes for compatibility, including historical inaccuracies about return values. The current branch adds /runtime for accurate types while loading the same runtime factory:

ts
import Artplayer from 'artplayer';
+import danmuku from 'artplayer-plugin-danmuku/runtime';
+import type { RuntimeOption, Point, EventMap } from 'artplayer-plugin-danmuku/runtime';
+
+const option: RuntimeOption = { danmuku: [], heatmap: true };
+const points: Point[] = [[0, 5], [100, 10]];
+const onError = (...[error]: EventMap['artplayerPluginDanmuku:error']) => console.error(error);
+const art = new Artplayer({ container: '#player', url: '/video.mp4', plugins: [danmuku(option)] });
+art.on('artplayerPluginDanmuku:error', onError);

The explicit EventMap describes payloads; it does not augment the core's historical event declarations automatically. The factory also exposes the existing icons object for customization. Package README.md and ARCHITECTURE.md describe module ownership, maintenance commands and remaining device/combination validation.

+ + + + \ No newline at end of file diff --git a/docs/document/en/start/i18n.html b/docs/document/en/start/i18n.html index a3aca1112..ae2aea7e4 100644 --- a/docs/document/en/start/i18n.html +++ b/docs/document/en/start/i18n.html @@ -9,9 +9,9 @@ - + - + @@ -23,7 +23,7 @@ -
Skip to content

Language Settings ​

DANGER

Due to the increasing number of bundled multilingual resources, starting from version 5.1.0, the core artplayer.js code will no longer bundle any languages other than Simplified Chinese and English. You will need to manually import any other languages you require.

WARNING

When a language cannot be matched, English will be displayed by default. For i18n syntax reference, see: artplayer/types/i18n.d.ts

Default Languages ​

The default languages are: en, zh-cn. No manual import is required.

js
var art = new Artplayer({
+    
Skip to content

Language Settings ​

DANGER

Due to the increasing number of bundled multilingual resources, starting from version 5.1.0, the core artplayer.js code will no longer bundle any languages other than Simplified Chinese and English. You will need to manually import any other languages you require.

WARNING

When a language cannot be matched, English will be displayed by default. For i18n syntax reference, see: artplayer/types/i18n.d.ts

Default Languages ​

The default languages are: en, zh-cn. No manual import is required.

js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
     lang: 'zh-cn', // or 'en'
@@ -75,7 +75,7 @@
         },
     },
 });
- + \ No newline at end of file diff --git a/docs/document/en/start/option.html b/docs/document/en/start/option.html index 679635379..9f5196da2 100644 --- a/docs/document/en/start/option.html +++ b/docs/document/en/start/option.html @@ -9,9 +9,9 @@ - + - + @@ -23,7 +23,7 @@ -
Skip to content

Basic Options ​

container ​

  • Type: String, Element
  • Default: #artplayer

The DOM container where the player is mounted.

▶ Run Code
js
var art = new Artplayer({
+    
Skip to content

Basic Options ​

container ​

  • Type: String, Element
  • Default: #artplayer

The DOM container where the player is mounted.

▶ Run Code
js
var art = new Artplayer({
     container: '.artplayer-app',
     // container: document.querySelector('.artplayer-app'),
     url: '/assets/sample/video.mp4',
@@ -415,7 +415,7 @@
     url: '/assets/sample/video.mp4',
     proxy: () => document.createElement('video')
 });
- + \ No newline at end of file diff --git a/docs/document/hashmap.json b/docs/document/hashmap.json index 20b5d6c70..71fb96632 100644 --- a/docs/document/hashmap.json +++ b/docs/document/hashmap.json @@ -1 +1 @@ -{"advanced_built-in.md":"DbXkhR8l","advanced_class.md":"BE9Wp7q6","advanced_event.md":"DoIgqIU9","advanced_global.md":"Db4VcykV","advanced_plugin.md":"CVp3Oe2x","advanced_property.md":"C_nOKniE","component_contextmenu.md":"lsIURdc3","component_controls.md":"CKAl0l5Z","component_layers.md":"D34Y4OkH","component_setting.md":"BwCpY3NU","en_advanced_built-in.md":"yQHjIPvf","en_advanced_class.md":"DklNHOdd","en_advanced_event.md":"opkwpdYa","en_advanced_global.md":"C8Y_RPho","en_advanced_plugin.md":"C22jhoxt","en_advanced_property.md":"BBsrm5xX","en_component_contextmenu.md":"BZMIBA5Z","en_component_controls.md":"CzJX3V-W","en_component_layers.md":"CMe9ljjt","en_component_setting.md":"BEB18u4V","en_index.md":"BBeGRjus","en_start_i18n.md":"DxgNQ6qb","en_start_option.md":"CTPFIwzU","index.md":"CvYUO2aO","plugin_danmuku.md":"CFjljCkq","start_i18n.md":"D_Yw7TSy","start_option.md":"DRwrMHeQ"} +{"advanced_built-in.md":"DbXkhR8l","advanced_class.md":"BE9Wp7q6","advanced_event.md":"DoIgqIU9","advanced_global.md":"Db4VcykV","advanced_plugin.md":"CVp3Oe2x","advanced_property.md":"C_nOKniE","component_contextmenu.md":"lsIURdc3","component_controls.md":"CKAl0l5Z","component_layers.md":"D34Y4OkH","component_setting.md":"BwCpY3NU","en_advanced_built-in.md":"yQHjIPvf","en_advanced_class.md":"DklNHOdd","en_advanced_event.md":"opkwpdYa","en_advanced_global.md":"C8Y_RPho","en_advanced_plugin.md":"C22jhoxt","en_advanced_property.md":"BBsrm5xX","en_component_contextmenu.md":"BZMIBA5Z","en_component_controls.md":"CzJX3V-W","en_component_layers.md":"CMe9ljjt","en_component_setting.md":"BEB18u4V","en_index.md":"BBeGRjus","en_plugin_danmuku.md":"DqSk_DK5","en_start_i18n.md":"DxgNQ6qb","en_start_option.md":"CTPFIwzU","index.md":"CvYUO2aO","plugin_danmuku.md":"gN3hMRyB","start_i18n.md":"D_Yw7TSy","start_option.md":"DRwrMHeQ"} diff --git a/docs/document/index.html b/docs/document/index.html index da265fb2a..841206089 100644 --- a/docs/document/index.html +++ b/docs/document/index.html @@ -9,9 +9,9 @@ - + - + @@ -237,7 +237,7 @@ </script> </body> </html>

提示

你需要在引入 Artplayer 依赖前来修改它才会生效

- + \ No newline at end of file diff --git a/docs/document/main.js b/docs/document/main.js index 6498c272a..6fbd6a5e9 100644 --- a/docs/document/main.js +++ b/docs/document/main.js @@ -50,5 +50,5 @@ } // - installNavigation(window, ["advanced/built-in.html", "advanced/built-in", "advanced/class.html", "advanced/class", "advanced/event.html", "advanced/event", "advanced/global.html", "advanced/global", "advanced/plugin.html", "advanced/plugin", "advanced/property.html", "advanced/property", "component/contextmenu.html", "component/contextmenu", "component/controls.html", "component/controls", "component/layers.html", "component/layers", "component/setting.html", "component/setting", "", "index.html", "start/i18n.html", "start/i18n", "start/option.html", "start/option"]); + installNavigation(window, ["advanced/built-in.html", "advanced/built-in", "advanced/class.html", "advanced/class", "advanced/event.html", "advanced/event", "advanced/global.html", "advanced/global", "advanced/plugin.html", "advanced/plugin", "advanced/property.html", "advanced/property", "component/contextmenu.html", "component/contextmenu", "component/controls.html", "component/controls", "component/layers.html", "component/layers", "component/setting.html", "component/setting", "", "index.html", "plugin/danmuku.html", "plugin/danmuku", "start/i18n.html", "start/i18n", "start/option.html", "start/option"]); })(); diff --git a/docs/document/plugin/danmuku.html b/docs/document/plugin/danmuku.html index 8f0370ca9..015d86fcf 100644 --- a/docs/document/plugin/danmuku.html +++ b/docs/document/plugin/danmuku.html @@ -9,11 +9,11 @@ - + - + - + @@ -23,14 +23,14 @@ -
Skip to content

弹幕库 ​

演示 ​

👉 查看完整演示

安装 ​

bash
npm install artplayer-plugin-danmuku
bash
yarn add artplayer-plugin-danmuku
bash
pnpm add artplayer-plugin-danmuku
html
<script src="path/to/artplayer-plugin-danmuku.js"></script>

CDN ​

bash
https://cdn.jsdelivr.net/npm/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js
bash
https://unpkg.com/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js

弹幕结构 ​

每一个弹幕是一个对象,多个弹幕组成的数组就是弹幕库,通常只需要text就可以发送一个弹幕,其余都是非必要参数

js
{
+    
Skip to content

弹幕库 ​

English guide

本文描述当前重构分支。/runtime 类型入口与本轮修复尚未发布到 npm;CDN 默认仍加载已发布版本。

演示 ​

👉 查看完整演示

下方 Run Code 使用本站构建的插件与样本。接入自己的应用时,请替换容器和媒体 URL。

安装 ​

bash
npm install artplayer-plugin-danmuku
bash
yarn add artplayer-plugin-danmuku
bash
pnpm add artplayer-plugin-danmuku
html
<script src="path/to/artplayer-plugin-danmuku.js"></script>

CDN ​

bash
https://cdn.jsdelivr.net/npm/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js
bash
https://unpkg.com/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js

弹幕结构 ​

每一个弹幕是一个对象,多个弹幕组成的数组就是弹幕库,通常只需要text就可以发送一个弹幕,其余都是非必要参数

js
{
     text: '', // 弹幕文本
-    time: 10, // 弹幕时间, 默认为当前播放器时间
+    time: 10, // 弹幕时间, 单位秒,省略时为当前播放器时间加 0.5 秒;显式 0 保留
     mode: 0, // 弹幕模式: 0: 滚动(默认),1: 顶部,2: 底部
-    color: '#FFFFFF', // 弹幕颜色,默认为白色
+    color: '#FFFFFF', // 弹幕颜色,默认使用配置 color(初始为白色)
     border: false, // 弹幕是否有描边, 默认为 false
     style: {}, // 弹幕自定义样式, 默认为空对象
-}

全部选项 ​

只有danmuku是必须的参数,其余都是非必填

js
{
+}

全部选项 ​

工厂需要一个配置对象。运行时可传 {},每个字段都有默认值;旧版根入口类型仍要求 danmuku,旧项目继续传入它即可。准确类型见下方 TypeScript 说明。

js
{
     danmuku: [], // 弹幕数据
     speed: 5, // 弹幕持续时间,范围在[1 ~ 10]
     margin: [10, '25%'], // 弹幕上下边距,支持像素数字和百分比
@@ -44,9 +44,9 @@
     mount: undefined, // 弹幕发射器挂载点, 默认为播放器控制栏中部
     heatmap: false, // 是否开启热力图
     width: 512, // 当播放器宽度小于此值时,弹幕发射器置于播放器底部
-    points: [], // 热力图数据
+    points: [], // 保留的配置字段;绘制自定义数据请发送 points 事件
     filter: () => true, // 弹幕载入前的过滤器,只支持返回布尔值
-    beforeEmit: () => true, // 弹幕发送前的过滤器,支持返回 Promise
+    beforeEmit: () => true, // 输入框发送前的过滤器,支持返回 Promise
     beforeVisible: () => true, // 弹幕显示前的过滤器,支持返回 Promise
     visible: true, // 弹幕层是否可见
     emitter: true, // 是否开启弹幕发射器
@@ -58,7 +58,7 @@
     MARGIN: {}, // 显示区域配置项
     SPEED: {}, // 弹幕速度配置项
     COLOR: [], // 颜色列表配置项
-}

生命周期 ​

来自用户输入的弹幕:

beforeEmit -> filter -> beforeVisible -> artplayerPluginDanmuku:visible

来自服务器的弹幕:

filter -> beforeVisible -> artplayerPluginDanmuku:visible

▶ Run Code
js
// 保存到数据库
+}

OPACITY、FONT_SIZE、MARGIN、SPEED 可覆盖滑块的 min、max、steps。 每个 step 可包含 name、value、hide、show;MARGIN 的 value 是上下边距数组。 COLOR 用 CSS 颜色字符串数组替换调色板,空数组使用内置调色板。

生命周期 ​

filter 同步执行,不应返回 Promise;beforeEmit 可异步,但只有严格返回 true 才发送。beforeVisible 可以异步。普通函数形式的这三个回调,其 this 都是当前配置对象。直接调用 emit 不执行 beforeEmit,需要业务校验时请在调用前完成。

来自用户输入的弹幕:

beforeEmit -> filter -> beforeVisible -> artplayerPluginDanmuku:visible

来自服务器或直接调用 emit 的弹幕:

filter -> beforeVisible -> artplayerPluginDanmuku:visible

▶ Run Code
js
// 保存到数据库
 function saveDanmu(danmu) {
     return new Promise(resolve => {
         setTimeout(() => {
@@ -103,7 +103,7 @@
 
 // 弹幕已经出现在播放器里,你可以访问到弹幕的dom元素里
 art.on('artplayerPluginDanmuku:visible', danmu => {
-    danmu.$ref.innerHTML = 'ଘ(੭ˊᵕˋ)੭: ' + danmu.$ref.innerHTML;
+    danmu.$ref.textContent = 'ଘ(੭ˊᵕˋ)੭: ' + danmu.$ref.textContent;
 })

使用弹幕数组 ​

▶ Run Code
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
@@ -125,14 +125,14 @@
             danmuku: '/assets/sample/danmuku.xml',
         }),
     ],
-});

使用异步返回 ​

▶ Run Code
js
var art = new Artplayer({
+});

使用异步返回 ​

也可以直接传入 Promise<弹幕数组>,或传入同步返回数组的函数。输入函数没有配置对象作为 this。

▶ Run Code
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
     plugins: [
         artplayerPluginDanmuku({
             danmuku: function () {
-                return new Promise((resovle) => {
-                    return resovle([
+                return new Promise((resolve) => {
+                    return resolve([
                         {
                             text: '使用 Promise 异步返回',
                             time: 1
@@ -189,7 +189,7 @@
             },
         },
     ],
-});

emit ​

通过方法 emit 发送一条实时弹幕

▶ Run Code
js
var art = new Artplayer({
+});

emit ​

通过方法 emit 向队列添加一条弹幕。它返回 Promise;完成表示入队处理完成,不代表已经显示。请用 await 或 .catch(...) 处理拒绝。省略时间时安排在当前播放时间之后 0.5 秒,显示仍受播放状态、过滤器和可用轨道影响。

▶ Run Code
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
     plugins: [
@@ -209,11 +209,11 @@
                     text: text,
                     color: color,
                     border: true,
-                });
+                }).catch(console.error);
             },
         },
     ],
-});

config ​

通过方法 config 实时改变弹幕配置

▶ Run Code
js
var art = new Artplayer({
+});

config ​

通过方法 config 同步合并弹幕配置。更改 danmuku 不会自动重新加载,之后调用无参数的 load() 才会替换队列;无效配置不会覆盖现有配置。需要移动发射器时调用 mount(target);热力图应在初始化时启用,config({ heatmap: true }) 不会创建热力图。

▶ Run Code
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
     plugins: [
@@ -239,7 +239,7 @@
             },
         },
     ],
-});

load ​

通过 load 方法可以重载弹幕库,或者切换新弹幕库,或者追加新的弹幕库

▶ Run Code
js
var art = new Artplayer({
+});

load ​

通过 load 重载、切换或追加弹幕库,返回 Promise。无参数 load() 在读取配置中的输入成功后替换队列;传入 load(input) 则追加。输入读取失败不会清空现有队列,但逐条过滤时发生异常不保证整批回滚。并发追加互不取消,新的替换会取消尚未完成的旧替换。销毁会取消未完成加载;被取消的 Promise 仍正常结束,但不会发出迟到的 loaded/error 事件。

▶ Run Code
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
     plugins: [
@@ -254,7 +254,7 @@
             html: '重载',
             click: function () {
                 // 重新加载当前弹幕库
-                art.plugins.artplayerPluginDanmuku.load();
+                art.plugins.artplayerPluginDanmuku.load().catch(console.error);
             },
         },
         {
@@ -265,7 +265,7 @@
                 art.plugins.artplayerPluginDanmuku.config({
                     danmuku: '/assets/sample/danmuku-v2.xml',
                 });
-                art.plugins.artplayerPluginDanmuku.load();
+                art.plugins.artplayerPluginDanmuku.load().catch(console.error);
             },
         },
         {
@@ -274,11 +274,11 @@
             click: function () {
                 // 追加新的弹幕库,参数类型和option.danmuku相同
                 const target = '/assets/sample/danmuku.xml'
-                art.plugins.artplayerPluginDanmuku.load(target);
+                art.plugins.artplayerPluginDanmuku.load(target).catch(console.error);
             },
         },
     ],
-});

reset ​

用于清空当前显示的弹幕

▶ Run Code
js
var art = new Artplayer({
+});

reset ​

用于清空当前显示的弹幕并将队列项重置为等待状态。它不删除队列;后续播放仍可按时间显示弹幕。

▶ Run Code
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
     plugins: [
@@ -290,7 +290,8 @@
 
 art.on('resize', () => {
     art.plugins.artplayerPluginDanmuku.reset();
-});

mount ​

在初始化弹幕插件的时候,是可以指定弹幕发射器的挂载位置的,默认是挂载在控制栏的中部,你也可以把它挂载在播放器以外的地方。 当播放器全屏的时候,发射器会自动回到控制栏的中部。假如你挂载的地方是亮色的话,建议把 theme 设置成 light,否则会看不清。

▶ Run Code
js
var $danmu = document.querySelector('.artplayer-app');
+});

mount ​

在初始化弹幕插件的时候,是可以指定弹幕发射器的挂载位置的,默认是挂载在控制栏的中部,你也可以把它挂载在播放器以外的地方。 当播放器全屏的时候,发射器会自动回到控制栏的中部。假如你挂载的地方是亮色的话,建议把 theme 设置成 light,否则会看不清。

退出全屏后会返回配置的挂载点。mount(target) 必须传入已存在的元素或选择器,省略参数不会恢复默认位置;它返回 undefined。销毁会移除插件面板,应用创建的外部容器由应用清理。

▶ Run Code
js
var $danmu = document.createElement('div');
+document.querySelector('.artplayer-app').after($danmu);
 
 var art = new Artplayer({
     container: '.artplayer-app',
@@ -298,15 +299,17 @@
     fullscreenWeb: true,
     plugins: [
         artplayerPluginDanmuku({
-			mount: $danmu,
+            mount: $danmu,
             theme: 'dark',
             danmuku: '/assets/sample/danmuku.xml',
         }),
     ],
 });
 
+art.on('destroy', () => $danmu.remove());
+
 // 也可以手动挂载
-// art.plugins.artplayerPluginDanmuku.mount($danmu);

option ​

用于获取当前弹幕配置

▶ Run Code
js
var art = new Artplayer({
+// art.plugins.artplayerPluginDanmuku.mount($danmu);

option ​

用于获取当前弹幕配置,返回实时配置对象。更新配置请调用 config,避免直接修改对象而绕过校验和 UI 同步。

▶ Run Code
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
     plugins: [
@@ -318,7 +321,7 @@
 
 art.on('ready', () => {
     console.info(art.plugins.artplayerPluginDanmuku.option);
-});

事件 ​

▶ Run Code
js
var art = new Artplayer({
+});

事件 ​

使用 art.on(name, callback) 订阅,art.off(name, callback) 取消订阅。事件不会向迟到的监听器重放;初始空数组可能在构造期间就完成加载。若需要观察后续加载,先订阅再调用 load()。

loaded 参数是当前完整队列,包含已追加数据;error 也可能来自显示调度。监听错误事件并不能代替处理公开方法的 Promise 拒绝。

▶ Run Code
js
var art = new Artplayer({
     container: '.artplayer-app',
     url: '/assets/sample/video.mp4',
     plugins: [
@@ -337,7 +340,7 @@
 });
 
 art.on('artplayerPluginDanmuku:error', (error) => {
-    console.info('加载错误', error);
+    console.info('弹幕错误', error);
 });
 
 art.on('artplayerPluginDanmuku:config', (option) => {
@@ -366,8 +369,31 @@
 
 art.on('artplayerPluginDanmuku:destroy', () => {
     console.info('弹幕销毁');
-});
- +});

isStop 与方法返回值 ​

art.plugins.artplayerPluginDanmuku.isStop 是实时只读的停止状态,与 isHide 不同,也不表示媒体是否准备就绪。 emit/load 返回的 Promise 完成后得到内部 Danmuku 对象;config/hide/show/reset 同步返回同一个内部对象。它与注册在 art.plugins 上的插件对象不是同一个对象。后续命令继续通过注册的插件调用即可。

beforeEmit 抛出或拒绝时会在控制台报告错误,输入框可再次尝试发送。 beforeVisible 拒绝时,对该项在当前调度轮报告一次 artplayerPluginDanmuku:error,其他项继续处理;暂停后恢复、reset 或更换回调后,仍符合时间条件的项可重试。 暂停、seek、隐藏、reset 和销毁会取消尚未完成的显示准备。

热力图 ​

初始化时设置 heatmap: true,按队列自动采样;直播不绘制热力图。 本轮修复了密集弹幕曲线过高遮挡视频的问题(issue #958),自动曲线会适配到图表底部四分之一区域。显式设置有限的 yMin/yMax 或发送自定义 points 时保留原坐标映射。

heatmap 也可传配置对象:xMin、xMax、yMin、yMax、scale、opacity、minHeight、sampling、smoothing、flattening。 默认分别为 0、图表宽度、0、128、0.25、0.2、floor(图表高度 * 0.05)、max(1, floor(图表宽度 / 100))、0.2、0.2。

绘制自定义数据使用 art.emit('artplayerPluginDanmuku:points', points),每项为 [x, value]。默认 x 是图表像素坐标,不是秒。 渲染会修改内层数组的第二项,保留原数据时请复制每一对坐标。配置中的 points 字段仅存储,不会自动绘图。 resize 或成功 load 会恢复自动曲线,需要自定义曲线时可在这些事件后重新发送。

▶ Run Code
js
var art = new Artplayer({
+    container: '.artplayer-app',
+    url: '/assets/sample/video.mp4',
+    plugins: [artplayerPluginDanmuku({
+        danmuku: [{ text: '热力图示例', time: 1 }],
+        heatmap: true,
+    })],
+});
+var points = [[0, 5], [0.25, 12], [0.5, 30], [0.75, 10], [1, 5]];
+function drawPoints() {
+    var width = art.controls.heatmap.offsetWidth;
+    art.emit('artplayerPluginDanmuku:points', points.map(([ratio, value]) => [ratio * width, value]));
+}
+art.on('ready', drawPoints);
+art.on('resize', drawPoints);
+art.on('artplayerPluginDanmuku:loaded', drawPoints);

TypeScript ​

根入口和 /legacy 保留 npm 5.3.0 的历史声明形状,其中部分方法返回值与真实运行时不一致。 当前分支新增 /runtime 提供准确类型,加载的仍是同一个运行时工厂;该入口尚未发布,不能从旧 CDN 版本导入。

ts
import Artplayer from 'artplayer';
+import danmuku from 'artplayer-plugin-danmuku/runtime';
+import type { RuntimeOption, Point, EventMap } from 'artplayer-plugin-danmuku/runtime';
+
+const option: RuntimeOption = { danmuku: [], heatmap: true };
+const points: Point[] = [[0, 5], [100, 10]];
+const onError = (...[error]: EventMap['artplayerPluginDanmuku:error']) => console.error(error);
+const art = new Artplayer({ container: '#player', url: '/video.mp4', plugins: [danmuku(option)] });
+art.on('artplayerPluginDanmuku:error', onError);

EventMap 显式描述事件参数,不会自动扩展核心历史事件声明。工厂仍暴露 icons 对象供自定义图标。 包内 README.md 和 ARCHITECTURE.md 维护模块职责、验证命令及尚未完成的设备和组合验收。

+ \ No newline at end of file diff --git a/docs/document/start/i18n.html b/docs/document/start/i18n.html index 3af859049..0e9017eff 100644 --- a/docs/document/start/i18n.html +++ b/docs/document/start/i18n.html @@ -9,9 +9,9 @@ - + - + @@ -75,7 +75,7 @@ }, }, });
- + \ No newline at end of file diff --git a/docs/document/start/option.html b/docs/document/start/option.html index 510a12032..7cb80bfc0 100644 --- a/docs/document/start/option.html +++ b/docs/document/start/option.html @@ -9,9 +9,9 @@ - + - + @@ -415,7 +415,7 @@ url: '/assets/sample/video.mp4', proxy: () => document.createElement('video') });
- + \ No newline at end of file diff --git a/docs/llms.manifest.json b/docs/llms.manifest.json index da932bee7..ca075d41a 100644 --- a/docs/llms.manifest.json +++ b/docs/llms.manifest.json @@ -46,6 +46,10 @@ "file": "packages/artplayer-vitepress/docs/en/index.md", "sha256Lf": "adec563b74e5d690f97a710bf58478d04092f0de199674152e68da817f412ee5" }, + { + "file": "packages/artplayer-vitepress/docs/en/plugin/danmuku.md", + "sha256Lf": "a563349b064adac119dac943060ffc5bc82a8ccbd6e20d2d7b5a1e1cb4d66ba2" + }, { "file": "packages/artplayer-vitepress/docs/en/start/i18n.md", "sha256Lf": "1551bf939aab1ee942d8480df891640109d18aa9adc016adf1d075bee5ef1de9" @@ -112,7 +116,7 @@ }, { "file": "docs/assets/ts/artplayer-plugin-vast.d.ts", - "sha256Lf": "b21ed9a852b3ec3cc9b409cce08e91905e42abdc1d642acc9b412c33c83287b7" + "sha256Lf": "7cdb941298567b12627313be004a5afff6ef8384f6c5b385ef526a4814be70ce" }, { "file": "docs/assets/ts/artplayer-plugin-vtt-thumbnail.d.ts", @@ -136,7 +140,7 @@ }, { "file": "docs/assets/ts/artplayer.d.ts", - "sha256Lf": "652c0fdf605e87203526777a05851bd69c95c1660d5ff29eab19c00967c9a985" + "sha256Lf": "6b038ad9084766023baaa037e6abcd9edde2a3c40b8b9b1dfc5e45c20be7b7ba" }, { "file": "docs/assets/ts/artplayer-i18n.d.ts", @@ -168,7 +172,7 @@ }, { "file": "docs/assets/example/canvas.js", - "sha256Lf": "95a971773e93cfb340a07eebcd49e333825f49ce0d167514ad98a188cd027799" + "sha256Lf": "cb92730640913cdc8f03e01cce9d7c877537177950491449d48817e77960f458" }, { "file": "docs/assets/example/chapter.js", @@ -267,5 +271,5 @@ "sha256Lf": "967db6e5026a2fd3cc24d8a04e5c78859f543d0c0f6d4f9599c103e4e93c9b29" } ], - "outputSha256Lf": "2dac26861645bdf8f449eb8a3b5e197ecf0bb93e124a4f038ef3d71e6783ad08" + "outputSha256Lf": "161412fcd934ce386cf43d347b4e323fca0c9a4f838ad1715f6f164ad1eb6c75" } diff --git a/docs/llms.txt b/docs/llms.txt index 583223e0b..e5c88aa3a 100644 --- a/docs/llms.txt +++ b/docs/llms.txt @@ -4571,6 +4571,329 @@ You need to modify it before importing the `Artplayer` dependency for it to take ::: +===== packages/artplayer-vitepress/docs/en/plugin/danmuku.md ===== + +# Danmuku + +[中文说明](../../plugin/danmuku.md) + +Display timed comments over the video, with an input panel, display settings and an optional heatmap. +This guide describes the current refactor branch. The `/runtime` entrypoint and refactor fixes have not yet been published to npm; unversioned CDN links still load the published release. + +## Demo + +[Open the full example](https://artplayer.org/?libs=./uncompiled/artplayer-plugin-danmuku/index.js&example=danmuku). +Run Code examples below use the site's local plugin build and sample media. In your application, use your own container and media URLs. + +## Installation + +::: code-group + +```sh [npm] +npm install artplayer artplayer-plugin-danmuku +``` + +```sh [yarn] +yarn add artplayer artplayer-plugin-danmuku +``` + +```sh [pnpm] +pnpm add artplayer artplayer-plugin-danmuku +``` + +```html [script] + + +``` + +::: + +JavaScript projects can import the default factory from `artplayer-plugin-danmuku`. +Script builds expose `artplayerPluginDanmuku`; pass its result to the player's `plugins` array. + +## CDN + +::: code-group + +```text [jsDelivr] +https://cdn.jsdelivr.net/npm/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js +``` + +```text [unpkg] +https://unpkg.com/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js +``` + +::: + +## Comment structure + +Only `text` is required. Leading and trailing whitespace is removed; empty comments are ignored. + +```js +({ + text: 'Hello!', + time: 10, // Seconds; omitted time defaults to currentTime + 0.5 + mode: 0, // 0: scrolling, 1: top, 2: bottom; defaults to option.mode + color: '#FFFFFF', // Defaults to option.color + border: false, + style: {}, // CSS properties for this comment +}); +``` + +Explicit `time: 0` is preserved. Negative times are clamped to zero. Other than 0, 1 and 2, comment modes are ignored. + +## All options + +Pass an option object to the factory. At runtime, `{}` is valid and all fields have defaults. +The historical root declarations still require `danmuku`; existing TypeScript projects can keep providing it. See [TypeScript](#typescript) for accurate declarations. + +```js +({ + danmuku: [], // Array, XML URL, Promise of an array, or function returning an array/Promise + speed: 5, // Display duration in seconds, clamped to 1–10 + margin: [10, '25%'], // Top/bottom spacing: pixels or percentages + opacity: 1, // Clamped to 0–1 + color: '#FFFFFF', // Default comment color + mode: 0, // Default comment mode + modes: [0, 1, 2], // Visible modes + fontSize: 25, // Pixels or a percentage of player height + antiOverlap: true, + synchronousPlayback: false, // Follow video playbackRate when enabled + mount: undefined, // Defaults to the center of the player controls + heatmap: false, // Enable at construction: true or a heatmap options object + width: 512, // Below this width, the default input panel moves below the player + points: [], // Stored option; use the points event to draw custom data + filter: () => true, // Synchronous; do not return a Promise + beforeEmit: () => true, // Input-panel submissions only; may return a Promise + beforeVisible: () => true, // Called before display; may return a Promise + visible: true, + emitter: true, // Show the input panel's sending UI + maxLength: 200, // Input length, clamped to 1–1000 + lockTime: 5, // Seconds between input-panel submissions, clamped to 1–60 + theme: 'dark', // 'dark' or 'light' for an external mount + OPACITY: {}, + FONT_SIZE: {}, + MARGIN: {}, + SPEED: {}, + COLOR: [], +}); +``` + +`OPACITY`, `FONT_SIZE`, `MARGIN` and `SPEED` override slider definitions with `min`, `max` and `steps`. +Each step can contain `name`, `value`, `hide` and `show`; margin values are pairs such as `[10, '50%']`. +`COLOR` replaces the palette with an array of CSS color strings; an empty array uses the built-in palette. + +## Array, XML and asynchronous input + +XML input uses Bilibili's comment format. Fetching a cross-origin XML URL requires that server to allow browser access. +An input function runs without the option object as its receiver. It may return an array directly or asynchronously. + +
+ ▶ Run Code +
+ +```js +var art = new Artplayer({ + container: '.artplayer-app', + url: '/assets/sample/video.mp4', + plugins: [ + artplayerPluginDanmuku({ + danmuku: [{ text: 'Hello from an array', time: 1 }], + // Alternatives: + // danmuku: '/assets/sample/danmuku.xml', + // danmuku: Promise.resolve([{ text: 'From a Promise', time: 1 }]), + // danmuku: async () => [{ text: 'From a function', time: 1 }], + }), + ], +}); +``` + +## Lifecycle callbacks + +Input-panel submissions run `beforeEmit → filter → beforeVisible → artplayerPluginDanmuku:visible`. +Loaded comments and direct `emit` calls run `filter → beforeVisible → artplayerPluginDanmuku:visible`. +This describes accepted comments; callbacks can reject them, and scheduling still requires playback and an available track. + +| Callback | Input | Acceptance | +| --- | --- | --- | +| `beforeEmit` | Input-panel comment | Only strict `true`, or a Promise resolving to `true`, sends it | +| `filter` | Comment with time, mode, color and style filled in | A synchronous truthy result adds it to the queue | +| `beforeVisible` | Queue item | A truthy result, including an awaited result, permits display | + +Normal functions receive the current option object as `this` for all three callbacks. Arrow functions retain their lexical `this`. +`emit()` does not call `beforeEmit`: perform application validation before calling it when needed. +`beforeEmit` failures are logged in the console and leave the input available for another attempt. + +An asynchronous `beforeVisible` rejection emits `artplayerPluginDanmuku:error` once for that item in the current run; other items continue. +Pause/resume, reset or replacing the callback permits a retry if the item is still eligible by time. +Pausing, seeking, hiding, resetting or destroying cancels unfinished visibility preparation. + +## Methods and state + +The registered plugin is available synchronously as `art.plugins.artplayerPluginDanmuku`. + +| Member | Behavior and return value | +| --- | --- | +| `emit(comment)` | Processes one comment for the queue; returns a Promise | +| `load()` | Reads `option.danmuku` and replaces the queue; returns a Promise | +| `load(input)` | Appends comments from the input; returns a Promise | +| `config(partialOption)` | Synchronously merges configuration | +| `hide()` / `show()` | Synchronously hides or shows the comment layer | +| `reset()` | Clears displayed comments and returns queue items to waiting; does not delete the queue | +| `mount(target)` | Moves the panel to an existing element or selector; returns `undefined` | +| `option` | Live current configuration; use `config()` for validated updates | +| `isHide` | Read-only live visibility state: `true` when hidden | +| `isStop` | Read-only live stopped state; distinct from visibility and not a media-readiness signal | + +`emit/load` Promises resolve to the internal Danmuku owner. `config/hide/show/reset` return that same owner synchronously. +The owner is **different from the registered plugin facade**. Keep using the registered facade for subsequent commands. +Awaiting `emit()` means queue processing has finished, not that the comment has appeared. + +### Loading and configuration + +Changing `config({ danmuku: input })` does not load the new input. Follow it with `load()` to replace the queue. +Input-read failures leave the existing queue intact; failures while filtering individual rows do not guarantee an atomic rollback of the entire batch. +Independent append operations do not cancel one another. A newer replacement cancels an unfinished older replacement. +Destroy cancels pending loads. Cancelled Promises resolve to the owner without a late `loaded` or `error` event. + +Fetch and response-text failures emit `artplayerPluginDanmuku:error` and reject the corresponding public `load()` Promise. +Handle rejection with `await`/`try...catch` or `.catch(...)`. Initial automatic loading observes rejection and logs a warning. +Invalid configuration leaves the current option intact. Use `mount(target)` to move the panel; changing `option.mount` through `config()` does not perform a mount. +Enable heatmap when constructing the plugin; `config({ heatmap: true })` does not create it later. + +
+ ▶ Run Code +
+ +```js +var art = new Artplayer({ + container: '.artplayer-app', + url: '/assets/sample/video.mp4', + plugins: [artplayerPluginDanmuku({ danmuku: [], emitter: false })], +}); + +async function updateComments() { + var plugin = art.plugins.artplayerPluginDanmuku; + plugin.config({ danmuku: [{ text: 'Replacement', time: 1 }] }); + await plugin.load(); + await plugin.load([{ text: 'Appended', time: 2 }]); + await plugin.emit({ text: 'Scheduled from the current time' }); + plugin.hide(); + console.info('Hidden:', plugin.isHide); + plugin.show(); + plugin.reset(); +} +updateComments().catch(console.error); +``` + +## External mount + +Create a separate mount element before constructing the plugin. The panel moves into the controls during player fullscreen or web fullscreen and returns to its configured mount on exit. +Use `theme: 'light'` on a light background. The live `mount(target)` method requires a valid target; omitting its argument does not select the default. +Destroy releases the plugin panel; the application owns any container it created. + +
+ ▶ Run Code +
+ +```js +var $danmu = document.createElement('div'); +document.querySelector('.artplayer-app').after($danmu); +var art = new Artplayer({ + container: '.artplayer-app', + url: '/assets/sample/video.mp4', + fullscreenWeb: true, + plugins: [artplayerPluginDanmuku({ + danmuku: [{ text: 'External input panel', time: 1 }], + mount: $danmu, + theme: 'dark', + })], +}); +art.on('destroy', () => $danmu.remove()); +// Move it later with art.plugins.artplayerPluginDanmuku.mount(otherElement). +``` + +## Heatmap + +Set `heatmap: true` at construction to sample the queue automatically. A live stream does not draw a heatmap. +Dense automatic curves now fit in the bottom quarter of the chart instead of covering the video (issue #958). +Explicit finite `yMin` or `yMax` and custom points retain their coordinate mapping. + +An object can set `xMin`, `xMax`, `yMin`, `yMax`, `scale`, `opacity`, `minHeight`, `sampling`, `smoothing` and `flattening`. +Defaults are `xMin: 0`, `xMax: chartWidth`, `yMin: 0`, `yMax: 128`, `scale: 0.25`, `opacity: 0.2`, +`minHeight: floor(chartHeight * 0.05)`, `sampling: max(1, floor(chartWidth / 100))`, `smoothing: 0.2`, `flattening: 0.2`. + +Send `art.emit('artplayerPluginDanmuku:points', points)` to draw custom `[x, value]` pairs. +The default x-axis uses chart pixels, not seconds. Set `xMin/xMax` explicitly if supplying another coordinate range. +Rendering mutates the inner point arrays for historical compatibility: copy each pair if reusing the original data. +The stored `points` option does not draw custom data. A resize or successful load redraws the automatic curve, so resend custom data after those events when needed. + +
+ ▶ Run Code +
+ +```js +var art = new Artplayer({ + container: '.artplayer-app', + url: '/assets/sample/video.mp4', + plugins: [artplayerPluginDanmuku({ + danmuku: [{ text: 'Heatmap example', time: 1 }], + heatmap: true, + })], +}); +var points = [[0, 5], [0.25, 12], [0.5, 30], [0.75, 10], [1, 5]]; +function drawPoints() { + var width = art.controls.heatmap.offsetWidth; + art.emit('artplayerPluginDanmuku:points', points.map(([ratio, value]) => [ratio * width, value])); +} +art.on('ready', drawPoints); +art.on('resize', drawPoints); +art.on('artplayerPluginDanmuku:loaded', drawPoints); +``` + +## Events + +Subscribe with `art.on(name, callback)` and remove subscriptions with `art.off(name, callback)`. + +| Event | Payload / meaning | +| --- | --- | +| `artplayerPluginDanmuku:visible` | Queue item; its `$ref` is the displayed element | +| `artplayerPluginDanmuku:loaded` | Current full queue after a successful load, including appends | +| `artplayerPluginDanmuku:error` | Original error from loading or scheduling; handle public Promise rejections separately | +| `artplayerPluginDanmuku:config` | Current configuration | +| `artplayerPluginDanmuku:start` | No payload; scheduling starts | +| `artplayerPluginDanmuku:stop` | No payload; scheduling stops | +| `artplayerPluginDanmuku:hide` | No payload; layer hidden | +| `artplayerPluginDanmuku:show` | No payload; layer shown | +| `artplayerPluginDanmuku:reset` | No payload; displayed items reset | +| `artplayerPluginDanmuku:destroy` | No payload; plugin destroyed | +| `artplayerPluginDanmuku:points` | Application-sent custom points for the heatmap | + +Events are not replayed to later listeners. In particular, an initially empty array can finish loading during construction. +Subscribe before invoking a later `load()` if you need to observe its completion event. +Use `$ref.textContent` when adding text in a `visible` handler. + +## TypeScript + +The root and `/legacy` entrypoints keep the npm 5.3.0 declaration shapes for compatibility, including historical inaccuracies about return values. +The current branch adds `/runtime` for accurate types while loading the same runtime factory: + +```ts +import Artplayer from 'artplayer'; +import danmuku from 'artplayer-plugin-danmuku/runtime'; +import type { RuntimeOption, Point, EventMap } from 'artplayer-plugin-danmuku/runtime'; + +const option: RuntimeOption = { danmuku: [], heatmap: true }; +const points: Point[] = [[0, 5], [100, 10]]; +const onError = (...[error]: EventMap['artplayerPluginDanmuku:error']) => console.error(error); +const art = new Artplayer({ container: '#player', url: '/video.mp4', plugins: [danmuku(option)] }); +art.on('artplayerPluginDanmuku:error', onError); +``` + +The explicit `EventMap` describes payloads; it does not augment the core's historical event declarations automatically. +The factory also exposes the existing `icons` object for customization. Package `README.md` and `ARCHITECTURE.md` describe module ownership, maintenance commands and remaining device/combination validation. + + ===== packages/artplayer-vitepress/docs/en/start/i18n.md ===== # Language Settings @@ -6786,1404 +7109,22 @@ export as namespace artplayerPluginMultipleSubtitles; ===== docs/assets/ts/artplayer-plugin-vast.d.ts ===== // Generated from the package public declaration by yarn build:ts. Do not edit. -/* eslint-disable ts/no-redeclare -- Callable and public type namespace intentionally merge. */ -/* eslint-disable ts/method-signature-style, ts/consistent-type-definitions -- Preserve upstream SDK declaration shapes. */ -declare namespace artplayerPluginVastDefinitions { - export namespace google { - /** - * The Google IMA SDK for HTML5 V3 allows developers to request and track VAST ads in a HTML5 video environment. For platform compatibility information and a detailed list of the video ad features supported by each of the IMA SDKs, see Support and Compatibility. - * - * Download the code samples to assist with implementing the IMA HTML5 SDK. - */ - namespace ima { - /** - * An ad class that's extended by classes representing different ad types. - */ - interface Ad { - /** - * Ad ID is used to synchronize master ad and companion ads. - * @returns The ID of the ad, or the empty string if this information is unavailable. - */ - getAdId(): string - /** - * Returns the ad's pod information. - * @returns The ad's pod information. - */ - getAdPodInfo(): AdPodInfo - /** - * The source ad server information included in the ad response. - * @returns The source ad server of the ad, or the empty string if this information is unavailable. - */ - getAdSystem(): string - /** - * The advertiser name as defined by the serving party. - * @returns The advertiser name, or the empty string if this information is unavailable. - */ - getAdvertiserName(): string - /** - * Identifies the API needed to execute the ad. This corresponds with the apiFramework specified in vast. - * @returns The API framework need to execute the ad, or null if this information is unavailable. - */ - getApiFramework(): string | null - /** - * Gets the companion ads for this ad based on companion ad slot size. Optionally, advanced selection settings are accepted. Note that this method will only return non-empty array for ad instances acquired on or after STARTED event. Specifically, ads from the LOADED event will return an empty array. - * @param adSlotWidth Width of the companion ad slot. - * @param adSlotHeight Height of the companion ad slot. - * @param settings The selection settings for companion ads. - * @returns Array of companion ads that matches the settings and the slot size. - */ - getCompanionAds(adSlotWidth: number, adSlotHeight: number, settings?: CompanionAdSelectionSettings): CompanionAd[] - /** - * Returns the content type of the currently selected creative, or empty string if no creative is selected or the content type is unavailable. For linear ads, the content type is only going to be available after the START event, when the media file is selected. - * @returns The content type, empty string if not available. - */ - getContentType(): string - /** - * Returns the ISCI (Industry Standard Commercial Identifier) code for an ad, or empty string if the code is unavailable. This is the Ad-ID of the creative in the VAST response. - */ - getCreativeAdId(): string - /** - * Retrieves the ID of the selected creative for the ad. - * @returns The ID of the selected creative for the ad, or the empty string if this information is unavailable. - */ - getCreativeId(): string - /** - * Returns the first deal ID present in the wrapper chain for the current ad, starting from the top. Returns the empty string if unavailable. - */ - getDealId(): string - /** - * Returns the description of this ad from the VAST response. - * @returns The description, empty if not specified. - */ - getDescription(): string - /** - * Returns the duration of the selected creative, or -1 for non-linear creatives. - * @returns The selected creative duration in seconds, -1 if non-linear. - */ - getDuration(): number - /** - * Returns the height of the selected non-linear creative. - * @returns The height of the selected non-linear creative or 0 for a linear creative. - */ - getHeight(): number - /** - * Returns the URL of the media file chosen from the ad based on the media selection settings currently in use. Returns null if this information is unavailable. Available on STARTED event. - */ - getMediaUrl(): string | null - /** - * Returns the minimum suggested duration in seconds that the nonlinear creative should be displayed. Returns -2 if the minimum suggested duration is unknown. For linear creative it returns the entire duration of the ad. - * @returns The minimum suggested duration in seconds that a creative should be displayed. - */ - getMinSuggestedDuration(): number - /** - * The number of seconds of playback before the ad becomes skippable. -1 is returned for non skippable ads or if this is unavailable. - * @returns The offset in seconds, or -1. - */ - getSkipTimeOffset(): number - /** - * Returns the URL associated with the survey for the given ad. Returns null if unavailable. - */ - getSurveyUrl(): string | null - /** - * Returns the title of this ad from the VAST response. - * @returns The title, empty if not specified. - */ - getTitle(): string - /** - * Gets custom parameters associated with the ad at the time of ad trafficking. - * @returns A mapping of trafficking keys to their values, or the empty Object if this information is not available. - */ - getTraffickingParameters(): any - /** - * Gets custom parameters associated with the ad at the time of ad trafficking. Returns a raw string version of the parsed parameters from getTraffickingParameters. - * @returns Trafficking parameters, or the empty string if this information is not available. - */ - getTraffickingParametersString(): string - /** - * Returns the UI elements that are being displayed when this ad is played. Refer to UiElements for possible elements of the array returned. - * @returns The UI elements being displayed. - */ - getUiElements(): UiElements[] - /** - * The registry associated with cataloging the UniversalAdId of the selected creative for the ad. - * @returns Returns the registry value, or "unknown" if unavailable. - */ - getUniversalAdIdRegistry(): string - /** - * The UniversalAdId of the selected creative for the ad. - * @returns Returns the id value or "unknown" if unavailable. - */ - getUniversalAdIdValue(): string - /** - * Returns the VAST media height of the selected creative. - * @returns The VAST media height of the selected creative or 0 if none is selected. - */ - getVastMediaHeight(): number - /** - * Returns the VAST media width of the selected creative. - * @returns The VAST media width of the selected creative or 0 if none is selected. - */ - getVastMediaWidth(): number - /** - * Returns the width of the selected creative. - * @returns The width of the selected non-linear creative or 0 for a linear creative. - */ - getWidth(): number - /** - * Ad IDs used for wrapper ads. The IDs returned starts at the inline ad (innermost) and traverses to the outermost wrapper ad. An empty array is returned if there are no wrapper ads. - * @returns The IDs of the ads, starting at the inline ad, or an empty array if there are no wrapper ads. - */ - getWrapperAdIds(): string[] - /** - * Ad systems used for wrapper ads. The ad systems returned starts at the inline ad and traverses to the outermost wrapper ad. An empty array is returned if there are no wrapper ads. - * @returns The ad systems of the ads, starting at the inline ad, or an empty array if there are no wrapper ads. - */ - getWrapperAdSystems(): string[] - /** - * Selected creative IDs used for wrapper ads. The creative IDs returned starts at the inline ad and traverses to the outermost wrapper ad. An empty array is returned if there are no wrapper ads. - * @returns The IDs of the ads' creatives, starting at the inline ad, or an empty array if there are no wrapper ads. - */ - getWrapperCreativeIds(): string[] - /** - * Indicates whether the ad’s current mode of operation is linear or non-linear. If the value is true, it indicates that the ad is in linear playback mode; if false, it indicates non-linear mode. The player checks the linear property and updates its state according to the details of the ad placement. While the ad is in linear mode, the player pauses the content video. If linear is true initially, and the ad is a pre-roll (defined externally), the player may choose to delay loading the content video until near the end of the ad playback. - * @returns True if the ad is linear, false otherwise. - */ - isLinear(): boolean - } - /** - * This class represents a container for displaying ads. The SDK will automatically create structures inside the containerElement parameter to house video and overlay ads. - * - * When an instance of this class is created, it creates an IFRAME in the containerElement and loads the SDK core. This IFRAME must be preserved in order for the SDK to function properly. Once all ads have been played and the SDK is no longer needed, use the destroy() method to unload the SDK. - * - * The containerElement parameter must be an element that is part of the DOM. It is necessary to correctly position the containerElement in order for the ads to be displayed correctly. It is recommended to position it above the content video player and size it to cover the whole video player. Please refer to the SDK documentation for details about recommended implementations. - */ - class AdDisplayContainer { - /** - * - * @param containerElement The element to display the ads in. The element must be inserted into the DOM before creating ima.AdDisplayContainer. - * @param videoElement Specifies the alternative video ad playback element. We recommend always passing in your content video player. Refer to Custom Ad Playback for more information. - * @param clickTrackingElement Specifies the alternative video ad click element. Leave this null to let the SDK handle clicks. Even if supplied, the SDK will only use the custom click tracking element when non-AdSense/AdX creatives are displayed in environments that do not support UI elements overlaying a video player (e.g. iPhone or pre-4.0 Android). The custom click tracking element should never be rendered over the video player because it can intercept clicks to UI elements that the SDK renders. Also note that the SDK will not modify the visibility of the custom click tracking element. This means that if a custom click tracking element is supplied, it must be properly displayed when the linear ad is played. You can check ima.AdsManager.isCustomClickTrackingUsed when the google.ima.AdEvent.Type.STARTED event is fired to determine whether or not to display your custom click tracking element. If appropriate for your UI, you should hide the click tracking element when the google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED event fires. - */ - constructor(containerElement: HTMLElement, videoElement?: HTMLVideoElement, clickTrackingElement?: HTMLElement) - /** - * Destroys internal state and previously created DOM elements. The IMA SDK will be unloaded and no further calls to any APIs should be made. - */ - public destroy(): void - /** - * Initializes the video playback. On mobile platforms, including iOS and Android browsers, first interaction with video playback is only allowed within a user action (a click or tap) to prevent unexpected bandwidth costs. Call this method as a direct result of a user action before starting the ad playback. This method has no effect on desktop platforms and when custom video playback is used. - */ - public initialize(): void - } - /** - * AdError surfaces information to the user about whether a failure occurred during ad loading or playing. The errorType accessor provides information about whether the error occurred during ad loading or ad playing. - */ - class AdError extends Error { - /** - * Constructs the ad error based on the error data. - * @param data The ad error message data. - * @returns The constructed ad error object. - */ - public static deserialize(data: any): AdError - /** - * @returns The error code, as defined in google.ima.AdError.ErrorCode. - */ - public getErrorCode(): AdError.ErrorCode - /** - * Returns the Error that caused this one. - * @returns Inner error that occurred during processing, or null if this information is unavailable. This error may either be a native error or an google.ima.AdError, a subclass of a native error. This may return null if the error that caused this one is not available. - */ - public getInnerError(): Error | null - /** - * @returns The message for this error. - */ - public getMessage(): string - /** - * @returns The type of this error, as defined in google.ima.AdError.Type. - */ - public getType(): string - /** - * @returns If VAST error code is available, returns it, otherwise returns ima.AdError.ErrorCode.UNKNOWN_ERROR. - */ - public getVastErrorCode(): number - /** - * Serializes an ad to JSON-friendly object for channel transmission. - * @returns The transmittable ad error. - */ - public serialize(): any - public toString(): string - } - namespace AdError { - /** - * The possible error codes raised while loading or playing ads. - */ - enum ErrorCode { - /** - * There was a problem requesting ads from the server. VAST error code 1012 - */ - ADS_REQUEST_NETWORK_ERROR = 1012, - /** - * There was an error with asset fallback. VAST error code 1021 - */ - ASSET_FALLBACK_FAILED = 1021, - /** - * The browser prevented playback initiated without user interaction. VAST error code 1205 - */ - AUTOPLAY_DISALLOWED = 1205, - /** - * A companion ad failed to load or render. VAST error code 603 - */ - COMPANION_AD_LOADING_FAILED = 603, - /** - * Unable to display one or more required companions. The master ad is discarded since the required companions could not be displayed. VAST error code 602 - */ - COMPANION_REQUIRED_ERROR = 602, - /** - * There was a problem requesting ads from the server. VAST error code 1005 - */ - FAILED_TO_REQUEST_ADS = 1005, - /** - * The ad tag url specified was invalid. It needs to be properly encoded. VAST error code 1013 - */ - INVALID_AD_TAG = 1013, - /** - * An invalid AdX extension was found. VAST error code 1105 - */ - INVALID_ADX_EXTENSION = 1105, - /** - * Invalid arguments were provided to SDK methods. VAST error code 1101 - */ - INVALID_ARGUMENTS = 1101, - /** - * Unable to display NonLinear ad because creative dimensions do not align with creative display area (i.e. creative dimension too large). VAST error code 501 - */ - NONLINEAR_DIMENSIONS_ERROR = 501, - /** - * An overlay ad failed to load. VAST error code 502 - */ - OVERLAY_AD_LOADING_FAILED = 502, - /** - * An overlay ad failed to render. VAST error code 500 - */ - OVERLAY_AD_PLAYING_FAILED = 500, - /** - * There was an error with stream initialization during server side ad insertion. VAST error code 1020 - */ - STREAM_INITIALIZATION_FAILED = 1020, - /** - * The ad response was not understood and cannot be parsed. VAST error code 1010 - */ - UNKNOWN_AD_RESPONSE = 1010, - /** - * An unexpected error occurred and the cause is not known. Refer to the inner error for more information. VAST error code 900 - */ - UNKNOWN_ERROR = 900, - /** - * Locale specified for the SDK is not supported. VAST error code 1011 - */ - UNSUPPORTED_LOCALE = 1011, - /** - * No assets were found in the VAST ad response. VAST error code 1007 - */ - VAST_ASSET_NOT_FOUND = 1007, - /** - * Empty VAST response. VAST error code 1009 - */ - VAST_EMPTY_RESPONSE = 1009, - /** - * Assets were found in the VAST ad response for linear ad, but none of them matched the video player's capabilities. VAST error code 403 - */ - VAST_LINEAR_ASSET_MISMATCH = 403, - /** - * The VAST URI provided, or a VAST URI provided in a subsequent wrapper element, was either unavailable or reached a timeout, as defined by the video player. The timeout is 5 seconds for initial VAST requests and each subsequent wrapper. VAST error code 301 - */ - VAST_LOAD_TIMEOUT = 301, - /** - * The ad response was not recognized as a valid VAST ad. VAST error code 100 - */ - VAST_MALFORMED_RESPONSE = 100, - /** - * Failed to load media assets from a VAST response. The default timeout for media loading is 8 seconds. VAST error code 402 - */ - VAST_MEDIA_LOAD_TIMEOUT = 402, - /** - * No Ads VAST response after one or more wrappers. VAST error code 303 - */ - VAST_NO_ADS_AFTER_WRAPPER = 303, - /** - * Assets were found in the VAST ad response for nonlinear ad, but none of them matched the video player's capabilities. VAST error code 503 - */ - VAST_NONLINEAR_ASSET_MISMATCH = 503, - /** - * Problem displaying MediaFile. Currently used if video playback is stopped due to poor playback quality. VAST error code 405 - */ - VAST_PROBLEM_DISPLAYING_MEDIA_FILE = 405, - /** - * VAST schema validation error. VAST error code 101 - */ - VAST_SCHEMA_VALIDATION_ERROR = 101, - /** - * The maximum number of VAST wrapper redirects has been reached. VAST error code 302 - */ - VAST_TOO_MANY_REDIRECTS = 302, - /** - * Trafficking error. Video player received an ad type that it was not expecting and/or cannot display. VAST error code 200 - */ - VAST_TRAFFICKING_ERROR = 200, - /** - * VAST duration is different from the actual media file duration. VAST error code 202 - */ - VAST_UNEXPECTED_DURATION_ERROR = 202, - /** - * Ad linearity is different from what the video player is expecting. VAST error code 201 - */ - VAST_UNEXPECTED_LINEARITY = 201, - /** - * The ad response contained an unsupported VAST version. VAST error code 102 - */ - VAST_UNSUPPORTED_VERSION = 102, - /** - * General VAST wrapper error. VAST error code 300 - */ - VAST_WRAPPER_ERROR = 300, - /** - * There was an error playing the video ad. VAST error code 400 - */ - VIDEO_PLAY_ERROR = 400, - /** - * A VPAID error occurred. Refer to the inner error for more information. VAST error code 901 - */ - VPAID_ERROR = 901, - } - /** - * The possible error types for ad loading and playing. - */ - enum Type { - /** - * Indicates that the error was encountered when the ad was being loaded. Possible causes: there was no response from the ad server, malformed ad response was returned, or ad request parameters failed to pass validation. - */ - AD_LOAD = 'adLoadError', - /** - * Indicates that the error was encountered after the ad loaded, during ad play. Possible causes: ad assets could not be loaded, etc. - */ - AD_PLAY = 'adPlayError', - } - } - /** - * This event is raised when an error occurs when loading an ad from the Google or DoubleClick servers. The types on which you can register for the event are AdsLoader and AdsManager. - */ - class AdErrorEvent { - /** - * @returns The AdError that caused this event. - */ - public getError(): AdError - /** - * During ads load request it is possible to provide an object that is available once the ads load is complete or fails. One possible use case: relate ads response to a specific request and use user request content object as the key for identifying the response. If an error occurred during ads load, you can find out which request caused this failure. - * @returns Object that was provided during ads request. - */ - public getUserRequestContext(): any - } - namespace AdErrorEvent { - /** - * Types of AdErrorEvents - */ - enum Type { - /** - * Fired when an error occurred while the ad was loading or playing. - */ - AD_ERROR = 'adError', - } - type Listener = (event: AdErrorEvent) => void - } - /** - * This event type is raised by the ad as a notification when the ad state changes and when users interact with the ad. For example, when the ad starts playing, is clicked on, etc. You can register for the various state changed events on AdsManager. - */ - class AdEvent { - /** - * Get the current ad that is playing or just played. - * @returns The ad associated with the event, or null if there is no relevant ad. - */ - public getAd(): Ad | null - /** - * Allows extra data to be passed from the ad. - * @returns Extra data for the event. Log events raised for error carry object of type 'google.ima.AdError' which can be accessed using 'adError' key. - */ - public getAdData(): any - } - namespace AdEvent { - /** - * Types of AdEvents - */ - enum Type { - /** - * Fired when an ad rule or a VMAP ad break would have played if autoPlayAdBreaks is false. - */ - AD_BREAK_READY = 'adBreakReady', - /** - * Fired when the ad has stalled playback to buffer. - */ - AD_BUFFERING = 'adBuffering', - /** - * Fired when an ads list is loaded. - */ - AD_METADATA = 'adMetadata', - /** - * Fired when the ad's current time value changes. Calling getAdData() on this event will return an AdProgressData object. - */ - AD_PROGRESS = 'adProgress', - /** - * Fired when the ads manager is done playing all the ads. - */ - ALL_ADS_COMPLETED = 'allAdsCompleted', - /** - * Fired when the ad is clicked. - */ - CLICK = 'click', - /** - * Fired when the ad completes playing. - */ - COMPLETE = 'complete', - /** - * Fired when content should be paused. This usually happens right before an ad is about to cover the content. - */ - CONTENT_PAUSE_REQUESTED = 'contentPauseRequested', - /** - * Fired when content should be resumed. This usually happens when an ad finishes or collapses. - */ - CONTENT_RESUME_REQUESTED = 'contentResumeRequested', - /** - * Fired when the ad's duration changes. - */ - DURATION_CHANGE = 'durationChange', - /** - * Fired when the ad playhead crosses first quartile. - */ - FIRST_QUARTILE = 'firstQuartile', - /** - * Fired when the impression URL has been pinged. - */ - IMPRESSION = 'impression', - /** - * Fired when an ad triggers the interaction callback. Ad interactions contain an interaction ID string in the ad data. - */ - INTERACTION = 'interaction', - /** - * Fired when the displayed ad changes from linear to nonlinear, or vice versa. - */ - LINEAR_CHANGED = 'linearChanged', - /** - * Fired when ad data is available. - */ - LOADED = 'loaded', - /** - * Fired when a non-fatal error is encountered. The user need not take any action since the SDK will continue with the same or next ad playback depending on the error situation. - */ - LOG = 'log', - /** - * Fired when the ad playhead crosses midpoint. - */ - MIDPOINT = 'midpoint', - /** - * Fired when the ad is paused. - */ - PAUSED = 'pause', - /** - * Fired when the ad is resumed. - */ - RESUMED = 'resume', - /** - * Fired when the displayed ads skippable state is changed. - */ - SKIPPABLE_STATE_CHANGED = 'skippableStateChanged', - /** - * Fired when the ad is skipped by the user. - */ - SKIPPED = 'skip', - /** - * Fired when the ad starts playing. - */ - STARTED = 'start', - /** - * Fired when the ad playhead crosses third quartile. - */ - THIRD_QUARTILE = 'thirdQuartile', - /** - * Fired when the ad is closed by the user. - */ - USER_CLOSE = 'userClose', - /** - * Fired when the ad volume has changed. - */ - VOLUME_CHANGED = 'volumeChange', - /** - * Fired when the ad volume has been muted. - */ - VOLUME_MUTED = 'mute', - } - type Listener = (event: AdEvent) => void - } - /** - * An ad may be part of a pod of ads. This object exposes metadata related to that pod, such as the number of ads in the pod and ad position within the pod. - * - * The getTotalAds API contained within this object is often correct, but in certain scenarios, it represents the SDK's best guess. See that method's documentation for more information. - */ - interface AdPodInfo { - /** - * Returns the position of the ad. - * @returns The position of the ad within the pod. The value returned is one-based, i.e. 1 of 2, 2 of 2, etc. - */ - getAdPosition(): number - /** - * Returns true if the ad is a bumper ad. Bumper ads are short linear ads that can indicate to a user when the user is entering into or exiting from an ad break. - * @returns Whether the ad is a bumper ad. - */ - getIsBumper(): boolean - /** - * The maximum duration of the pod in seconds. For unknown duration, -1 is returned. - * @returns The maximum duration of the ads in this pod in seconds. - */ - getMaxDuration(): number - /** - * Returns the index of the ad pod. - * - * For preroll pod, 0 is returned. For midrolls, 1, 2, ... N is returned. For postroll, -1 is returned. - * - * For pods in VOD streams with dynamically inserted ads, 0...N is returned regardless of whether the ad is a pre-, mid-, or post-roll. - * - * Defaults to 0 if this ad is not part of a pod, or the pod is not part of an ad playlist. - * - * @returns The index of the pod in the ad playlist. - */ - getPodIndex(): number - /** - * Returns the content time offset at which the current ad pod was scheduled. For pods in VOD streams with dynamically inserted ads, stream time is returned. - * - * For preroll pod, 0 is returned. For midrolls, the scheduled time is returned. For postroll, -1 is returned. - * - * Defaults to 0 if this ad is not part of a pod, or the pod is not part of an ad playlist. - * - * @returns The time offset for the current ad pod. - */ - getTimeOffset(): number - /** - * The total number of ads contained within this pod, including bumpers. Bumper ads are short linear ads that can indicate to a user when the user is entering into or exiting from an ad break. - * - * Defaults to 1 if this ad is not part of a pod. - * - * In certain scenarios, the SDK does not know for sure how many ads are contained within this ad pod. These scenarios include ad pods, which are multiple ads within a single ad tag. In these scenarios, the first few AdEvents fired (AD_METADATA, LOADED, etc.) may have just the total number of ad tags from the playlist response. We recommend using the STARTED event as the event in which publishers pull information from this object and update the visual elements of the player, if any. - * - * @returns Total number of ads in the pod. - */ - getTotalAds(): number - } - /** - * AdsLoader allows clients to request ads from ad servers. To do so, users must register for the AdsManagerLoadedEvent event and then request ads. - */ - class AdsLoader { - /** - * @param container The display container for ads. - */ - constructor(container: AdDisplayContainer) - /** - * Adds an event listener for the specified type. - * @param type The event type to listen to. - * @param listener The function to call when the event is triggered. - * @param useCapture Optional - */ - public addEventListener(type: AdsManagerLoadedEvent.Type, listener: AdsManagerLoadedEvent.Listener, useCapture?: boolean): void - /** - * Adds an event listener for the specified type. - * @param type The event type to listen to. - * @param listener The function to call when the event is triggered. - * @param useCapture Optional - */ - public addEventListener(type: AdErrorEvent.Type, listener: AdErrorEvent.Listener, useCapture?: boolean): void - /** - * Removes an event listener for the specified type. - * @param type The event type for which to remove an event listener. - * @param listener The function of the event handler to remove from the event target. - * @param useCapture Optional - */ - public removeEventListener(type: AdsManagerLoadedEvent.Type, listener: AdsManagerLoadedEvent.Listener, useCapture?: boolean): void - /** - * Removes an event listener for the specified type. - * @param type The event type for which to remove an event listener. - * @param listener The function of the event handler to remove from the event target. - * @param useCapture Optional - */ - public removeEventListener(type: AdErrorEvent.Type, listener: AdErrorEvent.Listener, useCapture?: boolean): void - /** - * Signals to the SDK that the content is finished. This will allow the SDK to play post-roll ads, if any are loaded via ad rules. - */ - public contentComplete(): void - /** - * Cleans up the internal state. - */ - public destroy(): void - /** - * Returns the IMA SDK settings instance. To change the settings, just call the methods on the instance. The changes will apply for all the ad requests made with this ads loader. - * @returns The settings instance. - */ - public getSettings(): ImaSdkSettings - /** - * Request ads from a server. - * @param adsRequest AdsRequest instance containing data for the ads request. - * @param userRequestContext User-provided object that is associated with the ads request. It can be retrieved when the ads are loaded. - */ - public requestAds(adsRequest: AdsRequest, userRequestContext?: any): void - } - /** - * This class is responsible for playing ads. - */ - interface AdsManager { - /** - * Adds an event listener for the specified type. - * @param type The event type to listen to - * @param listener The function to call when the event is triggered - * @param useCapture Optional - */ - addEventListener(type: AdEvent.Type, listener: AdEvent.Listener, useCapture?: boolean): void - /** - * Adds an event listener for the specified type. - * @param type The event type to listen to - * @param listener The function to call when the event is triggered - * @param useCapture Optional - */ - addEventListener(type: AdErrorEvent.Type, listener: AdErrorEvent.Listener, useCapture?: boolean): void - /** - * Removes an event listener for the specified type. - * @param type The event type for which to remove an event listener. - * @param listener The function of the event handler to remove from the event target. - * @param useCapture Optional - */ - removeEventListener(type: AdEvent.Type, listener: AdEvent.Listener, useCapture?: boolean): void - /** - * Removes an event listener for the specified type. - * @param type The event type for which to remove an event listener. - * @param listener The function of the event handler to remove from the event target. - * @param useCapture Optional - */ - removeEventListener(type: AdErrorEvent.Type, listener: AdErrorEvent.Listener, useCapture?: boolean): void - /** - * Collapse the current ad. This is no-op for HTML5 SDK. - */ - collapse(): void - /** - * Removes ad assets loaded at runtime that need to be properly removed at the time of ad completion and stops the ad and all tracking. - */ - destroy(): void - /** - * If an ad break is currently playing, discard it and resume content. Otherwise, ignore the next scheduled ad break. For example, this can be called immediately after the ads manager loads to ignore a preroll without losing future midrolls or postrolls. This is a no-op unless the ad request returned a playlist or VMAP response. - */ - discardAdBreak(): void - /** - * Expand the current ad. This is no-op for HTML5 SDK. - */ - expand(): void - /** - * Returns true if the ad can currently be skipped. When this value changes, the AdsManager fires an AdEvent.SKIPPABLE_STATE_CHANGED event. - * @returns True if the ad can currently be skipped, false otherwise. - */ - getAdSkippableState(): boolean - /** - * Returns an array of offsets in seconds indicating when a scheduled ad break will play. A preroll is represented by 0, and a postroll is represented by -1. An empty array indicates the ad or ad pod has no schedule and can be played at any time. - * @returns List of time offsets in seconds. - */ - getCuePoints(): number[] - /** - * Get the remaining time of the current ad that is playing. If the ad is not loaded yet or has finished playing, the API would return -1. - * @returns Returns the time remaining for current ad. If the remaining time is undefined for the current ad (for example custom ads), the value returns -1. - */ - getRemainingTime(): number - /** - * Get the volume for the current ad. - * @returns The volume of the current ad, from 0 (muted) to 1 (loudest). - */ - getVolume(): number - /** - * Call init to initialize the ad experience on the ads manager. - * @param width The desired width of the ad. - * @param height The desired height of the ad. - * @param viewMode The desired view mode. - * @param videoElement The video element for custom playback. This video element overrides the one provided in the AdDisplayContainer constructor. Only use this property if absolutely necessary - otherwise we recommend specifying this video element while creating the AdDisplayContainer. - */ - init(width: number, height: number, viewMode: ViewMode, videoElement?: HTMLVideoElement): void - /** - * Returns true if a custom click tracking element is being used for click tracking on the current ad. Custom click tracking is only used when an optional click tracking element is provided to the AdDisplayContainer, custom playback is used, and the current ad is not an AdSense/AdX ad. - * @returns Whether custom click tracking is used. - */ - isCustomClickTrackingUsed(): boolean - /** - * Returns true if a custom video element is being used to play the current ad. Custom playback occurs when an optional video element is provided to the AdDisplayContainer on platforms where a custom video element would provide a more seamless ad viewing experience. - * @returns Whether custom playback is used. - */ - isCustomPlaybackUsed(): boolean - /** - * Pauses the current ad that is playing. This function will be no-op when a static overlay is being shown or if the ad is not loaded yet or is done playing. - */ - pause(): void - /** - * Resizes the current ad. - * @param width New ad slot width. - * @param height New ad slot height. - * @param viewMode The new view mode. - */ - resize(width: number, height: number, viewMode: ViewMode): void - /** - * Resumes the current ad that is loaded and paused. This function will be no-op when a static overlay is being shown or if the ad is not loaded yet or is done playing. - */ - resume(): void - /** - * Set the volume for the current ad. - * @param volume The volume to set, from 0 (muted) to 1 (loudest). - */ - setVolume(volume: number): void - /** - * Skips the current ad when AdsManager.getAdSkippableState() is true. When called under other circumstances, skip has no effect. After the skip is completed the AdsManager fires an AdEvent.SKIPPED event. - */ - skip(): void - /** - * Start playing the ads. - */ - start(): void - /** - * Stop playing the ads. Calling this will get publisher back to the content. - */ - stop(): void - /** - * Updates the ads rendering settings. This should be used specifically for VMAP use cases between ad breaks when ads rendering settings such as bitrate need to be updated. - * @param adsRenderingSettings The updated ads rendering settings. - */ - updateAdsRenderingSettings(adsRenderingSettings: Partial): void - } - /** - * This event is raised when ads are successfully loaded from the Google or DoubleClick ad servers via an AdsLoader. You can register for this event on AdsLoader. - */ - class AdsManagerLoadedEvent { - /** - * After ads are loaded from the Google or DoubleClick ad servers, the publisher needs to play these ads either in their own video player or in the Google-provided video player. This method returns an AdsManager object. The AdsManager supports playing ads and allows the publisher to subscribe to various events during ad playback. - * @param contentPlayback Player that plays back publisher's content. This must be an object that contains the property currentTime, which allows the SDK to query playhead position to properly display midrolls in case ad server responds with an ad rule, and the duration property. The HMTL5 video element fulfills these requirements. You may optionally implement your own playhead tracker, as long as it fulfills the above requirements. - * @param adsRenderingSettings Optional settings to control the rendering of ads. - * @returns AdsManager that manages and plays ads. - */ - public getAdsManager(contentPlayback: { - currentTime: number - duration: number - }, adsRenderingSettings?: Partial): AdsManager - /** - * @returns During ads load request it is possible to provide an object that is available once the ads load is complete. One possible use case: relate ads response to a specific request and use user request content object as a key for identifying the response. - */ - public getUserRequestContext(): any - } - namespace AdsManagerLoadedEvent { - /** - * Types of AdsManagerLoadedEvents. - */ - enum Type { - /** - * Fired when the ads have been loaded and an AdsManager is available. - */ - ADS_MANAGER_LOADED = 'adsManagerLoaded', - } - type Listener = (event: AdsManagerLoadedEvent) => void - } - /** - * Defines parameters that control the rendering of ads. - */ - class AdsRenderingSettings { - /** - * Set to false if you wish to have fine grained control over the positioning of all non-linear ads. If this value is true, the ad is positioned in the bottom center. If this value is false, the ad is positioned in the top left corner. The default value is true. - */ - public autoAlign: boolean - /** - * Maximum recommended bitrate. The value is in kbit/s. The SDK will pick media with bitrate below the specified max, or the closest bitrate if there is no media with lower bitrate found. Default value, -1, means the bitrate will be selected by the SDK. - */ - public bitrate: number - /** - * Enables preloading of video assets. For more info see our guide to preloading media. - */ - public enablePreloading: boolean - /** - * Timeout (in milliseconds) when loading a video ad media file. If loading takes longer than this timeout, the ad playback is canceled and the next ad in the pod plays, if available. Use -1 for the default of 8 seconds. - */ - public loadVideoTimeout: number - /** - * Only supported for linear video mime types. If specified, the SDK will include media that matches the MIME type(s) specified in the list and exclude media that does not match the specified MIME type(s). The format is a list of strings, e.g., [ 'video/mp4', 'video/webm', ... ] If not specified, the SDK will pick the media based on player capabilities. - */ - public mimeTypes: string[] - /** - * For VMAP and ad rules playlists, only play ad breaks scheduled after this time (in seconds). This setting is strictly after - e.g. setting playAdsAfterTime to 15 will cause IMA to ignore an ad break scheduled to play at 15s. - */ - public playAdsAfterTime: number - /** - * Specifies whether or not the SDK should restore the custom playback state after an ad break completes. This is setting is used primarily when the publisher passes in its content player to use for custom ad playback. - */ - public restoreCustomPlaybackStateOnAdBreakComplete: boolean - /** - * Specifies whether the UI elements that should be displayed. The elements in this array are ignored for AdSense/AdX ads. - */ - public uiElements: UiElements[] - /** - * Render linear ads with full UI styling. This setting does not apply to AdSense/AdX ads or ads played in a mobile context that already use full UI styling by default. - */ - public useStyledLinearAds: boolean - /** - * Render non-linear ads with a close and recall button. - */ - public useStyledNonLinearAds: boolean - } - /** - * A class for specifying properties of the ad request. - */ - class AdsRequest { - /** - * Specifies a VAST 2.0 document to be used as the ads response instead of making a request via an ad tag url. This can be useful for debugging and other situations where a VAST response is already available. - * - * This parameter is optional. - */ - public adsResponse?: string - /** - * Specifies the ad tag url that is requested from the ad server. For details on constructing the ad tag url, see Create a master video tag manually. - * - * This parameter is required. - */ - public adTagUrl: string - /** - * Specifies the duration of the content in seconds to be shown. Used in AdX requests. - * - * This parameter is optional. - */ - public contentDuration?: number - /** - * Specifies the keywords used to describe the content to be shown. Used in AdX requests. - * - * This parameter is optional. - */ - public contentKeywords?: string[] - /** - * Specifies the title of the content to be shown. Used in AdX requests. - * - * This parameter is optional. - */ - public contentTitle?: string - /** - * Forces non-linear AdSense ads to render as linear fullslot. If set, the content video will be paused and the non-linear text or image ad will be rendered as fullslot. The content video will resume once the ad has been skipped or closed. - */ - public forceNonLinearFullSlot?: boolean - /** - * Specifies the height of the rectangular area within which a linear ad is displayed. This value is used as one of the criteria for ads selection. This value does not need to match actual ad's height. - * - * This parameter is required. - */ - public linearAdSlotHeight: number - /** - * Specifies the width of the rectangular area within which a linear ad is displayed. This value is used as one of the criteria for ads selection. This value does not need to match actual ad's width. - * - * This parameter is required. - */ - public linearAdSlotWidth: number - /** - * Specifies the maximum amount of time to wait in seconds, after calling requestAds, before requesting the ad tag URL. This can be used to stagger requests during a live-stream event, in order to mitigate spikes in the number of requests. - */ - public liveStreamPrefetchSeconds?: number - /** - * Specifies the height of the rectangular area within which a non linear ad is displayed. This value is used as one of the criteria for ads selection. This value does not need to match actual ad's height. - * - * This parameter is required. - */ - public nonLinearAdSlotHeight: number - /** - * Specifies the width of the rectangular area within which a non linear ad is displayed. This value is used as one of the criteria for ads selection. This value does not need to match actual ad's width. - * - * This parameter is required. - */ - public nonLinearAdSlotWidth: number - /** - * Specifies the full url of the page that will be included in the Google ad request for targeting purposes. The url needs to be a valid url. If specified, this value will be used for the [PAGEURL] VAST macro. - * - * This parameter is optional. - */ - public pageUrl?: string - /** - * Override for default VAST load timeout in milliseconds for a single wrapper. The default timeout is 5000ms. - * - * This parameter is optional. - */ - public vastLoadTimeout?: number - /** - * Notifies the SDK whether the player intends to start the content and ad in response to a user action or whether it will be automatically played. Changing this setting will have no impact on ad playback. - * @param autoPlay Whether the content and the ad will be autoplayed or whether it will be started by a user action. - */ - public setAdWillAutoPlay(autoPlay: boolean): void - /** - * Notifies the SDK whether the player intends to start ad while muted. Changing this setting will have no impact on ad playback, but will send the appropriate signal in the ad request to allow buyers to bid on muted inventory. - * @param muted Whether the ad will be played while muted. - */ - public setAdWillPlayMuted(muted: boolean): void - /** - * Notifies the SDK whether the player intends to continuously play the content videos one after another similar to TV broadcast. Changing this setting will have no impact on the ad playback, but will send the appropriate signal in this ad request to allow buyers to bid on the type of ad inventory. - * @param continuousPlayback Whether the content video is played one after another continuously. - */ - public setContinuousPlayback(continuousPlayback: boolean): void - } - /** - * A companion ad class that is extended by companion ads of different ad types. - */ - interface CompanionAd { - /** - * @returns Returns the ad slot id for this companion. - */ - getAdSlotId(): string - /** - * Returns the HTML content for the companion ad that can be added to the publisher page. - * @returns The HTML content. - */ - getContent(): string - /** - * @returns The content type of the Companion Ad. This may return null if the content type is not known (such as in the case of a VAST HTMLResource or IFrameResource). - */ - getContentType(): string | null - /** - * @returns Returns the height of the companion in pixels. - */ - getHeight(): number - /** - * @returns Returns the width of the companion in pixels. - */ - getWidth(): number - } - /** - * CompanionAdSelectionSettings object is used to define the selection criteria when calling the ima.Ad.getCompanionAds function. - */ - class CompanionAdSelectionSettings { - /** - * The companion ad slot ids to be used for matching set by the user. - */ - public adSlotIds: string[] - /** - * Creative type setting set by the user. - */ - public creativeType: CompanionAdSelectionSettings.CreativeType - /** - * The near fit percent set by the user. - */ - public nearMatchPercent: number - /** - * Resource type setting set by the user. - */ - public resourceType: CompanionAdSelectionSettings.ResourceType - /** - * Size criteria setting set by the user. - */ - public sizeCriteria: CompanionAdSelectionSettings.SizeCriteria - } - namespace CompanionAdSelectionSettings { - /** - * Available choices for creative type of a companion ad. The user can specify any of these choices as a criterion for selecting companion ads. - */ - enum CreativeType { - /** - * Specifies all creative types. - */ - ALL = 'All', - /** - * Specifies Flash creatives. - */ - FLASH = 'Flash', - /** - * Specifies image creatives (such as JPEG, PNG, GIF, etc). - */ - IMAGE = 'Image', - } - /** - * Available choices for resource type of a companion ad. The user can specify any of these choices as a criterion for selecting companion ads. - */ - enum ResourceType { - /** - * Specifies that the resource can be any type of resource. - */ - ALL = 'All', - /** - * Specifies that the resource should be an HTML snippet. - */ - HTML = 'Html', - /** - * Specifies that the resource should be a URL that should be used as the source of an iframe. - */ - IFRAME = 'IFrame', - /** - * Specifies that the resource should be a static file (usually the URL of an image of SWF). - */ - STATIC = 'Static', - } - /** - * Available choices for size selection criteria. The user can specify any of these choices for selecting companion ads. - */ - enum SizeCriteria { - /** - * Specifies that size should be ignored when choosing companions. - */ - IGNORE = 'IgnoreSize', - /** - * Specifies that only companions that match the size of the companion ad slot exactly should be chosen. - */ - SELECT_EXACT_MATCH = 'SelectExactMatch', - /** - * Specifies that any companion close to the size of the companion ad slot should be chosen. - */ - SELECT_NEAR_MATCH = 'SelectNearMatch', - } - } - /** - * This class contains SDK-wide settings. - */ - class ImaSdkSettings { - /** - * Returns the current companion backfill mode. - * @returns The current value. - */ - public getCompanionBackfill(): ImaSdkSettings.CompanionBackfillMode - /** - * Gets whether to disable custom playback on iOS 10+ browsers. The default value is false. - */ - public getDisableCustomPlaybackForIOS10Plus(): boolean - /** - * @returns Whether flash ads should be disabled. - */ - public getDisableFlashAds(): boolean - /** - * Returns the publisher provided locale. - * @returns Publisher provided locale. - */ - public getLocale(): string - /** - * Returns the maximum number of redirects for subsequent redirects will be denied. - * @returns The maximum number of redirects. - */ - public getNumRedirects(): number - /** - * Returns the partner provided player type. - * @returns Partner player type. - */ - public getPlayerType(): string - /** - * Returns the partner provided player version. - * @returns Partner player version. - */ - public getPlayerVersion(): string - /** - * Returns the publisher provided id. - * @returns Publisher provided id. - */ - public getPpid(): string - /** - * Sets whether VMAP and ad rules ad breaks are automatically played - * @param autoPlayAdBreaks Whether to autoPlay the ad breaks. - */ - public setAutoPlayAdBreaks(autoPlayAdBreaks: boolean): void - /** - * Sets the companion backfill mode. Please see the various modes available in google.ima.ImaSdkSettings.CompanionBackfillMode. - * - * The default mode is ima.ImaSdkSettings.CompanionBackfillMode.ALWAYS. - * - * @param mode The desired companion backfill mode. - */ - public setCompanionBackfill(mode: ImaSdkSettings.CompanionBackfillMode): void - /** - * Sets whether to disable custom playback on iOS 10+ browsers. If true, ads will play inline if the content video is inline. This enables TrueView skippable ads. However, the ad will stay inline and not support iOS's native fullscreen. When false, ads will play in the same player as your content. The value set here when an AdDisplayContainer is created is used for the lifetime of the container. The default value is false. - * @param disable Whether or not to disable custom playback. - */ - public setDisableCustomPlaybackForIOS10Plus(disable: boolean): void - /** - * Sets whether flash ads should be disabled. - * @param disableFlashAds Whether flash ads should be disabled. - */ - public setDisableFlashAds(disableFlashAds: boolean): void - /** - * Sets the publisher provided locale. Must be called before creating AdsLoader or AdDisplayContainer. The locale specifies the language in which to display UI elements and can be any two-letter ISO 639-1 code. - * @param locale Publisher-provided locale. - */ - public setLocale(locale: string): void - /** - * Specifies the maximum number of redirects before the subsequent redirects will be denied, and the ad load aborted. The number of redirects directly affects latency and thus user experience. This applies to all VAST wrapper ads. - * @param numRedirects The maximum number of redirects. - */ - public setNumRedirects(numRedirects: number): void - /** - * Sets the partner provided player type. This setting should be used to specify the name of the player being integrated with the SDK. Player type greater than 20 characters will be truncated. The player type specified should be short and unique. This is an optional setting used to improve SDK usability by tracking player types. - * @param playerType The type of the partner player. - */ - public setPlayerType(playerType: string): void - /** - * Sets the partner provided player version. This setting should be used to specify the version of the partner player being integrated with the SDK. Player versions greater than 20 characters will be truncated. This is an optional setting used to improve SDK usability by tracking player version. - * @param playerVersion The version of the partner player. - */ - public setPlayerVersion(playerVersion: string): void - /** - * Sets the publisher provided id. - * @param ppid Publisher provided id. - */ - public setPpid(ppid: string): void - /** - * Sets whether VPAID creatives are allowed. - * @param allowVpaid Whether to allow VPAID creatives. - * @deprecated Please use setVpaidMode. - */ - public setVpaidAllowed(allowVpaid: boolean): void - /** - * Sets VPAID playback mode. - * @param vpaidMode Sets how VPAID ads will be played. Default is to not allow VPAID ads. - */ - public setVpaidMode(vpaidMode: ImaSdkSettings.VpaidMode): void - } - namespace ImaSdkSettings { - /** - * Defines a set of constants for the companion backfill setting. This setting indicates whether companions should be backfilled in various scenarios. - * - * The default value is ALWAYS. - * - * Note that client-side companion backfill requires tagging your companions properly with a Google Publisher Tag (GPT). - */ - enum CompanionBackfillMode { - /** - * If the value is ALWAYS, companion backfill will be attempted in all situations, even when there is no master ad returned. - */ - ALWAYS = 'always', - /** - * If the value is ON_MASTER_AD, companion backfill will be attempted if there is a master ad with fewer companions than there are companion slots. The missing companions will be backfilled. - */ - ON_MASTER_AD = 'on_master_ad', - } - /** - * A set of constants for enabling VPAID functionality. - */ - enum VpaidMode { - /** - * VPAID ads will not play and an error will be returned. - */ - DISABLED = 0, - /** - * VPAID ads are enabled using a cross domain iframe. The VPAID ad cannot access the site. VPAID ads that depend on friendly iframe access may error. This is the default. - */ - ENABLED = 1, - /** - * VPAID ads are enabled using a friendly iframe. This allows the ad access to the site via JavaScript. - */ - INSECURE = 2, - } - } - /** - * Enum specifying different UI elements that can be configured to be displayed or hidden. These settings may be ignored for AdSense and ADX ads. - */ - enum UiElements { - /** - * Displays the "Ad" text in the ad UI. Must be present to show the countdown timer. - */ - AD_ATTRIBUTION = 'adAttribution', - /** - * Ad attribution is required for a countdown timer to be displayed. Both UiElements.COUNTDOWN and UiElements.AD_ATTRIBUTION must be present in AdsRenderingSettings.uiElements. - */ - COUNTDOWN = 'countdown', - } - /** - * Enum specifying different VPAID view modes for ads. - */ - enum ViewMode { - /** - * Fullscreen ad view mode. Indicates to the ads manager that the publisher considers the current AdDisplayContainer arrangement as fullscreen (i.e. simulated fullscreen). This does not cause the ads manager to enter fullscreen. - */ - FULLSCREEN = 'fullscreen', - /** - * Normal ad view mode. - */ - NORMAL = 'normal', - } - /** - * A string containing the full version of the SDK. - */ - const VERSION: string - /** - * Settings for the Google IMA SDK. - */ - const settings: ImaSdkSettings - } - } - export type ImaSdk = typeof google.ima - export class DelegatedEventTarget implements EventTarget { - private delegate - addEventListener(...args: any): void - dispatchEvent(...args: any): boolean - removeEventListener(...args: any): void - } - export class PlayerOptions { - /** Sets whether to disable custom playback on iOS 10+ browsers. If true, ads will play inline if the content video is inline. This enables TrueView skippable ads. However, the ad will stay inline and not support iOS's native fullscreen. */ - disableCustomPlaybackForIOS10Plus: boolean - /** Enables or disables auto resizing of adsManager. If enabled it also resizes non-linear ads. */ - autoResize: boolean - /** Allows to have a separate 'Learn More' click tracking element on mobile. */ - clickTrackingElement?: HTMLElement - } - export type StartAd = { - start: () => void - startWithoutReset: () => void - ad?: google.ima.Ad - adBreakTime?: number - } - export type StartAdCallback = (startAd: StartAd) => void - /** - * Convenience player wrapper for the Google IMA HTML5 SDK - */ - export class Player extends DelegatedEventTarget { - #private - constructor(ima: ImaSdk, mediaElement: HTMLVideoElement, adElement: HTMLElement, adsRenderingSettings?: google.ima.AdsRenderingSettings, options?: PlayerOptions) - /** - * This allows synchronous activation of the media element - * and the Google IMA ad-display-container. Useful when you - * have to do async work before calling "playAds". - */ - activate(): void - /** - * This is the entry point to start ad playback. It can be used - * as such: - * - * - With a single VAST at the beginning to play a preroll - * - Anyhwere during content playback with a single VAST - * - With a single VMAP at the beginning - */ - playAds(adsRequest: google.ima.AdsRequest): void - /** - * Similar to "playAds" method but with the difference - * that it allows to first load the ad and start it separately - * within the given callback. - * - * When a VAST or a VMAP ad break is given the callback is called - * with a "start" method which either starts playing the individual - * VAST ad or starts the VMAP ad break. If "start" method is not called - * it won't play the ad. - */ - loadAds(adsRequest: google.ima.AdsRequest, startAdCallback: StartAdCallback): void - private _mediaElementPlay - private _requestAds - private _setupIma - skipAd(): void - discardAdBreak(): void - /** - * Starts playback of either content or ad element. - */ - play(): void - /** - * Pauses playback of either content or ad element. - */ - pause(): void - /** - * Sets volume of either content or ad element. - */ - set volume(volume: number) - /** - * Returns volume of either content or ad element. - */ - get volume(): number - /** - * Sets muted state on either content or ad element. - */ - set muted(muted: boolean) - /** - * Returns muted state of either content or ad element. - */ - get muted(): boolean - /** - * Sets current time of content element when not in ad playback mode. - */ - set currentTime(currentTime: number) - /** - * Returns current playhead time of either content or ad element. - */ - get currentTime(): number - /** - * Returns current duration of either content or ad element. - */ - get duration(): number - /** - * Returns list of ad break cue points that weren't played yet. - * Only available after "AdMetadata" event when VMAP is passed in playAds. - */ - get cuePoints(): number[] - private _setCuePoints - /** - * Remove already played cuepoints - * - * @param timeOffset offset in seconds as defined in VMAP or 0 for preroll and -1 for postroll - */ - private _adjustCuePoints - /** - * Allows resizing the ad element. Useful when options.autoResize = false. - */ - resizeAd(width: number, height: number): void - /** - * Cleans up current ad and ad manager session or the complete IMA (via force). - * - * Externally call this function with "force = true" when you want to switch - * the content source or move the player to another DOM node before doing - * another "playAds" or "loadAds", so that it does a full cleanup. - * - * @param force - enforce a full cleanup - * @returns a promise which resolves after all the cleanup work is done - */ - reset(force?: boolean): void - private _resetIma - /** - * Completely destroys this instance. It is unusable after that. - */ - destroy(): void - isCustomPlaybackUsed(): boolean - private _resetAd - private _handleMediaElementEvents - private _handleAdsManagerEvents - private _onAdsLoaderError - private _onAdsManagerLoaded - private _startAdsManager - private _mediaStop - private _resizeObserverCallback - private _resizeAdsManager - private _getViewMode - private _playContent - private _createPlayerErrorFromImaErrorEvent - private _onAdError - } -} -/* eslint-enable ts/method-signature-style, ts/consistent-type-definitions */ -declare global { - interface Window { - artplayerPluginVast?: typeof artplayerPluginVast - } -} -declare namespace artplayerPluginVastDefinitions { - export type PlayUrlFn = (url: string, config?: any) => void - export type PlayResFn = (res: string, config?: any) => void - export interface VastPluginContext { - art: Artplayer - ima: any - imaPlayer: Player | null - playUrl: PlayUrlFn - playRes: PlayResFn - init: () => Player - adsRenderingSettings: any - playerOptions: PlayerOptions - container: HTMLDivElement | null - } - export type ArtplayerPluginVastOption = (params: VastPluginContext) => void | Promise - export interface ArtplayerPluginVastInstance { - name: 'artplayerPluginVast' - destroy?: () => void - } - export function artplayerPluginVast(option: ArtplayerPluginVastOption): (art: Artplayer) => ArtplayerPluginVastInstance -} -declare const artplayerPluginVast: typeof artplayerPluginVastDefinitions.artplayerPluginVast -declare namespace artplayerPluginVast { - export type ArtplayerPluginVastOption = artplayerPluginVastDefinitions.ArtplayerPluginVastOption - export type ArtplayerPluginVastInstance = artplayerPluginVastDefinitions.ArtplayerPluginVastInstance -} +/* eslint-disable ts/no-use-before-define, ts/consistent-type-definitions -- Preserve historical export ordering and private aliases. */ export = artplayerPluginVast export as namespace artplayerPluginVast; +type Option = (params: { + art: Artplayer + id: string + ima: any + imaPlayer: any + $container: HTMLDivElement + playUrl: (url: string) => void + playRes: (res: string) => void +}) => void +type Result = { + name: 'artplayerPluginVast' +} +declare const artplayerPluginVast: (option: Option) => (art: Artplayer) => Result ===== docs/assets/ts/artplayer-plugin-vtt-thumbnail.d.ts ===== @@ -8685,7 +7626,7 @@ export as namespace ArtplayerToolThumbnail; ===== docs/assets/ts/artplayer.d.ts ===== // Generated from packages/artplayer/public/artplayer.ts by yarn build:ts. Do not edit. -/* eslint-disable ts/no-redeclare, ts/no-namespace -- UMD constructor and named types share the global export. */ +/* eslint-disable ts/no-redeclare -- UMD constructor and named types share the global export. */ declare namespace ArtplayerDefinitions { export interface ComponentInput extends Omit { html?: string | HTMLElement | number @@ -10344,6 +9285,9 @@ const art = new Artplayer({ miniProgressBar: true, autoPlayback: true, autoOrientation: true, + subtitle: { + url: '/assets/sample/subtitle.srt', + }, thumbnails: { url: '/assets/sample/thumbnails.png', number: 60, diff --git a/packages/artplayer-vitepress/README.md b/packages/artplayer-vitepress/README.md index 34d69b2e5..dc744b362 100644 --- a/packages/artplayer-vitepress/README.md +++ b/packages/artplayer-vitepress/README.md @@ -10,18 +10,29 @@ not a VitePress page. Keep both URL surfaces compatible. | --- | --- | --- | | `docs/index.md`, `docs/start`, `docs/component`, `docs/advanced` | Chinese API documentation | `/document/` | | `docs/en` | English counterparts | `/document/en/` | -| `docs/plugin/danmuku.md` | Dedicated Chinese Danmuku guide | `/document/plugin/danmuku.html` | +| `docs/plugin/danmuku.md`, `docs/en/plugin/danmuku.md` | Danmuku options, callbacks, commands, heatmap and types in both languages | `/document/plugin/danmuku.html`, `/document/en/plugin/danmuku.html` | | `docs/.vitepress/config.js` | Navigation, base URL, output path, page head | Repository `docs/document/` | | `docs/vite.config.ts` | Search plugin configuration | VitePress/Vite integration; real search acceptance remains pending | | `docs/public/main.js` | Run Code links and first-visit language redirect | Copied into the built site | | `docs/public/style.css` | Documentation presentation | Copied into the built site | Edit Markdown and public sources here. Do not edit the generated repository -`docs/document/`. The current inventory contains 27 Markdown pages: 14 Chinese -and 13 English. Danmuku has no English counterpart yet. Other plugins currently +`docs/document/`. The current inventory contains 28 Markdown pages: 14 Chinese +and 14 English. Danmuku has a dedicated guide and navigation in both languages. Other plugins currently use their package README, architecture notes and linked editor examples; navigation links alone are not complete API documentation. +Danmuku guides describe the refactor branch and explicitly distinguish unpublished +`/runtime` declarations from current CDN releases. Preserve old Chinese heading +anchors when editing. Rebuild site assets (the English route inventory), the +LLM corpus and VitePress after changing these pages. The generated readiness smoke +excludes plugin pages; `test/browser/document-danmuku.spec.js` extracts and runs +both guides separately with the local distribution and real sample media. These +checks cover readiness and cleanup, not every interaction or complete playback. +The translation CLI +does not select plugin pages; maintain the two Danmuku guides together manually. +SITE-DANMUKU-01 covers this guide; full bilingual package coverage remains SITE-04. + Site-owned browser behavior now lives in `browser/`; its README maps the shared loader, desktop editor, mobile entry and Run Code/language navigation. `docs/public/main.js` is a generated input to VitePress. Run root `yarn build:site-assets` after changes, or @@ -54,7 +65,7 @@ The repository generators have different ownership: Checked TS modules in `scripts/editor-declarations/` validate all selected declarations together with current and historical compilers before writing. Use `yarn check:editor-types` for drift checks; see that module's README. -- `scripts/build-test.js`: extracts Chinese Run Code blocks into `docs/test/test.js`. +- `scripts/build-test.js`: extracts Chinese core Run Code blocks into `docs/test/test.js`; plugin and English pages are excluded. The TS implementation in `scripts/docs-smoke/` produces deterministic readiness smoke cases with owned frames, error observation and cleanup. It does not prove complete playback or plugin behavior. See its maintenance README and SITE-SMOKE-01. diff --git a/packages/artplayer-vitepress/docs/.vitepress/config.js b/packages/artplayer-vitepress/docs/.vitepress/config.js index dd8ea9ad2..ed0f8bab1 100644 --- a/packages/artplayer-vitepress/docs/.vitepress/config.js +++ b/packages/artplayer-vitepress/docs/.vitepress/config.js @@ -139,6 +139,7 @@ const config = { text: 'Plugins', collapsible: true, items: [ + { text: 'Danmuku', link: '/en/plugin/danmuku' }, { text: 'Advertise', link: 'https://artplayer.org/?libs=./uncompiled/artplayer-plugin-ads/index.js&example=ads' }, { text: 'Iframe Control', link: 'https://artplayer.org/?libs=./uncompiled/artplayer-tool-iframe/index.js&example=iframe' }, { text: 'HLS Control', link: 'https://artplayer.org/?libs=https://cdnjs.cloudflare.com/ajax/libs/hls.js/1.5.17/hls.min.js%0A./uncompiled/artplayer-plugin-hls-control/index.js&example=hls.control' }, diff --git a/packages/artplayer-vitepress/docs/en/plugin/danmuku.md b/packages/artplayer-vitepress/docs/en/plugin/danmuku.md new file mode 100644 index 000000000..f6135a72a --- /dev/null +++ b/packages/artplayer-vitepress/docs/en/plugin/danmuku.md @@ -0,0 +1,319 @@ +# Danmuku + +[中文说明](../../plugin/danmuku.md) + +Display timed comments over the video, with an input panel, display settings and an optional heatmap. +This guide describes the current refactor branch. The `/runtime` entrypoint and refactor fixes have not yet been published to npm; unversioned CDN links still load the published release. + +## Demo + +[Open the full example](https://artplayer.org/?libs=./uncompiled/artplayer-plugin-danmuku/index.js&example=danmuku). +Run Code examples below use the site's local plugin build and sample media. In your application, use your own container and media URLs. + +## Installation + +::: code-group + +```sh [npm] +npm install artplayer artplayer-plugin-danmuku +``` + +```sh [yarn] +yarn add artplayer artplayer-plugin-danmuku +``` + +```sh [pnpm] +pnpm add artplayer artplayer-plugin-danmuku +``` + +```html [script] + + +``` + +::: + +JavaScript projects can import the default factory from `artplayer-plugin-danmuku`. +Script builds expose `artplayerPluginDanmuku`; pass its result to the player's `plugins` array. + +## CDN + +::: code-group + +```text [jsDelivr] +https://cdn.jsdelivr.net/npm/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js +``` + +```text [unpkg] +https://unpkg.com/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js +``` + +::: + +## Comment structure + +Only `text` is required. Leading and trailing whitespace is removed; empty comments are ignored. + +```js +({ + text: 'Hello!', + time: 10, // Seconds; omitted time defaults to currentTime + 0.5 + mode: 0, // 0: scrolling, 1: top, 2: bottom; defaults to option.mode + color: '#FFFFFF', // Defaults to option.color + border: false, + style: {}, // CSS properties for this comment +}); +``` + +Explicit `time: 0` is preserved. Negative times are clamped to zero. Other than 0, 1 and 2, comment modes are ignored. + +## All options + +Pass an option object to the factory. At runtime, `{}` is valid and all fields have defaults. +The historical root declarations still require `danmuku`; existing TypeScript projects can keep providing it. See [TypeScript](#typescript) for accurate declarations. + +```js +({ + danmuku: [], // Array, XML URL, Promise of an array, or function returning an array/Promise + speed: 5, // Display duration in seconds, clamped to 1–10 + margin: [10, '25%'], // Top/bottom spacing: pixels or percentages + opacity: 1, // Clamped to 0–1 + color: '#FFFFFF', // Default comment color + mode: 0, // Default comment mode + modes: [0, 1, 2], // Visible modes + fontSize: 25, // Pixels or a percentage of player height + antiOverlap: true, + synchronousPlayback: false, // Follow video playbackRate when enabled + mount: undefined, // Defaults to the center of the player controls + heatmap: false, // Enable at construction: true or a heatmap options object + width: 512, // Below this width, the default input panel moves below the player + points: [], // Stored option; use the points event to draw custom data + filter: () => true, // Synchronous; do not return a Promise + beforeEmit: () => true, // Input-panel submissions only; may return a Promise + beforeVisible: () => true, // Called before display; may return a Promise + visible: true, + emitter: true, // Show the input panel's sending UI + maxLength: 200, // Input length, clamped to 1–1000 + lockTime: 5, // Seconds between input-panel submissions, clamped to 1–60 + theme: 'dark', // 'dark' or 'light' for an external mount + OPACITY: {}, + FONT_SIZE: {}, + MARGIN: {}, + SPEED: {}, + COLOR: [], +}); +``` + +`OPACITY`, `FONT_SIZE`, `MARGIN` and `SPEED` override slider definitions with `min`, `max` and `steps`. +Each step can contain `name`, `value`, `hide` and `show`; margin values are pairs such as `[10, '50%']`. +`COLOR` replaces the palette with an array of CSS color strings; an empty array uses the built-in palette. + +## Array, XML and asynchronous input + +XML input uses Bilibili's comment format. Fetching a cross-origin XML URL requires that server to allow browser access. +An input function runs without the option object as its receiver. It may return an array directly or asynchronously. + +
+ ▶ Run Code +
+ +```js +var art = new Artplayer({ + container: '.artplayer-app', + url: '/assets/sample/video.mp4', + plugins: [ + artplayerPluginDanmuku({ + danmuku: [{ text: 'Hello from an array', time: 1 }], + // Alternatives: + // danmuku: '/assets/sample/danmuku.xml', + // danmuku: Promise.resolve([{ text: 'From a Promise', time: 1 }]), + // danmuku: async () => [{ text: 'From a function', time: 1 }], + }), + ], +}); +``` + +## Lifecycle callbacks + +Input-panel submissions run `beforeEmit → filter → beforeVisible → artplayerPluginDanmuku:visible`. +Loaded comments and direct `emit` calls run `filter → beforeVisible → artplayerPluginDanmuku:visible`. +This describes accepted comments; callbacks can reject them, and scheduling still requires playback and an available track. + +| Callback | Input | Acceptance | +| --- | --- | --- | +| `beforeEmit` | Input-panel comment | Only strict `true`, or a Promise resolving to `true`, sends it | +| `filter` | Comment with time, mode, color and style filled in | A synchronous truthy result adds it to the queue | +| `beforeVisible` | Queue item | A truthy result, including an awaited result, permits display | + +Normal functions receive the current option object as `this` for all three callbacks. Arrow functions retain their lexical `this`. +`emit()` does not call `beforeEmit`: perform application validation before calling it when needed. +`beforeEmit` failures are logged in the console and leave the input available for another attempt. + +An asynchronous `beforeVisible` rejection emits `artplayerPluginDanmuku:error` once for that item in the current run; other items continue. +Pause/resume, reset or replacing the callback permits a retry if the item is still eligible by time. +Pausing, seeking, hiding, resetting or destroying cancels unfinished visibility preparation. + +## Methods and state + +The registered plugin is available synchronously as `art.plugins.artplayerPluginDanmuku`. + +| Member | Behavior and return value | +| --- | --- | +| `emit(comment)` | Processes one comment for the queue; returns a Promise | +| `load()` | Reads `option.danmuku` and replaces the queue; returns a Promise | +| `load(input)` | Appends comments from the input; returns a Promise | +| `config(partialOption)` | Synchronously merges configuration | +| `hide()` / `show()` | Synchronously hides or shows the comment layer | +| `reset()` | Clears displayed comments and returns queue items to waiting; does not delete the queue | +| `mount(target)` | Moves the panel to an existing element or selector; returns `undefined` | +| `option` | Live current configuration; use `config()` for validated updates | +| `isHide` | Read-only live visibility state: `true` when hidden | +| `isStop` | Read-only live stopped state; distinct from visibility and not a media-readiness signal | + +`emit/load` Promises resolve to the internal Danmuku owner. `config/hide/show/reset` return that same owner synchronously. +The owner is **different from the registered plugin facade**. Keep using the registered facade for subsequent commands. +Awaiting `emit()` means queue processing has finished, not that the comment has appeared. + +### Loading and configuration + +Changing `config({ danmuku: input })` does not load the new input. Follow it with `load()` to replace the queue. +Input-read failures leave the existing queue intact; failures while filtering individual rows do not guarantee an atomic rollback of the entire batch. +Independent append operations do not cancel one another. A newer replacement cancels an unfinished older replacement. +Destroy cancels pending loads. Cancelled Promises resolve to the owner without a late `loaded` or `error` event. + +Fetch and response-text failures emit `artplayerPluginDanmuku:error` and reject the corresponding public `load()` Promise. +Handle rejection with `await`/`try...catch` or `.catch(...)`. Initial automatic loading observes rejection and logs a warning. +Invalid configuration leaves the current option intact. Use `mount(target)` to move the panel; changing `option.mount` through `config()` does not perform a mount. +Enable heatmap when constructing the plugin; `config({ heatmap: true })` does not create it later. + +
+ ▶ Run Code +
+ +```js +var art = new Artplayer({ + container: '.artplayer-app', + url: '/assets/sample/video.mp4', + plugins: [artplayerPluginDanmuku({ danmuku: [], emitter: false })], +}); + +async function updateComments() { + var plugin = art.plugins.artplayerPluginDanmuku; + plugin.config({ danmuku: [{ text: 'Replacement', time: 1 }] }); + await plugin.load(); + await plugin.load([{ text: 'Appended', time: 2 }]); + await plugin.emit({ text: 'Scheduled from the current time' }); + plugin.hide(); + console.info('Hidden:', plugin.isHide); + plugin.show(); + plugin.reset(); +} +updateComments().catch(console.error); +``` + +## External mount + +Create a separate mount element before constructing the plugin. The panel moves into the controls during player fullscreen or web fullscreen and returns to its configured mount on exit. +Use `theme: 'light'` on a light background. The live `mount(target)` method requires a valid target; omitting its argument does not select the default. +Destroy releases the plugin panel; the application owns any container it created. + +
+ ▶ Run Code +
+ +```js +var $danmu = document.createElement('div'); +document.querySelector('.artplayer-app').after($danmu); +var art = new Artplayer({ + container: '.artplayer-app', + url: '/assets/sample/video.mp4', + fullscreenWeb: true, + plugins: [artplayerPluginDanmuku({ + danmuku: [{ text: 'External input panel', time: 1 }], + mount: $danmu, + theme: 'dark', + })], +}); +art.on('destroy', () => $danmu.remove()); +// Move it later with art.plugins.artplayerPluginDanmuku.mount(otherElement). +``` + +## Heatmap + +Set `heatmap: true` at construction to sample the queue automatically. A live stream does not draw a heatmap. +Dense automatic curves now fit in the bottom quarter of the chart instead of covering the video (issue #958). +Explicit finite `yMin` or `yMax` and custom points retain their coordinate mapping. + +An object can set `xMin`, `xMax`, `yMin`, `yMax`, `scale`, `opacity`, `minHeight`, `sampling`, `smoothing` and `flattening`. +Defaults are `xMin: 0`, `xMax: chartWidth`, `yMin: 0`, `yMax: 128`, `scale: 0.25`, `opacity: 0.2`, +`minHeight: floor(chartHeight * 0.05)`, `sampling: max(1, floor(chartWidth / 100))`, `smoothing: 0.2`, `flattening: 0.2`. + +Send `art.emit('artplayerPluginDanmuku:points', points)` to draw custom `[x, value]` pairs. +The default x-axis uses chart pixels, not seconds. Set `xMin/xMax` explicitly if supplying another coordinate range. +Rendering mutates the inner point arrays for historical compatibility: copy each pair if reusing the original data. +The stored `points` option does not draw custom data. A resize or successful load redraws the automatic curve, so resend custom data after those events when needed. + +
+ ▶ Run Code +
+ +```js +var art = new Artplayer({ + container: '.artplayer-app', + url: '/assets/sample/video.mp4', + plugins: [artplayerPluginDanmuku({ + danmuku: [{ text: 'Heatmap example', time: 1 }], + heatmap: true, + })], +}); +var points = [[0, 5], [0.25, 12], [0.5, 30], [0.75, 10], [1, 5]]; +function drawPoints() { + var width = art.controls.heatmap.offsetWidth; + art.emit('artplayerPluginDanmuku:points', points.map(([ratio, value]) => [ratio * width, value])); +} +art.on('ready', drawPoints); +art.on('resize', drawPoints); +art.on('artplayerPluginDanmuku:loaded', drawPoints); +``` + +## Events + +Subscribe with `art.on(name, callback)` and remove subscriptions with `art.off(name, callback)`. + +| Event | Payload / meaning | +| --- | --- | +| `artplayerPluginDanmuku:visible` | Queue item; its `$ref` is the displayed element | +| `artplayerPluginDanmuku:loaded` | Current full queue after a successful load, including appends | +| `artplayerPluginDanmuku:error` | Original error from loading or scheduling; handle public Promise rejections separately | +| `artplayerPluginDanmuku:config` | Current configuration | +| `artplayerPluginDanmuku:start` | No payload; scheduling starts | +| `artplayerPluginDanmuku:stop` | No payload; scheduling stops | +| `artplayerPluginDanmuku:hide` | No payload; layer hidden | +| `artplayerPluginDanmuku:show` | No payload; layer shown | +| `artplayerPluginDanmuku:reset` | No payload; displayed items reset | +| `artplayerPluginDanmuku:destroy` | No payload; plugin destroyed | +| `artplayerPluginDanmuku:points` | Application-sent custom points for the heatmap | + +Events are not replayed to later listeners. In particular, an initially empty array can finish loading during construction. +Subscribe before invoking a later `load()` if you need to observe its completion event. +Use `$ref.textContent` when adding text in a `visible` handler. + +## TypeScript + +The root and `/legacy` entrypoints keep the npm 5.3.0 declaration shapes for compatibility, including historical inaccuracies about return values. +The current branch adds `/runtime` for accurate types while loading the same runtime factory: + +```ts +import Artplayer from 'artplayer'; +import danmuku from 'artplayer-plugin-danmuku/runtime'; +import type { RuntimeOption, Point, EventMap } from 'artplayer-plugin-danmuku/runtime'; + +const option: RuntimeOption = { danmuku: [], heatmap: true }; +const points: Point[] = [[0, 5], [100, 10]]; +const onError = (...[error]: EventMap['artplayerPluginDanmuku:error']) => console.error(error); +const art = new Artplayer({ container: '#player', url: '/video.mp4', plugins: [danmuku(option)] }); +art.on('artplayerPluginDanmuku:error', onError); +``` + +The explicit `EventMap` describes payloads; it does not augment the core's historical event declarations automatically. +The factory also exposes the existing `icons` object for customization. Package `README.md` and `ARCHITECTURE.md` describe module ownership, maintenance commands and remaining device/combination validation. diff --git a/packages/artplayer-vitepress/docs/plugin/danmuku.md b/packages/artplayer-vitepress/docs/plugin/danmuku.md index e84bf1ee7..96215bc0e 100644 --- a/packages/artplayer-vitepress/docs/plugin/danmuku.md +++ b/packages/artplayer-vitepress/docs/plugin/danmuku.md @@ -1,9 +1,15 @@ # 弹幕库 +[English guide](../en/plugin/danmuku.md) + +本文描述当前重构分支。`/runtime` 类型入口与本轮修复尚未发布到 npm;CDN 默认仍加载已发布版本。 + ## 演示 👉 [查看完整演示](https://artplayer.org/?libs=./uncompiled/artplayer-plugin-danmuku/index.js&example=danmuku) +下方 Run Code 使用本站构建的插件与样本。接入自己的应用时,请替换容器和媒体 URL。 + ## 安装 ::: code-group @@ -47,9 +53,9 @@ https://unpkg.com/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js ```js { text: '', // 弹幕文本 - time: 10, // 弹幕时间, 默认为当前播放器时间 + time: 10, // 弹幕时间, 单位秒,省略时为当前播放器时间加 0.5 秒;显式 0 保留 mode: 0, // 弹幕模式: 0: 滚动(默认),1: 顶部,2: 底部 - color: '#FFFFFF', // 弹幕颜色,默认为白色 + color: '#FFFFFF', // 弹幕颜色,默认使用配置 color(初始为白色) border: false, // 弹幕是否有描边, 默认为 false style: {}, // 弹幕自定义样式, 默认为空对象 } @@ -57,7 +63,7 @@ https://unpkg.com/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js ## 全部选项 -只有`danmuku`是必须的参数,其余都是非必填 +工厂需要一个配置对象。运行时可传 `{}`,每个字段都有默认值;旧版根入口类型仍要求 `danmuku`,旧项目继续传入它即可。准确类型见下方 TypeScript 说明。 ```js { @@ -74,9 +80,9 @@ https://unpkg.com/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js mount: undefined, // 弹幕发射器挂载点, 默认为播放器控制栏中部 heatmap: false, // 是否开启热力图 width: 512, // 当播放器宽度小于此值时,弹幕发射器置于播放器底部 - points: [], // 热力图数据 + points: [], // 保留的配置字段;绘制自定义数据请发送 points 事件 filter: () => true, // 弹幕载入前的过滤器,只支持返回布尔值 - beforeEmit: () => true, // 弹幕发送前的过滤器,支持返回 Promise + beforeEmit: () => true, // 输入框发送前的过滤器,支持返回 Promise beforeVisible: () => true, // 弹幕显示前的过滤器,支持返回 Promise visible: true, // 弹幕层是否可见 emitter: true, // 是否开启弹幕发射器 @@ -91,13 +97,19 @@ https://unpkg.com/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js } ``` +`OPACITY`、`FONT_SIZE`、`MARGIN`、`SPEED` 可覆盖滑块的 `min`、`max`、`steps`。 +每个 step 可包含 `name`、`value`、`hide`、`show`;MARGIN 的 value 是上下边距数组。 +`COLOR` 用 CSS 颜色字符串数组替换调色板,空数组使用内置调色板。 + ## 生命周期 +`filter` 同步执行,不应返回 Promise;`beforeEmit` 可异步,但只有严格返回 `true` 才发送。`beforeVisible` 可以异步。普通函数形式的这三个回调,其 `this` 都是当前配置对象。直接调用 `emit` 不执行 `beforeEmit`,需要业务校验时请在调用前完成。 + 来自用户输入的弹幕: `beforeEmit -> filter -> beforeVisible -> artplayerPluginDanmuku:visible` -来自服务器的弹幕: +来自服务器或直接调用 `emit` 的弹幕: `filter -> beforeVisible -> artplayerPluginDanmuku:visible` @@ -151,7 +163,7 @@ var art = new Artplayer({ // 弹幕已经出现在播放器里,你可以访问到弹幕的dom元素里 art.on('artplayerPluginDanmuku:visible', danmu => { - danmu.$ref.innerHTML = 'ଘ(੭ˊᵕˋ)੭: ' + danmu.$ref.innerHTML; + danmu.$ref.textContent = 'ଘ(੭ˊᵕˋ)੭: ' + danmu.$ref.textContent; }) ``` @@ -200,6 +212,8 @@ var art = new Artplayer({ ## 使用异步返回 +也可以直接传入 `Promise<弹幕数组>`,或传入同步返回数组的函数。输入函数没有配置对象作为 `this`。 +
▶ Run Code
@@ -211,8 +225,8 @@ var art = new Artplayer({ plugins: [ artplayerPluginDanmuku({ danmuku: function () { - return new Promise((resovle) => { - return resovle([ + return new Promise((resolve) => { + return resolve([ { text: '使用 Promise 异步返回', time: 1 @@ -298,7 +312,7 @@ var art = new Artplayer({ ## `emit` -通过方法 `emit` 发送一条实时弹幕 +通过方法 `emit` 向队列添加一条弹幕。它返回 Promise;完成表示入队处理完成,不代表已经显示。请用 `await` 或 `.catch(...)` 处理拒绝。省略时间时安排在当前播放时间之后 0.5 秒,显示仍受播放状态、过滤器和可用轨道影响。
▶ Run Code @@ -325,7 +339,7 @@ var art = new Artplayer({ text: text, color: color, border: true, - }); + }).catch(console.error); }, }, ], @@ -334,7 +348,7 @@ var art = new Artplayer({ ## `config` -通过方法 `config` 实时改变弹幕配置 +通过方法 `config` 同步合并弹幕配置。更改 `danmuku` 不会自动重新加载,之后调用无参数的 `load()` 才会替换队列;无效配置不会覆盖现有配置。需要移动发射器时调用 `mount(target)`;热力图应在初始化时启用,`config({ heatmap: true })` 不会创建热力图。
▶ Run Code @@ -372,7 +386,7 @@ var art = new Artplayer({ ## `load` -通过 load 方法可以重载弹幕库,或者切换新弹幕库,或者追加新的弹幕库 +通过 `load` 重载、切换或追加弹幕库,返回 Promise。无参数 `load()` 在读取配置中的输入成功后替换队列;传入 `load(input)` 则追加。输入读取失败不会清空现有队列,但逐条过滤时发生异常不保证整批回滚。并发追加互不取消,新的替换会取消尚未完成的旧替换。销毁会取消未完成加载;被取消的 Promise 仍正常结束,但不会发出迟到的 loaded/error 事件。
▶ Run Code @@ -394,7 +408,7 @@ var art = new Artplayer({ html: '重载', click: function () { // 重新加载当前弹幕库 - art.plugins.artplayerPluginDanmuku.load(); + art.plugins.artplayerPluginDanmuku.load().catch(console.error); }, }, { @@ -405,7 +419,7 @@ var art = new Artplayer({ art.plugins.artplayerPluginDanmuku.config({ danmuku: '/assets/sample/danmuku-v2.xml', }); - art.plugins.artplayerPluginDanmuku.load(); + art.plugins.artplayerPluginDanmuku.load().catch(console.error); }, }, { @@ -414,7 +428,7 @@ var art = new Artplayer({ click: function () { // 追加新的弹幕库,参数类型和option.danmuku相同 const target = '/assets/sample/danmuku.xml' - art.plugins.artplayerPluginDanmuku.load(target); + art.plugins.artplayerPluginDanmuku.load(target).catch(console.error); }, }, ], @@ -423,7 +437,7 @@ var art = new Artplayer({ ## `reset` -用于清空当前显示的弹幕 +用于清空当前显示的弹幕并将队列项重置为等待状态。它不删除队列;后续播放仍可按时间显示弹幕。
▶ Run Code @@ -450,12 +464,15 @@ art.on('resize', () => { 在初始化弹幕插件的时候,是可以指定弹幕发射器的挂载位置的,默认是挂载在控制栏的中部,你也可以把它挂载在播放器以外的地方。 当播放器全屏的时候,发射器会自动回到控制栏的中部。假如你挂载的地方是亮色的话,建议把 `theme` 设置成 `light`,否则会看不清。 +退出全屏后会返回配置的挂载点。`mount(target)` 必须传入已存在的元素或选择器,省略参数不会恢复默认位置;它返回 `undefined`。销毁会移除插件面板,应用创建的外部容器由应用清理。 +
▶ Run Code
```js -var $danmu = document.querySelector('.artplayer-app'); +var $danmu = document.createElement('div'); +document.querySelector('.artplayer-app').after($danmu); var art = new Artplayer({ container: '.artplayer-app', @@ -463,20 +480,22 @@ var art = new Artplayer({ fullscreenWeb: true, plugins: [ artplayerPluginDanmuku({ - mount: $danmu, + mount: $danmu, theme: 'dark', danmuku: '/assets/sample/danmuku.xml', }), ], }); +art.on('destroy', () => $danmu.remove()); + // 也可以手动挂载 // art.plugins.artplayerPluginDanmuku.mount($danmu); ``` ## `option` -用于获取当前弹幕配置 +用于获取当前弹幕配置,返回实时配置对象。更新配置请调用 `config`,避免直接修改对象而绕过校验和 UI 同步。
▶ Run Code @@ -500,6 +519,10 @@ art.on('ready', () => { ## 事件 +使用 `art.on(name, callback)` 订阅,`art.off(name, callback)` 取消订阅。事件不会向迟到的监听器重放;初始空数组可能在构造期间就完成加载。若需要观察后续加载,先订阅再调用 `load()`。 + +`loaded` 参数是当前完整队列,包含已追加数据;`error` 也可能来自显示调度。监听错误事件并不能代替处理公开方法的 Promise 拒绝。 +
▶ Run Code
@@ -524,7 +547,7 @@ art.on('artplayerPluginDanmuku:loaded', (danmus) => { }); art.on('artplayerPluginDanmuku:error', (error) => { - console.info('加载错误', error); + console.info('弹幕错误', error); }); art.on('artplayerPluginDanmuku:config', (option) => { @@ -555,3 +578,67 @@ art.on('artplayerPluginDanmuku:destroy', () => { console.info('弹幕销毁'); }); ``` + +## `isStop` 与方法返回值 + +`art.plugins.artplayerPluginDanmuku.isStop` 是实时只读的停止状态,与 `isHide` 不同,也不表示媒体是否准备就绪。 +`emit/load` 返回的 Promise 完成后得到内部 Danmuku 对象;`config/hide/show/reset` 同步返回同一个内部对象。它与注册在 `art.plugins` 上的插件对象不是同一个对象。后续命令继续通过注册的插件调用即可。 + +`beforeEmit` 抛出或拒绝时会在控制台报告错误,输入框可再次尝试发送。 +`beforeVisible` 拒绝时,对该项在当前调度轮报告一次 `artplayerPluginDanmuku:error`,其他项继续处理;暂停后恢复、reset 或更换回调后,仍符合时间条件的项可重试。 +暂停、seek、隐藏、reset 和销毁会取消尚未完成的显示准备。 + +## 热力图 + +初始化时设置 `heatmap: true`,按队列自动采样;直播不绘制热力图。 +本轮修复了密集弹幕曲线过高遮挡视频的问题(issue #958),自动曲线会适配到图表底部四分之一区域。显式设置有限的 `yMin/yMax` 或发送自定义 points 时保留原坐标映射。 + +`heatmap` 也可传配置对象:`xMin`、`xMax`、`yMin`、`yMax`、`scale`、`opacity`、`minHeight`、`sampling`、`smoothing`、`flattening`。 +默认分别为 `0`、图表宽度、`0`、`128`、`0.25`、`0.2`、`floor(图表高度 * 0.05)`、`max(1, floor(图表宽度 / 100))`、`0.2`、`0.2`。 + +绘制自定义数据使用 `art.emit('artplayerPluginDanmuku:points', points)`,每项为 `[x, value]`。默认 x 是图表像素坐标,不是秒。 +渲染会修改内层数组的第二项,保留原数据时请复制每一对坐标。配置中的 `points` 字段仅存储,不会自动绘图。 +resize 或成功 load 会恢复自动曲线,需要自定义曲线时可在这些事件后重新发送。 + +
+ ▶ Run Code +
+ +```js +var art = new Artplayer({ + container: '.artplayer-app', + url: '/assets/sample/video.mp4', + plugins: [artplayerPluginDanmuku({ + danmuku: [{ text: '热力图示例', time: 1 }], + heatmap: true, + })], +}); +var points = [[0, 5], [0.25, 12], [0.5, 30], [0.75, 10], [1, 5]]; +function drawPoints() { + var width = art.controls.heatmap.offsetWidth; + art.emit('artplayerPluginDanmuku:points', points.map(([ratio, value]) => [ratio * width, value])); +} +art.on('ready', drawPoints); +art.on('resize', drawPoints); +art.on('artplayerPluginDanmuku:loaded', drawPoints); +``` + +## TypeScript + +根入口和 `/legacy` 保留 npm 5.3.0 的历史声明形状,其中部分方法返回值与真实运行时不一致。 +当前分支新增 `/runtime` 提供准确类型,加载的仍是同一个运行时工厂;该入口尚未发布,不能从旧 CDN 版本导入。 + +```ts +import Artplayer from 'artplayer'; +import danmuku from 'artplayer-plugin-danmuku/runtime'; +import type { RuntimeOption, Point, EventMap } from 'artplayer-plugin-danmuku/runtime'; + +const option: RuntimeOption = { danmuku: [], heatmap: true }; +const points: Point[] = [[0, 5], [100, 10]]; +const onError = (...[error]: EventMap['artplayerPluginDanmuku:error']) => console.error(error); +const art = new Artplayer({ container: '#player', url: '/video.mp4', plugins: [danmuku(option)] }); +art.on('artplayerPluginDanmuku:error', onError); +``` + +`EventMap` 显式描述事件参数,不会自动扩展核心历史事件声明。工厂仍暴露 `icons` 对象供自定义图标。 +包内 `README.md` 和 `ARCHITECTURE.md` 维护模块职责、验证命令及尚未完成的设备和组合验收。 diff --git a/packages/artplayer-vitepress/docs/public/main.js b/packages/artplayer-vitepress/docs/public/main.js index 6498c272a..6fbd6a5e9 100644 --- a/packages/artplayer-vitepress/docs/public/main.js +++ b/packages/artplayer-vitepress/docs/public/main.js @@ -50,5 +50,5 @@ } // - installNavigation(window, ["advanced/built-in.html", "advanced/built-in", "advanced/class.html", "advanced/class", "advanced/event.html", "advanced/event", "advanced/global.html", "advanced/global", "advanced/plugin.html", "advanced/plugin", "advanced/property.html", "advanced/property", "component/contextmenu.html", "component/contextmenu", "component/controls.html", "component/controls", "component/layers.html", "component/layers", "component/setting.html", "component/setting", "", "index.html", "start/i18n.html", "start/i18n", "start/option.html", "start/option"]); + installNavigation(window, ["advanced/built-in.html", "advanced/built-in", "advanced/class.html", "advanced/class", "advanced/event.html", "advanced/event", "advanced/global.html", "advanced/global", "advanced/plugin.html", "advanced/plugin", "advanced/property.html", "advanced/property", "component/contextmenu.html", "component/contextmenu", "component/controls.html", "component/controls", "component/layers.html", "component/layers", "component/setting.html", "component/setting", "", "index.html", "plugin/danmuku.html", "plugin/danmuku", "start/i18n.html", "start/i18n", "start/option.html", "start/option"]); })(); diff --git a/refactor/baselines/danmuku-docs-validation.json b/refactor/baselines/danmuku-docs-validation.json new file mode 100644 index 000000000..e51c1070b --- /dev/null +++ b/refactor/baselines/danmuku-docs-validation.json @@ -0,0 +1,2256 @@ +{ + "schemaVersion": 1, + "task": "SITE-DANMUKU-01", + "sourceHead": "520727d762d958bbc0378a04426bd885789d655b", + "environment": { + "os": "win32", + "node": "v24.21.0", + "yarn": "1.22.22" + }, + "scope": "Danmuku bilingual documentation, generated pages/LLM/navigation, snippets and readiness. Not package playback/device acceptance, whole-site search, remote CI/CD or publication.", + "sources": [ + { + "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", + "sha256Lf": "3162d24c17eac5c7e07dd8552f8004ba2b74c9caf7f65b7bf0f54e7a4a8c1031" + }, + { + "file": "packages/artplayer-vitepress/docs/en/plugin/danmuku.md", + "sha256Lf": "a563349b064adac119dac943060ffc5bc82a8ccbd6e20d2d7b5a1e1cb4d66ba2" + }, + { + "file": "packages/artplayer-vitepress/docs/.vitepress/config.js", + "sha256Lf": "2363e83274e7f1cb0af335fb10a2933a65fd9eadd30a15facc844f83ef9a46a5" + }, + { + "file": "packages/artplayer-vitepress/docs/public/main.js", + "sha256Lf": "44b388d74b23e241b534498f53b615dbf2e91be077336ed31971aa09e65a8fd4" + }, + { + "file": "packages/artplayer-vitepress/README.md", + "sha256Lf": "a618940a071624584e6cfe20483ee356e4ec9191856e68d43540bf40c69245dd" + }, + { + "file": "test/browser/document-site.spec.js", + "sha256Lf": "9dfed417beebf6329c5c42157aace2d4bfc3615a83224d99b7de1d366d65ce08" + }, + { + "file": "test/browser/document-danmuku.spec.js", + "sha256Lf": "4461aca47465c99a98788f9645ac094fdd6d3eef2bb9f42d970807f468970b4b" + }, + { + "file": "packages/artplayer-plugin-danmuku/src/index.ts", + "sha256Lf": "bb94fb7c711159c5bad8240b2cad3b5d11b7623307b0ef77f25b88ad21314d00" + }, + { + "file": "packages/artplayer-plugin-danmuku/src/danmuku.ts", + "sha256Lf": "e15716c37b4e42e2a1b7b4b77d4ecdb66bb854a87715f6d99018f00bc321a3a5" + }, + { + "file": "packages/artplayer-plugin-danmuku/src/config.ts", + "sha256Lf": "ecdc1206b984126c4d49480fe264e2202d8e3393970d1552406e6a399c612951" + }, + { + "file": "packages/artplayer-plugin-danmuku/src/input.ts", + "sha256Lf": "a9340c7031f486e22074a8def633fba47eb22c2a745fc5d6e6ddac988b9c6839" + }, + { + "file": "packages/artplayer-plugin-danmuku/src/setting.ts", + "sha256Lf": "9273fd8869364efb12fb90e9f45674fb0d5f9e49675acb2c2500850f0386ee5a" + }, + { + "file": "packages/artplayer-plugin-danmuku/src/setting-send.ts", + "sha256Lf": "b6abbaf3a5e29d42cffb41de44e1ec3760fa3c3223e1b0476e9c8a57f94fd650" + }, + { + "file": "packages/artplayer-plugin-danmuku/src/scheduler.ts", + "sha256Lf": "d3493d28a6222edf78287c8b52510db6462dad29eda0ded0987744a47fdc7dd2" + }, + { + "file": "packages/artplayer-plugin-danmuku/src/heatmap.ts", + "sha256Lf": "032ec70f9594824fb6eedaed277e1125a6327219a8551bd22956f8a5ac162381" + }, + { + "file": "packages/artplayer-plugin-danmuku/src/heatmap-geometry.ts", + "sha256Lf": "fc4a3073bdcfdeb09facf7dafce5bd10c2518ec6feb5ab6fccc008c869d01ee0" + }, + { + "file": "packages/artplayer-plugin-danmuku/types/runtime-shared.d.ts", + "sha256Lf": "72e84f4fc2d5d0fa110708d77fab2ede3df03b3ce9ee67951985a6cdf142652b" + }, + { + "file": "packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js", + "sha256Lf": "708d4eb455c1bffae284d2208c915ca3534bcb59731dd570bff65c5a39ca7f36" + } + ], + "static": { + "task": "SITE-DANMUKU-01", + "node": "v24.21.0", + "pages": [ + { + "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", + "sha256Lf": "3162d24c17eac5c7e07dd8552f8004ba2b74c9caf7f65b7bf0f54e7a4a8c1031", + "built": "docs/document/plugin/danmuku.html", + "sha256": "bbcdebc4df8b3feb86b46d565f731a72c02bf367ec00c8e893b9745693bf5db1", + "examples": [ + { + "id": "plugin/danmuku.md:121", + "sha256": "467984f33a3b381b4532fd9fe86a850f2160688d5f3b07dcaf4d7f07855abaa1" + }, + { + "id": "plugin/danmuku.md:177", + "sha256": "7eaaec8c7c251524c4c0c19268eb2f53d1ee26a6eadc52e356a54df866c3e44a" + }, + { + "id": "plugin/danmuku.md:202", + "sha256": "f1b82664baece00569ce5254b18532f8426e4ef8ec8f60d50625a1db15af8eda" + }, + { + "id": "plugin/danmuku.md:222", + "sha256": "850ce28c8a0565ae34ebee6b929f2b6cae7b9a4eb6ca10b9fcc92a90306b3534" + }, + { + "id": "plugin/danmuku.md:251", + "sha256": "d2f9433bce47f9466eb97f7800ffbec5868c07e84ddfb89449eb01d29a8c3d88" + }, + { + "id": "plugin/danmuku.md:287", + "sha256": "fb4ac30053eaa8f8991a73caed58222f43fbb61800c392267862f7253438fa84" + }, + { + "id": "plugin/danmuku.md:322", + "sha256": "45189f4a784a31cc7fdadf0e163c233f02ce4462c1948724c79b04b2d11d9534" + }, + { + "id": "plugin/danmuku.md:358", + "sha256": "97d7d25eb5fd3fb57fe562a20ba5dad95cb2849bf66358b737c49d14315bce05" + }, + { + "id": "plugin/danmuku.md:396", + "sha256": "0ff379699ebae7ff8fea21780dbefcbd5bdc170a34ee9f7aa0f900d23ea43f00" + }, + { + "id": "plugin/danmuku.md:447", + "sha256": "16527731a31a3b145ca94f4fc55d8eac4b90d1d3bc5ddceeb818351240dc9f37" + }, + { + "id": "plugin/danmuku.md:474", + "sha256": "92adb428cddf2137276b82c8154604bf048931a986125eb6b17a7722732dcb9c" + }, + { + "id": "plugin/danmuku.md:505", + "sha256": "87d543947f11b766327a956117efeae3537bc26b216b2beff4c8f6d63d480260" + }, + { + "id": "plugin/danmuku.md:531", + "sha256": "89a7728637e229224fb6016566ed89b54b24095f50fc4052f9b78eb6cb7afe39" + }, + { + "id": "plugin/danmuku.md:608", + "sha256": "4d1dac54d0ff0bc569d7f06ac645a45e5a034b52ce8574a5416834407fab9f0e" + } + ], + "types": { + "compiler": "5.9.3", + "module": "NodeNext", + "strict": true, + "skipLibCheck": false, + "diagnostics": 0 + } + }, + { + "file": "packages/artplayer-vitepress/docs/en/plugin/danmuku.md", + "sha256Lf": "a563349b064adac119dac943060ffc5bc82a8ccbd6e20d2d7b5a1e1cb4d66ba2", + "built": "docs/document/en/plugin/danmuku.html", + "sha256": "86621ce3fb3405c95218723fd6cbbc2cf5a6d891fb3ddb6b84c59b6b3c89e87b", + "examples": [ + { + "id": "en/plugin/danmuku.md:121", + "sha256": "e16b38fac1c77137f1d9d41ca1d76a3e0518e4f589f9b79059b9d70a173e026c" + }, + { + "id": "en/plugin/danmuku.md:194", + "sha256": "d7125109d366d5211d354e82e56703b187e4c98b580dc50c386813a8f5c2c2bf" + }, + { + "id": "en/plugin/danmuku.md:225", + "sha256": "ffb15f7204f3ccc8a46d342263db29ea455c597eb069a786926a7571bfc9ccdb" + }, + { + "id": "en/plugin/danmuku.md:261", + "sha256": "0c1a623c4a9a4ad37744c9ec6e8310859f2754403f50769f142f0880b836db91" + } + ], + "types": { + "compiler": "5.9.3", + "module": "NodeNext", + "strict": true, + "skipLibCheck": false, + "diagnostics": 0 + } + } + ], + "checks": { + "preservedChineseHeadings": [ + "弹幕库", + "演示", + "安装", + "cdn", + "弹幕结构", + "全部选项", + "生命周期", + "使用弹幕数组", + "使用弹幕-xml", + "使用异步返回", + "hide-show", + "ishide", + "emit", + "config", + "load", + "reset", + "mount", + "option", + "事件" + ], + "englishSidebar": true, + "scope": "Local docs, exact snippets, built links and preserved Chinese heading IDs; not whole-site search, remote CDN, package device or release acceptance." + } + }, + "browser": { + "file": "refactor/.cache/danmuku-docs-browser-final.json", + "sha256": "b0859f3a7f8ee0189c066f73fc662027febf2dc3aa673bc81e637dbaddb8c6af", + "stats": { + "startTime": "2026-09-15T08:38:50.583Z", + "duration": 68675.89099999999, + "expected": 60, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + }, + "rows": [ + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:121", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:177", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:202", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:222", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:251", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:287", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:322", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:358", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:396", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:447", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:474", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:505", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:531", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:608", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:121", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:194", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:225", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:261", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:121", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:177", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:202", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:222", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:251", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:287", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:322", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:358", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:396", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:447", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:474", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:505", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:531", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:608", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:121", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:194", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:225", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:261", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:121", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:177", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:202", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:222", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:251", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:287", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:322", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:358", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:396", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:447", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:474", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:505", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:531", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:608", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:121", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:194", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:225", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:261", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "built documentation loads zh deep pages and opens Run Code with encoded source", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "built documentation loads en deep pages and opens Run Code with encoded source", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "built documentation loads zh deep pages and opens Run Code with encoded source", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "built documentation loads en deep pages and opens Run Code with encoded source", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "built documentation loads zh deep pages and opens Run Code with encoded source", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "built documentation loads en deep pages and opens Run Code with encoded source", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + } + ] + }, + "firstBrowser": { + "file": "refactor/.cache/danmuku-docs-browser-first.json", + "sha256": "dceefef022e49fd93013f4beba1ba3a6f92eac70da0f3ffb88c9c78c262550c9", + "stats": { + "startTime": "2026-09-15T08:35:23.388Z", + "duration": 170330.21, + "expected": 54, + "skipped": 0, + "unexpected": 6, + "flaky": 0 + }, + "rows": [ + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:121", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:177", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:202", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:222", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:251", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:287", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:322", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:358", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:396", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:447", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:474", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:505", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:531", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:608", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:121", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:194", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:225", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:261", + "project": "chromium", + "status": "passed", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:121", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:177", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:202", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:222", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:251", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:287", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:322", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:358", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:396", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:447", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:474", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:505", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:531", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:608", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:121", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:194", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:225", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:261", + "project": "firefox", + "status": "passed", + "attempts": 1, + "browser": "155.0", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:121", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:177", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:202", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:222", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:251", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:287", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:322", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:358", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:396", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:447", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:474", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:505", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:531", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: plugin/danmuku.md:608", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:121", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:194", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:225", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "documented Danmuku example becomes ready and cleans up: en/plugin/danmuku.md:261", + "project": "webkit", + "status": "passed", + "attempts": 1, + "browser": "26.6", + "errors": [], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "built documentation loads zh deep pages and opens Run Code with encoded source", + "project": "chromium", + "status": "timedOut", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [ + "\u001b[31mTest timeout of 20000ms exceeded.\u001b[39m", + "Error: locator.click: Test timeout of 20000ms exceeded.\nCall log:\n\u001b[2m - waiting for locator('[classname=\"run-code\"]').first()\u001b[22m\n\n\n 54 | await expect(page.locator('h1')).toContainText(language === 'en' ? 'Danmuku' : '弹幕库')\n 55 | const examplePopup = context.waitForEvent('page')\n> 56 | await page.locator('[classname=\"run-code\"]').first().click()\n | ^\n 57 | const example = await examplePopup\n 58 | await exampl", + "Error: browserContext.waitForEvent: Test timeout of 20000ms exceeded.\n\n 53 | await danmukuLink.click()\n 54 | await expect(page.locator('h1')).toContainText(language === 'en' ? 'Danmuku' : '弹幕库')\n> 55 | const examplePopup = context.waitForEvent('page')\n | ^\n 56 | await page.locator('[classname=\"run-code\"]').first().click()\n 57 | const example = await examplePopup\n 58 | await example.waitForLoadState('domcontentloaded')\n at D:\\gi" + ], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "built documentation loads en deep pages and opens Run Code with encoded source", + "project": "chromium", + "status": "timedOut", + "attempts": 1, + "browser": "153.0.8010.12", + "errors": [ + "\u001b[31mTest timeout of 20000ms exceeded.\u001b[39m", + "Error: locator.click: Test timeout of 20000ms exceeded.\nCall log:\n\u001b[2m - waiting for locator('[classname=\"run-code\"]').first()\u001b[22m\n\n\n 54 | await expect(page.locator('h1')).toContainText(language === 'en' ? 'Danmuku' : '弹幕库')\n 55 | const examplePopup = context.waitForEvent('page')\n> 56 | await page.locator('[classname=\"run-code\"]').first().click()\n | ^\n 57 | const example = await examplePopup\n 58 | await exampl", + "Error: browserContext.waitForEvent: Test timeout of 20000ms exceeded.\n\n 53 | await danmukuLink.click()\n 54 | await expect(page.locator('h1')).toContainText(language === 'en' ? 'Danmuku' : '弹幕库')\n> 55 | const examplePopup = context.waitForEvent('page')\n | ^\n 56 | await page.locator('[classname=\"run-code\"]').first().click()\n 57 | const example = await examplePopup\n 58 | await example.waitForLoadState('domcontentloaded')\n at D:\\gi" + ], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "built documentation loads zh deep pages and opens Run Code with encoded source", + "project": "firefox", + "status": "timedOut", + "attempts": 1, + "browser": "155.0", + "errors": [ + "\u001b[31mTest timeout of 20000ms exceeded.\u001b[39m", + "Error: locator.click: Test timeout of 20000ms exceeded.\nCall log:\n\u001b[2m - waiting for locator('[classname=\"run-code\"]').first()\u001b[22m\n\n\n 54 | await expect(page.locator('h1')).toContainText(language === 'en' ? 'Danmuku' : '弹幕库')\n 55 | const examplePopup = context.waitForEvent('page')\n> 56 | await page.locator('[classname=\"run-code\"]').first().click()\n | ^\n 57 | const example = await examplePopup\n 58 | await exampl", + "Error: browserContext.waitForEvent: Test timeout of 20000ms exceeded.\n\n 53 | await danmukuLink.click()\n 54 | await expect(page.locator('h1')).toContainText(language === 'en' ? 'Danmuku' : '弹幕库')\n> 55 | const examplePopup = context.waitForEvent('page')\n | ^\n 56 | await page.locator('[classname=\"run-code\"]').first().click()\n 57 | const example = await examplePopup\n 58 | await example.waitForLoadState('domcontentloaded')\n at D:\\gi" + ], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "built documentation loads en deep pages and opens Run Code with encoded source", + "project": "firefox", + "status": "timedOut", + "attempts": 1, + "browser": "155.0", + "errors": [ + "\u001b[31mTest timeout of 20000ms exceeded.\u001b[39m", + "Error: locator.click: Test timeout of 20000ms exceeded.\nCall log:\n\u001b[2m - waiting for locator('[classname=\"run-code\"]').first()\u001b[22m\n\n\n 54 | await expect(page.locator('h1')).toContainText(language === 'en' ? 'Danmuku' : '弹幕库')\n 55 | const examplePopup = context.waitForEvent('page')\n> 56 | await page.locator('.run-code, [classname=\"run-code\"]').first().click()\n | ^\n 57 | const example = await examplePopup\n 58 | a", + "Error: browserContext.waitForEvent: Test timeout of 20000ms exceeded.\n\n 53 | await danmukuLink.click()\n 54 | await expect(page.locator('h1')).toContainText(language === 'en' ? 'Danmuku' : '弹幕库')\n> 55 | const examplePopup = context.waitForEvent('page')\n | ^\n 56 | await page.locator('.run-code, [classname=\"run-code\"]').first().click()\n 57 | const example = await examplePopup\n 58 | await example.waitForLoadState('domcontentloaded')\n " + ], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "built documentation loads zh deep pages and opens Run Code with encoded source", + "project": "webkit", + "status": "timedOut", + "attempts": 1, + "browser": "26.6", + "errors": [ + "\u001b[31mTest timeout of 20000ms exceeded.\u001b[39m", + "Error: locator.click: Test timeout of 20000ms exceeded.\nCall log:\n\u001b[2m - waiting for locator('[classname=\"run-code\"]').first()\u001b[22m\n\n\n 54 | await expect(page.locator('h1')).toContainText(language === 'en' ? 'Danmuku' : '弹幕库')\n 55 | const examplePopup = context.waitForEvent('page')\n> 56 | await page.locator('.run-code, [classname=\"run-code\"]').first().click()\n | ^\n 57 | const example = await examplePopup\n 58 | a", + "Error: browserContext.waitForEvent: Test timeout of 20000ms exceeded.\n\n 53 | await danmukuLink.click()\n 54 | await expect(page.locator('h1')).toContainText(language === 'en' ? 'Danmuku' : '弹幕库')\n> 55 | const examplePopup = context.waitForEvent('page')\n | ^\n 56 | await page.locator('.run-code, [classname=\"run-code\"]').first().click()\n 57 | const example = await examplePopup\n 58 | await example.waitForLoadState('domcontentloaded')\n " + ], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + }, + { + "title": "built documentation loads en deep pages and opens Run Code with encoded source", + "project": "webkit", + "status": "timedOut", + "attempts": 1, + "browser": "26.6", + "errors": [ + "\u001b[31mTest timeout of 20000ms exceeded.\u001b[39m", + "Error: locator.click: Test timeout of 20000ms exceeded.\nCall log:\n\u001b[2m - waiting for locator('[classname=\"run-code\"]').first()\u001b[22m\n\n\n 54 | await expect(page.locator('h1')).toContainText(language === 'en' ? 'Danmuku' : '弹幕库')\n 55 | const examplePopup = context.waitForEvent('page')\n> 56 | await page.locator('.run-code, [classname=\"run-code\"]').first().click()\n | ^\n 57 | const example = await examplePopup\n 58 | a", + "Error: browserContext.waitForEvent: Test timeout of 20000ms exceeded.\n\n 53 | await danmukuLink.click()\n 54 | await expect(page.locator('h1')).toContainText(language === 'en' ? 'Danmuku' : '弹幕库')\n> 55 | const examplePopup = context.waitForEvent('page')\n | ^\n 56 | await page.locator('.run-code, [classname=\"run-code\"]').first().click()\n 57 | const example = await examplePopup\n 58 | await example.waitForLoadState('domcontentloaded')\n " + ], + "core": { + "source": { + "kind": "workspace-build", + "entry": "packages\\artplayer\\src\\index.ts" + }, + "sha256": "5139cabd5abf9b92684ee2dcdaa620c4db7f67c0cb1aa3f654435d739468bf9d", + "bytes": 378931 + } + } + ] + }, + "checks": [ + { + "command": "yarn build:docs", + "exitCode": 0, + "log": { + "file": "refactor/.cache/danmuku-docs-build-final.log", + "sha256": "6bdc8fb49d1ca756d0dbfbc1325fe9e80b67a047ed86a825f768feffb967018f" + } + }, + { + "command": "yarn test:site-build", + "exitCode": 0, + "passed": 7, + "log": { + "file": "refactor/.cache/danmuku-docs-site-tests.log", + "sha256": "d640494076391c86291057813582fc6da490045fbaa5f0fdd4e8f0ab00fcefd9" + } + }, + { + "command": "node --test test/site-loading.test.js test/documentation-pipeline.test.js", + "exitCode": 0, + "passed": 17, + "log": { + "file": "refactor/.cache/danmuku-docs-pipeline-tests.log", + "sha256": "33dec7dca94dca07d4601bc3394dec9163863d0526ac78d6e87dd8fff4fc3c86" + } + }, + { + "command": "eslint document-site.spec.js document-danmuku.spec.js config.js", + "exitCode": 0, + "log": { + "file": "refactor/.cache/danmuku-docs-lint-final.log", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + } + ], + "failedChecks": [ + { + "file": "refactor/.cache/danmuku-docs-lint-first.log", + "sha256": "0bf57901aace4bd3b256a8e7a253bcdc919fb9808ff895cb37a040deb04eed08" + }, + { + "file": "refactor/.cache/danmuku-docs-tool-tests.log", + "sha256": "35b57b224784d9cc804e658f8a7ab0b97fbe421b33902c2a6bbd3c37db39d485" + }, + { + "file": "refactor/.cache/danmuku-docs-tool-tests-final.log", + "sha256": "4fca070f8aee26b44dbb8c2a33ee0eba1d1698636c6da3d4db82c8284cf4f56f" + }, + { + "file": "refactor/.cache/danmuku-docs-static.log", + "sha256": "6969a6f63003590dccf3482cb286317a3a3f9b80a9240ccc887e2118f0df4e19" + }, + { + "file": "refactor/.cache/danmuku-docs-static-final.log", + "sha256": "6969a6f63003590dccf3482cb286317a3a3f9b80a9240ccc887e2118f0df4e19" + } + ], + "notes": [ + "First browser run: 54 passed, 6 selector failures. Site handler already supported class and className; only tests changed.", + "First lint failed import ordering. Direct node and yarn node both lacked the required npm_execpath; existing yarn test:site-build supplies the right script environment.", + "Static parser initially assumed browser attribute normalization; actual attribute-name inspection fixed the harness. No runtime changes.", + "Whitespace cleanup rebuilt identical bilingual HTML after browser validation; Chinese bbcdebc4df8b3feb86b46d565f731a72c02bf367ec00c8e893b9745693bf5db1, English 86621ce3fb3405c95218723fd6cbbc2cf5a6d891fb3ddb6b84c59b6b3c89e87b.", + "build:test and check:docs-smoke passed; generated Chinese core-only outputs unchanged because plugin/en pages are excluded.", + "LLM regeneration also refreshed previously committed inputs: docs/assets/ts/artplayer-plugin-vast.d.ts (e5c73fa62), docs/assets/ts/artplayer.d.ts (7cf6f3313), docs/assets/example/canvas.js (c3967bcbf). All three verified byte-for-byte after LF normalization against starting HEAD; no input edits in this task." + ] +} diff --git a/refactor/baselines/site-inventory.json b/refactor/baselines/site-inventory.json index a13040454..e1e9c1515 100644 --- a/refactor/baselines/site-inventory.json +++ b/refactor/baselines/site-inventory.json @@ -4,9 +4,9 @@ "note": "Read-only source inventory. Heading matches are candidates, never semantic API coverage. Asset identity is not permission. No runtime, remote Pages or npm acceptance is implied.", "counts": { "packages": 22, - "markdown": 27, + "markdown": 28, "examples": 30, - "html": 36, + "html": 37, "declarationMembers": 963, "assets": 204 }, @@ -1946,6 +1946,73 @@ "translation": "packages/artplayer-vitepress/docs/index.md", "translationOwner": null }, + { + "file": "packages/artplayer-vitepress/docs/en/plugin/danmuku.md", + "sha256Lf": "a563349b064adac119dac943060ffc5bc82a8ccbd6e20d2d7b5a1e1cb4d66ba2", + "language": "en", + "route": "/document/en/plugin/danmuku.html", + "headings": [ + { + "text": "Danmuku", + "line": 1 + }, + { + "text": "Demo", + "line": 8 + }, + { + "text": "Installation", + "line": 13 + }, + { + "text": "CDN", + "line": 39 + }, + { + "text": "Comment structure", + "line": 53 + }, + { + "text": "All options", + "line": 70 + }, + { + "text": "Array, XML and asynchronous input", + "line": 111 + }, + { + "text": "Lifecycle callbacks", + "line": 136 + }, + { + "text": "Methods and state", + "line": 156 + }, + { + "text": "Loading and configuration", + "line": 177 + }, + { + "text": "External mount", + "line": 214 + }, + { + "text": "Heatmap", + "line": 241 + }, + { + "text": "Events", + "line": 279 + }, + { + "text": "TypeScript", + "line": 301 + } + ], + "runCodeMarkers": 4, + "translation": "packages/artplayer-vitepress/docs/plugin/danmuku.md", + "translationOwner": null + }, { "file": "packages/artplayer-vitepress/docs/en/start/i18n.md", "sha256Lf": "1551bf939aab1ee942d8480df891640109d18aa9adc016adf1d075bee5ef1de9", @@ -2265,7 +2332,7 @@ }, { "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", - "sha256Lf": "a019e334d22628f1697a2a0be15e9c3f01e36b2c8da825f32ea86b4135b91c2b", + "sha256Lf": "3162d24c17eac5c7e07dd8552f8004ba2b74c9caf7f65b7bf0f54e7a4a8c1031", "language": "zh", "route": "/document/plugin/danmuku.html", "headings": [ @@ -2275,80 +2342,92 @@ }, { "text": "演示", - "line": 3 - }, - { - "text": "安装", "line": 7 }, + { + "text": "安装", + "line": 13 + }, { "text": "CDN", - "line": 29 + "line": 35 }, { "text": "弹幕结构", - "line": 43 + "line": 49 }, { "text": "全部选项", - "line": 58 + "line": 64 }, { "text": "生命周期", - "line": 94 + "line": 104 }, { "text": "使用弹幕数组", - "line": 158 + "line": 170 }, { "text": "使用弹幕 XML", - "line": 181 + "line": 193 }, { "text": "使用异步返回", - "line": 201 + "line": 213 }, { "text": "`hide/show`", - "line": 228 + "line": 242 }, { "text": "`isHide`", - "line": 264 + "line": 278 }, { "text": "`emit`", - "line": 299 + "line": 313 }, { "text": "`config`", - "line": 335 + "line": 349 }, { "text": "`load`", - "line": 373 + "line": 387 }, { "text": "`reset`", - "line": 424 + "line": 438 }, { "text": "`mount`", - "line": 448 + "line": 462 }, { "text": "`option`", - "line": 477 + "line": 496 }, { "text": "事件", - "line": 501 + "line": 520 + }, + { + "text": "`isStop` 与方法返回值", + "line": 582 + }, + { + "text": "热力图", + "line": 591 + }, + { + "text": "TypeScript", + "line": 626 } ], - "runCodeMarkers": 13, - "translation": null, - "translationOwner": "SITE-04" + "runCodeMarkers": 14, + "translation": "packages/artplayer-vitepress/docs/en/plugin/danmuku.md", + "translationOwner": null }, { "file": "packages/artplayer-vitepress/docs/start/i18n.md", @@ -2702,7 +2781,7 @@ }, { "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", - "line": 335 + "line": 349 } ], "semanticReviewOwner": "SITE-04" @@ -2833,7 +2912,7 @@ }, { "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", - "line": 477 + "line": 496 } ], "semanticReviewOwner": "SITE-04" @@ -3457,7 +3536,7 @@ }, { "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", - "line": 477 + "line": 496 } ], "semanticReviewOwner": "SITE-04" @@ -3614,7 +3693,7 @@ "candidateHeadings": [ { "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", - "line": 299 + "line": 313 } ], "semanticReviewOwner": "SITE-04" @@ -3627,7 +3706,7 @@ "candidateHeadings": [ { "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", - "line": 299 + "line": 313 } ], "semanticReviewOwner": "SITE-04" @@ -3640,7 +3719,7 @@ "candidateHeadings": [ { "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", - "line": 299 + "line": 313 } ], "semanticReviewOwner": "SITE-04" @@ -3777,7 +3856,7 @@ }, { "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", - "line": 424 + "line": 438 } ], "semanticReviewOwner": "SITE-04" @@ -4853,7 +4932,7 @@ "candidateHeadings": [ { "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", - "line": 299 + "line": 313 } ], "semanticReviewOwner": "SITE-04" @@ -6807,6 +6886,10 @@ { "file": "packages/artplayer-vitepress/docs/en/advanced/property.md", "line": 576 + }, + { + "file": "packages/artplayer-vitepress/docs/en/plugin/danmuku.md", + "line": 156 } ], "semanticReviewOwner": "SITE-04" @@ -7091,7 +7174,7 @@ }, { "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", - "line": 335 + "line": 349 } ], "semanticReviewOwner": "SITE-04" @@ -8791,6 +8874,10 @@ { "file": "packages/artplayer-vitepress/docs/en/advanced/property.md", "line": 576 + }, + { + "file": "packages/artplayer-vitepress/docs/en/plugin/danmuku.md", + "line": 156 } ], "semanticReviewOwner": "SITE-04" @@ -8808,6 +8895,10 @@ { "file": "packages/artplayer-vitepress/docs/en/advanced/property.md", "line": 576 + }, + { + "file": "packages/artplayer-vitepress/docs/en/plugin/danmuku.md", + "line": 156 } ], "semanticReviewOwner": "SITE-04" @@ -10391,7 +10482,7 @@ }, { "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", - "line": 424 + "line": 438 } ], "semanticReviewOwner": "SITE-04" @@ -10669,7 +10760,7 @@ }, { "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", - "line": 477 + "line": 496 } ], "semanticReviewOwner": "SITE-04" @@ -11253,7 +11344,7 @@ }, { "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", - "line": 424 + "line": 438 } ], "semanticReviewOwner": "SITE-04" @@ -11357,7 +11448,7 @@ }, { "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", - "line": 335 + "line": 349 } ], "semanticReviewOwner": "SITE-04" @@ -11488,7 +11579,7 @@ }, { "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", - "line": 477 + "line": 496 } ], "semanticReviewOwner": "SITE-04" @@ -11721,7 +11812,7 @@ }, { "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", - "line": 477 + "line": 496 } ], "semanticReviewOwner": "SITE-04" @@ -13051,6 +13142,10 @@ { "file": "packages/artplayer-vitepress/docs/en/advanced/property.md", "line": 576 + }, + { + "file": "packages/artplayer-vitepress/docs/en/plugin/danmuku.md", + "line": 156 } ], "semanticReviewOwner": "SITE-04" @@ -13068,6 +13163,10 @@ { "file": "packages/artplayer-vitepress/docs/en/advanced/property.md", "line": 576 + }, + { + "file": "packages/artplayer-vitepress/docs/en/plugin/danmuku.md", + "line": 156 } ], "semanticReviewOwner": "SITE-04" @@ -14667,7 +14766,7 @@ }, { "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", - "line": 477 + "line": 496 } ], "semanticReviewOwner": "SITE-04" @@ -14874,7 +14973,7 @@ }, { "file": "packages/artplayer-vitepress/docs/plugin/danmuku.md", - "line": 477 + "line": 496 } ], "semanticReviewOwner": "SITE-04" @@ -16766,6 +16865,7 @@ "packages/artplayer-vitepress/docs/en/component/layers.md", "packages/artplayer-vitepress/docs/en/component/setting.md", "packages/artplayer-vitepress/docs/en/index.md", + "packages/artplayer-vitepress/docs/en/plugin/danmuku.md", "packages/artplayer-vitepress/docs/en/start/i18n.md", "packages/artplayer-vitepress/docs/en/start/option.md", "packages/artplayer-vitepress/docs/index.md", @@ -16870,6 +16970,7 @@ ], "sidebarMentionsPackage": true, "dedicatedPages": [ + "packages/artplayer-vitepress/docs/en/plugin/danmuku.md", "packages/artplayer-vitepress/docs/plugin/danmuku.md" ], "contentReviewOwner": "SITE-04", @@ -17047,6 +17148,7 @@ "packages/artplayer-vitepress/docs/en/component/layers.md", "packages/artplayer-vitepress/docs/en/component/setting.md", "packages/artplayer-vitepress/docs/en/index.md", + "packages/artplayer-vitepress/docs/en/plugin/danmuku.md", "packages/artplayer-vitepress/docs/en/start/i18n.md", "packages/artplayer-vitepress/docs/en/start/option.md", "packages/artplayer-vitepress/docs/index.md", @@ -17148,7 +17250,7 @@ { "name": "canvas", "source": "docs/assets/example/canvas.js", - "sha256Lf": "95a971773e93cfb340a07eebcd49e333825f49ce0d167514ad98a188cd027799", + "sha256Lf": "cb92730640913cdc8f03e01cce9d7c877537177950491449d48817e77960f458", "menuLinks": [ "/?libs=./uncompiled/artplayer-proxy-canvas/index.js&example=canvas" ], @@ -17497,10 +17599,10 @@ { "source": "docs/document/404.html", "route": "/document/404.html", - "sha256Lf": "539657203fa549c6cd296ded750c44bc0781f93c016deac48520294a41bbfbc9", + "sha256Lf": "3717d17f8ed125c4781ef3663b7b7d2bb72f579d6043a406ea5459010caa08e3", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17510,10 +17612,10 @@ { "source": "docs/document/advanced/built-in.html", "route": "/document/advanced/built-in.html", - "sha256Lf": "172ce867c6e9be9cae181e82e798bf79d85d5019223d62b209e2c942f83b2d4c", + "sha256Lf": "70c42ca5bb8c524b56c7ebbb8eaf72f5be14fc41ebc5bf4ec790d0bfa7263097", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17523,10 +17625,10 @@ { "source": "docs/document/advanced/class.html", "route": "/document/advanced/class.html", - "sha256Lf": "bf38af7c5748bf94a1bf1dcafbd6f23697e0cd50204d6e2509d020aa28bdcc26", + "sha256Lf": "9d5cd62993d6baf1300181830b2a780e2167bdcee0eeee683736c3d5b43baf24", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17536,10 +17638,10 @@ { "source": "docs/document/advanced/event.html", "route": "/document/advanced/event.html", - "sha256Lf": "5a833a4b5328a35e0f5dcb19b993559321e6de2aa4d58751adc495d7d6b06d8a", + "sha256Lf": "a4624a2b6a7b68186ab03a4780fa795b97682ca5415c4022e56e8a36db1b49b2", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17549,10 +17651,10 @@ { "source": "docs/document/advanced/global.html", "route": "/document/advanced/global.html", - "sha256Lf": "3733acaca58c75e9d8aad4b9d506f765d6b50f7e31b2043632b9f1fed52f0c06", + "sha256Lf": "1003ceb4ee253f71e0da816a4bded4fef25b4cab690c77273b2dd5b4ec459943", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17562,10 +17664,10 @@ { "source": "docs/document/advanced/plugin.html", "route": "/document/advanced/plugin.html", - "sha256Lf": "836a34aab7f2648d9ac021e7c262ba45ed61b4a526322532ff92609cb81bf5d5", + "sha256Lf": "68792c9def7906427a8e47f682d1f2f55ee96e420531428622a4339a7ca18e0f", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17575,10 +17677,10 @@ { "source": "docs/document/advanced/property.html", "route": "/document/advanced/property.html", - "sha256Lf": "39c16129fd8fffeea83dcc35d4fb91f2b9707c8a370be310017be3931c89eb50", + "sha256Lf": "0b15099f0a6c754cb05e2b5173b491960cb9e8b0b61e5c2de47589dc27d871b3", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17588,10 +17690,10 @@ { "source": "docs/document/component/contextmenu.html", "route": "/document/component/contextmenu.html", - "sha256Lf": "6c4da715916004ab72d6ad9cd1b3d16c58cc3c16b433103bdd77c32afbb19af9", + "sha256Lf": "e6fe13021fe8e092e0c6588322c2f647bc16fff9b3f890b01398104f519cc8ce", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17601,10 +17703,10 @@ { "source": "docs/document/component/controls.html", "route": "/document/component/controls.html", - "sha256Lf": "2df485cc46bb0bf30aab32ba21707e16403eadffd1c67f05e32f1b1662774c28", + "sha256Lf": "00134da8fcd9f14c21d0f3bc6dd1fe4a0e44f146c57d63a6db4255d0365007c6", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17614,10 +17716,10 @@ { "source": "docs/document/component/layers.html", "route": "/document/component/layers.html", - "sha256Lf": "0455e8a65e52d91c4b570cb0a7a6f28327c935a5c041167ba2058cb94b892a00", + "sha256Lf": "9b5c25d8d9faa9a3a35815a1606ffea4a1ab127f12214ba2b5f3caac9eac2428", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17627,10 +17729,10 @@ { "source": "docs/document/component/setting.html", "route": "/document/component/setting.html", - "sha256Lf": "4da033bf086aa86424a459c626f3768d17116a7c995bb13f2c0d5a929877147d", + "sha256Lf": "eaa3c6e752df873f6839888c5c6a163a91142697939954af61ee6526f9aab50f", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17640,10 +17742,10 @@ { "source": "docs/document/en/advanced/built-in.html", "route": "/document/en/advanced/built-in.html", - "sha256Lf": "2ff6ed01ad01fe332dd01a202db0064b2d194cf975dcdd4b7f3287f6653feed1", + "sha256Lf": "5fc6b3db2706c3214f2e540cc5ebc46f87abbbbf9cd7770b5fe7f8ec0cdfd67b", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17653,10 +17755,10 @@ { "source": "docs/document/en/advanced/class.html", "route": "/document/en/advanced/class.html", - "sha256Lf": "fb7606e487d485d5db02982d3b02cefb38bdf9ccc144a10b06beb1adf3c4ac09", + "sha256Lf": "ae3117b42d654f5c14d62923c7fe7198eae616895dd19885391265d5f11349fb", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17666,10 +17768,10 @@ { "source": "docs/document/en/advanced/event.html", "route": "/document/en/advanced/event.html", - "sha256Lf": "04440e121d4427951e561a7759daae3928ac6d50c58ce8bca4c81d41591bb9ad", + "sha256Lf": "4514bf9c007728a1b9b0ec70a7c2a558754fcfafdb879901b1410fd5bc2d5b5b", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17679,10 +17781,10 @@ { "source": "docs/document/en/advanced/global.html", "route": "/document/en/advanced/global.html", - "sha256Lf": "229287d5d83f834984c4877b23a9c934bcfe144e0c2ca4d3379da6020a927f52", + "sha256Lf": "edeb817d22b3726d8acfb3c23dd08b9aeeb64db0d8433a691f0087e05cf7b885", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17692,10 +17794,10 @@ { "source": "docs/document/en/advanced/plugin.html", "route": "/document/en/advanced/plugin.html", - "sha256Lf": "82336d21ca5d5e291b0cfb59e1e0cf4d8cdf1475ddc5d924c15f2fbcbccf4e29", + "sha256Lf": "056784cf908fd500cf3404178916a9f104ccfa398ca2252513a6b630d813fdd0", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17705,10 +17807,10 @@ { "source": "docs/document/en/advanced/property.html", "route": "/document/en/advanced/property.html", - "sha256Lf": "bfa5ea6f6b2da43af736138ee73316b9eb2a430d1ea152795ff726d4b65752de", + "sha256Lf": "5fb1b32907c402c28d41d137e94867bc78e21fc386004be0c91b76b4ed7a78d0", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17718,10 +17820,10 @@ { "source": "docs/document/en/component/contextmenu.html", "route": "/document/en/component/contextmenu.html", - "sha256Lf": "318bfa1cc6124341c31eca2a3d305b56be15447312235e274bcac7d8f4dbbb22", + "sha256Lf": "5d627e52eaa6eb5e23a4e457413075da44891d86ceeca5bfc7abf82323cc565f", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17731,10 +17833,10 @@ { "source": "docs/document/en/component/controls.html", "route": "/document/en/component/controls.html", - "sha256Lf": "901fdae7862dd45c79992e60d81b6c65afe8dd6e8c8b3acb1352fcaa56a5bd10", + "sha256Lf": "51d1d91c55ab2037dc5369f01671268147bc378f234f28d37431dd3ea10619c4", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17744,10 +17846,10 @@ { "source": "docs/document/en/component/layers.html", "route": "/document/en/component/layers.html", - "sha256Lf": "3ab5d4f80f5a7d5edd85683e5a606ab0a40810d464df69c9b0d61c55e5a36c6f", + "sha256Lf": "db32aa21944b2fede614cb334e10e851be477db41e15d2f278984aaf78d811bb", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17757,10 +17859,10 @@ { "source": "docs/document/en/component/setting.html", "route": "/document/en/component/setting.html", - "sha256Lf": "c142bc66446fd44dafb7c2de72ca8f7a16c1942a8801f94b69f84a4ab27a1e48", + "sha256Lf": "f93d37f4e55b63b9104db19d23036fd85834ed4912f096d37424c29cf46307ad", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17770,10 +17872,23 @@ { "source": "docs/document/en/index.html", "route": "/document/en/", - "sha256Lf": "0fbd6f191738454a17aee0237e838c09b06f8695aa926fad9e131c1705814d41", + "sha256Lf": "87c123295fda463867a49c51100efe6f7cceba3c782f5b382ac74ab84d6e1f30", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", + "/document/main.js", + "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" + ], + "status": "not-run", + "owner": "EX-03" + }, + { + "source": "docs/document/en/plugin/danmuku.html", + "route": "/document/en/plugin/danmuku.html", + "sha256Lf": "86621ce3fb3405c95218723fd6cbbc2cf5a6d891fb3ddb6b84c59b6b3c89e87b", + "kind": "generated-docs", + "scriptSources": [ + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17783,10 +17898,10 @@ { "source": "docs/document/en/start/i18n.html", "route": "/document/en/start/i18n.html", - "sha256Lf": "06d5dd102dbbafe05ca8d8cc5d968cb88fbe3b0933c7e18ca3b0cbb0f816760c", + "sha256Lf": "992222ce0409b150179d6a0550af3c9246d788b8f12f77f2bdb2037492657fcc", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17796,10 +17911,10 @@ { "source": "docs/document/en/start/option.html", "route": "/document/en/start/option.html", - "sha256Lf": "7120aa0145aeb484115e59a55c048584dc0e50376b8b7e6feadb6fad662d6e80", + "sha256Lf": "0ffd030e774f314402529cf4c091b13d73d0530e0a8fb9772285cb39622ef9ec", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17809,10 +17924,10 @@ { "source": "docs/document/index.html", "route": "/document/", - "sha256Lf": "c86b90d96e4aa9ece0f7f3e8e0f3cdffb2adb4e7c4bcf5655d1843fefa7cb319", + "sha256Lf": "d538b202da9fa5543c5e54e5fb76907e133a0d33edf273f3eb360cb0a2623160", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17822,10 +17937,10 @@ { "source": "docs/document/plugin/danmuku.html", "route": "/document/plugin/danmuku.html", - "sha256Lf": "e7dde20704a5bc55bc064831e80ce1bfc6dc4525a497fd9bf57dd67166b3c82f", + "sha256Lf": "bbcdebc4df8b3feb86b46d565f731a72c02bf367ec00c8e893b9745693bf5db1", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17835,10 +17950,10 @@ { "source": "docs/document/start/i18n.html", "route": "/document/start/i18n.html", - "sha256Lf": "6e43e29b3fbb0f1cb160a096d154380438034b769ee62251111e746b53324571", + "sha256Lf": "f40445700bc315b34b0d51a876d906954a302691259f66efcf3aa237f3791297", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17848,10 +17963,10 @@ { "source": "docs/document/start/option.html", "route": "/document/start/option.html", - "sha256Lf": "0687d12ed7f615d232fb80bf1b342eeb4641088111a4b3fef92275b50ca590a1", + "sha256Lf": "9b8d61e7546ee088785c29dbf85b2f37f62e90d7b97d58ac9c934fccba46dd0f", "kind": "generated-docs", "scriptSources": [ - "/document/assets/app.BfyKMyXg.js", + "/document/assets/app.CUpGwB5x.js", "/document/main.js", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8579453810848662" ], @@ -17981,7 +18096,9 @@ "docs/assets/example/asr.local.js" ], "examplesRemoved": [], - "htmlAdded": [], + "htmlAdded": [ + "docs/document/en/plugin/danmuku.html" + ], "htmlRemoved": [] }, "editorDeclarations": [ @@ -18135,11 +18252,11 @@ }, { "file": "scripts/projects.js", - "sha256Lf": "a88d5da78a0d50c4ac92a37ea5594a833b169a51d45b5442d3af4d97ffa16965" + "sha256Lf": "3956faff0032ab5b91daa45f390a664ca246559621f95fd2f53cef8bb8b58bdf" }, { "file": "docs/assets/js/common.js", - "sha256Lf": "4ccfc0bba7093a45621e2fe0c9b48cb6da0e6101a2b87a5a0f8785611d2d98fc" + "sha256Lf": "63877e6800bcd9de557ac3f785500aa173bca856e6fc99ee1005810e59806c93" }, { "file": "docs/assets/js/mobile.js", @@ -18147,7 +18264,7 @@ }, { "file": "packages/artplayer-vitepress/docs/public/main.js", - "sha256Lf": "b8c9b9334abc800e12fd2b8154d89f04c580adf0a155718f2ed44e85f7fd44d7" + "sha256Lf": "44b388d74b23e241b534498f53b615dbf2e91be077336ed31971aa09e65a8fd4" }, { "file": "packages/artplayer-vitepress/docs/vite.config.ts", @@ -18155,7 +18272,7 @@ }, { "file": "packages/artplayer-vitepress/docs/.vitepress/config.js", - "sha256Lf": "6b43f16ad2f74dcab0e4d3b3426f36118621a7daa04a1b9547aac9c910ed4462" + "sha256Lf": "2363e83274e7f1cb0af335fb10a2933a65fd9eadd30a15facc844f83ef9a46a5" }, { "file": "scripts/build-site-assets.mjs", @@ -18175,7 +18292,7 @@ }, { "file": "scripts/editor-declarations/core.ts", - "sha256Lf": "0cda0fe093299099c62ae907a6f517f1cb5c49be9085d4c8fb20aed6579a0058" + "sha256Lf": "a5526f52c74746403aac06b47fe71ab8ea4e87f652a62abf29313dbcc2823353" }, { "file": "scripts/editor-declarations/dependencies.ts", @@ -18187,7 +18304,7 @@ }, { "file": "scripts/editor-declarations/plugin.ts", - "sha256Lf": "02dd90a19b75235ac6080aa2088114f3ae51c45567789c7daf2653be63ceee7d" + "sha256Lf": "5678bd5fe5d23669c734463196e2f96eaa75d891b713002e60819196e1e6dfbe" }, { "file": "scripts/editor-declarations/syntax.ts", @@ -18251,7 +18368,7 @@ }, { "file": "packages/artplayer-vitepress/browser/editor-host.ts", - "sha256Lf": "05673be0ca9aea7d890aa4cd84ab372b7d34407bd8ab674f2c0f619996586f03" + "sha256Lf": "4c8f657850f670528f513789dfcf798db10b6e6b0f0335ed4fbd822a09799b8a" }, { "file": "packages/artplayer-vitepress/browser/editor-libraries.ts", @@ -18275,7 +18392,7 @@ }, { "file": "packages/artplayer-vitepress/browser/editor.ts", - "sha256Lf": "e27f46bb84abc363a36a3239018168d7ec8d22fe8690cf835a2c354ce54443bd" + "sha256Lf": "132f6e12333aac3b54e4eea9f54469a26a9e676ea688034168c3a1ef134ba668" }, { "file": "packages/artplayer-vitepress/browser/loader.ts", @@ -18297,7 +18414,7 @@ "build:i18n": "node ./scripts/build-i18n.js", "build:test": "node ./scripts/build-test.js", "build:all": "yarn ci:build && yarn lint", - "ci:build": "yarn build:types && yarn build all && yarn build:i18n && yarn build:ts && yarn build:llm && yarn build:test && yarn build:docs && yarn test:imports", + "ci:build": "yarn build:types && yarn build all && yarn build:i18n && yarn build:ts && yarn build:llm && yarn build:vconsole && yarn build:console && yarn build:site-notices && yarn build:test && yarn build:docs && yarn test:imports", "build:types": "node scripts/build-types.mjs --write" }, "siteManifest": { @@ -19330,13 +19447,13 @@ }, { "file": "docs/assets/js/vconsole.min.js", - "bytes": 282381, - "sha256": "671f47427e1e3048919147c765e9fb71e4ea40d79a8c2829089f499d3e9b9bf4" + "bytes": 283667, + "sha256": "3d1b8c3aff5f415ccf3bdc3cdcec6e01cff5b4c64d4558c078ca33d003f616ac" }, { "file": "docs/assets/js/console.js", - "bytes": 340306, - "sha256": "e00bbf82bf08c452825690372ded39a9b60f4baf438f0e7ce8300e9bc4629c03" + "bytes": 340552, + "sha256": "a5f1388175fd885c03dd21b35fff97dca0b548745588dfca3172579a96537163" } ] } diff --git a/refactor/changes/2026-09-15-SITE-DANMUKU-01-guides.md b/refactor/changes/2026-09-15-SITE-DANMUKU-01-guides.md new file mode 100644 index 000000000..a9f3be1e4 --- /dev/null +++ b/refactor/changes/2026-09-15-SITE-DANMUKU-01-guides.md @@ -0,0 +1,78 @@ +# SITE-DANMUKU-01 弹幕双语使用指南 + +来源 HEAD:`520727d762d958bbc0378a04426bd885789d655b`。 +从 SITE-04 拆出不依赖 Thumbnail 历史决策的 Danmuku 文档核对,依赖已完成的 +SITE-03 和 PKG-DANMUKU-07。SITE-04 保留全部旧依赖并新增本任务;完整插件组合、 +物理设备、全站搜索和发布复盘没有改为完成。 + +## 用户文档与准确边界 + +新增英文独立页和侧栏入口,中文原路径与 19 个已有标题 ID 全部保留。 +中英文都覆盖配置、输入、回调、方法、状态、外部挂载、事件、热力图和类型入口。 +不是把旧文字直接翻译:逐项核对 src/index.ts、danmuku.ts、config.ts、input.ts、 +setting-send.ts、setting.ts、scheduler.ts、heatmap.ts、heatmap-geometry.ts 及 runtime-shared.d.ts。 + +修正或补齐的具体事实: + +- time 缺省为 currentTime + 0.5 秒,显式 0 保留;单项颜色继承配置。 +- 工厂要求配置对象,但运行时字段均可省略;根历史声明仍要求 danmuku。 +- emit/load 返回 Promise,完成后是内部 owner;config/hide/show/reset 同步返回同一 owner。 + owner 与 art.plugins 上的注册对象不同;入队完成不等于已显示。 +- 无参数 load 替换配置输入,带参数追加;config 不自动重载,输入读取失败与逐项过滤失败 + 的边界不同,不承诺整批原子回滚。取消加载的 Promise 仍正常结束,不发迟到事件。 +- beforeEmit 仅用于输入框且严格 true 才发送;filter 同步,不能用 Promise 做异步过滤。 + beforeVisible 可异步,错误恢复与取消边界单独说明;三个回调的 receiver 与输入函数不同。 +- reset 不删除队列;isStop 与 isHide 不同;mount 要求有效目标,外部容器由应用清理。 +- heatmap 在初始化启用,points 配置不自动绘图;points 事件默认 x 为像素,内层数组会修改。 + resize/load 恢复自动曲线;示例重新计算像素坐标并创建新数组。记录 issue #958 修复的范围。 +- root/legacy 继续保留 npm 5.3.0 声明,准确 /runtime 入口尚未发布;页面明确区分当前分支与 CDN。 + +中文保留现有 13 个 Run Code 并补充热力图;修正 mount 示例误用播放器自身容器,增加外部 +容器清理和公开异步命令的 catch。visible 示例用 textContent 写文本。英文有 4 个 runnable +示例及经过编译的类型示例。包源码、根历史声明、版本、依赖和锁文件均未改动。 + +## 生成与维护 + +源码在 packages/artplayer-vitepress/docs/;通过 build:site-assets、build:llm、build:docs +更新导航路由、LLM 语料和实际 VitePress 站点,没有手工修改生成输出。 +LLM 重建还同步了此前已提交但尚未进入语料的三个输入:VAST 编辑器声明 +(e5c73fa62)、核心编辑器声明(7cf6f3313)、Canvas 示例(c3967bcbf)。逐字核对 +这三份输入与任务开始 HEAD 相同,本任务未编辑它们;生成物减少的旧声明文本是 +按当前已提交输入刷新,不是本次删除公开声明或另行完成插件任务。 +site-inventory 从 27 页更新为 28 页(中英各 14),HTML 从 36 到 37。 +build:test/check:docs-smoke 也执行通过,但其生成器排除所有 plugin/en 页面,因此输出不变; +新 document-danmuku.spec.js 直接复用现有解析器和 readiness runner,专门执行双语弹幕示例。 +站点 README 与浏览器 README 写清维护入口、命令和验证边界。 + +## 实际验证与失败记录 + +Windows / Node 24.21.0 / Yarn Classic 1.22.22。 + +- VitePress 真实构建通过,28 页清单和生成文件漂移检查通过。 +- 两份文档的原样 TS 片段分别使用 TS 5.9.3、strict、NodeNext、types: []、skipLibCheck: false + 编译,均零诊断。静态检查双语页面所有 /document/ 本地链接和中文原有 19 个标题 ID。 +- 站点构建测试 7 项、导航和文档流程测试 17 项通过;定向 lint 通过。 +- 三引擎浏览器最终 60 通过、0 跳过、0 重试:18 个示例 × 3 的真实样本 readiness/清理, + 加上双语导航和 Run Code × 3。本轮没有执行全部控件交互或声称完整播放/设备验收。 + +保留首轮问题,不计作播放器缺陷:lint 首轮 1 项 import 排序错误已修正;调用构建测试时, +直接 node 和 yarn node 都不提供脚本需要的 npm_execpath,改用既有 yarn test:site-build 后通过。 +浏览器首轮 54 通过、6 失败:Vue 客户端导航把 className 变成 class,旧测试选择器只查前者, +站点原处理器已支持两者。测试改用两种选择器后全部通过,没有修改产品 handler。 +一次性静态核对也遇到 linkedom 属性大小写差异;改为读取实际属性名后检查成立。 +最后清理中文行尾空格并重新构建,两个页面 HTML 哈希与通过浏览器的版本相同。 +暂存源码 diff --check 通过;新英文 HTML 中 VitePress 模板生成的两行空白带有缩进, +完整 diff --check 会报告它们。保留生成器原始输出,没有手工清理生成 HTML。 + +命令:`yarn test:browser document-site.spec.js document-danmuku.spec.js --workers=1`、 +`yarn test:site-build`、`node --test test/site-loading.test.js test/documentation-pipeline.test.js`、 +`yarn check:site-assets`、`yarn check:llm`、`yarn check:docs-smoke`、 +`node refactor/scripts/site-inventory.mjs --check`。 +具体文件/片段/浏览器版本指纹、首轮与最终计数见 +[机器证据](../baselines/danmuku-docs-validation.json)。 + +## 回退和剩余工作 + +独立回退本提交会移除英文指南与导航,恢复中文指南和对应生成站点、语料、清单与测试。 +不改变播放器运行时。SITE-04 全包双语审查、SITE-05 搜索/全站验收、EX-03 完整示例和 +PKG-DANMUKU-08 组合验收仍未完成。没有推送、部署或 npm 发布。 diff --git a/refactor/plan.md b/refactor/plan.md index cb7bda346..3d5ea9a2e 100644 --- a/refactor/plan.md +++ b/refactor/plan.md @@ -2,9 +2,9 @@ > 由 tasks.json 生成。请修改数据后运行 `node refactor/scripts/plan.mjs --write`,不要手改本表。 -基线:`40fcda6a37d0049d42e49c1e64e70d4fd9ba5f7f`。总任务 270 项,范围 22 个包及工作区/示例。 +基线:`40fcda6a37d0049d42e49c1e64e70d4fd9ba5f7f`。总任务 271 项,范围 22 个包及工作区/示例。 -状态:todo 43 / doing 21 / blocked 0 / done 206 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。 +状态:todo 43 / doing 21 / blocked 0 / done 207 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。 前置依赖是启动条件;验收是完成条件。任务可以继续拆分,但不能复用或悄悄删除旧 ID。 @@ -22,7 +22,7 @@ | artplayer-plugin-auto-thumbnail | 1.1.0 | PKG-AUTO-THUMB-01, PKG-AUTO-THUMB-02, PKG-AUTO-THUMB-03, PKG-AUTO-THUMB-04, PKG-AUTO-THUMB-05, PKG-AUTO-THUMB-06, PKG-AUTO-THUMB-07, PKG-AUTO-THUMB-08, PKG-AUTO-THUMB-09, PKG-AUTO-THUMB-10, PKG-AUTO-THUMB-11, PKG-AUTO-THUMB-12 | | artplayer-plugin-chapter | 1.1.0 | PILOT-01, PKG-CHAPTER-01, PKG-CHAPTER-02, PKG-CHAPTER-03, PKG-CHAPTER-04, PKG-CHAPTER-05, PKG-CHAPTER-06, PKG-CHAPTER-HOVER-01 | | artplayer-plugin-chromecast | 1.1.0 | PKG-CAST-01, PKG-CAST-02, PKG-CAST-03, PKG-CAST-04, PKG-CAST-05, PKG-CAST-06 | -| artplayer-plugin-danmuku | 5.3.0 | PKG-DANMUKU-01, PKG-DANMUKU-02, PKG-DANMUKU-03, PKG-DANMUKU-04, PKG-DANMUKU-05, PKG-DANMUKU-06, PKG-DANMUKU-07, PKG-DANMUKU-08, PKG-DANMUKU-09, PKG-DANMUKU-10, PKG-DANMUKU-11, PKG-DANMUKU-12, PKG-DANMUKU-MASK-LOAD-01 | +| artplayer-plugin-danmuku | 5.3.0 | PKG-DANMUKU-01, PKG-DANMUKU-02, PKG-DANMUKU-03, PKG-DANMUKU-04, PKG-DANMUKU-05, PKG-DANMUKU-06, PKG-DANMUKU-07, PKG-DANMUKU-08, PKG-DANMUKU-09, SITE-DANMUKU-01, PKG-DANMUKU-10, PKG-DANMUKU-11, PKG-DANMUKU-12, PKG-DANMUKU-MASK-LOAD-01 | | artplayer-plugin-danmuku-mask | 1.1.0 | PKG-MASK-01, PKG-MASK-02, PKG-MASK-03, PKG-MASK-04, PKG-MASK-05, PKG-MASK-06, ENG-LINT-01, PKG-DANMUKU-MASK-LOAD-01 | | artplayer-plugin-dash-control | 1.1.0 | PKG-DASH-01, PKG-DASH-02, PKG-DASH-03, PKG-DASH-04, PKG-DASH-SEEK-01, PKG-DASH-MENU-01, PKG-DASH-05, PKG-DASH-06, PKG-DASH-CLEANUP-01 | | artplayer-plugin-document-pip | 1.1.0 | PKG-DPIP-01, PKG-DPIP-02, PKG-DPIP-03, PKG-DPIP-04, PKG-DPIP-05, PKG-DPIP-06 | @@ -35,7 +35,7 @@ | artplayer-proxy-mediabunny | 1.2.0 | PKG-MB-01, PKG-MB-02, PKG-MB-03, PKG-MB-04, PKG-MB-05, PKG-MB-06, PKG-MB-07, PKG-MB-08, PKG-MB-09, PKG-MB-10 | | artplayer-tool-iframe | 1.1.0 | PKG-IFRAME-01, PKG-IFRAME-02, PKG-IFRAME-03, PKG-IFRAME-04, PKG-IFRAME-05, PKG-IFRAME-06 | | artplayer-tool-thumbnail | 4.4.0 | PKG-TOOL-THUMB-01, PKG-TOOL-THUMB-02, PKG-TOOL-THUMB-03, PKG-TOOL-THUMB-04, PKG-TOOL-THUMB-05, PKG-TOOL-THUMB-06, PKG-TOOL-THUMB-07 | -| artplayer-vitepress | 1.1.0 | SITE-01, SITE-SMOKE-01, SITE-02, SITE-LOAD-01, SITE-AI-DOCS-01, SITE-BUILD-01, SITE-03, SITE-04, SITE-05, SITE-06, SITE-07, SITE-VCONSOLE-01, ENG-LINT-02, SITE-CONSOLE-01 | +| artplayer-vitepress | 1.1.0 | SITE-01, SITE-SMOKE-01, SITE-02, SITE-LOAD-01, SITE-AI-DOCS-01, SITE-BUILD-01, SITE-03, SITE-DANMUKU-01, SITE-04, SITE-05, SITE-06, SITE-07, SITE-VCONSOLE-01, ENG-LINT-02, SITE-CONSOLE-01 | ## 0 规划 @@ -407,7 +407,8 @@ | SITE-AI-DOCS-01 | artplayer-vitepress, workspace
重构可复现 LLM 文档与安全翻译草稿流程 | SITE-LOAD-01, SITE-02 | TS 离线文档聚合、显式远程翻译、草稿校验和可回退应用,保留命令与目标路径 | 默认不读密钥/调用网络;LLM 内容可复现并保留来源;旧翻译破坏性行为有复现;错误/限流/超时/结构损坏/过期/路径越界拒绝且英文文档不丢失;未执行付费翻译不计服务验收 | M | done | | SITE-BUILD-01 | artplayer, artplayer-vitepress, workspace
重构 i18n 与文档构建的暂存、替换和 Yarn 编排 | SITE-AI-DOCS-01 | 严格 TS 构建模块、编译后替换产物与失败回退,固定 Yarn 子进程和旧构建入口 | 旧 i18n 删除后失败有复现;失败不改变既有产物;语言集合、UMD/ESM/历史别名兼容;文档子进程退出码准确并完成真实 VitePress 构建;不隐式翻译、不修改播放器 API | M | done | | SITE-03 | artplayer-vitepress
整理 i18n/文档/LLM 生成流程 | SITE-02, SITE-LOAD-01, SITE-AI-DOCS-01, SITE-BUILD-01 | build-i18n/build-docs/build-llm/trans-docs 的任务边界和错误处理;桌面 common.js 自有 UI 的 TS 迁移与模块拆分 | 原命令兼容、生成可复现,翻译步骤不隐式运行远程服务;覆盖移动 loader 失败恢复 define、脚本依赖顺序、localhost/127.0.0.1 Run Code 目标和语言重定向;桌面剩余 UI 完成 TS 职责拆分并回归运行、导入与持久设置 | M | done | -| SITE-04 | artplayer-vitepress
交叉核对逐包持续维护的文档 | CORE-21, SITE-03, PKG-CHAPTER-04, PKG-AMBILIGHT-04, PKG-AUDIO-04, PKG-AUTO-THUMB-04, PKG-VTT-THUMB-04, PKG-HLS-04, PKG-DASH-04, PKG-MULTI-SUB-04, PKG-JASSUB-04, PKG-MASK-04, PKG-ASR-04, PKG-ADS-04, PKG-VAST-04, PKG-CAST-04, PKG-DPIP-04, PKG-CANVAS-04, PKG-IFRAME-04, PKG-TOOL-THUMB-04, PKG-DANMUKU-06, PKG-MB-08 | 已随实现更新的中文/英文 API、包内实现地图、旧 JS 示例及已知能力限制的全包核对 | 未把缺环境的能力写成已验证,静态核对不等待设备任务;最终 demo 仍由 EX-03 验收;按 SITE-01 声明成员/候选标题清单逐项语义核对,补齐缺失的双语插件说明和 Danmuku 英文入口 | M | todo | +| SITE-DANMUKU-01 | artplayer-vitepress, artplayer-plugin-danmuku
核对弹幕双语指南并补齐英文入口 | SITE-03, PKG-DANMUKU-07 | 按实现修正中文调用说明,新增英文完整选项/API/热力图/类型指南和导航;同步生成站点与LLM资料,新增双语示例浏览器验收 | 旧中文URL和标题保留;实际方法返回、加载语义、回调与points边界准确;双语页面、Run Code及示例实测,完整插件组合和设备验收不冒充完成 | L | done | +| SITE-04 | artplayer-vitepress
交叉核对逐包持续维护的文档 | CORE-21, SITE-03, PKG-CHAPTER-04, PKG-AMBILIGHT-04, PKG-AUDIO-04, PKG-AUTO-THUMB-04, PKG-VTT-THUMB-04, PKG-HLS-04, PKG-DASH-04, PKG-MULTI-SUB-04, PKG-JASSUB-04, PKG-MASK-04, PKG-ASR-04, PKG-ADS-04, PKG-VAST-04, PKG-CAST-04, PKG-DPIP-04, PKG-CANVAS-04, PKG-IFRAME-04, PKG-TOOL-THUMB-04, PKG-DANMUKU-06, PKG-MB-08, SITE-DANMUKU-01 | 已随实现更新的中文/英文 API、包内实现地图、旧 JS 示例及已知能力限制的全包核对 | 未把缺环境的能力写成已验证,静态核对不等待设备任务;最终 demo 仍由 EX-03 验收;按 SITE-01 声明成员/候选标题清单逐项语义核对,补齐缺失的双语插件说明和 Danmuku 英文入口 | M | todo | | SITE-05 | artplayer-vitepress
构建文档站和验证链接/示例 | SITE-04, EX-01, EX-02, SITE-07, SITE-VCONSOLE-01, SITE-CONSOLE-01 | VitePress 构建、链接与嵌入 demo 检查 | 文档构建、链接、嵌入路径与声明注入通过;真实完整 demo 保留 EX-03 独立门槛;核对 ENG-PM-01 登记的搜索 peer 范围和真实搜索行为 | M | todo | | SITE-06 | artplayer-vitepress
文档站交付验收 | SITE-05 | 维护指南和站点变更记录 | 未手改 generated 目录,旧 URL 可用、部署与检查分离 | M | todo | | SITE-07 | artplayer-vitepress, workspace
整理站点第三方资产与来源说明 | SITE-01 | Monaco/vConsole/console bundle/字体和样本的冻结来源、可复现构建或替代与站点 notices | 接续 SITE-01 的字节与换行差异证据;完整许可随实际分发,consoleLog/global/CSS/worker 与旧 URL 兼容;缺字体/媒体使用依据明确处置;资产变更后执行编辑器/移动/字幕/示例回归,不以来源指纹替代授权或运行证据 | H | doing | @@ -659,6 +660,7 @@ - SITE-AI-DOCS-01: [记录](changes/2026-09-14-SITE-AI-DOCS-01-documentation-pipeline.md) [记录](baselines/documentation-pipeline-validation.json) - SITE-BUILD-01: [记录](changes/2026-09-14-SITE-BUILD-01-staged-builds.md) [记录](baselines/site-build-validation.json) - SITE-03: [记录](changes/2026-09-14-SITE-03-desktop-editor.md) [记录](baselines/site-editor-validation.json) +- SITE-DANMUKU-01: [记录](changes/2026-09-15-SITE-DANMUKU-01-guides.md) [记录](baselines/danmuku-docs-validation.json) - SITE-07: [记录](site-inventory.md) [记录](baselines/site-provenance.json) [记录](changes/2026-09-14-SITE-07-vendor-notices.md) [记录](baselines/site-notices-checkpoint.json) [记录](baselines/site-codicons-provenance.json) [记录](baselines/site-codicons-validation.json) [记录](changes/2026-09-15-SITE-07-codicons.md) [记录](baselines/vconsole-notices-provenance.json) [记录](baselines/vconsole-notices-validation.json) [记录](changes/2026-09-15-SITE-07-vconsole-notices.md) [记录](console-modernization.md) [记录](baselines/site-console-inventory.json) [记录](baselines/site-console-validation.json) [记录](changes/2026-09-15-SITE-07-console-baseline.md) [记录](baselines/console-feed-provenance.json) [记录](changes/2026-09-15-SITE-07-console-feed-source.md) [记录](baselines/console-commonjs-provenance.json) [记录](changes/2026-09-15-SITE-07-console-commonjs.md) [记录](baselines/console-esm-provenance.json) [记录](changes/2026-09-15-SITE-07-console-esm.md) [记录](baselines/console-embedded-notices.json) [记录](baselines/console-notices-validation.json) [记录](changes/2026-09-15-SITE-07-console-notices.md) [记录](baselines/console-embedded-sources.json) [记录](baselines/console-embedded-validation.json) [记录](changes/2026-09-15-SITE-07-console-embedded-sources.md) [记录](baselines/console-derived-attribution.json) [记录](baselines/console-derived-validation.json) [记录](changes/2026-09-15-SITE-07-console-derived-attribution.md) [记录](baselines/console-stackoverflow-provenance.json) [记录](baselines/console-stackoverflow-validation.json) [记录](changes/2026-09-15-SITE-07-console-stackoverflow.md) [记录](baselines/console-shallowequal-validation.json) [记录](changes/2026-09-15-SITE-07-console-shallowequal.md) [记录](console-notice-review.md) [记录](baselines/console-notice-review-validation.json) [记录](changes/2026-09-15-SITE-07-console-notice-review.md) [记录](baselines/monaco-typescript-provenance.json) [记录](baselines/monaco-typescript-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-typescript.md) [记录](baselines/monaco-languages-provenance.json) [记录](baselines/monaco-languages-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-languages.md) [记录](baselines/monaco-language-notices.json) [记录](baselines/monaco-language-notices-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-language-notices.md) [记录](baselines/monaco-modes-provenance.json) [记录](baselines/monaco-modes-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-modes.md) [记录](baselines/monaco-basic-provenance.json) [记录](baselines/monaco-basic-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-basic.md) [记录](baselines/monaco-core-origins-provenance.json) [记录](baselines/monaco-core-origins-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-core-origins.md) [记录](baselines/monaco-core-build-provenance.json) [记录](baselines/monaco-core-build-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-core-build.md) [记录](baselines/monaco-contributions-provenance.json) [记录](baselines/monaco-contributions-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-contributions.md) [记录](baselines/monaco-css-build-provenance.json) [记录](baselines/monaco-css-build-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-css.md) [记录](baselines/monaco-node-path-provenance.json) [记录](baselines/monaco-node-path-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-node-path.md) [记录](changes/2026-09-15-SITE-07-monaco-dom.md) [记录](baselines/monaco-dom-origins-validation.json) [记录](changes/2026-09-15-SITE-07-monaco-unicode.md) [记录](baselines/monaco-unicode-provenance.json) [记录](baselines/monaco-unicode-validation.json) - EX-01: [记录](changes/2026-09-14-EX-01-react-consumer.md) [记录](baselines/react-consumer-validation.json) [记录](scripts/react-consumer.mjs) - EX-02: [记录](changes/2026-09-14-EX-02-vue-consumer.md) [记录](baselines/vue-consumer-validation.json) [记录](scripts/vue-consumer.mjs) diff --git a/refactor/progress.md b/refactor/progress.md index 69076e455..6373fd743 100644 --- a/refactor/progress.md +++ b/refactor/progress.md @@ -1,5 +1,21 @@ # 进度与证据 +## SITE-DANMUKU-01 双语指南和示例验证 + +新增 Danmuku 英文指南/侧栏,按源码修正中文 Promise/owner、加载、回调、mount、 +reset、heatmap/points 与旧类型说明,保留旧中文路径和19个标题ID。明确 /runtime 与 +本轮修复尚未发布;CDN仍加载旧版本。站点现为28页,中英各14页。 + +两个TS片段strict NodeNext零诊断,站点工具7+17项通过;三引擎60项通过无跳过, +覆盖18个示例的真实样本ready/清理及双语导航/Run Code,不代表完整播放和设备验收。 +首轮54通过6失败来自Vue导航后的测试选择器,修正后全部通过,保留失败证据。 +生成站点、LLM、浏览器路由与清单同步;插件运行时/历史类型/依赖/版本不变。 +详见[记录](changes/2026-09-15-SITE-DANMUKU-01-guides.md)与[证据](baselines/danmuku-docs-validation.json)。 + +SITE-04保留原依赖,其他包双语与最终验收继续未完成;207 done、21 doing、43 todo, +共271项。没有推送、部署或发布。 + + ## CI-NPM-01 精确候选的本地交付准备 新增严格 TS 准备模块和 yarn release:bundle:干净 Git 状态、两次完整准入读取、 diff --git a/refactor/site-inventory.md b/refactor/site-inventory.md index 0351e4bf5..d0319304a 100644 --- a/refactor/site-inventory.md +++ b/refactor/site-inventory.md @@ -50,14 +50,15 @@ SITE-AI-DOCS-01/SITE-BUILD-01 已落实生成、翻译草稿和暂存构建;SI SITE-01 在 `d62ab13a35c756ea567c426d4fbe00d893dd7e2b` 后核对当前源码。 可重跑清单见 [site-inventory.json](baselines/site-inventory.json);它登记 -22 包、27 Markdown、30 示例、36 HTML、963 条声明成员和 204 个资产指纹。 +初始 22 包、27 Markdown、30 示例、36 HTML、963 条声明成员和 204 个资产指纹。 +SITE-DANMUKU-01 增加英文指南后,当前清单为 28 Markdown、37 HTML,其余数量不变。 成员统计包括继承接口、重载和 runtime 声明,不能当作 963 个不同公开 API。 标题匹配只是人工核对的候选位置;所有成员均明确交由 SITE-04 检查语义和中英文说明。 ## 页面与内容责任 -- 中文 14 页、英文 13 页;核心安装、选项、i18n、四类组件、六类高级说明有对应页面。 -- Danmuku 有中文独立页,缺英文页;其余 15 插件使用包 README 和编辑器链接,缺独立双语指南。 +- 当前中文 14 页、英文 14 页;核心安装、选项、i18n、四类组件、六类高级说明有对应页面。 +- Danmuku 已补齐双语独立页和导航(SITE-DANMUKU-01);其余 15 插件使用包 README 和编辑器链接,仍缺独立双语指南。 - 2 proxy、2 tool 有包 README 和示例。包内维护文档不等于站点双语使用文档。 - 清单逐包列出 README、ARCHITECTURE、菜单引用和示例;SITE-04 负责补充双语入口及缺失说明, 不要求为了统一形式机械复制 20 份 README。SITE-05 验证实际生成页面和链接。 diff --git a/refactor/tasks.json b/refactor/tasks.json index 8a244b7b8..a17cda919 100644 --- a/refactor/tasks.json +++ b/refactor/tasks.json @@ -4412,6 +4412,27 @@ "baselines/site-editor-validation.json" ] }, + { + "id": "SITE-DANMUKU-01", + "phase": "6 文档与消费者", + "title": "核对弹幕双语指南并补齐英文入口", + "scope": [ + "artplayer-vitepress", + "artplayer-plugin-danmuku" + ], + "dependsOn": [ + "SITE-03", + "PKG-DANMUKU-07" + ], + "status": "done", + "risk": "L", + "deliverable": "按实现修正中文调用说明,新增英文完整选项/API/热力图/类型指南和导航;同步生成站点与LLM资料,新增双语示例浏览器验收", + "acceptance": "旧中文URL和标题保留;实际方法返回、加载语义、回调与points边界准确;双语页面、Run Code及示例实测,完整插件组合和设备验收不冒充完成", + "evidence": [ + "changes/2026-09-15-SITE-DANMUKU-01-guides.md", + "baselines/danmuku-docs-validation.json" + ] + }, { "id": "SITE-04", "phase": "6 文档与消费者", @@ -4441,7 +4462,8 @@ "PKG-IFRAME-04", "PKG-TOOL-THUMB-04", "PKG-DANMUKU-06", - "PKG-MB-08" + "PKG-MB-08", + "SITE-DANMUKU-01" ], "status": "todo", "risk": "M", diff --git a/test/browser/README.md b/test/browser/README.md index ebb948cb9..0c301b72f 100644 --- a/test/browser/README.md +++ b/test/browser/README.md @@ -101,6 +101,16 @@ cleanup and storage restoration. It does not execute all 233 documentation cases or prove remote SDKs/features. DPIP-MEDIA-01's exact WebKit intrinsic/layout size pairs remain explicit observations; this suite does not close that risk. +`yarn test:browser document-site.spec.js document-danmuku.spec.js --workers=1` +checks built bilingual navigation and Run Code URLs, then extracts every runnable +Danmuku snippet from both source guides. It loads the local Danmuku distribution +(whose SHA-256 is attached), candidate core and real documentation sample in owned +frames. This covers readiness and cleanup; it does not click every example control, +wait for every delayed callback, prove playback or replace PKG-DANMUKU-08. +Regenerate the site and its browser assets before navigation checks. Preserve both +`.run-code` and `[classname="run-code"]` selectors: SSR and Vue navigation can +produce different attribute forms, both supported by the site's handler. + `yarn test:browser test/browser/ads.spec.js` tests actual Ads 1.0.6 and candidate code with published 4.5.5/5.4.1 and candidate cores using local image/video media. It covers actual decoded pixels, countdown, skipping, content restoration, 404 and source replacement. diff --git a/test/browser/document-danmuku.spec.js b/test/browser/document-danmuku.spec.js new file mode 100644 index 000000000..1e4b02ea9 --- /dev/null +++ b/test/browser/document-danmuku.spec.js @@ -0,0 +1,44 @@ +import { createHash } from 'node:crypto' +import fs from 'node:fs' +import { build } from 'esbuild' +import { extractExamples } from '../../scripts/docs-smoke/parser.ts' +import { expect, test } from './fixtures.js' + +const compiled = await build({ + entryPoints: ['scripts/docs-smoke/runtime.ts'], + bundle: true, + write: false, + format: 'iife', + globalName: 'DocumentationSmoke', + target: 'es2020', + logLevel: 'silent', +}) +const pluginFile = 'packages/artplayer-plugin-danmuku/dist/artplayer-plugin-danmuku.js' +const plugin = fs.readFileSync(pluginFile) +const pluginHash = createHash('sha256').update(plugin).digest('hex') +const pluginUrl = '/uncompiled/artplayer-plugin-danmuku/index.js' + +for (const relative of ['plugin/danmuku.md', 'en/plugin/danmuku.md']) { + const source = fs.readFileSync(`packages/artplayer-vitepress/docs/${relative}`, 'utf8') + for (const example of extractExamples(source, relative)) { + test(`documented Danmuku example becomes ready and cleans up: ${example.id}`, async ({ page }, testInfo) => { + await page.route(`**${pluginUrl}`, route => route.fulfill({ contentType: 'text/javascript', body: plugin })) + await page.goto('/test/player.html') + await page.addScriptTag({ content: compiled.outputFiles[0].text }) + const result = await page.evaluate( + ({ example, pluginUrl }) => window.DocumentationSmoke.runExample(example, ['/candidate/artplayer.js', pluginUrl]), + { example, pluginUrl }, + ) + expect(result.instances).toBe(1) + expect(result.ready).toBe(1) + expect(result.media[0].duration).toBeGreaterThan(0) + expect(result.media[0].width).toBeGreaterThan(0) + expect(result.media[0].height).toBeGreaterThan(0) + await expect(page.locator('iframe[data-documentation-smoke]')).toHaveCount(0) + await testInfo.attach('documented-example', { + contentType: 'application/json', + body: JSON.stringify({ example, pluginFile, pluginHash, result, scope: 'readiness and frame cleanup; interactive commands and playback remain separate' }), + }) + }) + } +} diff --git a/test/browser/document-site.spec.js b/test/browser/document-site.spec.js index 32b92c12d..cd223663b 100644 --- a/test/browser/document-site.spec.js +++ b/test/browser/document-site.spec.js @@ -25,7 +25,7 @@ for (const language of ['zh', 'en']) { await expect(page.locator('h1')).toContainText( language === 'en' ? 'Basic Options' : '基础选项', ) - const button = page.locator('[classname="run-code"]').first() + const button = page.locator('.run-code, [classname="run-code"]').first() await expect(button).toBeVisible() const popupPromise = context.waitForEvent('page') await button.click() @@ -49,5 +49,17 @@ for (const language of ['zh', 'en']) { await expect(group.locator('input[type="radio"]').nth(1)).toBeChecked() await expect(group.locator('.blocks > div').nth(1)).toBeVisible() await expect(group.locator('.blocks > div').first()).toBeHidden() + const danmukuLink = page.locator(`.VPSidebar a[href="${prefix}/plugin/danmuku.html"]`) + await danmukuLink.click() + await expect(page.locator('h1')).toContainText(language === 'en' ? 'Danmuku' : '弹幕库') + const examplePopup = context.waitForEvent('page') + await page.locator('.run-code, [classname="run-code"]').first().click() + const example = await examplePopup + await example.waitForLoadState('domcontentloaded') + const exampleUrl = new URL(example.url()) + expect(exampleUrl.searchParams.get('libs')).toBe('./uncompiled/artplayer-plugin-danmuku/index.js') + expect(exampleUrl.searchParams.get('code')).toContain('artplayerPluginDanmuku({') + expect(failedAssets).toEqual([]) + await example.close() }) }