From e834246641a22bb89fa559c733fa5be287e130e6 Mon Sep 17 00:00:00 2001 From: Harvey Zack Date: Sat, 16 Aug 2025 21:11:30 +0800 Subject: [PATCH] feat: enforce browser environment for Artplayer initialization - Added a check in the Artplayer constructor to throw an error if instantiated outside a browser environment. - Updated the isBrowser utility to ensure both window and document are defined. - Removed unused user agent checks for WeChat, IE, and Android from compatibility utilities. - Updated TypeScript definitions to reflect the removal of unused properties. - Added a basic test case for Artplayer initialization in SSR context. --- docs/assets/ts/artplayer.d.ts | 3 --- docs/compiled/artplayer.esm.js | 2 +- docs/compiled/artplayer.esm.js.map | 2 +- docs/compiled/artplayer.js | 2 +- docs/compiled/artplayer.legacy.js | 2 +- packages/artplayer/src/index.js | 4 ++++ packages/artplayer/src/utils/compatibility.js | 5 +---- packages/artplayer/types/utils.d.ts | 3 --- test/ssr.test.js | 5 +++++ 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/assets/ts/artplayer.d.ts b/docs/assets/ts/artplayer.d.ts index 05589bbfa..d609e993a 100644 --- a/docs/assets/ts/artplayer.d.ts +++ b/docs/assets/ts/artplayer.d.ts @@ -2,9 +2,6 @@ export interface Utils { userAgent: string isMobile: boolean isSafari: boolean - isWechat: boolean - isIE: boolean - isAndroid: boolean isIOS: boolean isIOS13: boolean query: (selector: string, parent?: HTMLElement) => HTMLElement diff --git a/docs/compiled/artplayer.esm.js b/docs/compiled/artplayer.esm.js index e834d51db..5c5ea6ae6 100644 --- a/docs/compiled/artplayer.esm.js +++ b/docs/compiled/artplayer.esm.js @@ -5,5 +5,5 @@ * (c) 2017-2025 Harvey Zack * Released under the MIT License. */ -!function(e,t,r,a,o,i,n,s){var l="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},c="function"==typeof l[a]&&l[a],d=c.i||{},p=c.cache||{},u="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function f(t,r){if(!p[t]){if(!e[t]){if(o[t])return o[t];var i="function"==typeof l[a]&&l[a];if(!r&&i)return i(t,!0);if(c)return c(t,!0);if(u&&"string"==typeof t)return u(t);var n=Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}d.resolve=function(r){var a=e[t][1][r];return null!=a?a:r},d.cache={};var s=p[t]=new f.Module(t);e[t][0].call(s.exports,d,s,s.exports,l)}return p[t].exports;function d(e){var t=d.resolve(e);return!1===t?{}:f(t)}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.require=u,this.exports={}},f.modules=e,f.cache=p,f.parent=c,f.distDir=void 0,f.publicUrl=void 0,f.devServer=void 0,f.i=d,f.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(f,"root",{get:function(){return l[a]}}),l[a]=f;for(var h=0;ht.call(this,this)),J.DEBUG){let e=e=>console.log(`[ART.${this.id}] -> ${e}`);e(`Version@${J.version}`);for(let t=0;te(`Event@${t.type}`))}G.push(this)}static get instances(){return G}static get version(){return c.version}static get config(){return p.default}static get utils(){return Y}static get scheme(){return z.default}static get Emitter(){return X.default}static get validator(){return l.default}static get kindOf(){return l.default.kindOf}static get html(){return U.default.html}static get option(){return{id:"",container:"#artplayer",url:"",poster:"",type:"",theme:"#f00",volume:.7,isLive:!1,muted:!1,autoplay:!1,autoSize:!1,autoMini:!1,loop:!1,flip:!1,playbackRate:!1,aspectRatio:!1,screenshot:!1,setting:!1,hotkey:!0,pip:!1,mutex:!0,backdrop:!0,fullscreen:!1,fullscreenWeb:!1,subtitleOffset:!1,miniProgressBar:!1,useSSR:!1,playsInline:!0,lock:!1,gesture:!0,fastForward:!1,autoPlayback:!1,autoOrientation:!1,airplay:!1,proxy:void 0,layers:[],contextmenu:[],controls:[],settings:[],quality:[],highlight:[],plugins:[],thumbnails:{url:"",number:60,column:10,width:0,height:0,scale:1},subtitle:{url:"",type:"",style:{},name:"",escape:!0,encoding:"utf-8",onVttLoad:e=>e},moreVideoAttr:{controls:!1,preload:Y.isSafari?"auto":"metadata"},i18n:{},icons:{},cssVar:{},customType:{},lang:navigator?.language.toLowerCase()}}get proxy(){return this.events.proxy}get query(){return this.template.query}get video(){return this.template.$video}destroy(e=!0){this.events.destroy(),this.template.destroy(e),G.splice(G.indexOf(this),1),this.isDestroy=!0,this.emit("destroy")}}r.default=J,J.STYLE=n.default,J.DEBUG=!1,J.CONTEXTMENU=!0,J.NOTICE_TIME=2e3,J.SETTING_WIDTH=250,J.SETTING_ITEM_WIDTH=200,J.SETTING_ITEM_HEIGHT=35,J.RESIZE_TIME=200,J.SCROLL_TIME=200,J.SCROLL_GAP=50,J.AUTO_PLAYBACK_MAX=10,J.AUTO_PLAYBACK_MIN=5,J.AUTO_PLAYBACK_TIMEOUT=3e3,J.RECONNECT_TIME_MAX=5,J.RECONNECT_SLEEP_TIME=1e3,J.CONTROL_HIDE_TIME=3e3,J.DBCLICK_TIME=300,J.DBCLICK_FULLSCREEN=!0,J.MOBILE_DBCLICK_PLAY=!0,J.MOBILE_CLICK_PLAY=!1,J.AUTO_ORIENTATION_TIME=200,J.INFO_LOOP_TIME=1e3,J.FAST_FORWARD_VALUE=3,J.FAST_FORWARD_TIME=1e3,J.TOUCH_MOVE_RATIO=.5,J.VOLUME_STEP=.1,J.SEEK_STEP=5,J.PLAYBACK_RATE=[.5,.75,1,1.25,1.5,2],J.ASPECT_RATIO=["default","4:3","16:9"],J.FLIP=["normal","horizontal","vertical"],J.FULLSCREEN_WEB_IN_BODY=!1,J.LOG_VERSION=!0,J.USE_RAF=!1,Y.isBrowser&&(window.Artplayer=J,Y.setStyleText("artplayer-style",n.default),setTimeout(()=>{J.LOG_VERSION&&console.log(`%c ArtPlayer %c ${J.version} %c https://artplayer.org`,"color: #fff; background: #5f5f5f","color: #fff; background: #4bc729","")},100))},{"bundle-text:./style/index.less":"LDUUV","option-validator":"hw47a","../package.json":"2r8Ra","./config":"7jhZp","./contextmenu":"jFWxb","./control":"8He0l","./events":"eFzfA","./hotkey":"aLFu1","./i18n":"g6kBT","./icons":"exeCy","./info":"cUKxy","./layer":"fIHKi","./loading":"a7tJk","./mask":"chOzM","./notice":"qalnP","./player":"hZaaw","./plugins":"iKxTB","./scheme":"9Np13","./setting":"l15NM","./storage":"1bevC","./subtitle":"aD26q","./template":"3s0cr","./utils":"ga71d","./utils/emitter":"2Y43P","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],LDUUV:[function(e,t,r,a){t.exports='.art-video-player{--art-theme:red;--art-font-color:#fff;--art-background-color:#000;--art-text-shadow-color:#00000080;--art-transition-duration:.2s;--art-padding:10px;--art-border-radius:3px;--art-progress-height:6px;--art-progress-color:#ffffff40;--art-hover-color:#ffffff40;--art-loaded-color:#ffffff40;--art-state-size:80px;--art-state-opacity:.8;--art-bottom-height:100px;--art-bottom-offset:20px;--art-bottom-gap:5px;--art-highlight-width:8px;--art-highlight-color:#ffffff80;--art-control-height:46px;--art-control-opacity:.75;--art-control-icon-size:36px;--art-control-icon-scale:1.1;--art-volume-height:120px;--art-volume-handle-size:14px;--art-lock-size:36px;--art-indicator-scale:0;--art-indicator-size:16px;--art-fullscreen-web-index:9999;--art-settings-icon-size:24px;--art-settings-max-height:300px;--art-selector-max-height:300px;--art-contextmenus-min-width:250px;--art-subtitle-font-size:20px;--art-subtitle-gap:5px;--art-subtitle-bottom:15px;--art-subtitle-border:#000;--art-widget-background:#000000d9;--art-tip-background:#000000b3;--art-scrollbar-size:4px;--art-scrollbar-background:#ffffff40;--art-scrollbar-background-hover:#ffffff80;--art-mini-progress-height:2px}.art-bg-cover{background-position:50%;background-repeat:no-repeat;background-size:cover}.art-bottom-gradient{background-image:linear-gradient(#0000,#0006,#000);background-position:bottom;background-repeat:repeat-x}.art-backdrop-filter{backdrop-filter:saturate(180%)blur(20px);background-color:#000000bf!important}.art-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.art-video-player{zoom:1;text-align:left;user-select:none;box-sizing:border-box;width:100%;height:100%;color:var(--art-font-color);background-color:var(--art-background-color);text-shadow:0 0 2px var(--art-text-shadow-color);-webkit-tap-highlight-color:#0000;-ms-touch-action:manipulation;touch-action:manipulation;-ms-high-contrast-adjust:none;direction:ltr;outline:0;margin:0 auto;padding:0;font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,Roboto,Arial,sans-serif;font-size:14px;line-height:1.3;position:relative}.art-video-player *,.art-video-player :before,.art-video-player :after{box-sizing:border-box}.art-video-player ::-webkit-scrollbar{width:var(--art-scrollbar-size);height:var(--art-scrollbar-size)}.art-video-player ::-webkit-scrollbar-thumb{background-color:var(--art-scrollbar-background)}.art-video-player ::-webkit-scrollbar-thumb:hover{background-color:var(--art-scrollbar-background-hover)}.art-video-player img{vertical-align:top;max-width:100%}.art-video-player svg{fill:var(--art-font-color)}.art-video-player a{color:var(--art-font-color);text-decoration:none}.art-icon{justify-content:center;align-items:center;line-height:1;display:flex}.art-video-player.art-backdrop .art-contextmenus,.art-video-player.art-backdrop .art-info,.art-video-player.art-backdrop .art-settings,.art-video-player.art-backdrop .art-layer-auto-playback,.art-video-player.art-backdrop .art-selector-list,.art-video-player.art-backdrop .art-volume-inner{backdrop-filter:saturate(180%)blur(20px);background-color:#000000bf!important}.art-video{z-index:10;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.art-poster{z-index:11;pointer-events:none;background-position:50%;background-repeat:no-repeat;background-size:cover;width:100%;height:100%;position:absolute;inset:0}.art-video-player .art-subtitle{z-index:20;text-align:center;pointer-events:none;justify-content:center;align-items:center;gap:var(--art-subtitle-gap);width:100%;bottom:var(--art-subtitle-bottom);font-size:var(--art-subtitle-font-size);transition:bottom var(--art-transition-duration)ease;text-shadow:var(--art-subtitle-border)1px 0 1px,var(--art-subtitle-border)0 1px 1px,var(--art-subtitle-border)-1px 0 1px,var(--art-subtitle-border)0 -1px 1px,var(--art-subtitle-border)1px 1px 1px,var(--art-subtitle-border)-1px -1px 1px,var(--art-subtitle-border)1px -1px 1px,var(--art-subtitle-border)-1px 1px 1px;flex-direction:column;padding:0 5%;display:none;position:absolute}.art-video-player.art-subtitle-show .art-subtitle{display:flex}.art-video-player.art-control-show .art-subtitle{bottom:calc(var(--art-control-height) + var(--art-subtitle-bottom))}.art-danmuku{z-index:30;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.art-video-player .art-layers{z-index:40;pointer-events:none;width:100%;height:100%;display:none;position:absolute;inset:0}.art-video-player .art-layers .art-layer{pointer-events:auto}.art-video-player.art-layer-show .art-layers{display:flex}.art-video-player .art-mask{z-index:50;pointer-events:none;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;inset:0}.art-video-player .art-mask .art-state{opacity:0;width:var(--art-state-size);height:var(--art-state-size);transition:all var(--art-transition-duration)ease;justify-content:center;align-items:center;display:flex;transform:scale(2)}.art-video-player.art-mask-show .art-state{cursor:pointer;pointer-events:auto;opacity:var(--art-state-opacity);transform:scale(1)}.art-video-player.art-loading-show .art-state{display:none}.art-video-player .art-loading{z-index:70;pointer-events:none;justify-content:center;align-items:center;width:100%;height:100%;display:none;position:absolute;inset:0}.art-video-player.art-loading-show .art-loading{display:flex}.art-video-player .art-bottom{z-index:60;opacity:0;pointer-events:none;width:100%;height:100%;padding:0 var(--art-padding);transition:all var(--art-transition-duration)ease;background-size:100% var(--art-bottom-height);background-image:linear-gradient(#0000,#0006,#000);background-position:bottom;background-repeat:repeat-x;flex-direction:column;justify-content:flex-end;display:flex;position:absolute;inset:0;overflow:hidden}.art-video-player .art-bottom .art-controls,.art-video-player .art-bottom .art-progress{transform:translateY(var(--art-bottom-offset));transition:transform var(--art-transition-duration)ease}.art-video-player.art-control-show .art-bottom,.art-video-player.art-hover .art-bottom{opacity:1}.art-video-player.art-control-show .art-bottom .art-controls,.art-video-player.art-hover .art-bottom .art-controls,.art-video-player.art-control-show .art-bottom .art-progress,.art-video-player.art-hover .art-bottom .art-progress{transform:translateY(0)}.art-bottom .art-progress{z-index:0;pointer-events:auto;padding-bottom:var(--art-bottom-gap);position:relative}.art-bottom .art-progress .art-control-progress{cursor:pointer;height:var(--art-progress-height);justify-content:center;align-items:center;display:flex;position:relative}.art-bottom .art-progress .art-control-progress .art-control-progress-inner{width:100%;height:50%;transition:height var(--art-transition-duration)ease;background-color:var(--art-progress-color);align-items:center;display:flex;position:relative}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-hover{z-index:0;background-color:var(--art-hover-color);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{z-index:10;background-color:var(--art-loaded-color);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-played{z-index:20;background-color:var(--art-theme);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{z-index:30;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{z-index:0;pointer-events:auto;width:100%;height:100%;transform:translateX(calc(var(--art-highlight-width)/-2));background-color:var(--art-highlight-color);position:absolute;inset:0 auto 0 0;width:var(--art-highlight-width)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{z-index:40;width:var(--art-indicator-size);height:var(--art-indicator-size);transform:scale(var(--art-indicator-scale));margin-left:calc(var(--art-indicator-size)/-2);transition:transform var(--art-transition-duration)ease;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;left:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator .art-icon{pointer-events:none;width:100%;height:100%}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:hover{transform:scale(1.2)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:active{transform:scale(1)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip{z-index:50;border-radius:var(--art-border-radius);white-space:nowrap;background-color:var(--art-tip-background);padding:3px 5px;font-size:12px;line-height:1;display:none;position:absolute;top:-25px;left:0}.art-bottom .art-progress .art-control-progress:hover .art-control-progress-inner{height:100%}.art-bottom .art-progress .art-control-thumbnails{bottom:calc(var(--art-bottom-gap) + 10px);border-radius:var(--art-border-radius);pointer-events:none;background-color:var(--art-widget-background);display:none;position:absolute;left:0;box-shadow:0 1px 3px #0003,0 1px 2px -1px #0003}.art-bottom:hover .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{transform:scale(1)}.art-controls{z-index:10;pointer-events:auto;height:var(--art-control-height);justify-content:space-between;align-items:center;display:flex;position:relative}.art-controls .art-controls-left,.art-controls .art-controls-right{height:100%;display:flex}.art-controls .art-controls-center{flex:1;justify-content:center;align-items:center;height:100%;padding:0 10px;display:none}.art-controls .art-controls-right{justify-content:flex-end}.art-controls .art-control{cursor:pointer;white-space:nowrap;opacity:var(--art-control-opacity);min-height:var(--art-control-height);min-width:var(--art-control-height);transition:opacity var(--art-transition-duration)ease;flex-shrink:0;justify-content:center;align-items:center;display:flex}.art-controls .art-control .art-icon{height:var(--art-control-icon-size);width:var(--art-control-icon-size);transform:scale(var(--art-control-icon-scale));transition:transform var(--art-transition-duration)ease}.art-controls .art-control .art-icon:active{transform:scale(calc(var(--art-control-icon-scale)*.8))}.art-controls .art-control:hover{opacity:1}.art-control-volume{position:relative}.art-control-volume .art-volume-panel{text-align:center;cursor:default;opacity:0;pointer-events:none;left:0;right:0;bottom:var(--art-control-height);width:var(--art-control-height);height:var(--art-volume-height);transition:all var(--art-transition-duration)ease;justify-content:center;align-items:center;padding:0 5px;font-size:12px;display:flex;position:absolute;transform:translateY(10px)}.art-control-volume .art-volume-panel .art-volume-inner{border-radius:var(--art-border-radius);background-color:var(--art-widget-background);flex-direction:column;align-items:center;gap:10px;width:100%;height:100%;padding:10px 0 12px;display:flex}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider{cursor:pointer;flex:1;justify-content:center;width:100%;display:flex;position:relative}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle{border-radius:var(--art-border-radius);background-color:#ffffff40;justify-content:center;width:2px;display:flex;position:relative;overflow:hidden}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle .art-volume-loaded{z-index:0;background-color:var(--art-theme);width:100%;height:100%;position:absolute;inset:0}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-indicator{width:var(--art-volume-handle-size);height:var(--art-volume-handle-size);margin-top:calc(var(--art-volume-handle-size)/-2);background-color:var(--art-theme);transition:transform var(--art-transition-duration)ease;border-radius:100%;flex-shrink:0;position:absolute;transform:scale(1)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider:active .art-volume-indicator{transform:scale(.9)}.art-control-volume:hover .art-volume-panel{opacity:1;pointer-events:auto;transform:translateY(0)}.art-video-player .art-notice{z-index:80;width:100%;height:auto;padding:var(--art-padding);pointer-events:none;display:none;position:absolute;inset:0 0 auto}.art-video-player .art-notice .art-notice-inner{border-radius:var(--art-border-radius);background-color:var(--art-tip-background);padding:5px;line-height:1;display:inline-flex}.art-video-player.art-notice-show .art-notice{display:flex}.art-video-player .art-contextmenus{z-index:120;border-radius:var(--art-border-radius);background-color:var(--art-widget-background);min-width:var(--art-contextmenus-min-width);flex-direction:column;padding:5px 0;font-size:12px;display:none;position:absolute}.art-video-player .art-contextmenus .art-contextmenu{cursor:pointer;border-bottom:1px solid #ffffff1a;padding:10px 15px;display:flex}.art-video-player .art-contextmenus .art-contextmenu span{padding:0 8px}.art-video-player .art-contextmenus .art-contextmenu span:hover,.art-video-player .art-contextmenus .art-contextmenu span.art-current{color:var(--art-theme)}.art-video-player .art-contextmenus .art-contextmenu:hover{background-color:#ffffff1a}.art-video-player .art-contextmenus .art-contextmenu:last-child{border-bottom:none}.art-video-player.art-contextmenu-show .art-contextmenus{display:flex}.art-video-player .art-settings{z-index:90;border-radius:var(--art-border-radius);max-height:var(--art-settings-max-height);left:auto;right:var(--art-padding);bottom:var(--art-control-height);transition:all var(--art-transition-duration)ease;background-color:var(--art-widget-background);flex-direction:column;display:none;position:absolute;overflow:hidden auto}.art-video-player .art-settings .art-setting-panel{flex-direction:column;display:none}.art-video-player .art-settings .art-setting-panel.art-current{display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item{cursor:pointer;transition:background-color var(--art-transition-duration)ease;justify-content:space-between;align-items:center;padding:0 5px;display:flex;overflow:hidden}.art-video-player .art-settings .art-setting-panel .art-setting-item:hover{background-color:#ffffff1a}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current{color:var(--art-theme)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-icon-check{visibility:hidden;height:15px}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current .art-icon-check{visibility:visible}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left{flex-shrink:0;justify-content:center;align-items:center;gap:5px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-icon{height:var(--art-settings-icon-size);width:var(--art-settings-icon-size);justify-content:center;align-items:center;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right{justify-content:center;align-items:center;gap:5px;font-size:12px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-tooltip{white-space:nowrap;color:#ffffff80}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-icon{justify-content:center;align-items:center;min-width:32px;height:24px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-range{appearance:none;background-color:#fff3;outline:none;width:80px;height:3px}.art-video-player .art-settings .art-setting-panel .art-setting-item-back{border-bottom:1px solid #ffffff1a}.art-video-player.art-setting-show .art-settings{display:flex}.art-video-player .art-info{left:var(--art-padding);top:var(--art-padding);z-index:100;border-radius:var(--art-border-radius);background-color:var(--art-widget-background);padding:10px;font-size:12px;display:none;position:absolute}.art-video-player .art-info .art-info-panel{flex-direction:column;gap:5px;display:flex}.art-video-player .art-info .art-info-panel .art-info-item{align-items:center;gap:5px;display:flex}.art-video-player .art-info .art-info-panel .art-info-item .art-info-title{text-align:right;width:100px}.art-video-player .art-info .art-info-panel .art-info-item .art-info-content{text-overflow:ellipsis;white-space:nowrap;user-select:all;width:250px;overflow:hidden}.art-video-player .art-info .art-info-close{cursor:pointer;position:absolute;top:5px;right:5px}.art-video-player.art-info-show .art-info{display:flex}.art-hide-cursor *{cursor:none!important}.art-video-player[data-aspect-ratio]{overflow:hidden}.art-video-player[data-aspect-ratio] .art-video{object-fit:fill;box-sizing:content-box}.art-fullscreen{--art-progress-height:8px;--art-indicator-size:20px;--art-control-height:60px;--art-control-icon-scale:1.3}.art-fullscreen-web{--art-progress-height:8px;--art-indicator-size:20px;--art-control-height:60px;--art-control-icon-scale:1.3;z-index:var(--art-fullscreen-web-index);width:100%;height:100%;position:fixed;inset:0}.art-mini-popup{z-index:9999;border-radius:var(--art-border-radius);cursor:move;user-select:none;background:#000;width:320px;height:180px;transition:opacity .2s;position:fixed;overflow:hidden;box-shadow:0 0 5px #00000080}.art-mini-popup svg{fill:#fff}.art-mini-popup .art-video{pointer-events:none}.art-mini-popup .art-mini-close{z-index:20;cursor:pointer;opacity:0;transition:opacity .2s;position:absolute;top:10px;right:10px}.art-mini-popup .art-mini-state{z-index:30;pointer-events:none;opacity:0;background-color:#00000040;justify-content:center;align-items:center;width:100%;height:100%;transition:opacity .2s;display:flex;position:absolute;inset:0}.art-mini-popup .art-mini-state .art-icon{opacity:.75;cursor:pointer;pointer-events:auto;transition:transform .2s;transform:scale(3)}.art-mini-popup .art-mini-state .art-icon:active{transform:scale(2.5)}.art-mini-popup.art-mini-dragging{opacity:.9}.art-mini-popup:hover .art-mini-close,.art-mini-popup:hover .art-mini-state{opacity:1}.art-video-player[data-flip=horizontal] .art-video{transform:scaleX(-1)}.art-video-player[data-flip=vertical] .art-video{transform:scaleY(-1)}.art-video-player .art-layer-lock{height:var(--art-lock-size);width:var(--art-lock-size);top:50%;left:var(--art-padding);background-color:var(--art-tip-background);border-radius:50%;justify-content:center;align-items:center;display:none;position:absolute;transform:translateY(-50%)}.art-video-player .art-layer-auto-playback{border-radius:var(--art-border-radius);left:var(--art-padding);bottom:calc(var(--art-control-height) + var(--art-bottom-gap) + 10px);background-color:var(--art-widget-background);align-items:center;gap:10px;padding:10px;line-height:1;display:none;position:absolute}.art-video-player .art-layer-auto-playback .art-auto-playback-close{cursor:pointer;justify-content:center;align-items:center;display:flex}.art-video-player .art-layer-auto-playback .art-auto-playback-close svg{width:15px;height:15px;fill:var(--art-theme)}.art-video-player .art-layer-auto-playback .art-auto-playback-jump{color:var(--art-theme);cursor:pointer}.art-video-player.art-lock .art-subtitle{bottom:var(--art-subtitle-bottom)!important}.art-video-player.art-mini-progress-bar .art-bottom,.art-video-player.art-lock .art-bottom{opacity:1;background-image:none;padding:0}.art-video-player.art-mini-progress-bar .art-bottom .art-controls,.art-video-player.art-lock .art-bottom .art-controls,.art-video-player.art-mini-progress-bar .art-bottom .art-progress,.art-video-player.art-lock .art-bottom .art-progress{transform:translateY(calc(var(--art-control-height) + var(--art-bottom-gap) + var(--art-progress-height)/4))}.art-video-player.art-mini-progress-bar .art-bottom .art-progress-indicator,.art-video-player.art-lock .art-bottom .art-progress-indicator{display:none!important}.art-video-player.art-control-show .art-layer-lock{display:flex}.art-control-selector{justify-content:center;display:flex;position:relative}.art-control-selector .art-selector-list{text-align:center;border-radius:var(--art-border-radius);opacity:0;pointer-events:none;bottom:var(--art-control-height);max-height:var(--art-selector-max-height);background-color:var(--art-widget-background);transition:all var(--art-transition-duration)ease;flex-direction:column;align-items:center;display:flex;position:absolute;overflow:hidden auto;transform:translateY(10px)}.art-control-selector .art-selector-list .art-selector-item{flex-shrink:0;justify-content:center;align-items:center;width:100%;padding:10px 15px;line-height:1;display:flex}.art-control-selector .art-selector-list .art-selector-item:hover{background-color:#ffffff1a}.art-control-selector .art-selector-list .art-selector-item:hover,.art-control-selector .art-selector-list .art-selector-item.art-current{color:var(--art-theme)}.art-control-selector:hover .art-selector-list{opacity:1;pointer-events:auto;transform:translateY(0)}[class*=hint--]{font-style:normal;display:inline-block;position:relative}[class*=hint--]:before,[class*=hint--]:after{visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;transition:all .3s;position:absolute;transform:translate(0,0)}[class*=hint--]:hover:before,[class*=hint--]:hover:after{visibility:visible;opacity:1;transition-delay:.1s}[class*=hint--]:before{content:"";z-index:1000001;background:0 0;border:6px solid #0000;position:absolute}[class*=hint--]:after{color:#fff;white-space:nowrap;background:#000;padding:8px 10px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;line-height:12px}[class*=hint--][aria-label]:after{content:attr(aria-label)}[class*=hint--][data-hint]:after{content:attr(data-hint)}[aria-label=""]:before,[aria-label=""]:after,[data-hint=""]:before,[data-hint=""]:after{display:none!important}.hint--top-left:before,.hint--top-right:before,.hint--top:before{border-top-color:#000}.hint--bottom-left:before,.hint--bottom-right:before,.hint--bottom:before{border-bottom-color:#000}.hint--left:before{border-left-color:#000}.hint--right:before{border-right-color:#000}.hint--top:before{margin-bottom:-11px}.hint--top:before,.hint--top:after{bottom:100%;left:50%}.hint--top:before{left:calc(50% - 6px)}.hint--top:after{transform:translate(-50%)}.hint--top:hover:before{transform:translateY(-8px)}.hint--top:hover:after{transform:translate(-50%)translateY(-8px)}.hint--bottom:before{margin-top:-11px}.hint--bottom:before,.hint--bottom:after{top:100%;left:50%}.hint--bottom:before{left:calc(50% - 6px)}.hint--bottom:after{transform:translate(-50%)}.hint--bottom:hover:before{transform:translateY(8px)}.hint--bottom:hover:after{transform:translate(-50%)translateY(8px)}.hint--right:before{margin-bottom:-6px;margin-left:-11px}.hint--right:after{margin-bottom:-14px}.hint--right:before,.hint--right:after{bottom:50%;left:100%}.hint--right:hover:before,.hint--right:hover:after{transform:translate(8px)}.hint--left:before{margin-bottom:-6px;margin-right:-11px}.hint--left:after{margin-bottom:-14px}.hint--left:before,.hint--left:after{bottom:50%;right:100%}.hint--left:hover:before,.hint--left:hover:after{transform:translate(-8px)}.hint--top-left:before{margin-bottom:-11px}.hint--top-left:before,.hint--top-left:after{bottom:100%;left:50%}.hint--top-left:before{left:calc(50% - 6px)}.hint--top-left:after{margin-left:12px;transform:translate(-100%)}.hint--top-left:hover:before{transform:translateY(-8px)}.hint--top-left:hover:after{transform:translate(-100%)translateY(-8px)}.hint--top-right:before{margin-bottom:-11px}.hint--top-right:before,.hint--top-right:after{bottom:100%;left:50%}.hint--top-right:before{left:calc(50% - 6px)}.hint--top-right:after{margin-left:-12px;transform:translate(0)}.hint--top-right:hover:before,.hint--top-right:hover:after{transform:translateY(-8px)}.hint--bottom-left:before{margin-top:-11px}.hint--bottom-left:before,.hint--bottom-left:after{top:100%;left:50%}.hint--bottom-left:before{left:calc(50% - 6px)}.hint--bottom-left:after{margin-left:12px;transform:translate(-100%)}.hint--bottom-left:hover:before{transform:translateY(8px)}.hint--bottom-left:hover:after{transform:translate(-100%)translateY(8px)}.hint--bottom-right:before{margin-top:-11px}.hint--bottom-right:before,.hint--bottom-right:after{top:100%;left:50%}.hint--bottom-right:before{left:calc(50% - 6px)}.hint--bottom-right:after{margin-left:-12px;transform:translate(0)}.hint--bottom-right:hover:before,.hint--bottom-right:hover:after{transform:translateY(8px)}.hint--small:after,.hint--medium:after,.hint--large:after{white-space:normal;word-wrap:break-word;line-height:1.4em}.hint--small:after{width:80px}.hint--medium:after{width:150px}.hint--large:after{width:300px}[class*=hint--]:after{text-shadow:0 -1px #000;box-shadow:4px 4px 8px #0000004d}.hint--error:after{text-shadow:0 -1px #592726;background-color:#b34e4d}.hint--error.hint--top-left:before,.hint--error.hint--top-right:before,.hint--error.hint--top:before{border-top-color:#b34e4d}.hint--error.hint--bottom-left:before,.hint--error.hint--bottom-right:before,.hint--error.hint--bottom:before{border-bottom-color:#b34e4d}.hint--error.hint--left:before{border-left-color:#b34e4d}.hint--error.hint--right:before{border-right-color:#b34e4d}.hint--warning:after{text-shadow:0 -1px #6c5328;background-color:#c09854}.hint--warning.hint--top-left:before,.hint--warning.hint--top-right:before,.hint--warning.hint--top:before{border-top-color:#c09854}.hint--warning.hint--bottom-left:before,.hint--warning.hint--bottom-right:before,.hint--warning.hint--bottom:before{border-bottom-color:#c09854}.hint--warning.hint--left:before{border-left-color:#c09854}.hint--warning.hint--right:before{border-right-color:#c09854}.hint--info:after{text-shadow:0 -1px #1a3c4d;background-color:#3986ac}.hint--info.hint--top-left:before,.hint--info.hint--top-right:before,.hint--info.hint--top:before{border-top-color:#3986ac}.hint--info.hint--bottom-left:before,.hint--info.hint--bottom-right:before,.hint--info.hint--bottom:before{border-bottom-color:#3986ac}.hint--info.hint--left:before{border-left-color:#3986ac}.hint--info.hint--right:before{border-right-color:#3986ac}.hint--success:after{text-shadow:0 -1px #1a321a;background-color:#458746}.hint--success.hint--top-left:before,.hint--success.hint--top-right:before,.hint--success.hint--top:before{border-top-color:#458746}.hint--success.hint--bottom-left:before,.hint--success.hint--bottom-right:before,.hint--success.hint--bottom:before{border-bottom-color:#458746}.hint--success.hint--left:before{border-left-color:#458746}.hint--success.hint--right:before{border-right-color:#458746}.hint--always:after,.hint--always:before{opacity:1;visibility:visible}.hint--always.hint--top:before{transform:translateY(-8px)}.hint--always.hint--top:after{transform:translate(-50%)translateY(-8px)}.hint--always.hint--top-left:before{transform:translateY(-8px)}.hint--always.hint--top-left:after{transform:translate(-100%)translateY(-8px)}.hint--always.hint--top-right:before,.hint--always.hint--top-right:after{transform:translateY(-8px)}.hint--always.hint--bottom:before{transform:translateY(8px)}.hint--always.hint--bottom:after{transform:translate(-50%)translateY(8px)}.hint--always.hint--bottom-left:before{transform:translateY(8px)}.hint--always.hint--bottom-left:after{transform:translate(-100%)translateY(8px)}.hint--always.hint--bottom-right:before,.hint--always.hint--bottom-right:after{transform:translateY(8px)}.hint--always.hint--left:before,.hint--always.hint--left:after{transform:translate(-8px)}.hint--always.hint--right:before,.hint--always.hint--right:after{transform:translate(8px)}.hint--rounded:after{border-radius:4px}.hint--no-animate:before,.hint--no-animate:after{transition-duration:0s}.hint--bounce:before,.hint--bounce:after{-webkit-transition:opacity .3s,visibility .3s,-webkit-transform .3s cubic-bezier(.71,1.7,.77,1.24);-moz-transition:opacity .3s,visibility .3s,-moz-transform .3s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .3s,visibility .3s,transform .3s cubic-bezier(.71,1.7,.77,1.24)}.hint--no-shadow:before,.hint--no-shadow:after{text-shadow:initial;box-shadow:initial}.hint--no-arrow:before{display:none}.art-video-player.art-mobile{--art-bottom-gap:10px;--art-control-height:38px;--art-control-icon-scale:1;--art-state-size:60px;--art-settings-max-height:180px;--art-selector-max-height:180px;--art-indicator-scale:1;--art-control-opacity:1}.art-video-player.art-mobile .art-controls-left{margin-left:calc(var(--art-padding)/-1)}.art-video-player.art-mobile .art-controls-right{margin-right:calc(var(--art-padding)/-1)}'},{}],hw47a:[function(e,t,r,a){t.exports=function(){function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}var t=Object.prototype.toString,r=function(r){if(void 0===r)return"undefined";if(null===r)return"null";var o=e(r);if("boolean"===o)return"boolean";if("string"===o)return"string";if("number"===o)return"number";if("symbol"===o)return"symbol";if("function"===o)return"GeneratorFunction"===a(r)?"generatorfunction":"function";if(Array.isArray?Array.isArray(r):r instanceof Array)return"array";if(r.constructor&&"function"==typeof r.constructor.isBuffer&&r.constructor.isBuffer(r))return"buffer";if(function(e){try{if("number"==typeof e.length&&"function"==typeof e.callee)return!0}catch(e){if(-1!==e.message.indexOf("callee"))return!0}return!1}(r))return"arguments";if(r instanceof Date||"function"==typeof r.toDateString&&"function"==typeof r.getDate&&"function"==typeof r.setDate)return"date";if(r instanceof Error||"string"==typeof r.message&&r.constructor&&"number"==typeof r.constructor.stackTraceLimit)return"error";if(r instanceof RegExp||"string"==typeof r.flags&&"boolean"==typeof r.ignoreCase&&"boolean"==typeof r.multiline&&"boolean"==typeof r.global)return"regexp";switch(a(r)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if("function"==typeof r.throw&&"function"==typeof r.return&&"function"==typeof r.next)return"generator";switch(o=t.call(r)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return o.slice(8,-1).toLowerCase().replace(/\s/g,"")};function a(e){return e.constructor?e.constructor.name:null}function o(e,t){var a=2","license":"MIT","homepage":"https://artplayer.org","repository":{"type":"git","url":"git+https://github.com/zhw2590582/ArtPlayer.git"},"bugs":{"url":"https://github.com/zhw2590582/ArtPlayer/issues"},"keywords":["html5","video","player"],"main":"dist/artplayer.js","legacy":"dist/artplayer.legacy.js","types":"types/artplayer.d.ts","browserslist":"last 1 Chrome version","dependencies":{"option-validator":"^2.0.6"}}')},{}],"7jhZp":[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r),r.default={properties:["audioTracks","autoplay","buffered","controller","controls","crossOrigin","currentSrc","currentTime","defaultMuted","defaultPlaybackRate","duration","ended","error","loop","mediaGroup","muted","networkState","paused","playbackRate","played","preload","readyState","seekable","seeking","src","startDate","textTracks","videoTracks","volume"],methods:["addTextTrack","canPlayType","load","play","pause"],events:["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"],prototypes:["width","height","videoWidth","videoHeight","poster","webkitDecodedFrameCount","webkitDroppedFrameCount","playsInline","webkitSupportsFullscreen","webkitDisplayingFullscreen","onenterpictureinpicture","onleavepictureinpicture","disablePictureInPicture","cancelVideoFrameCallback","requestVideoFrameCallback","getVideoPlaybackQuality","requestPictureInPicture","webkitEnterFullScreen","webkitEnterFullscreen","webkitExitFullScreen","webkitExitFullscreen"]}},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"5lQoW":[function(e,t,r,a){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}],jFWxb:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("../utils"),n=e("../utils/component"),s=o.interopDefault(n),l=e("./aspectRatio"),c=o.interopDefault(l),d=e("./close"),p=o.interopDefault(d),u=e("./flip"),f=o.interopDefault(u),h=e("./info"),m=o.interopDefault(h),g=e("./playbackRate"),v=o.interopDefault(g),y=e("./version"),b=o.interopDefault(y);class x extends s.default{constructor(e){super(e),this.name="contextmenu",this.$parent=e.template.$contextmenu,i.isMobile||this.init()}init(){let{option:e,proxy:t,template:{$player:r,$contextmenu:a}}=this.art;e.playbackRate&&this.add((0,v.default)({name:"playbackRate",index:10})),e.aspectRatio&&this.add((0,c.default)({name:"aspectRatio",index:20})),e.flip&&this.add((0,f.default)({name:"flip",index:30})),this.add((0,m.default)({name:"info",index:40})),this.add((0,b.default)({name:"version",index:50})),this.add((0,p.default)({name:"close",index:60}));for(let t=0;t{if(!this.art.constructor.CONTEXTMENU)return;e.preventDefault(),this.show=!0;let t=e.clientX,o=e.clientY,{height:n,width:s,left:l,top:c}=(0,i.getRect)(r),{height:d,width:p}=(0,i.getRect)(a),u=t-l,f=o-c;t+p>l+s&&(u=s-p),o+d>c+n&&(f=n-d),(0,i.setStyles)(a,{top:`${f}px`,left:`${u}px`})}),t(r,"click",e=>{(0,i.includeFromEvent)(e,a)||(this.show=!1)}),this.art.on("blur",()=>{this.show=!1})}}r.default=x},{"../utils":"ga71d","../utils/component":"hARFP","./aspectRatio":"atwXQ","./close":"34cn1","./flip":"4YbBf","./info":"difR5","./playbackRate":"2VDwk","./version":"bza1P","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],ga71d:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("./compatibility");o.exportAll(i,r);var n=e("./dom");o.exportAll(n,r);var s=e("./error");o.exportAll(s,r);var l=e("./file");o.exportAll(l,r);var c=e("./format");o.exportAll(c,r);var d=e("./property");o.exportAll(d,r);var p=e("./subtitle");o.exportAll(p,r);var u=e("./time");o.exportAll(u,r)},{"./compatibility":"eqWpq","./dom":"Nhosu","./error":"480HW","./file":"2AGZv","./format":"1cr8o","./property":"cTF5s","./subtitle":"i6MtR","./time":"7VpW0","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],eqWpq:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"userAgent",()=>i),o.export(r,"isSafari",()=>n),o.export(r,"isWechat",()=>s),o.export(r,"isIE",()=>l),o.export(r,"isAndroid",()=>c),o.export(r,"isIOS",()=>d),o.export(r,"isIOS13",()=>p),o.export(r,"isMobile",()=>u),o.export(r,"isBrowser",()=>f);let i=globalThis?.CUSTOM_USER_AGENT??("undefined"!=typeof navigator?navigator.userAgent:""),n=/^(?:(?!chrome|android).)*safari/i.test(i),s=/MicroMessenger/i.test(i),l=/MSIE|Trident/i.test(i),c=/android/i.test(i),d=/iPad|iPhone|iPod/i.test(i)&&!window.MSStream,p=d||i.includes("Macintosh")&&navigator.maxTouchPoints>=1,u=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(i)||p,f="undefined"!=typeof window},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],Nhosu:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"query",()=>n),o.export(r,"queryAll",()=>s),o.export(r,"addClass",()=>l),o.export(r,"removeClass",()=>c),o.export(r,"hasClass",()=>d),o.export(r,"append",()=>p),o.export(r,"remove",()=>u),o.export(r,"setStyle",()=>f),o.export(r,"setStyles",()=>h),o.export(r,"getStyle",()=>m),o.export(r,"siblings",()=>g),o.export(r,"inverseClass",()=>v),o.export(r,"tooltip",()=>y),o.export(r,"isInViewport",()=>b),o.export(r,"includeFromEvent",()=>x),o.export(r,"replaceElement",()=>w),o.export(r,"createElement",()=>j),o.export(r,"getIcon",()=>k),o.export(r,"setStyleText",()=>S),o.export(r,"supportsFlex",()=>$),o.export(r,"getRect",()=>I),o.export(r,"loadImg",()=>M),o.export(r,"getComposedPath",()=>E);var i=e("./compatibility");function n(e,t=document){return t.querySelector(e)}function s(e,t=document){return Array.from(t.querySelectorAll(e))}function l(e,t){return e.classList.add(t)}function c(e,t){return e.classList.remove(t)}function d(e,t){return e.classList.contains(t)}function p(e,t){return t instanceof Element?e.appendChild(t):e.insertAdjacentHTML("beforeend",String(t)),e.lastElementChild||e.lastChild}function u(e){return e.parentNode.removeChild(e)}function f(e,t,r){return e.style[t]=r,e}function h(e,t){for(let r in t)f(e,r,t[r]);return e}function m(e,t,r=!0){let a=window.getComputedStyle(e,null).getPropertyValue(t);return r?Number.parseFloat(a):a}function g(e){return Array.from(e.parentElement.children).filter(t=>t!==e)}function v(e,t){g(e).forEach(e=>c(e,t)),l(e,t)}function y(e,t,r="top"){i.isMobile||(e.setAttribute("aria-label",t),l(e,"hint--rounded"),l(e,`hint--${r}`))}function b(e,t=0){let r=e.getBoundingClientRect(),a=window.innerHeight||document.documentElement.clientHeight,o=window.innerWidth||document.documentElement.clientWidth,i=r.top-t<=a&&r.top+r.height+t>=0,n=r.left-t<=o+t&&r.left+r.width+t>=0;return i&&n}function x(e,t){return E(e).includes(t)}function w(e,t){return t.parentNode.replaceChild(e,t),e}function j(e){return document.createElement(e)}function k(e="",t=""){let r=j("i");return l(r,"art-icon"),l(r,`art-icon-${e}`),p(r,t),r}function S(e,t){let r=document.getElementById(e);r||((r=document.createElement("style")).id=e,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{document.head.appendChild(r)}):(document.head||document.documentElement).appendChild(r)),r.textContent=t}function $(){let e=document.createElement("div");return e.style.display="flex","flex"===e.style.display}function I(e){return e.getBoundingClientRect()}function M(e,t){return new Promise((r,a)=>{let o=new Image;o.onload=function(){if(t&&1!==t){let i=document.createElement("canvas"),n=i.getContext("2d");i.width=o.width*t,i.height=o.height*t,n.drawImage(o,0,0,i.width,i.height),i.toBlob(t=>{let o=URL.createObjectURL(t),i=new Image;i.onload=function(){r(i)},i.onerror=function(){URL.revokeObjectURL(o),a(Error(`Image load failed: ${e}`))},i.src=o})}else r(o)},o.onerror=function(){a(Error(`Image load failed: ${e}`))},o.src=e})}function E(e){if(e.composedPath)return e.composedPath();let t=[],r=e.target;for(;r;)t.push(r),r=r.parentNode;return t.includes(window)||void 0===window||t.push(window),t}},{"./compatibility":"eqWpq","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"480HW":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"ArtPlayerError",()=>i),o.export(r,"errorHandle",()=>n);class i extends Error{constructor(e,t){super(e),"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,t||this.constructor),this.name="ArtPlayerError"}}function n(e,t){if(!e)throw new i(t);return e}},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"2AGZv":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e,t){let r=document.createElement("a");r.style.display="none",r.href=e,r.download=t,document.body.appendChild(r),r.click(),document.body.removeChild(r)}o.defineInteropFlag(r),o.export(r,"getExt",()=>function e(t){return t.includes("?")?e(t.split("?")[0]):t.includes("#")?e(t.split("#")[0]):t.trim().toLowerCase().split(".").pop()}),o.export(r,"download",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"1cr8o":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function n(e){return e.charAt(0).toUpperCase()+e.slice(1)}function s(e){if(!e)return"00:00";let t=Math.floor(e/3600),r=Math.floor((e-3600*t)/60),a=Math.floor(e-3600*t-60*r);return(t>0?[t,r,a]:[r,a]).map(e=>e<10?`0${e}`:String(e)).join(":")}function l(e){return e.replace(/[&<>'"]/g,e=>({"&":"&","<":"<",">":">","'":"'",'"':"""})[e]||e)}function c(e){let t={"&":"&","<":"<",">":">","'":"'",""":'"'},r=RegExp(`(${Object.keys(t).join("|")})`,"g");return e.replace(r,e=>t[e]||e)}o.defineInteropFlag(r),o.export(r,"clamp",()=>i),o.export(r,"capitalize",()=>n),o.export(r,"secondToTime",()=>s),o.export(r,"escape",()=>l),o.export(r,"unescape",()=>c)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],cTF5s:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"def",()=>i),o.export(r,"has",()=>s),o.export(r,"get",()=>l),o.export(r,"mergeDeep",()=>function e(...t){let r=e=>e&&"object"==typeof e&&!Array.isArray(e);return t.reduce((t,a)=>(Object.keys(a).forEach(o=>{let i=t[o],n=a[o];Array.isArray(i)&&Array.isArray(n)?t[o]=i.concat(...n):r(i)&&r(n)?t[o]=e(i,n):t[o]=n}),t),{})});let i=Object.defineProperty,{hasOwnProperty:n}=Object.prototype;function s(e,t){return n.call(e,t)}function l(e,t){return Object.getOwnPropertyDescriptor(e,t)}},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],i6MtR:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){return"WEBVTT \r\n\r\n".concat(e.replace(/(\d\d:\d\d:\d\d)[,.](\d+)/g,(e,t,r)=>{let a=r.slice(0,3);return 1===r.length&&(a=`${r}00`),2===r.length&&(a=`${r}0`),`${t},${a}`}).replace(/\{\\([ibu])\}/g,"").replace(/\{\\([ibu])1\}/g,"<$1>").replace(/\{([ibu])\}/g,"<$1>").replace(/\{\/([ibu])\}/g,"").replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g,"$1.$2").replace(/\{[\s\S]*?\}/g,"").concat("\r\n\r\n"))}function n(e){return URL.createObjectURL(new Blob([e],{type:"text/vtt"}))}function s(e){let t=RegExp("Dialogue:\\s\\d,(\\d+:\\d\\d:\\d\\d.\\d\\d),(\\d+:\\d\\d:\\d\\d.\\d\\d),([^,]*),([^,]*),(?:[^,]*,){4}([\\s\\S]*)$","i");function r(e=""){return e.split(/[:.]/).map((e,t,r)=>{if(t===r.length-1){if(1===e.length)return`.${e}00`;if(2===e.length)return`.${e}0`}else if(1===e.length)return(0===t?"0":":0")+e;return 0===t?e:t===r.length-1?`.${e}`:`:${e}`}).join("")}return`WEBVTT ${e.split(/\r?\n/).map(e=>{let a=e.match(t);return a?{start:r(a[1].trim()),end:r(a[2].trim()),text:a[5].replace(/\{[\s\S]*?\}/g,"").replace(/(\\N)/g,"\n").trim().split(/\r?\n/).map(e=>e.trim()).join("\n")}:null}).filter(e=>e).map((e,t)=>e?`${t+1} ${e.start} --> ${e.end} ${e.text}`:"").filter(e=>e.trim()).join("\n\n")}`}o.defineInteropFlag(r),o.export(r,"srtToVtt",()=>i),o.export(r,"vttToBlob",()=>n),o.export(r,"assToVtt",()=>s)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"7VpW0":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e=0){return new Promise(t=>setTimeout(t,e))}function n(e,t){let r;return function(...a){let o=()=>(r=null,e.apply(this,a));clearTimeout(r),r=setTimeout(o,t)}}function s(e,t){let r=!1;return function(...a){r||(e.apply(this,a),r=!0,setTimeout(()=>{r=!1},t))}}o.defineInteropFlag(r),o.export(r,"sleep",()=>i),o.export(r,"debounce",()=>n),o.export(r,"throttle",()=>s)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],hARFP:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("option-validator"),n=o.interopDefault(i),s=e("../scheme"),l=e("./dom"),c=e("./error");r.default=class{constructor(e){this.id=0,this.art=e,this.cache=new Map,this.add=this.add.bind(this),this.remove=this.remove.bind(this),this.update=this.update.bind(this)}get show(){return(0,l.hasClass)(this.art.template.$player,`art-${this.name}-show`)}set show(e){let{$player:t}=this.art.template,r=`art-${this.name}-show`;e?(0,l.addClass)(t,r):(0,l.removeClass)(t,r),this.art.emit(this.name,e)}toggle(){this.show=!this.show}add(e){let t="function"==typeof e?e(this.art):e;if(t.html=t.html||"",(0,n.default)(t,s.ComponentOption),!this.$parent||!this.name||t.disable)return;let r=t.name||`${this.name}${this.id}`,a=this.cache.get(r);(0,c.errorHandle)(!a,`Can't add an existing [${r}] to the [${this.name}]`),this.id+=1;let o=(0,l.createElement)("div");(0,l.addClass)(o,`art-${this.name}`),(0,l.addClass)(o,`art-${this.name}-${r}`);let i=Array.from(this.$parent.children);o.dataset.index=t.index||this.id;let d=i.find(e=>Number(e.dataset.index)>=Number(o.dataset.index));d?d.insertAdjacentElement("beforebegin",o):(0,l.append)(this.$parent,o),t.html&&(0,l.append)(o,t.html),t.style&&(0,l.setStyles)(o,t.style),t.tooltip&&(0,l.tooltip)(o,t.tooltip);let p=[];if(t.click){let e=this.art.events.proxy(o,"click",e=>{e.preventDefault(),t.click.call(this.art,this,e)});p.push(e)}return t.selector&&["left","right"].includes(t.position)&&this.selector(t,o,p),this[r]=o,this.cache.set(r,{$ref:o,events:p,option:t}),t.mounted&&t.mounted.call(this.art,o),o}remove(e){let t=this.cache.get(e);(0,c.errorHandle)(t,`Can't find [${e}] from the [${this.name}]`),t.option.beforeUnmount&&t.option.beforeUnmount.call(this.art,t.$ref);for(let e=0;ef);var i=e("../utils");let n="array",s="boolean",l="string",c="number",d="object",p="function";function u(e,t,r){return(0,i.errorHandle)(t===l||t===c||e instanceof Element,`${r.join(".")} require '${l}' or 'Element' type`)}let f={html:u,disable:`?${s}`,name:`?${l}`,index:`?${c}`,style:`?${d}`,click:`?${p}`,mounted:`?${p}`,tooltip:`?${l}|${c}`,width:`?${c}`,selector:`?${n}`,onSelect:`?${p}`,switch:`?${s}`,onSwitch:`?${p}`,range:`?${n}`,onRange:`?${p}`,onChange:`?${p}`};r.default={id:l,container:u,url:l,poster:l,type:l,theme:l,lang:l,volume:c,isLive:s,muted:s,autoplay:s,autoSize:s,autoMini:s,loop:s,flip:s,playbackRate:s,aspectRatio:s,screenshot:s,setting:s,hotkey:s,pip:s,mutex:s,backdrop:s,fullscreen:s,fullscreenWeb:s,subtitleOffset:s,miniProgressBar:s,useSSR:s,playsInline:s,lock:s,gesture:s,fastForward:s,autoPlayback:s,autoOrientation:s,airplay:s,proxy:`?${p}`,plugins:[p],layers:[f],contextmenu:[f],settings:[f],controls:[{...f,position:(e,t,r)=>{let a=["top","left","right"];return(0,i.errorHandle)(a.includes(e),`${r.join(".")} only accept ${a.toString()} as parameters`)}}],quality:[{default:`?${s}`,html:l,url:l}],highlight:[{time:c,text:l}],thumbnails:{url:l,number:c,column:c,width:c,height:c,scale:c},subtitle:{url:l,name:l,type:l,style:d,escape:s,encoding:l,onVttLoad:p},moreVideoAttr:d,i18n:d,icons:d,cssVar:d,customType:d}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],atwXQ:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>{let{i18n:r,constructor:{ASPECT_RATIO:a}}=t,o=a.map(e=>`${"default"===e?r.get("Default"):e}`).join("");return{...e,html:`${r.get("Aspect Ratio")}: ${o}`,click:(e,r)=>{let{value:a}=r.target.dataset;a&&(t.aspectRatio=a,e.show=!1)},mounted:e=>{let r=(0,i.query)('[data-value="default"]',e);r&&(0,i.inverseClass)(r,"art-current"),t.on("aspectRatio",t=>{let r=(0,i.queryAll)("span",e).find(e=>e.dataset.value===t);r&&(0,i.inverseClass)(r,"art-current")})}}}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"34cn1":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){return t=>({...e,html:t.i18n.get("Close"),click:e=>{e.show=!1}})}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"4YbBf":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>{let{i18n:r,constructor:{FLIP:a}}=t,o=a.map(e=>`${r.get((0,i.capitalize)(e))}`).join("");return{...e,html:`${r.get("Video Flip")}: ${o}`,click:(e,r)=>{let{value:a}=r.target.dataset;a&&(t.flip=a.toLowerCase(),e.show=!1)},mounted:e=>{let r=(0,i.query)('[data-value="normal"]',e);r&&(0,i.inverseClass)(r,"art-current"),t.on("flip",t=>{let r=(0,i.queryAll)("span",e).find(e=>e.dataset.value===t);r&&(0,i.inverseClass)(r,"art-current")})}}}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],difR5:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){return t=>({...e,html:t.i18n.get("Video Info"),click:e=>{t.info.show=!0,e.show=!1}})}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"2VDwk":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>{let{i18n:r,constructor:{PLAYBACK_RATE:a}}=t,o=a.map(e=>`${1===e?r.get("Normal"):e.toFixed(1)}`).join("");return{...e,html:`${r.get("Play Speed")}: ${o}`,click:(e,r)=>{let{value:a}=r.target.dataset;a&&(t.playbackRate=Number(a),e.show=!1)},mounted:e=>{let r=(0,i.query)('[data-value="1"]',e);r&&(0,i.inverseClass)(r,"art-current"),t.on("video:ratechange",()=>{let r=(0,i.queryAll)("span",e).find(e=>Number(e.dataset.value)===t.playbackRate);r&&(0,i.inverseClass)(r,"art-current")})}}}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],bza1P:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>function(e){return{...e,html:`ArtPlayer ${i.version}`}});var i=e("../../package.json")},{"../../package.json":"2r8Ra","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"8He0l":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("../utils"),n=e("../utils/component"),s=o.interopDefault(n),l=e("./airplay"),c=o.interopDefault(l),d=e("./fullscreen"),p=o.interopDefault(d),u=e("./fullscreenWeb"),f=o.interopDefault(u),h=e("./pip"),m=o.interopDefault(h),g=e("./playAndPause"),v=o.interopDefault(g),y=e("./progress"),b=o.interopDefault(y),x=e("./screenshot"),w=o.interopDefault(x),j=e("./setting"),k=o.interopDefault(j),S=e("./time"),$=o.interopDefault(S),I=e("./volume"),M=o.interopDefault(I);class E extends s.default{constructor(e){super(e),this.isHover=!1,this.name="control",this.timer=Date.now();let{constructor:t}=e,{$player:r,$bottom:a}=this.art.template;e.on("mousemove",()=>{i.isMobile||(this.show=!0)}),e.on("click",()=>{i.isMobile?this.toggle():this.show=!0}),e.on("document:mousemove",e=>{this.isHover=(0,i.includeFromEvent)(e,a)}),e.on("video:timeupdate",()=>{!e.setting.show&&!this.isHover&&!e.isInput&&e.playing&&this.show&&Date.now()-this.timer>=t.CONTROL_HIDE_TIME&&(this.show=!1)}),e.on("control",e=>{e?((0,i.removeClass)(r,"art-hide-cursor"),(0,i.addClass)(r,"art-hover"),this.timer=Date.now()):((0,i.addClass)(r,"art-hide-cursor"),(0,i.removeClass)(r,"art-hover"))}),this.init()}init(){let{option:e}=this.art;e.isLive||this.add((0,b.default)({name:"progress",position:"top",index:10})),this.add({name:"thumbnails",position:"top",index:20}),this.add((0,v.default)({name:"playAndPause",position:"left",index:10})),this.add((0,M.default)({name:"volume",position:"left",index:20})),e.isLive||this.add((0,$.default)({name:"time",position:"left",index:30})),e.quality.length&&(0,i.sleep)().then(()=>{this.art.quality=e.quality}),e.screenshot&&!i.isMobile&&this.add((0,w.default)({name:"screenshot",position:"right",index:20})),e.setting&&this.add((0,k.default)({name:"setting",position:"right",index:30})),e.pip&&this.add((0,m.default)({name:"pip",position:"right",index:40})),e.airplay&&window.WebKitPlaybackTargetAvailabilityEvent&&this.add((0,c.default)({name:"airplay",position:"right",index:50})),e.fullscreenWeb&&this.add((0,f.default)({name:"fullscreenWeb",position:"right",index:60})),e.fullscreen&&this.add((0,p.default)({name:"fullscreen",position:"right",index:70}));for(let t=0;te.selector}),(0,i.def)(r,"$control_item",{get:()=>a}),(0,i.def)(r,"$control_value",{get:()=>o})}let s=a(n,"click",async t=>{let r=(0,i.getComposedPath)(t),a=e.selector.find(e=>e.$control_item===r.find(t=>e.$control_item===t));this.check(a),e.onSelect&&(o.innerHTML=await e.onSelect.call(this.art,a,a.$control_item,t))});r.push(s)}}r.default=E},{"../utils":"ga71d","../utils/component":"hARFP","./airplay":"aJLUA","./fullscreen":"hN3wo","./fullscreenWeb":"9w6yG","./pip":"dPgoc","./playAndPause":"bGr3A","./progress":"aTHK3","./screenshot":"1t1Fe","./setting":"3gKuK","./time":"3kqR1","./volume":"cqTwe","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],aJLUA:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("AirPlay"),mounted:e=>{let{proxy:r,icons:a}=t;(0,i.append)(e,a.airplay),r(e,"click",()=>t.airplay())}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],hN3wo:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("Fullscreen"),mounted:e=>{let{proxy:r,icons:a,i18n:o}=t,n=(0,i.append)(e,a.fullscreenOn),s=(0,i.append)(e,a.fullscreenOff);(0,i.setStyle)(s,"display","none"),r(e,"click",()=>{t.fullscreen=!t.fullscreen}),t.on("fullscreen",t=>{t?((0,i.tooltip)(e,o.get("Exit Fullscreen")),(0,i.setStyle)(n,"display","none"),(0,i.setStyle)(s,"display","inline-flex")):((0,i.tooltip)(e,o.get("Fullscreen")),(0,i.setStyle)(n,"display","inline-flex"),(0,i.setStyle)(s,"display","none"))})}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"9w6yG":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("Web Fullscreen"),mounted:e=>{let{proxy:r,icons:a,i18n:o}=t,n=(0,i.append)(e,a.fullscreenWebOn),s=(0,i.append)(e,a.fullscreenWebOff);(0,i.setStyle)(s,"display","none"),r(e,"click",()=>{t.fullscreenWeb=!t.fullscreenWeb}),t.on("fullscreenWeb",t=>{t?((0,i.tooltip)(e,o.get("Exit Web Fullscreen")),(0,i.setStyle)(n,"display","none"),(0,i.setStyle)(s,"display","inline-flex")):((0,i.tooltip)(e,o.get("Web Fullscreen")),(0,i.setStyle)(n,"display","inline-flex"),(0,i.setStyle)(s,"display","none"))})}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],dPgoc:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("PIP Mode"),mounted:e=>{let{proxy:r,icons:a,i18n:o}=t;(0,i.append)(e,a.pip),r(e,"click",()=>{t.pip=!t.pip}),t.on("pip",t=>{(0,i.tooltip)(e,o.get(t?"Exit PIP Mode":"PIP Mode"))})}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],bGr3A:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,mounted:e=>{let{proxy:r,icons:a,i18n:o}=t,n=(0,i.append)(e,a.play),s=(0,i.append)(e,a.pause);function l(){(0,i.setStyle)(n,"display","flex"),(0,i.setStyle)(s,"display","none")}function c(){(0,i.setStyle)(n,"display","none"),(0,i.setStyle)(s,"display","flex")}(0,i.tooltip)(n,o.get("Play")),(0,i.tooltip)(s,o.get("Pause")),r(n,"click",()=>{t.play()}),r(s,"click",()=>{t.pause()}),t.playing?c():l(),t.on("video:playing",()=>{c()}),t.on("video:pause",()=>{l()})}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],aTHK3:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"getPosFromEvent",()=>n),o.export(r,"setCurrentTime",()=>s),o.export(r,"default",()=>l);var i=e("../utils");function n(e,t){let{$progress:r}=e.template,{left:a}=(0,i.getRect)(r),o=i.isMobile?t.touches[0].clientX:t.clientX,n=(0,i.clamp)(o-a,0,r.clientWidth),s=n/r.clientWidth*e.duration,l=(0,i.secondToTime)(s),c=(0,i.clamp)(n/r.clientWidth,0,1);return{second:s,time:l,width:n,percentage:c}}function s(e,t){if(e.isRotate){let r=t.touches[0].clientY/e.height,a=r*e.duration;e.emit("setBar","played",r,t),e.seek=a}else{let{second:r,percentage:a}=n(e,t);e.emit("setBar","played",a,t),e.seek=r}}function l(e){return t=>{let{icons:r,option:a,proxy:o}=t;return{...e,html:`
`,mounted:e=>{let l=null,c=!1,d=(0,i.query)(".art-progress-hover",e),p=(0,i.query)(".art-progress-loaded",e),u=(0,i.query)(".art-progress-played",e),f=(0,i.query)(".art-progress-highlight",e),h=(0,i.query)(".art-progress-indicator",e),m=(0,i.query)(".art-progress-tip",e);function g(r,a){let{width:o,time:s}=a||n(t,r);m.textContent=s;let l=m.clientWidth;o<=l/2?(0,i.setStyle)(m,"left",0):o>e.clientWidth-l/2?(0,i.setStyle)(m,"left",`${e.clientWidth-l}px`):(0,i.setStyle)(m,"left",`${o-l/2}px`)}r.indicator?(0,i.append)(h,r.indicator):(0,i.setStyle)(h,"backgroundColor","var(--art-theme)"),t.on("setBar",function(r,a,o){let n="played"===r&&o&&i.isMobile;"loaded"===r&&(0,i.setStyle)(p,"width",`${100*a}%`),"hover"===r&&(0,i.setStyle)(d,"width",`${100*a}%`),"played"===r&&((0,i.setStyle)(u,"width",`${100*a}%`),(0,i.setStyle)(h,"left",`${100*a}%`)),n&&((0,i.setStyle)(m,"display","flex"),g(o,{width:e.clientWidth*a,time:(0,i.secondToTime)(a*t.duration)}),clearTimeout(l),l=setTimeout(()=>{(0,i.setStyle)(m,"display","none")},500))}),t.on("video:loadedmetadata",function(){f.textContent="";for(let e=0;e`;(0,i.append)(f,n)}}),t.constructor.USE_RAF?t.on("raf",()=>{t.emit("setBar","played",t.played),t.emit("setBar","loaded",t.loaded)}):(t.on("video:timeupdate",()=>{t.emit("setBar","played",t.played)}),t.on("video:progress",()=>{t.emit("setBar","loaded",t.loaded)}),t.on("video:ended",()=>{t.emit("setBar","played",1)})),t.emit("setBar","loaded",t.loaded||0),i.isMobile||(o(e,"click",e=>{e.target!==h&&s(t,e)}),o(e,"mousemove",r=>{let{percentage:a}=n(t,r);if(t.emit("setBar","hover",a,r),(0,i.setStyle)(m,"display","flex"),(0,i.includeFromEvent)(r,f)){let{width:a}=n(t,r),{text:o}=r.target.dataset;m.textContent=o;let s=m.clientWidth;a<=s/2?(0,i.setStyle)(m,"left",0):a>e.clientWidth-s/2?(0,i.setStyle)(m,"left",`${e.clientWidth-s}px`):(0,i.setStyle)(m,"left",`${a-s/2}px`)}else g(r)}),o(e,"mouseleave",e=>{(0,i.setStyle)(m,"display","none"),t.emit("setBar","hover",0,e)}),o(e,"mousedown",e=>{c=0===e.button}),t.on("document:mousemove",e=>{if(c){let{second:r,percentage:a}=n(t,e);t.emit("setBar","played",a,e),t.seek=r}}),t.on("document:mouseup",()=>{c&&(c=!1)}))}}}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"1t1Fe":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("Screenshot"),mounted:e=>{let{proxy:r,icons:a}=t;(0,i.append)(e,a.screenshot),r(e,"click",()=>{t.screenshot()})}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"3gKuK":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("Show Setting"),mounted:e=>{let{proxy:r,icons:a,i18n:o}=t;(0,i.append)(e,a.setting),r(e,"click",()=>{t.setting.toggle(),t.setting.resize()}),t.on("setting",t=>{(0,i.tooltip)(e,o.get(t?"Hide Setting":"Show Setting"))})}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"3kqR1":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,style:i.isMobile?{fontSize:"12px",padding:"0 5px"}:{cursor:"auto",padding:"0 10px"},mounted:e=>{function r(){let r=`${(0,i.secondToTime)(t.currentTime)} / ${(0,i.secondToTime)(t.duration)}`;r!==e.textContent&&(e.textContent=r)}r();let a=["video:loadedmetadata","video:timeupdate","video:progress"];for(let e=0;en);var i=e("../utils");function n(e){return t=>({...e,mounted:e=>{let{proxy:r,icons:a}=t,o=(0,i.append)(e,a.volume),n=(0,i.append)(e,a.volumeClose),s=(0,i.append)(e,'
'),l=(0,i.append)(s,'
'),c=(0,i.append)(l,'
'),d=(0,i.append)(l,'
'),p=(0,i.append)(d,'
'),u=(0,i.append)(p,'
'),f=(0,i.append)(d,'
');function h(e){let{top:t,height:r}=(0,i.getRect)(d);return 1-(e.clientY-t)/r}function m(){if(t.muted||0===t.volume)(0,i.setStyle)(o,"display","none"),(0,i.setStyle)(n,"display","flex"),(0,i.setStyle)(f,"top","100%"),(0,i.setStyle)(u,"top","100%"),c.textContent=0;else{let e=100*t.volume;(0,i.setStyle)(o,"display","flex"),(0,i.setStyle)(n,"display","none"),(0,i.setStyle)(f,"top",`${100-e}%`),(0,i.setStyle)(u,"top",`${100-e}%`),c.textContent=Math.floor(e)}}if(m(),t.on("video:volumechange",m),r(o,"click",()=>{t.muted=!0}),r(n,"click",()=>{t.muted=!1}),i.isMobile)(0,i.setStyle)(s,"display","none");else{let e=!1;r(d,"mousedown",r=>{e=0===r.button,t.volume=h(r)}),t.on("document:mousemove",r=>{e&&(t.muted=!1,t.volume=h(r))}),t.on("document:mouseup",()=>{e&&(e=!1)})}}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],eFzfA:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("./clickInit"),n=o.interopDefault(i),s=e("./gestureInit"),l=o.interopDefault(s),c=e("./globalInit"),d=o.interopDefault(c),p=e("./hoverInit"),u=o.interopDefault(p),f=e("./moveInit"),h=o.interopDefault(f),m=e("./resizeInit"),g=o.interopDefault(m),v=e("./updateInit"),y=o.interopDefault(v),b=e("./viewInit"),x=o.interopDefault(b);r.default=class{constructor(e){this.destroyEvents=[],this.proxy=this.proxy.bind(this),this.hover=this.hover.bind(this),(0,n.default)(e,this),(0,u.default)(e,this),(0,h.default)(e,this),(0,g.default)(e,this),(0,l.default)(e,this),(0,x.default)(e,this),(0,d.default)(e,this),(0,y.default)(e,this)}proxy(e,t,r,a={}){if(Array.isArray(t))return t.map(t=>this.proxy(e,t,r,a));e.addEventListener(t,r,a);let o=()=>e.removeEventListener(t,r,a);return this.destroyEvents.push(o),o}hover(e,t,r){t&&this.proxy(e,"mouseenter",t),r&&this.proxy(e,"mouseleave",r)}remove(e){let t=this.destroyEvents.indexOf(e);t>-1&&(e(),this.destroyEvents.splice(t,1))}destroy(){for(let e=0;en);var i=e("../utils");function n(e,t){let{constructor:r,template:{$player:a,$video:o}}=e;function n(t){(0,i.includeFromEvent)(t,a)?(e.isInput="INPUT"===t.target.tagName,e.isFocus=!0,e.emit("focus",t)):(e.isInput=!1,e.isFocus=!1,e.emit("blur",t))}e.on("document:click",n),e.on("document:contextmenu",n);let s=[];t.proxy(o,"click",t=>{let a=Date.now();s.push(a);let{MOBILE_CLICK_PLAY:o,DBCLICK_TIME:n,MOBILE_DBCLICK_PLAY:l,DBCLICK_FULLSCREEN:c}=r,d=s.filter(e=>a-e<=n);switch(d.length){case 1:e.emit("click",t),i.isMobile?!e.isLock&&o&&e.toggle():e.toggle(),s=d;break;case 2:e.emit("dblclick",t),i.isMobile?!e.isLock&&l&&e.toggle():c&&(e.fullscreen=!e.fullscreen),s=[];break;default:s=[]}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"7AgpD":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>s);var i=e("../control/progress"),n=e("../utils");function s(e,t){if(n.isMobile&&!e.option.isLive){let{$video:r,$progress:a}=e.template,o=null,s=!1,l=0,c=0,d=0,p=t=>{if(1===t.touches.length&&!e.isLock){o===a&&(0,i.setCurrentTime)(e,t),s=!0;let{pageX:r,pageY:n}=t.touches[0];l=r,c=n,d=e.currentTime}},u=t=>{if(1===t.touches.length&&s&&e.duration){let{pageX:a,pageY:i}=t.touches[0],s=function(e,t,r,a){let o=t-a,i=r-e,n=0;if(2>Math.abs(i)&&2>Math.abs(o))return n;let s=180*Math.atan2(o,i)/Math.PI;return s>=-45&&s<45?n=4:s>=45&&s<135?n=1:s>=-135&&s<-45?n=2:(s>=135&&s<=180||s>=-180&&s<-135)&&(n=3),n}(l,c,a,i),p=[3,4].includes(s),u=[1,2].includes(s);if(p&&!e.isRotate||u&&e.isRotate){let s=(0,n.clamp)((a-l)/e.width,-1,1),p=(0,n.clamp)((i-c)/e.height,-1,1),u=e.isRotate?p:s,f=o===r?e.constructor.TOUCH_MOVE_RATIO:1,h=(0,n.clamp)(d+e.duration*u*f,0,e.duration);e.seek=h,e.emit("setBar","played",(0,n.clamp)(h/e.duration,0,1),t),e.notice.show=`${(0,n.secondToTime)(h)} / ${(0,n.secondToTime)(e.duration)}`}}};e.option.gesture&&(t.proxy(r,"touchstart",e=>{o=r,p(e)}),t.proxy(r,"touchmove",u)),t.proxy(a,"touchstart",e=>{o=a,p(e)}),t.proxy(a,"touchmove",u),e.on("document:touchend",()=>{s&&(l=0,c=0,d=0,s=!1,o=null)})}}},{"../control/progress":"aTHK3","../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],k05ig:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e,t){let r=["click","mouseup","keydown","touchend","touchmove","mousemove","contextmenu","webkitfullscreenchange"],a=["resize","scroll","orientationchange"],o=[];function i(n={}){for(let e=0;e{let a=n.document||s.ownerDocument||document,i=t.proxy(a,r,t=>{e.emit(`document:${r}`,t)});o.push(i)}),a.forEach(r=>{let a=n.window||s.ownerDocument?.defaultView||window,i=t.proxy(a,r,t=>{e.emit(`window:${r}`,t)});o.push(i)})}i(),t.bindGlobalEvents=i}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"34Nn1":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e,t){let{$player:r}=e.template;t.hover(r,t=>{(0,i.addClass)(r,"art-hover"),e.emit("hover",!0,t)},t=>{(0,i.removeClass)(r,"art-hover"),e.emit("hover",!1,t)})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"1n1rp":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e,t){let{$player:r}=e.template;t.proxy(r,"mousemove",t=>{e.emit("mousemove",t)})}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],gfqtJ:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e,t){let{option:r,constructor:a}=e;e.on("resize",()=>{let{aspectRatio:t,notice:a}=e;"standard"===e.state&&r.autoSize&&e.autoSize(),e.aspectRatio=t,a.show=""});let o=(0,i.debounce)(()=>e.emit("resize"),a.RESIZE_TIME);e.on("window:orientationchange",()=>o()),e.on("window:resize",()=>o()),screen&&screen.orientation&&screen.orientation.onchange&&t.proxy(screen.orientation,"change",()=>o())}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],g3KXr:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){if(e.constructor.USE_RAF){let t=null;!function r(){e.playing&&e.emit("raf"),e.isDestroy||(t=requestAnimationFrame(r))}(),e.on("destroy",()=>{cancelAnimationFrame(t)})}}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],kPVx0:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{option:t,constructor:r,template:{$container:a}}=e,o=(0,i.throttle)(()=>{e.emit("view",(0,i.isInViewport)(a,r.SCROLL_GAP))},r.SCROLL_TIME);e.on("window:scroll",()=>o()),e.on("view",r=>{t.autoMini&&(e.mini=!r)})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],aLFu1:[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);var o=e("./utils");r.default=class{constructor(e){this.art=e,this.keys={},e.option.hotkey&&!o.isMobile&&this.init()}init(){let{constructor:e}=this.art;this.add("Escape",()=>{this.art.fullscreenWeb&&(this.art.fullscreenWeb=!1)}),this.add("Space",()=>{this.art.toggle()}),this.add("ArrowLeft",()=>{this.art.backward=e.SEEK_STEP}),this.add("ArrowUp",()=>{this.art.volume+=e.VOLUME_STEP}),this.add("ArrowRight",()=>{this.art.forward=e.SEEK_STEP}),this.add("ArrowDown",()=>{this.art.volume-=e.VOLUME_STEP}),this.art.on("document:keydown",e=>{if(this.art.isFocus){let t=document.activeElement.tagName.toUpperCase(),r=document.activeElement.getAttribute("contenteditable");if("INPUT"!==t&&"TEXTAREA"!==t&&""!==r&&"true"!==r&&!e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey){let t=this.keys[e.code];if(t){e.preventDefault();for(let r=0;r(0,ei.getIcon)(e,t[e])})}}},{"bundle-text:./airplay.svg":"6cSMf","bundle-text:./arrow-left.svg":"joLIU","bundle-text:./arrow-right.svg":"4JNCR","bundle-text:./aspect-ratio.svg":"gzgBo","bundle-text:./check.svg":"k53Iw","bundle-text:./close.svg":"bbb2e","bundle-text:./config.svg":"bMazo","bundle-text:./error.svg":"58f4C","bundle-text:./flip.svg":"iIgzx","bundle-text:./fullscreen-off.svg":"cPRy5","bundle-text:./fullscreen-on.svg":"3XKQU","bundle-text:./fullscreen-web-off.svg":"guowG","bundle-text:./fullscreen-web-on.svg":"iSqKG","bundle-text:./loading.svg":"eSbu5","bundle-text:./lock.svg":"2D7et","bundle-text:./pause.svg":"iiALA","bundle-text:./pip.svg":"hdXSq","bundle-text:./play.svg":"jlvhb","bundle-text:./playback-rate.svg":"4bsv1","bundle-text:./screenshot.svg":"7SMEz","bundle-text:./setting.svg":"hdzYd","bundle-text:./state.svg":"2Aoc0","bundle-text:./switch-off.svg":"kDa5R","bundle-text:./switch-on.svg":"74Jrq","bundle-text:./unlock.svg":"YvH9I","bundle-text:./volume-close.svg":"fHhw4","bundle-text:./volume.svg":"k9IJR","../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"6cSMf":[function(e,t,r,a){t.exports=''},{}],joLIU:[function(e,t,r,a){t.exports=''},{}],"4JNCR":[function(e,t,r,a){t.exports=''},{}],gzgBo:[function(e,t,r,a){t.exports=''},{}],k53Iw:[function(e,t,r,a){t.exports=''},{}],bbb2e:[function(e,t,r,a){t.exports=''},{}],bMazo:[function(e,t,r,a){t.exports=''},{}],"58f4C":[function(e,t,r,a){t.exports=''},{}],iIgzx:[function(e,t,r,a){t.exports=''},{}],cPRy5:[function(e,t,r,a){t.exports=''},{}],"3XKQU":[function(e,t,r,a){t.exports=''},{}],guowG:[function(e,t,r,a){t.exports=''},{}],iSqKG:[function(e,t,r,a){t.exports=''},{}],eSbu5:[function(e,t,r,a){t.exports=''},{}],"2D7et":[function(e,t,r,a){t.exports=''},{}],iiALA:[function(e,t,r,a){t.exports=''},{}],hdXSq:[function(e,t,r,a){t.exports=''},{}],jlvhb:[function(e,t,r,a){t.exports=''},{}],"4bsv1":[function(e,t,r,a){t.exports=''},{}],"7SMEz":[function(e,t,r,a){t.exports=''},{}],hdzYd:[function(e,t,r,a){t.exports=''},{}],"2Aoc0":[function(e,t,r,a){t.exports=''},{}],kDa5R:[function(e,t,r,a){t.exports=''},{}],"74Jrq":[function(e,t,r,a){t.exports=''},{}],YvH9I:[function(e,t,r,a){t.exports=''},{}],fHhw4:[function(e,t,r,a){t.exports=''},{}],k9IJR:[function(e,t,r,a){t.exports=''},{}],cUKxy:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("./utils"),n=e("./utils/component"),s=o.interopDefault(n);class l extends s.default{constructor(e){super(e),this.name="info",i.isMobile||this.init()}init(){let{proxy:e,constructor:t,template:{$infoPanel:r,$infoClose:a,$video:o}}=this.art;e(a,"click",()=>{this.show=!1});let n=null,s=(0,i.queryAll)("[data-video]",r)||[];this.art.on("destroy",()=>clearTimeout(n)),!function e(){for(let e=0;e{(0,i.setStyle)(o,"display","none"),(0,i.setStyle)(n,"display",null)}),a.proxy(t.$state,"click",()=>e.play())}}r.default=l},{"./utils":"ga71d","./utils/component":"hARFP","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],qalnP:[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);var o=e("./utils");r.default=class{constructor(e){this.art=e,this.timer=null}set show(e){let{constructor:t,template:{$player:r,$noticeInner:a}}=this.art;e?(a.textContent=e instanceof Error?e.message.trim():e,(0,o.addClass)(r,"art-notice-show"),clearTimeout(this.timer),this.timer=setTimeout(()=>{a.textContent="",(0,o.removeClass)(r,"art-notice-show")},t.NOTICE_TIME)):(0,o.removeClass)(r,"art-notice-show")}get show(){let{template:{$player:e}}=this.art;return e.classList.contains("art-notice-show")}}},{"./utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],hZaaw:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("./airplayMix"),n=o.interopDefault(i),s=e("./aspectRatioMix"),l=o.interopDefault(s),c=e("./attrMix"),d=o.interopDefault(c),p=e("./autoHeightMix"),u=o.interopDefault(p),f=e("./autoSizeMix"),h=o.interopDefault(f),m=e("./cssVarMix"),g=o.interopDefault(m),v=e("./currentTimeMix"),y=o.interopDefault(v),b=e("./durationMix"),x=o.interopDefault(b),w=e("./eventInit"),j=o.interopDefault(w),k=e("./flipMix"),S=o.interopDefault(k),$=e("./fullscreenMix"),I=o.interopDefault($),M=e("./fullscreenWebMix"),E=o.interopDefault(M),T=e("./loadedMix"),C=o.interopDefault(T),F=e("./miniMix"),A=o.interopDefault(F),D=e("./optionInit"),R=o.interopDefault(D),W=e("./pauseMix"),L=o.interopDefault(W),P=e("./pipMix"),O=o.interopDefault(P),z=e("./playbackRateMix"),H=o.interopDefault(z),_=e("./playedMix"),q=o.interopDefault(_),V=e("./playingMix"),N=o.interopDefault(V),Q=e("./playMix"),B=o.interopDefault(Q),U=e("./posterMix"),Y=o.interopDefault(U),Z=e("./qualityMix"),X=o.interopDefault(Z),K=e("./rectMix"),G=o.interopDefault(K),J=e("./screenshotMix"),ee=o.interopDefault(J),et=e("./seekMix"),er=o.interopDefault(et),ea=e("./stateMix"),eo=o.interopDefault(ea),ei=e("./subtitleOffsetMix"),en=o.interopDefault(ei),es=e("./switchMix"),el=o.interopDefault(es),ec=e("./themeMix"),ed=o.interopDefault(ec),ep=e("./thumbnailsMix"),eu=o.interopDefault(ep),ef=e("./toggleMix"),eh=o.interopDefault(ef),em=e("./typeMix"),eg=o.interopDefault(em),ev=e("./urlMix"),ey=o.interopDefault(ev),eb=e("./volumeMix"),ex=o.interopDefault(eb);r.default=class{constructor(e){(0,ey.default)(e),(0,d.default)(e),(0,B.default)(e),(0,L.default)(e),(0,eh.default)(e),(0,er.default)(e),(0,ex.default)(e),(0,y.default)(e),(0,x.default)(e),(0,el.default)(e),(0,H.default)(e),(0,l.default)(e),(0,ee.default)(e),(0,I.default)(e),(0,E.default)(e),(0,O.default)(e),(0,C.default)(e),(0,q.default)(e),(0,N.default)(e),(0,h.default)(e),(0,G.default)(e),(0,S.default)(e),(0,A.default)(e),(0,Y.default)(e),(0,u.default)(e),(0,g.default)(e),(0,ed.default)(e),(0,eg.default)(e),(0,eo.default)(e),(0,en.default)(e),(0,n.default)(e),(0,X.default)(e),(0,eu.default)(e),(0,j.default)(e),(0,R.default)(e)}}},{"./airplayMix":"3IeSh","./aspectRatioMix":"bFvhq","./attrMix":"gAL4f","./autoHeightMix":"3icDv","./autoSizeMix":"1S8RZ","./cssVarMix":"OAYvI","./currentTimeMix":"8HvEc","./durationMix":"9MX8B","./eventInit":"8tgU8","./flipMix":"b5r8r","./fullscreenMix":"30dhw","./fullscreenWebMix":"3yxCW","./loadedMix":"fZNfw","./miniMix":"1IZ8F","./optionInit":"kk3GB","./pauseMix":"hCnBa","./pipMix":"7cdWF","./playbackRateMix":"v7Tjj","./playedMix":"6NJ76","./playingMix":"hS5cB","./playMix":"RTHaZ","./posterMix":"iQk0e","./qualityMix":"fbmk7","./rectMix":"clzGw","./screenshotMix":"egOBC","./seekMix":"aGOdO","./stateMix":"f5ksL","./subtitleOffsetMix":"eVqE5","./switchMix":"hXXTl","./themeMix":"9kb19","./thumbnailsMix":"cICxL","./toggleMix":"ifRrM","./typeMix":"kUOhk","./urlMix":"7uCXi","./volumeMix":"dzR4V","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"3IeSh":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,notice:r,proxy:a,template:{$video:o}}=e,n=!0;window.WebKitPlaybackTargetAvailabilityEvent&&o.webkitShowPlaybackTargetPicker?a(o,"webkitplaybacktargetavailabilitychanged",e=>{switch(e.availability){case"available":n=!0;break;case"not-available":n=!1}}):n=!1,(0,i.def)(e,"airplay",{value(){n?(o.webkitShowPlaybackTargetPicker(),e.emit("airplay")):r.show=t.get("AirPlay Not Available")}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],bFvhq:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,notice:r,template:{$video:a,$player:o}}=e;(0,i.def)(e,"aspectRatio",{get:()=>o.dataset.aspectRatio||"default",set(n){if(n||(n="default"),"default"===n)(0,i.setStyle)(a,"width",null),(0,i.setStyle)(a,"height",null),(0,i.setStyle)(a,"margin",null),delete o.dataset.aspectRatio;else{let e=n.split(":").map(Number),{clientWidth:t,clientHeight:r}=o,s=e[0]/e[1];t/r>s?((0,i.setStyle)(a,"width",`${s*r}px`),(0,i.setStyle)(a,"height","100%"),(0,i.setStyle)(a,"margin","0 auto")):((0,i.setStyle)(a,"width","100%"),(0,i.setStyle)(a,"height",`${t/s}px`),(0,i.setStyle)(a,"margin","auto 0")),o.dataset.aspectRatio=n}r.show=`${t.get("Aspect Ratio")}: ${"default"===n?t.get("Default"):n}`,e.emit("aspectRatio",n)}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],gAL4f:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$video:t}}=e;(0,i.def)(e,"attr",{value(e,r){if(void 0===r)return t[e];t[e]=r}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"3icDv":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$container:t,$video:r}}=e;(0,i.def)(e,"autoHeight",{value(){let{clientWidth:a}=t,{videoHeight:o,videoWidth:n}=r,s=a/n*o;(0,i.setStyle)(t,"height",`${s}px`),e.emit("autoHeight",s)}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"1S8RZ":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$container:t,$player:r,$video:a}=e.template;(0,i.def)(e,"autoSize",{value(){let{videoWidth:o,videoHeight:n}=a,{width:s,height:l}=(0,i.getRect)(t),c=o/n;s/l>c?((0,i.setStyle)(r,"width",`${l*c/s*100}%`),(0,i.setStyle)(r,"height","100%")):((0,i.setStyle)(r,"width","100%"),(0,i.setStyle)(r,"height",`${s/c/l*100}%`)),e.emit("autoSize",{width:e.width,height:e.height})}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],OAYvI:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$player:t}=e.template;(0,i.def)(e,"cssVar",{value:(e,r)=>r?t.style.setProperty(e,r):getComputedStyle(t).getPropertyValue(e)})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"8HvEc":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$video:t}=e.template;(0,i.def)(e,"currentTime",{get:()=>t.currentTime||0,set:r=>{Number.isNaN(r=Number.parseFloat(r))||(t.currentTime=(0,i.clamp)(r,0,e.duration))}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"9MX8B":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"duration",{get:()=>{let{duration:t}=e.template.$video;return t===1/0?0:t||0}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"8tgU8":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>l);var i=e("../config"),n=o.interopDefault(i),s=e("../utils");function l(e){let{i18n:t,notice:r,option:a,constructor:o,proxy:i,template:{$player:l,$video:c,$poster:d}}=e,p=0;for(let t=0;t{e.emit(`video:${t.type}`,t)});e.on("video:canplay",()=>{p=0,e.loading.show=!1}),e.once("video:canplay",()=>{e.loading.show=!1,e.controls.show=!0,e.mask.show=!0,e.isReady=!0,e.emit("ready")}),e.on("video:ended",()=>{a.loop?(e.seek=0,e.play(),e.controls.show=!1,e.mask.show=!1):(e.controls.show=!0,e.mask.show=!0)}),e.on("video:error",async i=>{p{e.emit("resize"),s.isMobile&&(e.loading.show=!1,e.controls.show=!0,e.mask.show=!0)}),e.on("video:loadstart",()=>{e.loading.show=!0,e.mask.show=!1,e.controls.show=!0}),e.on("video:pause",()=>{e.controls.show=!0,e.mask.show=!0}),e.on("video:play",()=>{e.mask.show=!1,(0,s.setStyle)(d,"display","none")}),e.on("video:playing",()=>{e.mask.show=!1}),e.on("video:progress",()=>{e.playing&&(e.loading.show=!1)}),e.on("video:seeked",()=>{e.loading.show=!1,e.mask.show=!0}),e.on("video:seeking",()=>{e.loading.show=!0,e.mask.show=!1}),e.on("video:timeupdate",()=>{e.mask.show=!1}),e.on("video:waiting",()=>{e.loading.show=!0,e.mask.show=!1})}},{"../config":"7jhZp","../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],b5r8r:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$player:t},i18n:r,notice:a}=e;(0,i.def)(e,"flip",{get:()=>t.dataset.flip||"normal",set(o){o||(o="normal"),"normal"===o?delete t.dataset.flip:t.dataset.flip=o,a.show=`${r.get("Video Flip")}: ${r.get((0,i.capitalize)(o))}`,e.emit("flip",o)}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"30dhw":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>l);var i=e("../libs/screenfull"),n=o.interopDefault(i),s=e("../utils");function l(e){let{i18n:t,notice:r,template:{$video:a,$player:o}}=e;e.once("video:loadedmetadata",()=>{n.default.isEnabled?(n.default.on("change",()=>{e.emit("fullscreen",n.default.isFullscreen),n.default.isFullscreen?(e.state="fullscreen",(0,s.addClass)(o,"art-fullscreen")):(0,s.removeClass)(o,"art-fullscreen"),e.emit("resize")}),n.default.on("error",t=>{e.emit("fullscreenError",t)}),(0,s.def)(e,"fullscreen",{get:()=>n.default.isFullscreen,async set(e){e?await n.default.request(o):await n.default.exit()}})):a.webkitSupportsFullscreen?(e.on("document:webkitfullscreenchange",()=>{e.emit("fullscreen",e.fullscreen),e.emit("resize")}),(0,s.def)(e,"fullscreen",{get:()=>document.fullscreenElement===a,set(t){t?(e.state="fullscreen",a.webkitEnterFullscreen()):a.webkitExitFullscreen()}})):(0,s.def)(e,"fullscreen",{get:()=>!1,set(){r.show=t.get("Fullscreen Not Supported")}}),(0,s.def)(e,"fullscreen",(0,s.get)(e,"fullscreen"))})}},{"../libs/screenfull":"8DIfy","../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"8DIfy":[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);let o=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],i=(()=>{if("undefined"==typeof document)return!1;let e=o[0],t={};for(let r of o)if(r[1]in document){for(let[a,o]of r.entries())t[e[a]]=o;return t}return!1})(),n={change:i.fullscreenchange,error:i.fullscreenerror},s={request:(e=document.documentElement,t)=>new Promise((r,a)=>{let o=()=>{s.off("change",o),r()};s.on("change",o);let n=e[i.requestFullscreen](t);n instanceof Promise&&n.then(o).catch(a)}),exit:()=>new Promise((e,t)=>{if(!s.isFullscreen)return void e();let r=()=>{s.off("change",r),e()};s.on("change",r);let a=document[i.exitFullscreen]();a instanceof Promise&&a.then(r).catch(t)}),toggle:(e,t)=>s.isFullscreen?s.exit():s.request(e,t),onchange(e){s.on("change",e)},onerror(e){s.on("error",e)},on(e,t){let r=n[e];r&&document.addEventListener(r,t,!1)},off(e,t){let r=n[e];r&&document.removeEventListener(r,t,!1)},raw:i};Object.defineProperties(s,{isFullscreen:{get:()=>!!document[i.fullscreenElement]},element:{enumerable:!0,get:()=>document[i.fullscreenElement]},isEnabled:{enumerable:!0,get:()=>!!document[i.fullscreenEnabled]}}),i||(s.isEnabled=!1),r.default=s},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"3yxCW":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{constructor:t,template:{$container:r,$player:a}}=e,o="";(0,i.def)(e,"fullscreenWeb",{get:()=>(0,i.hasClass)(a,"art-fullscreen-web"),set(n){n?(o=a.style.cssText,t.FULLSCREEN_WEB_IN_BODY&&(0,i.append)(document.body,a),e.state="fullscreenWeb",(0,i.setStyle)(a,"width","100%"),(0,i.setStyle)(a,"height","100%"),(0,i.addClass)(a,"art-fullscreen-web"),e.emit("fullscreenWeb",!0)):(t.FULLSCREEN_WEB_IN_BODY&&(0,i.append)(r,a),o&&(a.style.cssText=o,o=""),(0,i.removeClass)(a,"art-fullscreen-web"),e.emit("fullscreenWeb",!1)),e.emit("resize")}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],fZNfw:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$video:t}=e.template;(0,i.def)(e,"loaded",{get:()=>e.loadedTime/t.duration}),(0,i.def)(e,"loadedTime",{get:()=>t.buffered.length?t.buffered.end(t.buffered.length-1):0})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"1IZ8F":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{icons:t,proxy:r,storage:a,template:{$player:o,$video:n}}=e,s=!1,l=0,c=0;function d(){let{$mini:t}=e.template;t&&((0,i.removeClass)(o,"art-mini"),(0,i.setStyle)(t,"display","none"),o.prepend(n),e.emit("mini",!1))}function p(t,r){e.playing?((0,i.setStyle)(t,"display","none"),(0,i.setStyle)(r,"display","flex")):((0,i.setStyle)(t,"display","flex"),(0,i.setStyle)(r,"display","none"))}function u(){let{$mini:t}=e.template,r=(0,i.getRect)(t),o=window.innerHeight-r.height-50,n=window.innerWidth-r.width-50;a.set("top",o),a.set("left",n),(0,i.setStyle)(t,"top",`${o}px`),(0,i.setStyle)(t,"left",`${n}px`)}(0,i.def)(e,"mini",{get:()=>(0,i.hasClass)(o,"art-mini"),set(f){if(f){e.state="mini",(0,i.addClass)(o,"art-mini");let f=function(){let{$mini:o}=e.template;if(o)return(0,i.append)(o,n),(0,i.setStyle)(o,"display","flex");{let o=(0,i.createElement)("div");(0,i.addClass)(o,"art-mini-popup"),(0,i.append)(document.body,o),e.template.$mini=o,(0,i.append)(o,n);let u=(0,i.append)(o,'
');(0,i.append)(u,t.close),r(u,"click",d);let f=(0,i.append)(o,'
'),h=(0,i.append)(f,t.play),m=(0,i.append)(f,t.pause);return r(h,"click",()=>e.play()),r(m,"click",()=>e.pause()),p(h,m),e.on("video:playing",()=>p(h,m)),e.on("video:pause",()=>p(h,m)),e.on("video:timeupdate",()=>p(h,m)),r(o,"mousedown",e=>{s=0===e.button,l=e.pageX,c=e.pageY}),e.on("document:mousemove",e=>{if(s){(0,i.addClass)(o,"art-mini-dragging");let t=e.pageX-l,r=e.pageY-c;(0,i.setStyle)(o,"transform",`translate(${t}px, ${r}px)`)}}),e.on("document:mouseup",()=>{if(s){s=!1,(0,i.removeClass)(o,"art-mini-dragging");let e=(0,i.getRect)(o);a.set("left",e.left),a.set("top",e.top),(0,i.setStyle)(o,"left",`${e.left}px`),(0,i.setStyle)(o,"top",`${e.top}px`),(0,i.setStyle)(o,"transform",null)}}),o}}(),h=a.get("top"),m=a.get("left");"number"==typeof h&&"number"==typeof m?((0,i.setStyle)(f,"top",`${h}px`),(0,i.setStyle)(f,"left",`${m}px`),(0,i.isInViewport)(f)||u()):u(),e.emit("mini",!0)}else d()}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],kk3GB:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{option:t,storage:r,template:{$video:a,$poster:o}}=e;for(let r in t.moreVideoAttr)e.attr(r,t.moreVideoAttr[r]);t.muted&&(e.muted=t.muted),t.volume&&(a.volume=(0,i.clamp)(t.volume,0,1));let n=r.get("volume");for(let r in"number"==typeof n&&(a.volume=(0,i.clamp)(n,0,1)),t.poster&&(0,i.setStyle)(o,"backgroundImage",`url(${t.poster})`),t.autoplay&&(a.autoplay=t.autoplay),t.playsInline&&(a.playsInline=!0,a["webkit-playsinline"]=!0),t.theme&&(t.cssVar["--art-theme"]=t.theme),t.cssVar)e.cssVar(r,t.cssVar[r]);e.url=t.url}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],hCnBa:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$video:t},i18n:r,notice:a}=e;(0,i.def)(e,"pause",{value(){let o=t.pause();return a.show=r.get("Pause"),e.emit("pause"),o}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"7cdWF":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,notice:r,template:{$video:a}}=e;if(document.pictureInPictureEnabled){let{template:{$video:t},proxy:r,notice:a}=e;t.disablePictureInPicture=!1,(0,i.def)(e,"pip",{get:()=>document.pictureInPictureElement,set(r){r?(e.state="pip",t.requestPictureInPicture().catch(e=>{throw a.show=e,e})):document.exitPictureInPicture().catch(e=>{throw a.show=e,e})}}),r(t,"enterpictureinpicture",()=>{e.emit("pip",!0)}),r(t,"leavepictureinpicture",()=>{e.emit("pip",!1)})}else if(a.webkitSupportsPresentationMode){let{$video:t}=e.template;t.webkitSetPresentationMode("inline"),(0,i.def)(e,"pip",{get:()=>"picture-in-picture"===t.webkitPresentationMode,set(r){r?(e.state="pip",t.webkitSetPresentationMode("picture-in-picture"),e.emit("pip",!0)):(t.webkitSetPresentationMode("inline"),e.emit("pip",!1))}})}else(0,i.def)(e,"pip",{get:()=>!1,set(){r.show=t.get("PIP Not Supported")}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],v7Tjj:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$video:t},i18n:r,notice:a}=e;(0,i.def)(e,"playbackRate",{get:()=>t.playbackRate,set(o){o?o!==t.playbackRate&&(t.playbackRate=o,a.show=`${r.get("Rate")}: ${1===o?r.get("Normal"):`${o}x`}`):e.playbackRate=1}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"6NJ76":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"played",{get:()=>e.currentTime/e.duration})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],hS5cB:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$video:t}=e.template;(0,i.def)(e,"playing",{get:()=>"boolean"==typeof t.playing?t.playing:!!(t.currentTime>0&&!t.paused&&!t.ended&&t.readyState>2)})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],RTHaZ:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,notice:r,option:a,constructor:{instances:o},template:{$video:n}}=e;(0,i.def)(e,"play",{async value(){let i=await n.play();if(r.show=t.get("Play"),e.emit("play"),a.mutex)for(let t=0;tn);var i=e("../utils");function n(e){let{template:{$poster:t}}=e;(0,i.def)(e,"poster",{get:()=>{try{return t.style.backgroundImage.match(/"(.*)"/)[1]}catch{return""}},set(e){(0,i.setStyle)(t,"backgroundImage",`url(${e})`)}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],fbmk7:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"quality",{set(t){let{controls:r,notice:a,i18n:o}=e,i=t.find(e=>e.default)||t[0];r.update({name:"quality",position:"right",index:10,style:{marginRight:"10px"},html:i?.html||"",selector:t,onSelect:async t=>(await e.switchQuality(t.url),a.show=`${o.get("Switch Video")}: ${t.html}`,t.html)})}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],clzGw:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"rect",{get:()=>(0,i.getRect)(e.template.$player)});let t=["bottom","height","left","right","top","width"];for(let r=0;re.rect[a]})}(0,i.def)(e,"x",{get:()=>e.left+window.pageXOffset}),(0,i.def)(e,"y",{get:()=>e.top+window.pageYOffset})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],egOBC:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{notice:t,template:{$video:r}}=e,a=(0,i.createElement)("canvas");(0,i.def)(e,"getDataURL",{value:()=>new Promise((e,o)=>{try{a.width=r.videoWidth,a.height=r.videoHeight,a.getContext("2d").drawImage(r,0,0),e(a.toDataURL("image/png"))}catch(e){t.show=e,o(e)}})}),(0,i.def)(e,"getBlobUrl",{value:()=>new Promise((e,o)=>{try{a.width=r.videoWidth,a.height=r.videoHeight,a.getContext("2d").drawImage(r,0,0),a.toBlob(t=>{e(URL.createObjectURL(t))})}catch(e){t.show=e,o(e)}})}),(0,i.def)(e,"screenshot",{value:async t=>{let a=await e.getDataURL(),o=t||`artplayer_${(0,i.secondToTime)(r.currentTime)}`;return(0,i.download)(a,`${o}.png`),e.emit("screenshot",a),a}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],aGOdO:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{notice:t}=e;(0,i.def)(e,"seek",{set(r){e.currentTime=r,e.duration&&(t.show=`${(0,i.secondToTime)(e.currentTime)} / ${(0,i.secondToTime)(e.duration)}`),e.emit("seek",e.currentTime)}}),(0,i.def)(e,"forward",{set(t){e.seek=e.currentTime+t}}),(0,i.def)(e,"backward",{set(t){e.seek=e.currentTime-t}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],f5ksL:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let t=["mini","pip","fullscreen","fullscreenWeb"];(0,i.def)(e,"state",{get:()=>t.find(t=>e[t])||"standard",set(r){for(let a=0;an);var i=e("../utils");function n(e){let{notice:t,i18n:r,template:a}=e;(0,i.def)(e,"subtitleOffset",{get:()=>a.$track?.offset||0,set(o){let{cues:n}=e.subtitle;if(!a.$track||0===n.length)return;let s=(0,i.clamp)(o,-10,10);a.$track.offset=s;for(let t=0;tn);var i=e("../utils");function n(e){function t(t,r){return new Promise((a,o)=>{if(t===e.url)return;let{playing:i,aspectRatio:n,playbackRate:s}=e;e.pause(),e.url=t,e.notice.show="",e.once("video:error",o),e.once("video:loadedmetadata",()=>{e.currentTime=r}),e.once("video:canplay",async()=>{e.playbackRate=s,e.aspectRatio=n,i&&await e.play(),e.notice.show="",a()})})}(0,i.def)(e,"switchQuality",{value:r=>t(r,e.currentTime)}),(0,i.def)(e,"switchUrl",{value:e=>t(e,0)}),(0,i.def)(e,"switch",{set:e.switchUrl})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"9kb19":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"theme",{get:()=>e.cssVar("--art-theme"),set(t){e.cssVar("--art-theme",t)}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],cICxL:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{events:t,option:r,template:{$progress:a,$video:o}}=e,n=null,s=null,l=!1,c=!1,d=!1;t.hover(a,()=>{d=!0},()=>{d=!1}),e.on("setBar",async(t,p,u)=>{let f=e.controls?.thumbnails,{url:h,scale:m}=r.thumbnails;if(!f||!h)return;let g="played"===t&&u&&i.isMobile;if("hover"===t||g){if(l||(l=!0,s=await (0,i.loadImg)(h,m),c=!0),!c||!d)return;let t=a.clientWidth*p;(0,i.setStyle)(f,"display","flex"),t>0&&ta.clientWidth-f/2?(0,i.setStyle)(n,"left",`${a.clientWidth-f}px`):(0,i.setStyle)(n,"left",`${t-f/2}px`)}(t):i.isMobile||(0,i.setStyle)(f,"display","none"),g&&(clearTimeout(n),n=setTimeout(()=>{(0,i.setStyle)(f,"display","none")},500))}}),(0,i.def)(e,"thumbnails",{get:()=>e.option.thumbnails,set(t){t.url&&!e.option.isLive&&(e.option.thumbnails=t,clearTimeout(n),n=null,s=null,l=!1,c=!1)}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],ifRrM:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"toggle",{value:()=>e.playing?e.pause():e.play()})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],kUOhk:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"type",{get:()=>e.option.type,set(t){e.option.type=t}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"7uCXi":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{option:t,template:{$video:r}}=e;(0,i.def)(e,"url",{get:()=>r.src,async set(a){if(a){let o=e.url,n=t.type||(0,i.getExt)(a),s=t.customType[n];n&&s?(await (0,i.sleep)(),e.loading.show=!0,s.call(e,r,a,e)):(URL.revokeObjectURL(o),r.src=a),o!==e.url&&(e.option.url=a,e.isReady&&o&&e.once("video:canplay",()=>{e.emit("restart",a)}))}else await (0,i.sleep)(),e.loading.show=!0}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],dzR4V:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$video:t},i18n:r,notice:a,storage:o}=e;(0,i.def)(e,"volume",{get:()=>t.volume||0,set:e=>{t.volume=(0,i.clamp)(e,0,1),a.show=`${r.get("Volume")}: ${Number.parseInt(100*t.volume,10)}`,0!==t.volume&&o.set("volume",t.volume)}}),(0,i.def)(e,"muted",{get:()=>t.muted,set:r=>{t.muted=r,e.emit("muted",r)}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],iKxTB:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("../utils"),n=e("./autoOrientation"),s=o.interopDefault(n),l=e("./autoPlayback"),c=o.interopDefault(l),d=e("./fastForward"),p=o.interopDefault(d),u=e("./lock"),f=o.interopDefault(u),h=e("./miniProgressBar"),m=o.interopDefault(h);r.default=class{constructor(e){this.art=e,this.id=0;let{option:t}=e;t.miniProgressBar&&!t.isLive&&this.add(m.default),t.lock&&i.isMobile&&this.add(f.default),t.autoPlayback&&!t.isLive&&this.add(c.default),t.autoOrientation&&i.isMobile&&this.add(s.default),t.fastForward&&i.isMobile&&!t.isLive&&this.add(p.default);for(let e=0;ethis.next(e,t)):this.next(e,t)}next(e,t){let r=t&&t.name||e.name||`plugin${this.id}`;return(0,i.errorHandle)(!(0,i.has)(this,r),`Cannot add a plugin that already has the same name: ${r}`),(0,i.def)(this,r,{value:t}),this}}},{"../utils":"ga71d","./autoOrientation":"ewFyM","./autoPlayback":"lAEG8","./fastForward":"2vvbM","./lock":"eAX5u","./miniProgressBar":"gg16E","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],ewFyM:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{notice:t,constructor:r,template:{$player:a,$video:o}}=e,n="art-auto-orientation",s="art-auto-orientation-fullscreen",l=!1;function c(){let{videoWidth:e,videoHeight:t}=o,r=document.documentElement.clientWidth,a=document.documentElement.clientHeight;return e>t&&ra}return e.on("fullscreenWeb",t=>{t?c()&&setTimeout(()=>{e.fullscreenWeb&&!(0,i.hasClass)(a,n)&&function(){let t=document.documentElement.clientWidth,r=document.documentElement.clientHeight;(0,i.setStyle)(a,"width",`${r}px`),(0,i.setStyle)(a,"height",`${t}px`),(0,i.setStyle)(a,"transform-origin","0 0"),(0,i.setStyle)(a,"transform",`rotate(90deg) translate(0, -${t}px)`),(0,i.addClass)(a,n),e.isRotate=!0,e.emit("resize")}()},Number(r.AUTO_ORIENTATION_TIME??0)):(0,i.hasClass)(a,n)&&((0,i.setStyle)(a,"width",""),(0,i.setStyle)(a,"height",""),(0,i.setStyle)(a,"transform-origin",""),(0,i.setStyle)(a,"transform",""),(0,i.removeClass)(a,n),e.isRotate=!1,e.emit("resize"))}),e.on("fullscreen",async e=>{let r=!!screen?.orientation?.lock;if(e){if(r&&c())try{let e=screen.orientation.type.startsWith("portrait")?"landscape":"portrait";await screen.orientation.lock(e),l=!0,(0,i.addClass)(a,s)}catch(e){l=!1,t.show=e}}else if((0,i.hasClass)(a,s)&&(0,i.removeClass)(a,s),r&&l){try{screen.orientation.unlock()}catch{}l=!1}}),{name:"autoOrientation",get state(){return(0,i.hasClass)(a,n)}}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],lAEG8:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,icons:r,storage:a,constructor:o,proxy:n,template:{$poster:s}}=e,l=e.layers.add({name:"auto-playback",html:`
`}),c=(0,i.query)(".art-auto-playback-last",l),d=(0,i.query)(".art-auto-playback-jump",l),p=(0,i.query)(".art-auto-playback-close",l);(0,i.append)(p,r.close);let u=null;function f(){let r=(a.get("times")||{})[e.option.id||e.option.url];clearTimeout(u),(0,i.setStyle)(l,"display","none"),r&&r>=o.AUTO_PLAYBACK_MIN&&((0,i.setStyle)(l,"display","flex"),c.textContent=`${t.get("Last Seen")} ${(0,i.secondToTime)(r)}`,d.textContent=t.get("Jump Play"),n(p,"click",()=>{(0,i.setStyle)(l,"display","none")}),n(d,"click",()=>{e.seek=r,e.play(),(0,i.setStyle)(s,"display","none"),(0,i.setStyle)(l,"display","none")}),e.once("video:timeupdate",()=>{u=setTimeout(()=>{(0,i.setStyle)(l,"display","none")},o.AUTO_PLAYBACK_TIMEOUT)}))}return e.on("video:timeupdate",()=>{if(e.playing){let t=a.get("times")||{},r=Object.keys(t);r.length>o.AUTO_PLAYBACK_MAX&&delete t[r[0]],t[e.option.id||e.option.url]=e.currentTime,a.set("times",t)}}),e.on("ready",f),e.on("restart",f),{name:"auto-playback",get times(){return a.get("times")||{}},clear:()=>a.del("times"),delete(e){let t=a.get("times")||{};return delete t[e],a.set("times",t),t}}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"2vvbM":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{constructor:t,proxy:r,template:{$player:a,$video:o}}=e,n=null,s=!1,l=1,c=()=>{clearTimeout(n),s&&(s=!1,e.playbackRate=l,(0,i.removeClass)(a,"art-fast-forward"))};return r(o,"touchstart",r=>{1===r.touches.length&&e.playing&&!e.isLock&&(n=setTimeout(()=>{s=!0,l=e.playbackRate,e.playbackRate=t.FAST_FORWARD_VALUE,(0,i.addClass)(a,"art-fast-forward")},t.FAST_FORWARD_TIME))}),e.on("document:touchmove",c),e.on("document:touchend",c),{name:"fastForward",get state(){return(0,i.hasClass)(a,"art-fast-forward")}}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],eAX5u:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{layers:t,icons:r,template:{$player:a}}=e;function o(){return(0,i.hasClass)(a,"art-lock")}function n(){(0,i.addClass)(a,"art-lock"),e.isLock=!0,e.emit("lock",!0)}function s(){(0,i.removeClass)(a,"art-lock"),e.isLock=!1,e.emit("lock",!1)}return t.add({name:"lock",mounted(t){let a=(0,i.append)(t,r.lock),o=(0,i.append)(t,r.unlock);(0,i.setStyle)(a,"display","none"),e.on("lock",e=>{e?((0,i.setStyle)(a,"display","inline-flex"),(0,i.setStyle)(o,"display","none")):((0,i.setStyle)(a,"display","none"),(0,i.setStyle)(o,"display","inline-flex"))})},click(){o()?s():n()}}),{name:"lock",get state(){return o()},set state(value){value?n():s()}}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],gg16E:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return e.on("control",t=>{t?(0,i.removeClass)(e.template.$player,"art-mini-progress-bar"):(0,i.addClass)(e.template.$player,"art-mini-progress-bar")}),{name:"mini-progress-bar"}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],l15NM:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("../utils"),n=e("../utils/component"),s=o.interopDefault(n),l=e("./aspectRatio"),c=o.interopDefault(l),d=e("./flip"),p=o.interopDefault(d),u=e("./playbackRate"),f=o.interopDefault(u),h=e("./subtitleOffset"),m=o.interopDefault(h);class g extends s.default{constructor(e){super(e);let{option:t,controls:r,template:{$setting:a}}=e;this.name="setting",this.$parent=a,this.id=0,this.active=null,this.cache=new Map,this.option=[...this.builtin,...t.settings],t.setting&&(this.format(),this.render(),e.on("blur",()=>{this.show&&(this.show=!1,this.render())}),e.on("focus",e=>{let t=(0,i.includeFromEvent)(e,r.setting),a=(0,i.includeFromEvent)(e,this.$parent);!this.show||t||a||(this.show=!1,this.render())}),e.on("resize",()=>this.resize()))}get builtin(){let e=[],{option:t}=this.art;return t.playbackRate&&e.push((0,f.default)(this.art)),t.aspectRatio&&e.push((0,c.default)(this.art)),t.flip&&e.push((0,p.default)(this.art)),t.subtitleOffset&&e.push((0,m.default)(this.art)),e}traverse(e,t=this.option){for(let r=0;r{t.default=t===e,t.default&&t.$item&&(0,i.inverseClass)(t.$item,"art-current")},e.$option),this.render(e.$parents)}format(e=this.option,t,r,a=[]){for(let o=0;ot}),(0,i.def)(n,"$parents",{get:()=>r}),(0,i.def)(n,"$option",{get:()=>e});let a=[];(0,i.def)(n,"$events",{get:()=>a}),(0,i.def)(n,"$formatted",{get:()=>!0})}this.format(n.selector||[],n,e,a)}this.option=e}find(e=""){let t=null;return this.traverse(r=>{r.name===e&&(t=r)}),t}resize(){let{controls:e,constructor:{SETTING_WIDTH:t,SETTING_ITEM_HEIGHT:r},template:{$player:a,$setting:o}}=this.art;if(e.setting&&this.show){let n=this.active[0]?.$parent?.width||t,{left:s,width:l}=(0,i.getRect)(e.setting),{left:c,width:d}=(0,i.getRect)(a),p=s-c+l/2-n/2,u=this.active===this.option?this.active.length*r:(this.active.length+1)*r;if((0,i.setStyle)(o,"height",`${u}px`),(0,i.setStyle)(o,"width",`${n}px`),this.art.isRotate||i.isMobile)return;p+n>d?((0,i.setStyle)(o,"left",null),(0,i.setStyle)(o,"right",null)):((0,i.setStyle)(o,"left",`${p}px`),(0,i.setStyle)(o,"right","auto"))}}inactivate(e){for(let t=0;t'),l=(0,i.createElement)("div");(0,i.addClass)(l,"art-setting-item-left-icon"),(0,i.append)(l,a),(0,i.append)(s,l),(0,i.append)(s,e.$parent.html);let c=r(n,"click",()=>this.render(e.$parents));e.$parent.$events.push(c),(0,i.append)(t,n)}createItem(e,t=!1){if(!this.cache.has(e.$option))return;let r=this.cache.get(e.$option),a=e.$item,o="selector";(0,i.has)(e,"switch")&&(o="switch"),(0,i.has)(e,"range")&&(o="range"),(0,i.has)(e,"onClick")&&(o="button");let{icons:n,proxy:s,constructor:l}=this.art,c=(0,i.createElement)("div");(0,i.addClass)(c,"art-setting-item"),(0,i.setStyle)(c,"height",`${l.SETTING_ITEM_HEIGHT}px`),c.dataset.name=e.name||"",c.dataset.value=e.value||"";let d=(0,i.append)(c,'
'),p=(0,i.append)(c,'
'),u=(0,i.createElement)("div");switch((0,i.addClass)(u,"art-setting-item-left-icon"),o){case"button":case"switch":case"range":(0,i.append)(u,e.icon||n.config);break;case"selector":e.selector?.length?(0,i.append)(u,e.icon||n.config):(0,i.append)(u,n.check)}(0,i.append)(d,u),(0,i.def)(e,"$icon",{configurable:!0,get:()=>u}),(0,i.def)(e,"icon",{configurable:!0,get:()=>u.innerHTML,set(e){u.innerHTML="",(0,i.append)(u,e)}});let f=(0,i.createElement)("div");(0,i.addClass)(f,"art-setting-item-left-text"),(0,i.append)(f,e.html||""),(0,i.append)(d,f),(0,i.def)(e,"$html",{configurable:!0,get:()=>f}),(0,i.def)(e,"html",{configurable:!0,get:()=>f.innerHTML,set(e){f.innerHTML="",(0,i.append)(f,e)}});let h=(0,i.createElement)("div");switch((0,i.addClass)(h,"art-setting-item-right-tooltip"),(0,i.append)(h,e.tooltip||""),(0,i.append)(p,h),(0,i.def)(e,"$tooltip",{configurable:!0,get:()=>h}),(0,i.def)(e,"tooltip",{configurable:!0,get:()=>h.innerHTML,set(e){h.innerHTML="",(0,i.append)(h,e)}}),o){case"switch":{let t=(0,i.createElement)("div");(0,i.addClass)(t,"art-setting-item-right-icon");let r=(0,i.append)(t,n.switchOn),a=(0,i.append)(t,n.switchOff);(0,i.setStyle)(e.switch?a:r,"display","none"),(0,i.append)(p,t),(0,i.def)(e,"$switch",{configurable:!0,get:()=>t});let o=e.switch;(0,i.def)(e,"switch",{configurable:!0,get:()=>o,set(e){o=e,e?((0,i.setStyle)(a,"display","none"),(0,i.setStyle)(r,"display",null)):((0,i.setStyle)(a,"display",null),(0,i.setStyle)(r,"display","none"))}});break}case"range":{let t=(0,i.createElement)("div");(0,i.addClass)(t,"art-setting-item-right-icon");let r=(0,i.append)(t,'');r.value=e.range[0],r.min=e.range[1],r.max=e.range[2],r.step=e.range[3],(0,i.addClass)(r,"art-setting-range"),(0,i.append)(p,t),(0,i.def)(e,"$range",{configurable:!0,get:()=>r});let a=[...e.range];(0,i.def)(e,"range",{configurable:!0,get:()=>a,set(e){a=[...e],r.value=e[0],r.min=e[1],r.max=e[2],r.step=e[3]}})}break;case"selector":if(e.selector?.length){let e=(0,i.createElement)("div");(0,i.addClass)(e,"art-setting-item-right-icon"),(0,i.append)(e,n.arrowRight),(0,i.append)(p,e)}}switch(o){case"switch":if(e.onSwitch){let t=s(c,"click",async t=>{e.switch=await e.onSwitch.call(this.art,e,c,t)});e.$events.push(t)}break;case"range":if(e.$range){if(e.onRange){let t=s(e.$range,"change",async t=>{e.range[0]=e.$range.valueAsNumber,e.tooltip=await e.onRange.call(this.art,e,c,t)});e.$events.push(t)}if(e.onChange){let t=s(e.$range,"input",async t=>{e.range[0]=e.$range.valueAsNumber,e.tooltip=await e.onChange.call(this.art,e,c,t)});e.$events.push(t)}}break;case"selector":{let t=s(c,"click",async t=>{e.selector?.length?this.render(e.selector):(this.check(e),e.$parent.onSelect&&(e.$parent.tooltip=await e.$parent.onSelect.call(this.art,e,c,t)))});e.$events.push(t),e.default&&(0,i.addClass)(c,"art-current")}break;case"button":if(e.onClick){let t=s(c,"click",async t=>{e.tooltip=await e.onClick.call(this.art,e,c,t)});e.$events.push(t)}}(0,i.def)(e,"$item",{configurable:!0,get:()=>c}),t?(0,i.replaceElement)(c,a):(0,i.append)(r,c),e.mounted&&setTimeout(()=>e.mounted.call(this.art,e.$item,e),0)}render(e=this.option){if(this.active=e,this.cache.has(e)){let t=this.cache.get(e);(0,i.inverseClass)(t,"art-current")}else{let t=(0,i.createElement)("div");this.cache.set(e,t),(0,i.addClass)(t,"art-setting-panel"),(0,i.append)(this.$parent,t),(0,i.inverseClass)(t,"art-current"),e[0]?.$parent&&this.createHeader(e[0]);for(let t=0;t({value:t,name:`aspect-ratio-${t}`,default:t===e.aspectRatio,html:i(t)})),onSelect:t=>(e.aspectRatio=t.value,t.html),mounted:()=>{n(),e.on("aspectRatio",()=>n())}}}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],e86Hl:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,icons:r,constructor:{SETTING_ITEM_WIDTH:a,FLIP:o}}=e;function n(e){return t.get((0,i.capitalize)(e))}function s(){let t=e.setting.find(`flip-${e.flip}`);e.setting.check(t)}return{width:a,name:"flip",html:t.get("Video Flip"),tooltip:n(e.flip),icon:r.flip,selector:o.map(t=>({value:t,name:`flip-${t}`,default:t===e.flip,html:n(t)})),onSelect:t=>(e.flip=t.value,t.html),mounted:()=>{s(),e.on("flip",()=>s())}}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],lPy8C:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){let{i18n:t,icons:r,constructor:{SETTING_ITEM_WIDTH:a,PLAYBACK_RATE:o}}=e;function i(e){return 1===e?t.get("Normal"):e.toFixed(1)}function n(){let t=e.setting.find(`playback-rate-${e.playbackRate}`);e.setting.check(t)}return{width:a,name:"playback-rate",html:t.get("Play Speed"),tooltip:i(e.playbackRate),icon:r.playbackRate,selector:o.map(t=>({value:t,name:`playback-rate-${t}`,default:t===e.playbackRate,html:i(t)})),onSelect:t=>(e.playbackRate=t.value,t.html),mounted:()=>{n(),e.on("video:ratechange",()=>n())}}}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],jEoW9:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){let{i18n:t,icons:r,constructor:a}=e;return{width:a.SETTING_ITEM_WIDTH,name:"subtitle-offset",html:t.get("Subtitle Offset"),icon:r.subtitle,tooltip:"0s",range:[0,-10,10,.1],onChange:t=>(e.subtitleOffset=t.range[0],`${t.range[0]}s`),mounted:(t,r)=>{e.on("subtitleOffset",e=>{r.$range.value=e,r.tooltip=`${e}s`})}}}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"1bevC":[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r),r.default=class{constructor(){this.name="artplayer_settings",this.settings={}}get(e){try{let t=JSON.parse(window.localStorage.getItem(this.name))||{};return e?t[e]:t}catch{return e?this.settings[e]:this.settings}}set(e,t){try{let r=Object.assign({},this.get(),{[e]:t});window.localStorage.setItem(this.name,JSON.stringify(r))}catch{this.settings[e]=t}}del(e){try{let t=this.get();delete t[e],window.localStorage.setItem(this.name,JSON.stringify(t))}catch{delete this.settings[e]}}clear(){try{window.localStorage.removeItem(this.name)}catch{this.settings={}}}}},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],aD26q:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("option-validator"),n=o.interopDefault(i),s=e("./scheme"),l=o.interopDefault(s),c=e("./utils"),d=e("./utils/component"),p=o.interopDefault(d);class u extends p.default{constructor(e){super(e),this.name="subtitle",this.option=null,this.destroyEvent=()=>null,this.init(e.option.subtitle);let t=!1;e.on("video:timeupdate",()=>{if(!this.url)return;let e=this.art.template.$video.webkitDisplayingFullscreen;"boolean"==typeof e&&e!==t&&(t=e,this.createTrack(e?"subtitles":"metadata",this.url))})}get url(){return this.art.template.$track.src}set url(e){this.switch(e)}get textTrack(){return this.art.template.$video?.textTracks?.[0]}get activeCues(){return this.textTrack?Array.from(this.textTrack.activeCues):[]}get cues(){return this.textTrack?Array.from(this.textTrack.cues):[]}style(e,t){let{$subtitle:r}=this.art.template;return"object"==typeof e?(0,c.setStyles)(r,e):(0,c.setStyle)(r,e,t)}update(){let{option:{subtitle:e},template:{$subtitle:t}}=this.art;t.innerHTML="",this.activeCues.length&&(this.art.emit("subtitleBeforeUpdate",this.activeCues),t.innerHTML=this.activeCues.map((t,r)=>t.text.split(/\r?\n/).filter(e=>e.trim()).map(t=>`
${e.escape?(0,c.escape)(t):t}
`).join("")).join(""),this.art.emit("subtitleAfterUpdate",this.activeCues))}async switch(e,t={}){let{i18n:r,notice:a,option:o}=this.art,i={...o.subtitle,...t,url:e},n=await this.init(i);return t.name&&(a.show=`${r.get("Switch Subtitle")}: ${t.name}`),n}createTrack(e,t){let{template:r,proxy:a,option:o}=this.art,{$video:i,$track:n}=r,s=(0,c.createElement)("track");s.default=!0,s.kind=e,s.src=t,s.label=o.subtitle.name||"Artplayer",s.track.mode="hidden",s.onload=()=>{this.art.emit("subtitleLoad",this.cues,this.option)},this.art.events.remove(this.destroyEvent),n.onload=null,(0,c.remove)(n),(0,c.append)(i,s),r.$track=s,this.destroyEvent=a(this.textTrack,"cuechange",()=>this.update())}async init(e){let{notice:t,template:{$subtitle:r}}=this.art;return this.textTrack?((0,n.default)(e,l.default.subtitle),e.url)?(this.option=e,this.style(e.style),fetch(e.url).then(e=>e.arrayBuffer()).then(t=>{let r=new TextDecoder(e.encoding).decode(t);switch(e.type||(0,c.getExt)(e.url)){case"srt":{let t=(0,c.srtToVtt)(r),a=e.onVttLoad(t);return(0,c.vttToBlob)(a)}case"ass":{let t=(0,c.assToVtt)(r),a=e.onVttLoad(t);return(0,c.vttToBlob)(a)}case"vtt":{let t=e.onVttLoad(r);return(0,c.vttToBlob)(t)}default:return e.url}}).then(e=>(r.innerHTML="",this.url===e||(URL.revokeObjectURL(this.url),this.createTrack("metadata",e)),e)).catch(e=>{throw r.innerHTML="",t.show=e,e})):void 0:null}}r.default=u},{"option-validator":"hw47a","./scheme":"9Np13","./utils":"ga71d","./utils/component":"hARFP","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"3s0cr":[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);var o=e("../package.json"),i=e("./utils");class n{constructor(e){this.art=e;let{option:t,constructor:r}=e;t.container instanceof Element?this.$container=t.container:(this.$container=(0,i.query)(t.container),(0,i.errorHandle)(this.$container,`No container element found by ${t.container}`)),(0,i.errorHandle)((0,i.supportsFlex)(),"The current browser does not support flex layout");let a=this.$container.tagName.toLowerCase();(0,i.errorHandle)("div"===a,`Unsupported container element type, only support 'div' but got '${a}'`),(0,i.errorHandle)(r.instances.every(e=>e.template.$container!==this.$container),"Cannot mount multiple instances on the same dom element"),this.query=this.query.bind(this),this.$container.dataset.artId=e.id,this.init()}static get html(){return`
Player version:
${o.version}
Video url:
Video volume:
Video time:
Video duration:
Video resolution:
x
[x]
`}query(e){return(0,i.query)(e,this.$container)}init(){let{option:e}=this.art;if(e.useSSR||(this.$container.innerHTML=n.html),this.$player=this.query(".art-video-player"),this.$video=this.query(".art-video"),this.$track=this.query("track"),this.$poster=this.query(".art-poster"),this.$subtitle=this.query(".art-subtitle"),this.$danmuku=this.query(".art-danmuku"),this.$bottom=this.query(".art-bottom"),this.$progress=this.query(".art-progress"),this.$controls=this.query(".art-controls"),this.$controlsLeft=this.query(".art-controls-left"),this.$controlsCenter=this.query(".art-controls-center"),this.$controlsRight=this.query(".art-controls-right"),this.$layer=this.query(".art-layers"),this.$loading=this.query(".art-loading"),this.$notice=this.query(".art-notice"),this.$noticeInner=this.query(".art-notice-inner"),this.$mask=this.query(".art-mask"),this.$state=this.query(".art-state"),this.$setting=this.query(".art-settings"),this.$info=this.query(".art-info"),this.$infoPanel=this.query(".art-info-panel"),this.$infoClose=this.query(".art-info-close"),this.$contextmenu=this.query(".art-contextmenus"),e.proxy){let t=e.proxy.call(this.art,this.art);(0,i.errorHandle)(t instanceof HTMLVideoElement||t instanceof HTMLCanvasElement,"Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'"),(0,i.replaceElement)(t,this.$video),t.className="art-video",this.$video=t}e.backdrop&&(0,i.addClass)(this.$player,"art-backdrop"),i.isMobile&&(0,i.addClass)(this.$player,"art-mobile")}destroy(e){this.$video.src="",e?this.$container.innerHTML="":(0,i.addClass)(this.$player,"art-destroy")}}r.default=n},{"../package.json":"2r8Ra","./utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"2Y43P":[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r),r.default=class{on(e,t,r){let a=this.e||(this.e={});return(a[e]||(a[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){let a=this;function o(...i){a.off(e,o),t.apply(r,i)}return o._=t,this.on(e,o,r)}emit(e,...t){let r=((this.e||(this.e={}))[e]||[]).slice();for(let e=0;et.call(this,this)),J.DEBUG){let e=e=>console.log(`[ART.${this.id}] -> ${e}`);e(`Version@${J.version}`);for(let t=0;te(`Event@${t.type}`))}G.push(this)}static get instances(){return G}static get version(){return c.version}static get config(){return p.default}static get utils(){return Y}static get scheme(){return z.default}static get Emitter(){return X.default}static get validator(){return l.default}static get kindOf(){return l.default.kindOf}static get html(){return U.default.html}static get option(){return{id:"",container:"#artplayer",url:"",poster:"",type:"",theme:"#f00",volume:.7,isLive:!1,muted:!1,autoplay:!1,autoSize:!1,autoMini:!1,loop:!1,flip:!1,playbackRate:!1,aspectRatio:!1,screenshot:!1,setting:!1,hotkey:!0,pip:!1,mutex:!0,backdrop:!0,fullscreen:!1,fullscreenWeb:!1,subtitleOffset:!1,miniProgressBar:!1,useSSR:!1,playsInline:!0,lock:!1,gesture:!0,fastForward:!1,autoPlayback:!1,autoOrientation:!1,airplay:!1,proxy:void 0,layers:[],contextmenu:[],controls:[],settings:[],quality:[],highlight:[],plugins:[],thumbnails:{url:"",number:60,column:10,width:0,height:0,scale:1},subtitle:{url:"",type:"",style:{},name:"",escape:!0,encoding:"utf-8",onVttLoad:e=>e},moreVideoAttr:{controls:!1,preload:Y.isSafari?"auto":"metadata"},i18n:{},icons:{},cssVar:{},customType:{},lang:navigator?.language.toLowerCase()}}get proxy(){return this.events.proxy}get query(){return this.template.query}get video(){return this.template.$video}destroy(e=!0){this.events.destroy(),this.template.destroy(e),G.splice(G.indexOf(this),1),this.isDestroy=!0,this.emit("destroy")}}r.default=J,J.STYLE=n.default,J.DEBUG=!1,J.CONTEXTMENU=!0,J.NOTICE_TIME=2e3,J.SETTING_WIDTH=250,J.SETTING_ITEM_WIDTH=200,J.SETTING_ITEM_HEIGHT=35,J.RESIZE_TIME=200,J.SCROLL_TIME=200,J.SCROLL_GAP=50,J.AUTO_PLAYBACK_MAX=10,J.AUTO_PLAYBACK_MIN=5,J.AUTO_PLAYBACK_TIMEOUT=3e3,J.RECONNECT_TIME_MAX=5,J.RECONNECT_SLEEP_TIME=1e3,J.CONTROL_HIDE_TIME=3e3,J.DBCLICK_TIME=300,J.DBCLICK_FULLSCREEN=!0,J.MOBILE_DBCLICK_PLAY=!0,J.MOBILE_CLICK_PLAY=!1,J.AUTO_ORIENTATION_TIME=200,J.INFO_LOOP_TIME=1e3,J.FAST_FORWARD_VALUE=3,J.FAST_FORWARD_TIME=1e3,J.TOUCH_MOVE_RATIO=.5,J.VOLUME_STEP=.1,J.SEEK_STEP=5,J.PLAYBACK_RATE=[.5,.75,1,1.25,1.5,2],J.ASPECT_RATIO=["default","4:3","16:9"],J.FLIP=["normal","horizontal","vertical"],J.FULLSCREEN_WEB_IN_BODY=!1,J.LOG_VERSION=!0,J.USE_RAF=!1,Y.isBrowser&&(window.Artplayer=J,Y.setStyleText("artplayer-style",n.default),setTimeout(()=>{J.LOG_VERSION&&console.log(`%c ArtPlayer %c ${J.version} %c https://artplayer.org`,"color: #fff; background: #5f5f5f","color: #fff; background: #4bc729","")},100))},{"bundle-text:./style/index.less":"LDUUV","option-validator":"hw47a","../package.json":"2r8Ra","./config":"7jhZp","./contextmenu":"jFWxb","./control":"8He0l","./events":"eFzfA","./hotkey":"aLFu1","./i18n":"g6kBT","./icons":"exeCy","./info":"cUKxy","./layer":"fIHKi","./loading":"a7tJk","./mask":"chOzM","./notice":"qalnP","./player":"hZaaw","./plugins":"iKxTB","./scheme":"9Np13","./setting":"l15NM","./storage":"1bevC","./subtitle":"aD26q","./template":"3s0cr","./utils":"ga71d","./utils/emitter":"2Y43P","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],LDUUV:[function(e,t,r,a){t.exports='.art-video-player{--art-theme:red;--art-font-color:#fff;--art-background-color:#000;--art-text-shadow-color:#00000080;--art-transition-duration:.2s;--art-padding:10px;--art-border-radius:3px;--art-progress-height:6px;--art-progress-color:#ffffff40;--art-hover-color:#ffffff40;--art-loaded-color:#ffffff40;--art-state-size:80px;--art-state-opacity:.8;--art-bottom-height:100px;--art-bottom-offset:20px;--art-bottom-gap:5px;--art-highlight-width:8px;--art-highlight-color:#ffffff80;--art-control-height:46px;--art-control-opacity:.75;--art-control-icon-size:36px;--art-control-icon-scale:1.1;--art-volume-height:120px;--art-volume-handle-size:14px;--art-lock-size:36px;--art-indicator-scale:0;--art-indicator-size:16px;--art-fullscreen-web-index:9999;--art-settings-icon-size:24px;--art-settings-max-height:300px;--art-selector-max-height:300px;--art-contextmenus-min-width:250px;--art-subtitle-font-size:20px;--art-subtitle-gap:5px;--art-subtitle-bottom:15px;--art-subtitle-border:#000;--art-widget-background:#000000d9;--art-tip-background:#000000b3;--art-scrollbar-size:4px;--art-scrollbar-background:#ffffff40;--art-scrollbar-background-hover:#ffffff80;--art-mini-progress-height:2px}.art-bg-cover{background-position:50%;background-repeat:no-repeat;background-size:cover}.art-bottom-gradient{background-image:linear-gradient(#0000,#0006,#000);background-position:bottom;background-repeat:repeat-x}.art-backdrop-filter{backdrop-filter:saturate(180%)blur(20px);background-color:#000000bf!important}.art-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.art-video-player{zoom:1;text-align:left;user-select:none;box-sizing:border-box;width:100%;height:100%;color:var(--art-font-color);background-color:var(--art-background-color);text-shadow:0 0 2px var(--art-text-shadow-color);-webkit-tap-highlight-color:#0000;-ms-touch-action:manipulation;touch-action:manipulation;-ms-high-contrast-adjust:none;direction:ltr;outline:0;margin:0 auto;padding:0;font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,Roboto,Arial,sans-serif;font-size:14px;line-height:1.3;position:relative}.art-video-player *,.art-video-player :before,.art-video-player :after{box-sizing:border-box}.art-video-player ::-webkit-scrollbar{width:var(--art-scrollbar-size);height:var(--art-scrollbar-size)}.art-video-player ::-webkit-scrollbar-thumb{background-color:var(--art-scrollbar-background)}.art-video-player ::-webkit-scrollbar-thumb:hover{background-color:var(--art-scrollbar-background-hover)}.art-video-player img{vertical-align:top;max-width:100%}.art-video-player svg{fill:var(--art-font-color)}.art-video-player a{color:var(--art-font-color);text-decoration:none}.art-icon{justify-content:center;align-items:center;line-height:1;display:flex}.art-video-player.art-backdrop .art-contextmenus,.art-video-player.art-backdrop .art-info,.art-video-player.art-backdrop .art-settings,.art-video-player.art-backdrop .art-layer-auto-playback,.art-video-player.art-backdrop .art-selector-list,.art-video-player.art-backdrop .art-volume-inner{backdrop-filter:saturate(180%)blur(20px);background-color:#000000bf!important}.art-video{z-index:10;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.art-poster{z-index:11;pointer-events:none;background-position:50%;background-repeat:no-repeat;background-size:cover;width:100%;height:100%;position:absolute;inset:0}.art-video-player .art-subtitle{z-index:20;text-align:center;pointer-events:none;justify-content:center;align-items:center;gap:var(--art-subtitle-gap);width:100%;bottom:var(--art-subtitle-bottom);font-size:var(--art-subtitle-font-size);transition:bottom var(--art-transition-duration)ease;text-shadow:var(--art-subtitle-border)1px 0 1px,var(--art-subtitle-border)0 1px 1px,var(--art-subtitle-border)-1px 0 1px,var(--art-subtitle-border)0 -1px 1px,var(--art-subtitle-border)1px 1px 1px,var(--art-subtitle-border)-1px -1px 1px,var(--art-subtitle-border)1px -1px 1px,var(--art-subtitle-border)-1px 1px 1px;flex-direction:column;padding:0 5%;display:none;position:absolute}.art-video-player.art-subtitle-show .art-subtitle{display:flex}.art-video-player.art-control-show .art-subtitle{bottom:calc(var(--art-control-height) + var(--art-subtitle-bottom))}.art-danmuku{z-index:30;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.art-video-player .art-layers{z-index:40;pointer-events:none;width:100%;height:100%;display:none;position:absolute;inset:0}.art-video-player .art-layers .art-layer{pointer-events:auto}.art-video-player.art-layer-show .art-layers{display:flex}.art-video-player .art-mask{z-index:50;pointer-events:none;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;inset:0}.art-video-player .art-mask .art-state{opacity:0;width:var(--art-state-size);height:var(--art-state-size);transition:all var(--art-transition-duration)ease;justify-content:center;align-items:center;display:flex;transform:scale(2)}.art-video-player.art-mask-show .art-state{cursor:pointer;pointer-events:auto;opacity:var(--art-state-opacity);transform:scale(1)}.art-video-player.art-loading-show .art-state{display:none}.art-video-player .art-loading{z-index:70;pointer-events:none;justify-content:center;align-items:center;width:100%;height:100%;display:none;position:absolute;inset:0}.art-video-player.art-loading-show .art-loading{display:flex}.art-video-player .art-bottom{z-index:60;opacity:0;pointer-events:none;width:100%;height:100%;padding:0 var(--art-padding);transition:all var(--art-transition-duration)ease;background-size:100% var(--art-bottom-height);background-image:linear-gradient(#0000,#0006,#000);background-position:bottom;background-repeat:repeat-x;flex-direction:column;justify-content:flex-end;display:flex;position:absolute;inset:0;overflow:hidden}.art-video-player .art-bottom .art-controls,.art-video-player .art-bottom .art-progress{transform:translateY(var(--art-bottom-offset));transition:transform var(--art-transition-duration)ease}.art-video-player.art-control-show .art-bottom,.art-video-player.art-hover .art-bottom{opacity:1}.art-video-player.art-control-show .art-bottom .art-controls,.art-video-player.art-hover .art-bottom .art-controls,.art-video-player.art-control-show .art-bottom .art-progress,.art-video-player.art-hover .art-bottom .art-progress{transform:translateY(0)}.art-bottom .art-progress{z-index:0;pointer-events:auto;padding-bottom:var(--art-bottom-gap);position:relative}.art-bottom .art-progress .art-control-progress{cursor:pointer;height:var(--art-progress-height);justify-content:center;align-items:center;display:flex;position:relative}.art-bottom .art-progress .art-control-progress .art-control-progress-inner{width:100%;height:50%;transition:height var(--art-transition-duration)ease;background-color:var(--art-progress-color);align-items:center;display:flex;position:relative}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-hover{z-index:0;background-color:var(--art-hover-color);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{z-index:10;background-color:var(--art-loaded-color);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-played{z-index:20;background-color:var(--art-theme);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{z-index:30;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{z-index:0;pointer-events:auto;width:100%;height:100%;transform:translateX(calc(var(--art-highlight-width)/-2));background-color:var(--art-highlight-color);position:absolute;inset:0 auto 0 0;width:var(--art-highlight-width)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{z-index:40;width:var(--art-indicator-size);height:var(--art-indicator-size);transform:scale(var(--art-indicator-scale));margin-left:calc(var(--art-indicator-size)/-2);transition:transform var(--art-transition-duration)ease;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;left:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator .art-icon{pointer-events:none;width:100%;height:100%}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:hover{transform:scale(1.2)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:active{transform:scale(1)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip{z-index:50;border-radius:var(--art-border-radius);white-space:nowrap;background-color:var(--art-tip-background);padding:3px 5px;font-size:12px;line-height:1;display:none;position:absolute;top:-25px;left:0}.art-bottom .art-progress .art-control-progress:hover .art-control-progress-inner{height:100%}.art-bottom .art-progress .art-control-thumbnails{bottom:calc(var(--art-bottom-gap) + 10px);border-radius:var(--art-border-radius);pointer-events:none;background-color:var(--art-widget-background);display:none;position:absolute;left:0;box-shadow:0 1px 3px #0003,0 1px 2px -1px #0003}.art-bottom:hover .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{transform:scale(1)}.art-controls{z-index:10;pointer-events:auto;height:var(--art-control-height);justify-content:space-between;align-items:center;display:flex;position:relative}.art-controls .art-controls-left,.art-controls .art-controls-right{height:100%;display:flex}.art-controls .art-controls-center{flex:1;justify-content:center;align-items:center;height:100%;padding:0 10px;display:none}.art-controls .art-controls-right{justify-content:flex-end}.art-controls .art-control{cursor:pointer;white-space:nowrap;opacity:var(--art-control-opacity);min-height:var(--art-control-height);min-width:var(--art-control-height);transition:opacity var(--art-transition-duration)ease;flex-shrink:0;justify-content:center;align-items:center;display:flex}.art-controls .art-control .art-icon{height:var(--art-control-icon-size);width:var(--art-control-icon-size);transform:scale(var(--art-control-icon-scale));transition:transform var(--art-transition-duration)ease}.art-controls .art-control .art-icon:active{transform:scale(calc(var(--art-control-icon-scale)*.8))}.art-controls .art-control:hover{opacity:1}.art-control-volume{position:relative}.art-control-volume .art-volume-panel{text-align:center;cursor:default;opacity:0;pointer-events:none;left:0;right:0;bottom:var(--art-control-height);width:var(--art-control-height);height:var(--art-volume-height);transition:all var(--art-transition-duration)ease;justify-content:center;align-items:center;padding:0 5px;font-size:12px;display:flex;position:absolute;transform:translateY(10px)}.art-control-volume .art-volume-panel .art-volume-inner{border-radius:var(--art-border-radius);background-color:var(--art-widget-background);flex-direction:column;align-items:center;gap:10px;width:100%;height:100%;padding:10px 0 12px;display:flex}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider{cursor:pointer;flex:1;justify-content:center;width:100%;display:flex;position:relative}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle{border-radius:var(--art-border-radius);background-color:#ffffff40;justify-content:center;width:2px;display:flex;position:relative;overflow:hidden}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle .art-volume-loaded{z-index:0;background-color:var(--art-theme);width:100%;height:100%;position:absolute;inset:0}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-indicator{width:var(--art-volume-handle-size);height:var(--art-volume-handle-size);margin-top:calc(var(--art-volume-handle-size)/-2);background-color:var(--art-theme);transition:transform var(--art-transition-duration)ease;border-radius:100%;flex-shrink:0;position:absolute;transform:scale(1)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider:active .art-volume-indicator{transform:scale(.9)}.art-control-volume:hover .art-volume-panel{opacity:1;pointer-events:auto;transform:translateY(0)}.art-video-player .art-notice{z-index:80;width:100%;height:auto;padding:var(--art-padding);pointer-events:none;display:none;position:absolute;inset:0 0 auto}.art-video-player .art-notice .art-notice-inner{border-radius:var(--art-border-radius);background-color:var(--art-tip-background);padding:5px;line-height:1;display:inline-flex}.art-video-player.art-notice-show .art-notice{display:flex}.art-video-player .art-contextmenus{z-index:120;border-radius:var(--art-border-radius);background-color:var(--art-widget-background);min-width:var(--art-contextmenus-min-width);flex-direction:column;padding:5px 0;font-size:12px;display:none;position:absolute}.art-video-player .art-contextmenus .art-contextmenu{cursor:pointer;border-bottom:1px solid #ffffff1a;padding:10px 15px;display:flex}.art-video-player .art-contextmenus .art-contextmenu span{padding:0 8px}.art-video-player .art-contextmenus .art-contextmenu span:hover,.art-video-player .art-contextmenus .art-contextmenu span.art-current{color:var(--art-theme)}.art-video-player .art-contextmenus .art-contextmenu:hover{background-color:#ffffff1a}.art-video-player .art-contextmenus .art-contextmenu:last-child{border-bottom:none}.art-video-player.art-contextmenu-show .art-contextmenus{display:flex}.art-video-player .art-settings{z-index:90;border-radius:var(--art-border-radius);max-height:var(--art-settings-max-height);left:auto;right:var(--art-padding);bottom:var(--art-control-height);transition:all var(--art-transition-duration)ease;background-color:var(--art-widget-background);flex-direction:column;display:none;position:absolute;overflow:hidden auto}.art-video-player .art-settings .art-setting-panel{flex-direction:column;display:none}.art-video-player .art-settings .art-setting-panel.art-current{display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item{cursor:pointer;transition:background-color var(--art-transition-duration)ease;justify-content:space-between;align-items:center;padding:0 5px;display:flex;overflow:hidden}.art-video-player .art-settings .art-setting-panel .art-setting-item:hover{background-color:#ffffff1a}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current{color:var(--art-theme)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-icon-check{visibility:hidden;height:15px}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current .art-icon-check{visibility:visible}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left{flex-shrink:0;justify-content:center;align-items:center;gap:5px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-icon{height:var(--art-settings-icon-size);width:var(--art-settings-icon-size);justify-content:center;align-items:center;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right{justify-content:center;align-items:center;gap:5px;font-size:12px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-tooltip{white-space:nowrap;color:#ffffff80}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-icon{justify-content:center;align-items:center;min-width:32px;height:24px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-range{appearance:none;background-color:#fff3;outline:none;width:80px;height:3px}.art-video-player .art-settings .art-setting-panel .art-setting-item-back{border-bottom:1px solid #ffffff1a}.art-video-player.art-setting-show .art-settings{display:flex}.art-video-player .art-info{left:var(--art-padding);top:var(--art-padding);z-index:100;border-radius:var(--art-border-radius);background-color:var(--art-widget-background);padding:10px;font-size:12px;display:none;position:absolute}.art-video-player .art-info .art-info-panel{flex-direction:column;gap:5px;display:flex}.art-video-player .art-info .art-info-panel .art-info-item{align-items:center;gap:5px;display:flex}.art-video-player .art-info .art-info-panel .art-info-item .art-info-title{text-align:right;width:100px}.art-video-player .art-info .art-info-panel .art-info-item .art-info-content{text-overflow:ellipsis;white-space:nowrap;user-select:all;width:250px;overflow:hidden}.art-video-player .art-info .art-info-close{cursor:pointer;position:absolute;top:5px;right:5px}.art-video-player.art-info-show .art-info{display:flex}.art-hide-cursor *{cursor:none!important}.art-video-player[data-aspect-ratio]{overflow:hidden}.art-video-player[data-aspect-ratio] .art-video{object-fit:fill;box-sizing:content-box}.art-fullscreen{--art-progress-height:8px;--art-indicator-size:20px;--art-control-height:60px;--art-control-icon-scale:1.3}.art-fullscreen-web{--art-progress-height:8px;--art-indicator-size:20px;--art-control-height:60px;--art-control-icon-scale:1.3;z-index:var(--art-fullscreen-web-index);width:100%;height:100%;position:fixed;inset:0}.art-mini-popup{z-index:9999;border-radius:var(--art-border-radius);cursor:move;user-select:none;background:#000;width:320px;height:180px;transition:opacity .2s;position:fixed;overflow:hidden;box-shadow:0 0 5px #00000080}.art-mini-popup svg{fill:#fff}.art-mini-popup .art-video{pointer-events:none}.art-mini-popup .art-mini-close{z-index:20;cursor:pointer;opacity:0;transition:opacity .2s;position:absolute;top:10px;right:10px}.art-mini-popup .art-mini-state{z-index:30;pointer-events:none;opacity:0;background-color:#00000040;justify-content:center;align-items:center;width:100%;height:100%;transition:opacity .2s;display:flex;position:absolute;inset:0}.art-mini-popup .art-mini-state .art-icon{opacity:.75;cursor:pointer;pointer-events:auto;transition:transform .2s;transform:scale(3)}.art-mini-popup .art-mini-state .art-icon:active{transform:scale(2.5)}.art-mini-popup.art-mini-dragging{opacity:.9}.art-mini-popup:hover .art-mini-close,.art-mini-popup:hover .art-mini-state{opacity:1}.art-video-player[data-flip=horizontal] .art-video{transform:scaleX(-1)}.art-video-player[data-flip=vertical] .art-video{transform:scaleY(-1)}.art-video-player .art-layer-lock{height:var(--art-lock-size);width:var(--art-lock-size);top:50%;left:var(--art-padding);background-color:var(--art-tip-background);border-radius:50%;justify-content:center;align-items:center;display:none;position:absolute;transform:translateY(-50%)}.art-video-player .art-layer-auto-playback{border-radius:var(--art-border-radius);left:var(--art-padding);bottom:calc(var(--art-control-height) + var(--art-bottom-gap) + 10px);background-color:var(--art-widget-background);align-items:center;gap:10px;padding:10px;line-height:1;display:none;position:absolute}.art-video-player .art-layer-auto-playback .art-auto-playback-close{cursor:pointer;justify-content:center;align-items:center;display:flex}.art-video-player .art-layer-auto-playback .art-auto-playback-close svg{width:15px;height:15px;fill:var(--art-theme)}.art-video-player .art-layer-auto-playback .art-auto-playback-jump{color:var(--art-theme);cursor:pointer}.art-video-player.art-lock .art-subtitle{bottom:var(--art-subtitle-bottom)!important}.art-video-player.art-mini-progress-bar .art-bottom,.art-video-player.art-lock .art-bottom{opacity:1;background-image:none;padding:0}.art-video-player.art-mini-progress-bar .art-bottom .art-controls,.art-video-player.art-lock .art-bottom .art-controls,.art-video-player.art-mini-progress-bar .art-bottom .art-progress,.art-video-player.art-lock .art-bottom .art-progress{transform:translateY(calc(var(--art-control-height) + var(--art-bottom-gap) + var(--art-progress-height)/4))}.art-video-player.art-mini-progress-bar .art-bottom .art-progress-indicator,.art-video-player.art-lock .art-bottom .art-progress-indicator{display:none!important}.art-video-player.art-control-show .art-layer-lock{display:flex}.art-control-selector{justify-content:center;display:flex;position:relative}.art-control-selector .art-selector-list{text-align:center;border-radius:var(--art-border-radius);opacity:0;pointer-events:none;bottom:var(--art-control-height);max-height:var(--art-selector-max-height);background-color:var(--art-widget-background);transition:all var(--art-transition-duration)ease;flex-direction:column;align-items:center;display:flex;position:absolute;overflow:hidden auto;transform:translateY(10px)}.art-control-selector .art-selector-list .art-selector-item{flex-shrink:0;justify-content:center;align-items:center;width:100%;padding:10px 15px;line-height:1;display:flex}.art-control-selector .art-selector-list .art-selector-item:hover{background-color:#ffffff1a}.art-control-selector .art-selector-list .art-selector-item:hover,.art-control-selector .art-selector-list .art-selector-item.art-current{color:var(--art-theme)}.art-control-selector:hover .art-selector-list{opacity:1;pointer-events:auto;transform:translateY(0)}[class*=hint--]{font-style:normal;display:inline-block;position:relative}[class*=hint--]:before,[class*=hint--]:after{visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;transition:all .3s;position:absolute;transform:translate(0,0)}[class*=hint--]:hover:before,[class*=hint--]:hover:after{visibility:visible;opacity:1;transition-delay:.1s}[class*=hint--]:before{content:"";z-index:1000001;background:0 0;border:6px solid #0000;position:absolute}[class*=hint--]:after{color:#fff;white-space:nowrap;background:#000;padding:8px 10px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;line-height:12px}[class*=hint--][aria-label]:after{content:attr(aria-label)}[class*=hint--][data-hint]:after{content:attr(data-hint)}[aria-label=""]:before,[aria-label=""]:after,[data-hint=""]:before,[data-hint=""]:after{display:none!important}.hint--top-left:before,.hint--top-right:before,.hint--top:before{border-top-color:#000}.hint--bottom-left:before,.hint--bottom-right:before,.hint--bottom:before{border-bottom-color:#000}.hint--left:before{border-left-color:#000}.hint--right:before{border-right-color:#000}.hint--top:before{margin-bottom:-11px}.hint--top:before,.hint--top:after{bottom:100%;left:50%}.hint--top:before{left:calc(50% - 6px)}.hint--top:after{transform:translate(-50%)}.hint--top:hover:before{transform:translateY(-8px)}.hint--top:hover:after{transform:translate(-50%)translateY(-8px)}.hint--bottom:before{margin-top:-11px}.hint--bottom:before,.hint--bottom:after{top:100%;left:50%}.hint--bottom:before{left:calc(50% - 6px)}.hint--bottom:after{transform:translate(-50%)}.hint--bottom:hover:before{transform:translateY(8px)}.hint--bottom:hover:after{transform:translate(-50%)translateY(8px)}.hint--right:before{margin-bottom:-6px;margin-left:-11px}.hint--right:after{margin-bottom:-14px}.hint--right:before,.hint--right:after{bottom:50%;left:100%}.hint--right:hover:before,.hint--right:hover:after{transform:translate(8px)}.hint--left:before{margin-bottom:-6px;margin-right:-11px}.hint--left:after{margin-bottom:-14px}.hint--left:before,.hint--left:after{bottom:50%;right:100%}.hint--left:hover:before,.hint--left:hover:after{transform:translate(-8px)}.hint--top-left:before{margin-bottom:-11px}.hint--top-left:before,.hint--top-left:after{bottom:100%;left:50%}.hint--top-left:before{left:calc(50% - 6px)}.hint--top-left:after{margin-left:12px;transform:translate(-100%)}.hint--top-left:hover:before{transform:translateY(-8px)}.hint--top-left:hover:after{transform:translate(-100%)translateY(-8px)}.hint--top-right:before{margin-bottom:-11px}.hint--top-right:before,.hint--top-right:after{bottom:100%;left:50%}.hint--top-right:before{left:calc(50% - 6px)}.hint--top-right:after{margin-left:-12px;transform:translate(0)}.hint--top-right:hover:before,.hint--top-right:hover:after{transform:translateY(-8px)}.hint--bottom-left:before{margin-top:-11px}.hint--bottom-left:before,.hint--bottom-left:after{top:100%;left:50%}.hint--bottom-left:before{left:calc(50% - 6px)}.hint--bottom-left:after{margin-left:12px;transform:translate(-100%)}.hint--bottom-left:hover:before{transform:translateY(8px)}.hint--bottom-left:hover:after{transform:translate(-100%)translateY(8px)}.hint--bottom-right:before{margin-top:-11px}.hint--bottom-right:before,.hint--bottom-right:after{top:100%;left:50%}.hint--bottom-right:before{left:calc(50% - 6px)}.hint--bottom-right:after{margin-left:-12px;transform:translate(0)}.hint--bottom-right:hover:before,.hint--bottom-right:hover:after{transform:translateY(8px)}.hint--small:after,.hint--medium:after,.hint--large:after{white-space:normal;word-wrap:break-word;line-height:1.4em}.hint--small:after{width:80px}.hint--medium:after{width:150px}.hint--large:after{width:300px}[class*=hint--]:after{text-shadow:0 -1px #000;box-shadow:4px 4px 8px #0000004d}.hint--error:after{text-shadow:0 -1px #592726;background-color:#b34e4d}.hint--error.hint--top-left:before,.hint--error.hint--top-right:before,.hint--error.hint--top:before{border-top-color:#b34e4d}.hint--error.hint--bottom-left:before,.hint--error.hint--bottom-right:before,.hint--error.hint--bottom:before{border-bottom-color:#b34e4d}.hint--error.hint--left:before{border-left-color:#b34e4d}.hint--error.hint--right:before{border-right-color:#b34e4d}.hint--warning:after{text-shadow:0 -1px #6c5328;background-color:#c09854}.hint--warning.hint--top-left:before,.hint--warning.hint--top-right:before,.hint--warning.hint--top:before{border-top-color:#c09854}.hint--warning.hint--bottom-left:before,.hint--warning.hint--bottom-right:before,.hint--warning.hint--bottom:before{border-bottom-color:#c09854}.hint--warning.hint--left:before{border-left-color:#c09854}.hint--warning.hint--right:before{border-right-color:#c09854}.hint--info:after{text-shadow:0 -1px #1a3c4d;background-color:#3986ac}.hint--info.hint--top-left:before,.hint--info.hint--top-right:before,.hint--info.hint--top:before{border-top-color:#3986ac}.hint--info.hint--bottom-left:before,.hint--info.hint--bottom-right:before,.hint--info.hint--bottom:before{border-bottom-color:#3986ac}.hint--info.hint--left:before{border-left-color:#3986ac}.hint--info.hint--right:before{border-right-color:#3986ac}.hint--success:after{text-shadow:0 -1px #1a321a;background-color:#458746}.hint--success.hint--top-left:before,.hint--success.hint--top-right:before,.hint--success.hint--top:before{border-top-color:#458746}.hint--success.hint--bottom-left:before,.hint--success.hint--bottom-right:before,.hint--success.hint--bottom:before{border-bottom-color:#458746}.hint--success.hint--left:before{border-left-color:#458746}.hint--success.hint--right:before{border-right-color:#458746}.hint--always:after,.hint--always:before{opacity:1;visibility:visible}.hint--always.hint--top:before{transform:translateY(-8px)}.hint--always.hint--top:after{transform:translate(-50%)translateY(-8px)}.hint--always.hint--top-left:before{transform:translateY(-8px)}.hint--always.hint--top-left:after{transform:translate(-100%)translateY(-8px)}.hint--always.hint--top-right:before,.hint--always.hint--top-right:after{transform:translateY(-8px)}.hint--always.hint--bottom:before{transform:translateY(8px)}.hint--always.hint--bottom:after{transform:translate(-50%)translateY(8px)}.hint--always.hint--bottom-left:before{transform:translateY(8px)}.hint--always.hint--bottom-left:after{transform:translate(-100%)translateY(8px)}.hint--always.hint--bottom-right:before,.hint--always.hint--bottom-right:after{transform:translateY(8px)}.hint--always.hint--left:before,.hint--always.hint--left:after{transform:translate(-8px)}.hint--always.hint--right:before,.hint--always.hint--right:after{transform:translate(8px)}.hint--rounded:after{border-radius:4px}.hint--no-animate:before,.hint--no-animate:after{transition-duration:0s}.hint--bounce:before,.hint--bounce:after{-webkit-transition:opacity .3s,visibility .3s,-webkit-transform .3s cubic-bezier(.71,1.7,.77,1.24);-moz-transition:opacity .3s,visibility .3s,-moz-transform .3s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .3s,visibility .3s,transform .3s cubic-bezier(.71,1.7,.77,1.24)}.hint--no-shadow:before,.hint--no-shadow:after{text-shadow:initial;box-shadow:initial}.hint--no-arrow:before{display:none}.art-video-player.art-mobile{--art-bottom-gap:10px;--art-control-height:38px;--art-control-icon-scale:1;--art-state-size:60px;--art-settings-max-height:180px;--art-selector-max-height:180px;--art-indicator-scale:1;--art-control-opacity:1}.art-video-player.art-mobile .art-controls-left{margin-left:calc(var(--art-padding)/-1)}.art-video-player.art-mobile .art-controls-right{margin-right:calc(var(--art-padding)/-1)}'},{}],hw47a:[function(e,t,r,a){t.exports=function(){function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}var t=Object.prototype.toString,r=function(r){if(void 0===r)return"undefined";if(null===r)return"null";var o=e(r);if("boolean"===o)return"boolean";if("string"===o)return"string";if("number"===o)return"number";if("symbol"===o)return"symbol";if("function"===o)return"GeneratorFunction"===a(r)?"generatorfunction":"function";if(Array.isArray?Array.isArray(r):r instanceof Array)return"array";if(r.constructor&&"function"==typeof r.constructor.isBuffer&&r.constructor.isBuffer(r))return"buffer";if(function(e){try{if("number"==typeof e.length&&"function"==typeof e.callee)return!0}catch(e){if(-1!==e.message.indexOf("callee"))return!0}return!1}(r))return"arguments";if(r instanceof Date||"function"==typeof r.toDateString&&"function"==typeof r.getDate&&"function"==typeof r.setDate)return"date";if(r instanceof Error||"string"==typeof r.message&&r.constructor&&"number"==typeof r.constructor.stackTraceLimit)return"error";if(r instanceof RegExp||"string"==typeof r.flags&&"boolean"==typeof r.ignoreCase&&"boolean"==typeof r.multiline&&"boolean"==typeof r.global)return"regexp";switch(a(r)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if("function"==typeof r.throw&&"function"==typeof r.return&&"function"==typeof r.next)return"generator";switch(o=t.call(r)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return o.slice(8,-1).toLowerCase().replace(/\s/g,"")};function a(e){return e.constructor?e.constructor.name:null}function o(e,t){var a=2","license":"MIT","homepage":"https://artplayer.org","repository":{"type":"git","url":"git+https://github.com/zhw2590582/ArtPlayer.git"},"bugs":{"url":"https://github.com/zhw2590582/ArtPlayer/issues"},"keywords":["html5","video","player"],"main":"dist/artplayer.js","legacy":"dist/artplayer.legacy.js","types":"types/artplayer.d.ts","browserslist":"last 1 Chrome version","dependencies":{"option-validator":"^2.0.6"}}')},{}],"7jhZp":[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r),r.default={properties:["audioTracks","autoplay","buffered","controller","controls","crossOrigin","currentSrc","currentTime","defaultMuted","defaultPlaybackRate","duration","ended","error","loop","mediaGroup","muted","networkState","paused","playbackRate","played","preload","readyState","seekable","seeking","src","startDate","textTracks","videoTracks","volume"],methods:["addTextTrack","canPlayType","load","play","pause"],events:["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"],prototypes:["width","height","videoWidth","videoHeight","poster","webkitDecodedFrameCount","webkitDroppedFrameCount","playsInline","webkitSupportsFullscreen","webkitDisplayingFullscreen","onenterpictureinpicture","onleavepictureinpicture","disablePictureInPicture","cancelVideoFrameCallback","requestVideoFrameCallback","getVideoPlaybackQuality","requestPictureInPicture","webkitEnterFullScreen","webkitEnterFullscreen","webkitExitFullScreen","webkitExitFullscreen"]}},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"5lQoW":[function(e,t,r,a){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}],jFWxb:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("../utils"),n=e("../utils/component"),s=o.interopDefault(n),l=e("./aspectRatio"),c=o.interopDefault(l),d=e("./close"),p=o.interopDefault(d),u=e("./flip"),f=o.interopDefault(u),h=e("./info"),m=o.interopDefault(h),g=e("./playbackRate"),v=o.interopDefault(g),y=e("./version"),b=o.interopDefault(y);class x extends s.default{constructor(e){super(e),this.name="contextmenu",this.$parent=e.template.$contextmenu,i.isMobile||this.init()}init(){let{option:e,proxy:t,template:{$player:r,$contextmenu:a}}=this.art;e.playbackRate&&this.add((0,v.default)({name:"playbackRate",index:10})),e.aspectRatio&&this.add((0,c.default)({name:"aspectRatio",index:20})),e.flip&&this.add((0,f.default)({name:"flip",index:30})),this.add((0,m.default)({name:"info",index:40})),this.add((0,b.default)({name:"version",index:50})),this.add((0,p.default)({name:"close",index:60}));for(let t=0;t{if(!this.art.constructor.CONTEXTMENU)return;e.preventDefault(),this.show=!0;let t=e.clientX,o=e.clientY,{height:n,width:s,left:l,top:c}=(0,i.getRect)(r),{height:d,width:p}=(0,i.getRect)(a),u=t-l,f=o-c;t+p>l+s&&(u=s-p),o+d>c+n&&(f=n-d),(0,i.setStyles)(a,{top:`${f}px`,left:`${u}px`})}),t(r,"click",e=>{(0,i.includeFromEvent)(e,a)||(this.show=!1)}),this.art.on("blur",()=>{this.show=!1})}}r.default=x},{"../utils":"ga71d","../utils/component":"hARFP","./aspectRatio":"atwXQ","./close":"34cn1","./flip":"4YbBf","./info":"difR5","./playbackRate":"2VDwk","./version":"bza1P","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],ga71d:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("./compatibility");o.exportAll(i,r);var n=e("./dom");o.exportAll(n,r);var s=e("./error");o.exportAll(s,r);var l=e("./file");o.exportAll(l,r);var c=e("./format");o.exportAll(c,r);var d=e("./property");o.exportAll(d,r);var p=e("./subtitle");o.exportAll(p,r);var u=e("./time");o.exportAll(u,r)},{"./compatibility":"eqWpq","./dom":"Nhosu","./error":"480HW","./file":"2AGZv","./format":"1cr8o","./property":"cTF5s","./subtitle":"i6MtR","./time":"7VpW0","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],eqWpq:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"userAgent",()=>i),o.export(r,"isSafari",()=>n),o.export(r,"isIOS",()=>s),o.export(r,"isIOS13",()=>l),o.export(r,"isMobile",()=>c),o.export(r,"isBrowser",()=>d);let i=globalThis?.CUSTOM_USER_AGENT??("undefined"!=typeof navigator?navigator.userAgent:""),n=/^(?:(?!chrome|android).)*safari/i.test(i),s=/iPad|iPhone|iPod/i.test(i)&&!window.MSStream,l=s||i.includes("Macintosh")&&navigator.maxTouchPoints>=1,c=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(i)||l,d="undefined"!=typeof window&&"undefined"!=typeof document},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],Nhosu:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"query",()=>n),o.export(r,"queryAll",()=>s),o.export(r,"addClass",()=>l),o.export(r,"removeClass",()=>c),o.export(r,"hasClass",()=>d),o.export(r,"append",()=>p),o.export(r,"remove",()=>u),o.export(r,"setStyle",()=>f),o.export(r,"setStyles",()=>h),o.export(r,"getStyle",()=>m),o.export(r,"siblings",()=>g),o.export(r,"inverseClass",()=>v),o.export(r,"tooltip",()=>y),o.export(r,"isInViewport",()=>b),o.export(r,"includeFromEvent",()=>x),o.export(r,"replaceElement",()=>w),o.export(r,"createElement",()=>j),o.export(r,"getIcon",()=>k),o.export(r,"setStyleText",()=>S),o.export(r,"supportsFlex",()=>$),o.export(r,"getRect",()=>I),o.export(r,"loadImg",()=>M),o.export(r,"getComposedPath",()=>E);var i=e("./compatibility");function n(e,t=document){return t.querySelector(e)}function s(e,t=document){return Array.from(t.querySelectorAll(e))}function l(e,t){return e.classList.add(t)}function c(e,t){return e.classList.remove(t)}function d(e,t){return e.classList.contains(t)}function p(e,t){return t instanceof Element?e.appendChild(t):e.insertAdjacentHTML("beforeend",String(t)),e.lastElementChild||e.lastChild}function u(e){return e.parentNode.removeChild(e)}function f(e,t,r){return e.style[t]=r,e}function h(e,t){for(let r in t)f(e,r,t[r]);return e}function m(e,t,r=!0){let a=window.getComputedStyle(e,null).getPropertyValue(t);return r?Number.parseFloat(a):a}function g(e){return Array.from(e.parentElement.children).filter(t=>t!==e)}function v(e,t){g(e).forEach(e=>c(e,t)),l(e,t)}function y(e,t,r="top"){i.isMobile||(e.setAttribute("aria-label",t),l(e,"hint--rounded"),l(e,`hint--${r}`))}function b(e,t=0){let r=e.getBoundingClientRect(),a=window.innerHeight||document.documentElement.clientHeight,o=window.innerWidth||document.documentElement.clientWidth,i=r.top-t<=a&&r.top+r.height+t>=0,n=r.left-t<=o+t&&r.left+r.width+t>=0;return i&&n}function x(e,t){return E(e).includes(t)}function w(e,t){return t.parentNode.replaceChild(e,t),e}function j(e){return document.createElement(e)}function k(e="",t=""){let r=j("i");return l(r,"art-icon"),l(r,`art-icon-${e}`),p(r,t),r}function S(e,t){let r=document.getElementById(e);r||((r=document.createElement("style")).id=e,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{document.head.appendChild(r)}):(document.head||document.documentElement).appendChild(r)),r.textContent=t}function $(){let e=document.createElement("div");return e.style.display="flex","flex"===e.style.display}function I(e){return e.getBoundingClientRect()}function M(e,t){return new Promise((r,a)=>{let o=new Image;o.onload=function(){if(t&&1!==t){let i=document.createElement("canvas"),n=i.getContext("2d");i.width=o.width*t,i.height=o.height*t,n.drawImage(o,0,0,i.width,i.height),i.toBlob(t=>{let o=URL.createObjectURL(t),i=new Image;i.onload=function(){r(i)},i.onerror=function(){URL.revokeObjectURL(o),a(Error(`Image load failed: ${e}`))},i.src=o})}else r(o)},o.onerror=function(){a(Error(`Image load failed: ${e}`))},o.src=e})}function E(e){if(e.composedPath)return e.composedPath();let t=[],r=e.target;for(;r;)t.push(r),r=r.parentNode;return t.includes(window)||void 0===window||t.push(window),t}},{"./compatibility":"eqWpq","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"480HW":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"ArtPlayerError",()=>i),o.export(r,"errorHandle",()=>n);class i extends Error{constructor(e,t){super(e),"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,t||this.constructor),this.name="ArtPlayerError"}}function n(e,t){if(!e)throw new i(t);return e}},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"2AGZv":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e,t){let r=document.createElement("a");r.style.display="none",r.href=e,r.download=t,document.body.appendChild(r),r.click(),document.body.removeChild(r)}o.defineInteropFlag(r),o.export(r,"getExt",()=>function e(t){return t.includes("?")?e(t.split("?")[0]):t.includes("#")?e(t.split("#")[0]):t.trim().toLowerCase().split(".").pop()}),o.export(r,"download",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"1cr8o":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function n(e){return e.charAt(0).toUpperCase()+e.slice(1)}function s(e){if(!e)return"00:00";let t=Math.floor(e/3600),r=Math.floor((e-3600*t)/60),a=Math.floor(e-3600*t-60*r);return(t>0?[t,r,a]:[r,a]).map(e=>e<10?`0${e}`:String(e)).join(":")}function l(e){return e.replace(/[&<>'"]/g,e=>({"&":"&","<":"<",">":">","'":"'",'"':"""})[e]||e)}function c(e){let t={"&":"&","<":"<",">":">","'":"'",""":'"'},r=RegExp(`(${Object.keys(t).join("|")})`,"g");return e.replace(r,e=>t[e]||e)}o.defineInteropFlag(r),o.export(r,"clamp",()=>i),o.export(r,"capitalize",()=>n),o.export(r,"secondToTime",()=>s),o.export(r,"escape",()=>l),o.export(r,"unescape",()=>c)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],cTF5s:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"def",()=>i),o.export(r,"has",()=>s),o.export(r,"get",()=>l),o.export(r,"mergeDeep",()=>function e(...t){let r=e=>e&&"object"==typeof e&&!Array.isArray(e);return t.reduce((t,a)=>(Object.keys(a).forEach(o=>{let i=t[o],n=a[o];Array.isArray(i)&&Array.isArray(n)?t[o]=i.concat(...n):r(i)&&r(n)?t[o]=e(i,n):t[o]=n}),t),{})});let i=Object.defineProperty,{hasOwnProperty:n}=Object.prototype;function s(e,t){return n.call(e,t)}function l(e,t){return Object.getOwnPropertyDescriptor(e,t)}},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],i6MtR:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){return"WEBVTT \r\n\r\n".concat(e.replace(/(\d\d:\d\d:\d\d)[,.](\d+)/g,(e,t,r)=>{let a=r.slice(0,3);return 1===r.length&&(a=`${r}00`),2===r.length&&(a=`${r}0`),`${t},${a}`}).replace(/\{\\([ibu])\}/g,"").replace(/\{\\([ibu])1\}/g,"<$1>").replace(/\{([ibu])\}/g,"<$1>").replace(/\{\/([ibu])\}/g,"").replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g,"$1.$2").replace(/\{[\s\S]*?\}/g,"").concat("\r\n\r\n"))}function n(e){return URL.createObjectURL(new Blob([e],{type:"text/vtt"}))}function s(e){let t=RegExp("Dialogue:\\s\\d,(\\d+:\\d\\d:\\d\\d.\\d\\d),(\\d+:\\d\\d:\\d\\d.\\d\\d),([^,]*),([^,]*),(?:[^,]*,){4}([\\s\\S]*)$","i");function r(e=""){return e.split(/[:.]/).map((e,t,r)=>{if(t===r.length-1){if(1===e.length)return`.${e}00`;if(2===e.length)return`.${e}0`}else if(1===e.length)return(0===t?"0":":0")+e;return 0===t?e:t===r.length-1?`.${e}`:`:${e}`}).join("")}return`WEBVTT ${e.split(/\r?\n/).map(e=>{let a=e.match(t);return a?{start:r(a[1].trim()),end:r(a[2].trim()),text:a[5].replace(/\{[\s\S]*?\}/g,"").replace(/(\\N)/g,"\n").trim().split(/\r?\n/).map(e=>e.trim()).join("\n")}:null}).filter(e=>e).map((e,t)=>e?`${t+1} ${e.start} --> ${e.end} ${e.text}`:"").filter(e=>e.trim()).join("\n\n")}`}o.defineInteropFlag(r),o.export(r,"srtToVtt",()=>i),o.export(r,"vttToBlob",()=>n),o.export(r,"assToVtt",()=>s)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"7VpW0":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e=0){return new Promise(t=>setTimeout(t,e))}function n(e,t){let r;return function(...a){let o=()=>(r=null,e.apply(this,a));clearTimeout(r),r=setTimeout(o,t)}}function s(e,t){let r=!1;return function(...a){r||(e.apply(this,a),r=!0,setTimeout(()=>{r=!1},t))}}o.defineInteropFlag(r),o.export(r,"sleep",()=>i),o.export(r,"debounce",()=>n),o.export(r,"throttle",()=>s)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],hARFP:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("option-validator"),n=o.interopDefault(i),s=e("../scheme"),l=e("./dom"),c=e("./error");r.default=class{constructor(e){this.id=0,this.art=e,this.cache=new Map,this.add=this.add.bind(this),this.remove=this.remove.bind(this),this.update=this.update.bind(this)}get show(){return(0,l.hasClass)(this.art.template.$player,`art-${this.name}-show`)}set show(e){let{$player:t}=this.art.template,r=`art-${this.name}-show`;e?(0,l.addClass)(t,r):(0,l.removeClass)(t,r),this.art.emit(this.name,e)}toggle(){this.show=!this.show}add(e){let t="function"==typeof e?e(this.art):e;if(t.html=t.html||"",(0,n.default)(t,s.ComponentOption),!this.$parent||!this.name||t.disable)return;let r=t.name||`${this.name}${this.id}`,a=this.cache.get(r);(0,c.errorHandle)(!a,`Can't add an existing [${r}] to the [${this.name}]`),this.id+=1;let o=(0,l.createElement)("div");(0,l.addClass)(o,`art-${this.name}`),(0,l.addClass)(o,`art-${this.name}-${r}`);let i=Array.from(this.$parent.children);o.dataset.index=t.index||this.id;let d=i.find(e=>Number(e.dataset.index)>=Number(o.dataset.index));d?d.insertAdjacentElement("beforebegin",o):(0,l.append)(this.$parent,o),t.html&&(0,l.append)(o,t.html),t.style&&(0,l.setStyles)(o,t.style),t.tooltip&&(0,l.tooltip)(o,t.tooltip);let p=[];if(t.click){let e=this.art.events.proxy(o,"click",e=>{e.preventDefault(),t.click.call(this.art,this,e)});p.push(e)}return t.selector&&["left","right"].includes(t.position)&&this.selector(t,o,p),this[r]=o,this.cache.set(r,{$ref:o,events:p,option:t}),t.mounted&&t.mounted.call(this.art,o),o}remove(e){let t=this.cache.get(e);(0,c.errorHandle)(t,`Can't find [${e}] from the [${this.name}]`),t.option.beforeUnmount&&t.option.beforeUnmount.call(this.art,t.$ref);for(let e=0;ef);var i=e("../utils");let n="array",s="boolean",l="string",c="number",d="object",p="function";function u(e,t,r){return(0,i.errorHandle)(t===l||t===c||e instanceof Element,`${r.join(".")} require '${l}' or 'Element' type`)}let f={html:u,disable:`?${s}`,name:`?${l}`,index:`?${c}`,style:`?${d}`,click:`?${p}`,mounted:`?${p}`,tooltip:`?${l}|${c}`,width:`?${c}`,selector:`?${n}`,onSelect:`?${p}`,switch:`?${s}`,onSwitch:`?${p}`,range:`?${n}`,onRange:`?${p}`,onChange:`?${p}`};r.default={id:l,container:u,url:l,poster:l,type:l,theme:l,lang:l,volume:c,isLive:s,muted:s,autoplay:s,autoSize:s,autoMini:s,loop:s,flip:s,playbackRate:s,aspectRatio:s,screenshot:s,setting:s,hotkey:s,pip:s,mutex:s,backdrop:s,fullscreen:s,fullscreenWeb:s,subtitleOffset:s,miniProgressBar:s,useSSR:s,playsInline:s,lock:s,gesture:s,fastForward:s,autoPlayback:s,autoOrientation:s,airplay:s,proxy:`?${p}`,plugins:[p],layers:[f],contextmenu:[f],settings:[f],controls:[{...f,position:(e,t,r)=>{let a=["top","left","right"];return(0,i.errorHandle)(a.includes(e),`${r.join(".")} only accept ${a.toString()} as parameters`)}}],quality:[{default:`?${s}`,html:l,url:l}],highlight:[{time:c,text:l}],thumbnails:{url:l,number:c,column:c,width:c,height:c,scale:c},subtitle:{url:l,name:l,type:l,style:d,escape:s,encoding:l,onVttLoad:p},moreVideoAttr:d,i18n:d,icons:d,cssVar:d,customType:d}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],atwXQ:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>{let{i18n:r,constructor:{ASPECT_RATIO:a}}=t,o=a.map(e=>`${"default"===e?r.get("Default"):e}`).join("");return{...e,html:`${r.get("Aspect Ratio")}: ${o}`,click:(e,r)=>{let{value:a}=r.target.dataset;a&&(t.aspectRatio=a,e.show=!1)},mounted:e=>{let r=(0,i.query)('[data-value="default"]',e);r&&(0,i.inverseClass)(r,"art-current"),t.on("aspectRatio",t=>{let r=(0,i.queryAll)("span",e).find(e=>e.dataset.value===t);r&&(0,i.inverseClass)(r,"art-current")})}}}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"34cn1":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){return t=>({...e,html:t.i18n.get("Close"),click:e=>{e.show=!1}})}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"4YbBf":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>{let{i18n:r,constructor:{FLIP:a}}=t,o=a.map(e=>`${r.get((0,i.capitalize)(e))}`).join("");return{...e,html:`${r.get("Video Flip")}: ${o}`,click:(e,r)=>{let{value:a}=r.target.dataset;a&&(t.flip=a.toLowerCase(),e.show=!1)},mounted:e=>{let r=(0,i.query)('[data-value="normal"]',e);r&&(0,i.inverseClass)(r,"art-current"),t.on("flip",t=>{let r=(0,i.queryAll)("span",e).find(e=>e.dataset.value===t);r&&(0,i.inverseClass)(r,"art-current")})}}}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],difR5:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){return t=>({...e,html:t.i18n.get("Video Info"),click:e=>{t.info.show=!0,e.show=!1}})}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"2VDwk":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>{let{i18n:r,constructor:{PLAYBACK_RATE:a}}=t,o=a.map(e=>`${1===e?r.get("Normal"):e.toFixed(1)}`).join("");return{...e,html:`${r.get("Play Speed")}: ${o}`,click:(e,r)=>{let{value:a}=r.target.dataset;a&&(t.playbackRate=Number(a),e.show=!1)},mounted:e=>{let r=(0,i.query)('[data-value="1"]',e);r&&(0,i.inverseClass)(r,"art-current"),t.on("video:ratechange",()=>{let r=(0,i.queryAll)("span",e).find(e=>Number(e.dataset.value)===t.playbackRate);r&&(0,i.inverseClass)(r,"art-current")})}}}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],bza1P:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>function(e){return{...e,html:`ArtPlayer ${i.version}`}});var i=e("../../package.json")},{"../../package.json":"2r8Ra","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"8He0l":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("../utils"),n=e("../utils/component"),s=o.interopDefault(n),l=e("./airplay"),c=o.interopDefault(l),d=e("./fullscreen"),p=o.interopDefault(d),u=e("./fullscreenWeb"),f=o.interopDefault(u),h=e("./pip"),m=o.interopDefault(h),g=e("./playAndPause"),v=o.interopDefault(g),y=e("./progress"),b=o.interopDefault(y),x=e("./screenshot"),w=o.interopDefault(x),j=e("./setting"),k=o.interopDefault(j),S=e("./time"),$=o.interopDefault(S),I=e("./volume"),M=o.interopDefault(I);class E extends s.default{constructor(e){super(e),this.isHover=!1,this.name="control",this.timer=Date.now();let{constructor:t}=e,{$player:r,$bottom:a}=this.art.template;e.on("mousemove",()=>{i.isMobile||(this.show=!0)}),e.on("click",()=>{i.isMobile?this.toggle():this.show=!0}),e.on("document:mousemove",e=>{this.isHover=(0,i.includeFromEvent)(e,a)}),e.on("video:timeupdate",()=>{!e.setting.show&&!this.isHover&&!e.isInput&&e.playing&&this.show&&Date.now()-this.timer>=t.CONTROL_HIDE_TIME&&(this.show=!1)}),e.on("control",e=>{e?((0,i.removeClass)(r,"art-hide-cursor"),(0,i.addClass)(r,"art-hover"),this.timer=Date.now()):((0,i.addClass)(r,"art-hide-cursor"),(0,i.removeClass)(r,"art-hover"))}),this.init()}init(){let{option:e}=this.art;e.isLive||this.add((0,b.default)({name:"progress",position:"top",index:10})),this.add({name:"thumbnails",position:"top",index:20}),this.add((0,v.default)({name:"playAndPause",position:"left",index:10})),this.add((0,M.default)({name:"volume",position:"left",index:20})),e.isLive||this.add((0,$.default)({name:"time",position:"left",index:30})),e.quality.length&&(0,i.sleep)().then(()=>{this.art.quality=e.quality}),e.screenshot&&!i.isMobile&&this.add((0,w.default)({name:"screenshot",position:"right",index:20})),e.setting&&this.add((0,k.default)({name:"setting",position:"right",index:30})),e.pip&&this.add((0,m.default)({name:"pip",position:"right",index:40})),e.airplay&&window.WebKitPlaybackTargetAvailabilityEvent&&this.add((0,c.default)({name:"airplay",position:"right",index:50})),e.fullscreenWeb&&this.add((0,f.default)({name:"fullscreenWeb",position:"right",index:60})),e.fullscreen&&this.add((0,p.default)({name:"fullscreen",position:"right",index:70}));for(let t=0;te.selector}),(0,i.def)(r,"$control_item",{get:()=>a}),(0,i.def)(r,"$control_value",{get:()=>o})}let s=a(n,"click",async t=>{let r=(0,i.getComposedPath)(t),a=e.selector.find(e=>e.$control_item===r.find(t=>e.$control_item===t));this.check(a),e.onSelect&&(o.innerHTML=await e.onSelect.call(this.art,a,a.$control_item,t))});r.push(s)}}r.default=E},{"../utils":"ga71d","../utils/component":"hARFP","./airplay":"aJLUA","./fullscreen":"hN3wo","./fullscreenWeb":"9w6yG","./pip":"dPgoc","./playAndPause":"bGr3A","./progress":"aTHK3","./screenshot":"1t1Fe","./setting":"3gKuK","./time":"3kqR1","./volume":"cqTwe","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],aJLUA:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("AirPlay"),mounted:e=>{let{proxy:r,icons:a}=t;(0,i.append)(e,a.airplay),r(e,"click",()=>t.airplay())}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],hN3wo:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("Fullscreen"),mounted:e=>{let{proxy:r,icons:a,i18n:o}=t,n=(0,i.append)(e,a.fullscreenOn),s=(0,i.append)(e,a.fullscreenOff);(0,i.setStyle)(s,"display","none"),r(e,"click",()=>{t.fullscreen=!t.fullscreen}),t.on("fullscreen",t=>{t?((0,i.tooltip)(e,o.get("Exit Fullscreen")),(0,i.setStyle)(n,"display","none"),(0,i.setStyle)(s,"display","inline-flex")):((0,i.tooltip)(e,o.get("Fullscreen")),(0,i.setStyle)(n,"display","inline-flex"),(0,i.setStyle)(s,"display","none"))})}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"9w6yG":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("Web Fullscreen"),mounted:e=>{let{proxy:r,icons:a,i18n:o}=t,n=(0,i.append)(e,a.fullscreenWebOn),s=(0,i.append)(e,a.fullscreenWebOff);(0,i.setStyle)(s,"display","none"),r(e,"click",()=>{t.fullscreenWeb=!t.fullscreenWeb}),t.on("fullscreenWeb",t=>{t?((0,i.tooltip)(e,o.get("Exit Web Fullscreen")),(0,i.setStyle)(n,"display","none"),(0,i.setStyle)(s,"display","inline-flex")):((0,i.tooltip)(e,o.get("Web Fullscreen")),(0,i.setStyle)(n,"display","inline-flex"),(0,i.setStyle)(s,"display","none"))})}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],dPgoc:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("PIP Mode"),mounted:e=>{let{proxy:r,icons:a,i18n:o}=t;(0,i.append)(e,a.pip),r(e,"click",()=>{t.pip=!t.pip}),t.on("pip",t=>{(0,i.tooltip)(e,o.get(t?"Exit PIP Mode":"PIP Mode"))})}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],bGr3A:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,mounted:e=>{let{proxy:r,icons:a,i18n:o}=t,n=(0,i.append)(e,a.play),s=(0,i.append)(e,a.pause);function l(){(0,i.setStyle)(n,"display","flex"),(0,i.setStyle)(s,"display","none")}function c(){(0,i.setStyle)(n,"display","none"),(0,i.setStyle)(s,"display","flex")}(0,i.tooltip)(n,o.get("Play")),(0,i.tooltip)(s,o.get("Pause")),r(n,"click",()=>{t.play()}),r(s,"click",()=>{t.pause()}),t.playing?c():l(),t.on("video:playing",()=>{c()}),t.on("video:pause",()=>{l()})}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],aTHK3:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"getPosFromEvent",()=>n),o.export(r,"setCurrentTime",()=>s),o.export(r,"default",()=>l);var i=e("../utils");function n(e,t){let{$progress:r}=e.template,{left:a}=(0,i.getRect)(r),o=i.isMobile?t.touches[0].clientX:t.clientX,n=(0,i.clamp)(o-a,0,r.clientWidth),s=n/r.clientWidth*e.duration,l=(0,i.secondToTime)(s),c=(0,i.clamp)(n/r.clientWidth,0,1);return{second:s,time:l,width:n,percentage:c}}function s(e,t){if(e.isRotate){let r=t.touches[0].clientY/e.height,a=r*e.duration;e.emit("setBar","played",r,t),e.seek=a}else{let{second:r,percentage:a}=n(e,t);e.emit("setBar","played",a,t),e.seek=r}}function l(e){return t=>{let{icons:r,option:a,proxy:o}=t;return{...e,html:`
`,mounted:e=>{let l=null,c=!1,d=(0,i.query)(".art-progress-hover",e),p=(0,i.query)(".art-progress-loaded",e),u=(0,i.query)(".art-progress-played",e),f=(0,i.query)(".art-progress-highlight",e),h=(0,i.query)(".art-progress-indicator",e),m=(0,i.query)(".art-progress-tip",e);function g(r,a){let{width:o,time:s}=a||n(t,r);m.textContent=s;let l=m.clientWidth;o<=l/2?(0,i.setStyle)(m,"left",0):o>e.clientWidth-l/2?(0,i.setStyle)(m,"left",`${e.clientWidth-l}px`):(0,i.setStyle)(m,"left",`${o-l/2}px`)}r.indicator?(0,i.append)(h,r.indicator):(0,i.setStyle)(h,"backgroundColor","var(--art-theme)"),t.on("setBar",function(r,a,o){let n="played"===r&&o&&i.isMobile;"loaded"===r&&(0,i.setStyle)(p,"width",`${100*a}%`),"hover"===r&&(0,i.setStyle)(d,"width",`${100*a}%`),"played"===r&&((0,i.setStyle)(u,"width",`${100*a}%`),(0,i.setStyle)(h,"left",`${100*a}%`)),n&&((0,i.setStyle)(m,"display","flex"),g(o,{width:e.clientWidth*a,time:(0,i.secondToTime)(a*t.duration)}),clearTimeout(l),l=setTimeout(()=>{(0,i.setStyle)(m,"display","none")},500))}),t.on("video:loadedmetadata",function(){f.textContent="";for(let e=0;e`;(0,i.append)(f,n)}}),t.constructor.USE_RAF?t.on("raf",()=>{t.emit("setBar","played",t.played),t.emit("setBar","loaded",t.loaded)}):(t.on("video:timeupdate",()=>{t.emit("setBar","played",t.played)}),t.on("video:progress",()=>{t.emit("setBar","loaded",t.loaded)}),t.on("video:ended",()=>{t.emit("setBar","played",1)})),t.emit("setBar","loaded",t.loaded||0),i.isMobile||(o(e,"click",e=>{e.target!==h&&s(t,e)}),o(e,"mousemove",r=>{let{percentage:a}=n(t,r);if(t.emit("setBar","hover",a,r),(0,i.setStyle)(m,"display","flex"),(0,i.includeFromEvent)(r,f)){let{width:a}=n(t,r),{text:o}=r.target.dataset;m.textContent=o;let s=m.clientWidth;a<=s/2?(0,i.setStyle)(m,"left",0):a>e.clientWidth-s/2?(0,i.setStyle)(m,"left",`${e.clientWidth-s}px`):(0,i.setStyle)(m,"left",`${a-s/2}px`)}else g(r)}),o(e,"mouseleave",e=>{(0,i.setStyle)(m,"display","none"),t.emit("setBar","hover",0,e)}),o(e,"mousedown",e=>{c=0===e.button}),t.on("document:mousemove",e=>{if(c){let{second:r,percentage:a}=n(t,e);t.emit("setBar","played",a,e),t.seek=r}}),t.on("document:mouseup",()=>{c&&(c=!1)}))}}}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"1t1Fe":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("Screenshot"),mounted:e=>{let{proxy:r,icons:a}=t;(0,i.append)(e,a.screenshot),r(e,"click",()=>{t.screenshot()})}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"3gKuK":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("Show Setting"),mounted:e=>{let{proxy:r,icons:a,i18n:o}=t;(0,i.append)(e,a.setting),r(e,"click",()=>{t.setting.toggle(),t.setting.resize()}),t.on("setting",t=>{(0,i.tooltip)(e,o.get(t?"Hide Setting":"Show Setting"))})}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"3kqR1":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,style:i.isMobile?{fontSize:"12px",padding:"0 5px"}:{cursor:"auto",padding:"0 10px"},mounted:e=>{function r(){let r=`${(0,i.secondToTime)(t.currentTime)} / ${(0,i.secondToTime)(t.duration)}`;r!==e.textContent&&(e.textContent=r)}r();let a=["video:loadedmetadata","video:timeupdate","video:progress"];for(let e=0;en);var i=e("../utils");function n(e){return t=>({...e,mounted:e=>{let{proxy:r,icons:a}=t,o=(0,i.append)(e,a.volume),n=(0,i.append)(e,a.volumeClose),s=(0,i.append)(e,'
'),l=(0,i.append)(s,'
'),c=(0,i.append)(l,'
'),d=(0,i.append)(l,'
'),p=(0,i.append)(d,'
'),u=(0,i.append)(p,'
'),f=(0,i.append)(d,'
');function h(e){let{top:t,height:r}=(0,i.getRect)(d);return 1-(e.clientY-t)/r}function m(){if(t.muted||0===t.volume)(0,i.setStyle)(o,"display","none"),(0,i.setStyle)(n,"display","flex"),(0,i.setStyle)(f,"top","100%"),(0,i.setStyle)(u,"top","100%"),c.textContent=0;else{let e=100*t.volume;(0,i.setStyle)(o,"display","flex"),(0,i.setStyle)(n,"display","none"),(0,i.setStyle)(f,"top",`${100-e}%`),(0,i.setStyle)(u,"top",`${100-e}%`),c.textContent=Math.floor(e)}}if(m(),t.on("video:volumechange",m),r(o,"click",()=>{t.muted=!0}),r(n,"click",()=>{t.muted=!1}),i.isMobile)(0,i.setStyle)(s,"display","none");else{let e=!1;r(d,"mousedown",r=>{e=0===r.button,t.volume=h(r)}),t.on("document:mousemove",r=>{e&&(t.muted=!1,t.volume=h(r))}),t.on("document:mouseup",()=>{e&&(e=!1)})}}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],eFzfA:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("./clickInit"),n=o.interopDefault(i),s=e("./gestureInit"),l=o.interopDefault(s),c=e("./globalInit"),d=o.interopDefault(c),p=e("./hoverInit"),u=o.interopDefault(p),f=e("./moveInit"),h=o.interopDefault(f),m=e("./resizeInit"),g=o.interopDefault(m),v=e("./updateInit"),y=o.interopDefault(v),b=e("./viewInit"),x=o.interopDefault(b);r.default=class{constructor(e){this.destroyEvents=[],this.proxy=this.proxy.bind(this),this.hover=this.hover.bind(this),(0,n.default)(e,this),(0,u.default)(e,this),(0,h.default)(e,this),(0,g.default)(e,this),(0,l.default)(e,this),(0,x.default)(e,this),(0,d.default)(e,this),(0,y.default)(e,this)}proxy(e,t,r,a={}){if(Array.isArray(t))return t.map(t=>this.proxy(e,t,r,a));e.addEventListener(t,r,a);let o=()=>e.removeEventListener(t,r,a);return this.destroyEvents.push(o),o}hover(e,t,r){t&&this.proxy(e,"mouseenter",t),r&&this.proxy(e,"mouseleave",r)}remove(e){let t=this.destroyEvents.indexOf(e);t>-1&&(e(),this.destroyEvents.splice(t,1))}destroy(){for(let e=0;en);var i=e("../utils");function n(e,t){let{constructor:r,template:{$player:a,$video:o}}=e;function n(t){(0,i.includeFromEvent)(t,a)?(e.isInput="INPUT"===t.target.tagName,e.isFocus=!0,e.emit("focus",t)):(e.isInput=!1,e.isFocus=!1,e.emit("blur",t))}e.on("document:click",n),e.on("document:contextmenu",n);let s=[];t.proxy(o,"click",t=>{let a=Date.now();s.push(a);let{MOBILE_CLICK_PLAY:o,DBCLICK_TIME:n,MOBILE_DBCLICK_PLAY:l,DBCLICK_FULLSCREEN:c}=r,d=s.filter(e=>a-e<=n);switch(d.length){case 1:e.emit("click",t),i.isMobile?!e.isLock&&o&&e.toggle():e.toggle(),s=d;break;case 2:e.emit("dblclick",t),i.isMobile?!e.isLock&&l&&e.toggle():c&&(e.fullscreen=!e.fullscreen),s=[];break;default:s=[]}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"7AgpD":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>s);var i=e("../control/progress"),n=e("../utils");function s(e,t){if(n.isMobile&&!e.option.isLive){let{$video:r,$progress:a}=e.template,o=null,s=!1,l=0,c=0,d=0,p=t=>{if(1===t.touches.length&&!e.isLock){o===a&&(0,i.setCurrentTime)(e,t),s=!0;let{pageX:r,pageY:n}=t.touches[0];l=r,c=n,d=e.currentTime}},u=t=>{if(1===t.touches.length&&s&&e.duration){let{pageX:a,pageY:i}=t.touches[0],s=function(e,t,r,a){let o=t-a,i=r-e,n=0;if(2>Math.abs(i)&&2>Math.abs(o))return n;let s=180*Math.atan2(o,i)/Math.PI;return s>=-45&&s<45?n=4:s>=45&&s<135?n=1:s>=-135&&s<-45?n=2:(s>=135&&s<=180||s>=-180&&s<-135)&&(n=3),n}(l,c,a,i),p=[3,4].includes(s),u=[1,2].includes(s);if(p&&!e.isRotate||u&&e.isRotate){let s=(0,n.clamp)((a-l)/e.width,-1,1),p=(0,n.clamp)((i-c)/e.height,-1,1),u=e.isRotate?p:s,f=o===r?e.constructor.TOUCH_MOVE_RATIO:1,h=(0,n.clamp)(d+e.duration*u*f,0,e.duration);e.seek=h,e.emit("setBar","played",(0,n.clamp)(h/e.duration,0,1),t),e.notice.show=`${(0,n.secondToTime)(h)} / ${(0,n.secondToTime)(e.duration)}`}}};e.option.gesture&&(t.proxy(r,"touchstart",e=>{o=r,p(e)}),t.proxy(r,"touchmove",u)),t.proxy(a,"touchstart",e=>{o=a,p(e)}),t.proxy(a,"touchmove",u),e.on("document:touchend",()=>{s&&(l=0,c=0,d=0,s=!1,o=null)})}}},{"../control/progress":"aTHK3","../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],k05ig:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e,t){let r=["click","mouseup","keydown","touchend","touchmove","mousemove","contextmenu","webkitfullscreenchange"],a=["resize","scroll","orientationchange"],o=[];function i(n={}){for(let e=0;e{let a=n.document||s.ownerDocument||document,i=t.proxy(a,r,t=>{e.emit(`document:${r}`,t)});o.push(i)}),a.forEach(r=>{let a=n.window||s.ownerDocument?.defaultView||window,i=t.proxy(a,r,t=>{e.emit(`window:${r}`,t)});o.push(i)})}i(),t.bindGlobalEvents=i}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"34Nn1":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e,t){let{$player:r}=e.template;t.hover(r,t=>{(0,i.addClass)(r,"art-hover"),e.emit("hover",!0,t)},t=>{(0,i.removeClass)(r,"art-hover"),e.emit("hover",!1,t)})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"1n1rp":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e,t){let{$player:r}=e.template;t.proxy(r,"mousemove",t=>{e.emit("mousemove",t)})}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],gfqtJ:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e,t){let{option:r,constructor:a}=e;e.on("resize",()=>{let{aspectRatio:t,notice:a}=e;"standard"===e.state&&r.autoSize&&e.autoSize(),e.aspectRatio=t,a.show=""});let o=(0,i.debounce)(()=>e.emit("resize"),a.RESIZE_TIME);e.on("window:orientationchange",()=>o()),e.on("window:resize",()=>o()),screen&&screen.orientation&&screen.orientation.onchange&&t.proxy(screen.orientation,"change",()=>o())}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],g3KXr:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){if(e.constructor.USE_RAF){let t=null;!function r(){e.playing&&e.emit("raf"),e.isDestroy||(t=requestAnimationFrame(r))}(),e.on("destroy",()=>{cancelAnimationFrame(t)})}}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],kPVx0:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{option:t,constructor:r,template:{$container:a}}=e,o=(0,i.throttle)(()=>{e.emit("view",(0,i.isInViewport)(a,r.SCROLL_GAP))},r.SCROLL_TIME);e.on("window:scroll",()=>o()),e.on("view",r=>{t.autoMini&&(e.mini=!r)})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],aLFu1:[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);var o=e("./utils");r.default=class{constructor(e){this.art=e,this.keys={},e.option.hotkey&&!o.isMobile&&this.init()}init(){let{constructor:e}=this.art;this.add("Escape",()=>{this.art.fullscreenWeb&&(this.art.fullscreenWeb=!1)}),this.add("Space",()=>{this.art.toggle()}),this.add("ArrowLeft",()=>{this.art.backward=e.SEEK_STEP}),this.add("ArrowUp",()=>{this.art.volume+=e.VOLUME_STEP}),this.add("ArrowRight",()=>{this.art.forward=e.SEEK_STEP}),this.add("ArrowDown",()=>{this.art.volume-=e.VOLUME_STEP}),this.art.on("document:keydown",e=>{if(this.art.isFocus){let t=document.activeElement.tagName.toUpperCase(),r=document.activeElement.getAttribute("contenteditable");if("INPUT"!==t&&"TEXTAREA"!==t&&""!==r&&"true"!==r&&!e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey){let t=this.keys[e.code];if(t){e.preventDefault();for(let r=0;r(0,ei.getIcon)(e,t[e])})}}},{"bundle-text:./airplay.svg":"6cSMf","bundle-text:./arrow-left.svg":"joLIU","bundle-text:./arrow-right.svg":"4JNCR","bundle-text:./aspect-ratio.svg":"gzgBo","bundle-text:./check.svg":"k53Iw","bundle-text:./close.svg":"bbb2e","bundle-text:./config.svg":"bMazo","bundle-text:./error.svg":"58f4C","bundle-text:./flip.svg":"iIgzx","bundle-text:./fullscreen-off.svg":"cPRy5","bundle-text:./fullscreen-on.svg":"3XKQU","bundle-text:./fullscreen-web-off.svg":"guowG","bundle-text:./fullscreen-web-on.svg":"iSqKG","bundle-text:./loading.svg":"eSbu5","bundle-text:./lock.svg":"2D7et","bundle-text:./pause.svg":"iiALA","bundle-text:./pip.svg":"hdXSq","bundle-text:./play.svg":"jlvhb","bundle-text:./playback-rate.svg":"4bsv1","bundle-text:./screenshot.svg":"7SMEz","bundle-text:./setting.svg":"hdzYd","bundle-text:./state.svg":"2Aoc0","bundle-text:./switch-off.svg":"kDa5R","bundle-text:./switch-on.svg":"74Jrq","bundle-text:./unlock.svg":"YvH9I","bundle-text:./volume-close.svg":"fHhw4","bundle-text:./volume.svg":"k9IJR","../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"6cSMf":[function(e,t,r,a){t.exports=''},{}],joLIU:[function(e,t,r,a){t.exports=''},{}],"4JNCR":[function(e,t,r,a){t.exports=''},{}],gzgBo:[function(e,t,r,a){t.exports=''},{}],k53Iw:[function(e,t,r,a){t.exports=''},{}],bbb2e:[function(e,t,r,a){t.exports=''},{}],bMazo:[function(e,t,r,a){t.exports=''},{}],"58f4C":[function(e,t,r,a){t.exports=''},{}],iIgzx:[function(e,t,r,a){t.exports=''},{}],cPRy5:[function(e,t,r,a){t.exports=''},{}],"3XKQU":[function(e,t,r,a){t.exports=''},{}],guowG:[function(e,t,r,a){t.exports=''},{}],iSqKG:[function(e,t,r,a){t.exports=''},{}],eSbu5:[function(e,t,r,a){t.exports=''},{}],"2D7et":[function(e,t,r,a){t.exports=''},{}],iiALA:[function(e,t,r,a){t.exports=''},{}],hdXSq:[function(e,t,r,a){t.exports=''},{}],jlvhb:[function(e,t,r,a){t.exports=''},{}],"4bsv1":[function(e,t,r,a){t.exports=''},{}],"7SMEz":[function(e,t,r,a){t.exports=''},{}],hdzYd:[function(e,t,r,a){t.exports=''},{}],"2Aoc0":[function(e,t,r,a){t.exports=''},{}],kDa5R:[function(e,t,r,a){t.exports=''},{}],"74Jrq":[function(e,t,r,a){t.exports=''},{}],YvH9I:[function(e,t,r,a){t.exports=''},{}],fHhw4:[function(e,t,r,a){t.exports=''},{}],k9IJR:[function(e,t,r,a){t.exports=''},{}],cUKxy:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("./utils"),n=e("./utils/component"),s=o.interopDefault(n);class l extends s.default{constructor(e){super(e),this.name="info",i.isMobile||this.init()}init(){let{proxy:e,constructor:t,template:{$infoPanel:r,$infoClose:a,$video:o}}=this.art;e(a,"click",()=>{this.show=!1});let n=null,s=(0,i.queryAll)("[data-video]",r)||[];this.art.on("destroy",()=>clearTimeout(n)),!function e(){for(let e=0;e{(0,i.setStyle)(o,"display","none"),(0,i.setStyle)(n,"display",null)}),a.proxy(t.$state,"click",()=>e.play())}}r.default=l},{"./utils":"ga71d","./utils/component":"hARFP","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],qalnP:[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);var o=e("./utils");r.default=class{constructor(e){this.art=e,this.timer=null}set show(e){let{constructor:t,template:{$player:r,$noticeInner:a}}=this.art;e?(a.textContent=e instanceof Error?e.message.trim():e,(0,o.addClass)(r,"art-notice-show"),clearTimeout(this.timer),this.timer=setTimeout(()=>{a.textContent="",(0,o.removeClass)(r,"art-notice-show")},t.NOTICE_TIME)):(0,o.removeClass)(r,"art-notice-show")}get show(){let{template:{$player:e}}=this.art;return e.classList.contains("art-notice-show")}}},{"./utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],hZaaw:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("./airplayMix"),n=o.interopDefault(i),s=e("./aspectRatioMix"),l=o.interopDefault(s),c=e("./attrMix"),d=o.interopDefault(c),p=e("./autoHeightMix"),u=o.interopDefault(p),f=e("./autoSizeMix"),h=o.interopDefault(f),m=e("./cssVarMix"),g=o.interopDefault(m),v=e("./currentTimeMix"),y=o.interopDefault(v),b=e("./durationMix"),x=o.interopDefault(b),w=e("./eventInit"),j=o.interopDefault(w),k=e("./flipMix"),S=o.interopDefault(k),$=e("./fullscreenMix"),I=o.interopDefault($),M=e("./fullscreenWebMix"),E=o.interopDefault(M),T=e("./loadedMix"),C=o.interopDefault(T),F=e("./miniMix"),A=o.interopDefault(F),D=e("./optionInit"),R=o.interopDefault(D),W=e("./pauseMix"),L=o.interopDefault(W),P=e("./pipMix"),O=o.interopDefault(P),z=e("./playbackRateMix"),H=o.interopDefault(z),_=e("./playedMix"),q=o.interopDefault(_),V=e("./playingMix"),N=o.interopDefault(V),Q=e("./playMix"),B=o.interopDefault(Q),U=e("./posterMix"),Y=o.interopDefault(U),Z=e("./qualityMix"),X=o.interopDefault(Z),K=e("./rectMix"),G=o.interopDefault(K),J=e("./screenshotMix"),ee=o.interopDefault(J),et=e("./seekMix"),er=o.interopDefault(et),ea=e("./stateMix"),eo=o.interopDefault(ea),ei=e("./subtitleOffsetMix"),en=o.interopDefault(ei),es=e("./switchMix"),el=o.interopDefault(es),ec=e("./themeMix"),ed=o.interopDefault(ec),ep=e("./thumbnailsMix"),eu=o.interopDefault(ep),ef=e("./toggleMix"),eh=o.interopDefault(ef),em=e("./typeMix"),eg=o.interopDefault(em),ev=e("./urlMix"),ey=o.interopDefault(ev),eb=e("./volumeMix"),ex=o.interopDefault(eb);r.default=class{constructor(e){(0,ey.default)(e),(0,d.default)(e),(0,B.default)(e),(0,L.default)(e),(0,eh.default)(e),(0,er.default)(e),(0,ex.default)(e),(0,y.default)(e),(0,x.default)(e),(0,el.default)(e),(0,H.default)(e),(0,l.default)(e),(0,ee.default)(e),(0,I.default)(e),(0,E.default)(e),(0,O.default)(e),(0,C.default)(e),(0,q.default)(e),(0,N.default)(e),(0,h.default)(e),(0,G.default)(e),(0,S.default)(e),(0,A.default)(e),(0,Y.default)(e),(0,u.default)(e),(0,g.default)(e),(0,ed.default)(e),(0,eg.default)(e),(0,eo.default)(e),(0,en.default)(e),(0,n.default)(e),(0,X.default)(e),(0,eu.default)(e),(0,j.default)(e),(0,R.default)(e)}}},{"./airplayMix":"3IeSh","./aspectRatioMix":"bFvhq","./attrMix":"gAL4f","./autoHeightMix":"3icDv","./autoSizeMix":"1S8RZ","./cssVarMix":"OAYvI","./currentTimeMix":"8HvEc","./durationMix":"9MX8B","./eventInit":"8tgU8","./flipMix":"b5r8r","./fullscreenMix":"30dhw","./fullscreenWebMix":"3yxCW","./loadedMix":"fZNfw","./miniMix":"1IZ8F","./optionInit":"kk3GB","./pauseMix":"hCnBa","./pipMix":"7cdWF","./playbackRateMix":"v7Tjj","./playedMix":"6NJ76","./playingMix":"hS5cB","./playMix":"RTHaZ","./posterMix":"iQk0e","./qualityMix":"fbmk7","./rectMix":"clzGw","./screenshotMix":"egOBC","./seekMix":"aGOdO","./stateMix":"f5ksL","./subtitleOffsetMix":"eVqE5","./switchMix":"hXXTl","./themeMix":"9kb19","./thumbnailsMix":"cICxL","./toggleMix":"ifRrM","./typeMix":"kUOhk","./urlMix":"7uCXi","./volumeMix":"dzR4V","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"3IeSh":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,notice:r,proxy:a,template:{$video:o}}=e,n=!0;window.WebKitPlaybackTargetAvailabilityEvent&&o.webkitShowPlaybackTargetPicker?a(o,"webkitplaybacktargetavailabilitychanged",e=>{switch(e.availability){case"available":n=!0;break;case"not-available":n=!1}}):n=!1,(0,i.def)(e,"airplay",{value(){n?(o.webkitShowPlaybackTargetPicker(),e.emit("airplay")):r.show=t.get("AirPlay Not Available")}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],bFvhq:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,notice:r,template:{$video:a,$player:o}}=e;(0,i.def)(e,"aspectRatio",{get:()=>o.dataset.aspectRatio||"default",set(n){if(n||(n="default"),"default"===n)(0,i.setStyle)(a,"width",null),(0,i.setStyle)(a,"height",null),(0,i.setStyle)(a,"margin",null),delete o.dataset.aspectRatio;else{let e=n.split(":").map(Number),{clientWidth:t,clientHeight:r}=o,s=e[0]/e[1];t/r>s?((0,i.setStyle)(a,"width",`${s*r}px`),(0,i.setStyle)(a,"height","100%"),(0,i.setStyle)(a,"margin","0 auto")):((0,i.setStyle)(a,"width","100%"),(0,i.setStyle)(a,"height",`${t/s}px`),(0,i.setStyle)(a,"margin","auto 0")),o.dataset.aspectRatio=n}r.show=`${t.get("Aspect Ratio")}: ${"default"===n?t.get("Default"):n}`,e.emit("aspectRatio",n)}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],gAL4f:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$video:t}}=e;(0,i.def)(e,"attr",{value(e,r){if(void 0===r)return t[e];t[e]=r}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"3icDv":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$container:t,$video:r}}=e;(0,i.def)(e,"autoHeight",{value(){let{clientWidth:a}=t,{videoHeight:o,videoWidth:n}=r,s=a/n*o;(0,i.setStyle)(t,"height",`${s}px`),e.emit("autoHeight",s)}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"1S8RZ":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$container:t,$player:r,$video:a}=e.template;(0,i.def)(e,"autoSize",{value(){let{videoWidth:o,videoHeight:n}=a,{width:s,height:l}=(0,i.getRect)(t),c=o/n;s/l>c?((0,i.setStyle)(r,"width",`${l*c/s*100}%`),(0,i.setStyle)(r,"height","100%")):((0,i.setStyle)(r,"width","100%"),(0,i.setStyle)(r,"height",`${s/c/l*100}%`)),e.emit("autoSize",{width:e.width,height:e.height})}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],OAYvI:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$player:t}=e.template;(0,i.def)(e,"cssVar",{value:(e,r)=>r?t.style.setProperty(e,r):getComputedStyle(t).getPropertyValue(e)})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"8HvEc":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$video:t}=e.template;(0,i.def)(e,"currentTime",{get:()=>t.currentTime||0,set:r=>{Number.isNaN(r=Number.parseFloat(r))||(t.currentTime=(0,i.clamp)(r,0,e.duration))}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"9MX8B":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"duration",{get:()=>{let{duration:t}=e.template.$video;return t===1/0?0:t||0}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"8tgU8":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>l);var i=e("../config"),n=o.interopDefault(i),s=e("../utils");function l(e){let{i18n:t,notice:r,option:a,constructor:o,proxy:i,template:{$player:l,$video:c,$poster:d}}=e,p=0;for(let t=0;t{e.emit(`video:${t.type}`,t)});e.on("video:canplay",()=>{p=0,e.loading.show=!1}),e.once("video:canplay",()=>{e.loading.show=!1,e.controls.show=!0,e.mask.show=!0,e.isReady=!0,e.emit("ready")}),e.on("video:ended",()=>{a.loop?(e.seek=0,e.play(),e.controls.show=!1,e.mask.show=!1):(e.controls.show=!0,e.mask.show=!0)}),e.on("video:error",async i=>{p{e.emit("resize"),s.isMobile&&(e.loading.show=!1,e.controls.show=!0,e.mask.show=!0)}),e.on("video:loadstart",()=>{e.loading.show=!0,e.mask.show=!1,e.controls.show=!0}),e.on("video:pause",()=>{e.controls.show=!0,e.mask.show=!0}),e.on("video:play",()=>{e.mask.show=!1,(0,s.setStyle)(d,"display","none")}),e.on("video:playing",()=>{e.mask.show=!1}),e.on("video:progress",()=>{e.playing&&(e.loading.show=!1)}),e.on("video:seeked",()=>{e.loading.show=!1,e.mask.show=!0}),e.on("video:seeking",()=>{e.loading.show=!0,e.mask.show=!1}),e.on("video:timeupdate",()=>{e.mask.show=!1}),e.on("video:waiting",()=>{e.loading.show=!0,e.mask.show=!1})}},{"../config":"7jhZp","../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],b5r8r:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$player:t},i18n:r,notice:a}=e;(0,i.def)(e,"flip",{get:()=>t.dataset.flip||"normal",set(o){o||(o="normal"),"normal"===o?delete t.dataset.flip:t.dataset.flip=o,a.show=`${r.get("Video Flip")}: ${r.get((0,i.capitalize)(o))}`,e.emit("flip",o)}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"30dhw":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>l);var i=e("../libs/screenfull"),n=o.interopDefault(i),s=e("../utils");function l(e){let{i18n:t,notice:r,template:{$video:a,$player:o}}=e;e.once("video:loadedmetadata",()=>{n.default.isEnabled?(n.default.on("change",()=>{e.emit("fullscreen",n.default.isFullscreen),n.default.isFullscreen?(e.state="fullscreen",(0,s.addClass)(o,"art-fullscreen")):(0,s.removeClass)(o,"art-fullscreen"),e.emit("resize")}),n.default.on("error",t=>{e.emit("fullscreenError",t)}),(0,s.def)(e,"fullscreen",{get:()=>n.default.isFullscreen,async set(e){e?await n.default.request(o):await n.default.exit()}})):a.webkitSupportsFullscreen?(e.on("document:webkitfullscreenchange",()=>{e.emit("fullscreen",e.fullscreen),e.emit("resize")}),(0,s.def)(e,"fullscreen",{get:()=>document.fullscreenElement===a,set(t){t?(e.state="fullscreen",a.webkitEnterFullscreen()):a.webkitExitFullscreen()}})):(0,s.def)(e,"fullscreen",{get:()=>!1,set(){r.show=t.get("Fullscreen Not Supported")}}),(0,s.def)(e,"fullscreen",(0,s.get)(e,"fullscreen"))})}},{"../libs/screenfull":"8DIfy","../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"8DIfy":[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);let o=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],i=(()=>{if("undefined"==typeof document)return!1;let e=o[0],t={};for(let r of o)if(r[1]in document){for(let[a,o]of r.entries())t[e[a]]=o;return t}return!1})(),n={change:i.fullscreenchange,error:i.fullscreenerror},s={request:(e=document.documentElement,t)=>new Promise((r,a)=>{let o=()=>{s.off("change",o),r()};s.on("change",o);let n=e[i.requestFullscreen](t);n instanceof Promise&&n.then(o).catch(a)}),exit:()=>new Promise((e,t)=>{if(!s.isFullscreen)return void e();let r=()=>{s.off("change",r),e()};s.on("change",r);let a=document[i.exitFullscreen]();a instanceof Promise&&a.then(r).catch(t)}),toggle:(e,t)=>s.isFullscreen?s.exit():s.request(e,t),onchange(e){s.on("change",e)},onerror(e){s.on("error",e)},on(e,t){let r=n[e];r&&document.addEventListener(r,t,!1)},off(e,t){let r=n[e];r&&document.removeEventListener(r,t,!1)},raw:i};Object.defineProperties(s,{isFullscreen:{get:()=>!!document[i.fullscreenElement]},element:{enumerable:!0,get:()=>document[i.fullscreenElement]},isEnabled:{enumerable:!0,get:()=>!!document[i.fullscreenEnabled]}}),i||(s.isEnabled=!1),r.default=s},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"3yxCW":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{constructor:t,template:{$container:r,$player:a}}=e,o="";(0,i.def)(e,"fullscreenWeb",{get:()=>(0,i.hasClass)(a,"art-fullscreen-web"),set(n){n?(o=a.style.cssText,t.FULLSCREEN_WEB_IN_BODY&&(0,i.append)(document.body,a),e.state="fullscreenWeb",(0,i.setStyle)(a,"width","100%"),(0,i.setStyle)(a,"height","100%"),(0,i.addClass)(a,"art-fullscreen-web"),e.emit("fullscreenWeb",!0)):(t.FULLSCREEN_WEB_IN_BODY&&(0,i.append)(r,a),o&&(a.style.cssText=o,o=""),(0,i.removeClass)(a,"art-fullscreen-web"),e.emit("fullscreenWeb",!1)),e.emit("resize")}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],fZNfw:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$video:t}=e.template;(0,i.def)(e,"loaded",{get:()=>e.loadedTime/t.duration}),(0,i.def)(e,"loadedTime",{get:()=>t.buffered.length?t.buffered.end(t.buffered.length-1):0})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"1IZ8F":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{icons:t,proxy:r,storage:a,template:{$player:o,$video:n}}=e,s=!1,l=0,c=0;function d(){let{$mini:t}=e.template;t&&((0,i.removeClass)(o,"art-mini"),(0,i.setStyle)(t,"display","none"),o.prepend(n),e.emit("mini",!1))}function p(t,r){e.playing?((0,i.setStyle)(t,"display","none"),(0,i.setStyle)(r,"display","flex")):((0,i.setStyle)(t,"display","flex"),(0,i.setStyle)(r,"display","none"))}function u(){let{$mini:t}=e.template,r=(0,i.getRect)(t),o=window.innerHeight-r.height-50,n=window.innerWidth-r.width-50;a.set("top",o),a.set("left",n),(0,i.setStyle)(t,"top",`${o}px`),(0,i.setStyle)(t,"left",`${n}px`)}(0,i.def)(e,"mini",{get:()=>(0,i.hasClass)(o,"art-mini"),set(f){if(f){e.state="mini",(0,i.addClass)(o,"art-mini");let f=function(){let{$mini:o}=e.template;if(o)return(0,i.append)(o,n),(0,i.setStyle)(o,"display","flex");{let o=(0,i.createElement)("div");(0,i.addClass)(o,"art-mini-popup"),(0,i.append)(document.body,o),e.template.$mini=o,(0,i.append)(o,n);let u=(0,i.append)(o,'
');(0,i.append)(u,t.close),r(u,"click",d);let f=(0,i.append)(o,'
'),h=(0,i.append)(f,t.play),m=(0,i.append)(f,t.pause);return r(h,"click",()=>e.play()),r(m,"click",()=>e.pause()),p(h,m),e.on("video:playing",()=>p(h,m)),e.on("video:pause",()=>p(h,m)),e.on("video:timeupdate",()=>p(h,m)),r(o,"mousedown",e=>{s=0===e.button,l=e.pageX,c=e.pageY}),e.on("document:mousemove",e=>{if(s){(0,i.addClass)(o,"art-mini-dragging");let t=e.pageX-l,r=e.pageY-c;(0,i.setStyle)(o,"transform",`translate(${t}px, ${r}px)`)}}),e.on("document:mouseup",()=>{if(s){s=!1,(0,i.removeClass)(o,"art-mini-dragging");let e=(0,i.getRect)(o);a.set("left",e.left),a.set("top",e.top),(0,i.setStyle)(o,"left",`${e.left}px`),(0,i.setStyle)(o,"top",`${e.top}px`),(0,i.setStyle)(o,"transform",null)}}),o}}(),h=a.get("top"),m=a.get("left");"number"==typeof h&&"number"==typeof m?((0,i.setStyle)(f,"top",`${h}px`),(0,i.setStyle)(f,"left",`${m}px`),(0,i.isInViewport)(f)||u()):u(),e.emit("mini",!0)}else d()}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],kk3GB:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{option:t,storage:r,template:{$video:a,$poster:o}}=e;for(let r in t.moreVideoAttr)e.attr(r,t.moreVideoAttr[r]);t.muted&&(e.muted=t.muted),t.volume&&(a.volume=(0,i.clamp)(t.volume,0,1));let n=r.get("volume");for(let r in"number"==typeof n&&(a.volume=(0,i.clamp)(n,0,1)),t.poster&&(0,i.setStyle)(o,"backgroundImage",`url(${t.poster})`),t.autoplay&&(a.autoplay=t.autoplay),t.playsInline&&(a.playsInline=!0,a["webkit-playsinline"]=!0),t.theme&&(t.cssVar["--art-theme"]=t.theme),t.cssVar)e.cssVar(r,t.cssVar[r]);e.url=t.url}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],hCnBa:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$video:t},i18n:r,notice:a}=e;(0,i.def)(e,"pause",{value(){let o=t.pause();return a.show=r.get("Pause"),e.emit("pause"),o}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"7cdWF":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,notice:r,template:{$video:a}}=e;if(document.pictureInPictureEnabled){let{template:{$video:t},proxy:r,notice:a}=e;t.disablePictureInPicture=!1,(0,i.def)(e,"pip",{get:()=>document.pictureInPictureElement,set(r){r?(e.state="pip",t.requestPictureInPicture().catch(e=>{throw a.show=e,e})):document.exitPictureInPicture().catch(e=>{throw a.show=e,e})}}),r(t,"enterpictureinpicture",()=>{e.emit("pip",!0)}),r(t,"leavepictureinpicture",()=>{e.emit("pip",!1)})}else if(a.webkitSupportsPresentationMode){let{$video:t}=e.template;t.webkitSetPresentationMode("inline"),(0,i.def)(e,"pip",{get:()=>"picture-in-picture"===t.webkitPresentationMode,set(r){r?(e.state="pip",t.webkitSetPresentationMode("picture-in-picture"),e.emit("pip",!0)):(t.webkitSetPresentationMode("inline"),e.emit("pip",!1))}})}else(0,i.def)(e,"pip",{get:()=>!1,set(){r.show=t.get("PIP Not Supported")}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],v7Tjj:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$video:t},i18n:r,notice:a}=e;(0,i.def)(e,"playbackRate",{get:()=>t.playbackRate,set(o){o?o!==t.playbackRate&&(t.playbackRate=o,a.show=`${r.get("Rate")}: ${1===o?r.get("Normal"):`${o}x`}`):e.playbackRate=1}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"6NJ76":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"played",{get:()=>e.currentTime/e.duration})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],hS5cB:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$video:t}=e.template;(0,i.def)(e,"playing",{get:()=>"boolean"==typeof t.playing?t.playing:!!(t.currentTime>0&&!t.paused&&!t.ended&&t.readyState>2)})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],RTHaZ:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,notice:r,option:a,constructor:{instances:o},template:{$video:n}}=e;(0,i.def)(e,"play",{async value(){let i=await n.play();if(r.show=t.get("Play"),e.emit("play"),a.mutex)for(let t=0;tn);var i=e("../utils");function n(e){let{template:{$poster:t}}=e;(0,i.def)(e,"poster",{get:()=>{try{return t.style.backgroundImage.match(/"(.*)"/)[1]}catch{return""}},set(e){(0,i.setStyle)(t,"backgroundImage",`url(${e})`)}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],fbmk7:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"quality",{set(t){let{controls:r,notice:a,i18n:o}=e,i=t.find(e=>e.default)||t[0];r.update({name:"quality",position:"right",index:10,style:{marginRight:"10px"},html:i?.html||"",selector:t,onSelect:async t=>(await e.switchQuality(t.url),a.show=`${o.get("Switch Video")}: ${t.html}`,t.html)})}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],clzGw:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"rect",{get:()=>(0,i.getRect)(e.template.$player)});let t=["bottom","height","left","right","top","width"];for(let r=0;re.rect[a]})}(0,i.def)(e,"x",{get:()=>e.left+window.pageXOffset}),(0,i.def)(e,"y",{get:()=>e.top+window.pageYOffset})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],egOBC:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{notice:t,template:{$video:r}}=e,a=(0,i.createElement)("canvas");(0,i.def)(e,"getDataURL",{value:()=>new Promise((e,o)=>{try{a.width=r.videoWidth,a.height=r.videoHeight,a.getContext("2d").drawImage(r,0,0),e(a.toDataURL("image/png"))}catch(e){t.show=e,o(e)}})}),(0,i.def)(e,"getBlobUrl",{value:()=>new Promise((e,o)=>{try{a.width=r.videoWidth,a.height=r.videoHeight,a.getContext("2d").drawImage(r,0,0),a.toBlob(t=>{e(URL.createObjectURL(t))})}catch(e){t.show=e,o(e)}})}),(0,i.def)(e,"screenshot",{value:async t=>{let a=await e.getDataURL(),o=t||`artplayer_${(0,i.secondToTime)(r.currentTime)}`;return(0,i.download)(a,`${o}.png`),e.emit("screenshot",a),a}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],aGOdO:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{notice:t}=e;(0,i.def)(e,"seek",{set(r){e.currentTime=r,e.duration&&(t.show=`${(0,i.secondToTime)(e.currentTime)} / ${(0,i.secondToTime)(e.duration)}`),e.emit("seek",e.currentTime)}}),(0,i.def)(e,"forward",{set(t){e.seek=e.currentTime+t}}),(0,i.def)(e,"backward",{set(t){e.seek=e.currentTime-t}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],f5ksL:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let t=["mini","pip","fullscreen","fullscreenWeb"];(0,i.def)(e,"state",{get:()=>t.find(t=>e[t])||"standard",set(r){for(let a=0;an);var i=e("../utils");function n(e){let{notice:t,i18n:r,template:a}=e;(0,i.def)(e,"subtitleOffset",{get:()=>a.$track?.offset||0,set(o){let{cues:n}=e.subtitle;if(!a.$track||0===n.length)return;let s=(0,i.clamp)(o,-10,10);a.$track.offset=s;for(let t=0;tn);var i=e("../utils");function n(e){function t(t,r){return new Promise((a,o)=>{if(t===e.url)return;let{playing:i,aspectRatio:n,playbackRate:s}=e;e.pause(),e.url=t,e.notice.show="",e.once("video:error",o),e.once("video:loadedmetadata",()=>{e.currentTime=r}),e.once("video:canplay",async()=>{e.playbackRate=s,e.aspectRatio=n,i&&await e.play(),e.notice.show="",a()})})}(0,i.def)(e,"switchQuality",{value:r=>t(r,e.currentTime)}),(0,i.def)(e,"switchUrl",{value:e=>t(e,0)}),(0,i.def)(e,"switch",{set:e.switchUrl})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"9kb19":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"theme",{get:()=>e.cssVar("--art-theme"),set(t){e.cssVar("--art-theme",t)}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],cICxL:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{events:t,option:r,template:{$progress:a,$video:o}}=e,n=null,s=null,l=!1,c=!1,d=!1;t.hover(a,()=>{d=!0},()=>{d=!1}),e.on("setBar",async(t,p,u)=>{let f=e.controls?.thumbnails,{url:h,scale:m}=r.thumbnails;if(!f||!h)return;let g="played"===t&&u&&i.isMobile;if("hover"===t||g){if(l||(l=!0,s=await (0,i.loadImg)(h,m),c=!0),!c||!d)return;let t=a.clientWidth*p;(0,i.setStyle)(f,"display","flex"),t>0&&ta.clientWidth-f/2?(0,i.setStyle)(n,"left",`${a.clientWidth-f}px`):(0,i.setStyle)(n,"left",`${t-f/2}px`)}(t):i.isMobile||(0,i.setStyle)(f,"display","none"),g&&(clearTimeout(n),n=setTimeout(()=>{(0,i.setStyle)(f,"display","none")},500))}}),(0,i.def)(e,"thumbnails",{get:()=>e.option.thumbnails,set(t){t.url&&!e.option.isLive&&(e.option.thumbnails=t,clearTimeout(n),n=null,s=null,l=!1,c=!1)}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],ifRrM:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"toggle",{value:()=>e.playing?e.pause():e.play()})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],kUOhk:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"type",{get:()=>e.option.type,set(t){e.option.type=t}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"7uCXi":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{option:t,template:{$video:r}}=e;(0,i.def)(e,"url",{get:()=>r.src,async set(a){if(a){let o=e.url,n=t.type||(0,i.getExt)(a),s=t.customType[n];n&&s?(await (0,i.sleep)(),e.loading.show=!0,s.call(e,r,a,e)):(URL.revokeObjectURL(o),r.src=a),o!==e.url&&(e.option.url=a,e.isReady&&o&&e.once("video:canplay",()=>{e.emit("restart",a)}))}else await (0,i.sleep)(),e.loading.show=!0}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],dzR4V:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$video:t},i18n:r,notice:a,storage:o}=e;(0,i.def)(e,"volume",{get:()=>t.volume||0,set:e=>{t.volume=(0,i.clamp)(e,0,1),a.show=`${r.get("Volume")}: ${Number.parseInt(100*t.volume,10)}`,0!==t.volume&&o.set("volume",t.volume)}}),(0,i.def)(e,"muted",{get:()=>t.muted,set:r=>{t.muted=r,e.emit("muted",r)}})}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],iKxTB:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("../utils"),n=e("./autoOrientation"),s=o.interopDefault(n),l=e("./autoPlayback"),c=o.interopDefault(l),d=e("./fastForward"),p=o.interopDefault(d),u=e("./lock"),f=o.interopDefault(u),h=e("./miniProgressBar"),m=o.interopDefault(h);r.default=class{constructor(e){this.art=e,this.id=0;let{option:t}=e;t.miniProgressBar&&!t.isLive&&this.add(m.default),t.lock&&i.isMobile&&this.add(f.default),t.autoPlayback&&!t.isLive&&this.add(c.default),t.autoOrientation&&i.isMobile&&this.add(s.default),t.fastForward&&i.isMobile&&!t.isLive&&this.add(p.default);for(let e=0;ethis.next(e,t)):this.next(e,t)}next(e,t){let r=t&&t.name||e.name||`plugin${this.id}`;return(0,i.errorHandle)(!(0,i.has)(this,r),`Cannot add a plugin that already has the same name: ${r}`),(0,i.def)(this,r,{value:t}),this}}},{"../utils":"ga71d","./autoOrientation":"ewFyM","./autoPlayback":"lAEG8","./fastForward":"2vvbM","./lock":"eAX5u","./miniProgressBar":"gg16E","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],ewFyM:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{notice:t,constructor:r,template:{$player:a,$video:o}}=e,n="art-auto-orientation",s="art-auto-orientation-fullscreen",l=!1;function c(){let{videoWidth:e,videoHeight:t}=o,r=document.documentElement.clientWidth,a=document.documentElement.clientHeight;return e>t&&ra}return e.on("fullscreenWeb",t=>{t?c()&&setTimeout(()=>{e.fullscreenWeb&&!(0,i.hasClass)(a,n)&&function(){let t=document.documentElement.clientWidth,r=document.documentElement.clientHeight;(0,i.setStyle)(a,"width",`${r}px`),(0,i.setStyle)(a,"height",`${t}px`),(0,i.setStyle)(a,"transform-origin","0 0"),(0,i.setStyle)(a,"transform",`rotate(90deg) translate(0, -${t}px)`),(0,i.addClass)(a,n),e.isRotate=!0,e.emit("resize")}()},Number(r.AUTO_ORIENTATION_TIME??0)):(0,i.hasClass)(a,n)&&((0,i.setStyle)(a,"width",""),(0,i.setStyle)(a,"height",""),(0,i.setStyle)(a,"transform-origin",""),(0,i.setStyle)(a,"transform",""),(0,i.removeClass)(a,n),e.isRotate=!1,e.emit("resize"))}),e.on("fullscreen",async e=>{let r=!!screen?.orientation?.lock;if(e){if(r&&c())try{let e=screen.orientation.type.startsWith("portrait")?"landscape":"portrait";await screen.orientation.lock(e),l=!0,(0,i.addClass)(a,s)}catch(e){l=!1,t.show=e}}else if((0,i.hasClass)(a,s)&&(0,i.removeClass)(a,s),r&&l){try{screen.orientation.unlock()}catch{}l=!1}}),{name:"autoOrientation",get state(){return(0,i.hasClass)(a,n)}}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],lAEG8:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,icons:r,storage:a,constructor:o,proxy:n,template:{$poster:s}}=e,l=e.layers.add({name:"auto-playback",html:`
`}),c=(0,i.query)(".art-auto-playback-last",l),d=(0,i.query)(".art-auto-playback-jump",l),p=(0,i.query)(".art-auto-playback-close",l);(0,i.append)(p,r.close);let u=null;function f(){let r=(a.get("times")||{})[e.option.id||e.option.url];clearTimeout(u),(0,i.setStyle)(l,"display","none"),r&&r>=o.AUTO_PLAYBACK_MIN&&((0,i.setStyle)(l,"display","flex"),c.textContent=`${t.get("Last Seen")} ${(0,i.secondToTime)(r)}`,d.textContent=t.get("Jump Play"),n(p,"click",()=>{(0,i.setStyle)(l,"display","none")}),n(d,"click",()=>{e.seek=r,e.play(),(0,i.setStyle)(s,"display","none"),(0,i.setStyle)(l,"display","none")}),e.once("video:timeupdate",()=>{u=setTimeout(()=>{(0,i.setStyle)(l,"display","none")},o.AUTO_PLAYBACK_TIMEOUT)}))}return e.on("video:timeupdate",()=>{if(e.playing){let t=a.get("times")||{},r=Object.keys(t);r.length>o.AUTO_PLAYBACK_MAX&&delete t[r[0]],t[e.option.id||e.option.url]=e.currentTime,a.set("times",t)}}),e.on("ready",f),e.on("restart",f),{name:"auto-playback",get times(){return a.get("times")||{}},clear:()=>a.del("times"),delete(e){let t=a.get("times")||{};return delete t[e],a.set("times",t),t}}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"2vvbM":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{constructor:t,proxy:r,template:{$player:a,$video:o}}=e,n=null,s=!1,l=1,c=()=>{clearTimeout(n),s&&(s=!1,e.playbackRate=l,(0,i.removeClass)(a,"art-fast-forward"))};return r(o,"touchstart",r=>{1===r.touches.length&&e.playing&&!e.isLock&&(n=setTimeout(()=>{s=!0,l=e.playbackRate,e.playbackRate=t.FAST_FORWARD_VALUE,(0,i.addClass)(a,"art-fast-forward")},t.FAST_FORWARD_TIME))}),e.on("document:touchmove",c),e.on("document:touchend",c),{name:"fastForward",get state(){return(0,i.hasClass)(a,"art-fast-forward")}}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],eAX5u:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{layers:t,icons:r,template:{$player:a}}=e;function o(){return(0,i.hasClass)(a,"art-lock")}function n(){(0,i.addClass)(a,"art-lock"),e.isLock=!0,e.emit("lock",!0)}function s(){(0,i.removeClass)(a,"art-lock"),e.isLock=!1,e.emit("lock",!1)}return t.add({name:"lock",mounted(t){let a=(0,i.append)(t,r.lock),o=(0,i.append)(t,r.unlock);(0,i.setStyle)(a,"display","none"),e.on("lock",e=>{e?((0,i.setStyle)(a,"display","inline-flex"),(0,i.setStyle)(o,"display","none")):((0,i.setStyle)(a,"display","none"),(0,i.setStyle)(o,"display","inline-flex"))})},click(){o()?s():n()}}),{name:"lock",get state(){return o()},set state(value){value?n():s()}}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],gg16E:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return e.on("control",t=>{t?(0,i.removeClass)(e.template.$player,"art-mini-progress-bar"):(0,i.addClass)(e.template.$player,"art-mini-progress-bar")}),{name:"mini-progress-bar"}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],l15NM:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("../utils"),n=e("../utils/component"),s=o.interopDefault(n),l=e("./aspectRatio"),c=o.interopDefault(l),d=e("./flip"),p=o.interopDefault(d),u=e("./playbackRate"),f=o.interopDefault(u),h=e("./subtitleOffset"),m=o.interopDefault(h);class g extends s.default{constructor(e){super(e);let{option:t,controls:r,template:{$setting:a}}=e;this.name="setting",this.$parent=a,this.id=0,this.active=null,this.cache=new Map,this.option=[...this.builtin,...t.settings],t.setting&&(this.format(),this.render(),e.on("blur",()=>{this.show&&(this.show=!1,this.render())}),e.on("focus",e=>{let t=(0,i.includeFromEvent)(e,r.setting),a=(0,i.includeFromEvent)(e,this.$parent);!this.show||t||a||(this.show=!1,this.render())}),e.on("resize",()=>this.resize()))}get builtin(){let e=[],{option:t}=this.art;return t.playbackRate&&e.push((0,f.default)(this.art)),t.aspectRatio&&e.push((0,c.default)(this.art)),t.flip&&e.push((0,p.default)(this.art)),t.subtitleOffset&&e.push((0,m.default)(this.art)),e}traverse(e,t=this.option){for(let r=0;r{t.default=t===e,t.default&&t.$item&&(0,i.inverseClass)(t.$item,"art-current")},e.$option),this.render(e.$parents)}format(e=this.option,t,r,a=[]){for(let o=0;ot}),(0,i.def)(n,"$parents",{get:()=>r}),(0,i.def)(n,"$option",{get:()=>e});let a=[];(0,i.def)(n,"$events",{get:()=>a}),(0,i.def)(n,"$formatted",{get:()=>!0})}this.format(n.selector||[],n,e,a)}this.option=e}find(e=""){let t=null;return this.traverse(r=>{r.name===e&&(t=r)}),t}resize(){let{controls:e,constructor:{SETTING_WIDTH:t,SETTING_ITEM_HEIGHT:r},template:{$player:a,$setting:o}}=this.art;if(e.setting&&this.show){let n=this.active[0]?.$parent?.width||t,{left:s,width:l}=(0,i.getRect)(e.setting),{left:c,width:d}=(0,i.getRect)(a),p=s-c+l/2-n/2,u=this.active===this.option?this.active.length*r:(this.active.length+1)*r;if((0,i.setStyle)(o,"height",`${u}px`),(0,i.setStyle)(o,"width",`${n}px`),this.art.isRotate||i.isMobile)return;p+n>d?((0,i.setStyle)(o,"left",null),(0,i.setStyle)(o,"right",null)):((0,i.setStyle)(o,"left",`${p}px`),(0,i.setStyle)(o,"right","auto"))}}inactivate(e){for(let t=0;t'),l=(0,i.createElement)("div");(0,i.addClass)(l,"art-setting-item-left-icon"),(0,i.append)(l,a),(0,i.append)(s,l),(0,i.append)(s,e.$parent.html);let c=r(n,"click",()=>this.render(e.$parents));e.$parent.$events.push(c),(0,i.append)(t,n)}createItem(e,t=!1){if(!this.cache.has(e.$option))return;let r=this.cache.get(e.$option),a=e.$item,o="selector";(0,i.has)(e,"switch")&&(o="switch"),(0,i.has)(e,"range")&&(o="range"),(0,i.has)(e,"onClick")&&(o="button");let{icons:n,proxy:s,constructor:l}=this.art,c=(0,i.createElement)("div");(0,i.addClass)(c,"art-setting-item"),(0,i.setStyle)(c,"height",`${l.SETTING_ITEM_HEIGHT}px`),c.dataset.name=e.name||"",c.dataset.value=e.value||"";let d=(0,i.append)(c,'
'),p=(0,i.append)(c,'
'),u=(0,i.createElement)("div");switch((0,i.addClass)(u,"art-setting-item-left-icon"),o){case"button":case"switch":case"range":(0,i.append)(u,e.icon||n.config);break;case"selector":e.selector?.length?(0,i.append)(u,e.icon||n.config):(0,i.append)(u,n.check)}(0,i.append)(d,u),(0,i.def)(e,"$icon",{configurable:!0,get:()=>u}),(0,i.def)(e,"icon",{configurable:!0,get:()=>u.innerHTML,set(e){u.innerHTML="",(0,i.append)(u,e)}});let f=(0,i.createElement)("div");(0,i.addClass)(f,"art-setting-item-left-text"),(0,i.append)(f,e.html||""),(0,i.append)(d,f),(0,i.def)(e,"$html",{configurable:!0,get:()=>f}),(0,i.def)(e,"html",{configurable:!0,get:()=>f.innerHTML,set(e){f.innerHTML="",(0,i.append)(f,e)}});let h=(0,i.createElement)("div");switch((0,i.addClass)(h,"art-setting-item-right-tooltip"),(0,i.append)(h,e.tooltip||""),(0,i.append)(p,h),(0,i.def)(e,"$tooltip",{configurable:!0,get:()=>h}),(0,i.def)(e,"tooltip",{configurable:!0,get:()=>h.innerHTML,set(e){h.innerHTML="",(0,i.append)(h,e)}}),o){case"switch":{let t=(0,i.createElement)("div");(0,i.addClass)(t,"art-setting-item-right-icon");let r=(0,i.append)(t,n.switchOn),a=(0,i.append)(t,n.switchOff);(0,i.setStyle)(e.switch?a:r,"display","none"),(0,i.append)(p,t),(0,i.def)(e,"$switch",{configurable:!0,get:()=>t});let o=e.switch;(0,i.def)(e,"switch",{configurable:!0,get:()=>o,set(e){o=e,e?((0,i.setStyle)(a,"display","none"),(0,i.setStyle)(r,"display",null)):((0,i.setStyle)(a,"display",null),(0,i.setStyle)(r,"display","none"))}});break}case"range":{let t=(0,i.createElement)("div");(0,i.addClass)(t,"art-setting-item-right-icon");let r=(0,i.append)(t,'');r.value=e.range[0],r.min=e.range[1],r.max=e.range[2],r.step=e.range[3],(0,i.addClass)(r,"art-setting-range"),(0,i.append)(p,t),(0,i.def)(e,"$range",{configurable:!0,get:()=>r});let a=[...e.range];(0,i.def)(e,"range",{configurable:!0,get:()=>a,set(e){a=[...e],r.value=e[0],r.min=e[1],r.max=e[2],r.step=e[3]}})}break;case"selector":if(e.selector?.length){let e=(0,i.createElement)("div");(0,i.addClass)(e,"art-setting-item-right-icon"),(0,i.append)(e,n.arrowRight),(0,i.append)(p,e)}}switch(o){case"switch":if(e.onSwitch){let t=s(c,"click",async t=>{e.switch=await e.onSwitch.call(this.art,e,c,t)});e.$events.push(t)}break;case"range":if(e.$range){if(e.onRange){let t=s(e.$range,"change",async t=>{e.range[0]=e.$range.valueAsNumber,e.tooltip=await e.onRange.call(this.art,e,c,t)});e.$events.push(t)}if(e.onChange){let t=s(e.$range,"input",async t=>{e.range[0]=e.$range.valueAsNumber,e.tooltip=await e.onChange.call(this.art,e,c,t)});e.$events.push(t)}}break;case"selector":{let t=s(c,"click",async t=>{e.selector?.length?this.render(e.selector):(this.check(e),e.$parent.onSelect&&(e.$parent.tooltip=await e.$parent.onSelect.call(this.art,e,c,t)))});e.$events.push(t),e.default&&(0,i.addClass)(c,"art-current")}break;case"button":if(e.onClick){let t=s(c,"click",async t=>{e.tooltip=await e.onClick.call(this.art,e,c,t)});e.$events.push(t)}}(0,i.def)(e,"$item",{configurable:!0,get:()=>c}),t?(0,i.replaceElement)(c,a):(0,i.append)(r,c),e.mounted&&setTimeout(()=>e.mounted.call(this.art,e.$item,e),0)}render(e=this.option){if(this.active=e,this.cache.has(e)){let t=this.cache.get(e);(0,i.inverseClass)(t,"art-current")}else{let t=(0,i.createElement)("div");this.cache.set(e,t),(0,i.addClass)(t,"art-setting-panel"),(0,i.append)(this.$parent,t),(0,i.inverseClass)(t,"art-current"),e[0]?.$parent&&this.createHeader(e[0]);for(let t=0;t({value:t,name:`aspect-ratio-${t}`,default:t===e.aspectRatio,html:i(t)})),onSelect:t=>(e.aspectRatio=t.value,t.html),mounted:()=>{n(),e.on("aspectRatio",()=>n())}}}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],e86Hl:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,icons:r,constructor:{SETTING_ITEM_WIDTH:a,FLIP:o}}=e;function n(e){return t.get((0,i.capitalize)(e))}function s(){let t=e.setting.find(`flip-${e.flip}`);e.setting.check(t)}return{width:a,name:"flip",html:t.get("Video Flip"),tooltip:n(e.flip),icon:r.flip,selector:o.map(t=>({value:t,name:`flip-${t}`,default:t===e.flip,html:n(t)})),onSelect:t=>(e.flip=t.value,t.html),mounted:()=>{s(),e.on("flip",()=>s())}}}},{"../utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],lPy8C:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){let{i18n:t,icons:r,constructor:{SETTING_ITEM_WIDTH:a,PLAYBACK_RATE:o}}=e;function i(e){return 1===e?t.get("Normal"):e.toFixed(1)}function n(){let t=e.setting.find(`playback-rate-${e.playbackRate}`);e.setting.check(t)}return{width:a,name:"playback-rate",html:t.get("Play Speed"),tooltip:i(e.playbackRate),icon:r.playbackRate,selector:o.map(t=>({value:t,name:`playback-rate-${t}`,default:t===e.playbackRate,html:i(t)})),onSelect:t=>(e.playbackRate=t.value,t.html),mounted:()=>{n(),e.on("video:ratechange",()=>n())}}}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],jEoW9:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){let{i18n:t,icons:r,constructor:a}=e;return{width:a.SETTING_ITEM_WIDTH,name:"subtitle-offset",html:t.get("Subtitle Offset"),icon:r.subtitle,tooltip:"0s",range:[0,-10,10,.1],onChange:t=>(e.subtitleOffset=t.range[0],`${t.range[0]}s`),mounted:(t,r)=>{e.on("subtitleOffset",e=>{r.$range.value=e,r.tooltip=`${e}s`})}}}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"1bevC":[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r),r.default=class{constructor(){this.name="artplayer_settings",this.settings={}}get(e){try{let t=JSON.parse(window.localStorage.getItem(this.name))||{};return e?t[e]:t}catch{return e?this.settings[e]:this.settings}}set(e,t){try{let r=Object.assign({},this.get(),{[e]:t});window.localStorage.setItem(this.name,JSON.stringify(r))}catch{this.settings[e]=t}}del(e){try{let t=this.get();delete t[e],window.localStorage.setItem(this.name,JSON.stringify(t))}catch{delete this.settings[e]}}clear(){try{window.localStorage.removeItem(this.name)}catch{this.settings={}}}}},{"@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],aD26q:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("option-validator"),n=o.interopDefault(i),s=e("./scheme"),l=o.interopDefault(s),c=e("./utils"),d=e("./utils/component"),p=o.interopDefault(d);class u extends p.default{constructor(e){super(e),this.name="subtitle",this.option=null,this.destroyEvent=()=>null,this.init(e.option.subtitle);let t=!1;e.on("video:timeupdate",()=>{if(!this.url)return;let e=this.art.template.$video.webkitDisplayingFullscreen;"boolean"==typeof e&&e!==t&&(t=e,this.createTrack(e?"subtitles":"metadata",this.url))})}get url(){return this.art.template.$track.src}set url(e){this.switch(e)}get textTrack(){return this.art.template.$video?.textTracks?.[0]}get activeCues(){return this.textTrack?Array.from(this.textTrack.activeCues):[]}get cues(){return this.textTrack?Array.from(this.textTrack.cues):[]}style(e,t){let{$subtitle:r}=this.art.template;return"object"==typeof e?(0,c.setStyles)(r,e):(0,c.setStyle)(r,e,t)}update(){let{option:{subtitle:e},template:{$subtitle:t}}=this.art;t.innerHTML="",this.activeCues.length&&(this.art.emit("subtitleBeforeUpdate",this.activeCues),t.innerHTML=this.activeCues.map((t,r)=>t.text.split(/\r?\n/).filter(e=>e.trim()).map(t=>`
${e.escape?(0,c.escape)(t):t}
`).join("")).join(""),this.art.emit("subtitleAfterUpdate",this.activeCues))}async switch(e,t={}){let{i18n:r,notice:a,option:o}=this.art,i={...o.subtitle,...t,url:e},n=await this.init(i);return t.name&&(a.show=`${r.get("Switch Subtitle")}: ${t.name}`),n}createTrack(e,t){let{template:r,proxy:a,option:o}=this.art,{$video:i,$track:n}=r,s=(0,c.createElement)("track");s.default=!0,s.kind=e,s.src=t,s.label=o.subtitle.name||"Artplayer",s.track.mode="hidden",s.onload=()=>{this.art.emit("subtitleLoad",this.cues,this.option)},this.art.events.remove(this.destroyEvent),n.onload=null,(0,c.remove)(n),(0,c.append)(i,s),r.$track=s,this.destroyEvent=a(this.textTrack,"cuechange",()=>this.update())}async init(e){let{notice:t,template:{$subtitle:r}}=this.art;return this.textTrack?((0,n.default)(e,l.default.subtitle),e.url)?(this.option=e,this.style(e.style),fetch(e.url).then(e=>e.arrayBuffer()).then(t=>{let r=new TextDecoder(e.encoding).decode(t);switch(e.type||(0,c.getExt)(e.url)){case"srt":{let t=(0,c.srtToVtt)(r),a=e.onVttLoad(t);return(0,c.vttToBlob)(a)}case"ass":{let t=(0,c.assToVtt)(r),a=e.onVttLoad(t);return(0,c.vttToBlob)(a)}case"vtt":{let t=e.onVttLoad(r);return(0,c.vttToBlob)(t)}default:return e.url}}).then(e=>(r.innerHTML="",this.url===e||(URL.revokeObjectURL(this.url),this.createTrack("metadata",e)),e)).catch(e=>{throw r.innerHTML="",t.show=e,e})):void 0:null}}r.default=u},{"option-validator":"hw47a","./scheme":"9Np13","./utils":"ga71d","./utils/component":"hARFP","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"3s0cr":[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);var o=e("../package.json"),i=e("./utils");class n{constructor(e){this.art=e;let{option:t,constructor:r}=e;t.container instanceof Element?this.$container=t.container:(this.$container=(0,i.query)(t.container),(0,i.errorHandle)(this.$container,`No container element found by ${t.container}`)),(0,i.errorHandle)((0,i.supportsFlex)(),"The current browser does not support flex layout");let a=this.$container.tagName.toLowerCase();(0,i.errorHandle)("div"===a,`Unsupported container element type, only support 'div' but got '${a}'`),(0,i.errorHandle)(r.instances.every(e=>e.template.$container!==this.$container),"Cannot mount multiple instances on the same dom element"),this.query=this.query.bind(this),this.$container.dataset.artId=e.id,this.init()}static get html(){return`
Player version:
${o.version}
Video url:
Video volume:
Video time:
Video duration:
Video resolution:
x
[x]
`}query(e){return(0,i.query)(e,this.$container)}init(){let{option:e}=this.art;if(e.useSSR||(this.$container.innerHTML=n.html),this.$player=this.query(".art-video-player"),this.$video=this.query(".art-video"),this.$track=this.query("track"),this.$poster=this.query(".art-poster"),this.$subtitle=this.query(".art-subtitle"),this.$danmuku=this.query(".art-danmuku"),this.$bottom=this.query(".art-bottom"),this.$progress=this.query(".art-progress"),this.$controls=this.query(".art-controls"),this.$controlsLeft=this.query(".art-controls-left"),this.$controlsCenter=this.query(".art-controls-center"),this.$controlsRight=this.query(".art-controls-right"),this.$layer=this.query(".art-layers"),this.$loading=this.query(".art-loading"),this.$notice=this.query(".art-notice"),this.$noticeInner=this.query(".art-notice-inner"),this.$mask=this.query(".art-mask"),this.$state=this.query(".art-state"),this.$setting=this.query(".art-settings"),this.$info=this.query(".art-info"),this.$infoPanel=this.query(".art-info-panel"),this.$infoClose=this.query(".art-info-close"),this.$contextmenu=this.query(".art-contextmenus"),e.proxy){let t=e.proxy.call(this.art,this.art);(0,i.errorHandle)(t instanceof HTMLVideoElement||t instanceof HTMLCanvasElement,"Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'"),(0,i.replaceElement)(t,this.$video),t.className="art-video",this.$video=t}e.backdrop&&(0,i.addClass)(this.$player,"art-backdrop"),i.isMobile&&(0,i.addClass)(this.$player,"art-mobile")}destroy(e){this.$video.src="",e?this.$container.innerHTML="":(0,i.addClass)(this.$player,"art-destroy")}}r.default=n},{"../package.json":"2r8Ra","./utils":"ga71d","@parcel/transformer-js/src/esmodule-helpers.js":"5lQoW"}],"2Y43P":[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r),r.default=class{on(e,t,r){let a=this.e||(this.e={});return(a[e]||(a[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){let a=this;function o(...i){a.off(e,o),t.apply(r,i)}return o._=t,this.on(e,o,r)}emit(e,...t){let r=((this.e||(this.e={}))[e]||[]).slice();for(let e=0;e","packages/artplayer/src/index.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-960556ef08e919cb.js","node_modules/option-validator/dist/option-validator.js","packages/artplayer/package.json","packages/artplayer/src/config/index.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js","packages/artplayer/src/contextmenu/index.js","packages/artplayer/src/utils/index.js","packages/artplayer/src/utils/compatibility.js","packages/artplayer/src/utils/dom.js","packages/artplayer/src/utils/error.js","packages/artplayer/src/utils/file.js","packages/artplayer/src/utils/format.js","packages/artplayer/src/utils/property.js","packages/artplayer/src/utils/subtitle.js","packages/artplayer/src/utils/time.js","packages/artplayer/src/utils/component.js","packages/artplayer/src/scheme/index.js","packages/artplayer/src/contextmenu/aspectRatio.js","packages/artplayer/src/contextmenu/close.js","packages/artplayer/src/contextmenu/flip.js","packages/artplayer/src/contextmenu/info.js","packages/artplayer/src/contextmenu/playbackRate.js","packages/artplayer/src/contextmenu/version.js","packages/artplayer/src/control/index.js","packages/artplayer/src/control/airplay.js","packages/artplayer/src/control/fullscreen.js","packages/artplayer/src/control/fullscreenWeb.js","packages/artplayer/src/control/pip.js","packages/artplayer/src/control/playAndPause.js","packages/artplayer/src/control/progress.js","packages/artplayer/src/control/screenshot.js","packages/artplayer/src/control/setting.js","packages/artplayer/src/control/time.js","packages/artplayer/src/control/volume.js","packages/artplayer/src/events/index.js","packages/artplayer/src/events/clickInit.js","packages/artplayer/src/events/gestureInit.js","packages/artplayer/src/events/globalInit.js","packages/artplayer/src/events/hoverInit.js","packages/artplayer/src/events/moveInit.js","packages/artplayer/src/events/resizeInit.js","packages/artplayer/src/events/updateInit.js","packages/artplayer/src/events/viewInit.js","packages/artplayer/src/hotkey.js","packages/artplayer/src/i18n/index.js","packages/artplayer/src/i18n/zh-cn.js","packages/artplayer/src/icons/index.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-546152a37f7f6092.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-de54330ae9114809.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-1e49dcc3b9ae8c5b.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-4445cf7323017007.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-fa06f1d3017c1e19.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-4d7a4d1172e697fe.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-1d5d3013026e60f5.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-1de3075bca1b8c51.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-7fc68a4833ac008c.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-63c4bad7ae69925f.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-8052e5c279aae00c.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-46153b9f90efd612.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-23b379c594dbdefe.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-929f2c7a1ae1bb0b.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-de9910e54701bf07.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-8a83a1c52badcec4.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-f8e8eca5969eb4f8.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-51ecaa2c384a5873.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-19129552301e79bf.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-fed87cae3be49621.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-41db2cfe1a1c703a.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-c2878ac9772b5b5a.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-f8088cb143b06cc1.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-04f1f09754857dad.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-ff427c2f236809df.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-d94fc4aa3cdd08b7.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-976d047cfb342a19.js","packages/artplayer/src/info.js","packages/artplayer/src/layer.js","packages/artplayer/src/loading.js","packages/artplayer/src/mask.js","packages/artplayer/src/notice.js","packages/artplayer/src/player/index.js","packages/artplayer/src/player/airplayMix.js","packages/artplayer/src/player/aspectRatioMix.js","packages/artplayer/src/player/attrMix.js","packages/artplayer/src/player/autoHeightMix.js","packages/artplayer/src/player/autoSizeMix.js","packages/artplayer/src/player/cssVarMix.js","packages/artplayer/src/player/currentTimeMix.js","packages/artplayer/src/player/durationMix.js","packages/artplayer/src/player/eventInit.js","packages/artplayer/src/player/flipMix.js","packages/artplayer/src/player/fullscreenMix.js","packages/artplayer/src/libs/screenfull.js","packages/artplayer/src/player/fullscreenWebMix.js","packages/artplayer/src/player/loadedMix.js","packages/artplayer/src/player/miniMix.js","packages/artplayer/src/player/optionInit.js","packages/artplayer/src/player/pauseMix.js","packages/artplayer/src/player/pipMix.js","packages/artplayer/src/player/playbackRateMix.js","packages/artplayer/src/player/playedMix.js","packages/artplayer/src/player/playingMix.js","packages/artplayer/src/player/playMix.js","packages/artplayer/src/player/posterMix.js","packages/artplayer/src/player/qualityMix.js","packages/artplayer/src/player/rectMix.js","packages/artplayer/src/player/screenshotMix.js","packages/artplayer/src/player/seekMix.js","packages/artplayer/src/player/stateMix.js","packages/artplayer/src/player/subtitleOffsetMix.js","packages/artplayer/src/player/switchMix.js","packages/artplayer/src/player/themeMix.js","packages/artplayer/src/player/thumbnailsMix.js","packages/artplayer/src/player/toggleMix.js","packages/artplayer/src/player/typeMix.js","packages/artplayer/src/player/urlMix.js","packages/artplayer/src/player/volumeMix.js","packages/artplayer/src/plugins/index.js","packages/artplayer/src/plugins/autoOrientation.js","packages/artplayer/src/plugins/autoPlayback.js","packages/artplayer/src/plugins/fastForward.js","packages/artplayer/src/plugins/lock.js","packages/artplayer/src/plugins/miniProgressBar.js","packages/artplayer/src/setting/index.js","packages/artplayer/src/setting/aspectRatio.js","packages/artplayer/src/setting/flip.js","packages/artplayer/src/setting/playbackRate.js","packages/artplayer/src/setting/subtitleOffset.js","packages/artplayer/src/storage.js","packages/artplayer/src/subtitle.js","packages/artplayer/src/template.js","packages/artplayer/src/utils/emitter.js"],"sourcesContent":["// modules are defined as an array\n// [ module function, map of requires ]\n//\n// map of requires is short require name -> numeric require\n//\n// anything defined in a previous bundle is accessed via the\n// orig method which is the require for previous bundles\n\n(function (\n modules,\n entry,\n mainEntry,\n parcelRequireName,\n externals,\n distDir,\n publicUrl,\n devServer\n) {\n /* eslint-disable no-undef */\n var globalObject =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n /* eslint-enable no-undef */\n\n // Save the require from previous bundle to this closure if any\n var previousRequire =\n typeof globalObject[parcelRequireName] === 'function' &&\n globalObject[parcelRequireName];\n\n var importMap = previousRequire.i || {};\n var cache = previousRequire.cache || {};\n // Do not use `require` to prevent Webpack from trying to bundle this call\n var nodeRequire =\n typeof module !== 'undefined' &&\n typeof module.require === 'function' &&\n module.require.bind(module);\n\n function newRequire(name, jumped) {\n if (!cache[name]) {\n if (!modules[name]) {\n if (externals[name]) {\n return externals[name];\n }\n // if we cannot find the module within our internal map or\n // cache jump to the current global require ie. the last bundle\n // that was added to the page.\n var currentRequire =\n typeof globalObject[parcelRequireName] === 'function' &&\n globalObject[parcelRequireName];\n if (!jumped && currentRequire) {\n return currentRequire(name, true);\n }\n\n // If there are other bundles on this page the require from the\n // previous one is saved to 'previousRequire'. Repeat this as\n // many times as there are bundles until the module is found or\n // we exhaust the require chain.\n if (previousRequire) {\n return previousRequire(name, true);\n }\n\n // Try the node require function if it exists.\n if (nodeRequire && typeof name === 'string') {\n return nodeRequire(name);\n }\n\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n }\n\n localRequire.resolve = resolve;\n localRequire.cache = {};\n\n var module = (cache[name] = new newRequire.Module(name));\n\n modules[name][0].call(\n module.exports,\n localRequire,\n module,\n module.exports,\n globalObject\n );\n }\n\n return cache[name].exports;\n\n function localRequire(x) {\n var res = localRequire.resolve(x);\n return res === false ? {} : newRequire(res);\n }\n\n function resolve(x) {\n var id = modules[name][1][x];\n return id != null ? id : x;\n }\n }\n\n function Module(moduleName) {\n this.id = moduleName;\n this.bundle = newRequire;\n this.require = nodeRequire;\n this.exports = {};\n }\n\n newRequire.isParcelRequire = true;\n newRequire.Module = Module;\n newRequire.modules = modules;\n newRequire.cache = cache;\n newRequire.parent = previousRequire;\n newRequire.distDir = distDir;\n newRequire.publicUrl = publicUrl;\n newRequire.devServer = devServer;\n newRequire.i = importMap;\n newRequire.register = function (id, exports) {\n modules[id] = [\n function (require, module) {\n module.exports = exports;\n },\n {},\n ];\n };\n\n // Only insert newRequire.load when it is actually used.\n // The code in this file is linted against ES5, so dynamic import is not allowed.\n // INSERT_LOAD_HERE\n\n Object.defineProperty(newRequire, 'root', {\n get: function () {\n return globalObject[parcelRequireName];\n },\n });\n\n globalObject[parcelRequireName] = newRequire;\n\n for (var i = 0; i < entry.length; i++) {\n newRequire(entry[i]);\n }\n\n if (mainEntry) {\n // Expose entry point to Node, AMD or browser globals\n // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js\n var mainExports = newRequire(mainEntry);\n\n // CommonJS\n if (typeof exports === 'object' && typeof module !== 'undefined') {\n module.exports = mainExports;\n\n // RequireJS\n } else if (typeof define === 'function' && define.amd) {\n define(function () {\n return mainExports;\n });\n }\n }\n})({\"kXXX5\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _indexLess = require(\"bundle-text:./style/index.less\");\nvar _indexLessDefault = parcelHelpers.interopDefault(_indexLess);\nvar _optionValidator = require(\"option-validator\");\nvar _optionValidatorDefault = parcelHelpers.interopDefault(_optionValidator);\nvar _packageJson = require(\"../package.json\");\nvar _config = require(\"./config\");\nvar _configDefault = parcelHelpers.interopDefault(_config);\nvar _contextmenu = require(\"./contextmenu\");\nvar _contextmenuDefault = parcelHelpers.interopDefault(_contextmenu);\nvar _control = require(\"./control\");\nvar _controlDefault = parcelHelpers.interopDefault(_control);\nvar _events = require(\"./events\");\nvar _eventsDefault = parcelHelpers.interopDefault(_events);\nvar _hotkey = require(\"./hotkey\");\nvar _hotkeyDefault = parcelHelpers.interopDefault(_hotkey);\nvar _i18N = require(\"./i18n\");\nvar _i18NDefault = parcelHelpers.interopDefault(_i18N);\nvar _icons = require(\"./icons\");\nvar _iconsDefault = parcelHelpers.interopDefault(_icons);\nvar _info = require(\"./info\");\nvar _infoDefault = parcelHelpers.interopDefault(_info);\nvar _layer = require(\"./layer\");\nvar _layerDefault = parcelHelpers.interopDefault(_layer);\nvar _loading = require(\"./loading\");\nvar _loadingDefault = parcelHelpers.interopDefault(_loading);\nvar _mask = require(\"./mask\");\nvar _maskDefault = parcelHelpers.interopDefault(_mask);\nvar _notice = require(\"./notice\");\nvar _noticeDefault = parcelHelpers.interopDefault(_notice);\nvar _player = require(\"./player\");\nvar _playerDefault = parcelHelpers.interopDefault(_player);\nvar _plugins = require(\"./plugins\");\nvar _pluginsDefault = parcelHelpers.interopDefault(_plugins);\nvar _scheme = require(\"./scheme\");\nvar _schemeDefault = parcelHelpers.interopDefault(_scheme);\nvar _setting = require(\"./setting\");\nvar _settingDefault = parcelHelpers.interopDefault(_setting);\nvar _storage = require(\"./storage\");\nvar _storageDefault = parcelHelpers.interopDefault(_storage);\nvar _subtitle = require(\"./subtitle\");\nvar _subtitleDefault = parcelHelpers.interopDefault(_subtitle);\nvar _template = require(\"./template\");\nvar _templateDefault = parcelHelpers.interopDefault(_template);\nvar _utils = require(\"./utils\");\nvar _emitter = require(\"./utils/emitter\");\nvar _emitterDefault = parcelHelpers.interopDefault(_emitter);\nlet id = 0;\nconst instances = [];\nclass Artplayer extends (0, _emitterDefault.default) {\n constructor(option, readyCallback){\n super();\n this.id = ++id;\n const mergeOption = _utils.mergeDeep(Artplayer.option, option);\n mergeOption.container = option.container;\n this.option = (0, _optionValidatorDefault.default)(mergeOption, (0, _schemeDefault.default));\n this.isLock = false;\n this.isReady = false;\n this.isFocus = false;\n this.isInput = false;\n this.isRotate = false;\n this.isDestroy = false;\n this.template = new (0, _templateDefault.default)(this);\n this.events = new (0, _eventsDefault.default)(this);\n this.storage = new (0, _storageDefault.default)(this);\n this.icons = new (0, _iconsDefault.default)(this);\n this.i18n = new (0, _i18NDefault.default)(this);\n this.notice = new (0, _noticeDefault.default)(this);\n this.player = new (0, _playerDefault.default)(this);\n this.layers = new (0, _layerDefault.default)(this);\n this.controls = new (0, _controlDefault.default)(this);\n this.contextmenu = new (0, _contextmenuDefault.default)(this);\n this.subtitle = new (0, _subtitleDefault.default)(this);\n this.info = new (0, _infoDefault.default)(this);\n this.loading = new (0, _loadingDefault.default)(this);\n this.hotkey = new (0, _hotkeyDefault.default)(this);\n this.mask = new (0, _maskDefault.default)(this);\n this.setting = new (0, _settingDefault.default)(this);\n this.plugins = new (0, _pluginsDefault.default)(this);\n if (typeof readyCallback === 'function') this.on('ready', ()=>readyCallback.call(this, this));\n if (Artplayer.DEBUG) {\n // eslint-disable-next-line no-console\n const log = (msg)=>console.log(`[ART.${this.id}] -> ${msg}`);\n log(`Version@${Artplayer.version}`);\n for(let index = 0; index < (0, _configDefault.default).events.length; index++)this.on(`video:${(0, _configDefault.default).events[index]}`, (event)=>log(`Event@${event.type}`));\n }\n instances.push(this);\n }\n static get instances() {\n return instances;\n }\n static get version() {\n return 0, _packageJson.version;\n }\n static get config() {\n return 0, _configDefault.default;\n }\n static get utils() {\n return _utils;\n }\n static get scheme() {\n return 0, _schemeDefault.default;\n }\n static get Emitter() {\n return 0, _emitterDefault.default;\n }\n static get validator() {\n return 0, _optionValidatorDefault.default;\n }\n static get kindOf() {\n return (0, _optionValidatorDefault.default).kindOf;\n }\n static get html() {\n return (0, _templateDefault.default).html;\n }\n static get option() {\n return {\n id: '',\n container: '#artplayer',\n url: '',\n poster: '',\n type: '',\n theme: '#f00',\n volume: 0.7,\n isLive: false,\n muted: false,\n autoplay: false,\n autoSize: false,\n autoMini: false,\n loop: false,\n flip: false,\n playbackRate: false,\n aspectRatio: false,\n screenshot: false,\n setting: false,\n hotkey: true,\n pip: false,\n mutex: true,\n backdrop: true,\n fullscreen: false,\n fullscreenWeb: false,\n subtitleOffset: false,\n miniProgressBar: false,\n useSSR: false,\n playsInline: true,\n lock: false,\n gesture: true,\n fastForward: false,\n autoPlayback: false,\n autoOrientation: false,\n airplay: false,\n proxy: undefined,\n layers: [],\n contextmenu: [],\n controls: [],\n settings: [],\n quality: [],\n highlight: [],\n plugins: [],\n thumbnails: {\n url: '',\n number: 60,\n column: 10,\n width: 0,\n height: 0,\n scale: 1\n },\n subtitle: {\n url: '',\n type: '',\n style: {},\n name: '',\n escape: true,\n encoding: 'utf-8',\n onVttLoad: (vtt)=>vtt\n },\n moreVideoAttr: {\n controls: false,\n preload: _utils.isSafari ? 'auto' : 'metadata'\n },\n i18n: {},\n icons: {},\n cssVar: {},\n customType: {},\n lang: navigator?.language.toLowerCase()\n };\n }\n get proxy() {\n return this.events.proxy;\n }\n get query() {\n return this.template.query;\n }\n get video() {\n return this.template.$video;\n }\n destroy(removeHtml = true) {\n this.events.destroy();\n this.template.destroy(removeHtml);\n instances.splice(instances.indexOf(this), 1);\n this.isDestroy = true;\n this.emit('destroy');\n }\n}\nexports.default = Artplayer;\nArtplayer.STYLE = (0, _indexLessDefault.default);\nArtplayer.DEBUG = false;\nArtplayer.CONTEXTMENU = true;\nArtplayer.NOTICE_TIME = 2000;\nArtplayer.SETTING_WIDTH = 250;\nArtplayer.SETTING_ITEM_WIDTH = 200;\nArtplayer.SETTING_ITEM_HEIGHT = 35;\nArtplayer.RESIZE_TIME = 200;\nArtplayer.SCROLL_TIME = 200;\nArtplayer.SCROLL_GAP = 50;\nArtplayer.AUTO_PLAYBACK_MAX = 10;\nArtplayer.AUTO_PLAYBACK_MIN = 5;\nArtplayer.AUTO_PLAYBACK_TIMEOUT = 3000;\nArtplayer.RECONNECT_TIME_MAX = 5;\nArtplayer.RECONNECT_SLEEP_TIME = 1000;\nArtplayer.CONTROL_HIDE_TIME = 3000;\nArtplayer.DBCLICK_TIME = 300;\nArtplayer.DBCLICK_FULLSCREEN = true;\nArtplayer.MOBILE_DBCLICK_PLAY = true;\nArtplayer.MOBILE_CLICK_PLAY = false;\nArtplayer.AUTO_ORIENTATION_TIME = 200;\nArtplayer.INFO_LOOP_TIME = 1000;\nArtplayer.FAST_FORWARD_VALUE = 3;\nArtplayer.FAST_FORWARD_TIME = 1000;\nArtplayer.TOUCH_MOVE_RATIO = 0.5;\nArtplayer.VOLUME_STEP = 0.1;\nArtplayer.SEEK_STEP = 5;\nArtplayer.PLAYBACK_RATE = [\n 0.5,\n 0.75,\n 1,\n 1.25,\n 1.5,\n 2\n];\nArtplayer.ASPECT_RATIO = [\n 'default',\n '4:3',\n '16:9'\n];\nArtplayer.FLIP = [\n 'normal',\n 'horizontal',\n 'vertical'\n];\nArtplayer.FULLSCREEN_WEB_IN_BODY = false;\nArtplayer.LOG_VERSION = true;\nArtplayer.USE_RAF = false;\nif (_utils.isBrowser) {\n window.Artplayer = Artplayer;\n _utils.setStyleText('artplayer-style', (0, _indexLessDefault.default));\n setTimeout(()=>{\n if (Artplayer.LOG_VERSION) // eslint-disable-next-line no-console\n console.log(`%c ArtPlayer %c ${Artplayer.version} %c https://artplayer.org`, 'color: #fff; background: #5f5f5f', 'color: #fff; background: #4bc729', '');\n }, 100);\n}\n\n},{\"bundle-text:./style/index.less\":\"LDUUV\",\"option-validator\":\"hw47a\",\"../package.json\":\"2r8Ra\",\"./config\":\"7jhZp\",\"./contextmenu\":\"jFWxb\",\"./control\":\"8He0l\",\"./events\":\"eFzfA\",\"./hotkey\":\"aLFu1\",\"./i18n\":\"g6kBT\",\"./icons\":\"exeCy\",\"./info\":\"cUKxy\",\"./layer\":\"fIHKi\",\"./loading\":\"a7tJk\",\"./mask\":\"chOzM\",\"./notice\":\"qalnP\",\"./player\":\"hZaaw\",\"./plugins\":\"iKxTB\",\"./scheme\":\"9Np13\",\"./setting\":\"l15NM\",\"./storage\":\"1bevC\",\"./subtitle\":\"aD26q\",\"./template\":\"3s0cr\",\"./utils\":\"ga71d\",\"./utils/emitter\":\"2Y43P\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"LDUUV\":[function(require,module,exports,__globalThis) {\nmodule.exports = \".art-video-player{--art-theme:red;--art-font-color:#fff;--art-background-color:#000;--art-text-shadow-color:#00000080;--art-transition-duration:.2s;--art-padding:10px;--art-border-radius:3px;--art-progress-height:6px;--art-progress-color:#ffffff40;--art-hover-color:#ffffff40;--art-loaded-color:#ffffff40;--art-state-size:80px;--art-state-opacity:.8;--art-bottom-height:100px;--art-bottom-offset:20px;--art-bottom-gap:5px;--art-highlight-width:8px;--art-highlight-color:#ffffff80;--art-control-height:46px;--art-control-opacity:.75;--art-control-icon-size:36px;--art-control-icon-scale:1.1;--art-volume-height:120px;--art-volume-handle-size:14px;--art-lock-size:36px;--art-indicator-scale:0;--art-indicator-size:16px;--art-fullscreen-web-index:9999;--art-settings-icon-size:24px;--art-settings-max-height:300px;--art-selector-max-height:300px;--art-contextmenus-min-width:250px;--art-subtitle-font-size:20px;--art-subtitle-gap:5px;--art-subtitle-bottom:15px;--art-subtitle-border:#000;--art-widget-background:#000000d9;--art-tip-background:#000000b3;--art-scrollbar-size:4px;--art-scrollbar-background:#ffffff40;--art-scrollbar-background-hover:#ffffff80;--art-mini-progress-height:2px}.art-bg-cover{background-position:50%;background-repeat:no-repeat;background-size:cover}.art-bottom-gradient{background-image:linear-gradient(#0000,#0006,#000);background-position:bottom;background-repeat:repeat-x}.art-backdrop-filter{backdrop-filter:saturate(180%)blur(20px);background-color:#000000bf!important}.art-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.art-video-player{zoom:1;text-align:left;user-select:none;box-sizing:border-box;width:100%;height:100%;color:var(--art-font-color);background-color:var(--art-background-color);text-shadow:0 0 2px var(--art-text-shadow-color);-webkit-tap-highlight-color:#0000;-ms-touch-action:manipulation;touch-action:manipulation;-ms-high-contrast-adjust:none;direction:ltr;outline:0;margin:0 auto;padding:0;font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,Roboto,Arial,sans-serif;font-size:14px;line-height:1.3;position:relative}.art-video-player *,.art-video-player :before,.art-video-player :after{box-sizing:border-box}.art-video-player ::-webkit-scrollbar{width:var(--art-scrollbar-size);height:var(--art-scrollbar-size)}.art-video-player ::-webkit-scrollbar-thumb{background-color:var(--art-scrollbar-background)}.art-video-player ::-webkit-scrollbar-thumb:hover{background-color:var(--art-scrollbar-background-hover)}.art-video-player img{vertical-align:top;max-width:100%}.art-video-player svg{fill:var(--art-font-color)}.art-video-player a{color:var(--art-font-color);text-decoration:none}.art-icon{justify-content:center;align-items:center;line-height:1;display:flex}.art-video-player.art-backdrop .art-contextmenus,.art-video-player.art-backdrop .art-info,.art-video-player.art-backdrop .art-settings,.art-video-player.art-backdrop .art-layer-auto-playback,.art-video-player.art-backdrop .art-selector-list,.art-video-player.art-backdrop .art-volume-inner{backdrop-filter:saturate(180%)blur(20px);background-color:#000000bf!important}.art-video{z-index:10;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.art-poster{z-index:11;pointer-events:none;background-position:50%;background-repeat:no-repeat;background-size:cover;width:100%;height:100%;position:absolute;inset:0}.art-video-player .art-subtitle{z-index:20;text-align:center;pointer-events:none;justify-content:center;align-items:center;gap:var(--art-subtitle-gap);width:100%;bottom:var(--art-subtitle-bottom);font-size:var(--art-subtitle-font-size);transition:bottom var(--art-transition-duration)ease;text-shadow:var(--art-subtitle-border)1px 0 1px,var(--art-subtitle-border)0 1px 1px,var(--art-subtitle-border)-1px 0 1px,var(--art-subtitle-border)0 -1px 1px,var(--art-subtitle-border)1px 1px 1px,var(--art-subtitle-border)-1px -1px 1px,var(--art-subtitle-border)1px -1px 1px,var(--art-subtitle-border)-1px 1px 1px;flex-direction:column;padding:0 5%;display:none;position:absolute}.art-video-player.art-subtitle-show .art-subtitle{display:flex}.art-video-player.art-control-show .art-subtitle{bottom:calc(var(--art-control-height) + var(--art-subtitle-bottom))}.art-danmuku{z-index:30;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.art-video-player .art-layers{z-index:40;pointer-events:none;width:100%;height:100%;display:none;position:absolute;inset:0}.art-video-player .art-layers .art-layer{pointer-events:auto}.art-video-player.art-layer-show .art-layers{display:flex}.art-video-player .art-mask{z-index:50;pointer-events:none;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;inset:0}.art-video-player .art-mask .art-state{opacity:0;width:var(--art-state-size);height:var(--art-state-size);transition:all var(--art-transition-duration)ease;justify-content:center;align-items:center;display:flex;transform:scale(2)}.art-video-player.art-mask-show .art-state{cursor:pointer;pointer-events:auto;opacity:var(--art-state-opacity);transform:scale(1)}.art-video-player.art-loading-show .art-state{display:none}.art-video-player .art-loading{z-index:70;pointer-events:none;justify-content:center;align-items:center;width:100%;height:100%;display:none;position:absolute;inset:0}.art-video-player.art-loading-show .art-loading{display:flex}.art-video-player .art-bottom{z-index:60;opacity:0;pointer-events:none;width:100%;height:100%;padding:0 var(--art-padding);transition:all var(--art-transition-duration)ease;background-size:100% var(--art-bottom-height);background-image:linear-gradient(#0000,#0006,#000);background-position:bottom;background-repeat:repeat-x;flex-direction:column;justify-content:flex-end;display:flex;position:absolute;inset:0;overflow:hidden}.art-video-player .art-bottom .art-controls,.art-video-player .art-bottom .art-progress{transform:translateY(var(--art-bottom-offset));transition:transform var(--art-transition-duration)ease}.art-video-player.art-control-show .art-bottom,.art-video-player.art-hover .art-bottom{opacity:1}.art-video-player.art-control-show .art-bottom .art-controls,.art-video-player.art-hover .art-bottom .art-controls,.art-video-player.art-control-show .art-bottom .art-progress,.art-video-player.art-hover .art-bottom .art-progress{transform:translateY(0)}.art-bottom .art-progress{z-index:0;pointer-events:auto;padding-bottom:var(--art-bottom-gap);position:relative}.art-bottom .art-progress .art-control-progress{cursor:pointer;height:var(--art-progress-height);justify-content:center;align-items:center;display:flex;position:relative}.art-bottom .art-progress .art-control-progress .art-control-progress-inner{width:100%;height:50%;transition:height var(--art-transition-duration)ease;background-color:var(--art-progress-color);align-items:center;display:flex;position:relative}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-hover{z-index:0;background-color:var(--art-hover-color);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{z-index:10;background-color:var(--art-loaded-color);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-played{z-index:20;background-color:var(--art-theme);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{z-index:30;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{z-index:0;pointer-events:auto;width:100%;height:100%;transform:translateX(calc(var(--art-highlight-width)/-2));background-color:var(--art-highlight-color);position:absolute;inset:0 auto 0 0;width:var(--art-highlight-width)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{z-index:40;width:var(--art-indicator-size);height:var(--art-indicator-size);transform:scale(var(--art-indicator-scale));margin-left:calc(var(--art-indicator-size)/-2);transition:transform var(--art-transition-duration)ease;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;left:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator .art-icon{pointer-events:none;width:100%;height:100%}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:hover{transform:scale(1.2)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:active{transform:scale(1)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip{z-index:50;border-radius:var(--art-border-radius);white-space:nowrap;background-color:var(--art-tip-background);padding:3px 5px;font-size:12px;line-height:1;display:none;position:absolute;top:-25px;left:0}.art-bottom .art-progress .art-control-progress:hover .art-control-progress-inner{height:100%}.art-bottom .art-progress .art-control-thumbnails{bottom:calc(var(--art-bottom-gap) + 10px);border-radius:var(--art-border-radius);pointer-events:none;background-color:var(--art-widget-background);display:none;position:absolute;left:0;box-shadow:0 1px 3px #0003,0 1px 2px -1px #0003}.art-bottom:hover .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{transform:scale(1)}.art-controls{z-index:10;pointer-events:auto;height:var(--art-control-height);justify-content:space-between;align-items:center;display:flex;position:relative}.art-controls .art-controls-left,.art-controls .art-controls-right{height:100%;display:flex}.art-controls .art-controls-center{flex:1;justify-content:center;align-items:center;height:100%;padding:0 10px;display:none}.art-controls .art-controls-right{justify-content:flex-end}.art-controls .art-control{cursor:pointer;white-space:nowrap;opacity:var(--art-control-opacity);min-height:var(--art-control-height);min-width:var(--art-control-height);transition:opacity var(--art-transition-duration)ease;flex-shrink:0;justify-content:center;align-items:center;display:flex}.art-controls .art-control .art-icon{height:var(--art-control-icon-size);width:var(--art-control-icon-size);transform:scale(var(--art-control-icon-scale));transition:transform var(--art-transition-duration)ease}.art-controls .art-control .art-icon:active{transform:scale(calc(var(--art-control-icon-scale)*.8))}.art-controls .art-control:hover{opacity:1}.art-control-volume{position:relative}.art-control-volume .art-volume-panel{text-align:center;cursor:default;opacity:0;pointer-events:none;left:0;right:0;bottom:var(--art-control-height);width:var(--art-control-height);height:var(--art-volume-height);transition:all var(--art-transition-duration)ease;justify-content:center;align-items:center;padding:0 5px;font-size:12px;display:flex;position:absolute;transform:translateY(10px)}.art-control-volume .art-volume-panel .art-volume-inner{border-radius:var(--art-border-radius);background-color:var(--art-widget-background);flex-direction:column;align-items:center;gap:10px;width:100%;height:100%;padding:10px 0 12px;display:flex}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider{cursor:pointer;flex:1;justify-content:center;width:100%;display:flex;position:relative}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle{border-radius:var(--art-border-radius);background-color:#ffffff40;justify-content:center;width:2px;display:flex;position:relative;overflow:hidden}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle .art-volume-loaded{z-index:0;background-color:var(--art-theme);width:100%;height:100%;position:absolute;inset:0}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-indicator{width:var(--art-volume-handle-size);height:var(--art-volume-handle-size);margin-top:calc(var(--art-volume-handle-size)/-2);background-color:var(--art-theme);transition:transform var(--art-transition-duration)ease;border-radius:100%;flex-shrink:0;position:absolute;transform:scale(1)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider:active .art-volume-indicator{transform:scale(.9)}.art-control-volume:hover .art-volume-panel{opacity:1;pointer-events:auto;transform:translateY(0)}.art-video-player .art-notice{z-index:80;width:100%;height:auto;padding:var(--art-padding);pointer-events:none;display:none;position:absolute;inset:0 0 auto}.art-video-player .art-notice .art-notice-inner{border-radius:var(--art-border-radius);background-color:var(--art-tip-background);padding:5px;line-height:1;display:inline-flex}.art-video-player.art-notice-show .art-notice{display:flex}.art-video-player .art-contextmenus{z-index:120;border-radius:var(--art-border-radius);background-color:var(--art-widget-background);min-width:var(--art-contextmenus-min-width);flex-direction:column;padding:5px 0;font-size:12px;display:none;position:absolute}.art-video-player .art-contextmenus .art-contextmenu{cursor:pointer;border-bottom:1px solid #ffffff1a;padding:10px 15px;display:flex}.art-video-player .art-contextmenus .art-contextmenu span{padding:0 8px}.art-video-player .art-contextmenus .art-contextmenu span:hover,.art-video-player .art-contextmenus .art-contextmenu span.art-current{color:var(--art-theme)}.art-video-player .art-contextmenus .art-contextmenu:hover{background-color:#ffffff1a}.art-video-player .art-contextmenus .art-contextmenu:last-child{border-bottom:none}.art-video-player.art-contextmenu-show .art-contextmenus{display:flex}.art-video-player .art-settings{z-index:90;border-radius:var(--art-border-radius);max-height:var(--art-settings-max-height);left:auto;right:var(--art-padding);bottom:var(--art-control-height);transition:all var(--art-transition-duration)ease;background-color:var(--art-widget-background);flex-direction:column;display:none;position:absolute;overflow:hidden auto}.art-video-player .art-settings .art-setting-panel{flex-direction:column;display:none}.art-video-player .art-settings .art-setting-panel.art-current{display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item{cursor:pointer;transition:background-color var(--art-transition-duration)ease;justify-content:space-between;align-items:center;padding:0 5px;display:flex;overflow:hidden}.art-video-player .art-settings .art-setting-panel .art-setting-item:hover{background-color:#ffffff1a}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current{color:var(--art-theme)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-icon-check{visibility:hidden;height:15px}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current .art-icon-check{visibility:visible}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left{flex-shrink:0;justify-content:center;align-items:center;gap:5px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-icon{height:var(--art-settings-icon-size);width:var(--art-settings-icon-size);justify-content:center;align-items:center;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right{justify-content:center;align-items:center;gap:5px;font-size:12px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-tooltip{white-space:nowrap;color:#ffffff80}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-icon{justify-content:center;align-items:center;min-width:32px;height:24px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-range{appearance:none;background-color:#fff3;outline:none;width:80px;height:3px}.art-video-player .art-settings .art-setting-panel .art-setting-item-back{border-bottom:1px solid #ffffff1a}.art-video-player.art-setting-show .art-settings{display:flex}.art-video-player .art-info{left:var(--art-padding);top:var(--art-padding);z-index:100;border-radius:var(--art-border-radius);background-color:var(--art-widget-background);padding:10px;font-size:12px;display:none;position:absolute}.art-video-player .art-info .art-info-panel{flex-direction:column;gap:5px;display:flex}.art-video-player .art-info .art-info-panel .art-info-item{align-items:center;gap:5px;display:flex}.art-video-player .art-info .art-info-panel .art-info-item .art-info-title{text-align:right;width:100px}.art-video-player .art-info .art-info-panel .art-info-item .art-info-content{text-overflow:ellipsis;white-space:nowrap;user-select:all;width:250px;overflow:hidden}.art-video-player .art-info .art-info-close{cursor:pointer;position:absolute;top:5px;right:5px}.art-video-player.art-info-show .art-info{display:flex}.art-hide-cursor *{cursor:none!important}.art-video-player[data-aspect-ratio]{overflow:hidden}.art-video-player[data-aspect-ratio] .art-video{object-fit:fill;box-sizing:content-box}.art-fullscreen{--art-progress-height:8px;--art-indicator-size:20px;--art-control-height:60px;--art-control-icon-scale:1.3}.art-fullscreen-web{--art-progress-height:8px;--art-indicator-size:20px;--art-control-height:60px;--art-control-icon-scale:1.3;z-index:var(--art-fullscreen-web-index);width:100%;height:100%;position:fixed;inset:0}.art-mini-popup{z-index:9999;border-radius:var(--art-border-radius);cursor:move;user-select:none;background:#000;width:320px;height:180px;transition:opacity .2s;position:fixed;overflow:hidden;box-shadow:0 0 5px #00000080}.art-mini-popup svg{fill:#fff}.art-mini-popup .art-video{pointer-events:none}.art-mini-popup .art-mini-close{z-index:20;cursor:pointer;opacity:0;transition:opacity .2s;position:absolute;top:10px;right:10px}.art-mini-popup .art-mini-state{z-index:30;pointer-events:none;opacity:0;background-color:#00000040;justify-content:center;align-items:center;width:100%;height:100%;transition:opacity .2s;display:flex;position:absolute;inset:0}.art-mini-popup .art-mini-state .art-icon{opacity:.75;cursor:pointer;pointer-events:auto;transition:transform .2s;transform:scale(3)}.art-mini-popup .art-mini-state .art-icon:active{transform:scale(2.5)}.art-mini-popup.art-mini-dragging{opacity:.9}.art-mini-popup:hover .art-mini-close,.art-mini-popup:hover .art-mini-state{opacity:1}.art-video-player[data-flip=horizontal] .art-video{transform:scaleX(-1)}.art-video-player[data-flip=vertical] .art-video{transform:scaleY(-1)}.art-video-player .art-layer-lock{height:var(--art-lock-size);width:var(--art-lock-size);top:50%;left:var(--art-padding);background-color:var(--art-tip-background);border-radius:50%;justify-content:center;align-items:center;display:none;position:absolute;transform:translateY(-50%)}.art-video-player .art-layer-auto-playback{border-radius:var(--art-border-radius);left:var(--art-padding);bottom:calc(var(--art-control-height) + var(--art-bottom-gap) + 10px);background-color:var(--art-widget-background);align-items:center;gap:10px;padding:10px;line-height:1;display:none;position:absolute}.art-video-player .art-layer-auto-playback .art-auto-playback-close{cursor:pointer;justify-content:center;align-items:center;display:flex}.art-video-player .art-layer-auto-playback .art-auto-playback-close svg{width:15px;height:15px;fill:var(--art-theme)}.art-video-player .art-layer-auto-playback .art-auto-playback-jump{color:var(--art-theme);cursor:pointer}.art-video-player.art-lock .art-subtitle{bottom:var(--art-subtitle-bottom)!important}.art-video-player.art-mini-progress-bar .art-bottom,.art-video-player.art-lock .art-bottom{opacity:1;background-image:none;padding:0}.art-video-player.art-mini-progress-bar .art-bottom .art-controls,.art-video-player.art-lock .art-bottom .art-controls,.art-video-player.art-mini-progress-bar .art-bottom .art-progress,.art-video-player.art-lock .art-bottom .art-progress{transform:translateY(calc(var(--art-control-height) + var(--art-bottom-gap) + var(--art-progress-height)/4))}.art-video-player.art-mini-progress-bar .art-bottom .art-progress-indicator,.art-video-player.art-lock .art-bottom .art-progress-indicator{display:none!important}.art-video-player.art-control-show .art-layer-lock{display:flex}.art-control-selector{justify-content:center;display:flex;position:relative}.art-control-selector .art-selector-list{text-align:center;border-radius:var(--art-border-radius);opacity:0;pointer-events:none;bottom:var(--art-control-height);max-height:var(--art-selector-max-height);background-color:var(--art-widget-background);transition:all var(--art-transition-duration)ease;flex-direction:column;align-items:center;display:flex;position:absolute;overflow:hidden auto;transform:translateY(10px)}.art-control-selector .art-selector-list .art-selector-item{flex-shrink:0;justify-content:center;align-items:center;width:100%;padding:10px 15px;line-height:1;display:flex}.art-control-selector .art-selector-list .art-selector-item:hover{background-color:#ffffff1a}.art-control-selector .art-selector-list .art-selector-item:hover,.art-control-selector .art-selector-list .art-selector-item.art-current{color:var(--art-theme)}.art-control-selector:hover .art-selector-list{opacity:1;pointer-events:auto;transform:translateY(0)}[class*=hint--]{font-style:normal;display:inline-block;position:relative}[class*=hint--]:before,[class*=hint--]:after{visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;transition:all .3s;position:absolute;transform:translate(0,0)}[class*=hint--]:hover:before,[class*=hint--]:hover:after{visibility:visible;opacity:1;transition-delay:.1s}[class*=hint--]:before{content:\\\"\\\";z-index:1000001;background:0 0;border:6px solid #0000;position:absolute}[class*=hint--]:after{color:#fff;white-space:nowrap;background:#000;padding:8px 10px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;line-height:12px}[class*=hint--][aria-label]:after{content:attr(aria-label)}[class*=hint--][data-hint]:after{content:attr(data-hint)}[aria-label=\\\"\\\"]:before,[aria-label=\\\"\\\"]:after,[data-hint=\\\"\\\"]:before,[data-hint=\\\"\\\"]:after{display:none!important}.hint--top-left:before,.hint--top-right:before,.hint--top:before{border-top-color:#000}.hint--bottom-left:before,.hint--bottom-right:before,.hint--bottom:before{border-bottom-color:#000}.hint--left:before{border-left-color:#000}.hint--right:before{border-right-color:#000}.hint--top:before{margin-bottom:-11px}.hint--top:before,.hint--top:after{bottom:100%;left:50%}.hint--top:before{left:calc(50% - 6px)}.hint--top:after{transform:translate(-50%)}.hint--top:hover:before{transform:translateY(-8px)}.hint--top:hover:after{transform:translate(-50%)translateY(-8px)}.hint--bottom:before{margin-top:-11px}.hint--bottom:before,.hint--bottom:after{top:100%;left:50%}.hint--bottom:before{left:calc(50% - 6px)}.hint--bottom:after{transform:translate(-50%)}.hint--bottom:hover:before{transform:translateY(8px)}.hint--bottom:hover:after{transform:translate(-50%)translateY(8px)}.hint--right:before{margin-bottom:-6px;margin-left:-11px}.hint--right:after{margin-bottom:-14px}.hint--right:before,.hint--right:after{bottom:50%;left:100%}.hint--right:hover:before,.hint--right:hover:after{transform:translate(8px)}.hint--left:before{margin-bottom:-6px;margin-right:-11px}.hint--left:after{margin-bottom:-14px}.hint--left:before,.hint--left:after{bottom:50%;right:100%}.hint--left:hover:before,.hint--left:hover:after{transform:translate(-8px)}.hint--top-left:before{margin-bottom:-11px}.hint--top-left:before,.hint--top-left:after{bottom:100%;left:50%}.hint--top-left:before{left:calc(50% - 6px)}.hint--top-left:after{margin-left:12px;transform:translate(-100%)}.hint--top-left:hover:before{transform:translateY(-8px)}.hint--top-left:hover:after{transform:translate(-100%)translateY(-8px)}.hint--top-right:before{margin-bottom:-11px}.hint--top-right:before,.hint--top-right:after{bottom:100%;left:50%}.hint--top-right:before{left:calc(50% - 6px)}.hint--top-right:after{margin-left:-12px;transform:translate(0)}.hint--top-right:hover:before,.hint--top-right:hover:after{transform:translateY(-8px)}.hint--bottom-left:before{margin-top:-11px}.hint--bottom-left:before,.hint--bottom-left:after{top:100%;left:50%}.hint--bottom-left:before{left:calc(50% - 6px)}.hint--bottom-left:after{margin-left:12px;transform:translate(-100%)}.hint--bottom-left:hover:before{transform:translateY(8px)}.hint--bottom-left:hover:after{transform:translate(-100%)translateY(8px)}.hint--bottom-right:before{margin-top:-11px}.hint--bottom-right:before,.hint--bottom-right:after{top:100%;left:50%}.hint--bottom-right:before{left:calc(50% - 6px)}.hint--bottom-right:after{margin-left:-12px;transform:translate(0)}.hint--bottom-right:hover:before,.hint--bottom-right:hover:after{transform:translateY(8px)}.hint--small:after,.hint--medium:after,.hint--large:after{white-space:normal;word-wrap:break-word;line-height:1.4em}.hint--small:after{width:80px}.hint--medium:after{width:150px}.hint--large:after{width:300px}[class*=hint--]:after{text-shadow:0 -1px #000;box-shadow:4px 4px 8px #0000004d}.hint--error:after{text-shadow:0 -1px #592726;background-color:#b34e4d}.hint--error.hint--top-left:before,.hint--error.hint--top-right:before,.hint--error.hint--top:before{border-top-color:#b34e4d}.hint--error.hint--bottom-left:before,.hint--error.hint--bottom-right:before,.hint--error.hint--bottom:before{border-bottom-color:#b34e4d}.hint--error.hint--left:before{border-left-color:#b34e4d}.hint--error.hint--right:before{border-right-color:#b34e4d}.hint--warning:after{text-shadow:0 -1px #6c5328;background-color:#c09854}.hint--warning.hint--top-left:before,.hint--warning.hint--top-right:before,.hint--warning.hint--top:before{border-top-color:#c09854}.hint--warning.hint--bottom-left:before,.hint--warning.hint--bottom-right:before,.hint--warning.hint--bottom:before{border-bottom-color:#c09854}.hint--warning.hint--left:before{border-left-color:#c09854}.hint--warning.hint--right:before{border-right-color:#c09854}.hint--info:after{text-shadow:0 -1px #1a3c4d;background-color:#3986ac}.hint--info.hint--top-left:before,.hint--info.hint--top-right:before,.hint--info.hint--top:before{border-top-color:#3986ac}.hint--info.hint--bottom-left:before,.hint--info.hint--bottom-right:before,.hint--info.hint--bottom:before{border-bottom-color:#3986ac}.hint--info.hint--left:before{border-left-color:#3986ac}.hint--info.hint--right:before{border-right-color:#3986ac}.hint--success:after{text-shadow:0 -1px #1a321a;background-color:#458746}.hint--success.hint--top-left:before,.hint--success.hint--top-right:before,.hint--success.hint--top:before{border-top-color:#458746}.hint--success.hint--bottom-left:before,.hint--success.hint--bottom-right:before,.hint--success.hint--bottom:before{border-bottom-color:#458746}.hint--success.hint--left:before{border-left-color:#458746}.hint--success.hint--right:before{border-right-color:#458746}.hint--always:after,.hint--always:before{opacity:1;visibility:visible}.hint--always.hint--top:before{transform:translateY(-8px)}.hint--always.hint--top:after{transform:translate(-50%)translateY(-8px)}.hint--always.hint--top-left:before{transform:translateY(-8px)}.hint--always.hint--top-left:after{transform:translate(-100%)translateY(-8px)}.hint--always.hint--top-right:before,.hint--always.hint--top-right:after{transform:translateY(-8px)}.hint--always.hint--bottom:before{transform:translateY(8px)}.hint--always.hint--bottom:after{transform:translate(-50%)translateY(8px)}.hint--always.hint--bottom-left:before{transform:translateY(8px)}.hint--always.hint--bottom-left:after{transform:translate(-100%)translateY(8px)}.hint--always.hint--bottom-right:before,.hint--always.hint--bottom-right:after{transform:translateY(8px)}.hint--always.hint--left:before,.hint--always.hint--left:after{transform:translate(-8px)}.hint--always.hint--right:before,.hint--always.hint--right:after{transform:translate(8px)}.hint--rounded:after{border-radius:4px}.hint--no-animate:before,.hint--no-animate:after{transition-duration:0s}.hint--bounce:before,.hint--bounce:after{-webkit-transition:opacity .3s,visibility .3s,-webkit-transform .3s cubic-bezier(.71,1.7,.77,1.24);-moz-transition:opacity .3s,visibility .3s,-moz-transform .3s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .3s,visibility .3s,transform .3s cubic-bezier(.71,1.7,.77,1.24)}.hint--no-shadow:before,.hint--no-shadow:after{text-shadow:initial;box-shadow:initial}.hint--no-arrow:before{display:none}.art-video-player.art-mobile{--art-bottom-gap:10px;--art-control-height:38px;--art-control-icon-scale:1;--art-state-size:60px;--art-settings-max-height:180px;--art-selector-max-height:180px;--art-indicator-scale:1;--art-control-opacity:1}.art-video-player.art-mobile .art-controls-left{margin-left:calc(var(--art-padding)/-1)}.art-video-player.art-mobile .art-controls-right{margin-right:calc(var(--art-padding)/-1)}\";\n\n},{}],\"hw47a\":[function(require,module,exports,__globalThis) {\n!function(r, t) {\n module.exports = t();\n}(this, function() {\n \"use strict\";\n function e(r) {\n return (e = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(r) {\n return typeof r;\n } : function(r) {\n return r && \"function\" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? \"symbol\" : typeof r;\n })(r);\n }\n var n = Object.prototype.toString, c = function(r) {\n if (void 0 === r) return \"undefined\";\n if (null === r) return \"null\";\n var t = e(r);\n if (\"boolean\" === t) return \"boolean\";\n if (\"string\" === t) return \"string\";\n if (\"number\" === t) return \"number\";\n if (\"symbol\" === t) return \"symbol\";\n if (\"function\" === t) return function(r) {\n return \"GeneratorFunction\" === o(r);\n }(r) ? \"generatorfunction\" : \"function\";\n if (function(r) {\n return Array.isArray ? Array.isArray(r) : r instanceof Array;\n }(r)) return \"array\";\n if (function(r) {\n if (r.constructor && \"function\" == typeof r.constructor.isBuffer) return r.constructor.isBuffer(r);\n return !1;\n }(r)) return \"buffer\";\n if (function(r) {\n try {\n if (\"number\" == typeof r.length && \"function\" == typeof r.callee) return !0;\n } catch (r) {\n if (-1 !== r.message.indexOf(\"callee\")) return !0;\n }\n return !1;\n }(r)) return \"arguments\";\n if (function(r) {\n return r instanceof Date || \"function\" == typeof r.toDateString && \"function\" == typeof r.getDate && \"function\" == typeof r.setDate;\n }(r)) return \"date\";\n if (function(r) {\n return r instanceof Error || \"string\" == typeof r.message && r.constructor && \"number\" == typeof r.constructor.stackTraceLimit;\n }(r)) return \"error\";\n if (function(r) {\n return r instanceof RegExp || \"string\" == typeof r.flags && \"boolean\" == typeof r.ignoreCase && \"boolean\" == typeof r.multiline && \"boolean\" == typeof r.global;\n }(r)) return \"regexp\";\n switch(o(r)){\n case \"Symbol\":\n return \"symbol\";\n case \"Promise\":\n return \"promise\";\n case \"WeakMap\":\n return \"weakmap\";\n case \"WeakSet\":\n return \"weakset\";\n case \"Map\":\n return \"map\";\n case \"Set\":\n return \"set\";\n case \"Int8Array\":\n return \"int8array\";\n case \"Uint8Array\":\n return \"uint8array\";\n case \"Uint8ClampedArray\":\n return \"uint8clampedarray\";\n case \"Int16Array\":\n return \"int16array\";\n case \"Uint16Array\":\n return \"uint16array\";\n case \"Int32Array\":\n return \"int32array\";\n case \"Uint32Array\":\n return \"uint32array\";\n case \"Float32Array\":\n return \"float32array\";\n case \"Float64Array\":\n return \"float64array\";\n }\n if (function(r) {\n return \"function\" == typeof r.throw && \"function\" == typeof r.return && \"function\" == typeof r.next;\n }(r)) return \"generator\";\n switch(t = n.call(r)){\n case \"[object Object]\":\n return \"object\";\n case \"[object Map Iterator]\":\n return \"mapiterator\";\n case \"[object Set Iterator]\":\n return \"setiterator\";\n case \"[object String Iterator]\":\n return \"stringiterator\";\n case \"[object Array Iterator]\":\n return \"arrayiterator\";\n }\n return t.slice(8, -1).toLowerCase().replace(/\\s/g, \"\");\n };\n function o(r) {\n return r.constructor ? r.constructor.name : null;\n }\n function f(r, t) {\n var e = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : [\n \"option\"\n ];\n return s(r, t, e), y(r, t, e), function(a, i, u) {\n var r = c(i), t = c(a);\n if (\"object\" === r) {\n if (\"object\" !== t) throw new Error(\"[Type Error]: '\".concat(u.join(\".\"), \"' require 'object' type, but got '\").concat(t, \"'\"));\n Object.keys(i).forEach(function(r) {\n var t = a[r], e = i[r], n = u.slice();\n n.push(r), s(t, e, n), y(t, e, n), f(t, e, n);\n });\n }\n if (\"array\" === r) {\n if (\"array\" !== t) throw new Error(\"[Type Error]: '\".concat(u.join(\".\"), \"' require 'array' type, but got '\").concat(t, \"'\"));\n a.forEach(function(r, t) {\n var e = a[t], n = i[t] || i[0], o = u.slice();\n o.push(t), s(e, n, o), y(e, n, o), f(e, n, o);\n });\n }\n }(r, t, e), r;\n }\n function s(r, t, e) {\n if (\"string\" === c(t)) {\n var n = c(r);\n if (\"?\" === t[0] && (t = t.slice(1) + \"|undefined\"), !(-1 < t.indexOf(\"|\") ? t.split(\"|\").map(function(r) {\n return r.toLowerCase().trim();\n }).filter(Boolean).some(function(r) {\n return n === r;\n }) : t.toLowerCase().trim() === n)) throw new Error(\"[Type Error]: '\".concat(e.join(\".\"), \"' require '\").concat(t, \"' type, but got '\").concat(n, \"'\"));\n }\n }\n function y(r, t, e) {\n if (\"function\" === c(t)) {\n var n = t(r, c(r), e);\n if (!0 !== n) {\n var o = c(n);\n throw \"string\" === o ? new Error(n) : \"error\" === o ? n : new Error(\"[Validator Error]: The scheme for '\".concat(e.join(\".\"), \"' validator require return true, but got '\").concat(n, \"'\"));\n }\n }\n }\n return f.kindOf = c, f;\n});\n\n},{}],\"2r8Ra\":[function(require,module,exports,__globalThis) {\nmodule.exports = JSON.parse(\"{\\\"name\\\":\\\"artplayer\\\",\\\"version\\\":\\\"5.2.6\\\",\\\"description\\\":\\\"ArtPlayer.js is a modern and full featured HTML5 video player\\\",\\\"author\\\":\\\"Harvey Zack \\\",\\\"license\\\":\\\"MIT\\\",\\\"homepage\\\":\\\"https://artplayer.org\\\",\\\"repository\\\":{\\\"type\\\":\\\"git\\\",\\\"url\\\":\\\"git+https://github.com/zhw2590582/ArtPlayer.git\\\"},\\\"bugs\\\":{\\\"url\\\":\\\"https://github.com/zhw2590582/ArtPlayer/issues\\\"},\\\"keywords\\\":[\\\"html5\\\",\\\"video\\\",\\\"player\\\"],\\\"main\\\":\\\"dist/artplayer.js\\\",\\\"legacy\\\":\\\"dist/artplayer.legacy.js\\\",\\\"types\\\":\\\"types/artplayer.d.ts\\\",\\\"browserslist\\\":\\\"last 1 Chrome version\\\",\\\"dependencies\\\":{\\\"option-validator\\\":\\\"^2.0.6\\\"}}\");\n\n},{}],\"7jhZp\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nexports.default = {\n properties: [\n 'audioTracks',\n 'autoplay',\n 'buffered',\n 'controller',\n 'controls',\n 'crossOrigin',\n 'currentSrc',\n 'currentTime',\n 'defaultMuted',\n 'defaultPlaybackRate',\n 'duration',\n 'ended',\n 'error',\n 'loop',\n 'mediaGroup',\n 'muted',\n 'networkState',\n 'paused',\n 'playbackRate',\n 'played',\n 'preload',\n 'readyState',\n 'seekable',\n 'seeking',\n 'src',\n 'startDate',\n 'textTracks',\n 'videoTracks',\n 'volume'\n ],\n methods: [\n 'addTextTrack',\n 'canPlayType',\n 'load',\n 'play',\n 'pause'\n ],\n events: [\n 'abort',\n 'canplay',\n 'canplaythrough',\n 'durationchange',\n 'emptied',\n 'ended',\n 'error',\n 'loadeddata',\n 'loadedmetadata',\n 'loadstart',\n 'pause',\n 'play',\n 'playing',\n 'progress',\n 'ratechange',\n 'seeked',\n 'seeking',\n 'stalled',\n 'suspend',\n 'timeupdate',\n 'volumechange',\n 'waiting'\n ],\n prototypes: [\n 'width',\n 'height',\n 'videoWidth',\n 'videoHeight',\n 'poster',\n 'webkitDecodedFrameCount',\n 'webkitDroppedFrameCount',\n 'playsInline',\n 'webkitSupportsFullscreen',\n 'webkitDisplayingFullscreen',\n 'onenterpictureinpicture',\n 'onleavepictureinpicture',\n 'disablePictureInPicture',\n 'cancelVideoFrameCallback',\n 'requestVideoFrameCallback',\n 'getVideoPlaybackQuality',\n 'requestPictureInPicture',\n 'webkitEnterFullScreen',\n 'webkitEnterFullscreen',\n 'webkitExitFullScreen',\n 'webkitExitFullscreen'\n ]\n};\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"5lQoW\":[function(require,module,exports,__globalThis) {\nexports.interopDefault = function(a) {\n return a && a.__esModule ? a : {\n default: a\n };\n};\nexports.defineInteropFlag = function(a) {\n Object.defineProperty(a, '__esModule', {\n value: true\n });\n};\nexports.exportAll = function(source, dest) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) return;\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function() {\n return source[key];\n }\n });\n });\n return dest;\n};\nexports.export = function(dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get\n });\n};\n\n},{}],\"jFWxb\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"../utils\");\nvar _component = require(\"../utils/component\");\nvar _componentDefault = parcelHelpers.interopDefault(_component);\nvar _aspectRatio = require(\"./aspectRatio\");\nvar _aspectRatioDefault = parcelHelpers.interopDefault(_aspectRatio);\nvar _close = require(\"./close\");\nvar _closeDefault = parcelHelpers.interopDefault(_close);\nvar _flip = require(\"./flip\");\nvar _flipDefault = parcelHelpers.interopDefault(_flip);\nvar _info = require(\"./info\");\nvar _infoDefault = parcelHelpers.interopDefault(_info);\nvar _playbackRate = require(\"./playbackRate\");\nvar _playbackRateDefault = parcelHelpers.interopDefault(_playbackRate);\nvar _version = require(\"./version\");\nvar _versionDefault = parcelHelpers.interopDefault(_version);\nclass Contextmenu extends (0, _componentDefault.default) {\n constructor(art){\n super(art);\n this.name = 'contextmenu';\n this.$parent = art.template.$contextmenu;\n if (!(0, _utils.isMobile)) this.init();\n }\n init() {\n const { option, proxy, template: { $player, $contextmenu } } = this.art;\n if (option.playbackRate) this.add((0, _playbackRateDefault.default)({\n name: 'playbackRate',\n index: 10\n }));\n if (option.aspectRatio) this.add((0, _aspectRatioDefault.default)({\n name: 'aspectRatio',\n index: 20\n }));\n if (option.flip) this.add((0, _flipDefault.default)({\n name: 'flip',\n index: 30\n }));\n this.add((0, _infoDefault.default)({\n name: 'info',\n index: 40\n }));\n this.add((0, _versionDefault.default)({\n name: 'version',\n index: 50\n }));\n this.add((0, _closeDefault.default)({\n name: 'close',\n index: 60\n }));\n for(let index = 0; index < option.contextmenu.length; index++)this.add(option.contextmenu[index]);\n proxy($player, 'contextmenu', (event)=>{\n if (!this.art.constructor.CONTEXTMENU) return;\n event.preventDefault();\n this.show = true;\n const mouseX = event.clientX;\n const mouseY = event.clientY;\n const { height: cHeight, width: cWidth, left: cLeft, top: cTop } = (0, _utils.getRect)($player);\n const { height: mHeight, width: mWidth } = (0, _utils.getRect)($contextmenu);\n let menuLeft = mouseX - cLeft;\n let menuTop = mouseY - cTop;\n if (mouseX + mWidth > cLeft + cWidth) menuLeft = cWidth - mWidth;\n if (mouseY + mHeight > cTop + cHeight) menuTop = cHeight - mHeight;\n (0, _utils.setStyles)($contextmenu, {\n top: `${menuTop}px`,\n left: `${menuLeft}px`\n });\n });\n proxy($player, 'click', (event)=>{\n if (!(0, _utils.includeFromEvent)(event, $contextmenu)) this.show = false;\n });\n this.art.on('blur', ()=>{\n this.show = false;\n });\n }\n}\nexports.default = Contextmenu;\n\n},{\"../utils\":\"ga71d\",\"../utils/component\":\"hARFP\",\"./aspectRatio\":\"atwXQ\",\"./close\":\"34cn1\",\"./flip\":\"4YbBf\",\"./info\":\"difR5\",\"./playbackRate\":\"2VDwk\",\"./version\":\"bza1P\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"ga71d\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _compatibility = require(\"./compatibility\");\nparcelHelpers.exportAll(_compatibility, exports);\nvar _dom = require(\"./dom\");\nparcelHelpers.exportAll(_dom, exports);\nvar _error = require(\"./error\");\nparcelHelpers.exportAll(_error, exports);\nvar _file = require(\"./file\");\nparcelHelpers.exportAll(_file, exports);\nvar _format = require(\"./format\");\nparcelHelpers.exportAll(_format, exports);\nvar _property = require(\"./property\");\nparcelHelpers.exportAll(_property, exports);\nvar _subtitle = require(\"./subtitle\");\nparcelHelpers.exportAll(_subtitle, exports);\nvar _time = require(\"./time\");\nparcelHelpers.exportAll(_time, exports);\n\n},{\"./compatibility\":\"eqWpq\",\"./dom\":\"Nhosu\",\"./error\":\"480HW\",\"./file\":\"2AGZv\",\"./format\":\"1cr8o\",\"./property\":\"cTF5s\",\"./subtitle\":\"i6MtR\",\"./time\":\"7VpW0\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"eqWpq\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"userAgent\", ()=>userAgent);\nparcelHelpers.export(exports, \"isSafari\", ()=>isSafari);\nparcelHelpers.export(exports, \"isWechat\", ()=>isWechat);\nparcelHelpers.export(exports, \"isIE\", ()=>isIE);\nparcelHelpers.export(exports, \"isAndroid\", ()=>isAndroid);\nparcelHelpers.export(exports, \"isIOS\", ()=>isIOS);\nparcelHelpers.export(exports, \"isIOS13\", ()=>isIOS13);\nparcelHelpers.export(exports, \"isMobile\", ()=>isMobile);\nparcelHelpers.export(exports, \"isBrowser\", ()=>isBrowser);\nconst userAgent = globalThis?.CUSTOM_USER_AGENT ?? (typeof navigator !== 'undefined' ? navigator.userAgent : '');\nconst isSafari = /^(?:(?!chrome|android).)*safari/i.test(userAgent);\nconst isWechat = /MicroMessenger/i.test(userAgent);\nconst isIE = /MSIE|Trident/i.test(userAgent);\nconst isAndroid = /android/i.test(userAgent);\nconst isIOS = /iPad|iPhone|iPod/i.test(userAgent) && !window.MSStream;\nconst isIOS13 = isIOS || userAgent.includes('Macintosh') && navigator.maxTouchPoints >= 1;\nconst isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent) || isIOS13;\nconst isBrowser = typeof window !== 'undefined';\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"Nhosu\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"query\", ()=>query);\nparcelHelpers.export(exports, \"queryAll\", ()=>queryAll);\nparcelHelpers.export(exports, \"addClass\", ()=>addClass);\nparcelHelpers.export(exports, \"removeClass\", ()=>removeClass);\nparcelHelpers.export(exports, \"hasClass\", ()=>hasClass);\nparcelHelpers.export(exports, \"append\", ()=>append);\nparcelHelpers.export(exports, \"remove\", ()=>remove);\nparcelHelpers.export(exports, \"setStyle\", ()=>setStyle);\nparcelHelpers.export(exports, \"setStyles\", ()=>setStyles);\nparcelHelpers.export(exports, \"getStyle\", ()=>getStyle);\nparcelHelpers.export(exports, \"siblings\", ()=>siblings);\nparcelHelpers.export(exports, \"inverseClass\", ()=>inverseClass);\nparcelHelpers.export(exports, \"tooltip\", ()=>tooltip);\nparcelHelpers.export(exports, \"isInViewport\", ()=>isInViewport);\nparcelHelpers.export(exports, \"includeFromEvent\", ()=>includeFromEvent);\nparcelHelpers.export(exports, \"replaceElement\", ()=>replaceElement);\nparcelHelpers.export(exports, \"createElement\", ()=>createElement);\nparcelHelpers.export(exports, \"getIcon\", ()=>getIcon);\nparcelHelpers.export(exports, \"setStyleText\", ()=>setStyleText);\nparcelHelpers.export(exports, \"supportsFlex\", ()=>supportsFlex);\nparcelHelpers.export(exports, \"getRect\", ()=>getRect);\nparcelHelpers.export(exports, \"loadImg\", ()=>loadImg);\nparcelHelpers.export(exports, \"getComposedPath\", ()=>getComposedPath);\nvar _compatibility = require(\"./compatibility\");\nfunction query(selector, parent = document) {\n return parent.querySelector(selector);\n}\nfunction queryAll(selector, parent = document) {\n return Array.from(parent.querySelectorAll(selector));\n}\nfunction addClass(target, className) {\n return target.classList.add(className);\n}\nfunction removeClass(target, className) {\n return target.classList.remove(className);\n}\nfunction hasClass(target, className) {\n return target.classList.contains(className);\n}\nfunction append(parent, child) {\n if (child instanceof Element) parent.appendChild(child);\n else parent.insertAdjacentHTML('beforeend', String(child));\n return parent.lastElementChild || parent.lastChild;\n}\nfunction remove(child) {\n return child.parentNode.removeChild(child);\n}\nfunction setStyle(element, key, value) {\n element.style[key] = value;\n return element;\n}\nfunction setStyles(element, styles) {\n for(const key in styles)setStyle(element, key, styles[key]);\n return element;\n}\nfunction getStyle(element, key, numberType = true) {\n const value = window.getComputedStyle(element, null).getPropertyValue(key);\n return numberType ? Number.parseFloat(value) : value;\n}\nfunction siblings(target) {\n return Array.from(target.parentElement.children).filter((item)=>item !== target);\n}\nfunction inverseClass(target, className) {\n siblings(target).forEach((item)=>removeClass(item, className));\n addClass(target, className);\n}\nfunction tooltip(target, msg, pos = 'top') {\n if (0, _compatibility.isMobile) return;\n target.setAttribute('aria-label', msg);\n addClass(target, 'hint--rounded');\n addClass(target, `hint--${pos}`);\n}\nfunction isInViewport(el, offset = 0) {\n const rect = el.getBoundingClientRect();\n const windowHeight = window.innerHeight || document.documentElement.clientHeight;\n const windowWidth = window.innerWidth || document.documentElement.clientWidth;\n const vertInView = rect.top - offset <= windowHeight && rect.top + rect.height + offset >= 0;\n const horInView = rect.left - offset <= windowWidth + offset && rect.left + rect.width + offset >= 0;\n return vertInView && horInView;\n}\nfunction includeFromEvent(event, target) {\n return getComposedPath(event).includes(target);\n}\nfunction replaceElement(newChild, oldChild) {\n oldChild.parentNode.replaceChild(newChild, oldChild);\n return newChild;\n}\nfunction createElement(tag) {\n return document.createElement(tag);\n}\nfunction getIcon(key = '', html = '') {\n const icon = createElement('i');\n addClass(icon, 'art-icon');\n addClass(icon, `art-icon-${key}`);\n append(icon, html);\n return icon;\n}\nfunction setStyleText(id, style) {\n let $style = document.getElementById(id);\n if (!$style) {\n $style = document.createElement('style');\n $style.id = id;\n if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', ()=>{\n document.head.appendChild($style);\n });\n else (document.head || document.documentElement).appendChild($style);\n }\n $style.textContent = style;\n}\nfunction supportsFlex() {\n const div = document.createElement('div');\n div.style.display = 'flex';\n return div.style.display === 'flex';\n}\nfunction getRect(el) {\n return el.getBoundingClientRect();\n}\nfunction loadImg(url, scale) {\n return new Promise((resolve, reject)=>{\n const img = new Image();\n img.onload = function() {\n if (!scale || scale === 1) resolve(img);\n else {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n canvas.width = img.width * scale;\n canvas.height = img.height * scale;\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n canvas.toBlob((blob)=>{\n const blobUrl = URL.createObjectURL(blob);\n const scaledImg = new Image();\n scaledImg.onload = function() {\n resolve(scaledImg);\n };\n scaledImg.onerror = function() {\n URL.revokeObjectURL(blobUrl);\n reject(new Error(`Image load failed: ${url}`));\n };\n scaledImg.src = blobUrl;\n });\n }\n };\n img.onerror = function() {\n reject(new Error(`Image load failed: ${url}`));\n };\n img.src = url;\n });\n}\nfunction getComposedPath(event) {\n if (event.composedPath) return event.composedPath();\n const path = [];\n let node = event.target;\n while(node){\n path.push(node);\n node = node.parentNode;\n }\n if (!path.includes(window) && window !== undefined) path.push(window);\n return path;\n}\n\n},{\"./compatibility\":\"eqWpq\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"480HW\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"ArtPlayerError\", ()=>ArtPlayerError);\nparcelHelpers.export(exports, \"errorHandle\", ()=>errorHandle);\nclass ArtPlayerError extends Error {\n constructor(message, context){\n super(message);\n if (typeof Error.captureStackTrace === 'function') Error.captureStackTrace(this, context || this.constructor);\n this.name = 'ArtPlayerError';\n }\n}\nfunction errorHandle(condition, msg) {\n if (!condition) throw new ArtPlayerError(msg);\n return condition;\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"2AGZv\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"getExt\", ()=>getExt);\nparcelHelpers.export(exports, \"download\", ()=>download);\nfunction getExt(url) {\n if (url.includes('?')) return getExt(url.split('?')[0]);\n if (url.includes('#')) return getExt(url.split('#')[0]);\n return url.trim().toLowerCase().split('.').pop();\n}\nfunction download(url, name) {\n const elink = document.createElement('a');\n elink.style.display = 'none';\n elink.href = url;\n elink.download = name;\n document.body.appendChild(elink);\n elink.click();\n document.body.removeChild(elink);\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"1cr8o\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"clamp\", ()=>clamp);\nparcelHelpers.export(exports, \"capitalize\", ()=>capitalize);\nparcelHelpers.export(exports, \"secondToTime\", ()=>secondToTime);\nparcelHelpers.export(exports, \"escape\", ()=>escape);\nparcelHelpers.export(exports, \"unescape\", ()=>unescape);\nfunction clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));\n}\nfunction capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nfunction secondToTime(second) {\n if (!second) return '00:00';\n const add0 = (num)=>num < 10 ? `0${num}` : String(num);\n const hour = Math.floor(second / 3600);\n const min = Math.floor((second - hour * 3600) / 60);\n const sec = Math.floor(second - hour * 3600 - min * 60);\n return (hour > 0 ? [\n hour,\n min,\n sec\n ] : [\n min,\n sec\n ]).map(add0).join(':');\n}\nfunction escape(str) {\n return str.replace(/[&<>'\"]/g, (tag)=>({\n '&': '&',\n '<': '<',\n '>': '>',\n '\\'': ''',\n '\"': '"'\n })[tag] || tag);\n}\nfunction unescape(str) {\n const map = {\n '&': '&',\n '<': '<',\n '>': '>',\n ''': '\\'',\n '"': '\"'\n };\n const reg = new RegExp(`(${Object.keys(map).join('|')})`, 'g');\n return str.replace(reg, (tag)=>map[tag] || tag);\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"cTF5s\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"def\", ()=>def);\nparcelHelpers.export(exports, \"has\", ()=>has);\nparcelHelpers.export(exports, \"get\", ()=>get);\nparcelHelpers.export(exports, \"mergeDeep\", ()=>mergeDeep);\nconst def = Object.defineProperty;\nconst { hasOwnProperty } = Object.prototype;\nfunction has(obj, name) {\n return hasOwnProperty.call(obj, name);\n}\nfunction get(obj, name) {\n return Object.getOwnPropertyDescriptor(obj, name);\n}\nfunction mergeDeep(...objects) {\n const isObject = (item)=>item && typeof item === 'object' && !Array.isArray(item);\n return objects.reduce((prev, obj)=>{\n Object.keys(obj).forEach((key)=>{\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) prev[key] = pVal.concat(...oVal);\n else if (isObject(pVal) && isObject(oVal)) prev[key] = mergeDeep(pVal, oVal);\n else prev[key] = oVal;\n });\n return prev;\n }, {});\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"i6MtR\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"srtToVtt\", ()=>srtToVtt);\nparcelHelpers.export(exports, \"vttToBlob\", ()=>vttToBlob);\nparcelHelpers.export(exports, \"assToVtt\", ()=>assToVtt);\nfunction fixSrt(srt) {\n return srt.replace(/(\\d\\d:\\d\\d:\\d\\d)[,.](\\d+)/g, (_, $1, $2)=>{\n let ms = $2.slice(0, 3);\n if ($2.length === 1) ms = `${$2}00`;\n if ($2.length === 2) ms = `${$2}0`;\n return `${$1},${ms}`;\n });\n}\nfunction srtToVtt(srtText) {\n return 'WEBVTT \\r\\n\\r\\n'.concat(fixSrt(srtText).replace(/\\{\\\\([ibu])\\}/g, '').replace(/\\{\\\\([ibu])1\\}/g, '<$1>').replace(/\\{([ibu])\\}/g, '<$1>').replace(/\\{\\/([ibu])\\}/g, '').replace(/(\\d\\d:\\d\\d:\\d\\d),(\\d\\d\\d)/g, '$1.$2').replace(/\\{[\\s\\S]*?\\}/g, '').concat('\\r\\n\\r\\n'));\n}\nfunction vttToBlob(vttText) {\n return URL.createObjectURL(new Blob([\n vttText\n ], {\n type: 'text/vtt'\n }));\n}\nfunction assToVtt(ass) {\n const reAss = new RegExp(\"Dialogue:\\\\s\\\\d,(\\\\d+:\\\\d\\\\d:\\\\d\\\\d.\\\\d\\\\d),(\\\\d+:\\\\d\\\\d:\\\\d\\\\d.\\\\d\\\\d),([^,]*),([^,]*),(?:[^,]*,){4}([\\\\s\\\\S]*)$\", 'i');\n function fixTime(time = '') {\n return time.split(/[:.]/).map((item, index, arr)=>{\n if (index === arr.length - 1) {\n if (item.length === 1) return `.${item}00`;\n if (item.length === 2) return `.${item}0`;\n } else if (item.length === 1) return (index === 0 ? '0' : ':0') + item;\n return index === 0 ? item : index === arr.length - 1 ? `.${item}` : `:${item}`;\n }).join('');\n }\n return `WEBVTT` + `\\n` + `\\n${ass.split(/\\r?\\n/).map((line)=>{\n const m = line.match(reAss);\n if (!m) return null;\n return {\n start: fixTime(m[1].trim()),\n end: fixTime(m[2].trim()),\n text: m[5].replace(/\\{[\\s\\S]*?\\}/g, '').replace(/(\\\\N)/g, '\\n').trim().split(/\\r?\\n/).map((item)=>item.trim()).join('\\n')\n };\n }).filter((line)=>line).map((line, index)=>{\n if (line) return `${index + 1}\\n` + `${line.start} --> ${line.end}` + `\\n` + `${line.text}`;\n return '';\n }).filter((line)=>line.trim()).join('\\n\\n')}`;\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"7VpW0\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"sleep\", ()=>sleep);\nparcelHelpers.export(exports, \"debounce\", ()=>debounce);\nparcelHelpers.export(exports, \"throttle\", ()=>throttle);\nfunction sleep(ms = 0) {\n return new Promise((resolve)=>setTimeout(resolve, ms));\n}\nfunction debounce(func, duration) {\n let timeout;\n return function(...args) {\n const effect = ()=>{\n timeout = null;\n return func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(effect, duration);\n };\n}\nfunction throttle(func, duration) {\n let shouldWait = false;\n return function(...args) {\n if (!shouldWait) {\n func.apply(this, args);\n shouldWait = true;\n setTimeout(()=>{\n shouldWait = false;\n }, duration);\n }\n };\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"hARFP\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _optionValidator = require(\"option-validator\");\nvar _optionValidatorDefault = parcelHelpers.interopDefault(_optionValidator);\nvar _scheme = require(\"../scheme\");\nvar _dom = require(\"./dom\");\nvar _error = require(\"./error\");\nclass Component {\n constructor(art){\n this.id = 0;\n this.art = art;\n this.cache = new Map();\n this.add = this.add.bind(this);\n this.remove = this.remove.bind(this);\n this.update = this.update.bind(this);\n }\n get show() {\n return (0, _dom.hasClass)(this.art.template.$player, `art-${this.name}-show`);\n }\n set show(value) {\n const { $player } = this.art.template;\n const className = `art-${this.name}-show`;\n if (value) (0, _dom.addClass)($player, className);\n else (0, _dom.removeClass)($player, className);\n this.art.emit(this.name, value);\n }\n toggle() {\n this.show = !this.show;\n }\n add(getOption) {\n const option = typeof getOption === 'function' ? getOption(this.art) : getOption;\n option.html = option.html || '';\n (0, _optionValidatorDefault.default)(option, (0, _scheme.ComponentOption));\n if (!this.$parent || !this.name || option.disable) return;\n const name = option.name || `${this.name}${this.id}`;\n const item = this.cache.get(name);\n (0, _error.errorHandle)(!item, `Can't add an existing [${name}] to the [${this.name}]`);\n this.id += 1;\n const $ref = (0, _dom.createElement)('div');\n (0, _dom.addClass)($ref, `art-${this.name}`);\n (0, _dom.addClass)($ref, `art-${this.name}-${name}`);\n const childs = Array.from(this.$parent.children);\n $ref.dataset.index = option.index || this.id;\n const nextChild = childs.find((item)=>Number(item.dataset.index) >= Number($ref.dataset.index));\n if (nextChild) nextChild.insertAdjacentElement('beforebegin', $ref);\n else (0, _dom.append)(this.$parent, $ref);\n if (option.html) (0, _dom.append)($ref, option.html);\n if (option.style) (0, _dom.setStyles)($ref, option.style);\n if (option.tooltip) (0, _dom.tooltip)($ref, option.tooltip);\n const events = [];\n if (option.click) {\n const destroyEvent = this.art.events.proxy($ref, 'click', (event)=>{\n event.preventDefault();\n option.click.call(this.art, this, event);\n });\n events.push(destroyEvent);\n }\n if (option.selector && [\n 'left',\n 'right'\n ].includes(option.position)) this.selector(option, $ref, events);\n this[name] = $ref;\n this.cache.set(name, {\n $ref,\n events,\n option\n });\n if (option.mounted) option.mounted.call(this.art, $ref);\n return $ref;\n }\n remove(name) {\n const item = this.cache.get(name);\n (0, _error.errorHandle)(item, `Can't find [${name}] from the [${this.name}]`);\n if (item.option.beforeUnmount) item.option.beforeUnmount.call(this.art, item.$ref);\n for(let index = 0; index < item.events.length; index++)this.art.events.remove(item.events[index]);\n this.cache.delete(name);\n delete this[name];\n (0, _dom.remove)(item.$ref);\n }\n update(option) {\n const item = this.cache.get(option.name);\n if (item) {\n option = Object.assign(item.option, option);\n this.remove(option.name);\n }\n return this.add(option);\n }\n}\nexports.default = Component;\n\n},{\"option-validator\":\"hw47a\",\"../scheme\":\"9Np13\",\"./dom\":\"Nhosu\",\"./error\":\"480HW\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"9Np13\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"ComponentOption\", ()=>ComponentOption);\nvar _utils = require(\"../utils\");\nconst a = 'array';\nconst b = 'boolean';\nconst s = 'string';\nconst n = 'number';\nconst o = 'object';\nconst f = 'function';\nfunction validElement(value, type, paths) {\n return (0, _utils.errorHandle)(type === s || type === n || value instanceof Element, `${paths.join('.')} require '${s}' or 'Element' type`);\n}\nconst ComponentOption = {\n html: validElement,\n disable: `?${b}`,\n name: `?${s}`,\n index: `?${n}`,\n style: `?${o}`,\n click: `?${f}`,\n mounted: `?${f}`,\n tooltip: `?${s}|${n}`,\n width: `?${n}`,\n selector: `?${a}`,\n onSelect: `?${f}`,\n switch: `?${b}`,\n onSwitch: `?${f}`,\n range: `?${a}`,\n onRange: `?${f}`,\n onChange: `?${f}`\n};\nexports.default = {\n id: s,\n container: validElement,\n url: s,\n poster: s,\n type: s,\n theme: s,\n lang: s,\n volume: n,\n isLive: b,\n muted: b,\n autoplay: b,\n autoSize: b,\n autoMini: b,\n loop: b,\n flip: b,\n playbackRate: b,\n aspectRatio: b,\n screenshot: b,\n setting: b,\n hotkey: b,\n pip: b,\n mutex: b,\n backdrop: b,\n fullscreen: b,\n fullscreenWeb: b,\n subtitleOffset: b,\n miniProgressBar: b,\n useSSR: b,\n playsInline: b,\n lock: b,\n gesture: b,\n fastForward: b,\n autoPlayback: b,\n autoOrientation: b,\n airplay: b,\n proxy: `?${f}`,\n plugins: [\n f\n ],\n layers: [\n ComponentOption\n ],\n contextmenu: [\n ComponentOption\n ],\n settings: [\n ComponentOption\n ],\n controls: [\n {\n ...ComponentOption,\n position: (value, _, paths)=>{\n const position = [\n 'top',\n 'left',\n 'right'\n ];\n return (0, _utils.errorHandle)(position.includes(value), `${paths.join('.')} only accept ${position.toString()} as parameters`);\n }\n }\n ],\n quality: [\n {\n default: `?${b}`,\n html: s,\n url: s\n }\n ],\n highlight: [\n {\n time: n,\n text: s\n }\n ],\n thumbnails: {\n url: s,\n number: n,\n column: n,\n width: n,\n height: n,\n scale: n\n },\n subtitle: {\n url: s,\n name: s,\n type: s,\n style: o,\n escape: b,\n encoding: s,\n onVttLoad: f\n },\n moreVideoAttr: o,\n i18n: o,\n icons: o,\n cssVar: o,\n customType: o\n};\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"atwXQ\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>aspectRatio);\nvar _utils = require(\"../utils\");\nfunction aspectRatio(option) {\n return (art)=>{\n const { i18n, constructor: { ASPECT_RATIO } } = art;\n const html = ASPECT_RATIO.map((item)=>`${item === 'default' ? i18n.get('Default') : item}`).join('');\n return {\n ...option,\n html: `${i18n.get('Aspect Ratio')}: ${html}`,\n click: (contextmenu, event)=>{\n const { value } = event.target.dataset;\n if (value) {\n art.aspectRatio = value;\n contextmenu.show = false;\n }\n },\n mounted: ($panel)=>{\n const $default = (0, _utils.query)('[data-value=\"default\"]', $panel);\n if ($default) (0, _utils.inverseClass)($default, 'art-current');\n art.on('aspectRatio', (value)=>{\n const $current = (0, _utils.queryAll)('span', $panel).find((item)=>item.dataset.value === value);\n if ($current) (0, _utils.inverseClass)($current, 'art-current');\n });\n }\n };\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"34cn1\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>close);\nfunction close(option) {\n return (art)=>({\n ...option,\n html: art.i18n.get('Close'),\n click: (contextmenu)=>{\n contextmenu.show = false;\n }\n });\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"4YbBf\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>flip);\nvar _utils = require(\"../utils\");\nfunction flip(option) {\n return (art)=>{\n const { i18n, constructor: { FLIP } } = art;\n const html = FLIP.map((item)=>`${i18n.get((0, _utils.capitalize)(item))}`).join('');\n return {\n ...option,\n html: `${i18n.get('Video Flip')}: ${html}`,\n click: (contextmenu, event)=>{\n const { value } = event.target.dataset;\n if (value) {\n art.flip = value.toLowerCase();\n contextmenu.show = false;\n }\n },\n mounted: ($panel)=>{\n const $default = (0, _utils.query)('[data-value=\"normal\"]', $panel);\n if ($default) (0, _utils.inverseClass)($default, 'art-current');\n art.on('flip', (value)=>{\n const $current = (0, _utils.queryAll)('span', $panel).find((item)=>item.dataset.value === value);\n if ($current) (0, _utils.inverseClass)($current, 'art-current');\n });\n }\n };\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"difR5\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>info);\nfunction info(option) {\n return (art)=>({\n ...option,\n html: art.i18n.get('Video Info'),\n click: (contextmenu)=>{\n art.info.show = true;\n contextmenu.show = false;\n }\n });\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"2VDwk\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>playbackRate);\nvar _utils = require(\"../utils\");\nfunction playbackRate(option) {\n return (art)=>{\n const { i18n, constructor: { PLAYBACK_RATE } } = art;\n const html = PLAYBACK_RATE.map((item)=>`${item === 1 ? i18n.get('Normal') : item.toFixed(1)}`).join('');\n return {\n ...option,\n html: `${i18n.get('Play Speed')}: ${html}`,\n click: (contextmenu, event)=>{\n const { value } = event.target.dataset;\n if (value) {\n art.playbackRate = Number(value);\n contextmenu.show = false;\n }\n },\n mounted: ($panel)=>{\n const $default = (0, _utils.query)('[data-value=\"1\"]', $panel);\n if ($default) (0, _utils.inverseClass)($default, 'art-current');\n art.on('video:ratechange', ()=>{\n const $current = (0, _utils.queryAll)('span', $panel).find((item)=>Number(item.dataset.value) === art.playbackRate);\n if ($current) (0, _utils.inverseClass)($current, 'art-current');\n });\n }\n };\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"bza1P\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>function(option) {\n return {\n ...option,\n html: `ArtPlayer ${0, _packageJson.version}`\n };\n });\nvar _packageJson = require(\"../../package.json\");\n\n},{\"../../package.json\":\"2r8Ra\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"8He0l\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"../utils\");\nvar _component = require(\"../utils/component\");\nvar _componentDefault = parcelHelpers.interopDefault(_component);\nvar _airplay = require(\"./airplay\");\nvar _airplayDefault = parcelHelpers.interopDefault(_airplay);\nvar _fullscreen = require(\"./fullscreen\");\nvar _fullscreenDefault = parcelHelpers.interopDefault(_fullscreen);\nvar _fullscreenWeb = require(\"./fullscreenWeb\");\nvar _fullscreenWebDefault = parcelHelpers.interopDefault(_fullscreenWeb);\nvar _pip = require(\"./pip\");\nvar _pipDefault = parcelHelpers.interopDefault(_pip);\nvar _playAndPause = require(\"./playAndPause\");\nvar _playAndPauseDefault = parcelHelpers.interopDefault(_playAndPause);\nvar _progress = require(\"./progress\");\nvar _progressDefault = parcelHelpers.interopDefault(_progress);\nvar _screenshot = require(\"./screenshot\");\nvar _screenshotDefault = parcelHelpers.interopDefault(_screenshot);\nvar _setting = require(\"./setting\");\nvar _settingDefault = parcelHelpers.interopDefault(_setting);\nvar _time = require(\"./time\");\nvar _timeDefault = parcelHelpers.interopDefault(_time);\nvar _volume = require(\"./volume\");\nvar _volumeDefault = parcelHelpers.interopDefault(_volume);\nclass Control extends (0, _componentDefault.default) {\n constructor(art){\n super(art);\n this.isHover = false;\n this.name = 'control';\n this.timer = Date.now();\n const { constructor } = art;\n const { $player, $bottom } = this.art.template;\n art.on('mousemove', ()=>{\n if (!(0, _utils.isMobile)) this.show = true;\n });\n art.on('click', ()=>{\n if (0, _utils.isMobile) this.toggle();\n else this.show = true;\n });\n art.on('document:mousemove', (event)=>{\n this.isHover = (0, _utils.includeFromEvent)(event, $bottom);\n });\n art.on('video:timeupdate', ()=>{\n if (!art.setting.show && !this.isHover && !art.isInput && art.playing && this.show && Date.now() - this.timer >= constructor.CONTROL_HIDE_TIME) this.show = false;\n });\n art.on('control', (state)=>{\n if (state) {\n (0, _utils.removeClass)($player, 'art-hide-cursor');\n (0, _utils.addClass)($player, 'art-hover');\n this.timer = Date.now();\n } else {\n (0, _utils.addClass)($player, 'art-hide-cursor');\n (0, _utils.removeClass)($player, 'art-hover');\n }\n });\n this.init();\n }\n init() {\n const { option } = this.art;\n if (!option.isLive) this.add((0, _progressDefault.default)({\n name: 'progress',\n position: 'top',\n index: 10\n }));\n this.add({\n name: 'thumbnails',\n position: 'top',\n index: 20\n });\n this.add((0, _playAndPauseDefault.default)({\n name: 'playAndPause',\n position: 'left',\n index: 10\n }));\n this.add((0, _volumeDefault.default)({\n name: 'volume',\n position: 'left',\n index: 20\n }));\n if (!option.isLive) this.add((0, _timeDefault.default)({\n name: 'time',\n position: 'left',\n index: 30\n }));\n if (option.quality.length) (0, _utils.sleep)().then(()=>{\n this.art.quality = option.quality;\n });\n if (option.screenshot && !(0, _utils.isMobile)) this.add((0, _screenshotDefault.default)({\n name: 'screenshot',\n position: 'right',\n index: 20\n }));\n if (option.setting) this.add((0, _settingDefault.default)({\n name: 'setting',\n position: 'right',\n index: 30\n }));\n if (option.pip) this.add((0, _pipDefault.default)({\n name: 'pip',\n position: 'right',\n index: 40\n }));\n if (option.airplay && window.WebKitPlaybackTargetAvailabilityEvent) this.add((0, _airplayDefault.default)({\n name: 'airplay',\n position: 'right',\n index: 50\n }));\n if (option.fullscreenWeb) this.add((0, _fullscreenWebDefault.default)({\n name: 'fullscreenWeb',\n position: 'right',\n index: 60\n }));\n if (option.fullscreen) this.add((0, _fullscreenDefault.default)({\n name: 'fullscreen',\n position: 'right',\n index: 70\n }));\n for(let index = 0; index < option.controls.length; index++)this.add(option.controls[index]);\n }\n add(getOption) {\n const option = typeof getOption === 'function' ? getOption(this.art) : getOption;\n const { $progress, $controlsLeft, $controlsRight } = this.art.template;\n switch(option.position){\n case 'top':\n this.$parent = $progress;\n break;\n case 'left':\n this.$parent = $controlsLeft;\n break;\n case 'right':\n this.$parent = $controlsRight;\n break;\n default:\n (0, _utils.errorHandle)(false, `Control option.position must one of 'top', 'left', 'right'`);\n break;\n }\n super.add(option);\n }\n check(target) {\n target.$control_value.innerHTML = target.html;\n for(let index = 0; index < target.$control_option.length; index++){\n const item = target.$control_option[index];\n item.default = item === target;\n if (item.default) (0, _utils.inverseClass)(item.$control_item, 'art-current');\n }\n }\n selector(option, $ref, events) {\n const { proxy } = this.art.events;\n (0, _utils.addClass)($ref, 'art-control-selector');\n const $value = (0, _utils.createElement)('div');\n (0, _utils.addClass)($value, 'art-selector-value');\n (0, _utils.append)($value, option.html);\n $ref.textContent = '';\n (0, _utils.append)($ref, $value);\n const $list = (0, _utils.createElement)('div');\n (0, _utils.addClass)($list, 'art-selector-list');\n (0, _utils.append)($ref, $list);\n for(let index = 0; index < option.selector.length; index++){\n const item = option.selector[index];\n const $item = (0, _utils.createElement)('div');\n (0, _utils.addClass)($item, 'art-selector-item');\n if (item.default) (0, _utils.addClass)($item, 'art-current');\n $item.dataset.index = index;\n $item.dataset.value = item.value;\n $item.innerHTML = item.html;\n (0, _utils.append)($list, $item);\n (0, _utils.def)(item, '$control_option', {\n get: ()=>option.selector\n });\n (0, _utils.def)(item, '$control_item', {\n get: ()=>$item\n });\n (0, _utils.def)(item, '$control_value', {\n get: ()=>$value\n });\n }\n const event = proxy($list, 'click', async (event)=>{\n const path = (0, _utils.getComposedPath)(event);\n const item = option.selector.find((item)=>item.$control_item === path.find(($item)=>item.$control_item === $item));\n this.check(item);\n if (option.onSelect) $value.innerHTML = await option.onSelect.call(this.art, item, item.$control_item, event);\n });\n events.push(event);\n }\n}\nexports.default = Control;\n\n},{\"../utils\":\"ga71d\",\"../utils/component\":\"hARFP\",\"./airplay\":\"aJLUA\",\"./fullscreen\":\"hN3wo\",\"./fullscreenWeb\":\"9w6yG\",\"./pip\":\"dPgoc\",\"./playAndPause\":\"bGr3A\",\"./progress\":\"aTHK3\",\"./screenshot\":\"1t1Fe\",\"./setting\":\"3gKuK\",\"./time\":\"3kqR1\",\"./volume\":\"cqTwe\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"aJLUA\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>airplay);\nvar _utils = require(\"../utils\");\nfunction airplay(option) {\n return (art)=>({\n ...option,\n tooltip: art.i18n.get('AirPlay'),\n mounted: ($control)=>{\n const { proxy, icons } = art;\n (0, _utils.append)($control, icons.airplay);\n proxy($control, 'click', ()=>art.airplay());\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"hN3wo\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>fullscreen);\nvar _utils = require(\"../utils\");\nfunction fullscreen(option) {\n return (art)=>({\n ...option,\n tooltip: art.i18n.get('Fullscreen'),\n mounted: ($control)=>{\n const { proxy, icons, i18n } = art;\n const $fullscreenOn = (0, _utils.append)($control, icons.fullscreenOn);\n const $fullscreenOff = (0, _utils.append)($control, icons.fullscreenOff);\n (0, _utils.setStyle)($fullscreenOff, 'display', 'none');\n proxy($control, 'click', ()=>{\n art.fullscreen = !art.fullscreen;\n });\n art.on('fullscreen', (state)=>{\n if (state) {\n (0, _utils.tooltip)($control, i18n.get('Exit Fullscreen'));\n (0, _utils.setStyle)($fullscreenOn, 'display', 'none');\n (0, _utils.setStyle)($fullscreenOff, 'display', 'inline-flex');\n } else {\n (0, _utils.tooltip)($control, i18n.get('Fullscreen'));\n (0, _utils.setStyle)($fullscreenOn, 'display', 'inline-flex');\n (0, _utils.setStyle)($fullscreenOff, 'display', 'none');\n }\n });\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"9w6yG\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>fullscreenWeb);\nvar _utils = require(\"../utils\");\nfunction fullscreenWeb(option) {\n return (art)=>({\n ...option,\n tooltip: art.i18n.get('Web Fullscreen'),\n mounted: ($control)=>{\n const { proxy, icons, i18n } = art;\n const $fullscreenWebOn = (0, _utils.append)($control, icons.fullscreenWebOn);\n const $fullscreenWebOff = (0, _utils.append)($control, icons.fullscreenWebOff);\n (0, _utils.setStyle)($fullscreenWebOff, 'display', 'none');\n proxy($control, 'click', ()=>{\n art.fullscreenWeb = !art.fullscreenWeb;\n });\n art.on('fullscreenWeb', (value)=>{\n if (value) {\n (0, _utils.tooltip)($control, i18n.get('Exit Web Fullscreen'));\n (0, _utils.setStyle)($fullscreenWebOn, 'display', 'none');\n (0, _utils.setStyle)($fullscreenWebOff, 'display', 'inline-flex');\n } else {\n (0, _utils.tooltip)($control, i18n.get('Web Fullscreen'));\n (0, _utils.setStyle)($fullscreenWebOn, 'display', 'inline-flex');\n (0, _utils.setStyle)($fullscreenWebOff, 'display', 'none');\n }\n });\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"dPgoc\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>pip);\nvar _utils = require(\"../utils\");\nfunction pip(option) {\n return (art)=>({\n ...option,\n tooltip: art.i18n.get('PIP Mode'),\n mounted: ($control)=>{\n const { proxy, icons, i18n } = art;\n (0, _utils.append)($control, icons.pip);\n proxy($control, 'click', ()=>{\n art.pip = !art.pip;\n });\n art.on('pip', (value)=>{\n (0, _utils.tooltip)($control, i18n.get(value ? 'Exit PIP Mode' : 'PIP Mode'));\n });\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"bGr3A\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>playAndPause);\nvar _utils = require(\"../utils\");\nfunction playAndPause(option) {\n return (art)=>({\n ...option,\n mounted: ($control)=>{\n const { proxy, icons, i18n } = art;\n const $play = (0, _utils.append)($control, icons.play);\n const $pause = (0, _utils.append)($control, icons.pause);\n (0, _utils.tooltip)($play, i18n.get('Play'));\n (0, _utils.tooltip)($pause, i18n.get('Pause'));\n proxy($play, 'click', ()=>{\n art.play();\n });\n proxy($pause, 'click', ()=>{\n art.pause();\n });\n function showPlay() {\n (0, _utils.setStyle)($play, 'display', 'flex');\n (0, _utils.setStyle)($pause, 'display', 'none');\n }\n function showPause() {\n (0, _utils.setStyle)($play, 'display', 'none');\n (0, _utils.setStyle)($pause, 'display', 'flex');\n }\n if (art.playing) showPause();\n else showPlay();\n art.on('video:playing', ()=>{\n showPause();\n });\n art.on('video:pause', ()=>{\n showPlay();\n });\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"aTHK3\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"getPosFromEvent\", ()=>getPosFromEvent);\nparcelHelpers.export(exports, \"setCurrentTime\", ()=>setCurrentTime);\nparcelHelpers.export(exports, \"default\", ()=>progress);\nvar _utils = require(\"../utils\");\nfunction getPosFromEvent(art, event) {\n const { $progress } = art.template;\n const { left } = (0, _utils.getRect)($progress);\n const eventLeft = (0, _utils.isMobile) ? event.touches[0].clientX : event.clientX;\n const width = (0, _utils.clamp)(eventLeft - left, 0, $progress.clientWidth);\n const second = width / $progress.clientWidth * art.duration;\n const time = (0, _utils.secondToTime)(second);\n const percentage = (0, _utils.clamp)(width / $progress.clientWidth, 0, 1);\n return {\n second,\n time,\n width,\n percentage\n };\n}\nfunction setCurrentTime(art, event) {\n if (art.isRotate) {\n const percentage = event.touches[0].clientY / art.height;\n const second = percentage * art.duration;\n art.emit('setBar', 'played', percentage, event);\n art.seek = second;\n } else {\n const { second, percentage } = getPosFromEvent(art, event);\n art.emit('setBar', 'played', percentage, event);\n art.seek = second;\n }\n}\nfunction progress(options) {\n return (art)=>{\n const { icons, option, proxy } = art;\n return {\n ...options,\n html: `\n
\n
\n
\n
\n
\n
\n
\n
\n `,\n mounted: ($control)=>{\n let tipTimer = null;\n let isDragging = false;\n const $hover = (0, _utils.query)('.art-progress-hover', $control);\n const $loaded = (0, _utils.query)('.art-progress-loaded', $control);\n const $played = (0, _utils.query)('.art-progress-played', $control);\n const $highlight = (0, _utils.query)('.art-progress-highlight', $control);\n const $indicator = (0, _utils.query)('.art-progress-indicator', $control);\n const $tip = (0, _utils.query)('.art-progress-tip', $control);\n if (icons.indicator) (0, _utils.append)($indicator, icons.indicator);\n else (0, _utils.setStyle)($indicator, 'backgroundColor', 'var(--art-theme)');\n function showHighlight(event) {\n const { width } = getPosFromEvent(art, event);\n const { text } = event.target.dataset;\n $tip.textContent = text;\n const tipWidth = $tip.clientWidth;\n if (width <= tipWidth / 2) (0, _utils.setStyle)($tip, 'left', 0);\n else if (width > $control.clientWidth - tipWidth / 2) (0, _utils.setStyle)($tip, 'left', `${$control.clientWidth - tipWidth}px`);\n else (0, _utils.setStyle)($tip, 'left', `${width - tipWidth / 2}px`);\n }\n function showTime(event, touch) {\n const { width, time } = touch || getPosFromEvent(art, event);\n $tip.textContent = time;\n const tipWidth = $tip.clientWidth;\n if (width <= tipWidth / 2) (0, _utils.setStyle)($tip, 'left', 0);\n else if (width > $control.clientWidth - tipWidth / 2) (0, _utils.setStyle)($tip, 'left', `${$control.clientWidth - tipWidth}px`);\n else (0, _utils.setStyle)($tip, 'left', `${width - tipWidth / 2}px`);\n }\n function updateHighlight() {\n $highlight.textContent = '';\n for(let index = 0; index < option.highlight.length; index++){\n const item = option.highlight[index];\n const left = (0, _utils.clamp)(item.time, 0, art.duration) / art.duration * 100;\n const html = ``;\n (0, _utils.append)($highlight, html);\n }\n }\n function setBar(type, percentage, event) {\n const isMobileDragging = type === 'played' && event && (0, _utils.isMobile);\n if (type === 'loaded') (0, _utils.setStyle)($loaded, 'width', `${percentage * 100}%`);\n if (type === 'hover') (0, _utils.setStyle)($hover, 'width', `${percentage * 100}%`);\n if (type === 'played') {\n (0, _utils.setStyle)($played, 'width', `${percentage * 100}%`);\n (0, _utils.setStyle)($indicator, 'left', `${percentage * 100}%`);\n }\n if (isMobileDragging) {\n (0, _utils.setStyle)($tip, 'display', 'flex');\n const width = $control.clientWidth * percentage;\n const time = (0, _utils.secondToTime)(percentage * art.duration);\n showTime(event, {\n width,\n time\n });\n clearTimeout(tipTimer);\n tipTimer = setTimeout(()=>{\n (0, _utils.setStyle)($tip, 'display', 'none');\n }, 500);\n }\n }\n art.on('setBar', setBar);\n art.on('video:loadedmetadata', updateHighlight);\n if (art.constructor.USE_RAF) art.on('raf', ()=>{\n art.emit('setBar', 'played', art.played);\n art.emit('setBar', 'loaded', art.loaded);\n });\n else {\n art.on('video:timeupdate', ()=>{\n art.emit('setBar', 'played', art.played);\n });\n art.on('video:progress', ()=>{\n art.emit('setBar', 'loaded', art.loaded);\n });\n art.on('video:ended', ()=>{\n art.emit('setBar', 'played', 1);\n });\n }\n art.emit('setBar', 'loaded', art.loaded || 0);\n if (!(0, _utils.isMobile)) {\n proxy($control, 'click', (event)=>{\n if (event.target !== $indicator) setCurrentTime(art, event);\n });\n proxy($control, 'mousemove', (event)=>{\n const { percentage } = getPosFromEvent(art, event);\n art.emit('setBar', 'hover', percentage, event);\n (0, _utils.setStyle)($tip, 'display', 'flex');\n if ((0, _utils.includeFromEvent)(event, $highlight)) showHighlight(event);\n else showTime(event);\n });\n proxy($control, 'mouseleave', (event)=>{\n (0, _utils.setStyle)($tip, 'display', 'none');\n art.emit('setBar', 'hover', 0, event);\n });\n proxy($control, 'mousedown', (event)=>{\n isDragging = event.button === 0;\n });\n art.on('document:mousemove', (event)=>{\n if (isDragging) {\n const { second, percentage } = getPosFromEvent(art, event);\n art.emit('setBar', 'played', percentage, event);\n art.seek = second;\n }\n });\n art.on('document:mouseup', ()=>{\n if (isDragging) isDragging = false;\n });\n }\n }\n };\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"1t1Fe\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>screenshot);\nvar _utils = require(\"../utils\");\nfunction screenshot(option) {\n return (art)=>({\n ...option,\n tooltip: art.i18n.get('Screenshot'),\n mounted: ($control)=>{\n const { proxy, icons } = art;\n (0, _utils.append)($control, icons.screenshot);\n proxy($control, 'click', ()=>{\n art.screenshot();\n });\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"3gKuK\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>setting);\nvar _utils = require(\"../utils\");\nfunction setting(option) {\n return (art)=>({\n ...option,\n tooltip: art.i18n.get('Show Setting'),\n mounted: ($control)=>{\n const { proxy, icons, i18n } = art;\n (0, _utils.append)($control, icons.setting);\n proxy($control, 'click', ()=>{\n art.setting.toggle();\n art.setting.resize();\n });\n art.on('setting', (value)=>{\n (0, _utils.tooltip)($control, i18n.get(value ? 'Hide Setting' : 'Show Setting'));\n });\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"3kqR1\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>time);\nvar _utils = require(\"../utils\");\nfunction time(option) {\n return (art)=>({\n ...option,\n style: (0, _utils.isMobile) ? {\n fontSize: '12px',\n padding: '0 5px'\n } : {\n cursor: 'auto',\n padding: '0 10px'\n },\n mounted: ($control)=>{\n function getTime() {\n const newTime = `${(0, _utils.secondToTime)(art.currentTime)} / ${(0, _utils.secondToTime)(art.duration)}`;\n if (newTime !== $control.textContent) $control.textContent = newTime;\n }\n getTime();\n const events = [\n 'video:loadedmetadata',\n 'video:timeupdate',\n 'video:progress'\n ];\n for(let index = 0; index < events.length; index++)art.on(events[index], getTime);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"cqTwe\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>volume);\nvar _utils = require(\"../utils\");\nfunction volume(option) {\n return (art)=>({\n ...option,\n mounted: ($control)=>{\n const { proxy, icons } = art;\n const $volume = (0, _utils.append)($control, icons.volume);\n const $close = (0, _utils.append)($control, icons.volumeClose);\n const $panel = (0, _utils.append)($control, '
');\n const $inner = (0, _utils.append)($panel, '
');\n const $value = (0, _utils.append)($inner, `
`);\n const $slider = (0, _utils.append)($inner, `
`);\n const $handle = (0, _utils.append)($slider, `
`);\n const $loaded = (0, _utils.append)($handle, `
`);\n const $indicator = (0, _utils.append)($slider, `
`);\n function getVolumeFromEvent(event) {\n const { top, height } = (0, _utils.getRect)($slider);\n return 1 - (event.clientY - top) / height;\n }\n function update() {\n if (art.muted || art.volume === 0) {\n (0, _utils.setStyle)($volume, 'display', 'none');\n (0, _utils.setStyle)($close, 'display', 'flex');\n (0, _utils.setStyle)($indicator, 'top', '100%');\n (0, _utils.setStyle)($loaded, 'top', '100%');\n $value.textContent = 0;\n } else {\n const percentage = art.volume * 100;\n (0, _utils.setStyle)($volume, 'display', 'flex');\n (0, _utils.setStyle)($close, 'display', 'none');\n (0, _utils.setStyle)($indicator, 'top', `${100 - percentage}%`);\n (0, _utils.setStyle)($loaded, 'top', `${100 - percentage}%`);\n $value.textContent = Math.floor(percentage);\n }\n }\n update();\n art.on('video:volumechange', update);\n proxy($volume, 'click', ()=>{\n art.muted = true;\n });\n proxy($close, 'click', ()=>{\n art.muted = false;\n });\n if (0, _utils.isMobile) (0, _utils.setStyle)($panel, 'display', 'none');\n else {\n let isDragging = false;\n proxy($slider, 'mousedown', (event)=>{\n isDragging = event.button === 0;\n art.volume = getVolumeFromEvent(event);\n });\n art.on('document:mousemove', (event)=>{\n if (isDragging) {\n art.muted = false;\n art.volume = getVolumeFromEvent(event);\n }\n });\n art.on('document:mouseup', ()=>{\n if (isDragging) isDragging = false;\n });\n }\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"eFzfA\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _clickInit = require(\"./clickInit\");\nvar _clickInitDefault = parcelHelpers.interopDefault(_clickInit);\nvar _gestureInit = require(\"./gestureInit\");\nvar _gestureInitDefault = parcelHelpers.interopDefault(_gestureInit);\nvar _globalInit = require(\"./globalInit\");\nvar _globalInitDefault = parcelHelpers.interopDefault(_globalInit);\nvar _hoverInit = require(\"./hoverInit\");\nvar _hoverInitDefault = parcelHelpers.interopDefault(_hoverInit);\nvar _moveInit = require(\"./moveInit\");\nvar _moveInitDefault = parcelHelpers.interopDefault(_moveInit);\nvar _resizeInit = require(\"./resizeInit\");\nvar _resizeInitDefault = parcelHelpers.interopDefault(_resizeInit);\nvar _updateInit = require(\"./updateInit\");\nvar _updateInitDefault = parcelHelpers.interopDefault(_updateInit);\nvar _viewInit = require(\"./viewInit\");\nvar _viewInitDefault = parcelHelpers.interopDefault(_viewInit);\nclass Events {\n constructor(art){\n this.destroyEvents = [];\n this.proxy = this.proxy.bind(this);\n this.hover = this.hover.bind(this);\n (0, _clickInitDefault.default)(art, this);\n (0, _hoverInitDefault.default)(art, this);\n (0, _moveInitDefault.default)(art, this);\n (0, _resizeInitDefault.default)(art, this);\n (0, _gestureInitDefault.default)(art, this);\n (0, _viewInitDefault.default)(art, this);\n (0, _globalInitDefault.default)(art, this);\n (0, _updateInitDefault.default)(art, this);\n }\n proxy(target, name, callback, option = {}) {\n if (Array.isArray(name)) return name.map((item)=>this.proxy(target, item, callback, option));\n target.addEventListener(name, callback, option);\n const destroy = ()=>target.removeEventListener(name, callback, option);\n this.destroyEvents.push(destroy);\n return destroy;\n }\n hover(target, mouseenter, mouseleave) {\n if (mouseenter) this.proxy(target, 'mouseenter', mouseenter);\n if (mouseleave) this.proxy(target, 'mouseleave', mouseleave);\n }\n remove(destroyEvent) {\n const index = this.destroyEvents.indexOf(destroyEvent);\n if (index > -1) {\n destroyEvent();\n this.destroyEvents.splice(index, 1);\n }\n }\n destroy() {\n for(let index = 0; index < this.destroyEvents.length; index++)this.destroyEvents[index]();\n }\n}\nexports.default = Events;\n\n},{\"./clickInit\":\"6uudx\",\"./gestureInit\":\"7AgpD\",\"./globalInit\":\"k05ig\",\"./hoverInit\":\"34Nn1\",\"./moveInit\":\"1n1rp\",\"./resizeInit\":\"gfqtJ\",\"./updateInit\":\"g3KXr\",\"./viewInit\":\"kPVx0\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"6uudx\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>clickInit);\nvar _utils = require(\"../utils\");\nfunction clickInit(art, events) {\n const { constructor, template: { $player, $video } } = art;\n function onDocumentClick(event) {\n if ((0, _utils.includeFromEvent)(event, $player)) {\n art.isInput = event.target.tagName === 'INPUT';\n art.isFocus = true;\n art.emit('focus', event);\n } else {\n art.isInput = false;\n art.isFocus = false;\n art.emit('blur', event);\n }\n }\n art.on('document:click', onDocumentClick);\n art.on('document:contextmenu', onDocumentClick);\n let clickTimes = [];\n events.proxy($video, 'click', (event)=>{\n const now = Date.now();\n clickTimes.push(now);\n const { MOBILE_CLICK_PLAY, DBCLICK_TIME, MOBILE_DBCLICK_PLAY, DBCLICK_FULLSCREEN } = constructor;\n const clicks = clickTimes.filter((t)=>now - t <= DBCLICK_TIME);\n switch(clicks.length){\n case 1:\n art.emit('click', event);\n if (0, _utils.isMobile) {\n if (!art.isLock && MOBILE_CLICK_PLAY) art.toggle();\n } else art.toggle();\n clickTimes = clicks;\n break;\n case 2:\n art.emit('dblclick', event);\n if (0, _utils.isMobile) {\n if (!art.isLock && MOBILE_DBCLICK_PLAY) art.toggle();\n } else if (DBCLICK_FULLSCREEN) art.fullscreen = !art.fullscreen;\n clickTimes = [];\n break;\n default:\n clickTimes = [];\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"7AgpD\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>gestureInit);\nvar _progress = require(\"../control/progress\");\nvar _utils = require(\"../utils\");\nfunction GetSlideAngle(dx, dy) {\n return Math.atan2(dy, dx) * 180 / Math.PI;\n}\nfunction GetSlideDirection(startX, startY, endX, endY) {\n const dy = startY - endY;\n const dx = endX - startX;\n let result = 0;\n if (Math.abs(dx) < 2 && Math.abs(dy) < 2) return result;\n const angle = GetSlideAngle(dx, dy);\n if (angle >= -45 && angle < 45) result = 4;\n else if (angle >= 45 && angle < 135) result = 1;\n else if (angle >= -135 && angle < -45) result = 2;\n else if (angle >= 135 && angle <= 180 || angle >= -180 && angle < -135) result = 3;\n return result;\n}\nfunction gestureInit(art, events) {\n if ((0, _utils.isMobile) && !art.option.isLive) {\n const { $video, $progress } = art.template;\n let touchTarget = null;\n let isDragging = false;\n let startX = 0;\n let startY = 0;\n let startTime = 0;\n const onTouchStart = (event)=>{\n if (event.touches.length === 1 && !art.isLock) {\n if (touchTarget === $progress) (0, _progress.setCurrentTime)(art, event);\n isDragging = true;\n const { pageX, pageY } = event.touches[0];\n startX = pageX;\n startY = pageY;\n startTime = art.currentTime;\n }\n };\n const onTouchMove = (event)=>{\n if (event.touches.length === 1 && isDragging && art.duration) {\n const { pageX, pageY } = event.touches[0];\n const direction = GetSlideDirection(startX, startY, pageX, pageY);\n const isHorizontal = [\n 3,\n 4\n ].includes(direction);\n const isVertical = [\n 1,\n 2\n ].includes(direction);\n const isLegal = isHorizontal && !art.isRotate || isVertical && art.isRotate;\n if (isLegal) {\n const ratioX = (0, _utils.clamp)((pageX - startX) / art.width, -1, 1);\n const ratioY = (0, _utils.clamp)((pageY - startY) / art.height, -1, 1);\n const ratio = art.isRotate ? ratioY : ratioX;\n const TOUCH_MOVE_RATIO = touchTarget === $video ? art.constructor.TOUCH_MOVE_RATIO : 1;\n const currentTime = (0, _utils.clamp)(startTime + art.duration * ratio * TOUCH_MOVE_RATIO, 0, art.duration);\n art.seek = currentTime;\n art.emit('setBar', 'played', (0, _utils.clamp)(currentTime / art.duration, 0, 1), event);\n art.notice.show = `${(0, _utils.secondToTime)(currentTime)} / ${(0, _utils.secondToTime)(art.duration)}`;\n }\n }\n };\n const onTouchEnd = ()=>{\n if (isDragging) {\n startX = 0;\n startY = 0;\n startTime = 0;\n isDragging = false;\n touchTarget = null;\n }\n };\n if (art.option.gesture) {\n events.proxy($video, 'touchstart', (event)=>{\n touchTarget = $video;\n onTouchStart(event);\n });\n events.proxy($video, 'touchmove', onTouchMove);\n }\n events.proxy($progress, 'touchstart', (event)=>{\n touchTarget = $progress;\n onTouchStart(event);\n });\n events.proxy($progress, 'touchmove', onTouchMove);\n art.on('document:touchend', onTouchEnd);\n }\n}\n\n},{\"../control/progress\":\"aTHK3\",\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"k05ig\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>globalInit);\nfunction globalInit(art, events) {\n const documentEvents = [\n 'click',\n 'mouseup',\n 'keydown',\n 'touchend',\n 'touchmove',\n 'mousemove',\n 'contextmenu',\n 'webkitfullscreenchange'\n ];\n const windowEvents = [\n 'resize',\n 'scroll',\n 'orientationchange'\n ];\n const destroyEvents = [];\n function bindGlobalEvents(source = {}) {\n for(let index = 0; index < destroyEvents.length; index++)events.remove(destroyEvents[index]);\n destroyEvents.length = 0;\n const { $player } = art.template;\n documentEvents.forEach((name)=>{\n const doc = source.document || $player.ownerDocument || document;\n const destroy = events.proxy(doc, name, (event)=>{\n art.emit(`document:${name}`, event);\n });\n destroyEvents.push(destroy);\n });\n windowEvents.forEach((name)=>{\n const win = source.window || $player.ownerDocument?.defaultView || window;\n const destroy = events.proxy(win, name, (event)=>{\n art.emit(`window:${name}`, event);\n });\n destroyEvents.push(destroy);\n });\n }\n bindGlobalEvents();\n events.bindGlobalEvents = bindGlobalEvents;\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"34Nn1\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>hoverInit);\nvar _utils = require(\"../utils\");\nfunction hoverInit(art, events) {\n const { $player } = art.template;\n events.hover($player, (event)=>{\n (0, _utils.addClass)($player, 'art-hover');\n art.emit('hover', true, event);\n }, (event)=>{\n (0, _utils.removeClass)($player, 'art-hover');\n art.emit('hover', false, event);\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"1n1rp\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>moveInit);\nfunction moveInit(art, events) {\n const { $player } = art.template;\n events.proxy($player, 'mousemove', (event)=>{\n art.emit('mousemove', event);\n });\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"gfqtJ\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>resizeInit);\nvar _utils = require(\"../utils\");\nfunction resizeInit(art, events) {\n const { option, constructor } = art;\n art.on('resize', ()=>{\n const { aspectRatio, notice } = art;\n if (art.state === 'standard' && option.autoSize) art.autoSize();\n art.aspectRatio = aspectRatio;\n notice.show = '';\n });\n const resizeFn = (0, _utils.debounce)(()=>art.emit('resize'), constructor.RESIZE_TIME);\n art.on('window:orientationchange', ()=>resizeFn());\n art.on('window:resize', ()=>resizeFn());\n if (screen && screen.orientation && screen.orientation.onchange) events.proxy(screen.orientation, 'change', ()=>resizeFn());\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"g3KXr\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>updateInit);\nfunction updateInit(art) {\n if (art.constructor.USE_RAF) {\n let timer = null;\n (function update() {\n if (art.playing) art.emit('raf');\n if (!art.isDestroy) timer = requestAnimationFrame(update);\n })();\n art.on('destroy', ()=>{\n cancelAnimationFrame(timer);\n });\n }\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"kPVx0\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>viewInit);\nvar _utils = require(\"../utils\");\nfunction viewInit(art) {\n const { option, constructor, template: { $container } } = art;\n const scrollFn = (0, _utils.throttle)(()=>{\n art.emit('view', (0, _utils.isInViewport)($container, constructor.SCROLL_GAP));\n }, constructor.SCROLL_TIME);\n art.on('window:scroll', ()=>scrollFn());\n art.on('view', (state)=>{\n if (option.autoMini) art.mini = !state;\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"aLFu1\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"./utils\");\nclass Hotkey {\n constructor(art){\n this.art = art;\n this.keys = {};\n if (art.option.hotkey && !(0, _utils.isMobile)) this.init();\n }\n init() {\n const { constructor } = this.art;\n this.add('Escape', ()=>{\n if (this.art.fullscreenWeb) this.art.fullscreenWeb = false;\n });\n this.add('Space', ()=>{\n this.art.toggle();\n });\n this.add('ArrowLeft', ()=>{\n this.art.backward = constructor.SEEK_STEP;\n });\n this.add('ArrowUp', ()=>{\n this.art.volume += constructor.VOLUME_STEP;\n });\n this.add('ArrowRight', ()=>{\n this.art.forward = constructor.SEEK_STEP;\n });\n this.add('ArrowDown', ()=>{\n this.art.volume -= constructor.VOLUME_STEP;\n });\n this.art.on('document:keydown', (event)=>{\n if (this.art.isFocus) {\n const tag = document.activeElement.tagName.toUpperCase();\n const editable = document.activeElement.getAttribute('contenteditable');\n if (tag !== 'INPUT' && tag !== 'TEXTAREA' && editable !== '' && editable !== 'true' && !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) {\n const events = this.keys[event.code];\n if (events) {\n event.preventDefault();\n for(let index = 0; index < events.length; index++)events[index].call(this.art, event);\n this.art.emit('hotkey', event);\n }\n }\n }\n this.art.emit('keydown', event);\n });\n }\n add(key, event) {\n if (this.keys[key]) this.keys[key].push(event);\n else this.keys[key] = [\n event\n ];\n return this;\n }\n remove(key, event) {\n if (this.keys[key]) {\n const index = this.keys[key].indexOf(event);\n if (index !== -1) this.keys[key].splice(index, 1);\n }\n return this;\n }\n}\nexports.default = Hotkey;\n\n},{\"./utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"g6kBT\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"../utils\");\nvar _zhCn = require(\"./zh-cn\");\nvar _zhCnDefault = parcelHelpers.interopDefault(_zhCn);\nclass I18n {\n constructor(art){\n this.art = art;\n this.languages = {\n 'zh-cn': (0, _zhCnDefault.default)\n };\n this.language = {};\n this.update(art.option.i18n);\n }\n init() {\n const lang = this.art.option.lang.toLowerCase();\n this.language = this.languages[lang] || {};\n }\n get(key) {\n return this.language[key] || key;\n }\n update(value) {\n this.languages = (0, _utils.mergeDeep)(this.languages, value);\n this.init();\n }\n}\nexports.default = I18n;\n\n},{\"../utils\":\"ga71d\",\"./zh-cn\":\"hpI5A\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"hpI5A\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nconst zhCn = {\n 'Video Info': \"\\u7EDF\\u8BA1\\u4FE1\\u606F\",\n 'Close': \"\\u5173\\u95ED\",\n 'Video Load Failed': \"\\u52A0\\u8F7D\\u5931\\u8D25\",\n 'Volume': \"\\u97F3\\u91CF\",\n 'Play': \"\\u64AD\\u653E\",\n 'Pause': \"\\u6682\\u505C\",\n 'Rate': \"\\u901F\\u5EA6\",\n 'Mute': \"\\u9759\\u97F3\",\n 'Video Flip': \"\\u753B\\u9762\\u7FFB\\u8F6C\",\n 'Horizontal': \"\\u6C34\\u5E73\",\n 'Vertical': \"\\u5782\\u76F4\",\n 'Reconnect': \"\\u91CD\\u65B0\\u8FDE\\u63A5\",\n 'Show Setting': \"\\u663E\\u793A\\u8BBE\\u7F6E\",\n 'Hide Setting': \"\\u9690\\u85CF\\u8BBE\\u7F6E\",\n 'Screenshot': \"\\u622A\\u56FE\",\n 'Play Speed': \"\\u64AD\\u653E\\u901F\\u5EA6\",\n 'Aspect Ratio': \"\\u753B\\u9762\\u6BD4\\u4F8B\",\n 'Default': \"\\u9ED8\\u8BA4\",\n 'Normal': \"\\u6B63\\u5E38\",\n 'Open': \"\\u6253\\u5F00\",\n 'Switch Video': \"\\u5207\\u6362\",\n 'Switch Subtitle': \"\\u5207\\u6362\\u5B57\\u5E55\",\n 'Fullscreen': \"\\u5168\\u5C4F\",\n 'Exit Fullscreen': \"\\u9000\\u51FA\\u5168\\u5C4F\",\n 'Web Fullscreen': \"\\u7F51\\u9875\\u5168\\u5C4F\",\n 'Exit Web Fullscreen': \"\\u9000\\u51FA\\u7F51\\u9875\\u5168\\u5C4F\",\n 'Mini Player': \"\\u8FF7\\u4F60\\u64AD\\u653E\\u5668\",\n 'PIP Mode': \"\\u5F00\\u542F\\u753B\\u4E2D\\u753B\",\n 'Exit PIP Mode': \"\\u9000\\u51FA\\u753B\\u4E2D\\u753B\",\n 'PIP Not Supported': \"\\u4E0D\\u652F\\u6301\\u753B\\u4E2D\\u753B\",\n 'Fullscreen Not Supported': \"\\u4E0D\\u652F\\u6301\\u5168\\u5C4F\",\n 'Subtitle Offset': \"\\u5B57\\u5E55\\u504F\\u79FB\",\n 'Last Seen': \"\\u4E0A\\u6B21\\u770B\\u5230\",\n 'Jump Play': \"\\u8DF3\\u8F6C\\u64AD\\u653E\",\n 'AirPlay': \"\\u9694\\u7A7A\\u64AD\\u653E\",\n 'AirPlay Not Available': \"\\u9694\\u7A7A\\u64AD\\u653E\\u4E0D\\u53EF\\u7528\"\n};\nexports.default = zhCn;\nif (typeof window !== 'undefined') window['artplayer-i18n-zh-cn'] = zhCn;\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"exeCy\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _airplaySvg = require(\"bundle-text:./airplay.svg\");\nvar _airplaySvgDefault = parcelHelpers.interopDefault(_airplaySvg);\nvar _arrowLeftSvg = require(\"bundle-text:./arrow-left.svg\");\nvar _arrowLeftSvgDefault = parcelHelpers.interopDefault(_arrowLeftSvg);\nvar _arrowRightSvg = require(\"bundle-text:./arrow-right.svg\");\nvar _arrowRightSvgDefault = parcelHelpers.interopDefault(_arrowRightSvg);\nvar _aspectRatioSvg = require(\"bundle-text:./aspect-ratio.svg\");\nvar _aspectRatioSvgDefault = parcelHelpers.interopDefault(_aspectRatioSvg);\nvar _checkSvg = require(\"bundle-text:./check.svg\");\nvar _checkSvgDefault = parcelHelpers.interopDefault(_checkSvg);\nvar _closeSvg = require(\"bundle-text:./close.svg\");\nvar _closeSvgDefault = parcelHelpers.interopDefault(_closeSvg);\nvar _configSvg = require(\"bundle-text:./config.svg\");\nvar _configSvgDefault = parcelHelpers.interopDefault(_configSvg);\nvar _errorSvg = require(\"bundle-text:./error.svg\");\nvar _errorSvgDefault = parcelHelpers.interopDefault(_errorSvg);\nvar _flipSvg = require(\"bundle-text:./flip.svg\");\nvar _flipSvgDefault = parcelHelpers.interopDefault(_flipSvg);\nvar _fullscreenOffSvg = require(\"bundle-text:./fullscreen-off.svg\");\nvar _fullscreenOffSvgDefault = parcelHelpers.interopDefault(_fullscreenOffSvg);\nvar _fullscreenOnSvg = require(\"bundle-text:./fullscreen-on.svg\");\nvar _fullscreenOnSvgDefault = parcelHelpers.interopDefault(_fullscreenOnSvg);\nvar _fullscreenWebOffSvg = require(\"bundle-text:./fullscreen-web-off.svg\");\nvar _fullscreenWebOffSvgDefault = parcelHelpers.interopDefault(_fullscreenWebOffSvg);\nvar _fullscreenWebOnSvg = require(\"bundle-text:./fullscreen-web-on.svg\");\nvar _fullscreenWebOnSvgDefault = parcelHelpers.interopDefault(_fullscreenWebOnSvg);\nvar _loadingSvg = require(\"bundle-text:./loading.svg\");\nvar _loadingSvgDefault = parcelHelpers.interopDefault(_loadingSvg);\nvar _lockSvg = require(\"bundle-text:./lock.svg\");\nvar _lockSvgDefault = parcelHelpers.interopDefault(_lockSvg);\nvar _pauseSvg = require(\"bundle-text:./pause.svg\");\nvar _pauseSvgDefault = parcelHelpers.interopDefault(_pauseSvg);\nvar _pipSvg = require(\"bundle-text:./pip.svg\");\nvar _pipSvgDefault = parcelHelpers.interopDefault(_pipSvg);\nvar _playSvg = require(\"bundle-text:./play.svg\");\nvar _playSvgDefault = parcelHelpers.interopDefault(_playSvg);\nvar _playbackRateSvg = require(\"bundle-text:./playback-rate.svg\");\nvar _playbackRateSvgDefault = parcelHelpers.interopDefault(_playbackRateSvg);\nvar _screenshotSvg = require(\"bundle-text:./screenshot.svg\");\nvar _screenshotSvgDefault = parcelHelpers.interopDefault(_screenshotSvg);\nvar _settingSvg = require(\"bundle-text:./setting.svg\");\nvar _settingSvgDefault = parcelHelpers.interopDefault(_settingSvg);\nvar _stateSvg = require(\"bundle-text:./state.svg\");\nvar _stateSvgDefault = parcelHelpers.interopDefault(_stateSvg);\nvar _switchOffSvg = require(\"bundle-text:./switch-off.svg\");\nvar _switchOffSvgDefault = parcelHelpers.interopDefault(_switchOffSvg);\nvar _switchOnSvg = require(\"bundle-text:./switch-on.svg\");\nvar _switchOnSvgDefault = parcelHelpers.interopDefault(_switchOnSvg);\nvar _unlockSvg = require(\"bundle-text:./unlock.svg\");\nvar _unlockSvgDefault = parcelHelpers.interopDefault(_unlockSvg);\nvar _volumeCloseSvg = require(\"bundle-text:./volume-close.svg\");\nvar _volumeCloseSvgDefault = parcelHelpers.interopDefault(_volumeCloseSvg);\nvar _volumeSvg = require(\"bundle-text:./volume.svg\");\nvar _volumeSvgDefault = parcelHelpers.interopDefault(_volumeSvg);\nvar _utils = require(\"../utils\");\nclass Icons {\n constructor(art){\n const icons = {\n loading: (0, _loadingSvgDefault.default),\n state: (0, _stateSvgDefault.default),\n play: (0, _playSvgDefault.default),\n pause: (0, _pauseSvgDefault.default),\n check: (0, _checkSvgDefault.default),\n volume: (0, _volumeSvgDefault.default),\n volumeClose: (0, _volumeCloseSvgDefault.default),\n screenshot: (0, _screenshotSvgDefault.default),\n setting: (0, _settingSvgDefault.default),\n pip: (0, _pipSvgDefault.default),\n arrowLeft: (0, _arrowLeftSvgDefault.default),\n arrowRight: (0, _arrowRightSvgDefault.default),\n playbackRate: (0, _playbackRateSvgDefault.default),\n aspectRatio: (0, _aspectRatioSvgDefault.default),\n config: (0, _configSvgDefault.default),\n lock: (0, _lockSvgDefault.default),\n flip: (0, _flipSvgDefault.default),\n unlock: (0, _unlockSvgDefault.default),\n fullscreenOff: (0, _fullscreenOffSvgDefault.default),\n fullscreenOn: (0, _fullscreenOnSvgDefault.default),\n fullscreenWebOff: (0, _fullscreenWebOffSvgDefault.default),\n fullscreenWebOn: (0, _fullscreenWebOnSvgDefault.default),\n switchOn: (0, _switchOnSvgDefault.default),\n switchOff: (0, _switchOffSvgDefault.default),\n error: (0, _errorSvgDefault.default),\n close: (0, _closeSvgDefault.default),\n airplay: (0, _airplaySvgDefault.default),\n ...art.option.icons\n };\n for(const key in icons)(0, _utils.def)(this, key, {\n get: ()=>(0, _utils.getIcon)(key, icons[key])\n });\n }\n}\nexports.default = Icons;\n\n},{\"bundle-text:./airplay.svg\":\"6cSMf\",\"bundle-text:./arrow-left.svg\":\"joLIU\",\"bundle-text:./arrow-right.svg\":\"4JNCR\",\"bundle-text:./aspect-ratio.svg\":\"gzgBo\",\"bundle-text:./check.svg\":\"k53Iw\",\"bundle-text:./close.svg\":\"bbb2e\",\"bundle-text:./config.svg\":\"bMazo\",\"bundle-text:./error.svg\":\"58f4C\",\"bundle-text:./flip.svg\":\"iIgzx\",\"bundle-text:./fullscreen-off.svg\":\"cPRy5\",\"bundle-text:./fullscreen-on.svg\":\"3XKQU\",\"bundle-text:./fullscreen-web-off.svg\":\"guowG\",\"bundle-text:./fullscreen-web-on.svg\":\"iSqKG\",\"bundle-text:./loading.svg\":\"eSbu5\",\"bundle-text:./lock.svg\":\"2D7et\",\"bundle-text:./pause.svg\":\"iiALA\",\"bundle-text:./pip.svg\":\"hdXSq\",\"bundle-text:./play.svg\":\"jlvhb\",\"bundle-text:./playback-rate.svg\":\"4bsv1\",\"bundle-text:./screenshot.svg\":\"7SMEz\",\"bundle-text:./setting.svg\":\"hdzYd\",\"bundle-text:./state.svg\":\"2Aoc0\",\"bundle-text:./switch-off.svg\":\"kDa5R\",\"bundle-text:./switch-on.svg\":\"74Jrq\",\"bundle-text:./unlock.svg\":\"YvH9I\",\"bundle-text:./volume-close.svg\":\"fHhw4\",\"bundle-text:./volume.svg\":\"k9IJR\",\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"6cSMf\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"joLIU\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"4JNCR\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"gzgBo\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"k53Iw\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"bbb2e\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"bMazo\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"58f4C\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"iIgzx\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"cPRy5\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"3XKQU\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"guowG\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"iSqKG\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"eSbu5\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"2D7et\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"iiALA\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"hdXSq\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"jlvhb\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"4bsv1\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"7SMEz\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"hdzYd\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"2Aoc0\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"kDa5R\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"74Jrq\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"YvH9I\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"fHhw4\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"k9IJR\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"cUKxy\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"./utils\");\nvar _component = require(\"./utils/component\");\nvar _componentDefault = parcelHelpers.interopDefault(_component);\nclass Info extends (0, _componentDefault.default) {\n constructor(art){\n super(art);\n this.name = 'info';\n if (!(0, _utils.isMobile)) this.init();\n }\n init() {\n const { proxy, constructor, template: { $infoPanel, $infoClose, $video } } = this.art;\n proxy($infoClose, 'click', ()=>{\n this.show = false;\n });\n let timer = null;\n const $types = (0, _utils.queryAll)('[data-video]', $infoPanel) || [];\n this.art.on('destroy', ()=>clearTimeout(timer));\n function loop() {\n for(let index = 0; index < $types.length; index++){\n const item = $types[index];\n const value = $video[item.dataset.video];\n const textContent = typeof value === 'number' ? value.toFixed(2) : value;\n if (item.textContent !== textContent) item.textContent = textContent;\n }\n timer = setTimeout(loop, constructor.INFO_LOOP_TIME);\n }\n loop();\n }\n}\nexports.default = Info;\n\n},{\"./utils\":\"ga71d\",\"./utils/component\":\"hARFP\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"fIHKi\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _component = require(\"./utils/component\");\nvar _componentDefault = parcelHelpers.interopDefault(_component);\nclass Layer extends (0, _componentDefault.default) {\n constructor(art){\n super(art);\n const { option, template: { $layer } } = art;\n this.name = 'layer';\n this.$parent = $layer;\n for(let index = 0; index < option.layers.length; index++)this.add(option.layers[index]);\n }\n}\nexports.default = Layer;\n\n},{\"./utils/component\":\"hARFP\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"a7tJk\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"./utils\");\nvar _component = require(\"./utils/component\");\nvar _componentDefault = parcelHelpers.interopDefault(_component);\nclass Loading extends (0, _componentDefault.default) {\n constructor(art){\n super(art);\n this.name = 'loading';\n (0, _utils.append)(art.template.$loading, art.icons.loading);\n }\n}\nexports.default = Loading;\n\n},{\"./utils\":\"ga71d\",\"./utils/component\":\"hARFP\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"chOzM\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"./utils\");\nvar _component = require(\"./utils/component\");\nvar _componentDefault = parcelHelpers.interopDefault(_component);\nclass Mask extends (0, _componentDefault.default) {\n constructor(art){\n super(art);\n this.name = 'mask';\n const { template, icons, events } = art;\n const $state = (0, _utils.append)(template.$state, icons.state);\n const $error = (0, _utils.append)(template.$state, icons.error);\n (0, _utils.setStyle)($error, 'display', 'none');\n art.on('destroy', ()=>{\n (0, _utils.setStyle)($state, 'display', 'none');\n (0, _utils.setStyle)($error, 'display', null);\n });\n events.proxy(template.$state, 'click', ()=>art.play());\n }\n}\nexports.default = Mask;\n\n},{\"./utils\":\"ga71d\",\"./utils/component\":\"hARFP\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"qalnP\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"./utils\");\nclass Notice {\n constructor(art){\n this.art = art;\n this.timer = null;\n }\n set show(msg) {\n const { constructor, template: { $player, $noticeInner } } = this.art;\n if (msg) {\n $noticeInner.textContent = msg instanceof Error ? msg.message.trim() : msg;\n (0, _utils.addClass)($player, 'art-notice-show');\n clearTimeout(this.timer);\n this.timer = setTimeout(()=>{\n $noticeInner.textContent = '';\n (0, _utils.removeClass)($player, 'art-notice-show');\n }, constructor.NOTICE_TIME);\n } else (0, _utils.removeClass)($player, 'art-notice-show');\n }\n get show() {\n const { template: { $player } } = this.art;\n return $player.classList.contains('art-notice-show');\n }\n}\nexports.default = Notice;\n\n},{\"./utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"hZaaw\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _airplayMix = require(\"./airplayMix\");\nvar _airplayMixDefault = parcelHelpers.interopDefault(_airplayMix);\nvar _aspectRatioMix = require(\"./aspectRatioMix\");\nvar _aspectRatioMixDefault = parcelHelpers.interopDefault(_aspectRatioMix);\nvar _attrMix = require(\"./attrMix\");\nvar _attrMixDefault = parcelHelpers.interopDefault(_attrMix);\nvar _autoHeightMix = require(\"./autoHeightMix\");\nvar _autoHeightMixDefault = parcelHelpers.interopDefault(_autoHeightMix);\nvar _autoSizeMix = require(\"./autoSizeMix\");\nvar _autoSizeMixDefault = parcelHelpers.interopDefault(_autoSizeMix);\nvar _cssVarMix = require(\"./cssVarMix\");\nvar _cssVarMixDefault = parcelHelpers.interopDefault(_cssVarMix);\nvar _currentTimeMix = require(\"./currentTimeMix\");\nvar _currentTimeMixDefault = parcelHelpers.interopDefault(_currentTimeMix);\nvar _durationMix = require(\"./durationMix\");\nvar _durationMixDefault = parcelHelpers.interopDefault(_durationMix);\nvar _eventInit = require(\"./eventInit\");\nvar _eventInitDefault = parcelHelpers.interopDefault(_eventInit);\nvar _flipMix = require(\"./flipMix\");\nvar _flipMixDefault = parcelHelpers.interopDefault(_flipMix);\nvar _fullscreenMix = require(\"./fullscreenMix\");\nvar _fullscreenMixDefault = parcelHelpers.interopDefault(_fullscreenMix);\nvar _fullscreenWebMix = require(\"./fullscreenWebMix\");\nvar _fullscreenWebMixDefault = parcelHelpers.interopDefault(_fullscreenWebMix);\nvar _loadedMix = require(\"./loadedMix\");\nvar _loadedMixDefault = parcelHelpers.interopDefault(_loadedMix);\nvar _miniMix = require(\"./miniMix\");\nvar _miniMixDefault = parcelHelpers.interopDefault(_miniMix);\nvar _optionInit = require(\"./optionInit\");\nvar _optionInitDefault = parcelHelpers.interopDefault(_optionInit);\nvar _pauseMix = require(\"./pauseMix\");\nvar _pauseMixDefault = parcelHelpers.interopDefault(_pauseMix);\nvar _pipMix = require(\"./pipMix\");\nvar _pipMixDefault = parcelHelpers.interopDefault(_pipMix);\nvar _playbackRateMix = require(\"./playbackRateMix\");\nvar _playbackRateMixDefault = parcelHelpers.interopDefault(_playbackRateMix);\nvar _playedMix = require(\"./playedMix\");\nvar _playedMixDefault = parcelHelpers.interopDefault(_playedMix);\nvar _playingMix = require(\"./playingMix\");\nvar _playingMixDefault = parcelHelpers.interopDefault(_playingMix);\nvar _playMix = require(\"./playMix\");\nvar _playMixDefault = parcelHelpers.interopDefault(_playMix);\nvar _posterMix = require(\"./posterMix\");\nvar _posterMixDefault = parcelHelpers.interopDefault(_posterMix);\nvar _qualityMix = require(\"./qualityMix\");\nvar _qualityMixDefault = parcelHelpers.interopDefault(_qualityMix);\nvar _rectMix = require(\"./rectMix\");\nvar _rectMixDefault = parcelHelpers.interopDefault(_rectMix);\nvar _screenshotMix = require(\"./screenshotMix\");\nvar _screenshotMixDefault = parcelHelpers.interopDefault(_screenshotMix);\nvar _seekMix = require(\"./seekMix\");\nvar _seekMixDefault = parcelHelpers.interopDefault(_seekMix);\nvar _stateMix = require(\"./stateMix\");\nvar _stateMixDefault = parcelHelpers.interopDefault(_stateMix);\nvar _subtitleOffsetMix = require(\"./subtitleOffsetMix\");\nvar _subtitleOffsetMixDefault = parcelHelpers.interopDefault(_subtitleOffsetMix);\nvar _switchMix = require(\"./switchMix\");\nvar _switchMixDefault = parcelHelpers.interopDefault(_switchMix);\nvar _themeMix = require(\"./themeMix\");\nvar _themeMixDefault = parcelHelpers.interopDefault(_themeMix);\nvar _thumbnailsMix = require(\"./thumbnailsMix\");\nvar _thumbnailsMixDefault = parcelHelpers.interopDefault(_thumbnailsMix);\nvar _toggleMix = require(\"./toggleMix\");\nvar _toggleMixDefault = parcelHelpers.interopDefault(_toggleMix);\nvar _typeMix = require(\"./typeMix\");\nvar _typeMixDefault = parcelHelpers.interopDefault(_typeMix);\nvar _urlMix = require(\"./urlMix\");\nvar _urlMixDefault = parcelHelpers.interopDefault(_urlMix);\nvar _volumeMix = require(\"./volumeMix\");\nvar _volumeMixDefault = parcelHelpers.interopDefault(_volumeMix);\nclass Player {\n constructor(art){\n (0, _urlMixDefault.default)(art);\n (0, _attrMixDefault.default)(art);\n (0, _playMixDefault.default)(art);\n (0, _pauseMixDefault.default)(art);\n (0, _toggleMixDefault.default)(art);\n (0, _seekMixDefault.default)(art);\n (0, _volumeMixDefault.default)(art);\n (0, _currentTimeMixDefault.default)(art);\n (0, _durationMixDefault.default)(art);\n (0, _switchMixDefault.default)(art);\n (0, _playbackRateMixDefault.default)(art);\n (0, _aspectRatioMixDefault.default)(art);\n (0, _screenshotMixDefault.default)(art);\n (0, _fullscreenMixDefault.default)(art);\n (0, _fullscreenWebMixDefault.default)(art);\n (0, _pipMixDefault.default)(art);\n (0, _loadedMixDefault.default)(art);\n (0, _playedMixDefault.default)(art);\n (0, _playingMixDefault.default)(art);\n (0, _autoSizeMixDefault.default)(art);\n (0, _rectMixDefault.default)(art);\n (0, _flipMixDefault.default)(art);\n (0, _miniMixDefault.default)(art);\n (0, _posterMixDefault.default)(art);\n (0, _autoHeightMixDefault.default)(art);\n (0, _cssVarMixDefault.default)(art);\n (0, _themeMixDefault.default)(art);\n (0, _typeMixDefault.default)(art);\n (0, _stateMixDefault.default)(art);\n (0, _subtitleOffsetMixDefault.default)(art);\n (0, _airplayMixDefault.default)(art);\n (0, _qualityMixDefault.default)(art);\n (0, _thumbnailsMixDefault.default)(art);\n (0, _eventInitDefault.default)(art);\n (0, _optionInitDefault.default)(art);\n }\n}\nexports.default = Player;\n\n},{\"./airplayMix\":\"3IeSh\",\"./aspectRatioMix\":\"bFvhq\",\"./attrMix\":\"gAL4f\",\"./autoHeightMix\":\"3icDv\",\"./autoSizeMix\":\"1S8RZ\",\"./cssVarMix\":\"OAYvI\",\"./currentTimeMix\":\"8HvEc\",\"./durationMix\":\"9MX8B\",\"./eventInit\":\"8tgU8\",\"./flipMix\":\"b5r8r\",\"./fullscreenMix\":\"30dhw\",\"./fullscreenWebMix\":\"3yxCW\",\"./loadedMix\":\"fZNfw\",\"./miniMix\":\"1IZ8F\",\"./optionInit\":\"kk3GB\",\"./pauseMix\":\"hCnBa\",\"./pipMix\":\"7cdWF\",\"./playbackRateMix\":\"v7Tjj\",\"./playedMix\":\"6NJ76\",\"./playingMix\":\"hS5cB\",\"./playMix\":\"RTHaZ\",\"./posterMix\":\"iQk0e\",\"./qualityMix\":\"fbmk7\",\"./rectMix\":\"clzGw\",\"./screenshotMix\":\"egOBC\",\"./seekMix\":\"aGOdO\",\"./stateMix\":\"f5ksL\",\"./subtitleOffsetMix\":\"eVqE5\",\"./switchMix\":\"hXXTl\",\"./themeMix\":\"9kb19\",\"./thumbnailsMix\":\"cICxL\",\"./toggleMix\":\"ifRrM\",\"./typeMix\":\"kUOhk\",\"./urlMix\":\"7uCXi\",\"./volumeMix\":\"dzR4V\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"3IeSh\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>airplayMix);\nvar _utils = require(\"../utils\");\nfunction airplayMix(art) {\n const { i18n, notice, proxy, template: { $video } } = art;\n let available = true;\n if (window.WebKitPlaybackTargetAvailabilityEvent && $video.webkitShowPlaybackTargetPicker) proxy($video, 'webkitplaybacktargetavailabilitychanged', (event)=>{\n switch(event.availability){\n case 'available':\n available = true;\n break;\n case 'not-available':\n available = false;\n break;\n }\n });\n else available = false;\n (0, _utils.def)(art, 'airplay', {\n value () {\n if (available) {\n $video.webkitShowPlaybackTargetPicker();\n art.emit('airplay');\n } else notice.show = i18n.get('AirPlay Not Available');\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"bFvhq\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>aspectRatioMix);\nvar _utils = require(\"../utils\");\nfunction aspectRatioMix(art) {\n const { i18n, notice, template: { $video, $player } } = art;\n (0, _utils.def)(art, 'aspectRatio', {\n get () {\n return $player.dataset.aspectRatio || 'default';\n },\n set (ratio) {\n if (!ratio) ratio = 'default';\n if (ratio === 'default') {\n (0, _utils.setStyle)($video, 'width', null);\n (0, _utils.setStyle)($video, 'height', null);\n (0, _utils.setStyle)($video, 'margin', null);\n delete $player.dataset.aspectRatio;\n } else {\n const ratioArray = ratio.split(':').map(Number);\n const { clientWidth, clientHeight } = $player;\n const playerRatio = clientWidth / clientHeight;\n const setupRatio = ratioArray[0] / ratioArray[1];\n if (playerRatio > setupRatio) {\n (0, _utils.setStyle)($video, 'width', `${setupRatio * clientHeight}px`);\n (0, _utils.setStyle)($video, 'height', '100%');\n (0, _utils.setStyle)($video, 'margin', '0 auto');\n } else {\n (0, _utils.setStyle)($video, 'width', '100%');\n (0, _utils.setStyle)($video, 'height', `${clientWidth / setupRatio}px`);\n (0, _utils.setStyle)($video, 'margin', 'auto 0');\n }\n $player.dataset.aspectRatio = ratio;\n }\n notice.show = `${i18n.get('Aspect Ratio')}: ${ratio === 'default' ? i18n.get('Default') : ratio}`;\n art.emit('aspectRatio', ratio);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"gAL4f\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>attrMix);\nvar _utils = require(\"../utils\");\nfunction attrMix(art) {\n const { template: { $video } } = art;\n (0, _utils.def)(art, 'attr', {\n value (key, value) {\n if (value === undefined) return $video[key];\n $video[key] = value;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"3icDv\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>autoHeightMix);\nvar _utils = require(\"../utils\");\nfunction autoHeightMix(art) {\n const { template: { $container, $video } } = art;\n (0, _utils.def)(art, 'autoHeight', {\n value () {\n const { clientWidth } = $container;\n const { videoHeight, videoWidth } = $video;\n const height = videoHeight * (clientWidth / videoWidth);\n (0, _utils.setStyle)($container, 'height', `${height}px`);\n art.emit('autoHeight', height);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"1S8RZ\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>autoSizeMix);\nvar _utils = require(\"../utils\");\nfunction autoSizeMix(art) {\n const { $container, $player, $video } = art.template;\n (0, _utils.def)(art, 'autoSize', {\n value () {\n const { videoWidth, videoHeight } = $video;\n const { width, height } = (0, _utils.getRect)($container);\n const videoRatio = videoWidth / videoHeight;\n const containerRatio = width / height;\n if (containerRatio > videoRatio) {\n const percentage = height * videoRatio / width * 100;\n (0, _utils.setStyle)($player, 'width', `${percentage}%`);\n (0, _utils.setStyle)($player, 'height', '100%');\n } else {\n const percentage = width / videoRatio / height * 100;\n (0, _utils.setStyle)($player, 'width', '100%');\n (0, _utils.setStyle)($player, 'height', `${percentage}%`);\n }\n art.emit('autoSize', {\n width: art.width,\n height: art.height\n });\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"OAYvI\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>cssVarMix);\nvar _utils = require(\"../utils\");\nfunction cssVarMix(art) {\n const { $player } = art.template;\n (0, _utils.def)(art, 'cssVar', {\n value (key, value) {\n if (value) return $player.style.setProperty(key, value);\n else return getComputedStyle($player).getPropertyValue(key);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"8HvEc\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>currentTimeMix);\nvar _utils = require(\"../utils\");\nfunction currentTimeMix(art) {\n const { $video } = art.template;\n (0, _utils.def)(art, 'currentTime', {\n get: ()=>$video.currentTime || 0,\n set: (time)=>{\n time = Number.parseFloat(time);\n if (Number.isNaN(time)) return;\n $video.currentTime = (0, _utils.clamp)(time, 0, art.duration);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"9MX8B\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>durationMix);\nvar _utils = require(\"../utils\");\nfunction durationMix(art) {\n (0, _utils.def)(art, 'duration', {\n get: ()=>{\n const { duration } = art.template.$video;\n if (duration === Infinity) return 0;\n return duration || 0;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"8tgU8\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>eventInit);\nvar _config = require(\"../config\");\nvar _configDefault = parcelHelpers.interopDefault(_config);\nvar _utils = require(\"../utils\");\nfunction eventInit(art) {\n const { i18n, notice, option, constructor, proxy, template: { $player, $video, $poster } } = art;\n let reconnectTime = 0;\n for(let index = 0; index < (0, _configDefault.default).events.length; index++)proxy($video, (0, _configDefault.default).events[index], (event)=>{\n art.emit(`video:${event.type}`, event);\n });\n // art.on('video:abort', () => {\n // });\n art.on('video:canplay', ()=>{\n reconnectTime = 0;\n art.loading.show = false;\n });\n art.once('video:canplay', ()=>{\n art.loading.show = false;\n art.controls.show = true;\n art.mask.show = true;\n art.isReady = true;\n art.emit('ready');\n });\n // art.on('video:canplaythrough', () => {\n // });\n // art.on('video:durationchange', () => {\n // });\n // art.on('video:emptied', () => {\n // });\n art.on('video:ended', ()=>{\n if (option.loop) {\n art.seek = 0;\n art.play();\n art.controls.show = false;\n art.mask.show = false;\n } else {\n art.controls.show = true;\n art.mask.show = true;\n }\n });\n art.on('video:error', async (error)=>{\n if (reconnectTime < constructor.RECONNECT_TIME_MAX) {\n await (0, _utils.sleep)(constructor.RECONNECT_SLEEP_TIME);\n reconnectTime += 1;\n art.url = option.url;\n notice.show = `${i18n.get('Reconnect')}: ${reconnectTime}`;\n art.emit('error', error, reconnectTime);\n } else {\n art.mask.show = true;\n art.loading.show = false;\n art.controls.show = true;\n (0, _utils.addClass)($player, 'art-error');\n await (0, _utils.sleep)(constructor.RECONNECT_SLEEP_TIME);\n notice.show = i18n.get('Video Load Failed');\n }\n });\n // art.on('video:loadeddata', () => {\n // });\n art.on('video:loadedmetadata', ()=>{\n art.emit('resize');\n if (0, _utils.isMobile) {\n art.loading.show = false;\n art.controls.show = true;\n art.mask.show = true;\n }\n });\n art.on('video:loadstart', ()=>{\n art.loading.show = true;\n art.mask.show = false;\n art.controls.show = true;\n });\n art.on('video:pause', ()=>{\n art.controls.show = true;\n art.mask.show = true;\n });\n art.on('video:play', ()=>{\n art.mask.show = false;\n (0, _utils.setStyle)($poster, 'display', 'none');\n });\n art.on('video:playing', ()=>{\n art.mask.show = false;\n });\n art.on('video:progress', ()=>{\n if (art.playing) art.loading.show = false;\n });\n // art.on('video:ratechange', () => {\n // });\n art.on('video:seeked', ()=>{\n art.loading.show = false;\n art.mask.show = true;\n });\n art.on('video:seeking', ()=>{\n art.loading.show = true;\n art.mask.show = false;\n });\n // art.on('video:stalled', () => {\n // });\n // art.on('video:suspend', () => {\n // });\n art.on('video:timeupdate', ()=>{\n art.mask.show = false;\n });\n // art.on('video:volumechange', () => {\n // });\n art.on('video:waiting', ()=>{\n art.loading.show = true;\n art.mask.show = false;\n });\n}\n\n},{\"../config\":\"7jhZp\",\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"b5r8r\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>flipMix);\nvar _utils = require(\"../utils\");\nfunction flipMix(art) {\n const { template: { $player }, i18n, notice } = art;\n (0, _utils.def)(art, 'flip', {\n get () {\n return $player.dataset.flip || 'normal';\n },\n set (flip) {\n if (!flip) flip = 'normal';\n if (flip === 'normal') delete $player.dataset.flip;\n else $player.dataset.flip = flip;\n notice.show = `${i18n.get('Video Flip')}: ${i18n.get((0, _utils.capitalize)(flip))}`;\n art.emit('flip', flip);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"30dhw\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>fullscreenMix);\nvar _screenfull = require(\"../libs/screenfull\");\nvar _screenfullDefault = parcelHelpers.interopDefault(_screenfull);\nvar _utils = require(\"../utils\");\nfunction fullscreenMix(art) {\n const { i18n, notice, template: { $video, $player } } = art;\n const nativeScreenfull = (art)=>{\n (0, _screenfullDefault.default).on('change', ()=>{\n art.emit('fullscreen', (0, _screenfullDefault.default).isFullscreen);\n if ((0, _screenfullDefault.default).isFullscreen) {\n art.state = 'fullscreen';\n (0, _utils.addClass)($player, 'art-fullscreen');\n } else (0, _utils.removeClass)($player, 'art-fullscreen');\n art.emit('resize');\n });\n (0, _screenfullDefault.default).on('error', (event)=>{\n art.emit('fullscreenError', event);\n });\n (0, _utils.def)(art, 'fullscreen', {\n get () {\n return (0, _screenfullDefault.default).isFullscreen;\n },\n async set (value) {\n if (value) await (0, _screenfullDefault.default).request($player);\n else await (0, _screenfullDefault.default).exit();\n }\n });\n };\n const webkitScreenfull = (art)=>{\n art.on('document:webkitfullscreenchange', ()=>{\n art.emit('fullscreen', art.fullscreen);\n art.emit('resize');\n });\n (0, _utils.def)(art, 'fullscreen', {\n get () {\n return document.fullscreenElement === $video;\n },\n set (value) {\n if (value) {\n art.state = 'fullscreen';\n $video.webkitEnterFullscreen();\n } else $video.webkitExitFullscreen();\n }\n });\n };\n art.once('video:loadedmetadata', ()=>{\n if ((0, _screenfullDefault.default).isEnabled) nativeScreenfull(art);\n else if ($video.webkitSupportsFullscreen) webkitScreenfull(art);\n else (0, _utils.def)(art, 'fullscreen', {\n get () {\n return false;\n },\n set () {\n notice.show = i18n.get('Fullscreen Not Supported');\n }\n });\n // Asynchronous setting\n (0, _utils.def)(art, 'fullscreen', (0, _utils.get)(art, 'fullscreen'));\n });\n}\n\n},{\"../libs/screenfull\":\"8DIfy\",\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"8DIfy\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nconst methodMap = [\n [\n 'requestFullscreen',\n 'exitFullscreen',\n 'fullscreenElement',\n 'fullscreenEnabled',\n 'fullscreenchange',\n 'fullscreenerror'\n ],\n // New WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Old WebKit\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n [\n 'mozRequestFullScreen',\n 'mozCancelFullScreen',\n 'mozFullScreenElement',\n 'mozFullScreenEnabled',\n 'mozfullscreenchange',\n 'mozfullscreenerror'\n ],\n [\n 'msRequestFullscreen',\n 'msExitFullscreen',\n 'msFullscreenElement',\n 'msFullscreenEnabled',\n 'MSFullscreenChange',\n 'MSFullscreenError'\n ]\n];\nconst nativeAPI = (()=>{\n if (typeof document === 'undefined') return false;\n const unprefixedMethods = methodMap[0];\n const returnValue = {};\n for (const methodList of methodMap){\n const exitFullscreenMethod = methodList[1];\n if (exitFullscreenMethod in document) {\n for (const [index, method] of methodList.entries())returnValue[unprefixedMethods[index]] = method;\n return returnValue;\n }\n }\n return false;\n})();\nconst eventNameMap = {\n change: nativeAPI.fullscreenchange,\n error: nativeAPI.fullscreenerror\n};\nconst screenfull = {\n request (element = document.documentElement, options) {\n return new Promise((resolve, reject)=>{\n const onFullScreenEntered = ()=>{\n screenfull.off('change', onFullScreenEntered);\n resolve();\n };\n screenfull.on('change', onFullScreenEntered);\n const returnPromise = element[nativeAPI.requestFullscreen](options);\n if (returnPromise instanceof Promise) returnPromise.then(onFullScreenEntered).catch(reject);\n });\n },\n exit () {\n return new Promise((resolve, reject)=>{\n if (!screenfull.isFullscreen) {\n resolve();\n return;\n }\n const onFullScreenExit = ()=>{\n screenfull.off('change', onFullScreenExit);\n resolve();\n };\n screenfull.on('change', onFullScreenExit);\n const returnPromise = document[nativeAPI.exitFullscreen]();\n if (returnPromise instanceof Promise) returnPromise.then(onFullScreenExit).catch(reject);\n });\n },\n toggle (element, options) {\n return screenfull.isFullscreen ? screenfull.exit() : screenfull.request(element, options);\n },\n onchange (callback) {\n screenfull.on('change', callback);\n },\n onerror (callback) {\n screenfull.on('error', callback);\n },\n on (event, callback) {\n const eventName = eventNameMap[event];\n if (eventName) document.addEventListener(eventName, callback, false);\n },\n off (event, callback) {\n const eventName = eventNameMap[event];\n if (eventName) document.removeEventListener(eventName, callback, false);\n },\n raw: nativeAPI\n};\nObject.defineProperties(screenfull, {\n isFullscreen: {\n get: ()=>Boolean(document[nativeAPI.fullscreenElement])\n },\n element: {\n enumerable: true,\n get: ()=>document[nativeAPI.fullscreenElement]\n },\n isEnabled: {\n enumerable: true,\n get: ()=>Boolean(document[nativeAPI.fullscreenEnabled])\n }\n});\nif (!nativeAPI) screenfull.isEnabled = false;\nexports.default = screenfull;\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"3yxCW\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>fullscreenWebMix);\nvar _utils = require(\"../utils\");\nfunction fullscreenWebMix(art) {\n const { constructor, template: { $container, $player } } = art;\n let cssText = '';\n (0, _utils.def)(art, 'fullscreenWeb', {\n get () {\n return (0, _utils.hasClass)($player, 'art-fullscreen-web');\n },\n set (value) {\n if (value) {\n cssText = $player.style.cssText;\n if (constructor.FULLSCREEN_WEB_IN_BODY) (0, _utils.append)(document.body, $player);\n art.state = 'fullscreenWeb';\n (0, _utils.setStyle)($player, 'width', '100%');\n (0, _utils.setStyle)($player, 'height', '100%');\n (0, _utils.addClass)($player, 'art-fullscreen-web');\n art.emit('fullscreenWeb', true);\n } else {\n if (constructor.FULLSCREEN_WEB_IN_BODY) (0, _utils.append)($container, $player);\n if (cssText) {\n $player.style.cssText = cssText;\n cssText = '';\n }\n (0, _utils.removeClass)($player, 'art-fullscreen-web');\n art.emit('fullscreenWeb', false);\n }\n art.emit('resize');\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"fZNfw\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>loadedMix);\nvar _utils = require(\"../utils\");\nfunction loadedMix(art) {\n const { $video } = art.template;\n (0, _utils.def)(art, 'loaded', {\n get: ()=>art.loadedTime / $video.duration\n });\n (0, _utils.def)(art, 'loadedTime', {\n get: ()=>{\n return $video.buffered.length ? $video.buffered.end($video.buffered.length - 1) : 0;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"1IZ8F\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>miniMix);\nvar _utils = require(\"../utils\");\nfunction miniMix(art) {\n const { icons, proxy, storage, template: { $player, $video } } = art;\n let isDragging = false;\n let lastPageX = 0;\n let lastPageY = 0;\n function hideMini() {\n const { $mini } = art.template;\n if ($mini) {\n (0, _utils.removeClass)($player, 'art-mini');\n (0, _utils.setStyle)($mini, 'display', 'none');\n $player.prepend($video);\n art.emit('mini', false);\n }\n }\n function initState($play, $pause) {\n if (art.playing) {\n (0, _utils.setStyle)($play, 'display', `none`);\n (0, _utils.setStyle)($pause, 'display', `flex`);\n } else {\n (0, _utils.setStyle)($play, 'display', `flex`);\n (0, _utils.setStyle)($pause, 'display', `none`);\n }\n }\n function createMini() {\n const { $mini } = art.template;\n if ($mini) {\n (0, _utils.append)($mini, $video);\n return (0, _utils.setStyle)($mini, 'display', 'flex');\n } else {\n const $mini = (0, _utils.createElement)('div');\n (0, _utils.addClass)($mini, 'art-mini-popup');\n (0, _utils.append)(document.body, $mini);\n art.template.$mini = $mini;\n (0, _utils.append)($mini, $video);\n const $close = (0, _utils.append)($mini, `
`);\n (0, _utils.append)($close, icons.close);\n proxy($close, 'click', hideMini);\n const $state = (0, _utils.append)($mini, `
`);\n const $play = (0, _utils.append)($state, icons.play);\n const $pause = (0, _utils.append)($state, icons.pause);\n proxy($play, 'click', ()=>art.play());\n proxy($pause, 'click', ()=>art.pause());\n initState($play, $pause);\n art.on('video:playing', ()=>initState($play, $pause));\n art.on('video:pause', ()=>initState($play, $pause));\n art.on('video:timeupdate', ()=>initState($play, $pause));\n proxy($mini, 'mousedown', (event)=>{\n isDragging = event.button === 0;\n lastPageX = event.pageX;\n lastPageY = event.pageY;\n });\n art.on('document:mousemove', (event)=>{\n if (isDragging) {\n (0, _utils.addClass)($mini, 'art-mini-dragging');\n const x = event.pageX - lastPageX;\n const y = event.pageY - lastPageY;\n (0, _utils.setStyle)($mini, 'transform', `translate(${x}px, ${y}px)`);\n }\n });\n art.on('document:mouseup', ()=>{\n if (isDragging) {\n isDragging = false;\n (0, _utils.removeClass)($mini, 'art-mini-dragging');\n const rect = (0, _utils.getRect)($mini);\n storage.set('left', rect.left);\n storage.set('top', rect.top);\n (0, _utils.setStyle)($mini, 'left', `${rect.left}px`);\n (0, _utils.setStyle)($mini, 'top', `${rect.top}px`);\n (0, _utils.setStyle)($mini, 'transform', null);\n }\n });\n return $mini;\n }\n }\n function initMini() {\n const { $mini } = art.template;\n const rect = (0, _utils.getRect)($mini);\n const top = window.innerHeight - rect.height - 50;\n const left = window.innerWidth - rect.width - 50;\n storage.set('top', top);\n storage.set('left', left);\n (0, _utils.setStyle)($mini, 'top', `${top}px`);\n (0, _utils.setStyle)($mini, 'left', `${left}px`);\n }\n (0, _utils.def)(art, 'mini', {\n get () {\n return (0, _utils.hasClass)($player, 'art-mini');\n },\n set (value) {\n if (value) {\n art.state = 'mini';\n (0, _utils.addClass)($player, 'art-mini');\n const $mini = createMini();\n const top = storage.get('top');\n const left = storage.get('left');\n if (typeof top === 'number' && typeof left === 'number') {\n (0, _utils.setStyle)($mini, 'top', `${top}px`);\n (0, _utils.setStyle)($mini, 'left', `${left}px`);\n if (!(0, _utils.isInViewport)($mini)) initMini();\n } else initMini();\n art.emit('mini', true);\n } else hideMini();\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"kk3GB\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>optionInit);\nvar _utils = require(\"../utils\");\nfunction optionInit(art) {\n const { option, storage, template: { $video, $poster } } = art;\n for(const key in option.moreVideoAttr)art.attr(key, option.moreVideoAttr[key]);\n if (option.muted) art.muted = option.muted;\n if (option.volume) $video.volume = (0, _utils.clamp)(option.volume, 0, 1);\n const volumeStorage = storage.get('volume');\n if (typeof volumeStorage === 'number') $video.volume = (0, _utils.clamp)(volumeStorage, 0, 1);\n if (option.poster) (0, _utils.setStyle)($poster, 'backgroundImage', `url(${option.poster})`);\n if (option.autoplay) $video.autoplay = option.autoplay;\n if (option.playsInline) {\n $video.playsInline = true;\n $video['webkit-playsinline'] = true;\n }\n if (option.theme) option.cssVar['--art-theme'] = option.theme;\n for(const key in option.cssVar)art.cssVar(key, option.cssVar[key]);\n art.url = option.url;\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"hCnBa\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>pauseMix);\nvar _utils = require(\"../utils\");\nfunction pauseMix(art) {\n const { template: { $video }, i18n, notice } = art;\n (0, _utils.def)(art, 'pause', {\n value () {\n const result = $video.pause();\n notice.show = i18n.get('Pause');\n art.emit('pause');\n return result;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"7cdWF\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>pipMix);\nvar _utils = require(\"../utils\");\nfunction nativePip(art) {\n const { template: { $video }, proxy, notice } = art;\n $video.disablePictureInPicture = false;\n (0, _utils.def)(art, 'pip', {\n get () {\n return document.pictureInPictureElement;\n },\n set (value) {\n if (value) {\n art.state = 'pip';\n $video.requestPictureInPicture().catch((err)=>{\n notice.show = err;\n throw err;\n });\n } else document.exitPictureInPicture().catch((err)=>{\n notice.show = err;\n throw err;\n });\n }\n });\n proxy($video, 'enterpictureinpicture', ()=>{\n art.emit('pip', true);\n });\n proxy($video, 'leavepictureinpicture', ()=>{\n art.emit('pip', false);\n });\n}\nfunction webkitPip(art) {\n const { $video } = art.template;\n $video.webkitSetPresentationMode('inline');\n (0, _utils.def)(art, 'pip', {\n get () {\n return $video.webkitPresentationMode === 'picture-in-picture';\n },\n set (value) {\n if (value) {\n art.state = 'pip';\n $video.webkitSetPresentationMode('picture-in-picture');\n art.emit('pip', true);\n } else {\n $video.webkitSetPresentationMode('inline');\n art.emit('pip', false);\n }\n }\n });\n}\nfunction pipMix(art) {\n const { i18n, notice, template: { $video } } = art;\n if (document.pictureInPictureEnabled) nativePip(art);\n else if ($video.webkitSupportsPresentationMode) webkitPip(art);\n else (0, _utils.def)(art, 'pip', {\n get () {\n return false;\n },\n set () {\n notice.show = i18n.get('PIP Not Supported');\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"v7Tjj\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>playbackRateMix);\nvar _utils = require(\"../utils\");\nfunction playbackRateMix(art) {\n const { template: { $video }, i18n, notice } = art;\n (0, _utils.def)(art, 'playbackRate', {\n get () {\n return $video.playbackRate;\n },\n set (rate) {\n if (rate) {\n if (rate === $video.playbackRate) return;\n $video.playbackRate = rate;\n notice.show = `${i18n.get('Rate')}: ${rate === 1.0 ? i18n.get('Normal') : `${rate}x`}`;\n } else art.playbackRate = 1;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"6NJ76\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>playedMix);\nvar _utils = require(\"../utils\");\nfunction playedMix(art) {\n (0, _utils.def)(art, 'played', {\n get: ()=>art.currentTime / art.duration\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"hS5cB\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>playingMix);\nvar _utils = require(\"../utils\");\nfunction playingMix(art) {\n const { $video } = art.template;\n (0, _utils.def)(art, 'playing', {\n get: ()=>{\n if (typeof $video.playing === 'boolean') return $video.playing;\n return !!($video.currentTime > 0 && !$video.paused && !$video.ended && $video.readyState > 2);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"RTHaZ\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>playMix);\nvar _utils = require(\"../utils\");\nfunction playMix(art) {\n const { i18n, notice, option, constructor: { instances }, template: { $video } } = art;\n (0, _utils.def)(art, 'play', {\n async value () {\n const result = await $video.play();\n notice.show = i18n.get('Play');\n art.emit('play');\n if (option.mutex) for(let index = 0; index < instances.length; index++){\n const instance = instances[index];\n if (instance !== art) instance.pause();\n }\n return result;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"iQk0e\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>posterMix);\nvar _utils = require(\"../utils\");\nfunction posterMix(art) {\n const { template: { $poster } } = art;\n (0, _utils.def)(art, 'poster', {\n get: ()=>{\n try {\n return $poster.style.backgroundImage.match(/\"(.*)\"/)[1];\n } catch {\n return '';\n }\n },\n set (url) {\n (0, _utils.setStyle)($poster, 'backgroundImage', `url(${url})`);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"fbmk7\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>qualityMix);\nvar _utils = require(\"../utils\");\nfunction qualityMix(art) {\n (0, _utils.def)(art, 'quality', {\n set (quality) {\n const { controls, notice, i18n } = art;\n const qualityDefault = quality.find((item)=>item.default) || quality[0];\n controls.update({\n name: 'quality',\n position: 'right',\n index: 10,\n style: {\n marginRight: '10px'\n },\n html: qualityDefault?.html || '',\n selector: quality,\n async onSelect (item) {\n await art.switchQuality(item.url);\n notice.show = `${i18n.get('Switch Video')}: ${item.html}`;\n return item.html;\n }\n });\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"clzGw\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>rectMix);\nvar _utils = require(\"../utils\");\nfunction rectMix(art) {\n (0, _utils.def)(art, 'rect', {\n get: ()=>{\n return (0, _utils.getRect)(art.template.$player);\n }\n });\n const keys = [\n 'bottom',\n 'height',\n 'left',\n 'right',\n 'top',\n 'width'\n ];\n for(let index = 0; index < keys.length; index++){\n const key = keys[index];\n (0, _utils.def)(art, key, {\n get: ()=>{\n return art.rect[key];\n }\n });\n }\n (0, _utils.def)(art, 'x', {\n get: ()=>{\n return art.left + window.pageXOffset;\n }\n });\n (0, _utils.def)(art, 'y', {\n get: ()=>{\n return art.top + window.pageYOffset;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"egOBC\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>screenshotMix);\nvar _utils = require(\"../utils\");\nfunction screenshotMix(art) {\n const { notice, template: { $video } } = art;\n const $canvas = (0, _utils.createElement)('canvas');\n (0, _utils.def)(art, 'getDataURL', {\n value: ()=>new Promise((resolve, reject)=>{\n try {\n $canvas.width = $video.videoWidth;\n $canvas.height = $video.videoHeight;\n $canvas.getContext('2d').drawImage($video, 0, 0);\n resolve($canvas.toDataURL('image/png'));\n } catch (err) {\n notice.show = err;\n reject(err);\n }\n })\n });\n (0, _utils.def)(art, 'getBlobUrl', {\n value: ()=>new Promise((resolve, reject)=>{\n try {\n $canvas.width = $video.videoWidth;\n $canvas.height = $video.videoHeight;\n $canvas.getContext('2d').drawImage($video, 0, 0);\n $canvas.toBlob((blob)=>{\n resolve(URL.createObjectURL(blob));\n });\n } catch (err) {\n notice.show = err;\n reject(err);\n }\n })\n });\n (0, _utils.def)(art, 'screenshot', {\n value: async (name)=>{\n const dataUri = await art.getDataURL();\n const fileName = name || `artplayer_${(0, _utils.secondToTime)($video.currentTime)}`;\n (0, _utils.download)(dataUri, `${fileName}.png`);\n art.emit('screenshot', dataUri);\n return dataUri;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"aGOdO\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>seekMix);\nvar _utils = require(\"../utils\");\nfunction seekMix(art) {\n const { notice } = art;\n (0, _utils.def)(art, 'seek', {\n set (time) {\n art.currentTime = time;\n if (art.duration) notice.show = `${(0, _utils.secondToTime)(art.currentTime)} / ${(0, _utils.secondToTime)(art.duration)}`;\n art.emit('seek', art.currentTime);\n }\n });\n (0, _utils.def)(art, 'forward', {\n set (time) {\n art.seek = art.currentTime + time;\n }\n });\n (0, _utils.def)(art, 'backward', {\n set (time) {\n art.seek = art.currentTime - time;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"f5ksL\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>stateMix);\nvar _utils = require(\"../utils\");\nfunction stateMix(art) {\n const states = [\n 'mini',\n 'pip',\n 'fullscreen',\n 'fullscreenWeb'\n ];\n (0, _utils.def)(art, 'state', {\n get: ()=>states.find((name)=>art[name]) || 'standard',\n set (name) {\n for(let index = 0; index < states.length; index++){\n const prop = states[index];\n if (prop !== name && art[prop]) art[prop] = false;\n }\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"eVqE5\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>subtitleOffsetMix);\nvar _utils = require(\"../utils\");\nfunction subtitleOffsetMix(art) {\n const { notice, i18n, template } = art;\n (0, _utils.def)(art, 'subtitleOffset', {\n get () {\n return template.$track?.offset || 0;\n },\n set (value) {\n const { cues } = art.subtitle;\n if (!template.$track || cues.length === 0) return;\n const offset = (0, _utils.clamp)(value, -10, 10);\n template.$track.offset = offset;\n for(let index = 0; index < cues.length; index++){\n const cue = cues[index];\n cue.originalStartTime = cue.originalStartTime ?? cue.startTime;\n cue.originalEndTime = cue.originalEndTime ?? cue.endTime;\n cue.startTime = (0, _utils.clamp)(cue.originalStartTime + offset, 0, art.duration);\n cue.endTime = (0, _utils.clamp)(cue.originalEndTime + offset, 0, art.duration);\n }\n art.subtitle.update();\n notice.show = `${i18n.get('Subtitle Offset')}: ${value}s`;\n art.emit('subtitleOffset', value);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"hXXTl\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>switchMix);\nvar _utils = require(\"../utils\");\nfunction switchMix(art) {\n function switchUrl(url, currentTime) {\n return new Promise((resolve, reject)=>{\n if (url === art.url) return;\n const { playing, aspectRatio, playbackRate } = art;\n art.pause();\n art.url = url;\n art.notice.show = '';\n art.once('video:error', reject);\n art.once('video:loadedmetadata', ()=>{\n art.currentTime = currentTime;\n });\n art.once('video:canplay', async ()=>{\n art.playbackRate = playbackRate;\n art.aspectRatio = aspectRatio;\n if (playing) await art.play();\n art.notice.show = '';\n resolve();\n });\n });\n }\n (0, _utils.def)(art, 'switchQuality', {\n value: (url)=>{\n return switchUrl(url, art.currentTime);\n }\n });\n (0, _utils.def)(art, 'switchUrl', {\n value: (url)=>{\n return switchUrl(url, 0);\n }\n });\n (0, _utils.def)(art, 'switch', {\n set: art.switchUrl\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"9kb19\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>themeMix);\nvar _utils = require(\"../utils\");\nfunction themeMix(art) {\n (0, _utils.def)(art, 'theme', {\n get () {\n return art.cssVar('--art-theme');\n },\n set (theme) {\n art.cssVar('--art-theme', theme);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"cICxL\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>thumbnailsMix);\nvar _utils = require(\"../utils\");\nfunction thumbnailsMix(art) {\n const { events, option, template: { $progress, $video } } = art;\n let timer = null;\n let image = null;\n let loading = false;\n let isLoad = false;\n let isHover = false;\n function reset() {\n clearTimeout(timer);\n timer = null;\n image = null;\n loading = false;\n isLoad = false;\n }\n function showThumbnails(posWidth) {\n const $thumbnails = art.controls?.thumbnails;\n if (!$thumbnails) return;\n const { number, column, width, height, scale } = option.thumbnails;\n const width2 = width * scale || image.naturalWidth / column;\n const height2 = height * scale || width2 / ($video.videoWidth / $video.videoHeight);\n const perWidth = $progress.clientWidth / number;\n const perIndex = Math.floor(posWidth / perWidth);\n const yIndex = Math.ceil(perIndex / column) - 1;\n const xIndex = perIndex % column || column - 1;\n (0, _utils.setStyle)($thumbnails, 'backgroundImage', `url(${image.src})`);\n (0, _utils.setStyle)($thumbnails, 'height', `${height2}px`);\n (0, _utils.setStyle)($thumbnails, 'width', `${width2}px`);\n (0, _utils.setStyle)($thumbnails, 'backgroundPosition', `-${xIndex * width2}px -${yIndex * height2}px`);\n if (posWidth <= width2 / 2) (0, _utils.setStyle)($thumbnails, 'left', 0);\n else if (posWidth > $progress.clientWidth - width2 / 2) (0, _utils.setStyle)($thumbnails, 'left', `${$progress.clientWidth - width2}px`);\n else (0, _utils.setStyle)($thumbnails, 'left', `${posWidth - width2 / 2}px`);\n }\n events.hover($progress, ()=>{\n isHover = true;\n }, ()=>{\n isHover = false;\n });\n art.on('setBar', async (type, percentage, event)=>{\n const $thumbnails = art.controls?.thumbnails;\n const { url, scale } = option.thumbnails;\n if (!$thumbnails || !url) return;\n const isMobileDragging = type === 'played' && event && (0, _utils.isMobile);\n if (type === 'hover' || isMobileDragging) {\n if (!loading) {\n loading = true;\n image = await (0, _utils.loadImg)(url, scale);\n isLoad = true;\n }\n if (!isLoad || !isHover) return;\n const width = $progress.clientWidth * percentage;\n (0, _utils.setStyle)($thumbnails, 'display', 'flex');\n if (width > 0 && width < $progress.clientWidth) showThumbnails(width);\n else if (!(0, _utils.isMobile)) (0, _utils.setStyle)($thumbnails, 'display', 'none');\n if (isMobileDragging) {\n clearTimeout(timer);\n timer = setTimeout(()=>{\n (0, _utils.setStyle)($thumbnails, 'display', 'none');\n }, 500);\n }\n }\n });\n (0, _utils.def)(art, 'thumbnails', {\n get () {\n return art.option.thumbnails;\n },\n set (thumbnails) {\n if (thumbnails.url && !art.option.isLive) {\n art.option.thumbnails = thumbnails;\n reset();\n }\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"ifRrM\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>toggleMix);\nvar _utils = require(\"../utils\");\nfunction toggleMix(art) {\n (0, _utils.def)(art, 'toggle', {\n value () {\n if (art.playing) return art.pause();\n else return art.play();\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"kUOhk\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>typeMix);\nvar _utils = require(\"../utils\");\nfunction typeMix(art) {\n (0, _utils.def)(art, 'type', {\n get () {\n return art.option.type;\n },\n set (type) {\n art.option.type = type;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"7uCXi\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>urlMix);\nvar _utils = require(\"../utils\");\nfunction urlMix(art) {\n const { option, template: { $video } } = art;\n (0, _utils.def)(art, 'url', {\n get () {\n return $video.src;\n },\n async set (newUrl) {\n if (newUrl) {\n const oldUrl = art.url;\n const typeName = option.type || (0, _utils.getExt)(newUrl);\n const typeCallback = option.customType[typeName];\n if (typeName && typeCallback) {\n await (0, _utils.sleep)();\n art.loading.show = true;\n typeCallback.call(art, $video, newUrl, art);\n } else {\n URL.revokeObjectURL(oldUrl);\n $video.src = newUrl;\n }\n if (oldUrl !== art.url) {\n art.option.url = newUrl;\n if (art.isReady && oldUrl) art.once('video:canplay', ()=>{\n art.emit('restart', newUrl);\n });\n }\n } else {\n await (0, _utils.sleep)();\n art.loading.show = true;\n }\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"dzR4V\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>volumeMix);\nvar _utils = require(\"../utils\");\nfunction volumeMix(art) {\n const { template: { $video }, i18n, notice, storage } = art;\n (0, _utils.def)(art, 'volume', {\n get: ()=>$video.volume || 0,\n set: (percentage)=>{\n $video.volume = (0, _utils.clamp)(percentage, 0, 1);\n notice.show = `${i18n.get('Volume')}: ${Number.parseInt($video.volume * 100, 10)}`;\n if ($video.volume !== 0) storage.set('volume', $video.volume);\n }\n });\n (0, _utils.def)(art, 'muted', {\n get: ()=>$video.muted,\n set: (muted)=>{\n $video.muted = muted;\n art.emit('muted', muted);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"iKxTB\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"../utils\");\nvar _autoOrientation = require(\"./autoOrientation\");\nvar _autoOrientationDefault = parcelHelpers.interopDefault(_autoOrientation);\nvar _autoPlayback = require(\"./autoPlayback\");\nvar _autoPlaybackDefault = parcelHelpers.interopDefault(_autoPlayback);\nvar _fastForward = require(\"./fastForward\");\nvar _fastForwardDefault = parcelHelpers.interopDefault(_fastForward);\nvar _lock = require(\"./lock\");\nvar _lockDefault = parcelHelpers.interopDefault(_lock);\nvar _miniProgressBar = require(\"./miniProgressBar\");\nvar _miniProgressBarDefault = parcelHelpers.interopDefault(_miniProgressBar);\nclass Plugins {\n constructor(art){\n this.art = art;\n this.id = 0;\n const { option } = art;\n if (option.miniProgressBar && !option.isLive) this.add((0, _miniProgressBarDefault.default));\n if (option.lock && (0, _utils.isMobile)) this.add((0, _lockDefault.default));\n if (option.autoPlayback && !option.isLive) this.add((0, _autoPlaybackDefault.default));\n if (option.autoOrientation && (0, _utils.isMobile)) this.add((0, _autoOrientationDefault.default));\n if (option.fastForward && (0, _utils.isMobile) && !option.isLive) this.add((0, _fastForwardDefault.default));\n for(let index = 0; index < option.plugins.length; index++)this.add(option.plugins[index]);\n }\n add(plugin) {\n this.id += 1;\n const result = plugin.call(this.art, this.art);\n if (result instanceof Promise) return result.then((res)=>this.next(plugin, res));\n else return this.next(plugin, result);\n }\n next(plugin, result) {\n const pluginName = result && result.name || plugin.name || `plugin${this.id}`;\n (0, _utils.errorHandle)(!(0, _utils.has)(this, pluginName), `Cannot add a plugin that already has the same name: ${pluginName}`);\n (0, _utils.def)(this, pluginName, {\n value: result\n });\n return this;\n }\n}\nexports.default = Plugins;\n\n},{\"../utils\":\"ga71d\",\"./autoOrientation\":\"ewFyM\",\"./autoPlayback\":\"lAEG8\",\"./fastForward\":\"2vvbM\",\"./lock\":\"eAX5u\",\"./miniProgressBar\":\"gg16E\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"ewFyM\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>autoOrientation);\nvar _utils = require(\"../utils\");\nfunction autoOrientation(art) {\n const { notice, constructor, template: { $player, $video } } = art;\n const WEB_CLASS = 'art-auto-orientation';\n const FS_CLASS = 'art-auto-orientation-fullscreen';\n let fsLocked = false;\n function applyWebRotate() {\n const viewWidth = document.documentElement.clientWidth;\n const viewHeight = document.documentElement.clientHeight;\n (0, _utils.setStyle)($player, 'width', `${viewHeight}px`);\n (0, _utils.setStyle)($player, 'height', `${viewWidth}px`);\n (0, _utils.setStyle)($player, 'transform-origin', '0 0');\n (0, _utils.setStyle)($player, 'transform', `rotate(90deg) translate(0, -${viewWidth}px)`);\n (0, _utils.addClass)($player, WEB_CLASS);\n art.isRotate = true;\n art.emit('resize');\n }\n function clearWebRotate() {\n (0, _utils.setStyle)($player, 'width', '');\n (0, _utils.setStyle)($player, 'height', '');\n (0, _utils.setStyle)($player, 'transform-origin', '');\n (0, _utils.setStyle)($player, 'transform', '');\n (0, _utils.removeClass)($player, WEB_CLASS);\n art.isRotate = false;\n art.emit('resize');\n }\n function needRotate() {\n const { videoWidth, videoHeight } = $video;\n const vw = document.documentElement.clientWidth;\n const vh = document.documentElement.clientHeight;\n return videoWidth > videoHeight && vw < vh || videoWidth < videoHeight && vw > vh;\n }\n art.on('fullscreenWeb', (state)=>{\n if (state) {\n if (needRotate()) {\n const delay = Number(constructor.AUTO_ORIENTATION_TIME ?? 0);\n setTimeout(()=>{\n if (art.fullscreenWeb && !(0, _utils.hasClass)($player, WEB_CLASS)) applyWebRotate();\n }, delay);\n }\n } else if ((0, _utils.hasClass)($player, WEB_CLASS)) clearWebRotate();\n });\n art.on('fullscreen', async (state)=>{\n const canLock = !!screen?.orientation?.lock;\n if (state) {\n if (canLock && needRotate()) try {\n const last = screen.orientation.type;\n const opposite = last.startsWith('portrait') ? 'landscape' : 'portrait';\n await screen.orientation.lock(opposite);\n fsLocked = true;\n (0, _utils.addClass)($player, FS_CLASS);\n } catch (err) {\n fsLocked = false;\n notice.show = err;\n }\n } else {\n if ((0, _utils.hasClass)($player, FS_CLASS)) (0, _utils.removeClass)($player, FS_CLASS);\n if (canLock && fsLocked) {\n try {\n screen.orientation.unlock();\n } catch {}\n fsLocked = false;\n }\n }\n });\n return {\n name: 'autoOrientation',\n get state () {\n return (0, _utils.hasClass)($player, WEB_CLASS);\n }\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"lAEG8\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>autoPlayback);\nvar _utils = require(\"../utils\");\nfunction autoPlayback(art) {\n const { i18n, icons, storage, constructor, proxy, template: { $poster } } = art;\n const $autoPlayback = art.layers.add({\n name: 'auto-playback',\n html: `\n
\n
\n
\n `\n });\n const $last = (0, _utils.query)('.art-auto-playback-last', $autoPlayback);\n const $jump = (0, _utils.query)('.art-auto-playback-jump', $autoPlayback);\n const $close = (0, _utils.query)('.art-auto-playback-close', $autoPlayback);\n (0, _utils.append)($close, icons.close);\n let timer = null;\n art.on('video:timeupdate', ()=>{\n if (art.playing) {\n const times = storage.get('times') || {};\n const keys = Object.keys(times);\n if (keys.length > constructor.AUTO_PLAYBACK_MAX) delete times[keys[0]];\n times[art.option.id || art.option.url] = art.currentTime;\n storage.set('times', times);\n }\n });\n function init() {\n const times = storage.get('times') || {};\n const currentTime = times[art.option.id || art.option.url];\n clearTimeout(timer);\n (0, _utils.setStyle)($autoPlayback, 'display', 'none');\n if (currentTime && currentTime >= constructor.AUTO_PLAYBACK_MIN) {\n (0, _utils.setStyle)($autoPlayback, 'display', 'flex');\n $last.textContent = `${i18n.get('Last Seen')} ${(0, _utils.secondToTime)(currentTime)}`;\n $jump.textContent = i18n.get('Jump Play');\n proxy($close, 'click', ()=>{\n (0, _utils.setStyle)($autoPlayback, 'display', 'none');\n });\n proxy($jump, 'click', ()=>{\n art.seek = currentTime;\n art.play();\n (0, _utils.setStyle)($poster, 'display', 'none');\n (0, _utils.setStyle)($autoPlayback, 'display', 'none');\n });\n art.once('video:timeupdate', ()=>{\n timer = setTimeout(()=>{\n (0, _utils.setStyle)($autoPlayback, 'display', 'none');\n }, constructor.AUTO_PLAYBACK_TIMEOUT);\n });\n }\n }\n art.on('ready', init);\n art.on('restart', init);\n return {\n name: 'auto-playback',\n get times () {\n return storage.get('times') || {};\n },\n clear () {\n return storage.del('times');\n },\n delete (id) {\n const times = storage.get('times') || {};\n delete times[id];\n storage.set('times', times);\n return times;\n }\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"2vvbM\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>fastForward);\nvar _utils = require(\"../utils\");\nfunction fastForward(art) {\n const { constructor, proxy, template: { $player, $video } } = art;\n let timer = null;\n let isPress = false;\n let lastPlaybackRate = 1;\n const onStart = (event)=>{\n if (event.touches.length === 1 && art.playing && !art.isLock) timer = setTimeout(()=>{\n isPress = true;\n lastPlaybackRate = art.playbackRate;\n art.playbackRate = constructor.FAST_FORWARD_VALUE;\n (0, _utils.addClass)($player, 'art-fast-forward');\n }, constructor.FAST_FORWARD_TIME);\n };\n const onStop = ()=>{\n clearTimeout(timer);\n if (isPress) {\n isPress = false;\n art.playbackRate = lastPlaybackRate;\n (0, _utils.removeClass)($player, 'art-fast-forward');\n }\n };\n proxy($video, 'touchstart', onStart);\n art.on('document:touchmove', onStop);\n art.on('document:touchend', onStop);\n return {\n name: 'fastForward',\n get state () {\n return (0, _utils.hasClass)($player, 'art-fast-forward');\n }\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"eAX5u\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>lock);\nvar _utils = require(\"../utils\");\nfunction lock(art) {\n const { layers, icons, template: { $player } } = art;\n function getState() {\n return (0, _utils.hasClass)($player, 'art-lock');\n }\n function setLock() {\n (0, _utils.addClass)($player, 'art-lock');\n art.isLock = true;\n art.emit('lock', true);\n }\n function setUnlock() {\n (0, _utils.removeClass)($player, 'art-lock');\n art.isLock = false;\n art.emit('lock', false);\n }\n layers.add({\n name: 'lock',\n mounted ($el) {\n const $lock = (0, _utils.append)($el, icons.lock);\n const $unlock = (0, _utils.append)($el, icons.unlock);\n (0, _utils.setStyle)($lock, 'display', 'none');\n art.on('lock', (state)=>{\n if (state) {\n (0, _utils.setStyle)($lock, 'display', 'inline-flex');\n (0, _utils.setStyle)($unlock, 'display', 'none');\n } else {\n (0, _utils.setStyle)($lock, 'display', 'none');\n (0, _utils.setStyle)($unlock, 'display', 'inline-flex');\n }\n });\n },\n click () {\n if (getState()) setUnlock();\n else setLock();\n }\n });\n return {\n name: 'lock',\n get state () {\n return getState();\n },\n set state (value){\n if (value) setLock();\n else setUnlock();\n }\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"gg16E\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>miniProgressBar);\nvar _utils = require(\"../utils\");\nfunction miniProgressBar(art) {\n art.on('control', (state)=>{\n if (state) (0, _utils.removeClass)(art.template.$player, 'art-mini-progress-bar');\n else (0, _utils.addClass)(art.template.$player, 'art-mini-progress-bar');\n });\n return {\n name: 'mini-progress-bar'\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"l15NM\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"../utils\");\nvar _component = require(\"../utils/component\");\nvar _componentDefault = parcelHelpers.interopDefault(_component);\nvar _aspectRatio = require(\"./aspectRatio\");\nvar _aspectRatioDefault = parcelHelpers.interopDefault(_aspectRatio);\nvar _flip = require(\"./flip\");\nvar _flipDefault = parcelHelpers.interopDefault(_flip);\nvar _playbackRate = require(\"./playbackRate\");\nvar _playbackRateDefault = parcelHelpers.interopDefault(_playbackRate);\nvar _subtitleOffset = require(\"./subtitleOffset\");\nvar _subtitleOffsetDefault = parcelHelpers.interopDefault(_subtitleOffset);\nclass Setting extends (0, _componentDefault.default) {\n constructor(art){\n super(art);\n const { option, controls, template: { $setting } } = art;\n this.name = 'setting';\n this.$parent = $setting;\n this.id = 0;\n this.active = null;\n this.cache = new Map();\n this.option = [\n ...this.builtin,\n ...option.settings\n ];\n if (option.setting) {\n this.format();\n this.render();\n art.on('blur', ()=>{\n if (this.show) {\n this.show = false;\n this.render();\n }\n });\n art.on('focus', (event)=>{\n const isControl = (0, _utils.includeFromEvent)(event, controls.setting);\n const isSetting = (0, _utils.includeFromEvent)(event, this.$parent);\n if (this.show && !isControl && !isSetting) {\n this.show = false;\n this.render();\n }\n });\n art.on('resize', ()=>this.resize());\n }\n }\n get builtin() {\n const result = [];\n const { option } = this.art;\n if (option.playbackRate) result.push((0, _playbackRateDefault.default)(this.art));\n if (option.aspectRatio) result.push((0, _aspectRatioDefault.default)(this.art));\n if (option.flip) result.push((0, _flipDefault.default)(this.art));\n if (option.subtitleOffset) result.push((0, _subtitleOffsetDefault.default)(this.art));\n return result;\n }\n traverse(callback, option = this.option) {\n for(let index = 0; index < option.length; index++){\n const item = option[index];\n callback(item);\n if (item.selector?.length) this.traverse(callback, item.selector);\n }\n }\n check(target) {\n target.$parent.tooltip = target.html;\n this.traverse((item)=>{\n item.default = item === target;\n if (item.default && item.$item) (0, _utils.inverseClass)(item.$item, 'art-current');\n }, target.$option);\n this.render(target.$parents);\n }\n format(option = this.option, parent, parents, names = []) {\n for(let index = 0; index < option.length; index++){\n const item = option[index];\n if (item?.name) {\n (0, _utils.errorHandle)(!names.includes(item.name), `The [${item.name}] already exists in [setting]`);\n names.push(item.name);\n } else item.name = `setting-${this.id++}`;\n if (!item.$formatted) {\n (0, _utils.def)(item, '$parent', {\n get: ()=>parent\n });\n (0, _utils.def)(item, '$parents', {\n get: ()=>parents\n });\n (0, _utils.def)(item, '$option', {\n get: ()=>option\n });\n const $events = [];\n (0, _utils.def)(item, '$events', {\n get: ()=>$events\n });\n (0, _utils.def)(item, '$formatted', {\n get: ()=>true\n });\n }\n this.format(item.selector || [], item, option, names);\n }\n this.option = option;\n }\n find(name = '') {\n let result = null;\n this.traverse((item)=>{\n if (item.name === name) result = item;\n });\n return result;\n }\n resize() {\n const { controls, constructor: { SETTING_WIDTH, SETTING_ITEM_HEIGHT }, template: { $player, $setting } } = this.art;\n if (controls.setting && this.show) {\n const settingWidth = this.active[0]?.$parent?.width || SETTING_WIDTH;\n const { left: controlLeft, width: controlWidth } = (0, _utils.getRect)(controls.setting);\n const { left: playerLeft, width: playerWidth } = (0, _utils.getRect)($player);\n const settingLeft = controlLeft - playerLeft + controlWidth / 2 - settingWidth / 2;\n const settingHeight = this.active === this.option ? this.active.length * SETTING_ITEM_HEIGHT : (this.active.length + 1) * SETTING_ITEM_HEIGHT;\n (0, _utils.setStyle)($setting, 'height', `${settingHeight}px`);\n (0, _utils.setStyle)($setting, 'width', `${settingWidth}px`);\n if (this.art.isRotate || (0, _utils.isMobile)) return;\n if (settingLeft + settingWidth > playerWidth) {\n (0, _utils.setStyle)($setting, 'left', null);\n (0, _utils.setStyle)($setting, 'right', null);\n } else {\n (0, _utils.setStyle)($setting, 'left', `${settingLeft}px`);\n (0, _utils.setStyle)($setting, 'right', 'auto');\n }\n }\n }\n inactivate(item) {\n for(let index = 0; index < item.$events.length; index++)this.art.events.remove(item.$events[index]);\n item.$events.length = 0;\n }\n remove(name) {\n const item = this.find(name);\n (0, _utils.errorHandle)(item, `Can't find [${name}] in the [setting]`);\n const index = item.$option.indexOf(item);\n item.$option.splice(index, 1);\n this.inactivate(item);\n if (item.$item) (0, _utils.remove)(item.$item);\n this.render();\n }\n update(target) {\n const item = this.find(target.name);\n if (item) {\n this.inactivate(item);\n Object.assign(item, target);\n this.format();\n this.createItem(item, true);\n this.render();\n return item;\n } else return this.add(target);\n }\n add(item, option = this.option) {\n option.push(item);\n this.format();\n this.createItem(item);\n this.render();\n return item;\n }\n createHeader(item) {\n if (!this.cache.has(item.$option)) return;\n const $panel = this.cache.get(item.$option);\n const { proxy, icons: { arrowLeft }, constructor: { SETTING_ITEM_HEIGHT } } = this.art;\n const $item = (0, _utils.createElement)('div');\n (0, _utils.setStyle)($item, 'height', `${SETTING_ITEM_HEIGHT}px`);\n (0, _utils.addClass)($item, 'art-setting-item');\n (0, _utils.addClass)($item, 'art-setting-item-back');\n const $left = (0, _utils.append)($item, '
');\n const $icon = (0, _utils.createElement)('div');\n (0, _utils.addClass)($icon, 'art-setting-item-left-icon');\n (0, _utils.append)($icon, arrowLeft);\n (0, _utils.append)($left, $icon);\n (0, _utils.append)($left, item.$parent.html);\n const event = proxy($item, 'click', ()=>this.render(item.$parents));\n item.$parent.$events.push(event);\n (0, _utils.append)($panel, $item);\n }\n createItem(item, isUpdate = false) {\n if (!this.cache.has(item.$option)) return;\n const $panel = this.cache.get(item.$option);\n const oldItem = item.$item;\n let type = 'selector';\n if ((0, _utils.has)(item, 'switch')) type = 'switch';\n if ((0, _utils.has)(item, 'range')) type = 'range';\n if ((0, _utils.has)(item, 'onClick')) type = 'button';\n const { icons, proxy, constructor } = this.art;\n const $item = (0, _utils.createElement)('div');\n (0, _utils.addClass)($item, 'art-setting-item');\n (0, _utils.setStyle)($item, 'height', `${constructor.SETTING_ITEM_HEIGHT}px`);\n $item.dataset.name = item.name || '';\n $item.dataset.value = item.value || '';\n const $left = (0, _utils.append)($item, '
');\n const $right = (0, _utils.append)($item, '
');\n const $icon = (0, _utils.createElement)('div');\n (0, _utils.addClass)($icon, 'art-setting-item-left-icon');\n switch(type){\n case 'button':\n case 'switch':\n case 'range':\n (0, _utils.append)($icon, item.icon || icons.config);\n break;\n case 'selector':\n if (item.selector?.length) (0, _utils.append)($icon, item.icon || icons.config);\n else (0, _utils.append)($icon, icons.check);\n break;\n default:\n break;\n }\n (0, _utils.append)($left, $icon);\n (0, _utils.def)(item, '$icon', {\n configurable: true,\n get: ()=>$icon\n });\n (0, _utils.def)(item, 'icon', {\n configurable: true,\n get () {\n return $icon.innerHTML;\n },\n set (value) {\n $icon.innerHTML = '';\n (0, _utils.append)($icon, value);\n }\n });\n const $html = (0, _utils.createElement)('div');\n (0, _utils.addClass)($html, 'art-setting-item-left-text');\n (0, _utils.append)($html, item.html || '');\n (0, _utils.append)($left, $html);\n (0, _utils.def)(item, '$html', {\n configurable: true,\n get: ()=>$html\n });\n (0, _utils.def)(item, 'html', {\n configurable: true,\n get () {\n return $html.innerHTML;\n },\n set (value) {\n $html.innerHTML = '';\n (0, _utils.append)($html, value);\n }\n });\n const $tooltip = (0, _utils.createElement)('div');\n (0, _utils.addClass)($tooltip, 'art-setting-item-right-tooltip');\n (0, _utils.append)($tooltip, item.tooltip || '');\n (0, _utils.append)($right, $tooltip);\n (0, _utils.def)(item, '$tooltip', {\n configurable: true,\n get: ()=>$tooltip\n });\n (0, _utils.def)(item, 'tooltip', {\n configurable: true,\n get () {\n return $tooltip.innerHTML;\n },\n set (value) {\n $tooltip.innerHTML = '';\n (0, _utils.append)($tooltip, value);\n }\n });\n switch(type){\n case 'switch':\n {\n const $switch = (0, _utils.createElement)('div');\n (0, _utils.addClass)($switch, 'art-setting-item-right-icon');\n const $switchOn = (0, _utils.append)($switch, icons.switchOn);\n const $switchOff = (0, _utils.append)($switch, icons.switchOff);\n (0, _utils.setStyle)(item.switch ? $switchOff : $switchOn, 'display', 'none');\n (0, _utils.append)($right, $switch);\n (0, _utils.def)(item, '$switch', {\n configurable: true,\n get: ()=>$switch\n });\n let $switchValue = item.switch;\n (0, _utils.def)(item, 'switch', {\n configurable: true,\n get: ()=>$switchValue,\n set (value) {\n $switchValue = value;\n if (value) {\n (0, _utils.setStyle)($switchOff, 'display', 'none');\n (0, _utils.setStyle)($switchOn, 'display', null);\n } else {\n (0, _utils.setStyle)($switchOff, 'display', null);\n (0, _utils.setStyle)($switchOn, 'display', 'none');\n }\n }\n });\n break;\n }\n case 'range':\n {\n const $state = (0, _utils.createElement)('div');\n (0, _utils.addClass)($state, 'art-setting-item-right-icon');\n const $range = (0, _utils.append)($state, '');\n $range.value = item.range[0];\n $range.min = item.range[1];\n $range.max = item.range[2];\n $range.step = item.range[3];\n (0, _utils.addClass)($range, 'art-setting-range');\n (0, _utils.append)($right, $state);\n (0, _utils.def)(item, '$range', {\n configurable: true,\n get: ()=>$range\n });\n let $rangeValue = [\n ...item.range\n ];\n (0, _utils.def)(item, 'range', {\n configurable: true,\n get: ()=>$rangeValue,\n set (value) {\n $rangeValue = [\n ...value\n ];\n $range.value = value[0];\n $range.min = value[1];\n $range.max = value[2];\n $range.step = value[3];\n }\n });\n }\n break;\n case 'selector':\n if (item.selector?.length) {\n const $state = (0, _utils.createElement)('div');\n (0, _utils.addClass)($state, 'art-setting-item-right-icon');\n (0, _utils.append)($state, icons.arrowRight);\n (0, _utils.append)($right, $state);\n }\n break;\n default:\n break;\n }\n switch(type){\n case 'switch':\n if (item.onSwitch) {\n const event = proxy($item, 'click', async (event)=>{\n item.switch = await item.onSwitch.call(this.art, item, $item, event);\n });\n item.$events.push(event);\n }\n break;\n case 'range':\n if (item.$range) {\n if (item.onRange) {\n const event = proxy(item.$range, 'change', async (event)=>{\n item.range[0] = item.$range.valueAsNumber;\n item.tooltip = await item.onRange.call(this.art, item, $item, event);\n });\n item.$events.push(event);\n }\n if (item.onChange) {\n const event = proxy(item.$range, 'input', async (event)=>{\n item.range[0] = item.$range.valueAsNumber;\n item.tooltip = await item.onChange.call(this.art, item, $item, event);\n });\n item.$events.push(event);\n }\n }\n break;\n case 'selector':\n {\n const event = proxy($item, 'click', async (event)=>{\n if (item.selector?.length) this.render(item.selector);\n else {\n this.check(item);\n if (item.$parent.onSelect) item.$parent.tooltip = await item.$parent.onSelect.call(this.art, item, $item, event);\n }\n });\n item.$events.push(event);\n if (item.default) (0, _utils.addClass)($item, 'art-current');\n }\n break;\n case 'button':\n if (item.onClick) {\n const event = proxy($item, 'click', async (event)=>{\n item.tooltip = await item.onClick.call(this.art, item, $item, event);\n });\n item.$events.push(event);\n }\n break;\n default:\n break;\n }\n (0, _utils.def)(item, '$item', {\n configurable: true,\n get: ()=>$item\n });\n if (isUpdate) (0, _utils.replaceElement)($item, oldItem);\n else (0, _utils.append)($panel, $item);\n if (item.mounted) setTimeout(()=>item.mounted.call(this.art, item.$item, item), 0);\n }\n render(option = this.option) {\n this.active = option;\n if (this.cache.has(option)) {\n const $panel = this.cache.get(option);\n (0, _utils.inverseClass)($panel, 'art-current');\n } else {\n const $panel = (0, _utils.createElement)('div');\n this.cache.set(option, $panel);\n (0, _utils.addClass)($panel, 'art-setting-panel');\n (0, _utils.append)(this.$parent, $panel);\n (0, _utils.inverseClass)($panel, 'art-current');\n if (option[0]?.$parent) this.createHeader(option[0]);\n for(let index = 0; index < option.length; index++)this.createItem(option[index]);\n }\n this.resize();\n }\n}\nexports.default = Setting;\n\n},{\"../utils\":\"ga71d\",\"../utils/component\":\"hARFP\",\"./aspectRatio\":\"gdYpm\",\"./flip\":\"e86Hl\",\"./playbackRate\":\"lPy8C\",\"./subtitleOffset\":\"jEoW9\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"gdYpm\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>aspectRatio);\nfunction aspectRatio(art) {\n const { i18n, icons, constructor: { SETTING_ITEM_WIDTH, ASPECT_RATIO } } = art;\n function getI18n(value) {\n return value === 'default' ? i18n.get('Default') : value;\n }\n function update() {\n const target = art.setting.find(`aspect-ratio-${art.aspectRatio}`);\n art.setting.check(target);\n }\n return {\n width: SETTING_ITEM_WIDTH,\n name: 'aspect-ratio',\n html: i18n.get('Aspect Ratio'),\n icon: icons.aspectRatio,\n tooltip: getI18n(art.aspectRatio),\n selector: ASPECT_RATIO.map((item)=>{\n return {\n value: item,\n name: `aspect-ratio-${item}`,\n default: item === art.aspectRatio,\n html: getI18n(item)\n };\n }),\n onSelect (item) {\n art.aspectRatio = item.value;\n return item.html;\n },\n mounted: ()=>{\n update();\n art.on('aspectRatio', ()=>update());\n }\n };\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"e86Hl\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>flip);\nvar _utils = require(\"../utils\");\nfunction flip(art) {\n const { i18n, icons, constructor: { SETTING_ITEM_WIDTH, FLIP } } = art;\n function getI18n(value) {\n return i18n.get((0, _utils.capitalize)(value));\n }\n function update() {\n const target = art.setting.find(`flip-${art.flip}`);\n art.setting.check(target);\n }\n return {\n width: SETTING_ITEM_WIDTH,\n name: 'flip',\n html: i18n.get('Video Flip'),\n tooltip: getI18n(art.flip),\n icon: icons.flip,\n selector: FLIP.map((item)=>{\n return {\n value: item,\n name: `flip-${item}`,\n default: item === art.flip,\n html: getI18n(item)\n };\n }),\n onSelect (item) {\n art.flip = item.value;\n return item.html;\n },\n mounted: ()=>{\n update();\n art.on('flip', ()=>update());\n }\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"lPy8C\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>playbackRate);\nfunction playbackRate(art) {\n const { i18n, icons, constructor: { SETTING_ITEM_WIDTH, PLAYBACK_RATE } } = art;\n function getI18n(value) {\n return value === 1.0 ? i18n.get('Normal') : value.toFixed(1);\n }\n function update() {\n const target = art.setting.find(`playback-rate-${art.playbackRate}`);\n art.setting.check(target);\n }\n return {\n width: SETTING_ITEM_WIDTH,\n name: 'playback-rate',\n html: i18n.get('Play Speed'),\n tooltip: getI18n(art.playbackRate),\n icon: icons.playbackRate,\n selector: PLAYBACK_RATE.map((item)=>{\n return {\n value: item,\n name: `playback-rate-${item}`,\n default: item === art.playbackRate,\n html: getI18n(item)\n };\n }),\n onSelect (item) {\n art.playbackRate = item.value;\n return item.html;\n },\n mounted: ()=>{\n update();\n art.on('video:ratechange', ()=>update());\n }\n };\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"jEoW9\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>subtitleOffset);\nfunction subtitleOffset(art) {\n const { i18n, icons, constructor } = art;\n return {\n width: constructor.SETTING_ITEM_WIDTH,\n name: 'subtitle-offset',\n html: i18n.get('Subtitle Offset'),\n icon: icons.subtitle,\n tooltip: '0s',\n range: [\n 0,\n -10,\n 10,\n 0.1\n ],\n onChange (item) {\n art.subtitleOffset = item.range[0];\n return `${item.range[0]}s`;\n },\n mounted: (_, item)=>{\n art.on('subtitleOffset', (value)=>{\n item.$range.value = value;\n item.tooltip = `${value}s`;\n });\n }\n };\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"1bevC\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nclass Storage {\n constructor(){\n this.name = 'artplayer_settings';\n this.settings = {};\n }\n get(key) {\n try {\n const storage = JSON.parse(window.localStorage.getItem(this.name)) || {};\n return key ? storage[key] : storage;\n } catch {\n return key ? this.settings[key] : this.settings;\n }\n }\n set(key, value) {\n try {\n const storage = Object.assign({}, this.get(), {\n [key]: value\n });\n window.localStorage.setItem(this.name, JSON.stringify(storage));\n } catch {\n this.settings[key] = value;\n }\n }\n del(key) {\n try {\n const storage = this.get();\n delete storage[key];\n window.localStorage.setItem(this.name, JSON.stringify(storage));\n } catch {\n delete this.settings[key];\n }\n }\n clear() {\n try {\n window.localStorage.removeItem(this.name);\n } catch {\n this.settings = {};\n }\n }\n}\nexports.default = Storage;\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"aD26q\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _optionValidator = require(\"option-validator\");\nvar _optionValidatorDefault = parcelHelpers.interopDefault(_optionValidator);\nvar _scheme = require(\"./scheme\");\nvar _schemeDefault = parcelHelpers.interopDefault(_scheme);\nvar _utils = require(\"./utils\");\nvar _component = require(\"./utils/component\");\nvar _componentDefault = parcelHelpers.interopDefault(_component);\nclass Subtitle extends (0, _componentDefault.default) {\n constructor(art){\n super(art);\n this.name = 'subtitle';\n this.option = null;\n this.destroyEvent = ()=>null;\n this.init(art.option.subtitle);\n let lastState = false;\n art.on('video:timeupdate', ()=>{\n if (!this.url) return;\n const state = this.art.template.$video.webkitDisplayingFullscreen;\n if (typeof state !== 'boolean') return;\n if (state !== lastState) {\n lastState = state;\n this.createTrack(state ? 'subtitles' : 'metadata', this.url);\n }\n });\n }\n get url() {\n return this.art.template.$track.src;\n }\n set url(url) {\n this.switch(url);\n }\n get textTrack() {\n return this.art.template.$video?.textTracks?.[0];\n }\n get activeCues() {\n if (!this.textTrack) return [];\n return Array.from(this.textTrack.activeCues);\n }\n get cues() {\n if (!this.textTrack) return [];\n return Array.from(this.textTrack.cues);\n }\n style(key, value) {\n const { $subtitle } = this.art.template;\n if (typeof key === 'object') return (0, _utils.setStyles)($subtitle, key);\n return (0, _utils.setStyle)($subtitle, key, value);\n }\n update() {\n const { option: { subtitle }, template: { $subtitle } } = this.art;\n $subtitle.innerHTML = '';\n if (!this.activeCues.length) return;\n this.art.emit('subtitleBeforeUpdate', this.activeCues);\n $subtitle.innerHTML = this.activeCues.map((cue, index)=>cue.text.split(/\\r?\\n/).filter((line)=>line.trim()).map((line)=>`
\n ${subtitle.escape ? (0, _utils.escape)(line) : line}\n
`).join('')).join('');\n this.art.emit('subtitleAfterUpdate', this.activeCues);\n }\n async switch(url, newOption = {}) {\n const { i18n, notice, option } = this.art;\n const subtitleOption = {\n ...option.subtitle,\n ...newOption,\n url\n };\n const subUrl = await this.init(subtitleOption);\n if (newOption.name) notice.show = `${i18n.get('Switch Subtitle')}: ${newOption.name}`;\n return subUrl;\n }\n createTrack(kind, url) {\n const { template, proxy, option } = this.art;\n const { $video, $track } = template;\n const $newTrack = (0, _utils.createElement)('track');\n $newTrack.default = true;\n $newTrack.kind = kind;\n $newTrack.src = url;\n $newTrack.label = option.subtitle.name || 'Artplayer';\n $newTrack.track.mode = 'hidden';\n $newTrack.onload = ()=>{\n this.art.emit('subtitleLoad', this.cues, this.option);\n };\n this.art.events.remove(this.destroyEvent);\n $track.onload = null;\n (0, _utils.remove)($track);\n (0, _utils.append)($video, $newTrack);\n template.$track = $newTrack;\n this.destroyEvent = proxy(this.textTrack, 'cuechange', ()=>this.update());\n }\n async init(subtitleOption) {\n const { notice, template: { $subtitle } } = this.art;\n if (!this.textTrack) return null;\n (0, _optionValidatorDefault.default)(subtitleOption, (0, _schemeDefault.default).subtitle);\n if (!subtitleOption.url) return;\n this.option = subtitleOption;\n this.style(subtitleOption.style);\n return fetch(subtitleOption.url).then((response)=>response.arrayBuffer()).then((buffer)=>{\n const decoder = new TextDecoder(subtitleOption.encoding);\n const text = decoder.decode(buffer);\n switch(subtitleOption.type || (0, _utils.getExt)(subtitleOption.url)){\n case 'srt':\n {\n const vtt = (0, _utils.srtToVtt)(text);\n const vttNew = subtitleOption.onVttLoad(vtt);\n return (0, _utils.vttToBlob)(vttNew);\n }\n case 'ass':\n {\n const vtt = (0, _utils.assToVtt)(text);\n const vttNew = subtitleOption.onVttLoad(vtt);\n return (0, _utils.vttToBlob)(vttNew);\n }\n case 'vtt':\n {\n const vttNew = subtitleOption.onVttLoad(text);\n return (0, _utils.vttToBlob)(vttNew);\n }\n default:\n return subtitleOption.url;\n }\n }).then((subUrl)=>{\n $subtitle.innerHTML = '';\n if (this.url === subUrl) return subUrl;\n URL.revokeObjectURL(this.url);\n this.createTrack('metadata', subUrl);\n return subUrl;\n }).catch((err)=>{\n $subtitle.innerHTML = '';\n notice.show = err;\n throw err;\n });\n }\n}\nexports.default = Subtitle;\n\n},{\"option-validator\":\"hw47a\",\"./scheme\":\"9Np13\",\"./utils\":\"ga71d\",\"./utils/component\":\"hARFP\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"3s0cr\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _packageJson = require(\"../package.json\");\nvar _utils = require(\"./utils\");\nclass Template {\n constructor(art){\n this.art = art;\n const { option, constructor } = art;\n if (option.container instanceof Element) this.$container = option.container;\n else {\n this.$container = (0, _utils.query)(option.container);\n (0, _utils.errorHandle)(this.$container, `No container element found by ${option.container}`);\n }\n (0, _utils.errorHandle)((0, _utils.supportsFlex)(), 'The current browser does not support flex layout');\n const type = this.$container.tagName.toLowerCase();\n (0, _utils.errorHandle)(type === 'div', `Unsupported container element type, only support 'div' but got '${type}'`);\n (0, _utils.errorHandle)(constructor.instances.every((ins)=>ins.template.$container !== this.$container), 'Cannot mount multiple instances on the same dom element');\n this.query = this.query.bind(this);\n this.$container.dataset.artId = art.id;\n this.init();\n }\n static get html() {\n return `\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Player version:
\n
${0, _packageJson.version}
\n
\n
\n
Video url:
\n
\n
\n
\n
Video volume:
\n
\n
\n
\n
Video time:
\n
\n
\n
\n
Video duration:
\n
\n
\n
\n
Video resolution:
\n
\n x \n
\n
\n
\n
[x]
\n
\n
\n
\n `;\n }\n query(className) {\n return (0, _utils.query)(className, this.$container);\n }\n init() {\n const { option } = this.art;\n if (!option.useSSR) this.$container.innerHTML = Template.html;\n this.$player = this.query('.art-video-player');\n this.$video = this.query('.art-video');\n this.$track = this.query('track');\n this.$poster = this.query('.art-poster');\n this.$subtitle = this.query('.art-subtitle');\n this.$danmuku = this.query('.art-danmuku');\n this.$bottom = this.query('.art-bottom');\n this.$progress = this.query('.art-progress');\n this.$controls = this.query('.art-controls');\n this.$controlsLeft = this.query('.art-controls-left');\n this.$controlsCenter = this.query('.art-controls-center');\n this.$controlsRight = this.query('.art-controls-right');\n this.$layer = this.query('.art-layers');\n this.$loading = this.query('.art-loading');\n this.$notice = this.query('.art-notice');\n this.$noticeInner = this.query('.art-notice-inner');\n this.$mask = this.query('.art-mask');\n this.$state = this.query('.art-state');\n this.$setting = this.query('.art-settings');\n this.$info = this.query('.art-info');\n this.$infoPanel = this.query('.art-info-panel');\n this.$infoClose = this.query('.art-info-close');\n this.$contextmenu = this.query('.art-contextmenus');\n if (option.proxy) {\n const video = option.proxy.call(this.art, this.art);\n (0, _utils.errorHandle)(video instanceof HTMLVideoElement || video instanceof HTMLCanvasElement, `Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'`);\n (0, _utils.replaceElement)(video, this.$video);\n video.className = 'art-video';\n this.$video = video;\n }\n if (option.backdrop) (0, _utils.addClass)(this.$player, 'art-backdrop');\n if (0, _utils.isMobile) (0, _utils.addClass)(this.$player, 'art-mobile');\n }\n destroy(removeHtml) {\n this.$video.src = '';\n if (removeHtml) this.$container.innerHTML = '';\n else (0, _utils.addClass)(this.$player, 'art-destroy');\n }\n}\nexports.default = Template;\n\n},{\"../package.json\":\"2r8Ra\",\"./utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"2Y43P\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nclass Emitter {\n on(name, fn, ctx) {\n const e = this.e || (this.e = {});\n (e[name] || (e[name] = [])).push({\n fn,\n ctx\n });\n return this;\n }\n once(name, fn, ctx) {\n const self = this;\n function listener(...args) {\n self.off(name, listener);\n fn.apply(ctx, args);\n }\n listener._ = fn;\n return this.on(name, listener, ctx);\n }\n emit(name, ...data) {\n const evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n for(let i = 0; i < evtArr.length; i += 1)evtArr[i].fn.apply(evtArr[i].ctx, data);\n return this;\n }\n off(name, callback) {\n const e = this.e || (this.e = {});\n const evts = e[name];\n const liveEvents = [];\n if (evts && callback) {\n for(let i = 0, len = evts.length; i < len; i += 1)if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]);\n }\n if (liveEvents.length) e[name] = liveEvents;\n else delete e[name];\n return this;\n }\n}\nexports.default = Emitter;\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}]},[\"kXXX5\"], \"kXXX5\", \"parcelRequire4dc0\", {})\nlet {default: _default, } = parcelRequire4dc0(\"kXXX5\");\nexport {_default as default, };\n\n//# sourceMappingURL=index.js.map\n","import style from 'bundle-text:./style/index.less'\nimport validator from 'option-validator'\nimport { version } from '../package.json'\nimport config from './config'\nimport Contextmenu from './contextmenu'\nimport Control from './control'\nimport Events from './events'\nimport Hotkey from './hotkey'\nimport I18n from './i18n'\nimport Icons from './icons'\nimport Info from './info'\nimport Layer from './layer'\nimport Loading from './loading'\nimport Mask from './mask'\nimport Notice from './notice'\nimport Player from './player'\nimport Plugins from './plugins'\nimport scheme from './scheme'\nimport Setting from './setting'\nimport Storage from './storage'\nimport Subtitle from './subtitle'\nimport Template from './template'\nimport * as utils from './utils'\nimport Emitter from './utils/emitter'\n\nlet id = 0\nconst instances = []\nexport default class Artplayer extends Emitter {\n constructor(option, readyCallback) {\n super()\n\n this.id = ++id\n\n const mergeOption = utils.mergeDeep(Artplayer.option, option)\n mergeOption.container = option.container\n\n this.option = validator(mergeOption, scheme)\n\n this.isLock = false\n this.isReady = false\n this.isFocus = false\n this.isInput = false\n this.isRotate = false\n this.isDestroy = false\n\n this.template = new Template(this)\n this.events = new Events(this)\n this.storage = new Storage(this)\n this.icons = new Icons(this)\n this.i18n = new I18n(this)\n this.notice = new Notice(this)\n this.player = new Player(this)\n this.layers = new Layer(this)\n this.controls = new Control(this)\n this.contextmenu = new Contextmenu(this)\n this.subtitle = new Subtitle(this)\n this.info = new Info(this)\n this.loading = new Loading(this)\n this.hotkey = new Hotkey(this)\n this.mask = new Mask(this)\n this.setting = new Setting(this)\n this.plugins = new Plugins(this)\n\n if (typeof readyCallback === 'function') {\n this.on('ready', () => readyCallback.call(this, this))\n }\n\n if (Artplayer.DEBUG) {\n // eslint-disable-next-line no-console\n const log = msg => console.log(`[ART.${this.id}] -> ${msg}`)\n log(`Version@${Artplayer.version}`)\n for (let index = 0; index < config.events.length; index++) {\n this.on(`video:${config.events[index]}`, event => log(`Event@${event.type}`))\n }\n }\n\n instances.push(this)\n }\n\n static get instances() {\n return instances\n }\n\n static get version() {\n return version\n }\n\n static get config() {\n return config\n }\n\n static get utils() {\n return utils\n }\n\n static get scheme() {\n return scheme\n }\n\n static get Emitter() {\n return Emitter\n }\n\n static get validator() {\n return validator\n }\n\n static get kindOf() {\n return validator.kindOf\n }\n\n static get html() {\n return Template.html\n }\n\n static get option() {\n return {\n id: '',\n container: '#artplayer',\n url: '',\n poster: '',\n type: '',\n theme: '#f00',\n volume: 0.7,\n isLive: false,\n muted: false,\n autoplay: false,\n autoSize: false,\n autoMini: false,\n loop: false,\n flip: false,\n playbackRate: false,\n aspectRatio: false,\n screenshot: false,\n setting: false,\n hotkey: true,\n pip: false,\n mutex: true,\n backdrop: true,\n fullscreen: false,\n fullscreenWeb: false,\n subtitleOffset: false,\n miniProgressBar: false,\n useSSR: false,\n playsInline: true,\n lock: false,\n gesture: true,\n fastForward: false,\n autoPlayback: false,\n autoOrientation: false,\n airplay: false,\n proxy: undefined,\n layers: [],\n contextmenu: [],\n controls: [],\n settings: [],\n quality: [],\n highlight: [],\n plugins: [],\n thumbnails: {\n url: '',\n number: 60,\n column: 10,\n width: 0,\n height: 0,\n scale: 1,\n },\n subtitle: {\n url: '',\n type: '',\n style: {},\n name: '',\n escape: true,\n encoding: 'utf-8',\n onVttLoad: vtt => vtt,\n },\n moreVideoAttr: {\n controls: false,\n preload: utils.isSafari ? 'auto' : 'metadata',\n },\n i18n: {},\n icons: {},\n cssVar: {},\n customType: {},\n lang: navigator?.language.toLowerCase(),\n }\n }\n\n get proxy() {\n return this.events.proxy\n }\n\n get query() {\n return this.template.query\n }\n\n get video() {\n return this.template.$video\n }\n\n destroy(removeHtml = true) {\n this.events.destroy()\n this.template.destroy(removeHtml)\n instances.splice(instances.indexOf(this), 1)\n this.isDestroy = true\n this.emit('destroy')\n }\n}\n\nArtplayer.STYLE = style\nArtplayer.DEBUG = false\nArtplayer.CONTEXTMENU = true\nArtplayer.NOTICE_TIME = 2000\nArtplayer.SETTING_WIDTH = 250\nArtplayer.SETTING_ITEM_WIDTH = 200\nArtplayer.SETTING_ITEM_HEIGHT = 35\nArtplayer.RESIZE_TIME = 200\nArtplayer.SCROLL_TIME = 200\nArtplayer.SCROLL_GAP = 50\nArtplayer.AUTO_PLAYBACK_MAX = 10\nArtplayer.AUTO_PLAYBACK_MIN = 5\nArtplayer.AUTO_PLAYBACK_TIMEOUT = 3000\nArtplayer.RECONNECT_TIME_MAX = 5\nArtplayer.RECONNECT_SLEEP_TIME = 1000\nArtplayer.CONTROL_HIDE_TIME = 3000\nArtplayer.DBCLICK_TIME = 300\nArtplayer.DBCLICK_FULLSCREEN = true\nArtplayer.MOBILE_DBCLICK_PLAY = true\nArtplayer.MOBILE_CLICK_PLAY = false\nArtplayer.AUTO_ORIENTATION_TIME = 200\nArtplayer.INFO_LOOP_TIME = 1000\nArtplayer.FAST_FORWARD_VALUE = 3\nArtplayer.FAST_FORWARD_TIME = 1000\nArtplayer.TOUCH_MOVE_RATIO = 0.5\nArtplayer.VOLUME_STEP = 0.1\nArtplayer.SEEK_STEP = 5\nArtplayer.PLAYBACK_RATE = [0.5, 0.75, 1, 1.25, 1.5, 2]\nArtplayer.ASPECT_RATIO = ['default', '4:3', '16:9']\nArtplayer.FLIP = ['normal', 'horizontal', 'vertical']\nArtplayer.FULLSCREEN_WEB_IN_BODY = false\nArtplayer.LOG_VERSION = true\nArtplayer.USE_RAF = false\n\nif (utils.isBrowser) {\n window.Artplayer = Artplayer\n\n utils.setStyleText('artplayer-style', style)\n\n setTimeout(() => {\n if (Artplayer.LOG_VERSION) {\n // eslint-disable-next-line no-console\n console.log(\n `%c ArtPlayer %c ${Artplayer.version} %c https://artplayer.org`,\n 'color: #fff; background: #5f5f5f',\n 'color: #fff; background: #4bc729',\n '',\n )\n }\n }, 100)\n}\n","module.exports = \"3f60fe5475656751\";","!function(r,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):r.optionValidator=t()}(this,function(){\"use strict\";function e(r){return(e=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&\"function\"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?\"symbol\":typeof r})(r)}var n=Object.prototype.toString,c=function(r){if(void 0===r)return\"undefined\";if(null===r)return\"null\";var t=e(r);if(\"boolean\"===t)return\"boolean\";if(\"string\"===t)return\"string\";if(\"number\"===t)return\"number\";if(\"symbol\"===t)return\"symbol\";if(\"function\"===t)return function(r){return\"GeneratorFunction\"===o(r)}(r)?\"generatorfunction\":\"function\";if(function(r){return Array.isArray?Array.isArray(r):r instanceof Array}(r))return\"array\";if(function(r){if(r.constructor&&\"function\"==typeof r.constructor.isBuffer)return r.constructor.isBuffer(r);return!1}(r))return\"buffer\";if(function(r){try{if(\"number\"==typeof r.length&&\"function\"==typeof r.callee)return!0}catch(r){if(-1!==r.message.indexOf(\"callee\"))return!0}return!1}(r))return\"arguments\";if(function(r){return r instanceof Date||\"function\"==typeof r.toDateString&&\"function\"==typeof r.getDate&&\"function\"==typeof r.setDate}(r))return\"date\";if(function(r){return r instanceof Error||\"string\"==typeof r.message&&r.constructor&&\"number\"==typeof r.constructor.stackTraceLimit}(r))return\"error\";if(function(r){return r instanceof RegExp||\"string\"==typeof r.flags&&\"boolean\"==typeof r.ignoreCase&&\"boolean\"==typeof r.multiline&&\"boolean\"==typeof r.global}(r))return\"regexp\";switch(o(r)){case\"Symbol\":return\"symbol\";case\"Promise\":return\"promise\";case\"WeakMap\":return\"weakmap\";case\"WeakSet\":return\"weakset\";case\"Map\":return\"map\";case\"Set\":return\"set\";case\"Int8Array\":return\"int8array\";case\"Uint8Array\":return\"uint8array\";case\"Uint8ClampedArray\":return\"uint8clampedarray\";case\"Int16Array\":return\"int16array\";case\"Uint16Array\":return\"uint16array\";case\"Int32Array\":return\"int32array\";case\"Uint32Array\":return\"uint32array\";case\"Float32Array\":return\"float32array\";case\"Float64Array\":return\"float64array\"}if(function(r){return\"function\"==typeof r.throw&&\"function\"==typeof r.return&&\"function\"==typeof r.next}(r))return\"generator\";switch(t=n.call(r)){case\"[object Object]\":return\"object\";case\"[object Map Iterator]\":return\"mapiterator\";case\"[object Set Iterator]\":return\"setiterator\";case\"[object String Iterator]\":return\"stringiterator\";case\"[object Array Iterator]\":return\"arrayiterator\"}return t.slice(8,-1).toLowerCase().replace(/\\s/g,\"\")};function o(r){return r.constructor?r.constructor.name:null}function f(r,t){var e=2\",\n \"license\": \"MIT\",\n \"homepage\": \"https://artplayer.org\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/zhw2590582/ArtPlayer.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/zhw2590582/ArtPlayer/issues\"\n },\n \"keywords\": [\n \"html5\",\n \"video\",\n \"player\"\n ],\n \"main\": \"dist/artplayer.js\",\n \"legacy\": \"dist/artplayer.legacy.js\",\n \"types\": \"types/artplayer.d.ts\",\n \"browserslist\": \"last 1 Chrome version\",\n \"dependencies\": {\n \"option-validator\": \"^2.0.6\"\n }\n}\n","export default {\n properties: [\n 'audioTracks',\n 'autoplay',\n 'buffered',\n 'controller',\n 'controls',\n 'crossOrigin',\n 'currentSrc',\n 'currentTime',\n 'defaultMuted',\n 'defaultPlaybackRate',\n 'duration',\n 'ended',\n 'error',\n 'loop',\n 'mediaGroup',\n 'muted',\n 'networkState',\n 'paused',\n 'playbackRate',\n 'played',\n 'preload',\n 'readyState',\n 'seekable',\n 'seeking',\n 'src',\n 'startDate',\n 'textTracks',\n 'videoTracks',\n 'volume',\n ],\n methods: ['addTextTrack', 'canPlayType', 'load', 'play', 'pause'],\n events: [\n 'abort',\n 'canplay',\n 'canplaythrough',\n 'durationchange',\n 'emptied',\n 'ended',\n 'error',\n 'loadeddata',\n 'loadedmetadata',\n 'loadstart',\n 'pause',\n 'play',\n 'playing',\n 'progress',\n 'ratechange',\n 'seeked',\n 'seeking',\n 'stalled',\n 'suspend',\n 'timeupdate',\n 'volumechange',\n 'waiting',\n ],\n prototypes: [\n 'width',\n 'height',\n 'videoWidth',\n 'videoHeight',\n 'poster',\n 'webkitDecodedFrameCount',\n 'webkitDroppedFrameCount',\n 'playsInline',\n 'webkitSupportsFullscreen',\n 'webkitDisplayingFullscreen',\n 'onenterpictureinpicture',\n 'onleavepictureinpicture',\n 'disablePictureInPicture',\n 'cancelVideoFrameCallback',\n 'requestVideoFrameCallback',\n 'getVideoPlaybackQuality',\n 'requestPictureInPicture',\n 'webkitEnterFullScreen',\n 'webkitEnterFullscreen',\n 'webkitExitFullScreen',\n 'webkitExitFullscreen',\n ],\n}\n","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (\n key === 'default' ||\n key === '__esModule' ||\n Object.prototype.hasOwnProperty.call(dest, key)\n ) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n","import { getRect, includeFromEvent, isMobile, setStyles } from '../utils'\nimport Component from '../utils/component'\nimport aspectRatio from './aspectRatio'\nimport close from './close'\nimport flip from './flip'\nimport info from './info'\nimport playbackRate from './playbackRate'\nimport version from './version'\n\nexport default class Contextmenu extends Component {\n constructor(art) {\n super(art)\n\n this.name = 'contextmenu'\n this.$parent = art.template.$contextmenu\n\n if (!isMobile) {\n this.init()\n }\n }\n\n init() {\n const {\n option,\n proxy,\n template: { $player, $contextmenu },\n } = this.art\n\n if (option.playbackRate) {\n this.add(\n playbackRate({\n name: 'playbackRate',\n index: 10,\n }),\n )\n }\n\n if (option.aspectRatio) {\n this.add(\n aspectRatio({\n name: 'aspectRatio',\n index: 20,\n }),\n )\n }\n\n if (option.flip) {\n this.add(\n flip({\n name: 'flip',\n index: 30,\n }),\n )\n }\n\n this.add(\n info({\n name: 'info',\n index: 40,\n }),\n )\n\n this.add(\n version({\n name: 'version',\n index: 50,\n }),\n )\n\n this.add(\n close({\n name: 'close',\n index: 60,\n }),\n )\n\n for (let index = 0; index < option.contextmenu.length; index++) {\n this.add(option.contextmenu[index])\n }\n\n proxy($player, 'contextmenu', (event) => {\n if (!this.art.constructor.CONTEXTMENU)\n return\n event.preventDefault()\n\n this.show = true\n\n const mouseX = event.clientX\n const mouseY = event.clientY\n const { height: cHeight, width: cWidth, left: cLeft, top: cTop } = getRect($player)\n const { height: mHeight, width: mWidth } = getRect($contextmenu)\n let menuLeft = mouseX - cLeft\n let menuTop = mouseY - cTop\n\n if (mouseX + mWidth > cLeft + cWidth) {\n menuLeft = cWidth - mWidth\n }\n\n if (mouseY + mHeight > cTop + cHeight) {\n menuTop = cHeight - mHeight\n }\n\n setStyles($contextmenu, {\n top: `${menuTop}px`,\n left: `${menuLeft}px`,\n })\n })\n\n proxy($player, 'click', (event) => {\n if (!includeFromEvent(event, $contextmenu)) {\n this.show = false\n }\n })\n\n this.art.on('blur', () => {\n this.show = false\n })\n }\n}\n","export * from './compatibility'\nexport * from './dom'\nexport * from './error'\nexport * from './file'\nexport * from './format'\nexport * from './property'\nexport * from './subtitle'\nexport * from './time'\n","export const userAgent = globalThis?.CUSTOM_USER_AGENT ?? (typeof navigator !== 'undefined' ? navigator.userAgent : '')\nexport const isSafari = /^(?:(?!chrome|android).)*safari/i.test(userAgent)\nexport const isWechat = /MicroMessenger/i.test(userAgent)\nexport const isIE = /MSIE|Trident/i.test(userAgent)\nexport const isAndroid = /android/i.test(userAgent)\nexport const isIOS = /iPad|iPhone|iPod/i.test(userAgent) && !window.MSStream\nexport const isIOS13 = isIOS || (userAgent.includes('Macintosh') && navigator.maxTouchPoints >= 1)\nexport const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent) || isIOS13\nexport const isBrowser = typeof window !== 'undefined'\n","import { isMobile } from './compatibility'\n\nexport function query(selector, parent = document) {\n return parent.querySelector(selector)\n}\n\nexport function queryAll(selector, parent = document) {\n return Array.from(parent.querySelectorAll(selector))\n}\n\nexport function addClass(target, className) {\n return target.classList.add(className)\n}\n\nexport function removeClass(target, className) {\n return target.classList.remove(className)\n}\n\nexport function hasClass(target, className) {\n return target.classList.contains(className)\n}\n\nexport function append(parent, child) {\n if (child instanceof Element) {\n parent.appendChild(child)\n }\n else {\n parent.insertAdjacentHTML('beforeend', String(child))\n }\n return parent.lastElementChild || parent.lastChild\n}\n\nexport function remove(child) {\n return child.parentNode.removeChild(child)\n}\n\nexport function setStyle(element, key, value) {\n element.style[key] = value\n return element\n}\n\nexport function setStyles(element, styles) {\n for (const key in styles) {\n setStyle(element, key, styles[key])\n }\n return element\n}\n\nexport function getStyle(element, key, numberType = true) {\n const value = window.getComputedStyle(element, null).getPropertyValue(key)\n return numberType ? Number.parseFloat(value) : value\n}\n\nexport function siblings(target) {\n return Array.from(target.parentElement.children).filter(item => item !== target)\n}\n\nexport function inverseClass(target, className) {\n siblings(target).forEach(item => removeClass(item, className))\n addClass(target, className)\n}\n\nexport function tooltip(target, msg, pos = 'top') {\n if (isMobile)\n return\n target.setAttribute('aria-label', msg)\n addClass(target, 'hint--rounded')\n addClass(target, `hint--${pos}`)\n}\n\nexport function isInViewport(el, offset = 0) {\n const rect = el.getBoundingClientRect()\n const windowHeight = window.innerHeight || document.documentElement.clientHeight\n const windowWidth = window.innerWidth || document.documentElement.clientWidth\n const vertInView = rect.top - offset <= windowHeight && rect.top + rect.height + offset >= 0\n const horInView = rect.left - offset <= windowWidth + offset && rect.left + rect.width + offset >= 0\n return vertInView && horInView\n}\n\nexport function includeFromEvent(event, target) {\n return getComposedPath(event).includes(target)\n}\n\nexport function replaceElement(newChild, oldChild) {\n oldChild.parentNode.replaceChild(newChild, oldChild)\n return newChild\n}\n\nexport function createElement(tag) {\n return document.createElement(tag)\n}\n\nexport function getIcon(key = '', html = '') {\n const icon = createElement('i')\n addClass(icon, 'art-icon')\n addClass(icon, `art-icon-${key}`)\n append(icon, html)\n return icon\n}\n\nexport function setStyleText(id, style) {\n let $style = document.getElementById(id)\n if (!$style) {\n $style = document.createElement('style')\n $style.id = id\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', () => {\n document.head.appendChild($style)\n })\n }\n else {\n (document.head || document.documentElement).appendChild($style)\n }\n }\n $style.textContent = style\n}\n\nexport function supportsFlex() {\n const div = document.createElement('div')\n div.style.display = 'flex'\n return div.style.display === 'flex'\n}\n\nexport function getRect(el) {\n return el.getBoundingClientRect()\n}\n\nexport function loadImg(url, scale) {\n return new Promise((resolve, reject) => {\n const img = new Image()\n\n img.onload = function () {\n if (!scale || scale === 1) {\n resolve(img)\n }\n else {\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')\n canvas.width = img.width * scale\n canvas.height = img.height * scale\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height)\n\n canvas.toBlob((blob) => {\n const blobUrl = URL.createObjectURL(blob)\n const scaledImg = new Image()\n\n scaledImg.onload = function () {\n resolve(scaledImg)\n }\n\n scaledImg.onerror = function () {\n URL.revokeObjectURL(blobUrl)\n reject(new Error(`Image load failed: ${url}`))\n }\n\n scaledImg.src = blobUrl\n })\n }\n }\n\n img.onerror = function () {\n reject(new Error(`Image load failed: ${url}`))\n }\n\n img.src = url\n })\n}\n\nexport function getComposedPath(event) {\n if (event.composedPath)\n return event.composedPath()\n const path = []\n let node = event.target\n while (node) {\n path.push(node)\n node = node.parentNode\n }\n if (!path.includes(window) && window !== undefined) {\n path.push(window)\n }\n return path\n}\n","export class ArtPlayerError extends Error {\n constructor(message, context) {\n super(message)\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, context || this.constructor)\n }\n this.name = 'ArtPlayerError'\n }\n}\n\nexport function errorHandle(condition, msg) {\n if (!condition) {\n throw new ArtPlayerError(msg)\n }\n return condition\n}\n","export function getExt(url) {\n if (url.includes('?')) {\n return getExt(url.split('?')[0])\n }\n\n if (url.includes('#')) {\n return getExt(url.split('#')[0])\n }\n\n return url.trim().toLowerCase().split('.').pop()\n}\n\nexport function download(url, name) {\n const elink = document.createElement('a')\n elink.style.display = 'none'\n elink.href = url\n elink.download = name\n document.body.appendChild(elink)\n elink.click()\n document.body.removeChild(elink)\n}\n","export function clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b))\n}\n\nexport function capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport function secondToTime(second) {\n if (!second)\n return '00:00'\n const add0 = num => (num < 10 ? `0${num}` : String(num))\n const hour = Math.floor(second / 3600)\n const min = Math.floor((second - hour * 3600) / 60)\n const sec = Math.floor(second - hour * 3600 - min * 60)\n return (hour > 0 ? [hour, min, sec] : [min, sec]).map(add0).join(':')\n}\n\nexport function escape(str) {\n return str.replace(\n /[&<>'\"]/g,\n tag =>\n ({\n '&': '&',\n '<': '<',\n '>': '>',\n '\\'': ''',\n '\"': '"',\n })[tag] || tag,\n )\n}\n\nexport function unescape(str) {\n const map = {\n '&': '&',\n '<': '<',\n '>': '>',\n ''': '\\'',\n '"': '\"',\n }\n const reg = new RegExp(`(${Object.keys(map).join('|')})`, 'g')\n return str.replace(reg, tag => map[tag] || tag)\n}\n","export const def = Object.defineProperty\n\nconst { hasOwnProperty } = Object.prototype\nexport function has(obj, name) {\n return hasOwnProperty.call(obj, name)\n}\n\nexport function get(obj, name) {\n return Object.getOwnPropertyDescriptor(obj, name)\n}\n\nexport function mergeDeep(...objects) {\n const isObject = item => item && typeof item === 'object' && !Array.isArray(item)\n return objects.reduce((prev, obj) => {\n Object.keys(obj).forEach((key) => {\n const pVal = prev[key]\n const oVal = obj[key]\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal)\n }\n else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal)\n }\n else {\n prev[key] = oVal\n }\n })\n return prev\n }, {})\n}\n","function fixSrt(srt) {\n return srt.replace(/(\\d\\d:\\d\\d:\\d\\d)[,.](\\d+)/g, (_, $1, $2) => {\n let ms = $2.slice(0, 3)\n if ($2.length === 1) {\n ms = `${$2}00`\n }\n if ($2.length === 2) {\n ms = `${$2}0`\n }\n return `${$1},${ms}`\n })\n}\n\nexport function srtToVtt(srtText) {\n return 'WEBVTT \\r\\n\\r\\n'.concat(\n fixSrt(srtText)\n .replace(/\\{\\\\([ibu])\\}/g, '')\n .replace(/\\{\\\\([ibu])1\\}/g, '<$1>')\n .replace(/\\{([ibu])\\}/g, '<$1>')\n .replace(/\\{\\/([ibu])\\}/g, '')\n .replace(/(\\d\\d:\\d\\d:\\d\\d),(\\d\\d\\d)/g, '$1.$2')\n .replace(/\\{[\\s\\S]*?\\}/g, '')\n .concat('\\r\\n\\r\\n'),\n )\n}\n\nexport function vttToBlob(vttText) {\n return URL.createObjectURL(\n new Blob([vttText], {\n type: 'text/vtt',\n }),\n )\n}\n\nexport function assToVtt(ass) {\n const reAss = new RegExp(\n 'Dialogue:\\\\s\\\\d,'\n + '(\\\\d+:\\\\d\\\\d:\\\\d\\\\d.\\\\d\\\\d),'\n + '(\\\\d+:\\\\d\\\\d:\\\\d\\\\d.\\\\d\\\\d),'\n + '([^,]*),'\n + '([^,]*),'\n + '(?:[^,]*,){4}'\n + '([\\\\s\\\\S]*)$',\n 'i',\n )\n\n function fixTime(time = '') {\n return time\n .split(/[:.]/)\n .map((item, index, arr) => {\n if (index === arr.length - 1) {\n if (item.length === 1) {\n return `.${item}00`\n }\n\n if (item.length === 2) {\n return `.${item}0`\n }\n }\n else if (item.length === 1) {\n return (index === 0 ? '0' : ':0') + item\n }\n\n return index === 0 ? item : index === arr.length - 1 ? `.${item}` : `:${item}`\n })\n .join('')\n }\n\n return (\n `WEBVTT`\n + `\\n`\n + `\\n${\n ass\n .split(/\\r?\\n/)\n .map((line) => {\n const m = line.match(reAss)\n if (!m)\n return null\n return {\n start: fixTime(m[1].trim()),\n end: fixTime(m[2].trim()),\n text: m[5]\n .replace(/\\{[\\s\\S]*?\\}/g, '')\n .replace(/(\\\\N)/g, '\\n')\n .trim()\n .split(/\\r?\\n/)\n .map(item => item.trim())\n .join('\\n'),\n }\n })\n .filter(line => line)\n .map((line, index) => {\n if (line) {\n return `${index + 1}\\n` + `${line.start} --> ${line.end}` + `\\n` + `${line.text}`\n }\n return ''\n })\n .filter(line => line.trim())\n .join('\\n\\n')}`\n )\n}\n","export function sleep(ms = 0) {\n return new Promise(resolve => setTimeout(resolve, ms))\n}\n\nexport function debounce(func, duration) {\n let timeout\n\n return function (...args) {\n const effect = () => {\n timeout = null\n return func.apply(this, args)\n }\n\n clearTimeout(timeout)\n timeout = setTimeout(effect, duration)\n }\n}\n\nexport function throttle(func, duration) {\n let shouldWait = false\n\n return function (...args) {\n if (!shouldWait) {\n func.apply(this, args)\n shouldWait = true\n\n setTimeout(() => {\n shouldWait = false\n }, duration)\n }\n }\n}\n","import validator from 'option-validator'\nimport { ComponentOption } from '../scheme'\nimport { addClass, append, createElement, hasClass, remove, removeClass, setStyles, tooltip } from './dom'\nimport { errorHandle } from './error'\n\nexport default class Component {\n constructor(art) {\n this.id = 0\n this.art = art\n this.cache = new Map()\n this.add = this.add.bind(this)\n this.remove = this.remove.bind(this)\n this.update = this.update.bind(this)\n }\n\n get show() {\n return hasClass(this.art.template.$player, `art-${this.name}-show`)\n }\n\n set show(value) {\n const { $player } = this.art.template\n const className = `art-${this.name}-show`\n if (value) {\n addClass($player, className)\n }\n else {\n removeClass($player, className)\n }\n this.art.emit(this.name, value)\n }\n\n toggle() {\n this.show = !this.show\n }\n\n add(getOption) {\n const option = typeof getOption === 'function' ? getOption(this.art) : getOption\n option.html = option.html || ''\n validator(option, ComponentOption)\n if (!this.$parent || !this.name || option.disable)\n return\n const name = option.name || `${this.name}${this.id}`\n const item = this.cache.get(name)\n errorHandle(!item, `Can't add an existing [${name}] to the [${this.name}]`)\n\n this.id += 1\n const $ref = createElement('div')\n addClass($ref, `art-${this.name}`)\n addClass($ref, `art-${this.name}-${name}`)\n\n const childs = Array.from(this.$parent.children)\n $ref.dataset.index = option.index || this.id\n const nextChild = childs.find(item => Number(item.dataset.index) >= Number($ref.dataset.index))\n if (nextChild) {\n nextChild.insertAdjacentElement('beforebegin', $ref)\n }\n else {\n append(this.$parent, $ref)\n }\n\n if (option.html) {\n append($ref, option.html)\n }\n\n if (option.style) {\n setStyles($ref, option.style)\n }\n\n if (option.tooltip) {\n tooltip($ref, option.tooltip)\n }\n\n const events = []\n if (option.click) {\n const destroyEvent = this.art.events.proxy($ref, 'click', (event) => {\n event.preventDefault()\n option.click.call(this.art, this, event)\n })\n events.push(destroyEvent)\n }\n\n if (option.selector && ['left', 'right'].includes(option.position)) {\n this.selector(option, $ref, events)\n }\n\n this[name] = $ref\n this.cache.set(name, { $ref, events, option })\n\n if (option.mounted) {\n option.mounted.call(this.art, $ref)\n }\n\n return $ref\n }\n\n remove(name) {\n const item = this.cache.get(name)\n errorHandle(item, `Can't find [${name}] from the [${this.name}]`)\n\n if (item.option.beforeUnmount) {\n item.option.beforeUnmount.call(this.art, item.$ref)\n }\n\n for (let index = 0; index < item.events.length; index++) {\n this.art.events.remove(item.events[index])\n }\n\n this.cache.delete(name)\n delete this[name]\n remove(item.$ref)\n }\n\n update(option) {\n const item = this.cache.get(option.name)\n if (item) {\n option = Object.assign(item.option, option)\n this.remove(option.name)\n }\n return this.add(option)\n }\n}\n","import { errorHandle } from '../utils'\n\nconst a = 'array'\nconst b = 'boolean'\nconst s = 'string'\nconst n = 'number'\nconst o = 'object'\nconst f = 'function'\n\nfunction validElement(value, type, paths) {\n return errorHandle(\n type === s || type === n || value instanceof Element,\n `${paths.join('.')} require '${s}' or 'Element' type`,\n )\n}\n\nexport const ComponentOption = {\n html: validElement,\n disable: `?${b}`,\n name: `?${s}`,\n index: `?${n}`,\n style: `?${o}`,\n click: `?${f}`,\n mounted: `?${f}`,\n tooltip: `?${s}|${n}`,\n width: `?${n}`,\n selector: `?${a}`,\n onSelect: `?${f}`,\n switch: `?${b}`,\n onSwitch: `?${f}`,\n range: `?${a}`,\n onRange: `?${f}`,\n onChange: `?${f}`,\n}\n\nexport default {\n id: s,\n container: validElement,\n url: s,\n poster: s,\n type: s,\n theme: s,\n lang: s,\n volume: n,\n isLive: b,\n muted: b,\n autoplay: b,\n autoSize: b,\n autoMini: b,\n loop: b,\n flip: b,\n playbackRate: b,\n aspectRatio: b,\n screenshot: b,\n setting: b,\n hotkey: b,\n pip: b,\n mutex: b,\n backdrop: b,\n fullscreen: b,\n fullscreenWeb: b,\n subtitleOffset: b,\n miniProgressBar: b,\n useSSR: b,\n playsInline: b,\n lock: b,\n gesture: b,\n fastForward: b,\n autoPlayback: b,\n autoOrientation: b,\n airplay: b,\n proxy: `?${f}`,\n plugins: [f],\n layers: [ComponentOption],\n contextmenu: [ComponentOption],\n settings: [ComponentOption],\n controls: [\n {\n ...ComponentOption,\n position: (value, _, paths) => {\n const position = ['top', 'left', 'right']\n return errorHandle(\n position.includes(value),\n `${paths.join('.')} only accept ${position.toString()} as parameters`,\n )\n },\n },\n ],\n quality: [\n {\n default: `?${b}`,\n html: s,\n url: s,\n },\n ],\n highlight: [\n {\n time: n,\n text: s,\n },\n ],\n thumbnails: {\n url: s,\n number: n,\n column: n,\n width: n,\n height: n,\n scale: n,\n },\n subtitle: {\n url: s,\n name: s,\n type: s,\n style: o,\n escape: b,\n encoding: s,\n onVttLoad: f,\n },\n moreVideoAttr: o,\n i18n: o,\n icons: o,\n cssVar: o,\n customType: o,\n}\n","import { inverseClass, query, queryAll } from '../utils'\n\nexport default function aspectRatio(option) {\n return (art) => {\n const {\n i18n,\n constructor: { ASPECT_RATIO },\n } = art\n\n const html = ASPECT_RATIO.map(\n item => `${item === 'default' ? i18n.get('Default') : item}`,\n ).join('')\n\n return {\n ...option,\n html: `${i18n.get('Aspect Ratio')}: ${html}`,\n click: (contextmenu, event) => {\n const { value } = event.target.dataset\n if (value) {\n art.aspectRatio = value\n contextmenu.show = false\n }\n },\n mounted: ($panel) => {\n const $default = query('[data-value=\"default\"]', $panel)\n if ($default) {\n inverseClass($default, 'art-current')\n }\n art.on('aspectRatio', (value) => {\n const $current = queryAll('span', $panel).find(item => item.dataset.value === value)\n if ($current) {\n inverseClass($current, 'art-current')\n }\n })\n },\n }\n }\n}\n","export default function close(option) {\n return art => ({\n ...option,\n html: art.i18n.get('Close'),\n click: (contextmenu) => {\n contextmenu.show = false\n },\n })\n}\n","import { capitalize, inverseClass, query, queryAll } from '../utils'\n\nexport default function flip(option) {\n return (art) => {\n const {\n i18n,\n constructor: { FLIP },\n } = art\n\n const html = FLIP.map(item => `${i18n.get(capitalize(item))}`).join('')\n\n return {\n ...option,\n html: `${i18n.get('Video Flip')}: ${html}`,\n click: (contextmenu, event) => {\n const { value } = event.target.dataset\n if (value) {\n art.flip = value.toLowerCase()\n contextmenu.show = false\n }\n },\n mounted: ($panel) => {\n const $default = query('[data-value=\"normal\"]', $panel)\n if ($default) {\n inverseClass($default, 'art-current')\n }\n art.on('flip', (value) => {\n const $current = queryAll('span', $panel).find(item => item.dataset.value === value)\n if ($current) {\n inverseClass($current, 'art-current')\n }\n })\n },\n }\n }\n}\n","export default function info(option) {\n return art => ({\n ...option,\n html: art.i18n.get('Video Info'),\n click: (contextmenu) => {\n art.info.show = true\n contextmenu.show = false\n },\n })\n}\n","import { inverseClass, query, queryAll } from '../utils'\n\nexport default function playbackRate(option) {\n return (art) => {\n const {\n i18n,\n constructor: { PLAYBACK_RATE },\n } = art\n\n const html = PLAYBACK_RATE.map(\n item => `${item === 1 ? i18n.get('Normal') : item.toFixed(1)}`,\n ).join('')\n\n return {\n ...option,\n html: `${i18n.get('Play Speed')}: ${html}`,\n click: (contextmenu, event) => {\n const { value } = event.target.dataset\n if (value) {\n art.playbackRate = Number(value)\n contextmenu.show = false\n }\n },\n mounted: ($panel) => {\n const $default = query('[data-value=\"1\"]', $panel)\n if ($default)\n inverseClass($default, 'art-current')\n art.on('video:ratechange', () => {\n const $current = queryAll('span', $panel).find(\n item => Number(item.dataset.value) === art.playbackRate,\n )\n if ($current) {\n inverseClass($current, 'art-current')\n }\n })\n },\n }\n }\n}\n","import { version } from '../../package.json'\n\nexport default function (option) {\n return {\n ...option,\n html: `ArtPlayer ${version}`,\n }\n}\n","import {\n addClass,\n append,\n createElement,\n def,\n errorHandle,\n getComposedPath,\n includeFromEvent,\n inverseClass,\n isMobile,\n removeClass,\n sleep,\n} from '../utils'\nimport Component from '../utils/component'\nimport airplay from './airplay'\nimport fullscreen from './fullscreen'\nimport fullscreenWeb from './fullscreenWeb'\nimport pip from './pip'\nimport playAndPause from './playAndPause'\nimport progress from './progress'\nimport screenshot from './screenshot'\nimport setting from './setting'\nimport time from './time'\nimport volume from './volume'\n\nexport default class Control extends Component {\n constructor(art) {\n super(art)\n\n this.isHover = false\n this.name = 'control'\n this.timer = Date.now()\n\n const { constructor } = art\n const { $player, $bottom } = this.art.template\n\n art.on('mousemove', () => {\n if (!isMobile) {\n this.show = true\n }\n })\n\n art.on('click', () => {\n if (isMobile) {\n this.toggle()\n }\n else {\n this.show = true\n }\n })\n\n art.on('document:mousemove', (event) => {\n this.isHover = includeFromEvent(event, $bottom)\n })\n\n art.on('video:timeupdate', () => {\n if (\n !art.setting.show\n && !this.isHover\n && !art.isInput\n && art.playing\n && this.show\n && Date.now() - this.timer >= constructor.CONTROL_HIDE_TIME\n ) {\n this.show = false\n }\n })\n\n art.on('control', (state) => {\n if (state) {\n removeClass($player, 'art-hide-cursor')\n addClass($player, 'art-hover')\n this.timer = Date.now()\n }\n else {\n addClass($player, 'art-hide-cursor')\n removeClass($player, 'art-hover')\n }\n })\n\n this.init()\n }\n\n init() {\n const { option } = this.art\n\n if (!option.isLive) {\n this.add(\n progress({\n name: 'progress',\n position: 'top',\n index: 10,\n }),\n )\n }\n\n this.add({\n name: 'thumbnails',\n position: 'top',\n index: 20,\n })\n\n this.add(\n playAndPause({\n name: 'playAndPause',\n position: 'left',\n index: 10,\n }),\n )\n\n this.add(\n volume({\n name: 'volume',\n position: 'left',\n index: 20,\n }),\n )\n\n if (!option.isLive) {\n this.add(\n time({\n name: 'time',\n position: 'left',\n index: 30,\n }),\n )\n }\n\n if (option.quality.length) {\n sleep().then(() => {\n this.art.quality = option.quality\n })\n }\n\n if (option.screenshot && !isMobile) {\n this.add(\n screenshot({\n name: 'screenshot',\n position: 'right',\n index: 20,\n }),\n )\n }\n\n if (option.setting) {\n this.add(\n setting({\n name: 'setting',\n position: 'right',\n index: 30,\n }),\n )\n }\n\n if (option.pip) {\n this.add(\n pip({\n name: 'pip',\n position: 'right',\n index: 40,\n }),\n )\n }\n\n if (option.airplay && window.WebKitPlaybackTargetAvailabilityEvent) {\n this.add(\n airplay({\n name: 'airplay',\n position: 'right',\n index: 50,\n }),\n )\n }\n\n if (option.fullscreenWeb) {\n this.add(\n fullscreenWeb({\n name: 'fullscreenWeb',\n position: 'right',\n index: 60,\n }),\n )\n }\n\n if (option.fullscreen) {\n this.add(\n fullscreen({\n name: 'fullscreen',\n position: 'right',\n index: 70,\n }),\n )\n }\n\n for (let index = 0; index < option.controls.length; index++) {\n this.add(option.controls[index])\n }\n }\n\n add(getOption) {\n const option = typeof getOption === 'function' ? getOption(this.art) : getOption\n const { $progress, $controlsLeft, $controlsRight } = this.art.template\n\n switch (option.position) {\n case 'top':\n this.$parent = $progress\n break\n case 'left':\n this.$parent = $controlsLeft\n break\n case 'right':\n this.$parent = $controlsRight\n break\n default:\n errorHandle(false, `Control option.position must one of 'top', 'left', 'right'`)\n break\n }\n\n super.add(option)\n }\n\n check(target) {\n target.$control_value.innerHTML = target.html\n for (let index = 0; index < target.$control_option.length; index++) {\n const item = target.$control_option[index]\n item.default = item === target\n if (item.default) {\n inverseClass(item.$control_item, 'art-current')\n }\n }\n }\n\n selector(option, $ref, events) {\n const { proxy } = this.art.events\n\n addClass($ref, 'art-control-selector')\n const $value = createElement('div')\n addClass($value, 'art-selector-value')\n append($value, option.html)\n $ref.textContent = ''\n append($ref, $value)\n\n const $list = createElement('div')\n addClass($list, 'art-selector-list')\n append($ref, $list)\n\n for (let index = 0; index < option.selector.length; index++) {\n const item = option.selector[index]\n const $item = createElement('div')\n addClass($item, 'art-selector-item')\n if (item.default)\n addClass($item, 'art-current')\n $item.dataset.index = index\n $item.dataset.value = item.value\n $item.innerHTML = item.html\n append($list, $item)\n\n def(item, '$control_option', {\n get: () => option.selector,\n })\n\n def(item, '$control_item', {\n get: () => $item,\n })\n\n def(item, '$control_value', {\n get: () => $value,\n })\n }\n\n const event = proxy($list, 'click', async (event) => {\n const path = getComposedPath(event)\n const item = option.selector.find(\n item => item.$control_item === path.find($item => item.$control_item === $item),\n )\n this.check(item)\n if (option.onSelect) {\n $value.innerHTML = await option.onSelect.call(this.art, item, item.$control_item, event)\n }\n })\n\n events.push(event)\n }\n}\n","import { append } from '../utils'\n\nexport default function airplay(option) {\n return art => ({\n ...option,\n tooltip: art.i18n.get('AirPlay'),\n mounted: ($control) => {\n const { proxy, icons } = art\n append($control, icons.airplay)\n proxy($control, 'click', () => art.airplay())\n },\n })\n}\n","import { append, setStyle, tooltip } from '../utils'\n\nexport default function fullscreen(option) {\n return art => ({\n ...option,\n tooltip: art.i18n.get('Fullscreen'),\n mounted: ($control) => {\n const { proxy, icons, i18n } = art\n\n const $fullscreenOn = append($control, icons.fullscreenOn)\n const $fullscreenOff = append($control, icons.fullscreenOff)\n setStyle($fullscreenOff, 'display', 'none')\n\n proxy($control, 'click', () => {\n art.fullscreen = !art.fullscreen\n })\n\n art.on('fullscreen', (state) => {\n if (state) {\n tooltip($control, i18n.get('Exit Fullscreen'))\n setStyle($fullscreenOn, 'display', 'none')\n setStyle($fullscreenOff, 'display', 'inline-flex')\n }\n else {\n tooltip($control, i18n.get('Fullscreen'))\n setStyle($fullscreenOn, 'display', 'inline-flex')\n setStyle($fullscreenOff, 'display', 'none')\n }\n })\n },\n })\n}\n","import { append, setStyle, tooltip } from '../utils'\n\nexport default function fullscreenWeb(option) {\n return art => ({\n ...option,\n tooltip: art.i18n.get('Web Fullscreen'),\n mounted: ($control) => {\n const { proxy, icons, i18n } = art\n\n const $fullscreenWebOn = append($control, icons.fullscreenWebOn)\n const $fullscreenWebOff = append($control, icons.fullscreenWebOff)\n setStyle($fullscreenWebOff, 'display', 'none')\n\n proxy($control, 'click', () => {\n art.fullscreenWeb = !art.fullscreenWeb\n })\n\n art.on('fullscreenWeb', (value) => {\n if (value) {\n tooltip($control, i18n.get('Exit Web Fullscreen'))\n setStyle($fullscreenWebOn, 'display', 'none')\n setStyle($fullscreenWebOff, 'display', 'inline-flex')\n }\n else {\n tooltip($control, i18n.get('Web Fullscreen'))\n setStyle($fullscreenWebOn, 'display', 'inline-flex')\n setStyle($fullscreenWebOff, 'display', 'none')\n }\n })\n },\n })\n}\n","import { append, tooltip } from '../utils'\n\nexport default function pip(option) {\n return art => ({\n ...option,\n tooltip: art.i18n.get('PIP Mode'),\n mounted: ($control) => {\n const { proxy, icons, i18n } = art\n\n append($control, icons.pip)\n\n proxy($control, 'click', () => {\n art.pip = !art.pip\n })\n\n art.on('pip', (value) => {\n tooltip($control, i18n.get(value ? 'Exit PIP Mode' : 'PIP Mode'))\n })\n },\n })\n}\n","import { append, setStyle, tooltip } from '../utils'\n\nexport default function playAndPause(option) {\n return art => ({\n ...option,\n mounted: ($control) => {\n const { proxy, icons, i18n } = art\n\n const $play = append($control, icons.play)\n const $pause = append($control, icons.pause)\n tooltip($play, i18n.get('Play'))\n tooltip($pause, i18n.get('Pause'))\n\n proxy($play, 'click', () => {\n art.play()\n })\n\n proxy($pause, 'click', () => {\n art.pause()\n })\n\n function showPlay() {\n setStyle($play, 'display', 'flex')\n setStyle($pause, 'display', 'none')\n }\n\n function showPause() {\n setStyle($play, 'display', 'none')\n setStyle($pause, 'display', 'flex')\n }\n\n if (art.playing) {\n showPause()\n }\n else {\n showPlay()\n }\n\n art.on('video:playing', () => {\n showPause()\n })\n\n art.on('video:pause', () => {\n showPlay()\n })\n },\n })\n}\n","import { append, clamp, getRect, includeFromEvent, isMobile, query, secondToTime, setStyle } from '../utils'\n\nexport function getPosFromEvent(art, event) {\n const { $progress } = art.template\n const { left } = getRect($progress)\n const eventLeft = isMobile ? event.touches[0].clientX : event.clientX\n const width = clamp(eventLeft - left, 0, $progress.clientWidth)\n const second = (width / $progress.clientWidth) * art.duration\n const time = secondToTime(second)\n const percentage = clamp(width / $progress.clientWidth, 0, 1)\n return { second, time, width, percentage }\n}\n\nexport function setCurrentTime(art, event) {\n if (art.isRotate) {\n const percentage = event.touches[0].clientY / art.height\n const second = percentage * art.duration\n art.emit('setBar', 'played', percentage, event)\n art.seek = second\n }\n else {\n const { second, percentage } = getPosFromEvent(art, event)\n art.emit('setBar', 'played', percentage, event)\n art.seek = second\n }\n}\n\nexport default function progress(options) {\n return (art) => {\n const { icons, option, proxy } = art\n\n return {\n ...options,\n html: `\n
\n
\n
\n
\n
\n
\n
\n
\n `,\n mounted: ($control) => {\n let tipTimer = null\n let isDragging = false\n\n const $hover = query('.art-progress-hover', $control)\n const $loaded = query('.art-progress-loaded', $control)\n const $played = query('.art-progress-played', $control)\n const $highlight = query('.art-progress-highlight', $control)\n const $indicator = query('.art-progress-indicator', $control)\n const $tip = query('.art-progress-tip', $control)\n\n if (icons.indicator) {\n append($indicator, icons.indicator)\n }\n else {\n setStyle($indicator, 'backgroundColor', 'var(--art-theme)')\n }\n\n function showHighlight(event) {\n const { width } = getPosFromEvent(art, event)\n const { text } = event.target.dataset\n $tip.textContent = text\n const tipWidth = $tip.clientWidth\n if (width <= tipWidth / 2) {\n setStyle($tip, 'left', 0)\n }\n else if (width > $control.clientWidth - tipWidth / 2) {\n setStyle($tip, 'left', `${$control.clientWidth - tipWidth}px`)\n }\n else {\n setStyle($tip, 'left', `${width - tipWidth / 2}px`)\n }\n }\n\n function showTime(event, touch) {\n const { width, time } = touch || getPosFromEvent(art, event)\n $tip.textContent = time\n const tipWidth = $tip.clientWidth\n if (width <= tipWidth / 2) {\n setStyle($tip, 'left', 0)\n }\n else if (width > $control.clientWidth - tipWidth / 2) {\n setStyle($tip, 'left', `${$control.clientWidth - tipWidth}px`)\n }\n else {\n setStyle($tip, 'left', `${width - tipWidth / 2}px`)\n }\n }\n\n function updateHighlight() {\n $highlight.textContent = ''\n for (let index = 0; index < option.highlight.length; index++) {\n const item = option.highlight[index]\n const left = (clamp(item.time, 0, art.duration) / art.duration) * 100\n const html = ``\n append($highlight, html)\n }\n }\n\n function setBar(type, percentage, event) {\n const isMobileDragging = type === 'played' && event && isMobile\n\n if (type === 'loaded') {\n setStyle($loaded, 'width', `${percentage * 100}%`)\n }\n\n if (type === 'hover') {\n setStyle($hover, 'width', `${percentage * 100}%`)\n }\n\n if (type === 'played') {\n setStyle($played, 'width', `${percentage * 100}%`)\n setStyle($indicator, 'left', `${percentage * 100}%`)\n }\n\n if (isMobileDragging) {\n setStyle($tip, 'display', 'flex')\n const width = $control.clientWidth * percentage\n const time = secondToTime(percentage * art.duration)\n showTime(event, { width, time })\n clearTimeout(tipTimer)\n tipTimer = setTimeout(() => {\n setStyle($tip, 'display', 'none')\n }, 500)\n }\n }\n\n art.on('setBar', setBar)\n art.on('video:loadedmetadata', updateHighlight)\n\n if (art.constructor.USE_RAF) {\n art.on('raf', () => {\n art.emit('setBar', 'played', art.played)\n art.emit('setBar', 'loaded', art.loaded)\n })\n }\n else {\n art.on('video:timeupdate', () => {\n art.emit('setBar', 'played', art.played)\n })\n\n art.on('video:progress', () => {\n art.emit('setBar', 'loaded', art.loaded)\n })\n\n art.on('video:ended', () => {\n art.emit('setBar', 'played', 1)\n })\n }\n\n art.emit('setBar', 'loaded', art.loaded || 0)\n\n if (!isMobile) {\n proxy($control, 'click', (event) => {\n if (event.target !== $indicator) {\n setCurrentTime(art, event)\n }\n })\n\n proxy($control, 'mousemove', (event) => {\n const { percentage } = getPosFromEvent(art, event)\n art.emit('setBar', 'hover', percentage, event)\n setStyle($tip, 'display', 'flex')\n if (includeFromEvent(event, $highlight)) {\n showHighlight(event)\n }\n else {\n showTime(event)\n }\n })\n\n proxy($control, 'mouseleave', (event) => {\n setStyle($tip, 'display', 'none')\n art.emit('setBar', 'hover', 0, event)\n })\n\n proxy($control, 'mousedown', (event) => {\n isDragging = event.button === 0\n })\n\n art.on('document:mousemove', (event) => {\n if (isDragging) {\n const { second, percentage } = getPosFromEvent(art, event)\n art.emit('setBar', 'played', percentage, event)\n art.seek = second\n }\n })\n\n art.on('document:mouseup', () => {\n if (isDragging) {\n isDragging = false\n }\n })\n }\n },\n }\n }\n}\n","import { append } from '../utils'\n\nexport default function screenshot(option) {\n return art => ({\n ...option,\n tooltip: art.i18n.get('Screenshot'),\n mounted: ($control) => {\n const { proxy, icons } = art\n\n append($control, icons.screenshot)\n proxy($control, 'click', () => {\n art.screenshot()\n })\n },\n })\n}\n","import { append, tooltip } from '../utils'\n\nexport default function setting(option) {\n return art => ({\n ...option,\n tooltip: art.i18n.get('Show Setting'),\n mounted: ($control) => {\n const { proxy, icons, i18n } = art\n\n append($control, icons.setting)\n\n proxy($control, 'click', () => {\n art.setting.toggle()\n art.setting.resize()\n })\n\n art.on('setting', (value) => {\n tooltip($control, i18n.get(value ? 'Hide Setting' : 'Show Setting'))\n })\n },\n })\n}\n","import { isMobile, secondToTime } from '../utils'\n\nexport default function time(option) {\n return art => ({\n ...option,\n style: isMobile\n ? {\n fontSize: '12px',\n padding: '0 5px',\n }\n : {\n cursor: 'auto',\n padding: '0 10px',\n },\n mounted: ($control) => {\n function getTime() {\n const newTime = `${secondToTime(art.currentTime)} / ${secondToTime(art.duration)}`\n if (newTime !== $control.textContent) {\n $control.textContent = newTime\n }\n }\n\n getTime()\n\n const events = ['video:loadedmetadata', 'video:timeupdate', 'video:progress']\n for (let index = 0; index < events.length; index++) {\n art.on(events[index], getTime)\n }\n },\n })\n}\n","import { append, getRect, isMobile, setStyle } from '../utils'\n\nexport default function volume(option) {\n return art => ({\n ...option,\n mounted: ($control) => {\n const { proxy, icons } = art\n\n const $volume = append($control, icons.volume)\n const $close = append($control, icons.volumeClose)\n const $panel = append($control, '
')\n const $inner = append($panel, '
')\n const $value = append($inner, `
`)\n const $slider = append($inner, `
`)\n const $handle = append($slider, `
`)\n const $loaded = append($handle, `
`)\n const $indicator = append($slider, `
`)\n\n function getVolumeFromEvent(event) {\n const { top, height } = getRect($slider)\n return 1 - (event.clientY - top) / height\n }\n\n function update() {\n if (art.muted || art.volume === 0) {\n setStyle($volume, 'display', 'none')\n setStyle($close, 'display', 'flex')\n setStyle($indicator, 'top', '100%')\n setStyle($loaded, 'top', '100%')\n $value.textContent = 0\n }\n else {\n const percentage = art.volume * 100\n setStyle($volume, 'display', 'flex')\n setStyle($close, 'display', 'none')\n setStyle($indicator, 'top', `${100 - percentage}%`)\n setStyle($loaded, 'top', `${100 - percentage}%`)\n $value.textContent = Math.floor(percentage)\n }\n }\n\n update()\n art.on('video:volumechange', update)\n\n proxy($volume, 'click', () => {\n art.muted = true\n })\n\n proxy($close, 'click', () => {\n art.muted = false\n })\n\n if (isMobile) {\n setStyle($panel, 'display', 'none')\n }\n else {\n let isDragging = false\n\n proxy($slider, 'mousedown', (event) => {\n isDragging = event.button === 0\n art.volume = getVolumeFromEvent(event)\n })\n\n art.on('document:mousemove', (event) => {\n if (isDragging) {\n art.muted = false\n art.volume = getVolumeFromEvent(event)\n }\n })\n\n art.on('document:mouseup', () => {\n if (isDragging) {\n isDragging = false\n }\n })\n }\n },\n })\n}\n","import clickInit from './clickInit'\nimport gestureInit from './gestureInit'\nimport globalInit from './globalInit'\nimport hoverInit from './hoverInit'\nimport moveInit from './moveInit'\nimport resizeInit from './resizeInit'\nimport updateInit from './updateInit'\nimport viewInit from './viewInit'\n\nexport default class Events {\n constructor(art) {\n this.destroyEvents = []\n this.proxy = this.proxy.bind(this)\n this.hover = this.hover.bind(this)\n\n clickInit(art, this)\n hoverInit(art, this)\n moveInit(art, this)\n resizeInit(art, this)\n gestureInit(art, this)\n viewInit(art, this)\n globalInit(art, this)\n updateInit(art, this)\n }\n\n proxy(target, name, callback, option = {}) {\n if (Array.isArray(name)) {\n return name.map(item => this.proxy(target, item, callback, option))\n }\n\n target.addEventListener(name, callback, option)\n const destroy = () => target.removeEventListener(name, callback, option)\n this.destroyEvents.push(destroy)\n return destroy\n }\n\n hover(target, mouseenter, mouseleave) {\n if (mouseenter) {\n this.proxy(target, 'mouseenter', mouseenter)\n }\n if (mouseleave) {\n this.proxy(target, 'mouseleave', mouseleave)\n }\n }\n\n remove(destroyEvent) {\n const index = this.destroyEvents.indexOf(destroyEvent)\n if (index > -1) {\n destroyEvent()\n this.destroyEvents.splice(index, 1)\n }\n }\n\n destroy() {\n for (let index = 0; index < this.destroyEvents.length; index++) {\n this.destroyEvents[index]()\n }\n }\n}\n","import { includeFromEvent, isMobile } from '../utils'\n\nexport default function clickInit(art, events) {\n const {\n constructor,\n template: { $player, $video },\n } = art\n\n function onDocumentClick(event) {\n if (includeFromEvent(event, $player)) {\n art.isInput = event.target.tagName === 'INPUT'\n art.isFocus = true\n art.emit('focus', event)\n }\n else {\n art.isInput = false\n art.isFocus = false\n art.emit('blur', event)\n }\n }\n\n art.on('document:click', onDocumentClick)\n art.on('document:contextmenu', onDocumentClick)\n\n let clickTimes = []\n events.proxy($video, 'click', (event) => {\n const now = Date.now()\n clickTimes.push(now)\n const { MOBILE_CLICK_PLAY, DBCLICK_TIME, MOBILE_DBCLICK_PLAY, DBCLICK_FULLSCREEN } = constructor\n\n const clicks = clickTimes.filter(t => now - t <= DBCLICK_TIME)\n switch (clicks.length) {\n case 1:\n art.emit('click', event)\n\n if (isMobile) {\n if (!art.isLock && MOBILE_CLICK_PLAY) {\n art.toggle()\n }\n }\n else {\n art.toggle()\n }\n clickTimes = clicks\n break\n case 2:\n art.emit('dblclick', event)\n\n if (isMobile) {\n if (!art.isLock && MOBILE_DBCLICK_PLAY) {\n art.toggle()\n }\n }\n else {\n if (DBCLICK_FULLSCREEN) {\n art.fullscreen = !art.fullscreen\n }\n }\n clickTimes = []\n break\n default:\n clickTimes = []\n }\n })\n}\n","import { setCurrentTime } from '../control/progress'\nimport { clamp, isMobile, secondToTime } from '../utils'\n\nfunction GetSlideAngle(dx, dy) {\n return (Math.atan2(dy, dx) * 180) / Math.PI\n}\n\nfunction GetSlideDirection(startX, startY, endX, endY) {\n const dy = startY - endY\n const dx = endX - startX\n let result = 0\n\n if (Math.abs(dx) < 2 && Math.abs(dy) < 2) {\n return result\n }\n\n const angle = GetSlideAngle(dx, dy)\n if (angle >= -45 && angle < 45) {\n result = 4\n }\n else if (angle >= 45 && angle < 135) {\n result = 1\n }\n else if (angle >= -135 && angle < -45) {\n result = 2\n }\n else if ((angle >= 135 && angle <= 180) || (angle >= -180 && angle < -135)) {\n result = 3\n }\n\n return result\n}\n\nexport default function gestureInit(art, events) {\n if (isMobile && !art.option.isLive) {\n const { $video, $progress } = art.template\n\n let touchTarget = null\n let isDragging = false\n let startX = 0\n let startY = 0\n let startTime = 0\n\n const onTouchStart = (event) => {\n if (event.touches.length === 1 && !art.isLock) {\n if (touchTarget === $progress) {\n setCurrentTime(art, event)\n }\n\n isDragging = true\n const { pageX, pageY } = event.touches[0]\n startX = pageX\n startY = pageY\n startTime = art.currentTime\n }\n }\n\n const onTouchMove = (event) => {\n if (event.touches.length === 1 && isDragging && art.duration) {\n const { pageX, pageY } = event.touches[0]\n const direction = GetSlideDirection(startX, startY, pageX, pageY)\n const isHorizontal = [3, 4].includes(direction)\n const isVertical = [1, 2].includes(direction)\n const isLegal = (isHorizontal && !art.isRotate) || (isVertical && art.isRotate)\n if (isLegal) {\n const ratioX = clamp((pageX - startX) / art.width, -1, 1)\n const ratioY = clamp((pageY - startY) / art.height, -1, 1)\n const ratio = art.isRotate ? ratioY : ratioX\n const TOUCH_MOVE_RATIO = touchTarget === $video ? art.constructor.TOUCH_MOVE_RATIO : 1\n const currentTime = clamp(startTime + art.duration * ratio * TOUCH_MOVE_RATIO, 0, art.duration)\n art.seek = currentTime\n art.emit('setBar', 'played', clamp(currentTime / art.duration, 0, 1), event)\n art.notice.show = `${secondToTime(currentTime)} / ${secondToTime(art.duration)}`\n }\n }\n }\n\n const onTouchEnd = () => {\n if (isDragging) {\n startX = 0\n startY = 0\n startTime = 0\n isDragging = false\n touchTarget = null\n }\n }\n\n if (art.option.gesture) {\n events.proxy($video, 'touchstart', (event) => {\n touchTarget = $video\n onTouchStart(event)\n })\n events.proxy($video, 'touchmove', onTouchMove)\n }\n\n events.proxy($progress, 'touchstart', (event) => {\n touchTarget = $progress\n onTouchStart(event)\n })\n\n events.proxy($progress, 'touchmove', onTouchMove)\n art.on('document:touchend', onTouchEnd)\n }\n}\n","export default function globalInit(art, events) {\n const documentEvents = [\n 'click',\n 'mouseup',\n 'keydown',\n 'touchend',\n 'touchmove',\n 'mousemove',\n 'contextmenu',\n 'webkitfullscreenchange',\n ]\n\n const windowEvents = [\n 'resize',\n 'scroll',\n 'orientationchange',\n ]\n\n const destroyEvents = []\n\n function bindGlobalEvents(source = {}) {\n for (let index = 0; index < destroyEvents.length; index++) {\n events.remove(destroyEvents[index])\n }\n\n destroyEvents.length = 0\n\n const { $player } = art.template\n\n documentEvents.forEach((name) => {\n const doc = source.document || $player.ownerDocument || document\n const destroy = events.proxy(doc, name, (event) => {\n art.emit(`document:${name}`, event)\n })\n destroyEvents.push(destroy)\n })\n\n windowEvents.forEach((name) => {\n const win = source.window || $player.ownerDocument?.defaultView || window\n const destroy = events.proxy(win, name, (event) => {\n art.emit(`window:${name}`, event)\n })\n destroyEvents.push(destroy)\n })\n }\n\n bindGlobalEvents()\n events.bindGlobalEvents = bindGlobalEvents\n}\n","import { addClass, removeClass } from '../utils'\n\nexport default function hoverInit(art, events) {\n const { $player } = art.template\n\n events.hover(\n $player,\n (event) => {\n addClass($player, 'art-hover')\n art.emit('hover', true, event)\n },\n (event) => {\n removeClass($player, 'art-hover')\n art.emit('hover', false, event)\n },\n )\n}\n","export default function moveInit(art, events) {\n const { $player } = art.template\n\n events.proxy($player, 'mousemove', (event) => {\n art.emit('mousemove', event)\n })\n}\n","import { debounce } from '../utils'\n\nexport default function resizeInit(art, events) {\n const { option, constructor } = art\n\n art.on('resize', () => {\n const { aspectRatio, notice } = art\n if (art.state === 'standard' && option.autoSize) {\n art.autoSize()\n }\n art.aspectRatio = aspectRatio\n notice.show = ''\n })\n\n const resizeFn = debounce(() => art.emit('resize'), constructor.RESIZE_TIME)\n\n art.on('window:orientationchange', () => resizeFn())\n art.on('window:resize', () => resizeFn())\n\n if (screen && screen.orientation && screen.orientation.onchange) {\n events.proxy(screen.orientation, 'change', () => resizeFn())\n }\n}\n","export default function updateInit(art) {\n if (art.constructor.USE_RAF) {\n let timer = null;\n\n (function update() {\n if (art.playing) {\n art.emit('raf')\n }\n\n if (!art.isDestroy) {\n timer = requestAnimationFrame(update)\n }\n })()\n\n art.on('destroy', () => {\n cancelAnimationFrame(timer)\n })\n }\n}\n","import { isInViewport, throttle } from '../utils'\n\nexport default function viewInit(art) {\n const {\n option,\n constructor,\n template: { $container },\n } = art\n\n const scrollFn = throttle(() => {\n art.emit('view', isInViewport($container, constructor.SCROLL_GAP))\n }, constructor.SCROLL_TIME)\n\n art.on('window:scroll', () => scrollFn())\n\n art.on('view', (state) => {\n if (option.autoMini) {\n art.mini = !state\n }\n })\n}\n","import { isMobile } from './utils'\n\nexport default class Hotkey {\n constructor(art) {\n this.art = art\n this.keys = {}\n\n if (art.option.hotkey && !isMobile) {\n this.init()\n }\n }\n\n init() {\n const { constructor } = this.art\n\n this.add('Escape', () => {\n if (this.art.fullscreenWeb) {\n this.art.fullscreenWeb = false\n }\n })\n\n this.add('Space', () => {\n this.art.toggle()\n })\n\n this.add('ArrowLeft', () => {\n this.art.backward = constructor.SEEK_STEP\n })\n\n this.add('ArrowUp', () => {\n this.art.volume += constructor.VOLUME_STEP\n })\n\n this.add('ArrowRight', () => {\n this.art.forward = constructor.SEEK_STEP\n })\n\n this.add('ArrowDown', () => {\n this.art.volume -= constructor.VOLUME_STEP\n })\n\n this.art.on('document:keydown', (event) => {\n if (this.art.isFocus) {\n const tag = document.activeElement.tagName.toUpperCase()\n const editable = document.activeElement.getAttribute('contenteditable')\n if (\n tag !== 'INPUT'\n && tag !== 'TEXTAREA'\n && editable !== ''\n && editable !== 'true'\n && !event.altKey\n && !event.ctrlKey\n && !event.metaKey\n && !event.shiftKey\n ) {\n const events = this.keys[event.code]\n if (events) {\n event.preventDefault()\n for (let index = 0; index < events.length; index++) {\n events[index].call(this.art, event)\n }\n this.art.emit('hotkey', event)\n }\n }\n }\n this.art.emit('keydown', event)\n })\n }\n\n add(key, event) {\n if (this.keys[key]) {\n this.keys[key].push(event)\n }\n else {\n this.keys[key] = [event]\n }\n return this\n }\n\n remove(key, event) {\n if (this.keys[key]) {\n const index = this.keys[key].indexOf(event)\n if (index !== -1) {\n this.keys[key].splice(index, 1)\n }\n }\n return this\n }\n}\n","import { mergeDeep } from '../utils'\nimport zhCn from './zh-cn'\n\nexport default class I18n {\n constructor(art) {\n this.art = art\n\n this.languages = {\n 'zh-cn': zhCn,\n }\n\n this.language = {}\n\n this.update(art.option.i18n)\n }\n\n init() {\n const lang = this.art.option.lang.toLowerCase()\n this.language = this.languages[lang] || {}\n }\n\n get(key) {\n return this.language[key] || key\n }\n\n update(value) {\n this.languages = mergeDeep(this.languages, value)\n this.init()\n }\n}\n","const zhCn = {\n 'Video Info': '统计信息',\n 'Close': '关闭',\n 'Video Load Failed': '加载失败',\n 'Volume': '音量',\n 'Play': '播放',\n 'Pause': '暂停',\n 'Rate': '速度',\n 'Mute': '静音',\n 'Video Flip': '画面翻转',\n 'Horizontal': '水平',\n 'Vertical': '垂直',\n 'Reconnect': '重新连接',\n 'Show Setting': '显示设置',\n 'Hide Setting': '隐藏设置',\n 'Screenshot': '截图',\n 'Play Speed': '播放速度',\n 'Aspect Ratio': '画面比例',\n 'Default': '默认',\n 'Normal': '正常',\n 'Open': '打开',\n 'Switch Video': '切换',\n 'Switch Subtitle': '切换字幕',\n 'Fullscreen': '全屏',\n 'Exit Fullscreen': '退出全屏',\n 'Web Fullscreen': '网页全屏',\n 'Exit Web Fullscreen': '退出网页全屏',\n 'Mini Player': '迷你播放器',\n 'PIP Mode': '开启画中画',\n 'Exit PIP Mode': '退出画中画',\n 'PIP Not Supported': '不支持画中画',\n 'Fullscreen Not Supported': '不支持全屏',\n 'Subtitle Offset': '字幕偏移',\n 'Last Seen': '上次看到',\n 'Jump Play': '跳转播放',\n 'AirPlay': '隔空播放',\n 'AirPlay Not Available': '隔空播放不可用',\n}\n\nexport default zhCn\n\nif (typeof window !== 'undefined') {\n window['artplayer-i18n-zh-cn'] = zhCn\n}\n","import airplay from 'bundle-text:./airplay.svg'\nimport arrowLeft from 'bundle-text:./arrow-left.svg'\nimport arrowRight from 'bundle-text:./arrow-right.svg'\nimport aspectRatio from 'bundle-text:./aspect-ratio.svg'\nimport check from 'bundle-text:./check.svg'\nimport close from 'bundle-text:./close.svg'\nimport config from 'bundle-text:./config.svg'\nimport error from 'bundle-text:./error.svg'\nimport flip from 'bundle-text:./flip.svg'\nimport fullscreenOff from 'bundle-text:./fullscreen-off.svg'\nimport fullscreenOn from 'bundle-text:./fullscreen-on.svg'\nimport fullscreenWebOff from 'bundle-text:./fullscreen-web-off.svg'\nimport fullscreenWebOn from 'bundle-text:./fullscreen-web-on.svg'\nimport loading from 'bundle-text:./loading.svg'\nimport lock from 'bundle-text:./lock.svg'\nimport pause from 'bundle-text:./pause.svg'\nimport pip from 'bundle-text:./pip.svg'\nimport play from 'bundle-text:./play.svg'\nimport playbackRate from 'bundle-text:./playback-rate.svg'\nimport screenshot from 'bundle-text:./screenshot.svg'\nimport setting from 'bundle-text:./setting.svg'\nimport state from 'bundle-text:./state.svg'\nimport switchOff from 'bundle-text:./switch-off.svg'\nimport switchOn from 'bundle-text:./switch-on.svg'\nimport unlock from 'bundle-text:./unlock.svg'\nimport volumeClose from 'bundle-text:./volume-close.svg'\nimport volume from 'bundle-text:./volume.svg'\nimport { def, getIcon } from '../utils'\n\nexport default class Icons {\n constructor(art) {\n const icons = {\n loading,\n state,\n play,\n pause,\n check,\n volume,\n volumeClose,\n screenshot,\n setting,\n pip,\n arrowLeft,\n arrowRight,\n playbackRate,\n aspectRatio,\n config,\n lock,\n flip,\n unlock,\n fullscreenOff,\n fullscreenOn,\n fullscreenWebOff,\n fullscreenWebOn,\n switchOn,\n switchOff,\n error,\n close,\n airplay,\n ...art.option.icons,\n }\n\n for (const key in icons) {\n def(this, key, {\n get: () => getIcon(key, icons[key]),\n })\n }\n }\n}\n","module.exports = \"03c31e9143780a40\";","module.exports = \"74dce3541179f967\";","module.exports = \"8df370b72b9ce75f\";","module.exports = \"9207cd0eefb6c3b0\";","module.exports = \"8320911dd871be8e\";","module.exports = \"c365b437797da954\";","module.exports = \"981fa83d570f6239\";","module.exports = \"17beb71b176d778b\";","module.exports = \"9b20f336c2ff900a\";","module.exports = \"eedf0c211f991bc9\";","module.exports = \"4a2b0202fbc32b00\";","module.exports = \"c556a98869f28ec5\";","module.exports = \"fc44851dd02a8dc1\";","module.exports = \"aa8eeafb643c0fb7\";","module.exports = \"1df3ee8832ad226d\";","module.exports = \"a2f9bb742b2bbf38\";","module.exports = \"77d09cc9a0322b33\";","module.exports = \"513dae040a8d41cb\";","module.exports = \"6467fbfcb935904d\";","module.exports = \"c1e7234a8e79af58\";","module.exports = \"b1d5511484622de7\";","module.exports = \"be840883705461e0\";","module.exports = \"0a752309eead1e5d\";","module.exports = \"38cc3eae123fb63a\";","module.exports = \"089b16a857ca7f39\";","module.exports = \"a9d4f893c7212a37\";","module.exports = \"1eb0913cc1dcf524\";","import { isMobile, queryAll } from './utils'\nimport Component from './utils/component'\n\nexport default class Info extends Component {\n constructor(art) {\n super(art)\n this.name = 'info'\n\n if (!isMobile) {\n this.init()\n }\n }\n\n init() {\n const {\n proxy,\n constructor,\n template: { $infoPanel, $infoClose, $video },\n } = this.art\n\n proxy($infoClose, 'click', () => {\n this.show = false\n })\n\n let timer = null\n const $types = queryAll('[data-video]', $infoPanel) || []\n this.art.on('destroy', () => clearTimeout(timer))\n\n function loop() {\n for (let index = 0; index < $types.length; index++) {\n const item = $types[index]\n const value = $video[item.dataset.video]\n const textContent = typeof value === 'number' ? value.toFixed(2) : value\n if (item.textContent !== textContent) {\n item.textContent = textContent\n }\n }\n timer = setTimeout(loop, constructor.INFO_LOOP_TIME)\n }\n\n loop()\n }\n}\n","import Component from './utils/component'\n\nexport default class Layer extends Component {\n constructor(art) {\n super(art)\n\n const {\n option,\n template: { $layer },\n } = art\n\n this.name = 'layer'\n this.$parent = $layer\n\n for (let index = 0; index < option.layers.length; index++) {\n this.add(option.layers[index])\n }\n }\n}\n","import { append } from './utils'\nimport Component from './utils/component'\n\nexport default class Loading extends Component {\n constructor(art) {\n super(art)\n this.name = 'loading'\n append(art.template.$loading, art.icons.loading)\n }\n}\n","import { append, setStyle } from './utils'\nimport Component from './utils/component'\n\nexport default class Mask extends Component {\n constructor(art) {\n super(art)\n\n this.name = 'mask'\n const { template, icons, events } = art\n\n const $state = append(template.$state, icons.state)\n const $error = append(template.$state, icons.error)\n\n setStyle($error, 'display', 'none')\n\n art.on('destroy', () => {\n setStyle($state, 'display', 'none')\n setStyle($error, 'display', null)\n })\n\n events.proxy(template.$state, 'click', () => art.play())\n }\n}\n","import { addClass, removeClass } from './utils'\n\nexport default class Notice {\n constructor(art) {\n this.art = art\n this.timer = null\n }\n\n set show(msg) {\n const {\n constructor,\n template: { $player, $noticeInner },\n } = this.art\n\n if (msg) {\n $noticeInner.textContent = msg instanceof Error ? msg.message.trim() : msg\n addClass($player, 'art-notice-show')\n clearTimeout(this.timer)\n this.timer = setTimeout(() => {\n $noticeInner.textContent = ''\n removeClass($player, 'art-notice-show')\n }, constructor.NOTICE_TIME)\n }\n else {\n removeClass($player, 'art-notice-show')\n }\n }\n\n get show() {\n const {\n template: { $player },\n } = this.art\n return $player.classList.contains('art-notice-show')\n }\n}\n","import airplayMix from './airplayMix'\nimport aspectRatioMix from './aspectRatioMix'\nimport attrMix from './attrMix'\nimport autoHeightMix from './autoHeightMix'\nimport autoSizeMix from './autoSizeMix'\nimport cssVarMix from './cssVarMix'\nimport currentTimeMix from './currentTimeMix'\nimport durationMix from './durationMix'\nimport eventInit from './eventInit'\nimport flipMix from './flipMix'\nimport fullscreenMix from './fullscreenMix'\nimport fullscreenWebMix from './fullscreenWebMix'\nimport loadedMix from './loadedMix'\nimport miniMix from './miniMix'\nimport optionInit from './optionInit'\nimport pauseMix from './pauseMix'\nimport pipMix from './pipMix'\nimport playbackRateMix from './playbackRateMix'\nimport playedMix from './playedMix'\nimport playingMix from './playingMix'\nimport playMix from './playMix'\nimport posterMix from './posterMix'\nimport qualityMix from './qualityMix'\nimport rectMix from './rectMix'\nimport screenshotMix from './screenshotMix'\nimport seekMix from './seekMix'\nimport stateMix from './stateMix'\nimport subtitleOffsetMix from './subtitleOffsetMix'\nimport switchMix from './switchMix'\nimport themeMix from './themeMix'\nimport thumbnailsMix from './thumbnailsMix'\nimport toggleMix from './toggleMix'\nimport typeMix from './typeMix'\nimport urlMix from './urlMix'\nimport volumeMix from './volumeMix'\n\nexport default class Player {\n constructor(art) {\n urlMix(art)\n attrMix(art)\n playMix(art)\n pauseMix(art)\n toggleMix(art)\n seekMix(art)\n volumeMix(art)\n currentTimeMix(art)\n durationMix(art)\n switchMix(art)\n playbackRateMix(art)\n aspectRatioMix(art)\n screenshotMix(art)\n fullscreenMix(art)\n fullscreenWebMix(art)\n pipMix(art)\n loadedMix(art)\n playedMix(art)\n playingMix(art)\n autoSizeMix(art)\n rectMix(art)\n flipMix(art)\n miniMix(art)\n posterMix(art)\n autoHeightMix(art)\n cssVarMix(art)\n themeMix(art)\n typeMix(art)\n stateMix(art)\n subtitleOffsetMix(art)\n airplayMix(art)\n qualityMix(art)\n thumbnailsMix(art)\n eventInit(art)\n optionInit(art)\n }\n}\n","import { def } from '../utils'\n\nexport default function airplayMix(art) {\n const {\n i18n,\n notice,\n proxy,\n template: { $video },\n } = art\n\n let available = true\n\n if (window.WebKitPlaybackTargetAvailabilityEvent && $video.webkitShowPlaybackTargetPicker) {\n proxy($video, 'webkitplaybacktargetavailabilitychanged', (event) => {\n switch (event.availability) {\n case 'available':\n available = true\n break\n case 'not-available':\n available = false\n break\n }\n })\n }\n else {\n available = false\n }\n\n def(art, 'airplay', {\n value() {\n if (available) {\n $video.webkitShowPlaybackTargetPicker()\n art.emit('airplay')\n }\n else {\n notice.show = i18n.get('AirPlay Not Available')\n }\n },\n })\n}\n","import { def, setStyle } from '../utils'\n\nexport default function aspectRatioMix(art) {\n const {\n i18n,\n notice,\n template: { $video, $player },\n } = art\n\n def(art, 'aspectRatio', {\n get() {\n return $player.dataset.aspectRatio || 'default'\n },\n set(ratio) {\n if (!ratio)\n ratio = 'default'\n if (ratio === 'default') {\n setStyle($video, 'width', null)\n setStyle($video, 'height', null)\n setStyle($video, 'margin', null)\n delete $player.dataset.aspectRatio\n }\n else {\n const ratioArray = ratio.split(':').map(Number)\n const { clientWidth, clientHeight } = $player\n const playerRatio = clientWidth / clientHeight\n const setupRatio = ratioArray[0] / ratioArray[1]\n\n if (playerRatio > setupRatio) {\n setStyle($video, 'width', `${setupRatio * clientHeight}px`)\n setStyle($video, 'height', '100%')\n setStyle($video, 'margin', '0 auto')\n }\n else {\n setStyle($video, 'width', '100%')\n setStyle($video, 'height', `${clientWidth / setupRatio}px`)\n setStyle($video, 'margin', 'auto 0')\n }\n\n $player.dataset.aspectRatio = ratio\n }\n\n notice.show = `${i18n.get('Aspect Ratio')}: ${ratio === 'default' ? i18n.get('Default') : ratio}`\n art.emit('aspectRatio', ratio)\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function attrMix(art) {\n const {\n template: { $video },\n } = art\n\n def(art, 'attr', {\n value(key, value) {\n if (value === undefined)\n return $video[key]\n $video[key] = value\n },\n })\n}\n","import { def, setStyle } from '../utils'\n\nexport default function autoHeightMix(art) {\n const {\n template: { $container, $video },\n } = art\n\n def(art, 'autoHeight', {\n value() {\n const { clientWidth } = $container\n const { videoHeight, videoWidth } = $video\n const height = videoHeight * (clientWidth / videoWidth)\n setStyle($container, 'height', `${height}px`)\n art.emit('autoHeight', height)\n },\n })\n}\n","import { def, getRect, setStyle } from '../utils'\n\nexport default function autoSizeMix(art) {\n const { $container, $player, $video } = art.template\n\n def(art, 'autoSize', {\n value() {\n const { videoWidth, videoHeight } = $video\n const { width, height } = getRect($container)\n const videoRatio = videoWidth / videoHeight\n const containerRatio = width / height\n if (containerRatio > videoRatio) {\n const percentage = ((height * videoRatio) / width) * 100\n setStyle($player, 'width', `${percentage}%`)\n setStyle($player, 'height', '100%')\n }\n else {\n const percentage = (width / videoRatio / height) * 100\n setStyle($player, 'width', '100%')\n setStyle($player, 'height', `${percentage}%`)\n }\n art.emit('autoSize', {\n width: art.width,\n height: art.height,\n })\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function cssVarMix(art) {\n const { $player } = art.template\n\n def(art, 'cssVar', {\n value(key, value) {\n if (value) {\n return $player.style.setProperty(key, value)\n }\n else {\n return getComputedStyle($player).getPropertyValue(key)\n }\n },\n })\n}\n","import { clamp, def } from '../utils'\n\nexport default function currentTimeMix(art) {\n const { $video } = art.template\n\n def(art, 'currentTime', {\n get: () => $video.currentTime || 0,\n set: (time) => {\n time = Number.parseFloat(time)\n if (Number.isNaN(time))\n return\n $video.currentTime = clamp(time, 0, art.duration)\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function durationMix(art) {\n def(art, 'duration', {\n get: () => {\n const { duration } = art.template.$video\n if (duration === Infinity)\n return 0\n return duration || 0\n },\n })\n}\n","import config from '../config'\nimport { addClass, isMobile, setStyle, sleep } from '../utils'\n\nexport default function eventInit(art) {\n const {\n i18n,\n notice,\n option,\n constructor,\n proxy,\n template: { $player, $video, $poster },\n } = art\n\n let reconnectTime = 0\n\n for (let index = 0; index < config.events.length; index++) {\n proxy($video, config.events[index], (event) => {\n art.emit(`video:${event.type}`, event)\n })\n }\n\n // art.on('video:abort', () => {\n\n // });\n\n art.on('video:canplay', () => {\n reconnectTime = 0\n art.loading.show = false\n })\n\n art.once('video:canplay', () => {\n art.loading.show = false\n art.controls.show = true\n art.mask.show = true\n art.isReady = true\n art.emit('ready')\n })\n\n // art.on('video:canplaythrough', () => {\n\n // });\n\n // art.on('video:durationchange', () => {\n\n // });\n\n // art.on('video:emptied', () => {\n\n // });\n\n art.on('video:ended', () => {\n if (option.loop) {\n art.seek = 0\n art.play()\n art.controls.show = false\n art.mask.show = false\n }\n else {\n art.controls.show = true\n art.mask.show = true\n }\n })\n\n art.on('video:error', async (error) => {\n if (reconnectTime < constructor.RECONNECT_TIME_MAX) {\n await sleep(constructor.RECONNECT_SLEEP_TIME)\n reconnectTime += 1\n art.url = option.url\n notice.show = `${i18n.get('Reconnect')}: ${reconnectTime}`\n art.emit('error', error, reconnectTime)\n }\n else {\n art.mask.show = true\n art.loading.show = false\n art.controls.show = true\n addClass($player, 'art-error')\n await sleep(constructor.RECONNECT_SLEEP_TIME)\n notice.show = i18n.get('Video Load Failed')\n }\n })\n\n // art.on('video:loadeddata', () => {\n\n // });\n\n art.on('video:loadedmetadata', () => {\n art.emit('resize')\n if (isMobile) {\n art.loading.show = false\n art.controls.show = true\n art.mask.show = true\n }\n })\n\n art.on('video:loadstart', () => {\n art.loading.show = true\n art.mask.show = false\n art.controls.show = true\n })\n\n art.on('video:pause', () => {\n art.controls.show = true\n art.mask.show = true\n })\n\n art.on('video:play', () => {\n art.mask.show = false\n setStyle($poster, 'display', 'none')\n })\n\n art.on('video:playing', () => {\n art.mask.show = false\n })\n\n art.on('video:progress', () => {\n if (art.playing) {\n art.loading.show = false\n }\n })\n\n // art.on('video:ratechange', () => {\n\n // });\n\n art.on('video:seeked', () => {\n art.loading.show = false\n art.mask.show = true\n })\n\n art.on('video:seeking', () => {\n art.loading.show = true\n art.mask.show = false\n })\n\n // art.on('video:stalled', () => {\n\n // });\n\n // art.on('video:suspend', () => {\n\n // });\n\n art.on('video:timeupdate', () => {\n art.mask.show = false\n })\n\n // art.on('video:volumechange', () => {\n\n // });\n\n art.on('video:waiting', () => {\n art.loading.show = true\n art.mask.show = false\n })\n}\n","import { capitalize, def } from '../utils'\n\nexport default function flipMix(art) {\n const {\n template: { $player },\n i18n,\n notice,\n } = art\n\n def(art, 'flip', {\n get() {\n return $player.dataset.flip || 'normal'\n },\n set(flip) {\n if (!flip)\n flip = 'normal'\n if (flip === 'normal') {\n delete $player.dataset.flip\n }\n else {\n $player.dataset.flip = flip\n }\n\n notice.show = `${i18n.get('Video Flip')}: ${i18n.get(capitalize(flip))}`\n art.emit('flip', flip)\n },\n })\n}\n","import screenfull from '../libs/screenfull'\nimport { addClass, def, get, removeClass } from '../utils'\n\nexport default function fullscreenMix(art) {\n const {\n i18n,\n notice,\n template: { $video, $player },\n } = art\n\n const nativeScreenfull = (art) => {\n screenfull.on('change', () => {\n art.emit('fullscreen', screenfull.isFullscreen)\n\n if (screenfull.isFullscreen) {\n art.state = 'fullscreen'\n addClass($player, 'art-fullscreen')\n }\n else {\n removeClass($player, 'art-fullscreen')\n }\n\n art.emit('resize')\n })\n\n screenfull.on('error', (event) => {\n art.emit('fullscreenError', event)\n })\n\n def(art, 'fullscreen', {\n get() {\n return screenfull.isFullscreen\n },\n async set(value) {\n if (value) {\n await screenfull.request($player)\n }\n else {\n await screenfull.exit()\n }\n },\n })\n }\n\n const webkitScreenfull = (art) => {\n art.on('document:webkitfullscreenchange', () => {\n art.emit('fullscreen', art.fullscreen)\n art.emit('resize')\n })\n\n def(art, 'fullscreen', {\n get() {\n return document.fullscreenElement === $video\n },\n set(value) {\n if (value) {\n art.state = 'fullscreen'\n $video.webkitEnterFullscreen()\n }\n else {\n $video.webkitExitFullscreen()\n }\n },\n })\n }\n\n art.once('video:loadedmetadata', () => {\n if (screenfull.isEnabled) {\n nativeScreenfull(art)\n }\n else if ($video.webkitSupportsFullscreen) {\n webkitScreenfull(art)\n }\n else {\n def(art, 'fullscreen', {\n get() {\n return false\n },\n set() {\n notice.show = i18n.get('Fullscreen Not Supported')\n },\n })\n }\n\n // Asynchronous setting\n def(art, 'fullscreen', get(art, 'fullscreen'))\n })\n}\n","const methodMap = [\n [\n 'requestFullscreen',\n 'exitFullscreen',\n 'fullscreenElement',\n 'fullscreenEnabled',\n 'fullscreenchange',\n 'fullscreenerror',\n ],\n // New WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror',\n ],\n // Old WebKit\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror',\n ],\n [\n 'mozRequestFullScreen',\n 'mozCancelFullScreen',\n 'mozFullScreenElement',\n 'mozFullScreenEnabled',\n 'mozfullscreenchange',\n 'mozfullscreenerror',\n ],\n [\n 'msRequestFullscreen',\n 'msExitFullscreen',\n 'msFullscreenElement',\n 'msFullscreenEnabled',\n 'MSFullscreenChange',\n 'MSFullscreenError',\n ],\n]\n\nconst nativeAPI = (() => {\n if (typeof document === 'undefined') {\n return false\n }\n\n const unprefixedMethods = methodMap[0]\n const returnValue = {}\n\n for (const methodList of methodMap) {\n const exitFullscreenMethod = methodList[1]\n if (exitFullscreenMethod in document) {\n for (const [index, method] of methodList.entries()) {\n returnValue[unprefixedMethods[index]] = method\n }\n\n return returnValue\n }\n }\n\n return false\n})()\n\nconst eventNameMap = {\n change: nativeAPI.fullscreenchange,\n error: nativeAPI.fullscreenerror,\n}\n\nconst screenfull = {\n request(element = document.documentElement, options) {\n return new Promise((resolve, reject) => {\n const onFullScreenEntered = () => {\n screenfull.off('change', onFullScreenEntered)\n resolve()\n }\n\n screenfull.on('change', onFullScreenEntered)\n\n const returnPromise = element[nativeAPI.requestFullscreen](options)\n\n if (returnPromise instanceof Promise) {\n returnPromise.then(onFullScreenEntered).catch(reject)\n }\n })\n },\n exit() {\n return new Promise((resolve, reject) => {\n if (!screenfull.isFullscreen) {\n resolve()\n return\n }\n\n const onFullScreenExit = () => {\n screenfull.off('change', onFullScreenExit)\n resolve()\n }\n\n screenfull.on('change', onFullScreenExit)\n\n const returnPromise = document[nativeAPI.exitFullscreen]()\n\n if (returnPromise instanceof Promise) {\n returnPromise.then(onFullScreenExit).catch(reject)\n }\n })\n },\n toggle(element, options) {\n return screenfull.isFullscreen ? screenfull.exit() : screenfull.request(element, options)\n },\n onchange(callback) {\n screenfull.on('change', callback)\n },\n onerror(callback) {\n screenfull.on('error', callback)\n },\n on(event, callback) {\n const eventName = eventNameMap[event]\n if (eventName) {\n document.addEventListener(eventName, callback, false)\n }\n },\n off(event, callback) {\n const eventName = eventNameMap[event]\n if (eventName) {\n document.removeEventListener(eventName, callback, false)\n }\n },\n raw: nativeAPI,\n}\n\nObject.defineProperties(screenfull, {\n isFullscreen: {\n get: () => Boolean(document[nativeAPI.fullscreenElement]),\n },\n element: {\n enumerable: true,\n get: () => document[nativeAPI.fullscreenElement],\n },\n isEnabled: {\n enumerable: true,\n get: () => Boolean(document[nativeAPI.fullscreenEnabled]),\n },\n})\n\nif (!nativeAPI) {\n screenfull.isEnabled = false\n}\n\nexport default screenfull\n","import { addClass, append, def, hasClass, removeClass, setStyle } from '../utils'\n\nexport default function fullscreenWebMix(art) {\n const {\n constructor,\n template: { $container, $player },\n } = art\n\n let cssText = ''\n def(art, 'fullscreenWeb', {\n get() {\n return hasClass($player, 'art-fullscreen-web')\n },\n set(value) {\n if (value) {\n cssText = $player.style.cssText\n if (constructor.FULLSCREEN_WEB_IN_BODY) {\n append(document.body, $player)\n }\n art.state = 'fullscreenWeb'\n setStyle($player, 'width', '100%')\n setStyle($player, 'height', '100%')\n addClass($player, 'art-fullscreen-web')\n art.emit('fullscreenWeb', true)\n }\n else {\n if (constructor.FULLSCREEN_WEB_IN_BODY) {\n append($container, $player)\n }\n if (cssText) {\n $player.style.cssText = cssText\n cssText = ''\n }\n removeClass($player, 'art-fullscreen-web')\n art.emit('fullscreenWeb', false)\n }\n\n art.emit('resize')\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function loadedMix(art) {\n const { $video } = art.template\n\n def(art, 'loaded', {\n get: () => art.loadedTime / $video.duration,\n })\n\n def(art, 'loadedTime', {\n get: () => {\n return $video.buffered.length ? $video.buffered.end($video.buffered.length - 1) : 0\n },\n })\n}\n","import { addClass, append, createElement, def, getRect, hasClass, isInViewport, removeClass, setStyle } from '../utils'\n\nexport default function miniMix(art) {\n const {\n icons,\n proxy,\n storage,\n template: { $player, $video },\n } = art\n\n let isDragging = false\n let lastPageX = 0\n let lastPageY = 0\n\n function hideMini() {\n const { $mini } = art.template\n if ($mini) {\n removeClass($player, 'art-mini')\n setStyle($mini, 'display', 'none')\n $player.prepend($video)\n art.emit('mini', false)\n }\n }\n\n function initState($play, $pause) {\n if (art.playing) {\n setStyle($play, 'display', `none`)\n setStyle($pause, 'display', `flex`)\n }\n else {\n setStyle($play, 'display', `flex`)\n setStyle($pause, 'display', `none`)\n }\n }\n\n function createMini() {\n const { $mini } = art.template\n if ($mini) {\n append($mini, $video)\n return setStyle($mini, 'display', 'flex')\n }\n else {\n const $mini = createElement('div')\n addClass($mini, 'art-mini-popup')\n append(document.body, $mini)\n art.template.$mini = $mini\n append($mini, $video)\n\n const $close = append($mini, `
`)\n append($close, icons.close)\n proxy($close, 'click', hideMini)\n\n const $state = append($mini, `
`)\n const $play = append($state, icons.play)\n const $pause = append($state, icons.pause)\n proxy($play, 'click', () => art.play())\n proxy($pause, 'click', () => art.pause())\n initState($play, $pause)\n art.on('video:playing', () => initState($play, $pause))\n art.on('video:pause', () => initState($play, $pause))\n art.on('video:timeupdate', () => initState($play, $pause))\n\n proxy($mini, 'mousedown', (event) => {\n isDragging = event.button === 0\n lastPageX = event.pageX\n lastPageY = event.pageY\n })\n\n art.on('document:mousemove', (event) => {\n if (isDragging) {\n addClass($mini, 'art-mini-dragging')\n const x = event.pageX - lastPageX\n const y = event.pageY - lastPageY\n setStyle($mini, 'transform', `translate(${x}px, ${y}px)`)\n }\n })\n\n art.on('document:mouseup', () => {\n if (isDragging) {\n isDragging = false\n removeClass($mini, 'art-mini-dragging')\n const rect = getRect($mini)\n storage.set('left', rect.left)\n storage.set('top', rect.top)\n setStyle($mini, 'left', `${rect.left}px`)\n setStyle($mini, 'top', `${rect.top}px`)\n setStyle($mini, 'transform', null)\n }\n })\n\n return $mini\n }\n }\n\n function initMini() {\n const { $mini } = art.template\n const rect = getRect($mini)\n const top = window.innerHeight - rect.height - 50\n const left = window.innerWidth - rect.width - 50\n storage.set('top', top)\n storage.set('left', left)\n setStyle($mini, 'top', `${top}px`)\n setStyle($mini, 'left', `${left}px`)\n }\n\n def(art, 'mini', {\n get() {\n return hasClass($player, 'art-mini')\n },\n set(value) {\n if (value) {\n art.state = 'mini'\n addClass($player, 'art-mini')\n const $mini = createMini()\n const top = storage.get('top')\n const left = storage.get('left')\n if (typeof top === 'number' && typeof left === 'number') {\n setStyle($mini, 'top', `${top}px`)\n setStyle($mini, 'left', `${left}px`)\n if (!isInViewport($mini)) {\n initMini()\n }\n }\n else {\n initMini()\n }\n art.emit('mini', true)\n }\n else {\n hideMini()\n }\n },\n })\n}\n","import { clamp, setStyle } from '../utils'\n\nexport default function optionInit(art) {\n const {\n option,\n storage,\n template: { $video, $poster },\n } = art\n\n for (const key in option.moreVideoAttr) {\n art.attr(key, option.moreVideoAttr[key])\n }\n\n if (option.muted) {\n art.muted = option.muted\n }\n\n if (option.volume) {\n $video.volume = clamp(option.volume, 0, 1)\n }\n\n const volumeStorage = storage.get('volume')\n if (typeof volumeStorage === 'number') {\n $video.volume = clamp(volumeStorage, 0, 1)\n }\n\n if (option.poster) {\n setStyle($poster, 'backgroundImage', `url(${option.poster})`)\n }\n\n if (option.autoplay) {\n $video.autoplay = option.autoplay\n }\n\n if (option.playsInline) {\n $video.playsInline = true\n $video['webkit-playsinline'] = true\n }\n\n if (option.theme) {\n option.cssVar['--art-theme'] = option.theme\n }\n\n for (const key in option.cssVar) {\n art.cssVar(key, option.cssVar[key])\n }\n\n art.url = option.url\n}\n","import { def } from '../utils'\n\nexport default function pauseMix(art) {\n const {\n template: { $video },\n i18n,\n notice,\n } = art\n\n def(art, 'pause', {\n value() {\n const result = $video.pause()\n notice.show = i18n.get('Pause')\n art.emit('pause')\n return result\n },\n })\n}\n","import { def } from '../utils'\n\nfunction nativePip(art) {\n const {\n template: { $video },\n proxy,\n notice,\n } = art\n\n $video.disablePictureInPicture = false\n\n def(art, 'pip', {\n get() {\n return document.pictureInPictureElement\n },\n set(value) {\n if (value) {\n art.state = 'pip'\n $video.requestPictureInPicture().catch((err) => {\n notice.show = err\n throw err\n })\n }\n else {\n document.exitPictureInPicture().catch((err) => {\n notice.show = err\n throw err\n })\n }\n },\n })\n\n proxy($video, 'enterpictureinpicture', () => {\n art.emit('pip', true)\n })\n\n proxy($video, 'leavepictureinpicture', () => {\n art.emit('pip', false)\n })\n}\n\nfunction webkitPip(art) {\n const { $video } = art.template\n\n $video.webkitSetPresentationMode('inline')\n\n def(art, 'pip', {\n get() {\n return $video.webkitPresentationMode === 'picture-in-picture'\n },\n set(value) {\n if (value) {\n art.state = 'pip'\n $video.webkitSetPresentationMode('picture-in-picture')\n art.emit('pip', true)\n }\n else {\n $video.webkitSetPresentationMode('inline')\n art.emit('pip', false)\n }\n },\n })\n}\n\nexport default function pipMix(art) {\n const {\n i18n,\n notice,\n template: { $video },\n } = art\n if (document.pictureInPictureEnabled) {\n nativePip(art)\n }\n else if ($video.webkitSupportsPresentationMode) {\n webkitPip(art)\n }\n else {\n def(art, 'pip', {\n get() {\n return false\n },\n set() {\n notice.show = i18n.get('PIP Not Supported')\n },\n })\n }\n}\n","import { def } from '../utils'\n\nexport default function playbackRateMix(art) {\n const {\n template: { $video },\n i18n,\n notice,\n } = art\n\n def(art, 'playbackRate', {\n get() {\n return $video.playbackRate\n },\n set(rate) {\n if (rate) {\n if (rate === $video.playbackRate)\n return\n $video.playbackRate = rate\n notice.show = `${i18n.get('Rate')}: ${rate === 1.0 ? i18n.get('Normal') : `${rate}x`}`\n }\n else {\n art.playbackRate = 1\n }\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function playedMix(art) {\n def(art, 'played', {\n get: () => art.currentTime / art.duration,\n })\n}\n","import { def } from '../utils'\n\nexport default function playingMix(art) {\n const { $video } = art.template\n def(art, 'playing', {\n get: () => {\n if (typeof $video.playing === 'boolean')\n return $video.playing\n return !!($video.currentTime > 0 && !$video.paused && !$video.ended && $video.readyState > 2)\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function playMix(art) {\n const {\n i18n,\n notice,\n option,\n constructor: { instances },\n template: { $video },\n } = art\n\n def(art, 'play', {\n async value() {\n const result = await $video.play()\n notice.show = i18n.get('Play')\n art.emit('play')\n\n if (option.mutex) {\n for (let index = 0; index < instances.length; index++) {\n const instance = instances[index]\n if (instance !== art) {\n instance.pause()\n }\n }\n }\n\n return result\n },\n })\n}\n","import { def, setStyle } from '../utils'\n\nexport default function posterMix(art) {\n const {\n template: { $poster },\n } = art\n\n def(art, 'poster', {\n get: () => {\n try {\n return $poster.style.backgroundImage.match(/\"(.*)\"/)[1]\n }\n catch {\n return ''\n }\n },\n set(url) {\n setStyle($poster, 'backgroundImage', `url(${url})`)\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function qualityMix(art) {\n def(art, 'quality', {\n set(quality) {\n const { controls, notice, i18n } = art\n const qualityDefault = quality.find(item => item.default) || quality[0]\n controls.update({\n name: 'quality',\n position: 'right',\n index: 10,\n style: {\n marginRight: '10px',\n },\n html: qualityDefault?.html || '',\n selector: quality,\n async onSelect(item) {\n await art.switchQuality(item.url)\n notice.show = `${i18n.get('Switch Video')}: ${item.html}`\n return item.html\n },\n })\n },\n })\n}\n","import { def, getRect } from '../utils'\n\nexport default function rectMix(art) {\n def(art, 'rect', {\n get: () => {\n return getRect(art.template.$player)\n },\n })\n\n const keys = ['bottom', 'height', 'left', 'right', 'top', 'width']\n for (let index = 0; index < keys.length; index++) {\n const key = keys[index]\n def(art, key, {\n get: () => {\n return art.rect[key]\n },\n })\n }\n\n def(art, 'x', {\n get: () => {\n return art.left + window.pageXOffset\n },\n })\n\n def(art, 'y', {\n get: () => {\n return art.top + window.pageYOffset\n },\n })\n}\n","import { createElement, def, download, secondToTime } from '../utils'\n\nexport default function screenshotMix(art) {\n const {\n notice,\n template: { $video },\n } = art\n\n const $canvas = createElement('canvas')\n\n def(art, 'getDataURL', {\n value: () =>\n new Promise((resolve, reject) => {\n try {\n $canvas.width = $video.videoWidth\n $canvas.height = $video.videoHeight\n $canvas.getContext('2d').drawImage($video, 0, 0)\n resolve($canvas.toDataURL('image/png'))\n }\n catch (err) {\n notice.show = err\n reject(err)\n }\n }),\n })\n\n def(art, 'getBlobUrl', {\n value: () =>\n new Promise((resolve, reject) => {\n try {\n $canvas.width = $video.videoWidth\n $canvas.height = $video.videoHeight\n $canvas.getContext('2d').drawImage($video, 0, 0)\n $canvas.toBlob((blob) => {\n resolve(URL.createObjectURL(blob))\n })\n }\n catch (err) {\n notice.show = err\n reject(err)\n }\n }),\n })\n\n def(art, 'screenshot', {\n value: async (name) => {\n const dataUri = await art.getDataURL()\n const fileName = name || `artplayer_${secondToTime($video.currentTime)}`\n download(dataUri, `${fileName}.png`)\n art.emit('screenshot', dataUri)\n return dataUri\n },\n })\n}\n","import { def, secondToTime } from '../utils'\n\nexport default function seekMix(art) {\n const { notice } = art\n\n def(art, 'seek', {\n set(time) {\n art.currentTime = time\n if (art.duration) {\n notice.show = `${secondToTime(art.currentTime)} / ${secondToTime(art.duration)}`\n }\n art.emit('seek', art.currentTime)\n },\n })\n\n def(art, 'forward', {\n set(time) {\n art.seek = art.currentTime + time\n },\n })\n\n def(art, 'backward', {\n set(time) {\n art.seek = art.currentTime - time\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function stateMix(art) {\n const states = ['mini', 'pip', 'fullscreen', 'fullscreenWeb']\n def(art, 'state', {\n get: () => states.find(name => art[name]) || 'standard',\n set(name) {\n for (let index = 0; index < states.length; index++) {\n const prop = states[index]\n if (prop !== name && art[prop]) {\n art[prop] = false\n }\n }\n },\n })\n}\n","import { clamp, def } from '../utils'\n\nexport default function subtitleOffsetMix(art) {\n const { notice, i18n, template } = art\n\n def(art, 'subtitleOffset', {\n get() {\n return template.$track?.offset || 0\n },\n set(value) {\n const { cues } = art.subtitle\n if (!template.$track || cues.length === 0)\n return\n const offset = clamp(value, -10, 10)\n template.$track.offset = offset\n for (let index = 0; index < cues.length; index++) {\n const cue = cues[index]\n cue.originalStartTime = cue.originalStartTime ?? cue.startTime\n cue.originalEndTime = cue.originalEndTime ?? cue.endTime\n cue.startTime = clamp(cue.originalStartTime + offset, 0, art.duration)\n cue.endTime = clamp(cue.originalEndTime + offset, 0, art.duration)\n }\n art.subtitle.update()\n notice.show = `${i18n.get('Subtitle Offset')}: ${value}s`\n art.emit('subtitleOffset', value)\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function switchMix(art) {\n function switchUrl(url, currentTime) {\n return new Promise((resolve, reject) => {\n if (url === art.url)\n return\n const { playing, aspectRatio, playbackRate } = art\n\n art.pause()\n art.url = url\n art.notice.show = ''\n\n art.once('video:error', reject)\n\n art.once('video:loadedmetadata', () => {\n art.currentTime = currentTime\n })\n\n art.once('video:canplay', async () => {\n art.playbackRate = playbackRate\n art.aspectRatio = aspectRatio\n\n if (playing) {\n await art.play()\n }\n\n art.notice.show = ''\n\n resolve()\n })\n })\n }\n\n def(art, 'switchQuality', {\n value: (url) => {\n return switchUrl(url, art.currentTime)\n },\n })\n\n def(art, 'switchUrl', {\n value: (url) => {\n return switchUrl(url, 0)\n },\n })\n\n def(art, 'switch', {\n set: art.switchUrl,\n })\n}\n","import { def } from '../utils'\n\nexport default function themeMix(art) {\n def(art, 'theme', {\n get() {\n return art.cssVar('--art-theme')\n },\n set(theme) {\n art.cssVar('--art-theme', theme)\n },\n })\n}\n","import { def, isMobile, loadImg, setStyle } from '../utils'\n\nexport default function thumbnailsMix(art) {\n const {\n events,\n option,\n template: { $progress, $video },\n } = art\n\n let timer = null\n let image = null\n let loading = false\n let isLoad = false\n let isHover = false\n\n function reset() {\n clearTimeout(timer)\n timer = null\n image = null\n loading = false\n isLoad = false\n }\n\n function showThumbnails(posWidth) {\n const $thumbnails = art.controls?.thumbnails\n if (!$thumbnails)\n return\n\n const { number, column, width, height, scale } = option.thumbnails\n const width2 = width * scale || image.naturalWidth / column\n const height2 = height * scale || width2 / ($video.videoWidth / $video.videoHeight)\n const perWidth = $progress.clientWidth / number\n const perIndex = Math.floor(posWidth / perWidth)\n const yIndex = Math.ceil(perIndex / column) - 1\n const xIndex = perIndex % column || column - 1\n setStyle($thumbnails, 'backgroundImage', `url(${image.src})`)\n setStyle($thumbnails, 'height', `${height2}px`)\n setStyle($thumbnails, 'width', `${width2}px`)\n setStyle($thumbnails, 'backgroundPosition', `-${xIndex * width2}px -${yIndex * height2}px`)\n if (posWidth <= width2 / 2) {\n setStyle($thumbnails, 'left', 0)\n }\n else if (posWidth > $progress.clientWidth - width2 / 2) {\n setStyle($thumbnails, 'left', `${$progress.clientWidth - width2}px`)\n }\n else {\n setStyle($thumbnails, 'left', `${posWidth - width2 / 2}px`)\n }\n }\n\n events.hover(\n $progress,\n () => {\n isHover = true\n },\n () => {\n isHover = false\n },\n )\n\n art.on('setBar', async (type, percentage, event) => {\n const $thumbnails = art.controls?.thumbnails\n const { url, scale } = option.thumbnails\n if (!$thumbnails || !url)\n return\n\n const isMobileDragging = type === 'played' && event && isMobile\n\n if (type === 'hover' || isMobileDragging) {\n if (!loading) {\n loading = true\n image = await loadImg(url, scale)\n isLoad = true\n }\n\n if (!isLoad || !isHover)\n return\n\n const width = $progress.clientWidth * percentage\n setStyle($thumbnails, 'display', 'flex')\n\n if (width > 0 && width < $progress.clientWidth) {\n showThumbnails(width)\n }\n else {\n if (!isMobile) {\n setStyle($thumbnails, 'display', 'none')\n }\n }\n\n if (isMobileDragging) {\n clearTimeout(timer)\n timer = setTimeout(() => {\n setStyle($thumbnails, 'display', 'none')\n }, 500)\n }\n }\n })\n\n def(art, 'thumbnails', {\n get() {\n return art.option.thumbnails\n },\n set(thumbnails) {\n if (thumbnails.url && !art.option.isLive) {\n art.option.thumbnails = thumbnails\n reset()\n }\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function toggleMix(art) {\n def(art, 'toggle', {\n value() {\n if (art.playing) {\n return art.pause()\n }\n else {\n return art.play()\n }\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function typeMix(art) {\n def(art, 'type', {\n get() {\n return art.option.type\n },\n set(type) {\n art.option.type = type\n },\n })\n}\n","import { def, getExt, sleep } from '../utils'\n\nexport default function urlMix(art) {\n const {\n option,\n template: { $video },\n } = art\n\n def(art, 'url', {\n get() {\n return $video.src\n },\n async set(newUrl) {\n if (newUrl) {\n const oldUrl = art.url\n const typeName = option.type || getExt(newUrl)\n const typeCallback = option.customType[typeName]\n\n if (typeName && typeCallback) {\n await sleep()\n art.loading.show = true\n typeCallback.call(art, $video, newUrl, art)\n }\n else {\n URL.revokeObjectURL(oldUrl)\n $video.src = newUrl\n }\n\n if (oldUrl !== art.url) {\n art.option.url = newUrl\n if (art.isReady && oldUrl) {\n art.once('video:canplay', () => {\n art.emit('restart', newUrl)\n })\n }\n }\n }\n else {\n await sleep()\n art.loading.show = true\n }\n },\n })\n}\n","import { clamp, def } from '../utils'\n\nexport default function volumeMix(art) {\n const {\n template: { $video },\n i18n,\n notice,\n storage,\n } = art\n\n def(art, 'volume', {\n get: () => $video.volume || 0,\n set: (percentage) => {\n $video.volume = clamp(percentage, 0, 1)\n notice.show = `${i18n.get('Volume')}: ${Number.parseInt($video.volume * 100, 10)}`\n if ($video.volume !== 0) {\n storage.set('volume', $video.volume)\n }\n },\n })\n\n def(art, 'muted', {\n get: () => $video.muted,\n set: (muted) => {\n $video.muted = muted\n art.emit('muted', muted)\n },\n })\n}\n","import { def, errorHandle, has, isMobile } from '../utils'\nimport autoOrientation from './autoOrientation'\nimport autoPlayback from './autoPlayback'\nimport fastForward from './fastForward'\nimport lock from './lock'\nimport miniProgressBar from './miniProgressBar'\n\nexport default class Plugins {\n constructor(art) {\n this.art = art\n this.id = 0\n\n const { option } = art\n\n if (option.miniProgressBar && !option.isLive) {\n this.add(miniProgressBar)\n }\n\n if (option.lock && isMobile) {\n this.add(lock)\n }\n\n if (option.autoPlayback && !option.isLive) {\n this.add(autoPlayback)\n }\n\n if (option.autoOrientation && isMobile) {\n this.add(autoOrientation)\n }\n\n if (option.fastForward && isMobile && !option.isLive) {\n this.add(fastForward)\n }\n\n for (let index = 0; index < option.plugins.length; index++) {\n this.add(option.plugins[index])\n }\n }\n\n add(plugin) {\n this.id += 1\n const result = plugin.call(this.art, this.art)\n if (result instanceof Promise) {\n return result.then(res => this.next(plugin, res))\n }\n else {\n return this.next(plugin, result)\n }\n }\n\n next(plugin, result) {\n const pluginName = (result && result.name) || plugin.name || `plugin${this.id}`\n errorHandle(!has(this, pluginName), `Cannot add a plugin that already has the same name: ${pluginName}`)\n def(this, pluginName, {\n value: result,\n })\n return this\n }\n}\n","import { addClass, hasClass, removeClass, setStyle } from '../utils'\n\nexport default function autoOrientation(art) {\n const {\n notice,\n constructor,\n template: { $player, $video },\n } = art\n\n const WEB_CLASS = 'art-auto-orientation'\n const FS_CLASS = 'art-auto-orientation-fullscreen'\n let fsLocked = false\n\n function applyWebRotate() {\n const viewWidth = document.documentElement.clientWidth\n const viewHeight = document.documentElement.clientHeight\n setStyle($player, 'width', `${viewHeight}px`)\n setStyle($player, 'height', `${viewWidth}px`)\n setStyle($player, 'transform-origin', '0 0')\n setStyle($player, 'transform', `rotate(90deg) translate(0, -${viewWidth}px)`)\n addClass($player, WEB_CLASS)\n art.isRotate = true\n art.emit('resize')\n }\n\n function clearWebRotate() {\n setStyle($player, 'width', '')\n setStyle($player, 'height', '')\n setStyle($player, 'transform-origin', '')\n setStyle($player, 'transform', '')\n removeClass($player, WEB_CLASS)\n art.isRotate = false\n art.emit('resize')\n }\n\n function needRotate() {\n const { videoWidth, videoHeight } = $video\n const vw = document.documentElement.clientWidth\n const vh = document.documentElement.clientHeight\n return (videoWidth > videoHeight && vw < vh) || (videoWidth < videoHeight && vw > vh)\n }\n\n art.on('fullscreenWeb', (state) => {\n if (state) {\n if (needRotate()) {\n const delay = Number(constructor.AUTO_ORIENTATION_TIME ?? 0)\n setTimeout(() => {\n if (art.fullscreenWeb && !hasClass($player, WEB_CLASS)) {\n applyWebRotate()\n }\n }, delay)\n }\n }\n else {\n if (hasClass($player, WEB_CLASS))\n clearWebRotate()\n }\n })\n\n art.on('fullscreen', async (state) => {\n const canLock = !!screen?.orientation?.lock\n\n if (state) {\n if (canLock && needRotate()) {\n try {\n const last = screen.orientation.type\n const opposite = last.startsWith('portrait') ? 'landscape' : 'portrait'\n await screen.orientation.lock(opposite)\n fsLocked = true\n addClass($player, FS_CLASS)\n }\n catch (err) {\n fsLocked = false\n notice.show = err\n }\n }\n }\n else {\n if (hasClass($player, FS_CLASS)) {\n removeClass($player, FS_CLASS)\n }\n if (canLock && fsLocked) {\n try {\n screen.orientation.unlock()\n }\n catch { }\n fsLocked = false\n }\n }\n })\n\n return {\n name: 'autoOrientation',\n get state() {\n return hasClass($player, WEB_CLASS)\n },\n }\n}\n","import { append, query, secondToTime, setStyle } from '../utils'\n\nexport default function autoPlayback(art) {\n const {\n i18n,\n icons,\n storage,\n constructor,\n proxy,\n template: { $poster },\n } = art\n\n const $autoPlayback = art.layers.add({\n name: 'auto-playback',\n html: `\n
\n
\n
\n `,\n })\n\n const $last = query('.art-auto-playback-last', $autoPlayback)\n const $jump = query('.art-auto-playback-jump', $autoPlayback)\n const $close = query('.art-auto-playback-close', $autoPlayback)\n append($close, icons.close)\n\n let timer = null\n\n art.on('video:timeupdate', () => {\n if (art.playing) {\n const times = storage.get('times') || {}\n const keys = Object.keys(times)\n if (keys.length > constructor.AUTO_PLAYBACK_MAX) {\n delete times[keys[0]]\n }\n times[art.option.id || art.option.url] = art.currentTime\n storage.set('times', times)\n }\n })\n\n function init() {\n const times = storage.get('times') || {}\n const currentTime = times[art.option.id || art.option.url]\n\n clearTimeout(timer)\n setStyle($autoPlayback, 'display', 'none')\n\n if (currentTime && currentTime >= constructor.AUTO_PLAYBACK_MIN) {\n setStyle($autoPlayback, 'display', 'flex')\n\n $last.textContent = `${i18n.get('Last Seen')} ${secondToTime(currentTime)}`\n $jump.textContent = i18n.get('Jump Play')\n\n proxy($close, 'click', () => {\n setStyle($autoPlayback, 'display', 'none')\n })\n\n proxy($jump, 'click', () => {\n art.seek = currentTime\n art.play()\n setStyle($poster, 'display', 'none')\n setStyle($autoPlayback, 'display', 'none')\n })\n\n art.once('video:timeupdate', () => {\n timer = setTimeout(() => {\n setStyle($autoPlayback, 'display', 'none')\n }, constructor.AUTO_PLAYBACK_TIMEOUT)\n })\n }\n }\n\n art.on('ready', init)\n art.on('restart', init)\n\n return {\n name: 'auto-playback',\n get times() {\n return storage.get('times') || {}\n },\n clear() {\n return storage.del('times')\n },\n delete(id) {\n const times = storage.get('times') || {}\n delete times[id]\n storage.set('times', times)\n return times\n },\n }\n}\n","import { addClass, hasClass, removeClass } from '../utils'\n\nexport default function fastForward(art) {\n const {\n constructor,\n proxy,\n template: { $player, $video },\n } = art\n\n let timer = null\n let isPress = false\n let lastPlaybackRate = 1\n\n const onStart = (event) => {\n if (event.touches.length === 1 && art.playing && !art.isLock) {\n timer = setTimeout(() => {\n isPress = true\n lastPlaybackRate = art.playbackRate\n art.playbackRate = constructor.FAST_FORWARD_VALUE\n addClass($player, 'art-fast-forward')\n }, constructor.FAST_FORWARD_TIME)\n }\n }\n\n const onStop = () => {\n clearTimeout(timer)\n if (isPress) {\n isPress = false\n art.playbackRate = lastPlaybackRate\n removeClass($player, 'art-fast-forward')\n }\n }\n\n proxy($video, 'touchstart', onStart)\n art.on('document:touchmove', onStop)\n art.on('document:touchend', onStop)\n\n return {\n name: 'fastForward',\n get state() {\n return hasClass($player, 'art-fast-forward')\n },\n }\n}\n","import { addClass, append, hasClass, removeClass, setStyle } from '../utils'\n\nexport default function lock(art) {\n const {\n layers,\n icons,\n template: { $player },\n } = art\n\n function getState() {\n return hasClass($player, 'art-lock')\n }\n\n function setLock() {\n addClass($player, 'art-lock')\n art.isLock = true\n art.emit('lock', true)\n }\n\n function setUnlock() {\n removeClass($player, 'art-lock')\n art.isLock = false\n art.emit('lock', false)\n }\n\n layers.add({\n name: 'lock',\n mounted($el) {\n const $lock = append($el, icons.lock)\n const $unlock = append($el, icons.unlock)\n setStyle($lock, 'display', 'none')\n\n art.on('lock', (state) => {\n if (state) {\n setStyle($lock, 'display', 'inline-flex')\n setStyle($unlock, 'display', 'none')\n }\n else {\n setStyle($lock, 'display', 'none')\n setStyle($unlock, 'display', 'inline-flex')\n }\n })\n },\n click() {\n if (getState()) {\n setUnlock()\n }\n else {\n setLock()\n }\n },\n })\n\n return {\n name: 'lock',\n get state() {\n return getState()\n },\n set state(value) {\n if (value) {\n setLock()\n }\n else {\n setUnlock()\n }\n },\n }\n}\n","import { addClass, removeClass } from '../utils'\n\nexport default function miniProgressBar(art) {\n art.on('control', (state) => {\n if (state) {\n removeClass(art.template.$player, 'art-mini-progress-bar')\n }\n else {\n addClass(art.template.$player, 'art-mini-progress-bar')\n }\n })\n\n return { name: 'mini-progress-bar' }\n}\n","import {\n addClass,\n append,\n createElement,\n def,\n errorHandle,\n getRect,\n has,\n includeFromEvent,\n inverseClass,\n isMobile,\n remove,\n replaceElement,\n setStyle,\n} from '../utils'\nimport Component from '../utils/component'\nimport aspectRatio from './aspectRatio'\nimport flip from './flip'\nimport playbackRate from './playbackRate'\nimport subtitleOffset from './subtitleOffset'\n\nexport default class Setting extends Component {\n constructor(art) {\n super(art)\n\n const {\n option,\n controls,\n template: { $setting },\n } = art\n\n this.name = 'setting'\n this.$parent = $setting\n\n this.id = 0\n this.active = null\n this.cache = new Map()\n this.option = [...this.builtin, ...option.settings]\n\n if (option.setting) {\n this.format()\n this.render()\n\n art.on('blur', () => {\n if (this.show) {\n this.show = false\n this.render()\n }\n })\n\n art.on('focus', (event) => {\n const isControl = includeFromEvent(event, controls.setting)\n const isSetting = includeFromEvent(event, this.$parent)\n if (this.show && !isControl && !isSetting) {\n this.show = false\n this.render()\n }\n })\n\n art.on('resize', () => this.resize())\n }\n }\n\n get builtin() {\n const result = []\n const { option } = this.art\n\n if (option.playbackRate) {\n result.push(playbackRate(this.art))\n }\n\n if (option.aspectRatio) {\n result.push(aspectRatio(this.art))\n }\n\n if (option.flip) {\n result.push(flip(this.art))\n }\n\n if (option.subtitleOffset) {\n result.push(subtitleOffset(this.art))\n }\n\n return result\n }\n\n traverse(callback, option = this.option) {\n for (let index = 0; index < option.length; index++) {\n const item = option[index]\n callback(item)\n if (item.selector?.length) {\n this.traverse(callback, item.selector)\n }\n }\n }\n\n check(target) {\n target.$parent.tooltip = target.html\n this.traverse((item) => {\n item.default = item === target\n if (item.default && item.$item) {\n inverseClass(item.$item, 'art-current')\n }\n }, target.$option)\n this.render(target.$parents)\n }\n\n format(option = this.option, parent, parents, names = []) {\n for (let index = 0; index < option.length; index++) {\n const item = option[index]\n\n if (item?.name) {\n errorHandle(!names.includes(item.name), `The [${item.name}] already exists in [setting]`)\n names.push(item.name)\n }\n else {\n item.name = `setting-${this.id++}`\n }\n\n if (!item.$formatted) {\n def(item, '$parent', {\n get: () => parent,\n })\n\n def(item, '$parents', {\n get: () => parents,\n })\n\n def(item, '$option', {\n get: () => option,\n })\n\n const $events = []\n def(item, '$events', {\n get: () => $events,\n })\n\n def(item, '$formatted', {\n get: () => true,\n })\n }\n\n this.format(item.selector || [], item, option, names)\n }\n\n this.option = option\n }\n\n find(name = '') {\n let result = null\n this.traverse((item) => {\n if (item.name === name) {\n result = item\n }\n })\n return result\n }\n\n resize() {\n const {\n controls,\n constructor: { SETTING_WIDTH, SETTING_ITEM_HEIGHT },\n template: { $player, $setting },\n } = this.art\n\n if (controls.setting && this.show) {\n const settingWidth = this.active[0]?.$parent?.width || SETTING_WIDTH\n const { left: controlLeft, width: controlWidth } = getRect(controls.setting)\n const { left: playerLeft, width: playerWidth } = getRect($player)\n const settingLeft = controlLeft - playerLeft + controlWidth / 2 - settingWidth / 2\n\n const settingHeight\n = this.active === this.option\n ? this.active.length * SETTING_ITEM_HEIGHT\n : (this.active.length + 1) * SETTING_ITEM_HEIGHT\n\n setStyle($setting, 'height', `${settingHeight}px`)\n setStyle($setting, 'width', `${settingWidth}px`)\n\n if (this.art.isRotate || isMobile)\n return\n\n if (settingLeft + settingWidth > playerWidth) {\n setStyle($setting, 'left', null)\n setStyle($setting, 'right', null)\n }\n else {\n setStyle($setting, 'left', `${settingLeft}px`)\n setStyle($setting, 'right', 'auto')\n }\n }\n }\n\n inactivate(item) {\n for (let index = 0; index < item.$events.length; index++) {\n this.art.events.remove(item.$events[index])\n }\n item.$events.length = 0\n }\n\n remove(name) {\n const item = this.find(name)\n errorHandle(item, `Can't find [${name}] in the [setting]`)\n const index = item.$option.indexOf(item)\n item.$option.splice(index, 1)\n this.inactivate(item)\n if (item.$item)\n remove(item.$item)\n this.render()\n }\n\n update(target) {\n const item = this.find(target.name)\n\n if (item) {\n this.inactivate(item)\n Object.assign(item, target)\n this.format()\n this.createItem(item, true)\n this.render()\n return item\n }\n else {\n return this.add(target)\n }\n }\n\n add(item, option = this.option) {\n option.push(item)\n this.format()\n this.createItem(item)\n this.render()\n return item\n }\n\n createHeader(item) {\n if (!this.cache.has(item.$option))\n return\n const $panel = this.cache.get(item.$option)\n\n const {\n proxy,\n icons: { arrowLeft },\n constructor: { SETTING_ITEM_HEIGHT },\n } = this.art\n\n const $item = createElement('div')\n setStyle($item, 'height', `${SETTING_ITEM_HEIGHT}px`)\n addClass($item, 'art-setting-item')\n addClass($item, 'art-setting-item-back')\n const $left = append($item, '
')\n const $icon = createElement('div')\n addClass($icon, 'art-setting-item-left-icon')\n append($icon, arrowLeft)\n append($left, $icon)\n append($left, item.$parent.html)\n const event = proxy($item, 'click', () => this.render(item.$parents))\n item.$parent.$events.push(event)\n append($panel, $item)\n }\n\n createItem(item, isUpdate = false) {\n if (!this.cache.has(item.$option))\n return\n const $panel = this.cache.get(item.$option)\n const oldItem = item.$item\n\n let type = 'selector'\n\n if (has(item, 'switch')) {\n type = 'switch'\n }\n\n if (has(item, 'range')) {\n type = 'range'\n }\n\n if (has(item, 'onClick')) {\n type = 'button'\n }\n\n const { icons, proxy, constructor } = this.art\n\n const $item = createElement('div')\n addClass($item, 'art-setting-item')\n setStyle($item, 'height', `${constructor.SETTING_ITEM_HEIGHT}px`)\n\n $item.dataset.name = item.name || ''\n $item.dataset.value = item.value || ''\n\n const $left = append($item, '
')\n const $right = append($item, '
')\n\n const $icon = createElement('div')\n addClass($icon, 'art-setting-item-left-icon')\n\n switch (type) {\n case 'button':\n case 'switch':\n case 'range':\n append($icon, item.icon || icons.config)\n break\n case 'selector':\n if (item.selector?.length) {\n append($icon, item.icon || icons.config)\n }\n else {\n append($icon, icons.check)\n }\n break\n default:\n break\n }\n\n append($left, $icon)\n\n def(item, '$icon', {\n configurable: true,\n get: () => $icon,\n })\n\n def(item, 'icon', {\n configurable: true,\n get() {\n return $icon.innerHTML\n },\n set(value) {\n $icon.innerHTML = ''\n append($icon, value)\n },\n })\n\n const $html = createElement('div')\n addClass($html, 'art-setting-item-left-text')\n append($html, item.html || '')\n append($left, $html)\n\n def(item, '$html', {\n configurable: true,\n get: () => $html,\n })\n\n def(item, 'html', {\n configurable: true,\n get() {\n return $html.innerHTML\n },\n set(value) {\n $html.innerHTML = ''\n append($html, value)\n },\n })\n\n const $tooltip = createElement('div')\n addClass($tooltip, 'art-setting-item-right-tooltip')\n append($tooltip, item.tooltip || '')\n append($right, $tooltip)\n\n def(item, '$tooltip', {\n configurable: true,\n get: () => $tooltip,\n })\n\n def(item, 'tooltip', {\n configurable: true,\n get() {\n return $tooltip.innerHTML\n },\n set(value) {\n $tooltip.innerHTML = ''\n append($tooltip, value)\n },\n })\n\n switch (type) {\n case 'switch': {\n const $switch = createElement('div')\n addClass($switch, 'art-setting-item-right-icon')\n const $switchOn = append($switch, icons.switchOn)\n const $switchOff = append($switch, icons.switchOff)\n setStyle(item.switch ? $switchOff : $switchOn, 'display', 'none')\n append($right, $switch)\n\n def(item, '$switch', {\n configurable: true,\n get: () => $switch,\n })\n\n let $switchValue = item.switch\n def(item, 'switch', {\n configurable: true,\n get: () => $switchValue,\n set(value) {\n $switchValue = value\n if (value) {\n setStyle($switchOff, 'display', 'none')\n setStyle($switchOn, 'display', null)\n }\n else {\n setStyle($switchOff, 'display', null)\n setStyle($switchOn, 'display', 'none')\n }\n },\n })\n break\n }\n case 'range':\n {\n const $state = createElement('div')\n addClass($state, 'art-setting-item-right-icon')\n const $range = append($state, '')\n $range.value = item.range[0]\n $range.min = item.range[1]\n $range.max = item.range[2]\n $range.step = item.range[3]\n addClass($range, 'art-setting-range')\n append($right, $state)\n\n def(item, '$range', {\n configurable: true,\n get: () => $range,\n })\n\n let $rangeValue = [...item.range]\n def(item, 'range', {\n configurable: true,\n get: () => $rangeValue,\n set(value) {\n $rangeValue = [...value]\n $range.value = value[0]\n $range.min = value[1]\n $range.max = value[2]\n $range.step = value[3]\n },\n })\n }\n break\n case 'selector':\n if (item.selector?.length) {\n const $state = createElement('div')\n addClass($state, 'art-setting-item-right-icon')\n append($state, icons.arrowRight)\n append($right, $state)\n }\n break\n default:\n break\n }\n\n switch (type) {\n case 'switch': {\n if (item.onSwitch) {\n const event = proxy($item, 'click', async (event) => {\n item.switch = await item.onSwitch.call(this.art, item, $item, event)\n })\n item.$events.push(event)\n }\n break\n }\n case 'range': {\n if (item.$range) {\n if (item.onRange) {\n const event = proxy(item.$range, 'change', async (event) => {\n item.range[0] = item.$range.valueAsNumber\n item.tooltip = await item.onRange.call(this.art, item, $item, event)\n })\n item.$events.push(event)\n }\n\n if (item.onChange) {\n const event = proxy(item.$range, 'input', async (event) => {\n item.range[0] = item.$range.valueAsNumber\n item.tooltip = await item.onChange.call(this.art, item, $item, event)\n })\n item.$events.push(event)\n }\n }\n break\n }\n case 'selector':\n {\n const event = proxy($item, 'click', async (event) => {\n if (item.selector?.length) {\n this.render(item.selector)\n }\n else {\n this.check(item)\n if (item.$parent.onSelect) {\n item.$parent.tooltip = await item.$parent.onSelect.call(this.art, item, $item, event)\n }\n }\n })\n\n item.$events.push(event)\n\n if (item.default) {\n addClass($item, 'art-current')\n }\n }\n break\n case 'button':\n if (item.onClick) {\n const event = proxy($item, 'click', async (event) => {\n item.tooltip = await item.onClick.call(this.art, item, $item, event)\n })\n item.$events.push(event)\n }\n break\n default:\n break\n }\n\n def(item, '$item', {\n configurable: true,\n get: () => $item,\n })\n\n if (isUpdate) {\n replaceElement($item, oldItem)\n }\n else {\n append($panel, $item)\n }\n\n if (item.mounted) {\n setTimeout(() => item.mounted.call(this.art, item.$item, item), 0)\n }\n }\n\n render(option = this.option) {\n this.active = option\n if (this.cache.has(option)) {\n const $panel = this.cache.get(option)\n inverseClass($panel, 'art-current')\n }\n else {\n const $panel = createElement('div')\n this.cache.set(option, $panel)\n addClass($panel, 'art-setting-panel')\n append(this.$parent, $panel)\n inverseClass($panel, 'art-current')\n\n if (option[0]?.$parent) {\n this.createHeader(option[0])\n }\n\n for (let index = 0; index < option.length; index++) {\n this.createItem(option[index])\n }\n }\n this.resize()\n }\n}\n","export default function aspectRatio(art) {\n const {\n i18n,\n icons,\n constructor: { SETTING_ITEM_WIDTH, ASPECT_RATIO },\n } = art\n\n function getI18n(value) {\n return value === 'default' ? i18n.get('Default') : value\n }\n\n function update() {\n const target = art.setting.find(`aspect-ratio-${art.aspectRatio}`)\n art.setting.check(target)\n }\n\n return {\n width: SETTING_ITEM_WIDTH,\n name: 'aspect-ratio',\n html: i18n.get('Aspect Ratio'),\n icon: icons.aspectRatio,\n tooltip: getI18n(art.aspectRatio),\n selector: ASPECT_RATIO.map((item) => {\n return {\n value: item,\n name: `aspect-ratio-${item}`,\n default: item === art.aspectRatio,\n html: getI18n(item),\n }\n }),\n onSelect(item) {\n art.aspectRatio = item.value\n return item.html\n },\n mounted: () => {\n update()\n art.on('aspectRatio', () => update())\n },\n }\n}\n","import { capitalize } from '../utils'\n\nexport default function flip(art) {\n const {\n i18n,\n icons,\n constructor: { SETTING_ITEM_WIDTH, FLIP },\n } = art\n\n function getI18n(value) {\n return i18n.get(capitalize(value))\n }\n\n function update() {\n const target = art.setting.find(`flip-${art.flip}`)\n art.setting.check(target)\n }\n\n return {\n width: SETTING_ITEM_WIDTH,\n name: 'flip',\n html: i18n.get('Video Flip'),\n tooltip: getI18n(art.flip),\n icon: icons.flip,\n selector: FLIP.map((item) => {\n return {\n value: item,\n name: `flip-${item}`,\n default: item === art.flip,\n html: getI18n(item),\n }\n }),\n onSelect(item) {\n art.flip = item.value\n return item.html\n },\n mounted: () => {\n update()\n art.on('flip', () => update())\n },\n }\n}\n","export default function playbackRate(art) {\n const {\n i18n,\n icons,\n constructor: { SETTING_ITEM_WIDTH, PLAYBACK_RATE },\n } = art\n\n function getI18n(value) {\n return value === 1.0 ? i18n.get('Normal') : value.toFixed(1)\n }\n\n function update() {\n const target = art.setting.find(`playback-rate-${art.playbackRate}`)\n art.setting.check(target)\n }\n\n return {\n width: SETTING_ITEM_WIDTH,\n name: 'playback-rate',\n html: i18n.get('Play Speed'),\n tooltip: getI18n(art.playbackRate),\n icon: icons.playbackRate,\n selector: PLAYBACK_RATE.map((item) => {\n return {\n value: item,\n name: `playback-rate-${item}`,\n default: item === art.playbackRate,\n html: getI18n(item),\n }\n }),\n onSelect(item) {\n art.playbackRate = item.value\n return item.html\n },\n mounted: () => {\n update()\n art.on('video:ratechange', () => update())\n },\n }\n}\n","export default function subtitleOffset(art) {\n const { i18n, icons, constructor } = art\n\n return {\n width: constructor.SETTING_ITEM_WIDTH,\n name: 'subtitle-offset',\n html: i18n.get('Subtitle Offset'),\n icon: icons.subtitle,\n tooltip: '0s',\n range: [0, -10, 10, 0.1],\n onChange(item) {\n art.subtitleOffset = item.range[0]\n return `${item.range[0]}s`\n },\n mounted: (_, item) => {\n art.on('subtitleOffset', (value) => {\n item.$range.value = value\n item.tooltip = `${value}s`\n })\n },\n }\n}\n","export default class Storage {\n constructor() {\n this.name = 'artplayer_settings'\n this.settings = {}\n }\n\n get(key) {\n try {\n const storage = JSON.parse(window.localStorage.getItem(this.name)) || {}\n return key ? storage[key] : storage\n }\n catch {\n return key ? this.settings[key] : this.settings\n }\n }\n\n set(key, value) {\n try {\n const storage = Object.assign({}, this.get(), {\n [key]: value,\n })\n window.localStorage.setItem(this.name, JSON.stringify(storage))\n }\n catch {\n this.settings[key] = value\n }\n }\n\n del(key) {\n try {\n const storage = this.get()\n delete storage[key]\n window.localStorage.setItem(this.name, JSON.stringify(storage))\n }\n catch {\n delete this.settings[key]\n }\n }\n\n clear() {\n try {\n window.localStorage.removeItem(this.name)\n }\n catch {\n this.settings = {}\n }\n }\n}\n","import validator from 'option-validator'\nimport scheme from './scheme'\nimport {\n append,\n assToVtt,\n createElement,\n escape,\n getExt,\n remove,\n setStyle,\n setStyles,\n srtToVtt,\n vttToBlob,\n} from './utils'\nimport Component from './utils/component'\n\nexport default class Subtitle extends Component {\n constructor(art) {\n super(art)\n this.name = 'subtitle'\n this.option = null\n this.destroyEvent = () => null\n this.init(art.option.subtitle)\n\n let lastState = false\n art.on('video:timeupdate', () => {\n if (!this.url)\n return\n const state = this.art.template.$video.webkitDisplayingFullscreen\n if (typeof state !== 'boolean')\n return\n if (state !== lastState) {\n lastState = state\n this.createTrack(state ? 'subtitles' : 'metadata', this.url)\n }\n })\n }\n\n get url() {\n return this.art.template.$track.src\n }\n\n set url(url) {\n this.switch(url)\n }\n\n get textTrack() {\n return this.art.template.$video?.textTracks?.[0]\n }\n\n get activeCues() {\n if (!this.textTrack)\n return []\n return Array.from(this.textTrack.activeCues)\n }\n\n get cues() {\n if (!this.textTrack)\n return []\n return Array.from(this.textTrack.cues)\n }\n\n style(key, value) {\n const { $subtitle } = this.art.template\n if (typeof key === 'object') {\n return setStyles($subtitle, key)\n }\n return setStyle($subtitle, key, value)\n }\n\n update() {\n const {\n option: { subtitle },\n template: { $subtitle },\n } = this.art\n\n $subtitle.innerHTML = ''\n if (!this.activeCues.length)\n return\n\n this.art.emit('subtitleBeforeUpdate', this.activeCues)\n $subtitle.innerHTML = this.activeCues\n .map((cue, index) =>\n cue.text\n .split(/\\r?\\n/)\n .filter(line => line.trim())\n .map(\n line =>\n `
\n ${subtitle.escape ? escape(line) : line}\n
`,\n )\n .join(''),\n )\n .join('')\n this.art.emit('subtitleAfterUpdate', this.activeCues)\n }\n\n async switch(url, newOption = {}) {\n const { i18n, notice, option } = this.art\n const subtitleOption = { ...option.subtitle, ...newOption, url }\n const subUrl = await this.init(subtitleOption)\n if (newOption.name) {\n notice.show = `${i18n.get('Switch Subtitle')}: ${newOption.name}`\n }\n return subUrl\n }\n\n createTrack(kind, url) {\n const { template, proxy, option } = this.art\n const { $video, $track } = template\n\n const $newTrack = createElement('track')\n $newTrack.default = true\n $newTrack.kind = kind\n $newTrack.src = url\n $newTrack.label = option.subtitle.name || 'Artplayer'\n $newTrack.track.mode = 'hidden'\n $newTrack.onload = () => {\n this.art.emit('subtitleLoad', this.cues, this.option)\n }\n\n this.art.events.remove(this.destroyEvent)\n $track.onload = null\n remove($track)\n append($video, $newTrack)\n template.$track = $newTrack\n this.destroyEvent = proxy(this.textTrack, 'cuechange', () => this.update())\n }\n\n async init(subtitleOption) {\n const {\n notice,\n template: { $subtitle },\n } = this.art\n\n if (!this.textTrack)\n return null\n validator(subtitleOption, scheme.subtitle)\n if (!subtitleOption.url)\n return\n this.option = subtitleOption\n this.style(subtitleOption.style)\n\n return fetch(subtitleOption.url)\n .then(response => response.arrayBuffer())\n .then((buffer) => {\n const decoder = new TextDecoder(subtitleOption.encoding)\n const text = decoder.decode(buffer)\n switch (subtitleOption.type || getExt(subtitleOption.url)) {\n case 'srt': {\n const vtt = srtToVtt(text)\n const vttNew = subtitleOption.onVttLoad(vtt)\n return vttToBlob(vttNew)\n }\n case 'ass': {\n const vtt = assToVtt(text)\n const vttNew = subtitleOption.onVttLoad(vtt)\n return vttToBlob(vttNew)\n }\n case 'vtt': {\n const vttNew = subtitleOption.onVttLoad(text)\n return vttToBlob(vttNew)\n }\n default:\n return subtitleOption.url\n }\n })\n .then((subUrl) => {\n $subtitle.innerHTML = ''\n if (this.url === subUrl)\n return subUrl\n URL.revokeObjectURL(this.url)\n this.createTrack('metadata', subUrl)\n return subUrl\n })\n .catch((err) => {\n $subtitle.innerHTML = ''\n notice.show = err\n throw err\n })\n }\n}\n","import { version } from '../package.json'\nimport { addClass, errorHandle, isMobile, query, replaceElement, supportsFlex } from './utils'\n\nexport default class Template {\n constructor(art) {\n this.art = art\n const { option, constructor } = art\n\n if (option.container instanceof Element) {\n this.$container = option.container\n }\n else {\n this.$container = query(option.container)\n errorHandle(this.$container, `No container element found by ${option.container}`)\n }\n\n errorHandle(supportsFlex(), 'The current browser does not support flex layout')\n\n const type = this.$container.tagName.toLowerCase()\n errorHandle(type === 'div', `Unsupported container element type, only support 'div' but got '${type}'`)\n\n errorHandle(\n constructor.instances.every(ins => ins.template.$container !== this.$container),\n 'Cannot mount multiple instances on the same dom element',\n )\n\n this.query = this.query.bind(this)\n this.$container.dataset.artId = art.id\n this.init()\n }\n\n static get html() {\n return `\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Player version:
\n
${version}
\n
\n
\n
Video url:
\n
\n
\n
\n
Video volume:
\n
\n
\n
\n
Video time:
\n
\n
\n
\n
Video duration:
\n
\n
\n
\n
Video resolution:
\n
\n x \n
\n
\n
\n
[x]
\n
\n
\n
\n `\n }\n\n query(className) {\n return query(className, this.$container)\n }\n\n init() {\n const { option } = this.art\n\n if (!option.useSSR) {\n this.$container.innerHTML = Template.html\n }\n\n this.$player = this.query('.art-video-player')\n this.$video = this.query('.art-video')\n this.$track = this.query('track')\n this.$poster = this.query('.art-poster')\n this.$subtitle = this.query('.art-subtitle')\n this.$danmuku = this.query('.art-danmuku')\n this.$bottom = this.query('.art-bottom')\n this.$progress = this.query('.art-progress')\n this.$controls = this.query('.art-controls')\n this.$controlsLeft = this.query('.art-controls-left')\n this.$controlsCenter = this.query('.art-controls-center')\n this.$controlsRight = this.query('.art-controls-right')\n this.$layer = this.query('.art-layers')\n this.$loading = this.query('.art-loading')\n this.$notice = this.query('.art-notice')\n this.$noticeInner = this.query('.art-notice-inner')\n this.$mask = this.query('.art-mask')\n this.$state = this.query('.art-state')\n this.$setting = this.query('.art-settings')\n this.$info = this.query('.art-info')\n this.$infoPanel = this.query('.art-info-panel')\n this.$infoClose = this.query('.art-info-close')\n this.$contextmenu = this.query('.art-contextmenus')\n\n if (option.proxy) {\n const video = option.proxy.call(this.art, this.art)\n errorHandle(\n video instanceof HTMLVideoElement || video instanceof HTMLCanvasElement,\n `Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'`,\n )\n replaceElement(video, this.$video)\n video.className = 'art-video'\n this.$video = video\n }\n\n if (option.backdrop) {\n addClass(this.$player, 'art-backdrop')\n }\n\n if (isMobile) {\n addClass(this.$player, 'art-mobile')\n }\n }\n\n destroy(removeHtml) {\n this.$video.src = ''\n if (removeHtml) {\n this.$container.innerHTML = ''\n }\n else {\n addClass(this.$player, 'art-destroy')\n }\n }\n}\n","export default class Emitter {\n on(name, fn, ctx) {\n const e = this.e || (this.e = {});\n (e[name] || (e[name] = [])).push({ fn, ctx })\n return this\n }\n\n once(name, fn, ctx) {\n const self = this\n function listener(...args) {\n self.off(name, listener)\n fn.apply(ctx, args)\n }\n listener._ = fn\n return this.on(name, listener, ctx)\n }\n\n emit(name, ...data) {\n const evtArr = ((this.e || (this.e = {}))[name] || []).slice()\n for (let i = 0; i < evtArr.length; i += 1) {\n evtArr[i].fn.apply(evtArr[i].ctx, data)\n }\n return this\n }\n\n off(name, callback) {\n const e = this.e || (this.e = {})\n const evts = e[name]\n const liveEvents = []\n if (evts && callback) {\n for (let i = 0, len = evts.length; i < len; i += 1) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i])\n }\n }\n if (liveEvents.length) {\n e[name] = liveEvents\n }\n else {\n delete e[name]\n }\n return this\n }\n}\n"],"names":["modules","entry","mainEntry","parcelRequireName","externals","distDir","publicUrl","devServer","globalObject","globalThis","self","window","global","previousRequire","importMap","i","cache","nodeRequire","module","require","bind","newRequire","name","jumped","currentRequire","err","Error","code","localRequire","resolve","x","id","Module","call","exports","res","isParcelRequire","moduleName","bundle","parent","register","Object","defineProperty","get","length","mainExports","define","amd","__globalThis","parcelHelpers","defineInteropFlag","_indexLess","_indexLessDefault","interopDefault","_optionValidator","_optionValidatorDefault","_packageJson","_config","_configDefault","_contextmenu","_contextmenuDefault","_control","_controlDefault","_events","_eventsDefault","_hotkey","_hotkeyDefault","_i18N","_i18NDefault","_icons","_iconsDefault","_info","_infoDefault","_layer","_layerDefault","_loading","_loadingDefault","_mask","_maskDefault","_notice","_noticeDefault","_player","_playerDefault","_plugins","_pluginsDefault","_scheme","_schemeDefault","_setting","_settingDefault","_storage","_storageDefault","_subtitle","_subtitleDefault","_template","_templateDefault","_utils","_emitter","_emitterDefault","instances","Artplayer","default","option","readyCallback","mergeOption","mergeDeep","container","isLock","isReady","isFocus","isInput","isRotate","isDestroy","template","events","storage","icons","i18n","notice","player","layers","controls","contextmenu","subtitle","info","loading","hotkey","mask","setting","plugins","on","DEBUG","log","msg","console","version","index","event","type","push","config","utils","scheme","Emitter","validator","kindOf","html","url","poster","theme","volume","isLive","muted","autoplay","autoSize","autoMini","loop","flip","playbackRate","aspectRatio","screenshot","pip","mutex","backdrop","fullscreen","fullscreenWeb","subtitleOffset","miniProgressBar","useSSR","playsInline","lock","gesture","fastForward","autoPlayback","autoOrientation","airplay","proxy","undefined","settings","quality","highlight","thumbnails","number","column","width","height","scale","style","escape","encoding","onVttLoad","vtt","moreVideoAttr","preload","isSafari","cssVar","customType","lang","navigator","language","toLowerCase","query","video","$video","destroy","removeHtml","splice","indexOf","emit","STYLE","CONTEXTMENU","NOTICE_TIME","SETTING_WIDTH","SETTING_ITEM_WIDTH","SETTING_ITEM_HEIGHT","RESIZE_TIME","SCROLL_TIME","SCROLL_GAP","AUTO_PLAYBACK_MAX","AUTO_PLAYBACK_MIN","AUTO_PLAYBACK_TIMEOUT","RECONNECT_TIME_MAX","RECONNECT_SLEEP_TIME","CONTROL_HIDE_TIME","DBCLICK_TIME","DBCLICK_FULLSCREEN","MOBILE_DBCLICK_PLAY","MOBILE_CLICK_PLAY","AUTO_ORIENTATION_TIME","INFO_LOOP_TIME","FAST_FORWARD_VALUE","FAST_FORWARD_TIME","TOUCH_MOVE_RATIO","VOLUME_STEP","SEEK_STEP","PLAYBACK_RATE","ASPECT_RATIO","FLIP","FULLSCREEN_WEB_IN_BODY","LOG_VERSION","USE_RAF","isBrowser","setStyleText","setTimeout","t","e","r","Symbol","iterator","prototype","n","toString","c","o","Array","isArray","isBuffer","callee","message","Date","toDateString","getDate","setDate","stackTraceLimit","RegExp","flags","ignoreCase","multiline","throw","return","next","slice","replace","f","arguments","s","y","a","u","concat","join","keys","forEach","split","map","trim","filter","Boolean","some","JSON","parse","properties","methods","prototypes","__esModule","value","exportAll","source","dest","key","hasOwnProperty","enumerable","export","destName","_component","_componentDefault","_aspectRatio","_aspectRatioDefault","_close","_closeDefault","_flip","_flipDefault","_playbackRate","_playbackRateDefault","_version","_versionDefault","Contextmenu","art","$parent","$contextmenu","isMobile","init","$player","add","preventDefault","show","mouseX","clientX","mouseY","clientY","cHeight","cWidth","left","cLeft","top","cTop","getRect","mHeight","mWidth","menuLeft","menuTop","setStyles","includeFromEvent","_compatibility","_dom","_error","_file","_format","_property","_time","userAgent","isWechat","isIE","isAndroid","isIOS","isIOS13","CUSTOM_USER_AGENT","test","MSStream","includes","maxTouchPoints","queryAll","addClass","removeClass","hasClass","append","remove","setStyle","getStyle","siblings","inverseClass","tooltip","isInViewport","replaceElement","createElement","getIcon","supportsFlex","loadImg","getComposedPath","selector","document","querySelector","from","querySelectorAll","target","className","classList","contains","child","Element","appendChild","insertAdjacentHTML","String","lastElementChild","lastChild","parentNode","removeChild","element","styles","numberType","getComputedStyle","getPropertyValue","Number","parseFloat","parentElement","children","item","pos","setAttribute","el","offset","rect","getBoundingClientRect","windowHeight","innerHeight","documentElement","clientHeight","windowWidth","innerWidth","clientWidth","vertInView","horInView","newChild","oldChild","replaceChild","tag","icon","$style","getElementById","readyState","addEventListener","head","textContent","div","display","Promise","reject","img","Image","onload","canvas","ctx","getContext","drawImage","toBlob","blob","blobUrl","URL","createObjectURL","scaledImg","onerror","revokeObjectURL","src","composedPath","path","node","ArtPlayerError","errorHandle","context","captureStackTrace","condition","download","elink","href","body","click","getExt","pop","clamp","num","b","Math","max","min","capitalize","str","charAt","toUpperCase","secondToTime","second","hour","floor","sec","unescape","reg","def","has","objects","isObject","reduce","prev","obj","pVal","oVal","getOwnPropertyDescriptor","srtToVtt","srtText","fixSrt","srt","_","$1","$2","ms","vttToBlob","vttText","Blob","assToVtt","ass","reAss","fixTime","time","arr","line","m","match","start","end","text","sleep","debounce","func","duration","timeout","args","effect","apply","clearTimeout","throttle","shouldWait","Map","update","toggle","getOption","ComponentOption","disable","$ref","childs","dataset","nextChild","find","insertAdjacentElement","destroyEvent","position","set","mounted","beforeUnmount","delete","assign","validElement","paths","onSelect","switch","onSwitch","range","onRange","onChange","$panel","$default","$current","close","toFixed","_airplay","_airplayDefault","_fullscreen","_fullscreenDefault","_fullscreenWeb","_fullscreenWebDefault","_pip","_pipDefault","_playAndPause","_playAndPauseDefault","_progress","_progressDefault","_screenshot","_screenshotDefault","_timeDefault","_volume","_volumeDefault","Control","isHover","timer","now","constructor","$bottom","playing","state","then","WebKitPlaybackTargetAvailabilityEvent","$progress","$controlsLeft","$controlsRight","check","$control_value","innerHTML","$control_option","$control_item","$value","$list","$item","$control","$fullscreenOn","fullscreenOn","$fullscreenOff","fullscreenOff","$fullscreenWebOn","fullscreenWebOn","$fullscreenWebOff","fullscreenWebOff","playAndPause","$play","play","$pause","pause","showPlay","showPause","getPosFromEvent","setCurrentTime","progress","eventLeft","touches","percentage","seek","options","tipTimer","isDragging","$hover","$loaded","$played","$highlight","$indicator","$tip","showTime","touch","tipWidth","indicator","isMobileDragging","played","loaded","showHighlight","button","resize","fontSize","padding","cursor","getTime","newTime","currentTime","$volume","$close","volumeClose","$inner","$slider","$handle","getVolumeFromEvent","_clickInit","_clickInitDefault","_gestureInit","_gestureInitDefault","_globalInit","_globalInitDefault","_hoverInit","_hoverInitDefault","_moveInit","_moveInitDefault","_resizeInit","_resizeInitDefault","_updateInit","_updateInitDefault","_viewInit","_viewInitDefault","destroyEvents","hover","callback","removeEventListener","mouseenter","mouseleave","clickInit","onDocumentClick","tagName","clickTimes","clicks","gestureInit","touchTarget","startX","startY","startTime","onTouchStart","pageX","pageY","onTouchMove","direction","GetSlideDirection","endX","endY","dy","dx","result","abs","angle","atan2","PI","isHorizontal","isVertical","ratioX","ratioY","ratio","globalInit","documentEvents","windowEvents","bindGlobalEvents","doc","ownerDocument","win","defaultView","hoverInit","moveInit","resizeInit","resizeFn","screen","orientation","onchange","updateInit","requestAnimationFrame","cancelAnimationFrame","viewInit","$container","scrollFn","mini","backward","forward","activeElement","editable","getAttribute","altKey","ctrlKey","metaKey","shiftKey","_zhCn","_zhCnDefault","languages","zhCn","_airplaySvg","_airplaySvgDefault","_arrowLeftSvg","_arrowLeftSvgDefault","_arrowRightSvg","_arrowRightSvgDefault","_aspectRatioSvg","_aspectRatioSvgDefault","_checkSvg","_checkSvgDefault","_closeSvg","_closeSvgDefault","_configSvg","_configSvgDefault","_errorSvg","_errorSvgDefault","_flipSvg","_flipSvgDefault","_fullscreenOffSvg","_fullscreenOffSvgDefault","_fullscreenOnSvg","_fullscreenOnSvgDefault","_fullscreenWebOffSvg","_fullscreenWebOffSvgDefault","_fullscreenWebOnSvg","_fullscreenWebOnSvgDefault","_loadingSvg","_loadingSvgDefault","_lockSvg","_lockSvgDefault","_pauseSvg","_pauseSvgDefault","_pipSvg","_pipSvgDefault","_playSvg","_playSvgDefault","_playbackRateSvg","_playbackRateSvgDefault","_screenshotSvg","_screenshotSvgDefault","_settingSvg","_settingSvgDefault","_stateSvg","_stateSvgDefault","_switchOffSvg","_switchOffSvgDefault","_switchOnSvg","_switchOnSvgDefault","_unlockSvg","_unlockSvgDefault","_volumeCloseSvg","_volumeCloseSvgDefault","_volumeSvg","_volumeSvgDefault","arrowLeft","arrowRight","unlock","switchOn","switchOff","error","Info","$infoPanel","$infoClose","$types","Layer","$layer","Loading","$loading","Mask","$state","$error","$noticeInner","_airplayMix","_airplayMixDefault","_aspectRatioMix","_aspectRatioMixDefault","_attrMix","_attrMixDefault","_autoHeightMix","_autoHeightMixDefault","_autoSizeMix","_autoSizeMixDefault","_cssVarMix","_cssVarMixDefault","_currentTimeMix","_currentTimeMixDefault","_durationMix","_durationMixDefault","_eventInit","_eventInitDefault","_flipMix","_flipMixDefault","_fullscreenMix","_fullscreenMixDefault","_fullscreenWebMix","_fullscreenWebMixDefault","_loadedMix","_loadedMixDefault","_miniMix","_miniMixDefault","_optionInit","_optionInitDefault","_pauseMix","_pauseMixDefault","_pipMix","_pipMixDefault","_playbackRateMix","_playbackRateMixDefault","_playedMix","_playedMixDefault","_playingMix","_playingMixDefault","_playMix","_playMixDefault","_posterMix","_posterMixDefault","_qualityMix","_qualityMixDefault","_rectMix","_rectMixDefault","_screenshotMix","_screenshotMixDefault","_seekMix","_seekMixDefault","_stateMix","_stateMixDefault","_subtitleOffsetMix","_subtitleOffsetMixDefault","_switchMix","_switchMixDefault","_themeMix","_themeMixDefault","_thumbnailsMix","_thumbnailsMixDefault","_toggleMix","_toggleMixDefault","_typeMix","_typeMixDefault","_urlMix","_urlMixDefault","_volumeMix","_volumeMixDefault","airplayMix","available","webkitShowPlaybackTargetPicker","availability","aspectRatioMix","ratioArray","setupRatio","playerRatio","attrMix","autoHeightMix","videoHeight","videoWidth","autoSizeMix","videoRatio","containerRatio","cssVarMix","setProperty","currentTimeMix","isNaN","durationMix","Infinity","eventInit","$poster","reconnectTime","once","flipMix","fullscreenMix","_screenfull","_screenfullDefault","isEnabled","isFullscreen","request","exit","webkitSupportsFullscreen","fullscreenElement","webkitEnterFullscreen","webkitExitFullscreen","methodMap","nativeAPI","unprefixedMethods","returnValue","methodList","exitFullscreenMethod","method","entries","eventNameMap","change","fullscreenchange","fullscreenerror","screenfull","onFullScreenEntered","off","returnPromise","requestFullscreen","catch","onFullScreenExit","exitFullscreen","eventName","raw","defineProperties","fullscreenEnabled","fullscreenWebMix","cssText","loadedMix","loadedTime","buffered","miniMix","lastPageX","lastPageY","hideMini","$mini","prepend","initState","initMini","createMini","optionInit","attr","volumeStorage","pauseMix","pipMix","pictureInPictureEnabled","nativePip","disablePictureInPicture","pictureInPictureElement","requestPictureInPicture","exitPictureInPicture","webkitSupportsPresentationMode","webkitPip","webkitSetPresentationMode","webkitPresentationMode","playbackRateMix","rate","playedMix","playingMix","paused","ended","playMix","instance","posterMix","backgroundImage","qualityMix","qualityDefault","marginRight","switchQuality","rectMix","pageXOffset","pageYOffset","screenshotMix","$canvas","toDataURL","dataUri","getDataURL","fileName","seekMix","stateMix","states","prop","subtitleOffsetMix","$track","cues","cue","originalStartTime","originalEndTime","endTime","switchMix","switchUrl","themeMix","thumbnailsMix","image","isLoad","$thumbnails","showThumbnails","posWidth","width2","naturalWidth","height2","perIndex","yIndex","ceil","xIndex","toggleMix","typeMix","urlMix","newUrl","oldUrl","typeName","typeCallback","volumeMix","parseInt","_autoOrientation","_autoOrientationDefault","_autoPlayback","_autoPlaybackDefault","_fastForward","_fastForwardDefault","_lock","_lockDefault","_miniProgressBar","_miniProgressBarDefault","plugin","pluginName","WEB_CLASS","FS_CLASS","fsLocked","needRotate","vw","vh","applyWebRotate","viewWidth","viewHeight","canLock","opposite","last","startsWith","$autoPlayback","$last","$jump","times","clear","del","isPress","lastPlaybackRate","onStop","getState","setLock","setUnlock","$el","$lock","$unlock","_subtitleOffset","_subtitleOffsetDefault","Setting","$setting","active","builtin","format","render","isControl","isSetting","traverse","$option","$parents","parents","names","$formatted","$events","settingWidth","controlLeft","controlWidth","playerLeft","playerWidth","settingLeft","settingHeight","inactivate","createItem","createHeader","$left","$icon","isUpdate","oldItem","$right","configurable","$html","$tooltip","$switch","$switchOn","$switchOff","$switchValue","$range","step","$rangeValue","valueAsNumber","onClick","getI18n","localStorage","getItem","setItem","stringify","removeItem","Subtitle","lastState","webkitDisplayingFullscreen","createTrack","textTrack","textTracks","activeCues","$subtitle","newOption","subtitleOption","subUrl","kind","$newTrack","label","track","mode","fetch","response","arrayBuffer","buffer","decoder","TextDecoder","decode","vttNew","Template","every","ins","artId","$danmuku","$controls","$controlsCenter","$notice","$mask","$info","HTMLVideoElement","HTMLCanvasElement","fn","listener","data","evtArr","evts","liveEvents","len","_default","parcelRequire4dc0"],"version":3,"file":"index.js.map"} \ No newline at end of file +{"mappings":"C,A,S,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,E,I,E,A,a,O,W,W,A,a,O,K,K,A,a,O,O,O,A,a,O,O,O,C,E,E,A,Y,O,C,C,E,E,C,C,E,C,E,E,C,E,C,E,E,E,K,E,C,E,E,A,a,O,Q,A,Y,O,O,O,E,O,O,C,I,C,Q,S,E,C,C,C,E,G,C,C,C,E,C,C,G,C,C,C,E,C,C,G,C,C,E,C,O,C,C,E,C,I,E,A,Y,O,C,C,E,E,C,C,E,C,G,C,G,E,O,E,E,C,G,G,E,O,E,E,C,G,G,G,A,U,O,E,O,E,G,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,O,C,S,C,E,I,E,C,C,E,C,E,C,E,C,O,A,M,E,E,C,E,E,K,C,C,E,I,E,C,C,E,C,I,E,M,C,G,C,C,E,C,E,C,I,C,E,O,C,E,E,E,O,C,E,C,O,C,C,E,C,O,C,S,E,C,E,I,E,E,O,C,G,M,A,C,I,E,C,E,E,E,C,C,E,e,C,C,E,E,M,C,S,C,E,I,C,E,C,E,I,C,M,C,E,I,C,O,C,E,I,C,O,C,C,C,E,E,O,C,E,E,K,C,E,E,M,C,E,E,O,C,K,E,E,S,C,K,E,E,S,C,K,E,E,C,C,E,E,Q,C,S,C,C,C,E,C,C,E,C,C,S,C,C,C,E,E,O,C,C,E,C,E,A,E,O,c,C,E,O,C,I,W,O,C,C,E,A,C,G,C,C,E,C,E,I,I,E,E,E,E,M,C,I,E,C,C,E,E,G,E,C,I,E,E,E,A,C,U,O,S,A,a,O,O,O,O,C,E,A,Y,O,Q,O,G,E,O,W,O,C,E,C,E,C,M,C,S,C,C,C,C,C,C,C,E,I,E,E,kD,E,iB,C,GCAA,IAAA,EAAA,EAAA,kC,E,E,c,C,GACA,EAAA,EAAA,oB,E,E,c,C,GACA,EAAA,EAAA,mBACA,EAAA,EAAA,Y,E,E,c,C,GACA,EAAA,EAAA,iB,E,E,c,C,GACA,EAAA,EAAA,a,E,E,c,C,GACA,EAAA,EAAA,Y,E,E,c,C,GACA,EAAA,EAAA,Y,E,E,c,C,GACA,EAAA,EAAA,U,E,E,c,C,GACA,EAAA,EAAA,W,E,E,c,C,GACA,EAAA,EAAA,U,E,E,c,C,GACA,EAAA,EAAA,W,E,E,c,C,GACA,EAAA,EAAA,a,E,E,c,C,GACA,EAAA,EAAA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AO,CAAG,0N,E,C,E,C,M,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,wJ,E,C,E,C,Q,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,wJ,E,C,E,C,M,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,q4B,E,C,E,C,M,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,0J,E,C,E,C,M,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,4jB,E,C,E,C,M,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,mN,E,C,E,C,Q,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,okB,E,C,E,C,M,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,stB,E,C,E,C,M,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,uR,E,C,E,C,Q,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,gS,E,C,E,C,M,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,umB,E,C,E,C,M,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,wmB,E,C,E,C,M,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,6kF,E,C,E,C,Q,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,mZ,E,C,E,C,M,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,6M,E,C,E,C,M,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,sgB,E,C,E,C,M,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,iO,E,C,E,C,Q,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,6a,E,C,E,C,Q,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,wX,E,C,E,C,M,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,svB,E,C,E,C,Q,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,qb,E,C,E,C,M,C,S,C,C,C,C,C,C,C,ECAjB,EAAO,OAAO,CAAG,0Y,E,C,E,C,Q,C,S,C,C,C,C,C,C,C,ECAjB,EA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","sources":["","packages/artplayer/src/index.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-960556ef08e919cb.js","node_modules/option-validator/dist/option-validator.js","packages/artplayer/package.json","packages/artplayer/src/config/index.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js","packages/artplayer/src/contextmenu/index.js","packages/artplayer/src/utils/index.js","packages/artplayer/src/utils/compatibility.js","packages/artplayer/src/utils/dom.js","packages/artplayer/src/utils/error.js","packages/artplayer/src/utils/file.js","packages/artplayer/src/utils/format.js","packages/artplayer/src/utils/property.js","packages/artplayer/src/utils/subtitle.js","packages/artplayer/src/utils/time.js","packages/artplayer/src/utils/component.js","packages/artplayer/src/scheme/index.js","packages/artplayer/src/contextmenu/aspectRatio.js","packages/artplayer/src/contextmenu/close.js","packages/artplayer/src/contextmenu/flip.js","packages/artplayer/src/contextmenu/info.js","packages/artplayer/src/contextmenu/playbackRate.js","packages/artplayer/src/contextmenu/version.js","packages/artplayer/src/control/index.js","packages/artplayer/src/control/airplay.js","packages/artplayer/src/control/fullscreen.js","packages/artplayer/src/control/fullscreenWeb.js","packages/artplayer/src/control/pip.js","packages/artplayer/src/control/playAndPause.js","packages/artplayer/src/control/progress.js","packages/artplayer/src/control/screenshot.js","packages/artplayer/src/control/setting.js","packages/artplayer/src/control/time.js","packages/artplayer/src/control/volume.js","packages/artplayer/src/events/index.js","packages/artplayer/src/events/clickInit.js","packages/artplayer/src/events/gestureInit.js","packages/artplayer/src/events/globalInit.js","packages/artplayer/src/events/hoverInit.js","packages/artplayer/src/events/moveInit.js","packages/artplayer/src/events/resizeInit.js","packages/artplayer/src/events/updateInit.js","packages/artplayer/src/events/viewInit.js","packages/artplayer/src/hotkey.js","packages/artplayer/src/i18n/index.js","packages/artplayer/src/i18n/zh-cn.js","packages/artplayer/src/icons/index.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-546152a37f7f6092.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-de54330ae9114809.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-1e49dcc3b9ae8c5b.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-4445cf7323017007.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-fa06f1d3017c1e19.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-4d7a4d1172e697fe.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-1d5d3013026e60f5.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-1de3075bca1b8c51.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-7fc68a4833ac008c.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-63c4bad7ae69925f.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-8052e5c279aae00c.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-46153b9f90efd612.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-23b379c594dbdefe.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-929f2c7a1ae1bb0b.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-de9910e54701bf07.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-8a83a1c52badcec4.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-f8e8eca5969eb4f8.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-51ecaa2c384a5873.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-19129552301e79bf.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-fed87cae3be49621.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-41db2cfe1a1c703a.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-c2878ac9772b5b5a.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-f8088cb143b06cc1.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-04f1f09754857dad.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-ff427c2f236809df.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-d94fc4aa3cdd08b7.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-976d047cfb342a19.js","packages/artplayer/src/info.js","packages/artplayer/src/layer.js","packages/artplayer/src/loading.js","packages/artplayer/src/mask.js","packages/artplayer/src/notice.js","packages/artplayer/src/player/index.js","packages/artplayer/src/player/airplayMix.js","packages/artplayer/src/player/aspectRatioMix.js","packages/artplayer/src/player/attrMix.js","packages/artplayer/src/player/autoHeightMix.js","packages/artplayer/src/player/autoSizeMix.js","packages/artplayer/src/player/cssVarMix.js","packages/artplayer/src/player/currentTimeMix.js","packages/artplayer/src/player/durationMix.js","packages/artplayer/src/player/eventInit.js","packages/artplayer/src/player/flipMix.js","packages/artplayer/src/player/fullscreenMix.js","packages/artplayer/src/libs/screenfull.js","packages/artplayer/src/player/fullscreenWebMix.js","packages/artplayer/src/player/loadedMix.js","packages/artplayer/src/player/miniMix.js","packages/artplayer/src/player/optionInit.js","packages/artplayer/src/player/pauseMix.js","packages/artplayer/src/player/pipMix.js","packages/artplayer/src/player/playbackRateMix.js","packages/artplayer/src/player/playedMix.js","packages/artplayer/src/player/playingMix.js","packages/artplayer/src/player/playMix.js","packages/artplayer/src/player/posterMix.js","packages/artplayer/src/player/qualityMix.js","packages/artplayer/src/player/rectMix.js","packages/artplayer/src/player/screenshotMix.js","packages/artplayer/src/player/seekMix.js","packages/artplayer/src/player/stateMix.js","packages/artplayer/src/player/subtitleOffsetMix.js","packages/artplayer/src/player/switchMix.js","packages/artplayer/src/player/themeMix.js","packages/artplayer/src/player/thumbnailsMix.js","packages/artplayer/src/player/toggleMix.js","packages/artplayer/src/player/typeMix.js","packages/artplayer/src/player/urlMix.js","packages/artplayer/src/player/volumeMix.js","packages/artplayer/src/plugins/index.js","packages/artplayer/src/plugins/autoOrientation.js","packages/artplayer/src/plugins/autoPlayback.js","packages/artplayer/src/plugins/fastForward.js","packages/artplayer/src/plugins/lock.js","packages/artplayer/src/plugins/miniProgressBar.js","packages/artplayer/src/setting/index.js","packages/artplayer/src/setting/aspectRatio.js","packages/artplayer/src/setting/flip.js","packages/artplayer/src/setting/playbackRate.js","packages/artplayer/src/setting/subtitleOffset.js","packages/artplayer/src/storage.js","packages/artplayer/src/subtitle.js","packages/artplayer/src/template.js","packages/artplayer/src/utils/emitter.js"],"sourcesContent":["// modules are defined as an array\n// [ module function, map of requires ]\n//\n// map of requires is short require name -> numeric require\n//\n// anything defined in a previous bundle is accessed via the\n// orig method which is the require for previous bundles\n\n(function (\n modules,\n entry,\n mainEntry,\n parcelRequireName,\n externals,\n distDir,\n publicUrl,\n devServer\n) {\n /* eslint-disable no-undef */\n var globalObject =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n /* eslint-enable no-undef */\n\n // Save the require from previous bundle to this closure if any\n var previousRequire =\n typeof globalObject[parcelRequireName] === 'function' &&\n globalObject[parcelRequireName];\n\n var importMap = previousRequire.i || {};\n var cache = previousRequire.cache || {};\n // Do not use `require` to prevent Webpack from trying to bundle this call\n var nodeRequire =\n typeof module !== 'undefined' &&\n typeof module.require === 'function' &&\n module.require.bind(module);\n\n function newRequire(name, jumped) {\n if (!cache[name]) {\n if (!modules[name]) {\n if (externals[name]) {\n return externals[name];\n }\n // if we cannot find the module within our internal map or\n // cache jump to the current global require ie. the last bundle\n // that was added to the page.\n var currentRequire =\n typeof globalObject[parcelRequireName] === 'function' &&\n globalObject[parcelRequireName];\n if (!jumped && currentRequire) {\n return currentRequire(name, true);\n }\n\n // If there are other bundles on this page the require from the\n // previous one is saved to 'previousRequire'. Repeat this as\n // many times as there are bundles until the module is found or\n // we exhaust the require chain.\n if (previousRequire) {\n return previousRequire(name, true);\n }\n\n // Try the node require function if it exists.\n if (nodeRequire && typeof name === 'string') {\n return nodeRequire(name);\n }\n\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n }\n\n localRequire.resolve = resolve;\n localRequire.cache = {};\n\n var module = (cache[name] = new newRequire.Module(name));\n\n modules[name][0].call(\n module.exports,\n localRequire,\n module,\n module.exports,\n globalObject\n );\n }\n\n return cache[name].exports;\n\n function localRequire(x) {\n var res = localRequire.resolve(x);\n return res === false ? {} : newRequire(res);\n }\n\n function resolve(x) {\n var id = modules[name][1][x];\n return id != null ? id : x;\n }\n }\n\n function Module(moduleName) {\n this.id = moduleName;\n this.bundle = newRequire;\n this.require = nodeRequire;\n this.exports = {};\n }\n\n newRequire.isParcelRequire = true;\n newRequire.Module = Module;\n newRequire.modules = modules;\n newRequire.cache = cache;\n newRequire.parent = previousRequire;\n newRequire.distDir = distDir;\n newRequire.publicUrl = publicUrl;\n newRequire.devServer = devServer;\n newRequire.i = importMap;\n newRequire.register = function (id, exports) {\n modules[id] = [\n function (require, module) {\n module.exports = exports;\n },\n {},\n ];\n };\n\n // Only insert newRequire.load when it is actually used.\n // The code in this file is linted against ES5, so dynamic import is not allowed.\n // INSERT_LOAD_HERE\n\n Object.defineProperty(newRequire, 'root', {\n get: function () {\n return globalObject[parcelRequireName];\n },\n });\n\n globalObject[parcelRequireName] = newRequire;\n\n for (var i = 0; i < entry.length; i++) {\n newRequire(entry[i]);\n }\n\n if (mainEntry) {\n // Expose entry point to Node, AMD or browser globals\n // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js\n var mainExports = newRequire(mainEntry);\n\n // CommonJS\n if (typeof exports === 'object' && typeof module !== 'undefined') {\n module.exports = mainExports;\n\n // RequireJS\n } else if (typeof define === 'function' && define.amd) {\n define(function () {\n return mainExports;\n });\n }\n }\n})({\"kXXX5\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _indexLess = require(\"bundle-text:./style/index.less\");\nvar _indexLessDefault = parcelHelpers.interopDefault(_indexLess);\nvar _optionValidator = require(\"option-validator\");\nvar _optionValidatorDefault = parcelHelpers.interopDefault(_optionValidator);\nvar _packageJson = require(\"../package.json\");\nvar _config = require(\"./config\");\nvar _configDefault = parcelHelpers.interopDefault(_config);\nvar _contextmenu = require(\"./contextmenu\");\nvar _contextmenuDefault = parcelHelpers.interopDefault(_contextmenu);\nvar _control = require(\"./control\");\nvar _controlDefault = parcelHelpers.interopDefault(_control);\nvar _events = require(\"./events\");\nvar _eventsDefault = parcelHelpers.interopDefault(_events);\nvar _hotkey = require(\"./hotkey\");\nvar _hotkeyDefault = parcelHelpers.interopDefault(_hotkey);\nvar _i18N = require(\"./i18n\");\nvar _i18NDefault = parcelHelpers.interopDefault(_i18N);\nvar _icons = require(\"./icons\");\nvar _iconsDefault = parcelHelpers.interopDefault(_icons);\nvar _info = require(\"./info\");\nvar _infoDefault = parcelHelpers.interopDefault(_info);\nvar _layer = require(\"./layer\");\nvar _layerDefault = parcelHelpers.interopDefault(_layer);\nvar _loading = require(\"./loading\");\nvar _loadingDefault = parcelHelpers.interopDefault(_loading);\nvar _mask = require(\"./mask\");\nvar _maskDefault = parcelHelpers.interopDefault(_mask);\nvar _notice = require(\"./notice\");\nvar _noticeDefault = parcelHelpers.interopDefault(_notice);\nvar _player = require(\"./player\");\nvar _playerDefault = parcelHelpers.interopDefault(_player);\nvar _plugins = require(\"./plugins\");\nvar _pluginsDefault = parcelHelpers.interopDefault(_plugins);\nvar _scheme = require(\"./scheme\");\nvar _schemeDefault = parcelHelpers.interopDefault(_scheme);\nvar _setting = require(\"./setting\");\nvar _settingDefault = parcelHelpers.interopDefault(_setting);\nvar _storage = require(\"./storage\");\nvar _storageDefault = parcelHelpers.interopDefault(_storage);\nvar _subtitle = require(\"./subtitle\");\nvar _subtitleDefault = parcelHelpers.interopDefault(_subtitle);\nvar _template = require(\"./template\");\nvar _templateDefault = parcelHelpers.interopDefault(_template);\nvar _utils = require(\"./utils\");\nvar _emitter = require(\"./utils/emitter\");\nvar _emitterDefault = parcelHelpers.interopDefault(_emitter);\nlet id = 0;\nconst instances = [];\nclass Artplayer extends (0, _emitterDefault.default) {\n constructor(option, readyCallback){\n super();\n if (!_utils.isBrowser) throw new Error('Artplayer can only be used in the browser environment');\n this.id = ++id;\n const mergeOption = _utils.mergeDeep(Artplayer.option, option);\n mergeOption.container = option.container;\n this.option = (0, _optionValidatorDefault.default)(mergeOption, (0, _schemeDefault.default));\n this.isLock = false;\n this.isReady = false;\n this.isFocus = false;\n this.isInput = false;\n this.isRotate = false;\n this.isDestroy = false;\n this.template = new (0, _templateDefault.default)(this);\n this.events = new (0, _eventsDefault.default)(this);\n this.storage = new (0, _storageDefault.default)(this);\n this.icons = new (0, _iconsDefault.default)(this);\n this.i18n = new (0, _i18NDefault.default)(this);\n this.notice = new (0, _noticeDefault.default)(this);\n this.player = new (0, _playerDefault.default)(this);\n this.layers = new (0, _layerDefault.default)(this);\n this.controls = new (0, _controlDefault.default)(this);\n this.contextmenu = new (0, _contextmenuDefault.default)(this);\n this.subtitle = new (0, _subtitleDefault.default)(this);\n this.info = new (0, _infoDefault.default)(this);\n this.loading = new (0, _loadingDefault.default)(this);\n this.hotkey = new (0, _hotkeyDefault.default)(this);\n this.mask = new (0, _maskDefault.default)(this);\n this.setting = new (0, _settingDefault.default)(this);\n this.plugins = new (0, _pluginsDefault.default)(this);\n if (typeof readyCallback === 'function') this.on('ready', ()=>readyCallback.call(this, this));\n if (Artplayer.DEBUG) {\n // eslint-disable-next-line no-console\n const log = (msg)=>console.log(`[ART.${this.id}] -> ${msg}`);\n log(`Version@${Artplayer.version}`);\n for(let index = 0; index < (0, _configDefault.default).events.length; index++)this.on(`video:${(0, _configDefault.default).events[index]}`, (event)=>log(`Event@${event.type}`));\n }\n instances.push(this);\n }\n static get instances() {\n return instances;\n }\n static get version() {\n return 0, _packageJson.version;\n }\n static get config() {\n return 0, _configDefault.default;\n }\n static get utils() {\n return _utils;\n }\n static get scheme() {\n return 0, _schemeDefault.default;\n }\n static get Emitter() {\n return 0, _emitterDefault.default;\n }\n static get validator() {\n return 0, _optionValidatorDefault.default;\n }\n static get kindOf() {\n return (0, _optionValidatorDefault.default).kindOf;\n }\n static get html() {\n return (0, _templateDefault.default).html;\n }\n static get option() {\n return {\n id: '',\n container: '#artplayer',\n url: '',\n poster: '',\n type: '',\n theme: '#f00',\n volume: 0.7,\n isLive: false,\n muted: false,\n autoplay: false,\n autoSize: false,\n autoMini: false,\n loop: false,\n flip: false,\n playbackRate: false,\n aspectRatio: false,\n screenshot: false,\n setting: false,\n hotkey: true,\n pip: false,\n mutex: true,\n backdrop: true,\n fullscreen: false,\n fullscreenWeb: false,\n subtitleOffset: false,\n miniProgressBar: false,\n useSSR: false,\n playsInline: true,\n lock: false,\n gesture: true,\n fastForward: false,\n autoPlayback: false,\n autoOrientation: false,\n airplay: false,\n proxy: undefined,\n layers: [],\n contextmenu: [],\n controls: [],\n settings: [],\n quality: [],\n highlight: [],\n plugins: [],\n thumbnails: {\n url: '',\n number: 60,\n column: 10,\n width: 0,\n height: 0,\n scale: 1\n },\n subtitle: {\n url: '',\n type: '',\n style: {},\n name: '',\n escape: true,\n encoding: 'utf-8',\n onVttLoad: (vtt)=>vtt\n },\n moreVideoAttr: {\n controls: false,\n preload: _utils.isSafari ? 'auto' : 'metadata'\n },\n i18n: {},\n icons: {},\n cssVar: {},\n customType: {},\n lang: navigator?.language.toLowerCase()\n };\n }\n get proxy() {\n return this.events.proxy;\n }\n get query() {\n return this.template.query;\n }\n get video() {\n return this.template.$video;\n }\n destroy(removeHtml = true) {\n this.events.destroy();\n this.template.destroy(removeHtml);\n instances.splice(instances.indexOf(this), 1);\n this.isDestroy = true;\n this.emit('destroy');\n }\n}\nexports.default = Artplayer;\nArtplayer.STYLE = (0, _indexLessDefault.default);\nArtplayer.DEBUG = false;\nArtplayer.CONTEXTMENU = true;\nArtplayer.NOTICE_TIME = 2000;\nArtplayer.SETTING_WIDTH = 250;\nArtplayer.SETTING_ITEM_WIDTH = 200;\nArtplayer.SETTING_ITEM_HEIGHT = 35;\nArtplayer.RESIZE_TIME = 200;\nArtplayer.SCROLL_TIME = 200;\nArtplayer.SCROLL_GAP = 50;\nArtplayer.AUTO_PLAYBACK_MAX = 10;\nArtplayer.AUTO_PLAYBACK_MIN = 5;\nArtplayer.AUTO_PLAYBACK_TIMEOUT = 3000;\nArtplayer.RECONNECT_TIME_MAX = 5;\nArtplayer.RECONNECT_SLEEP_TIME = 1000;\nArtplayer.CONTROL_HIDE_TIME = 3000;\nArtplayer.DBCLICK_TIME = 300;\nArtplayer.DBCLICK_FULLSCREEN = true;\nArtplayer.MOBILE_DBCLICK_PLAY = true;\nArtplayer.MOBILE_CLICK_PLAY = false;\nArtplayer.AUTO_ORIENTATION_TIME = 200;\nArtplayer.INFO_LOOP_TIME = 1000;\nArtplayer.FAST_FORWARD_VALUE = 3;\nArtplayer.FAST_FORWARD_TIME = 1000;\nArtplayer.TOUCH_MOVE_RATIO = 0.5;\nArtplayer.VOLUME_STEP = 0.1;\nArtplayer.SEEK_STEP = 5;\nArtplayer.PLAYBACK_RATE = [\n 0.5,\n 0.75,\n 1,\n 1.25,\n 1.5,\n 2\n];\nArtplayer.ASPECT_RATIO = [\n 'default',\n '4:3',\n '16:9'\n];\nArtplayer.FLIP = [\n 'normal',\n 'horizontal',\n 'vertical'\n];\nArtplayer.FULLSCREEN_WEB_IN_BODY = false;\nArtplayer.LOG_VERSION = true;\nArtplayer.USE_RAF = false;\nif (_utils.isBrowser) {\n window.Artplayer = Artplayer;\n _utils.setStyleText('artplayer-style', (0, _indexLessDefault.default));\n setTimeout(()=>{\n if (Artplayer.LOG_VERSION) // eslint-disable-next-line no-console\n console.log(`%c ArtPlayer %c ${Artplayer.version} %c https://artplayer.org`, 'color: #fff; background: #5f5f5f', 'color: #fff; background: #4bc729', '');\n }, 100);\n}\n\n},{\"bundle-text:./style/index.less\":\"LDUUV\",\"option-validator\":\"hw47a\",\"../package.json\":\"2r8Ra\",\"./config\":\"7jhZp\",\"./contextmenu\":\"jFWxb\",\"./control\":\"8He0l\",\"./events\":\"eFzfA\",\"./hotkey\":\"aLFu1\",\"./i18n\":\"g6kBT\",\"./icons\":\"exeCy\",\"./info\":\"cUKxy\",\"./layer\":\"fIHKi\",\"./loading\":\"a7tJk\",\"./mask\":\"chOzM\",\"./notice\":\"qalnP\",\"./player\":\"hZaaw\",\"./plugins\":\"iKxTB\",\"./scheme\":\"9Np13\",\"./setting\":\"l15NM\",\"./storage\":\"1bevC\",\"./subtitle\":\"aD26q\",\"./template\":\"3s0cr\",\"./utils\":\"ga71d\",\"./utils/emitter\":\"2Y43P\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"LDUUV\":[function(require,module,exports,__globalThis) {\nmodule.exports = \".art-video-player{--art-theme:red;--art-font-color:#fff;--art-background-color:#000;--art-text-shadow-color:#00000080;--art-transition-duration:.2s;--art-padding:10px;--art-border-radius:3px;--art-progress-height:6px;--art-progress-color:#ffffff40;--art-hover-color:#ffffff40;--art-loaded-color:#ffffff40;--art-state-size:80px;--art-state-opacity:.8;--art-bottom-height:100px;--art-bottom-offset:20px;--art-bottom-gap:5px;--art-highlight-width:8px;--art-highlight-color:#ffffff80;--art-control-height:46px;--art-control-opacity:.75;--art-control-icon-size:36px;--art-control-icon-scale:1.1;--art-volume-height:120px;--art-volume-handle-size:14px;--art-lock-size:36px;--art-indicator-scale:0;--art-indicator-size:16px;--art-fullscreen-web-index:9999;--art-settings-icon-size:24px;--art-settings-max-height:300px;--art-selector-max-height:300px;--art-contextmenus-min-width:250px;--art-subtitle-font-size:20px;--art-subtitle-gap:5px;--art-subtitle-bottom:15px;--art-subtitle-border:#000;--art-widget-background:#000000d9;--art-tip-background:#000000b3;--art-scrollbar-size:4px;--art-scrollbar-background:#ffffff40;--art-scrollbar-background-hover:#ffffff80;--art-mini-progress-height:2px}.art-bg-cover{background-position:50%;background-repeat:no-repeat;background-size:cover}.art-bottom-gradient{background-image:linear-gradient(#0000,#0006,#000);background-position:bottom;background-repeat:repeat-x}.art-backdrop-filter{backdrop-filter:saturate(180%)blur(20px);background-color:#000000bf!important}.art-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.art-video-player{zoom:1;text-align:left;user-select:none;box-sizing:border-box;width:100%;height:100%;color:var(--art-font-color);background-color:var(--art-background-color);text-shadow:0 0 2px var(--art-text-shadow-color);-webkit-tap-highlight-color:#0000;-ms-touch-action:manipulation;touch-action:manipulation;-ms-high-contrast-adjust:none;direction:ltr;outline:0;margin:0 auto;padding:0;font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,Roboto,Arial,sans-serif;font-size:14px;line-height:1.3;position:relative}.art-video-player *,.art-video-player :before,.art-video-player :after{box-sizing:border-box}.art-video-player ::-webkit-scrollbar{width:var(--art-scrollbar-size);height:var(--art-scrollbar-size)}.art-video-player ::-webkit-scrollbar-thumb{background-color:var(--art-scrollbar-background)}.art-video-player ::-webkit-scrollbar-thumb:hover{background-color:var(--art-scrollbar-background-hover)}.art-video-player img{vertical-align:top;max-width:100%}.art-video-player svg{fill:var(--art-font-color)}.art-video-player a{color:var(--art-font-color);text-decoration:none}.art-icon{justify-content:center;align-items:center;line-height:1;display:flex}.art-video-player.art-backdrop .art-contextmenus,.art-video-player.art-backdrop .art-info,.art-video-player.art-backdrop .art-settings,.art-video-player.art-backdrop .art-layer-auto-playback,.art-video-player.art-backdrop .art-selector-list,.art-video-player.art-backdrop .art-volume-inner{backdrop-filter:saturate(180%)blur(20px);background-color:#000000bf!important}.art-video{z-index:10;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.art-poster{z-index:11;pointer-events:none;background-position:50%;background-repeat:no-repeat;background-size:cover;width:100%;height:100%;position:absolute;inset:0}.art-video-player .art-subtitle{z-index:20;text-align:center;pointer-events:none;justify-content:center;align-items:center;gap:var(--art-subtitle-gap);width:100%;bottom:var(--art-subtitle-bottom);font-size:var(--art-subtitle-font-size);transition:bottom var(--art-transition-duration)ease;text-shadow:var(--art-subtitle-border)1px 0 1px,var(--art-subtitle-border)0 1px 1px,var(--art-subtitle-border)-1px 0 1px,var(--art-subtitle-border)0 -1px 1px,var(--art-subtitle-border)1px 1px 1px,var(--art-subtitle-border)-1px -1px 1px,var(--art-subtitle-border)1px -1px 1px,var(--art-subtitle-border)-1px 1px 1px;flex-direction:column;padding:0 5%;display:none;position:absolute}.art-video-player.art-subtitle-show .art-subtitle{display:flex}.art-video-player.art-control-show .art-subtitle{bottom:calc(var(--art-control-height) + var(--art-subtitle-bottom))}.art-danmuku{z-index:30;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.art-video-player .art-layers{z-index:40;pointer-events:none;width:100%;height:100%;display:none;position:absolute;inset:0}.art-video-player .art-layers .art-layer{pointer-events:auto}.art-video-player.art-layer-show .art-layers{display:flex}.art-video-player .art-mask{z-index:50;pointer-events:none;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;inset:0}.art-video-player .art-mask .art-state{opacity:0;width:var(--art-state-size);height:var(--art-state-size);transition:all var(--art-transition-duration)ease;justify-content:center;align-items:center;display:flex;transform:scale(2)}.art-video-player.art-mask-show .art-state{cursor:pointer;pointer-events:auto;opacity:var(--art-state-opacity);transform:scale(1)}.art-video-player.art-loading-show .art-state{display:none}.art-video-player .art-loading{z-index:70;pointer-events:none;justify-content:center;align-items:center;width:100%;height:100%;display:none;position:absolute;inset:0}.art-video-player.art-loading-show .art-loading{display:flex}.art-video-player .art-bottom{z-index:60;opacity:0;pointer-events:none;width:100%;height:100%;padding:0 var(--art-padding);transition:all var(--art-transition-duration)ease;background-size:100% var(--art-bottom-height);background-image:linear-gradient(#0000,#0006,#000);background-position:bottom;background-repeat:repeat-x;flex-direction:column;justify-content:flex-end;display:flex;position:absolute;inset:0;overflow:hidden}.art-video-player .art-bottom .art-controls,.art-video-player .art-bottom .art-progress{transform:translateY(var(--art-bottom-offset));transition:transform var(--art-transition-duration)ease}.art-video-player.art-control-show .art-bottom,.art-video-player.art-hover .art-bottom{opacity:1}.art-video-player.art-control-show .art-bottom .art-controls,.art-video-player.art-hover .art-bottom .art-controls,.art-video-player.art-control-show .art-bottom .art-progress,.art-video-player.art-hover .art-bottom .art-progress{transform:translateY(0)}.art-bottom .art-progress{z-index:0;pointer-events:auto;padding-bottom:var(--art-bottom-gap);position:relative}.art-bottom .art-progress .art-control-progress{cursor:pointer;height:var(--art-progress-height);justify-content:center;align-items:center;display:flex;position:relative}.art-bottom .art-progress .art-control-progress .art-control-progress-inner{width:100%;height:50%;transition:height var(--art-transition-duration)ease;background-color:var(--art-progress-color);align-items:center;display:flex;position:relative}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-hover{z-index:0;background-color:var(--art-hover-color);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{z-index:10;background-color:var(--art-loaded-color);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-played{z-index:20;background-color:var(--art-theme);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{z-index:30;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{z-index:0;pointer-events:auto;width:100%;height:100%;transform:translateX(calc(var(--art-highlight-width)/-2));background-color:var(--art-highlight-color);position:absolute;inset:0 auto 0 0;width:var(--art-highlight-width)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{z-index:40;width:var(--art-indicator-size);height:var(--art-indicator-size);transform:scale(var(--art-indicator-scale));margin-left:calc(var(--art-indicator-size)/-2);transition:transform var(--art-transition-duration)ease;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;left:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator .art-icon{pointer-events:none;width:100%;height:100%}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:hover{transform:scale(1.2)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:active{transform:scale(1)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip{z-index:50;border-radius:var(--art-border-radius);white-space:nowrap;background-color:var(--art-tip-background);padding:3px 5px;font-size:12px;line-height:1;display:none;position:absolute;top:-25px;left:0}.art-bottom .art-progress .art-control-progress:hover .art-control-progress-inner{height:100%}.art-bottom .art-progress .art-control-thumbnails{bottom:calc(var(--art-bottom-gap) + 10px);border-radius:var(--art-border-radius);pointer-events:none;background-color:var(--art-widget-background);display:none;position:absolute;left:0;box-shadow:0 1px 3px #0003,0 1px 2px -1px #0003}.art-bottom:hover .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{transform:scale(1)}.art-controls{z-index:10;pointer-events:auto;height:var(--art-control-height);justify-content:space-between;align-items:center;display:flex;position:relative}.art-controls .art-controls-left,.art-controls .art-controls-right{height:100%;display:flex}.art-controls .art-controls-center{flex:1;justify-content:center;align-items:center;height:100%;padding:0 10px;display:none}.art-controls .art-controls-right{justify-content:flex-end}.art-controls .art-control{cursor:pointer;white-space:nowrap;opacity:var(--art-control-opacity);min-height:var(--art-control-height);min-width:var(--art-control-height);transition:opacity var(--art-transition-duration)ease;flex-shrink:0;justify-content:center;align-items:center;display:flex}.art-controls .art-control .art-icon{height:var(--art-control-icon-size);width:var(--art-control-icon-size);transform:scale(var(--art-control-icon-scale));transition:transform var(--art-transition-duration)ease}.art-controls .art-control .art-icon:active{transform:scale(calc(var(--art-control-icon-scale)*.8))}.art-controls .art-control:hover{opacity:1}.art-control-volume{position:relative}.art-control-volume .art-volume-panel{text-align:center;cursor:default;opacity:0;pointer-events:none;left:0;right:0;bottom:var(--art-control-height);width:var(--art-control-height);height:var(--art-volume-height);transition:all var(--art-transition-duration)ease;justify-content:center;align-items:center;padding:0 5px;font-size:12px;display:flex;position:absolute;transform:translateY(10px)}.art-control-volume .art-volume-panel .art-volume-inner{border-radius:var(--art-border-radius);background-color:var(--art-widget-background);flex-direction:column;align-items:center;gap:10px;width:100%;height:100%;padding:10px 0 12px;display:flex}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider{cursor:pointer;flex:1;justify-content:center;width:100%;display:flex;position:relative}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle{border-radius:var(--art-border-radius);background-color:#ffffff40;justify-content:center;width:2px;display:flex;position:relative;overflow:hidden}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle .art-volume-loaded{z-index:0;background-color:var(--art-theme);width:100%;height:100%;position:absolute;inset:0}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-indicator{width:var(--art-volume-handle-size);height:var(--art-volume-handle-size);margin-top:calc(var(--art-volume-handle-size)/-2);background-color:var(--art-theme);transition:transform var(--art-transition-duration)ease;border-radius:100%;flex-shrink:0;position:absolute;transform:scale(1)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider:active .art-volume-indicator{transform:scale(.9)}.art-control-volume:hover .art-volume-panel{opacity:1;pointer-events:auto;transform:translateY(0)}.art-video-player .art-notice{z-index:80;width:100%;height:auto;padding:var(--art-padding);pointer-events:none;display:none;position:absolute;inset:0 0 auto}.art-video-player .art-notice .art-notice-inner{border-radius:var(--art-border-radius);background-color:var(--art-tip-background);padding:5px;line-height:1;display:inline-flex}.art-video-player.art-notice-show .art-notice{display:flex}.art-video-player .art-contextmenus{z-index:120;border-radius:var(--art-border-radius);background-color:var(--art-widget-background);min-width:var(--art-contextmenus-min-width);flex-direction:column;padding:5px 0;font-size:12px;display:none;position:absolute}.art-video-player .art-contextmenus .art-contextmenu{cursor:pointer;border-bottom:1px solid #ffffff1a;padding:10px 15px;display:flex}.art-video-player .art-contextmenus .art-contextmenu span{padding:0 8px}.art-video-player .art-contextmenus .art-contextmenu span:hover,.art-video-player .art-contextmenus .art-contextmenu span.art-current{color:var(--art-theme)}.art-video-player .art-contextmenus .art-contextmenu:hover{background-color:#ffffff1a}.art-video-player .art-contextmenus .art-contextmenu:last-child{border-bottom:none}.art-video-player.art-contextmenu-show .art-contextmenus{display:flex}.art-video-player .art-settings{z-index:90;border-radius:var(--art-border-radius);max-height:var(--art-settings-max-height);left:auto;right:var(--art-padding);bottom:var(--art-control-height);transition:all var(--art-transition-duration)ease;background-color:var(--art-widget-background);flex-direction:column;display:none;position:absolute;overflow:hidden auto}.art-video-player .art-settings .art-setting-panel{flex-direction:column;display:none}.art-video-player .art-settings .art-setting-panel.art-current{display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item{cursor:pointer;transition:background-color var(--art-transition-duration)ease;justify-content:space-between;align-items:center;padding:0 5px;display:flex;overflow:hidden}.art-video-player .art-settings .art-setting-panel .art-setting-item:hover{background-color:#ffffff1a}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current{color:var(--art-theme)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-icon-check{visibility:hidden;height:15px}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current .art-icon-check{visibility:visible}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left{flex-shrink:0;justify-content:center;align-items:center;gap:5px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-icon{height:var(--art-settings-icon-size);width:var(--art-settings-icon-size);justify-content:center;align-items:center;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right{justify-content:center;align-items:center;gap:5px;font-size:12px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-tooltip{white-space:nowrap;color:#ffffff80}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-icon{justify-content:center;align-items:center;min-width:32px;height:24px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-range{appearance:none;background-color:#fff3;outline:none;width:80px;height:3px}.art-video-player .art-settings .art-setting-panel .art-setting-item-back{border-bottom:1px solid #ffffff1a}.art-video-player.art-setting-show .art-settings{display:flex}.art-video-player .art-info{left:var(--art-padding);top:var(--art-padding);z-index:100;border-radius:var(--art-border-radius);background-color:var(--art-widget-background);padding:10px;font-size:12px;display:none;position:absolute}.art-video-player .art-info .art-info-panel{flex-direction:column;gap:5px;display:flex}.art-video-player .art-info .art-info-panel .art-info-item{align-items:center;gap:5px;display:flex}.art-video-player .art-info .art-info-panel .art-info-item .art-info-title{text-align:right;width:100px}.art-video-player .art-info .art-info-panel .art-info-item .art-info-content{text-overflow:ellipsis;white-space:nowrap;user-select:all;width:250px;overflow:hidden}.art-video-player .art-info .art-info-close{cursor:pointer;position:absolute;top:5px;right:5px}.art-video-player.art-info-show .art-info{display:flex}.art-hide-cursor *{cursor:none!important}.art-video-player[data-aspect-ratio]{overflow:hidden}.art-video-player[data-aspect-ratio] .art-video{object-fit:fill;box-sizing:content-box}.art-fullscreen{--art-progress-height:8px;--art-indicator-size:20px;--art-control-height:60px;--art-control-icon-scale:1.3}.art-fullscreen-web{--art-progress-height:8px;--art-indicator-size:20px;--art-control-height:60px;--art-control-icon-scale:1.3;z-index:var(--art-fullscreen-web-index);width:100%;height:100%;position:fixed;inset:0}.art-mini-popup{z-index:9999;border-radius:var(--art-border-radius);cursor:move;user-select:none;background:#000;width:320px;height:180px;transition:opacity .2s;position:fixed;overflow:hidden;box-shadow:0 0 5px #00000080}.art-mini-popup svg{fill:#fff}.art-mini-popup .art-video{pointer-events:none}.art-mini-popup .art-mini-close{z-index:20;cursor:pointer;opacity:0;transition:opacity .2s;position:absolute;top:10px;right:10px}.art-mini-popup .art-mini-state{z-index:30;pointer-events:none;opacity:0;background-color:#00000040;justify-content:center;align-items:center;width:100%;height:100%;transition:opacity .2s;display:flex;position:absolute;inset:0}.art-mini-popup .art-mini-state .art-icon{opacity:.75;cursor:pointer;pointer-events:auto;transition:transform .2s;transform:scale(3)}.art-mini-popup .art-mini-state .art-icon:active{transform:scale(2.5)}.art-mini-popup.art-mini-dragging{opacity:.9}.art-mini-popup:hover .art-mini-close,.art-mini-popup:hover .art-mini-state{opacity:1}.art-video-player[data-flip=horizontal] .art-video{transform:scaleX(-1)}.art-video-player[data-flip=vertical] .art-video{transform:scaleY(-1)}.art-video-player .art-layer-lock{height:var(--art-lock-size);width:var(--art-lock-size);top:50%;left:var(--art-padding);background-color:var(--art-tip-background);border-radius:50%;justify-content:center;align-items:center;display:none;position:absolute;transform:translateY(-50%)}.art-video-player .art-layer-auto-playback{border-radius:var(--art-border-radius);left:var(--art-padding);bottom:calc(var(--art-control-height) + var(--art-bottom-gap) + 10px);background-color:var(--art-widget-background);align-items:center;gap:10px;padding:10px;line-height:1;display:none;position:absolute}.art-video-player .art-layer-auto-playback .art-auto-playback-close{cursor:pointer;justify-content:center;align-items:center;display:flex}.art-video-player .art-layer-auto-playback .art-auto-playback-close svg{width:15px;height:15px;fill:var(--art-theme)}.art-video-player .art-layer-auto-playback .art-auto-playback-jump{color:var(--art-theme);cursor:pointer}.art-video-player.art-lock .art-subtitle{bottom:var(--art-subtitle-bottom)!important}.art-video-player.art-mini-progress-bar .art-bottom,.art-video-player.art-lock .art-bottom{opacity:1;background-image:none;padding:0}.art-video-player.art-mini-progress-bar .art-bottom .art-controls,.art-video-player.art-lock .art-bottom .art-controls,.art-video-player.art-mini-progress-bar .art-bottom .art-progress,.art-video-player.art-lock .art-bottom .art-progress{transform:translateY(calc(var(--art-control-height) + var(--art-bottom-gap) + var(--art-progress-height)/4))}.art-video-player.art-mini-progress-bar .art-bottom .art-progress-indicator,.art-video-player.art-lock .art-bottom .art-progress-indicator{display:none!important}.art-video-player.art-control-show .art-layer-lock{display:flex}.art-control-selector{justify-content:center;display:flex;position:relative}.art-control-selector .art-selector-list{text-align:center;border-radius:var(--art-border-radius);opacity:0;pointer-events:none;bottom:var(--art-control-height);max-height:var(--art-selector-max-height);background-color:var(--art-widget-background);transition:all var(--art-transition-duration)ease;flex-direction:column;align-items:center;display:flex;position:absolute;overflow:hidden auto;transform:translateY(10px)}.art-control-selector .art-selector-list .art-selector-item{flex-shrink:0;justify-content:center;align-items:center;width:100%;padding:10px 15px;line-height:1;display:flex}.art-control-selector .art-selector-list .art-selector-item:hover{background-color:#ffffff1a}.art-control-selector .art-selector-list .art-selector-item:hover,.art-control-selector .art-selector-list .art-selector-item.art-current{color:var(--art-theme)}.art-control-selector:hover .art-selector-list{opacity:1;pointer-events:auto;transform:translateY(0)}[class*=hint--]{font-style:normal;display:inline-block;position:relative}[class*=hint--]:before,[class*=hint--]:after{visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;transition:all .3s;position:absolute;transform:translate(0,0)}[class*=hint--]:hover:before,[class*=hint--]:hover:after{visibility:visible;opacity:1;transition-delay:.1s}[class*=hint--]:before{content:\\\"\\\";z-index:1000001;background:0 0;border:6px solid #0000;position:absolute}[class*=hint--]:after{color:#fff;white-space:nowrap;background:#000;padding:8px 10px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;line-height:12px}[class*=hint--][aria-label]:after{content:attr(aria-label)}[class*=hint--][data-hint]:after{content:attr(data-hint)}[aria-label=\\\"\\\"]:before,[aria-label=\\\"\\\"]:after,[data-hint=\\\"\\\"]:before,[data-hint=\\\"\\\"]:after{display:none!important}.hint--top-left:before,.hint--top-right:before,.hint--top:before{border-top-color:#000}.hint--bottom-left:before,.hint--bottom-right:before,.hint--bottom:before{border-bottom-color:#000}.hint--left:before{border-left-color:#000}.hint--right:before{border-right-color:#000}.hint--top:before{margin-bottom:-11px}.hint--top:before,.hint--top:after{bottom:100%;left:50%}.hint--top:before{left:calc(50% - 6px)}.hint--top:after{transform:translate(-50%)}.hint--top:hover:before{transform:translateY(-8px)}.hint--top:hover:after{transform:translate(-50%)translateY(-8px)}.hint--bottom:before{margin-top:-11px}.hint--bottom:before,.hint--bottom:after{top:100%;left:50%}.hint--bottom:before{left:calc(50% - 6px)}.hint--bottom:after{transform:translate(-50%)}.hint--bottom:hover:before{transform:translateY(8px)}.hint--bottom:hover:after{transform:translate(-50%)translateY(8px)}.hint--right:before{margin-bottom:-6px;margin-left:-11px}.hint--right:after{margin-bottom:-14px}.hint--right:before,.hint--right:after{bottom:50%;left:100%}.hint--right:hover:before,.hint--right:hover:after{transform:translate(8px)}.hint--left:before{margin-bottom:-6px;margin-right:-11px}.hint--left:after{margin-bottom:-14px}.hint--left:before,.hint--left:after{bottom:50%;right:100%}.hint--left:hover:before,.hint--left:hover:after{transform:translate(-8px)}.hint--top-left:before{margin-bottom:-11px}.hint--top-left:before,.hint--top-left:after{bottom:100%;left:50%}.hint--top-left:before{left:calc(50% - 6px)}.hint--top-left:after{margin-left:12px;transform:translate(-100%)}.hint--top-left:hover:before{transform:translateY(-8px)}.hint--top-left:hover:after{transform:translate(-100%)translateY(-8px)}.hint--top-right:before{margin-bottom:-11px}.hint--top-right:before,.hint--top-right:after{bottom:100%;left:50%}.hint--top-right:before{left:calc(50% - 6px)}.hint--top-right:after{margin-left:-12px;transform:translate(0)}.hint--top-right:hover:before,.hint--top-right:hover:after{transform:translateY(-8px)}.hint--bottom-left:before{margin-top:-11px}.hint--bottom-left:before,.hint--bottom-left:after{top:100%;left:50%}.hint--bottom-left:before{left:calc(50% - 6px)}.hint--bottom-left:after{margin-left:12px;transform:translate(-100%)}.hint--bottom-left:hover:before{transform:translateY(8px)}.hint--bottom-left:hover:after{transform:translate(-100%)translateY(8px)}.hint--bottom-right:before{margin-top:-11px}.hint--bottom-right:before,.hint--bottom-right:after{top:100%;left:50%}.hint--bottom-right:before{left:calc(50% - 6px)}.hint--bottom-right:after{margin-left:-12px;transform:translate(0)}.hint--bottom-right:hover:before,.hint--bottom-right:hover:after{transform:translateY(8px)}.hint--small:after,.hint--medium:after,.hint--large:after{white-space:normal;word-wrap:break-word;line-height:1.4em}.hint--small:after{width:80px}.hint--medium:after{width:150px}.hint--large:after{width:300px}[class*=hint--]:after{text-shadow:0 -1px #000;box-shadow:4px 4px 8px #0000004d}.hint--error:after{text-shadow:0 -1px #592726;background-color:#b34e4d}.hint--error.hint--top-left:before,.hint--error.hint--top-right:before,.hint--error.hint--top:before{border-top-color:#b34e4d}.hint--error.hint--bottom-left:before,.hint--error.hint--bottom-right:before,.hint--error.hint--bottom:before{border-bottom-color:#b34e4d}.hint--error.hint--left:before{border-left-color:#b34e4d}.hint--error.hint--right:before{border-right-color:#b34e4d}.hint--warning:after{text-shadow:0 -1px #6c5328;background-color:#c09854}.hint--warning.hint--top-left:before,.hint--warning.hint--top-right:before,.hint--warning.hint--top:before{border-top-color:#c09854}.hint--warning.hint--bottom-left:before,.hint--warning.hint--bottom-right:before,.hint--warning.hint--bottom:before{border-bottom-color:#c09854}.hint--warning.hint--left:before{border-left-color:#c09854}.hint--warning.hint--right:before{border-right-color:#c09854}.hint--info:after{text-shadow:0 -1px #1a3c4d;background-color:#3986ac}.hint--info.hint--top-left:before,.hint--info.hint--top-right:before,.hint--info.hint--top:before{border-top-color:#3986ac}.hint--info.hint--bottom-left:before,.hint--info.hint--bottom-right:before,.hint--info.hint--bottom:before{border-bottom-color:#3986ac}.hint--info.hint--left:before{border-left-color:#3986ac}.hint--info.hint--right:before{border-right-color:#3986ac}.hint--success:after{text-shadow:0 -1px #1a321a;background-color:#458746}.hint--success.hint--top-left:before,.hint--success.hint--top-right:before,.hint--success.hint--top:before{border-top-color:#458746}.hint--success.hint--bottom-left:before,.hint--success.hint--bottom-right:before,.hint--success.hint--bottom:before{border-bottom-color:#458746}.hint--success.hint--left:before{border-left-color:#458746}.hint--success.hint--right:before{border-right-color:#458746}.hint--always:after,.hint--always:before{opacity:1;visibility:visible}.hint--always.hint--top:before{transform:translateY(-8px)}.hint--always.hint--top:after{transform:translate(-50%)translateY(-8px)}.hint--always.hint--top-left:before{transform:translateY(-8px)}.hint--always.hint--top-left:after{transform:translate(-100%)translateY(-8px)}.hint--always.hint--top-right:before,.hint--always.hint--top-right:after{transform:translateY(-8px)}.hint--always.hint--bottom:before{transform:translateY(8px)}.hint--always.hint--bottom:after{transform:translate(-50%)translateY(8px)}.hint--always.hint--bottom-left:before{transform:translateY(8px)}.hint--always.hint--bottom-left:after{transform:translate(-100%)translateY(8px)}.hint--always.hint--bottom-right:before,.hint--always.hint--bottom-right:after{transform:translateY(8px)}.hint--always.hint--left:before,.hint--always.hint--left:after{transform:translate(-8px)}.hint--always.hint--right:before,.hint--always.hint--right:after{transform:translate(8px)}.hint--rounded:after{border-radius:4px}.hint--no-animate:before,.hint--no-animate:after{transition-duration:0s}.hint--bounce:before,.hint--bounce:after{-webkit-transition:opacity .3s,visibility .3s,-webkit-transform .3s cubic-bezier(.71,1.7,.77,1.24);-moz-transition:opacity .3s,visibility .3s,-moz-transform .3s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .3s,visibility .3s,transform .3s cubic-bezier(.71,1.7,.77,1.24)}.hint--no-shadow:before,.hint--no-shadow:after{text-shadow:initial;box-shadow:initial}.hint--no-arrow:before{display:none}.art-video-player.art-mobile{--art-bottom-gap:10px;--art-control-height:38px;--art-control-icon-scale:1;--art-state-size:60px;--art-settings-max-height:180px;--art-selector-max-height:180px;--art-indicator-scale:1;--art-control-opacity:1}.art-video-player.art-mobile .art-controls-left{margin-left:calc(var(--art-padding)/-1)}.art-video-player.art-mobile .art-controls-right{margin-right:calc(var(--art-padding)/-1)}\";\n\n},{}],\"hw47a\":[function(require,module,exports,__globalThis) {\n!function(r, t) {\n module.exports = t();\n}(this, function() {\n \"use strict\";\n function e(r) {\n return (e = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(r) {\n return typeof r;\n } : function(r) {\n return r && \"function\" == typeof Symbol && r.constructor === Symbol && r !== Symbol.prototype ? \"symbol\" : typeof r;\n })(r);\n }\n var n = Object.prototype.toString, c = function(r) {\n if (void 0 === r) return \"undefined\";\n if (null === r) return \"null\";\n var t = e(r);\n if (\"boolean\" === t) return \"boolean\";\n if (\"string\" === t) return \"string\";\n if (\"number\" === t) return \"number\";\n if (\"symbol\" === t) return \"symbol\";\n if (\"function\" === t) return function(r) {\n return \"GeneratorFunction\" === o(r);\n }(r) ? \"generatorfunction\" : \"function\";\n if (function(r) {\n return Array.isArray ? Array.isArray(r) : r instanceof Array;\n }(r)) return \"array\";\n if (function(r) {\n if (r.constructor && \"function\" == typeof r.constructor.isBuffer) return r.constructor.isBuffer(r);\n return !1;\n }(r)) return \"buffer\";\n if (function(r) {\n try {\n if (\"number\" == typeof r.length && \"function\" == typeof r.callee) return !0;\n } catch (r) {\n if (-1 !== r.message.indexOf(\"callee\")) return !0;\n }\n return !1;\n }(r)) return \"arguments\";\n if (function(r) {\n return r instanceof Date || \"function\" == typeof r.toDateString && \"function\" == typeof r.getDate && \"function\" == typeof r.setDate;\n }(r)) return \"date\";\n if (function(r) {\n return r instanceof Error || \"string\" == typeof r.message && r.constructor && \"number\" == typeof r.constructor.stackTraceLimit;\n }(r)) return \"error\";\n if (function(r) {\n return r instanceof RegExp || \"string\" == typeof r.flags && \"boolean\" == typeof r.ignoreCase && \"boolean\" == typeof r.multiline && \"boolean\" == typeof r.global;\n }(r)) return \"regexp\";\n switch(o(r)){\n case \"Symbol\":\n return \"symbol\";\n case \"Promise\":\n return \"promise\";\n case \"WeakMap\":\n return \"weakmap\";\n case \"WeakSet\":\n return \"weakset\";\n case \"Map\":\n return \"map\";\n case \"Set\":\n return \"set\";\n case \"Int8Array\":\n return \"int8array\";\n case \"Uint8Array\":\n return \"uint8array\";\n case \"Uint8ClampedArray\":\n return \"uint8clampedarray\";\n case \"Int16Array\":\n return \"int16array\";\n case \"Uint16Array\":\n return \"uint16array\";\n case \"Int32Array\":\n return \"int32array\";\n case \"Uint32Array\":\n return \"uint32array\";\n case \"Float32Array\":\n return \"float32array\";\n case \"Float64Array\":\n return \"float64array\";\n }\n if (function(r) {\n return \"function\" == typeof r.throw && \"function\" == typeof r.return && \"function\" == typeof r.next;\n }(r)) return \"generator\";\n switch(t = n.call(r)){\n case \"[object Object]\":\n return \"object\";\n case \"[object Map Iterator]\":\n return \"mapiterator\";\n case \"[object Set Iterator]\":\n return \"setiterator\";\n case \"[object String Iterator]\":\n return \"stringiterator\";\n case \"[object Array Iterator]\":\n return \"arrayiterator\";\n }\n return t.slice(8, -1).toLowerCase().replace(/\\s/g, \"\");\n };\n function o(r) {\n return r.constructor ? r.constructor.name : null;\n }\n function f(r, t) {\n var e = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : [\n \"option\"\n ];\n return s(r, t, e), y(r, t, e), function(a, i, u) {\n var r = c(i), t = c(a);\n if (\"object\" === r) {\n if (\"object\" !== t) throw new Error(\"[Type Error]: '\".concat(u.join(\".\"), \"' require 'object' type, but got '\").concat(t, \"'\"));\n Object.keys(i).forEach(function(r) {\n var t = a[r], e = i[r], n = u.slice();\n n.push(r), s(t, e, n), y(t, e, n), f(t, e, n);\n });\n }\n if (\"array\" === r) {\n if (\"array\" !== t) throw new Error(\"[Type Error]: '\".concat(u.join(\".\"), \"' require 'array' type, but got '\").concat(t, \"'\"));\n a.forEach(function(r, t) {\n var e = a[t], n = i[t] || i[0], o = u.slice();\n o.push(t), s(e, n, o), y(e, n, o), f(e, n, o);\n });\n }\n }(r, t, e), r;\n }\n function s(r, t, e) {\n if (\"string\" === c(t)) {\n var n = c(r);\n if (\"?\" === t[0] && (t = t.slice(1) + \"|undefined\"), !(-1 < t.indexOf(\"|\") ? t.split(\"|\").map(function(r) {\n return r.toLowerCase().trim();\n }).filter(Boolean).some(function(r) {\n return n === r;\n }) : t.toLowerCase().trim() === n)) throw new Error(\"[Type Error]: '\".concat(e.join(\".\"), \"' require '\").concat(t, \"' type, but got '\").concat(n, \"'\"));\n }\n }\n function y(r, t, e) {\n if (\"function\" === c(t)) {\n var n = t(r, c(r), e);\n if (!0 !== n) {\n var o = c(n);\n throw \"string\" === o ? new Error(n) : \"error\" === o ? n : new Error(\"[Validator Error]: The scheme for '\".concat(e.join(\".\"), \"' validator require return true, but got '\").concat(n, \"'\"));\n }\n }\n }\n return f.kindOf = c, f;\n});\n\n},{}],\"2r8Ra\":[function(require,module,exports,__globalThis) {\nmodule.exports = JSON.parse(\"{\\\"name\\\":\\\"artplayer\\\",\\\"version\\\":\\\"5.2.6\\\",\\\"description\\\":\\\"ArtPlayer.js is a modern and full featured HTML5 video player\\\",\\\"author\\\":\\\"Harvey Zack \\\",\\\"license\\\":\\\"MIT\\\",\\\"homepage\\\":\\\"https://artplayer.org\\\",\\\"repository\\\":{\\\"type\\\":\\\"git\\\",\\\"url\\\":\\\"git+https://github.com/zhw2590582/ArtPlayer.git\\\"},\\\"bugs\\\":{\\\"url\\\":\\\"https://github.com/zhw2590582/ArtPlayer/issues\\\"},\\\"keywords\\\":[\\\"html5\\\",\\\"video\\\",\\\"player\\\"],\\\"main\\\":\\\"dist/artplayer.js\\\",\\\"legacy\\\":\\\"dist/artplayer.legacy.js\\\",\\\"types\\\":\\\"types/artplayer.d.ts\\\",\\\"browserslist\\\":\\\"last 1 Chrome version\\\",\\\"dependencies\\\":{\\\"option-validator\\\":\\\"^2.0.6\\\"}}\");\n\n},{}],\"7jhZp\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nexports.default = {\n properties: [\n 'audioTracks',\n 'autoplay',\n 'buffered',\n 'controller',\n 'controls',\n 'crossOrigin',\n 'currentSrc',\n 'currentTime',\n 'defaultMuted',\n 'defaultPlaybackRate',\n 'duration',\n 'ended',\n 'error',\n 'loop',\n 'mediaGroup',\n 'muted',\n 'networkState',\n 'paused',\n 'playbackRate',\n 'played',\n 'preload',\n 'readyState',\n 'seekable',\n 'seeking',\n 'src',\n 'startDate',\n 'textTracks',\n 'videoTracks',\n 'volume'\n ],\n methods: [\n 'addTextTrack',\n 'canPlayType',\n 'load',\n 'play',\n 'pause'\n ],\n events: [\n 'abort',\n 'canplay',\n 'canplaythrough',\n 'durationchange',\n 'emptied',\n 'ended',\n 'error',\n 'loadeddata',\n 'loadedmetadata',\n 'loadstart',\n 'pause',\n 'play',\n 'playing',\n 'progress',\n 'ratechange',\n 'seeked',\n 'seeking',\n 'stalled',\n 'suspend',\n 'timeupdate',\n 'volumechange',\n 'waiting'\n ],\n prototypes: [\n 'width',\n 'height',\n 'videoWidth',\n 'videoHeight',\n 'poster',\n 'webkitDecodedFrameCount',\n 'webkitDroppedFrameCount',\n 'playsInline',\n 'webkitSupportsFullscreen',\n 'webkitDisplayingFullscreen',\n 'onenterpictureinpicture',\n 'onleavepictureinpicture',\n 'disablePictureInPicture',\n 'cancelVideoFrameCallback',\n 'requestVideoFrameCallback',\n 'getVideoPlaybackQuality',\n 'requestPictureInPicture',\n 'webkitEnterFullScreen',\n 'webkitEnterFullscreen',\n 'webkitExitFullScreen',\n 'webkitExitFullscreen'\n ]\n};\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"5lQoW\":[function(require,module,exports,__globalThis) {\nexports.interopDefault = function(a) {\n return a && a.__esModule ? a : {\n default: a\n };\n};\nexports.defineInteropFlag = function(a) {\n Object.defineProperty(a, '__esModule', {\n value: true\n });\n};\nexports.exportAll = function(source, dest) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) return;\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function() {\n return source[key];\n }\n });\n });\n return dest;\n};\nexports.export = function(dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get\n });\n};\n\n},{}],\"jFWxb\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"../utils\");\nvar _component = require(\"../utils/component\");\nvar _componentDefault = parcelHelpers.interopDefault(_component);\nvar _aspectRatio = require(\"./aspectRatio\");\nvar _aspectRatioDefault = parcelHelpers.interopDefault(_aspectRatio);\nvar _close = require(\"./close\");\nvar _closeDefault = parcelHelpers.interopDefault(_close);\nvar _flip = require(\"./flip\");\nvar _flipDefault = parcelHelpers.interopDefault(_flip);\nvar _info = require(\"./info\");\nvar _infoDefault = parcelHelpers.interopDefault(_info);\nvar _playbackRate = require(\"./playbackRate\");\nvar _playbackRateDefault = parcelHelpers.interopDefault(_playbackRate);\nvar _version = require(\"./version\");\nvar _versionDefault = parcelHelpers.interopDefault(_version);\nclass Contextmenu extends (0, _componentDefault.default) {\n constructor(art){\n super(art);\n this.name = 'contextmenu';\n this.$parent = art.template.$contextmenu;\n if (!(0, _utils.isMobile)) this.init();\n }\n init() {\n const { option, proxy, template: { $player, $contextmenu } } = this.art;\n if (option.playbackRate) this.add((0, _playbackRateDefault.default)({\n name: 'playbackRate',\n index: 10\n }));\n if (option.aspectRatio) this.add((0, _aspectRatioDefault.default)({\n name: 'aspectRatio',\n index: 20\n }));\n if (option.flip) this.add((0, _flipDefault.default)({\n name: 'flip',\n index: 30\n }));\n this.add((0, _infoDefault.default)({\n name: 'info',\n index: 40\n }));\n this.add((0, _versionDefault.default)({\n name: 'version',\n index: 50\n }));\n this.add((0, _closeDefault.default)({\n name: 'close',\n index: 60\n }));\n for(let index = 0; index < option.contextmenu.length; index++)this.add(option.contextmenu[index]);\n proxy($player, 'contextmenu', (event)=>{\n if (!this.art.constructor.CONTEXTMENU) return;\n event.preventDefault();\n this.show = true;\n const mouseX = event.clientX;\n const mouseY = event.clientY;\n const { height: cHeight, width: cWidth, left: cLeft, top: cTop } = (0, _utils.getRect)($player);\n const { height: mHeight, width: mWidth } = (0, _utils.getRect)($contextmenu);\n let menuLeft = mouseX - cLeft;\n let menuTop = mouseY - cTop;\n if (mouseX + mWidth > cLeft + cWidth) menuLeft = cWidth - mWidth;\n if (mouseY + mHeight > cTop + cHeight) menuTop = cHeight - mHeight;\n (0, _utils.setStyles)($contextmenu, {\n top: `${menuTop}px`,\n left: `${menuLeft}px`\n });\n });\n proxy($player, 'click', (event)=>{\n if (!(0, _utils.includeFromEvent)(event, $contextmenu)) this.show = false;\n });\n this.art.on('blur', ()=>{\n this.show = false;\n });\n }\n}\nexports.default = Contextmenu;\n\n},{\"../utils\":\"ga71d\",\"../utils/component\":\"hARFP\",\"./aspectRatio\":\"atwXQ\",\"./close\":\"34cn1\",\"./flip\":\"4YbBf\",\"./info\":\"difR5\",\"./playbackRate\":\"2VDwk\",\"./version\":\"bza1P\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"ga71d\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _compatibility = require(\"./compatibility\");\nparcelHelpers.exportAll(_compatibility, exports);\nvar _dom = require(\"./dom\");\nparcelHelpers.exportAll(_dom, exports);\nvar _error = require(\"./error\");\nparcelHelpers.exportAll(_error, exports);\nvar _file = require(\"./file\");\nparcelHelpers.exportAll(_file, exports);\nvar _format = require(\"./format\");\nparcelHelpers.exportAll(_format, exports);\nvar _property = require(\"./property\");\nparcelHelpers.exportAll(_property, exports);\nvar _subtitle = require(\"./subtitle\");\nparcelHelpers.exportAll(_subtitle, exports);\nvar _time = require(\"./time\");\nparcelHelpers.exportAll(_time, exports);\n\n},{\"./compatibility\":\"eqWpq\",\"./dom\":\"Nhosu\",\"./error\":\"480HW\",\"./file\":\"2AGZv\",\"./format\":\"1cr8o\",\"./property\":\"cTF5s\",\"./subtitle\":\"i6MtR\",\"./time\":\"7VpW0\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"eqWpq\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"userAgent\", ()=>userAgent);\nparcelHelpers.export(exports, \"isSafari\", ()=>isSafari);\nparcelHelpers.export(exports, \"isIOS\", ()=>isIOS);\nparcelHelpers.export(exports, \"isIOS13\", ()=>isIOS13);\nparcelHelpers.export(exports, \"isMobile\", ()=>isMobile);\nparcelHelpers.export(exports, \"isBrowser\", ()=>isBrowser);\nconst userAgent = globalThis?.CUSTOM_USER_AGENT ?? (typeof navigator !== 'undefined' ? navigator.userAgent : '');\nconst isSafari = /^(?:(?!chrome|android).)*safari/i.test(userAgent);\nconst isIOS = /iPad|iPhone|iPod/i.test(userAgent) && !window.MSStream;\nconst isIOS13 = isIOS || userAgent.includes('Macintosh') && navigator.maxTouchPoints >= 1;\nconst isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent) || isIOS13;\nconst isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"Nhosu\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"query\", ()=>query);\nparcelHelpers.export(exports, \"queryAll\", ()=>queryAll);\nparcelHelpers.export(exports, \"addClass\", ()=>addClass);\nparcelHelpers.export(exports, \"removeClass\", ()=>removeClass);\nparcelHelpers.export(exports, \"hasClass\", ()=>hasClass);\nparcelHelpers.export(exports, \"append\", ()=>append);\nparcelHelpers.export(exports, \"remove\", ()=>remove);\nparcelHelpers.export(exports, \"setStyle\", ()=>setStyle);\nparcelHelpers.export(exports, \"setStyles\", ()=>setStyles);\nparcelHelpers.export(exports, \"getStyle\", ()=>getStyle);\nparcelHelpers.export(exports, \"siblings\", ()=>siblings);\nparcelHelpers.export(exports, \"inverseClass\", ()=>inverseClass);\nparcelHelpers.export(exports, \"tooltip\", ()=>tooltip);\nparcelHelpers.export(exports, \"isInViewport\", ()=>isInViewport);\nparcelHelpers.export(exports, \"includeFromEvent\", ()=>includeFromEvent);\nparcelHelpers.export(exports, \"replaceElement\", ()=>replaceElement);\nparcelHelpers.export(exports, \"createElement\", ()=>createElement);\nparcelHelpers.export(exports, \"getIcon\", ()=>getIcon);\nparcelHelpers.export(exports, \"setStyleText\", ()=>setStyleText);\nparcelHelpers.export(exports, \"supportsFlex\", ()=>supportsFlex);\nparcelHelpers.export(exports, \"getRect\", ()=>getRect);\nparcelHelpers.export(exports, \"loadImg\", ()=>loadImg);\nparcelHelpers.export(exports, \"getComposedPath\", ()=>getComposedPath);\nvar _compatibility = require(\"./compatibility\");\nfunction query(selector, parent = document) {\n return parent.querySelector(selector);\n}\nfunction queryAll(selector, parent = document) {\n return Array.from(parent.querySelectorAll(selector));\n}\nfunction addClass(target, className) {\n return target.classList.add(className);\n}\nfunction removeClass(target, className) {\n return target.classList.remove(className);\n}\nfunction hasClass(target, className) {\n return target.classList.contains(className);\n}\nfunction append(parent, child) {\n if (child instanceof Element) parent.appendChild(child);\n else parent.insertAdjacentHTML('beforeend', String(child));\n return parent.lastElementChild || parent.lastChild;\n}\nfunction remove(child) {\n return child.parentNode.removeChild(child);\n}\nfunction setStyle(element, key, value) {\n element.style[key] = value;\n return element;\n}\nfunction setStyles(element, styles) {\n for(const key in styles)setStyle(element, key, styles[key]);\n return element;\n}\nfunction getStyle(element, key, numberType = true) {\n const value = window.getComputedStyle(element, null).getPropertyValue(key);\n return numberType ? Number.parseFloat(value) : value;\n}\nfunction siblings(target) {\n return Array.from(target.parentElement.children).filter((item)=>item !== target);\n}\nfunction inverseClass(target, className) {\n siblings(target).forEach((item)=>removeClass(item, className));\n addClass(target, className);\n}\nfunction tooltip(target, msg, pos = 'top') {\n if (0, _compatibility.isMobile) return;\n target.setAttribute('aria-label', msg);\n addClass(target, 'hint--rounded');\n addClass(target, `hint--${pos}`);\n}\nfunction isInViewport(el, offset = 0) {\n const rect = el.getBoundingClientRect();\n const windowHeight = window.innerHeight || document.documentElement.clientHeight;\n const windowWidth = window.innerWidth || document.documentElement.clientWidth;\n const vertInView = rect.top - offset <= windowHeight && rect.top + rect.height + offset >= 0;\n const horInView = rect.left - offset <= windowWidth + offset && rect.left + rect.width + offset >= 0;\n return vertInView && horInView;\n}\nfunction includeFromEvent(event, target) {\n return getComposedPath(event).includes(target);\n}\nfunction replaceElement(newChild, oldChild) {\n oldChild.parentNode.replaceChild(newChild, oldChild);\n return newChild;\n}\nfunction createElement(tag) {\n return document.createElement(tag);\n}\nfunction getIcon(key = '', html = '') {\n const icon = createElement('i');\n addClass(icon, 'art-icon');\n addClass(icon, `art-icon-${key}`);\n append(icon, html);\n return icon;\n}\nfunction setStyleText(id, style) {\n let $style = document.getElementById(id);\n if (!$style) {\n $style = document.createElement('style');\n $style.id = id;\n if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', ()=>{\n document.head.appendChild($style);\n });\n else (document.head || document.documentElement).appendChild($style);\n }\n $style.textContent = style;\n}\nfunction supportsFlex() {\n const div = document.createElement('div');\n div.style.display = 'flex';\n return div.style.display === 'flex';\n}\nfunction getRect(el) {\n return el.getBoundingClientRect();\n}\nfunction loadImg(url, scale) {\n return new Promise((resolve, reject)=>{\n const img = new Image();\n img.onload = function() {\n if (!scale || scale === 1) resolve(img);\n else {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n canvas.width = img.width * scale;\n canvas.height = img.height * scale;\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n canvas.toBlob((blob)=>{\n const blobUrl = URL.createObjectURL(blob);\n const scaledImg = new Image();\n scaledImg.onload = function() {\n resolve(scaledImg);\n };\n scaledImg.onerror = function() {\n URL.revokeObjectURL(blobUrl);\n reject(new Error(`Image load failed: ${url}`));\n };\n scaledImg.src = blobUrl;\n });\n }\n };\n img.onerror = function() {\n reject(new Error(`Image load failed: ${url}`));\n };\n img.src = url;\n });\n}\nfunction getComposedPath(event) {\n if (event.composedPath) return event.composedPath();\n const path = [];\n let node = event.target;\n while(node){\n path.push(node);\n node = node.parentNode;\n }\n if (!path.includes(window) && window !== undefined) path.push(window);\n return path;\n}\n\n},{\"./compatibility\":\"eqWpq\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"480HW\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"ArtPlayerError\", ()=>ArtPlayerError);\nparcelHelpers.export(exports, \"errorHandle\", ()=>errorHandle);\nclass ArtPlayerError extends Error {\n constructor(message, context){\n super(message);\n if (typeof Error.captureStackTrace === 'function') Error.captureStackTrace(this, context || this.constructor);\n this.name = 'ArtPlayerError';\n }\n}\nfunction errorHandle(condition, msg) {\n if (!condition) throw new ArtPlayerError(msg);\n return condition;\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"2AGZv\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"getExt\", ()=>getExt);\nparcelHelpers.export(exports, \"download\", ()=>download);\nfunction getExt(url) {\n if (url.includes('?')) return getExt(url.split('?')[0]);\n if (url.includes('#')) return getExt(url.split('#')[0]);\n return url.trim().toLowerCase().split('.').pop();\n}\nfunction download(url, name) {\n const elink = document.createElement('a');\n elink.style.display = 'none';\n elink.href = url;\n elink.download = name;\n document.body.appendChild(elink);\n elink.click();\n document.body.removeChild(elink);\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"1cr8o\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"clamp\", ()=>clamp);\nparcelHelpers.export(exports, \"capitalize\", ()=>capitalize);\nparcelHelpers.export(exports, \"secondToTime\", ()=>secondToTime);\nparcelHelpers.export(exports, \"escape\", ()=>escape);\nparcelHelpers.export(exports, \"unescape\", ()=>unescape);\nfunction clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));\n}\nfunction capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nfunction secondToTime(second) {\n if (!second) return '00:00';\n const add0 = (num)=>num < 10 ? `0${num}` : String(num);\n const hour = Math.floor(second / 3600);\n const min = Math.floor((second - hour * 3600) / 60);\n const sec = Math.floor(second - hour * 3600 - min * 60);\n return (hour > 0 ? [\n hour,\n min,\n sec\n ] : [\n min,\n sec\n ]).map(add0).join(':');\n}\nfunction escape(str) {\n return str.replace(/[&<>'\"]/g, (tag)=>({\n '&': '&',\n '<': '<',\n '>': '>',\n '\\'': ''',\n '\"': '"'\n })[tag] || tag);\n}\nfunction unescape(str) {\n const map = {\n '&': '&',\n '<': '<',\n '>': '>',\n ''': '\\'',\n '"': '\"'\n };\n const reg = new RegExp(`(${Object.keys(map).join('|')})`, 'g');\n return str.replace(reg, (tag)=>map[tag] || tag);\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"cTF5s\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"def\", ()=>def);\nparcelHelpers.export(exports, \"has\", ()=>has);\nparcelHelpers.export(exports, \"get\", ()=>get);\nparcelHelpers.export(exports, \"mergeDeep\", ()=>mergeDeep);\nconst def = Object.defineProperty;\nconst { hasOwnProperty } = Object.prototype;\nfunction has(obj, name) {\n return hasOwnProperty.call(obj, name);\n}\nfunction get(obj, name) {\n return Object.getOwnPropertyDescriptor(obj, name);\n}\nfunction mergeDeep(...objects) {\n const isObject = (item)=>item && typeof item === 'object' && !Array.isArray(item);\n return objects.reduce((prev, obj)=>{\n Object.keys(obj).forEach((key)=>{\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) prev[key] = pVal.concat(...oVal);\n else if (isObject(pVal) && isObject(oVal)) prev[key] = mergeDeep(pVal, oVal);\n else prev[key] = oVal;\n });\n return prev;\n }, {});\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"i6MtR\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"srtToVtt\", ()=>srtToVtt);\nparcelHelpers.export(exports, \"vttToBlob\", ()=>vttToBlob);\nparcelHelpers.export(exports, \"assToVtt\", ()=>assToVtt);\nfunction fixSrt(srt) {\n return srt.replace(/(\\d\\d:\\d\\d:\\d\\d)[,.](\\d+)/g, (_, $1, $2)=>{\n let ms = $2.slice(0, 3);\n if ($2.length === 1) ms = `${$2}00`;\n if ($2.length === 2) ms = `${$2}0`;\n return `${$1},${ms}`;\n });\n}\nfunction srtToVtt(srtText) {\n return 'WEBVTT \\r\\n\\r\\n'.concat(fixSrt(srtText).replace(/\\{\\\\([ibu])\\}/g, '').replace(/\\{\\\\([ibu])1\\}/g, '<$1>').replace(/\\{([ibu])\\}/g, '<$1>').replace(/\\{\\/([ibu])\\}/g, '').replace(/(\\d\\d:\\d\\d:\\d\\d),(\\d\\d\\d)/g, '$1.$2').replace(/\\{[\\s\\S]*?\\}/g, '').concat('\\r\\n\\r\\n'));\n}\nfunction vttToBlob(vttText) {\n return URL.createObjectURL(new Blob([\n vttText\n ], {\n type: 'text/vtt'\n }));\n}\nfunction assToVtt(ass) {\n const reAss = new RegExp(\"Dialogue:\\\\s\\\\d,(\\\\d+:\\\\d\\\\d:\\\\d\\\\d.\\\\d\\\\d),(\\\\d+:\\\\d\\\\d:\\\\d\\\\d.\\\\d\\\\d),([^,]*),([^,]*),(?:[^,]*,){4}([\\\\s\\\\S]*)$\", 'i');\n function fixTime(time = '') {\n return time.split(/[:.]/).map((item, index, arr)=>{\n if (index === arr.length - 1) {\n if (item.length === 1) return `.${item}00`;\n if (item.length === 2) return `.${item}0`;\n } else if (item.length === 1) return (index === 0 ? '0' : ':0') + item;\n return index === 0 ? item : index === arr.length - 1 ? `.${item}` : `:${item}`;\n }).join('');\n }\n return `WEBVTT` + `\\n` + `\\n${ass.split(/\\r?\\n/).map((line)=>{\n const m = line.match(reAss);\n if (!m) return null;\n return {\n start: fixTime(m[1].trim()),\n end: fixTime(m[2].trim()),\n text: m[5].replace(/\\{[\\s\\S]*?\\}/g, '').replace(/(\\\\N)/g, '\\n').trim().split(/\\r?\\n/).map((item)=>item.trim()).join('\\n')\n };\n }).filter((line)=>line).map((line, index)=>{\n if (line) return `${index + 1}\\n` + `${line.start} --> ${line.end}` + `\\n` + `${line.text}`;\n return '';\n }).filter((line)=>line.trim()).join('\\n\\n')}`;\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"7VpW0\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"sleep\", ()=>sleep);\nparcelHelpers.export(exports, \"debounce\", ()=>debounce);\nparcelHelpers.export(exports, \"throttle\", ()=>throttle);\nfunction sleep(ms = 0) {\n return new Promise((resolve)=>setTimeout(resolve, ms));\n}\nfunction debounce(func, duration) {\n let timeout;\n return function(...args) {\n const effect = ()=>{\n timeout = null;\n return func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(effect, duration);\n };\n}\nfunction throttle(func, duration) {\n let shouldWait = false;\n return function(...args) {\n if (!shouldWait) {\n func.apply(this, args);\n shouldWait = true;\n setTimeout(()=>{\n shouldWait = false;\n }, duration);\n }\n };\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"hARFP\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _optionValidator = require(\"option-validator\");\nvar _optionValidatorDefault = parcelHelpers.interopDefault(_optionValidator);\nvar _scheme = require(\"../scheme\");\nvar _dom = require(\"./dom\");\nvar _error = require(\"./error\");\nclass Component {\n constructor(art){\n this.id = 0;\n this.art = art;\n this.cache = new Map();\n this.add = this.add.bind(this);\n this.remove = this.remove.bind(this);\n this.update = this.update.bind(this);\n }\n get show() {\n return (0, _dom.hasClass)(this.art.template.$player, `art-${this.name}-show`);\n }\n set show(value) {\n const { $player } = this.art.template;\n const className = `art-${this.name}-show`;\n if (value) (0, _dom.addClass)($player, className);\n else (0, _dom.removeClass)($player, className);\n this.art.emit(this.name, value);\n }\n toggle() {\n this.show = !this.show;\n }\n add(getOption) {\n const option = typeof getOption === 'function' ? getOption(this.art) : getOption;\n option.html = option.html || '';\n (0, _optionValidatorDefault.default)(option, (0, _scheme.ComponentOption));\n if (!this.$parent || !this.name || option.disable) return;\n const name = option.name || `${this.name}${this.id}`;\n const item = this.cache.get(name);\n (0, _error.errorHandle)(!item, `Can't add an existing [${name}] to the [${this.name}]`);\n this.id += 1;\n const $ref = (0, _dom.createElement)('div');\n (0, _dom.addClass)($ref, `art-${this.name}`);\n (0, _dom.addClass)($ref, `art-${this.name}-${name}`);\n const childs = Array.from(this.$parent.children);\n $ref.dataset.index = option.index || this.id;\n const nextChild = childs.find((item)=>Number(item.dataset.index) >= Number($ref.dataset.index));\n if (nextChild) nextChild.insertAdjacentElement('beforebegin', $ref);\n else (0, _dom.append)(this.$parent, $ref);\n if (option.html) (0, _dom.append)($ref, option.html);\n if (option.style) (0, _dom.setStyles)($ref, option.style);\n if (option.tooltip) (0, _dom.tooltip)($ref, option.tooltip);\n const events = [];\n if (option.click) {\n const destroyEvent = this.art.events.proxy($ref, 'click', (event)=>{\n event.preventDefault();\n option.click.call(this.art, this, event);\n });\n events.push(destroyEvent);\n }\n if (option.selector && [\n 'left',\n 'right'\n ].includes(option.position)) this.selector(option, $ref, events);\n this[name] = $ref;\n this.cache.set(name, {\n $ref,\n events,\n option\n });\n if (option.mounted) option.mounted.call(this.art, $ref);\n return $ref;\n }\n remove(name) {\n const item = this.cache.get(name);\n (0, _error.errorHandle)(item, `Can't find [${name}] from the [${this.name}]`);\n if (item.option.beforeUnmount) item.option.beforeUnmount.call(this.art, item.$ref);\n for(let index = 0; index < item.events.length; index++)this.art.events.remove(item.events[index]);\n this.cache.delete(name);\n delete this[name];\n (0, _dom.remove)(item.$ref);\n }\n update(option) {\n const item = this.cache.get(option.name);\n if (item) {\n option = Object.assign(item.option, option);\n this.remove(option.name);\n }\n return this.add(option);\n }\n}\nexports.default = Component;\n\n},{\"option-validator\":\"hw47a\",\"../scheme\":\"9Np13\",\"./dom\":\"Nhosu\",\"./error\":\"480HW\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"9Np13\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"ComponentOption\", ()=>ComponentOption);\nvar _utils = require(\"../utils\");\nconst a = 'array';\nconst b = 'boolean';\nconst s = 'string';\nconst n = 'number';\nconst o = 'object';\nconst f = 'function';\nfunction validElement(value, type, paths) {\n return (0, _utils.errorHandle)(type === s || type === n || value instanceof Element, `${paths.join('.')} require '${s}' or 'Element' type`);\n}\nconst ComponentOption = {\n html: validElement,\n disable: `?${b}`,\n name: `?${s}`,\n index: `?${n}`,\n style: `?${o}`,\n click: `?${f}`,\n mounted: `?${f}`,\n tooltip: `?${s}|${n}`,\n width: `?${n}`,\n selector: `?${a}`,\n onSelect: `?${f}`,\n switch: `?${b}`,\n onSwitch: `?${f}`,\n range: `?${a}`,\n onRange: `?${f}`,\n onChange: `?${f}`\n};\nexports.default = {\n id: s,\n container: validElement,\n url: s,\n poster: s,\n type: s,\n theme: s,\n lang: s,\n volume: n,\n isLive: b,\n muted: b,\n autoplay: b,\n autoSize: b,\n autoMini: b,\n loop: b,\n flip: b,\n playbackRate: b,\n aspectRatio: b,\n screenshot: b,\n setting: b,\n hotkey: b,\n pip: b,\n mutex: b,\n backdrop: b,\n fullscreen: b,\n fullscreenWeb: b,\n subtitleOffset: b,\n miniProgressBar: b,\n useSSR: b,\n playsInline: b,\n lock: b,\n gesture: b,\n fastForward: b,\n autoPlayback: b,\n autoOrientation: b,\n airplay: b,\n proxy: `?${f}`,\n plugins: [\n f\n ],\n layers: [\n ComponentOption\n ],\n contextmenu: [\n ComponentOption\n ],\n settings: [\n ComponentOption\n ],\n controls: [\n {\n ...ComponentOption,\n position: (value, _, paths)=>{\n const position = [\n 'top',\n 'left',\n 'right'\n ];\n return (0, _utils.errorHandle)(position.includes(value), `${paths.join('.')} only accept ${position.toString()} as parameters`);\n }\n }\n ],\n quality: [\n {\n default: `?${b}`,\n html: s,\n url: s\n }\n ],\n highlight: [\n {\n time: n,\n text: s\n }\n ],\n thumbnails: {\n url: s,\n number: n,\n column: n,\n width: n,\n height: n,\n scale: n\n },\n subtitle: {\n url: s,\n name: s,\n type: s,\n style: o,\n escape: b,\n encoding: s,\n onVttLoad: f\n },\n moreVideoAttr: o,\n i18n: o,\n icons: o,\n cssVar: o,\n customType: o\n};\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"atwXQ\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>aspectRatio);\nvar _utils = require(\"../utils\");\nfunction aspectRatio(option) {\n return (art)=>{\n const { i18n, constructor: { ASPECT_RATIO } } = art;\n const html = ASPECT_RATIO.map((item)=>`${item === 'default' ? i18n.get('Default') : item}`).join('');\n return {\n ...option,\n html: `${i18n.get('Aspect Ratio')}: ${html}`,\n click: (contextmenu, event)=>{\n const { value } = event.target.dataset;\n if (value) {\n art.aspectRatio = value;\n contextmenu.show = false;\n }\n },\n mounted: ($panel)=>{\n const $default = (0, _utils.query)('[data-value=\"default\"]', $panel);\n if ($default) (0, _utils.inverseClass)($default, 'art-current');\n art.on('aspectRatio', (value)=>{\n const $current = (0, _utils.queryAll)('span', $panel).find((item)=>item.dataset.value === value);\n if ($current) (0, _utils.inverseClass)($current, 'art-current');\n });\n }\n };\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"34cn1\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>close);\nfunction close(option) {\n return (art)=>({\n ...option,\n html: art.i18n.get('Close'),\n click: (contextmenu)=>{\n contextmenu.show = false;\n }\n });\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"4YbBf\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>flip);\nvar _utils = require(\"../utils\");\nfunction flip(option) {\n return (art)=>{\n const { i18n, constructor: { FLIP } } = art;\n const html = FLIP.map((item)=>`${i18n.get((0, _utils.capitalize)(item))}`).join('');\n return {\n ...option,\n html: `${i18n.get('Video Flip')}: ${html}`,\n click: (contextmenu, event)=>{\n const { value } = event.target.dataset;\n if (value) {\n art.flip = value.toLowerCase();\n contextmenu.show = false;\n }\n },\n mounted: ($panel)=>{\n const $default = (0, _utils.query)('[data-value=\"normal\"]', $panel);\n if ($default) (0, _utils.inverseClass)($default, 'art-current');\n art.on('flip', (value)=>{\n const $current = (0, _utils.queryAll)('span', $panel).find((item)=>item.dataset.value === value);\n if ($current) (0, _utils.inverseClass)($current, 'art-current');\n });\n }\n };\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"difR5\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>info);\nfunction info(option) {\n return (art)=>({\n ...option,\n html: art.i18n.get('Video Info'),\n click: (contextmenu)=>{\n art.info.show = true;\n contextmenu.show = false;\n }\n });\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"2VDwk\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>playbackRate);\nvar _utils = require(\"../utils\");\nfunction playbackRate(option) {\n return (art)=>{\n const { i18n, constructor: { PLAYBACK_RATE } } = art;\n const html = PLAYBACK_RATE.map((item)=>`${item === 1 ? i18n.get('Normal') : item.toFixed(1)}`).join('');\n return {\n ...option,\n html: `${i18n.get('Play Speed')}: ${html}`,\n click: (contextmenu, event)=>{\n const { value } = event.target.dataset;\n if (value) {\n art.playbackRate = Number(value);\n contextmenu.show = false;\n }\n },\n mounted: ($panel)=>{\n const $default = (0, _utils.query)('[data-value=\"1\"]', $panel);\n if ($default) (0, _utils.inverseClass)($default, 'art-current');\n art.on('video:ratechange', ()=>{\n const $current = (0, _utils.queryAll)('span', $panel).find((item)=>Number(item.dataset.value) === art.playbackRate);\n if ($current) (0, _utils.inverseClass)($current, 'art-current');\n });\n }\n };\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"bza1P\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>function(option) {\n return {\n ...option,\n html: `ArtPlayer ${0, _packageJson.version}`\n };\n });\nvar _packageJson = require(\"../../package.json\");\n\n},{\"../../package.json\":\"2r8Ra\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"8He0l\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"../utils\");\nvar _component = require(\"../utils/component\");\nvar _componentDefault = parcelHelpers.interopDefault(_component);\nvar _airplay = require(\"./airplay\");\nvar _airplayDefault = parcelHelpers.interopDefault(_airplay);\nvar _fullscreen = require(\"./fullscreen\");\nvar _fullscreenDefault = parcelHelpers.interopDefault(_fullscreen);\nvar _fullscreenWeb = require(\"./fullscreenWeb\");\nvar _fullscreenWebDefault = parcelHelpers.interopDefault(_fullscreenWeb);\nvar _pip = require(\"./pip\");\nvar _pipDefault = parcelHelpers.interopDefault(_pip);\nvar _playAndPause = require(\"./playAndPause\");\nvar _playAndPauseDefault = parcelHelpers.interopDefault(_playAndPause);\nvar _progress = require(\"./progress\");\nvar _progressDefault = parcelHelpers.interopDefault(_progress);\nvar _screenshot = require(\"./screenshot\");\nvar _screenshotDefault = parcelHelpers.interopDefault(_screenshot);\nvar _setting = require(\"./setting\");\nvar _settingDefault = parcelHelpers.interopDefault(_setting);\nvar _time = require(\"./time\");\nvar _timeDefault = parcelHelpers.interopDefault(_time);\nvar _volume = require(\"./volume\");\nvar _volumeDefault = parcelHelpers.interopDefault(_volume);\nclass Control extends (0, _componentDefault.default) {\n constructor(art){\n super(art);\n this.isHover = false;\n this.name = 'control';\n this.timer = Date.now();\n const { constructor } = art;\n const { $player, $bottom } = this.art.template;\n art.on('mousemove', ()=>{\n if (!(0, _utils.isMobile)) this.show = true;\n });\n art.on('click', ()=>{\n if (0, _utils.isMobile) this.toggle();\n else this.show = true;\n });\n art.on('document:mousemove', (event)=>{\n this.isHover = (0, _utils.includeFromEvent)(event, $bottom);\n });\n art.on('video:timeupdate', ()=>{\n if (!art.setting.show && !this.isHover && !art.isInput && art.playing && this.show && Date.now() - this.timer >= constructor.CONTROL_HIDE_TIME) this.show = false;\n });\n art.on('control', (state)=>{\n if (state) {\n (0, _utils.removeClass)($player, 'art-hide-cursor');\n (0, _utils.addClass)($player, 'art-hover');\n this.timer = Date.now();\n } else {\n (0, _utils.addClass)($player, 'art-hide-cursor');\n (0, _utils.removeClass)($player, 'art-hover');\n }\n });\n this.init();\n }\n init() {\n const { option } = this.art;\n if (!option.isLive) this.add((0, _progressDefault.default)({\n name: 'progress',\n position: 'top',\n index: 10\n }));\n this.add({\n name: 'thumbnails',\n position: 'top',\n index: 20\n });\n this.add((0, _playAndPauseDefault.default)({\n name: 'playAndPause',\n position: 'left',\n index: 10\n }));\n this.add((0, _volumeDefault.default)({\n name: 'volume',\n position: 'left',\n index: 20\n }));\n if (!option.isLive) this.add((0, _timeDefault.default)({\n name: 'time',\n position: 'left',\n index: 30\n }));\n if (option.quality.length) (0, _utils.sleep)().then(()=>{\n this.art.quality = option.quality;\n });\n if (option.screenshot && !(0, _utils.isMobile)) this.add((0, _screenshotDefault.default)({\n name: 'screenshot',\n position: 'right',\n index: 20\n }));\n if (option.setting) this.add((0, _settingDefault.default)({\n name: 'setting',\n position: 'right',\n index: 30\n }));\n if (option.pip) this.add((0, _pipDefault.default)({\n name: 'pip',\n position: 'right',\n index: 40\n }));\n if (option.airplay && window.WebKitPlaybackTargetAvailabilityEvent) this.add((0, _airplayDefault.default)({\n name: 'airplay',\n position: 'right',\n index: 50\n }));\n if (option.fullscreenWeb) this.add((0, _fullscreenWebDefault.default)({\n name: 'fullscreenWeb',\n position: 'right',\n index: 60\n }));\n if (option.fullscreen) this.add((0, _fullscreenDefault.default)({\n name: 'fullscreen',\n position: 'right',\n index: 70\n }));\n for(let index = 0; index < option.controls.length; index++)this.add(option.controls[index]);\n }\n add(getOption) {\n const option = typeof getOption === 'function' ? getOption(this.art) : getOption;\n const { $progress, $controlsLeft, $controlsRight } = this.art.template;\n switch(option.position){\n case 'top':\n this.$parent = $progress;\n break;\n case 'left':\n this.$parent = $controlsLeft;\n break;\n case 'right':\n this.$parent = $controlsRight;\n break;\n default:\n (0, _utils.errorHandle)(false, `Control option.position must one of 'top', 'left', 'right'`);\n break;\n }\n super.add(option);\n }\n check(target) {\n target.$control_value.innerHTML = target.html;\n for(let index = 0; index < target.$control_option.length; index++){\n const item = target.$control_option[index];\n item.default = item === target;\n if (item.default) (0, _utils.inverseClass)(item.$control_item, 'art-current');\n }\n }\n selector(option, $ref, events) {\n const { proxy } = this.art.events;\n (0, _utils.addClass)($ref, 'art-control-selector');\n const $value = (0, _utils.createElement)('div');\n (0, _utils.addClass)($value, 'art-selector-value');\n (0, _utils.append)($value, option.html);\n $ref.textContent = '';\n (0, _utils.append)($ref, $value);\n const $list = (0, _utils.createElement)('div');\n (0, _utils.addClass)($list, 'art-selector-list');\n (0, _utils.append)($ref, $list);\n for(let index = 0; index < option.selector.length; index++){\n const item = option.selector[index];\n const $item = (0, _utils.createElement)('div');\n (0, _utils.addClass)($item, 'art-selector-item');\n if (item.default) (0, _utils.addClass)($item, 'art-current');\n $item.dataset.index = index;\n $item.dataset.value = item.value;\n $item.innerHTML = item.html;\n (0, _utils.append)($list, $item);\n (0, _utils.def)(item, '$control_option', {\n get: ()=>option.selector\n });\n (0, _utils.def)(item, '$control_item', {\n get: ()=>$item\n });\n (0, _utils.def)(item, '$control_value', {\n get: ()=>$value\n });\n }\n const event = proxy($list, 'click', async (event)=>{\n const path = (0, _utils.getComposedPath)(event);\n const item = option.selector.find((item)=>item.$control_item === path.find(($item)=>item.$control_item === $item));\n this.check(item);\n if (option.onSelect) $value.innerHTML = await option.onSelect.call(this.art, item, item.$control_item, event);\n });\n events.push(event);\n }\n}\nexports.default = Control;\n\n},{\"../utils\":\"ga71d\",\"../utils/component\":\"hARFP\",\"./airplay\":\"aJLUA\",\"./fullscreen\":\"hN3wo\",\"./fullscreenWeb\":\"9w6yG\",\"./pip\":\"dPgoc\",\"./playAndPause\":\"bGr3A\",\"./progress\":\"aTHK3\",\"./screenshot\":\"1t1Fe\",\"./setting\":\"3gKuK\",\"./time\":\"3kqR1\",\"./volume\":\"cqTwe\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"aJLUA\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>airplay);\nvar _utils = require(\"../utils\");\nfunction airplay(option) {\n return (art)=>({\n ...option,\n tooltip: art.i18n.get('AirPlay'),\n mounted: ($control)=>{\n const { proxy, icons } = art;\n (0, _utils.append)($control, icons.airplay);\n proxy($control, 'click', ()=>art.airplay());\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"hN3wo\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>fullscreen);\nvar _utils = require(\"../utils\");\nfunction fullscreen(option) {\n return (art)=>({\n ...option,\n tooltip: art.i18n.get('Fullscreen'),\n mounted: ($control)=>{\n const { proxy, icons, i18n } = art;\n const $fullscreenOn = (0, _utils.append)($control, icons.fullscreenOn);\n const $fullscreenOff = (0, _utils.append)($control, icons.fullscreenOff);\n (0, _utils.setStyle)($fullscreenOff, 'display', 'none');\n proxy($control, 'click', ()=>{\n art.fullscreen = !art.fullscreen;\n });\n art.on('fullscreen', (state)=>{\n if (state) {\n (0, _utils.tooltip)($control, i18n.get('Exit Fullscreen'));\n (0, _utils.setStyle)($fullscreenOn, 'display', 'none');\n (0, _utils.setStyle)($fullscreenOff, 'display', 'inline-flex');\n } else {\n (0, _utils.tooltip)($control, i18n.get('Fullscreen'));\n (0, _utils.setStyle)($fullscreenOn, 'display', 'inline-flex');\n (0, _utils.setStyle)($fullscreenOff, 'display', 'none');\n }\n });\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"9w6yG\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>fullscreenWeb);\nvar _utils = require(\"../utils\");\nfunction fullscreenWeb(option) {\n return (art)=>({\n ...option,\n tooltip: art.i18n.get('Web Fullscreen'),\n mounted: ($control)=>{\n const { proxy, icons, i18n } = art;\n const $fullscreenWebOn = (0, _utils.append)($control, icons.fullscreenWebOn);\n const $fullscreenWebOff = (0, _utils.append)($control, icons.fullscreenWebOff);\n (0, _utils.setStyle)($fullscreenWebOff, 'display', 'none');\n proxy($control, 'click', ()=>{\n art.fullscreenWeb = !art.fullscreenWeb;\n });\n art.on('fullscreenWeb', (value)=>{\n if (value) {\n (0, _utils.tooltip)($control, i18n.get('Exit Web Fullscreen'));\n (0, _utils.setStyle)($fullscreenWebOn, 'display', 'none');\n (0, _utils.setStyle)($fullscreenWebOff, 'display', 'inline-flex');\n } else {\n (0, _utils.tooltip)($control, i18n.get('Web Fullscreen'));\n (0, _utils.setStyle)($fullscreenWebOn, 'display', 'inline-flex');\n (0, _utils.setStyle)($fullscreenWebOff, 'display', 'none');\n }\n });\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"dPgoc\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>pip);\nvar _utils = require(\"../utils\");\nfunction pip(option) {\n return (art)=>({\n ...option,\n tooltip: art.i18n.get('PIP Mode'),\n mounted: ($control)=>{\n const { proxy, icons, i18n } = art;\n (0, _utils.append)($control, icons.pip);\n proxy($control, 'click', ()=>{\n art.pip = !art.pip;\n });\n art.on('pip', (value)=>{\n (0, _utils.tooltip)($control, i18n.get(value ? 'Exit PIP Mode' : 'PIP Mode'));\n });\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"bGr3A\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>playAndPause);\nvar _utils = require(\"../utils\");\nfunction playAndPause(option) {\n return (art)=>({\n ...option,\n mounted: ($control)=>{\n const { proxy, icons, i18n } = art;\n const $play = (0, _utils.append)($control, icons.play);\n const $pause = (0, _utils.append)($control, icons.pause);\n (0, _utils.tooltip)($play, i18n.get('Play'));\n (0, _utils.tooltip)($pause, i18n.get('Pause'));\n proxy($play, 'click', ()=>{\n art.play();\n });\n proxy($pause, 'click', ()=>{\n art.pause();\n });\n function showPlay() {\n (0, _utils.setStyle)($play, 'display', 'flex');\n (0, _utils.setStyle)($pause, 'display', 'none');\n }\n function showPause() {\n (0, _utils.setStyle)($play, 'display', 'none');\n (0, _utils.setStyle)($pause, 'display', 'flex');\n }\n if (art.playing) showPause();\n else showPlay();\n art.on('video:playing', ()=>{\n showPause();\n });\n art.on('video:pause', ()=>{\n showPlay();\n });\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"aTHK3\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"getPosFromEvent\", ()=>getPosFromEvent);\nparcelHelpers.export(exports, \"setCurrentTime\", ()=>setCurrentTime);\nparcelHelpers.export(exports, \"default\", ()=>progress);\nvar _utils = require(\"../utils\");\nfunction getPosFromEvent(art, event) {\n const { $progress } = art.template;\n const { left } = (0, _utils.getRect)($progress);\n const eventLeft = (0, _utils.isMobile) ? event.touches[0].clientX : event.clientX;\n const width = (0, _utils.clamp)(eventLeft - left, 0, $progress.clientWidth);\n const second = width / $progress.clientWidth * art.duration;\n const time = (0, _utils.secondToTime)(second);\n const percentage = (0, _utils.clamp)(width / $progress.clientWidth, 0, 1);\n return {\n second,\n time,\n width,\n percentage\n };\n}\nfunction setCurrentTime(art, event) {\n if (art.isRotate) {\n const percentage = event.touches[0].clientY / art.height;\n const second = percentage * art.duration;\n art.emit('setBar', 'played', percentage, event);\n art.seek = second;\n } else {\n const { second, percentage } = getPosFromEvent(art, event);\n art.emit('setBar', 'played', percentage, event);\n art.seek = second;\n }\n}\nfunction progress(options) {\n return (art)=>{\n const { icons, option, proxy } = art;\n return {\n ...options,\n html: `\n
\n
\n
\n
\n
\n
\n
\n
\n `,\n mounted: ($control)=>{\n let tipTimer = null;\n let isDragging = false;\n const $hover = (0, _utils.query)('.art-progress-hover', $control);\n const $loaded = (0, _utils.query)('.art-progress-loaded', $control);\n const $played = (0, _utils.query)('.art-progress-played', $control);\n const $highlight = (0, _utils.query)('.art-progress-highlight', $control);\n const $indicator = (0, _utils.query)('.art-progress-indicator', $control);\n const $tip = (0, _utils.query)('.art-progress-tip', $control);\n if (icons.indicator) (0, _utils.append)($indicator, icons.indicator);\n else (0, _utils.setStyle)($indicator, 'backgroundColor', 'var(--art-theme)');\n function showHighlight(event) {\n const { width } = getPosFromEvent(art, event);\n const { text } = event.target.dataset;\n $tip.textContent = text;\n const tipWidth = $tip.clientWidth;\n if (width <= tipWidth / 2) (0, _utils.setStyle)($tip, 'left', 0);\n else if (width > $control.clientWidth - tipWidth / 2) (0, _utils.setStyle)($tip, 'left', `${$control.clientWidth - tipWidth}px`);\n else (0, _utils.setStyle)($tip, 'left', `${width - tipWidth / 2}px`);\n }\n function showTime(event, touch) {\n const { width, time } = touch || getPosFromEvent(art, event);\n $tip.textContent = time;\n const tipWidth = $tip.clientWidth;\n if (width <= tipWidth / 2) (0, _utils.setStyle)($tip, 'left', 0);\n else if (width > $control.clientWidth - tipWidth / 2) (0, _utils.setStyle)($tip, 'left', `${$control.clientWidth - tipWidth}px`);\n else (0, _utils.setStyle)($tip, 'left', `${width - tipWidth / 2}px`);\n }\n function updateHighlight() {\n $highlight.textContent = '';\n for(let index = 0; index < option.highlight.length; index++){\n const item = option.highlight[index];\n const left = (0, _utils.clamp)(item.time, 0, art.duration) / art.duration * 100;\n const html = ``;\n (0, _utils.append)($highlight, html);\n }\n }\n function setBar(type, percentage, event) {\n const isMobileDragging = type === 'played' && event && (0, _utils.isMobile);\n if (type === 'loaded') (0, _utils.setStyle)($loaded, 'width', `${percentage * 100}%`);\n if (type === 'hover') (0, _utils.setStyle)($hover, 'width', `${percentage * 100}%`);\n if (type === 'played') {\n (0, _utils.setStyle)($played, 'width', `${percentage * 100}%`);\n (0, _utils.setStyle)($indicator, 'left', `${percentage * 100}%`);\n }\n if (isMobileDragging) {\n (0, _utils.setStyle)($tip, 'display', 'flex');\n const width = $control.clientWidth * percentage;\n const time = (0, _utils.secondToTime)(percentage * art.duration);\n showTime(event, {\n width,\n time\n });\n clearTimeout(tipTimer);\n tipTimer = setTimeout(()=>{\n (0, _utils.setStyle)($tip, 'display', 'none');\n }, 500);\n }\n }\n art.on('setBar', setBar);\n art.on('video:loadedmetadata', updateHighlight);\n if (art.constructor.USE_RAF) art.on('raf', ()=>{\n art.emit('setBar', 'played', art.played);\n art.emit('setBar', 'loaded', art.loaded);\n });\n else {\n art.on('video:timeupdate', ()=>{\n art.emit('setBar', 'played', art.played);\n });\n art.on('video:progress', ()=>{\n art.emit('setBar', 'loaded', art.loaded);\n });\n art.on('video:ended', ()=>{\n art.emit('setBar', 'played', 1);\n });\n }\n art.emit('setBar', 'loaded', art.loaded || 0);\n if (!(0, _utils.isMobile)) {\n proxy($control, 'click', (event)=>{\n if (event.target !== $indicator) setCurrentTime(art, event);\n });\n proxy($control, 'mousemove', (event)=>{\n const { percentage } = getPosFromEvent(art, event);\n art.emit('setBar', 'hover', percentage, event);\n (0, _utils.setStyle)($tip, 'display', 'flex');\n if ((0, _utils.includeFromEvent)(event, $highlight)) showHighlight(event);\n else showTime(event);\n });\n proxy($control, 'mouseleave', (event)=>{\n (0, _utils.setStyle)($tip, 'display', 'none');\n art.emit('setBar', 'hover', 0, event);\n });\n proxy($control, 'mousedown', (event)=>{\n isDragging = event.button === 0;\n });\n art.on('document:mousemove', (event)=>{\n if (isDragging) {\n const { second, percentage } = getPosFromEvent(art, event);\n art.emit('setBar', 'played', percentage, event);\n art.seek = second;\n }\n });\n art.on('document:mouseup', ()=>{\n if (isDragging) isDragging = false;\n });\n }\n }\n };\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"1t1Fe\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>screenshot);\nvar _utils = require(\"../utils\");\nfunction screenshot(option) {\n return (art)=>({\n ...option,\n tooltip: art.i18n.get('Screenshot'),\n mounted: ($control)=>{\n const { proxy, icons } = art;\n (0, _utils.append)($control, icons.screenshot);\n proxy($control, 'click', ()=>{\n art.screenshot();\n });\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"3gKuK\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>setting);\nvar _utils = require(\"../utils\");\nfunction setting(option) {\n return (art)=>({\n ...option,\n tooltip: art.i18n.get('Show Setting'),\n mounted: ($control)=>{\n const { proxy, icons, i18n } = art;\n (0, _utils.append)($control, icons.setting);\n proxy($control, 'click', ()=>{\n art.setting.toggle();\n art.setting.resize();\n });\n art.on('setting', (value)=>{\n (0, _utils.tooltip)($control, i18n.get(value ? 'Hide Setting' : 'Show Setting'));\n });\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"3kqR1\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>time);\nvar _utils = require(\"../utils\");\nfunction time(option) {\n return (art)=>({\n ...option,\n style: (0, _utils.isMobile) ? {\n fontSize: '12px',\n padding: '0 5px'\n } : {\n cursor: 'auto',\n padding: '0 10px'\n },\n mounted: ($control)=>{\n function getTime() {\n const newTime = `${(0, _utils.secondToTime)(art.currentTime)} / ${(0, _utils.secondToTime)(art.duration)}`;\n if (newTime !== $control.textContent) $control.textContent = newTime;\n }\n getTime();\n const events = [\n 'video:loadedmetadata',\n 'video:timeupdate',\n 'video:progress'\n ];\n for(let index = 0; index < events.length; index++)art.on(events[index], getTime);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"cqTwe\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>volume);\nvar _utils = require(\"../utils\");\nfunction volume(option) {\n return (art)=>({\n ...option,\n mounted: ($control)=>{\n const { proxy, icons } = art;\n const $volume = (0, _utils.append)($control, icons.volume);\n const $close = (0, _utils.append)($control, icons.volumeClose);\n const $panel = (0, _utils.append)($control, '
');\n const $inner = (0, _utils.append)($panel, '
');\n const $value = (0, _utils.append)($inner, `
`);\n const $slider = (0, _utils.append)($inner, `
`);\n const $handle = (0, _utils.append)($slider, `
`);\n const $loaded = (0, _utils.append)($handle, `
`);\n const $indicator = (0, _utils.append)($slider, `
`);\n function getVolumeFromEvent(event) {\n const { top, height } = (0, _utils.getRect)($slider);\n return 1 - (event.clientY - top) / height;\n }\n function update() {\n if (art.muted || art.volume === 0) {\n (0, _utils.setStyle)($volume, 'display', 'none');\n (0, _utils.setStyle)($close, 'display', 'flex');\n (0, _utils.setStyle)($indicator, 'top', '100%');\n (0, _utils.setStyle)($loaded, 'top', '100%');\n $value.textContent = 0;\n } else {\n const percentage = art.volume * 100;\n (0, _utils.setStyle)($volume, 'display', 'flex');\n (0, _utils.setStyle)($close, 'display', 'none');\n (0, _utils.setStyle)($indicator, 'top', `${100 - percentage}%`);\n (0, _utils.setStyle)($loaded, 'top', `${100 - percentage}%`);\n $value.textContent = Math.floor(percentage);\n }\n }\n update();\n art.on('video:volumechange', update);\n proxy($volume, 'click', ()=>{\n art.muted = true;\n });\n proxy($close, 'click', ()=>{\n art.muted = false;\n });\n if (0, _utils.isMobile) (0, _utils.setStyle)($panel, 'display', 'none');\n else {\n let isDragging = false;\n proxy($slider, 'mousedown', (event)=>{\n isDragging = event.button === 0;\n art.volume = getVolumeFromEvent(event);\n });\n art.on('document:mousemove', (event)=>{\n if (isDragging) {\n art.muted = false;\n art.volume = getVolumeFromEvent(event);\n }\n });\n art.on('document:mouseup', ()=>{\n if (isDragging) isDragging = false;\n });\n }\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"eFzfA\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _clickInit = require(\"./clickInit\");\nvar _clickInitDefault = parcelHelpers.interopDefault(_clickInit);\nvar _gestureInit = require(\"./gestureInit\");\nvar _gestureInitDefault = parcelHelpers.interopDefault(_gestureInit);\nvar _globalInit = require(\"./globalInit\");\nvar _globalInitDefault = parcelHelpers.interopDefault(_globalInit);\nvar _hoverInit = require(\"./hoverInit\");\nvar _hoverInitDefault = parcelHelpers.interopDefault(_hoverInit);\nvar _moveInit = require(\"./moveInit\");\nvar _moveInitDefault = parcelHelpers.interopDefault(_moveInit);\nvar _resizeInit = require(\"./resizeInit\");\nvar _resizeInitDefault = parcelHelpers.interopDefault(_resizeInit);\nvar _updateInit = require(\"./updateInit\");\nvar _updateInitDefault = parcelHelpers.interopDefault(_updateInit);\nvar _viewInit = require(\"./viewInit\");\nvar _viewInitDefault = parcelHelpers.interopDefault(_viewInit);\nclass Events {\n constructor(art){\n this.destroyEvents = [];\n this.proxy = this.proxy.bind(this);\n this.hover = this.hover.bind(this);\n (0, _clickInitDefault.default)(art, this);\n (0, _hoverInitDefault.default)(art, this);\n (0, _moveInitDefault.default)(art, this);\n (0, _resizeInitDefault.default)(art, this);\n (0, _gestureInitDefault.default)(art, this);\n (0, _viewInitDefault.default)(art, this);\n (0, _globalInitDefault.default)(art, this);\n (0, _updateInitDefault.default)(art, this);\n }\n proxy(target, name, callback, option = {}) {\n if (Array.isArray(name)) return name.map((item)=>this.proxy(target, item, callback, option));\n target.addEventListener(name, callback, option);\n const destroy = ()=>target.removeEventListener(name, callback, option);\n this.destroyEvents.push(destroy);\n return destroy;\n }\n hover(target, mouseenter, mouseleave) {\n if (mouseenter) this.proxy(target, 'mouseenter', mouseenter);\n if (mouseleave) this.proxy(target, 'mouseleave', mouseleave);\n }\n remove(destroyEvent) {\n const index = this.destroyEvents.indexOf(destroyEvent);\n if (index > -1) {\n destroyEvent();\n this.destroyEvents.splice(index, 1);\n }\n }\n destroy() {\n for(let index = 0; index < this.destroyEvents.length; index++)this.destroyEvents[index]();\n }\n}\nexports.default = Events;\n\n},{\"./clickInit\":\"6uudx\",\"./gestureInit\":\"7AgpD\",\"./globalInit\":\"k05ig\",\"./hoverInit\":\"34Nn1\",\"./moveInit\":\"1n1rp\",\"./resizeInit\":\"gfqtJ\",\"./updateInit\":\"g3KXr\",\"./viewInit\":\"kPVx0\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"6uudx\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>clickInit);\nvar _utils = require(\"../utils\");\nfunction clickInit(art, events) {\n const { constructor, template: { $player, $video } } = art;\n function onDocumentClick(event) {\n if ((0, _utils.includeFromEvent)(event, $player)) {\n art.isInput = event.target.tagName === 'INPUT';\n art.isFocus = true;\n art.emit('focus', event);\n } else {\n art.isInput = false;\n art.isFocus = false;\n art.emit('blur', event);\n }\n }\n art.on('document:click', onDocumentClick);\n art.on('document:contextmenu', onDocumentClick);\n let clickTimes = [];\n events.proxy($video, 'click', (event)=>{\n const now = Date.now();\n clickTimes.push(now);\n const { MOBILE_CLICK_PLAY, DBCLICK_TIME, MOBILE_DBCLICK_PLAY, DBCLICK_FULLSCREEN } = constructor;\n const clicks = clickTimes.filter((t)=>now - t <= DBCLICK_TIME);\n switch(clicks.length){\n case 1:\n art.emit('click', event);\n if (0, _utils.isMobile) {\n if (!art.isLock && MOBILE_CLICK_PLAY) art.toggle();\n } else art.toggle();\n clickTimes = clicks;\n break;\n case 2:\n art.emit('dblclick', event);\n if (0, _utils.isMobile) {\n if (!art.isLock && MOBILE_DBCLICK_PLAY) art.toggle();\n } else if (DBCLICK_FULLSCREEN) art.fullscreen = !art.fullscreen;\n clickTimes = [];\n break;\n default:\n clickTimes = [];\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"7AgpD\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>gestureInit);\nvar _progress = require(\"../control/progress\");\nvar _utils = require(\"../utils\");\nfunction GetSlideAngle(dx, dy) {\n return Math.atan2(dy, dx) * 180 / Math.PI;\n}\nfunction GetSlideDirection(startX, startY, endX, endY) {\n const dy = startY - endY;\n const dx = endX - startX;\n let result = 0;\n if (Math.abs(dx) < 2 && Math.abs(dy) < 2) return result;\n const angle = GetSlideAngle(dx, dy);\n if (angle >= -45 && angle < 45) result = 4;\n else if (angle >= 45 && angle < 135) result = 1;\n else if (angle >= -135 && angle < -45) result = 2;\n else if (angle >= 135 && angle <= 180 || angle >= -180 && angle < -135) result = 3;\n return result;\n}\nfunction gestureInit(art, events) {\n if ((0, _utils.isMobile) && !art.option.isLive) {\n const { $video, $progress } = art.template;\n let touchTarget = null;\n let isDragging = false;\n let startX = 0;\n let startY = 0;\n let startTime = 0;\n const onTouchStart = (event)=>{\n if (event.touches.length === 1 && !art.isLock) {\n if (touchTarget === $progress) (0, _progress.setCurrentTime)(art, event);\n isDragging = true;\n const { pageX, pageY } = event.touches[0];\n startX = pageX;\n startY = pageY;\n startTime = art.currentTime;\n }\n };\n const onTouchMove = (event)=>{\n if (event.touches.length === 1 && isDragging && art.duration) {\n const { pageX, pageY } = event.touches[0];\n const direction = GetSlideDirection(startX, startY, pageX, pageY);\n const isHorizontal = [\n 3,\n 4\n ].includes(direction);\n const isVertical = [\n 1,\n 2\n ].includes(direction);\n const isLegal = isHorizontal && !art.isRotate || isVertical && art.isRotate;\n if (isLegal) {\n const ratioX = (0, _utils.clamp)((pageX - startX) / art.width, -1, 1);\n const ratioY = (0, _utils.clamp)((pageY - startY) / art.height, -1, 1);\n const ratio = art.isRotate ? ratioY : ratioX;\n const TOUCH_MOVE_RATIO = touchTarget === $video ? art.constructor.TOUCH_MOVE_RATIO : 1;\n const currentTime = (0, _utils.clamp)(startTime + art.duration * ratio * TOUCH_MOVE_RATIO, 0, art.duration);\n art.seek = currentTime;\n art.emit('setBar', 'played', (0, _utils.clamp)(currentTime / art.duration, 0, 1), event);\n art.notice.show = `${(0, _utils.secondToTime)(currentTime)} / ${(0, _utils.secondToTime)(art.duration)}`;\n }\n }\n };\n const onTouchEnd = ()=>{\n if (isDragging) {\n startX = 0;\n startY = 0;\n startTime = 0;\n isDragging = false;\n touchTarget = null;\n }\n };\n if (art.option.gesture) {\n events.proxy($video, 'touchstart', (event)=>{\n touchTarget = $video;\n onTouchStart(event);\n });\n events.proxy($video, 'touchmove', onTouchMove);\n }\n events.proxy($progress, 'touchstart', (event)=>{\n touchTarget = $progress;\n onTouchStart(event);\n });\n events.proxy($progress, 'touchmove', onTouchMove);\n art.on('document:touchend', onTouchEnd);\n }\n}\n\n},{\"../control/progress\":\"aTHK3\",\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"k05ig\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>globalInit);\nfunction globalInit(art, events) {\n const documentEvents = [\n 'click',\n 'mouseup',\n 'keydown',\n 'touchend',\n 'touchmove',\n 'mousemove',\n 'contextmenu',\n 'webkitfullscreenchange'\n ];\n const windowEvents = [\n 'resize',\n 'scroll',\n 'orientationchange'\n ];\n const destroyEvents = [];\n function bindGlobalEvents(source = {}) {\n for(let index = 0; index < destroyEvents.length; index++)events.remove(destroyEvents[index]);\n destroyEvents.length = 0;\n const { $player } = art.template;\n documentEvents.forEach((name)=>{\n const doc = source.document || $player.ownerDocument || document;\n const destroy = events.proxy(doc, name, (event)=>{\n art.emit(`document:${name}`, event);\n });\n destroyEvents.push(destroy);\n });\n windowEvents.forEach((name)=>{\n const win = source.window || $player.ownerDocument?.defaultView || window;\n const destroy = events.proxy(win, name, (event)=>{\n art.emit(`window:${name}`, event);\n });\n destroyEvents.push(destroy);\n });\n }\n bindGlobalEvents();\n events.bindGlobalEvents = bindGlobalEvents;\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"34Nn1\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>hoverInit);\nvar _utils = require(\"../utils\");\nfunction hoverInit(art, events) {\n const { $player } = art.template;\n events.hover($player, (event)=>{\n (0, _utils.addClass)($player, 'art-hover');\n art.emit('hover', true, event);\n }, (event)=>{\n (0, _utils.removeClass)($player, 'art-hover');\n art.emit('hover', false, event);\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"1n1rp\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>moveInit);\nfunction moveInit(art, events) {\n const { $player } = art.template;\n events.proxy($player, 'mousemove', (event)=>{\n art.emit('mousemove', event);\n });\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"gfqtJ\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>resizeInit);\nvar _utils = require(\"../utils\");\nfunction resizeInit(art, events) {\n const { option, constructor } = art;\n art.on('resize', ()=>{\n const { aspectRatio, notice } = art;\n if (art.state === 'standard' && option.autoSize) art.autoSize();\n art.aspectRatio = aspectRatio;\n notice.show = '';\n });\n const resizeFn = (0, _utils.debounce)(()=>art.emit('resize'), constructor.RESIZE_TIME);\n art.on('window:orientationchange', ()=>resizeFn());\n art.on('window:resize', ()=>resizeFn());\n if (screen && screen.orientation && screen.orientation.onchange) events.proxy(screen.orientation, 'change', ()=>resizeFn());\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"g3KXr\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>updateInit);\nfunction updateInit(art) {\n if (art.constructor.USE_RAF) {\n let timer = null;\n (function update() {\n if (art.playing) art.emit('raf');\n if (!art.isDestroy) timer = requestAnimationFrame(update);\n })();\n art.on('destroy', ()=>{\n cancelAnimationFrame(timer);\n });\n }\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"kPVx0\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>viewInit);\nvar _utils = require(\"../utils\");\nfunction viewInit(art) {\n const { option, constructor, template: { $container } } = art;\n const scrollFn = (0, _utils.throttle)(()=>{\n art.emit('view', (0, _utils.isInViewport)($container, constructor.SCROLL_GAP));\n }, constructor.SCROLL_TIME);\n art.on('window:scroll', ()=>scrollFn());\n art.on('view', (state)=>{\n if (option.autoMini) art.mini = !state;\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"aLFu1\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"./utils\");\nclass Hotkey {\n constructor(art){\n this.art = art;\n this.keys = {};\n if (art.option.hotkey && !(0, _utils.isMobile)) this.init();\n }\n init() {\n const { constructor } = this.art;\n this.add('Escape', ()=>{\n if (this.art.fullscreenWeb) this.art.fullscreenWeb = false;\n });\n this.add('Space', ()=>{\n this.art.toggle();\n });\n this.add('ArrowLeft', ()=>{\n this.art.backward = constructor.SEEK_STEP;\n });\n this.add('ArrowUp', ()=>{\n this.art.volume += constructor.VOLUME_STEP;\n });\n this.add('ArrowRight', ()=>{\n this.art.forward = constructor.SEEK_STEP;\n });\n this.add('ArrowDown', ()=>{\n this.art.volume -= constructor.VOLUME_STEP;\n });\n this.art.on('document:keydown', (event)=>{\n if (this.art.isFocus) {\n const tag = document.activeElement.tagName.toUpperCase();\n const editable = document.activeElement.getAttribute('contenteditable');\n if (tag !== 'INPUT' && tag !== 'TEXTAREA' && editable !== '' && editable !== 'true' && !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) {\n const events = this.keys[event.code];\n if (events) {\n event.preventDefault();\n for(let index = 0; index < events.length; index++)events[index].call(this.art, event);\n this.art.emit('hotkey', event);\n }\n }\n }\n this.art.emit('keydown', event);\n });\n }\n add(key, event) {\n if (this.keys[key]) this.keys[key].push(event);\n else this.keys[key] = [\n event\n ];\n return this;\n }\n remove(key, event) {\n if (this.keys[key]) {\n const index = this.keys[key].indexOf(event);\n if (index !== -1) this.keys[key].splice(index, 1);\n }\n return this;\n }\n}\nexports.default = Hotkey;\n\n},{\"./utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"g6kBT\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"../utils\");\nvar _zhCn = require(\"./zh-cn\");\nvar _zhCnDefault = parcelHelpers.interopDefault(_zhCn);\nclass I18n {\n constructor(art){\n this.art = art;\n this.languages = {\n 'zh-cn': (0, _zhCnDefault.default)\n };\n this.language = {};\n this.update(art.option.i18n);\n }\n init() {\n const lang = this.art.option.lang.toLowerCase();\n this.language = this.languages[lang] || {};\n }\n get(key) {\n return this.language[key] || key;\n }\n update(value) {\n this.languages = (0, _utils.mergeDeep)(this.languages, value);\n this.init();\n }\n}\nexports.default = I18n;\n\n},{\"../utils\":\"ga71d\",\"./zh-cn\":\"hpI5A\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"hpI5A\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nconst zhCn = {\n 'Video Info': \"\\u7EDF\\u8BA1\\u4FE1\\u606F\",\n 'Close': \"\\u5173\\u95ED\",\n 'Video Load Failed': \"\\u52A0\\u8F7D\\u5931\\u8D25\",\n 'Volume': \"\\u97F3\\u91CF\",\n 'Play': \"\\u64AD\\u653E\",\n 'Pause': \"\\u6682\\u505C\",\n 'Rate': \"\\u901F\\u5EA6\",\n 'Mute': \"\\u9759\\u97F3\",\n 'Video Flip': \"\\u753B\\u9762\\u7FFB\\u8F6C\",\n 'Horizontal': \"\\u6C34\\u5E73\",\n 'Vertical': \"\\u5782\\u76F4\",\n 'Reconnect': \"\\u91CD\\u65B0\\u8FDE\\u63A5\",\n 'Show Setting': \"\\u663E\\u793A\\u8BBE\\u7F6E\",\n 'Hide Setting': \"\\u9690\\u85CF\\u8BBE\\u7F6E\",\n 'Screenshot': \"\\u622A\\u56FE\",\n 'Play Speed': \"\\u64AD\\u653E\\u901F\\u5EA6\",\n 'Aspect Ratio': \"\\u753B\\u9762\\u6BD4\\u4F8B\",\n 'Default': \"\\u9ED8\\u8BA4\",\n 'Normal': \"\\u6B63\\u5E38\",\n 'Open': \"\\u6253\\u5F00\",\n 'Switch Video': \"\\u5207\\u6362\",\n 'Switch Subtitle': \"\\u5207\\u6362\\u5B57\\u5E55\",\n 'Fullscreen': \"\\u5168\\u5C4F\",\n 'Exit Fullscreen': \"\\u9000\\u51FA\\u5168\\u5C4F\",\n 'Web Fullscreen': \"\\u7F51\\u9875\\u5168\\u5C4F\",\n 'Exit Web Fullscreen': \"\\u9000\\u51FA\\u7F51\\u9875\\u5168\\u5C4F\",\n 'Mini Player': \"\\u8FF7\\u4F60\\u64AD\\u653E\\u5668\",\n 'PIP Mode': \"\\u5F00\\u542F\\u753B\\u4E2D\\u753B\",\n 'Exit PIP Mode': \"\\u9000\\u51FA\\u753B\\u4E2D\\u753B\",\n 'PIP Not Supported': \"\\u4E0D\\u652F\\u6301\\u753B\\u4E2D\\u753B\",\n 'Fullscreen Not Supported': \"\\u4E0D\\u652F\\u6301\\u5168\\u5C4F\",\n 'Subtitle Offset': \"\\u5B57\\u5E55\\u504F\\u79FB\",\n 'Last Seen': \"\\u4E0A\\u6B21\\u770B\\u5230\",\n 'Jump Play': \"\\u8DF3\\u8F6C\\u64AD\\u653E\",\n 'AirPlay': \"\\u9694\\u7A7A\\u64AD\\u653E\",\n 'AirPlay Not Available': \"\\u9694\\u7A7A\\u64AD\\u653E\\u4E0D\\u53EF\\u7528\"\n};\nexports.default = zhCn;\nif (typeof window !== 'undefined') window['artplayer-i18n-zh-cn'] = zhCn;\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"exeCy\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _airplaySvg = require(\"bundle-text:./airplay.svg\");\nvar _airplaySvgDefault = parcelHelpers.interopDefault(_airplaySvg);\nvar _arrowLeftSvg = require(\"bundle-text:./arrow-left.svg\");\nvar _arrowLeftSvgDefault = parcelHelpers.interopDefault(_arrowLeftSvg);\nvar _arrowRightSvg = require(\"bundle-text:./arrow-right.svg\");\nvar _arrowRightSvgDefault = parcelHelpers.interopDefault(_arrowRightSvg);\nvar _aspectRatioSvg = require(\"bundle-text:./aspect-ratio.svg\");\nvar _aspectRatioSvgDefault = parcelHelpers.interopDefault(_aspectRatioSvg);\nvar _checkSvg = require(\"bundle-text:./check.svg\");\nvar _checkSvgDefault = parcelHelpers.interopDefault(_checkSvg);\nvar _closeSvg = require(\"bundle-text:./close.svg\");\nvar _closeSvgDefault = parcelHelpers.interopDefault(_closeSvg);\nvar _configSvg = require(\"bundle-text:./config.svg\");\nvar _configSvgDefault = parcelHelpers.interopDefault(_configSvg);\nvar _errorSvg = require(\"bundle-text:./error.svg\");\nvar _errorSvgDefault = parcelHelpers.interopDefault(_errorSvg);\nvar _flipSvg = require(\"bundle-text:./flip.svg\");\nvar _flipSvgDefault = parcelHelpers.interopDefault(_flipSvg);\nvar _fullscreenOffSvg = require(\"bundle-text:./fullscreen-off.svg\");\nvar _fullscreenOffSvgDefault = parcelHelpers.interopDefault(_fullscreenOffSvg);\nvar _fullscreenOnSvg = require(\"bundle-text:./fullscreen-on.svg\");\nvar _fullscreenOnSvgDefault = parcelHelpers.interopDefault(_fullscreenOnSvg);\nvar _fullscreenWebOffSvg = require(\"bundle-text:./fullscreen-web-off.svg\");\nvar _fullscreenWebOffSvgDefault = parcelHelpers.interopDefault(_fullscreenWebOffSvg);\nvar _fullscreenWebOnSvg = require(\"bundle-text:./fullscreen-web-on.svg\");\nvar _fullscreenWebOnSvgDefault = parcelHelpers.interopDefault(_fullscreenWebOnSvg);\nvar _loadingSvg = require(\"bundle-text:./loading.svg\");\nvar _loadingSvgDefault = parcelHelpers.interopDefault(_loadingSvg);\nvar _lockSvg = require(\"bundle-text:./lock.svg\");\nvar _lockSvgDefault = parcelHelpers.interopDefault(_lockSvg);\nvar _pauseSvg = require(\"bundle-text:./pause.svg\");\nvar _pauseSvgDefault = parcelHelpers.interopDefault(_pauseSvg);\nvar _pipSvg = require(\"bundle-text:./pip.svg\");\nvar _pipSvgDefault = parcelHelpers.interopDefault(_pipSvg);\nvar _playSvg = require(\"bundle-text:./play.svg\");\nvar _playSvgDefault = parcelHelpers.interopDefault(_playSvg);\nvar _playbackRateSvg = require(\"bundle-text:./playback-rate.svg\");\nvar _playbackRateSvgDefault = parcelHelpers.interopDefault(_playbackRateSvg);\nvar _screenshotSvg = require(\"bundle-text:./screenshot.svg\");\nvar _screenshotSvgDefault = parcelHelpers.interopDefault(_screenshotSvg);\nvar _settingSvg = require(\"bundle-text:./setting.svg\");\nvar _settingSvgDefault = parcelHelpers.interopDefault(_settingSvg);\nvar _stateSvg = require(\"bundle-text:./state.svg\");\nvar _stateSvgDefault = parcelHelpers.interopDefault(_stateSvg);\nvar _switchOffSvg = require(\"bundle-text:./switch-off.svg\");\nvar _switchOffSvgDefault = parcelHelpers.interopDefault(_switchOffSvg);\nvar _switchOnSvg = require(\"bundle-text:./switch-on.svg\");\nvar _switchOnSvgDefault = parcelHelpers.interopDefault(_switchOnSvg);\nvar _unlockSvg = require(\"bundle-text:./unlock.svg\");\nvar _unlockSvgDefault = parcelHelpers.interopDefault(_unlockSvg);\nvar _volumeCloseSvg = require(\"bundle-text:./volume-close.svg\");\nvar _volumeCloseSvgDefault = parcelHelpers.interopDefault(_volumeCloseSvg);\nvar _volumeSvg = require(\"bundle-text:./volume.svg\");\nvar _volumeSvgDefault = parcelHelpers.interopDefault(_volumeSvg);\nvar _utils = require(\"../utils\");\nclass Icons {\n constructor(art){\n const icons = {\n loading: (0, _loadingSvgDefault.default),\n state: (0, _stateSvgDefault.default),\n play: (0, _playSvgDefault.default),\n pause: (0, _pauseSvgDefault.default),\n check: (0, _checkSvgDefault.default),\n volume: (0, _volumeSvgDefault.default),\n volumeClose: (0, _volumeCloseSvgDefault.default),\n screenshot: (0, _screenshotSvgDefault.default),\n setting: (0, _settingSvgDefault.default),\n pip: (0, _pipSvgDefault.default),\n arrowLeft: (0, _arrowLeftSvgDefault.default),\n arrowRight: (0, _arrowRightSvgDefault.default),\n playbackRate: (0, _playbackRateSvgDefault.default),\n aspectRatio: (0, _aspectRatioSvgDefault.default),\n config: (0, _configSvgDefault.default),\n lock: (0, _lockSvgDefault.default),\n flip: (0, _flipSvgDefault.default),\n unlock: (0, _unlockSvgDefault.default),\n fullscreenOff: (0, _fullscreenOffSvgDefault.default),\n fullscreenOn: (0, _fullscreenOnSvgDefault.default),\n fullscreenWebOff: (0, _fullscreenWebOffSvgDefault.default),\n fullscreenWebOn: (0, _fullscreenWebOnSvgDefault.default),\n switchOn: (0, _switchOnSvgDefault.default),\n switchOff: (0, _switchOffSvgDefault.default),\n error: (0, _errorSvgDefault.default),\n close: (0, _closeSvgDefault.default),\n airplay: (0, _airplaySvgDefault.default),\n ...art.option.icons\n };\n for(const key in icons)(0, _utils.def)(this, key, {\n get: ()=>(0, _utils.getIcon)(key, icons[key])\n });\n }\n}\nexports.default = Icons;\n\n},{\"bundle-text:./airplay.svg\":\"6cSMf\",\"bundle-text:./arrow-left.svg\":\"joLIU\",\"bundle-text:./arrow-right.svg\":\"4JNCR\",\"bundle-text:./aspect-ratio.svg\":\"gzgBo\",\"bundle-text:./check.svg\":\"k53Iw\",\"bundle-text:./close.svg\":\"bbb2e\",\"bundle-text:./config.svg\":\"bMazo\",\"bundle-text:./error.svg\":\"58f4C\",\"bundle-text:./flip.svg\":\"iIgzx\",\"bundle-text:./fullscreen-off.svg\":\"cPRy5\",\"bundle-text:./fullscreen-on.svg\":\"3XKQU\",\"bundle-text:./fullscreen-web-off.svg\":\"guowG\",\"bundle-text:./fullscreen-web-on.svg\":\"iSqKG\",\"bundle-text:./loading.svg\":\"eSbu5\",\"bundle-text:./lock.svg\":\"2D7et\",\"bundle-text:./pause.svg\":\"iiALA\",\"bundle-text:./pip.svg\":\"hdXSq\",\"bundle-text:./play.svg\":\"jlvhb\",\"bundle-text:./playback-rate.svg\":\"4bsv1\",\"bundle-text:./screenshot.svg\":\"7SMEz\",\"bundle-text:./setting.svg\":\"hdzYd\",\"bundle-text:./state.svg\":\"2Aoc0\",\"bundle-text:./switch-off.svg\":\"kDa5R\",\"bundle-text:./switch-on.svg\":\"74Jrq\",\"bundle-text:./unlock.svg\":\"YvH9I\",\"bundle-text:./volume-close.svg\":\"fHhw4\",\"bundle-text:./volume.svg\":\"k9IJR\",\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"6cSMf\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"joLIU\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"4JNCR\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"gzgBo\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"k53Iw\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"bbb2e\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"bMazo\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"58f4C\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"iIgzx\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"cPRy5\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"3XKQU\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"guowG\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"iSqKG\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"eSbu5\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"2D7et\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"iiALA\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"hdXSq\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"jlvhb\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"4bsv1\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"7SMEz\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"hdzYd\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"2Aoc0\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"kDa5R\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"74Jrq\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"YvH9I\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"fHhw4\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"k9IJR\":[function(require,module,exports,__globalThis) {\nmodule.exports = \"\";\n\n},{}],\"cUKxy\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"./utils\");\nvar _component = require(\"./utils/component\");\nvar _componentDefault = parcelHelpers.interopDefault(_component);\nclass Info extends (0, _componentDefault.default) {\n constructor(art){\n super(art);\n this.name = 'info';\n if (!(0, _utils.isMobile)) this.init();\n }\n init() {\n const { proxy, constructor, template: { $infoPanel, $infoClose, $video } } = this.art;\n proxy($infoClose, 'click', ()=>{\n this.show = false;\n });\n let timer = null;\n const $types = (0, _utils.queryAll)('[data-video]', $infoPanel) || [];\n this.art.on('destroy', ()=>clearTimeout(timer));\n function loop() {\n for(let index = 0; index < $types.length; index++){\n const item = $types[index];\n const value = $video[item.dataset.video];\n const textContent = typeof value === 'number' ? value.toFixed(2) : value;\n if (item.textContent !== textContent) item.textContent = textContent;\n }\n timer = setTimeout(loop, constructor.INFO_LOOP_TIME);\n }\n loop();\n }\n}\nexports.default = Info;\n\n},{\"./utils\":\"ga71d\",\"./utils/component\":\"hARFP\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"fIHKi\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _component = require(\"./utils/component\");\nvar _componentDefault = parcelHelpers.interopDefault(_component);\nclass Layer extends (0, _componentDefault.default) {\n constructor(art){\n super(art);\n const { option, template: { $layer } } = art;\n this.name = 'layer';\n this.$parent = $layer;\n for(let index = 0; index < option.layers.length; index++)this.add(option.layers[index]);\n }\n}\nexports.default = Layer;\n\n},{\"./utils/component\":\"hARFP\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"a7tJk\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"./utils\");\nvar _component = require(\"./utils/component\");\nvar _componentDefault = parcelHelpers.interopDefault(_component);\nclass Loading extends (0, _componentDefault.default) {\n constructor(art){\n super(art);\n this.name = 'loading';\n (0, _utils.append)(art.template.$loading, art.icons.loading);\n }\n}\nexports.default = Loading;\n\n},{\"./utils\":\"ga71d\",\"./utils/component\":\"hARFP\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"chOzM\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"./utils\");\nvar _component = require(\"./utils/component\");\nvar _componentDefault = parcelHelpers.interopDefault(_component);\nclass Mask extends (0, _componentDefault.default) {\n constructor(art){\n super(art);\n this.name = 'mask';\n const { template, icons, events } = art;\n const $state = (0, _utils.append)(template.$state, icons.state);\n const $error = (0, _utils.append)(template.$state, icons.error);\n (0, _utils.setStyle)($error, 'display', 'none');\n art.on('destroy', ()=>{\n (0, _utils.setStyle)($state, 'display', 'none');\n (0, _utils.setStyle)($error, 'display', null);\n });\n events.proxy(template.$state, 'click', ()=>art.play());\n }\n}\nexports.default = Mask;\n\n},{\"./utils\":\"ga71d\",\"./utils/component\":\"hARFP\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"qalnP\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"./utils\");\nclass Notice {\n constructor(art){\n this.art = art;\n this.timer = null;\n }\n set show(msg) {\n const { constructor, template: { $player, $noticeInner } } = this.art;\n if (msg) {\n $noticeInner.textContent = msg instanceof Error ? msg.message.trim() : msg;\n (0, _utils.addClass)($player, 'art-notice-show');\n clearTimeout(this.timer);\n this.timer = setTimeout(()=>{\n $noticeInner.textContent = '';\n (0, _utils.removeClass)($player, 'art-notice-show');\n }, constructor.NOTICE_TIME);\n } else (0, _utils.removeClass)($player, 'art-notice-show');\n }\n get show() {\n const { template: { $player } } = this.art;\n return $player.classList.contains('art-notice-show');\n }\n}\nexports.default = Notice;\n\n},{\"./utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"hZaaw\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _airplayMix = require(\"./airplayMix\");\nvar _airplayMixDefault = parcelHelpers.interopDefault(_airplayMix);\nvar _aspectRatioMix = require(\"./aspectRatioMix\");\nvar _aspectRatioMixDefault = parcelHelpers.interopDefault(_aspectRatioMix);\nvar _attrMix = require(\"./attrMix\");\nvar _attrMixDefault = parcelHelpers.interopDefault(_attrMix);\nvar _autoHeightMix = require(\"./autoHeightMix\");\nvar _autoHeightMixDefault = parcelHelpers.interopDefault(_autoHeightMix);\nvar _autoSizeMix = require(\"./autoSizeMix\");\nvar _autoSizeMixDefault = parcelHelpers.interopDefault(_autoSizeMix);\nvar _cssVarMix = require(\"./cssVarMix\");\nvar _cssVarMixDefault = parcelHelpers.interopDefault(_cssVarMix);\nvar _currentTimeMix = require(\"./currentTimeMix\");\nvar _currentTimeMixDefault = parcelHelpers.interopDefault(_currentTimeMix);\nvar _durationMix = require(\"./durationMix\");\nvar _durationMixDefault = parcelHelpers.interopDefault(_durationMix);\nvar _eventInit = require(\"./eventInit\");\nvar _eventInitDefault = parcelHelpers.interopDefault(_eventInit);\nvar _flipMix = require(\"./flipMix\");\nvar _flipMixDefault = parcelHelpers.interopDefault(_flipMix);\nvar _fullscreenMix = require(\"./fullscreenMix\");\nvar _fullscreenMixDefault = parcelHelpers.interopDefault(_fullscreenMix);\nvar _fullscreenWebMix = require(\"./fullscreenWebMix\");\nvar _fullscreenWebMixDefault = parcelHelpers.interopDefault(_fullscreenWebMix);\nvar _loadedMix = require(\"./loadedMix\");\nvar _loadedMixDefault = parcelHelpers.interopDefault(_loadedMix);\nvar _miniMix = require(\"./miniMix\");\nvar _miniMixDefault = parcelHelpers.interopDefault(_miniMix);\nvar _optionInit = require(\"./optionInit\");\nvar _optionInitDefault = parcelHelpers.interopDefault(_optionInit);\nvar _pauseMix = require(\"./pauseMix\");\nvar _pauseMixDefault = parcelHelpers.interopDefault(_pauseMix);\nvar _pipMix = require(\"./pipMix\");\nvar _pipMixDefault = parcelHelpers.interopDefault(_pipMix);\nvar _playbackRateMix = require(\"./playbackRateMix\");\nvar _playbackRateMixDefault = parcelHelpers.interopDefault(_playbackRateMix);\nvar _playedMix = require(\"./playedMix\");\nvar _playedMixDefault = parcelHelpers.interopDefault(_playedMix);\nvar _playingMix = require(\"./playingMix\");\nvar _playingMixDefault = parcelHelpers.interopDefault(_playingMix);\nvar _playMix = require(\"./playMix\");\nvar _playMixDefault = parcelHelpers.interopDefault(_playMix);\nvar _posterMix = require(\"./posterMix\");\nvar _posterMixDefault = parcelHelpers.interopDefault(_posterMix);\nvar _qualityMix = require(\"./qualityMix\");\nvar _qualityMixDefault = parcelHelpers.interopDefault(_qualityMix);\nvar _rectMix = require(\"./rectMix\");\nvar _rectMixDefault = parcelHelpers.interopDefault(_rectMix);\nvar _screenshotMix = require(\"./screenshotMix\");\nvar _screenshotMixDefault = parcelHelpers.interopDefault(_screenshotMix);\nvar _seekMix = require(\"./seekMix\");\nvar _seekMixDefault = parcelHelpers.interopDefault(_seekMix);\nvar _stateMix = require(\"./stateMix\");\nvar _stateMixDefault = parcelHelpers.interopDefault(_stateMix);\nvar _subtitleOffsetMix = require(\"./subtitleOffsetMix\");\nvar _subtitleOffsetMixDefault = parcelHelpers.interopDefault(_subtitleOffsetMix);\nvar _switchMix = require(\"./switchMix\");\nvar _switchMixDefault = parcelHelpers.interopDefault(_switchMix);\nvar _themeMix = require(\"./themeMix\");\nvar _themeMixDefault = parcelHelpers.interopDefault(_themeMix);\nvar _thumbnailsMix = require(\"./thumbnailsMix\");\nvar _thumbnailsMixDefault = parcelHelpers.interopDefault(_thumbnailsMix);\nvar _toggleMix = require(\"./toggleMix\");\nvar _toggleMixDefault = parcelHelpers.interopDefault(_toggleMix);\nvar _typeMix = require(\"./typeMix\");\nvar _typeMixDefault = parcelHelpers.interopDefault(_typeMix);\nvar _urlMix = require(\"./urlMix\");\nvar _urlMixDefault = parcelHelpers.interopDefault(_urlMix);\nvar _volumeMix = require(\"./volumeMix\");\nvar _volumeMixDefault = parcelHelpers.interopDefault(_volumeMix);\nclass Player {\n constructor(art){\n (0, _urlMixDefault.default)(art);\n (0, _attrMixDefault.default)(art);\n (0, _playMixDefault.default)(art);\n (0, _pauseMixDefault.default)(art);\n (0, _toggleMixDefault.default)(art);\n (0, _seekMixDefault.default)(art);\n (0, _volumeMixDefault.default)(art);\n (0, _currentTimeMixDefault.default)(art);\n (0, _durationMixDefault.default)(art);\n (0, _switchMixDefault.default)(art);\n (0, _playbackRateMixDefault.default)(art);\n (0, _aspectRatioMixDefault.default)(art);\n (0, _screenshotMixDefault.default)(art);\n (0, _fullscreenMixDefault.default)(art);\n (0, _fullscreenWebMixDefault.default)(art);\n (0, _pipMixDefault.default)(art);\n (0, _loadedMixDefault.default)(art);\n (0, _playedMixDefault.default)(art);\n (0, _playingMixDefault.default)(art);\n (0, _autoSizeMixDefault.default)(art);\n (0, _rectMixDefault.default)(art);\n (0, _flipMixDefault.default)(art);\n (0, _miniMixDefault.default)(art);\n (0, _posterMixDefault.default)(art);\n (0, _autoHeightMixDefault.default)(art);\n (0, _cssVarMixDefault.default)(art);\n (0, _themeMixDefault.default)(art);\n (0, _typeMixDefault.default)(art);\n (0, _stateMixDefault.default)(art);\n (0, _subtitleOffsetMixDefault.default)(art);\n (0, _airplayMixDefault.default)(art);\n (0, _qualityMixDefault.default)(art);\n (0, _thumbnailsMixDefault.default)(art);\n (0, _eventInitDefault.default)(art);\n (0, _optionInitDefault.default)(art);\n }\n}\nexports.default = Player;\n\n},{\"./airplayMix\":\"3IeSh\",\"./aspectRatioMix\":\"bFvhq\",\"./attrMix\":\"gAL4f\",\"./autoHeightMix\":\"3icDv\",\"./autoSizeMix\":\"1S8RZ\",\"./cssVarMix\":\"OAYvI\",\"./currentTimeMix\":\"8HvEc\",\"./durationMix\":\"9MX8B\",\"./eventInit\":\"8tgU8\",\"./flipMix\":\"b5r8r\",\"./fullscreenMix\":\"30dhw\",\"./fullscreenWebMix\":\"3yxCW\",\"./loadedMix\":\"fZNfw\",\"./miniMix\":\"1IZ8F\",\"./optionInit\":\"kk3GB\",\"./pauseMix\":\"hCnBa\",\"./pipMix\":\"7cdWF\",\"./playbackRateMix\":\"v7Tjj\",\"./playedMix\":\"6NJ76\",\"./playingMix\":\"hS5cB\",\"./playMix\":\"RTHaZ\",\"./posterMix\":\"iQk0e\",\"./qualityMix\":\"fbmk7\",\"./rectMix\":\"clzGw\",\"./screenshotMix\":\"egOBC\",\"./seekMix\":\"aGOdO\",\"./stateMix\":\"f5ksL\",\"./subtitleOffsetMix\":\"eVqE5\",\"./switchMix\":\"hXXTl\",\"./themeMix\":\"9kb19\",\"./thumbnailsMix\":\"cICxL\",\"./toggleMix\":\"ifRrM\",\"./typeMix\":\"kUOhk\",\"./urlMix\":\"7uCXi\",\"./volumeMix\":\"dzR4V\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"3IeSh\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>airplayMix);\nvar _utils = require(\"../utils\");\nfunction airplayMix(art) {\n const { i18n, notice, proxy, template: { $video } } = art;\n let available = true;\n if (window.WebKitPlaybackTargetAvailabilityEvent && $video.webkitShowPlaybackTargetPicker) proxy($video, 'webkitplaybacktargetavailabilitychanged', (event)=>{\n switch(event.availability){\n case 'available':\n available = true;\n break;\n case 'not-available':\n available = false;\n break;\n }\n });\n else available = false;\n (0, _utils.def)(art, 'airplay', {\n value () {\n if (available) {\n $video.webkitShowPlaybackTargetPicker();\n art.emit('airplay');\n } else notice.show = i18n.get('AirPlay Not Available');\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"bFvhq\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>aspectRatioMix);\nvar _utils = require(\"../utils\");\nfunction aspectRatioMix(art) {\n const { i18n, notice, template: { $video, $player } } = art;\n (0, _utils.def)(art, 'aspectRatio', {\n get () {\n return $player.dataset.aspectRatio || 'default';\n },\n set (ratio) {\n if (!ratio) ratio = 'default';\n if (ratio === 'default') {\n (0, _utils.setStyle)($video, 'width', null);\n (0, _utils.setStyle)($video, 'height', null);\n (0, _utils.setStyle)($video, 'margin', null);\n delete $player.dataset.aspectRatio;\n } else {\n const ratioArray = ratio.split(':').map(Number);\n const { clientWidth, clientHeight } = $player;\n const playerRatio = clientWidth / clientHeight;\n const setupRatio = ratioArray[0] / ratioArray[1];\n if (playerRatio > setupRatio) {\n (0, _utils.setStyle)($video, 'width', `${setupRatio * clientHeight}px`);\n (0, _utils.setStyle)($video, 'height', '100%');\n (0, _utils.setStyle)($video, 'margin', '0 auto');\n } else {\n (0, _utils.setStyle)($video, 'width', '100%');\n (0, _utils.setStyle)($video, 'height', `${clientWidth / setupRatio}px`);\n (0, _utils.setStyle)($video, 'margin', 'auto 0');\n }\n $player.dataset.aspectRatio = ratio;\n }\n notice.show = `${i18n.get('Aspect Ratio')}: ${ratio === 'default' ? i18n.get('Default') : ratio}`;\n art.emit('aspectRatio', ratio);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"gAL4f\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>attrMix);\nvar _utils = require(\"../utils\");\nfunction attrMix(art) {\n const { template: { $video } } = art;\n (0, _utils.def)(art, 'attr', {\n value (key, value) {\n if (value === undefined) return $video[key];\n $video[key] = value;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"3icDv\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>autoHeightMix);\nvar _utils = require(\"../utils\");\nfunction autoHeightMix(art) {\n const { template: { $container, $video } } = art;\n (0, _utils.def)(art, 'autoHeight', {\n value () {\n const { clientWidth } = $container;\n const { videoHeight, videoWidth } = $video;\n const height = videoHeight * (clientWidth / videoWidth);\n (0, _utils.setStyle)($container, 'height', `${height}px`);\n art.emit('autoHeight', height);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"1S8RZ\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>autoSizeMix);\nvar _utils = require(\"../utils\");\nfunction autoSizeMix(art) {\n const { $container, $player, $video } = art.template;\n (0, _utils.def)(art, 'autoSize', {\n value () {\n const { videoWidth, videoHeight } = $video;\n const { width, height } = (0, _utils.getRect)($container);\n const videoRatio = videoWidth / videoHeight;\n const containerRatio = width / height;\n if (containerRatio > videoRatio) {\n const percentage = height * videoRatio / width * 100;\n (0, _utils.setStyle)($player, 'width', `${percentage}%`);\n (0, _utils.setStyle)($player, 'height', '100%');\n } else {\n const percentage = width / videoRatio / height * 100;\n (0, _utils.setStyle)($player, 'width', '100%');\n (0, _utils.setStyle)($player, 'height', `${percentage}%`);\n }\n art.emit('autoSize', {\n width: art.width,\n height: art.height\n });\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"OAYvI\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>cssVarMix);\nvar _utils = require(\"../utils\");\nfunction cssVarMix(art) {\n const { $player } = art.template;\n (0, _utils.def)(art, 'cssVar', {\n value (key, value) {\n if (value) return $player.style.setProperty(key, value);\n else return getComputedStyle($player).getPropertyValue(key);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"8HvEc\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>currentTimeMix);\nvar _utils = require(\"../utils\");\nfunction currentTimeMix(art) {\n const { $video } = art.template;\n (0, _utils.def)(art, 'currentTime', {\n get: ()=>$video.currentTime || 0,\n set: (time)=>{\n time = Number.parseFloat(time);\n if (Number.isNaN(time)) return;\n $video.currentTime = (0, _utils.clamp)(time, 0, art.duration);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"9MX8B\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>durationMix);\nvar _utils = require(\"../utils\");\nfunction durationMix(art) {\n (0, _utils.def)(art, 'duration', {\n get: ()=>{\n const { duration } = art.template.$video;\n if (duration === Infinity) return 0;\n return duration || 0;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"8tgU8\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>eventInit);\nvar _config = require(\"../config\");\nvar _configDefault = parcelHelpers.interopDefault(_config);\nvar _utils = require(\"../utils\");\nfunction eventInit(art) {\n const { i18n, notice, option, constructor, proxy, template: { $player, $video, $poster } } = art;\n let reconnectTime = 0;\n for(let index = 0; index < (0, _configDefault.default).events.length; index++)proxy($video, (0, _configDefault.default).events[index], (event)=>{\n art.emit(`video:${event.type}`, event);\n });\n // art.on('video:abort', () => {\n // });\n art.on('video:canplay', ()=>{\n reconnectTime = 0;\n art.loading.show = false;\n });\n art.once('video:canplay', ()=>{\n art.loading.show = false;\n art.controls.show = true;\n art.mask.show = true;\n art.isReady = true;\n art.emit('ready');\n });\n // art.on('video:canplaythrough', () => {\n // });\n // art.on('video:durationchange', () => {\n // });\n // art.on('video:emptied', () => {\n // });\n art.on('video:ended', ()=>{\n if (option.loop) {\n art.seek = 0;\n art.play();\n art.controls.show = false;\n art.mask.show = false;\n } else {\n art.controls.show = true;\n art.mask.show = true;\n }\n });\n art.on('video:error', async (error)=>{\n if (reconnectTime < constructor.RECONNECT_TIME_MAX) {\n await (0, _utils.sleep)(constructor.RECONNECT_SLEEP_TIME);\n reconnectTime += 1;\n art.url = option.url;\n notice.show = `${i18n.get('Reconnect')}: ${reconnectTime}`;\n art.emit('error', error, reconnectTime);\n } else {\n art.mask.show = true;\n art.loading.show = false;\n art.controls.show = true;\n (0, _utils.addClass)($player, 'art-error');\n await (0, _utils.sleep)(constructor.RECONNECT_SLEEP_TIME);\n notice.show = i18n.get('Video Load Failed');\n }\n });\n // art.on('video:loadeddata', () => {\n // });\n art.on('video:loadedmetadata', ()=>{\n art.emit('resize');\n if (0, _utils.isMobile) {\n art.loading.show = false;\n art.controls.show = true;\n art.mask.show = true;\n }\n });\n art.on('video:loadstart', ()=>{\n art.loading.show = true;\n art.mask.show = false;\n art.controls.show = true;\n });\n art.on('video:pause', ()=>{\n art.controls.show = true;\n art.mask.show = true;\n });\n art.on('video:play', ()=>{\n art.mask.show = false;\n (0, _utils.setStyle)($poster, 'display', 'none');\n });\n art.on('video:playing', ()=>{\n art.mask.show = false;\n });\n art.on('video:progress', ()=>{\n if (art.playing) art.loading.show = false;\n });\n // art.on('video:ratechange', () => {\n // });\n art.on('video:seeked', ()=>{\n art.loading.show = false;\n art.mask.show = true;\n });\n art.on('video:seeking', ()=>{\n art.loading.show = true;\n art.mask.show = false;\n });\n // art.on('video:stalled', () => {\n // });\n // art.on('video:suspend', () => {\n // });\n art.on('video:timeupdate', ()=>{\n art.mask.show = false;\n });\n // art.on('video:volumechange', () => {\n // });\n art.on('video:waiting', ()=>{\n art.loading.show = true;\n art.mask.show = false;\n });\n}\n\n},{\"../config\":\"7jhZp\",\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"b5r8r\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>flipMix);\nvar _utils = require(\"../utils\");\nfunction flipMix(art) {\n const { template: { $player }, i18n, notice } = art;\n (0, _utils.def)(art, 'flip', {\n get () {\n return $player.dataset.flip || 'normal';\n },\n set (flip) {\n if (!flip) flip = 'normal';\n if (flip === 'normal') delete $player.dataset.flip;\n else $player.dataset.flip = flip;\n notice.show = `${i18n.get('Video Flip')}: ${i18n.get((0, _utils.capitalize)(flip))}`;\n art.emit('flip', flip);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"30dhw\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>fullscreenMix);\nvar _screenfull = require(\"../libs/screenfull\");\nvar _screenfullDefault = parcelHelpers.interopDefault(_screenfull);\nvar _utils = require(\"../utils\");\nfunction fullscreenMix(art) {\n const { i18n, notice, template: { $video, $player } } = art;\n const nativeScreenfull = (art)=>{\n (0, _screenfullDefault.default).on('change', ()=>{\n art.emit('fullscreen', (0, _screenfullDefault.default).isFullscreen);\n if ((0, _screenfullDefault.default).isFullscreen) {\n art.state = 'fullscreen';\n (0, _utils.addClass)($player, 'art-fullscreen');\n } else (0, _utils.removeClass)($player, 'art-fullscreen');\n art.emit('resize');\n });\n (0, _screenfullDefault.default).on('error', (event)=>{\n art.emit('fullscreenError', event);\n });\n (0, _utils.def)(art, 'fullscreen', {\n get () {\n return (0, _screenfullDefault.default).isFullscreen;\n },\n async set (value) {\n if (value) await (0, _screenfullDefault.default).request($player);\n else await (0, _screenfullDefault.default).exit();\n }\n });\n };\n const webkitScreenfull = (art)=>{\n art.on('document:webkitfullscreenchange', ()=>{\n art.emit('fullscreen', art.fullscreen);\n art.emit('resize');\n });\n (0, _utils.def)(art, 'fullscreen', {\n get () {\n return document.fullscreenElement === $video;\n },\n set (value) {\n if (value) {\n art.state = 'fullscreen';\n $video.webkitEnterFullscreen();\n } else $video.webkitExitFullscreen();\n }\n });\n };\n art.once('video:loadedmetadata', ()=>{\n if ((0, _screenfullDefault.default).isEnabled) nativeScreenfull(art);\n else if ($video.webkitSupportsFullscreen) webkitScreenfull(art);\n else (0, _utils.def)(art, 'fullscreen', {\n get () {\n return false;\n },\n set () {\n notice.show = i18n.get('Fullscreen Not Supported');\n }\n });\n // Asynchronous setting\n (0, _utils.def)(art, 'fullscreen', (0, _utils.get)(art, 'fullscreen'));\n });\n}\n\n},{\"../libs/screenfull\":\"8DIfy\",\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"8DIfy\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nconst methodMap = [\n [\n 'requestFullscreen',\n 'exitFullscreen',\n 'fullscreenElement',\n 'fullscreenEnabled',\n 'fullscreenchange',\n 'fullscreenerror'\n ],\n // New WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Old WebKit\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n [\n 'mozRequestFullScreen',\n 'mozCancelFullScreen',\n 'mozFullScreenElement',\n 'mozFullScreenEnabled',\n 'mozfullscreenchange',\n 'mozfullscreenerror'\n ],\n [\n 'msRequestFullscreen',\n 'msExitFullscreen',\n 'msFullscreenElement',\n 'msFullscreenEnabled',\n 'MSFullscreenChange',\n 'MSFullscreenError'\n ]\n];\nconst nativeAPI = (()=>{\n if (typeof document === 'undefined') return false;\n const unprefixedMethods = methodMap[0];\n const returnValue = {};\n for (const methodList of methodMap){\n const exitFullscreenMethod = methodList[1];\n if (exitFullscreenMethod in document) {\n for (const [index, method] of methodList.entries())returnValue[unprefixedMethods[index]] = method;\n return returnValue;\n }\n }\n return false;\n})();\nconst eventNameMap = {\n change: nativeAPI.fullscreenchange,\n error: nativeAPI.fullscreenerror\n};\nconst screenfull = {\n request (element = document.documentElement, options) {\n return new Promise((resolve, reject)=>{\n const onFullScreenEntered = ()=>{\n screenfull.off('change', onFullScreenEntered);\n resolve();\n };\n screenfull.on('change', onFullScreenEntered);\n const returnPromise = element[nativeAPI.requestFullscreen](options);\n if (returnPromise instanceof Promise) returnPromise.then(onFullScreenEntered).catch(reject);\n });\n },\n exit () {\n return new Promise((resolve, reject)=>{\n if (!screenfull.isFullscreen) {\n resolve();\n return;\n }\n const onFullScreenExit = ()=>{\n screenfull.off('change', onFullScreenExit);\n resolve();\n };\n screenfull.on('change', onFullScreenExit);\n const returnPromise = document[nativeAPI.exitFullscreen]();\n if (returnPromise instanceof Promise) returnPromise.then(onFullScreenExit).catch(reject);\n });\n },\n toggle (element, options) {\n return screenfull.isFullscreen ? screenfull.exit() : screenfull.request(element, options);\n },\n onchange (callback) {\n screenfull.on('change', callback);\n },\n onerror (callback) {\n screenfull.on('error', callback);\n },\n on (event, callback) {\n const eventName = eventNameMap[event];\n if (eventName) document.addEventListener(eventName, callback, false);\n },\n off (event, callback) {\n const eventName = eventNameMap[event];\n if (eventName) document.removeEventListener(eventName, callback, false);\n },\n raw: nativeAPI\n};\nObject.defineProperties(screenfull, {\n isFullscreen: {\n get: ()=>Boolean(document[nativeAPI.fullscreenElement])\n },\n element: {\n enumerable: true,\n get: ()=>document[nativeAPI.fullscreenElement]\n },\n isEnabled: {\n enumerable: true,\n get: ()=>Boolean(document[nativeAPI.fullscreenEnabled])\n }\n});\nif (!nativeAPI) screenfull.isEnabled = false;\nexports.default = screenfull;\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"3yxCW\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>fullscreenWebMix);\nvar _utils = require(\"../utils\");\nfunction fullscreenWebMix(art) {\n const { constructor, template: { $container, $player } } = art;\n let cssText = '';\n (0, _utils.def)(art, 'fullscreenWeb', {\n get () {\n return (0, _utils.hasClass)($player, 'art-fullscreen-web');\n },\n set (value) {\n if (value) {\n cssText = $player.style.cssText;\n if (constructor.FULLSCREEN_WEB_IN_BODY) (0, _utils.append)(document.body, $player);\n art.state = 'fullscreenWeb';\n (0, _utils.setStyle)($player, 'width', '100%');\n (0, _utils.setStyle)($player, 'height', '100%');\n (0, _utils.addClass)($player, 'art-fullscreen-web');\n art.emit('fullscreenWeb', true);\n } else {\n if (constructor.FULLSCREEN_WEB_IN_BODY) (0, _utils.append)($container, $player);\n if (cssText) {\n $player.style.cssText = cssText;\n cssText = '';\n }\n (0, _utils.removeClass)($player, 'art-fullscreen-web');\n art.emit('fullscreenWeb', false);\n }\n art.emit('resize');\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"fZNfw\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>loadedMix);\nvar _utils = require(\"../utils\");\nfunction loadedMix(art) {\n const { $video } = art.template;\n (0, _utils.def)(art, 'loaded', {\n get: ()=>art.loadedTime / $video.duration\n });\n (0, _utils.def)(art, 'loadedTime', {\n get: ()=>{\n return $video.buffered.length ? $video.buffered.end($video.buffered.length - 1) : 0;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"1IZ8F\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>miniMix);\nvar _utils = require(\"../utils\");\nfunction miniMix(art) {\n const { icons, proxy, storage, template: { $player, $video } } = art;\n let isDragging = false;\n let lastPageX = 0;\n let lastPageY = 0;\n function hideMini() {\n const { $mini } = art.template;\n if ($mini) {\n (0, _utils.removeClass)($player, 'art-mini');\n (0, _utils.setStyle)($mini, 'display', 'none');\n $player.prepend($video);\n art.emit('mini', false);\n }\n }\n function initState($play, $pause) {\n if (art.playing) {\n (0, _utils.setStyle)($play, 'display', `none`);\n (0, _utils.setStyle)($pause, 'display', `flex`);\n } else {\n (0, _utils.setStyle)($play, 'display', `flex`);\n (0, _utils.setStyle)($pause, 'display', `none`);\n }\n }\n function createMini() {\n const { $mini } = art.template;\n if ($mini) {\n (0, _utils.append)($mini, $video);\n return (0, _utils.setStyle)($mini, 'display', 'flex');\n } else {\n const $mini = (0, _utils.createElement)('div');\n (0, _utils.addClass)($mini, 'art-mini-popup');\n (0, _utils.append)(document.body, $mini);\n art.template.$mini = $mini;\n (0, _utils.append)($mini, $video);\n const $close = (0, _utils.append)($mini, `
`);\n (0, _utils.append)($close, icons.close);\n proxy($close, 'click', hideMini);\n const $state = (0, _utils.append)($mini, `
`);\n const $play = (0, _utils.append)($state, icons.play);\n const $pause = (0, _utils.append)($state, icons.pause);\n proxy($play, 'click', ()=>art.play());\n proxy($pause, 'click', ()=>art.pause());\n initState($play, $pause);\n art.on('video:playing', ()=>initState($play, $pause));\n art.on('video:pause', ()=>initState($play, $pause));\n art.on('video:timeupdate', ()=>initState($play, $pause));\n proxy($mini, 'mousedown', (event)=>{\n isDragging = event.button === 0;\n lastPageX = event.pageX;\n lastPageY = event.pageY;\n });\n art.on('document:mousemove', (event)=>{\n if (isDragging) {\n (0, _utils.addClass)($mini, 'art-mini-dragging');\n const x = event.pageX - lastPageX;\n const y = event.pageY - lastPageY;\n (0, _utils.setStyle)($mini, 'transform', `translate(${x}px, ${y}px)`);\n }\n });\n art.on('document:mouseup', ()=>{\n if (isDragging) {\n isDragging = false;\n (0, _utils.removeClass)($mini, 'art-mini-dragging');\n const rect = (0, _utils.getRect)($mini);\n storage.set('left', rect.left);\n storage.set('top', rect.top);\n (0, _utils.setStyle)($mini, 'left', `${rect.left}px`);\n (0, _utils.setStyle)($mini, 'top', `${rect.top}px`);\n (0, _utils.setStyle)($mini, 'transform', null);\n }\n });\n return $mini;\n }\n }\n function initMini() {\n const { $mini } = art.template;\n const rect = (0, _utils.getRect)($mini);\n const top = window.innerHeight - rect.height - 50;\n const left = window.innerWidth - rect.width - 50;\n storage.set('top', top);\n storage.set('left', left);\n (0, _utils.setStyle)($mini, 'top', `${top}px`);\n (0, _utils.setStyle)($mini, 'left', `${left}px`);\n }\n (0, _utils.def)(art, 'mini', {\n get () {\n return (0, _utils.hasClass)($player, 'art-mini');\n },\n set (value) {\n if (value) {\n art.state = 'mini';\n (0, _utils.addClass)($player, 'art-mini');\n const $mini = createMini();\n const top = storage.get('top');\n const left = storage.get('left');\n if (typeof top === 'number' && typeof left === 'number') {\n (0, _utils.setStyle)($mini, 'top', `${top}px`);\n (0, _utils.setStyle)($mini, 'left', `${left}px`);\n if (!(0, _utils.isInViewport)($mini)) initMini();\n } else initMini();\n art.emit('mini', true);\n } else hideMini();\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"kk3GB\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>optionInit);\nvar _utils = require(\"../utils\");\nfunction optionInit(art) {\n const { option, storage, template: { $video, $poster } } = art;\n for(const key in option.moreVideoAttr)art.attr(key, option.moreVideoAttr[key]);\n if (option.muted) art.muted = option.muted;\n if (option.volume) $video.volume = (0, _utils.clamp)(option.volume, 0, 1);\n const volumeStorage = storage.get('volume');\n if (typeof volumeStorage === 'number') $video.volume = (0, _utils.clamp)(volumeStorage, 0, 1);\n if (option.poster) (0, _utils.setStyle)($poster, 'backgroundImage', `url(${option.poster})`);\n if (option.autoplay) $video.autoplay = option.autoplay;\n if (option.playsInline) {\n $video.playsInline = true;\n $video['webkit-playsinline'] = true;\n }\n if (option.theme) option.cssVar['--art-theme'] = option.theme;\n for(const key in option.cssVar)art.cssVar(key, option.cssVar[key]);\n art.url = option.url;\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"hCnBa\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>pauseMix);\nvar _utils = require(\"../utils\");\nfunction pauseMix(art) {\n const { template: { $video }, i18n, notice } = art;\n (0, _utils.def)(art, 'pause', {\n value () {\n const result = $video.pause();\n notice.show = i18n.get('Pause');\n art.emit('pause');\n return result;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"7cdWF\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>pipMix);\nvar _utils = require(\"../utils\");\nfunction nativePip(art) {\n const { template: { $video }, proxy, notice } = art;\n $video.disablePictureInPicture = false;\n (0, _utils.def)(art, 'pip', {\n get () {\n return document.pictureInPictureElement;\n },\n set (value) {\n if (value) {\n art.state = 'pip';\n $video.requestPictureInPicture().catch((err)=>{\n notice.show = err;\n throw err;\n });\n } else document.exitPictureInPicture().catch((err)=>{\n notice.show = err;\n throw err;\n });\n }\n });\n proxy($video, 'enterpictureinpicture', ()=>{\n art.emit('pip', true);\n });\n proxy($video, 'leavepictureinpicture', ()=>{\n art.emit('pip', false);\n });\n}\nfunction webkitPip(art) {\n const { $video } = art.template;\n $video.webkitSetPresentationMode('inline');\n (0, _utils.def)(art, 'pip', {\n get () {\n return $video.webkitPresentationMode === 'picture-in-picture';\n },\n set (value) {\n if (value) {\n art.state = 'pip';\n $video.webkitSetPresentationMode('picture-in-picture');\n art.emit('pip', true);\n } else {\n $video.webkitSetPresentationMode('inline');\n art.emit('pip', false);\n }\n }\n });\n}\nfunction pipMix(art) {\n const { i18n, notice, template: { $video } } = art;\n if (document.pictureInPictureEnabled) nativePip(art);\n else if ($video.webkitSupportsPresentationMode) webkitPip(art);\n else (0, _utils.def)(art, 'pip', {\n get () {\n return false;\n },\n set () {\n notice.show = i18n.get('PIP Not Supported');\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"v7Tjj\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>playbackRateMix);\nvar _utils = require(\"../utils\");\nfunction playbackRateMix(art) {\n const { template: { $video }, i18n, notice } = art;\n (0, _utils.def)(art, 'playbackRate', {\n get () {\n return $video.playbackRate;\n },\n set (rate) {\n if (rate) {\n if (rate === $video.playbackRate) return;\n $video.playbackRate = rate;\n notice.show = `${i18n.get('Rate')}: ${rate === 1.0 ? i18n.get('Normal') : `${rate}x`}`;\n } else art.playbackRate = 1;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"6NJ76\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>playedMix);\nvar _utils = require(\"../utils\");\nfunction playedMix(art) {\n (0, _utils.def)(art, 'played', {\n get: ()=>art.currentTime / art.duration\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"hS5cB\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>playingMix);\nvar _utils = require(\"../utils\");\nfunction playingMix(art) {\n const { $video } = art.template;\n (0, _utils.def)(art, 'playing', {\n get: ()=>{\n if (typeof $video.playing === 'boolean') return $video.playing;\n return !!($video.currentTime > 0 && !$video.paused && !$video.ended && $video.readyState > 2);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"RTHaZ\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>playMix);\nvar _utils = require(\"../utils\");\nfunction playMix(art) {\n const { i18n, notice, option, constructor: { instances }, template: { $video } } = art;\n (0, _utils.def)(art, 'play', {\n async value () {\n const result = await $video.play();\n notice.show = i18n.get('Play');\n art.emit('play');\n if (option.mutex) for(let index = 0; index < instances.length; index++){\n const instance = instances[index];\n if (instance !== art) instance.pause();\n }\n return result;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"iQk0e\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>posterMix);\nvar _utils = require(\"../utils\");\nfunction posterMix(art) {\n const { template: { $poster } } = art;\n (0, _utils.def)(art, 'poster', {\n get: ()=>{\n try {\n return $poster.style.backgroundImage.match(/\"(.*)\"/)[1];\n } catch {\n return '';\n }\n },\n set (url) {\n (0, _utils.setStyle)($poster, 'backgroundImage', `url(${url})`);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"fbmk7\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>qualityMix);\nvar _utils = require(\"../utils\");\nfunction qualityMix(art) {\n (0, _utils.def)(art, 'quality', {\n set (quality) {\n const { controls, notice, i18n } = art;\n const qualityDefault = quality.find((item)=>item.default) || quality[0];\n controls.update({\n name: 'quality',\n position: 'right',\n index: 10,\n style: {\n marginRight: '10px'\n },\n html: qualityDefault?.html || '',\n selector: quality,\n async onSelect (item) {\n await art.switchQuality(item.url);\n notice.show = `${i18n.get('Switch Video')}: ${item.html}`;\n return item.html;\n }\n });\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"clzGw\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>rectMix);\nvar _utils = require(\"../utils\");\nfunction rectMix(art) {\n (0, _utils.def)(art, 'rect', {\n get: ()=>{\n return (0, _utils.getRect)(art.template.$player);\n }\n });\n const keys = [\n 'bottom',\n 'height',\n 'left',\n 'right',\n 'top',\n 'width'\n ];\n for(let index = 0; index < keys.length; index++){\n const key = keys[index];\n (0, _utils.def)(art, key, {\n get: ()=>{\n return art.rect[key];\n }\n });\n }\n (0, _utils.def)(art, 'x', {\n get: ()=>{\n return art.left + window.pageXOffset;\n }\n });\n (0, _utils.def)(art, 'y', {\n get: ()=>{\n return art.top + window.pageYOffset;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"egOBC\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>screenshotMix);\nvar _utils = require(\"../utils\");\nfunction screenshotMix(art) {\n const { notice, template: { $video } } = art;\n const $canvas = (0, _utils.createElement)('canvas');\n (0, _utils.def)(art, 'getDataURL', {\n value: ()=>new Promise((resolve, reject)=>{\n try {\n $canvas.width = $video.videoWidth;\n $canvas.height = $video.videoHeight;\n $canvas.getContext('2d').drawImage($video, 0, 0);\n resolve($canvas.toDataURL('image/png'));\n } catch (err) {\n notice.show = err;\n reject(err);\n }\n })\n });\n (0, _utils.def)(art, 'getBlobUrl', {\n value: ()=>new Promise((resolve, reject)=>{\n try {\n $canvas.width = $video.videoWidth;\n $canvas.height = $video.videoHeight;\n $canvas.getContext('2d').drawImage($video, 0, 0);\n $canvas.toBlob((blob)=>{\n resolve(URL.createObjectURL(blob));\n });\n } catch (err) {\n notice.show = err;\n reject(err);\n }\n })\n });\n (0, _utils.def)(art, 'screenshot', {\n value: async (name)=>{\n const dataUri = await art.getDataURL();\n const fileName = name || `artplayer_${(0, _utils.secondToTime)($video.currentTime)}`;\n (0, _utils.download)(dataUri, `${fileName}.png`);\n art.emit('screenshot', dataUri);\n return dataUri;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"aGOdO\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>seekMix);\nvar _utils = require(\"../utils\");\nfunction seekMix(art) {\n const { notice } = art;\n (0, _utils.def)(art, 'seek', {\n set (time) {\n art.currentTime = time;\n if (art.duration) notice.show = `${(0, _utils.secondToTime)(art.currentTime)} / ${(0, _utils.secondToTime)(art.duration)}`;\n art.emit('seek', art.currentTime);\n }\n });\n (0, _utils.def)(art, 'forward', {\n set (time) {\n art.seek = art.currentTime + time;\n }\n });\n (0, _utils.def)(art, 'backward', {\n set (time) {\n art.seek = art.currentTime - time;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"f5ksL\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>stateMix);\nvar _utils = require(\"../utils\");\nfunction stateMix(art) {\n const states = [\n 'mini',\n 'pip',\n 'fullscreen',\n 'fullscreenWeb'\n ];\n (0, _utils.def)(art, 'state', {\n get: ()=>states.find((name)=>art[name]) || 'standard',\n set (name) {\n for(let index = 0; index < states.length; index++){\n const prop = states[index];\n if (prop !== name && art[prop]) art[prop] = false;\n }\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"eVqE5\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>subtitleOffsetMix);\nvar _utils = require(\"../utils\");\nfunction subtitleOffsetMix(art) {\n const { notice, i18n, template } = art;\n (0, _utils.def)(art, 'subtitleOffset', {\n get () {\n return template.$track?.offset || 0;\n },\n set (value) {\n const { cues } = art.subtitle;\n if (!template.$track || cues.length === 0) return;\n const offset = (0, _utils.clamp)(value, -10, 10);\n template.$track.offset = offset;\n for(let index = 0; index < cues.length; index++){\n const cue = cues[index];\n cue.originalStartTime = cue.originalStartTime ?? cue.startTime;\n cue.originalEndTime = cue.originalEndTime ?? cue.endTime;\n cue.startTime = (0, _utils.clamp)(cue.originalStartTime + offset, 0, art.duration);\n cue.endTime = (0, _utils.clamp)(cue.originalEndTime + offset, 0, art.duration);\n }\n art.subtitle.update();\n notice.show = `${i18n.get('Subtitle Offset')}: ${value}s`;\n art.emit('subtitleOffset', value);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"hXXTl\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>switchMix);\nvar _utils = require(\"../utils\");\nfunction switchMix(art) {\n function switchUrl(url, currentTime) {\n return new Promise((resolve, reject)=>{\n if (url === art.url) return;\n const { playing, aspectRatio, playbackRate } = art;\n art.pause();\n art.url = url;\n art.notice.show = '';\n art.once('video:error', reject);\n art.once('video:loadedmetadata', ()=>{\n art.currentTime = currentTime;\n });\n art.once('video:canplay', async ()=>{\n art.playbackRate = playbackRate;\n art.aspectRatio = aspectRatio;\n if (playing) await art.play();\n art.notice.show = '';\n resolve();\n });\n });\n }\n (0, _utils.def)(art, 'switchQuality', {\n value: (url)=>{\n return switchUrl(url, art.currentTime);\n }\n });\n (0, _utils.def)(art, 'switchUrl', {\n value: (url)=>{\n return switchUrl(url, 0);\n }\n });\n (0, _utils.def)(art, 'switch', {\n set: art.switchUrl\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"9kb19\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>themeMix);\nvar _utils = require(\"../utils\");\nfunction themeMix(art) {\n (0, _utils.def)(art, 'theme', {\n get () {\n return art.cssVar('--art-theme');\n },\n set (theme) {\n art.cssVar('--art-theme', theme);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"cICxL\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>thumbnailsMix);\nvar _utils = require(\"../utils\");\nfunction thumbnailsMix(art) {\n const { events, option, template: { $progress, $video } } = art;\n let timer = null;\n let image = null;\n let loading = false;\n let isLoad = false;\n let isHover = false;\n function reset() {\n clearTimeout(timer);\n timer = null;\n image = null;\n loading = false;\n isLoad = false;\n }\n function showThumbnails(posWidth) {\n const $thumbnails = art.controls?.thumbnails;\n if (!$thumbnails) return;\n const { number, column, width, height, scale } = option.thumbnails;\n const width2 = width * scale || image.naturalWidth / column;\n const height2 = height * scale || width2 / ($video.videoWidth / $video.videoHeight);\n const perWidth = $progress.clientWidth / number;\n const perIndex = Math.floor(posWidth / perWidth);\n const yIndex = Math.ceil(perIndex / column) - 1;\n const xIndex = perIndex % column || column - 1;\n (0, _utils.setStyle)($thumbnails, 'backgroundImage', `url(${image.src})`);\n (0, _utils.setStyle)($thumbnails, 'height', `${height2}px`);\n (0, _utils.setStyle)($thumbnails, 'width', `${width2}px`);\n (0, _utils.setStyle)($thumbnails, 'backgroundPosition', `-${xIndex * width2}px -${yIndex * height2}px`);\n if (posWidth <= width2 / 2) (0, _utils.setStyle)($thumbnails, 'left', 0);\n else if (posWidth > $progress.clientWidth - width2 / 2) (0, _utils.setStyle)($thumbnails, 'left', `${$progress.clientWidth - width2}px`);\n else (0, _utils.setStyle)($thumbnails, 'left', `${posWidth - width2 / 2}px`);\n }\n events.hover($progress, ()=>{\n isHover = true;\n }, ()=>{\n isHover = false;\n });\n art.on('setBar', async (type, percentage, event)=>{\n const $thumbnails = art.controls?.thumbnails;\n const { url, scale } = option.thumbnails;\n if (!$thumbnails || !url) return;\n const isMobileDragging = type === 'played' && event && (0, _utils.isMobile);\n if (type === 'hover' || isMobileDragging) {\n if (!loading) {\n loading = true;\n image = await (0, _utils.loadImg)(url, scale);\n isLoad = true;\n }\n if (!isLoad || !isHover) return;\n const width = $progress.clientWidth * percentage;\n (0, _utils.setStyle)($thumbnails, 'display', 'flex');\n if (width > 0 && width < $progress.clientWidth) showThumbnails(width);\n else if (!(0, _utils.isMobile)) (0, _utils.setStyle)($thumbnails, 'display', 'none');\n if (isMobileDragging) {\n clearTimeout(timer);\n timer = setTimeout(()=>{\n (0, _utils.setStyle)($thumbnails, 'display', 'none');\n }, 500);\n }\n }\n });\n (0, _utils.def)(art, 'thumbnails', {\n get () {\n return art.option.thumbnails;\n },\n set (thumbnails) {\n if (thumbnails.url && !art.option.isLive) {\n art.option.thumbnails = thumbnails;\n reset();\n }\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"ifRrM\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>toggleMix);\nvar _utils = require(\"../utils\");\nfunction toggleMix(art) {\n (0, _utils.def)(art, 'toggle', {\n value () {\n if (art.playing) return art.pause();\n else return art.play();\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"kUOhk\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>typeMix);\nvar _utils = require(\"../utils\");\nfunction typeMix(art) {\n (0, _utils.def)(art, 'type', {\n get () {\n return art.option.type;\n },\n set (type) {\n art.option.type = type;\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"7uCXi\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>urlMix);\nvar _utils = require(\"../utils\");\nfunction urlMix(art) {\n const { option, template: { $video } } = art;\n (0, _utils.def)(art, 'url', {\n get () {\n return $video.src;\n },\n async set (newUrl) {\n if (newUrl) {\n const oldUrl = art.url;\n const typeName = option.type || (0, _utils.getExt)(newUrl);\n const typeCallback = option.customType[typeName];\n if (typeName && typeCallback) {\n await (0, _utils.sleep)();\n art.loading.show = true;\n typeCallback.call(art, $video, newUrl, art);\n } else {\n URL.revokeObjectURL(oldUrl);\n $video.src = newUrl;\n }\n if (oldUrl !== art.url) {\n art.option.url = newUrl;\n if (art.isReady && oldUrl) art.once('video:canplay', ()=>{\n art.emit('restart', newUrl);\n });\n }\n } else {\n await (0, _utils.sleep)();\n art.loading.show = true;\n }\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"dzR4V\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>volumeMix);\nvar _utils = require(\"../utils\");\nfunction volumeMix(art) {\n const { template: { $video }, i18n, notice, storage } = art;\n (0, _utils.def)(art, 'volume', {\n get: ()=>$video.volume || 0,\n set: (percentage)=>{\n $video.volume = (0, _utils.clamp)(percentage, 0, 1);\n notice.show = `${i18n.get('Volume')}: ${Number.parseInt($video.volume * 100, 10)}`;\n if ($video.volume !== 0) storage.set('volume', $video.volume);\n }\n });\n (0, _utils.def)(art, 'muted', {\n get: ()=>$video.muted,\n set: (muted)=>{\n $video.muted = muted;\n art.emit('muted', muted);\n }\n });\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"iKxTB\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"../utils\");\nvar _autoOrientation = require(\"./autoOrientation\");\nvar _autoOrientationDefault = parcelHelpers.interopDefault(_autoOrientation);\nvar _autoPlayback = require(\"./autoPlayback\");\nvar _autoPlaybackDefault = parcelHelpers.interopDefault(_autoPlayback);\nvar _fastForward = require(\"./fastForward\");\nvar _fastForwardDefault = parcelHelpers.interopDefault(_fastForward);\nvar _lock = require(\"./lock\");\nvar _lockDefault = parcelHelpers.interopDefault(_lock);\nvar _miniProgressBar = require(\"./miniProgressBar\");\nvar _miniProgressBarDefault = parcelHelpers.interopDefault(_miniProgressBar);\nclass Plugins {\n constructor(art){\n this.art = art;\n this.id = 0;\n const { option } = art;\n if (option.miniProgressBar && !option.isLive) this.add((0, _miniProgressBarDefault.default));\n if (option.lock && (0, _utils.isMobile)) this.add((0, _lockDefault.default));\n if (option.autoPlayback && !option.isLive) this.add((0, _autoPlaybackDefault.default));\n if (option.autoOrientation && (0, _utils.isMobile)) this.add((0, _autoOrientationDefault.default));\n if (option.fastForward && (0, _utils.isMobile) && !option.isLive) this.add((0, _fastForwardDefault.default));\n for(let index = 0; index < option.plugins.length; index++)this.add(option.plugins[index]);\n }\n add(plugin) {\n this.id += 1;\n const result = plugin.call(this.art, this.art);\n if (result instanceof Promise) return result.then((res)=>this.next(plugin, res));\n else return this.next(plugin, result);\n }\n next(plugin, result) {\n const pluginName = result && result.name || plugin.name || `plugin${this.id}`;\n (0, _utils.errorHandle)(!(0, _utils.has)(this, pluginName), `Cannot add a plugin that already has the same name: ${pluginName}`);\n (0, _utils.def)(this, pluginName, {\n value: result\n });\n return this;\n }\n}\nexports.default = Plugins;\n\n},{\"../utils\":\"ga71d\",\"./autoOrientation\":\"ewFyM\",\"./autoPlayback\":\"lAEG8\",\"./fastForward\":\"2vvbM\",\"./lock\":\"eAX5u\",\"./miniProgressBar\":\"gg16E\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"ewFyM\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>autoOrientation);\nvar _utils = require(\"../utils\");\nfunction autoOrientation(art) {\n const { notice, constructor, template: { $player, $video } } = art;\n const WEB_CLASS = 'art-auto-orientation';\n const FS_CLASS = 'art-auto-orientation-fullscreen';\n let fsLocked = false;\n function applyWebRotate() {\n const viewWidth = document.documentElement.clientWidth;\n const viewHeight = document.documentElement.clientHeight;\n (0, _utils.setStyle)($player, 'width', `${viewHeight}px`);\n (0, _utils.setStyle)($player, 'height', `${viewWidth}px`);\n (0, _utils.setStyle)($player, 'transform-origin', '0 0');\n (0, _utils.setStyle)($player, 'transform', `rotate(90deg) translate(0, -${viewWidth}px)`);\n (0, _utils.addClass)($player, WEB_CLASS);\n art.isRotate = true;\n art.emit('resize');\n }\n function clearWebRotate() {\n (0, _utils.setStyle)($player, 'width', '');\n (0, _utils.setStyle)($player, 'height', '');\n (0, _utils.setStyle)($player, 'transform-origin', '');\n (0, _utils.setStyle)($player, 'transform', '');\n (0, _utils.removeClass)($player, WEB_CLASS);\n art.isRotate = false;\n art.emit('resize');\n }\n function needRotate() {\n const { videoWidth, videoHeight } = $video;\n const vw = document.documentElement.clientWidth;\n const vh = document.documentElement.clientHeight;\n return videoWidth > videoHeight && vw < vh || videoWidth < videoHeight && vw > vh;\n }\n art.on('fullscreenWeb', (state)=>{\n if (state) {\n if (needRotate()) {\n const delay = Number(constructor.AUTO_ORIENTATION_TIME ?? 0);\n setTimeout(()=>{\n if (art.fullscreenWeb && !(0, _utils.hasClass)($player, WEB_CLASS)) applyWebRotate();\n }, delay);\n }\n } else if ((0, _utils.hasClass)($player, WEB_CLASS)) clearWebRotate();\n });\n art.on('fullscreen', async (state)=>{\n const canLock = !!screen?.orientation?.lock;\n if (state) {\n if (canLock && needRotate()) try {\n const last = screen.orientation.type;\n const opposite = last.startsWith('portrait') ? 'landscape' : 'portrait';\n await screen.orientation.lock(opposite);\n fsLocked = true;\n (0, _utils.addClass)($player, FS_CLASS);\n } catch (err) {\n fsLocked = false;\n notice.show = err;\n }\n } else {\n if ((0, _utils.hasClass)($player, FS_CLASS)) (0, _utils.removeClass)($player, FS_CLASS);\n if (canLock && fsLocked) {\n try {\n screen.orientation.unlock();\n } catch {}\n fsLocked = false;\n }\n }\n });\n return {\n name: 'autoOrientation',\n get state () {\n return (0, _utils.hasClass)($player, WEB_CLASS);\n }\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"lAEG8\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>autoPlayback);\nvar _utils = require(\"../utils\");\nfunction autoPlayback(art) {\n const { i18n, icons, storage, constructor, proxy, template: { $poster } } = art;\n const $autoPlayback = art.layers.add({\n name: 'auto-playback',\n html: `\n
\n
\n
\n `\n });\n const $last = (0, _utils.query)('.art-auto-playback-last', $autoPlayback);\n const $jump = (0, _utils.query)('.art-auto-playback-jump', $autoPlayback);\n const $close = (0, _utils.query)('.art-auto-playback-close', $autoPlayback);\n (0, _utils.append)($close, icons.close);\n let timer = null;\n art.on('video:timeupdate', ()=>{\n if (art.playing) {\n const times = storage.get('times') || {};\n const keys = Object.keys(times);\n if (keys.length > constructor.AUTO_PLAYBACK_MAX) delete times[keys[0]];\n times[art.option.id || art.option.url] = art.currentTime;\n storage.set('times', times);\n }\n });\n function init() {\n const times = storage.get('times') || {};\n const currentTime = times[art.option.id || art.option.url];\n clearTimeout(timer);\n (0, _utils.setStyle)($autoPlayback, 'display', 'none');\n if (currentTime && currentTime >= constructor.AUTO_PLAYBACK_MIN) {\n (0, _utils.setStyle)($autoPlayback, 'display', 'flex');\n $last.textContent = `${i18n.get('Last Seen')} ${(0, _utils.secondToTime)(currentTime)}`;\n $jump.textContent = i18n.get('Jump Play');\n proxy($close, 'click', ()=>{\n (0, _utils.setStyle)($autoPlayback, 'display', 'none');\n });\n proxy($jump, 'click', ()=>{\n art.seek = currentTime;\n art.play();\n (0, _utils.setStyle)($poster, 'display', 'none');\n (0, _utils.setStyle)($autoPlayback, 'display', 'none');\n });\n art.once('video:timeupdate', ()=>{\n timer = setTimeout(()=>{\n (0, _utils.setStyle)($autoPlayback, 'display', 'none');\n }, constructor.AUTO_PLAYBACK_TIMEOUT);\n });\n }\n }\n art.on('ready', init);\n art.on('restart', init);\n return {\n name: 'auto-playback',\n get times () {\n return storage.get('times') || {};\n },\n clear () {\n return storage.del('times');\n },\n delete (id) {\n const times = storage.get('times') || {};\n delete times[id];\n storage.set('times', times);\n return times;\n }\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"2vvbM\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>fastForward);\nvar _utils = require(\"../utils\");\nfunction fastForward(art) {\n const { constructor, proxy, template: { $player, $video } } = art;\n let timer = null;\n let isPress = false;\n let lastPlaybackRate = 1;\n const onStart = (event)=>{\n if (event.touches.length === 1 && art.playing && !art.isLock) timer = setTimeout(()=>{\n isPress = true;\n lastPlaybackRate = art.playbackRate;\n art.playbackRate = constructor.FAST_FORWARD_VALUE;\n (0, _utils.addClass)($player, 'art-fast-forward');\n }, constructor.FAST_FORWARD_TIME);\n };\n const onStop = ()=>{\n clearTimeout(timer);\n if (isPress) {\n isPress = false;\n art.playbackRate = lastPlaybackRate;\n (0, _utils.removeClass)($player, 'art-fast-forward');\n }\n };\n proxy($video, 'touchstart', onStart);\n art.on('document:touchmove', onStop);\n art.on('document:touchend', onStop);\n return {\n name: 'fastForward',\n get state () {\n return (0, _utils.hasClass)($player, 'art-fast-forward');\n }\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"eAX5u\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>lock);\nvar _utils = require(\"../utils\");\nfunction lock(art) {\n const { layers, icons, template: { $player } } = art;\n function getState() {\n return (0, _utils.hasClass)($player, 'art-lock');\n }\n function setLock() {\n (0, _utils.addClass)($player, 'art-lock');\n art.isLock = true;\n art.emit('lock', true);\n }\n function setUnlock() {\n (0, _utils.removeClass)($player, 'art-lock');\n art.isLock = false;\n art.emit('lock', false);\n }\n layers.add({\n name: 'lock',\n mounted ($el) {\n const $lock = (0, _utils.append)($el, icons.lock);\n const $unlock = (0, _utils.append)($el, icons.unlock);\n (0, _utils.setStyle)($lock, 'display', 'none');\n art.on('lock', (state)=>{\n if (state) {\n (0, _utils.setStyle)($lock, 'display', 'inline-flex');\n (0, _utils.setStyle)($unlock, 'display', 'none');\n } else {\n (0, _utils.setStyle)($lock, 'display', 'none');\n (0, _utils.setStyle)($unlock, 'display', 'inline-flex');\n }\n });\n },\n click () {\n if (getState()) setUnlock();\n else setLock();\n }\n });\n return {\n name: 'lock',\n get state () {\n return getState();\n },\n set state (value){\n if (value) setLock();\n else setUnlock();\n }\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"gg16E\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>miniProgressBar);\nvar _utils = require(\"../utils\");\nfunction miniProgressBar(art) {\n art.on('control', (state)=>{\n if (state) (0, _utils.removeClass)(art.template.$player, 'art-mini-progress-bar');\n else (0, _utils.addClass)(art.template.$player, 'art-mini-progress-bar');\n });\n return {\n name: 'mini-progress-bar'\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"l15NM\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _utils = require(\"../utils\");\nvar _component = require(\"../utils/component\");\nvar _componentDefault = parcelHelpers.interopDefault(_component);\nvar _aspectRatio = require(\"./aspectRatio\");\nvar _aspectRatioDefault = parcelHelpers.interopDefault(_aspectRatio);\nvar _flip = require(\"./flip\");\nvar _flipDefault = parcelHelpers.interopDefault(_flip);\nvar _playbackRate = require(\"./playbackRate\");\nvar _playbackRateDefault = parcelHelpers.interopDefault(_playbackRate);\nvar _subtitleOffset = require(\"./subtitleOffset\");\nvar _subtitleOffsetDefault = parcelHelpers.interopDefault(_subtitleOffset);\nclass Setting extends (0, _componentDefault.default) {\n constructor(art){\n super(art);\n const { option, controls, template: { $setting } } = art;\n this.name = 'setting';\n this.$parent = $setting;\n this.id = 0;\n this.active = null;\n this.cache = new Map();\n this.option = [\n ...this.builtin,\n ...option.settings\n ];\n if (option.setting) {\n this.format();\n this.render();\n art.on('blur', ()=>{\n if (this.show) {\n this.show = false;\n this.render();\n }\n });\n art.on('focus', (event)=>{\n const isControl = (0, _utils.includeFromEvent)(event, controls.setting);\n const isSetting = (0, _utils.includeFromEvent)(event, this.$parent);\n if (this.show && !isControl && !isSetting) {\n this.show = false;\n this.render();\n }\n });\n art.on('resize', ()=>this.resize());\n }\n }\n get builtin() {\n const result = [];\n const { option } = this.art;\n if (option.playbackRate) result.push((0, _playbackRateDefault.default)(this.art));\n if (option.aspectRatio) result.push((0, _aspectRatioDefault.default)(this.art));\n if (option.flip) result.push((0, _flipDefault.default)(this.art));\n if (option.subtitleOffset) result.push((0, _subtitleOffsetDefault.default)(this.art));\n return result;\n }\n traverse(callback, option = this.option) {\n for(let index = 0; index < option.length; index++){\n const item = option[index];\n callback(item);\n if (item.selector?.length) this.traverse(callback, item.selector);\n }\n }\n check(target) {\n target.$parent.tooltip = target.html;\n this.traverse((item)=>{\n item.default = item === target;\n if (item.default && item.$item) (0, _utils.inverseClass)(item.$item, 'art-current');\n }, target.$option);\n this.render(target.$parents);\n }\n format(option = this.option, parent, parents, names = []) {\n for(let index = 0; index < option.length; index++){\n const item = option[index];\n if (item?.name) {\n (0, _utils.errorHandle)(!names.includes(item.name), `The [${item.name}] already exists in [setting]`);\n names.push(item.name);\n } else item.name = `setting-${this.id++}`;\n if (!item.$formatted) {\n (0, _utils.def)(item, '$parent', {\n get: ()=>parent\n });\n (0, _utils.def)(item, '$parents', {\n get: ()=>parents\n });\n (0, _utils.def)(item, '$option', {\n get: ()=>option\n });\n const $events = [];\n (0, _utils.def)(item, '$events', {\n get: ()=>$events\n });\n (0, _utils.def)(item, '$formatted', {\n get: ()=>true\n });\n }\n this.format(item.selector || [], item, option, names);\n }\n this.option = option;\n }\n find(name = '') {\n let result = null;\n this.traverse((item)=>{\n if (item.name === name) result = item;\n });\n return result;\n }\n resize() {\n const { controls, constructor: { SETTING_WIDTH, SETTING_ITEM_HEIGHT }, template: { $player, $setting } } = this.art;\n if (controls.setting && this.show) {\n const settingWidth = this.active[0]?.$parent?.width || SETTING_WIDTH;\n const { left: controlLeft, width: controlWidth } = (0, _utils.getRect)(controls.setting);\n const { left: playerLeft, width: playerWidth } = (0, _utils.getRect)($player);\n const settingLeft = controlLeft - playerLeft + controlWidth / 2 - settingWidth / 2;\n const settingHeight = this.active === this.option ? this.active.length * SETTING_ITEM_HEIGHT : (this.active.length + 1) * SETTING_ITEM_HEIGHT;\n (0, _utils.setStyle)($setting, 'height', `${settingHeight}px`);\n (0, _utils.setStyle)($setting, 'width', `${settingWidth}px`);\n if (this.art.isRotate || (0, _utils.isMobile)) return;\n if (settingLeft + settingWidth > playerWidth) {\n (0, _utils.setStyle)($setting, 'left', null);\n (0, _utils.setStyle)($setting, 'right', null);\n } else {\n (0, _utils.setStyle)($setting, 'left', `${settingLeft}px`);\n (0, _utils.setStyle)($setting, 'right', 'auto');\n }\n }\n }\n inactivate(item) {\n for(let index = 0; index < item.$events.length; index++)this.art.events.remove(item.$events[index]);\n item.$events.length = 0;\n }\n remove(name) {\n const item = this.find(name);\n (0, _utils.errorHandle)(item, `Can't find [${name}] in the [setting]`);\n const index = item.$option.indexOf(item);\n item.$option.splice(index, 1);\n this.inactivate(item);\n if (item.$item) (0, _utils.remove)(item.$item);\n this.render();\n }\n update(target) {\n const item = this.find(target.name);\n if (item) {\n this.inactivate(item);\n Object.assign(item, target);\n this.format();\n this.createItem(item, true);\n this.render();\n return item;\n } else return this.add(target);\n }\n add(item, option = this.option) {\n option.push(item);\n this.format();\n this.createItem(item);\n this.render();\n return item;\n }\n createHeader(item) {\n if (!this.cache.has(item.$option)) return;\n const $panel = this.cache.get(item.$option);\n const { proxy, icons: { arrowLeft }, constructor: { SETTING_ITEM_HEIGHT } } = this.art;\n const $item = (0, _utils.createElement)('div');\n (0, _utils.setStyle)($item, 'height', `${SETTING_ITEM_HEIGHT}px`);\n (0, _utils.addClass)($item, 'art-setting-item');\n (0, _utils.addClass)($item, 'art-setting-item-back');\n const $left = (0, _utils.append)($item, '
');\n const $icon = (0, _utils.createElement)('div');\n (0, _utils.addClass)($icon, 'art-setting-item-left-icon');\n (0, _utils.append)($icon, arrowLeft);\n (0, _utils.append)($left, $icon);\n (0, _utils.append)($left, item.$parent.html);\n const event = proxy($item, 'click', ()=>this.render(item.$parents));\n item.$parent.$events.push(event);\n (0, _utils.append)($panel, $item);\n }\n createItem(item, isUpdate = false) {\n if (!this.cache.has(item.$option)) return;\n const $panel = this.cache.get(item.$option);\n const oldItem = item.$item;\n let type = 'selector';\n if ((0, _utils.has)(item, 'switch')) type = 'switch';\n if ((0, _utils.has)(item, 'range')) type = 'range';\n if ((0, _utils.has)(item, 'onClick')) type = 'button';\n const { icons, proxy, constructor } = this.art;\n const $item = (0, _utils.createElement)('div');\n (0, _utils.addClass)($item, 'art-setting-item');\n (0, _utils.setStyle)($item, 'height', `${constructor.SETTING_ITEM_HEIGHT}px`);\n $item.dataset.name = item.name || '';\n $item.dataset.value = item.value || '';\n const $left = (0, _utils.append)($item, '
');\n const $right = (0, _utils.append)($item, '
');\n const $icon = (0, _utils.createElement)('div');\n (0, _utils.addClass)($icon, 'art-setting-item-left-icon');\n switch(type){\n case 'button':\n case 'switch':\n case 'range':\n (0, _utils.append)($icon, item.icon || icons.config);\n break;\n case 'selector':\n if (item.selector?.length) (0, _utils.append)($icon, item.icon || icons.config);\n else (0, _utils.append)($icon, icons.check);\n break;\n default:\n break;\n }\n (0, _utils.append)($left, $icon);\n (0, _utils.def)(item, '$icon', {\n configurable: true,\n get: ()=>$icon\n });\n (0, _utils.def)(item, 'icon', {\n configurable: true,\n get () {\n return $icon.innerHTML;\n },\n set (value) {\n $icon.innerHTML = '';\n (0, _utils.append)($icon, value);\n }\n });\n const $html = (0, _utils.createElement)('div');\n (0, _utils.addClass)($html, 'art-setting-item-left-text');\n (0, _utils.append)($html, item.html || '');\n (0, _utils.append)($left, $html);\n (0, _utils.def)(item, '$html', {\n configurable: true,\n get: ()=>$html\n });\n (0, _utils.def)(item, 'html', {\n configurable: true,\n get () {\n return $html.innerHTML;\n },\n set (value) {\n $html.innerHTML = '';\n (0, _utils.append)($html, value);\n }\n });\n const $tooltip = (0, _utils.createElement)('div');\n (0, _utils.addClass)($tooltip, 'art-setting-item-right-tooltip');\n (0, _utils.append)($tooltip, item.tooltip || '');\n (0, _utils.append)($right, $tooltip);\n (0, _utils.def)(item, '$tooltip', {\n configurable: true,\n get: ()=>$tooltip\n });\n (0, _utils.def)(item, 'tooltip', {\n configurable: true,\n get () {\n return $tooltip.innerHTML;\n },\n set (value) {\n $tooltip.innerHTML = '';\n (0, _utils.append)($tooltip, value);\n }\n });\n switch(type){\n case 'switch':\n {\n const $switch = (0, _utils.createElement)('div');\n (0, _utils.addClass)($switch, 'art-setting-item-right-icon');\n const $switchOn = (0, _utils.append)($switch, icons.switchOn);\n const $switchOff = (0, _utils.append)($switch, icons.switchOff);\n (0, _utils.setStyle)(item.switch ? $switchOff : $switchOn, 'display', 'none');\n (0, _utils.append)($right, $switch);\n (0, _utils.def)(item, '$switch', {\n configurable: true,\n get: ()=>$switch\n });\n let $switchValue = item.switch;\n (0, _utils.def)(item, 'switch', {\n configurable: true,\n get: ()=>$switchValue,\n set (value) {\n $switchValue = value;\n if (value) {\n (0, _utils.setStyle)($switchOff, 'display', 'none');\n (0, _utils.setStyle)($switchOn, 'display', null);\n } else {\n (0, _utils.setStyle)($switchOff, 'display', null);\n (0, _utils.setStyle)($switchOn, 'display', 'none');\n }\n }\n });\n break;\n }\n case 'range':\n {\n const $state = (0, _utils.createElement)('div');\n (0, _utils.addClass)($state, 'art-setting-item-right-icon');\n const $range = (0, _utils.append)($state, '');\n $range.value = item.range[0];\n $range.min = item.range[1];\n $range.max = item.range[2];\n $range.step = item.range[3];\n (0, _utils.addClass)($range, 'art-setting-range');\n (0, _utils.append)($right, $state);\n (0, _utils.def)(item, '$range', {\n configurable: true,\n get: ()=>$range\n });\n let $rangeValue = [\n ...item.range\n ];\n (0, _utils.def)(item, 'range', {\n configurable: true,\n get: ()=>$rangeValue,\n set (value) {\n $rangeValue = [\n ...value\n ];\n $range.value = value[0];\n $range.min = value[1];\n $range.max = value[2];\n $range.step = value[3];\n }\n });\n }\n break;\n case 'selector':\n if (item.selector?.length) {\n const $state = (0, _utils.createElement)('div');\n (0, _utils.addClass)($state, 'art-setting-item-right-icon');\n (0, _utils.append)($state, icons.arrowRight);\n (0, _utils.append)($right, $state);\n }\n break;\n default:\n break;\n }\n switch(type){\n case 'switch':\n if (item.onSwitch) {\n const event = proxy($item, 'click', async (event)=>{\n item.switch = await item.onSwitch.call(this.art, item, $item, event);\n });\n item.$events.push(event);\n }\n break;\n case 'range':\n if (item.$range) {\n if (item.onRange) {\n const event = proxy(item.$range, 'change', async (event)=>{\n item.range[0] = item.$range.valueAsNumber;\n item.tooltip = await item.onRange.call(this.art, item, $item, event);\n });\n item.$events.push(event);\n }\n if (item.onChange) {\n const event = proxy(item.$range, 'input', async (event)=>{\n item.range[0] = item.$range.valueAsNumber;\n item.tooltip = await item.onChange.call(this.art, item, $item, event);\n });\n item.$events.push(event);\n }\n }\n break;\n case 'selector':\n {\n const event = proxy($item, 'click', async (event)=>{\n if (item.selector?.length) this.render(item.selector);\n else {\n this.check(item);\n if (item.$parent.onSelect) item.$parent.tooltip = await item.$parent.onSelect.call(this.art, item, $item, event);\n }\n });\n item.$events.push(event);\n if (item.default) (0, _utils.addClass)($item, 'art-current');\n }\n break;\n case 'button':\n if (item.onClick) {\n const event = proxy($item, 'click', async (event)=>{\n item.tooltip = await item.onClick.call(this.art, item, $item, event);\n });\n item.$events.push(event);\n }\n break;\n default:\n break;\n }\n (0, _utils.def)(item, '$item', {\n configurable: true,\n get: ()=>$item\n });\n if (isUpdate) (0, _utils.replaceElement)($item, oldItem);\n else (0, _utils.append)($panel, $item);\n if (item.mounted) setTimeout(()=>item.mounted.call(this.art, item.$item, item), 0);\n }\n render(option = this.option) {\n this.active = option;\n if (this.cache.has(option)) {\n const $panel = this.cache.get(option);\n (0, _utils.inverseClass)($panel, 'art-current');\n } else {\n const $panel = (0, _utils.createElement)('div');\n this.cache.set(option, $panel);\n (0, _utils.addClass)($panel, 'art-setting-panel');\n (0, _utils.append)(this.$parent, $panel);\n (0, _utils.inverseClass)($panel, 'art-current');\n if (option[0]?.$parent) this.createHeader(option[0]);\n for(let index = 0; index < option.length; index++)this.createItem(option[index]);\n }\n this.resize();\n }\n}\nexports.default = Setting;\n\n},{\"../utils\":\"ga71d\",\"../utils/component\":\"hARFP\",\"./aspectRatio\":\"gdYpm\",\"./flip\":\"e86Hl\",\"./playbackRate\":\"lPy8C\",\"./subtitleOffset\":\"jEoW9\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"gdYpm\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>aspectRatio);\nfunction aspectRatio(art) {\n const { i18n, icons, constructor: { SETTING_ITEM_WIDTH, ASPECT_RATIO } } = art;\n function getI18n(value) {\n return value === 'default' ? i18n.get('Default') : value;\n }\n function update() {\n const target = art.setting.find(`aspect-ratio-${art.aspectRatio}`);\n art.setting.check(target);\n }\n return {\n width: SETTING_ITEM_WIDTH,\n name: 'aspect-ratio',\n html: i18n.get('Aspect Ratio'),\n icon: icons.aspectRatio,\n tooltip: getI18n(art.aspectRatio),\n selector: ASPECT_RATIO.map((item)=>{\n return {\n value: item,\n name: `aspect-ratio-${item}`,\n default: item === art.aspectRatio,\n html: getI18n(item)\n };\n }),\n onSelect (item) {\n art.aspectRatio = item.value;\n return item.html;\n },\n mounted: ()=>{\n update();\n art.on('aspectRatio', ()=>update());\n }\n };\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"e86Hl\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>flip);\nvar _utils = require(\"../utils\");\nfunction flip(art) {\n const { i18n, icons, constructor: { SETTING_ITEM_WIDTH, FLIP } } = art;\n function getI18n(value) {\n return i18n.get((0, _utils.capitalize)(value));\n }\n function update() {\n const target = art.setting.find(`flip-${art.flip}`);\n art.setting.check(target);\n }\n return {\n width: SETTING_ITEM_WIDTH,\n name: 'flip',\n html: i18n.get('Video Flip'),\n tooltip: getI18n(art.flip),\n icon: icons.flip,\n selector: FLIP.map((item)=>{\n return {\n value: item,\n name: `flip-${item}`,\n default: item === art.flip,\n html: getI18n(item)\n };\n }),\n onSelect (item) {\n art.flip = item.value;\n return item.html;\n },\n mounted: ()=>{\n update();\n art.on('flip', ()=>update());\n }\n };\n}\n\n},{\"../utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"lPy8C\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>playbackRate);\nfunction playbackRate(art) {\n const { i18n, icons, constructor: { SETTING_ITEM_WIDTH, PLAYBACK_RATE } } = art;\n function getI18n(value) {\n return value === 1.0 ? i18n.get('Normal') : value.toFixed(1);\n }\n function update() {\n const target = art.setting.find(`playback-rate-${art.playbackRate}`);\n art.setting.check(target);\n }\n return {\n width: SETTING_ITEM_WIDTH,\n name: 'playback-rate',\n html: i18n.get('Play Speed'),\n tooltip: getI18n(art.playbackRate),\n icon: icons.playbackRate,\n selector: PLAYBACK_RATE.map((item)=>{\n return {\n value: item,\n name: `playback-rate-${item}`,\n default: item === art.playbackRate,\n html: getI18n(item)\n };\n }),\n onSelect (item) {\n art.playbackRate = item.value;\n return item.html;\n },\n mounted: ()=>{\n update();\n art.on('video:ratechange', ()=>update());\n }\n };\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"jEoW9\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>subtitleOffset);\nfunction subtitleOffset(art) {\n const { i18n, icons, constructor } = art;\n return {\n width: constructor.SETTING_ITEM_WIDTH,\n name: 'subtitle-offset',\n html: i18n.get('Subtitle Offset'),\n icon: icons.subtitle,\n tooltip: '0s',\n range: [\n 0,\n -10,\n 10,\n 0.1\n ],\n onChange (item) {\n art.subtitleOffset = item.range[0];\n return `${item.range[0]}s`;\n },\n mounted: (_, item)=>{\n art.on('subtitleOffset', (value)=>{\n item.$range.value = value;\n item.tooltip = `${value}s`;\n });\n }\n };\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"1bevC\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nclass Storage {\n constructor(){\n this.name = 'artplayer_settings';\n this.settings = {};\n }\n get(key) {\n try {\n const storage = JSON.parse(window.localStorage.getItem(this.name)) || {};\n return key ? storage[key] : storage;\n } catch {\n return key ? this.settings[key] : this.settings;\n }\n }\n set(key, value) {\n try {\n const storage = Object.assign({}, this.get(), {\n [key]: value\n });\n window.localStorage.setItem(this.name, JSON.stringify(storage));\n } catch {\n this.settings[key] = value;\n }\n }\n del(key) {\n try {\n const storage = this.get();\n delete storage[key];\n window.localStorage.setItem(this.name, JSON.stringify(storage));\n } catch {\n delete this.settings[key];\n }\n }\n clear() {\n try {\n window.localStorage.removeItem(this.name);\n } catch {\n this.settings = {};\n }\n }\n}\nexports.default = Storage;\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"aD26q\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _optionValidator = require(\"option-validator\");\nvar _optionValidatorDefault = parcelHelpers.interopDefault(_optionValidator);\nvar _scheme = require(\"./scheme\");\nvar _schemeDefault = parcelHelpers.interopDefault(_scheme);\nvar _utils = require(\"./utils\");\nvar _component = require(\"./utils/component\");\nvar _componentDefault = parcelHelpers.interopDefault(_component);\nclass Subtitle extends (0, _componentDefault.default) {\n constructor(art){\n super(art);\n this.name = 'subtitle';\n this.option = null;\n this.destroyEvent = ()=>null;\n this.init(art.option.subtitle);\n let lastState = false;\n art.on('video:timeupdate', ()=>{\n if (!this.url) return;\n const state = this.art.template.$video.webkitDisplayingFullscreen;\n if (typeof state !== 'boolean') return;\n if (state !== lastState) {\n lastState = state;\n this.createTrack(state ? 'subtitles' : 'metadata', this.url);\n }\n });\n }\n get url() {\n return this.art.template.$track.src;\n }\n set url(url) {\n this.switch(url);\n }\n get textTrack() {\n return this.art.template.$video?.textTracks?.[0];\n }\n get activeCues() {\n if (!this.textTrack) return [];\n return Array.from(this.textTrack.activeCues);\n }\n get cues() {\n if (!this.textTrack) return [];\n return Array.from(this.textTrack.cues);\n }\n style(key, value) {\n const { $subtitle } = this.art.template;\n if (typeof key === 'object') return (0, _utils.setStyles)($subtitle, key);\n return (0, _utils.setStyle)($subtitle, key, value);\n }\n update() {\n const { option: { subtitle }, template: { $subtitle } } = this.art;\n $subtitle.innerHTML = '';\n if (!this.activeCues.length) return;\n this.art.emit('subtitleBeforeUpdate', this.activeCues);\n $subtitle.innerHTML = this.activeCues.map((cue, index)=>cue.text.split(/\\r?\\n/).filter((line)=>line.trim()).map((line)=>`
\n ${subtitle.escape ? (0, _utils.escape)(line) : line}\n
`).join('')).join('');\n this.art.emit('subtitleAfterUpdate', this.activeCues);\n }\n async switch(url, newOption = {}) {\n const { i18n, notice, option } = this.art;\n const subtitleOption = {\n ...option.subtitle,\n ...newOption,\n url\n };\n const subUrl = await this.init(subtitleOption);\n if (newOption.name) notice.show = `${i18n.get('Switch Subtitle')}: ${newOption.name}`;\n return subUrl;\n }\n createTrack(kind, url) {\n const { template, proxy, option } = this.art;\n const { $video, $track } = template;\n const $newTrack = (0, _utils.createElement)('track');\n $newTrack.default = true;\n $newTrack.kind = kind;\n $newTrack.src = url;\n $newTrack.label = option.subtitle.name || 'Artplayer';\n $newTrack.track.mode = 'hidden';\n $newTrack.onload = ()=>{\n this.art.emit('subtitleLoad', this.cues, this.option);\n };\n this.art.events.remove(this.destroyEvent);\n $track.onload = null;\n (0, _utils.remove)($track);\n (0, _utils.append)($video, $newTrack);\n template.$track = $newTrack;\n this.destroyEvent = proxy(this.textTrack, 'cuechange', ()=>this.update());\n }\n async init(subtitleOption) {\n const { notice, template: { $subtitle } } = this.art;\n if (!this.textTrack) return null;\n (0, _optionValidatorDefault.default)(subtitleOption, (0, _schemeDefault.default).subtitle);\n if (!subtitleOption.url) return;\n this.option = subtitleOption;\n this.style(subtitleOption.style);\n return fetch(subtitleOption.url).then((response)=>response.arrayBuffer()).then((buffer)=>{\n const decoder = new TextDecoder(subtitleOption.encoding);\n const text = decoder.decode(buffer);\n switch(subtitleOption.type || (0, _utils.getExt)(subtitleOption.url)){\n case 'srt':\n {\n const vtt = (0, _utils.srtToVtt)(text);\n const vttNew = subtitleOption.onVttLoad(vtt);\n return (0, _utils.vttToBlob)(vttNew);\n }\n case 'ass':\n {\n const vtt = (0, _utils.assToVtt)(text);\n const vttNew = subtitleOption.onVttLoad(vtt);\n return (0, _utils.vttToBlob)(vttNew);\n }\n case 'vtt':\n {\n const vttNew = subtitleOption.onVttLoad(text);\n return (0, _utils.vttToBlob)(vttNew);\n }\n default:\n return subtitleOption.url;\n }\n }).then((subUrl)=>{\n $subtitle.innerHTML = '';\n if (this.url === subUrl) return subUrl;\n URL.revokeObjectURL(this.url);\n this.createTrack('metadata', subUrl);\n return subUrl;\n }).catch((err)=>{\n $subtitle.innerHTML = '';\n notice.show = err;\n throw err;\n });\n }\n}\nexports.default = Subtitle;\n\n},{\"option-validator\":\"hw47a\",\"./scheme\":\"9Np13\",\"./utils\":\"ga71d\",\"./utils/component\":\"hARFP\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"3s0cr\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nvar _packageJson = require(\"../package.json\");\nvar _utils = require(\"./utils\");\nclass Template {\n constructor(art){\n this.art = art;\n const { option, constructor } = art;\n if (option.container instanceof Element) this.$container = option.container;\n else {\n this.$container = (0, _utils.query)(option.container);\n (0, _utils.errorHandle)(this.$container, `No container element found by ${option.container}`);\n }\n (0, _utils.errorHandle)((0, _utils.supportsFlex)(), 'The current browser does not support flex layout');\n const type = this.$container.tagName.toLowerCase();\n (0, _utils.errorHandle)(type === 'div', `Unsupported container element type, only support 'div' but got '${type}'`);\n (0, _utils.errorHandle)(constructor.instances.every((ins)=>ins.template.$container !== this.$container), 'Cannot mount multiple instances on the same dom element');\n this.query = this.query.bind(this);\n this.$container.dataset.artId = art.id;\n this.init();\n }\n static get html() {\n return `\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Player version:
\n
${0, _packageJson.version}
\n
\n
\n
Video url:
\n
\n
\n
\n
Video volume:
\n
\n
\n
\n
Video time:
\n
\n
\n
\n
Video duration:
\n
\n
\n
\n
Video resolution:
\n
\n x \n
\n
\n
\n
[x]
\n
\n
\n
\n `;\n }\n query(className) {\n return (0, _utils.query)(className, this.$container);\n }\n init() {\n const { option } = this.art;\n if (!option.useSSR) this.$container.innerHTML = Template.html;\n this.$player = this.query('.art-video-player');\n this.$video = this.query('.art-video');\n this.$track = this.query('track');\n this.$poster = this.query('.art-poster');\n this.$subtitle = this.query('.art-subtitle');\n this.$danmuku = this.query('.art-danmuku');\n this.$bottom = this.query('.art-bottom');\n this.$progress = this.query('.art-progress');\n this.$controls = this.query('.art-controls');\n this.$controlsLeft = this.query('.art-controls-left');\n this.$controlsCenter = this.query('.art-controls-center');\n this.$controlsRight = this.query('.art-controls-right');\n this.$layer = this.query('.art-layers');\n this.$loading = this.query('.art-loading');\n this.$notice = this.query('.art-notice');\n this.$noticeInner = this.query('.art-notice-inner');\n this.$mask = this.query('.art-mask');\n this.$state = this.query('.art-state');\n this.$setting = this.query('.art-settings');\n this.$info = this.query('.art-info');\n this.$infoPanel = this.query('.art-info-panel');\n this.$infoClose = this.query('.art-info-close');\n this.$contextmenu = this.query('.art-contextmenus');\n if (option.proxy) {\n const video = option.proxy.call(this.art, this.art);\n (0, _utils.errorHandle)(video instanceof HTMLVideoElement || video instanceof HTMLCanvasElement, `Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'`);\n (0, _utils.replaceElement)(video, this.$video);\n video.className = 'art-video';\n this.$video = video;\n }\n if (option.backdrop) (0, _utils.addClass)(this.$player, 'art-backdrop');\n if (0, _utils.isMobile) (0, _utils.addClass)(this.$player, 'art-mobile');\n }\n destroy(removeHtml) {\n this.$video.src = '';\n if (removeHtml) this.$container.innerHTML = '';\n else (0, _utils.addClass)(this.$player, 'art-destroy');\n }\n}\nexports.default = Template;\n\n},{\"../package.json\":\"2r8Ra\",\"./utils\":\"ga71d\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"2Y43P\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nclass Emitter {\n on(name, fn, ctx) {\n const e = this.e || (this.e = {});\n (e[name] || (e[name] = [])).push({\n fn,\n ctx\n });\n return this;\n }\n once(name, fn, ctx) {\n const self = this;\n function listener(...args) {\n self.off(name, listener);\n fn.apply(ctx, args);\n }\n listener._ = fn;\n return this.on(name, listener, ctx);\n }\n emit(name, ...data) {\n const evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n for(let i = 0; i < evtArr.length; i += 1)evtArr[i].fn.apply(evtArr[i].ctx, data);\n return this;\n }\n off(name, callback) {\n const e = this.e || (this.e = {});\n const evts = e[name];\n const liveEvents = [];\n if (evts && callback) {\n for(let i = 0, len = evts.length; i < len; i += 1)if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]);\n }\n if (liveEvents.length) e[name] = liveEvents;\n else delete e[name];\n return this;\n }\n}\nexports.default = Emitter;\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}]},[\"kXXX5\"], \"kXXX5\", \"parcelRequire4dc0\", {})\nlet {default: _default, } = parcelRequire4dc0(\"kXXX5\");\nexport {_default as default, };\n\n//# sourceMappingURL=index.js.map\n","import style from 'bundle-text:./style/index.less'\nimport validator from 'option-validator'\nimport { version } from '../package.json'\nimport config from './config'\nimport Contextmenu from './contextmenu'\nimport Control from './control'\nimport Events from './events'\nimport Hotkey from './hotkey'\nimport I18n from './i18n'\nimport Icons from './icons'\nimport Info from './info'\nimport Layer from './layer'\nimport Loading from './loading'\nimport Mask from './mask'\nimport Notice from './notice'\nimport Player from './player'\nimport Plugins from './plugins'\nimport scheme from './scheme'\nimport Setting from './setting'\nimport Storage from './storage'\nimport Subtitle from './subtitle'\nimport Template from './template'\nimport * as utils from './utils'\nimport Emitter from './utils/emitter'\n\nlet id = 0\nconst instances = []\nexport default class Artplayer extends Emitter {\n constructor(option, readyCallback) {\n super()\n\n if (!utils.isBrowser) {\n throw new Error('Artplayer can only be used in the browser environment')\n }\n\n this.id = ++id\n\n const mergeOption = utils.mergeDeep(Artplayer.option, option)\n mergeOption.container = option.container\n\n this.option = validator(mergeOption, scheme)\n\n this.isLock = false\n this.isReady = false\n this.isFocus = false\n this.isInput = false\n this.isRotate = false\n this.isDestroy = false\n\n this.template = new Template(this)\n this.events = new Events(this)\n this.storage = new Storage(this)\n this.icons = new Icons(this)\n this.i18n = new I18n(this)\n this.notice = new Notice(this)\n this.player = new Player(this)\n this.layers = new Layer(this)\n this.controls = new Control(this)\n this.contextmenu = new Contextmenu(this)\n this.subtitle = new Subtitle(this)\n this.info = new Info(this)\n this.loading = new Loading(this)\n this.hotkey = new Hotkey(this)\n this.mask = new Mask(this)\n this.setting = new Setting(this)\n this.plugins = new Plugins(this)\n\n if (typeof readyCallback === 'function') {\n this.on('ready', () => readyCallback.call(this, this))\n }\n\n if (Artplayer.DEBUG) {\n // eslint-disable-next-line no-console\n const log = msg => console.log(`[ART.${this.id}] -> ${msg}`)\n log(`Version@${Artplayer.version}`)\n for (let index = 0; index < config.events.length; index++) {\n this.on(`video:${config.events[index]}`, event => log(`Event@${event.type}`))\n }\n }\n\n instances.push(this)\n }\n\n static get instances() {\n return instances\n }\n\n static get version() {\n return version\n }\n\n static get config() {\n return config\n }\n\n static get utils() {\n return utils\n }\n\n static get scheme() {\n return scheme\n }\n\n static get Emitter() {\n return Emitter\n }\n\n static get validator() {\n return validator\n }\n\n static get kindOf() {\n return validator.kindOf\n }\n\n static get html() {\n return Template.html\n }\n\n static get option() {\n return {\n id: '',\n container: '#artplayer',\n url: '',\n poster: '',\n type: '',\n theme: '#f00',\n volume: 0.7,\n isLive: false,\n muted: false,\n autoplay: false,\n autoSize: false,\n autoMini: false,\n loop: false,\n flip: false,\n playbackRate: false,\n aspectRatio: false,\n screenshot: false,\n setting: false,\n hotkey: true,\n pip: false,\n mutex: true,\n backdrop: true,\n fullscreen: false,\n fullscreenWeb: false,\n subtitleOffset: false,\n miniProgressBar: false,\n useSSR: false,\n playsInline: true,\n lock: false,\n gesture: true,\n fastForward: false,\n autoPlayback: false,\n autoOrientation: false,\n airplay: false,\n proxy: undefined,\n layers: [],\n contextmenu: [],\n controls: [],\n settings: [],\n quality: [],\n highlight: [],\n plugins: [],\n thumbnails: {\n url: '',\n number: 60,\n column: 10,\n width: 0,\n height: 0,\n scale: 1,\n },\n subtitle: {\n url: '',\n type: '',\n style: {},\n name: '',\n escape: true,\n encoding: 'utf-8',\n onVttLoad: vtt => vtt,\n },\n moreVideoAttr: {\n controls: false,\n preload: utils.isSafari ? 'auto' : 'metadata',\n },\n i18n: {},\n icons: {},\n cssVar: {},\n customType: {},\n lang: navigator?.language.toLowerCase(),\n }\n }\n\n get proxy() {\n return this.events.proxy\n }\n\n get query() {\n return this.template.query\n }\n\n get video() {\n return this.template.$video\n }\n\n destroy(removeHtml = true) {\n this.events.destroy()\n this.template.destroy(removeHtml)\n instances.splice(instances.indexOf(this), 1)\n this.isDestroy = true\n this.emit('destroy')\n }\n}\n\nArtplayer.STYLE = style\nArtplayer.DEBUG = false\nArtplayer.CONTEXTMENU = true\nArtplayer.NOTICE_TIME = 2000\nArtplayer.SETTING_WIDTH = 250\nArtplayer.SETTING_ITEM_WIDTH = 200\nArtplayer.SETTING_ITEM_HEIGHT = 35\nArtplayer.RESIZE_TIME = 200\nArtplayer.SCROLL_TIME = 200\nArtplayer.SCROLL_GAP = 50\nArtplayer.AUTO_PLAYBACK_MAX = 10\nArtplayer.AUTO_PLAYBACK_MIN = 5\nArtplayer.AUTO_PLAYBACK_TIMEOUT = 3000\nArtplayer.RECONNECT_TIME_MAX = 5\nArtplayer.RECONNECT_SLEEP_TIME = 1000\nArtplayer.CONTROL_HIDE_TIME = 3000\nArtplayer.DBCLICK_TIME = 300\nArtplayer.DBCLICK_FULLSCREEN = true\nArtplayer.MOBILE_DBCLICK_PLAY = true\nArtplayer.MOBILE_CLICK_PLAY = false\nArtplayer.AUTO_ORIENTATION_TIME = 200\nArtplayer.INFO_LOOP_TIME = 1000\nArtplayer.FAST_FORWARD_VALUE = 3\nArtplayer.FAST_FORWARD_TIME = 1000\nArtplayer.TOUCH_MOVE_RATIO = 0.5\nArtplayer.VOLUME_STEP = 0.1\nArtplayer.SEEK_STEP = 5\nArtplayer.PLAYBACK_RATE = [0.5, 0.75, 1, 1.25, 1.5, 2]\nArtplayer.ASPECT_RATIO = ['default', '4:3', '16:9']\nArtplayer.FLIP = ['normal', 'horizontal', 'vertical']\nArtplayer.FULLSCREEN_WEB_IN_BODY = false\nArtplayer.LOG_VERSION = true\nArtplayer.USE_RAF = false\n\nif (utils.isBrowser) {\n window.Artplayer = Artplayer\n\n utils.setStyleText('artplayer-style', style)\n\n setTimeout(() => {\n if (Artplayer.LOG_VERSION) {\n // eslint-disable-next-line no-console\n console.log(\n `%c ArtPlayer %c ${Artplayer.version} %c https://artplayer.org`,\n 'color: #fff; background: #5f5f5f',\n 'color: #fff; background: #4bc729',\n '',\n )\n }\n }, 100)\n}\n","module.exports = \"3f60fe5475656751\";","!function(r,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):r.optionValidator=t()}(this,function(){\"use strict\";function e(r){return(e=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&\"function\"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?\"symbol\":typeof r})(r)}var n=Object.prototype.toString,c=function(r){if(void 0===r)return\"undefined\";if(null===r)return\"null\";var t=e(r);if(\"boolean\"===t)return\"boolean\";if(\"string\"===t)return\"string\";if(\"number\"===t)return\"number\";if(\"symbol\"===t)return\"symbol\";if(\"function\"===t)return function(r){return\"GeneratorFunction\"===o(r)}(r)?\"generatorfunction\":\"function\";if(function(r){return Array.isArray?Array.isArray(r):r instanceof Array}(r))return\"array\";if(function(r){if(r.constructor&&\"function\"==typeof r.constructor.isBuffer)return r.constructor.isBuffer(r);return!1}(r))return\"buffer\";if(function(r){try{if(\"number\"==typeof r.length&&\"function\"==typeof r.callee)return!0}catch(r){if(-1!==r.message.indexOf(\"callee\"))return!0}return!1}(r))return\"arguments\";if(function(r){return r instanceof Date||\"function\"==typeof r.toDateString&&\"function\"==typeof r.getDate&&\"function\"==typeof r.setDate}(r))return\"date\";if(function(r){return r instanceof Error||\"string\"==typeof r.message&&r.constructor&&\"number\"==typeof r.constructor.stackTraceLimit}(r))return\"error\";if(function(r){return r instanceof RegExp||\"string\"==typeof r.flags&&\"boolean\"==typeof r.ignoreCase&&\"boolean\"==typeof r.multiline&&\"boolean\"==typeof r.global}(r))return\"regexp\";switch(o(r)){case\"Symbol\":return\"symbol\";case\"Promise\":return\"promise\";case\"WeakMap\":return\"weakmap\";case\"WeakSet\":return\"weakset\";case\"Map\":return\"map\";case\"Set\":return\"set\";case\"Int8Array\":return\"int8array\";case\"Uint8Array\":return\"uint8array\";case\"Uint8ClampedArray\":return\"uint8clampedarray\";case\"Int16Array\":return\"int16array\";case\"Uint16Array\":return\"uint16array\";case\"Int32Array\":return\"int32array\";case\"Uint32Array\":return\"uint32array\";case\"Float32Array\":return\"float32array\";case\"Float64Array\":return\"float64array\"}if(function(r){return\"function\"==typeof r.throw&&\"function\"==typeof r.return&&\"function\"==typeof r.next}(r))return\"generator\";switch(t=n.call(r)){case\"[object Object]\":return\"object\";case\"[object Map Iterator]\":return\"mapiterator\";case\"[object Set Iterator]\":return\"setiterator\";case\"[object String Iterator]\":return\"stringiterator\";case\"[object Array Iterator]\":return\"arrayiterator\"}return t.slice(8,-1).toLowerCase().replace(/\\s/g,\"\")};function o(r){return r.constructor?r.constructor.name:null}function f(r,t){var e=2\",\n \"license\": \"MIT\",\n \"homepage\": \"https://artplayer.org\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/zhw2590582/ArtPlayer.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/zhw2590582/ArtPlayer/issues\"\n },\n \"keywords\": [\n \"html5\",\n \"video\",\n \"player\"\n ],\n \"main\": \"dist/artplayer.js\",\n \"legacy\": \"dist/artplayer.legacy.js\",\n \"types\": \"types/artplayer.d.ts\",\n \"browserslist\": \"last 1 Chrome version\",\n \"dependencies\": {\n \"option-validator\": \"^2.0.6\"\n }\n}\n","export default {\n properties: [\n 'audioTracks',\n 'autoplay',\n 'buffered',\n 'controller',\n 'controls',\n 'crossOrigin',\n 'currentSrc',\n 'currentTime',\n 'defaultMuted',\n 'defaultPlaybackRate',\n 'duration',\n 'ended',\n 'error',\n 'loop',\n 'mediaGroup',\n 'muted',\n 'networkState',\n 'paused',\n 'playbackRate',\n 'played',\n 'preload',\n 'readyState',\n 'seekable',\n 'seeking',\n 'src',\n 'startDate',\n 'textTracks',\n 'videoTracks',\n 'volume',\n ],\n methods: ['addTextTrack', 'canPlayType', 'load', 'play', 'pause'],\n events: [\n 'abort',\n 'canplay',\n 'canplaythrough',\n 'durationchange',\n 'emptied',\n 'ended',\n 'error',\n 'loadeddata',\n 'loadedmetadata',\n 'loadstart',\n 'pause',\n 'play',\n 'playing',\n 'progress',\n 'ratechange',\n 'seeked',\n 'seeking',\n 'stalled',\n 'suspend',\n 'timeupdate',\n 'volumechange',\n 'waiting',\n ],\n prototypes: [\n 'width',\n 'height',\n 'videoWidth',\n 'videoHeight',\n 'poster',\n 'webkitDecodedFrameCount',\n 'webkitDroppedFrameCount',\n 'playsInline',\n 'webkitSupportsFullscreen',\n 'webkitDisplayingFullscreen',\n 'onenterpictureinpicture',\n 'onleavepictureinpicture',\n 'disablePictureInPicture',\n 'cancelVideoFrameCallback',\n 'requestVideoFrameCallback',\n 'getVideoPlaybackQuality',\n 'requestPictureInPicture',\n 'webkitEnterFullScreen',\n 'webkitEnterFullscreen',\n 'webkitExitFullScreen',\n 'webkitExitFullscreen',\n ],\n}\n","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (\n key === 'default' ||\n key === '__esModule' ||\n Object.prototype.hasOwnProperty.call(dest, key)\n ) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n","import { getRect, includeFromEvent, isMobile, setStyles } from '../utils'\nimport Component from '../utils/component'\nimport aspectRatio from './aspectRatio'\nimport close from './close'\nimport flip from './flip'\nimport info from './info'\nimport playbackRate from './playbackRate'\nimport version from './version'\n\nexport default class Contextmenu extends Component {\n constructor(art) {\n super(art)\n\n this.name = 'contextmenu'\n this.$parent = art.template.$contextmenu\n\n if (!isMobile) {\n this.init()\n }\n }\n\n init() {\n const {\n option,\n proxy,\n template: { $player, $contextmenu },\n } = this.art\n\n if (option.playbackRate) {\n this.add(\n playbackRate({\n name: 'playbackRate',\n index: 10,\n }),\n )\n }\n\n if (option.aspectRatio) {\n this.add(\n aspectRatio({\n name: 'aspectRatio',\n index: 20,\n }),\n )\n }\n\n if (option.flip) {\n this.add(\n flip({\n name: 'flip',\n index: 30,\n }),\n )\n }\n\n this.add(\n info({\n name: 'info',\n index: 40,\n }),\n )\n\n this.add(\n version({\n name: 'version',\n index: 50,\n }),\n )\n\n this.add(\n close({\n name: 'close',\n index: 60,\n }),\n )\n\n for (let index = 0; index < option.contextmenu.length; index++) {\n this.add(option.contextmenu[index])\n }\n\n proxy($player, 'contextmenu', (event) => {\n if (!this.art.constructor.CONTEXTMENU)\n return\n event.preventDefault()\n\n this.show = true\n\n const mouseX = event.clientX\n const mouseY = event.clientY\n const { height: cHeight, width: cWidth, left: cLeft, top: cTop } = getRect($player)\n const { height: mHeight, width: mWidth } = getRect($contextmenu)\n let menuLeft = mouseX - cLeft\n let menuTop = mouseY - cTop\n\n if (mouseX + mWidth > cLeft + cWidth) {\n menuLeft = cWidth - mWidth\n }\n\n if (mouseY + mHeight > cTop + cHeight) {\n menuTop = cHeight - mHeight\n }\n\n setStyles($contextmenu, {\n top: `${menuTop}px`,\n left: `${menuLeft}px`,\n })\n })\n\n proxy($player, 'click', (event) => {\n if (!includeFromEvent(event, $contextmenu)) {\n this.show = false\n }\n })\n\n this.art.on('blur', () => {\n this.show = false\n })\n }\n}\n","export * from './compatibility'\nexport * from './dom'\nexport * from './error'\nexport * from './file'\nexport * from './format'\nexport * from './property'\nexport * from './subtitle'\nexport * from './time'\n","export const userAgent = globalThis?.CUSTOM_USER_AGENT ?? (typeof navigator !== 'undefined' ? navigator.userAgent : '')\nexport const isSafari = /^(?:(?!chrome|android).)*safari/i.test(userAgent)\nexport const isIOS = /iPad|iPhone|iPod/i.test(userAgent) && !window.MSStream\nexport const isIOS13 = isIOS || (userAgent.includes('Macintosh') && navigator.maxTouchPoints >= 1)\nexport const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent) || isIOS13\nexport const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined'\n","import { isMobile } from './compatibility'\n\nexport function query(selector, parent = document) {\n return parent.querySelector(selector)\n}\n\nexport function queryAll(selector, parent = document) {\n return Array.from(parent.querySelectorAll(selector))\n}\n\nexport function addClass(target, className) {\n return target.classList.add(className)\n}\n\nexport function removeClass(target, className) {\n return target.classList.remove(className)\n}\n\nexport function hasClass(target, className) {\n return target.classList.contains(className)\n}\n\nexport function append(parent, child) {\n if (child instanceof Element) {\n parent.appendChild(child)\n }\n else {\n parent.insertAdjacentHTML('beforeend', String(child))\n }\n return parent.lastElementChild || parent.lastChild\n}\n\nexport function remove(child) {\n return child.parentNode.removeChild(child)\n}\n\nexport function setStyle(element, key, value) {\n element.style[key] = value\n return element\n}\n\nexport function setStyles(element, styles) {\n for (const key in styles) {\n setStyle(element, key, styles[key])\n }\n return element\n}\n\nexport function getStyle(element, key, numberType = true) {\n const value = window.getComputedStyle(element, null).getPropertyValue(key)\n return numberType ? Number.parseFloat(value) : value\n}\n\nexport function siblings(target) {\n return Array.from(target.parentElement.children).filter(item => item !== target)\n}\n\nexport function inverseClass(target, className) {\n siblings(target).forEach(item => removeClass(item, className))\n addClass(target, className)\n}\n\nexport function tooltip(target, msg, pos = 'top') {\n if (isMobile)\n return\n target.setAttribute('aria-label', msg)\n addClass(target, 'hint--rounded')\n addClass(target, `hint--${pos}`)\n}\n\nexport function isInViewport(el, offset = 0) {\n const rect = el.getBoundingClientRect()\n const windowHeight = window.innerHeight || document.documentElement.clientHeight\n const windowWidth = window.innerWidth || document.documentElement.clientWidth\n const vertInView = rect.top - offset <= windowHeight && rect.top + rect.height + offset >= 0\n const horInView = rect.left - offset <= windowWidth + offset && rect.left + rect.width + offset >= 0\n return vertInView && horInView\n}\n\nexport function includeFromEvent(event, target) {\n return getComposedPath(event).includes(target)\n}\n\nexport function replaceElement(newChild, oldChild) {\n oldChild.parentNode.replaceChild(newChild, oldChild)\n return newChild\n}\n\nexport function createElement(tag) {\n return document.createElement(tag)\n}\n\nexport function getIcon(key = '', html = '') {\n const icon = createElement('i')\n addClass(icon, 'art-icon')\n addClass(icon, `art-icon-${key}`)\n append(icon, html)\n return icon\n}\n\nexport function setStyleText(id, style) {\n let $style = document.getElementById(id)\n if (!$style) {\n $style = document.createElement('style')\n $style.id = id\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', () => {\n document.head.appendChild($style)\n })\n }\n else {\n (document.head || document.documentElement).appendChild($style)\n }\n }\n $style.textContent = style\n}\n\nexport function supportsFlex() {\n const div = document.createElement('div')\n div.style.display = 'flex'\n return div.style.display === 'flex'\n}\n\nexport function getRect(el) {\n return el.getBoundingClientRect()\n}\n\nexport function loadImg(url, scale) {\n return new Promise((resolve, reject) => {\n const img = new Image()\n\n img.onload = function () {\n if (!scale || scale === 1) {\n resolve(img)\n }\n else {\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')\n canvas.width = img.width * scale\n canvas.height = img.height * scale\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height)\n\n canvas.toBlob((blob) => {\n const blobUrl = URL.createObjectURL(blob)\n const scaledImg = new Image()\n\n scaledImg.onload = function () {\n resolve(scaledImg)\n }\n\n scaledImg.onerror = function () {\n URL.revokeObjectURL(blobUrl)\n reject(new Error(`Image load failed: ${url}`))\n }\n\n scaledImg.src = blobUrl\n })\n }\n }\n\n img.onerror = function () {\n reject(new Error(`Image load failed: ${url}`))\n }\n\n img.src = url\n })\n}\n\nexport function getComposedPath(event) {\n if (event.composedPath)\n return event.composedPath()\n const path = []\n let node = event.target\n while (node) {\n path.push(node)\n node = node.parentNode\n }\n if (!path.includes(window) && window !== undefined) {\n path.push(window)\n }\n return path\n}\n","export class ArtPlayerError extends Error {\n constructor(message, context) {\n super(message)\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, context || this.constructor)\n }\n this.name = 'ArtPlayerError'\n }\n}\n\nexport function errorHandle(condition, msg) {\n if (!condition) {\n throw new ArtPlayerError(msg)\n }\n return condition\n}\n","export function getExt(url) {\n if (url.includes('?')) {\n return getExt(url.split('?')[0])\n }\n\n if (url.includes('#')) {\n return getExt(url.split('#')[0])\n }\n\n return url.trim().toLowerCase().split('.').pop()\n}\n\nexport function download(url, name) {\n const elink = document.createElement('a')\n elink.style.display = 'none'\n elink.href = url\n elink.download = name\n document.body.appendChild(elink)\n elink.click()\n document.body.removeChild(elink)\n}\n","export function clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b))\n}\n\nexport function capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport function secondToTime(second) {\n if (!second)\n return '00:00'\n const add0 = num => (num < 10 ? `0${num}` : String(num))\n const hour = Math.floor(second / 3600)\n const min = Math.floor((second - hour * 3600) / 60)\n const sec = Math.floor(second - hour * 3600 - min * 60)\n return (hour > 0 ? [hour, min, sec] : [min, sec]).map(add0).join(':')\n}\n\nexport function escape(str) {\n return str.replace(\n /[&<>'\"]/g,\n tag =>\n ({\n '&': '&',\n '<': '<',\n '>': '>',\n '\\'': ''',\n '\"': '"',\n })[tag] || tag,\n )\n}\n\nexport function unescape(str) {\n const map = {\n '&': '&',\n '<': '<',\n '>': '>',\n ''': '\\'',\n '"': '\"',\n }\n const reg = new RegExp(`(${Object.keys(map).join('|')})`, 'g')\n return str.replace(reg, tag => map[tag] || tag)\n}\n","export const def = Object.defineProperty\n\nconst { hasOwnProperty } = Object.prototype\nexport function has(obj, name) {\n return hasOwnProperty.call(obj, name)\n}\n\nexport function get(obj, name) {\n return Object.getOwnPropertyDescriptor(obj, name)\n}\n\nexport function mergeDeep(...objects) {\n const isObject = item => item && typeof item === 'object' && !Array.isArray(item)\n return objects.reduce((prev, obj) => {\n Object.keys(obj).forEach((key) => {\n const pVal = prev[key]\n const oVal = obj[key]\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal)\n }\n else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal)\n }\n else {\n prev[key] = oVal\n }\n })\n return prev\n }, {})\n}\n","function fixSrt(srt) {\n return srt.replace(/(\\d\\d:\\d\\d:\\d\\d)[,.](\\d+)/g, (_, $1, $2) => {\n let ms = $2.slice(0, 3)\n if ($2.length === 1) {\n ms = `${$2}00`\n }\n if ($2.length === 2) {\n ms = `${$2}0`\n }\n return `${$1},${ms}`\n })\n}\n\nexport function srtToVtt(srtText) {\n return 'WEBVTT \\r\\n\\r\\n'.concat(\n fixSrt(srtText)\n .replace(/\\{\\\\([ibu])\\}/g, '')\n .replace(/\\{\\\\([ibu])1\\}/g, '<$1>')\n .replace(/\\{([ibu])\\}/g, '<$1>')\n .replace(/\\{\\/([ibu])\\}/g, '')\n .replace(/(\\d\\d:\\d\\d:\\d\\d),(\\d\\d\\d)/g, '$1.$2')\n .replace(/\\{[\\s\\S]*?\\}/g, '')\n .concat('\\r\\n\\r\\n'),\n )\n}\n\nexport function vttToBlob(vttText) {\n return URL.createObjectURL(\n new Blob([vttText], {\n type: 'text/vtt',\n }),\n )\n}\n\nexport function assToVtt(ass) {\n const reAss = new RegExp(\n 'Dialogue:\\\\s\\\\d,'\n + '(\\\\d+:\\\\d\\\\d:\\\\d\\\\d.\\\\d\\\\d),'\n + '(\\\\d+:\\\\d\\\\d:\\\\d\\\\d.\\\\d\\\\d),'\n + '([^,]*),'\n + '([^,]*),'\n + '(?:[^,]*,){4}'\n + '([\\\\s\\\\S]*)$',\n 'i',\n )\n\n function fixTime(time = '') {\n return time\n .split(/[:.]/)\n .map((item, index, arr) => {\n if (index === arr.length - 1) {\n if (item.length === 1) {\n return `.${item}00`\n }\n\n if (item.length === 2) {\n return `.${item}0`\n }\n }\n else if (item.length === 1) {\n return (index === 0 ? '0' : ':0') + item\n }\n\n return index === 0 ? item : index === arr.length - 1 ? `.${item}` : `:${item}`\n })\n .join('')\n }\n\n return (\n `WEBVTT`\n + `\\n`\n + `\\n${\n ass\n .split(/\\r?\\n/)\n .map((line) => {\n const m = line.match(reAss)\n if (!m)\n return null\n return {\n start: fixTime(m[1].trim()),\n end: fixTime(m[2].trim()),\n text: m[5]\n .replace(/\\{[\\s\\S]*?\\}/g, '')\n .replace(/(\\\\N)/g, '\\n')\n .trim()\n .split(/\\r?\\n/)\n .map(item => item.trim())\n .join('\\n'),\n }\n })\n .filter(line => line)\n .map((line, index) => {\n if (line) {\n return `${index + 1}\\n` + `${line.start} --> ${line.end}` + `\\n` + `${line.text}`\n }\n return ''\n })\n .filter(line => line.trim())\n .join('\\n\\n')}`\n )\n}\n","export function sleep(ms = 0) {\n return new Promise(resolve => setTimeout(resolve, ms))\n}\n\nexport function debounce(func, duration) {\n let timeout\n\n return function (...args) {\n const effect = () => {\n timeout = null\n return func.apply(this, args)\n }\n\n clearTimeout(timeout)\n timeout = setTimeout(effect, duration)\n }\n}\n\nexport function throttle(func, duration) {\n let shouldWait = false\n\n return function (...args) {\n if (!shouldWait) {\n func.apply(this, args)\n shouldWait = true\n\n setTimeout(() => {\n shouldWait = false\n }, duration)\n }\n }\n}\n","import validator from 'option-validator'\nimport { ComponentOption } from '../scheme'\nimport { addClass, append, createElement, hasClass, remove, removeClass, setStyles, tooltip } from './dom'\nimport { errorHandle } from './error'\n\nexport default class Component {\n constructor(art) {\n this.id = 0\n this.art = art\n this.cache = new Map()\n this.add = this.add.bind(this)\n this.remove = this.remove.bind(this)\n this.update = this.update.bind(this)\n }\n\n get show() {\n return hasClass(this.art.template.$player, `art-${this.name}-show`)\n }\n\n set show(value) {\n const { $player } = this.art.template\n const className = `art-${this.name}-show`\n if (value) {\n addClass($player, className)\n }\n else {\n removeClass($player, className)\n }\n this.art.emit(this.name, value)\n }\n\n toggle() {\n this.show = !this.show\n }\n\n add(getOption) {\n const option = typeof getOption === 'function' ? getOption(this.art) : getOption\n option.html = option.html || ''\n validator(option, ComponentOption)\n if (!this.$parent || !this.name || option.disable)\n return\n const name = option.name || `${this.name}${this.id}`\n const item = this.cache.get(name)\n errorHandle(!item, `Can't add an existing [${name}] to the [${this.name}]`)\n\n this.id += 1\n const $ref = createElement('div')\n addClass($ref, `art-${this.name}`)\n addClass($ref, `art-${this.name}-${name}`)\n\n const childs = Array.from(this.$parent.children)\n $ref.dataset.index = option.index || this.id\n const nextChild = childs.find(item => Number(item.dataset.index) >= Number($ref.dataset.index))\n if (nextChild) {\n nextChild.insertAdjacentElement('beforebegin', $ref)\n }\n else {\n append(this.$parent, $ref)\n }\n\n if (option.html) {\n append($ref, option.html)\n }\n\n if (option.style) {\n setStyles($ref, option.style)\n }\n\n if (option.tooltip) {\n tooltip($ref, option.tooltip)\n }\n\n const events = []\n if (option.click) {\n const destroyEvent = this.art.events.proxy($ref, 'click', (event) => {\n event.preventDefault()\n option.click.call(this.art, this, event)\n })\n events.push(destroyEvent)\n }\n\n if (option.selector && ['left', 'right'].includes(option.position)) {\n this.selector(option, $ref, events)\n }\n\n this[name] = $ref\n this.cache.set(name, { $ref, events, option })\n\n if (option.mounted) {\n option.mounted.call(this.art, $ref)\n }\n\n return $ref\n }\n\n remove(name) {\n const item = this.cache.get(name)\n errorHandle(item, `Can't find [${name}] from the [${this.name}]`)\n\n if (item.option.beforeUnmount) {\n item.option.beforeUnmount.call(this.art, item.$ref)\n }\n\n for (let index = 0; index < item.events.length; index++) {\n this.art.events.remove(item.events[index])\n }\n\n this.cache.delete(name)\n delete this[name]\n remove(item.$ref)\n }\n\n update(option) {\n const item = this.cache.get(option.name)\n if (item) {\n option = Object.assign(item.option, option)\n this.remove(option.name)\n }\n return this.add(option)\n }\n}\n","import { errorHandle } from '../utils'\n\nconst a = 'array'\nconst b = 'boolean'\nconst s = 'string'\nconst n = 'number'\nconst o = 'object'\nconst f = 'function'\n\nfunction validElement(value, type, paths) {\n return errorHandle(\n type === s || type === n || value instanceof Element,\n `${paths.join('.')} require '${s}' or 'Element' type`,\n )\n}\n\nexport const ComponentOption = {\n html: validElement,\n disable: `?${b}`,\n name: `?${s}`,\n index: `?${n}`,\n style: `?${o}`,\n click: `?${f}`,\n mounted: `?${f}`,\n tooltip: `?${s}|${n}`,\n width: `?${n}`,\n selector: `?${a}`,\n onSelect: `?${f}`,\n switch: `?${b}`,\n onSwitch: `?${f}`,\n range: `?${a}`,\n onRange: `?${f}`,\n onChange: `?${f}`,\n}\n\nexport default {\n id: s,\n container: validElement,\n url: s,\n poster: s,\n type: s,\n theme: s,\n lang: s,\n volume: n,\n isLive: b,\n muted: b,\n autoplay: b,\n autoSize: b,\n autoMini: b,\n loop: b,\n flip: b,\n playbackRate: b,\n aspectRatio: b,\n screenshot: b,\n setting: b,\n hotkey: b,\n pip: b,\n mutex: b,\n backdrop: b,\n fullscreen: b,\n fullscreenWeb: b,\n subtitleOffset: b,\n miniProgressBar: b,\n useSSR: b,\n playsInline: b,\n lock: b,\n gesture: b,\n fastForward: b,\n autoPlayback: b,\n autoOrientation: b,\n airplay: b,\n proxy: `?${f}`,\n plugins: [f],\n layers: [ComponentOption],\n contextmenu: [ComponentOption],\n settings: [ComponentOption],\n controls: [\n {\n ...ComponentOption,\n position: (value, _, paths) => {\n const position = ['top', 'left', 'right']\n return errorHandle(\n position.includes(value),\n `${paths.join('.')} only accept ${position.toString()} as parameters`,\n )\n },\n },\n ],\n quality: [\n {\n default: `?${b}`,\n html: s,\n url: s,\n },\n ],\n highlight: [\n {\n time: n,\n text: s,\n },\n ],\n thumbnails: {\n url: s,\n number: n,\n column: n,\n width: n,\n height: n,\n scale: n,\n },\n subtitle: {\n url: s,\n name: s,\n type: s,\n style: o,\n escape: b,\n encoding: s,\n onVttLoad: f,\n },\n moreVideoAttr: o,\n i18n: o,\n icons: o,\n cssVar: o,\n customType: o,\n}\n","import { inverseClass, query, queryAll } from '../utils'\n\nexport default function aspectRatio(option) {\n return (art) => {\n const {\n i18n,\n constructor: { ASPECT_RATIO },\n } = art\n\n const html = ASPECT_RATIO.map(\n item => `${item === 'default' ? i18n.get('Default') : item}`,\n ).join('')\n\n return {\n ...option,\n html: `${i18n.get('Aspect Ratio')}: ${html}`,\n click: (contextmenu, event) => {\n const { value } = event.target.dataset\n if (value) {\n art.aspectRatio = value\n contextmenu.show = false\n }\n },\n mounted: ($panel) => {\n const $default = query('[data-value=\"default\"]', $panel)\n if ($default) {\n inverseClass($default, 'art-current')\n }\n art.on('aspectRatio', (value) => {\n const $current = queryAll('span', $panel).find(item => item.dataset.value === value)\n if ($current) {\n inverseClass($current, 'art-current')\n }\n })\n },\n }\n }\n}\n","export default function close(option) {\n return art => ({\n ...option,\n html: art.i18n.get('Close'),\n click: (contextmenu) => {\n contextmenu.show = false\n },\n })\n}\n","import { capitalize, inverseClass, query, queryAll } from '../utils'\n\nexport default function flip(option) {\n return (art) => {\n const {\n i18n,\n constructor: { FLIP },\n } = art\n\n const html = FLIP.map(item => `${i18n.get(capitalize(item))}`).join('')\n\n return {\n ...option,\n html: `${i18n.get('Video Flip')}: ${html}`,\n click: (contextmenu, event) => {\n const { value } = event.target.dataset\n if (value) {\n art.flip = value.toLowerCase()\n contextmenu.show = false\n }\n },\n mounted: ($panel) => {\n const $default = query('[data-value=\"normal\"]', $panel)\n if ($default) {\n inverseClass($default, 'art-current')\n }\n art.on('flip', (value) => {\n const $current = queryAll('span', $panel).find(item => item.dataset.value === value)\n if ($current) {\n inverseClass($current, 'art-current')\n }\n })\n },\n }\n }\n}\n","export default function info(option) {\n return art => ({\n ...option,\n html: art.i18n.get('Video Info'),\n click: (contextmenu) => {\n art.info.show = true\n contextmenu.show = false\n },\n })\n}\n","import { inverseClass, query, queryAll } from '../utils'\n\nexport default function playbackRate(option) {\n return (art) => {\n const {\n i18n,\n constructor: { PLAYBACK_RATE },\n } = art\n\n const html = PLAYBACK_RATE.map(\n item => `${item === 1 ? i18n.get('Normal') : item.toFixed(1)}`,\n ).join('')\n\n return {\n ...option,\n html: `${i18n.get('Play Speed')}: ${html}`,\n click: (contextmenu, event) => {\n const { value } = event.target.dataset\n if (value) {\n art.playbackRate = Number(value)\n contextmenu.show = false\n }\n },\n mounted: ($panel) => {\n const $default = query('[data-value=\"1\"]', $panel)\n if ($default)\n inverseClass($default, 'art-current')\n art.on('video:ratechange', () => {\n const $current = queryAll('span', $panel).find(\n item => Number(item.dataset.value) === art.playbackRate,\n )\n if ($current) {\n inverseClass($current, 'art-current')\n }\n })\n },\n }\n }\n}\n","import { version } from '../../package.json'\n\nexport default function (option) {\n return {\n ...option,\n html: `ArtPlayer ${version}`,\n }\n}\n","import {\n addClass,\n append,\n createElement,\n def,\n errorHandle,\n getComposedPath,\n includeFromEvent,\n inverseClass,\n isMobile,\n removeClass,\n sleep,\n} from '../utils'\nimport Component from '../utils/component'\nimport airplay from './airplay'\nimport fullscreen from './fullscreen'\nimport fullscreenWeb from './fullscreenWeb'\nimport pip from './pip'\nimport playAndPause from './playAndPause'\nimport progress from './progress'\nimport screenshot from './screenshot'\nimport setting from './setting'\nimport time from './time'\nimport volume from './volume'\n\nexport default class Control extends Component {\n constructor(art) {\n super(art)\n\n this.isHover = false\n this.name = 'control'\n this.timer = Date.now()\n\n const { constructor } = art\n const { $player, $bottom } = this.art.template\n\n art.on('mousemove', () => {\n if (!isMobile) {\n this.show = true\n }\n })\n\n art.on('click', () => {\n if (isMobile) {\n this.toggle()\n }\n else {\n this.show = true\n }\n })\n\n art.on('document:mousemove', (event) => {\n this.isHover = includeFromEvent(event, $bottom)\n })\n\n art.on('video:timeupdate', () => {\n if (\n !art.setting.show\n && !this.isHover\n && !art.isInput\n && art.playing\n && this.show\n && Date.now() - this.timer >= constructor.CONTROL_HIDE_TIME\n ) {\n this.show = false\n }\n })\n\n art.on('control', (state) => {\n if (state) {\n removeClass($player, 'art-hide-cursor')\n addClass($player, 'art-hover')\n this.timer = Date.now()\n }\n else {\n addClass($player, 'art-hide-cursor')\n removeClass($player, 'art-hover')\n }\n })\n\n this.init()\n }\n\n init() {\n const { option } = this.art\n\n if (!option.isLive) {\n this.add(\n progress({\n name: 'progress',\n position: 'top',\n index: 10,\n }),\n )\n }\n\n this.add({\n name: 'thumbnails',\n position: 'top',\n index: 20,\n })\n\n this.add(\n playAndPause({\n name: 'playAndPause',\n position: 'left',\n index: 10,\n }),\n )\n\n this.add(\n volume({\n name: 'volume',\n position: 'left',\n index: 20,\n }),\n )\n\n if (!option.isLive) {\n this.add(\n time({\n name: 'time',\n position: 'left',\n index: 30,\n }),\n )\n }\n\n if (option.quality.length) {\n sleep().then(() => {\n this.art.quality = option.quality\n })\n }\n\n if (option.screenshot && !isMobile) {\n this.add(\n screenshot({\n name: 'screenshot',\n position: 'right',\n index: 20,\n }),\n )\n }\n\n if (option.setting) {\n this.add(\n setting({\n name: 'setting',\n position: 'right',\n index: 30,\n }),\n )\n }\n\n if (option.pip) {\n this.add(\n pip({\n name: 'pip',\n position: 'right',\n index: 40,\n }),\n )\n }\n\n if (option.airplay && window.WebKitPlaybackTargetAvailabilityEvent) {\n this.add(\n airplay({\n name: 'airplay',\n position: 'right',\n index: 50,\n }),\n )\n }\n\n if (option.fullscreenWeb) {\n this.add(\n fullscreenWeb({\n name: 'fullscreenWeb',\n position: 'right',\n index: 60,\n }),\n )\n }\n\n if (option.fullscreen) {\n this.add(\n fullscreen({\n name: 'fullscreen',\n position: 'right',\n index: 70,\n }),\n )\n }\n\n for (let index = 0; index < option.controls.length; index++) {\n this.add(option.controls[index])\n }\n }\n\n add(getOption) {\n const option = typeof getOption === 'function' ? getOption(this.art) : getOption\n const { $progress, $controlsLeft, $controlsRight } = this.art.template\n\n switch (option.position) {\n case 'top':\n this.$parent = $progress\n break\n case 'left':\n this.$parent = $controlsLeft\n break\n case 'right':\n this.$parent = $controlsRight\n break\n default:\n errorHandle(false, `Control option.position must one of 'top', 'left', 'right'`)\n break\n }\n\n super.add(option)\n }\n\n check(target) {\n target.$control_value.innerHTML = target.html\n for (let index = 0; index < target.$control_option.length; index++) {\n const item = target.$control_option[index]\n item.default = item === target\n if (item.default) {\n inverseClass(item.$control_item, 'art-current')\n }\n }\n }\n\n selector(option, $ref, events) {\n const { proxy } = this.art.events\n\n addClass($ref, 'art-control-selector')\n const $value = createElement('div')\n addClass($value, 'art-selector-value')\n append($value, option.html)\n $ref.textContent = ''\n append($ref, $value)\n\n const $list = createElement('div')\n addClass($list, 'art-selector-list')\n append($ref, $list)\n\n for (let index = 0; index < option.selector.length; index++) {\n const item = option.selector[index]\n const $item = createElement('div')\n addClass($item, 'art-selector-item')\n if (item.default)\n addClass($item, 'art-current')\n $item.dataset.index = index\n $item.dataset.value = item.value\n $item.innerHTML = item.html\n append($list, $item)\n\n def(item, '$control_option', {\n get: () => option.selector,\n })\n\n def(item, '$control_item', {\n get: () => $item,\n })\n\n def(item, '$control_value', {\n get: () => $value,\n })\n }\n\n const event = proxy($list, 'click', async (event) => {\n const path = getComposedPath(event)\n const item = option.selector.find(\n item => item.$control_item === path.find($item => item.$control_item === $item),\n )\n this.check(item)\n if (option.onSelect) {\n $value.innerHTML = await option.onSelect.call(this.art, item, item.$control_item, event)\n }\n })\n\n events.push(event)\n }\n}\n","import { append } from '../utils'\n\nexport default function airplay(option) {\n return art => ({\n ...option,\n tooltip: art.i18n.get('AirPlay'),\n mounted: ($control) => {\n const { proxy, icons } = art\n append($control, icons.airplay)\n proxy($control, 'click', () => art.airplay())\n },\n })\n}\n","import { append, setStyle, tooltip } from '../utils'\n\nexport default function fullscreen(option) {\n return art => ({\n ...option,\n tooltip: art.i18n.get('Fullscreen'),\n mounted: ($control) => {\n const { proxy, icons, i18n } = art\n\n const $fullscreenOn = append($control, icons.fullscreenOn)\n const $fullscreenOff = append($control, icons.fullscreenOff)\n setStyle($fullscreenOff, 'display', 'none')\n\n proxy($control, 'click', () => {\n art.fullscreen = !art.fullscreen\n })\n\n art.on('fullscreen', (state) => {\n if (state) {\n tooltip($control, i18n.get('Exit Fullscreen'))\n setStyle($fullscreenOn, 'display', 'none')\n setStyle($fullscreenOff, 'display', 'inline-flex')\n }\n else {\n tooltip($control, i18n.get('Fullscreen'))\n setStyle($fullscreenOn, 'display', 'inline-flex')\n setStyle($fullscreenOff, 'display', 'none')\n }\n })\n },\n })\n}\n","import { append, setStyle, tooltip } from '../utils'\n\nexport default function fullscreenWeb(option) {\n return art => ({\n ...option,\n tooltip: art.i18n.get('Web Fullscreen'),\n mounted: ($control) => {\n const { proxy, icons, i18n } = art\n\n const $fullscreenWebOn = append($control, icons.fullscreenWebOn)\n const $fullscreenWebOff = append($control, icons.fullscreenWebOff)\n setStyle($fullscreenWebOff, 'display', 'none')\n\n proxy($control, 'click', () => {\n art.fullscreenWeb = !art.fullscreenWeb\n })\n\n art.on('fullscreenWeb', (value) => {\n if (value) {\n tooltip($control, i18n.get('Exit Web Fullscreen'))\n setStyle($fullscreenWebOn, 'display', 'none')\n setStyle($fullscreenWebOff, 'display', 'inline-flex')\n }\n else {\n tooltip($control, i18n.get('Web Fullscreen'))\n setStyle($fullscreenWebOn, 'display', 'inline-flex')\n setStyle($fullscreenWebOff, 'display', 'none')\n }\n })\n },\n })\n}\n","import { append, tooltip } from '../utils'\n\nexport default function pip(option) {\n return art => ({\n ...option,\n tooltip: art.i18n.get('PIP Mode'),\n mounted: ($control) => {\n const { proxy, icons, i18n } = art\n\n append($control, icons.pip)\n\n proxy($control, 'click', () => {\n art.pip = !art.pip\n })\n\n art.on('pip', (value) => {\n tooltip($control, i18n.get(value ? 'Exit PIP Mode' : 'PIP Mode'))\n })\n },\n })\n}\n","import { append, setStyle, tooltip } from '../utils'\n\nexport default function playAndPause(option) {\n return art => ({\n ...option,\n mounted: ($control) => {\n const { proxy, icons, i18n } = art\n\n const $play = append($control, icons.play)\n const $pause = append($control, icons.pause)\n tooltip($play, i18n.get('Play'))\n tooltip($pause, i18n.get('Pause'))\n\n proxy($play, 'click', () => {\n art.play()\n })\n\n proxy($pause, 'click', () => {\n art.pause()\n })\n\n function showPlay() {\n setStyle($play, 'display', 'flex')\n setStyle($pause, 'display', 'none')\n }\n\n function showPause() {\n setStyle($play, 'display', 'none')\n setStyle($pause, 'display', 'flex')\n }\n\n if (art.playing) {\n showPause()\n }\n else {\n showPlay()\n }\n\n art.on('video:playing', () => {\n showPause()\n })\n\n art.on('video:pause', () => {\n showPlay()\n })\n },\n })\n}\n","import { append, clamp, getRect, includeFromEvent, isMobile, query, secondToTime, setStyle } from '../utils'\n\nexport function getPosFromEvent(art, event) {\n const { $progress } = art.template\n const { left } = getRect($progress)\n const eventLeft = isMobile ? event.touches[0].clientX : event.clientX\n const width = clamp(eventLeft - left, 0, $progress.clientWidth)\n const second = (width / $progress.clientWidth) * art.duration\n const time = secondToTime(second)\n const percentage = clamp(width / $progress.clientWidth, 0, 1)\n return { second, time, width, percentage }\n}\n\nexport function setCurrentTime(art, event) {\n if (art.isRotate) {\n const percentage = event.touches[0].clientY / art.height\n const second = percentage * art.duration\n art.emit('setBar', 'played', percentage, event)\n art.seek = second\n }\n else {\n const { second, percentage } = getPosFromEvent(art, event)\n art.emit('setBar', 'played', percentage, event)\n art.seek = second\n }\n}\n\nexport default function progress(options) {\n return (art) => {\n const { icons, option, proxy } = art\n\n return {\n ...options,\n html: `\n
\n
\n
\n
\n
\n
\n
\n
\n `,\n mounted: ($control) => {\n let tipTimer = null\n let isDragging = false\n\n const $hover = query('.art-progress-hover', $control)\n const $loaded = query('.art-progress-loaded', $control)\n const $played = query('.art-progress-played', $control)\n const $highlight = query('.art-progress-highlight', $control)\n const $indicator = query('.art-progress-indicator', $control)\n const $tip = query('.art-progress-tip', $control)\n\n if (icons.indicator) {\n append($indicator, icons.indicator)\n }\n else {\n setStyle($indicator, 'backgroundColor', 'var(--art-theme)')\n }\n\n function showHighlight(event) {\n const { width } = getPosFromEvent(art, event)\n const { text } = event.target.dataset\n $tip.textContent = text\n const tipWidth = $tip.clientWidth\n if (width <= tipWidth / 2) {\n setStyle($tip, 'left', 0)\n }\n else if (width > $control.clientWidth - tipWidth / 2) {\n setStyle($tip, 'left', `${$control.clientWidth - tipWidth}px`)\n }\n else {\n setStyle($tip, 'left', `${width - tipWidth / 2}px`)\n }\n }\n\n function showTime(event, touch) {\n const { width, time } = touch || getPosFromEvent(art, event)\n $tip.textContent = time\n const tipWidth = $tip.clientWidth\n if (width <= tipWidth / 2) {\n setStyle($tip, 'left', 0)\n }\n else if (width > $control.clientWidth - tipWidth / 2) {\n setStyle($tip, 'left', `${$control.clientWidth - tipWidth}px`)\n }\n else {\n setStyle($tip, 'left', `${width - tipWidth / 2}px`)\n }\n }\n\n function updateHighlight() {\n $highlight.textContent = ''\n for (let index = 0; index < option.highlight.length; index++) {\n const item = option.highlight[index]\n const left = (clamp(item.time, 0, art.duration) / art.duration) * 100\n const html = ``\n append($highlight, html)\n }\n }\n\n function setBar(type, percentage, event) {\n const isMobileDragging = type === 'played' && event && isMobile\n\n if (type === 'loaded') {\n setStyle($loaded, 'width', `${percentage * 100}%`)\n }\n\n if (type === 'hover') {\n setStyle($hover, 'width', `${percentage * 100}%`)\n }\n\n if (type === 'played') {\n setStyle($played, 'width', `${percentage * 100}%`)\n setStyle($indicator, 'left', `${percentage * 100}%`)\n }\n\n if (isMobileDragging) {\n setStyle($tip, 'display', 'flex')\n const width = $control.clientWidth * percentage\n const time = secondToTime(percentage * art.duration)\n showTime(event, { width, time })\n clearTimeout(tipTimer)\n tipTimer = setTimeout(() => {\n setStyle($tip, 'display', 'none')\n }, 500)\n }\n }\n\n art.on('setBar', setBar)\n art.on('video:loadedmetadata', updateHighlight)\n\n if (art.constructor.USE_RAF) {\n art.on('raf', () => {\n art.emit('setBar', 'played', art.played)\n art.emit('setBar', 'loaded', art.loaded)\n })\n }\n else {\n art.on('video:timeupdate', () => {\n art.emit('setBar', 'played', art.played)\n })\n\n art.on('video:progress', () => {\n art.emit('setBar', 'loaded', art.loaded)\n })\n\n art.on('video:ended', () => {\n art.emit('setBar', 'played', 1)\n })\n }\n\n art.emit('setBar', 'loaded', art.loaded || 0)\n\n if (!isMobile) {\n proxy($control, 'click', (event) => {\n if (event.target !== $indicator) {\n setCurrentTime(art, event)\n }\n })\n\n proxy($control, 'mousemove', (event) => {\n const { percentage } = getPosFromEvent(art, event)\n art.emit('setBar', 'hover', percentage, event)\n setStyle($tip, 'display', 'flex')\n if (includeFromEvent(event, $highlight)) {\n showHighlight(event)\n }\n else {\n showTime(event)\n }\n })\n\n proxy($control, 'mouseleave', (event) => {\n setStyle($tip, 'display', 'none')\n art.emit('setBar', 'hover', 0, event)\n })\n\n proxy($control, 'mousedown', (event) => {\n isDragging = event.button === 0\n })\n\n art.on('document:mousemove', (event) => {\n if (isDragging) {\n const { second, percentage } = getPosFromEvent(art, event)\n art.emit('setBar', 'played', percentage, event)\n art.seek = second\n }\n })\n\n art.on('document:mouseup', () => {\n if (isDragging) {\n isDragging = false\n }\n })\n }\n },\n }\n }\n}\n","import { append } from '../utils'\n\nexport default function screenshot(option) {\n return art => ({\n ...option,\n tooltip: art.i18n.get('Screenshot'),\n mounted: ($control) => {\n const { proxy, icons } = art\n\n append($control, icons.screenshot)\n proxy($control, 'click', () => {\n art.screenshot()\n })\n },\n })\n}\n","import { append, tooltip } from '../utils'\n\nexport default function setting(option) {\n return art => ({\n ...option,\n tooltip: art.i18n.get('Show Setting'),\n mounted: ($control) => {\n const { proxy, icons, i18n } = art\n\n append($control, icons.setting)\n\n proxy($control, 'click', () => {\n art.setting.toggle()\n art.setting.resize()\n })\n\n art.on('setting', (value) => {\n tooltip($control, i18n.get(value ? 'Hide Setting' : 'Show Setting'))\n })\n },\n })\n}\n","import { isMobile, secondToTime } from '../utils'\n\nexport default function time(option) {\n return art => ({\n ...option,\n style: isMobile\n ? {\n fontSize: '12px',\n padding: '0 5px',\n }\n : {\n cursor: 'auto',\n padding: '0 10px',\n },\n mounted: ($control) => {\n function getTime() {\n const newTime = `${secondToTime(art.currentTime)} / ${secondToTime(art.duration)}`\n if (newTime !== $control.textContent) {\n $control.textContent = newTime\n }\n }\n\n getTime()\n\n const events = ['video:loadedmetadata', 'video:timeupdate', 'video:progress']\n for (let index = 0; index < events.length; index++) {\n art.on(events[index], getTime)\n }\n },\n })\n}\n","import { append, getRect, isMobile, setStyle } from '../utils'\n\nexport default function volume(option) {\n return art => ({\n ...option,\n mounted: ($control) => {\n const { proxy, icons } = art\n\n const $volume = append($control, icons.volume)\n const $close = append($control, icons.volumeClose)\n const $panel = append($control, '
')\n const $inner = append($panel, '
')\n const $value = append($inner, `
`)\n const $slider = append($inner, `
`)\n const $handle = append($slider, `
`)\n const $loaded = append($handle, `
`)\n const $indicator = append($slider, `
`)\n\n function getVolumeFromEvent(event) {\n const { top, height } = getRect($slider)\n return 1 - (event.clientY - top) / height\n }\n\n function update() {\n if (art.muted || art.volume === 0) {\n setStyle($volume, 'display', 'none')\n setStyle($close, 'display', 'flex')\n setStyle($indicator, 'top', '100%')\n setStyle($loaded, 'top', '100%')\n $value.textContent = 0\n }\n else {\n const percentage = art.volume * 100\n setStyle($volume, 'display', 'flex')\n setStyle($close, 'display', 'none')\n setStyle($indicator, 'top', `${100 - percentage}%`)\n setStyle($loaded, 'top', `${100 - percentage}%`)\n $value.textContent = Math.floor(percentage)\n }\n }\n\n update()\n art.on('video:volumechange', update)\n\n proxy($volume, 'click', () => {\n art.muted = true\n })\n\n proxy($close, 'click', () => {\n art.muted = false\n })\n\n if (isMobile) {\n setStyle($panel, 'display', 'none')\n }\n else {\n let isDragging = false\n\n proxy($slider, 'mousedown', (event) => {\n isDragging = event.button === 0\n art.volume = getVolumeFromEvent(event)\n })\n\n art.on('document:mousemove', (event) => {\n if (isDragging) {\n art.muted = false\n art.volume = getVolumeFromEvent(event)\n }\n })\n\n art.on('document:mouseup', () => {\n if (isDragging) {\n isDragging = false\n }\n })\n }\n },\n })\n}\n","import clickInit from './clickInit'\nimport gestureInit from './gestureInit'\nimport globalInit from './globalInit'\nimport hoverInit from './hoverInit'\nimport moveInit from './moveInit'\nimport resizeInit from './resizeInit'\nimport updateInit from './updateInit'\nimport viewInit from './viewInit'\n\nexport default class Events {\n constructor(art) {\n this.destroyEvents = []\n this.proxy = this.proxy.bind(this)\n this.hover = this.hover.bind(this)\n\n clickInit(art, this)\n hoverInit(art, this)\n moveInit(art, this)\n resizeInit(art, this)\n gestureInit(art, this)\n viewInit(art, this)\n globalInit(art, this)\n updateInit(art, this)\n }\n\n proxy(target, name, callback, option = {}) {\n if (Array.isArray(name)) {\n return name.map(item => this.proxy(target, item, callback, option))\n }\n\n target.addEventListener(name, callback, option)\n const destroy = () => target.removeEventListener(name, callback, option)\n this.destroyEvents.push(destroy)\n return destroy\n }\n\n hover(target, mouseenter, mouseleave) {\n if (mouseenter) {\n this.proxy(target, 'mouseenter', mouseenter)\n }\n if (mouseleave) {\n this.proxy(target, 'mouseleave', mouseleave)\n }\n }\n\n remove(destroyEvent) {\n const index = this.destroyEvents.indexOf(destroyEvent)\n if (index > -1) {\n destroyEvent()\n this.destroyEvents.splice(index, 1)\n }\n }\n\n destroy() {\n for (let index = 0; index < this.destroyEvents.length; index++) {\n this.destroyEvents[index]()\n }\n }\n}\n","import { includeFromEvent, isMobile } from '../utils'\n\nexport default function clickInit(art, events) {\n const {\n constructor,\n template: { $player, $video },\n } = art\n\n function onDocumentClick(event) {\n if (includeFromEvent(event, $player)) {\n art.isInput = event.target.tagName === 'INPUT'\n art.isFocus = true\n art.emit('focus', event)\n }\n else {\n art.isInput = false\n art.isFocus = false\n art.emit('blur', event)\n }\n }\n\n art.on('document:click', onDocumentClick)\n art.on('document:contextmenu', onDocumentClick)\n\n let clickTimes = []\n events.proxy($video, 'click', (event) => {\n const now = Date.now()\n clickTimes.push(now)\n const { MOBILE_CLICK_PLAY, DBCLICK_TIME, MOBILE_DBCLICK_PLAY, DBCLICK_FULLSCREEN } = constructor\n\n const clicks = clickTimes.filter(t => now - t <= DBCLICK_TIME)\n switch (clicks.length) {\n case 1:\n art.emit('click', event)\n\n if (isMobile) {\n if (!art.isLock && MOBILE_CLICK_PLAY) {\n art.toggle()\n }\n }\n else {\n art.toggle()\n }\n clickTimes = clicks\n break\n case 2:\n art.emit('dblclick', event)\n\n if (isMobile) {\n if (!art.isLock && MOBILE_DBCLICK_PLAY) {\n art.toggle()\n }\n }\n else {\n if (DBCLICK_FULLSCREEN) {\n art.fullscreen = !art.fullscreen\n }\n }\n clickTimes = []\n break\n default:\n clickTimes = []\n }\n })\n}\n","import { setCurrentTime } from '../control/progress'\nimport { clamp, isMobile, secondToTime } from '../utils'\n\nfunction GetSlideAngle(dx, dy) {\n return (Math.atan2(dy, dx) * 180) / Math.PI\n}\n\nfunction GetSlideDirection(startX, startY, endX, endY) {\n const dy = startY - endY\n const dx = endX - startX\n let result = 0\n\n if (Math.abs(dx) < 2 && Math.abs(dy) < 2) {\n return result\n }\n\n const angle = GetSlideAngle(dx, dy)\n if (angle >= -45 && angle < 45) {\n result = 4\n }\n else if (angle >= 45 && angle < 135) {\n result = 1\n }\n else if (angle >= -135 && angle < -45) {\n result = 2\n }\n else if ((angle >= 135 && angle <= 180) || (angle >= -180 && angle < -135)) {\n result = 3\n }\n\n return result\n}\n\nexport default function gestureInit(art, events) {\n if (isMobile && !art.option.isLive) {\n const { $video, $progress } = art.template\n\n let touchTarget = null\n let isDragging = false\n let startX = 0\n let startY = 0\n let startTime = 0\n\n const onTouchStart = (event) => {\n if (event.touches.length === 1 && !art.isLock) {\n if (touchTarget === $progress) {\n setCurrentTime(art, event)\n }\n\n isDragging = true\n const { pageX, pageY } = event.touches[0]\n startX = pageX\n startY = pageY\n startTime = art.currentTime\n }\n }\n\n const onTouchMove = (event) => {\n if (event.touches.length === 1 && isDragging && art.duration) {\n const { pageX, pageY } = event.touches[0]\n const direction = GetSlideDirection(startX, startY, pageX, pageY)\n const isHorizontal = [3, 4].includes(direction)\n const isVertical = [1, 2].includes(direction)\n const isLegal = (isHorizontal && !art.isRotate) || (isVertical && art.isRotate)\n if (isLegal) {\n const ratioX = clamp((pageX - startX) / art.width, -1, 1)\n const ratioY = clamp((pageY - startY) / art.height, -1, 1)\n const ratio = art.isRotate ? ratioY : ratioX\n const TOUCH_MOVE_RATIO = touchTarget === $video ? art.constructor.TOUCH_MOVE_RATIO : 1\n const currentTime = clamp(startTime + art.duration * ratio * TOUCH_MOVE_RATIO, 0, art.duration)\n art.seek = currentTime\n art.emit('setBar', 'played', clamp(currentTime / art.duration, 0, 1), event)\n art.notice.show = `${secondToTime(currentTime)} / ${secondToTime(art.duration)}`\n }\n }\n }\n\n const onTouchEnd = () => {\n if (isDragging) {\n startX = 0\n startY = 0\n startTime = 0\n isDragging = false\n touchTarget = null\n }\n }\n\n if (art.option.gesture) {\n events.proxy($video, 'touchstart', (event) => {\n touchTarget = $video\n onTouchStart(event)\n })\n events.proxy($video, 'touchmove', onTouchMove)\n }\n\n events.proxy($progress, 'touchstart', (event) => {\n touchTarget = $progress\n onTouchStart(event)\n })\n\n events.proxy($progress, 'touchmove', onTouchMove)\n art.on('document:touchend', onTouchEnd)\n }\n}\n","export default function globalInit(art, events) {\n const documentEvents = [\n 'click',\n 'mouseup',\n 'keydown',\n 'touchend',\n 'touchmove',\n 'mousemove',\n 'contextmenu',\n 'webkitfullscreenchange',\n ]\n\n const windowEvents = [\n 'resize',\n 'scroll',\n 'orientationchange',\n ]\n\n const destroyEvents = []\n\n function bindGlobalEvents(source = {}) {\n for (let index = 0; index < destroyEvents.length; index++) {\n events.remove(destroyEvents[index])\n }\n\n destroyEvents.length = 0\n\n const { $player } = art.template\n\n documentEvents.forEach((name) => {\n const doc = source.document || $player.ownerDocument || document\n const destroy = events.proxy(doc, name, (event) => {\n art.emit(`document:${name}`, event)\n })\n destroyEvents.push(destroy)\n })\n\n windowEvents.forEach((name) => {\n const win = source.window || $player.ownerDocument?.defaultView || window\n const destroy = events.proxy(win, name, (event) => {\n art.emit(`window:${name}`, event)\n })\n destroyEvents.push(destroy)\n })\n }\n\n bindGlobalEvents()\n events.bindGlobalEvents = bindGlobalEvents\n}\n","import { addClass, removeClass } from '../utils'\n\nexport default function hoverInit(art, events) {\n const { $player } = art.template\n\n events.hover(\n $player,\n (event) => {\n addClass($player, 'art-hover')\n art.emit('hover', true, event)\n },\n (event) => {\n removeClass($player, 'art-hover')\n art.emit('hover', false, event)\n },\n )\n}\n","export default function moveInit(art, events) {\n const { $player } = art.template\n\n events.proxy($player, 'mousemove', (event) => {\n art.emit('mousemove', event)\n })\n}\n","import { debounce } from '../utils'\n\nexport default function resizeInit(art, events) {\n const { option, constructor } = art\n\n art.on('resize', () => {\n const { aspectRatio, notice } = art\n if (art.state === 'standard' && option.autoSize) {\n art.autoSize()\n }\n art.aspectRatio = aspectRatio\n notice.show = ''\n })\n\n const resizeFn = debounce(() => art.emit('resize'), constructor.RESIZE_TIME)\n\n art.on('window:orientationchange', () => resizeFn())\n art.on('window:resize', () => resizeFn())\n\n if (screen && screen.orientation && screen.orientation.onchange) {\n events.proxy(screen.orientation, 'change', () => resizeFn())\n }\n}\n","export default function updateInit(art) {\n if (art.constructor.USE_RAF) {\n let timer = null;\n\n (function update() {\n if (art.playing) {\n art.emit('raf')\n }\n\n if (!art.isDestroy) {\n timer = requestAnimationFrame(update)\n }\n })()\n\n art.on('destroy', () => {\n cancelAnimationFrame(timer)\n })\n }\n}\n","import { isInViewport, throttle } from '../utils'\n\nexport default function viewInit(art) {\n const {\n option,\n constructor,\n template: { $container },\n } = art\n\n const scrollFn = throttle(() => {\n art.emit('view', isInViewport($container, constructor.SCROLL_GAP))\n }, constructor.SCROLL_TIME)\n\n art.on('window:scroll', () => scrollFn())\n\n art.on('view', (state) => {\n if (option.autoMini) {\n art.mini = !state\n }\n })\n}\n","import { isMobile } from './utils'\n\nexport default class Hotkey {\n constructor(art) {\n this.art = art\n this.keys = {}\n\n if (art.option.hotkey && !isMobile) {\n this.init()\n }\n }\n\n init() {\n const { constructor } = this.art\n\n this.add('Escape', () => {\n if (this.art.fullscreenWeb) {\n this.art.fullscreenWeb = false\n }\n })\n\n this.add('Space', () => {\n this.art.toggle()\n })\n\n this.add('ArrowLeft', () => {\n this.art.backward = constructor.SEEK_STEP\n })\n\n this.add('ArrowUp', () => {\n this.art.volume += constructor.VOLUME_STEP\n })\n\n this.add('ArrowRight', () => {\n this.art.forward = constructor.SEEK_STEP\n })\n\n this.add('ArrowDown', () => {\n this.art.volume -= constructor.VOLUME_STEP\n })\n\n this.art.on('document:keydown', (event) => {\n if (this.art.isFocus) {\n const tag = document.activeElement.tagName.toUpperCase()\n const editable = document.activeElement.getAttribute('contenteditable')\n if (\n tag !== 'INPUT'\n && tag !== 'TEXTAREA'\n && editable !== ''\n && editable !== 'true'\n && !event.altKey\n && !event.ctrlKey\n && !event.metaKey\n && !event.shiftKey\n ) {\n const events = this.keys[event.code]\n if (events) {\n event.preventDefault()\n for (let index = 0; index < events.length; index++) {\n events[index].call(this.art, event)\n }\n this.art.emit('hotkey', event)\n }\n }\n }\n this.art.emit('keydown', event)\n })\n }\n\n add(key, event) {\n if (this.keys[key]) {\n this.keys[key].push(event)\n }\n else {\n this.keys[key] = [event]\n }\n return this\n }\n\n remove(key, event) {\n if (this.keys[key]) {\n const index = this.keys[key].indexOf(event)\n if (index !== -1) {\n this.keys[key].splice(index, 1)\n }\n }\n return this\n }\n}\n","import { mergeDeep } from '../utils'\nimport zhCn from './zh-cn'\n\nexport default class I18n {\n constructor(art) {\n this.art = art\n\n this.languages = {\n 'zh-cn': zhCn,\n }\n\n this.language = {}\n\n this.update(art.option.i18n)\n }\n\n init() {\n const lang = this.art.option.lang.toLowerCase()\n this.language = this.languages[lang] || {}\n }\n\n get(key) {\n return this.language[key] || key\n }\n\n update(value) {\n this.languages = mergeDeep(this.languages, value)\n this.init()\n }\n}\n","const zhCn = {\n 'Video Info': '统计信息',\n 'Close': '关闭',\n 'Video Load Failed': '加载失败',\n 'Volume': '音量',\n 'Play': '播放',\n 'Pause': '暂停',\n 'Rate': '速度',\n 'Mute': '静音',\n 'Video Flip': '画面翻转',\n 'Horizontal': '水平',\n 'Vertical': '垂直',\n 'Reconnect': '重新连接',\n 'Show Setting': '显示设置',\n 'Hide Setting': '隐藏设置',\n 'Screenshot': '截图',\n 'Play Speed': '播放速度',\n 'Aspect Ratio': '画面比例',\n 'Default': '默认',\n 'Normal': '正常',\n 'Open': '打开',\n 'Switch Video': '切换',\n 'Switch Subtitle': '切换字幕',\n 'Fullscreen': '全屏',\n 'Exit Fullscreen': '退出全屏',\n 'Web Fullscreen': '网页全屏',\n 'Exit Web Fullscreen': '退出网页全屏',\n 'Mini Player': '迷你播放器',\n 'PIP Mode': '开启画中画',\n 'Exit PIP Mode': '退出画中画',\n 'PIP Not Supported': '不支持画中画',\n 'Fullscreen Not Supported': '不支持全屏',\n 'Subtitle Offset': '字幕偏移',\n 'Last Seen': '上次看到',\n 'Jump Play': '跳转播放',\n 'AirPlay': '隔空播放',\n 'AirPlay Not Available': '隔空播放不可用',\n}\n\nexport default zhCn\n\nif (typeof window !== 'undefined') {\n window['artplayer-i18n-zh-cn'] = zhCn\n}\n","import airplay from 'bundle-text:./airplay.svg'\nimport arrowLeft from 'bundle-text:./arrow-left.svg'\nimport arrowRight from 'bundle-text:./arrow-right.svg'\nimport aspectRatio from 'bundle-text:./aspect-ratio.svg'\nimport check from 'bundle-text:./check.svg'\nimport close from 'bundle-text:./close.svg'\nimport config from 'bundle-text:./config.svg'\nimport error from 'bundle-text:./error.svg'\nimport flip from 'bundle-text:./flip.svg'\nimport fullscreenOff from 'bundle-text:./fullscreen-off.svg'\nimport fullscreenOn from 'bundle-text:./fullscreen-on.svg'\nimport fullscreenWebOff from 'bundle-text:./fullscreen-web-off.svg'\nimport fullscreenWebOn from 'bundle-text:./fullscreen-web-on.svg'\nimport loading from 'bundle-text:./loading.svg'\nimport lock from 'bundle-text:./lock.svg'\nimport pause from 'bundle-text:./pause.svg'\nimport pip from 'bundle-text:./pip.svg'\nimport play from 'bundle-text:./play.svg'\nimport playbackRate from 'bundle-text:./playback-rate.svg'\nimport screenshot from 'bundle-text:./screenshot.svg'\nimport setting from 'bundle-text:./setting.svg'\nimport state from 'bundle-text:./state.svg'\nimport switchOff from 'bundle-text:./switch-off.svg'\nimport switchOn from 'bundle-text:./switch-on.svg'\nimport unlock from 'bundle-text:./unlock.svg'\nimport volumeClose from 'bundle-text:./volume-close.svg'\nimport volume from 'bundle-text:./volume.svg'\nimport { def, getIcon } from '../utils'\n\nexport default class Icons {\n constructor(art) {\n const icons = {\n loading,\n state,\n play,\n pause,\n check,\n volume,\n volumeClose,\n screenshot,\n setting,\n pip,\n arrowLeft,\n arrowRight,\n playbackRate,\n aspectRatio,\n config,\n lock,\n flip,\n unlock,\n fullscreenOff,\n fullscreenOn,\n fullscreenWebOff,\n fullscreenWebOn,\n switchOn,\n switchOff,\n error,\n close,\n airplay,\n ...art.option.icons,\n }\n\n for (const key in icons) {\n def(this, key, {\n get: () => getIcon(key, icons[key]),\n })\n }\n }\n}\n","module.exports = \"03c31e9143780a40\";","module.exports = \"74dce3541179f967\";","module.exports = \"8df370b72b9ce75f\";","module.exports = \"9207cd0eefb6c3b0\";","module.exports = \"8320911dd871be8e\";","module.exports = \"c365b437797da954\";","module.exports = \"981fa83d570f6239\";","module.exports = \"17beb71b176d778b\";","module.exports = \"9b20f336c2ff900a\";","module.exports = \"eedf0c211f991bc9\";","module.exports = \"4a2b0202fbc32b00\";","module.exports = \"c556a98869f28ec5\";","module.exports = \"fc44851dd02a8dc1\";","module.exports = \"aa8eeafb643c0fb7\";","module.exports = \"1df3ee8832ad226d\";","module.exports = \"a2f9bb742b2bbf38\";","module.exports = \"77d09cc9a0322b33\";","module.exports = \"513dae040a8d41cb\";","module.exports = \"6467fbfcb935904d\";","module.exports = \"c1e7234a8e79af58\";","module.exports = \"b1d5511484622de7\";","module.exports = \"be840883705461e0\";","module.exports = \"0a752309eead1e5d\";","module.exports = \"38cc3eae123fb63a\";","module.exports = \"089b16a857ca7f39\";","module.exports = \"a9d4f893c7212a37\";","module.exports = \"1eb0913cc1dcf524\";","import { isMobile, queryAll } from './utils'\nimport Component from './utils/component'\n\nexport default class Info extends Component {\n constructor(art) {\n super(art)\n this.name = 'info'\n\n if (!isMobile) {\n this.init()\n }\n }\n\n init() {\n const {\n proxy,\n constructor,\n template: { $infoPanel, $infoClose, $video },\n } = this.art\n\n proxy($infoClose, 'click', () => {\n this.show = false\n })\n\n let timer = null\n const $types = queryAll('[data-video]', $infoPanel) || []\n this.art.on('destroy', () => clearTimeout(timer))\n\n function loop() {\n for (let index = 0; index < $types.length; index++) {\n const item = $types[index]\n const value = $video[item.dataset.video]\n const textContent = typeof value === 'number' ? value.toFixed(2) : value\n if (item.textContent !== textContent) {\n item.textContent = textContent\n }\n }\n timer = setTimeout(loop, constructor.INFO_LOOP_TIME)\n }\n\n loop()\n }\n}\n","import Component from './utils/component'\n\nexport default class Layer extends Component {\n constructor(art) {\n super(art)\n\n const {\n option,\n template: { $layer },\n } = art\n\n this.name = 'layer'\n this.$parent = $layer\n\n for (let index = 0; index < option.layers.length; index++) {\n this.add(option.layers[index])\n }\n }\n}\n","import { append } from './utils'\nimport Component from './utils/component'\n\nexport default class Loading extends Component {\n constructor(art) {\n super(art)\n this.name = 'loading'\n append(art.template.$loading, art.icons.loading)\n }\n}\n","import { append, setStyle } from './utils'\nimport Component from './utils/component'\n\nexport default class Mask extends Component {\n constructor(art) {\n super(art)\n\n this.name = 'mask'\n const { template, icons, events } = art\n\n const $state = append(template.$state, icons.state)\n const $error = append(template.$state, icons.error)\n\n setStyle($error, 'display', 'none')\n\n art.on('destroy', () => {\n setStyle($state, 'display', 'none')\n setStyle($error, 'display', null)\n })\n\n events.proxy(template.$state, 'click', () => art.play())\n }\n}\n","import { addClass, removeClass } from './utils'\n\nexport default class Notice {\n constructor(art) {\n this.art = art\n this.timer = null\n }\n\n set show(msg) {\n const {\n constructor,\n template: { $player, $noticeInner },\n } = this.art\n\n if (msg) {\n $noticeInner.textContent = msg instanceof Error ? msg.message.trim() : msg\n addClass($player, 'art-notice-show')\n clearTimeout(this.timer)\n this.timer = setTimeout(() => {\n $noticeInner.textContent = ''\n removeClass($player, 'art-notice-show')\n }, constructor.NOTICE_TIME)\n }\n else {\n removeClass($player, 'art-notice-show')\n }\n }\n\n get show() {\n const {\n template: { $player },\n } = this.art\n return $player.classList.contains('art-notice-show')\n }\n}\n","import airplayMix from './airplayMix'\nimport aspectRatioMix from './aspectRatioMix'\nimport attrMix from './attrMix'\nimport autoHeightMix from './autoHeightMix'\nimport autoSizeMix from './autoSizeMix'\nimport cssVarMix from './cssVarMix'\nimport currentTimeMix from './currentTimeMix'\nimport durationMix from './durationMix'\nimport eventInit from './eventInit'\nimport flipMix from './flipMix'\nimport fullscreenMix from './fullscreenMix'\nimport fullscreenWebMix from './fullscreenWebMix'\nimport loadedMix from './loadedMix'\nimport miniMix from './miniMix'\nimport optionInit from './optionInit'\nimport pauseMix from './pauseMix'\nimport pipMix from './pipMix'\nimport playbackRateMix from './playbackRateMix'\nimport playedMix from './playedMix'\nimport playingMix from './playingMix'\nimport playMix from './playMix'\nimport posterMix from './posterMix'\nimport qualityMix from './qualityMix'\nimport rectMix from './rectMix'\nimport screenshotMix from './screenshotMix'\nimport seekMix from './seekMix'\nimport stateMix from './stateMix'\nimport subtitleOffsetMix from './subtitleOffsetMix'\nimport switchMix from './switchMix'\nimport themeMix from './themeMix'\nimport thumbnailsMix from './thumbnailsMix'\nimport toggleMix from './toggleMix'\nimport typeMix from './typeMix'\nimport urlMix from './urlMix'\nimport volumeMix from './volumeMix'\n\nexport default class Player {\n constructor(art) {\n urlMix(art)\n attrMix(art)\n playMix(art)\n pauseMix(art)\n toggleMix(art)\n seekMix(art)\n volumeMix(art)\n currentTimeMix(art)\n durationMix(art)\n switchMix(art)\n playbackRateMix(art)\n aspectRatioMix(art)\n screenshotMix(art)\n fullscreenMix(art)\n fullscreenWebMix(art)\n pipMix(art)\n loadedMix(art)\n playedMix(art)\n playingMix(art)\n autoSizeMix(art)\n rectMix(art)\n flipMix(art)\n miniMix(art)\n posterMix(art)\n autoHeightMix(art)\n cssVarMix(art)\n themeMix(art)\n typeMix(art)\n stateMix(art)\n subtitleOffsetMix(art)\n airplayMix(art)\n qualityMix(art)\n thumbnailsMix(art)\n eventInit(art)\n optionInit(art)\n }\n}\n","import { def } from '../utils'\n\nexport default function airplayMix(art) {\n const {\n i18n,\n notice,\n proxy,\n template: { $video },\n } = art\n\n let available = true\n\n if (window.WebKitPlaybackTargetAvailabilityEvent && $video.webkitShowPlaybackTargetPicker) {\n proxy($video, 'webkitplaybacktargetavailabilitychanged', (event) => {\n switch (event.availability) {\n case 'available':\n available = true\n break\n case 'not-available':\n available = false\n break\n }\n })\n }\n else {\n available = false\n }\n\n def(art, 'airplay', {\n value() {\n if (available) {\n $video.webkitShowPlaybackTargetPicker()\n art.emit('airplay')\n }\n else {\n notice.show = i18n.get('AirPlay Not Available')\n }\n },\n })\n}\n","import { def, setStyle } from '../utils'\n\nexport default function aspectRatioMix(art) {\n const {\n i18n,\n notice,\n template: { $video, $player },\n } = art\n\n def(art, 'aspectRatio', {\n get() {\n return $player.dataset.aspectRatio || 'default'\n },\n set(ratio) {\n if (!ratio)\n ratio = 'default'\n if (ratio === 'default') {\n setStyle($video, 'width', null)\n setStyle($video, 'height', null)\n setStyle($video, 'margin', null)\n delete $player.dataset.aspectRatio\n }\n else {\n const ratioArray = ratio.split(':').map(Number)\n const { clientWidth, clientHeight } = $player\n const playerRatio = clientWidth / clientHeight\n const setupRatio = ratioArray[0] / ratioArray[1]\n\n if (playerRatio > setupRatio) {\n setStyle($video, 'width', `${setupRatio * clientHeight}px`)\n setStyle($video, 'height', '100%')\n setStyle($video, 'margin', '0 auto')\n }\n else {\n setStyle($video, 'width', '100%')\n setStyle($video, 'height', `${clientWidth / setupRatio}px`)\n setStyle($video, 'margin', 'auto 0')\n }\n\n $player.dataset.aspectRatio = ratio\n }\n\n notice.show = `${i18n.get('Aspect Ratio')}: ${ratio === 'default' ? i18n.get('Default') : ratio}`\n art.emit('aspectRatio', ratio)\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function attrMix(art) {\n const {\n template: { $video },\n } = art\n\n def(art, 'attr', {\n value(key, value) {\n if (value === undefined)\n return $video[key]\n $video[key] = value\n },\n })\n}\n","import { def, setStyle } from '../utils'\n\nexport default function autoHeightMix(art) {\n const {\n template: { $container, $video },\n } = art\n\n def(art, 'autoHeight', {\n value() {\n const { clientWidth } = $container\n const { videoHeight, videoWidth } = $video\n const height = videoHeight * (clientWidth / videoWidth)\n setStyle($container, 'height', `${height}px`)\n art.emit('autoHeight', height)\n },\n })\n}\n","import { def, getRect, setStyle } from '../utils'\n\nexport default function autoSizeMix(art) {\n const { $container, $player, $video } = art.template\n\n def(art, 'autoSize', {\n value() {\n const { videoWidth, videoHeight } = $video\n const { width, height } = getRect($container)\n const videoRatio = videoWidth / videoHeight\n const containerRatio = width / height\n if (containerRatio > videoRatio) {\n const percentage = ((height * videoRatio) / width) * 100\n setStyle($player, 'width', `${percentage}%`)\n setStyle($player, 'height', '100%')\n }\n else {\n const percentage = (width / videoRatio / height) * 100\n setStyle($player, 'width', '100%')\n setStyle($player, 'height', `${percentage}%`)\n }\n art.emit('autoSize', {\n width: art.width,\n height: art.height,\n })\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function cssVarMix(art) {\n const { $player } = art.template\n\n def(art, 'cssVar', {\n value(key, value) {\n if (value) {\n return $player.style.setProperty(key, value)\n }\n else {\n return getComputedStyle($player).getPropertyValue(key)\n }\n },\n })\n}\n","import { clamp, def } from '../utils'\n\nexport default function currentTimeMix(art) {\n const { $video } = art.template\n\n def(art, 'currentTime', {\n get: () => $video.currentTime || 0,\n set: (time) => {\n time = Number.parseFloat(time)\n if (Number.isNaN(time))\n return\n $video.currentTime = clamp(time, 0, art.duration)\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function durationMix(art) {\n def(art, 'duration', {\n get: () => {\n const { duration } = art.template.$video\n if (duration === Infinity)\n return 0\n return duration || 0\n },\n })\n}\n","import config from '../config'\nimport { addClass, isMobile, setStyle, sleep } from '../utils'\n\nexport default function eventInit(art) {\n const {\n i18n,\n notice,\n option,\n constructor,\n proxy,\n template: { $player, $video, $poster },\n } = art\n\n let reconnectTime = 0\n\n for (let index = 0; index < config.events.length; index++) {\n proxy($video, config.events[index], (event) => {\n art.emit(`video:${event.type}`, event)\n })\n }\n\n // art.on('video:abort', () => {\n\n // });\n\n art.on('video:canplay', () => {\n reconnectTime = 0\n art.loading.show = false\n })\n\n art.once('video:canplay', () => {\n art.loading.show = false\n art.controls.show = true\n art.mask.show = true\n art.isReady = true\n art.emit('ready')\n })\n\n // art.on('video:canplaythrough', () => {\n\n // });\n\n // art.on('video:durationchange', () => {\n\n // });\n\n // art.on('video:emptied', () => {\n\n // });\n\n art.on('video:ended', () => {\n if (option.loop) {\n art.seek = 0\n art.play()\n art.controls.show = false\n art.mask.show = false\n }\n else {\n art.controls.show = true\n art.mask.show = true\n }\n })\n\n art.on('video:error', async (error) => {\n if (reconnectTime < constructor.RECONNECT_TIME_MAX) {\n await sleep(constructor.RECONNECT_SLEEP_TIME)\n reconnectTime += 1\n art.url = option.url\n notice.show = `${i18n.get('Reconnect')}: ${reconnectTime}`\n art.emit('error', error, reconnectTime)\n }\n else {\n art.mask.show = true\n art.loading.show = false\n art.controls.show = true\n addClass($player, 'art-error')\n await sleep(constructor.RECONNECT_SLEEP_TIME)\n notice.show = i18n.get('Video Load Failed')\n }\n })\n\n // art.on('video:loadeddata', () => {\n\n // });\n\n art.on('video:loadedmetadata', () => {\n art.emit('resize')\n if (isMobile) {\n art.loading.show = false\n art.controls.show = true\n art.mask.show = true\n }\n })\n\n art.on('video:loadstart', () => {\n art.loading.show = true\n art.mask.show = false\n art.controls.show = true\n })\n\n art.on('video:pause', () => {\n art.controls.show = true\n art.mask.show = true\n })\n\n art.on('video:play', () => {\n art.mask.show = false\n setStyle($poster, 'display', 'none')\n })\n\n art.on('video:playing', () => {\n art.mask.show = false\n })\n\n art.on('video:progress', () => {\n if (art.playing) {\n art.loading.show = false\n }\n })\n\n // art.on('video:ratechange', () => {\n\n // });\n\n art.on('video:seeked', () => {\n art.loading.show = false\n art.mask.show = true\n })\n\n art.on('video:seeking', () => {\n art.loading.show = true\n art.mask.show = false\n })\n\n // art.on('video:stalled', () => {\n\n // });\n\n // art.on('video:suspend', () => {\n\n // });\n\n art.on('video:timeupdate', () => {\n art.mask.show = false\n })\n\n // art.on('video:volumechange', () => {\n\n // });\n\n art.on('video:waiting', () => {\n art.loading.show = true\n art.mask.show = false\n })\n}\n","import { capitalize, def } from '../utils'\n\nexport default function flipMix(art) {\n const {\n template: { $player },\n i18n,\n notice,\n } = art\n\n def(art, 'flip', {\n get() {\n return $player.dataset.flip || 'normal'\n },\n set(flip) {\n if (!flip)\n flip = 'normal'\n if (flip === 'normal') {\n delete $player.dataset.flip\n }\n else {\n $player.dataset.flip = flip\n }\n\n notice.show = `${i18n.get('Video Flip')}: ${i18n.get(capitalize(flip))}`\n art.emit('flip', flip)\n },\n })\n}\n","import screenfull from '../libs/screenfull'\nimport { addClass, def, get, removeClass } from '../utils'\n\nexport default function fullscreenMix(art) {\n const {\n i18n,\n notice,\n template: { $video, $player },\n } = art\n\n const nativeScreenfull = (art) => {\n screenfull.on('change', () => {\n art.emit('fullscreen', screenfull.isFullscreen)\n\n if (screenfull.isFullscreen) {\n art.state = 'fullscreen'\n addClass($player, 'art-fullscreen')\n }\n else {\n removeClass($player, 'art-fullscreen')\n }\n\n art.emit('resize')\n })\n\n screenfull.on('error', (event) => {\n art.emit('fullscreenError', event)\n })\n\n def(art, 'fullscreen', {\n get() {\n return screenfull.isFullscreen\n },\n async set(value) {\n if (value) {\n await screenfull.request($player)\n }\n else {\n await screenfull.exit()\n }\n },\n })\n }\n\n const webkitScreenfull = (art) => {\n art.on('document:webkitfullscreenchange', () => {\n art.emit('fullscreen', art.fullscreen)\n art.emit('resize')\n })\n\n def(art, 'fullscreen', {\n get() {\n return document.fullscreenElement === $video\n },\n set(value) {\n if (value) {\n art.state = 'fullscreen'\n $video.webkitEnterFullscreen()\n }\n else {\n $video.webkitExitFullscreen()\n }\n },\n })\n }\n\n art.once('video:loadedmetadata', () => {\n if (screenfull.isEnabled) {\n nativeScreenfull(art)\n }\n else if ($video.webkitSupportsFullscreen) {\n webkitScreenfull(art)\n }\n else {\n def(art, 'fullscreen', {\n get() {\n return false\n },\n set() {\n notice.show = i18n.get('Fullscreen Not Supported')\n },\n })\n }\n\n // Asynchronous setting\n def(art, 'fullscreen', get(art, 'fullscreen'))\n })\n}\n","const methodMap = [\n [\n 'requestFullscreen',\n 'exitFullscreen',\n 'fullscreenElement',\n 'fullscreenEnabled',\n 'fullscreenchange',\n 'fullscreenerror',\n ],\n // New WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror',\n ],\n // Old WebKit\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror',\n ],\n [\n 'mozRequestFullScreen',\n 'mozCancelFullScreen',\n 'mozFullScreenElement',\n 'mozFullScreenEnabled',\n 'mozfullscreenchange',\n 'mozfullscreenerror',\n ],\n [\n 'msRequestFullscreen',\n 'msExitFullscreen',\n 'msFullscreenElement',\n 'msFullscreenEnabled',\n 'MSFullscreenChange',\n 'MSFullscreenError',\n ],\n]\n\nconst nativeAPI = (() => {\n if (typeof document === 'undefined') {\n return false\n }\n\n const unprefixedMethods = methodMap[0]\n const returnValue = {}\n\n for (const methodList of methodMap) {\n const exitFullscreenMethod = methodList[1]\n if (exitFullscreenMethod in document) {\n for (const [index, method] of methodList.entries()) {\n returnValue[unprefixedMethods[index]] = method\n }\n\n return returnValue\n }\n }\n\n return false\n})()\n\nconst eventNameMap = {\n change: nativeAPI.fullscreenchange,\n error: nativeAPI.fullscreenerror,\n}\n\nconst screenfull = {\n request(element = document.documentElement, options) {\n return new Promise((resolve, reject) => {\n const onFullScreenEntered = () => {\n screenfull.off('change', onFullScreenEntered)\n resolve()\n }\n\n screenfull.on('change', onFullScreenEntered)\n\n const returnPromise = element[nativeAPI.requestFullscreen](options)\n\n if (returnPromise instanceof Promise) {\n returnPromise.then(onFullScreenEntered).catch(reject)\n }\n })\n },\n exit() {\n return new Promise((resolve, reject) => {\n if (!screenfull.isFullscreen) {\n resolve()\n return\n }\n\n const onFullScreenExit = () => {\n screenfull.off('change', onFullScreenExit)\n resolve()\n }\n\n screenfull.on('change', onFullScreenExit)\n\n const returnPromise = document[nativeAPI.exitFullscreen]()\n\n if (returnPromise instanceof Promise) {\n returnPromise.then(onFullScreenExit).catch(reject)\n }\n })\n },\n toggle(element, options) {\n return screenfull.isFullscreen ? screenfull.exit() : screenfull.request(element, options)\n },\n onchange(callback) {\n screenfull.on('change', callback)\n },\n onerror(callback) {\n screenfull.on('error', callback)\n },\n on(event, callback) {\n const eventName = eventNameMap[event]\n if (eventName) {\n document.addEventListener(eventName, callback, false)\n }\n },\n off(event, callback) {\n const eventName = eventNameMap[event]\n if (eventName) {\n document.removeEventListener(eventName, callback, false)\n }\n },\n raw: nativeAPI,\n}\n\nObject.defineProperties(screenfull, {\n isFullscreen: {\n get: () => Boolean(document[nativeAPI.fullscreenElement]),\n },\n element: {\n enumerable: true,\n get: () => document[nativeAPI.fullscreenElement],\n },\n isEnabled: {\n enumerable: true,\n get: () => Boolean(document[nativeAPI.fullscreenEnabled]),\n },\n})\n\nif (!nativeAPI) {\n screenfull.isEnabled = false\n}\n\nexport default screenfull\n","import { addClass, append, def, hasClass, removeClass, setStyle } from '../utils'\n\nexport default function fullscreenWebMix(art) {\n const {\n constructor,\n template: { $container, $player },\n } = art\n\n let cssText = ''\n def(art, 'fullscreenWeb', {\n get() {\n return hasClass($player, 'art-fullscreen-web')\n },\n set(value) {\n if (value) {\n cssText = $player.style.cssText\n if (constructor.FULLSCREEN_WEB_IN_BODY) {\n append(document.body, $player)\n }\n art.state = 'fullscreenWeb'\n setStyle($player, 'width', '100%')\n setStyle($player, 'height', '100%')\n addClass($player, 'art-fullscreen-web')\n art.emit('fullscreenWeb', true)\n }\n else {\n if (constructor.FULLSCREEN_WEB_IN_BODY) {\n append($container, $player)\n }\n if (cssText) {\n $player.style.cssText = cssText\n cssText = ''\n }\n removeClass($player, 'art-fullscreen-web')\n art.emit('fullscreenWeb', false)\n }\n\n art.emit('resize')\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function loadedMix(art) {\n const { $video } = art.template\n\n def(art, 'loaded', {\n get: () => art.loadedTime / $video.duration,\n })\n\n def(art, 'loadedTime', {\n get: () => {\n return $video.buffered.length ? $video.buffered.end($video.buffered.length - 1) : 0\n },\n })\n}\n","import { addClass, append, createElement, def, getRect, hasClass, isInViewport, removeClass, setStyle } from '../utils'\n\nexport default function miniMix(art) {\n const {\n icons,\n proxy,\n storage,\n template: { $player, $video },\n } = art\n\n let isDragging = false\n let lastPageX = 0\n let lastPageY = 0\n\n function hideMini() {\n const { $mini } = art.template\n if ($mini) {\n removeClass($player, 'art-mini')\n setStyle($mini, 'display', 'none')\n $player.prepend($video)\n art.emit('mini', false)\n }\n }\n\n function initState($play, $pause) {\n if (art.playing) {\n setStyle($play, 'display', `none`)\n setStyle($pause, 'display', `flex`)\n }\n else {\n setStyle($play, 'display', `flex`)\n setStyle($pause, 'display', `none`)\n }\n }\n\n function createMini() {\n const { $mini } = art.template\n if ($mini) {\n append($mini, $video)\n return setStyle($mini, 'display', 'flex')\n }\n else {\n const $mini = createElement('div')\n addClass($mini, 'art-mini-popup')\n append(document.body, $mini)\n art.template.$mini = $mini\n append($mini, $video)\n\n const $close = append($mini, `
`)\n append($close, icons.close)\n proxy($close, 'click', hideMini)\n\n const $state = append($mini, `
`)\n const $play = append($state, icons.play)\n const $pause = append($state, icons.pause)\n proxy($play, 'click', () => art.play())\n proxy($pause, 'click', () => art.pause())\n initState($play, $pause)\n art.on('video:playing', () => initState($play, $pause))\n art.on('video:pause', () => initState($play, $pause))\n art.on('video:timeupdate', () => initState($play, $pause))\n\n proxy($mini, 'mousedown', (event) => {\n isDragging = event.button === 0\n lastPageX = event.pageX\n lastPageY = event.pageY\n })\n\n art.on('document:mousemove', (event) => {\n if (isDragging) {\n addClass($mini, 'art-mini-dragging')\n const x = event.pageX - lastPageX\n const y = event.pageY - lastPageY\n setStyle($mini, 'transform', `translate(${x}px, ${y}px)`)\n }\n })\n\n art.on('document:mouseup', () => {\n if (isDragging) {\n isDragging = false\n removeClass($mini, 'art-mini-dragging')\n const rect = getRect($mini)\n storage.set('left', rect.left)\n storage.set('top', rect.top)\n setStyle($mini, 'left', `${rect.left}px`)\n setStyle($mini, 'top', `${rect.top}px`)\n setStyle($mini, 'transform', null)\n }\n })\n\n return $mini\n }\n }\n\n function initMini() {\n const { $mini } = art.template\n const rect = getRect($mini)\n const top = window.innerHeight - rect.height - 50\n const left = window.innerWidth - rect.width - 50\n storage.set('top', top)\n storage.set('left', left)\n setStyle($mini, 'top', `${top}px`)\n setStyle($mini, 'left', `${left}px`)\n }\n\n def(art, 'mini', {\n get() {\n return hasClass($player, 'art-mini')\n },\n set(value) {\n if (value) {\n art.state = 'mini'\n addClass($player, 'art-mini')\n const $mini = createMini()\n const top = storage.get('top')\n const left = storage.get('left')\n if (typeof top === 'number' && typeof left === 'number') {\n setStyle($mini, 'top', `${top}px`)\n setStyle($mini, 'left', `${left}px`)\n if (!isInViewport($mini)) {\n initMini()\n }\n }\n else {\n initMini()\n }\n art.emit('mini', true)\n }\n else {\n hideMini()\n }\n },\n })\n}\n","import { clamp, setStyle } from '../utils'\n\nexport default function optionInit(art) {\n const {\n option,\n storage,\n template: { $video, $poster },\n } = art\n\n for (const key in option.moreVideoAttr) {\n art.attr(key, option.moreVideoAttr[key])\n }\n\n if (option.muted) {\n art.muted = option.muted\n }\n\n if (option.volume) {\n $video.volume = clamp(option.volume, 0, 1)\n }\n\n const volumeStorage = storage.get('volume')\n if (typeof volumeStorage === 'number') {\n $video.volume = clamp(volumeStorage, 0, 1)\n }\n\n if (option.poster) {\n setStyle($poster, 'backgroundImage', `url(${option.poster})`)\n }\n\n if (option.autoplay) {\n $video.autoplay = option.autoplay\n }\n\n if (option.playsInline) {\n $video.playsInline = true\n $video['webkit-playsinline'] = true\n }\n\n if (option.theme) {\n option.cssVar['--art-theme'] = option.theme\n }\n\n for (const key in option.cssVar) {\n art.cssVar(key, option.cssVar[key])\n }\n\n art.url = option.url\n}\n","import { def } from '../utils'\n\nexport default function pauseMix(art) {\n const {\n template: { $video },\n i18n,\n notice,\n } = art\n\n def(art, 'pause', {\n value() {\n const result = $video.pause()\n notice.show = i18n.get('Pause')\n art.emit('pause')\n return result\n },\n })\n}\n","import { def } from '../utils'\n\nfunction nativePip(art) {\n const {\n template: { $video },\n proxy,\n notice,\n } = art\n\n $video.disablePictureInPicture = false\n\n def(art, 'pip', {\n get() {\n return document.pictureInPictureElement\n },\n set(value) {\n if (value) {\n art.state = 'pip'\n $video.requestPictureInPicture().catch((err) => {\n notice.show = err\n throw err\n })\n }\n else {\n document.exitPictureInPicture().catch((err) => {\n notice.show = err\n throw err\n })\n }\n },\n })\n\n proxy($video, 'enterpictureinpicture', () => {\n art.emit('pip', true)\n })\n\n proxy($video, 'leavepictureinpicture', () => {\n art.emit('pip', false)\n })\n}\n\nfunction webkitPip(art) {\n const { $video } = art.template\n\n $video.webkitSetPresentationMode('inline')\n\n def(art, 'pip', {\n get() {\n return $video.webkitPresentationMode === 'picture-in-picture'\n },\n set(value) {\n if (value) {\n art.state = 'pip'\n $video.webkitSetPresentationMode('picture-in-picture')\n art.emit('pip', true)\n }\n else {\n $video.webkitSetPresentationMode('inline')\n art.emit('pip', false)\n }\n },\n })\n}\n\nexport default function pipMix(art) {\n const {\n i18n,\n notice,\n template: { $video },\n } = art\n if (document.pictureInPictureEnabled) {\n nativePip(art)\n }\n else if ($video.webkitSupportsPresentationMode) {\n webkitPip(art)\n }\n else {\n def(art, 'pip', {\n get() {\n return false\n },\n set() {\n notice.show = i18n.get('PIP Not Supported')\n },\n })\n }\n}\n","import { def } from '../utils'\n\nexport default function playbackRateMix(art) {\n const {\n template: { $video },\n i18n,\n notice,\n } = art\n\n def(art, 'playbackRate', {\n get() {\n return $video.playbackRate\n },\n set(rate) {\n if (rate) {\n if (rate === $video.playbackRate)\n return\n $video.playbackRate = rate\n notice.show = `${i18n.get('Rate')}: ${rate === 1.0 ? i18n.get('Normal') : `${rate}x`}`\n }\n else {\n art.playbackRate = 1\n }\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function playedMix(art) {\n def(art, 'played', {\n get: () => art.currentTime / art.duration,\n })\n}\n","import { def } from '../utils'\n\nexport default function playingMix(art) {\n const { $video } = art.template\n def(art, 'playing', {\n get: () => {\n if (typeof $video.playing === 'boolean')\n return $video.playing\n return !!($video.currentTime > 0 && !$video.paused && !$video.ended && $video.readyState > 2)\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function playMix(art) {\n const {\n i18n,\n notice,\n option,\n constructor: { instances },\n template: { $video },\n } = art\n\n def(art, 'play', {\n async value() {\n const result = await $video.play()\n notice.show = i18n.get('Play')\n art.emit('play')\n\n if (option.mutex) {\n for (let index = 0; index < instances.length; index++) {\n const instance = instances[index]\n if (instance !== art) {\n instance.pause()\n }\n }\n }\n\n return result\n },\n })\n}\n","import { def, setStyle } from '../utils'\n\nexport default function posterMix(art) {\n const {\n template: { $poster },\n } = art\n\n def(art, 'poster', {\n get: () => {\n try {\n return $poster.style.backgroundImage.match(/\"(.*)\"/)[1]\n }\n catch {\n return ''\n }\n },\n set(url) {\n setStyle($poster, 'backgroundImage', `url(${url})`)\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function qualityMix(art) {\n def(art, 'quality', {\n set(quality) {\n const { controls, notice, i18n } = art\n const qualityDefault = quality.find(item => item.default) || quality[0]\n controls.update({\n name: 'quality',\n position: 'right',\n index: 10,\n style: {\n marginRight: '10px',\n },\n html: qualityDefault?.html || '',\n selector: quality,\n async onSelect(item) {\n await art.switchQuality(item.url)\n notice.show = `${i18n.get('Switch Video')}: ${item.html}`\n return item.html\n },\n })\n },\n })\n}\n","import { def, getRect } from '../utils'\n\nexport default function rectMix(art) {\n def(art, 'rect', {\n get: () => {\n return getRect(art.template.$player)\n },\n })\n\n const keys = ['bottom', 'height', 'left', 'right', 'top', 'width']\n for (let index = 0; index < keys.length; index++) {\n const key = keys[index]\n def(art, key, {\n get: () => {\n return art.rect[key]\n },\n })\n }\n\n def(art, 'x', {\n get: () => {\n return art.left + window.pageXOffset\n },\n })\n\n def(art, 'y', {\n get: () => {\n return art.top + window.pageYOffset\n },\n })\n}\n","import { createElement, def, download, secondToTime } from '../utils'\n\nexport default function screenshotMix(art) {\n const {\n notice,\n template: { $video },\n } = art\n\n const $canvas = createElement('canvas')\n\n def(art, 'getDataURL', {\n value: () =>\n new Promise((resolve, reject) => {\n try {\n $canvas.width = $video.videoWidth\n $canvas.height = $video.videoHeight\n $canvas.getContext('2d').drawImage($video, 0, 0)\n resolve($canvas.toDataURL('image/png'))\n }\n catch (err) {\n notice.show = err\n reject(err)\n }\n }),\n })\n\n def(art, 'getBlobUrl', {\n value: () =>\n new Promise((resolve, reject) => {\n try {\n $canvas.width = $video.videoWidth\n $canvas.height = $video.videoHeight\n $canvas.getContext('2d').drawImage($video, 0, 0)\n $canvas.toBlob((blob) => {\n resolve(URL.createObjectURL(blob))\n })\n }\n catch (err) {\n notice.show = err\n reject(err)\n }\n }),\n })\n\n def(art, 'screenshot', {\n value: async (name) => {\n const dataUri = await art.getDataURL()\n const fileName = name || `artplayer_${secondToTime($video.currentTime)}`\n download(dataUri, `${fileName}.png`)\n art.emit('screenshot', dataUri)\n return dataUri\n },\n })\n}\n","import { def, secondToTime } from '../utils'\n\nexport default function seekMix(art) {\n const { notice } = art\n\n def(art, 'seek', {\n set(time) {\n art.currentTime = time\n if (art.duration) {\n notice.show = `${secondToTime(art.currentTime)} / ${secondToTime(art.duration)}`\n }\n art.emit('seek', art.currentTime)\n },\n })\n\n def(art, 'forward', {\n set(time) {\n art.seek = art.currentTime + time\n },\n })\n\n def(art, 'backward', {\n set(time) {\n art.seek = art.currentTime - time\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function stateMix(art) {\n const states = ['mini', 'pip', 'fullscreen', 'fullscreenWeb']\n def(art, 'state', {\n get: () => states.find(name => art[name]) || 'standard',\n set(name) {\n for (let index = 0; index < states.length; index++) {\n const prop = states[index]\n if (prop !== name && art[prop]) {\n art[prop] = false\n }\n }\n },\n })\n}\n","import { clamp, def } from '../utils'\n\nexport default function subtitleOffsetMix(art) {\n const { notice, i18n, template } = art\n\n def(art, 'subtitleOffset', {\n get() {\n return template.$track?.offset || 0\n },\n set(value) {\n const { cues } = art.subtitle\n if (!template.$track || cues.length === 0)\n return\n const offset = clamp(value, -10, 10)\n template.$track.offset = offset\n for (let index = 0; index < cues.length; index++) {\n const cue = cues[index]\n cue.originalStartTime = cue.originalStartTime ?? cue.startTime\n cue.originalEndTime = cue.originalEndTime ?? cue.endTime\n cue.startTime = clamp(cue.originalStartTime + offset, 0, art.duration)\n cue.endTime = clamp(cue.originalEndTime + offset, 0, art.duration)\n }\n art.subtitle.update()\n notice.show = `${i18n.get('Subtitle Offset')}: ${value}s`\n art.emit('subtitleOffset', value)\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function switchMix(art) {\n function switchUrl(url, currentTime) {\n return new Promise((resolve, reject) => {\n if (url === art.url)\n return\n const { playing, aspectRatio, playbackRate } = art\n\n art.pause()\n art.url = url\n art.notice.show = ''\n\n art.once('video:error', reject)\n\n art.once('video:loadedmetadata', () => {\n art.currentTime = currentTime\n })\n\n art.once('video:canplay', async () => {\n art.playbackRate = playbackRate\n art.aspectRatio = aspectRatio\n\n if (playing) {\n await art.play()\n }\n\n art.notice.show = ''\n\n resolve()\n })\n })\n }\n\n def(art, 'switchQuality', {\n value: (url) => {\n return switchUrl(url, art.currentTime)\n },\n })\n\n def(art, 'switchUrl', {\n value: (url) => {\n return switchUrl(url, 0)\n },\n })\n\n def(art, 'switch', {\n set: art.switchUrl,\n })\n}\n","import { def } from '../utils'\n\nexport default function themeMix(art) {\n def(art, 'theme', {\n get() {\n return art.cssVar('--art-theme')\n },\n set(theme) {\n art.cssVar('--art-theme', theme)\n },\n })\n}\n","import { def, isMobile, loadImg, setStyle } from '../utils'\n\nexport default function thumbnailsMix(art) {\n const {\n events,\n option,\n template: { $progress, $video },\n } = art\n\n let timer = null\n let image = null\n let loading = false\n let isLoad = false\n let isHover = false\n\n function reset() {\n clearTimeout(timer)\n timer = null\n image = null\n loading = false\n isLoad = false\n }\n\n function showThumbnails(posWidth) {\n const $thumbnails = art.controls?.thumbnails\n if (!$thumbnails)\n return\n\n const { number, column, width, height, scale } = option.thumbnails\n const width2 = width * scale || image.naturalWidth / column\n const height2 = height * scale || width2 / ($video.videoWidth / $video.videoHeight)\n const perWidth = $progress.clientWidth / number\n const perIndex = Math.floor(posWidth / perWidth)\n const yIndex = Math.ceil(perIndex / column) - 1\n const xIndex = perIndex % column || column - 1\n setStyle($thumbnails, 'backgroundImage', `url(${image.src})`)\n setStyle($thumbnails, 'height', `${height2}px`)\n setStyle($thumbnails, 'width', `${width2}px`)\n setStyle($thumbnails, 'backgroundPosition', `-${xIndex * width2}px -${yIndex * height2}px`)\n if (posWidth <= width2 / 2) {\n setStyle($thumbnails, 'left', 0)\n }\n else if (posWidth > $progress.clientWidth - width2 / 2) {\n setStyle($thumbnails, 'left', `${$progress.clientWidth - width2}px`)\n }\n else {\n setStyle($thumbnails, 'left', `${posWidth - width2 / 2}px`)\n }\n }\n\n events.hover(\n $progress,\n () => {\n isHover = true\n },\n () => {\n isHover = false\n },\n )\n\n art.on('setBar', async (type, percentage, event) => {\n const $thumbnails = art.controls?.thumbnails\n const { url, scale } = option.thumbnails\n if (!$thumbnails || !url)\n return\n\n const isMobileDragging = type === 'played' && event && isMobile\n\n if (type === 'hover' || isMobileDragging) {\n if (!loading) {\n loading = true\n image = await loadImg(url, scale)\n isLoad = true\n }\n\n if (!isLoad || !isHover)\n return\n\n const width = $progress.clientWidth * percentage\n setStyle($thumbnails, 'display', 'flex')\n\n if (width > 0 && width < $progress.clientWidth) {\n showThumbnails(width)\n }\n else {\n if (!isMobile) {\n setStyle($thumbnails, 'display', 'none')\n }\n }\n\n if (isMobileDragging) {\n clearTimeout(timer)\n timer = setTimeout(() => {\n setStyle($thumbnails, 'display', 'none')\n }, 500)\n }\n }\n })\n\n def(art, 'thumbnails', {\n get() {\n return art.option.thumbnails\n },\n set(thumbnails) {\n if (thumbnails.url && !art.option.isLive) {\n art.option.thumbnails = thumbnails\n reset()\n }\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function toggleMix(art) {\n def(art, 'toggle', {\n value() {\n if (art.playing) {\n return art.pause()\n }\n else {\n return art.play()\n }\n },\n })\n}\n","import { def } from '../utils'\n\nexport default function typeMix(art) {\n def(art, 'type', {\n get() {\n return art.option.type\n },\n set(type) {\n art.option.type = type\n },\n })\n}\n","import { def, getExt, sleep } from '../utils'\n\nexport default function urlMix(art) {\n const {\n option,\n template: { $video },\n } = art\n\n def(art, 'url', {\n get() {\n return $video.src\n },\n async set(newUrl) {\n if (newUrl) {\n const oldUrl = art.url\n const typeName = option.type || getExt(newUrl)\n const typeCallback = option.customType[typeName]\n\n if (typeName && typeCallback) {\n await sleep()\n art.loading.show = true\n typeCallback.call(art, $video, newUrl, art)\n }\n else {\n URL.revokeObjectURL(oldUrl)\n $video.src = newUrl\n }\n\n if (oldUrl !== art.url) {\n art.option.url = newUrl\n if (art.isReady && oldUrl) {\n art.once('video:canplay', () => {\n art.emit('restart', newUrl)\n })\n }\n }\n }\n else {\n await sleep()\n art.loading.show = true\n }\n },\n })\n}\n","import { clamp, def } from '../utils'\n\nexport default function volumeMix(art) {\n const {\n template: { $video },\n i18n,\n notice,\n storage,\n } = art\n\n def(art, 'volume', {\n get: () => $video.volume || 0,\n set: (percentage) => {\n $video.volume = clamp(percentage, 0, 1)\n notice.show = `${i18n.get('Volume')}: ${Number.parseInt($video.volume * 100, 10)}`\n if ($video.volume !== 0) {\n storage.set('volume', $video.volume)\n }\n },\n })\n\n def(art, 'muted', {\n get: () => $video.muted,\n set: (muted) => {\n $video.muted = muted\n art.emit('muted', muted)\n },\n })\n}\n","import { def, errorHandle, has, isMobile } from '../utils'\nimport autoOrientation from './autoOrientation'\nimport autoPlayback from './autoPlayback'\nimport fastForward from './fastForward'\nimport lock from './lock'\nimport miniProgressBar from './miniProgressBar'\n\nexport default class Plugins {\n constructor(art) {\n this.art = art\n this.id = 0\n\n const { option } = art\n\n if (option.miniProgressBar && !option.isLive) {\n this.add(miniProgressBar)\n }\n\n if (option.lock && isMobile) {\n this.add(lock)\n }\n\n if (option.autoPlayback && !option.isLive) {\n this.add(autoPlayback)\n }\n\n if (option.autoOrientation && isMobile) {\n this.add(autoOrientation)\n }\n\n if (option.fastForward && isMobile && !option.isLive) {\n this.add(fastForward)\n }\n\n for (let index = 0; index < option.plugins.length; index++) {\n this.add(option.plugins[index])\n }\n }\n\n add(plugin) {\n this.id += 1\n const result = plugin.call(this.art, this.art)\n if (result instanceof Promise) {\n return result.then(res => this.next(plugin, res))\n }\n else {\n return this.next(plugin, result)\n }\n }\n\n next(plugin, result) {\n const pluginName = (result && result.name) || plugin.name || `plugin${this.id}`\n errorHandle(!has(this, pluginName), `Cannot add a plugin that already has the same name: ${pluginName}`)\n def(this, pluginName, {\n value: result,\n })\n return this\n }\n}\n","import { addClass, hasClass, removeClass, setStyle } from '../utils'\n\nexport default function autoOrientation(art) {\n const {\n notice,\n constructor,\n template: { $player, $video },\n } = art\n\n const WEB_CLASS = 'art-auto-orientation'\n const FS_CLASS = 'art-auto-orientation-fullscreen'\n let fsLocked = false\n\n function applyWebRotate() {\n const viewWidth = document.documentElement.clientWidth\n const viewHeight = document.documentElement.clientHeight\n setStyle($player, 'width', `${viewHeight}px`)\n setStyle($player, 'height', `${viewWidth}px`)\n setStyle($player, 'transform-origin', '0 0')\n setStyle($player, 'transform', `rotate(90deg) translate(0, -${viewWidth}px)`)\n addClass($player, WEB_CLASS)\n art.isRotate = true\n art.emit('resize')\n }\n\n function clearWebRotate() {\n setStyle($player, 'width', '')\n setStyle($player, 'height', '')\n setStyle($player, 'transform-origin', '')\n setStyle($player, 'transform', '')\n removeClass($player, WEB_CLASS)\n art.isRotate = false\n art.emit('resize')\n }\n\n function needRotate() {\n const { videoWidth, videoHeight } = $video\n const vw = document.documentElement.clientWidth\n const vh = document.documentElement.clientHeight\n return (videoWidth > videoHeight && vw < vh) || (videoWidth < videoHeight && vw > vh)\n }\n\n art.on('fullscreenWeb', (state) => {\n if (state) {\n if (needRotate()) {\n const delay = Number(constructor.AUTO_ORIENTATION_TIME ?? 0)\n setTimeout(() => {\n if (art.fullscreenWeb && !hasClass($player, WEB_CLASS)) {\n applyWebRotate()\n }\n }, delay)\n }\n }\n else {\n if (hasClass($player, WEB_CLASS))\n clearWebRotate()\n }\n })\n\n art.on('fullscreen', async (state) => {\n const canLock = !!screen?.orientation?.lock\n\n if (state) {\n if (canLock && needRotate()) {\n try {\n const last = screen.orientation.type\n const opposite = last.startsWith('portrait') ? 'landscape' : 'portrait'\n await screen.orientation.lock(opposite)\n fsLocked = true\n addClass($player, FS_CLASS)\n }\n catch (err) {\n fsLocked = false\n notice.show = err\n }\n }\n }\n else {\n if (hasClass($player, FS_CLASS)) {\n removeClass($player, FS_CLASS)\n }\n if (canLock && fsLocked) {\n try {\n screen.orientation.unlock()\n }\n catch { }\n fsLocked = false\n }\n }\n })\n\n return {\n name: 'autoOrientation',\n get state() {\n return hasClass($player, WEB_CLASS)\n },\n }\n}\n","import { append, query, secondToTime, setStyle } from '../utils'\n\nexport default function autoPlayback(art) {\n const {\n i18n,\n icons,\n storage,\n constructor,\n proxy,\n template: { $poster },\n } = art\n\n const $autoPlayback = art.layers.add({\n name: 'auto-playback',\n html: `\n
\n
\n
\n `,\n })\n\n const $last = query('.art-auto-playback-last', $autoPlayback)\n const $jump = query('.art-auto-playback-jump', $autoPlayback)\n const $close = query('.art-auto-playback-close', $autoPlayback)\n append($close, icons.close)\n\n let timer = null\n\n art.on('video:timeupdate', () => {\n if (art.playing) {\n const times = storage.get('times') || {}\n const keys = Object.keys(times)\n if (keys.length > constructor.AUTO_PLAYBACK_MAX) {\n delete times[keys[0]]\n }\n times[art.option.id || art.option.url] = art.currentTime\n storage.set('times', times)\n }\n })\n\n function init() {\n const times = storage.get('times') || {}\n const currentTime = times[art.option.id || art.option.url]\n\n clearTimeout(timer)\n setStyle($autoPlayback, 'display', 'none')\n\n if (currentTime && currentTime >= constructor.AUTO_PLAYBACK_MIN) {\n setStyle($autoPlayback, 'display', 'flex')\n\n $last.textContent = `${i18n.get('Last Seen')} ${secondToTime(currentTime)}`\n $jump.textContent = i18n.get('Jump Play')\n\n proxy($close, 'click', () => {\n setStyle($autoPlayback, 'display', 'none')\n })\n\n proxy($jump, 'click', () => {\n art.seek = currentTime\n art.play()\n setStyle($poster, 'display', 'none')\n setStyle($autoPlayback, 'display', 'none')\n })\n\n art.once('video:timeupdate', () => {\n timer = setTimeout(() => {\n setStyle($autoPlayback, 'display', 'none')\n }, constructor.AUTO_PLAYBACK_TIMEOUT)\n })\n }\n }\n\n art.on('ready', init)\n art.on('restart', init)\n\n return {\n name: 'auto-playback',\n get times() {\n return storage.get('times') || {}\n },\n clear() {\n return storage.del('times')\n },\n delete(id) {\n const times = storage.get('times') || {}\n delete times[id]\n storage.set('times', times)\n return times\n },\n }\n}\n","import { addClass, hasClass, removeClass } from '../utils'\n\nexport default function fastForward(art) {\n const {\n constructor,\n proxy,\n template: { $player, $video },\n } = art\n\n let timer = null\n let isPress = false\n let lastPlaybackRate = 1\n\n const onStart = (event) => {\n if (event.touches.length === 1 && art.playing && !art.isLock) {\n timer = setTimeout(() => {\n isPress = true\n lastPlaybackRate = art.playbackRate\n art.playbackRate = constructor.FAST_FORWARD_VALUE\n addClass($player, 'art-fast-forward')\n }, constructor.FAST_FORWARD_TIME)\n }\n }\n\n const onStop = () => {\n clearTimeout(timer)\n if (isPress) {\n isPress = false\n art.playbackRate = lastPlaybackRate\n removeClass($player, 'art-fast-forward')\n }\n }\n\n proxy($video, 'touchstart', onStart)\n art.on('document:touchmove', onStop)\n art.on('document:touchend', onStop)\n\n return {\n name: 'fastForward',\n get state() {\n return hasClass($player, 'art-fast-forward')\n },\n }\n}\n","import { addClass, append, hasClass, removeClass, setStyle } from '../utils'\n\nexport default function lock(art) {\n const {\n layers,\n icons,\n template: { $player },\n } = art\n\n function getState() {\n return hasClass($player, 'art-lock')\n }\n\n function setLock() {\n addClass($player, 'art-lock')\n art.isLock = true\n art.emit('lock', true)\n }\n\n function setUnlock() {\n removeClass($player, 'art-lock')\n art.isLock = false\n art.emit('lock', false)\n }\n\n layers.add({\n name: 'lock',\n mounted($el) {\n const $lock = append($el, icons.lock)\n const $unlock = append($el, icons.unlock)\n setStyle($lock, 'display', 'none')\n\n art.on('lock', (state) => {\n if (state) {\n setStyle($lock, 'display', 'inline-flex')\n setStyle($unlock, 'display', 'none')\n }\n else {\n setStyle($lock, 'display', 'none')\n setStyle($unlock, 'display', 'inline-flex')\n }\n })\n },\n click() {\n if (getState()) {\n setUnlock()\n }\n else {\n setLock()\n }\n },\n })\n\n return {\n name: 'lock',\n get state() {\n return getState()\n },\n set state(value) {\n if (value) {\n setLock()\n }\n else {\n setUnlock()\n }\n },\n }\n}\n","import { addClass, removeClass } from '../utils'\n\nexport default function miniProgressBar(art) {\n art.on('control', (state) => {\n if (state) {\n removeClass(art.template.$player, 'art-mini-progress-bar')\n }\n else {\n addClass(art.template.$player, 'art-mini-progress-bar')\n }\n })\n\n return { name: 'mini-progress-bar' }\n}\n","import {\n addClass,\n append,\n createElement,\n def,\n errorHandle,\n getRect,\n has,\n includeFromEvent,\n inverseClass,\n isMobile,\n remove,\n replaceElement,\n setStyle,\n} from '../utils'\nimport Component from '../utils/component'\nimport aspectRatio from './aspectRatio'\nimport flip from './flip'\nimport playbackRate from './playbackRate'\nimport subtitleOffset from './subtitleOffset'\n\nexport default class Setting extends Component {\n constructor(art) {\n super(art)\n\n const {\n option,\n controls,\n template: { $setting },\n } = art\n\n this.name = 'setting'\n this.$parent = $setting\n\n this.id = 0\n this.active = null\n this.cache = new Map()\n this.option = [...this.builtin, ...option.settings]\n\n if (option.setting) {\n this.format()\n this.render()\n\n art.on('blur', () => {\n if (this.show) {\n this.show = false\n this.render()\n }\n })\n\n art.on('focus', (event) => {\n const isControl = includeFromEvent(event, controls.setting)\n const isSetting = includeFromEvent(event, this.$parent)\n if (this.show && !isControl && !isSetting) {\n this.show = false\n this.render()\n }\n })\n\n art.on('resize', () => this.resize())\n }\n }\n\n get builtin() {\n const result = []\n const { option } = this.art\n\n if (option.playbackRate) {\n result.push(playbackRate(this.art))\n }\n\n if (option.aspectRatio) {\n result.push(aspectRatio(this.art))\n }\n\n if (option.flip) {\n result.push(flip(this.art))\n }\n\n if (option.subtitleOffset) {\n result.push(subtitleOffset(this.art))\n }\n\n return result\n }\n\n traverse(callback, option = this.option) {\n for (let index = 0; index < option.length; index++) {\n const item = option[index]\n callback(item)\n if (item.selector?.length) {\n this.traverse(callback, item.selector)\n }\n }\n }\n\n check(target) {\n target.$parent.tooltip = target.html\n this.traverse((item) => {\n item.default = item === target\n if (item.default && item.$item) {\n inverseClass(item.$item, 'art-current')\n }\n }, target.$option)\n this.render(target.$parents)\n }\n\n format(option = this.option, parent, parents, names = []) {\n for (let index = 0; index < option.length; index++) {\n const item = option[index]\n\n if (item?.name) {\n errorHandle(!names.includes(item.name), `The [${item.name}] already exists in [setting]`)\n names.push(item.name)\n }\n else {\n item.name = `setting-${this.id++}`\n }\n\n if (!item.$formatted) {\n def(item, '$parent', {\n get: () => parent,\n })\n\n def(item, '$parents', {\n get: () => parents,\n })\n\n def(item, '$option', {\n get: () => option,\n })\n\n const $events = []\n def(item, '$events', {\n get: () => $events,\n })\n\n def(item, '$formatted', {\n get: () => true,\n })\n }\n\n this.format(item.selector || [], item, option, names)\n }\n\n this.option = option\n }\n\n find(name = '') {\n let result = null\n this.traverse((item) => {\n if (item.name === name) {\n result = item\n }\n })\n return result\n }\n\n resize() {\n const {\n controls,\n constructor: { SETTING_WIDTH, SETTING_ITEM_HEIGHT },\n template: { $player, $setting },\n } = this.art\n\n if (controls.setting && this.show) {\n const settingWidth = this.active[0]?.$parent?.width || SETTING_WIDTH\n const { left: controlLeft, width: controlWidth } = getRect(controls.setting)\n const { left: playerLeft, width: playerWidth } = getRect($player)\n const settingLeft = controlLeft - playerLeft + controlWidth / 2 - settingWidth / 2\n\n const settingHeight\n = this.active === this.option\n ? this.active.length * SETTING_ITEM_HEIGHT\n : (this.active.length + 1) * SETTING_ITEM_HEIGHT\n\n setStyle($setting, 'height', `${settingHeight}px`)\n setStyle($setting, 'width', `${settingWidth}px`)\n\n if (this.art.isRotate || isMobile)\n return\n\n if (settingLeft + settingWidth > playerWidth) {\n setStyle($setting, 'left', null)\n setStyle($setting, 'right', null)\n }\n else {\n setStyle($setting, 'left', `${settingLeft}px`)\n setStyle($setting, 'right', 'auto')\n }\n }\n }\n\n inactivate(item) {\n for (let index = 0; index < item.$events.length; index++) {\n this.art.events.remove(item.$events[index])\n }\n item.$events.length = 0\n }\n\n remove(name) {\n const item = this.find(name)\n errorHandle(item, `Can't find [${name}] in the [setting]`)\n const index = item.$option.indexOf(item)\n item.$option.splice(index, 1)\n this.inactivate(item)\n if (item.$item)\n remove(item.$item)\n this.render()\n }\n\n update(target) {\n const item = this.find(target.name)\n\n if (item) {\n this.inactivate(item)\n Object.assign(item, target)\n this.format()\n this.createItem(item, true)\n this.render()\n return item\n }\n else {\n return this.add(target)\n }\n }\n\n add(item, option = this.option) {\n option.push(item)\n this.format()\n this.createItem(item)\n this.render()\n return item\n }\n\n createHeader(item) {\n if (!this.cache.has(item.$option))\n return\n const $panel = this.cache.get(item.$option)\n\n const {\n proxy,\n icons: { arrowLeft },\n constructor: { SETTING_ITEM_HEIGHT },\n } = this.art\n\n const $item = createElement('div')\n setStyle($item, 'height', `${SETTING_ITEM_HEIGHT}px`)\n addClass($item, 'art-setting-item')\n addClass($item, 'art-setting-item-back')\n const $left = append($item, '
')\n const $icon = createElement('div')\n addClass($icon, 'art-setting-item-left-icon')\n append($icon, arrowLeft)\n append($left, $icon)\n append($left, item.$parent.html)\n const event = proxy($item, 'click', () => this.render(item.$parents))\n item.$parent.$events.push(event)\n append($panel, $item)\n }\n\n createItem(item, isUpdate = false) {\n if (!this.cache.has(item.$option))\n return\n const $panel = this.cache.get(item.$option)\n const oldItem = item.$item\n\n let type = 'selector'\n\n if (has(item, 'switch')) {\n type = 'switch'\n }\n\n if (has(item, 'range')) {\n type = 'range'\n }\n\n if (has(item, 'onClick')) {\n type = 'button'\n }\n\n const { icons, proxy, constructor } = this.art\n\n const $item = createElement('div')\n addClass($item, 'art-setting-item')\n setStyle($item, 'height', `${constructor.SETTING_ITEM_HEIGHT}px`)\n\n $item.dataset.name = item.name || ''\n $item.dataset.value = item.value || ''\n\n const $left = append($item, '
')\n const $right = append($item, '
')\n\n const $icon = createElement('div')\n addClass($icon, 'art-setting-item-left-icon')\n\n switch (type) {\n case 'button':\n case 'switch':\n case 'range':\n append($icon, item.icon || icons.config)\n break\n case 'selector':\n if (item.selector?.length) {\n append($icon, item.icon || icons.config)\n }\n else {\n append($icon, icons.check)\n }\n break\n default:\n break\n }\n\n append($left, $icon)\n\n def(item, '$icon', {\n configurable: true,\n get: () => $icon,\n })\n\n def(item, 'icon', {\n configurable: true,\n get() {\n return $icon.innerHTML\n },\n set(value) {\n $icon.innerHTML = ''\n append($icon, value)\n },\n })\n\n const $html = createElement('div')\n addClass($html, 'art-setting-item-left-text')\n append($html, item.html || '')\n append($left, $html)\n\n def(item, '$html', {\n configurable: true,\n get: () => $html,\n })\n\n def(item, 'html', {\n configurable: true,\n get() {\n return $html.innerHTML\n },\n set(value) {\n $html.innerHTML = ''\n append($html, value)\n },\n })\n\n const $tooltip = createElement('div')\n addClass($tooltip, 'art-setting-item-right-tooltip')\n append($tooltip, item.tooltip || '')\n append($right, $tooltip)\n\n def(item, '$tooltip', {\n configurable: true,\n get: () => $tooltip,\n })\n\n def(item, 'tooltip', {\n configurable: true,\n get() {\n return $tooltip.innerHTML\n },\n set(value) {\n $tooltip.innerHTML = ''\n append($tooltip, value)\n },\n })\n\n switch (type) {\n case 'switch': {\n const $switch = createElement('div')\n addClass($switch, 'art-setting-item-right-icon')\n const $switchOn = append($switch, icons.switchOn)\n const $switchOff = append($switch, icons.switchOff)\n setStyle(item.switch ? $switchOff : $switchOn, 'display', 'none')\n append($right, $switch)\n\n def(item, '$switch', {\n configurable: true,\n get: () => $switch,\n })\n\n let $switchValue = item.switch\n def(item, 'switch', {\n configurable: true,\n get: () => $switchValue,\n set(value) {\n $switchValue = value\n if (value) {\n setStyle($switchOff, 'display', 'none')\n setStyle($switchOn, 'display', null)\n }\n else {\n setStyle($switchOff, 'display', null)\n setStyle($switchOn, 'display', 'none')\n }\n },\n })\n break\n }\n case 'range':\n {\n const $state = createElement('div')\n addClass($state, 'art-setting-item-right-icon')\n const $range = append($state, '')\n $range.value = item.range[0]\n $range.min = item.range[1]\n $range.max = item.range[2]\n $range.step = item.range[3]\n addClass($range, 'art-setting-range')\n append($right, $state)\n\n def(item, '$range', {\n configurable: true,\n get: () => $range,\n })\n\n let $rangeValue = [...item.range]\n def(item, 'range', {\n configurable: true,\n get: () => $rangeValue,\n set(value) {\n $rangeValue = [...value]\n $range.value = value[0]\n $range.min = value[1]\n $range.max = value[2]\n $range.step = value[3]\n },\n })\n }\n break\n case 'selector':\n if (item.selector?.length) {\n const $state = createElement('div')\n addClass($state, 'art-setting-item-right-icon')\n append($state, icons.arrowRight)\n append($right, $state)\n }\n break\n default:\n break\n }\n\n switch (type) {\n case 'switch': {\n if (item.onSwitch) {\n const event = proxy($item, 'click', async (event) => {\n item.switch = await item.onSwitch.call(this.art, item, $item, event)\n })\n item.$events.push(event)\n }\n break\n }\n case 'range': {\n if (item.$range) {\n if (item.onRange) {\n const event = proxy(item.$range, 'change', async (event) => {\n item.range[0] = item.$range.valueAsNumber\n item.tooltip = await item.onRange.call(this.art, item, $item, event)\n })\n item.$events.push(event)\n }\n\n if (item.onChange) {\n const event = proxy(item.$range, 'input', async (event) => {\n item.range[0] = item.$range.valueAsNumber\n item.tooltip = await item.onChange.call(this.art, item, $item, event)\n })\n item.$events.push(event)\n }\n }\n break\n }\n case 'selector':\n {\n const event = proxy($item, 'click', async (event) => {\n if (item.selector?.length) {\n this.render(item.selector)\n }\n else {\n this.check(item)\n if (item.$parent.onSelect) {\n item.$parent.tooltip = await item.$parent.onSelect.call(this.art, item, $item, event)\n }\n }\n })\n\n item.$events.push(event)\n\n if (item.default) {\n addClass($item, 'art-current')\n }\n }\n break\n case 'button':\n if (item.onClick) {\n const event = proxy($item, 'click', async (event) => {\n item.tooltip = await item.onClick.call(this.art, item, $item, event)\n })\n item.$events.push(event)\n }\n break\n default:\n break\n }\n\n def(item, '$item', {\n configurable: true,\n get: () => $item,\n })\n\n if (isUpdate) {\n replaceElement($item, oldItem)\n }\n else {\n append($panel, $item)\n }\n\n if (item.mounted) {\n setTimeout(() => item.mounted.call(this.art, item.$item, item), 0)\n }\n }\n\n render(option = this.option) {\n this.active = option\n if (this.cache.has(option)) {\n const $panel = this.cache.get(option)\n inverseClass($panel, 'art-current')\n }\n else {\n const $panel = createElement('div')\n this.cache.set(option, $panel)\n addClass($panel, 'art-setting-panel')\n append(this.$parent, $panel)\n inverseClass($panel, 'art-current')\n\n if (option[0]?.$parent) {\n this.createHeader(option[0])\n }\n\n for (let index = 0; index < option.length; index++) {\n this.createItem(option[index])\n }\n }\n this.resize()\n }\n}\n","export default function aspectRatio(art) {\n const {\n i18n,\n icons,\n constructor: { SETTING_ITEM_WIDTH, ASPECT_RATIO },\n } = art\n\n function getI18n(value) {\n return value === 'default' ? i18n.get('Default') : value\n }\n\n function update() {\n const target = art.setting.find(`aspect-ratio-${art.aspectRatio}`)\n art.setting.check(target)\n }\n\n return {\n width: SETTING_ITEM_WIDTH,\n name: 'aspect-ratio',\n html: i18n.get('Aspect Ratio'),\n icon: icons.aspectRatio,\n tooltip: getI18n(art.aspectRatio),\n selector: ASPECT_RATIO.map((item) => {\n return {\n value: item,\n name: `aspect-ratio-${item}`,\n default: item === art.aspectRatio,\n html: getI18n(item),\n }\n }),\n onSelect(item) {\n art.aspectRatio = item.value\n return item.html\n },\n mounted: () => {\n update()\n art.on('aspectRatio', () => update())\n },\n }\n}\n","import { capitalize } from '../utils'\n\nexport default function flip(art) {\n const {\n i18n,\n icons,\n constructor: { SETTING_ITEM_WIDTH, FLIP },\n } = art\n\n function getI18n(value) {\n return i18n.get(capitalize(value))\n }\n\n function update() {\n const target = art.setting.find(`flip-${art.flip}`)\n art.setting.check(target)\n }\n\n return {\n width: SETTING_ITEM_WIDTH,\n name: 'flip',\n html: i18n.get('Video Flip'),\n tooltip: getI18n(art.flip),\n icon: icons.flip,\n selector: FLIP.map((item) => {\n return {\n value: item,\n name: `flip-${item}`,\n default: item === art.flip,\n html: getI18n(item),\n }\n }),\n onSelect(item) {\n art.flip = item.value\n return item.html\n },\n mounted: () => {\n update()\n art.on('flip', () => update())\n },\n }\n}\n","export default function playbackRate(art) {\n const {\n i18n,\n icons,\n constructor: { SETTING_ITEM_WIDTH, PLAYBACK_RATE },\n } = art\n\n function getI18n(value) {\n return value === 1.0 ? i18n.get('Normal') : value.toFixed(1)\n }\n\n function update() {\n const target = art.setting.find(`playback-rate-${art.playbackRate}`)\n art.setting.check(target)\n }\n\n return {\n width: SETTING_ITEM_WIDTH,\n name: 'playback-rate',\n html: i18n.get('Play Speed'),\n tooltip: getI18n(art.playbackRate),\n icon: icons.playbackRate,\n selector: PLAYBACK_RATE.map((item) => {\n return {\n value: item,\n name: `playback-rate-${item}`,\n default: item === art.playbackRate,\n html: getI18n(item),\n }\n }),\n onSelect(item) {\n art.playbackRate = item.value\n return item.html\n },\n mounted: () => {\n update()\n art.on('video:ratechange', () => update())\n },\n }\n}\n","export default function subtitleOffset(art) {\n const { i18n, icons, constructor } = art\n\n return {\n width: constructor.SETTING_ITEM_WIDTH,\n name: 'subtitle-offset',\n html: i18n.get('Subtitle Offset'),\n icon: icons.subtitle,\n tooltip: '0s',\n range: [0, -10, 10, 0.1],\n onChange(item) {\n art.subtitleOffset = item.range[0]\n return `${item.range[0]}s`\n },\n mounted: (_, item) => {\n art.on('subtitleOffset', (value) => {\n item.$range.value = value\n item.tooltip = `${value}s`\n })\n },\n }\n}\n","export default class Storage {\n constructor() {\n this.name = 'artplayer_settings'\n this.settings = {}\n }\n\n get(key) {\n try {\n const storage = JSON.parse(window.localStorage.getItem(this.name)) || {}\n return key ? storage[key] : storage\n }\n catch {\n return key ? this.settings[key] : this.settings\n }\n }\n\n set(key, value) {\n try {\n const storage = Object.assign({}, this.get(), {\n [key]: value,\n })\n window.localStorage.setItem(this.name, JSON.stringify(storage))\n }\n catch {\n this.settings[key] = value\n }\n }\n\n del(key) {\n try {\n const storage = this.get()\n delete storage[key]\n window.localStorage.setItem(this.name, JSON.stringify(storage))\n }\n catch {\n delete this.settings[key]\n }\n }\n\n clear() {\n try {\n window.localStorage.removeItem(this.name)\n }\n catch {\n this.settings = {}\n }\n }\n}\n","import validator from 'option-validator'\nimport scheme from './scheme'\nimport {\n append,\n assToVtt,\n createElement,\n escape,\n getExt,\n remove,\n setStyle,\n setStyles,\n srtToVtt,\n vttToBlob,\n} from './utils'\nimport Component from './utils/component'\n\nexport default class Subtitle extends Component {\n constructor(art) {\n super(art)\n this.name = 'subtitle'\n this.option = null\n this.destroyEvent = () => null\n this.init(art.option.subtitle)\n\n let lastState = false\n art.on('video:timeupdate', () => {\n if (!this.url)\n return\n const state = this.art.template.$video.webkitDisplayingFullscreen\n if (typeof state !== 'boolean')\n return\n if (state !== lastState) {\n lastState = state\n this.createTrack(state ? 'subtitles' : 'metadata', this.url)\n }\n })\n }\n\n get url() {\n return this.art.template.$track.src\n }\n\n set url(url) {\n this.switch(url)\n }\n\n get textTrack() {\n return this.art.template.$video?.textTracks?.[0]\n }\n\n get activeCues() {\n if (!this.textTrack)\n return []\n return Array.from(this.textTrack.activeCues)\n }\n\n get cues() {\n if (!this.textTrack)\n return []\n return Array.from(this.textTrack.cues)\n }\n\n style(key, value) {\n const { $subtitle } = this.art.template\n if (typeof key === 'object') {\n return setStyles($subtitle, key)\n }\n return setStyle($subtitle, key, value)\n }\n\n update() {\n const {\n option: { subtitle },\n template: { $subtitle },\n } = this.art\n\n $subtitle.innerHTML = ''\n if (!this.activeCues.length)\n return\n\n this.art.emit('subtitleBeforeUpdate', this.activeCues)\n $subtitle.innerHTML = this.activeCues\n .map((cue, index) =>\n cue.text\n .split(/\\r?\\n/)\n .filter(line => line.trim())\n .map(\n line =>\n `
\n ${subtitle.escape ? escape(line) : line}\n
`,\n )\n .join(''),\n )\n .join('')\n this.art.emit('subtitleAfterUpdate', this.activeCues)\n }\n\n async switch(url, newOption = {}) {\n const { i18n, notice, option } = this.art\n const subtitleOption = { ...option.subtitle, ...newOption, url }\n const subUrl = await this.init(subtitleOption)\n if (newOption.name) {\n notice.show = `${i18n.get('Switch Subtitle')}: ${newOption.name}`\n }\n return subUrl\n }\n\n createTrack(kind, url) {\n const { template, proxy, option } = this.art\n const { $video, $track } = template\n\n const $newTrack = createElement('track')\n $newTrack.default = true\n $newTrack.kind = kind\n $newTrack.src = url\n $newTrack.label = option.subtitle.name || 'Artplayer'\n $newTrack.track.mode = 'hidden'\n $newTrack.onload = () => {\n this.art.emit('subtitleLoad', this.cues, this.option)\n }\n\n this.art.events.remove(this.destroyEvent)\n $track.onload = null\n remove($track)\n append($video, $newTrack)\n template.$track = $newTrack\n this.destroyEvent = proxy(this.textTrack, 'cuechange', () => this.update())\n }\n\n async init(subtitleOption) {\n const {\n notice,\n template: { $subtitle },\n } = this.art\n\n if (!this.textTrack)\n return null\n validator(subtitleOption, scheme.subtitle)\n if (!subtitleOption.url)\n return\n this.option = subtitleOption\n this.style(subtitleOption.style)\n\n return fetch(subtitleOption.url)\n .then(response => response.arrayBuffer())\n .then((buffer) => {\n const decoder = new TextDecoder(subtitleOption.encoding)\n const text = decoder.decode(buffer)\n switch (subtitleOption.type || getExt(subtitleOption.url)) {\n case 'srt': {\n const vtt = srtToVtt(text)\n const vttNew = subtitleOption.onVttLoad(vtt)\n return vttToBlob(vttNew)\n }\n case 'ass': {\n const vtt = assToVtt(text)\n const vttNew = subtitleOption.onVttLoad(vtt)\n return vttToBlob(vttNew)\n }\n case 'vtt': {\n const vttNew = subtitleOption.onVttLoad(text)\n return vttToBlob(vttNew)\n }\n default:\n return subtitleOption.url\n }\n })\n .then((subUrl) => {\n $subtitle.innerHTML = ''\n if (this.url === subUrl)\n return subUrl\n URL.revokeObjectURL(this.url)\n this.createTrack('metadata', subUrl)\n return subUrl\n })\n .catch((err) => {\n $subtitle.innerHTML = ''\n notice.show = err\n throw err\n })\n }\n}\n","import { version } from '../package.json'\nimport { addClass, errorHandle, isMobile, query, replaceElement, supportsFlex } from './utils'\n\nexport default class Template {\n constructor(art) {\n this.art = art\n const { option, constructor } = art\n\n if (option.container instanceof Element) {\n this.$container = option.container\n }\n else {\n this.$container = query(option.container)\n errorHandle(this.$container, `No container element found by ${option.container}`)\n }\n\n errorHandle(supportsFlex(), 'The current browser does not support flex layout')\n\n const type = this.$container.tagName.toLowerCase()\n errorHandle(type === 'div', `Unsupported container element type, only support 'div' but got '${type}'`)\n\n errorHandle(\n constructor.instances.every(ins => ins.template.$container !== this.$container),\n 'Cannot mount multiple instances on the same dom element',\n )\n\n this.query = this.query.bind(this)\n this.$container.dataset.artId = art.id\n this.init()\n }\n\n static get html() {\n return `\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Player version:
\n
${version}
\n
\n
\n
Video url:
\n
\n
\n
\n
Video volume:
\n
\n
\n
\n
Video time:
\n
\n
\n
\n
Video duration:
\n
\n
\n
\n
Video resolution:
\n
\n x \n
\n
\n
\n
[x]
\n
\n
\n
\n `\n }\n\n query(className) {\n return query(className, this.$container)\n }\n\n init() {\n const { option } = this.art\n\n if (!option.useSSR) {\n this.$container.innerHTML = Template.html\n }\n\n this.$player = this.query('.art-video-player')\n this.$video = this.query('.art-video')\n this.$track = this.query('track')\n this.$poster = this.query('.art-poster')\n this.$subtitle = this.query('.art-subtitle')\n this.$danmuku = this.query('.art-danmuku')\n this.$bottom = this.query('.art-bottom')\n this.$progress = this.query('.art-progress')\n this.$controls = this.query('.art-controls')\n this.$controlsLeft = this.query('.art-controls-left')\n this.$controlsCenter = this.query('.art-controls-center')\n this.$controlsRight = this.query('.art-controls-right')\n this.$layer = this.query('.art-layers')\n this.$loading = this.query('.art-loading')\n this.$notice = this.query('.art-notice')\n this.$noticeInner = this.query('.art-notice-inner')\n this.$mask = this.query('.art-mask')\n this.$state = this.query('.art-state')\n this.$setting = this.query('.art-settings')\n this.$info = this.query('.art-info')\n this.$infoPanel = this.query('.art-info-panel')\n this.$infoClose = this.query('.art-info-close')\n this.$contextmenu = this.query('.art-contextmenus')\n\n if (option.proxy) {\n const video = option.proxy.call(this.art, this.art)\n errorHandle(\n video instanceof HTMLVideoElement || video instanceof HTMLCanvasElement,\n `Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'`,\n )\n replaceElement(video, this.$video)\n video.className = 'art-video'\n this.$video = video\n }\n\n if (option.backdrop) {\n addClass(this.$player, 'art-backdrop')\n }\n\n if (isMobile) {\n addClass(this.$player, 'art-mobile')\n }\n }\n\n destroy(removeHtml) {\n this.$video.src = ''\n if (removeHtml) {\n this.$container.innerHTML = ''\n }\n else {\n addClass(this.$player, 'art-destroy')\n }\n }\n}\n","export default class Emitter {\n on(name, fn, ctx) {\n const e = this.e || (this.e = {});\n (e[name] || (e[name] = [])).push({ fn, ctx })\n return this\n }\n\n once(name, fn, ctx) {\n const self = this\n function listener(...args) {\n self.off(name, listener)\n fn.apply(ctx, args)\n }\n listener._ = fn\n return this.on(name, listener, ctx)\n }\n\n emit(name, ...data) {\n const evtArr = ((this.e || (this.e = {}))[name] || []).slice()\n for (let i = 0; i < evtArr.length; i += 1) {\n evtArr[i].fn.apply(evtArr[i].ctx, data)\n }\n return this\n }\n\n off(name, callback) {\n const e = this.e || (this.e = {})\n const evts = e[name]\n const liveEvents = []\n if (evts && callback) {\n for (let i = 0, len = evts.length; i < len; i += 1) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i])\n }\n }\n if (liveEvents.length) {\n e[name] = liveEvents\n }\n else {\n delete e[name]\n }\n return this\n }\n}\n"],"names":["modules","entry","mainEntry","parcelRequireName","externals","distDir","publicUrl","devServer","globalObject","globalThis","self","window","global","previousRequire","importMap","i","cache","nodeRequire","module","require","bind","newRequire","name","jumped","currentRequire","err","Error","code","localRequire","resolve","x","id","Module","call","exports","res","isParcelRequire","moduleName","bundle","parent","register","Object","defineProperty","get","length","mainExports","define","amd","__globalThis","parcelHelpers","defineInteropFlag","_indexLess","_indexLessDefault","interopDefault","_optionValidator","_optionValidatorDefault","_packageJson","_config","_configDefault","_contextmenu","_contextmenuDefault","_control","_controlDefault","_events","_eventsDefault","_hotkey","_hotkeyDefault","_i18N","_i18NDefault","_icons","_iconsDefault","_info","_infoDefault","_layer","_layerDefault","_loading","_loadingDefault","_mask","_maskDefault","_notice","_noticeDefault","_player","_playerDefault","_plugins","_pluginsDefault","_scheme","_schemeDefault","_setting","_settingDefault","_storage","_storageDefault","_subtitle","_subtitleDefault","_template","_templateDefault","_utils","_emitter","_emitterDefault","instances","Artplayer","default","option","readyCallback","isBrowser","mergeOption","mergeDeep","container","isLock","isReady","isFocus","isInput","isRotate","isDestroy","template","events","storage","icons","i18n","notice","player","layers","controls","contextmenu","subtitle","info","loading","hotkey","mask","setting","plugins","on","DEBUG","log","msg","console","version","index","event","type","push","config","utils","scheme","Emitter","validator","kindOf","html","url","poster","theme","volume","isLive","muted","autoplay","autoSize","autoMini","loop","flip","playbackRate","aspectRatio","screenshot","pip","mutex","backdrop","fullscreen","fullscreenWeb","subtitleOffset","miniProgressBar","useSSR","playsInline","lock","gesture","fastForward","autoPlayback","autoOrientation","airplay","proxy","undefined","settings","quality","highlight","thumbnails","number","column","width","height","scale","style","escape","encoding","onVttLoad","vtt","moreVideoAttr","preload","isSafari","cssVar","customType","lang","navigator","language","toLowerCase","query","video","$video","destroy","removeHtml","splice","indexOf","emit","STYLE","CONTEXTMENU","NOTICE_TIME","SETTING_WIDTH","SETTING_ITEM_WIDTH","SETTING_ITEM_HEIGHT","RESIZE_TIME","SCROLL_TIME","SCROLL_GAP","AUTO_PLAYBACK_MAX","AUTO_PLAYBACK_MIN","AUTO_PLAYBACK_TIMEOUT","RECONNECT_TIME_MAX","RECONNECT_SLEEP_TIME","CONTROL_HIDE_TIME","DBCLICK_TIME","DBCLICK_FULLSCREEN","MOBILE_DBCLICK_PLAY","MOBILE_CLICK_PLAY","AUTO_ORIENTATION_TIME","INFO_LOOP_TIME","FAST_FORWARD_VALUE","FAST_FORWARD_TIME","TOUCH_MOVE_RATIO","VOLUME_STEP","SEEK_STEP","PLAYBACK_RATE","ASPECT_RATIO","FLIP","FULLSCREEN_WEB_IN_BODY","LOG_VERSION","USE_RAF","setStyleText","setTimeout","t","e","r","Symbol","iterator","prototype","n","toString","c","o","Array","isArray","isBuffer","callee","message","Date","toDateString","getDate","setDate","stackTraceLimit","RegExp","flags","ignoreCase","multiline","throw","return","next","slice","replace","f","arguments","s","y","a","u","concat","join","keys","forEach","split","map","trim","filter","Boolean","some","JSON","parse","properties","methods","prototypes","__esModule","value","exportAll","source","dest","key","hasOwnProperty","enumerable","export","destName","_component","_componentDefault","_aspectRatio","_aspectRatioDefault","_close","_closeDefault","_flip","_flipDefault","_playbackRate","_playbackRateDefault","_version","_versionDefault","Contextmenu","art","$parent","$contextmenu","isMobile","init","$player","add","preventDefault","show","mouseX","clientX","mouseY","clientY","cHeight","cWidth","left","cLeft","top","cTop","getRect","mHeight","mWidth","menuLeft","menuTop","setStyles","includeFromEvent","_compatibility","_dom","_error","_file","_format","_property","_time","userAgent","isIOS","isIOS13","CUSTOM_USER_AGENT","test","MSStream","includes","maxTouchPoints","document","queryAll","addClass","removeClass","hasClass","append","remove","setStyle","getStyle","siblings","inverseClass","tooltip","isInViewport","replaceElement","createElement","getIcon","supportsFlex","loadImg","getComposedPath","selector","querySelector","from","querySelectorAll","target","className","classList","contains","child","Element","appendChild","insertAdjacentHTML","String","lastElementChild","lastChild","parentNode","removeChild","element","styles","numberType","getComputedStyle","getPropertyValue","Number","parseFloat","parentElement","children","item","pos","setAttribute","el","offset","rect","getBoundingClientRect","windowHeight","innerHeight","documentElement","clientHeight","windowWidth","innerWidth","clientWidth","vertInView","horInView","newChild","oldChild","replaceChild","tag","icon","$style","getElementById","readyState","addEventListener","head","textContent","div","display","Promise","reject","img","Image","onload","canvas","ctx","getContext","drawImage","toBlob","blob","blobUrl","URL","createObjectURL","scaledImg","onerror","revokeObjectURL","src","composedPath","path","node","ArtPlayerError","errorHandle","context","captureStackTrace","condition","download","elink","href","body","click","getExt","pop","clamp","num","b","Math","max","min","capitalize","str","charAt","toUpperCase","secondToTime","second","hour","floor","sec","unescape","reg","def","has","objects","isObject","reduce","prev","obj","pVal","oVal","getOwnPropertyDescriptor","srtToVtt","srtText","fixSrt","srt","_","$1","$2","ms","vttToBlob","vttText","Blob","assToVtt","ass","reAss","fixTime","time","arr","line","m","match","start","end","text","sleep","debounce","func","duration","timeout","args","effect","apply","clearTimeout","throttle","shouldWait","Map","update","toggle","getOption","ComponentOption","disable","$ref","childs","dataset","nextChild","find","insertAdjacentElement","destroyEvent","position","set","mounted","beforeUnmount","delete","assign","validElement","paths","onSelect","switch","onSwitch","range","onRange","onChange","$panel","$default","$current","close","toFixed","_airplay","_airplayDefault","_fullscreen","_fullscreenDefault","_fullscreenWeb","_fullscreenWebDefault","_pip","_pipDefault","_playAndPause","_playAndPauseDefault","_progress","_progressDefault","_screenshot","_screenshotDefault","_timeDefault","_volume","_volumeDefault","Control","isHover","timer","now","constructor","$bottom","playing","state","then","WebKitPlaybackTargetAvailabilityEvent","$progress","$controlsLeft","$controlsRight","check","$control_value","innerHTML","$control_option","$control_item","$value","$list","$item","$control","$fullscreenOn","fullscreenOn","$fullscreenOff","fullscreenOff","$fullscreenWebOn","fullscreenWebOn","$fullscreenWebOff","fullscreenWebOff","playAndPause","$play","play","$pause","pause","showPlay","showPause","getPosFromEvent","setCurrentTime","progress","eventLeft","touches","percentage","seek","options","tipTimer","isDragging","$hover","$loaded","$played","$highlight","$indicator","$tip","showTime","touch","tipWidth","indicator","isMobileDragging","played","loaded","showHighlight","button","resize","fontSize","padding","cursor","getTime","newTime","currentTime","$volume","$close","volumeClose","$inner","$slider","$handle","getVolumeFromEvent","_clickInit","_clickInitDefault","_gestureInit","_gestureInitDefault","_globalInit","_globalInitDefault","_hoverInit","_hoverInitDefault","_moveInit","_moveInitDefault","_resizeInit","_resizeInitDefault","_updateInit","_updateInitDefault","_viewInit","_viewInitDefault","destroyEvents","hover","callback","removeEventListener","mouseenter","mouseleave","clickInit","onDocumentClick","tagName","clickTimes","clicks","gestureInit","touchTarget","startX","startY","startTime","onTouchStart","pageX","pageY","onTouchMove","direction","GetSlideDirection","endX","endY","dy","dx","result","abs","angle","atan2","PI","isHorizontal","isVertical","ratioX","ratioY","ratio","globalInit","documentEvents","windowEvents","bindGlobalEvents","doc","ownerDocument","win","defaultView","hoverInit","moveInit","resizeInit","resizeFn","screen","orientation","onchange","updateInit","requestAnimationFrame","cancelAnimationFrame","viewInit","$container","scrollFn","mini","backward","forward","activeElement","editable","getAttribute","altKey","ctrlKey","metaKey","shiftKey","_zhCn","_zhCnDefault","languages","zhCn","_airplaySvg","_airplaySvgDefault","_arrowLeftSvg","_arrowLeftSvgDefault","_arrowRightSvg","_arrowRightSvgDefault","_aspectRatioSvg","_aspectRatioSvgDefault","_checkSvg","_checkSvgDefault","_closeSvg","_closeSvgDefault","_configSvg","_configSvgDefault","_errorSvg","_errorSvgDefault","_flipSvg","_flipSvgDefault","_fullscreenOffSvg","_fullscreenOffSvgDefault","_fullscreenOnSvg","_fullscreenOnSvgDefault","_fullscreenWebOffSvg","_fullscreenWebOffSvgDefault","_fullscreenWebOnSvg","_fullscreenWebOnSvgDefault","_loadingSvg","_loadingSvgDefault","_lockSvg","_lockSvgDefault","_pauseSvg","_pauseSvgDefault","_pipSvg","_pipSvgDefault","_playSvg","_playSvgDefault","_playbackRateSvg","_playbackRateSvgDefault","_screenshotSvg","_screenshotSvgDefault","_settingSvg","_settingSvgDefault","_stateSvg","_stateSvgDefault","_switchOffSvg","_switchOffSvgDefault","_switchOnSvg","_switchOnSvgDefault","_unlockSvg","_unlockSvgDefault","_volumeCloseSvg","_volumeCloseSvgDefault","_volumeSvg","_volumeSvgDefault","arrowLeft","arrowRight","unlock","switchOn","switchOff","error","Info","$infoPanel","$infoClose","$types","Layer","$layer","Loading","$loading","Mask","$state","$error","$noticeInner","_airplayMix","_airplayMixDefault","_aspectRatioMix","_aspectRatioMixDefault","_attrMix","_attrMixDefault","_autoHeightMix","_autoHeightMixDefault","_autoSizeMix","_autoSizeMixDefault","_cssVarMix","_cssVarMixDefault","_currentTimeMix","_currentTimeMixDefault","_durationMix","_durationMixDefault","_eventInit","_eventInitDefault","_flipMix","_flipMixDefault","_fullscreenMix","_fullscreenMixDefault","_fullscreenWebMix","_fullscreenWebMixDefault","_loadedMix","_loadedMixDefault","_miniMix","_miniMixDefault","_optionInit","_optionInitDefault","_pauseMix","_pauseMixDefault","_pipMix","_pipMixDefault","_playbackRateMix","_playbackRateMixDefault","_playedMix","_playedMixDefault","_playingMix","_playingMixDefault","_playMix","_playMixDefault","_posterMix","_posterMixDefault","_qualityMix","_qualityMixDefault","_rectMix","_rectMixDefault","_screenshotMix","_screenshotMixDefault","_seekMix","_seekMixDefault","_stateMix","_stateMixDefault","_subtitleOffsetMix","_subtitleOffsetMixDefault","_switchMix","_switchMixDefault","_themeMix","_themeMixDefault","_thumbnailsMix","_thumbnailsMixDefault","_toggleMix","_toggleMixDefault","_typeMix","_typeMixDefault","_urlMix","_urlMixDefault","_volumeMix","_volumeMixDefault","airplayMix","available","webkitShowPlaybackTargetPicker","availability","aspectRatioMix","ratioArray","setupRatio","playerRatio","attrMix","autoHeightMix","videoHeight","videoWidth","autoSizeMix","videoRatio","containerRatio","cssVarMix","setProperty","currentTimeMix","isNaN","durationMix","Infinity","eventInit","$poster","reconnectTime","once","flipMix","fullscreenMix","_screenfull","_screenfullDefault","isEnabled","isFullscreen","request","exit","webkitSupportsFullscreen","fullscreenElement","webkitEnterFullscreen","webkitExitFullscreen","methodMap","nativeAPI","unprefixedMethods","returnValue","methodList","exitFullscreenMethod","method","entries","eventNameMap","change","fullscreenchange","fullscreenerror","screenfull","onFullScreenEntered","off","returnPromise","requestFullscreen","catch","onFullScreenExit","exitFullscreen","eventName","raw","defineProperties","fullscreenEnabled","fullscreenWebMix","cssText","loadedMix","loadedTime","buffered","miniMix","lastPageX","lastPageY","hideMini","$mini","prepend","initState","initMini","createMini","optionInit","attr","volumeStorage","pauseMix","pipMix","pictureInPictureEnabled","nativePip","disablePictureInPicture","pictureInPictureElement","requestPictureInPicture","exitPictureInPicture","webkitSupportsPresentationMode","webkitPip","webkitSetPresentationMode","webkitPresentationMode","playbackRateMix","rate","playedMix","playingMix","paused","ended","playMix","instance","posterMix","backgroundImage","qualityMix","qualityDefault","marginRight","switchQuality","rectMix","pageXOffset","pageYOffset","screenshotMix","$canvas","toDataURL","dataUri","getDataURL","fileName","seekMix","stateMix","states","prop","subtitleOffsetMix","$track","cues","cue","originalStartTime","originalEndTime","endTime","switchMix","switchUrl","themeMix","thumbnailsMix","image","isLoad","$thumbnails","showThumbnails","posWidth","width2","naturalWidth","height2","perIndex","yIndex","ceil","xIndex","toggleMix","typeMix","urlMix","newUrl","oldUrl","typeName","typeCallback","volumeMix","parseInt","_autoOrientation","_autoOrientationDefault","_autoPlayback","_autoPlaybackDefault","_fastForward","_fastForwardDefault","_lock","_lockDefault","_miniProgressBar","_miniProgressBarDefault","plugin","pluginName","WEB_CLASS","FS_CLASS","fsLocked","needRotate","vw","vh","applyWebRotate","viewWidth","viewHeight","canLock","opposite","last","startsWith","$autoPlayback","$last","$jump","times","clear","del","isPress","lastPlaybackRate","onStop","getState","setLock","setUnlock","$el","$lock","$unlock","_subtitleOffset","_subtitleOffsetDefault","Setting","$setting","active","builtin","format","render","isControl","isSetting","traverse","$option","$parents","parents","names","$formatted","$events","settingWidth","controlLeft","controlWidth","playerLeft","playerWidth","settingLeft","settingHeight","inactivate","createItem","createHeader","$left","$icon","isUpdate","oldItem","$right","configurable","$html","$tooltip","$switch","$switchOn","$switchOff","$switchValue","$range","step","$rangeValue","valueAsNumber","onClick","getI18n","localStorage","getItem","setItem","stringify","removeItem","Subtitle","lastState","webkitDisplayingFullscreen","createTrack","textTrack","textTracks","activeCues","$subtitle","newOption","subtitleOption","subUrl","kind","$newTrack","label","track","mode","fetch","response","arrayBuffer","buffer","decoder","TextDecoder","decode","vttNew","Template","every","ins","artId","$danmuku","$controls","$controlsCenter","$notice","$mask","$info","HTMLVideoElement","HTMLCanvasElement","fn","listener","data","evtArr","evts","liveEvents","len","_default","parcelRequire4dc0"],"version":3,"file":"index.js.map"} \ No newline at end of file diff --git a/docs/compiled/artplayer.js b/docs/compiled/artplayer.js index 85aedc229..86802a2ea 100644 --- a/docs/compiled/artplayer.js +++ b/docs/compiled/artplayer.js @@ -5,4 +5,4 @@ * (c) 2017-2025 Harvey Zack * Released under the MIT License. */ -!function(e,t,r,a,o,i,n,s){var l="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},c="function"==typeof l[a]&&l[a],p=c.i||{},u=c.cache||{},d="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function f(t,r){if(!u[t]){if(!e[t]){if(o[t])return o[t];var i="function"==typeof l[a]&&l[a];if(!r&&i)return i(t,!0);if(c)return c(t,!0);if(d&&"string"==typeof t)return d(t);var n=Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}p.resolve=function(r){var a=e[t][1][r];return null!=a?a:r},p.cache={};var s=u[t]=new f.Module(t);e[t][0].call(s.exports,p,s,s.exports,l)}return u[t].exports;function p(e){var t=p.resolve(e);return!1===t?{}:f(t)}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.require=d,this.exports={}},f.modules=e,f.cache=u,f.parent=c,f.distDir=void 0,f.publicUrl=void 0,f.devServer=void 0,f.i=p,f.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(f,"root",{get:function(){return l[a]}}),l[a]=f;for(var h=0;ht.call(this,this)),Q.DEBUG){let e=e=>console.log(`[ART.${this.id}] -> ${e}`);e(`Version@${Q.version}`);for(let t=0;te(`Event@${t.type}`))}J.push(this)}static get instances(){return J}static get version(){return c.version}static get config(){return u.default}static get utils(){return Z}static get scheme(){return z.default}static get Emitter(){return X.default}static get validator(){return l.default}static get kindOf(){return l.default.kindOf}static get html(){return U.default.html}static get option(){return{id:"",container:"#artplayer",url:"",poster:"",type:"",theme:"#f00",volume:.7,isLive:!1,muted:!1,autoplay:!1,autoSize:!1,autoMini:!1,loop:!1,flip:!1,playbackRate:!1,aspectRatio:!1,screenshot:!1,setting:!1,hotkey:!0,pip:!1,mutex:!0,backdrop:!0,fullscreen:!1,fullscreenWeb:!1,subtitleOffset:!1,miniProgressBar:!1,useSSR:!1,playsInline:!0,lock:!1,gesture:!0,fastForward:!1,autoPlayback:!1,autoOrientation:!1,airplay:!1,proxy:void 0,layers:[],contextmenu:[],controls:[],settings:[],quality:[],highlight:[],plugins:[],thumbnails:{url:"",number:60,column:10,width:0,height:0,scale:1},subtitle:{url:"",type:"",style:{},name:"",escape:!0,encoding:"utf-8",onVttLoad:e=>e},moreVideoAttr:{controls:!1,preload:Z.isSafari?"auto":"metadata"},i18n:{},icons:{},cssVar:{},customType:{},lang:navigator?.language.toLowerCase()}}get proxy(){return this.events.proxy}get query(){return this.template.query}get video(){return this.template.$video}destroy(e=!0){this.events.destroy(),this.template.destroy(e),J.splice(J.indexOf(this),1),this.isDestroy=!0,this.emit("destroy")}}r.default=Q,Q.STYLE=n.default,Q.DEBUG=!1,Q.CONTEXTMENU=!0,Q.NOTICE_TIME=2e3,Q.SETTING_WIDTH=250,Q.SETTING_ITEM_WIDTH=200,Q.SETTING_ITEM_HEIGHT=35,Q.RESIZE_TIME=200,Q.SCROLL_TIME=200,Q.SCROLL_GAP=50,Q.AUTO_PLAYBACK_MAX=10,Q.AUTO_PLAYBACK_MIN=5,Q.AUTO_PLAYBACK_TIMEOUT=3e3,Q.RECONNECT_TIME_MAX=5,Q.RECONNECT_SLEEP_TIME=1e3,Q.CONTROL_HIDE_TIME=3e3,Q.DBCLICK_TIME=300,Q.DBCLICK_FULLSCREEN=!0,Q.MOBILE_DBCLICK_PLAY=!0,Q.MOBILE_CLICK_PLAY=!1,Q.AUTO_ORIENTATION_TIME=200,Q.INFO_LOOP_TIME=1e3,Q.FAST_FORWARD_VALUE=3,Q.FAST_FORWARD_TIME=1e3,Q.TOUCH_MOVE_RATIO=.5,Q.VOLUME_STEP=.1,Q.SEEK_STEP=5,Q.PLAYBACK_RATE=[.5,.75,1,1.25,1.5,2],Q.ASPECT_RATIO=["default","4:3","16:9"],Q.FLIP=["normal","horizontal","vertical"],Q.FULLSCREEN_WEB_IN_BODY=!1,Q.LOG_VERSION=!0,Q.USE_RAF=!1,Z.isBrowser&&(window.Artplayer=Q,Z.setStyleText("artplayer-style",n.default),setTimeout(()=>{Q.LOG_VERSION&&console.log(`%c ArtPlayer %c ${Q.version} %c https://artplayer.org`,"color: #fff; background: #5f5f5f","color: #fff; background: #4bc729","")},100))},{"bundle-text:./style/index.less":"1thAY","option-validator":"iscjH","../package.json":"7z0bJ","./config":"icOIG","./contextmenu":"669K4","./control":"g00bY","./events":"hEROU","./hotkey":"2ac95","./i18n":"3G1Oj","./icons":"ddm2l","./info":"bAZEJ","./layer":"2RWc0","./loading":"i4KU0","./mask":"02CNZ","./notice":"eVoav","./player":"cZepx","./plugins":"5A1j1","./scheme":"3maHy","./setting":"4IYMA","./storage":"9Ulkg","./subtitle":"4gOJp","./template":"haag7","./utils":"3eYxa","./utils/emitter":"hyN0U","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"1thAY":[function(e,t,r,a){t.exports='.art-video-player{--art-theme:red;--art-font-color:#fff;--art-background-color:#000;--art-text-shadow-color:#00000080;--art-transition-duration:.2s;--art-padding:10px;--art-border-radius:3px;--art-progress-height:6px;--art-progress-color:#ffffff40;--art-hover-color:#ffffff40;--art-loaded-color:#ffffff40;--art-state-size:80px;--art-state-opacity:.8;--art-bottom-height:100px;--art-bottom-offset:20px;--art-bottom-gap:5px;--art-highlight-width:8px;--art-highlight-color:#ffffff80;--art-control-height:46px;--art-control-opacity:.75;--art-control-icon-size:36px;--art-control-icon-scale:1.1;--art-volume-height:120px;--art-volume-handle-size:14px;--art-lock-size:36px;--art-indicator-scale:0;--art-indicator-size:16px;--art-fullscreen-web-index:9999;--art-settings-icon-size:24px;--art-settings-max-height:300px;--art-selector-max-height:300px;--art-contextmenus-min-width:250px;--art-subtitle-font-size:20px;--art-subtitle-gap:5px;--art-subtitle-bottom:15px;--art-subtitle-border:#000;--art-widget-background:#000000d9;--art-tip-background:#000000b3;--art-scrollbar-size:4px;--art-scrollbar-background:#ffffff40;--art-scrollbar-background-hover:#ffffff80;--art-mini-progress-height:2px}.art-bg-cover{background-position:50%;background-repeat:no-repeat;background-size:cover}.art-bottom-gradient{background-image:linear-gradient(#0000,#0006,#000);background-position:bottom;background-repeat:repeat-x}.art-backdrop-filter{backdrop-filter:saturate(180%)blur(20px);background-color:#000000bf!important}.art-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.art-video-player{zoom:1;text-align:left;user-select:none;box-sizing:border-box;width:100%;height:100%;color:var(--art-font-color);background-color:var(--art-background-color);text-shadow:0 0 2px var(--art-text-shadow-color);-webkit-tap-highlight-color:#0000;-ms-touch-action:manipulation;touch-action:manipulation;-ms-high-contrast-adjust:none;direction:ltr;outline:0;margin:0 auto;padding:0;font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,Roboto,Arial,sans-serif;font-size:14px;line-height:1.3;position:relative}.art-video-player *,.art-video-player :before,.art-video-player :after{box-sizing:border-box}.art-video-player ::-webkit-scrollbar{width:var(--art-scrollbar-size);height:var(--art-scrollbar-size)}.art-video-player ::-webkit-scrollbar-thumb{background-color:var(--art-scrollbar-background)}.art-video-player ::-webkit-scrollbar-thumb:hover{background-color:var(--art-scrollbar-background-hover)}.art-video-player img{vertical-align:top;max-width:100%}.art-video-player svg{fill:var(--art-font-color)}.art-video-player a{color:var(--art-font-color);text-decoration:none}.art-icon{justify-content:center;align-items:center;line-height:1;display:flex}.art-video-player.art-backdrop .art-contextmenus,.art-video-player.art-backdrop .art-info,.art-video-player.art-backdrop .art-settings,.art-video-player.art-backdrop .art-layer-auto-playback,.art-video-player.art-backdrop .art-selector-list,.art-video-player.art-backdrop .art-volume-inner{backdrop-filter:saturate(180%)blur(20px);background-color:#000000bf!important}.art-video{z-index:10;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.art-poster{z-index:11;pointer-events:none;background-position:50%;background-repeat:no-repeat;background-size:cover;width:100%;height:100%;position:absolute;inset:0}.art-video-player .art-subtitle{z-index:20;text-align:center;pointer-events:none;justify-content:center;align-items:center;gap:var(--art-subtitle-gap);width:100%;bottom:var(--art-subtitle-bottom);font-size:var(--art-subtitle-font-size);transition:bottom var(--art-transition-duration)ease;text-shadow:var(--art-subtitle-border)1px 0 1px,var(--art-subtitle-border)0 1px 1px,var(--art-subtitle-border)-1px 0 1px,var(--art-subtitle-border)0 -1px 1px,var(--art-subtitle-border)1px 1px 1px,var(--art-subtitle-border)-1px -1px 1px,var(--art-subtitle-border)1px -1px 1px,var(--art-subtitle-border)-1px 1px 1px;flex-direction:column;padding:0 5%;display:none;position:absolute}.art-video-player.art-subtitle-show .art-subtitle{display:flex}.art-video-player.art-control-show .art-subtitle{bottom:calc(var(--art-control-height) + var(--art-subtitle-bottom))}.art-danmuku{z-index:30;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.art-video-player .art-layers{z-index:40;pointer-events:none;width:100%;height:100%;display:none;position:absolute;inset:0}.art-video-player .art-layers .art-layer{pointer-events:auto}.art-video-player.art-layer-show .art-layers{display:flex}.art-video-player .art-mask{z-index:50;pointer-events:none;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;inset:0}.art-video-player .art-mask .art-state{opacity:0;width:var(--art-state-size);height:var(--art-state-size);transition:all var(--art-transition-duration)ease;justify-content:center;align-items:center;display:flex;transform:scale(2)}.art-video-player.art-mask-show .art-state{cursor:pointer;pointer-events:auto;opacity:var(--art-state-opacity);transform:scale(1)}.art-video-player.art-loading-show .art-state{display:none}.art-video-player .art-loading{z-index:70;pointer-events:none;justify-content:center;align-items:center;width:100%;height:100%;display:none;position:absolute;inset:0}.art-video-player.art-loading-show .art-loading{display:flex}.art-video-player .art-bottom{z-index:60;opacity:0;pointer-events:none;width:100%;height:100%;padding:0 var(--art-padding);transition:all var(--art-transition-duration)ease;background-size:100% var(--art-bottom-height);background-image:linear-gradient(#0000,#0006,#000);background-position:bottom;background-repeat:repeat-x;flex-direction:column;justify-content:flex-end;display:flex;position:absolute;inset:0;overflow:hidden}.art-video-player .art-bottom .art-controls,.art-video-player .art-bottom .art-progress{transform:translateY(var(--art-bottom-offset));transition:transform var(--art-transition-duration)ease}.art-video-player.art-control-show .art-bottom,.art-video-player.art-hover .art-bottom{opacity:1}.art-video-player.art-control-show .art-bottom .art-controls,.art-video-player.art-hover .art-bottom .art-controls,.art-video-player.art-control-show .art-bottom .art-progress,.art-video-player.art-hover .art-bottom .art-progress{transform:translateY(0)}.art-bottom .art-progress{z-index:0;pointer-events:auto;padding-bottom:var(--art-bottom-gap);position:relative}.art-bottom .art-progress .art-control-progress{cursor:pointer;height:var(--art-progress-height);justify-content:center;align-items:center;display:flex;position:relative}.art-bottom .art-progress .art-control-progress .art-control-progress-inner{width:100%;height:50%;transition:height var(--art-transition-duration)ease;background-color:var(--art-progress-color);align-items:center;display:flex;position:relative}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-hover{z-index:0;background-color:var(--art-hover-color);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{z-index:10;background-color:var(--art-loaded-color);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-played{z-index:20;background-color:var(--art-theme);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{z-index:30;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{z-index:0;pointer-events:auto;width:100%;height:100%;transform:translateX(calc(var(--art-highlight-width)/-2));background-color:var(--art-highlight-color);position:absolute;inset:0 auto 0 0;width:var(--art-highlight-width)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{z-index:40;width:var(--art-indicator-size);height:var(--art-indicator-size);transform:scale(var(--art-indicator-scale));margin-left:calc(var(--art-indicator-size)/-2);transition:transform var(--art-transition-duration)ease;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;left:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator .art-icon{pointer-events:none;width:100%;height:100%}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:hover{transform:scale(1.2)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:active{transform:scale(1)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip{z-index:50;border-radius:var(--art-border-radius);white-space:nowrap;background-color:var(--art-tip-background);padding:3px 5px;font-size:12px;line-height:1;display:none;position:absolute;top:-25px;left:0}.art-bottom .art-progress .art-control-progress:hover .art-control-progress-inner{height:100%}.art-bottom .art-progress .art-control-thumbnails{bottom:calc(var(--art-bottom-gap) + 10px);border-radius:var(--art-border-radius);pointer-events:none;background-color:var(--art-widget-background);display:none;position:absolute;left:0;box-shadow:0 1px 3px #0003,0 1px 2px -1px #0003}.art-bottom:hover .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{transform:scale(1)}.art-controls{z-index:10;pointer-events:auto;height:var(--art-control-height);justify-content:space-between;align-items:center;display:flex;position:relative}.art-controls .art-controls-left,.art-controls .art-controls-right{height:100%;display:flex}.art-controls .art-controls-center{flex:1;justify-content:center;align-items:center;height:100%;padding:0 10px;display:none}.art-controls .art-controls-right{justify-content:flex-end}.art-controls .art-control{cursor:pointer;white-space:nowrap;opacity:var(--art-control-opacity);min-height:var(--art-control-height);min-width:var(--art-control-height);transition:opacity var(--art-transition-duration)ease;flex-shrink:0;justify-content:center;align-items:center;display:flex}.art-controls .art-control .art-icon{height:var(--art-control-icon-size);width:var(--art-control-icon-size);transform:scale(var(--art-control-icon-scale));transition:transform var(--art-transition-duration)ease}.art-controls .art-control .art-icon:active{transform:scale(calc(var(--art-control-icon-scale)*.8))}.art-controls .art-control:hover{opacity:1}.art-control-volume{position:relative}.art-control-volume .art-volume-panel{text-align:center;cursor:default;opacity:0;pointer-events:none;left:0;right:0;bottom:var(--art-control-height);width:var(--art-control-height);height:var(--art-volume-height);transition:all var(--art-transition-duration)ease;justify-content:center;align-items:center;padding:0 5px;font-size:12px;display:flex;position:absolute;transform:translateY(10px)}.art-control-volume .art-volume-panel .art-volume-inner{border-radius:var(--art-border-radius);background-color:var(--art-widget-background);flex-direction:column;align-items:center;gap:10px;width:100%;height:100%;padding:10px 0 12px;display:flex}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider{cursor:pointer;flex:1;justify-content:center;width:100%;display:flex;position:relative}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle{border-radius:var(--art-border-radius);background-color:#ffffff40;justify-content:center;width:2px;display:flex;position:relative;overflow:hidden}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle .art-volume-loaded{z-index:0;background-color:var(--art-theme);width:100%;height:100%;position:absolute;inset:0}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-indicator{width:var(--art-volume-handle-size);height:var(--art-volume-handle-size);margin-top:calc(var(--art-volume-handle-size)/-2);background-color:var(--art-theme);transition:transform var(--art-transition-duration)ease;border-radius:100%;flex-shrink:0;position:absolute;transform:scale(1)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider:active .art-volume-indicator{transform:scale(.9)}.art-control-volume:hover .art-volume-panel{opacity:1;pointer-events:auto;transform:translateY(0)}.art-video-player .art-notice{z-index:80;width:100%;height:auto;padding:var(--art-padding);pointer-events:none;display:none;position:absolute;inset:0 0 auto}.art-video-player .art-notice .art-notice-inner{border-radius:var(--art-border-radius);background-color:var(--art-tip-background);padding:5px;line-height:1;display:inline-flex}.art-video-player.art-notice-show .art-notice{display:flex}.art-video-player .art-contextmenus{z-index:120;border-radius:var(--art-border-radius);background-color:var(--art-widget-background);min-width:var(--art-contextmenus-min-width);flex-direction:column;padding:5px 0;font-size:12px;display:none;position:absolute}.art-video-player .art-contextmenus .art-contextmenu{cursor:pointer;border-bottom:1px solid #ffffff1a;padding:10px 15px;display:flex}.art-video-player .art-contextmenus .art-contextmenu span{padding:0 8px}.art-video-player .art-contextmenus .art-contextmenu span:hover,.art-video-player .art-contextmenus .art-contextmenu span.art-current{color:var(--art-theme)}.art-video-player .art-contextmenus .art-contextmenu:hover{background-color:#ffffff1a}.art-video-player .art-contextmenus .art-contextmenu:last-child{border-bottom:none}.art-video-player.art-contextmenu-show .art-contextmenus{display:flex}.art-video-player .art-settings{z-index:90;border-radius:var(--art-border-radius);max-height:var(--art-settings-max-height);left:auto;right:var(--art-padding);bottom:var(--art-control-height);transition:all var(--art-transition-duration)ease;background-color:var(--art-widget-background);flex-direction:column;display:none;position:absolute;overflow:hidden auto}.art-video-player .art-settings .art-setting-panel{flex-direction:column;display:none}.art-video-player .art-settings .art-setting-panel.art-current{display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item{cursor:pointer;transition:background-color var(--art-transition-duration)ease;justify-content:space-between;align-items:center;padding:0 5px;display:flex;overflow:hidden}.art-video-player .art-settings .art-setting-panel .art-setting-item:hover{background-color:#ffffff1a}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current{color:var(--art-theme)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-icon-check{visibility:hidden;height:15px}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current .art-icon-check{visibility:visible}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left{flex-shrink:0;justify-content:center;align-items:center;gap:5px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-icon{height:var(--art-settings-icon-size);width:var(--art-settings-icon-size);justify-content:center;align-items:center;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right{justify-content:center;align-items:center;gap:5px;font-size:12px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-tooltip{white-space:nowrap;color:#ffffff80}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-icon{justify-content:center;align-items:center;min-width:32px;height:24px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-range{appearance:none;background-color:#fff3;outline:none;width:80px;height:3px}.art-video-player .art-settings .art-setting-panel .art-setting-item-back{border-bottom:1px solid #ffffff1a}.art-video-player.art-setting-show .art-settings{display:flex}.art-video-player .art-info{left:var(--art-padding);top:var(--art-padding);z-index:100;border-radius:var(--art-border-radius);background-color:var(--art-widget-background);padding:10px;font-size:12px;display:none;position:absolute}.art-video-player .art-info .art-info-panel{flex-direction:column;gap:5px;display:flex}.art-video-player .art-info .art-info-panel .art-info-item{align-items:center;gap:5px;display:flex}.art-video-player .art-info .art-info-panel .art-info-item .art-info-title{text-align:right;width:100px}.art-video-player .art-info .art-info-panel .art-info-item .art-info-content{text-overflow:ellipsis;white-space:nowrap;user-select:all;width:250px;overflow:hidden}.art-video-player .art-info .art-info-close{cursor:pointer;position:absolute;top:5px;right:5px}.art-video-player.art-info-show .art-info{display:flex}.art-hide-cursor *{cursor:none!important}.art-video-player[data-aspect-ratio]{overflow:hidden}.art-video-player[data-aspect-ratio] .art-video{object-fit:fill;box-sizing:content-box}.art-fullscreen{--art-progress-height:8px;--art-indicator-size:20px;--art-control-height:60px;--art-control-icon-scale:1.3}.art-fullscreen-web{--art-progress-height:8px;--art-indicator-size:20px;--art-control-height:60px;--art-control-icon-scale:1.3;z-index:var(--art-fullscreen-web-index);width:100%;height:100%;position:fixed;inset:0}.art-mini-popup{z-index:9999;border-radius:var(--art-border-radius);cursor:move;user-select:none;background:#000;width:320px;height:180px;transition:opacity .2s;position:fixed;overflow:hidden;box-shadow:0 0 5px #00000080}.art-mini-popup svg{fill:#fff}.art-mini-popup .art-video{pointer-events:none}.art-mini-popup .art-mini-close{z-index:20;cursor:pointer;opacity:0;transition:opacity .2s;position:absolute;top:10px;right:10px}.art-mini-popup .art-mini-state{z-index:30;pointer-events:none;opacity:0;background-color:#00000040;justify-content:center;align-items:center;width:100%;height:100%;transition:opacity .2s;display:flex;position:absolute;inset:0}.art-mini-popup .art-mini-state .art-icon{opacity:.75;cursor:pointer;pointer-events:auto;transition:transform .2s;transform:scale(3)}.art-mini-popup .art-mini-state .art-icon:active{transform:scale(2.5)}.art-mini-popup.art-mini-dragging{opacity:.9}.art-mini-popup:hover .art-mini-close,.art-mini-popup:hover .art-mini-state{opacity:1}.art-video-player[data-flip=horizontal] .art-video{transform:scaleX(-1)}.art-video-player[data-flip=vertical] .art-video{transform:scaleY(-1)}.art-video-player .art-layer-lock{height:var(--art-lock-size);width:var(--art-lock-size);top:50%;left:var(--art-padding);background-color:var(--art-tip-background);border-radius:50%;justify-content:center;align-items:center;display:none;position:absolute;transform:translateY(-50%)}.art-video-player .art-layer-auto-playback{border-radius:var(--art-border-radius);left:var(--art-padding);bottom:calc(var(--art-control-height) + var(--art-bottom-gap) + 10px);background-color:var(--art-widget-background);align-items:center;gap:10px;padding:10px;line-height:1;display:none;position:absolute}.art-video-player .art-layer-auto-playback .art-auto-playback-close{cursor:pointer;justify-content:center;align-items:center;display:flex}.art-video-player .art-layer-auto-playback .art-auto-playback-close svg{width:15px;height:15px;fill:var(--art-theme)}.art-video-player .art-layer-auto-playback .art-auto-playback-jump{color:var(--art-theme);cursor:pointer}.art-video-player.art-lock .art-subtitle{bottom:var(--art-subtitle-bottom)!important}.art-video-player.art-mini-progress-bar .art-bottom,.art-video-player.art-lock .art-bottom{opacity:1;background-image:none;padding:0}.art-video-player.art-mini-progress-bar .art-bottom .art-controls,.art-video-player.art-lock .art-bottom .art-controls,.art-video-player.art-mini-progress-bar .art-bottom .art-progress,.art-video-player.art-lock .art-bottom .art-progress{transform:translateY(calc(var(--art-control-height) + var(--art-bottom-gap) + var(--art-progress-height)/4))}.art-video-player.art-mini-progress-bar .art-bottom .art-progress-indicator,.art-video-player.art-lock .art-bottom .art-progress-indicator{display:none!important}.art-video-player.art-control-show .art-layer-lock{display:flex}.art-control-selector{justify-content:center;display:flex;position:relative}.art-control-selector .art-selector-list{text-align:center;border-radius:var(--art-border-radius);opacity:0;pointer-events:none;bottom:var(--art-control-height);max-height:var(--art-selector-max-height);background-color:var(--art-widget-background);transition:all var(--art-transition-duration)ease;flex-direction:column;align-items:center;display:flex;position:absolute;overflow:hidden auto;transform:translateY(10px)}.art-control-selector .art-selector-list .art-selector-item{flex-shrink:0;justify-content:center;align-items:center;width:100%;padding:10px 15px;line-height:1;display:flex}.art-control-selector .art-selector-list .art-selector-item:hover{background-color:#ffffff1a}.art-control-selector .art-selector-list .art-selector-item:hover,.art-control-selector .art-selector-list .art-selector-item.art-current{color:var(--art-theme)}.art-control-selector:hover .art-selector-list{opacity:1;pointer-events:auto;transform:translateY(0)}[class*=hint--]{font-style:normal;display:inline-block;position:relative}[class*=hint--]:before,[class*=hint--]:after{visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;transition:all .3s;position:absolute;transform:translate(0,0)}[class*=hint--]:hover:before,[class*=hint--]:hover:after{visibility:visible;opacity:1;transition-delay:.1s}[class*=hint--]:before{content:"";z-index:1000001;background:0 0;border:6px solid #0000;position:absolute}[class*=hint--]:after{color:#fff;white-space:nowrap;background:#000;padding:8px 10px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;line-height:12px}[class*=hint--][aria-label]:after{content:attr(aria-label)}[class*=hint--][data-hint]:after{content:attr(data-hint)}[aria-label=""]:before,[aria-label=""]:after,[data-hint=""]:before,[data-hint=""]:after{display:none!important}.hint--top-left:before,.hint--top-right:before,.hint--top:before{border-top-color:#000}.hint--bottom-left:before,.hint--bottom-right:before,.hint--bottom:before{border-bottom-color:#000}.hint--left:before{border-left-color:#000}.hint--right:before{border-right-color:#000}.hint--top:before{margin-bottom:-11px}.hint--top:before,.hint--top:after{bottom:100%;left:50%}.hint--top:before{left:calc(50% - 6px)}.hint--top:after{transform:translate(-50%)}.hint--top:hover:before{transform:translateY(-8px)}.hint--top:hover:after{transform:translate(-50%)translateY(-8px)}.hint--bottom:before{margin-top:-11px}.hint--bottom:before,.hint--bottom:after{top:100%;left:50%}.hint--bottom:before{left:calc(50% - 6px)}.hint--bottom:after{transform:translate(-50%)}.hint--bottom:hover:before{transform:translateY(8px)}.hint--bottom:hover:after{transform:translate(-50%)translateY(8px)}.hint--right:before{margin-bottom:-6px;margin-left:-11px}.hint--right:after{margin-bottom:-14px}.hint--right:before,.hint--right:after{bottom:50%;left:100%}.hint--right:hover:before,.hint--right:hover:after{transform:translate(8px)}.hint--left:before{margin-bottom:-6px;margin-right:-11px}.hint--left:after{margin-bottom:-14px}.hint--left:before,.hint--left:after{bottom:50%;right:100%}.hint--left:hover:before,.hint--left:hover:after{transform:translate(-8px)}.hint--top-left:before{margin-bottom:-11px}.hint--top-left:before,.hint--top-left:after{bottom:100%;left:50%}.hint--top-left:before{left:calc(50% - 6px)}.hint--top-left:after{margin-left:12px;transform:translate(-100%)}.hint--top-left:hover:before{transform:translateY(-8px)}.hint--top-left:hover:after{transform:translate(-100%)translateY(-8px)}.hint--top-right:before{margin-bottom:-11px}.hint--top-right:before,.hint--top-right:after{bottom:100%;left:50%}.hint--top-right:before{left:calc(50% - 6px)}.hint--top-right:after{margin-left:-12px;transform:translate(0)}.hint--top-right:hover:before,.hint--top-right:hover:after{transform:translateY(-8px)}.hint--bottom-left:before{margin-top:-11px}.hint--bottom-left:before,.hint--bottom-left:after{top:100%;left:50%}.hint--bottom-left:before{left:calc(50% - 6px)}.hint--bottom-left:after{margin-left:12px;transform:translate(-100%)}.hint--bottom-left:hover:before{transform:translateY(8px)}.hint--bottom-left:hover:after{transform:translate(-100%)translateY(8px)}.hint--bottom-right:before{margin-top:-11px}.hint--bottom-right:before,.hint--bottom-right:after{top:100%;left:50%}.hint--bottom-right:before{left:calc(50% - 6px)}.hint--bottom-right:after{margin-left:-12px;transform:translate(0)}.hint--bottom-right:hover:before,.hint--bottom-right:hover:after{transform:translateY(8px)}.hint--small:after,.hint--medium:after,.hint--large:after{white-space:normal;word-wrap:break-word;line-height:1.4em}.hint--small:after{width:80px}.hint--medium:after{width:150px}.hint--large:after{width:300px}[class*=hint--]:after{text-shadow:0 -1px #000;box-shadow:4px 4px 8px #0000004d}.hint--error:after{text-shadow:0 -1px #592726;background-color:#b34e4d}.hint--error.hint--top-left:before,.hint--error.hint--top-right:before,.hint--error.hint--top:before{border-top-color:#b34e4d}.hint--error.hint--bottom-left:before,.hint--error.hint--bottom-right:before,.hint--error.hint--bottom:before{border-bottom-color:#b34e4d}.hint--error.hint--left:before{border-left-color:#b34e4d}.hint--error.hint--right:before{border-right-color:#b34e4d}.hint--warning:after{text-shadow:0 -1px #6c5328;background-color:#c09854}.hint--warning.hint--top-left:before,.hint--warning.hint--top-right:before,.hint--warning.hint--top:before{border-top-color:#c09854}.hint--warning.hint--bottom-left:before,.hint--warning.hint--bottom-right:before,.hint--warning.hint--bottom:before{border-bottom-color:#c09854}.hint--warning.hint--left:before{border-left-color:#c09854}.hint--warning.hint--right:before{border-right-color:#c09854}.hint--info:after{text-shadow:0 -1px #1a3c4d;background-color:#3986ac}.hint--info.hint--top-left:before,.hint--info.hint--top-right:before,.hint--info.hint--top:before{border-top-color:#3986ac}.hint--info.hint--bottom-left:before,.hint--info.hint--bottom-right:before,.hint--info.hint--bottom:before{border-bottom-color:#3986ac}.hint--info.hint--left:before{border-left-color:#3986ac}.hint--info.hint--right:before{border-right-color:#3986ac}.hint--success:after{text-shadow:0 -1px #1a321a;background-color:#458746}.hint--success.hint--top-left:before,.hint--success.hint--top-right:before,.hint--success.hint--top:before{border-top-color:#458746}.hint--success.hint--bottom-left:before,.hint--success.hint--bottom-right:before,.hint--success.hint--bottom:before{border-bottom-color:#458746}.hint--success.hint--left:before{border-left-color:#458746}.hint--success.hint--right:before{border-right-color:#458746}.hint--always:after,.hint--always:before{opacity:1;visibility:visible}.hint--always.hint--top:before{transform:translateY(-8px)}.hint--always.hint--top:after{transform:translate(-50%)translateY(-8px)}.hint--always.hint--top-left:before{transform:translateY(-8px)}.hint--always.hint--top-left:after{transform:translate(-100%)translateY(-8px)}.hint--always.hint--top-right:before,.hint--always.hint--top-right:after{transform:translateY(-8px)}.hint--always.hint--bottom:before{transform:translateY(8px)}.hint--always.hint--bottom:after{transform:translate(-50%)translateY(8px)}.hint--always.hint--bottom-left:before{transform:translateY(8px)}.hint--always.hint--bottom-left:after{transform:translate(-100%)translateY(8px)}.hint--always.hint--bottom-right:before,.hint--always.hint--bottom-right:after{transform:translateY(8px)}.hint--always.hint--left:before,.hint--always.hint--left:after{transform:translate(-8px)}.hint--always.hint--right:before,.hint--always.hint--right:after{transform:translate(8px)}.hint--rounded:after{border-radius:4px}.hint--no-animate:before,.hint--no-animate:after{transition-duration:0s}.hint--bounce:before,.hint--bounce:after{-webkit-transition:opacity .3s,visibility .3s,-webkit-transform .3s cubic-bezier(.71,1.7,.77,1.24);-moz-transition:opacity .3s,visibility .3s,-moz-transform .3s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .3s,visibility .3s,transform .3s cubic-bezier(.71,1.7,.77,1.24)}.hint--no-shadow:before,.hint--no-shadow:after{text-shadow:initial;box-shadow:initial}.hint--no-arrow:before{display:none}.art-video-player.art-mobile{--art-bottom-gap:10px;--art-control-height:38px;--art-control-icon-scale:1;--art-state-size:60px;--art-settings-max-height:180px;--art-selector-max-height:180px;--art-indicator-scale:1;--art-control-opacity:1}.art-video-player.art-mobile .art-controls-left{margin-left:calc(var(--art-padding)/-1)}.art-video-player.art-mobile .art-controls-right{margin-right:calc(var(--art-padding)/-1)}'},{}],iscjH:[function(e,t,r,a){t.exports=function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}var t=Object.prototype.toString,r=function(r){if(void 0===r)return"undefined";if(null===r)return"null";var o=e(r);if("boolean"===o)return"boolean";if("string"===o)return"string";if("number"===o)return"number";if("symbol"===o)return"symbol";if("function"===o)return"GeneratorFunction"===a(r)?"generatorfunction":"function";if(Array.isArray?Array.isArray(r):r instanceof Array)return"array";if(r.constructor&&"function"==typeof r.constructor.isBuffer&&r.constructor.isBuffer(r))return"buffer";if(function(e){try{if("number"==typeof e.length&&"function"==typeof e.callee)return!0}catch(e){if(-1!==e.message.indexOf("callee"))return!0}return!1}(r))return"arguments";if(r instanceof Date||"function"==typeof r.toDateString&&"function"==typeof r.getDate&&"function"==typeof r.setDate)return"date";if(r instanceof Error||"string"==typeof r.message&&r.constructor&&"number"==typeof r.constructor.stackTraceLimit)return"error";if(r instanceof RegExp||"string"==typeof r.flags&&"boolean"==typeof r.ignoreCase&&"boolean"==typeof r.multiline&&"boolean"==typeof r.global)return"regexp";switch(a(r)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if("function"==typeof r.throw&&"function"==typeof r.return&&"function"==typeof r.next)return"generator";switch(o=t.call(r)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return o.slice(8,-1).toLowerCase().replace(/\s/g,"")};function a(e){return e.constructor?e.constructor.name:null}function o(e,t){var a=2","license":"MIT","homepage":"https://artplayer.org","repository":{"type":"git","url":"git+https://github.com/zhw2590582/ArtPlayer.git"},"bugs":{"url":"https://github.com/zhw2590582/ArtPlayer/issues"},"keywords":["html5","video","player"],"main":"dist/artplayer.js","legacy":"dist/artplayer.legacy.js","types":"types/artplayer.d.ts","browserslist":"last 1 Chrome version","dependencies":{"option-validator":"^2.0.6"}}')},{}],icOIG:[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r),r.default={properties:["audioTracks","autoplay","buffered","controller","controls","crossOrigin","currentSrc","currentTime","defaultMuted","defaultPlaybackRate","duration","ended","error","loop","mediaGroup","muted","networkState","paused","playbackRate","played","preload","readyState","seekable","seeking","src","startDate","textTracks","videoTracks","volume"],methods:["addTextTrack","canPlayType","load","play","pause"],events:["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"],prototypes:["width","height","videoWidth","videoHeight","poster","webkitDecodedFrameCount","webkitDroppedFrameCount","playsInline","webkitSupportsFullscreen","webkitDisplayingFullscreen","onenterpictureinpicture","onleavepictureinpicture","disablePictureInPicture","cancelVideoFrameCallback","requestVideoFrameCallback","getVideoPlaybackQuality","requestPictureInPicture","webkitEnterFullScreen","webkitEnterFullscreen","webkitExitFullScreen","webkitExitFullscreen"]}},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6ykb1":[function(e,t,r,a){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}],"669K4":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("../utils"),n=e("../utils/component"),s=o.interopDefault(n),l=e("./aspectRatio"),c=o.interopDefault(l),p=e("./close"),u=o.interopDefault(p),d=e("./flip"),f=o.interopDefault(d),h=e("./info"),m=o.interopDefault(h),g=e("./playbackRate"),v=o.interopDefault(g),y=e("./version"),b=o.interopDefault(y);class x extends s.default{constructor(e){super(e),this.name="contextmenu",this.$parent=e.template.$contextmenu,i.isMobile||this.init()}init(){let{option:e,proxy:t,template:{$player:r,$contextmenu:a}}=this.art;e.playbackRate&&this.add((0,v.default)({name:"playbackRate",index:10})),e.aspectRatio&&this.add((0,c.default)({name:"aspectRatio",index:20})),e.flip&&this.add((0,f.default)({name:"flip",index:30})),this.add((0,m.default)({name:"info",index:40})),this.add((0,b.default)({name:"version",index:50})),this.add((0,u.default)({name:"close",index:60}));for(let t=0;t{if(!this.art.constructor.CONTEXTMENU)return;e.preventDefault(),this.show=!0;let t=e.clientX,o=e.clientY,{height:n,width:s,left:l,top:c}=(0,i.getRect)(r),{height:p,width:u}=(0,i.getRect)(a),d=t-l,f=o-c;t+u>l+s&&(d=s-u),o+p>c+n&&(f=n-p),(0,i.setStyles)(a,{top:`${f}px`,left:`${d}px`})}),t(r,"click",e=>{(0,i.includeFromEvent)(e,a)||(this.show=!1)}),this.art.on("blur",()=>{this.show=!1})}}r.default=x},{"../utils":"3eYxa","../utils/component":"1lUmE","./aspectRatio":"cLwhW","./close":"1OdE3","./flip":"gTbXH","./info":"51BMv","./playbackRate":"hzsOn","./version":"gsm66","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"3eYxa":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("./compatibility");o.exportAll(i,r);var n=e("./dom");o.exportAll(n,r);var s=e("./error");o.exportAll(s,r);var l=e("./file");o.exportAll(l,r);var c=e("./format");o.exportAll(c,r);var p=e("./property");o.exportAll(p,r);var u=e("./subtitle");o.exportAll(u,r);var d=e("./time");o.exportAll(d,r)},{"./compatibility":"kugJP","./dom":"4w3SA","./error":"iu2jQ","./file":"iE5c3","./format":"6uKmQ","./property":"13VsI","./subtitle":"bhlxy","./time":"2xmIQ","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],kugJP:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"userAgent",()=>i),o.export(r,"isSafari",()=>n),o.export(r,"isWechat",()=>s),o.export(r,"isIE",()=>l),o.export(r,"isAndroid",()=>c),o.export(r,"isIOS",()=>p),o.export(r,"isIOS13",()=>u),o.export(r,"isMobile",()=>d),o.export(r,"isBrowser",()=>f);let i=globalThis?.CUSTOM_USER_AGENT??("undefined"!=typeof navigator?navigator.userAgent:""),n=/^(?:(?!chrome|android).)*safari/i.test(i),s=/MicroMessenger/i.test(i),l=/MSIE|Trident/i.test(i),c=/android/i.test(i),p=/iPad|iPhone|iPod/i.test(i)&&!window.MSStream,u=p||i.includes("Macintosh")&&navigator.maxTouchPoints>=1,d=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(i)||u,f="undefined"!=typeof window},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"4w3SA":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"query",()=>n),o.export(r,"queryAll",()=>s),o.export(r,"addClass",()=>l),o.export(r,"removeClass",()=>c),o.export(r,"hasClass",()=>p),o.export(r,"append",()=>u),o.export(r,"remove",()=>d),o.export(r,"setStyle",()=>f),o.export(r,"setStyles",()=>h),o.export(r,"getStyle",()=>m),o.export(r,"siblings",()=>g),o.export(r,"inverseClass",()=>v),o.export(r,"tooltip",()=>y),o.export(r,"isInViewport",()=>b),o.export(r,"includeFromEvent",()=>x),o.export(r,"replaceElement",()=>w),o.export(r,"createElement",()=>k),o.export(r,"getIcon",()=>j),o.export(r,"setStyleText",()=>S),o.export(r,"supportsFlex",()=>$),o.export(r,"getRect",()=>E),o.export(r,"loadImg",()=>I),o.export(r,"getComposedPath",()=>M);var i=e("./compatibility");function n(e,t=document){return t.querySelector(e)}function s(e,t=document){return Array.from(t.querySelectorAll(e))}function l(e,t){return e.classList.add(t)}function c(e,t){return e.classList.remove(t)}function p(e,t){return e.classList.contains(t)}function u(e,t){return t instanceof Element?e.appendChild(t):e.insertAdjacentHTML("beforeend",String(t)),e.lastElementChild||e.lastChild}function d(e){return e.parentNode.removeChild(e)}function f(e,t,r){return e.style[t]=r,e}function h(e,t){for(let r in t)f(e,r,t[r]);return e}function m(e,t,r=!0){let a=window.getComputedStyle(e,null).getPropertyValue(t);return r?Number.parseFloat(a):a}function g(e){return Array.from(e.parentElement.children).filter(t=>t!==e)}function v(e,t){g(e).forEach(e=>c(e,t)),l(e,t)}function y(e,t,r="top"){i.isMobile||(e.setAttribute("aria-label",t),l(e,"hint--rounded"),l(e,`hint--${r}`))}function b(e,t=0){let r=e.getBoundingClientRect(),a=window.innerHeight||document.documentElement.clientHeight,o=window.innerWidth||document.documentElement.clientWidth,i=r.top-t<=a&&r.top+r.height+t>=0,n=r.left-t<=o+t&&r.left+r.width+t>=0;return i&&n}function x(e,t){return M(e).includes(t)}function w(e,t){return t.parentNode.replaceChild(e,t),e}function k(e){return document.createElement(e)}function j(e="",t=""){let r=k("i");return l(r,"art-icon"),l(r,`art-icon-${e}`),u(r,t),r}function S(e,t){let r=document.getElementById(e);r||((r=document.createElement("style")).id=e,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{document.head.appendChild(r)}):(document.head||document.documentElement).appendChild(r)),r.textContent=t}function $(){let e=document.createElement("div");return e.style.display="flex","flex"===e.style.display}function E(e){return e.getBoundingClientRect()}function I(e,t){return new Promise((r,a)=>{let o=new Image;o.onload=function(){if(t&&1!==t){let i=document.createElement("canvas"),n=i.getContext("2d");i.width=o.width*t,i.height=o.height*t,n.drawImage(o,0,0,i.width,i.height),i.toBlob(t=>{let o=URL.createObjectURL(t),i=new Image;i.onload=function(){r(i)},i.onerror=function(){URL.revokeObjectURL(o),a(Error(`Image load failed: ${e}`))},i.src=o})}else r(o)},o.onerror=function(){a(Error(`Image load failed: ${e}`))},o.src=e})}function M(e){if(e.composedPath)return e.composedPath();let t=[],r=e.target;for(;r;)t.push(r),r=r.parentNode;return t.includes(window)||void 0===window||t.push(window),t}},{"./compatibility":"kugJP","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],iu2jQ:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"ArtPlayerError",()=>i),o.export(r,"errorHandle",()=>n);class i extends Error{constructor(e,t){super(e),"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,t||this.constructor),this.name="ArtPlayerError"}}function n(e,t){if(!e)throw new i(t);return e}},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],iE5c3:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e,t){let r=document.createElement("a");r.style.display="none",r.href=e,r.download=t,document.body.appendChild(r),r.click(),document.body.removeChild(r)}o.defineInteropFlag(r),o.export(r,"getExt",()=>function e(t){return t.includes("?")?e(t.split("?")[0]):t.includes("#")?e(t.split("#")[0]):t.trim().toLowerCase().split(".").pop()}),o.export(r,"download",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6uKmQ":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function n(e){return e.charAt(0).toUpperCase()+e.slice(1)}function s(e){if(!e)return"00:00";let t=Math.floor(e/3600),r=Math.floor((e-3600*t)/60),a=Math.floor(e-3600*t-60*r);return(t>0?[t,r,a]:[r,a]).map(e=>e<10?`0${e}`:String(e)).join(":")}function l(e){return e.replace(/[&<>'"]/g,e=>({"&":"&","<":"<",">":">","'":"'",'"':"""})[e]||e)}function c(e){let t={"&":"&","<":"<",">":">","'":"'",""":'"'},r=RegExp(`(${Object.keys(t).join("|")})`,"g");return e.replace(r,e=>t[e]||e)}o.defineInteropFlag(r),o.export(r,"clamp",()=>i),o.export(r,"capitalize",()=>n),o.export(r,"secondToTime",()=>s),o.export(r,"escape",()=>l),o.export(r,"unescape",()=>c)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"13VsI":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"def",()=>i),o.export(r,"has",()=>s),o.export(r,"get",()=>l),o.export(r,"mergeDeep",()=>function e(...t){let r=e=>e&&"object"==typeof e&&!Array.isArray(e);return t.reduce((t,a)=>(Object.keys(a).forEach(o=>{let i=t[o],n=a[o];Array.isArray(i)&&Array.isArray(n)?t[o]=i.concat(...n):r(i)&&r(n)?t[o]=e(i,n):t[o]=n}),t),{})});let i=Object.defineProperty,{hasOwnProperty:n}=Object.prototype;function s(e,t){return n.call(e,t)}function l(e,t){return Object.getOwnPropertyDescriptor(e,t)}},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],bhlxy:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){return"WEBVTT \r\n\r\n".concat(e.replace(/(\d\d:\d\d:\d\d)[,.](\d+)/g,(e,t,r)=>{let a=r.slice(0,3);return 1===r.length&&(a=`${r}00`),2===r.length&&(a=`${r}0`),`${t},${a}`}).replace(/\{\\([ibu])\}/g,"").replace(/\{\\([ibu])1\}/g,"<$1>").replace(/\{([ibu])\}/g,"<$1>").replace(/\{\/([ibu])\}/g,"").replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g,"$1.$2").replace(/\{[\s\S]*?\}/g,"").concat("\r\n\r\n"))}function n(e){return URL.createObjectURL(new Blob([e],{type:"text/vtt"}))}function s(e){let t=RegExp("Dialogue:\\s\\d,(\\d+:\\d\\d:\\d\\d.\\d\\d),(\\d+:\\d\\d:\\d\\d.\\d\\d),([^,]*),([^,]*),(?:[^,]*,){4}([\\s\\S]*)$","i");function r(e=""){return e.split(/[:.]/).map((e,t,r)=>{if(t===r.length-1){if(1===e.length)return`.${e}00`;if(2===e.length)return`.${e}0`}else if(1===e.length)return(0===t?"0":":0")+e;return 0===t?e:t===r.length-1?`.${e}`:`:${e}`}).join("")}return`WEBVTT ${e.split(/\r?\n/).map(e=>{let a=e.match(t);return a?{start:r(a[1].trim()),end:r(a[2].trim()),text:a[5].replace(/\{[\s\S]*?\}/g,"").replace(/(\\N)/g,"\n").trim().split(/\r?\n/).map(e=>e.trim()).join("\n")}:null}).filter(e=>e).map((e,t)=>e?`${t+1} ${e.start} --> ${e.end} ${e.text}`:"").filter(e=>e.trim()).join("\n\n")}`}o.defineInteropFlag(r),o.export(r,"srtToVtt",()=>i),o.export(r,"vttToBlob",()=>n),o.export(r,"assToVtt",()=>s)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"2xmIQ":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e=0){return new Promise(t=>setTimeout(t,e))}function n(e,t){let r;return function(...a){let o=()=>(r=null,e.apply(this,a));clearTimeout(r),r=setTimeout(o,t)}}function s(e,t){let r=!1;return function(...a){r||(e.apply(this,a),r=!0,setTimeout(()=>{r=!1},t))}}o.defineInteropFlag(r),o.export(r,"sleep",()=>i),o.export(r,"debounce",()=>n),o.export(r,"throttle",()=>s)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"1lUmE":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("option-validator"),n=o.interopDefault(i),s=e("../scheme"),l=e("./dom"),c=e("./error");r.default=class{constructor(e){this.id=0,this.art=e,this.cache=new Map,this.add=this.add.bind(this),this.remove=this.remove.bind(this),this.update=this.update.bind(this)}get show(){return(0,l.hasClass)(this.art.template.$player,`art-${this.name}-show`)}set show(e){let{$player:t}=this.art.template,r=`art-${this.name}-show`;e?(0,l.addClass)(t,r):(0,l.removeClass)(t,r),this.art.emit(this.name,e)}toggle(){this.show=!this.show}add(e){let t="function"==typeof e?e(this.art):e;if(t.html=t.html||"",(0,n.default)(t,s.ComponentOption),!this.$parent||!this.name||t.disable)return;let r=t.name||`${this.name}${this.id}`,a=this.cache.get(r);(0,c.errorHandle)(!a,`Can't add an existing [${r}] to the [${this.name}]`),this.id+=1;let o=(0,l.createElement)("div");(0,l.addClass)(o,`art-${this.name}`),(0,l.addClass)(o,`art-${this.name}-${r}`);let i=Array.from(this.$parent.children);o.dataset.index=t.index||this.id;let p=i.find(e=>Number(e.dataset.index)>=Number(o.dataset.index));p?p.insertAdjacentElement("beforebegin",o):(0,l.append)(this.$parent,o),t.html&&(0,l.append)(o,t.html),t.style&&(0,l.setStyles)(o,t.style),t.tooltip&&(0,l.tooltip)(o,t.tooltip);let u=[];if(t.click){let e=this.art.events.proxy(o,"click",e=>{e.preventDefault(),t.click.call(this.art,this,e)});u.push(e)}return t.selector&&["left","right"].includes(t.position)&&this.selector(t,o,u),this[r]=o,this.cache.set(r,{$ref:o,events:u,option:t}),t.mounted&&t.mounted.call(this.art,o),o}remove(e){let t=this.cache.get(e);(0,c.errorHandle)(t,`Can't find [${e}] from the [${this.name}]`),t.option.beforeUnmount&&t.option.beforeUnmount.call(this.art,t.$ref);for(let e=0;ef);var i=e("../utils");let n="array",s="boolean",l="string",c="number",p="object",u="function";function d(e,t,r){return(0,i.errorHandle)(t===l||t===c||e instanceof Element,`${r.join(".")} require '${l}' or 'Element' type`)}let f={html:d,disable:`?${s}`,name:`?${l}`,index:`?${c}`,style:`?${p}`,click:`?${u}`,mounted:`?${u}`,tooltip:`?${l}|${c}`,width:`?${c}`,selector:`?${n}`,onSelect:`?${u}`,switch:`?${s}`,onSwitch:`?${u}`,range:`?${n}`,onRange:`?${u}`,onChange:`?${u}`};r.default={id:l,container:d,url:l,poster:l,type:l,theme:l,lang:l,volume:c,isLive:s,muted:s,autoplay:s,autoSize:s,autoMini:s,loop:s,flip:s,playbackRate:s,aspectRatio:s,screenshot:s,setting:s,hotkey:s,pip:s,mutex:s,backdrop:s,fullscreen:s,fullscreenWeb:s,subtitleOffset:s,miniProgressBar:s,useSSR:s,playsInline:s,lock:s,gesture:s,fastForward:s,autoPlayback:s,autoOrientation:s,airplay:s,proxy:`?${u}`,plugins:[u],layers:[f],contextmenu:[f],settings:[f],controls:[{...f,position:(e,t,r)=>{let a=["top","left","right"];return(0,i.errorHandle)(a.includes(e),`${r.join(".")} only accept ${a.toString()} as parameters`)}}],quality:[{default:`?${s}`,html:l,url:l}],highlight:[{time:c,text:l}],thumbnails:{url:l,number:c,column:c,width:c,height:c,scale:c},subtitle:{url:l,name:l,type:l,style:p,escape:s,encoding:l,onVttLoad:u},moreVideoAttr:p,i18n:p,icons:p,cssVar:p,customType:p}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],cLwhW:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>{let{i18n:r,constructor:{ASPECT_RATIO:a}}=t,o=a.map(e=>`${"default"===e?r.get("Default"):e}`).join("");return{...e,html:`${r.get("Aspect Ratio")}: ${o}`,click:(e,r)=>{let{value:a}=r.target.dataset;a&&(t.aspectRatio=a,e.show=!1)},mounted:e=>{let r=(0,i.query)('[data-value="default"]',e);r&&(0,i.inverseClass)(r,"art-current"),t.on("aspectRatio",t=>{let r=(0,i.queryAll)("span",e).find(e=>e.dataset.value===t);r&&(0,i.inverseClass)(r,"art-current")})}}}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"1OdE3":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){return t=>({...e,html:t.i18n.get("Close"),click:e=>{e.show=!1}})}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],gTbXH:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>{let{i18n:r,constructor:{FLIP:a}}=t,o=a.map(e=>`${r.get((0,i.capitalize)(e))}`).join("");return{...e,html:`${r.get("Video Flip")}: ${o}`,click:(e,r)=>{let{value:a}=r.target.dataset;a&&(t.flip=a.toLowerCase(),e.show=!1)},mounted:e=>{let r=(0,i.query)('[data-value="normal"]',e);r&&(0,i.inverseClass)(r,"art-current"),t.on("flip",t=>{let r=(0,i.queryAll)("span",e).find(e=>e.dataset.value===t);r&&(0,i.inverseClass)(r,"art-current")})}}}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"51BMv":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){return t=>({...e,html:t.i18n.get("Video Info"),click:e=>{t.info.show=!0,e.show=!1}})}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],hzsOn:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>{let{i18n:r,constructor:{PLAYBACK_RATE:a}}=t,o=a.map(e=>`${1===e?r.get("Normal"):e.toFixed(1)}`).join("");return{...e,html:`${r.get("Play Speed")}: ${o}`,click:(e,r)=>{let{value:a}=r.target.dataset;a&&(t.playbackRate=Number(a),e.show=!1)},mounted:e=>{let r=(0,i.query)('[data-value="1"]',e);r&&(0,i.inverseClass)(r,"art-current"),t.on("video:ratechange",()=>{let r=(0,i.queryAll)("span",e).find(e=>Number(e.dataset.value)===t.playbackRate);r&&(0,i.inverseClass)(r,"art-current")})}}}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],gsm66:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>function(e){return{...e,html:`ArtPlayer ${i.version}`}});var i=e("../../package.json")},{"../../package.json":"7z0bJ","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],g00bY:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("../utils"),n=e("../utils/component"),s=o.interopDefault(n),l=e("./airplay"),c=o.interopDefault(l),p=e("./fullscreen"),u=o.interopDefault(p),d=e("./fullscreenWeb"),f=o.interopDefault(d),h=e("./pip"),m=o.interopDefault(h),g=e("./playAndPause"),v=o.interopDefault(g),y=e("./progress"),b=o.interopDefault(y),x=e("./screenshot"),w=o.interopDefault(x),k=e("./setting"),j=o.interopDefault(k),S=e("./time"),$=o.interopDefault(S),E=e("./volume"),I=o.interopDefault(E);class M extends s.default{constructor(e){super(e),this.isHover=!1,this.name="control",this.timer=Date.now();let{constructor:t}=e,{$player:r,$bottom:a}=this.art.template;e.on("mousemove",()=>{i.isMobile||(this.show=!0)}),e.on("click",()=>{i.isMobile?this.toggle():this.show=!0}),e.on("document:mousemove",e=>{this.isHover=(0,i.includeFromEvent)(e,a)}),e.on("video:timeupdate",()=>{!e.setting.show&&!this.isHover&&!e.isInput&&e.playing&&this.show&&Date.now()-this.timer>=t.CONTROL_HIDE_TIME&&(this.show=!1)}),e.on("control",e=>{e?((0,i.removeClass)(r,"art-hide-cursor"),(0,i.addClass)(r,"art-hover"),this.timer=Date.now()):((0,i.addClass)(r,"art-hide-cursor"),(0,i.removeClass)(r,"art-hover"))}),this.init()}init(){let{option:e}=this.art;e.isLive||this.add((0,b.default)({name:"progress",position:"top",index:10})),this.add({name:"thumbnails",position:"top",index:20}),this.add((0,v.default)({name:"playAndPause",position:"left",index:10})),this.add((0,I.default)({name:"volume",position:"left",index:20})),e.isLive||this.add((0,$.default)({name:"time",position:"left",index:30})),e.quality.length&&(0,i.sleep)().then(()=>{this.art.quality=e.quality}),e.screenshot&&!i.isMobile&&this.add((0,w.default)({name:"screenshot",position:"right",index:20})),e.setting&&this.add((0,j.default)({name:"setting",position:"right",index:30})),e.pip&&this.add((0,m.default)({name:"pip",position:"right",index:40})),e.airplay&&window.WebKitPlaybackTargetAvailabilityEvent&&this.add((0,c.default)({name:"airplay",position:"right",index:50})),e.fullscreenWeb&&this.add((0,f.default)({name:"fullscreenWeb",position:"right",index:60})),e.fullscreen&&this.add((0,u.default)({name:"fullscreen",position:"right",index:70}));for(let t=0;te.selector}),(0,i.def)(r,"$control_item",{get:()=>a}),(0,i.def)(r,"$control_value",{get:()=>o})}let s=a(n,"click",async t=>{let r=(0,i.getComposedPath)(t),a=e.selector.find(e=>e.$control_item===r.find(t=>e.$control_item===t));this.check(a),e.onSelect&&(o.innerHTML=await e.onSelect.call(this.art,a,a.$control_item,t))});r.push(s)}}r.default=M},{"../utils":"3eYxa","../utils/component":"1lUmE","./airplay":"8gGQa","./fullscreen":"kgZrr","./fullscreenWeb":"9vue2","./pip":"6OjmD","./playAndPause":"g667z","./progress":"iO48g","./screenshot":"958YD","./setting":"i57Di","./time":"6lVHn","./volume":"f1tg5","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"8gGQa":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("AirPlay"),mounted:e=>{let{proxy:r,icons:a}=t;(0,i.append)(e,a.airplay),r(e,"click",()=>t.airplay())}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],kgZrr:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("Fullscreen"),mounted:e=>{let{proxy:r,icons:a,i18n:o}=t,n=(0,i.append)(e,a.fullscreenOn),s=(0,i.append)(e,a.fullscreenOff);(0,i.setStyle)(s,"display","none"),r(e,"click",()=>{t.fullscreen=!t.fullscreen}),t.on("fullscreen",t=>{t?((0,i.tooltip)(e,o.get("Exit Fullscreen")),(0,i.setStyle)(n,"display","none"),(0,i.setStyle)(s,"display","inline-flex")):((0,i.tooltip)(e,o.get("Fullscreen")),(0,i.setStyle)(n,"display","inline-flex"),(0,i.setStyle)(s,"display","none"))})}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"9vue2":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("Web Fullscreen"),mounted:e=>{let{proxy:r,icons:a,i18n:o}=t,n=(0,i.append)(e,a.fullscreenWebOn),s=(0,i.append)(e,a.fullscreenWebOff);(0,i.setStyle)(s,"display","none"),r(e,"click",()=>{t.fullscreenWeb=!t.fullscreenWeb}),t.on("fullscreenWeb",t=>{t?((0,i.tooltip)(e,o.get("Exit Web Fullscreen")),(0,i.setStyle)(n,"display","none"),(0,i.setStyle)(s,"display","inline-flex")):((0,i.tooltip)(e,o.get("Web Fullscreen")),(0,i.setStyle)(n,"display","inline-flex"),(0,i.setStyle)(s,"display","none"))})}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6OjmD":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("PIP Mode"),mounted:e=>{let{proxy:r,icons:a,i18n:o}=t;(0,i.append)(e,a.pip),r(e,"click",()=>{t.pip=!t.pip}),t.on("pip",t=>{(0,i.tooltip)(e,o.get(t?"Exit PIP Mode":"PIP Mode"))})}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],g667z:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,mounted:e=>{let{proxy:r,icons:a,i18n:o}=t,n=(0,i.append)(e,a.play),s=(0,i.append)(e,a.pause);function l(){(0,i.setStyle)(n,"display","flex"),(0,i.setStyle)(s,"display","none")}function c(){(0,i.setStyle)(n,"display","none"),(0,i.setStyle)(s,"display","flex")}(0,i.tooltip)(n,o.get("Play")),(0,i.tooltip)(s,o.get("Pause")),r(n,"click",()=>{t.play()}),r(s,"click",()=>{t.pause()}),t.playing?c():l(),t.on("video:playing",()=>{c()}),t.on("video:pause",()=>{l()})}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],iO48g:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"getPosFromEvent",()=>n),o.export(r,"setCurrentTime",()=>s),o.export(r,"default",()=>l);var i=e("../utils");function n(e,t){let{$progress:r}=e.template,{left:a}=(0,i.getRect)(r),o=i.isMobile?t.touches[0].clientX:t.clientX,n=(0,i.clamp)(o-a,0,r.clientWidth),s=n/r.clientWidth*e.duration,l=(0,i.secondToTime)(s),c=(0,i.clamp)(n/r.clientWidth,0,1);return{second:s,time:l,width:n,percentage:c}}function s(e,t){if(e.isRotate){let r=t.touches[0].clientY/e.height,a=r*e.duration;e.emit("setBar","played",r,t),e.seek=a}else{let{second:r,percentage:a}=n(e,t);e.emit("setBar","played",a,t),e.seek=r}}function l(e){return t=>{let{icons:r,option:a,proxy:o}=t;return{...e,html:`
`,mounted:e=>{let l=null,c=!1,p=(0,i.query)(".art-progress-hover",e),u=(0,i.query)(".art-progress-loaded",e),d=(0,i.query)(".art-progress-played",e),f=(0,i.query)(".art-progress-highlight",e),h=(0,i.query)(".art-progress-indicator",e),m=(0,i.query)(".art-progress-tip",e);function g(r,a){let{width:o,time:s}=a||n(t,r);m.textContent=s;let l=m.clientWidth;o<=l/2?(0,i.setStyle)(m,"left",0):o>e.clientWidth-l/2?(0,i.setStyle)(m,"left",`${e.clientWidth-l}px`):(0,i.setStyle)(m,"left",`${o-l/2}px`)}r.indicator?(0,i.append)(h,r.indicator):(0,i.setStyle)(h,"backgroundColor","var(--art-theme)"),t.on("setBar",function(r,a,o){let n="played"===r&&o&&i.isMobile;"loaded"===r&&(0,i.setStyle)(u,"width",`${100*a}%`),"hover"===r&&(0,i.setStyle)(p,"width",`${100*a}%`),"played"===r&&((0,i.setStyle)(d,"width",`${100*a}%`),(0,i.setStyle)(h,"left",`${100*a}%`)),n&&((0,i.setStyle)(m,"display","flex"),g(o,{width:e.clientWidth*a,time:(0,i.secondToTime)(a*t.duration)}),clearTimeout(l),l=setTimeout(()=>{(0,i.setStyle)(m,"display","none")},500))}),t.on("video:loadedmetadata",function(){f.textContent="";for(let e=0;e`;(0,i.append)(f,n)}}),t.constructor.USE_RAF?t.on("raf",()=>{t.emit("setBar","played",t.played),t.emit("setBar","loaded",t.loaded)}):(t.on("video:timeupdate",()=>{t.emit("setBar","played",t.played)}),t.on("video:progress",()=>{t.emit("setBar","loaded",t.loaded)}),t.on("video:ended",()=>{t.emit("setBar","played",1)})),t.emit("setBar","loaded",t.loaded||0),i.isMobile||(o(e,"click",e=>{e.target!==h&&s(t,e)}),o(e,"mousemove",r=>{let{percentage:a}=n(t,r);if(t.emit("setBar","hover",a,r),(0,i.setStyle)(m,"display","flex"),(0,i.includeFromEvent)(r,f)){let{width:a}=n(t,r),{text:o}=r.target.dataset;m.textContent=o;let s=m.clientWidth;a<=s/2?(0,i.setStyle)(m,"left",0):a>e.clientWidth-s/2?(0,i.setStyle)(m,"left",`${e.clientWidth-s}px`):(0,i.setStyle)(m,"left",`${a-s/2}px`)}else g(r)}),o(e,"mouseleave",e=>{(0,i.setStyle)(m,"display","none"),t.emit("setBar","hover",0,e)}),o(e,"mousedown",e=>{c=0===e.button}),t.on("document:mousemove",e=>{if(c){let{second:r,percentage:a}=n(t,e);t.emit("setBar","played",a,e),t.seek=r}}),t.on("document:mouseup",()=>{c&&(c=!1)}))}}}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"958YD":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("Screenshot"),mounted:e=>{let{proxy:r,icons:a}=t;(0,i.append)(e,a.screenshot),r(e,"click",()=>{t.screenshot()})}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],i57Di:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("Show Setting"),mounted:e=>{let{proxy:r,icons:a,i18n:o}=t;(0,i.append)(e,a.setting),r(e,"click",()=>{t.setting.toggle(),t.setting.resize()}),t.on("setting",t=>{(0,i.tooltip)(e,o.get(t?"Hide Setting":"Show Setting"))})}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6lVHn":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,style:i.isMobile?{fontSize:"12px",padding:"0 5px"}:{cursor:"auto",padding:"0 10px"},mounted:e=>{function r(){let r=`${(0,i.secondToTime)(t.currentTime)} / ${(0,i.secondToTime)(t.duration)}`;r!==e.textContent&&(e.textContent=r)}r();let a=["video:loadedmetadata","video:timeupdate","video:progress"];for(let e=0;en);var i=e("../utils");function n(e){return t=>({...e,mounted:e=>{let{proxy:r,icons:a}=t,o=(0,i.append)(e,a.volume),n=(0,i.append)(e,a.volumeClose),s=(0,i.append)(e,'
'),l=(0,i.append)(s,'
'),c=(0,i.append)(l,'
'),p=(0,i.append)(l,'
'),u=(0,i.append)(p,'
'),d=(0,i.append)(u,'
'),f=(0,i.append)(p,'
');function h(e){let{top:t,height:r}=(0,i.getRect)(p);return 1-(e.clientY-t)/r}function m(){if(t.muted||0===t.volume)(0,i.setStyle)(o,"display","none"),(0,i.setStyle)(n,"display","flex"),(0,i.setStyle)(f,"top","100%"),(0,i.setStyle)(d,"top","100%"),c.textContent=0;else{let e=100*t.volume;(0,i.setStyle)(o,"display","flex"),(0,i.setStyle)(n,"display","none"),(0,i.setStyle)(f,"top",`${100-e}%`),(0,i.setStyle)(d,"top",`${100-e}%`),c.textContent=Math.floor(e)}}if(m(),t.on("video:volumechange",m),r(o,"click",()=>{t.muted=!0}),r(n,"click",()=>{t.muted=!1}),i.isMobile)(0,i.setStyle)(s,"display","none");else{let e=!1;r(p,"mousedown",r=>{e=0===r.button,t.volume=h(r)}),t.on("document:mousemove",r=>{e&&(t.muted=!1,t.volume=h(r))}),t.on("document:mouseup",()=>{e&&(e=!1)})}}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],hEROU:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("./clickInit"),n=o.interopDefault(i),s=e("./gestureInit"),l=o.interopDefault(s),c=e("./globalInit"),p=o.interopDefault(c),u=e("./hoverInit"),d=o.interopDefault(u),f=e("./moveInit"),h=o.interopDefault(f),m=e("./resizeInit"),g=o.interopDefault(m),v=e("./updateInit"),y=o.interopDefault(v),b=e("./viewInit"),x=o.interopDefault(b);r.default=class{constructor(e){this.destroyEvents=[],this.proxy=this.proxy.bind(this),this.hover=this.hover.bind(this),(0,n.default)(e,this),(0,d.default)(e,this),(0,h.default)(e,this),(0,g.default)(e,this),(0,l.default)(e,this),(0,x.default)(e,this),(0,p.default)(e,this),(0,y.default)(e,this)}proxy(e,t,r,a={}){if(Array.isArray(t))return t.map(t=>this.proxy(e,t,r,a));e.addEventListener(t,r,a);let o=()=>e.removeEventListener(t,r,a);return this.destroyEvents.push(o),o}hover(e,t,r){t&&this.proxy(e,"mouseenter",t),r&&this.proxy(e,"mouseleave",r)}remove(e){let t=this.destroyEvents.indexOf(e);t>-1&&(e(),this.destroyEvents.splice(t,1))}destroy(){for(let e=0;en);var i=e("../utils");function n(e,t){let{constructor:r,template:{$player:a,$video:o}}=e;function n(t){(0,i.includeFromEvent)(t,a)?(e.isInput="INPUT"===t.target.tagName,e.isFocus=!0,e.emit("focus",t)):(e.isInput=!1,e.isFocus=!1,e.emit("blur",t))}e.on("document:click",n),e.on("document:contextmenu",n);let s=[];t.proxy(o,"click",t=>{let a=Date.now();s.push(a);let{MOBILE_CLICK_PLAY:o,DBCLICK_TIME:n,MOBILE_DBCLICK_PLAY:l,DBCLICK_FULLSCREEN:c}=r,p=s.filter(e=>a-e<=n);switch(p.length){case 1:e.emit("click",t),i.isMobile?!e.isLock&&o&&e.toggle():e.toggle(),s=p;break;case 2:e.emit("dblclick",t),i.isMobile?!e.isLock&&l&&e.toggle():c&&(e.fullscreen=!e.fullscreen),s=[];break;default:s=[]}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],d9Euh:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>s);var i=e("../control/progress"),n=e("../utils");function s(e,t){if(n.isMobile&&!e.option.isLive){let{$video:r,$progress:a}=e.template,o=null,s=!1,l=0,c=0,p=0,u=t=>{if(1===t.touches.length&&!e.isLock){o===a&&(0,i.setCurrentTime)(e,t),s=!0;let{pageX:r,pageY:n}=t.touches[0];l=r,c=n,p=e.currentTime}},d=t=>{if(1===t.touches.length&&s&&e.duration){let{pageX:a,pageY:i}=t.touches[0],s=function(e,t,r,a){let o=t-a,i=r-e,n=0;if(2>Math.abs(i)&&2>Math.abs(o))return n;let s=180*Math.atan2(o,i)/Math.PI;return s>=-45&&s<45?n=4:s>=45&&s<135?n=1:s>=-135&&s<-45?n=2:(s>=135&&s<=180||s>=-180&&s<-135)&&(n=3),n}(l,c,a,i),u=[3,4].includes(s),d=[1,2].includes(s);if(u&&!e.isRotate||d&&e.isRotate){let s=(0,n.clamp)((a-l)/e.width,-1,1),u=(0,n.clamp)((i-c)/e.height,-1,1),d=e.isRotate?u:s,f=o===r?e.constructor.TOUCH_MOVE_RATIO:1,h=(0,n.clamp)(p+e.duration*d*f,0,e.duration);e.seek=h,e.emit("setBar","played",(0,n.clamp)(h/e.duration,0,1),t),e.notice.show=`${(0,n.secondToTime)(h)} / ${(0,n.secondToTime)(e.duration)}`}}};e.option.gesture&&(t.proxy(r,"touchstart",e=>{o=r,u(e)}),t.proxy(r,"touchmove",d)),t.proxy(a,"touchstart",e=>{o=a,u(e)}),t.proxy(a,"touchmove",d),e.on("document:touchend",()=>{s&&(l=0,c=0,p=0,s=!1,o=null)})}}},{"../control/progress":"iO48g","../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],cipTv:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e,t){let r=["click","mouseup","keydown","touchend","touchmove","mousemove","contextmenu","webkitfullscreenchange"],a=["resize","scroll","orientationchange"],o=[];function i(n={}){for(let e=0;e{let a=n.document||s.ownerDocument||document,i=t.proxy(a,r,t=>{e.emit(`document:${r}`,t)});o.push(i)}),a.forEach(r=>{let a=n.window||s.ownerDocument?.defaultView||window,i=t.proxy(a,r,t=>{e.emit(`window:${r}`,t)});o.push(i)})}i(),t.bindGlobalEvents=i}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],jVOGW:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e,t){let{$player:r}=e.template;t.hover(r,t=>{(0,i.addClass)(r,"art-hover"),e.emit("hover",!0,t)},t=>{(0,i.removeClass)(r,"art-hover"),e.emit("hover",!1,t)})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"1adf7":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e,t){let{$player:r}=e.template;t.proxy(r,"mousemove",t=>{e.emit("mousemove",t)})}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"3uT2Y":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e,t){let{option:r,constructor:a}=e;e.on("resize",()=>{let{aspectRatio:t,notice:a}=e;"standard"===e.state&&r.autoSize&&e.autoSize(),e.aspectRatio=t,a.show=""});let o=(0,i.debounce)(()=>e.emit("resize"),a.RESIZE_TIME);e.on("window:orientationchange",()=>o()),e.on("window:resize",()=>o()),screen&&screen.orientation&&screen.orientation.onchange&&t.proxy(screen.orientation,"change",()=>o())}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"5vCth":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){if(e.constructor.USE_RAF){let t=null;!function r(){e.playing&&e.emit("raf"),e.isDestroy||(t=requestAnimationFrame(r))}(),e.on("destroy",()=>{cancelAnimationFrame(t)})}}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],haLBA:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{option:t,constructor:r,template:{$container:a}}=e,o=(0,i.throttle)(()=>{e.emit("view",(0,i.isInViewport)(a,r.SCROLL_GAP))},r.SCROLL_TIME);e.on("window:scroll",()=>o()),e.on("view",r=>{t.autoMini&&(e.mini=!r)})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"2ac95":[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);var o=e("./utils");r.default=class{constructor(e){this.art=e,this.keys={},e.option.hotkey&&!o.isMobile&&this.init()}init(){let{constructor:e}=this.art;this.add("Escape",()=>{this.art.fullscreenWeb&&(this.art.fullscreenWeb=!1)}),this.add("Space",()=>{this.art.toggle()}),this.add("ArrowLeft",()=>{this.art.backward=e.SEEK_STEP}),this.add("ArrowUp",()=>{this.art.volume+=e.VOLUME_STEP}),this.add("ArrowRight",()=>{this.art.forward=e.SEEK_STEP}),this.add("ArrowDown",()=>{this.art.volume-=e.VOLUME_STEP}),this.art.on("document:keydown",e=>{if(this.art.isFocus){let t=document.activeElement.tagName.toUpperCase(),r=document.activeElement.getAttribute("contenteditable");if("INPUT"!==t&&"TEXTAREA"!==t&&""!==r&&"true"!==r&&!e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey){let t=this.keys[e.code];if(t){e.preventDefault();for(let r=0;r(0,ei.getIcon)(e,t[e])})}}},{"bundle-text:./airplay.svg":"6dCIe","bundle-text:./arrow-left.svg":"3WFkX","bundle-text:./arrow-right.svg":"lLrP4","bundle-text:./aspect-ratio.svg":"vMweg","bundle-text:./check.svg":"cD1ql","bundle-text:./close.svg":"cVNEq","bundle-text:./config.svg":"7bynv","bundle-text:./error.svg":"5o4dY","bundle-text:./flip.svg":"ltsUt","bundle-text:./fullscreen-off.svg":"1lbXp","bundle-text:./fullscreen-on.svg":"9yJsq","bundle-text:./fullscreen-web-off.svg":"jvyKo","bundle-text:./fullscreen-web-on.svg":"02A58","bundle-text:./loading.svg":"dceB1","bundle-text:./lock.svg":"eJSju","bundle-text:./pause.svg":"jgrId","bundle-text:./pip.svg":"fIFkZ","bundle-text:./play.svg":"4D7Yh","bundle-text:./playback-rate.svg":"e0Gnx","bundle-text:./screenshot.svg":"diXWF","bundle-text:./setting.svg":"8BcoA","bundle-text:./state.svg":"bQPWd","bundle-text:./switch-off.svg":"cvlWN","bundle-text:./switch-on.svg":"hTk01","bundle-text:./unlock.svg":"iwSR9","bundle-text:./volume-close.svg":"kqCDd","bundle-text:./volume.svg":"jABrY","../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6dCIe":[function(e,t,r,a){t.exports=''},{}],"3WFkX":[function(e,t,r,a){t.exports=''},{}],lLrP4:[function(e,t,r,a){t.exports=''},{}],vMweg:[function(e,t,r,a){t.exports=''},{}],cD1ql:[function(e,t,r,a){t.exports=''},{}],cVNEq:[function(e,t,r,a){t.exports=''},{}],"7bynv":[function(e,t,r,a){t.exports=''},{}],"5o4dY":[function(e,t,r,a){t.exports=''},{}],ltsUt:[function(e,t,r,a){t.exports=''},{}],"1lbXp":[function(e,t,r,a){t.exports=''},{}],"9yJsq":[function(e,t,r,a){t.exports=''},{}],jvyKo:[function(e,t,r,a){t.exports=''},{}],"02A58":[function(e,t,r,a){t.exports=''},{}],dceB1:[function(e,t,r,a){t.exports=''},{}],eJSju:[function(e,t,r,a){t.exports=''},{}],jgrId:[function(e,t,r,a){t.exports=''},{}],fIFkZ:[function(e,t,r,a){t.exports=''},{}],"4D7Yh":[function(e,t,r,a){t.exports=''},{}],e0Gnx:[function(e,t,r,a){t.exports=''},{}],diXWF:[function(e,t,r,a){t.exports=''},{}],"8BcoA":[function(e,t,r,a){t.exports=''},{}],bQPWd:[function(e,t,r,a){t.exports=''},{}],cvlWN:[function(e,t,r,a){t.exports=''},{}],hTk01:[function(e,t,r,a){t.exports=''},{}],iwSR9:[function(e,t,r,a){t.exports=''},{}],kqCDd:[function(e,t,r,a){t.exports=''},{}],jABrY:[function(e,t,r,a){t.exports=''},{}],bAZEJ:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("./utils"),n=e("./utils/component"),s=o.interopDefault(n);class l extends s.default{constructor(e){super(e),this.name="info",i.isMobile||this.init()}init(){let{proxy:e,constructor:t,template:{$infoPanel:r,$infoClose:a,$video:o}}=this.art;e(a,"click",()=>{this.show=!1});let n=null,s=(0,i.queryAll)("[data-video]",r)||[];this.art.on("destroy",()=>clearTimeout(n)),!function e(){for(let e=0;e{(0,i.setStyle)(o,"display","none"),(0,i.setStyle)(n,"display",null)}),a.proxy(t.$state,"click",()=>e.play())}}r.default=l},{"./utils":"3eYxa","./utils/component":"1lUmE","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],eVoav:[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);var o=e("./utils");r.default=class{constructor(e){this.art=e,this.timer=null}set show(e){let{constructor:t,template:{$player:r,$noticeInner:a}}=this.art;e?(a.textContent=e instanceof Error?e.message.trim():e,(0,o.addClass)(r,"art-notice-show"),clearTimeout(this.timer),this.timer=setTimeout(()=>{a.textContent="",(0,o.removeClass)(r,"art-notice-show")},t.NOTICE_TIME)):(0,o.removeClass)(r,"art-notice-show")}get show(){let{template:{$player:e}}=this.art;return e.classList.contains("art-notice-show")}}},{"./utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],cZepx:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("./airplayMix"),n=o.interopDefault(i),s=e("./aspectRatioMix"),l=o.interopDefault(s),c=e("./attrMix"),p=o.interopDefault(c),u=e("./autoHeightMix"),d=o.interopDefault(u),f=e("./autoSizeMix"),h=o.interopDefault(f),m=e("./cssVarMix"),g=o.interopDefault(m),v=e("./currentTimeMix"),y=o.interopDefault(v),b=e("./durationMix"),x=o.interopDefault(b),w=e("./eventInit"),k=o.interopDefault(w),j=e("./flipMix"),S=o.interopDefault(j),$=e("./fullscreenMix"),E=o.interopDefault($),I=e("./fullscreenWebMix"),M=o.interopDefault(I),T=e("./loadedMix"),C=o.interopDefault(T),F=e("./miniMix"),D=o.interopDefault(F),A=e("./optionInit"),R=o.interopDefault(A),L=e("./pauseMix"),O=o.interopDefault(L),P=e("./pipMix"),Y=o.interopDefault(P),z=e("./playbackRateMix"),_=o.interopDefault(z),H=e("./playedMix"),V=o.interopDefault(H),q=e("./playingMix"),N=o.interopDefault(q),B=e("./playMix"),W=o.interopDefault(B),U=e("./posterMix"),Z=o.interopDefault(U),K=e("./qualityMix"),X=o.interopDefault(K),G=e("./rectMix"),J=o.interopDefault(G),Q=e("./screenshotMix"),ee=o.interopDefault(Q),et=e("./seekMix"),er=o.interopDefault(et),ea=e("./stateMix"),eo=o.interopDefault(ea),ei=e("./subtitleOffsetMix"),en=o.interopDefault(ei),es=e("./switchMix"),el=o.interopDefault(es),ec=e("./themeMix"),ep=o.interopDefault(ec),eu=e("./thumbnailsMix"),ed=o.interopDefault(eu),ef=e("./toggleMix"),eh=o.interopDefault(ef),em=e("./typeMix"),eg=o.interopDefault(em),ev=e("./urlMix"),ey=o.interopDefault(ev),eb=e("./volumeMix"),ex=o.interopDefault(eb);r.default=class{constructor(e){(0,ey.default)(e),(0,p.default)(e),(0,W.default)(e),(0,O.default)(e),(0,eh.default)(e),(0,er.default)(e),(0,ex.default)(e),(0,y.default)(e),(0,x.default)(e),(0,el.default)(e),(0,_.default)(e),(0,l.default)(e),(0,ee.default)(e),(0,E.default)(e),(0,M.default)(e),(0,Y.default)(e),(0,C.default)(e),(0,V.default)(e),(0,N.default)(e),(0,h.default)(e),(0,J.default)(e),(0,S.default)(e),(0,D.default)(e),(0,Z.default)(e),(0,d.default)(e),(0,g.default)(e),(0,ep.default)(e),(0,eg.default)(e),(0,eo.default)(e),(0,en.default)(e),(0,n.default)(e),(0,X.default)(e),(0,ed.default)(e),(0,k.default)(e),(0,R.default)(e)}}},{"./airplayMix":"9kvpK","./aspectRatioMix":"f2B8U","./attrMix":"h2lAp","./autoHeightMix":"lxRiE","./autoSizeMix":"k2ukN","./cssVarMix":"c5XqS","./currentTimeMix":"k4e77","./durationMix":"aK1ks","./eventInit":"eodDF","./flipMix":"lcMdX","./fullscreenMix":"6EjsX","./fullscreenWebMix":"4l4zQ","./loadedMix":"gzJMP","./miniMix":"gELHU","./optionInit":"gy71D","./pauseMix":"hoc9H","./pipMix":"4t2vt","./playbackRateMix":"7hqKi","./playedMix":"cK23B","./playingMix":"2Ndus","./playMix":"6o5f2","./posterMix":"1wbXO","./qualityMix":"1ZLJg","./rectMix":"3g2fj","./screenshotMix":"1stNp","./seekMix":"iSBF1","./stateMix":"9v9Z8","./subtitleOffsetMix":"cTVJT","./switchMix":"gms5Y","./themeMix":"aS33X","./thumbnailsMix":"gC24t","./toggleMix":"bAxW2","./typeMix":"dtsPx","./urlMix":"loZvu","./volumeMix":"4DF3Z","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"9kvpK":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,notice:r,proxy:a,template:{$video:o}}=e,n=!0;window.WebKitPlaybackTargetAvailabilityEvent&&o.webkitShowPlaybackTargetPicker?a(o,"webkitplaybacktargetavailabilitychanged",e=>{switch(e.availability){case"available":n=!0;break;case"not-available":n=!1}}):n=!1,(0,i.def)(e,"airplay",{value(){n?(o.webkitShowPlaybackTargetPicker(),e.emit("airplay")):r.show=t.get("AirPlay Not Available")}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],f2B8U:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,notice:r,template:{$video:a,$player:o}}=e;(0,i.def)(e,"aspectRatio",{get:()=>o.dataset.aspectRatio||"default",set(n){if(n||(n="default"),"default"===n)(0,i.setStyle)(a,"width",null),(0,i.setStyle)(a,"height",null),(0,i.setStyle)(a,"margin",null),delete o.dataset.aspectRatio;else{let e=n.split(":").map(Number),{clientWidth:t,clientHeight:r}=o,s=e[0]/e[1];t/r>s?((0,i.setStyle)(a,"width",`${s*r}px`),(0,i.setStyle)(a,"height","100%"),(0,i.setStyle)(a,"margin","0 auto")):((0,i.setStyle)(a,"width","100%"),(0,i.setStyle)(a,"height",`${t/s}px`),(0,i.setStyle)(a,"margin","auto 0")),o.dataset.aspectRatio=n}r.show=`${t.get("Aspect Ratio")}: ${"default"===n?t.get("Default"):n}`,e.emit("aspectRatio",n)}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],h2lAp:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$video:t}}=e;(0,i.def)(e,"attr",{value(e,r){if(void 0===r)return t[e];t[e]=r}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],lxRiE:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$container:t,$video:r}}=e;(0,i.def)(e,"autoHeight",{value(){let{clientWidth:a}=t,{videoHeight:o,videoWidth:n}=r,s=a/n*o;(0,i.setStyle)(t,"height",`${s}px`),e.emit("autoHeight",s)}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],k2ukN:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$container:t,$player:r,$video:a}=e.template;(0,i.def)(e,"autoSize",{value(){let{videoWidth:o,videoHeight:n}=a,{width:s,height:l}=(0,i.getRect)(t),c=o/n;s/l>c?((0,i.setStyle)(r,"width",`${l*c/s*100}%`),(0,i.setStyle)(r,"height","100%")):((0,i.setStyle)(r,"width","100%"),(0,i.setStyle)(r,"height",`${s/c/l*100}%`)),e.emit("autoSize",{width:e.width,height:e.height})}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],c5XqS:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$player:t}=e.template;(0,i.def)(e,"cssVar",{value:(e,r)=>r?t.style.setProperty(e,r):getComputedStyle(t).getPropertyValue(e)})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],k4e77:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$video:t}=e.template;(0,i.def)(e,"currentTime",{get:()=>t.currentTime||0,set:r=>{Number.isNaN(r=Number.parseFloat(r))||(t.currentTime=(0,i.clamp)(r,0,e.duration))}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],aK1ks:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"duration",{get:()=>{let{duration:t}=e.template.$video;return t===1/0?0:t||0}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],eodDF:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>l);var i=e("../config"),n=o.interopDefault(i),s=e("../utils");function l(e){let{i18n:t,notice:r,option:a,constructor:o,proxy:i,template:{$player:l,$video:c,$poster:p}}=e,u=0;for(let t=0;t{e.emit(`video:${t.type}`,t)});e.on("video:canplay",()=>{u=0,e.loading.show=!1}),e.once("video:canplay",()=>{e.loading.show=!1,e.controls.show=!0,e.mask.show=!0,e.isReady=!0,e.emit("ready")}),e.on("video:ended",()=>{a.loop?(e.seek=0,e.play(),e.controls.show=!1,e.mask.show=!1):(e.controls.show=!0,e.mask.show=!0)}),e.on("video:error",async i=>{u{e.emit("resize"),s.isMobile&&(e.loading.show=!1,e.controls.show=!0,e.mask.show=!0)}),e.on("video:loadstart",()=>{e.loading.show=!0,e.mask.show=!1,e.controls.show=!0}),e.on("video:pause",()=>{e.controls.show=!0,e.mask.show=!0}),e.on("video:play",()=>{e.mask.show=!1,(0,s.setStyle)(p,"display","none")}),e.on("video:playing",()=>{e.mask.show=!1}),e.on("video:progress",()=>{e.playing&&(e.loading.show=!1)}),e.on("video:seeked",()=>{e.loading.show=!1,e.mask.show=!0}),e.on("video:seeking",()=>{e.loading.show=!0,e.mask.show=!1}),e.on("video:timeupdate",()=>{e.mask.show=!1}),e.on("video:waiting",()=>{e.loading.show=!0,e.mask.show=!1})}},{"../config":"icOIG","../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],lcMdX:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$player:t},i18n:r,notice:a}=e;(0,i.def)(e,"flip",{get:()=>t.dataset.flip||"normal",set(o){o||(o="normal"),"normal"===o?delete t.dataset.flip:t.dataset.flip=o,a.show=`${r.get("Video Flip")}: ${r.get((0,i.capitalize)(o))}`,e.emit("flip",o)}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6EjsX":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>l);var i=e("../libs/screenfull"),n=o.interopDefault(i),s=e("../utils");function l(e){let{i18n:t,notice:r,template:{$video:a,$player:o}}=e;e.once("video:loadedmetadata",()=>{n.default.isEnabled?(n.default.on("change",()=>{e.emit("fullscreen",n.default.isFullscreen),n.default.isFullscreen?(e.state="fullscreen",(0,s.addClass)(o,"art-fullscreen")):(0,s.removeClass)(o,"art-fullscreen"),e.emit("resize")}),n.default.on("error",t=>{e.emit("fullscreenError",t)}),(0,s.def)(e,"fullscreen",{get:()=>n.default.isFullscreen,async set(e){e?await n.default.request(o):await n.default.exit()}})):a.webkitSupportsFullscreen?(e.on("document:webkitfullscreenchange",()=>{e.emit("fullscreen",e.fullscreen),e.emit("resize")}),(0,s.def)(e,"fullscreen",{get:()=>document.fullscreenElement===a,set(t){t?(e.state="fullscreen",a.webkitEnterFullscreen()):a.webkitExitFullscreen()}})):(0,s.def)(e,"fullscreen",{get:()=>!1,set(){r.show=t.get("Fullscreen Not Supported")}}),(0,s.def)(e,"fullscreen",(0,s.get)(e,"fullscreen"))})}},{"../libs/screenfull":"924dl","../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"924dl":[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);let o=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],i=(()=>{if("undefined"==typeof document)return!1;let e=o[0],t={};for(let r of o)if(r[1]in document){for(let[a,o]of r.entries())t[e[a]]=o;return t}return!1})(),n={change:i.fullscreenchange,error:i.fullscreenerror},s={request:(e=document.documentElement,t)=>new Promise((r,a)=>{let o=()=>{s.off("change",o),r()};s.on("change",o);let n=e[i.requestFullscreen](t);n instanceof Promise&&n.then(o).catch(a)}),exit:()=>new Promise((e,t)=>{if(!s.isFullscreen)return void e();let r=()=>{s.off("change",r),e()};s.on("change",r);let a=document[i.exitFullscreen]();a instanceof Promise&&a.then(r).catch(t)}),toggle:(e,t)=>s.isFullscreen?s.exit():s.request(e,t),onchange(e){s.on("change",e)},onerror(e){s.on("error",e)},on(e,t){let r=n[e];r&&document.addEventListener(r,t,!1)},off(e,t){let r=n[e];r&&document.removeEventListener(r,t,!1)},raw:i};Object.defineProperties(s,{isFullscreen:{get:()=>!!document[i.fullscreenElement]},element:{enumerable:!0,get:()=>document[i.fullscreenElement]},isEnabled:{enumerable:!0,get:()=>!!document[i.fullscreenEnabled]}}),i||(s.isEnabled=!1),r.default=s},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"4l4zQ":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{constructor:t,template:{$container:r,$player:a}}=e,o="";(0,i.def)(e,"fullscreenWeb",{get:()=>(0,i.hasClass)(a,"art-fullscreen-web"),set(n){n?(o=a.style.cssText,t.FULLSCREEN_WEB_IN_BODY&&(0,i.append)(document.body,a),e.state="fullscreenWeb",(0,i.setStyle)(a,"width","100%"),(0,i.setStyle)(a,"height","100%"),(0,i.addClass)(a,"art-fullscreen-web"),e.emit("fullscreenWeb",!0)):(t.FULLSCREEN_WEB_IN_BODY&&(0,i.append)(r,a),o&&(a.style.cssText=o,o=""),(0,i.removeClass)(a,"art-fullscreen-web"),e.emit("fullscreenWeb",!1)),e.emit("resize")}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],gzJMP:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$video:t}=e.template;(0,i.def)(e,"loaded",{get:()=>e.loadedTime/t.duration}),(0,i.def)(e,"loadedTime",{get:()=>t.buffered.length?t.buffered.end(t.buffered.length-1):0})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],gELHU:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{icons:t,proxy:r,storage:a,template:{$player:o,$video:n}}=e,s=!1,l=0,c=0;function p(){let{$mini:t}=e.template;t&&((0,i.removeClass)(o,"art-mini"),(0,i.setStyle)(t,"display","none"),o.prepend(n),e.emit("mini",!1))}function u(t,r){e.playing?((0,i.setStyle)(t,"display","none"),(0,i.setStyle)(r,"display","flex")):((0,i.setStyle)(t,"display","flex"),(0,i.setStyle)(r,"display","none"))}function d(){let{$mini:t}=e.template,r=(0,i.getRect)(t),o=window.innerHeight-r.height-50,n=window.innerWidth-r.width-50;a.set("top",o),a.set("left",n),(0,i.setStyle)(t,"top",`${o}px`),(0,i.setStyle)(t,"left",`${n}px`)}(0,i.def)(e,"mini",{get:()=>(0,i.hasClass)(o,"art-mini"),set(f){if(f){e.state="mini",(0,i.addClass)(o,"art-mini");let f=function(){let{$mini:o}=e.template;if(o)return(0,i.append)(o,n),(0,i.setStyle)(o,"display","flex");{let o=(0,i.createElement)("div");(0,i.addClass)(o,"art-mini-popup"),(0,i.append)(document.body,o),e.template.$mini=o,(0,i.append)(o,n);let d=(0,i.append)(o,'
');(0,i.append)(d,t.close),r(d,"click",p);let f=(0,i.append)(o,'
'),h=(0,i.append)(f,t.play),m=(0,i.append)(f,t.pause);return r(h,"click",()=>e.play()),r(m,"click",()=>e.pause()),u(h,m),e.on("video:playing",()=>u(h,m)),e.on("video:pause",()=>u(h,m)),e.on("video:timeupdate",()=>u(h,m)),r(o,"mousedown",e=>{s=0===e.button,l=e.pageX,c=e.pageY}),e.on("document:mousemove",e=>{if(s){(0,i.addClass)(o,"art-mini-dragging");let t=e.pageX-l,r=e.pageY-c;(0,i.setStyle)(o,"transform",`translate(${t}px, ${r}px)`)}}),e.on("document:mouseup",()=>{if(s){s=!1,(0,i.removeClass)(o,"art-mini-dragging");let e=(0,i.getRect)(o);a.set("left",e.left),a.set("top",e.top),(0,i.setStyle)(o,"left",`${e.left}px`),(0,i.setStyle)(o,"top",`${e.top}px`),(0,i.setStyle)(o,"transform",null)}}),o}}(),h=a.get("top"),m=a.get("left");"number"==typeof h&&"number"==typeof m?((0,i.setStyle)(f,"top",`${h}px`),(0,i.setStyle)(f,"left",`${m}px`),(0,i.isInViewport)(f)||d()):d(),e.emit("mini",!0)}else p()}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],gy71D:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{option:t,storage:r,template:{$video:a,$poster:o}}=e;for(let r in t.moreVideoAttr)e.attr(r,t.moreVideoAttr[r]);t.muted&&(e.muted=t.muted),t.volume&&(a.volume=(0,i.clamp)(t.volume,0,1));let n=r.get("volume");for(let r in"number"==typeof n&&(a.volume=(0,i.clamp)(n,0,1)),t.poster&&(0,i.setStyle)(o,"backgroundImage",`url(${t.poster})`),t.autoplay&&(a.autoplay=t.autoplay),t.playsInline&&(a.playsInline=!0,a["webkit-playsinline"]=!0),t.theme&&(t.cssVar["--art-theme"]=t.theme),t.cssVar)e.cssVar(r,t.cssVar[r]);e.url=t.url}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],hoc9H:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$video:t},i18n:r,notice:a}=e;(0,i.def)(e,"pause",{value(){let o=t.pause();return a.show=r.get("Pause"),e.emit("pause"),o}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"4t2vt":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,notice:r,template:{$video:a}}=e;if(document.pictureInPictureEnabled){let{template:{$video:t},proxy:r,notice:a}=e;t.disablePictureInPicture=!1,(0,i.def)(e,"pip",{get:()=>document.pictureInPictureElement,set(r){r?(e.state="pip",t.requestPictureInPicture().catch(e=>{throw a.show=e,e})):document.exitPictureInPicture().catch(e=>{throw a.show=e,e})}}),r(t,"enterpictureinpicture",()=>{e.emit("pip",!0)}),r(t,"leavepictureinpicture",()=>{e.emit("pip",!1)})}else if(a.webkitSupportsPresentationMode){let{$video:t}=e.template;t.webkitSetPresentationMode("inline"),(0,i.def)(e,"pip",{get:()=>"picture-in-picture"===t.webkitPresentationMode,set(r){r?(e.state="pip",t.webkitSetPresentationMode("picture-in-picture"),e.emit("pip",!0)):(t.webkitSetPresentationMode("inline"),e.emit("pip",!1))}})}else(0,i.def)(e,"pip",{get:()=>!1,set(){r.show=t.get("PIP Not Supported")}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"7hqKi":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$video:t},i18n:r,notice:a}=e;(0,i.def)(e,"playbackRate",{get:()=>t.playbackRate,set(o){o?o!==t.playbackRate&&(t.playbackRate=o,a.show=`${r.get("Rate")}: ${1===o?r.get("Normal"):`${o}x`}`):e.playbackRate=1}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],cK23B:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"played",{get:()=>e.currentTime/e.duration})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"2Ndus":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$video:t}=e.template;(0,i.def)(e,"playing",{get:()=>"boolean"==typeof t.playing?t.playing:!!(t.currentTime>0&&!t.paused&&!t.ended&&t.readyState>2)})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6o5f2":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,notice:r,option:a,constructor:{instances:o},template:{$video:n}}=e;(0,i.def)(e,"play",{async value(){let i=await n.play();if(r.show=t.get("Play"),e.emit("play"),a.mutex)for(let t=0;tn);var i=e("../utils");function n(e){let{template:{$poster:t}}=e;(0,i.def)(e,"poster",{get:()=>{try{return t.style.backgroundImage.match(/"(.*)"/)[1]}catch{return""}},set(e){(0,i.setStyle)(t,"backgroundImage",`url(${e})`)}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"1ZLJg":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"quality",{set(t){let{controls:r,notice:a,i18n:o}=e,i=t.find(e=>e.default)||t[0];r.update({name:"quality",position:"right",index:10,style:{marginRight:"10px"},html:i?.html||"",selector:t,onSelect:async t=>(await e.switchQuality(t.url),a.show=`${o.get("Switch Video")}: ${t.html}`,t.html)})}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"3g2fj":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"rect",{get:()=>(0,i.getRect)(e.template.$player)});let t=["bottom","height","left","right","top","width"];for(let r=0;re.rect[a]})}(0,i.def)(e,"x",{get:()=>e.left+window.pageXOffset}),(0,i.def)(e,"y",{get:()=>e.top+window.pageYOffset})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"1stNp":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{notice:t,template:{$video:r}}=e,a=(0,i.createElement)("canvas");(0,i.def)(e,"getDataURL",{value:()=>new Promise((e,o)=>{try{a.width=r.videoWidth,a.height=r.videoHeight,a.getContext("2d").drawImage(r,0,0),e(a.toDataURL("image/png"))}catch(e){t.show=e,o(e)}})}),(0,i.def)(e,"getBlobUrl",{value:()=>new Promise((e,o)=>{try{a.width=r.videoWidth,a.height=r.videoHeight,a.getContext("2d").drawImage(r,0,0),a.toBlob(t=>{e(URL.createObjectURL(t))})}catch(e){t.show=e,o(e)}})}),(0,i.def)(e,"screenshot",{value:async t=>{let a=await e.getDataURL(),o=t||`artplayer_${(0,i.secondToTime)(r.currentTime)}`;return(0,i.download)(a,`${o}.png`),e.emit("screenshot",a),a}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],iSBF1:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{notice:t}=e;(0,i.def)(e,"seek",{set(r){e.currentTime=r,e.duration&&(t.show=`${(0,i.secondToTime)(e.currentTime)} / ${(0,i.secondToTime)(e.duration)}`),e.emit("seek",e.currentTime)}}),(0,i.def)(e,"forward",{set(t){e.seek=e.currentTime+t}}),(0,i.def)(e,"backward",{set(t){e.seek=e.currentTime-t}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"9v9Z8":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let t=["mini","pip","fullscreen","fullscreenWeb"];(0,i.def)(e,"state",{get:()=>t.find(t=>e[t])||"standard",set(r){for(let a=0;an);var i=e("../utils");function n(e){let{notice:t,i18n:r,template:a}=e;(0,i.def)(e,"subtitleOffset",{get:()=>a.$track?.offset||0,set(o){let{cues:n}=e.subtitle;if(!a.$track||0===n.length)return;let s=(0,i.clamp)(o,-10,10);a.$track.offset=s;for(let t=0;tn);var i=e("../utils");function n(e){function t(t,r){return new Promise((a,o)=>{if(t===e.url)return;let{playing:i,aspectRatio:n,playbackRate:s}=e;e.pause(),e.url=t,e.notice.show="",e.once("video:error",o),e.once("video:loadedmetadata",()=>{e.currentTime=r}),e.once("video:canplay",async()=>{e.playbackRate=s,e.aspectRatio=n,i&&await e.play(),e.notice.show="",a()})})}(0,i.def)(e,"switchQuality",{value:r=>t(r,e.currentTime)}),(0,i.def)(e,"switchUrl",{value:e=>t(e,0)}),(0,i.def)(e,"switch",{set:e.switchUrl})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],aS33X:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"theme",{get:()=>e.cssVar("--art-theme"),set(t){e.cssVar("--art-theme",t)}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],gC24t:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{events:t,option:r,template:{$progress:a,$video:o}}=e,n=null,s=null,l=!1,c=!1,p=!1;t.hover(a,()=>{p=!0},()=>{p=!1}),e.on("setBar",async(t,u,d)=>{let f=e.controls?.thumbnails,{url:h,scale:m}=r.thumbnails;if(!f||!h)return;let g="played"===t&&d&&i.isMobile;if("hover"===t||g){if(l||(l=!0,s=await (0,i.loadImg)(h,m),c=!0),!c||!p)return;let t=a.clientWidth*u;(0,i.setStyle)(f,"display","flex"),t>0&&ta.clientWidth-f/2?(0,i.setStyle)(n,"left",`${a.clientWidth-f}px`):(0,i.setStyle)(n,"left",`${t-f/2}px`)}(t):i.isMobile||(0,i.setStyle)(f,"display","none"),g&&(clearTimeout(n),n=setTimeout(()=>{(0,i.setStyle)(f,"display","none")},500))}}),(0,i.def)(e,"thumbnails",{get:()=>e.option.thumbnails,set(t){t.url&&!e.option.isLive&&(e.option.thumbnails=t,clearTimeout(n),n=null,s=null,l=!1,c=!1)}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],bAxW2:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"toggle",{value:()=>e.playing?e.pause():e.play()})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],dtsPx:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"type",{get:()=>e.option.type,set(t){e.option.type=t}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],loZvu:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{option:t,template:{$video:r}}=e;(0,i.def)(e,"url",{get:()=>r.src,async set(a){if(a){let o=e.url,n=t.type||(0,i.getExt)(a),s=t.customType[n];n&&s?(await (0,i.sleep)(),e.loading.show=!0,s.call(e,r,a,e)):(URL.revokeObjectURL(o),r.src=a),o!==e.url&&(e.option.url=a,e.isReady&&o&&e.once("video:canplay",()=>{e.emit("restart",a)}))}else await (0,i.sleep)(),e.loading.show=!0}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"4DF3Z":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$video:t},i18n:r,notice:a,storage:o}=e;(0,i.def)(e,"volume",{get:()=>t.volume||0,set:e=>{t.volume=(0,i.clamp)(e,0,1),a.show=`${r.get("Volume")}: ${Number.parseInt(100*t.volume,10)}`,0!==t.volume&&o.set("volume",t.volume)}}),(0,i.def)(e,"muted",{get:()=>t.muted,set:r=>{t.muted=r,e.emit("muted",r)}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"5A1j1":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("../utils"),n=e("./autoOrientation"),s=o.interopDefault(n),l=e("./autoPlayback"),c=o.interopDefault(l),p=e("./fastForward"),u=o.interopDefault(p),d=e("./lock"),f=o.interopDefault(d),h=e("./miniProgressBar"),m=o.interopDefault(h);r.default=class{constructor(e){this.art=e,this.id=0;let{option:t}=e;t.miniProgressBar&&!t.isLive&&this.add(m.default),t.lock&&i.isMobile&&this.add(f.default),t.autoPlayback&&!t.isLive&&this.add(c.default),t.autoOrientation&&i.isMobile&&this.add(s.default),t.fastForward&&i.isMobile&&!t.isLive&&this.add(u.default);for(let e=0;ethis.next(e,t)):this.next(e,t)}next(e,t){let r=t&&t.name||e.name||`plugin${this.id}`;return(0,i.errorHandle)(!(0,i.has)(this,r),`Cannot add a plugin that already has the same name: ${r}`),(0,i.def)(this,r,{value:t}),this}}},{"../utils":"3eYxa","./autoOrientation":"fbMFj","./autoPlayback":"7w0fA","./fastForward":"3XpBs","./lock":"e4KRZ","./miniProgressBar":"jcqjF","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],fbMFj:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{notice:t,constructor:r,template:{$player:a,$video:o}}=e,n="art-auto-orientation",s="art-auto-orientation-fullscreen",l=!1;function c(){let{videoWidth:e,videoHeight:t}=o,r=document.documentElement.clientWidth,a=document.documentElement.clientHeight;return e>t&&ra}return e.on("fullscreenWeb",t=>{t?c()&&setTimeout(()=>{e.fullscreenWeb&&!(0,i.hasClass)(a,n)&&function(){let t=document.documentElement.clientWidth,r=document.documentElement.clientHeight;(0,i.setStyle)(a,"width",`${r}px`),(0,i.setStyle)(a,"height",`${t}px`),(0,i.setStyle)(a,"transform-origin","0 0"),(0,i.setStyle)(a,"transform",`rotate(90deg) translate(0, -${t}px)`),(0,i.addClass)(a,n),e.isRotate=!0,e.emit("resize")}()},Number(r.AUTO_ORIENTATION_TIME??0)):(0,i.hasClass)(a,n)&&((0,i.setStyle)(a,"width",""),(0,i.setStyle)(a,"height",""),(0,i.setStyle)(a,"transform-origin",""),(0,i.setStyle)(a,"transform",""),(0,i.removeClass)(a,n),e.isRotate=!1,e.emit("resize"))}),e.on("fullscreen",async e=>{let r=!!screen?.orientation?.lock;if(e){if(r&&c())try{let e=screen.orientation.type.startsWith("portrait")?"landscape":"portrait";await screen.orientation.lock(e),l=!0,(0,i.addClass)(a,s)}catch(e){l=!1,t.show=e}}else if((0,i.hasClass)(a,s)&&(0,i.removeClass)(a,s),r&&l){try{screen.orientation.unlock()}catch{}l=!1}}),{name:"autoOrientation",get state(){return(0,i.hasClass)(a,n)}}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"7w0fA":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,icons:r,storage:a,constructor:o,proxy:n,template:{$poster:s}}=e,l=e.layers.add({name:"auto-playback",html:`
`}),c=(0,i.query)(".art-auto-playback-last",l),p=(0,i.query)(".art-auto-playback-jump",l),u=(0,i.query)(".art-auto-playback-close",l);(0,i.append)(u,r.close);let d=null;function f(){let r=(a.get("times")||{})[e.option.id||e.option.url];clearTimeout(d),(0,i.setStyle)(l,"display","none"),r&&r>=o.AUTO_PLAYBACK_MIN&&((0,i.setStyle)(l,"display","flex"),c.textContent=`${t.get("Last Seen")} ${(0,i.secondToTime)(r)}`,p.textContent=t.get("Jump Play"),n(u,"click",()=>{(0,i.setStyle)(l,"display","none")}),n(p,"click",()=>{e.seek=r,e.play(),(0,i.setStyle)(s,"display","none"),(0,i.setStyle)(l,"display","none")}),e.once("video:timeupdate",()=>{d=setTimeout(()=>{(0,i.setStyle)(l,"display","none")},o.AUTO_PLAYBACK_TIMEOUT)}))}return e.on("video:timeupdate",()=>{if(e.playing){let t=a.get("times")||{},r=Object.keys(t);r.length>o.AUTO_PLAYBACK_MAX&&delete t[r[0]],t[e.option.id||e.option.url]=e.currentTime,a.set("times",t)}}),e.on("ready",f),e.on("restart",f),{name:"auto-playback",get times(){return a.get("times")||{}},clear:()=>a.del("times"),delete(e){let t=a.get("times")||{};return delete t[e],a.set("times",t),t}}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"3XpBs":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{constructor:t,proxy:r,template:{$player:a,$video:o}}=e,n=null,s=!1,l=1,c=()=>{clearTimeout(n),s&&(s=!1,e.playbackRate=l,(0,i.removeClass)(a,"art-fast-forward"))};return r(o,"touchstart",r=>{1===r.touches.length&&e.playing&&!e.isLock&&(n=setTimeout(()=>{s=!0,l=e.playbackRate,e.playbackRate=t.FAST_FORWARD_VALUE,(0,i.addClass)(a,"art-fast-forward")},t.FAST_FORWARD_TIME))}),e.on("document:touchmove",c),e.on("document:touchend",c),{name:"fastForward",get state(){return(0,i.hasClass)(a,"art-fast-forward")}}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],e4KRZ:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{layers:t,icons:r,template:{$player:a}}=e;function o(){return(0,i.hasClass)(a,"art-lock")}function n(){(0,i.addClass)(a,"art-lock"),e.isLock=!0,e.emit("lock",!0)}function s(){(0,i.removeClass)(a,"art-lock"),e.isLock=!1,e.emit("lock",!1)}return t.add({name:"lock",mounted(t){let a=(0,i.append)(t,r.lock),o=(0,i.append)(t,r.unlock);(0,i.setStyle)(a,"display","none"),e.on("lock",e=>{e?((0,i.setStyle)(a,"display","inline-flex"),(0,i.setStyle)(o,"display","none")):((0,i.setStyle)(a,"display","none"),(0,i.setStyle)(o,"display","inline-flex"))})},click(){o()?s():n()}}),{name:"lock",get state(){return o()},set state(value){value?n():s()}}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],jcqjF:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return e.on("control",t=>{t?(0,i.removeClass)(e.template.$player,"art-mini-progress-bar"):(0,i.addClass)(e.template.$player,"art-mini-progress-bar")}),{name:"mini-progress-bar"}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"4IYMA":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("../utils"),n=e("../utils/component"),s=o.interopDefault(n),l=e("./aspectRatio"),c=o.interopDefault(l),p=e("./flip"),u=o.interopDefault(p),d=e("./playbackRate"),f=o.interopDefault(d),h=e("./subtitleOffset"),m=o.interopDefault(h);class g extends s.default{constructor(e){super(e);let{option:t,controls:r,template:{$setting:a}}=e;this.name="setting",this.$parent=a,this.id=0,this.active=null,this.cache=new Map,this.option=[...this.builtin,...t.settings],t.setting&&(this.format(),this.render(),e.on("blur",()=>{this.show&&(this.show=!1,this.render())}),e.on("focus",e=>{let t=(0,i.includeFromEvent)(e,r.setting),a=(0,i.includeFromEvent)(e,this.$parent);!this.show||t||a||(this.show=!1,this.render())}),e.on("resize",()=>this.resize()))}get builtin(){let e=[],{option:t}=this.art;return t.playbackRate&&e.push((0,f.default)(this.art)),t.aspectRatio&&e.push((0,c.default)(this.art)),t.flip&&e.push((0,u.default)(this.art)),t.subtitleOffset&&e.push((0,m.default)(this.art)),e}traverse(e,t=this.option){for(let r=0;r{t.default=t===e,t.default&&t.$item&&(0,i.inverseClass)(t.$item,"art-current")},e.$option),this.render(e.$parents)}format(e=this.option,t,r,a=[]){for(let o=0;ot}),(0,i.def)(n,"$parents",{get:()=>r}),(0,i.def)(n,"$option",{get:()=>e});let a=[];(0,i.def)(n,"$events",{get:()=>a}),(0,i.def)(n,"$formatted",{get:()=>!0})}this.format(n.selector||[],n,e,a)}this.option=e}find(e=""){let t=null;return this.traverse(r=>{r.name===e&&(t=r)}),t}resize(){let{controls:e,constructor:{SETTING_WIDTH:t,SETTING_ITEM_HEIGHT:r},template:{$player:a,$setting:o}}=this.art;if(e.setting&&this.show){let n=this.active[0]?.$parent?.width||t,{left:s,width:l}=(0,i.getRect)(e.setting),{left:c,width:p}=(0,i.getRect)(a),u=s-c+l/2-n/2,d=this.active===this.option?this.active.length*r:(this.active.length+1)*r;if((0,i.setStyle)(o,"height",`${d}px`),(0,i.setStyle)(o,"width",`${n}px`),this.art.isRotate||i.isMobile)return;u+n>p?((0,i.setStyle)(o,"left",null),(0,i.setStyle)(o,"right",null)):((0,i.setStyle)(o,"left",`${u}px`),(0,i.setStyle)(o,"right","auto"))}}inactivate(e){for(let t=0;t'),l=(0,i.createElement)("div");(0,i.addClass)(l,"art-setting-item-left-icon"),(0,i.append)(l,a),(0,i.append)(s,l),(0,i.append)(s,e.$parent.html);let c=r(n,"click",()=>this.render(e.$parents));e.$parent.$events.push(c),(0,i.append)(t,n)}createItem(e,t=!1){if(!this.cache.has(e.$option))return;let r=this.cache.get(e.$option),a=e.$item,o="selector";(0,i.has)(e,"switch")&&(o="switch"),(0,i.has)(e,"range")&&(o="range"),(0,i.has)(e,"onClick")&&(o="button");let{icons:n,proxy:s,constructor:l}=this.art,c=(0,i.createElement)("div");(0,i.addClass)(c,"art-setting-item"),(0,i.setStyle)(c,"height",`${l.SETTING_ITEM_HEIGHT}px`),c.dataset.name=e.name||"",c.dataset.value=e.value||"";let p=(0,i.append)(c,'
'),u=(0,i.append)(c,'
'),d=(0,i.createElement)("div");switch((0,i.addClass)(d,"art-setting-item-left-icon"),o){case"button":case"switch":case"range":(0,i.append)(d,e.icon||n.config);break;case"selector":e.selector?.length?(0,i.append)(d,e.icon||n.config):(0,i.append)(d,n.check)}(0,i.append)(p,d),(0,i.def)(e,"$icon",{configurable:!0,get:()=>d}),(0,i.def)(e,"icon",{configurable:!0,get:()=>d.innerHTML,set(e){d.innerHTML="",(0,i.append)(d,e)}});let f=(0,i.createElement)("div");(0,i.addClass)(f,"art-setting-item-left-text"),(0,i.append)(f,e.html||""),(0,i.append)(p,f),(0,i.def)(e,"$html",{configurable:!0,get:()=>f}),(0,i.def)(e,"html",{configurable:!0,get:()=>f.innerHTML,set(e){f.innerHTML="",(0,i.append)(f,e)}});let h=(0,i.createElement)("div");switch((0,i.addClass)(h,"art-setting-item-right-tooltip"),(0,i.append)(h,e.tooltip||""),(0,i.append)(u,h),(0,i.def)(e,"$tooltip",{configurable:!0,get:()=>h}),(0,i.def)(e,"tooltip",{configurable:!0,get:()=>h.innerHTML,set(e){h.innerHTML="",(0,i.append)(h,e)}}),o){case"switch":{let t=(0,i.createElement)("div");(0,i.addClass)(t,"art-setting-item-right-icon");let r=(0,i.append)(t,n.switchOn),a=(0,i.append)(t,n.switchOff);(0,i.setStyle)(e.switch?a:r,"display","none"),(0,i.append)(u,t),(0,i.def)(e,"$switch",{configurable:!0,get:()=>t});let o=e.switch;(0,i.def)(e,"switch",{configurable:!0,get:()=>o,set(e){o=e,e?((0,i.setStyle)(a,"display","none"),(0,i.setStyle)(r,"display",null)):((0,i.setStyle)(a,"display",null),(0,i.setStyle)(r,"display","none"))}});break}case"range":{let t=(0,i.createElement)("div");(0,i.addClass)(t,"art-setting-item-right-icon");let r=(0,i.append)(t,'');r.value=e.range[0],r.min=e.range[1],r.max=e.range[2],r.step=e.range[3],(0,i.addClass)(r,"art-setting-range"),(0,i.append)(u,t),(0,i.def)(e,"$range",{configurable:!0,get:()=>r});let a=[...e.range];(0,i.def)(e,"range",{configurable:!0,get:()=>a,set(e){a=[...e],r.value=e[0],r.min=e[1],r.max=e[2],r.step=e[3]}})}break;case"selector":if(e.selector?.length){let e=(0,i.createElement)("div");(0,i.addClass)(e,"art-setting-item-right-icon"),(0,i.append)(e,n.arrowRight),(0,i.append)(u,e)}}switch(o){case"switch":if(e.onSwitch){let t=s(c,"click",async t=>{e.switch=await e.onSwitch.call(this.art,e,c,t)});e.$events.push(t)}break;case"range":if(e.$range){if(e.onRange){let t=s(e.$range,"change",async t=>{e.range[0]=e.$range.valueAsNumber,e.tooltip=await e.onRange.call(this.art,e,c,t)});e.$events.push(t)}if(e.onChange){let t=s(e.$range,"input",async t=>{e.range[0]=e.$range.valueAsNumber,e.tooltip=await e.onChange.call(this.art,e,c,t)});e.$events.push(t)}}break;case"selector":{let t=s(c,"click",async t=>{e.selector?.length?this.render(e.selector):(this.check(e),e.$parent.onSelect&&(e.$parent.tooltip=await e.$parent.onSelect.call(this.art,e,c,t)))});e.$events.push(t),e.default&&(0,i.addClass)(c,"art-current")}break;case"button":if(e.onClick){let t=s(c,"click",async t=>{e.tooltip=await e.onClick.call(this.art,e,c,t)});e.$events.push(t)}}(0,i.def)(e,"$item",{configurable:!0,get:()=>c}),t?(0,i.replaceElement)(c,a):(0,i.append)(r,c),e.mounted&&setTimeout(()=>e.mounted.call(this.art,e.$item,e),0)}render(e=this.option){if(this.active=e,this.cache.has(e)){let t=this.cache.get(e);(0,i.inverseClass)(t,"art-current")}else{let t=(0,i.createElement)("div");this.cache.set(e,t),(0,i.addClass)(t,"art-setting-panel"),(0,i.append)(this.$parent,t),(0,i.inverseClass)(t,"art-current"),e[0]?.$parent&&this.createHeader(e[0]);for(let t=0;t({value:t,name:`aspect-ratio-${t}`,default:t===e.aspectRatio,html:i(t)})),onSelect:t=>(e.aspectRatio=t.value,t.html),mounted:()=>{n(),e.on("aspectRatio",()=>n())}}}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],bifrn:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,icons:r,constructor:{SETTING_ITEM_WIDTH:a,FLIP:o}}=e;function n(e){return t.get((0,i.capitalize)(e))}function s(){let t=e.setting.find(`flip-${e.flip}`);e.setting.check(t)}return{width:a,name:"flip",html:t.get("Video Flip"),tooltip:n(e.flip),icon:r.flip,selector:o.map(t=>({value:t,name:`flip-${t}`,default:t===e.flip,html:n(t)})),onSelect:t=>(e.flip=t.value,t.html),mounted:()=>{s(),e.on("flip",()=>s())}}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],fXLq3:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){let{i18n:t,icons:r,constructor:{SETTING_ITEM_WIDTH:a,PLAYBACK_RATE:o}}=e;function i(e){return 1===e?t.get("Normal"):e.toFixed(1)}function n(){let t=e.setting.find(`playback-rate-${e.playbackRate}`);e.setting.check(t)}return{width:a,name:"playback-rate",html:t.get("Play Speed"),tooltip:i(e.playbackRate),icon:r.playbackRate,selector:o.map(t=>({value:t,name:`playback-rate-${t}`,default:t===e.playbackRate,html:i(t)})),onSelect:t=>(e.playbackRate=t.value,t.html),mounted:()=>{n(),e.on("video:ratechange",()=>n())}}}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"50CCd":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){let{i18n:t,icons:r,constructor:a}=e;return{width:a.SETTING_ITEM_WIDTH,name:"subtitle-offset",html:t.get("Subtitle Offset"),icon:r.subtitle,tooltip:"0s",range:[0,-10,10,.1],onChange:t=>(e.subtitleOffset=t.range[0],`${t.range[0]}s`),mounted:(t,r)=>{e.on("subtitleOffset",e=>{r.$range.value=e,r.tooltip=`${e}s`})}}}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"9Ulkg":[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r),r.default=class{constructor(){this.name="artplayer_settings",this.settings={}}get(e){try{let t=JSON.parse(window.localStorage.getItem(this.name))||{};return e?t[e]:t}catch{return e?this.settings[e]:this.settings}}set(e,t){try{let r=Object.assign({},this.get(),{[e]:t});window.localStorage.setItem(this.name,JSON.stringify(r))}catch{this.settings[e]=t}}del(e){try{let t=this.get();delete t[e],window.localStorage.setItem(this.name,JSON.stringify(t))}catch{delete this.settings[e]}}clear(){try{window.localStorage.removeItem(this.name)}catch{this.settings={}}}}},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"4gOJp":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("option-validator"),n=o.interopDefault(i),s=e("./scheme"),l=o.interopDefault(s),c=e("./utils"),p=e("./utils/component"),u=o.interopDefault(p);class d extends u.default{constructor(e){super(e),this.name="subtitle",this.option=null,this.destroyEvent=()=>null,this.init(e.option.subtitle);let t=!1;e.on("video:timeupdate",()=>{if(!this.url)return;let e=this.art.template.$video.webkitDisplayingFullscreen;"boolean"==typeof e&&e!==t&&(t=e,this.createTrack(e?"subtitles":"metadata",this.url))})}get url(){return this.art.template.$track.src}set url(e){this.switch(e)}get textTrack(){return this.art.template.$video?.textTracks?.[0]}get activeCues(){return this.textTrack?Array.from(this.textTrack.activeCues):[]}get cues(){return this.textTrack?Array.from(this.textTrack.cues):[]}style(e,t){let{$subtitle:r}=this.art.template;return"object"==typeof e?(0,c.setStyles)(r,e):(0,c.setStyle)(r,e,t)}update(){let{option:{subtitle:e},template:{$subtitle:t}}=this.art;t.innerHTML="",this.activeCues.length&&(this.art.emit("subtitleBeforeUpdate",this.activeCues),t.innerHTML=this.activeCues.map((t,r)=>t.text.split(/\r?\n/).filter(e=>e.trim()).map(t=>`
${e.escape?(0,c.escape)(t):t}
`).join("")).join(""),this.art.emit("subtitleAfterUpdate",this.activeCues))}async switch(e,t={}){let{i18n:r,notice:a,option:o}=this.art,i={...o.subtitle,...t,url:e},n=await this.init(i);return t.name&&(a.show=`${r.get("Switch Subtitle")}: ${t.name}`),n}createTrack(e,t){let{template:r,proxy:a,option:o}=this.art,{$video:i,$track:n}=r,s=(0,c.createElement)("track");s.default=!0,s.kind=e,s.src=t,s.label=o.subtitle.name||"Artplayer",s.track.mode="hidden",s.onload=()=>{this.art.emit("subtitleLoad",this.cues,this.option)},this.art.events.remove(this.destroyEvent),n.onload=null,(0,c.remove)(n),(0,c.append)(i,s),r.$track=s,this.destroyEvent=a(this.textTrack,"cuechange",()=>this.update())}async init(e){let{notice:t,template:{$subtitle:r}}=this.art;return this.textTrack?((0,n.default)(e,l.default.subtitle),e.url)?(this.option=e,this.style(e.style),fetch(e.url).then(e=>e.arrayBuffer()).then(t=>{let r=new TextDecoder(e.encoding).decode(t);switch(e.type||(0,c.getExt)(e.url)){case"srt":{let t=(0,c.srtToVtt)(r),a=e.onVttLoad(t);return(0,c.vttToBlob)(a)}case"ass":{let t=(0,c.assToVtt)(r),a=e.onVttLoad(t);return(0,c.vttToBlob)(a)}case"vtt":{let t=e.onVttLoad(r);return(0,c.vttToBlob)(t)}default:return e.url}}).then(e=>(r.innerHTML="",this.url===e||(URL.revokeObjectURL(this.url),this.createTrack("metadata",e)),e)).catch(e=>{throw r.innerHTML="",t.show=e,e})):void 0:null}}r.default=d},{"option-validator":"iscjH","./scheme":"3maHy","./utils":"3eYxa","./utils/component":"1lUmE","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],haag7:[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);var o=e("../package.json"),i=e("./utils");class n{constructor(e){this.art=e;let{option:t,constructor:r}=e;t.container instanceof Element?this.$container=t.container:(this.$container=(0,i.query)(t.container),(0,i.errorHandle)(this.$container,`No container element found by ${t.container}`)),(0,i.errorHandle)((0,i.supportsFlex)(),"The current browser does not support flex layout");let a=this.$container.tagName.toLowerCase();(0,i.errorHandle)("div"===a,`Unsupported container element type, only support 'div' but got '${a}'`),(0,i.errorHandle)(r.instances.every(e=>e.template.$container!==this.$container),"Cannot mount multiple instances on the same dom element"),this.query=this.query.bind(this),this.$container.dataset.artId=e.id,this.init()}static get html(){return`
Player version:
${o.version}
Video url:
Video volume:
Video time:
Video duration:
Video resolution:
x
[x]
`}query(e){return(0,i.query)(e,this.$container)}init(){let{option:e}=this.art;if(e.useSSR||(this.$container.innerHTML=n.html),this.$player=this.query(".art-video-player"),this.$video=this.query(".art-video"),this.$track=this.query("track"),this.$poster=this.query(".art-poster"),this.$subtitle=this.query(".art-subtitle"),this.$danmuku=this.query(".art-danmuku"),this.$bottom=this.query(".art-bottom"),this.$progress=this.query(".art-progress"),this.$controls=this.query(".art-controls"),this.$controlsLeft=this.query(".art-controls-left"),this.$controlsCenter=this.query(".art-controls-center"),this.$controlsRight=this.query(".art-controls-right"),this.$layer=this.query(".art-layers"),this.$loading=this.query(".art-loading"),this.$notice=this.query(".art-notice"),this.$noticeInner=this.query(".art-notice-inner"),this.$mask=this.query(".art-mask"),this.$state=this.query(".art-state"),this.$setting=this.query(".art-settings"),this.$info=this.query(".art-info"),this.$infoPanel=this.query(".art-info-panel"),this.$infoClose=this.query(".art-info-close"),this.$contextmenu=this.query(".art-contextmenus"),e.proxy){let t=e.proxy.call(this.art,this.art);(0,i.errorHandle)(t instanceof HTMLVideoElement||t instanceof HTMLCanvasElement,"Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'"),(0,i.replaceElement)(t,this.$video),t.className="art-video",this.$video=t}e.backdrop&&(0,i.addClass)(this.$player,"art-backdrop"),i.isMobile&&(0,i.addClass)(this.$player,"art-mobile")}destroy(e){this.$video.src="",e?this.$container.innerHTML="":(0,i.addClass)(this.$player,"art-destroy")}}r.default=n},{"../package.json":"7z0bJ","./utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],hyN0U:[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r),r.default=class{on(e,t,r){let a=this.e||(this.e={});return(a[e]||(a[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){let a=this;function o(...i){a.off(e,o),t.apply(r,i)}return o._=t,this.on(e,o,r)}emit(e,...t){let r=((this.e||(this.e={}))[e]||[]).slice();for(let e=0;et.call(this,this)),Q.DEBUG){let e=e=>console.log(`[ART.${this.id}] -> ${e}`);e(`Version@${Q.version}`);for(let t=0;te(`Event@${t.type}`))}J.push(this)}static get instances(){return J}static get version(){return c.version}static get config(){return u.default}static get utils(){return Z}static get scheme(){return z.default}static get Emitter(){return X.default}static get validator(){return l.default}static get kindOf(){return l.default.kindOf}static get html(){return W.default.html}static get option(){return{id:"",container:"#artplayer",url:"",poster:"",type:"",theme:"#f00",volume:.7,isLive:!1,muted:!1,autoplay:!1,autoSize:!1,autoMini:!1,loop:!1,flip:!1,playbackRate:!1,aspectRatio:!1,screenshot:!1,setting:!1,hotkey:!0,pip:!1,mutex:!0,backdrop:!0,fullscreen:!1,fullscreenWeb:!1,subtitleOffset:!1,miniProgressBar:!1,useSSR:!1,playsInline:!0,lock:!1,gesture:!0,fastForward:!1,autoPlayback:!1,autoOrientation:!1,airplay:!1,proxy:void 0,layers:[],contextmenu:[],controls:[],settings:[],quality:[],highlight:[],plugins:[],thumbnails:{url:"",number:60,column:10,width:0,height:0,scale:1},subtitle:{url:"",type:"",style:{},name:"",escape:!0,encoding:"utf-8",onVttLoad:e=>e},moreVideoAttr:{controls:!1,preload:Z.isSafari?"auto":"metadata"},i18n:{},icons:{},cssVar:{},customType:{},lang:navigator?.language.toLowerCase()}}get proxy(){return this.events.proxy}get query(){return this.template.query}get video(){return this.template.$video}destroy(e=!0){this.events.destroy(),this.template.destroy(e),J.splice(J.indexOf(this),1),this.isDestroy=!0,this.emit("destroy")}}r.default=Q,Q.STYLE=n.default,Q.DEBUG=!1,Q.CONTEXTMENU=!0,Q.NOTICE_TIME=2e3,Q.SETTING_WIDTH=250,Q.SETTING_ITEM_WIDTH=200,Q.SETTING_ITEM_HEIGHT=35,Q.RESIZE_TIME=200,Q.SCROLL_TIME=200,Q.SCROLL_GAP=50,Q.AUTO_PLAYBACK_MAX=10,Q.AUTO_PLAYBACK_MIN=5,Q.AUTO_PLAYBACK_TIMEOUT=3e3,Q.RECONNECT_TIME_MAX=5,Q.RECONNECT_SLEEP_TIME=1e3,Q.CONTROL_HIDE_TIME=3e3,Q.DBCLICK_TIME=300,Q.DBCLICK_FULLSCREEN=!0,Q.MOBILE_DBCLICK_PLAY=!0,Q.MOBILE_CLICK_PLAY=!1,Q.AUTO_ORIENTATION_TIME=200,Q.INFO_LOOP_TIME=1e3,Q.FAST_FORWARD_VALUE=3,Q.FAST_FORWARD_TIME=1e3,Q.TOUCH_MOVE_RATIO=.5,Q.VOLUME_STEP=.1,Q.SEEK_STEP=5,Q.PLAYBACK_RATE=[.5,.75,1,1.25,1.5,2],Q.ASPECT_RATIO=["default","4:3","16:9"],Q.FLIP=["normal","horizontal","vertical"],Q.FULLSCREEN_WEB_IN_BODY=!1,Q.LOG_VERSION=!0,Q.USE_RAF=!1,Z.isBrowser&&(window.Artplayer=Q,Z.setStyleText("artplayer-style",n.default),setTimeout(()=>{Q.LOG_VERSION&&console.log(`%c ArtPlayer %c ${Q.version} %c https://artplayer.org`,"color: #fff; background: #5f5f5f","color: #fff; background: #4bc729","")},100))},{"bundle-text:./style/index.less":"1thAY","option-validator":"iscjH","../package.json":"7z0bJ","./config":"icOIG","./contextmenu":"669K4","./control":"g00bY","./events":"hEROU","./hotkey":"2ac95","./i18n":"3G1Oj","./icons":"ddm2l","./info":"bAZEJ","./layer":"2RWc0","./loading":"i4KU0","./mask":"02CNZ","./notice":"eVoav","./player":"cZepx","./plugins":"5A1j1","./scheme":"3maHy","./setting":"4IYMA","./storage":"9Ulkg","./subtitle":"4gOJp","./template":"haag7","./utils":"3eYxa","./utils/emitter":"hyN0U","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"1thAY":[function(e,t,r,a){t.exports='.art-video-player{--art-theme:red;--art-font-color:#fff;--art-background-color:#000;--art-text-shadow-color:#00000080;--art-transition-duration:.2s;--art-padding:10px;--art-border-radius:3px;--art-progress-height:6px;--art-progress-color:#ffffff40;--art-hover-color:#ffffff40;--art-loaded-color:#ffffff40;--art-state-size:80px;--art-state-opacity:.8;--art-bottom-height:100px;--art-bottom-offset:20px;--art-bottom-gap:5px;--art-highlight-width:8px;--art-highlight-color:#ffffff80;--art-control-height:46px;--art-control-opacity:.75;--art-control-icon-size:36px;--art-control-icon-scale:1.1;--art-volume-height:120px;--art-volume-handle-size:14px;--art-lock-size:36px;--art-indicator-scale:0;--art-indicator-size:16px;--art-fullscreen-web-index:9999;--art-settings-icon-size:24px;--art-settings-max-height:300px;--art-selector-max-height:300px;--art-contextmenus-min-width:250px;--art-subtitle-font-size:20px;--art-subtitle-gap:5px;--art-subtitle-bottom:15px;--art-subtitle-border:#000;--art-widget-background:#000000d9;--art-tip-background:#000000b3;--art-scrollbar-size:4px;--art-scrollbar-background:#ffffff40;--art-scrollbar-background-hover:#ffffff80;--art-mini-progress-height:2px}.art-bg-cover{background-position:50%;background-repeat:no-repeat;background-size:cover}.art-bottom-gradient{background-image:linear-gradient(#0000,#0006,#000);background-position:bottom;background-repeat:repeat-x}.art-backdrop-filter{backdrop-filter:saturate(180%)blur(20px);background-color:#000000bf!important}.art-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.art-video-player{zoom:1;text-align:left;user-select:none;box-sizing:border-box;width:100%;height:100%;color:var(--art-font-color);background-color:var(--art-background-color);text-shadow:0 0 2px var(--art-text-shadow-color);-webkit-tap-highlight-color:#0000;-ms-touch-action:manipulation;touch-action:manipulation;-ms-high-contrast-adjust:none;direction:ltr;outline:0;margin:0 auto;padding:0;font-family:PingFang SC,Helvetica Neue,Microsoft YaHei,Roboto,Arial,sans-serif;font-size:14px;line-height:1.3;position:relative}.art-video-player *,.art-video-player :before,.art-video-player :after{box-sizing:border-box}.art-video-player ::-webkit-scrollbar{width:var(--art-scrollbar-size);height:var(--art-scrollbar-size)}.art-video-player ::-webkit-scrollbar-thumb{background-color:var(--art-scrollbar-background)}.art-video-player ::-webkit-scrollbar-thumb:hover{background-color:var(--art-scrollbar-background-hover)}.art-video-player img{vertical-align:top;max-width:100%}.art-video-player svg{fill:var(--art-font-color)}.art-video-player a{color:var(--art-font-color);text-decoration:none}.art-icon{justify-content:center;align-items:center;line-height:1;display:flex}.art-video-player.art-backdrop .art-contextmenus,.art-video-player.art-backdrop .art-info,.art-video-player.art-backdrop .art-settings,.art-video-player.art-backdrop .art-layer-auto-playback,.art-video-player.art-backdrop .art-selector-list,.art-video-player.art-backdrop .art-volume-inner{backdrop-filter:saturate(180%)blur(20px);background-color:#000000bf!important}.art-video{z-index:10;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.art-poster{z-index:11;pointer-events:none;background-position:50%;background-repeat:no-repeat;background-size:cover;width:100%;height:100%;position:absolute;inset:0}.art-video-player .art-subtitle{z-index:20;text-align:center;pointer-events:none;justify-content:center;align-items:center;gap:var(--art-subtitle-gap);width:100%;bottom:var(--art-subtitle-bottom);font-size:var(--art-subtitle-font-size);transition:bottom var(--art-transition-duration)ease;text-shadow:var(--art-subtitle-border)1px 0 1px,var(--art-subtitle-border)0 1px 1px,var(--art-subtitle-border)-1px 0 1px,var(--art-subtitle-border)0 -1px 1px,var(--art-subtitle-border)1px 1px 1px,var(--art-subtitle-border)-1px -1px 1px,var(--art-subtitle-border)1px -1px 1px,var(--art-subtitle-border)-1px 1px 1px;flex-direction:column;padding:0 5%;display:none;position:absolute}.art-video-player.art-subtitle-show .art-subtitle{display:flex}.art-video-player.art-control-show .art-subtitle{bottom:calc(var(--art-control-height) + var(--art-subtitle-bottom))}.art-danmuku{z-index:30;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.art-video-player .art-layers{z-index:40;pointer-events:none;width:100%;height:100%;display:none;position:absolute;inset:0}.art-video-player .art-layers .art-layer{pointer-events:auto}.art-video-player.art-layer-show .art-layers{display:flex}.art-video-player .art-mask{z-index:50;pointer-events:none;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;inset:0}.art-video-player .art-mask .art-state{opacity:0;width:var(--art-state-size);height:var(--art-state-size);transition:all var(--art-transition-duration)ease;justify-content:center;align-items:center;display:flex;transform:scale(2)}.art-video-player.art-mask-show .art-state{cursor:pointer;pointer-events:auto;opacity:var(--art-state-opacity);transform:scale(1)}.art-video-player.art-loading-show .art-state{display:none}.art-video-player .art-loading{z-index:70;pointer-events:none;justify-content:center;align-items:center;width:100%;height:100%;display:none;position:absolute;inset:0}.art-video-player.art-loading-show .art-loading{display:flex}.art-video-player .art-bottom{z-index:60;opacity:0;pointer-events:none;width:100%;height:100%;padding:0 var(--art-padding);transition:all var(--art-transition-duration)ease;background-size:100% var(--art-bottom-height);background-image:linear-gradient(#0000,#0006,#000);background-position:bottom;background-repeat:repeat-x;flex-direction:column;justify-content:flex-end;display:flex;position:absolute;inset:0;overflow:hidden}.art-video-player .art-bottom .art-controls,.art-video-player .art-bottom .art-progress{transform:translateY(var(--art-bottom-offset));transition:transform var(--art-transition-duration)ease}.art-video-player.art-control-show .art-bottom,.art-video-player.art-hover .art-bottom{opacity:1}.art-video-player.art-control-show .art-bottom .art-controls,.art-video-player.art-hover .art-bottom .art-controls,.art-video-player.art-control-show .art-bottom .art-progress,.art-video-player.art-hover .art-bottom .art-progress{transform:translateY(0)}.art-bottom .art-progress{z-index:0;pointer-events:auto;padding-bottom:var(--art-bottom-gap);position:relative}.art-bottom .art-progress .art-control-progress{cursor:pointer;height:var(--art-progress-height);justify-content:center;align-items:center;display:flex;position:relative}.art-bottom .art-progress .art-control-progress .art-control-progress-inner{width:100%;height:50%;transition:height var(--art-transition-duration)ease;background-color:var(--art-progress-color);align-items:center;display:flex;position:relative}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-hover{z-index:0;background-color:var(--art-hover-color);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{z-index:10;background-color:var(--art-loaded-color);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-played{z-index:20;background-color:var(--art-theme);width:0%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{z-index:30;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{z-index:0;pointer-events:auto;width:100%;height:100%;transform:translateX(calc(var(--art-highlight-width)/-2));background-color:var(--art-highlight-color);position:absolute;inset:0 auto 0 0;width:var(--art-highlight-width)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{z-index:40;width:var(--art-indicator-size);height:var(--art-indicator-size);transform:scale(var(--art-indicator-scale));margin-left:calc(var(--art-indicator-size)/-2);transition:transform var(--art-transition-duration)ease;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;left:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator .art-icon{pointer-events:none;width:100%;height:100%}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:hover{transform:scale(1.2)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator:active{transform:scale(1)!important}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-tip{z-index:50;border-radius:var(--art-border-radius);white-space:nowrap;background-color:var(--art-tip-background);padding:3px 5px;font-size:12px;line-height:1;display:none;position:absolute;top:-25px;left:0}.art-bottom .art-progress .art-control-progress:hover .art-control-progress-inner{height:100%}.art-bottom .art-progress .art-control-thumbnails{bottom:calc(var(--art-bottom-gap) + 10px);border-radius:var(--art-border-radius);pointer-events:none;background-color:var(--art-widget-background);display:none;position:absolute;left:0;box-shadow:0 1px 3px #0003,0 1px 2px -1px #0003}.art-bottom:hover .art-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{transform:scale(1)}.art-controls{z-index:10;pointer-events:auto;height:var(--art-control-height);justify-content:space-between;align-items:center;display:flex;position:relative}.art-controls .art-controls-left,.art-controls .art-controls-right{height:100%;display:flex}.art-controls .art-controls-center{flex:1;justify-content:center;align-items:center;height:100%;padding:0 10px;display:none}.art-controls .art-controls-right{justify-content:flex-end}.art-controls .art-control{cursor:pointer;white-space:nowrap;opacity:var(--art-control-opacity);min-height:var(--art-control-height);min-width:var(--art-control-height);transition:opacity var(--art-transition-duration)ease;flex-shrink:0;justify-content:center;align-items:center;display:flex}.art-controls .art-control .art-icon{height:var(--art-control-icon-size);width:var(--art-control-icon-size);transform:scale(var(--art-control-icon-scale));transition:transform var(--art-transition-duration)ease}.art-controls .art-control .art-icon:active{transform:scale(calc(var(--art-control-icon-scale)*.8))}.art-controls .art-control:hover{opacity:1}.art-control-volume{position:relative}.art-control-volume .art-volume-panel{text-align:center;cursor:default;opacity:0;pointer-events:none;left:0;right:0;bottom:var(--art-control-height);width:var(--art-control-height);height:var(--art-volume-height);transition:all var(--art-transition-duration)ease;justify-content:center;align-items:center;padding:0 5px;font-size:12px;display:flex;position:absolute;transform:translateY(10px)}.art-control-volume .art-volume-panel .art-volume-inner{border-radius:var(--art-border-radius);background-color:var(--art-widget-background);flex-direction:column;align-items:center;gap:10px;width:100%;height:100%;padding:10px 0 12px;display:flex}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider{cursor:pointer;flex:1;justify-content:center;width:100%;display:flex;position:relative}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle{border-radius:var(--art-border-radius);background-color:#ffffff40;justify-content:center;width:2px;display:flex;position:relative;overflow:hidden}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle .art-volume-loaded{z-index:0;background-color:var(--art-theme);width:100%;height:100%;position:absolute;inset:0}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-indicator{width:var(--art-volume-handle-size);height:var(--art-volume-handle-size);margin-top:calc(var(--art-volume-handle-size)/-2);background-color:var(--art-theme);transition:transform var(--art-transition-duration)ease;border-radius:100%;flex-shrink:0;position:absolute;transform:scale(1)}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider:active .art-volume-indicator{transform:scale(.9)}.art-control-volume:hover .art-volume-panel{opacity:1;pointer-events:auto;transform:translateY(0)}.art-video-player .art-notice{z-index:80;width:100%;height:auto;padding:var(--art-padding);pointer-events:none;display:none;position:absolute;inset:0 0 auto}.art-video-player .art-notice .art-notice-inner{border-radius:var(--art-border-radius);background-color:var(--art-tip-background);padding:5px;line-height:1;display:inline-flex}.art-video-player.art-notice-show .art-notice{display:flex}.art-video-player .art-contextmenus{z-index:120;border-radius:var(--art-border-radius);background-color:var(--art-widget-background);min-width:var(--art-contextmenus-min-width);flex-direction:column;padding:5px 0;font-size:12px;display:none;position:absolute}.art-video-player .art-contextmenus .art-contextmenu{cursor:pointer;border-bottom:1px solid #ffffff1a;padding:10px 15px;display:flex}.art-video-player .art-contextmenus .art-contextmenu span{padding:0 8px}.art-video-player .art-contextmenus .art-contextmenu span:hover,.art-video-player .art-contextmenus .art-contextmenu span.art-current{color:var(--art-theme)}.art-video-player .art-contextmenus .art-contextmenu:hover{background-color:#ffffff1a}.art-video-player .art-contextmenus .art-contextmenu:last-child{border-bottom:none}.art-video-player.art-contextmenu-show .art-contextmenus{display:flex}.art-video-player .art-settings{z-index:90;border-radius:var(--art-border-radius);max-height:var(--art-settings-max-height);left:auto;right:var(--art-padding);bottom:var(--art-control-height);transition:all var(--art-transition-duration)ease;background-color:var(--art-widget-background);flex-direction:column;display:none;position:absolute;overflow:hidden auto}.art-video-player .art-settings .art-setting-panel{flex-direction:column;display:none}.art-video-player .art-settings .art-setting-panel.art-current{display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item{cursor:pointer;transition:background-color var(--art-transition-duration)ease;justify-content:space-between;align-items:center;padding:0 5px;display:flex;overflow:hidden}.art-video-player .art-settings .art-setting-panel .art-setting-item:hover{background-color:#ffffff1a}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current{color:var(--art-theme)}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-icon-check{visibility:hidden;height:15px}.art-video-player .art-settings .art-setting-panel .art-setting-item.art-current .art-icon-check{visibility:visible}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left{flex-shrink:0;justify-content:center;align-items:center;gap:5px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-left .art-setting-item-left-icon{height:var(--art-settings-icon-size);width:var(--art-settings-icon-size);justify-content:center;align-items:center;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right{justify-content:center;align-items:center;gap:5px;font-size:12px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-tooltip{white-space:nowrap;color:#ffffff80}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-item-right-icon{justify-content:center;align-items:center;min-width:32px;height:24px;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-range{appearance:none;background-color:#fff3;outline:none;width:80px;height:3px}.art-video-player .art-settings .art-setting-panel .art-setting-item-back{border-bottom:1px solid #ffffff1a}.art-video-player.art-setting-show .art-settings{display:flex}.art-video-player .art-info{left:var(--art-padding);top:var(--art-padding);z-index:100;border-radius:var(--art-border-radius);background-color:var(--art-widget-background);padding:10px;font-size:12px;display:none;position:absolute}.art-video-player .art-info .art-info-panel{flex-direction:column;gap:5px;display:flex}.art-video-player .art-info .art-info-panel .art-info-item{align-items:center;gap:5px;display:flex}.art-video-player .art-info .art-info-panel .art-info-item .art-info-title{text-align:right;width:100px}.art-video-player .art-info .art-info-panel .art-info-item .art-info-content{text-overflow:ellipsis;white-space:nowrap;user-select:all;width:250px;overflow:hidden}.art-video-player .art-info .art-info-close{cursor:pointer;position:absolute;top:5px;right:5px}.art-video-player.art-info-show .art-info{display:flex}.art-hide-cursor *{cursor:none!important}.art-video-player[data-aspect-ratio]{overflow:hidden}.art-video-player[data-aspect-ratio] .art-video{object-fit:fill;box-sizing:content-box}.art-fullscreen{--art-progress-height:8px;--art-indicator-size:20px;--art-control-height:60px;--art-control-icon-scale:1.3}.art-fullscreen-web{--art-progress-height:8px;--art-indicator-size:20px;--art-control-height:60px;--art-control-icon-scale:1.3;z-index:var(--art-fullscreen-web-index);width:100%;height:100%;position:fixed;inset:0}.art-mini-popup{z-index:9999;border-radius:var(--art-border-radius);cursor:move;user-select:none;background:#000;width:320px;height:180px;transition:opacity .2s;position:fixed;overflow:hidden;box-shadow:0 0 5px #00000080}.art-mini-popup svg{fill:#fff}.art-mini-popup .art-video{pointer-events:none}.art-mini-popup .art-mini-close{z-index:20;cursor:pointer;opacity:0;transition:opacity .2s;position:absolute;top:10px;right:10px}.art-mini-popup .art-mini-state{z-index:30;pointer-events:none;opacity:0;background-color:#00000040;justify-content:center;align-items:center;width:100%;height:100%;transition:opacity .2s;display:flex;position:absolute;inset:0}.art-mini-popup .art-mini-state .art-icon{opacity:.75;cursor:pointer;pointer-events:auto;transition:transform .2s;transform:scale(3)}.art-mini-popup .art-mini-state .art-icon:active{transform:scale(2.5)}.art-mini-popup.art-mini-dragging{opacity:.9}.art-mini-popup:hover .art-mini-close,.art-mini-popup:hover .art-mini-state{opacity:1}.art-video-player[data-flip=horizontal] .art-video{transform:scaleX(-1)}.art-video-player[data-flip=vertical] .art-video{transform:scaleY(-1)}.art-video-player .art-layer-lock{height:var(--art-lock-size);width:var(--art-lock-size);top:50%;left:var(--art-padding);background-color:var(--art-tip-background);border-radius:50%;justify-content:center;align-items:center;display:none;position:absolute;transform:translateY(-50%)}.art-video-player .art-layer-auto-playback{border-radius:var(--art-border-radius);left:var(--art-padding);bottom:calc(var(--art-control-height) + var(--art-bottom-gap) + 10px);background-color:var(--art-widget-background);align-items:center;gap:10px;padding:10px;line-height:1;display:none;position:absolute}.art-video-player .art-layer-auto-playback .art-auto-playback-close{cursor:pointer;justify-content:center;align-items:center;display:flex}.art-video-player .art-layer-auto-playback .art-auto-playback-close svg{width:15px;height:15px;fill:var(--art-theme)}.art-video-player .art-layer-auto-playback .art-auto-playback-jump{color:var(--art-theme);cursor:pointer}.art-video-player.art-lock .art-subtitle{bottom:var(--art-subtitle-bottom)!important}.art-video-player.art-mini-progress-bar .art-bottom,.art-video-player.art-lock .art-bottom{opacity:1;background-image:none;padding:0}.art-video-player.art-mini-progress-bar .art-bottom .art-controls,.art-video-player.art-lock .art-bottom .art-controls,.art-video-player.art-mini-progress-bar .art-bottom .art-progress,.art-video-player.art-lock .art-bottom .art-progress{transform:translateY(calc(var(--art-control-height) + var(--art-bottom-gap) + var(--art-progress-height)/4))}.art-video-player.art-mini-progress-bar .art-bottom .art-progress-indicator,.art-video-player.art-lock .art-bottom .art-progress-indicator{display:none!important}.art-video-player.art-control-show .art-layer-lock{display:flex}.art-control-selector{justify-content:center;display:flex;position:relative}.art-control-selector .art-selector-list{text-align:center;border-radius:var(--art-border-radius);opacity:0;pointer-events:none;bottom:var(--art-control-height);max-height:var(--art-selector-max-height);background-color:var(--art-widget-background);transition:all var(--art-transition-duration)ease;flex-direction:column;align-items:center;display:flex;position:absolute;overflow:hidden auto;transform:translateY(10px)}.art-control-selector .art-selector-list .art-selector-item{flex-shrink:0;justify-content:center;align-items:center;width:100%;padding:10px 15px;line-height:1;display:flex}.art-control-selector .art-selector-list .art-selector-item:hover{background-color:#ffffff1a}.art-control-selector .art-selector-list .art-selector-item:hover,.art-control-selector .art-selector-list .art-selector-item.art-current{color:var(--art-theme)}.art-control-selector:hover .art-selector-list{opacity:1;pointer-events:auto;transform:translateY(0)}[class*=hint--]{font-style:normal;display:inline-block;position:relative}[class*=hint--]:before,[class*=hint--]:after{visibility:hidden;opacity:0;z-index:1000000;pointer-events:none;transition:all .3s;position:absolute;transform:translate(0,0)}[class*=hint--]:hover:before,[class*=hint--]:hover:after{visibility:visible;opacity:1;transition-delay:.1s}[class*=hint--]:before{content:"";z-index:1000001;background:0 0;border:6px solid #0000;position:absolute}[class*=hint--]:after{color:#fff;white-space:nowrap;background:#000;padding:8px 10px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;line-height:12px}[class*=hint--][aria-label]:after{content:attr(aria-label)}[class*=hint--][data-hint]:after{content:attr(data-hint)}[aria-label=""]:before,[aria-label=""]:after,[data-hint=""]:before,[data-hint=""]:after{display:none!important}.hint--top-left:before,.hint--top-right:before,.hint--top:before{border-top-color:#000}.hint--bottom-left:before,.hint--bottom-right:before,.hint--bottom:before{border-bottom-color:#000}.hint--left:before{border-left-color:#000}.hint--right:before{border-right-color:#000}.hint--top:before{margin-bottom:-11px}.hint--top:before,.hint--top:after{bottom:100%;left:50%}.hint--top:before{left:calc(50% - 6px)}.hint--top:after{transform:translate(-50%)}.hint--top:hover:before{transform:translateY(-8px)}.hint--top:hover:after{transform:translate(-50%)translateY(-8px)}.hint--bottom:before{margin-top:-11px}.hint--bottom:before,.hint--bottom:after{top:100%;left:50%}.hint--bottom:before{left:calc(50% - 6px)}.hint--bottom:after{transform:translate(-50%)}.hint--bottom:hover:before{transform:translateY(8px)}.hint--bottom:hover:after{transform:translate(-50%)translateY(8px)}.hint--right:before{margin-bottom:-6px;margin-left:-11px}.hint--right:after{margin-bottom:-14px}.hint--right:before,.hint--right:after{bottom:50%;left:100%}.hint--right:hover:before,.hint--right:hover:after{transform:translate(8px)}.hint--left:before{margin-bottom:-6px;margin-right:-11px}.hint--left:after{margin-bottom:-14px}.hint--left:before,.hint--left:after{bottom:50%;right:100%}.hint--left:hover:before,.hint--left:hover:after{transform:translate(-8px)}.hint--top-left:before{margin-bottom:-11px}.hint--top-left:before,.hint--top-left:after{bottom:100%;left:50%}.hint--top-left:before{left:calc(50% - 6px)}.hint--top-left:after{margin-left:12px;transform:translate(-100%)}.hint--top-left:hover:before{transform:translateY(-8px)}.hint--top-left:hover:after{transform:translate(-100%)translateY(-8px)}.hint--top-right:before{margin-bottom:-11px}.hint--top-right:before,.hint--top-right:after{bottom:100%;left:50%}.hint--top-right:before{left:calc(50% - 6px)}.hint--top-right:after{margin-left:-12px;transform:translate(0)}.hint--top-right:hover:before,.hint--top-right:hover:after{transform:translateY(-8px)}.hint--bottom-left:before{margin-top:-11px}.hint--bottom-left:before,.hint--bottom-left:after{top:100%;left:50%}.hint--bottom-left:before{left:calc(50% - 6px)}.hint--bottom-left:after{margin-left:12px;transform:translate(-100%)}.hint--bottom-left:hover:before{transform:translateY(8px)}.hint--bottom-left:hover:after{transform:translate(-100%)translateY(8px)}.hint--bottom-right:before{margin-top:-11px}.hint--bottom-right:before,.hint--bottom-right:after{top:100%;left:50%}.hint--bottom-right:before{left:calc(50% - 6px)}.hint--bottom-right:after{margin-left:-12px;transform:translate(0)}.hint--bottom-right:hover:before,.hint--bottom-right:hover:after{transform:translateY(8px)}.hint--small:after,.hint--medium:after,.hint--large:after{white-space:normal;word-wrap:break-word;line-height:1.4em}.hint--small:after{width:80px}.hint--medium:after{width:150px}.hint--large:after{width:300px}[class*=hint--]:after{text-shadow:0 -1px #000;box-shadow:4px 4px 8px #0000004d}.hint--error:after{text-shadow:0 -1px #592726;background-color:#b34e4d}.hint--error.hint--top-left:before,.hint--error.hint--top-right:before,.hint--error.hint--top:before{border-top-color:#b34e4d}.hint--error.hint--bottom-left:before,.hint--error.hint--bottom-right:before,.hint--error.hint--bottom:before{border-bottom-color:#b34e4d}.hint--error.hint--left:before{border-left-color:#b34e4d}.hint--error.hint--right:before{border-right-color:#b34e4d}.hint--warning:after{text-shadow:0 -1px #6c5328;background-color:#c09854}.hint--warning.hint--top-left:before,.hint--warning.hint--top-right:before,.hint--warning.hint--top:before{border-top-color:#c09854}.hint--warning.hint--bottom-left:before,.hint--warning.hint--bottom-right:before,.hint--warning.hint--bottom:before{border-bottom-color:#c09854}.hint--warning.hint--left:before{border-left-color:#c09854}.hint--warning.hint--right:before{border-right-color:#c09854}.hint--info:after{text-shadow:0 -1px #1a3c4d;background-color:#3986ac}.hint--info.hint--top-left:before,.hint--info.hint--top-right:before,.hint--info.hint--top:before{border-top-color:#3986ac}.hint--info.hint--bottom-left:before,.hint--info.hint--bottom-right:before,.hint--info.hint--bottom:before{border-bottom-color:#3986ac}.hint--info.hint--left:before{border-left-color:#3986ac}.hint--info.hint--right:before{border-right-color:#3986ac}.hint--success:after{text-shadow:0 -1px #1a321a;background-color:#458746}.hint--success.hint--top-left:before,.hint--success.hint--top-right:before,.hint--success.hint--top:before{border-top-color:#458746}.hint--success.hint--bottom-left:before,.hint--success.hint--bottom-right:before,.hint--success.hint--bottom:before{border-bottom-color:#458746}.hint--success.hint--left:before{border-left-color:#458746}.hint--success.hint--right:before{border-right-color:#458746}.hint--always:after,.hint--always:before{opacity:1;visibility:visible}.hint--always.hint--top:before{transform:translateY(-8px)}.hint--always.hint--top:after{transform:translate(-50%)translateY(-8px)}.hint--always.hint--top-left:before{transform:translateY(-8px)}.hint--always.hint--top-left:after{transform:translate(-100%)translateY(-8px)}.hint--always.hint--top-right:before,.hint--always.hint--top-right:after{transform:translateY(-8px)}.hint--always.hint--bottom:before{transform:translateY(8px)}.hint--always.hint--bottom:after{transform:translate(-50%)translateY(8px)}.hint--always.hint--bottom-left:before{transform:translateY(8px)}.hint--always.hint--bottom-left:after{transform:translate(-100%)translateY(8px)}.hint--always.hint--bottom-right:before,.hint--always.hint--bottom-right:after{transform:translateY(8px)}.hint--always.hint--left:before,.hint--always.hint--left:after{transform:translate(-8px)}.hint--always.hint--right:before,.hint--always.hint--right:after{transform:translate(8px)}.hint--rounded:after{border-radius:4px}.hint--no-animate:before,.hint--no-animate:after{transition-duration:0s}.hint--bounce:before,.hint--bounce:after{-webkit-transition:opacity .3s,visibility .3s,-webkit-transform .3s cubic-bezier(.71,1.7,.77,1.24);-moz-transition:opacity .3s,visibility .3s,-moz-transform .3s cubic-bezier(.71,1.7,.77,1.24);transition:opacity .3s,visibility .3s,transform .3s cubic-bezier(.71,1.7,.77,1.24)}.hint--no-shadow:before,.hint--no-shadow:after{text-shadow:initial;box-shadow:initial}.hint--no-arrow:before{display:none}.art-video-player.art-mobile{--art-bottom-gap:10px;--art-control-height:38px;--art-control-icon-scale:1;--art-state-size:60px;--art-settings-max-height:180px;--art-selector-max-height:180px;--art-indicator-scale:1;--art-control-opacity:1}.art-video-player.art-mobile .art-controls-left{margin-left:calc(var(--art-padding)/-1)}.art-video-player.art-mobile .art-controls-right{margin-right:calc(var(--art-padding)/-1)}'},{}],iscjH:[function(e,t,r,a){t.exports=function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}var t=Object.prototype.toString,r=function(r){if(void 0===r)return"undefined";if(null===r)return"null";var o=e(r);if("boolean"===o)return"boolean";if("string"===o)return"string";if("number"===o)return"number";if("symbol"===o)return"symbol";if("function"===o)return"GeneratorFunction"===a(r)?"generatorfunction":"function";if(Array.isArray?Array.isArray(r):r instanceof Array)return"array";if(r.constructor&&"function"==typeof r.constructor.isBuffer&&r.constructor.isBuffer(r))return"buffer";if(function(e){try{if("number"==typeof e.length&&"function"==typeof e.callee)return!0}catch(e){if(-1!==e.message.indexOf("callee"))return!0}return!1}(r))return"arguments";if(r instanceof Date||"function"==typeof r.toDateString&&"function"==typeof r.getDate&&"function"==typeof r.setDate)return"date";if(r instanceof Error||"string"==typeof r.message&&r.constructor&&"number"==typeof r.constructor.stackTraceLimit)return"error";if(r instanceof RegExp||"string"==typeof r.flags&&"boolean"==typeof r.ignoreCase&&"boolean"==typeof r.multiline&&"boolean"==typeof r.global)return"regexp";switch(a(r)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if("function"==typeof r.throw&&"function"==typeof r.return&&"function"==typeof r.next)return"generator";switch(o=t.call(r)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return o.slice(8,-1).toLowerCase().replace(/\s/g,"")};function a(e){return e.constructor?e.constructor.name:null}function o(e,t){var a=2","license":"MIT","homepage":"https://artplayer.org","repository":{"type":"git","url":"git+https://github.com/zhw2590582/ArtPlayer.git"},"bugs":{"url":"https://github.com/zhw2590582/ArtPlayer/issues"},"keywords":["html5","video","player"],"main":"dist/artplayer.js","legacy":"dist/artplayer.legacy.js","types":"types/artplayer.d.ts","browserslist":"last 1 Chrome version","dependencies":{"option-validator":"^2.0.6"}}')},{}],icOIG:[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r),r.default={properties:["audioTracks","autoplay","buffered","controller","controls","crossOrigin","currentSrc","currentTime","defaultMuted","defaultPlaybackRate","duration","ended","error","loop","mediaGroup","muted","networkState","paused","playbackRate","played","preload","readyState","seekable","seeking","src","startDate","textTracks","videoTracks","volume"],methods:["addTextTrack","canPlayType","load","play","pause"],events:["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"],prototypes:["width","height","videoWidth","videoHeight","poster","webkitDecodedFrameCount","webkitDroppedFrameCount","playsInline","webkitSupportsFullscreen","webkitDisplayingFullscreen","onenterpictureinpicture","onleavepictureinpicture","disablePictureInPicture","cancelVideoFrameCallback","requestVideoFrameCallback","getVideoPlaybackQuality","requestPictureInPicture","webkitEnterFullScreen","webkitEnterFullscreen","webkitExitFullScreen","webkitExitFullscreen"]}},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6ykb1":[function(e,t,r,a){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}],"669K4":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("../utils"),n=e("../utils/component"),s=o.interopDefault(n),l=e("./aspectRatio"),c=o.interopDefault(l),p=e("./close"),u=o.interopDefault(p),d=e("./flip"),f=o.interopDefault(d),h=e("./info"),m=o.interopDefault(h),g=e("./playbackRate"),v=o.interopDefault(g),y=e("./version"),b=o.interopDefault(y);class x extends s.default{constructor(e){super(e),this.name="contextmenu",this.$parent=e.template.$contextmenu,i.isMobile||this.init()}init(){let{option:e,proxy:t,template:{$player:r,$contextmenu:a}}=this.art;e.playbackRate&&this.add((0,v.default)({name:"playbackRate",index:10})),e.aspectRatio&&this.add((0,c.default)({name:"aspectRatio",index:20})),e.flip&&this.add((0,f.default)({name:"flip",index:30})),this.add((0,m.default)({name:"info",index:40})),this.add((0,b.default)({name:"version",index:50})),this.add((0,u.default)({name:"close",index:60}));for(let t=0;t{if(!this.art.constructor.CONTEXTMENU)return;e.preventDefault(),this.show=!0;let t=e.clientX,o=e.clientY,{height:n,width:s,left:l,top:c}=(0,i.getRect)(r),{height:p,width:u}=(0,i.getRect)(a),d=t-l,f=o-c;t+u>l+s&&(d=s-u),o+p>c+n&&(f=n-p),(0,i.setStyles)(a,{top:`${f}px`,left:`${d}px`})}),t(r,"click",e=>{(0,i.includeFromEvent)(e,a)||(this.show=!1)}),this.art.on("blur",()=>{this.show=!1})}}r.default=x},{"../utils":"3eYxa","../utils/component":"1lUmE","./aspectRatio":"cLwhW","./close":"1OdE3","./flip":"gTbXH","./info":"51BMv","./playbackRate":"hzsOn","./version":"gsm66","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"3eYxa":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("./compatibility");o.exportAll(i,r);var n=e("./dom");o.exportAll(n,r);var s=e("./error");o.exportAll(s,r);var l=e("./file");o.exportAll(l,r);var c=e("./format");o.exportAll(c,r);var p=e("./property");o.exportAll(p,r);var u=e("./subtitle");o.exportAll(u,r);var d=e("./time");o.exportAll(d,r)},{"./compatibility":"kugJP","./dom":"4w3SA","./error":"iu2jQ","./file":"iE5c3","./format":"6uKmQ","./property":"13VsI","./subtitle":"bhlxy","./time":"2xmIQ","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],kugJP:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"userAgent",()=>i),o.export(r,"isSafari",()=>n),o.export(r,"isIOS",()=>s),o.export(r,"isIOS13",()=>l),o.export(r,"isMobile",()=>c),o.export(r,"isBrowser",()=>p);let i=globalThis?.CUSTOM_USER_AGENT??("undefined"!=typeof navigator?navigator.userAgent:""),n=/^(?:(?!chrome|android).)*safari/i.test(i),s=/iPad|iPhone|iPod/i.test(i)&&!window.MSStream,l=s||i.includes("Macintosh")&&navigator.maxTouchPoints>=1,c=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(i)||l,p="undefined"!=typeof window&&"undefined"!=typeof document},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"4w3SA":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"query",()=>n),o.export(r,"queryAll",()=>s),o.export(r,"addClass",()=>l),o.export(r,"removeClass",()=>c),o.export(r,"hasClass",()=>p),o.export(r,"append",()=>u),o.export(r,"remove",()=>d),o.export(r,"setStyle",()=>f),o.export(r,"setStyles",()=>h),o.export(r,"getStyle",()=>m),o.export(r,"siblings",()=>g),o.export(r,"inverseClass",()=>v),o.export(r,"tooltip",()=>y),o.export(r,"isInViewport",()=>b),o.export(r,"includeFromEvent",()=>x),o.export(r,"replaceElement",()=>w),o.export(r,"createElement",()=>k),o.export(r,"getIcon",()=>j),o.export(r,"setStyleText",()=>S),o.export(r,"supportsFlex",()=>$),o.export(r,"getRect",()=>E),o.export(r,"loadImg",()=>I),o.export(r,"getComposedPath",()=>M);var i=e("./compatibility");function n(e,t=document){return t.querySelector(e)}function s(e,t=document){return Array.from(t.querySelectorAll(e))}function l(e,t){return e.classList.add(t)}function c(e,t){return e.classList.remove(t)}function p(e,t){return e.classList.contains(t)}function u(e,t){return t instanceof Element?e.appendChild(t):e.insertAdjacentHTML("beforeend",String(t)),e.lastElementChild||e.lastChild}function d(e){return e.parentNode.removeChild(e)}function f(e,t,r){return e.style[t]=r,e}function h(e,t){for(let r in t)f(e,r,t[r]);return e}function m(e,t,r=!0){let a=window.getComputedStyle(e,null).getPropertyValue(t);return r?Number.parseFloat(a):a}function g(e){return Array.from(e.parentElement.children).filter(t=>t!==e)}function v(e,t){g(e).forEach(e=>c(e,t)),l(e,t)}function y(e,t,r="top"){i.isMobile||(e.setAttribute("aria-label",t),l(e,"hint--rounded"),l(e,`hint--${r}`))}function b(e,t=0){let r=e.getBoundingClientRect(),a=window.innerHeight||document.documentElement.clientHeight,o=window.innerWidth||document.documentElement.clientWidth,i=r.top-t<=a&&r.top+r.height+t>=0,n=r.left-t<=o+t&&r.left+r.width+t>=0;return i&&n}function x(e,t){return M(e).includes(t)}function w(e,t){return t.parentNode.replaceChild(e,t),e}function k(e){return document.createElement(e)}function j(e="",t=""){let r=k("i");return l(r,"art-icon"),l(r,`art-icon-${e}`),u(r,t),r}function S(e,t){let r=document.getElementById(e);r||((r=document.createElement("style")).id=e,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{document.head.appendChild(r)}):(document.head||document.documentElement).appendChild(r)),r.textContent=t}function $(){let e=document.createElement("div");return e.style.display="flex","flex"===e.style.display}function E(e){return e.getBoundingClientRect()}function I(e,t){return new Promise((r,a)=>{let o=new Image;o.onload=function(){if(t&&1!==t){let i=document.createElement("canvas"),n=i.getContext("2d");i.width=o.width*t,i.height=o.height*t,n.drawImage(o,0,0,i.width,i.height),i.toBlob(t=>{let o=URL.createObjectURL(t),i=new Image;i.onload=function(){r(i)},i.onerror=function(){URL.revokeObjectURL(o),a(Error(`Image load failed: ${e}`))},i.src=o})}else r(o)},o.onerror=function(){a(Error(`Image load failed: ${e}`))},o.src=e})}function M(e){if(e.composedPath)return e.composedPath();let t=[],r=e.target;for(;r;)t.push(r),r=r.parentNode;return t.includes(window)||void 0===window||t.push(window),t}},{"./compatibility":"kugJP","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],iu2jQ:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"ArtPlayerError",()=>i),o.export(r,"errorHandle",()=>n);class i extends Error{constructor(e,t){super(e),"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,t||this.constructor),this.name="ArtPlayerError"}}function n(e,t){if(!e)throw new i(t);return e}},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],iE5c3:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e,t){let r=document.createElement("a");r.style.display="none",r.href=e,r.download=t,document.body.appendChild(r),r.click(),document.body.removeChild(r)}o.defineInteropFlag(r),o.export(r,"getExt",()=>function e(t){return t.includes("?")?e(t.split("?")[0]):t.includes("#")?e(t.split("#")[0]):t.trim().toLowerCase().split(".").pop()}),o.export(r,"download",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6uKmQ":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function n(e){return e.charAt(0).toUpperCase()+e.slice(1)}function s(e){if(!e)return"00:00";let t=Math.floor(e/3600),r=Math.floor((e-3600*t)/60),a=Math.floor(e-3600*t-60*r);return(t>0?[t,r,a]:[r,a]).map(e=>e<10?`0${e}`:String(e)).join(":")}function l(e){return e.replace(/[&<>'"]/g,e=>({"&":"&","<":"<",">":">","'":"'",'"':"""})[e]||e)}function c(e){let t={"&":"&","<":"<",">":">","'":"'",""":'"'},r=RegExp(`(${Object.keys(t).join("|")})`,"g");return e.replace(r,e=>t[e]||e)}o.defineInteropFlag(r),o.export(r,"clamp",()=>i),o.export(r,"capitalize",()=>n),o.export(r,"secondToTime",()=>s),o.export(r,"escape",()=>l),o.export(r,"unescape",()=>c)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"13VsI":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"def",()=>i),o.export(r,"has",()=>s),o.export(r,"get",()=>l),o.export(r,"mergeDeep",()=>function e(...t){let r=e=>e&&"object"==typeof e&&!Array.isArray(e);return t.reduce((t,a)=>(Object.keys(a).forEach(o=>{let i=t[o],n=a[o];Array.isArray(i)&&Array.isArray(n)?t[o]=i.concat(...n):r(i)&&r(n)?t[o]=e(i,n):t[o]=n}),t),{})});let i=Object.defineProperty,{hasOwnProperty:n}=Object.prototype;function s(e,t){return n.call(e,t)}function l(e,t){return Object.getOwnPropertyDescriptor(e,t)}},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],bhlxy:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){return"WEBVTT \r\n\r\n".concat(e.replace(/(\d\d:\d\d:\d\d)[,.](\d+)/g,(e,t,r)=>{let a=r.slice(0,3);return 1===r.length&&(a=`${r}00`),2===r.length&&(a=`${r}0`),`${t},${a}`}).replace(/\{\\([ibu])\}/g,"").replace(/\{\\([ibu])1\}/g,"<$1>").replace(/\{([ibu])\}/g,"<$1>").replace(/\{\/([ibu])\}/g,"").replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g,"$1.$2").replace(/\{[\s\S]*?\}/g,"").concat("\r\n\r\n"))}function n(e){return URL.createObjectURL(new Blob([e],{type:"text/vtt"}))}function s(e){let t=RegExp("Dialogue:\\s\\d,(\\d+:\\d\\d:\\d\\d.\\d\\d),(\\d+:\\d\\d:\\d\\d.\\d\\d),([^,]*),([^,]*),(?:[^,]*,){4}([\\s\\S]*)$","i");function r(e=""){return e.split(/[:.]/).map((e,t,r)=>{if(t===r.length-1){if(1===e.length)return`.${e}00`;if(2===e.length)return`.${e}0`}else if(1===e.length)return(0===t?"0":":0")+e;return 0===t?e:t===r.length-1?`.${e}`:`:${e}`}).join("")}return`WEBVTT ${e.split(/\r?\n/).map(e=>{let a=e.match(t);return a?{start:r(a[1].trim()),end:r(a[2].trim()),text:a[5].replace(/\{[\s\S]*?\}/g,"").replace(/(\\N)/g,"\n").trim().split(/\r?\n/).map(e=>e.trim()).join("\n")}:null}).filter(e=>e).map((e,t)=>e?`${t+1} ${e.start} --> ${e.end} ${e.text}`:"").filter(e=>e.trim()).join("\n\n")}`}o.defineInteropFlag(r),o.export(r,"srtToVtt",()=>i),o.export(r,"vttToBlob",()=>n),o.export(r,"assToVtt",()=>s)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"2xmIQ":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e=0){return new Promise(t=>setTimeout(t,e))}function n(e,t){let r;return function(...a){let o=()=>(r=null,e.apply(this,a));clearTimeout(r),r=setTimeout(o,t)}}function s(e,t){let r=!1;return function(...a){r||(e.apply(this,a),r=!0,setTimeout(()=>{r=!1},t))}}o.defineInteropFlag(r),o.export(r,"sleep",()=>i),o.export(r,"debounce",()=>n),o.export(r,"throttle",()=>s)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"1lUmE":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("option-validator"),n=o.interopDefault(i),s=e("../scheme"),l=e("./dom"),c=e("./error");r.default=class{constructor(e){this.id=0,this.art=e,this.cache=new Map,this.add=this.add.bind(this),this.remove=this.remove.bind(this),this.update=this.update.bind(this)}get show(){return(0,l.hasClass)(this.art.template.$player,`art-${this.name}-show`)}set show(e){let{$player:t}=this.art.template,r=`art-${this.name}-show`;e?(0,l.addClass)(t,r):(0,l.removeClass)(t,r),this.art.emit(this.name,e)}toggle(){this.show=!this.show}add(e){let t="function"==typeof e?e(this.art):e;if(t.html=t.html||"",(0,n.default)(t,s.ComponentOption),!this.$parent||!this.name||t.disable)return;let r=t.name||`${this.name}${this.id}`,a=this.cache.get(r);(0,c.errorHandle)(!a,`Can't add an existing [${r}] to the [${this.name}]`),this.id+=1;let o=(0,l.createElement)("div");(0,l.addClass)(o,`art-${this.name}`),(0,l.addClass)(o,`art-${this.name}-${r}`);let i=Array.from(this.$parent.children);o.dataset.index=t.index||this.id;let p=i.find(e=>Number(e.dataset.index)>=Number(o.dataset.index));p?p.insertAdjacentElement("beforebegin",o):(0,l.append)(this.$parent,o),t.html&&(0,l.append)(o,t.html),t.style&&(0,l.setStyles)(o,t.style),t.tooltip&&(0,l.tooltip)(o,t.tooltip);let u=[];if(t.click){let e=this.art.events.proxy(o,"click",e=>{e.preventDefault(),t.click.call(this.art,this,e)});u.push(e)}return t.selector&&["left","right"].includes(t.position)&&this.selector(t,o,u),this[r]=o,this.cache.set(r,{$ref:o,events:u,option:t}),t.mounted&&t.mounted.call(this.art,o),o}remove(e){let t=this.cache.get(e);(0,c.errorHandle)(t,`Can't find [${e}] from the [${this.name}]`),t.option.beforeUnmount&&t.option.beforeUnmount.call(this.art,t.$ref);for(let e=0;ef);var i=e("../utils");let n="array",s="boolean",l="string",c="number",p="object",u="function";function d(e,t,r){return(0,i.errorHandle)(t===l||t===c||e instanceof Element,`${r.join(".")} require '${l}' or 'Element' type`)}let f={html:d,disable:`?${s}`,name:`?${l}`,index:`?${c}`,style:`?${p}`,click:`?${u}`,mounted:`?${u}`,tooltip:`?${l}|${c}`,width:`?${c}`,selector:`?${n}`,onSelect:`?${u}`,switch:`?${s}`,onSwitch:`?${u}`,range:`?${n}`,onRange:`?${u}`,onChange:`?${u}`};r.default={id:l,container:d,url:l,poster:l,type:l,theme:l,lang:l,volume:c,isLive:s,muted:s,autoplay:s,autoSize:s,autoMini:s,loop:s,flip:s,playbackRate:s,aspectRatio:s,screenshot:s,setting:s,hotkey:s,pip:s,mutex:s,backdrop:s,fullscreen:s,fullscreenWeb:s,subtitleOffset:s,miniProgressBar:s,useSSR:s,playsInline:s,lock:s,gesture:s,fastForward:s,autoPlayback:s,autoOrientation:s,airplay:s,proxy:`?${u}`,plugins:[u],layers:[f],contextmenu:[f],settings:[f],controls:[{...f,position:(e,t,r)=>{let a=["top","left","right"];return(0,i.errorHandle)(a.includes(e),`${r.join(".")} only accept ${a.toString()} as parameters`)}}],quality:[{default:`?${s}`,html:l,url:l}],highlight:[{time:c,text:l}],thumbnails:{url:l,number:c,column:c,width:c,height:c,scale:c},subtitle:{url:l,name:l,type:l,style:p,escape:s,encoding:l,onVttLoad:u},moreVideoAttr:p,i18n:p,icons:p,cssVar:p,customType:p}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],cLwhW:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>{let{i18n:r,constructor:{ASPECT_RATIO:a}}=t,o=a.map(e=>`${"default"===e?r.get("Default"):e}`).join("");return{...e,html:`${r.get("Aspect Ratio")}: ${o}`,click:(e,r)=>{let{value:a}=r.target.dataset;a&&(t.aspectRatio=a,e.show=!1)},mounted:e=>{let r=(0,i.query)('[data-value="default"]',e);r&&(0,i.inverseClass)(r,"art-current"),t.on("aspectRatio",t=>{let r=(0,i.queryAll)("span",e).find(e=>e.dataset.value===t);r&&(0,i.inverseClass)(r,"art-current")})}}}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"1OdE3":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){return t=>({...e,html:t.i18n.get("Close"),click:e=>{e.show=!1}})}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],gTbXH:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>{let{i18n:r,constructor:{FLIP:a}}=t,o=a.map(e=>`${r.get((0,i.capitalize)(e))}`).join("");return{...e,html:`${r.get("Video Flip")}: ${o}`,click:(e,r)=>{let{value:a}=r.target.dataset;a&&(t.flip=a.toLowerCase(),e.show=!1)},mounted:e=>{let r=(0,i.query)('[data-value="normal"]',e);r&&(0,i.inverseClass)(r,"art-current"),t.on("flip",t=>{let r=(0,i.queryAll)("span",e).find(e=>e.dataset.value===t);r&&(0,i.inverseClass)(r,"art-current")})}}}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"51BMv":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){return t=>({...e,html:t.i18n.get("Video Info"),click:e=>{t.info.show=!0,e.show=!1}})}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],hzsOn:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>{let{i18n:r,constructor:{PLAYBACK_RATE:a}}=t,o=a.map(e=>`${1===e?r.get("Normal"):e.toFixed(1)}`).join("");return{...e,html:`${r.get("Play Speed")}: ${o}`,click:(e,r)=>{let{value:a}=r.target.dataset;a&&(t.playbackRate=Number(a),e.show=!1)},mounted:e=>{let r=(0,i.query)('[data-value="1"]',e);r&&(0,i.inverseClass)(r,"art-current"),t.on("video:ratechange",()=>{let r=(0,i.queryAll)("span",e).find(e=>Number(e.dataset.value)===t.playbackRate);r&&(0,i.inverseClass)(r,"art-current")})}}}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],gsm66:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>function(e){return{...e,html:`ArtPlayer ${i.version}`}});var i=e("../../package.json")},{"../../package.json":"7z0bJ","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],g00bY:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("../utils"),n=e("../utils/component"),s=o.interopDefault(n),l=e("./airplay"),c=o.interopDefault(l),p=e("./fullscreen"),u=o.interopDefault(p),d=e("./fullscreenWeb"),f=o.interopDefault(d),h=e("./pip"),m=o.interopDefault(h),g=e("./playAndPause"),v=o.interopDefault(g),y=e("./progress"),b=o.interopDefault(y),x=e("./screenshot"),w=o.interopDefault(x),k=e("./setting"),j=o.interopDefault(k),S=e("./time"),$=o.interopDefault(S),E=e("./volume"),I=o.interopDefault(E);class M extends s.default{constructor(e){super(e),this.isHover=!1,this.name="control",this.timer=Date.now();let{constructor:t}=e,{$player:r,$bottom:a}=this.art.template;e.on("mousemove",()=>{i.isMobile||(this.show=!0)}),e.on("click",()=>{i.isMobile?this.toggle():this.show=!0}),e.on("document:mousemove",e=>{this.isHover=(0,i.includeFromEvent)(e,a)}),e.on("video:timeupdate",()=>{!e.setting.show&&!this.isHover&&!e.isInput&&e.playing&&this.show&&Date.now()-this.timer>=t.CONTROL_HIDE_TIME&&(this.show=!1)}),e.on("control",e=>{e?((0,i.removeClass)(r,"art-hide-cursor"),(0,i.addClass)(r,"art-hover"),this.timer=Date.now()):((0,i.addClass)(r,"art-hide-cursor"),(0,i.removeClass)(r,"art-hover"))}),this.init()}init(){let{option:e}=this.art;e.isLive||this.add((0,b.default)({name:"progress",position:"top",index:10})),this.add({name:"thumbnails",position:"top",index:20}),this.add((0,v.default)({name:"playAndPause",position:"left",index:10})),this.add((0,I.default)({name:"volume",position:"left",index:20})),e.isLive||this.add((0,$.default)({name:"time",position:"left",index:30})),e.quality.length&&(0,i.sleep)().then(()=>{this.art.quality=e.quality}),e.screenshot&&!i.isMobile&&this.add((0,w.default)({name:"screenshot",position:"right",index:20})),e.setting&&this.add((0,j.default)({name:"setting",position:"right",index:30})),e.pip&&this.add((0,m.default)({name:"pip",position:"right",index:40})),e.airplay&&window.WebKitPlaybackTargetAvailabilityEvent&&this.add((0,c.default)({name:"airplay",position:"right",index:50})),e.fullscreenWeb&&this.add((0,f.default)({name:"fullscreenWeb",position:"right",index:60})),e.fullscreen&&this.add((0,u.default)({name:"fullscreen",position:"right",index:70}));for(let t=0;te.selector}),(0,i.def)(r,"$control_item",{get:()=>a}),(0,i.def)(r,"$control_value",{get:()=>o})}let s=a(n,"click",async t=>{let r=(0,i.getComposedPath)(t),a=e.selector.find(e=>e.$control_item===r.find(t=>e.$control_item===t));this.check(a),e.onSelect&&(o.innerHTML=await e.onSelect.call(this.art,a,a.$control_item,t))});r.push(s)}}r.default=M},{"../utils":"3eYxa","../utils/component":"1lUmE","./airplay":"8gGQa","./fullscreen":"kgZrr","./fullscreenWeb":"9vue2","./pip":"6OjmD","./playAndPause":"g667z","./progress":"iO48g","./screenshot":"958YD","./setting":"i57Di","./time":"6lVHn","./volume":"f1tg5","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"8gGQa":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("AirPlay"),mounted:e=>{let{proxy:r,icons:a}=t;(0,i.append)(e,a.airplay),r(e,"click",()=>t.airplay())}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],kgZrr:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("Fullscreen"),mounted:e=>{let{proxy:r,icons:a,i18n:o}=t,n=(0,i.append)(e,a.fullscreenOn),s=(0,i.append)(e,a.fullscreenOff);(0,i.setStyle)(s,"display","none"),r(e,"click",()=>{t.fullscreen=!t.fullscreen}),t.on("fullscreen",t=>{t?((0,i.tooltip)(e,o.get("Exit Fullscreen")),(0,i.setStyle)(n,"display","none"),(0,i.setStyle)(s,"display","inline-flex")):((0,i.tooltip)(e,o.get("Fullscreen")),(0,i.setStyle)(n,"display","inline-flex"),(0,i.setStyle)(s,"display","none"))})}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"9vue2":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("Web Fullscreen"),mounted:e=>{let{proxy:r,icons:a,i18n:o}=t,n=(0,i.append)(e,a.fullscreenWebOn),s=(0,i.append)(e,a.fullscreenWebOff);(0,i.setStyle)(s,"display","none"),r(e,"click",()=>{t.fullscreenWeb=!t.fullscreenWeb}),t.on("fullscreenWeb",t=>{t?((0,i.tooltip)(e,o.get("Exit Web Fullscreen")),(0,i.setStyle)(n,"display","none"),(0,i.setStyle)(s,"display","inline-flex")):((0,i.tooltip)(e,o.get("Web Fullscreen")),(0,i.setStyle)(n,"display","inline-flex"),(0,i.setStyle)(s,"display","none"))})}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6OjmD":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("PIP Mode"),mounted:e=>{let{proxy:r,icons:a,i18n:o}=t;(0,i.append)(e,a.pip),r(e,"click",()=>{t.pip=!t.pip}),t.on("pip",t=>{(0,i.tooltip)(e,o.get(t?"Exit PIP Mode":"PIP Mode"))})}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],g667z:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,mounted:e=>{let{proxy:r,icons:a,i18n:o}=t,n=(0,i.append)(e,a.play),s=(0,i.append)(e,a.pause);function l(){(0,i.setStyle)(n,"display","flex"),(0,i.setStyle)(s,"display","none")}function c(){(0,i.setStyle)(n,"display","none"),(0,i.setStyle)(s,"display","flex")}(0,i.tooltip)(n,o.get("Play")),(0,i.tooltip)(s,o.get("Pause")),r(n,"click",()=>{t.play()}),r(s,"click",()=>{t.pause()}),t.playing?c():l(),t.on("video:playing",()=>{c()}),t.on("video:pause",()=>{l()})}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],iO48g:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"getPosFromEvent",()=>n),o.export(r,"setCurrentTime",()=>s),o.export(r,"default",()=>l);var i=e("../utils");function n(e,t){let{$progress:r}=e.template,{left:a}=(0,i.getRect)(r),o=i.isMobile?t.touches[0].clientX:t.clientX,n=(0,i.clamp)(o-a,0,r.clientWidth),s=n/r.clientWidth*e.duration,l=(0,i.secondToTime)(s),c=(0,i.clamp)(n/r.clientWidth,0,1);return{second:s,time:l,width:n,percentage:c}}function s(e,t){if(e.isRotate){let r=t.touches[0].clientY/e.height,a=r*e.duration;e.emit("setBar","played",r,t),e.seek=a}else{let{second:r,percentage:a}=n(e,t);e.emit("setBar","played",a,t),e.seek=r}}function l(e){return t=>{let{icons:r,option:a,proxy:o}=t;return{...e,html:`
`,mounted:e=>{let l=null,c=!1,p=(0,i.query)(".art-progress-hover",e),u=(0,i.query)(".art-progress-loaded",e),d=(0,i.query)(".art-progress-played",e),f=(0,i.query)(".art-progress-highlight",e),h=(0,i.query)(".art-progress-indicator",e),m=(0,i.query)(".art-progress-tip",e);function g(r,a){let{width:o,time:s}=a||n(t,r);m.textContent=s;let l=m.clientWidth;o<=l/2?(0,i.setStyle)(m,"left",0):o>e.clientWidth-l/2?(0,i.setStyle)(m,"left",`${e.clientWidth-l}px`):(0,i.setStyle)(m,"left",`${o-l/2}px`)}r.indicator?(0,i.append)(h,r.indicator):(0,i.setStyle)(h,"backgroundColor","var(--art-theme)"),t.on("setBar",function(r,a,o){let n="played"===r&&o&&i.isMobile;"loaded"===r&&(0,i.setStyle)(u,"width",`${100*a}%`),"hover"===r&&(0,i.setStyle)(p,"width",`${100*a}%`),"played"===r&&((0,i.setStyle)(d,"width",`${100*a}%`),(0,i.setStyle)(h,"left",`${100*a}%`)),n&&((0,i.setStyle)(m,"display","flex"),g(o,{width:e.clientWidth*a,time:(0,i.secondToTime)(a*t.duration)}),clearTimeout(l),l=setTimeout(()=>{(0,i.setStyle)(m,"display","none")},500))}),t.on("video:loadedmetadata",function(){f.textContent="";for(let e=0;e`;(0,i.append)(f,n)}}),t.constructor.USE_RAF?t.on("raf",()=>{t.emit("setBar","played",t.played),t.emit("setBar","loaded",t.loaded)}):(t.on("video:timeupdate",()=>{t.emit("setBar","played",t.played)}),t.on("video:progress",()=>{t.emit("setBar","loaded",t.loaded)}),t.on("video:ended",()=>{t.emit("setBar","played",1)})),t.emit("setBar","loaded",t.loaded||0),i.isMobile||(o(e,"click",e=>{e.target!==h&&s(t,e)}),o(e,"mousemove",r=>{let{percentage:a}=n(t,r);if(t.emit("setBar","hover",a,r),(0,i.setStyle)(m,"display","flex"),(0,i.includeFromEvent)(r,f)){let{width:a}=n(t,r),{text:o}=r.target.dataset;m.textContent=o;let s=m.clientWidth;a<=s/2?(0,i.setStyle)(m,"left",0):a>e.clientWidth-s/2?(0,i.setStyle)(m,"left",`${e.clientWidth-s}px`):(0,i.setStyle)(m,"left",`${a-s/2}px`)}else g(r)}),o(e,"mouseleave",e=>{(0,i.setStyle)(m,"display","none"),t.emit("setBar","hover",0,e)}),o(e,"mousedown",e=>{c=0===e.button}),t.on("document:mousemove",e=>{if(c){let{second:r,percentage:a}=n(t,e);t.emit("setBar","played",a,e),t.seek=r}}),t.on("document:mouseup",()=>{c&&(c=!1)}))}}}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"958YD":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("Screenshot"),mounted:e=>{let{proxy:r,icons:a}=t;(0,i.append)(e,a.screenshot),r(e,"click",()=>{t.screenshot()})}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],i57Di:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,tooltip:t.i18n.get("Show Setting"),mounted:e=>{let{proxy:r,icons:a,i18n:o}=t;(0,i.append)(e,a.setting),r(e,"click",()=>{t.setting.toggle(),t.setting.resize()}),t.on("setting",t=>{(0,i.tooltip)(e,o.get(t?"Hide Setting":"Show Setting"))})}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6lVHn":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return t=>({...e,style:i.isMobile?{fontSize:"12px",padding:"0 5px"}:{cursor:"auto",padding:"0 10px"},mounted:e=>{function r(){let r=`${(0,i.secondToTime)(t.currentTime)} / ${(0,i.secondToTime)(t.duration)}`;r!==e.textContent&&(e.textContent=r)}r();let a=["video:loadedmetadata","video:timeupdate","video:progress"];for(let e=0;en);var i=e("../utils");function n(e){return t=>({...e,mounted:e=>{let{proxy:r,icons:a}=t,o=(0,i.append)(e,a.volume),n=(0,i.append)(e,a.volumeClose),s=(0,i.append)(e,'
'),l=(0,i.append)(s,'
'),c=(0,i.append)(l,'
'),p=(0,i.append)(l,'
'),u=(0,i.append)(p,'
'),d=(0,i.append)(u,'
'),f=(0,i.append)(p,'
');function h(e){let{top:t,height:r}=(0,i.getRect)(p);return 1-(e.clientY-t)/r}function m(){if(t.muted||0===t.volume)(0,i.setStyle)(o,"display","none"),(0,i.setStyle)(n,"display","flex"),(0,i.setStyle)(f,"top","100%"),(0,i.setStyle)(d,"top","100%"),c.textContent=0;else{let e=100*t.volume;(0,i.setStyle)(o,"display","flex"),(0,i.setStyle)(n,"display","none"),(0,i.setStyle)(f,"top",`${100-e}%`),(0,i.setStyle)(d,"top",`${100-e}%`),c.textContent=Math.floor(e)}}if(m(),t.on("video:volumechange",m),r(o,"click",()=>{t.muted=!0}),r(n,"click",()=>{t.muted=!1}),i.isMobile)(0,i.setStyle)(s,"display","none");else{let e=!1;r(p,"mousedown",r=>{e=0===r.button,t.volume=h(r)}),t.on("document:mousemove",r=>{e&&(t.muted=!1,t.volume=h(r))}),t.on("document:mouseup",()=>{e&&(e=!1)})}}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],hEROU:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("./clickInit"),n=o.interopDefault(i),s=e("./gestureInit"),l=o.interopDefault(s),c=e("./globalInit"),p=o.interopDefault(c),u=e("./hoverInit"),d=o.interopDefault(u),f=e("./moveInit"),h=o.interopDefault(f),m=e("./resizeInit"),g=o.interopDefault(m),v=e("./updateInit"),y=o.interopDefault(v),b=e("./viewInit"),x=o.interopDefault(b);r.default=class{constructor(e){this.destroyEvents=[],this.proxy=this.proxy.bind(this),this.hover=this.hover.bind(this),(0,n.default)(e,this),(0,d.default)(e,this),(0,h.default)(e,this),(0,g.default)(e,this),(0,l.default)(e,this),(0,x.default)(e,this),(0,p.default)(e,this),(0,y.default)(e,this)}proxy(e,t,r,a={}){if(Array.isArray(t))return t.map(t=>this.proxy(e,t,r,a));e.addEventListener(t,r,a);let o=()=>e.removeEventListener(t,r,a);return this.destroyEvents.push(o),o}hover(e,t,r){t&&this.proxy(e,"mouseenter",t),r&&this.proxy(e,"mouseleave",r)}remove(e){let t=this.destroyEvents.indexOf(e);t>-1&&(e(),this.destroyEvents.splice(t,1))}destroy(){for(let e=0;en);var i=e("../utils");function n(e,t){let{constructor:r,template:{$player:a,$video:o}}=e;function n(t){(0,i.includeFromEvent)(t,a)?(e.isInput="INPUT"===t.target.tagName,e.isFocus=!0,e.emit("focus",t)):(e.isInput=!1,e.isFocus=!1,e.emit("blur",t))}e.on("document:click",n),e.on("document:contextmenu",n);let s=[];t.proxy(o,"click",t=>{let a=Date.now();s.push(a);let{MOBILE_CLICK_PLAY:o,DBCLICK_TIME:n,MOBILE_DBCLICK_PLAY:l,DBCLICK_FULLSCREEN:c}=r,p=s.filter(e=>a-e<=n);switch(p.length){case 1:e.emit("click",t),i.isMobile?!e.isLock&&o&&e.toggle():e.toggle(),s=p;break;case 2:e.emit("dblclick",t),i.isMobile?!e.isLock&&l&&e.toggle():c&&(e.fullscreen=!e.fullscreen),s=[];break;default:s=[]}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],d9Euh:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>s);var i=e("../control/progress"),n=e("../utils");function s(e,t){if(n.isMobile&&!e.option.isLive){let{$video:r,$progress:a}=e.template,o=null,s=!1,l=0,c=0,p=0,u=t=>{if(1===t.touches.length&&!e.isLock){o===a&&(0,i.setCurrentTime)(e,t),s=!0;let{pageX:r,pageY:n}=t.touches[0];l=r,c=n,p=e.currentTime}},d=t=>{if(1===t.touches.length&&s&&e.duration){let{pageX:a,pageY:i}=t.touches[0],s=function(e,t,r,a){let o=t-a,i=r-e,n=0;if(2>Math.abs(i)&&2>Math.abs(o))return n;let s=180*Math.atan2(o,i)/Math.PI;return s>=-45&&s<45?n=4:s>=45&&s<135?n=1:s>=-135&&s<-45?n=2:(s>=135&&s<=180||s>=-180&&s<-135)&&(n=3),n}(l,c,a,i),u=[3,4].includes(s),d=[1,2].includes(s);if(u&&!e.isRotate||d&&e.isRotate){let s=(0,n.clamp)((a-l)/e.width,-1,1),u=(0,n.clamp)((i-c)/e.height,-1,1),d=e.isRotate?u:s,f=o===r?e.constructor.TOUCH_MOVE_RATIO:1,h=(0,n.clamp)(p+e.duration*d*f,0,e.duration);e.seek=h,e.emit("setBar","played",(0,n.clamp)(h/e.duration,0,1),t),e.notice.show=`${(0,n.secondToTime)(h)} / ${(0,n.secondToTime)(e.duration)}`}}};e.option.gesture&&(t.proxy(r,"touchstart",e=>{o=r,u(e)}),t.proxy(r,"touchmove",d)),t.proxy(a,"touchstart",e=>{o=a,u(e)}),t.proxy(a,"touchmove",d),e.on("document:touchend",()=>{s&&(l=0,c=0,p=0,s=!1,o=null)})}}},{"../control/progress":"iO48g","../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],cipTv:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e,t){let r=["click","mouseup","keydown","touchend","touchmove","mousemove","contextmenu","webkitfullscreenchange"],a=["resize","scroll","orientationchange"],o=[];function i(n={}){for(let e=0;e{let a=n.document||s.ownerDocument||document,i=t.proxy(a,r,t=>{e.emit(`document:${r}`,t)});o.push(i)}),a.forEach(r=>{let a=n.window||s.ownerDocument?.defaultView||window,i=t.proxy(a,r,t=>{e.emit(`window:${r}`,t)});o.push(i)})}i(),t.bindGlobalEvents=i}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],jVOGW:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e,t){let{$player:r}=e.template;t.hover(r,t=>{(0,i.addClass)(r,"art-hover"),e.emit("hover",!0,t)},t=>{(0,i.removeClass)(r,"art-hover"),e.emit("hover",!1,t)})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"1adf7":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e,t){let{$player:r}=e.template;t.proxy(r,"mousemove",t=>{e.emit("mousemove",t)})}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"3uT2Y":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e,t){let{option:r,constructor:a}=e;e.on("resize",()=>{let{aspectRatio:t,notice:a}=e;"standard"===e.state&&r.autoSize&&e.autoSize(),e.aspectRatio=t,a.show=""});let o=(0,i.debounce)(()=>e.emit("resize"),a.RESIZE_TIME);e.on("window:orientationchange",()=>o()),e.on("window:resize",()=>o()),screen&&screen.orientation&&screen.orientation.onchange&&t.proxy(screen.orientation,"change",()=>o())}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"5vCth":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){if(e.constructor.USE_RAF){let t=null;!function r(){e.playing&&e.emit("raf"),e.isDestroy||(t=requestAnimationFrame(r))}(),e.on("destroy",()=>{cancelAnimationFrame(t)})}}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],haLBA:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{option:t,constructor:r,template:{$container:a}}=e,o=(0,i.throttle)(()=>{e.emit("view",(0,i.isInViewport)(a,r.SCROLL_GAP))},r.SCROLL_TIME);e.on("window:scroll",()=>o()),e.on("view",r=>{t.autoMini&&(e.mini=!r)})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"2ac95":[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);var o=e("./utils");r.default=class{constructor(e){this.art=e,this.keys={},e.option.hotkey&&!o.isMobile&&this.init()}init(){let{constructor:e}=this.art;this.add("Escape",()=>{this.art.fullscreenWeb&&(this.art.fullscreenWeb=!1)}),this.add("Space",()=>{this.art.toggle()}),this.add("ArrowLeft",()=>{this.art.backward=e.SEEK_STEP}),this.add("ArrowUp",()=>{this.art.volume+=e.VOLUME_STEP}),this.add("ArrowRight",()=>{this.art.forward=e.SEEK_STEP}),this.add("ArrowDown",()=>{this.art.volume-=e.VOLUME_STEP}),this.art.on("document:keydown",e=>{if(this.art.isFocus){let t=document.activeElement.tagName.toUpperCase(),r=document.activeElement.getAttribute("contenteditable");if("INPUT"!==t&&"TEXTAREA"!==t&&""!==r&&"true"!==r&&!e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey){let t=this.keys[e.code];if(t){e.preventDefault();for(let r=0;r(0,ei.getIcon)(e,t[e])})}}},{"bundle-text:./airplay.svg":"6dCIe","bundle-text:./arrow-left.svg":"3WFkX","bundle-text:./arrow-right.svg":"lLrP4","bundle-text:./aspect-ratio.svg":"vMweg","bundle-text:./check.svg":"cD1ql","bundle-text:./close.svg":"cVNEq","bundle-text:./config.svg":"7bynv","bundle-text:./error.svg":"5o4dY","bundle-text:./flip.svg":"ltsUt","bundle-text:./fullscreen-off.svg":"1lbXp","bundle-text:./fullscreen-on.svg":"9yJsq","bundle-text:./fullscreen-web-off.svg":"jvyKo","bundle-text:./fullscreen-web-on.svg":"02A58","bundle-text:./loading.svg":"dceB1","bundle-text:./lock.svg":"eJSju","bundle-text:./pause.svg":"jgrId","bundle-text:./pip.svg":"fIFkZ","bundle-text:./play.svg":"4D7Yh","bundle-text:./playback-rate.svg":"e0Gnx","bundle-text:./screenshot.svg":"diXWF","bundle-text:./setting.svg":"8BcoA","bundle-text:./state.svg":"bQPWd","bundle-text:./switch-off.svg":"cvlWN","bundle-text:./switch-on.svg":"hTk01","bundle-text:./unlock.svg":"iwSR9","bundle-text:./volume-close.svg":"kqCDd","bundle-text:./volume.svg":"jABrY","../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6dCIe":[function(e,t,r,a){t.exports=''},{}],"3WFkX":[function(e,t,r,a){t.exports=''},{}],lLrP4:[function(e,t,r,a){t.exports=''},{}],vMweg:[function(e,t,r,a){t.exports=''},{}],cD1ql:[function(e,t,r,a){t.exports=''},{}],cVNEq:[function(e,t,r,a){t.exports=''},{}],"7bynv":[function(e,t,r,a){t.exports=''},{}],"5o4dY":[function(e,t,r,a){t.exports=''},{}],ltsUt:[function(e,t,r,a){t.exports=''},{}],"1lbXp":[function(e,t,r,a){t.exports=''},{}],"9yJsq":[function(e,t,r,a){t.exports=''},{}],jvyKo:[function(e,t,r,a){t.exports=''},{}],"02A58":[function(e,t,r,a){t.exports=''},{}],dceB1:[function(e,t,r,a){t.exports=''},{}],eJSju:[function(e,t,r,a){t.exports=''},{}],jgrId:[function(e,t,r,a){t.exports=''},{}],fIFkZ:[function(e,t,r,a){t.exports=''},{}],"4D7Yh":[function(e,t,r,a){t.exports=''},{}],e0Gnx:[function(e,t,r,a){t.exports=''},{}],diXWF:[function(e,t,r,a){t.exports=''},{}],"8BcoA":[function(e,t,r,a){t.exports=''},{}],bQPWd:[function(e,t,r,a){t.exports=''},{}],cvlWN:[function(e,t,r,a){t.exports=''},{}],hTk01:[function(e,t,r,a){t.exports=''},{}],iwSR9:[function(e,t,r,a){t.exports=''},{}],kqCDd:[function(e,t,r,a){t.exports=''},{}],jABrY:[function(e,t,r,a){t.exports=''},{}],bAZEJ:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("./utils"),n=e("./utils/component"),s=o.interopDefault(n);class l extends s.default{constructor(e){super(e),this.name="info",i.isMobile||this.init()}init(){let{proxy:e,constructor:t,template:{$infoPanel:r,$infoClose:a,$video:o}}=this.art;e(a,"click",()=>{this.show=!1});let n=null,s=(0,i.queryAll)("[data-video]",r)||[];this.art.on("destroy",()=>clearTimeout(n)),!function e(){for(let e=0;e{(0,i.setStyle)(o,"display","none"),(0,i.setStyle)(n,"display",null)}),a.proxy(t.$state,"click",()=>e.play())}}r.default=l},{"./utils":"3eYxa","./utils/component":"1lUmE","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],eVoav:[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);var o=e("./utils");r.default=class{constructor(e){this.art=e,this.timer=null}set show(e){let{constructor:t,template:{$player:r,$noticeInner:a}}=this.art;e?(a.textContent=e instanceof Error?e.message.trim():e,(0,o.addClass)(r,"art-notice-show"),clearTimeout(this.timer),this.timer=setTimeout(()=>{a.textContent="",(0,o.removeClass)(r,"art-notice-show")},t.NOTICE_TIME)):(0,o.removeClass)(r,"art-notice-show")}get show(){let{template:{$player:e}}=this.art;return e.classList.contains("art-notice-show")}}},{"./utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],cZepx:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("./airplayMix"),n=o.interopDefault(i),s=e("./aspectRatioMix"),l=o.interopDefault(s),c=e("./attrMix"),p=o.interopDefault(c),u=e("./autoHeightMix"),d=o.interopDefault(u),f=e("./autoSizeMix"),h=o.interopDefault(f),m=e("./cssVarMix"),g=o.interopDefault(m),v=e("./currentTimeMix"),y=o.interopDefault(v),b=e("./durationMix"),x=o.interopDefault(b),w=e("./eventInit"),k=o.interopDefault(w),j=e("./flipMix"),S=o.interopDefault(j),$=e("./fullscreenMix"),E=o.interopDefault($),I=e("./fullscreenWebMix"),M=o.interopDefault(I),T=e("./loadedMix"),C=o.interopDefault(T),F=e("./miniMix"),D=o.interopDefault(F),A=e("./optionInit"),R=o.interopDefault(A),L=e("./pauseMix"),O=o.interopDefault(L),P=e("./pipMix"),Y=o.interopDefault(P),z=e("./playbackRateMix"),_=o.interopDefault(z),H=e("./playedMix"),V=o.interopDefault(H),q=e("./playingMix"),N=o.interopDefault(q),B=e("./playMix"),U=o.interopDefault(B),W=e("./posterMix"),Z=o.interopDefault(W),K=e("./qualityMix"),X=o.interopDefault(K),G=e("./rectMix"),J=o.interopDefault(G),Q=e("./screenshotMix"),ee=o.interopDefault(Q),et=e("./seekMix"),er=o.interopDefault(et),ea=e("./stateMix"),eo=o.interopDefault(ea),ei=e("./subtitleOffsetMix"),en=o.interopDefault(ei),es=e("./switchMix"),el=o.interopDefault(es),ec=e("./themeMix"),ep=o.interopDefault(ec),eu=e("./thumbnailsMix"),ed=o.interopDefault(eu),ef=e("./toggleMix"),eh=o.interopDefault(ef),em=e("./typeMix"),eg=o.interopDefault(em),ev=e("./urlMix"),ey=o.interopDefault(ev),eb=e("./volumeMix"),ex=o.interopDefault(eb);r.default=class{constructor(e){(0,ey.default)(e),(0,p.default)(e),(0,U.default)(e),(0,O.default)(e),(0,eh.default)(e),(0,er.default)(e),(0,ex.default)(e),(0,y.default)(e),(0,x.default)(e),(0,el.default)(e),(0,_.default)(e),(0,l.default)(e),(0,ee.default)(e),(0,E.default)(e),(0,M.default)(e),(0,Y.default)(e),(0,C.default)(e),(0,V.default)(e),(0,N.default)(e),(0,h.default)(e),(0,J.default)(e),(0,S.default)(e),(0,D.default)(e),(0,Z.default)(e),(0,d.default)(e),(0,g.default)(e),(0,ep.default)(e),(0,eg.default)(e),(0,eo.default)(e),(0,en.default)(e),(0,n.default)(e),(0,X.default)(e),(0,ed.default)(e),(0,k.default)(e),(0,R.default)(e)}}},{"./airplayMix":"9kvpK","./aspectRatioMix":"f2B8U","./attrMix":"h2lAp","./autoHeightMix":"lxRiE","./autoSizeMix":"k2ukN","./cssVarMix":"c5XqS","./currentTimeMix":"k4e77","./durationMix":"aK1ks","./eventInit":"eodDF","./flipMix":"lcMdX","./fullscreenMix":"6EjsX","./fullscreenWebMix":"4l4zQ","./loadedMix":"gzJMP","./miniMix":"gELHU","./optionInit":"gy71D","./pauseMix":"hoc9H","./pipMix":"4t2vt","./playbackRateMix":"7hqKi","./playedMix":"cK23B","./playingMix":"2Ndus","./playMix":"6o5f2","./posterMix":"1wbXO","./qualityMix":"1ZLJg","./rectMix":"3g2fj","./screenshotMix":"1stNp","./seekMix":"iSBF1","./stateMix":"9v9Z8","./subtitleOffsetMix":"cTVJT","./switchMix":"gms5Y","./themeMix":"aS33X","./thumbnailsMix":"gC24t","./toggleMix":"bAxW2","./typeMix":"dtsPx","./urlMix":"loZvu","./volumeMix":"4DF3Z","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"9kvpK":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,notice:r,proxy:a,template:{$video:o}}=e,n=!0;window.WebKitPlaybackTargetAvailabilityEvent&&o.webkitShowPlaybackTargetPicker?a(o,"webkitplaybacktargetavailabilitychanged",e=>{switch(e.availability){case"available":n=!0;break;case"not-available":n=!1}}):n=!1,(0,i.def)(e,"airplay",{value(){n?(o.webkitShowPlaybackTargetPicker(),e.emit("airplay")):r.show=t.get("AirPlay Not Available")}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],f2B8U:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,notice:r,template:{$video:a,$player:o}}=e;(0,i.def)(e,"aspectRatio",{get:()=>o.dataset.aspectRatio||"default",set(n){if(n||(n="default"),"default"===n)(0,i.setStyle)(a,"width",null),(0,i.setStyle)(a,"height",null),(0,i.setStyle)(a,"margin",null),delete o.dataset.aspectRatio;else{let e=n.split(":").map(Number),{clientWidth:t,clientHeight:r}=o,s=e[0]/e[1];t/r>s?((0,i.setStyle)(a,"width",`${s*r}px`),(0,i.setStyle)(a,"height","100%"),(0,i.setStyle)(a,"margin","0 auto")):((0,i.setStyle)(a,"width","100%"),(0,i.setStyle)(a,"height",`${t/s}px`),(0,i.setStyle)(a,"margin","auto 0")),o.dataset.aspectRatio=n}r.show=`${t.get("Aspect Ratio")}: ${"default"===n?t.get("Default"):n}`,e.emit("aspectRatio",n)}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],h2lAp:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$video:t}}=e;(0,i.def)(e,"attr",{value(e,r){if(void 0===r)return t[e];t[e]=r}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],lxRiE:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$container:t,$video:r}}=e;(0,i.def)(e,"autoHeight",{value(){let{clientWidth:a}=t,{videoHeight:o,videoWidth:n}=r,s=a/n*o;(0,i.setStyle)(t,"height",`${s}px`),e.emit("autoHeight",s)}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],k2ukN:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$container:t,$player:r,$video:a}=e.template;(0,i.def)(e,"autoSize",{value(){let{videoWidth:o,videoHeight:n}=a,{width:s,height:l}=(0,i.getRect)(t),c=o/n;s/l>c?((0,i.setStyle)(r,"width",`${l*c/s*100}%`),(0,i.setStyle)(r,"height","100%")):((0,i.setStyle)(r,"width","100%"),(0,i.setStyle)(r,"height",`${s/c/l*100}%`)),e.emit("autoSize",{width:e.width,height:e.height})}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],c5XqS:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$player:t}=e.template;(0,i.def)(e,"cssVar",{value:(e,r)=>r?t.style.setProperty(e,r):getComputedStyle(t).getPropertyValue(e)})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],k4e77:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$video:t}=e.template;(0,i.def)(e,"currentTime",{get:()=>t.currentTime||0,set:r=>{Number.isNaN(r=Number.parseFloat(r))||(t.currentTime=(0,i.clamp)(r,0,e.duration))}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],aK1ks:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"duration",{get:()=>{let{duration:t}=e.template.$video;return t===1/0?0:t||0}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],eodDF:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>l);var i=e("../config"),n=o.interopDefault(i),s=e("../utils");function l(e){let{i18n:t,notice:r,option:a,constructor:o,proxy:i,template:{$player:l,$video:c,$poster:p}}=e,u=0;for(let t=0;t{e.emit(`video:${t.type}`,t)});e.on("video:canplay",()=>{u=0,e.loading.show=!1}),e.once("video:canplay",()=>{e.loading.show=!1,e.controls.show=!0,e.mask.show=!0,e.isReady=!0,e.emit("ready")}),e.on("video:ended",()=>{a.loop?(e.seek=0,e.play(),e.controls.show=!1,e.mask.show=!1):(e.controls.show=!0,e.mask.show=!0)}),e.on("video:error",async i=>{u{e.emit("resize"),s.isMobile&&(e.loading.show=!1,e.controls.show=!0,e.mask.show=!0)}),e.on("video:loadstart",()=>{e.loading.show=!0,e.mask.show=!1,e.controls.show=!0}),e.on("video:pause",()=>{e.controls.show=!0,e.mask.show=!0}),e.on("video:play",()=>{e.mask.show=!1,(0,s.setStyle)(p,"display","none")}),e.on("video:playing",()=>{e.mask.show=!1}),e.on("video:progress",()=>{e.playing&&(e.loading.show=!1)}),e.on("video:seeked",()=>{e.loading.show=!1,e.mask.show=!0}),e.on("video:seeking",()=>{e.loading.show=!0,e.mask.show=!1}),e.on("video:timeupdate",()=>{e.mask.show=!1}),e.on("video:waiting",()=>{e.loading.show=!0,e.mask.show=!1})}},{"../config":"icOIG","../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],lcMdX:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$player:t},i18n:r,notice:a}=e;(0,i.def)(e,"flip",{get:()=>t.dataset.flip||"normal",set(o){o||(o="normal"),"normal"===o?delete t.dataset.flip:t.dataset.flip=o,a.show=`${r.get("Video Flip")}: ${r.get((0,i.capitalize)(o))}`,e.emit("flip",o)}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6EjsX":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>l);var i=e("../libs/screenfull"),n=o.interopDefault(i),s=e("../utils");function l(e){let{i18n:t,notice:r,template:{$video:a,$player:o}}=e;e.once("video:loadedmetadata",()=>{n.default.isEnabled?(n.default.on("change",()=>{e.emit("fullscreen",n.default.isFullscreen),n.default.isFullscreen?(e.state="fullscreen",(0,s.addClass)(o,"art-fullscreen")):(0,s.removeClass)(o,"art-fullscreen"),e.emit("resize")}),n.default.on("error",t=>{e.emit("fullscreenError",t)}),(0,s.def)(e,"fullscreen",{get:()=>n.default.isFullscreen,async set(e){e?await n.default.request(o):await n.default.exit()}})):a.webkitSupportsFullscreen?(e.on("document:webkitfullscreenchange",()=>{e.emit("fullscreen",e.fullscreen),e.emit("resize")}),(0,s.def)(e,"fullscreen",{get:()=>document.fullscreenElement===a,set(t){t?(e.state="fullscreen",a.webkitEnterFullscreen()):a.webkitExitFullscreen()}})):(0,s.def)(e,"fullscreen",{get:()=>!1,set(){r.show=t.get("Fullscreen Not Supported")}}),(0,s.def)(e,"fullscreen",(0,s.get)(e,"fullscreen"))})}},{"../libs/screenfull":"924dl","../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"924dl":[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);let o=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],i=(()=>{if("undefined"==typeof document)return!1;let e=o[0],t={};for(let r of o)if(r[1]in document){for(let[a,o]of r.entries())t[e[a]]=o;return t}return!1})(),n={change:i.fullscreenchange,error:i.fullscreenerror},s={request:(e=document.documentElement,t)=>new Promise((r,a)=>{let o=()=>{s.off("change",o),r()};s.on("change",o);let n=e[i.requestFullscreen](t);n instanceof Promise&&n.then(o).catch(a)}),exit:()=>new Promise((e,t)=>{if(!s.isFullscreen)return void e();let r=()=>{s.off("change",r),e()};s.on("change",r);let a=document[i.exitFullscreen]();a instanceof Promise&&a.then(r).catch(t)}),toggle:(e,t)=>s.isFullscreen?s.exit():s.request(e,t),onchange(e){s.on("change",e)},onerror(e){s.on("error",e)},on(e,t){let r=n[e];r&&document.addEventListener(r,t,!1)},off(e,t){let r=n[e];r&&document.removeEventListener(r,t,!1)},raw:i};Object.defineProperties(s,{isFullscreen:{get:()=>!!document[i.fullscreenElement]},element:{enumerable:!0,get:()=>document[i.fullscreenElement]},isEnabled:{enumerable:!0,get:()=>!!document[i.fullscreenEnabled]}}),i||(s.isEnabled=!1),r.default=s},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"4l4zQ":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{constructor:t,template:{$container:r,$player:a}}=e,o="";(0,i.def)(e,"fullscreenWeb",{get:()=>(0,i.hasClass)(a,"art-fullscreen-web"),set(n){n?(o=a.style.cssText,t.FULLSCREEN_WEB_IN_BODY&&(0,i.append)(document.body,a),e.state="fullscreenWeb",(0,i.setStyle)(a,"width","100%"),(0,i.setStyle)(a,"height","100%"),(0,i.addClass)(a,"art-fullscreen-web"),e.emit("fullscreenWeb",!0)):(t.FULLSCREEN_WEB_IN_BODY&&(0,i.append)(r,a),o&&(a.style.cssText=o,o=""),(0,i.removeClass)(a,"art-fullscreen-web"),e.emit("fullscreenWeb",!1)),e.emit("resize")}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],gzJMP:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$video:t}=e.template;(0,i.def)(e,"loaded",{get:()=>e.loadedTime/t.duration}),(0,i.def)(e,"loadedTime",{get:()=>t.buffered.length?t.buffered.end(t.buffered.length-1):0})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],gELHU:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{icons:t,proxy:r,storage:a,template:{$player:o,$video:n}}=e,s=!1,l=0,c=0;function p(){let{$mini:t}=e.template;t&&((0,i.removeClass)(o,"art-mini"),(0,i.setStyle)(t,"display","none"),o.prepend(n),e.emit("mini",!1))}function u(t,r){e.playing?((0,i.setStyle)(t,"display","none"),(0,i.setStyle)(r,"display","flex")):((0,i.setStyle)(t,"display","flex"),(0,i.setStyle)(r,"display","none"))}function d(){let{$mini:t}=e.template,r=(0,i.getRect)(t),o=window.innerHeight-r.height-50,n=window.innerWidth-r.width-50;a.set("top",o),a.set("left",n),(0,i.setStyle)(t,"top",`${o}px`),(0,i.setStyle)(t,"left",`${n}px`)}(0,i.def)(e,"mini",{get:()=>(0,i.hasClass)(o,"art-mini"),set(f){if(f){e.state="mini",(0,i.addClass)(o,"art-mini");let f=function(){let{$mini:o}=e.template;if(o)return(0,i.append)(o,n),(0,i.setStyle)(o,"display","flex");{let o=(0,i.createElement)("div");(0,i.addClass)(o,"art-mini-popup"),(0,i.append)(document.body,o),e.template.$mini=o,(0,i.append)(o,n);let d=(0,i.append)(o,'
');(0,i.append)(d,t.close),r(d,"click",p);let f=(0,i.append)(o,'
'),h=(0,i.append)(f,t.play),m=(0,i.append)(f,t.pause);return r(h,"click",()=>e.play()),r(m,"click",()=>e.pause()),u(h,m),e.on("video:playing",()=>u(h,m)),e.on("video:pause",()=>u(h,m)),e.on("video:timeupdate",()=>u(h,m)),r(o,"mousedown",e=>{s=0===e.button,l=e.pageX,c=e.pageY}),e.on("document:mousemove",e=>{if(s){(0,i.addClass)(o,"art-mini-dragging");let t=e.pageX-l,r=e.pageY-c;(0,i.setStyle)(o,"transform",`translate(${t}px, ${r}px)`)}}),e.on("document:mouseup",()=>{if(s){s=!1,(0,i.removeClass)(o,"art-mini-dragging");let e=(0,i.getRect)(o);a.set("left",e.left),a.set("top",e.top),(0,i.setStyle)(o,"left",`${e.left}px`),(0,i.setStyle)(o,"top",`${e.top}px`),(0,i.setStyle)(o,"transform",null)}}),o}}(),h=a.get("top"),m=a.get("left");"number"==typeof h&&"number"==typeof m?((0,i.setStyle)(f,"top",`${h}px`),(0,i.setStyle)(f,"left",`${m}px`),(0,i.isInViewport)(f)||d()):d(),e.emit("mini",!0)}else p()}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],gy71D:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{option:t,storage:r,template:{$video:a,$poster:o}}=e;for(let r in t.moreVideoAttr)e.attr(r,t.moreVideoAttr[r]);t.muted&&(e.muted=t.muted),t.volume&&(a.volume=(0,i.clamp)(t.volume,0,1));let n=r.get("volume");for(let r in"number"==typeof n&&(a.volume=(0,i.clamp)(n,0,1)),t.poster&&(0,i.setStyle)(o,"backgroundImage",`url(${t.poster})`),t.autoplay&&(a.autoplay=t.autoplay),t.playsInline&&(a.playsInline=!0,a["webkit-playsinline"]=!0),t.theme&&(t.cssVar["--art-theme"]=t.theme),t.cssVar)e.cssVar(r,t.cssVar[r]);e.url=t.url}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],hoc9H:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$video:t},i18n:r,notice:a}=e;(0,i.def)(e,"pause",{value(){let o=t.pause();return a.show=r.get("Pause"),e.emit("pause"),o}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"4t2vt":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,notice:r,template:{$video:a}}=e;if(document.pictureInPictureEnabled){let{template:{$video:t},proxy:r,notice:a}=e;t.disablePictureInPicture=!1,(0,i.def)(e,"pip",{get:()=>document.pictureInPictureElement,set(r){r?(e.state="pip",t.requestPictureInPicture().catch(e=>{throw a.show=e,e})):document.exitPictureInPicture().catch(e=>{throw a.show=e,e})}}),r(t,"enterpictureinpicture",()=>{e.emit("pip",!0)}),r(t,"leavepictureinpicture",()=>{e.emit("pip",!1)})}else if(a.webkitSupportsPresentationMode){let{$video:t}=e.template;t.webkitSetPresentationMode("inline"),(0,i.def)(e,"pip",{get:()=>"picture-in-picture"===t.webkitPresentationMode,set(r){r?(e.state="pip",t.webkitSetPresentationMode("picture-in-picture"),e.emit("pip",!0)):(t.webkitSetPresentationMode("inline"),e.emit("pip",!1))}})}else(0,i.def)(e,"pip",{get:()=>!1,set(){r.show=t.get("PIP Not Supported")}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"7hqKi":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$video:t},i18n:r,notice:a}=e;(0,i.def)(e,"playbackRate",{get:()=>t.playbackRate,set(o){o?o!==t.playbackRate&&(t.playbackRate=o,a.show=`${r.get("Rate")}: ${1===o?r.get("Normal"):`${o}x`}`):e.playbackRate=1}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],cK23B:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"played",{get:()=>e.currentTime/e.duration})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"2Ndus":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{$video:t}=e.template;(0,i.def)(e,"playing",{get:()=>"boolean"==typeof t.playing?t.playing:!!(t.currentTime>0&&!t.paused&&!t.ended&&t.readyState>2)})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6o5f2":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,notice:r,option:a,constructor:{instances:o},template:{$video:n}}=e;(0,i.def)(e,"play",{async value(){let i=await n.play();if(r.show=t.get("Play"),e.emit("play"),a.mutex)for(let t=0;tn);var i=e("../utils");function n(e){let{template:{$poster:t}}=e;(0,i.def)(e,"poster",{get:()=>{try{return t.style.backgroundImage.match(/"(.*)"/)[1]}catch{return""}},set(e){(0,i.setStyle)(t,"backgroundImage",`url(${e})`)}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"1ZLJg":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"quality",{set(t){let{controls:r,notice:a,i18n:o}=e,i=t.find(e=>e.default)||t[0];r.update({name:"quality",position:"right",index:10,style:{marginRight:"10px"},html:i?.html||"",selector:t,onSelect:async t=>(await e.switchQuality(t.url),a.show=`${o.get("Switch Video")}: ${t.html}`,t.html)})}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"3g2fj":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"rect",{get:()=>(0,i.getRect)(e.template.$player)});let t=["bottom","height","left","right","top","width"];for(let r=0;re.rect[a]})}(0,i.def)(e,"x",{get:()=>e.left+window.pageXOffset}),(0,i.def)(e,"y",{get:()=>e.top+window.pageYOffset})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"1stNp":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{notice:t,template:{$video:r}}=e,a=(0,i.createElement)("canvas");(0,i.def)(e,"getDataURL",{value:()=>new Promise((e,o)=>{try{a.width=r.videoWidth,a.height=r.videoHeight,a.getContext("2d").drawImage(r,0,0),e(a.toDataURL("image/png"))}catch(e){t.show=e,o(e)}})}),(0,i.def)(e,"getBlobUrl",{value:()=>new Promise((e,o)=>{try{a.width=r.videoWidth,a.height=r.videoHeight,a.getContext("2d").drawImage(r,0,0),a.toBlob(t=>{e(URL.createObjectURL(t))})}catch(e){t.show=e,o(e)}})}),(0,i.def)(e,"screenshot",{value:async t=>{let a=await e.getDataURL(),o=t||`artplayer_${(0,i.secondToTime)(r.currentTime)}`;return(0,i.download)(a,`${o}.png`),e.emit("screenshot",a),a}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],iSBF1:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{notice:t}=e;(0,i.def)(e,"seek",{set(r){e.currentTime=r,e.duration&&(t.show=`${(0,i.secondToTime)(e.currentTime)} / ${(0,i.secondToTime)(e.duration)}`),e.emit("seek",e.currentTime)}}),(0,i.def)(e,"forward",{set(t){e.seek=e.currentTime+t}}),(0,i.def)(e,"backward",{set(t){e.seek=e.currentTime-t}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"9v9Z8":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let t=["mini","pip","fullscreen","fullscreenWeb"];(0,i.def)(e,"state",{get:()=>t.find(t=>e[t])||"standard",set(r){for(let a=0;an);var i=e("../utils");function n(e){let{notice:t,i18n:r,template:a}=e;(0,i.def)(e,"subtitleOffset",{get:()=>a.$track?.offset||0,set(o){let{cues:n}=e.subtitle;if(!a.$track||0===n.length)return;let s=(0,i.clamp)(o,-10,10);a.$track.offset=s;for(let t=0;tn);var i=e("../utils");function n(e){function t(t,r){return new Promise((a,o)=>{if(t===e.url)return;let{playing:i,aspectRatio:n,playbackRate:s}=e;e.pause(),e.url=t,e.notice.show="",e.once("video:error",o),e.once("video:loadedmetadata",()=>{e.currentTime=r}),e.once("video:canplay",async()=>{e.playbackRate=s,e.aspectRatio=n,i&&await e.play(),e.notice.show="",a()})})}(0,i.def)(e,"switchQuality",{value:r=>t(r,e.currentTime)}),(0,i.def)(e,"switchUrl",{value:e=>t(e,0)}),(0,i.def)(e,"switch",{set:e.switchUrl})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],aS33X:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"theme",{get:()=>e.cssVar("--art-theme"),set(t){e.cssVar("--art-theme",t)}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],gC24t:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{events:t,option:r,template:{$progress:a,$video:o}}=e,n=null,s=null,l=!1,c=!1,p=!1;t.hover(a,()=>{p=!0},()=>{p=!1}),e.on("setBar",async(t,u,d)=>{let f=e.controls?.thumbnails,{url:h,scale:m}=r.thumbnails;if(!f||!h)return;let g="played"===t&&d&&i.isMobile;if("hover"===t||g){if(l||(l=!0,s=await (0,i.loadImg)(h,m),c=!0),!c||!p)return;let t=a.clientWidth*u;(0,i.setStyle)(f,"display","flex"),t>0&&ta.clientWidth-f/2?(0,i.setStyle)(n,"left",`${a.clientWidth-f}px`):(0,i.setStyle)(n,"left",`${t-f/2}px`)}(t):i.isMobile||(0,i.setStyle)(f,"display","none"),g&&(clearTimeout(n),n=setTimeout(()=>{(0,i.setStyle)(f,"display","none")},500))}}),(0,i.def)(e,"thumbnails",{get:()=>e.option.thumbnails,set(t){t.url&&!e.option.isLive&&(e.option.thumbnails=t,clearTimeout(n),n=null,s=null,l=!1,c=!1)}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],bAxW2:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"toggle",{value:()=>e.playing?e.pause():e.play()})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],dtsPx:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){(0,i.def)(e,"type",{get:()=>e.option.type,set(t){e.option.type=t}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],loZvu:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{option:t,template:{$video:r}}=e;(0,i.def)(e,"url",{get:()=>r.src,async set(a){if(a){let o=e.url,n=t.type||(0,i.getExt)(a),s=t.customType[n];n&&s?(await (0,i.sleep)(),e.loading.show=!0,s.call(e,r,a,e)):(URL.revokeObjectURL(o),r.src=a),o!==e.url&&(e.option.url=a,e.isReady&&o&&e.once("video:canplay",()=>{e.emit("restart",a)}))}else await (0,i.sleep)(),e.loading.show=!0}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"4DF3Z":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{template:{$video:t},i18n:r,notice:a,storage:o}=e;(0,i.def)(e,"volume",{get:()=>t.volume||0,set:e=>{t.volume=(0,i.clamp)(e,0,1),a.show=`${r.get("Volume")}: ${Number.parseInt(100*t.volume,10)}`,0!==t.volume&&o.set("volume",t.volume)}}),(0,i.def)(e,"muted",{get:()=>t.muted,set:r=>{t.muted=r,e.emit("muted",r)}})}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"5A1j1":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("../utils"),n=e("./autoOrientation"),s=o.interopDefault(n),l=e("./autoPlayback"),c=o.interopDefault(l),p=e("./fastForward"),u=o.interopDefault(p),d=e("./lock"),f=o.interopDefault(d),h=e("./miniProgressBar"),m=o.interopDefault(h);r.default=class{constructor(e){this.art=e,this.id=0;let{option:t}=e;t.miniProgressBar&&!t.isLive&&this.add(m.default),t.lock&&i.isMobile&&this.add(f.default),t.autoPlayback&&!t.isLive&&this.add(c.default),t.autoOrientation&&i.isMobile&&this.add(s.default),t.fastForward&&i.isMobile&&!t.isLive&&this.add(u.default);for(let e=0;ethis.next(e,t)):this.next(e,t)}next(e,t){let r=t&&t.name||e.name||`plugin${this.id}`;return(0,i.errorHandle)(!(0,i.has)(this,r),`Cannot add a plugin that already has the same name: ${r}`),(0,i.def)(this,r,{value:t}),this}}},{"../utils":"3eYxa","./autoOrientation":"fbMFj","./autoPlayback":"7w0fA","./fastForward":"3XpBs","./lock":"e4KRZ","./miniProgressBar":"jcqjF","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],fbMFj:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{notice:t,constructor:r,template:{$player:a,$video:o}}=e,n="art-auto-orientation",s="art-auto-orientation-fullscreen",l=!1;function c(){let{videoWidth:e,videoHeight:t}=o,r=document.documentElement.clientWidth,a=document.documentElement.clientHeight;return e>t&&ra}return e.on("fullscreenWeb",t=>{t?c()&&setTimeout(()=>{e.fullscreenWeb&&!(0,i.hasClass)(a,n)&&function(){let t=document.documentElement.clientWidth,r=document.documentElement.clientHeight;(0,i.setStyle)(a,"width",`${r}px`),(0,i.setStyle)(a,"height",`${t}px`),(0,i.setStyle)(a,"transform-origin","0 0"),(0,i.setStyle)(a,"transform",`rotate(90deg) translate(0, -${t}px)`),(0,i.addClass)(a,n),e.isRotate=!0,e.emit("resize")}()},Number(r.AUTO_ORIENTATION_TIME??0)):(0,i.hasClass)(a,n)&&((0,i.setStyle)(a,"width",""),(0,i.setStyle)(a,"height",""),(0,i.setStyle)(a,"transform-origin",""),(0,i.setStyle)(a,"transform",""),(0,i.removeClass)(a,n),e.isRotate=!1,e.emit("resize"))}),e.on("fullscreen",async e=>{let r=!!screen?.orientation?.lock;if(e){if(r&&c())try{let e=screen.orientation.type.startsWith("portrait")?"landscape":"portrait";await screen.orientation.lock(e),l=!0,(0,i.addClass)(a,s)}catch(e){l=!1,t.show=e}}else if((0,i.hasClass)(a,s)&&(0,i.removeClass)(a,s),r&&l){try{screen.orientation.unlock()}catch{}l=!1}}),{name:"autoOrientation",get state(){return(0,i.hasClass)(a,n)}}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"7w0fA":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,icons:r,storage:a,constructor:o,proxy:n,template:{$poster:s}}=e,l=e.layers.add({name:"auto-playback",html:`
`}),c=(0,i.query)(".art-auto-playback-last",l),p=(0,i.query)(".art-auto-playback-jump",l),u=(0,i.query)(".art-auto-playback-close",l);(0,i.append)(u,r.close);let d=null;function f(){let r=(a.get("times")||{})[e.option.id||e.option.url];clearTimeout(d),(0,i.setStyle)(l,"display","none"),r&&r>=o.AUTO_PLAYBACK_MIN&&((0,i.setStyle)(l,"display","flex"),c.textContent=`${t.get("Last Seen")} ${(0,i.secondToTime)(r)}`,p.textContent=t.get("Jump Play"),n(u,"click",()=>{(0,i.setStyle)(l,"display","none")}),n(p,"click",()=>{e.seek=r,e.play(),(0,i.setStyle)(s,"display","none"),(0,i.setStyle)(l,"display","none")}),e.once("video:timeupdate",()=>{d=setTimeout(()=>{(0,i.setStyle)(l,"display","none")},o.AUTO_PLAYBACK_TIMEOUT)}))}return e.on("video:timeupdate",()=>{if(e.playing){let t=a.get("times")||{},r=Object.keys(t);r.length>o.AUTO_PLAYBACK_MAX&&delete t[r[0]],t[e.option.id||e.option.url]=e.currentTime,a.set("times",t)}}),e.on("ready",f),e.on("restart",f),{name:"auto-playback",get times(){return a.get("times")||{}},clear:()=>a.del("times"),delete(e){let t=a.get("times")||{};return delete t[e],a.set("times",t),t}}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"3XpBs":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{constructor:t,proxy:r,template:{$player:a,$video:o}}=e,n=null,s=!1,l=1,c=()=>{clearTimeout(n),s&&(s=!1,e.playbackRate=l,(0,i.removeClass)(a,"art-fast-forward"))};return r(o,"touchstart",r=>{1===r.touches.length&&e.playing&&!e.isLock&&(n=setTimeout(()=>{s=!0,l=e.playbackRate,e.playbackRate=t.FAST_FORWARD_VALUE,(0,i.addClass)(a,"art-fast-forward")},t.FAST_FORWARD_TIME))}),e.on("document:touchmove",c),e.on("document:touchend",c),{name:"fastForward",get state(){return(0,i.hasClass)(a,"art-fast-forward")}}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],e4KRZ:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{layers:t,icons:r,template:{$player:a}}=e;function o(){return(0,i.hasClass)(a,"art-lock")}function n(){(0,i.addClass)(a,"art-lock"),e.isLock=!0,e.emit("lock",!0)}function s(){(0,i.removeClass)(a,"art-lock"),e.isLock=!1,e.emit("lock",!1)}return t.add({name:"lock",mounted(t){let a=(0,i.append)(t,r.lock),o=(0,i.append)(t,r.unlock);(0,i.setStyle)(a,"display","none"),e.on("lock",e=>{e?((0,i.setStyle)(a,"display","inline-flex"),(0,i.setStyle)(o,"display","none")):((0,i.setStyle)(a,"display","none"),(0,i.setStyle)(o,"display","inline-flex"))})},click(){o()?s():n()}}),{name:"lock",get state(){return o()},set state(value){value?n():s()}}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],jcqjF:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){return e.on("control",t=>{t?(0,i.removeClass)(e.template.$player,"art-mini-progress-bar"):(0,i.addClass)(e.template.$player,"art-mini-progress-bar")}),{name:"mini-progress-bar"}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"4IYMA":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("../utils"),n=e("../utils/component"),s=o.interopDefault(n),l=e("./aspectRatio"),c=o.interopDefault(l),p=e("./flip"),u=o.interopDefault(p),d=e("./playbackRate"),f=o.interopDefault(d),h=e("./subtitleOffset"),m=o.interopDefault(h);class g extends s.default{constructor(e){super(e);let{option:t,controls:r,template:{$setting:a}}=e;this.name="setting",this.$parent=a,this.id=0,this.active=null,this.cache=new Map,this.option=[...this.builtin,...t.settings],t.setting&&(this.format(),this.render(),e.on("blur",()=>{this.show&&(this.show=!1,this.render())}),e.on("focus",e=>{let t=(0,i.includeFromEvent)(e,r.setting),a=(0,i.includeFromEvent)(e,this.$parent);!this.show||t||a||(this.show=!1,this.render())}),e.on("resize",()=>this.resize()))}get builtin(){let e=[],{option:t}=this.art;return t.playbackRate&&e.push((0,f.default)(this.art)),t.aspectRatio&&e.push((0,c.default)(this.art)),t.flip&&e.push((0,u.default)(this.art)),t.subtitleOffset&&e.push((0,m.default)(this.art)),e}traverse(e,t=this.option){for(let r=0;r{t.default=t===e,t.default&&t.$item&&(0,i.inverseClass)(t.$item,"art-current")},e.$option),this.render(e.$parents)}format(e=this.option,t,r,a=[]){for(let o=0;ot}),(0,i.def)(n,"$parents",{get:()=>r}),(0,i.def)(n,"$option",{get:()=>e});let a=[];(0,i.def)(n,"$events",{get:()=>a}),(0,i.def)(n,"$formatted",{get:()=>!0})}this.format(n.selector||[],n,e,a)}this.option=e}find(e=""){let t=null;return this.traverse(r=>{r.name===e&&(t=r)}),t}resize(){let{controls:e,constructor:{SETTING_WIDTH:t,SETTING_ITEM_HEIGHT:r},template:{$player:a,$setting:o}}=this.art;if(e.setting&&this.show){let n=this.active[0]?.$parent?.width||t,{left:s,width:l}=(0,i.getRect)(e.setting),{left:c,width:p}=(0,i.getRect)(a),u=s-c+l/2-n/2,d=this.active===this.option?this.active.length*r:(this.active.length+1)*r;if((0,i.setStyle)(o,"height",`${d}px`),(0,i.setStyle)(o,"width",`${n}px`),this.art.isRotate||i.isMobile)return;u+n>p?((0,i.setStyle)(o,"left",null),(0,i.setStyle)(o,"right",null)):((0,i.setStyle)(o,"left",`${u}px`),(0,i.setStyle)(o,"right","auto"))}}inactivate(e){for(let t=0;t'),l=(0,i.createElement)("div");(0,i.addClass)(l,"art-setting-item-left-icon"),(0,i.append)(l,a),(0,i.append)(s,l),(0,i.append)(s,e.$parent.html);let c=r(n,"click",()=>this.render(e.$parents));e.$parent.$events.push(c),(0,i.append)(t,n)}createItem(e,t=!1){if(!this.cache.has(e.$option))return;let r=this.cache.get(e.$option),a=e.$item,o="selector";(0,i.has)(e,"switch")&&(o="switch"),(0,i.has)(e,"range")&&(o="range"),(0,i.has)(e,"onClick")&&(o="button");let{icons:n,proxy:s,constructor:l}=this.art,c=(0,i.createElement)("div");(0,i.addClass)(c,"art-setting-item"),(0,i.setStyle)(c,"height",`${l.SETTING_ITEM_HEIGHT}px`),c.dataset.name=e.name||"",c.dataset.value=e.value||"";let p=(0,i.append)(c,'
'),u=(0,i.append)(c,'
'),d=(0,i.createElement)("div");switch((0,i.addClass)(d,"art-setting-item-left-icon"),o){case"button":case"switch":case"range":(0,i.append)(d,e.icon||n.config);break;case"selector":e.selector?.length?(0,i.append)(d,e.icon||n.config):(0,i.append)(d,n.check)}(0,i.append)(p,d),(0,i.def)(e,"$icon",{configurable:!0,get:()=>d}),(0,i.def)(e,"icon",{configurable:!0,get:()=>d.innerHTML,set(e){d.innerHTML="",(0,i.append)(d,e)}});let f=(0,i.createElement)("div");(0,i.addClass)(f,"art-setting-item-left-text"),(0,i.append)(f,e.html||""),(0,i.append)(p,f),(0,i.def)(e,"$html",{configurable:!0,get:()=>f}),(0,i.def)(e,"html",{configurable:!0,get:()=>f.innerHTML,set(e){f.innerHTML="",(0,i.append)(f,e)}});let h=(0,i.createElement)("div");switch((0,i.addClass)(h,"art-setting-item-right-tooltip"),(0,i.append)(h,e.tooltip||""),(0,i.append)(u,h),(0,i.def)(e,"$tooltip",{configurable:!0,get:()=>h}),(0,i.def)(e,"tooltip",{configurable:!0,get:()=>h.innerHTML,set(e){h.innerHTML="",(0,i.append)(h,e)}}),o){case"switch":{let t=(0,i.createElement)("div");(0,i.addClass)(t,"art-setting-item-right-icon");let r=(0,i.append)(t,n.switchOn),a=(0,i.append)(t,n.switchOff);(0,i.setStyle)(e.switch?a:r,"display","none"),(0,i.append)(u,t),(0,i.def)(e,"$switch",{configurable:!0,get:()=>t});let o=e.switch;(0,i.def)(e,"switch",{configurable:!0,get:()=>o,set(e){o=e,e?((0,i.setStyle)(a,"display","none"),(0,i.setStyle)(r,"display",null)):((0,i.setStyle)(a,"display",null),(0,i.setStyle)(r,"display","none"))}});break}case"range":{let t=(0,i.createElement)("div");(0,i.addClass)(t,"art-setting-item-right-icon");let r=(0,i.append)(t,'');r.value=e.range[0],r.min=e.range[1],r.max=e.range[2],r.step=e.range[3],(0,i.addClass)(r,"art-setting-range"),(0,i.append)(u,t),(0,i.def)(e,"$range",{configurable:!0,get:()=>r});let a=[...e.range];(0,i.def)(e,"range",{configurable:!0,get:()=>a,set(e){a=[...e],r.value=e[0],r.min=e[1],r.max=e[2],r.step=e[3]}})}break;case"selector":if(e.selector?.length){let e=(0,i.createElement)("div");(0,i.addClass)(e,"art-setting-item-right-icon"),(0,i.append)(e,n.arrowRight),(0,i.append)(u,e)}}switch(o){case"switch":if(e.onSwitch){let t=s(c,"click",async t=>{e.switch=await e.onSwitch.call(this.art,e,c,t)});e.$events.push(t)}break;case"range":if(e.$range){if(e.onRange){let t=s(e.$range,"change",async t=>{e.range[0]=e.$range.valueAsNumber,e.tooltip=await e.onRange.call(this.art,e,c,t)});e.$events.push(t)}if(e.onChange){let t=s(e.$range,"input",async t=>{e.range[0]=e.$range.valueAsNumber,e.tooltip=await e.onChange.call(this.art,e,c,t)});e.$events.push(t)}}break;case"selector":{let t=s(c,"click",async t=>{e.selector?.length?this.render(e.selector):(this.check(e),e.$parent.onSelect&&(e.$parent.tooltip=await e.$parent.onSelect.call(this.art,e,c,t)))});e.$events.push(t),e.default&&(0,i.addClass)(c,"art-current")}break;case"button":if(e.onClick){let t=s(c,"click",async t=>{e.tooltip=await e.onClick.call(this.art,e,c,t)});e.$events.push(t)}}(0,i.def)(e,"$item",{configurable:!0,get:()=>c}),t?(0,i.replaceElement)(c,a):(0,i.append)(r,c),e.mounted&&setTimeout(()=>e.mounted.call(this.art,e.$item,e),0)}render(e=this.option){if(this.active=e,this.cache.has(e)){let t=this.cache.get(e);(0,i.inverseClass)(t,"art-current")}else{let t=(0,i.createElement)("div");this.cache.set(e,t),(0,i.addClass)(t,"art-setting-panel"),(0,i.append)(this.$parent,t),(0,i.inverseClass)(t,"art-current"),e[0]?.$parent&&this.createHeader(e[0]);for(let t=0;t({value:t,name:`aspect-ratio-${t}`,default:t===e.aspectRatio,html:i(t)})),onSelect:t=>(e.aspectRatio=t.value,t.html),mounted:()=>{n(),e.on("aspectRatio",()=>n())}}}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],bifrn:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>n);var i=e("../utils");function n(e){let{i18n:t,icons:r,constructor:{SETTING_ITEM_WIDTH:a,FLIP:o}}=e;function n(e){return t.get((0,i.capitalize)(e))}function s(){let t=e.setting.find(`flip-${e.flip}`);e.setting.check(t)}return{width:a,name:"flip",html:t.get("Video Flip"),tooltip:n(e.flip),icon:r.flip,selector:o.map(t=>({value:t,name:`flip-${t}`,default:t===e.flip,html:n(t)})),onSelect:t=>(e.flip=t.value,t.html),mounted:()=>{s(),e.on("flip",()=>s())}}}},{"../utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],fXLq3:[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){let{i18n:t,icons:r,constructor:{SETTING_ITEM_WIDTH:a,PLAYBACK_RATE:o}}=e;function i(e){return 1===e?t.get("Normal"):e.toFixed(1)}function n(){let t=e.setting.find(`playback-rate-${e.playbackRate}`);e.setting.check(t)}return{width:a,name:"playback-rate",html:t.get("Play Speed"),tooltip:i(e.playbackRate),icon:r.playbackRate,selector:o.map(t=>({value:t,name:`playback-rate-${t}`,default:t===e.playbackRate,html:i(t)})),onSelect:t=>(e.playbackRate=t.value,t.html),mounted:()=>{n(),e.on("video:ratechange",()=>n())}}}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"50CCd":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){let{i18n:t,icons:r,constructor:a}=e;return{width:a.SETTING_ITEM_WIDTH,name:"subtitle-offset",html:t.get("Subtitle Offset"),icon:r.subtitle,tooltip:"0s",range:[0,-10,10,.1],onChange:t=>(e.subtitleOffset=t.range[0],`${t.range[0]}s`),mounted:(t,r)=>{e.on("subtitleOffset",e=>{r.$range.value=e,r.tooltip=`${e}s`})}}}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"9Ulkg":[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r),r.default=class{constructor(){this.name="artplayer_settings",this.settings={}}get(e){try{let t=JSON.parse(window.localStorage.getItem(this.name))||{};return e?t[e]:t}catch{return e?this.settings[e]:this.settings}}set(e,t){try{let r=Object.assign({},this.get(),{[e]:t});window.localStorage.setItem(this.name,JSON.stringify(r))}catch{this.settings[e]=t}}del(e){try{let t=this.get();delete t[e],window.localStorage.setItem(this.name,JSON.stringify(t))}catch{delete this.settings[e]}}clear(){try{window.localStorage.removeItem(this.name)}catch{this.settings={}}}}},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"4gOJp":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("option-validator"),n=o.interopDefault(i),s=e("./scheme"),l=o.interopDefault(s),c=e("./utils"),p=e("./utils/component"),u=o.interopDefault(p);class d extends u.default{constructor(e){super(e),this.name="subtitle",this.option=null,this.destroyEvent=()=>null,this.init(e.option.subtitle);let t=!1;e.on("video:timeupdate",()=>{if(!this.url)return;let e=this.art.template.$video.webkitDisplayingFullscreen;"boolean"==typeof e&&e!==t&&(t=e,this.createTrack(e?"subtitles":"metadata",this.url))})}get url(){return this.art.template.$track.src}set url(e){this.switch(e)}get textTrack(){return this.art.template.$video?.textTracks?.[0]}get activeCues(){return this.textTrack?Array.from(this.textTrack.activeCues):[]}get cues(){return this.textTrack?Array.from(this.textTrack.cues):[]}style(e,t){let{$subtitle:r}=this.art.template;return"object"==typeof e?(0,c.setStyles)(r,e):(0,c.setStyle)(r,e,t)}update(){let{option:{subtitle:e},template:{$subtitle:t}}=this.art;t.innerHTML="",this.activeCues.length&&(this.art.emit("subtitleBeforeUpdate",this.activeCues),t.innerHTML=this.activeCues.map((t,r)=>t.text.split(/\r?\n/).filter(e=>e.trim()).map(t=>`
${e.escape?(0,c.escape)(t):t}
`).join("")).join(""),this.art.emit("subtitleAfterUpdate",this.activeCues))}async switch(e,t={}){let{i18n:r,notice:a,option:o}=this.art,i={...o.subtitle,...t,url:e},n=await this.init(i);return t.name&&(a.show=`${r.get("Switch Subtitle")}: ${t.name}`),n}createTrack(e,t){let{template:r,proxy:a,option:o}=this.art,{$video:i,$track:n}=r,s=(0,c.createElement)("track");s.default=!0,s.kind=e,s.src=t,s.label=o.subtitle.name||"Artplayer",s.track.mode="hidden",s.onload=()=>{this.art.emit("subtitleLoad",this.cues,this.option)},this.art.events.remove(this.destroyEvent),n.onload=null,(0,c.remove)(n),(0,c.append)(i,s),r.$track=s,this.destroyEvent=a(this.textTrack,"cuechange",()=>this.update())}async init(e){let{notice:t,template:{$subtitle:r}}=this.art;return this.textTrack?((0,n.default)(e,l.default.subtitle),e.url)?(this.option=e,this.style(e.style),fetch(e.url).then(e=>e.arrayBuffer()).then(t=>{let r=new TextDecoder(e.encoding).decode(t);switch(e.type||(0,c.getExt)(e.url)){case"srt":{let t=(0,c.srtToVtt)(r),a=e.onVttLoad(t);return(0,c.vttToBlob)(a)}case"ass":{let t=(0,c.assToVtt)(r),a=e.onVttLoad(t);return(0,c.vttToBlob)(a)}case"vtt":{let t=e.onVttLoad(r);return(0,c.vttToBlob)(t)}default:return e.url}}).then(e=>(r.innerHTML="",this.url===e||(URL.revokeObjectURL(this.url),this.createTrack("metadata",e)),e)).catch(e=>{throw r.innerHTML="",t.show=e,e})):void 0:null}}r.default=d},{"option-validator":"iscjH","./scheme":"3maHy","./utils":"3eYxa","./utils/component":"1lUmE","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],haag7:[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);var o=e("../package.json"),i=e("./utils");class n{constructor(e){this.art=e;let{option:t,constructor:r}=e;t.container instanceof Element?this.$container=t.container:(this.$container=(0,i.query)(t.container),(0,i.errorHandle)(this.$container,`No container element found by ${t.container}`)),(0,i.errorHandle)((0,i.supportsFlex)(),"The current browser does not support flex layout");let a=this.$container.tagName.toLowerCase();(0,i.errorHandle)("div"===a,`Unsupported container element type, only support 'div' but got '${a}'`),(0,i.errorHandle)(r.instances.every(e=>e.template.$container!==this.$container),"Cannot mount multiple instances on the same dom element"),this.query=this.query.bind(this),this.$container.dataset.artId=e.id,this.init()}static get html(){return`
Player version:
${o.version}
Video url:
Video volume:
Video time:
Video duration:
Video resolution:
x
[x]
`}query(e){return(0,i.query)(e,this.$container)}init(){let{option:e}=this.art;if(e.useSSR||(this.$container.innerHTML=n.html),this.$player=this.query(".art-video-player"),this.$video=this.query(".art-video"),this.$track=this.query("track"),this.$poster=this.query(".art-poster"),this.$subtitle=this.query(".art-subtitle"),this.$danmuku=this.query(".art-danmuku"),this.$bottom=this.query(".art-bottom"),this.$progress=this.query(".art-progress"),this.$controls=this.query(".art-controls"),this.$controlsLeft=this.query(".art-controls-left"),this.$controlsCenter=this.query(".art-controls-center"),this.$controlsRight=this.query(".art-controls-right"),this.$layer=this.query(".art-layers"),this.$loading=this.query(".art-loading"),this.$notice=this.query(".art-notice"),this.$noticeInner=this.query(".art-notice-inner"),this.$mask=this.query(".art-mask"),this.$state=this.query(".art-state"),this.$setting=this.query(".art-settings"),this.$info=this.query(".art-info"),this.$infoPanel=this.query(".art-info-panel"),this.$infoClose=this.query(".art-info-close"),this.$contextmenu=this.query(".art-contextmenus"),e.proxy){let t=e.proxy.call(this.art,this.art);(0,i.errorHandle)(t instanceof HTMLVideoElement||t instanceof HTMLCanvasElement,"Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'"),(0,i.replaceElement)(t,this.$video),t.className="art-video",this.$video=t}e.backdrop&&(0,i.addClass)(this.$player,"art-backdrop"),i.isMobile&&(0,i.addClass)(this.$player,"art-mobile")}destroy(e){this.$video.src="",e?this.$container.innerHTML="":(0,i.addClass)(this.$player,"art-destroy")}}r.default=n},{"../package.json":"7z0bJ","./utils":"3eYxa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],hyN0U:[function(e,t,r,a){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r),r.default=class{on(e,t,r){let a=this.e||(this.e={});return(a[e]||(a[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){let a=this;function o(...i){a.off(e,o),t.apply(r,i)}return o._=t,this.on(e,o,r)}emit(e,...t){let r=((this.e||(this.e={}))[e]||[]).slice();for(let e=0;e").concat(e))};i("Version@".concat(t.version));for(var c=0;c0)||void 0===arguments[0]||arguments[0];this.events.destroy(),this.template.destroy(e),er.splice(er.indexOf(this),1),this.isDestroy=!0,this.emit("destroy")}}],[{key:"instances",get:function(){return er}},{key:"version",get:function(){return d.version}},{key:"config",get:function(){return m.default}},{key:"utils",get:function(){return K}},{key:"scheme",get:function(){return V.default}},{key:"Emitter",get:function(){return ee.default}},{key:"validator",get:function(){return f.default}},{key:"kindOf",get:function(){return f.default.kindOf}},{key:"html",get:function(){return Z.default.html}},{key:"option",get:function(){var e;return{id:"",container:"#artplayer",url:"",poster:"",type:"",theme:"#f00",volume:.7,isLive:!1,muted:!1,autoplay:!1,autoSize:!1,autoMini:!1,loop:!1,flip:!1,playbackRate:!1,aspectRatio:!1,screenshot:!1,setting:!1,hotkey:!0,pip:!1,mutex:!0,backdrop:!0,fullscreen:!1,fullscreenWeb:!1,subtitleOffset:!1,miniProgressBar:!1,useSSR:!1,playsInline:!0,lock:!1,gesture:!0,fastForward:!1,autoPlayback:!1,autoOrientation:!1,airplay:!1,proxy:void 0,layers:[],contextmenu:[],controls:[],settings:[],quality:[],highlight:[],plugins:[],thumbnails:{url:"",number:60,column:10,width:0,height:0,scale:1},subtitle:{url:"",type:"",style:{},name:"",escape:!0,encoding:"utf-8",onVttLoad:function(e){return e}},moreVideoAttr:{controls:!1,preload:K.isSafari?"auto":"metadata"},i18n:{},icons:{},cssVar:{},customType:{},lang:null==(e=navigator)?void 0:e.language.toLowerCase()}}}]),t}(ee.default);en.STYLE=u.default,en.DEBUG=!1,en.CONTEXTMENU=!0,en.NOTICE_TIME=2e3,en.SETTING_WIDTH=250,en.SETTING_ITEM_WIDTH=200,en.SETTING_ITEM_HEIGHT=35,en.RESIZE_TIME=200,en.SCROLL_TIME=200,en.SCROLL_GAP=50,en.AUTO_PLAYBACK_MAX=10,en.AUTO_PLAYBACK_MIN=5,en.AUTO_PLAYBACK_TIMEOUT=3e3,en.RECONNECT_TIME_MAX=5,en.RECONNECT_SLEEP_TIME=1e3,en.CONTROL_HIDE_TIME=3e3,en.DBCLICK_TIME=300,en.DBCLICK_FULLSCREEN=!0,en.MOBILE_DBCLICK_PLAY=!0,en.MOBILE_CLICK_PLAY=!1,en.AUTO_ORIENTATION_TIME=200,en.INFO_LOOP_TIME=1e3,en.FAST_FORWARD_VALUE=3,en.FAST_FORWARD_TIME=1e3,en.TOUCH_MOVE_RATIO=.5,en.VOLUME_STEP=.1,en.SEEK_STEP=5,en.PLAYBACK_RATE=[.5,.75,1,1.25,1.5,2],en.ASPECT_RATIO=["default","4:3","16:9"],en.FLIP=["normal","horizontal","vertical"],en.FULLSCREEN_WEB_IN_BODY=!1,en.LOG_VERSION=!0,en.USE_RAF=!1,K.isBrowser&&(window.Artplayer=en,K.setStyleText("artplayer-style",u.default),setTimeout(function(){en.LOG_VERSION&&console.log("%c ArtPlayer %c ".concat(en.version," %c https://artplayer.org"),"color: #fff; background: #5f5f5f","color: #fff; background: #4bc729","")},100))},{"@swc/helpers/cjs/_call_super.cjs":"clpdF","@swc/helpers/cjs/_class_call_check.cjs":"4Uf9M","@swc/helpers/cjs/_create_class.cjs":"igUuK","@swc/helpers/cjs/_inherits.cjs":"jtSwf","bundle-text:./style/index.less":"A7TwB","option-validator":"8zKz5","../package.json":"2Jf7W","./config":"3vlyb","./contextmenu":"46D5s","./control":"9MunV","./events":"kSrJ9","./hotkey":"fSjZi","./i18n":"5q3H4","./icons":"lkjMg","./info":"9sVMb","./layer":"dsBH4","./loading":"hLYDH","./mask":"5YaCM","./notice":"6kSNS","./player":"gJ9uy","./plugins":"83Crr","./scheme":"3Srhh","./setting":"4ARoj","./storage":"a5A5h","./subtitle":"kEcFl","./template":"jkHHJ","./utils":"hQMLb","./utils/emitter":"ikoiH","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],clpdF:[function(e,t,r,n){"use strict";var o=e("feddc910f69a01a6"),a=e("b644f6b72647b399"),s=e("ba991daace2b8ed9");r._=function(e,t,r){return t=o._(t),s._(e,a._()?Reflect.construct(t,r||[],o._(e).constructor):t.apply(e,r))}},{feddc910f69a01a6:"NOGHw",b644f6b72647b399:"83nDe",ba991daace2b8ed9:"hd12h"}],NOGHw:[function(e,t,r,n){"use strict";function o(e){return r._=o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},o(e)}r._=o},{}],"83nDe":[function(e,t,r,n){"use strict";function o(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(r._=o=function(){return!!e})()}r._=o},{}],hd12h:[function(e,t,r,n){"use strict";var o=e("f7151fe13994d2aa"),a=e("f18e81760bb14899");r._=function(e,t){return t&&("object"===a._(t)||"function"==typeof t)?t:o._(e)}},{f7151fe13994d2aa:"1tlYe",f18e81760bb14899:"iXhRw"}],"1tlYe":[function(e,t,r,n){"use strict";r._=function(e){if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}},{}],iXhRw:[function(e,t,r,n){"use strict";r._=function(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}},{}],"4Uf9M":[function(e,t,r,n){"use strict";r._=function(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}},{}],igUuK:[function(e,t,r,n){"use strict";function o(e,t){for(var r=0;r","license":"MIT","homepage":"https://artplayer.org","repository":{"type":"git","url":"git+https://github.com/zhw2590582/ArtPlayer.git"},"bugs":{"url":"https://github.com/zhw2590582/ArtPlayer/issues"},"keywords":["html5","video","player"],"main":"dist/artplayer.js","legacy":"dist/artplayer.legacy.js","types":"types/artplayer.d.ts","browserslist":"last 1 Chrome version","dependencies":{"option-validator":"^2.0.6"}}')},{}],"3vlyb":[function(e,t,r,n){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r),r.default={properties:["audioTracks","autoplay","buffered","controller","controls","crossOrigin","currentSrc","currentTime","defaultMuted","defaultPlaybackRate","duration","ended","error","loop","mediaGroup","muted","networkState","paused","playbackRate","played","preload","readyState","seekable","seeking","src","startDate","textTracks","videoTracks","volume"],methods:["addTextTrack","canPlayType","load","play","pause"],events:["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"],prototypes:["width","height","videoWidth","videoHeight","poster","webkitDecodedFrameCount","webkitDroppedFrameCount","playsInline","webkitSupportsFullscreen","webkitDisplayingFullscreen","onenterpictureinpicture","onleavepictureinpicture","disablePictureInPicture","cancelVideoFrameCallback","requestVideoFrameCallback","getVideoPlaybackQuality","requestPictureInPicture","webkitEnterFullScreen","webkitEnterFullscreen","webkitExitFullScreen","webkitExitFullscreen"]}},{"@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],qpMMf:[function(e,t,r,n){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}],"46D5s":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return k});var a=e("@swc/helpers/cjs/_call_super.cjs"),s=e("@swc/helpers/cjs/_class_call_check.cjs"),i=e("@swc/helpers/cjs/_create_class.cjs"),c=e("@swc/helpers/cjs/_inherits.cjs"),l=e("../utils"),u=e("../utils/component"),p=o.interopDefault(u),f=e("./aspectRatio"),d=o.interopDefault(f),h=e("./close"),m=o.interopDefault(h),v=e("./flip"),g=o.interopDefault(v),y=e("./info"),b=o.interopDefault(y),j=e("./playbackRate"),w=o.interopDefault(j),_=e("./version"),x=o.interopDefault(_),k=function(e){"use strict";function t(e){var r;return(0,s._)(this,t),(r=(0,a._)(this,t,[e])).name="contextmenu",r.$parent=e.template.$contextmenu,l.isMobile||r.init(),r}return(0,c._)(t,e),(0,i._)(t,[{key:"init",value:function(){var e=this,t=this.art,r=t.option,n=t.proxy,o=t.template,a=o.$player,s=o.$contextmenu;r.playbackRate&&this.add((0,w.default)({name:"playbackRate",index:10})),r.aspectRatio&&this.add((0,d.default)({name:"aspectRatio",index:20})),r.flip&&this.add((0,g.default)({name:"flip",index:30})),this.add((0,b.default)({name:"info",index:40})),this.add((0,x.default)({name:"version",index:50})),this.add((0,m.default)({name:"close",index:60}));for(var i=0;iu+c&&(m=c-h),n+d>p+i&&(v=i-d),(0,l.setStyles)(s,{top:"".concat(v,"px"),left:"".concat(m,"px")})}}),n(a,"click",function(t){(0,l.includeFromEvent)(t,s)||(e.show=!1)}),this.art.on("blur",function(){e.show=!1})}}]),t}(p.default)},{"@swc/helpers/cjs/_call_super.cjs":"clpdF","@swc/helpers/cjs/_class_call_check.cjs":"4Uf9M","@swc/helpers/cjs/_create_class.cjs":"igUuK","@swc/helpers/cjs/_inherits.cjs":"jtSwf","../utils":"hQMLb","../utils/component":"hXsfe","./aspectRatio":"dCCaf","./close":"j6SRT","./flip":"cyTC8","./info":"cU7aj","./playbackRate":"01vHs","./version":"64r3r","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],hQMLb:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var a=e("./compatibility");o.exportAll(a,r);var s=e("./dom");o.exportAll(s,r);var i=e("./error");o.exportAll(i,r);var c=e("./file");o.exportAll(c,r);var l=e("./format");o.exportAll(l,r);var u=e("./property");o.exportAll(u,r);var p=e("./subtitle");o.exportAll(p,r);var f=e("./time");o.exportAll(f,r)},{"./compatibility":"iDd6B","./dom":"7V5Cu","./error":"2cjgc","./file":"8XY4p","./format":"lHh8q","./property":"iccpW","./subtitle":"ctswB","./time":"8KDy9","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],iDd6B:[function(e,t,r,n){var o,a,s=e("@parcel/transformer-js/src/esmodule-helpers.js");s.defineInteropFlag(r),s.export(r,"userAgent",function(){return i}),s.export(r,"isSafari",function(){return c}),s.export(r,"isWechat",function(){return l}),s.export(r,"isIE",function(){return u}),s.export(r,"isAndroid",function(){return p}),s.export(r,"isIOS",function(){return f}),s.export(r,"isIOS13",function(){return d}),s.export(r,"isMobile",function(){return h}),s.export(r,"isBrowser",function(){return m});var i=null!=(a=null==(o=globalThis)?void 0:o.CUSTOM_USER_AGENT)?a:"undefined"!=typeof navigator?navigator.userAgent:"",c=/^(?:(?!chrome|android).)*safari/i.test(i),l=/MicroMessenger/i.test(i),u=/MSIE|Trident/i.test(i),p=/android/i.test(i),f=/iPad|iPhone|iPod/i.test(i)&&!window.MSStream,d=f||i.includes("Macintosh")&&navigator.maxTouchPoints>=1,h=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(i)||d,m="undefined"!=typeof window},{"@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"7V5Cu":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"query",function(){return s}),o.export(r,"queryAll",function(){return i}),o.export(r,"addClass",function(){return c}),o.export(r,"removeClass",function(){return l}),o.export(r,"hasClass",function(){return u}),o.export(r,"append",function(){return p}),o.export(r,"remove",function(){return f}),o.export(r,"setStyle",function(){return d}),o.export(r,"setStyles",function(){return h}),o.export(r,"getStyle",function(){return m}),o.export(r,"siblings",function(){return v}),o.export(r,"inverseClass",function(){return g}),o.export(r,"tooltip",function(){return y}),o.export(r,"isInViewport",function(){return b}),o.export(r,"includeFromEvent",function(){return j}),o.export(r,"replaceElement",function(){return w}),o.export(r,"createElement",function(){return _}),o.export(r,"getIcon",function(){return x}),o.export(r,"setStyleText",function(){return k}),o.export(r,"supportsFlex",function(){return M}),o.export(r,"getRect",function(){return S}),o.export(r,"loadImg",function(){return E}),o.export(r,"getComposedPath",function(){return I});var a=e("./compatibility");function s(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;return t.querySelector(e)}function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;return Array.from(t.querySelectorAll(e))}function c(e,t){return e.classList.add(t)}function l(e,t){return e.classList.remove(t)}function u(e,t){return e.classList.contains(t)}function p(e,t){return t instanceof Element?e.appendChild(t):e.insertAdjacentHTML("beforeend",String(t)),e.lastElementChild||e.lastChild}function f(e){return e.parentNode.removeChild(e)}function d(e,t,r){return e.style[t]=r,e}function h(e,t){for(var r in t)d(e,r,t[r]);return e}function m(e,t){var r=!(arguments.length>2)||void 0===arguments[2]||arguments[2],n=window.getComputedStyle(e,null).getPropertyValue(t);return r?Number.parseFloat(n):n}function v(e){return Array.from(e.parentElement.children).filter(function(t){return t!==e})}function g(e,t){v(e).forEach(function(e){return l(e,t)}),c(e,t)}function y(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"top";a.isMobile||(e.setAttribute("aria-label",t),c(e,"hint--rounded"),c(e,"hint--".concat(r)))}function b(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=e.getBoundingClientRect(),n=window.innerHeight||document.documentElement.clientHeight,o=window.innerWidth||document.documentElement.clientWidth,a=r.top-t<=n&&r.top+r.height+t>=0,s=r.left-t<=o+t&&r.left+r.width+t>=0;return a&&s}function j(e,t){return I(e).includes(t)}function w(e,t){return t.parentNode.replaceChild(e,t),e}function _(e){return document.createElement(e)}function x(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=_("i");return c(r,"art-icon"),c(r,"art-icon-".concat(e)),p(r,t),r}function k(e,t){var r=document.getElementById(e);r||((r=document.createElement("style")).id=e,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",function(){document.head.appendChild(r)}):(document.head||document.documentElement).appendChild(r)),r.textContent=t}function M(){var e=document.createElement("div");return e.style.display="flex","flex"===e.style.display}function S(e){return e.getBoundingClientRect()}function E(e,t){return new Promise(function(r,n){var o=new Image;o.onload=function(){if(t&&1!==t){var a=document.createElement("canvas"),s=a.getContext("2d");a.width=o.width*t,a.height=o.height*t,s.drawImage(o,0,0,a.width,a.height),a.toBlob(function(t){var o=URL.createObjectURL(t),a=new Image;a.onload=function(){r(a)},a.onerror=function(){URL.revokeObjectURL(o),n(Error("Image load failed: ".concat(e)))},a.src=o})}else r(o)},o.onerror=function(){n(Error("Image load failed: ".concat(e)))},o.src=e})}function I(e){if(e.composedPath)return e.composedPath();for(var t=[],r=e.target;r;)t.push(r),r=r.parentNode;return t.includes(window)||void 0===window||t.push(window),t}},{"./compatibility":"iDd6B","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"2cjgc":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"ArtPlayerError",function(){return c}),o.export(r,"errorHandle",function(){return l});var a=e("@swc/helpers/cjs/_call_super.cjs"),s=e("@swc/helpers/cjs/_class_call_check.cjs"),i=e("@swc/helpers/cjs/_inherits.cjs"),c=function(e){"use strict";function t(e,r){var n;return(0,s._)(this,t),n=(0,a._)(this,t,[e]),"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(n,r||n.constructor),n.name="ArtPlayerError",n}return(0,i._)(t,e),t}((0,e("@swc/helpers/cjs/_wrap_native_super.cjs")._)(Error));function l(e,t){if(!e)throw new c(t);return e}},{"@swc/helpers/cjs/_call_super.cjs":"clpdF","@swc/helpers/cjs/_class_call_check.cjs":"4Uf9M","@swc/helpers/cjs/_inherits.cjs":"jtSwf","@swc/helpers/cjs/_wrap_native_super.cjs":"j8pRR","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],j8pRR:[function(e,t,r,n){"use strict";var o=e("c8857d56f4968279"),a=e("2ed7bdf1701f2d07"),s=e("5c5ad8846076b9cd"),i=e("2db6fa09e8a5be4c");function c(e){var t="function"==typeof Map?new Map:void 0;return r._=c=function(e){if(null===e||!s._(e))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return o._(e,arguments,a._(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),i._(r,e)},c(e)}r._=c},{c8857d56f4968279:"bC52X","2ed7bdf1701f2d07":"NOGHw","5c5ad8846076b9cd":"1mpbk","2db6fa09e8a5be4c":"7ubVA"}],bC52X:[function(e,t,r,n){"use strict";var o=e("62fc231ae2e75266"),a=e("3f98bf9d4f706151");function s(e,t,n){return o._()?r._=s=Reflect.construct:r._=s=function(e,t,r){var n=[null];n.push.apply(n,t);var o=new(Function.bind.apply(e,n));return r&&a._(o,r.prototype),o},s.apply(null,arguments)}r._=s},{"62fc231ae2e75266":"83nDe","3f98bf9d4f706151":"7ubVA"}],"1mpbk":[function(e,t,r,n){"use strict";r._=function(e){return -1!==Function.toString.call(e).indexOf("[native code]")}},{}],"8XY4p":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function a(e,t){var r=document.createElement("a");r.style.display="none",r.href=e,r.download=t,document.body.appendChild(r),r.click(),document.body.removeChild(r)}o.defineInteropFlag(r),o.export(r,"getExt",function(){return function e(t){return t.includes("?")?e(t.split("?")[0]):t.includes("#")?e(t.split("#")[0]):t.trim().toLowerCase().split(".").pop()}}),o.export(r,"download",function(){return a})},{"@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],lHh8q:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function a(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function s(e){return e.charAt(0).toUpperCase()+e.slice(1)}function i(e){if(!e)return"00:00";var t=Math.floor(e/3600),r=Math.floor((e-3600*t)/60),n=Math.floor(e-3600*t-60*r);return(t>0?[t,r,n]:[r,n]).map(function(e){return e<10?"0".concat(e):String(e)}).join(":")}function c(e){return e.replace(/[&<>'"]/g,function(e){return({"&":"&","<":"<",">":">","'":"'",'"':"""})[e]||e})}function l(e){var t={"&":"&","<":"<",">":">","'":"'",""":'"'},r=RegExp("(".concat(Object.keys(t).join("|"),")"),"g");return e.replace(r,function(e){return t[e]||e})}o.defineInteropFlag(r),o.export(r,"clamp",function(){return a}),o.export(r,"capitalize",function(){return s}),o.export(r,"secondToTime",function(){return i}),o.export(r,"escape",function(){return c}),o.export(r,"unescape",function(){return l})},{"@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],iccpW:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"def",function(){return i}),o.export(r,"has",function(){return l}),o.export(r,"get",function(){return u}),o.export(r,"mergeDeep",function(){return function e(){for(var t=arguments.length,r=Array(t),n=0;ne.length)&&(t=e.length);for(var r=0,n=Array(t);r").replace(/\{\\([ibu])1\}/g,"<$1>").replace(/\{([ibu])\}/g,"<$1>").replace(/\{\/([ibu])\}/g,"").replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g,"$1.$2").replace(/\{[\s\S]*?\}/g,"").concat("\r\n\r\n"))}function s(e){return URL.createObjectURL(new Blob([e],{type:"text/vtt"}))}function i(e){var t=RegExp("Dialogue:\\s\\d,(\\d+:\\d\\d:\\d\\d.\\d\\d),(\\d+:\\d\\d:\\d\\d.\\d\\d),([^,]*),([^,]*),(?:[^,]*,){4}([\\s\\S]*)$","i");function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.split(/[:.]/).map(function(e,t,r){if(t===r.length-1){if(1===e.length)return".".concat(e,"00");if(2===e.length)return".".concat(e,"0")}else if(1===e.length)return(0===t?"0":":0")+e;return 0===t?e:t===r.length-1?".".concat(e):":".concat(e)}).join("")}return"WEBVTT\n"+"\n".concat(e.split(/\r?\n/).map(function(e){var n=e.match(t);return n?{start:r(n[1].trim()),end:r(n[2].trim()),text:n[5].replace(/\{[\s\S]*?\}/g,"").replace(/(\\N)/g,"\n").trim().split(/\r?\n/).map(function(e){return e.trim()}).join("\n")}:null}).filter(function(e){return e}).map(function(e,t){return e?"".concat(t+1,"\n")+"".concat(e.start," --\x3e ").concat(e.end)+"\n"+"".concat(e.text):""}).filter(function(e){return e.trim()}).join("\n\n"))}o.defineInteropFlag(r),o.export(r,"srtToVtt",function(){return a}),o.export(r,"vttToBlob",function(){return s}),o.export(r,"assToVtt",function(){return i})},{"@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"8KDy9":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function a(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise(function(t){return setTimeout(t,e)})}function s(e,t){var r;return function(){for(var n=this,o=arguments.length,a=Array(o),s=0;s=Number(a.dataset.index)});i?i.insertAdjacentElement("beforebegin",a):(0,u.append)(this.$parent,a),r.html&&(0,u.append)(a,r.html),r.style&&(0,u.setStyles)(a,r.style),r.tooltip&&(0,u.tooltip)(a,r.tooltip);var f=[];if(r.click){var d=this.art.events.proxy(a,"click",function(e){e.preventDefault(),r.click.call(t.art,t,e)});f.push(d)}return r.selector&&["left","right"].includes(r.position)&&this.selector(r,a,f),this[n]=a,this.cache.set(n,{$ref:a,events:f,option:r}),r.mounted&&r.mounted.call(this.art,a),a}}},{key:"remove",value:function(e){var t=this.cache.get(e);(0,p.errorHandle)(t,"Can't find [".concat(e,"] from the [").concat(this.name,"]")),t.option.beforeUnmount&&t.option.beforeUnmount.call(this.art,t.$ref);for(var r=0;r').concat("default"===e?r.get("Default"):e,"")}).join("");return(0,s._)((0,a._)({},e),{html:"".concat(r.get("Aspect Ratio"),": ").concat(n),click:function(e,r){var n=r.target.dataset.value;n&&(t.aspectRatio=n,e.show=!1)},mounted:function(e){var r=(0,i.query)('[data-value="default"]',e);r&&(0,i.inverseClass)(r,"art-current"),t.on("aspectRatio",function(t){var r=(0,i.queryAll)("span",e).find(function(e){return e.dataset.value===t});r&&(0,i.inverseClass)(r,"art-current")})}})}}},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],j6SRT:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return i});var a=e("@swc/helpers/cjs/_object_spread.cjs"),s=e("@swc/helpers/cjs/_object_spread_props.cjs");function i(e){return function(t){return(0,s._)((0,a._)({},e),{html:t.i18n.get("Close"),click:function(e){e.show=!1}})}}},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],cyTC8:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return c});var a=e("@swc/helpers/cjs/_object_spread.cjs"),s=e("@swc/helpers/cjs/_object_spread_props.cjs"),i=e("../utils");function c(e){return function(t){var r=t.i18n,n=t.constructor.FLIP.map(function(e){return'').concat(r.get((0,i.capitalize)(e)),"")}).join("");return(0,s._)((0,a._)({},e),{html:"".concat(r.get("Video Flip"),": ").concat(n),click:function(e,r){var n=r.target.dataset.value;n&&(t.flip=n.toLowerCase(),e.show=!1)},mounted:function(e){var r=(0,i.query)('[data-value="normal"]',e);r&&(0,i.inverseClass)(r,"art-current"),t.on("flip",function(t){var r=(0,i.queryAll)("span",e).find(function(e){return e.dataset.value===t});r&&(0,i.inverseClass)(r,"art-current")})}})}}},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],cU7aj:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return i});var a=e("@swc/helpers/cjs/_object_spread.cjs"),s=e("@swc/helpers/cjs/_object_spread_props.cjs");function i(e){return function(t){return(0,s._)((0,a._)({},e),{html:t.i18n.get("Video Info"),click:function(e){t.info.show=!0,e.show=!1}})}}},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"01vHs":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return c});var a=e("@swc/helpers/cjs/_object_spread.cjs"),s=e("@swc/helpers/cjs/_object_spread_props.cjs"),i=e("../utils");function c(e){return function(t){var r=t.i18n,n=t.constructor.PLAYBACK_RATE.map(function(e){return'').concat(1===e?r.get("Normal"):e.toFixed(1),"")}).join("");return(0,s._)((0,a._)({},e),{html:"".concat(r.get("Play Speed"),": ").concat(n),click:function(e,r){var n=r.target.dataset.value;n&&(t.playbackRate=Number(n),e.show=!1)},mounted:function(e){var r=(0,i.query)('[data-value="1"]',e);r&&(0,i.inverseClass)(r,"art-current"),t.on("video:ratechange",function(){var r=(0,i.queryAll)("span",e).find(function(e){return Number(e.dataset.value)===t.playbackRate});r&&(0,i.inverseClass)(r,"art-current")})}})}}},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"64r3r":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return function(e){return(0,s._)((0,a._)({},e),{html:'ArtPlayer '.concat(i.version,"")})}});var a=e("@swc/helpers/cjs/_object_spread.cjs"),s=e("@swc/helpers/cjs/_object_spread_props.cjs"),i=e("../../package.json")},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","../../package.json":"2Jf7W","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"9MunV":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return P});var a=e("@swc/helpers/cjs/_async_to_generator.cjs"),s=e("@swc/helpers/cjs/_call_super.cjs"),i=e("@swc/helpers/cjs/_class_call_check.cjs"),c=e("@swc/helpers/cjs/_create_class.cjs"),l=e("@swc/helpers/cjs/_get.cjs"),u=e("@swc/helpers/cjs/_get_prototype_of.cjs"),p=e("@swc/helpers/cjs/_inherits.cjs"),f=e("@swc/helpers/cjs/_ts_generator.cjs"),d=e("../utils"),h=e("../utils/component"),m=o.interopDefault(h),v=e("./airplay"),g=o.interopDefault(v),y=e("./fullscreen"),b=o.interopDefault(y),j=e("./fullscreenWeb"),w=o.interopDefault(j),_=e("./pip"),x=o.interopDefault(_),k=e("./playAndPause"),M=o.interopDefault(k),S=e("./progress"),E=o.interopDefault(S),I=e("./screenshot"),T=o.interopDefault(I),L=e("./setting"),C=o.interopDefault(L),O=e("./time"),F=o.interopDefault(O),D=e("./volume"),A=o.interopDefault(D),P=function(e){"use strict";function t(e){(0,i._)(this,t),(r=(0,s._)(this,t,[e])).isHover=!1,r.name="control",r.timer=Date.now();var r,n=e.constructor,o=r.art.template,a=o.$player,c=o.$bottom;return e.on("mousemove",function(){d.isMobile||(r.show=!0)}),e.on("click",function(){d.isMobile?r.toggle():r.show=!0}),e.on("document:mousemove",function(e){r.isHover=(0,d.includeFromEvent)(e,c)}),e.on("video:timeupdate",function(){!e.setting.show&&!r.isHover&&!e.isInput&&e.playing&&r.show&&Date.now()-r.timer>=n.CONTROL_HIDE_TIME&&(r.show=!1)}),e.on("control",function(e){e?((0,d.removeClass)(a,"art-hide-cursor"),(0,d.addClass)(a,"art-hover"),r.timer=Date.now()):((0,d.addClass)(a,"art-hide-cursor"),(0,d.removeClass)(a,"art-hover"))}),r.init(),r}return(0,p._)(t,e),(0,c._)(t,[{key:"init",value:function(){var e=this,t=this.art.option;t.isLive||this.add((0,E.default)({name:"progress",position:"top",index:10})),this.add({name:"thumbnails",position:"top",index:20}),this.add((0,M.default)({name:"playAndPause",position:"left",index:10})),this.add((0,A.default)({name:"volume",position:"left",index:20})),t.isLive||this.add((0,F.default)({name:"time",position:"left",index:30})),t.quality.length&&(0,d.sleep)().then(function(){e.art.quality=t.quality}),t.screenshot&&!d.isMobile&&this.add((0,T.default)({name:"screenshot",position:"right",index:20})),t.setting&&this.add((0,C.default)({name:"setting",position:"right",index:30})),t.pip&&this.add((0,x.default)({name:"pip",position:"right",index:40})),t.airplay&&window.WebKitPlaybackTargetAvailabilityEvent&&this.add((0,g.default)({name:"airplay",position:"right",index:50})),t.fullscreenWeb&&this.add((0,w.default)({name:"fullscreenWeb",position:"right",index:60})),t.fullscreen&&this.add((0,b.default)({name:"fullscreen",position:"right",index:70}));for(var r=0;rt.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r}function u(e,t,r,n){var o,s=arguments.length,i=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if(("undefined"==typeof Reflect?"undefined":(0,a._)(Reflect))==="object"&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var c=e.length-1;c>=0;c--)(o=e[c])&&(i=(s<3?o(i):s>3?o(t,r,i):o(t,r))||i);return s>3&&i&&Object.defineProperty(t,r,i),i}function p(e,t){return function(r,n){t(r,n,e)}}function f(e,t,r,n,o,s){function i(e){if(void 0!==e&&"function"!=typeof e)throw TypeError("Function expected");return e}for(var c,l=n.kind,u="getter"===l?"get":"setter"===l?"set":"value",p=!t&&e?n.static?e:e.prototype:null,f=t||(p?Object.getOwnPropertyDescriptor(p,n.name):{}),d=!1,h=r.length-1;h>=0;h--){var m={};for(var v in n)m[v]="access"===v?{}:n[v];for(var v in n.access)m.access[v]=n.access[v];m.addInitializer=function(e){if(d)throw TypeError("Cannot add initializers after decoration has completed");s.push(i(e||null))};var g=(0,r[h])("accessor"===l?{get:f.get,set:f.set}:f[u],m);if("accessor"===l){if(void 0===g)continue;if(null===g||(void 0===g?"undefined":(0,a._)(g))!=="object")throw TypeError("Object expected");(c=i(g.get))&&(f.get=c),(c=i(g.set))&&(f.set=c),(c=i(g.init))&&o.unshift(c)}else(c=i(g))&&("field"===l?o.unshift(c):f[u]=c)}p&&Object.defineProperty(p,n.name,f),d=!0}function d(e,t,r){for(var n=arguments.length>2,o=0;o0&&o[o.length-1])&&(6===l[0]||2===l[0])){a=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function _(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,a=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=a.next()).done;)s.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(o)throw o.error}}return s}function x(){for(var e=[],t=0;t1||i(e,t)})},t&&(n[e]=t(n[e])))}function i(e,t){try{var r;(r=o[e](t)).value instanceof S?Promise.resolve(r.value.v).then(c,l):u(a[0][2],r)}catch(e){u(a[0][3],e)}}function c(e){i("next",e)}function l(e){i("throw",e)}function u(e,t){e(t),a.shift(),a.length&&i(a[0][0],a[0][1])}}function I(e){var t,r;return t={},n("next"),n("throw",function(e){throw e}),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,o){t[n]=e[n]?function(t){return(r=!r)?{value:S(e[n](t)),done:!1}:o?o(t):t}:o}}function T(e){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=w(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise(function(n,o){var a,s,i;a=n,s=o,i=(t=e[r](t)).done,Promise.resolve(t.value).then(function(e){a({value:e,done:i})},s)})}}}function L(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var C=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},O=function(e){return(O=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)};function F(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=O(e),n=0;n\n
\n
\n
\n
\n
\n
\n\n ',mounted:function(e){var a=null,s=!1,u=(0,i.query)(".art-progress-hover",e),p=(0,i.query)(".art-progress-loaded",e),f=(0,i.query)(".art-progress-played",e),d=(0,i.query)(".art-progress-highlight",e),h=(0,i.query)(".art-progress-indicator",e),m=(0,i.query)(".art-progress-tip",e);function v(r,n){var o=n||c(t,r),a=o.width;m.textContent=o.time;var s=m.clientWidth;a<=s/2?(0,i.setStyle)(m,"left",0):a>e.clientWidth-s/2?(0,i.setStyle)(m,"left","".concat(e.clientWidth-s,"px")):(0,i.setStyle)(m,"left","".concat(a-s/2,"px"))}r.indicator?(0,i.append)(h,r.indicator):(0,i.setStyle)(h,"backgroundColor","var(--art-theme)"),t.on("setBar",function(r,n,o){var s="played"===r&&o&&i.isMobile;"loaded"===r&&(0,i.setStyle)(p,"width","".concat(100*n,"%")),"hover"===r&&(0,i.setStyle)(u,"width","".concat(100*n,"%")),"played"===r&&((0,i.setStyle)(f,"width","".concat(100*n,"%")),(0,i.setStyle)(h,"left","".concat(100*n,"%"))),s&&((0,i.setStyle)(m,"display","flex"),v(o,{width:e.clientWidth*n,time:(0,i.secondToTime)(n*t.duration)}),clearTimeout(a),a=setTimeout(function(){(0,i.setStyle)(m,"display","none")},500))}),t.on("video:loadedmetadata",function(){d.textContent="";for(var e=0;e');(0,i.append)(d,a)}}),t.constructor.USE_RAF?t.on("raf",function(){t.emit("setBar","played",t.played),t.emit("setBar","loaded",t.loaded)}):(t.on("video:timeupdate",function(){t.emit("setBar","played",t.played)}),t.on("video:progress",function(){t.emit("setBar","loaded",t.loaded)}),t.on("video:ended",function(){t.emit("setBar","played",1)})),t.emit("setBar","loaded",t.loaded||0),i.isMobile||(o(e,"click",function(e){e.target!==h&&l(t,e)}),o(e,"mousemove",function(r){var n,o,a=c(t,r).percentage;(t.emit("setBar","hover",a,r),(0,i.setStyle)(m,"display","flex"),(0,i.includeFromEvent)(r,d))?(n=c(t,r).width,m.textContent=r.target.dataset.text,n<=(o=m.clientWidth)/2?(0,i.setStyle)(m,"left",0):n>e.clientWidth-o/2?(0,i.setStyle)(m,"left","".concat(e.clientWidth-o,"px")):(0,i.setStyle)(m,"left","".concat(n-o/2,"px"))):v(r)}),o(e,"mouseleave",function(e){(0,i.setStyle)(m,"display","none"),t.emit("setBar","hover",0,e)}),o(e,"mousedown",function(e){s=0===e.button}),t.on("document:mousemove",function(e){if(s){var r=c(t,e),n=r.second,o=r.percentage;t.emit("setBar","played",o,e),t.seek=n}}),t.on("document:mouseup",function(){s&&(s=!1)}))}})}}},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"4LBtY":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return c});var a=e("@swc/helpers/cjs/_object_spread.cjs"),s=e("@swc/helpers/cjs/_object_spread_props.cjs"),i=e("../utils");function c(e){return function(t){return(0,s._)((0,a._)({},e),{tooltip:t.i18n.get("Screenshot"),mounted:function(e){var r=t.proxy,n=t.icons;(0,i.append)(e,n.screenshot),r(e,"click",function(){t.screenshot()})}})}}},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],hXIX5:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return c});var a=e("@swc/helpers/cjs/_object_spread.cjs"),s=e("@swc/helpers/cjs/_object_spread_props.cjs"),i=e("../utils");function c(e){return function(t){return(0,s._)((0,a._)({},e),{tooltip:t.i18n.get("Show Setting"),mounted:function(e){var r=t.proxy,n=t.icons,o=t.i18n;(0,i.append)(e,n.setting),r(e,"click",function(){t.setting.toggle(),t.setting.resize()}),t.on("setting",function(t){(0,i.tooltip)(e,o.get(t?"Hide Setting":"Show Setting"))})}})}}},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"7Zm5j":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return c});var a=e("@swc/helpers/cjs/_object_spread.cjs"),s=e("@swc/helpers/cjs/_object_spread_props.cjs"),i=e("../utils");function c(e){return function(t){return(0,s._)((0,a._)({},e),{style:i.isMobile?{fontSize:"12px",padding:"0 5px"}:{cursor:"auto",padding:"0 10px"},mounted:function(e){function r(){var r="".concat((0,i.secondToTime)(t.currentTime)," / ").concat((0,i.secondToTime)(t.duration));r!==e.textContent&&(e.textContent=r)}r();for(var n=["video:loadedmetadata","video:timeupdate","video:progress"],o=0;o'),c=(0,i.append)(s,'
'),l=(0,i.append)(c,'
'),u=(0,i.append)(c,'
'),p=(0,i.append)(u,'
'),f=(0,i.append)(p,'
'),d=(0,i.append)(u,'
');function h(e){var t=(0,i.getRect)(u),r=t.top,n=t.height;return 1-(e.clientY-r)/n}function m(){if(t.muted||0===t.volume)(0,i.setStyle)(o,"display","none"),(0,i.setStyle)(a,"display","flex"),(0,i.setStyle)(d,"top","100%"),(0,i.setStyle)(f,"top","100%"),l.textContent=0;else{var e=100*t.volume;(0,i.setStyle)(o,"display","flex"),(0,i.setStyle)(a,"display","none"),(0,i.setStyle)(d,"top","".concat(100-e,"%")),(0,i.setStyle)(f,"top","".concat(100-e,"%")),l.textContent=Math.floor(e)}}if(m(),t.on("video:volumechange",m),r(o,"click",function(){t.muted=!0}),r(a,"click",function(){t.muted=!1}),i.isMobile)(0,i.setStyle)(s,"display","none");else{var v=!1;r(u,"mousedown",function(e){v=0===e.button,t.volume=h(e)}),t.on("document:mousemove",function(e){v&&(t.muted=!1,t.volume=h(e))}),t.on("document:mouseup",function(){v&&(v=!1)})}}})}}},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],kSrJ9:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return x});var a=e("@swc/helpers/cjs/_class_call_check.cjs"),s=e("@swc/helpers/cjs/_create_class.cjs"),i=e("./clickInit"),c=o.interopDefault(i),l=e("./gestureInit"),u=o.interopDefault(l),p=e("./globalInit"),f=o.interopDefault(p),d=e("./hoverInit"),h=o.interopDefault(d),m=e("./moveInit"),v=o.interopDefault(m),g=e("./resizeInit"),y=o.interopDefault(g),b=e("./updateInit"),j=o.interopDefault(b),w=e("./viewInit"),_=o.interopDefault(w),x=function(){"use strict";function e(t){(0,a._)(this,e),this.destroyEvents=[],this.proxy=this.proxy.bind(this),this.hover=this.hover.bind(this),(0,c.default)(t,this),(0,h.default)(t,this),(0,v.default)(t,this),(0,y.default)(t,this),(0,u.default)(t,this),(0,_.default)(t,this),(0,f.default)(t,this),(0,j.default)(t,this)}return(0,s._)(e,[{key:"proxy",value:function(e,t,r){var n=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(Array.isArray(t))return t.map(function(t){return n.proxy(e,t,r,o)});e.addEventListener(t,r,o);var a=function(){return e.removeEventListener(t,r,o)};return this.destroyEvents.push(a),a}},{key:"hover",value:function(e,t,r){t&&this.proxy(e,"mouseenter",t),r&&this.proxy(e,"mouseleave",r)}},{key:"remove",value:function(e){var t=this.destroyEvents.indexOf(e);t>-1&&(e(),this.destroyEvents.splice(t,1))}},{key:"destroy",value:function(){for(var e=0;eMath.abs(a)&&2>Math.abs(o))return s;var i=180*Math.atan2(o,a)/Math.PI;return i>=-45&&i<45?s=4:i>=45&&i<135?s=1:i>=-135&&i<-45?s=2:(i>=135&&i<=180||i>=-180&&i<-135)&&(s=3),s}(l,u,o,a),d=[3,4].includes(f),h=[1,2].includes(f);if(d&&!e.isRotate||h&&e.isRotate){var m=(0,s.clamp)((o-l)/e.width,-1,1),v=(0,s.clamp)((a-u)/e.height,-1,1),g=e.isRotate?v:m,y=i===n?e.constructor.TOUCH_MOVE_RATIO:1,b=(0,s.clamp)(p+e.duration*g*y,0,e.duration);e.seek=b,e.emit("setBar","played",(0,s.clamp)(b/e.duration,0,1),t),e.notice.show="".concat((0,s.secondToTime)(b)," / ").concat((0,s.secondToTime)(e.duration))}}};e.option.gesture&&(t.proxy(n,"touchstart",function(e){i=n,f(e)}),t.proxy(n,"touchmove",d)),t.proxy(o,"touchstart",function(e){i=o,f(e)}),t.proxy(o,"touchmove",d),e.on("document:touchend",function(){c&&(l=0,u=0,p=0,c=!1,i=null)})}}},{"../control/progress":"lLsXv","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],hOg1v:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function a(e,t){var r=["click","mouseup","keydown","touchend","touchmove","mousemove","contextmenu","webkitfullscreenchange"],n=["resize","scroll","orientationchange"],o=[];function a(){for(var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=0;s'},{}],kX2ah:[function(e,t,r,n){t.exports=''},{}],cYqbE:[function(e,t,r,n){t.exports=''},{}],dCZ1q:[function(e,t,r,n){t.exports=''},{}],enWOR:[function(e,t,r,n){t.exports=''},{}],aEYUh:[function(e,t,r,n){t.exports=''},{}],"6sWtx":[function(e,t,r,n){t.exports=''},{}],bhixJ:[function(e,t,r,n){t.exports=''},{}],aonuB:[function(e,t,r,n){t.exports=''},{}],hbNgp:[function(e,t,r,n){t.exports=''},{}],aNXxH:[function(e,t,r,n){t.exports=''},{}],ezk36:[function(e,t,r,n){t.exports=''},{}],kPsyz:[function(e,t,r,n){t.exports=''},{}],cUJ9T:[function(e,t,r,n){t.exports=''},{}],"9MnDP":[function(e,t,r,n){t.exports=''},{}],gtJ8Q:[function(e,t,r,n){t.exports=''},{}],luvRR:[function(e,t,r,n){t.exports=''},{}],"2VikP":[function(e,t,r,n){t.exports=''},{}],"9eYwu":[function(e,t,r,n){t.exports=''},{}],"5m73X":[function(e,t,r,n){t.exports=''},{}],"2ZLsh":[function(e,t,r,n){t.exports=''},{}],fXkDR:[function(e,t,r,n){t.exports=''},{}],jcnGd:[function(e,t,r,n){t.exports=''},{}],"2QwX5":[function(e,t,r,n){t.exports=''},{}],"9oiD9":[function(e,t,r,n){t.exports=''},{}],"68oNy":[function(e,t,r,n){t.exports=''},{}],j2oAd:[function(e,t,r,n){t.exports=''},{}],"9sVMb":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return p});var a=e("@swc/helpers/cjs/_call_super.cjs"),s=e("@swc/helpers/cjs/_class_call_check.cjs"),i=e("@swc/helpers/cjs/_create_class.cjs"),c=e("@swc/helpers/cjs/_inherits.cjs"),l=e("./utils"),u=e("./utils/component"),p=function(e){"use strict";function t(e){var r;return(0,s._)(this,t),(r=(0,a._)(this,t,[e])).name="info",l.isMobile||r.init(),r}return(0,c._)(t,e),(0,i._)(t,[{key:"init",value:function(){var e=this,t=this.art,r=t.proxy,n=t.constructor,o=t.template,a=o.$infoPanel,s=o.$infoClose,i=o.$video;r(s,"click",function(){e.show=!1});var c=null,u=(0,l.queryAll)("[data-video]",a)||[];this.art.on("destroy",function(){return clearTimeout(c)}),!function e(){for(var t=0;tu?((0,a.setStyle)(o,"width","".concat(u*l,"px")),(0,a.setStyle)(o,"height","100%"),(0,a.setStyle)(o,"margin","0 auto")):((0,a.setStyle)(o,"width","100%"),(0,a.setStyle)(o,"height","".concat(c/u,"px")),(0,a.setStyle)(o,"margin","auto 0")),s.dataset.aspectRatio=n}r.show="".concat(t.get("Aspect Ratio"),": ").concat("default"===n?t.get("Default"):n),e.emit("aspectRatio",n)}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],rWA5h:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template.$video;(0,a.def)(e,"attr",{value:function(e,r){if(void 0===r)return t[e];t[e]=r}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],ekP8q:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template,r=t.$container,n=t.$video;(0,a.def)(e,"autoHeight",{value:function(){var t=r.clientWidth,o=n.videoHeight,s=t/n.videoWidth*o;(0,a.setStyle)(r,"height","".concat(s,"px")),e.emit("autoHeight",s)}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"3d2R8":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template,r=t.$container,n=t.$player,o=t.$video;(0,a.def)(e,"autoSize",{value:function(){var t=o.videoWidth,s=o.videoHeight,i=(0,a.getRect)(r),c=i.width,l=i.height,u=t/s;c/l>u?((0,a.setStyle)(n,"width","".concat(l*u/c*100,"%")),(0,a.setStyle)(n,"height","100%")):((0,a.setStyle)(n,"width","100%"),(0,a.setStyle)(n,"height","".concat(c/u/l*100,"%"))),e.emit("autoSize",{width:e.width,height:e.height})}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"2nLRH":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template.$player;(0,a.def)(e,"cssVar",{value:function(e,r){return r?t.style.setProperty(e,r):getComputedStyle(t).getPropertyValue(e)}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"3lhzv":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template.$video;(0,a.def)(e,"currentTime",{get:function(){return t.currentTime||0},set:function(r){Number.isNaN(r=Number.parseFloat(r))||(t.currentTime=(0,a.clamp)(r,0,e.duration))}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],hQmmf:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){(0,a.def)(e,"duration",{get:function(){var t=e.template.$video.duration;return t===1/0?0:t||0}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"1KU3q":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return u});var a=e("@swc/helpers/cjs/_async_to_generator.cjs"),s=e("@swc/helpers/cjs/_ts_generator.cjs"),i=e("../config"),c=o.interopDefault(i),l=e("../utils");function u(e){for(var t=e.i18n,r=e.notice,n=e.option,o=e.constructor,i=e.proxy,u=e.template,p=u.$player,f=u.$video,d=u.$poster,h=0,m=0;m0&&void 0!==arguments[0]?arguments[0]:document.documentElement,t=arguments.length>1?arguments[1]:void 0;return new Promise(function(r,n){var o=function(){c.off("change",o),r()};c.on("change",o);var a=e[s.requestFullscreen](t);a instanceof Promise&&a.then(o).catch(n)})},exit:function(){return new Promise(function(e,t){if(!c.isFullscreen)return void e();var r=function(){c.off("change",r),e()};c.on("change",r);var n=document[s.exitFullscreen]();n instanceof Promise&&n.then(r).catch(t)})},toggle:function(e,t){return c.isFullscreen?c.exit():c.request(e,t)},onchange:function(e){c.on("change",e)},onerror:function(e){c.on("error",e)},on:function(e,t){var r=i[e];r&&document.addEventListener(r,t,!1)},off:function(e,t){var r=i[e];r&&document.removeEventListener(r,t,!1)},raw:s};Object.defineProperties(c,{isFullscreen:{get:function(){return!!document[s.fullscreenElement]}},element:{enumerable:!0,get:function(){return document[s.fullscreenElement]}},isEnabled:{enumerable:!0,get:function(){return!!document[s.fullscreenEnabled]}}}),s||(c.isEnabled=!1),r.default=c},{"@swc/helpers/cjs/_sliced_to_array.cjs":"gIQTH","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],gIQTH:[function(e,t,r,n){"use strict";var o=e("d7c30a5ae0c1ab2"),a=e("3aacfce52f67defd"),s=e("f0dae09a1a08b16a"),i=e("83f3648e614d0830");r._=function(e,t){return o._(e)||a._(e,t)||i._(e,t)||s._()}},{d7c30a5ae0c1ab2:"3QSPl","3aacfce52f67defd":"5SSeo",f0dae09a1a08b16a:"heYSj","83f3648e614d0830":"fh7mx"}],"3QSPl":[function(e,t,r,n){"use strict";r._=function(e){if(Array.isArray(e))return e}},{}],"5SSeo":[function(e,t,r,n){"use strict";r._=function(e,t){var r,n,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],s=!0,i=!1;try{for(o=o.call(e);!(s=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);s=!0);}catch(e){i=!0,n=e}finally{try{s||null==o.return||o.return()}finally{if(i)throw n}}return a}}},{}],heYSj:[function(e,t,r,n){"use strict";r._=function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},{}],itVYl:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.constructor,r=e.template,n=r.$container,o=r.$player,s="";(0,a.def)(e,"fullscreenWeb",{get:function(){return(0,a.hasClass)(o,"art-fullscreen-web")},set:function(r){r?(s=o.style.cssText,t.FULLSCREEN_WEB_IN_BODY&&(0,a.append)(document.body,o),e.state="fullscreenWeb",(0,a.setStyle)(o,"width","100%"),(0,a.setStyle)(o,"height","100%"),(0,a.addClass)(o,"art-fullscreen-web"),e.emit("fullscreenWeb",!0)):(t.FULLSCREEN_WEB_IN_BODY&&(0,a.append)(n,o),s&&(o.style.cssText=s,s=""),(0,a.removeClass)(o,"art-fullscreen-web"),e.emit("fullscreenWeb",!1)),e.emit("resize")}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],dE0YW:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template.$video;(0,a.def)(e,"loaded",{get:function(){return e.loadedTime/t.duration}}),(0,a.def)(e,"loadedTime",{get:function(){return t.buffered.length?t.buffered.end(t.buffered.length-1):0}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],kwpHL:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.icons,r=e.proxy,n=e.storage,o=e.template,s=o.$player,i=o.$video,c=!1,l=0,u=0;function p(){var t=e.template.$mini;t&&((0,a.removeClass)(s,"art-mini"),(0,a.setStyle)(t,"display","none"),s.prepend(i),e.emit("mini",!1))}function f(t,r){e.playing?((0,a.setStyle)(t,"display","none"),(0,a.setStyle)(r,"display","flex")):((0,a.setStyle)(t,"display","flex"),(0,a.setStyle)(r,"display","none"))}function d(){var t=e.template.$mini,r=(0,a.getRect)(t),o=window.innerHeight-r.height-50,s=window.innerWidth-r.width-50;n.set("top",o),n.set("left",s),(0,a.setStyle)(t,"top","".concat(o,"px")),(0,a.setStyle)(t,"left","".concat(s,"px"))}(0,a.def)(e,"mini",{get:function(){return(0,a.hasClass)(s,"art-mini")},set:function(o){if(o){e.state="mini",(0,a.addClass)(s,"art-mini");var h=function(){var o=e.template.$mini;if(o)return(0,a.append)(o,i),(0,a.setStyle)(o,"display","flex");var s=(0,a.createElement)("div");(0,a.addClass)(s,"art-mini-popup"),(0,a.append)(document.body,s),e.template.$mini=s,(0,a.append)(s,i);var d=(0,a.append)(s,'
');(0,a.append)(d,t.close),r(d,"click",p);var h=(0,a.append)(s,'
'),m=(0,a.append)(h,t.play),v=(0,a.append)(h,t.pause);return r(m,"click",function(){return e.play()}),r(v,"click",function(){return e.pause()}),f(m,v),e.on("video:playing",function(){return f(m,v)}),e.on("video:pause",function(){return f(m,v)}),e.on("video:timeupdate",function(){return f(m,v)}),r(s,"mousedown",function(e){c=0===e.button,l=e.pageX,u=e.pageY}),e.on("document:mousemove",function(e){if(c){(0,a.addClass)(s,"art-mini-dragging");var t=e.pageX-l,r=e.pageY-u;(0,a.setStyle)(s,"transform","translate(".concat(t,"px, ").concat(r,"px)"))}}),e.on("document:mouseup",function(){if(c){c=!1,(0,a.removeClass)(s,"art-mini-dragging");var e=(0,a.getRect)(s);n.set("left",e.left),n.set("top",e.top),(0,a.setStyle)(s,"left","".concat(e.left,"px")),(0,a.setStyle)(s,"top","".concat(e.top,"px")),(0,a.setStyle)(s,"transform",null)}}),s}(),m=n.get("top"),v=n.get("left");"number"==typeof m&&"number"==typeof v?((0,a.setStyle)(h,"top","".concat(m,"px")),(0,a.setStyle)(h,"left","".concat(v,"px")),(0,a.isInViewport)(h)||d()):d(),e.emit("mini",!0)}else p()}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"72iXq":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.option,r=e.storage,n=e.template,o=n.$video,s=n.$poster;for(var i in t.moreVideoAttr)e.attr(i,t.moreVideoAttr[i]);t.muted&&(e.muted=t.muted),t.volume&&(o.volume=(0,a.clamp)(t.volume,0,1));var c=r.get("volume");for(var l in"number"==typeof c&&(o.volume=(0,a.clamp)(c,0,1)),t.poster&&(0,a.setStyle)(s,"backgroundImage","url(".concat(t.poster,")")),t.autoplay&&(o.autoplay=t.autoplay),t.playsInline&&(o.playsInline=!0,o["webkit-playsinline"]=!0),t.theme&&(t.cssVar["--art-theme"]=t.theme),t.cssVar)e.cssVar(l,t.cssVar[l]);e.url=t.url}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"1B8xv":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template.$video,r=e.i18n,n=e.notice;(0,a.def)(e,"pause",{value:function(){var o=t.pause();return n.show=r.get("Pause"),e.emit("pause"),o}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"2ayfA":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t,r,n,o,s=e.i18n,i=e.notice,c=e.template.$video;document.pictureInPictureEnabled?(t=e.template.$video,r=e.proxy,n=e.notice,t.disablePictureInPicture=!1,(0,a.def)(e,"pip",{get:function(){return document.pictureInPictureElement},set:function(r){r?(e.state="pip",t.requestPictureInPicture().catch(function(e){throw n.show=e,e})):document.exitPictureInPicture().catch(function(e){throw n.show=e,e})}}),r(t,"enterpictureinpicture",function(){e.emit("pip",!0)}),r(t,"leavepictureinpicture",function(){e.emit("pip",!1)})):c.webkitSupportsPresentationMode?((o=e.template.$video).webkitSetPresentationMode("inline"),(0,a.def)(e,"pip",{get:function(){return"picture-in-picture"===o.webkitPresentationMode},set:function(t){t?(e.state="pip",o.webkitSetPresentationMode("picture-in-picture"),e.emit("pip",!0)):(o.webkitSetPresentationMode("inline"),e.emit("pip",!1))}})):(0,a.def)(e,"pip",{get:function(){return!1},set:function(){i.show=s.get("PIP Not Supported")}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"4pWSp":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template.$video,r=e.i18n,n=e.notice;(0,a.def)(e,"playbackRate",{get:function(){return t.playbackRate},set:function(o){o?o!==t.playbackRate&&(t.playbackRate=o,n.show="".concat(r.get("Rate"),": ").concat(1===o?r.get("Normal"):"".concat(o,"x"))):e.playbackRate=1}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"3GKs4":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){(0,a.def)(e,"played",{get:function(){return e.currentTime/e.duration}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],in83u:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template.$video;(0,a.def)(e,"playing",{get:function(){return"boolean"==typeof t.playing?t.playing:!!(t.currentTime>0&&!t.paused&&!t.ended&&t.readyState>2)}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],cVJNG:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return c});var a=e("@swc/helpers/cjs/_async_to_generator.cjs"),s=e("@swc/helpers/cjs/_ts_generator.cjs"),i=e("../utils");function c(e){var t=e.i18n,r=e.notice,n=e.option,o=e.constructor.instances,c=e.template.$video;(0,i.def)(e,"play",{value:function(){return(0,a._)(function(){var a,i,l;return(0,s._)(this,function(s){switch(s.label){case 0:return[4,c.play()];case 1:if(a=s.sent(),r.show=t.get("Play"),e.emit("play"),n.mutex)for(i=0;i0&&jo.clientWidth-m/2?(0,i.setStyle)(a,"left","".concat(o.clientWidth-m,"px")):(0,i.setStyle)(a,"left","".concat(t-m/2,"px"))}}(j):i.isMobile||(0,i.setStyle)(m,"display","none"),b&&(clearTimeout(l),l=setTimeout(function(){(0,i.setStyle)(m,"display","none")},500)),s.label=3;case 3:return[2]}})})()}),(0,i.def)(e,"thumbnails",{get:function(){return e.option.thumbnails},set:function(t){t.url&&!e.option.isLive&&(e.option.thumbnails=t,clearTimeout(l),l=null,u=null,p=!1,f=!1)}})}},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],bdo2A:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){(0,a.def)(e,"toggle",{value:function(){return e.playing?e.pause():e.play()}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"7uOqt":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){(0,a.def)(e,"type",{get:function(){return e.option.type},set:function(t){e.option.type=t}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"4QAa0":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return c});var a=e("@swc/helpers/cjs/_async_to_generator.cjs"),s=e("@swc/helpers/cjs/_ts_generator.cjs"),i=e("../utils");function c(e){var t=e.option,r=e.template.$video;(0,i.def)(e,"url",{get:function(){return r.src},set:function(n){return(0,a._)(function(){var o,a,c;return(0,s._)(this,function(s){switch(s.label){case 0:if(!n)return[3,4];if(o=e.url,a=t.type||(0,i.getExt)(n),c=t.customType[a],!(a&&c))return[3,2];return[4,(0,i.sleep)()];case 1:return s.sent(),e.loading.show=!0,c.call(e,r,n,e),[3,3];case 2:URL.revokeObjectURL(o),r.src=n,s.label=3;case 3:return o!==e.url&&(e.option.url=n,e.isReady&&o&&e.once("video:canplay",function(){e.emit("restart",n)})),[3,6];case 4:return[4,(0,i.sleep)()];case 5:s.sent(),e.loading.show=!0,s.label=6;case 6:return[2]}})})()}})}},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"3sLEt":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template.$video,r=e.i18n,n=e.notice,o=e.storage;(0,a.def)(e,"volume",{get:function(){return t.volume||0},set:function(e){t.volume=(0,a.clamp)(e,0,1),n.show="".concat(r.get("Volume"),": ").concat(Number.parseInt(100*t.volume,10)),0!==t.volume&&o.set("volume",t.volume)}}),(0,a.def)(e,"muted",{get:function(){return t.muted},set:function(r){t.muted=r,e.emit("muted",r)}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"83Crr":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return y});var a=e("@swc/helpers/cjs/_class_call_check.cjs"),s=e("@swc/helpers/cjs/_create_class.cjs"),i=e("../utils"),c=e("./autoOrientation"),l=o.interopDefault(c),u=e("./autoPlayback"),p=o.interopDefault(u),f=e("./fastForward"),d=o.interopDefault(f),h=e("./lock"),m=o.interopDefault(h),v=e("./miniProgressBar"),g=o.interopDefault(v),y=function(){"use strict";function e(t){(0,a._)(this,e),this.art=t,this.id=0;var r=t.option;r.miniProgressBar&&!r.isLive&&this.add(g.default),r.lock&&i.isMobile&&this.add(m.default),r.autoPlayback&&!r.isLive&&this.add(p.default),r.autoOrientation&&i.isMobile&&this.add(l.default),r.fastForward&&i.isMobile&&!r.isLive&&this.add(d.default);for(var n=0;nt&&rn}return e.on("fullscreenWeb",function(t){if(t){if(f()){var n;setTimeout(function(){var t,r;e.fullscreenWeb&&!(0,i.hasClass)(o,l)&&(t=document.documentElement.clientWidth,r=document.documentElement.clientHeight,(0,i.setStyle)(o,"width","".concat(r,"px")),(0,i.setStyle)(o,"height","".concat(t,"px")),(0,i.setStyle)(o,"transform-origin","0 0"),(0,i.setStyle)(o,"transform","rotate(90deg) translate(0, -".concat(t,"px)")),(0,i.addClass)(o,l),e.isRotate=!0,e.emit("resize"))},Number(null!=(n=r.AUTO_ORIENTATION_TIME)?n:0))}}else(0,i.hasClass)(o,l)&&((0,i.setStyle)(o,"width",""),(0,i.setStyle)(o,"height",""),(0,i.setStyle)(o,"transform-origin",""),(0,i.setStyle)(o,"transform",""),(0,i.removeClass)(o,l),e.isRotate=!1,e.emit("resize"))}),e.on("fullscreen",function(e){return(0,a._)(function(){var r,n,a,c,l;return(0,s._)(this,function(s){switch(s.label){case 0:if(a=!!(null==(n=screen)||null==(r=n.orientation)?void 0:r.lock),!e)return[3,5];if(!(a&&f()))return[3,4];s.label=1;case 1:return s.trys.push([1,3,,4]),c=screen.orientation.type.startsWith("portrait")?"landscape":"portrait",[4,screen.orientation.lock(c)];case 2:return s.sent(),p=!0,(0,i.addClass)(o,u),[3,4];case 3:return l=s.sent(),p=!1,t.show=l,[3,4];case 4:return[3,6];case 5:if((0,i.hasClass)(o,u)&&(0,i.removeClass)(o,u),a&&p){try{screen.orientation.unlock()}catch(e){}p=!1}s.label=6;case 6:return[2]}})})()}),{name:"autoOrientation",get state(){return(0,i.hasClass)(o,l)}}}},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"76uK8":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.i18n,r=e.icons,n=e.storage,o=e.constructor,s=e.proxy,i=e.template.$poster,c=e.layers.add({name:"auto-playback",html:'\n
\n
\n
\n '}),l=(0,a.query)(".art-auto-playback-last",c),u=(0,a.query)(".art-auto-playback-jump",c),p=(0,a.query)(".art-auto-playback-close",c);(0,a.append)(p,r.close);var f=null;function d(){var r=(n.get("times")||{})[e.option.id||e.option.url];clearTimeout(f),(0,a.setStyle)(c,"display","none"),r&&r>=o.AUTO_PLAYBACK_MIN&&((0,a.setStyle)(c,"display","flex"),l.textContent="".concat(t.get("Last Seen")," ").concat((0,a.secondToTime)(r)),u.textContent=t.get("Jump Play"),s(p,"click",function(){(0,a.setStyle)(c,"display","none")}),s(u,"click",function(){e.seek=r,e.play(),(0,a.setStyle)(i,"display","none"),(0,a.setStyle)(c,"display","none")}),e.once("video:timeupdate",function(){f=setTimeout(function(){(0,a.setStyle)(c,"display","none")},o.AUTO_PLAYBACK_TIMEOUT)}))}return e.on("video:timeupdate",function(){if(e.playing){var t=n.get("times")||{},r=Object.keys(t);r.length>o.AUTO_PLAYBACK_MAX&&delete t[r[0]],t[e.option.id||e.option.url]=e.currentTime,n.set("times",t)}}),e.on("ready",d),e.on("restart",d),{name:"auto-playback",get times(){return n.get("times")||{}},clear:function(){return n.del("times")},delete:function(e){var t=n.get("times")||{};return delete t[e],n.set("times",t),t}}}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],gLGPW:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.constructor,r=e.proxy,n=e.template,o=n.$player,s=n.$video,i=null,c=!1,l=1,u=function(){clearTimeout(i),c&&(c=!1,e.playbackRate=l,(0,a.removeClass)(o,"art-fast-forward"))};return r(s,"touchstart",function(r){1===r.touches.length&&e.playing&&!e.isLock&&(i=setTimeout(function(){c=!0,l=e.playbackRate,e.playbackRate=t.FAST_FORWARD_VALUE,(0,a.addClass)(o,"art-fast-forward")},t.FAST_FORWARD_TIME))}),e.on("document:touchmove",u),e.on("document:touchend",u),{name:"fastForward",get state(){return(0,a.hasClass)(o,"art-fast-forward")}}}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"9btcI":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.layers,r=e.icons,n=e.template.$player;function o(){return(0,a.hasClass)(n,"art-lock")}function s(){(0,a.addClass)(n,"art-lock"),e.isLock=!0,e.emit("lock",!0)}function i(){(0,a.removeClass)(n,"art-lock"),e.isLock=!1,e.emit("lock",!1)}return t.add({name:"lock",mounted:function(t){var n=(0,a.append)(t,r.lock),o=(0,a.append)(t,r.unlock);(0,a.setStyle)(n,"display","none"),e.on("lock",function(e){e?((0,a.setStyle)(n,"display","inline-flex"),(0,a.setStyle)(o,"display","none")):((0,a.setStyle)(n,"display","none"),(0,a.setStyle)(o,"display","inline-flex"))})},click:function(){o()?i():s()}}),{name:"lock",get state(){return o()},set state(value){value?s():i()}}}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],iSnmg:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){return e.on("control",function(t){t?(0,a.removeClass)(e.template.$player,"art-mini-progress-bar"):(0,a.addClass)(e.template.$player,"art-mini-progress-bar")}),{name:"mini-progress-bar"}}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"4ARoj":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return x});var a=e("@swc/helpers/cjs/_async_to_generator.cjs"),s=e("@swc/helpers/cjs/_call_super.cjs"),i=e("@swc/helpers/cjs/_class_call_check.cjs"),c=e("@swc/helpers/cjs/_create_class.cjs"),l=e("@swc/helpers/cjs/_inherits.cjs"),u=e("@swc/helpers/cjs/_to_consumable_array.cjs"),p=e("@swc/helpers/cjs/_ts_generator.cjs"),f=e("../utils"),d=e("../utils/component"),h=o.interopDefault(d),m=e("./aspectRatio"),v=o.interopDefault(m),g=e("./flip"),y=o.interopDefault(g),b=e("./playbackRate"),j=o.interopDefault(b),w=e("./subtitleOffset"),_=o.interopDefault(w),x=function(e){"use strict";function t(e){(0,i._)(this,t);var r=(0,s._)(this,t,[e]),n=e.option,o=e.controls,a=e.template.$setting;return r.name="setting",r.$parent=a,r.id=0,r.active=null,r.cache=new Map,r.option=(0,u._)(r.builtin).concat((0,u._)(n.settings)),n.setting&&(r.format(),r.render(),e.on("blur",function(){r.show&&(r.show=!1,r.render())}),e.on("focus",function(e){var t=(0,f.includeFromEvent)(e,o.setting),n=(0,f.includeFromEvent)(e,r.$parent);!r.show||t||n||(r.show=!1,r.render())}),e.on("resize",function(){return r.resize()})),r}return(0,l._)(t,e),(0,c._)(t,[{key:"builtin",get:function(){var e=[],t=this.art.option;return t.playbackRate&&e.push((0,j.default)(this.art)),t.aspectRatio&&e.push((0,v.default)(this.art)),t.flip&&e.push((0,y.default)(this.art)),t.subtitleOffset&&e.push((0,_.default)(this.art)),e}},{key:"traverse",value:function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.option,r=0;r0&&void 0!==arguments[0]?arguments[0]:this.option,r=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],a=0;a0&&void 0!==arguments[0]?arguments[0]:"",t=null;return this.traverse(function(r){r.name===e&&(t=r)}),t}},{key:"resize",value:function(){var e=this.art,t=e.controls,r=e.constructor,n=r.SETTING_WIDTH,o=r.SETTING_ITEM_HEIGHT,a=e.template,s=a.$player,i=a.$setting;if(t.setting&&this.show){var c,l,u=(null==(l=this.active[0])||null==(c=l.$parent)?void 0:c.width)||n,p=(0,f.getRect)(t.setting),d=p.left,h=p.width,m=(0,f.getRect)(s),v=m.left,g=m.width,y=d-v+h/2-u/2,b=this.active===this.option?this.active.length*o:(this.active.length+1)*o;if((0,f.setStyle)(i,"height","".concat(b,"px")),(0,f.setStyle)(i,"width","".concat(u,"px")),this.art.isRotate||f.isMobile)return;y+u>g?((0,f.setStyle)(i,"left",null),(0,f.setStyle)(i,"right",null)):((0,f.setStyle)(i,"left","".concat(y,"px")),(0,f.setStyle)(i,"right","auto"))}}},{key:"inactivate",value:function(e){for(var t=0;t1&&void 0!==arguments[1]?arguments[1]:this.option;return t.push(e),this.format(),this.createItem(e),this.render(),e}},{key:"createHeader",value:function(e){var t=this;if(this.cache.has(e.$option)){var r=this.cache.get(e.$option),n=this.art,o=n.proxy,a=n.icons.arrowLeft,s=n.constructor.SETTING_ITEM_HEIGHT,i=(0,f.createElement)("div");(0,f.setStyle)(i,"height","".concat(s,"px")),(0,f.addClass)(i,"art-setting-item"),(0,f.addClass)(i,"art-setting-item-back");var c=(0,f.append)(i,'
'),l=(0,f.createElement)("div");(0,f.addClass)(l,"art-setting-item-left-icon"),(0,f.append)(l,a),(0,f.append)(c,l),(0,f.append)(c,e.$parent.html);var u=o(i,"click",function(){return t.render(e.$parents)});e.$parent.$events.push(u),(0,f.append)(r,i)}}},{key:"createItem",value:function(e){var t,r,n=this,o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.cache.has(e.$option)){var s=this.cache.get(e.$option),i=e.$item,c="selector";(0,f.has)(e,"switch")&&(c="switch"),(0,f.has)(e,"range")&&(c="range"),(0,f.has)(e,"onClick")&&(c="button");var l=this.art,d=l.icons,h=l.proxy,m=l.constructor,v=(0,f.createElement)("div");(0,f.addClass)(v,"art-setting-item"),(0,f.setStyle)(v,"height","".concat(m.SETTING_ITEM_HEIGHT,"px")),v.dataset.name=e.name||"",v.dataset.value=e.value||"";var g=(0,f.append)(v,'
'),y=(0,f.append)(v,'
'),b=(0,f.createElement)("div");switch((0,f.addClass)(b,"art-setting-item-left-icon"),c){case"button":case"switch":case"range":(0,f.append)(b,e.icon||d.config);break;case"selector":(null==(t=e.selector)?void 0:t.length)?(0,f.append)(b,e.icon||d.config):(0,f.append)(b,d.check)}(0,f.append)(g,b),(0,f.def)(e,"$icon",{configurable:!0,get:function(){return b}}),(0,f.def)(e,"icon",{configurable:!0,get:function(){return b.innerHTML},set:function(e){b.innerHTML="",(0,f.append)(b,e)}});var j=(0,f.createElement)("div");(0,f.addClass)(j,"art-setting-item-left-text"),(0,f.append)(j,e.html||""),(0,f.append)(g,j),(0,f.def)(e,"$html",{configurable:!0,get:function(){return j}}),(0,f.def)(e,"html",{configurable:!0,get:function(){return j.innerHTML},set:function(e){j.innerHTML="",(0,f.append)(j,e)}});var w=(0,f.createElement)("div");switch((0,f.addClass)(w,"art-setting-item-right-tooltip"),(0,f.append)(w,e.tooltip||""),(0,f.append)(y,w),(0,f.def)(e,"$tooltip",{configurable:!0,get:function(){return w}}),(0,f.def)(e,"tooltip",{configurable:!0,get:function(){return w.innerHTML},set:function(e){w.innerHTML="",(0,f.append)(w,e)}}),c){case"switch":var _=(0,f.createElement)("div");(0,f.addClass)(_,"art-setting-item-right-icon");var x=(0,f.append)(_,d.switchOn),k=(0,f.append)(_,d.switchOff);(0,f.setStyle)(e.switch?k:x,"display","none"),(0,f.append)(y,_),(0,f.def)(e,"$switch",{configurable:!0,get:function(){return _}});var M=e.switch;(0,f.def)(e,"switch",{configurable:!0,get:function(){return M},set:function(e){M=e,e?((0,f.setStyle)(k,"display","none"),(0,f.setStyle)(x,"display",null)):((0,f.setStyle)(k,"display",null),(0,f.setStyle)(x,"display","none"))}});break;case"range":var S=(0,f.createElement)("div");(0,f.addClass)(S,"art-setting-item-right-icon");var E=(0,f.append)(S,'');E.value=e.range[0],E.min=e.range[1],E.max=e.range[2],E.step=e.range[3],(0,f.addClass)(E,"art-setting-range"),(0,f.append)(y,S),(0,f.def)(e,"$range",{configurable:!0,get:function(){return E}});var I=(0,u._)(e.range);(0,f.def)(e,"range",{configurable:!0,get:function(){return I},set:function(e){I=(0,u._)(e),E.value=e[0],E.min=e[1],E.max=e[2],E.step=e[3]}});break;case"selector":if(null==(r=e.selector)?void 0:r.length){var T=(0,f.createElement)("div");(0,f.addClass)(T,"art-setting-item-right-icon"),(0,f.append)(T,d.arrowRight),(0,f.append)(y,T)}}switch(c){case"switch":if(e.onSwitch){var L=h(v,"click",function(t){return(0,a._)(function(){return(0,p._)(this,function(r){switch(r.label){case 0:return[4,e.onSwitch.call(this.art,e,v,t)];case 1:return e.switch=r.sent(),[2]}})}).call(n)});e.$events.push(L)}break;case"range":if(e.$range){if(e.onRange){var C=h(e.$range,"change",function(t){return(0,a._)(function(){return(0,p._)(this,function(r){switch(r.label){case 0:return e.range[0]=e.$range.valueAsNumber,[4,e.onRange.call(this.art,e,v,t)];case 1:return e.tooltip=r.sent(),[2]}})}).call(n)});e.$events.push(C)}if(e.onChange){var O=h(e.$range,"input",function(t){return(0,a._)(function(){return(0,p._)(this,function(r){switch(r.label){case 0:return e.range[0]=e.$range.valueAsNumber,[4,e.onChange.call(this.art,e,v,t)];case 1:return e.tooltip=r.sent(),[2]}})}).call(n)});e.$events.push(O)}}break;case"selector":var F=h(v,"click",function(t){return(0,a._)(function(){var r,n;return(0,p._)(this,function(o){switch(o.label){case 0:if(!(null==(r=e.selector)?void 0:r.length))return[3,1];return this.render(e.selector),[3,3];case 1:if(this.check(e),!e.$parent.onSelect)return[3,3];return n=e.$parent,[4,e.$parent.onSelect.call(this.art,e,v,t)];case 2:n.tooltip=o.sent(),o.label=3;case 3:return[2]}})}).call(n)});e.$events.push(F),e.default&&(0,f.addClass)(v,"art-current");break;case"button":if(e.onClick){var D=h(v,"click",function(t){return(0,a._)(function(){return(0,p._)(this,function(r){switch(r.label){case 0:return[4,e.onClick.call(this.art,e,v,t)];case 1:return e.tooltip=r.sent(),[2]}})}).call(n)});e.$events.push(D)}}(0,f.def)(e,"$item",{configurable:!0,get:function(){return v}}),o?(0,f.replaceElement)(v,i):(0,f.append)(s,v),e.mounted&&setTimeout(function(){return e.mounted.call(n.art,e.$item,e)},0)}}},{key:"render",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.option;if(this.active=e,this.cache.has(e)){var t=this.cache.get(e);(0,f.inverseClass)(t,"art-current")}else{var r,n=(0,f.createElement)("div");this.cache.set(e,n),(0,f.addClass)(n,"art-setting-panel"),(0,f.append)(this.$parent,n),(0,f.inverseClass)(n,"art-current"),(null==(r=e[0])?void 0:r.$parent)&&this.createHeader(e[0]);for(var o=0;o\n ').concat(t.escape?(0,y.escape)(e):e,"\n")}).join("")}).join(""),this.art.emit("subtitleAfterUpdate",this.activeCues))}},{key:"switch",value:function(e){return(0,a._)(function(e){var t,r,n,o,a,s,i,c=arguments;return(0,d._)(this,function(l){switch(l.label){case 0:return t=c.length>1&&void 0!==c[1]?c[1]:{},n=(r=this.art).i18n,o=r.notice,a=r.option,s=(0,p._)((0,u._)({},a.subtitle,t),{url:e}),[4,this.init(s)];case 1:return i=l.sent(),t.name&&(o.show="".concat(n.get("Switch Subtitle"),": ").concat(t.name)),[2,i]}})}).apply(this,arguments)}},{key:"createTrack",value:function(e,t){var r=this,n=this.art,o=n.template,a=n.proxy,s=n.option,i=o.$video,c=o.$track,l=(0,y.createElement)("track");l.default=!0,l.kind=e,l.src=t,l.label=s.subtitle.name||"Artplayer",l.track.mode="hidden",l.onload=function(){r.art.emit("subtitleLoad",r.cues,r.option)},this.art.events.remove(this.destroyEvent),c.onload=null,(0,y.remove)(c),(0,y.append)(i,l),o.$track=l,this.destroyEvent=a(this.textTrack,"cuechange",function(){return r.update()})}},{key:"init",value:function(e){return(0,a._)(function(){var t,r,n,o;return(0,d._)(this,function(a){return(t=this,n=(r=this.art).notice,o=r.template.$subtitle,this.textTrack)?((0,m.default)(e,g.default.subtitle),e.url)?(this.option=e,this.style(e.style),[2,fetch(e.url).then(function(e){return e.arrayBuffer()}).then(function(t){var r=new TextDecoder(e.encoding).decode(t);switch(e.type||(0,y.getExt)(e.url)){case"srt":var n=(0,y.srtToVtt)(r),o=e.onVttLoad(n);return(0,y.vttToBlob)(o);case"ass":var a=(0,y.assToVtt)(r),s=e.onVttLoad(a);return(0,y.vttToBlob)(s);case"vtt":var i=e.onVttLoad(r);return(0,y.vttToBlob)(i);default:return e.url}}).then(function(e){return o.innerHTML="",t.url===e||(URL.revokeObjectURL(t.url),t.createTrack("metadata",e)),e}).catch(function(e){throw o.innerHTML="",n.show=e,e})]):[2]:[2,null]})}).call(this)}}]),t}(o.interopDefault(b).default)},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_call_super.cjs":"clpdF","@swc/helpers/cjs/_class_call_check.cjs":"4Uf9M","@swc/helpers/cjs/_create_class.cjs":"igUuK","@swc/helpers/cjs/_inherits.cjs":"jtSwf","@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","@swc/helpers/cjs/_type_of.cjs":"iXhRw","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","option-validator":"8zKz5","./scheme":"3Srhh","./utils":"hQMLb","./utils/component":"hXsfe","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],jkHHJ:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return l});var a=e("@swc/helpers/cjs/_class_call_check.cjs"),s=e("@swc/helpers/cjs/_create_class.cjs"),i=e("../package.json"),c=e("./utils"),l=function(){"use strict";function e(t){var r=this;(0,a._)(this,e),this.art=t;var n=t.option,o=t.constructor;n.container instanceof Element?this.$container=n.container:(this.$container=(0,c.query)(n.container),(0,c.errorHandle)(this.$container,"No container element found by ".concat(n.container))),(0,c.errorHandle)((0,c.supportsFlex)(),"The current browser does not support flex layout");var s=this.$container.tagName.toLowerCase();(0,c.errorHandle)("div"===s,"Unsupported container element type, only support 'div' but got '".concat(s,"'")),(0,c.errorHandle)(o.instances.every(function(e){return e.template.$container!==r.$container}),"Cannot mount multiple instances on the same dom element"),this.query=this.query.bind(this),this.$container.dataset.artId=t.id,this.init()}return(0,s._)(e,[{key:"query",value:function(e){return(0,c.query)(e,this.$container)}},{key:"init",value:function(){var t=this.art.option;if(t.useSSR||(this.$container.innerHTML=e.html),this.$player=this.query(".art-video-player"),this.$video=this.query(".art-video"),this.$track=this.query("track"),this.$poster=this.query(".art-poster"),this.$subtitle=this.query(".art-subtitle"),this.$danmuku=this.query(".art-danmuku"),this.$bottom=this.query(".art-bottom"),this.$progress=this.query(".art-progress"),this.$controls=this.query(".art-controls"),this.$controlsLeft=this.query(".art-controls-left"),this.$controlsCenter=this.query(".art-controls-center"),this.$controlsRight=this.query(".art-controls-right"),this.$layer=this.query(".art-layers"),this.$loading=this.query(".art-loading"),this.$notice=this.query(".art-notice"),this.$noticeInner=this.query(".art-notice-inner"),this.$mask=this.query(".art-mask"),this.$state=this.query(".art-state"),this.$setting=this.query(".art-settings"),this.$info=this.query(".art-info"),this.$infoPanel=this.query(".art-info-panel"),this.$infoClose=this.query(".art-info-close"),this.$contextmenu=this.query(".art-contextmenus"),t.proxy){var r=t.proxy.call(this.art,this.art);(0,c.errorHandle)(r instanceof HTMLVideoElement||r instanceof HTMLCanvasElement,"Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'"),(0,c.replaceElement)(r,this.$video),r.className="art-video",this.$video=r}t.backdrop&&(0,c.addClass)(this.$player,"art-backdrop"),c.isMobile&&(0,c.addClass)(this.$player,"art-mobile")}},{key:"destroy",value:function(e){this.$video.src="",e?this.$container.innerHTML="":(0,c.addClass)(this.$player,"art-destroy")}}],[{key:"html",get:function(){return'\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Player version:
\n
'.concat(i.version,'
\n
\n
\n
Video url:
\n
\n
\n
\n
Video volume:
\n
\n
\n
\n
Video time:
\n
\n
\n
\n
Video duration:
\n
\n
\n
\n
Video resolution:
\n
\nx\n
\n
\n
\n
[x]
\n
\n
\n
\n ')}}]),e}()},{"@swc/helpers/cjs/_class_call_check.cjs":"4Uf9M","@swc/helpers/cjs/_create_class.cjs":"igUuK","../package.json":"2Jf7W","./utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],ikoiH:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return i});var a=e("@swc/helpers/cjs/_class_call_check.cjs"),s=e("@swc/helpers/cjs/_create_class.cjs"),i=function(){"use strict";function e(){(0,a._)(this,e)}return(0,s._)(e,[{key:"on",value:function(e,t,r){var n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:r}),this}},{key:"once",value:function(e,t,r){var n=this;function o(){for(var a=arguments.length,s=Array(a),i=0;i1?t-1:0),n=1;n").concat(e))};i("Version@".concat(t.version));for(var c=0;c0)||void 0===arguments[0]||arguments[0];this.events.destroy(),this.template.destroy(e),er.splice(er.indexOf(this),1),this.isDestroy=!0,this.emit("destroy")}}],[{key:"instances",get:function(){return er}},{key:"version",get:function(){return d.version}},{key:"config",get:function(){return m.default}},{key:"utils",get:function(){return K}},{key:"scheme",get:function(){return V.default}},{key:"Emitter",get:function(){return ee.default}},{key:"validator",get:function(){return f.default}},{key:"kindOf",get:function(){return f.default.kindOf}},{key:"html",get:function(){return Z.default.html}},{key:"option",get:function(){var e;return{id:"",container:"#artplayer",url:"",poster:"",type:"",theme:"#f00",volume:.7,isLive:!1,muted:!1,autoplay:!1,autoSize:!1,autoMini:!1,loop:!1,flip:!1,playbackRate:!1,aspectRatio:!1,screenshot:!1,setting:!1,hotkey:!0,pip:!1,mutex:!0,backdrop:!0,fullscreen:!1,fullscreenWeb:!1,subtitleOffset:!1,miniProgressBar:!1,useSSR:!1,playsInline:!0,lock:!1,gesture:!0,fastForward:!1,autoPlayback:!1,autoOrientation:!1,airplay:!1,proxy:void 0,layers:[],contextmenu:[],controls:[],settings:[],quality:[],highlight:[],plugins:[],thumbnails:{url:"",number:60,column:10,width:0,height:0,scale:1},subtitle:{url:"",type:"",style:{},name:"",escape:!0,encoding:"utf-8",onVttLoad:function(e){return e}},moreVideoAttr:{controls:!1,preload:K.isSafari?"auto":"metadata"},i18n:{},icons:{},cssVar:{},customType:{},lang:null==(e=navigator)?void 0:e.language.toLowerCase()}}}]),t}(ee.default);en.STYLE=u.default,en.DEBUG=!1,en.CONTEXTMENU=!0,en.NOTICE_TIME=2e3,en.SETTING_WIDTH=250,en.SETTING_ITEM_WIDTH=200,en.SETTING_ITEM_HEIGHT=35,en.RESIZE_TIME=200,en.SCROLL_TIME=200,en.SCROLL_GAP=50,en.AUTO_PLAYBACK_MAX=10,en.AUTO_PLAYBACK_MIN=5,en.AUTO_PLAYBACK_TIMEOUT=3e3,en.RECONNECT_TIME_MAX=5,en.RECONNECT_SLEEP_TIME=1e3,en.CONTROL_HIDE_TIME=3e3,en.DBCLICK_TIME=300,en.DBCLICK_FULLSCREEN=!0,en.MOBILE_DBCLICK_PLAY=!0,en.MOBILE_CLICK_PLAY=!1,en.AUTO_ORIENTATION_TIME=200,en.INFO_LOOP_TIME=1e3,en.FAST_FORWARD_VALUE=3,en.FAST_FORWARD_TIME=1e3,en.TOUCH_MOVE_RATIO=.5,en.VOLUME_STEP=.1,en.SEEK_STEP=5,en.PLAYBACK_RATE=[.5,.75,1,1.25,1.5,2],en.ASPECT_RATIO=["default","4:3","16:9"],en.FLIP=["normal","horizontal","vertical"],en.FULLSCREEN_WEB_IN_BODY=!1,en.LOG_VERSION=!0,en.USE_RAF=!1,K.isBrowser&&(window.Artplayer=en,K.setStyleText("artplayer-style",u.default),setTimeout(function(){en.LOG_VERSION&&console.log("%c ArtPlayer %c ".concat(en.version," %c https://artplayer.org"),"color: #fff; background: #5f5f5f","color: #fff; background: #4bc729","")},100))},{"@swc/helpers/cjs/_call_super.cjs":"clpdF","@swc/helpers/cjs/_class_call_check.cjs":"4Uf9M","@swc/helpers/cjs/_create_class.cjs":"igUuK","@swc/helpers/cjs/_inherits.cjs":"jtSwf","bundle-text:./style/index.less":"A7TwB","option-validator":"8zKz5","../package.json":"2Jf7W","./config":"3vlyb","./contextmenu":"46D5s","./control":"9MunV","./events":"kSrJ9","./hotkey":"fSjZi","./i18n":"5q3H4","./icons":"lkjMg","./info":"9sVMb","./layer":"dsBH4","./loading":"hLYDH","./mask":"5YaCM","./notice":"6kSNS","./player":"gJ9uy","./plugins":"83Crr","./scheme":"3Srhh","./setting":"4ARoj","./storage":"a5A5h","./subtitle":"kEcFl","./template":"jkHHJ","./utils":"hQMLb","./utils/emitter":"ikoiH","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],clpdF:[function(e,t,r,n){"use strict";var o=e("feddc910f69a01a6"),a=e("b644f6b72647b399"),s=e("ba991daace2b8ed9");r._=function(e,t,r){return t=o._(t),s._(e,a._()?Reflect.construct(t,r||[],o._(e).constructor):t.apply(e,r))}},{feddc910f69a01a6:"NOGHw",b644f6b72647b399:"83nDe",ba991daace2b8ed9:"hd12h"}],NOGHw:[function(e,t,r,n){"use strict";function o(e){return r._=o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},o(e)}r._=o},{}],"83nDe":[function(e,t,r,n){"use strict";function o(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(r._=o=function(){return!!e})()}r._=o},{}],hd12h:[function(e,t,r,n){"use strict";var o=e("f7151fe13994d2aa"),a=e("f18e81760bb14899");r._=function(e,t){return t&&("object"===a._(t)||"function"==typeof t)?t:o._(e)}},{f7151fe13994d2aa:"1tlYe",f18e81760bb14899:"iXhRw"}],"1tlYe":[function(e,t,r,n){"use strict";r._=function(e){if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}},{}],iXhRw:[function(e,t,r,n){"use strict";r._=function(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}},{}],"4Uf9M":[function(e,t,r,n){"use strict";r._=function(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}},{}],igUuK:[function(e,t,r,n){"use strict";function o(e,t){for(var r=0;r","license":"MIT","homepage":"https://artplayer.org","repository":{"type":"git","url":"git+https://github.com/zhw2590582/ArtPlayer.git"},"bugs":{"url":"https://github.com/zhw2590582/ArtPlayer/issues"},"keywords":["html5","video","player"],"main":"dist/artplayer.js","legacy":"dist/artplayer.legacy.js","types":"types/artplayer.d.ts","browserslist":"last 1 Chrome version","dependencies":{"option-validator":"^2.0.6"}}')},{}],"3vlyb":[function(e,t,r,n){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r),r.default={properties:["audioTracks","autoplay","buffered","controller","controls","crossOrigin","currentSrc","currentTime","defaultMuted","defaultPlaybackRate","duration","ended","error","loop","mediaGroup","muted","networkState","paused","playbackRate","played","preload","readyState","seekable","seeking","src","startDate","textTracks","videoTracks","volume"],methods:["addTextTrack","canPlayType","load","play","pause"],events:["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"],prototypes:["width","height","videoWidth","videoHeight","poster","webkitDecodedFrameCount","webkitDroppedFrameCount","playsInline","webkitSupportsFullscreen","webkitDisplayingFullscreen","onenterpictureinpicture","onleavepictureinpicture","disablePictureInPicture","cancelVideoFrameCallback","requestVideoFrameCallback","getVideoPlaybackQuality","requestPictureInPicture","webkitEnterFullScreen","webkitEnterFullscreen","webkitExitFullScreen","webkitExitFullscreen"]}},{"@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],qpMMf:[function(e,t,r,n){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}],"46D5s":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return k});var a=e("@swc/helpers/cjs/_call_super.cjs"),s=e("@swc/helpers/cjs/_class_call_check.cjs"),i=e("@swc/helpers/cjs/_create_class.cjs"),c=e("@swc/helpers/cjs/_inherits.cjs"),l=e("../utils"),u=e("../utils/component"),p=o.interopDefault(u),f=e("./aspectRatio"),d=o.interopDefault(f),h=e("./close"),m=o.interopDefault(h),v=e("./flip"),g=o.interopDefault(v),y=e("./info"),b=o.interopDefault(y),j=e("./playbackRate"),w=o.interopDefault(j),_=e("./version"),x=o.interopDefault(_),k=function(e){"use strict";function t(e){var r;return(0,s._)(this,t),(r=(0,a._)(this,t,[e])).name="contextmenu",r.$parent=e.template.$contextmenu,l.isMobile||r.init(),r}return(0,c._)(t,e),(0,i._)(t,[{key:"init",value:function(){var e=this,t=this.art,r=t.option,n=t.proxy,o=t.template,a=o.$player,s=o.$contextmenu;r.playbackRate&&this.add((0,w.default)({name:"playbackRate",index:10})),r.aspectRatio&&this.add((0,d.default)({name:"aspectRatio",index:20})),r.flip&&this.add((0,g.default)({name:"flip",index:30})),this.add((0,b.default)({name:"info",index:40})),this.add((0,x.default)({name:"version",index:50})),this.add((0,m.default)({name:"close",index:60}));for(var i=0;iu+c&&(m=c-h),n+d>p+i&&(v=i-d),(0,l.setStyles)(s,{top:"".concat(v,"px"),left:"".concat(m,"px")})}}),n(a,"click",function(t){(0,l.includeFromEvent)(t,s)||(e.show=!1)}),this.art.on("blur",function(){e.show=!1})}}]),t}(p.default)},{"@swc/helpers/cjs/_call_super.cjs":"clpdF","@swc/helpers/cjs/_class_call_check.cjs":"4Uf9M","@swc/helpers/cjs/_create_class.cjs":"igUuK","@swc/helpers/cjs/_inherits.cjs":"jtSwf","../utils":"hQMLb","../utils/component":"hXsfe","./aspectRatio":"dCCaf","./close":"j6SRT","./flip":"cyTC8","./info":"cU7aj","./playbackRate":"01vHs","./version":"64r3r","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],hQMLb:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var a=e("./compatibility");o.exportAll(a,r);var s=e("./dom");o.exportAll(s,r);var i=e("./error");o.exportAll(i,r);var c=e("./file");o.exportAll(c,r);var l=e("./format");o.exportAll(l,r);var u=e("./property");o.exportAll(u,r);var p=e("./subtitle");o.exportAll(p,r);var f=e("./time");o.exportAll(f,r)},{"./compatibility":"iDd6B","./dom":"7V5Cu","./error":"2cjgc","./file":"8XY4p","./format":"lHh8q","./property":"iccpW","./subtitle":"ctswB","./time":"8KDy9","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],iDd6B:[function(e,t,r,n){var o,a,s=e("@parcel/transformer-js/src/esmodule-helpers.js");s.defineInteropFlag(r),s.export(r,"userAgent",function(){return i}),s.export(r,"isSafari",function(){return c}),s.export(r,"isIOS",function(){return l}),s.export(r,"isIOS13",function(){return u}),s.export(r,"isMobile",function(){return p}),s.export(r,"isBrowser",function(){return f});var i=null!=(a=null==(o=globalThis)?void 0:o.CUSTOM_USER_AGENT)?a:"undefined"!=typeof navigator?navigator.userAgent:"",c=/^(?:(?!chrome|android).)*safari/i.test(i),l=/iPad|iPhone|iPod/i.test(i)&&!window.MSStream,u=l||i.includes("Macintosh")&&navigator.maxTouchPoints>=1,p=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(i)||u,f="undefined"!=typeof window&&"undefined"!=typeof document},{"@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"7V5Cu":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"query",function(){return s}),o.export(r,"queryAll",function(){return i}),o.export(r,"addClass",function(){return c}),o.export(r,"removeClass",function(){return l}),o.export(r,"hasClass",function(){return u}),o.export(r,"append",function(){return p}),o.export(r,"remove",function(){return f}),o.export(r,"setStyle",function(){return d}),o.export(r,"setStyles",function(){return h}),o.export(r,"getStyle",function(){return m}),o.export(r,"siblings",function(){return v}),o.export(r,"inverseClass",function(){return g}),o.export(r,"tooltip",function(){return y}),o.export(r,"isInViewport",function(){return b}),o.export(r,"includeFromEvent",function(){return j}),o.export(r,"replaceElement",function(){return w}),o.export(r,"createElement",function(){return _}),o.export(r,"getIcon",function(){return x}),o.export(r,"setStyleText",function(){return k}),o.export(r,"supportsFlex",function(){return M}),o.export(r,"getRect",function(){return S}),o.export(r,"loadImg",function(){return E}),o.export(r,"getComposedPath",function(){return I});var a=e("./compatibility");function s(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;return t.querySelector(e)}function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;return Array.from(t.querySelectorAll(e))}function c(e,t){return e.classList.add(t)}function l(e,t){return e.classList.remove(t)}function u(e,t){return e.classList.contains(t)}function p(e,t){return t instanceof Element?e.appendChild(t):e.insertAdjacentHTML("beforeend",String(t)),e.lastElementChild||e.lastChild}function f(e){return e.parentNode.removeChild(e)}function d(e,t,r){return e.style[t]=r,e}function h(e,t){for(var r in t)d(e,r,t[r]);return e}function m(e,t){var r=!(arguments.length>2)||void 0===arguments[2]||arguments[2],n=window.getComputedStyle(e,null).getPropertyValue(t);return r?Number.parseFloat(n):n}function v(e){return Array.from(e.parentElement.children).filter(function(t){return t!==e})}function g(e,t){v(e).forEach(function(e){return l(e,t)}),c(e,t)}function y(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"top";a.isMobile||(e.setAttribute("aria-label",t),c(e,"hint--rounded"),c(e,"hint--".concat(r)))}function b(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=e.getBoundingClientRect(),n=window.innerHeight||document.documentElement.clientHeight,o=window.innerWidth||document.documentElement.clientWidth,a=r.top-t<=n&&r.top+r.height+t>=0,s=r.left-t<=o+t&&r.left+r.width+t>=0;return a&&s}function j(e,t){return I(e).includes(t)}function w(e,t){return t.parentNode.replaceChild(e,t),e}function _(e){return document.createElement(e)}function x(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=_("i");return c(r,"art-icon"),c(r,"art-icon-".concat(e)),p(r,t),r}function k(e,t){var r=document.getElementById(e);r||((r=document.createElement("style")).id=e,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",function(){document.head.appendChild(r)}):(document.head||document.documentElement).appendChild(r)),r.textContent=t}function M(){var e=document.createElement("div");return e.style.display="flex","flex"===e.style.display}function S(e){return e.getBoundingClientRect()}function E(e,t){return new Promise(function(r,n){var o=new Image;o.onload=function(){if(t&&1!==t){var a=document.createElement("canvas"),s=a.getContext("2d");a.width=o.width*t,a.height=o.height*t,s.drawImage(o,0,0,a.width,a.height),a.toBlob(function(t){var o=URL.createObjectURL(t),a=new Image;a.onload=function(){r(a)},a.onerror=function(){URL.revokeObjectURL(o),n(Error("Image load failed: ".concat(e)))},a.src=o})}else r(o)},o.onerror=function(){n(Error("Image load failed: ".concat(e)))},o.src=e})}function I(e){if(e.composedPath)return e.composedPath();for(var t=[],r=e.target;r;)t.push(r),r=r.parentNode;return t.includes(window)||void 0===window||t.push(window),t}},{"./compatibility":"iDd6B","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"2cjgc":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"ArtPlayerError",function(){return c}),o.export(r,"errorHandle",function(){return l});var a=e("@swc/helpers/cjs/_call_super.cjs"),s=e("@swc/helpers/cjs/_class_call_check.cjs"),i=e("@swc/helpers/cjs/_inherits.cjs"),c=function(e){"use strict";function t(e,r){var n;return(0,s._)(this,t),n=(0,a._)(this,t,[e]),"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(n,r||n.constructor),n.name="ArtPlayerError",n}return(0,i._)(t,e),t}((0,e("@swc/helpers/cjs/_wrap_native_super.cjs")._)(Error));function l(e,t){if(!e)throw new c(t);return e}},{"@swc/helpers/cjs/_call_super.cjs":"clpdF","@swc/helpers/cjs/_class_call_check.cjs":"4Uf9M","@swc/helpers/cjs/_inherits.cjs":"jtSwf","@swc/helpers/cjs/_wrap_native_super.cjs":"j8pRR","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],j8pRR:[function(e,t,r,n){"use strict";var o=e("c8857d56f4968279"),a=e("2ed7bdf1701f2d07"),s=e("5c5ad8846076b9cd"),i=e("2db6fa09e8a5be4c");function c(e){var t="function"==typeof Map?new Map:void 0;return r._=c=function(e){if(null===e||!s._(e))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return o._(e,arguments,a._(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),i._(r,e)},c(e)}r._=c},{c8857d56f4968279:"bC52X","2ed7bdf1701f2d07":"NOGHw","5c5ad8846076b9cd":"1mpbk","2db6fa09e8a5be4c":"7ubVA"}],bC52X:[function(e,t,r,n){"use strict";var o=e("62fc231ae2e75266"),a=e("3f98bf9d4f706151");function s(e,t,n){return o._()?r._=s=Reflect.construct:r._=s=function(e,t,r){var n=[null];n.push.apply(n,t);var o=new(Function.bind.apply(e,n));return r&&a._(o,r.prototype),o},s.apply(null,arguments)}r._=s},{"62fc231ae2e75266":"83nDe","3f98bf9d4f706151":"7ubVA"}],"1mpbk":[function(e,t,r,n){"use strict";r._=function(e){return -1!==Function.toString.call(e).indexOf("[native code]")}},{}],"8XY4p":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function a(e,t){var r=document.createElement("a");r.style.display="none",r.href=e,r.download=t,document.body.appendChild(r),r.click(),document.body.removeChild(r)}o.defineInteropFlag(r),o.export(r,"getExt",function(){return function e(t){return t.includes("?")?e(t.split("?")[0]):t.includes("#")?e(t.split("#")[0]):t.trim().toLowerCase().split(".").pop()}}),o.export(r,"download",function(){return a})},{"@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],lHh8q:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function a(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function s(e){return e.charAt(0).toUpperCase()+e.slice(1)}function i(e){if(!e)return"00:00";var t=Math.floor(e/3600),r=Math.floor((e-3600*t)/60),n=Math.floor(e-3600*t-60*r);return(t>0?[t,r,n]:[r,n]).map(function(e){return e<10?"0".concat(e):String(e)}).join(":")}function c(e){return e.replace(/[&<>'"]/g,function(e){return({"&":"&","<":"<",">":">","'":"'",'"':"""})[e]||e})}function l(e){var t={"&":"&","<":"<",">":">","'":"'",""":'"'},r=RegExp("(".concat(Object.keys(t).join("|"),")"),"g");return e.replace(r,function(e){return t[e]||e})}o.defineInteropFlag(r),o.export(r,"clamp",function(){return a}),o.export(r,"capitalize",function(){return s}),o.export(r,"secondToTime",function(){return i}),o.export(r,"escape",function(){return c}),o.export(r,"unescape",function(){return l})},{"@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],iccpW:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"def",function(){return i}),o.export(r,"has",function(){return l}),o.export(r,"get",function(){return u}),o.export(r,"mergeDeep",function(){return function e(){for(var t=arguments.length,r=Array(t),n=0;ne.length)&&(t=e.length);for(var r=0,n=Array(t);r").replace(/\{\\([ibu])1\}/g,"<$1>").replace(/\{([ibu])\}/g,"<$1>").replace(/\{\/([ibu])\}/g,"").replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g,"$1.$2").replace(/\{[\s\S]*?\}/g,"").concat("\r\n\r\n"))}function s(e){return URL.createObjectURL(new Blob([e],{type:"text/vtt"}))}function i(e){var t=RegExp("Dialogue:\\s\\d,(\\d+:\\d\\d:\\d\\d.\\d\\d),(\\d+:\\d\\d:\\d\\d.\\d\\d),([^,]*),([^,]*),(?:[^,]*,){4}([\\s\\S]*)$","i");function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.split(/[:.]/).map(function(e,t,r){if(t===r.length-1){if(1===e.length)return".".concat(e,"00");if(2===e.length)return".".concat(e,"0")}else if(1===e.length)return(0===t?"0":":0")+e;return 0===t?e:t===r.length-1?".".concat(e):":".concat(e)}).join("")}return"WEBVTT\n"+"\n".concat(e.split(/\r?\n/).map(function(e){var n=e.match(t);return n?{start:r(n[1].trim()),end:r(n[2].trim()),text:n[5].replace(/\{[\s\S]*?\}/g,"").replace(/(\\N)/g,"\n").trim().split(/\r?\n/).map(function(e){return e.trim()}).join("\n")}:null}).filter(function(e){return e}).map(function(e,t){return e?"".concat(t+1,"\n")+"".concat(e.start," --\x3e ").concat(e.end)+"\n"+"".concat(e.text):""}).filter(function(e){return e.trim()}).join("\n\n"))}o.defineInteropFlag(r),o.export(r,"srtToVtt",function(){return a}),o.export(r,"vttToBlob",function(){return s}),o.export(r,"assToVtt",function(){return i})},{"@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"8KDy9":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function a(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise(function(t){return setTimeout(t,e)})}function s(e,t){var r;return function(){for(var n=this,o=arguments.length,a=Array(o),s=0;s=Number(a.dataset.index)});i?i.insertAdjacentElement("beforebegin",a):(0,u.append)(this.$parent,a),r.html&&(0,u.append)(a,r.html),r.style&&(0,u.setStyles)(a,r.style),r.tooltip&&(0,u.tooltip)(a,r.tooltip);var f=[];if(r.click){var d=this.art.events.proxy(a,"click",function(e){e.preventDefault(),r.click.call(t.art,t,e)});f.push(d)}return r.selector&&["left","right"].includes(r.position)&&this.selector(r,a,f),this[n]=a,this.cache.set(n,{$ref:a,events:f,option:r}),r.mounted&&r.mounted.call(this.art,a),a}}},{key:"remove",value:function(e){var t=this.cache.get(e);(0,p.errorHandle)(t,"Can't find [".concat(e,"] from the [").concat(this.name,"]")),t.option.beforeUnmount&&t.option.beforeUnmount.call(this.art,t.$ref);for(var r=0;r').concat("default"===e?r.get("Default"):e,"")}).join("");return(0,s._)((0,a._)({},e),{html:"".concat(r.get("Aspect Ratio"),": ").concat(n),click:function(e,r){var n=r.target.dataset.value;n&&(t.aspectRatio=n,e.show=!1)},mounted:function(e){var r=(0,i.query)('[data-value="default"]',e);r&&(0,i.inverseClass)(r,"art-current"),t.on("aspectRatio",function(t){var r=(0,i.queryAll)("span",e).find(function(e){return e.dataset.value===t});r&&(0,i.inverseClass)(r,"art-current")})}})}}},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],j6SRT:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return i});var a=e("@swc/helpers/cjs/_object_spread.cjs"),s=e("@swc/helpers/cjs/_object_spread_props.cjs");function i(e){return function(t){return(0,s._)((0,a._)({},e),{html:t.i18n.get("Close"),click:function(e){e.show=!1}})}}},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],cyTC8:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return c});var a=e("@swc/helpers/cjs/_object_spread.cjs"),s=e("@swc/helpers/cjs/_object_spread_props.cjs"),i=e("../utils");function c(e){return function(t){var r=t.i18n,n=t.constructor.FLIP.map(function(e){return'').concat(r.get((0,i.capitalize)(e)),"")}).join("");return(0,s._)((0,a._)({},e),{html:"".concat(r.get("Video Flip"),": ").concat(n),click:function(e,r){var n=r.target.dataset.value;n&&(t.flip=n.toLowerCase(),e.show=!1)},mounted:function(e){var r=(0,i.query)('[data-value="normal"]',e);r&&(0,i.inverseClass)(r,"art-current"),t.on("flip",function(t){var r=(0,i.queryAll)("span",e).find(function(e){return e.dataset.value===t});r&&(0,i.inverseClass)(r,"art-current")})}})}}},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],cU7aj:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return i});var a=e("@swc/helpers/cjs/_object_spread.cjs"),s=e("@swc/helpers/cjs/_object_spread_props.cjs");function i(e){return function(t){return(0,s._)((0,a._)({},e),{html:t.i18n.get("Video Info"),click:function(e){t.info.show=!0,e.show=!1}})}}},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"01vHs":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return c});var a=e("@swc/helpers/cjs/_object_spread.cjs"),s=e("@swc/helpers/cjs/_object_spread_props.cjs"),i=e("../utils");function c(e){return function(t){var r=t.i18n,n=t.constructor.PLAYBACK_RATE.map(function(e){return'').concat(1===e?r.get("Normal"):e.toFixed(1),"")}).join("");return(0,s._)((0,a._)({},e),{html:"".concat(r.get("Play Speed"),": ").concat(n),click:function(e,r){var n=r.target.dataset.value;n&&(t.playbackRate=Number(n),e.show=!1)},mounted:function(e){var r=(0,i.query)('[data-value="1"]',e);r&&(0,i.inverseClass)(r,"art-current"),t.on("video:ratechange",function(){var r=(0,i.queryAll)("span",e).find(function(e){return Number(e.dataset.value)===t.playbackRate});r&&(0,i.inverseClass)(r,"art-current")})}})}}},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"64r3r":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return function(e){return(0,s._)((0,a._)({},e),{html:'ArtPlayer '.concat(i.version,"")})}});var a=e("@swc/helpers/cjs/_object_spread.cjs"),s=e("@swc/helpers/cjs/_object_spread_props.cjs"),i=e("../../package.json")},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","../../package.json":"2Jf7W","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"9MunV":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return P});var a=e("@swc/helpers/cjs/_async_to_generator.cjs"),s=e("@swc/helpers/cjs/_call_super.cjs"),i=e("@swc/helpers/cjs/_class_call_check.cjs"),c=e("@swc/helpers/cjs/_create_class.cjs"),l=e("@swc/helpers/cjs/_get.cjs"),u=e("@swc/helpers/cjs/_get_prototype_of.cjs"),p=e("@swc/helpers/cjs/_inherits.cjs"),f=e("@swc/helpers/cjs/_ts_generator.cjs"),d=e("../utils"),h=e("../utils/component"),m=o.interopDefault(h),v=e("./airplay"),g=o.interopDefault(v),y=e("./fullscreen"),b=o.interopDefault(y),j=e("./fullscreenWeb"),w=o.interopDefault(j),_=e("./pip"),x=o.interopDefault(_),k=e("./playAndPause"),M=o.interopDefault(k),S=e("./progress"),E=o.interopDefault(S),I=e("./screenshot"),T=o.interopDefault(I),L=e("./setting"),C=o.interopDefault(L),O=e("./time"),F=o.interopDefault(O),D=e("./volume"),A=o.interopDefault(D),P=function(e){"use strict";function t(e){(0,i._)(this,t),(r=(0,s._)(this,t,[e])).isHover=!1,r.name="control",r.timer=Date.now();var r,n=e.constructor,o=r.art.template,a=o.$player,c=o.$bottom;return e.on("mousemove",function(){d.isMobile||(r.show=!0)}),e.on("click",function(){d.isMobile?r.toggle():r.show=!0}),e.on("document:mousemove",function(e){r.isHover=(0,d.includeFromEvent)(e,c)}),e.on("video:timeupdate",function(){!e.setting.show&&!r.isHover&&!e.isInput&&e.playing&&r.show&&Date.now()-r.timer>=n.CONTROL_HIDE_TIME&&(r.show=!1)}),e.on("control",function(e){e?((0,d.removeClass)(a,"art-hide-cursor"),(0,d.addClass)(a,"art-hover"),r.timer=Date.now()):((0,d.addClass)(a,"art-hide-cursor"),(0,d.removeClass)(a,"art-hover"))}),r.init(),r}return(0,p._)(t,e),(0,c._)(t,[{key:"init",value:function(){var e=this,t=this.art.option;t.isLive||this.add((0,E.default)({name:"progress",position:"top",index:10})),this.add({name:"thumbnails",position:"top",index:20}),this.add((0,M.default)({name:"playAndPause",position:"left",index:10})),this.add((0,A.default)({name:"volume",position:"left",index:20})),t.isLive||this.add((0,F.default)({name:"time",position:"left",index:30})),t.quality.length&&(0,d.sleep)().then(function(){e.art.quality=t.quality}),t.screenshot&&!d.isMobile&&this.add((0,T.default)({name:"screenshot",position:"right",index:20})),t.setting&&this.add((0,C.default)({name:"setting",position:"right",index:30})),t.pip&&this.add((0,x.default)({name:"pip",position:"right",index:40})),t.airplay&&window.WebKitPlaybackTargetAvailabilityEvent&&this.add((0,g.default)({name:"airplay",position:"right",index:50})),t.fullscreenWeb&&this.add((0,w.default)({name:"fullscreenWeb",position:"right",index:60})),t.fullscreen&&this.add((0,b.default)({name:"fullscreen",position:"right",index:70}));for(var r=0;rt.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r}function u(e,t,r,n){var o,s=arguments.length,i=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if(("undefined"==typeof Reflect?"undefined":(0,a._)(Reflect))==="object"&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var c=e.length-1;c>=0;c--)(o=e[c])&&(i=(s<3?o(i):s>3?o(t,r,i):o(t,r))||i);return s>3&&i&&Object.defineProperty(t,r,i),i}function p(e,t){return function(r,n){t(r,n,e)}}function f(e,t,r,n,o,s){function i(e){if(void 0!==e&&"function"!=typeof e)throw TypeError("Function expected");return e}for(var c,l=n.kind,u="getter"===l?"get":"setter"===l?"set":"value",p=!t&&e?n.static?e:e.prototype:null,f=t||(p?Object.getOwnPropertyDescriptor(p,n.name):{}),d=!1,h=r.length-1;h>=0;h--){var m={};for(var v in n)m[v]="access"===v?{}:n[v];for(var v in n.access)m.access[v]=n.access[v];m.addInitializer=function(e){if(d)throw TypeError("Cannot add initializers after decoration has completed");s.push(i(e||null))};var g=(0,r[h])("accessor"===l?{get:f.get,set:f.set}:f[u],m);if("accessor"===l){if(void 0===g)continue;if(null===g||(void 0===g?"undefined":(0,a._)(g))!=="object")throw TypeError("Object expected");(c=i(g.get))&&(f.get=c),(c=i(g.set))&&(f.set=c),(c=i(g.init))&&o.unshift(c)}else(c=i(g))&&("field"===l?o.unshift(c):f[u]=c)}p&&Object.defineProperty(p,n.name,f),d=!0}function d(e,t,r){for(var n=arguments.length>2,o=0;o0&&o[o.length-1])&&(6===l[0]||2===l[0])){a=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function _(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,a=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=a.next()).done;)s.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(o)throw o.error}}return s}function x(){for(var e=[],t=0;t1||i(e,t)})},t&&(n[e]=t(n[e])))}function i(e,t){try{var r;(r=o[e](t)).value instanceof S?Promise.resolve(r.value.v).then(c,l):u(a[0][2],r)}catch(e){u(a[0][3],e)}}function c(e){i("next",e)}function l(e){i("throw",e)}function u(e,t){e(t),a.shift(),a.length&&i(a[0][0],a[0][1])}}function I(e){var t,r;return t={},n("next"),n("throw",function(e){throw e}),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,o){t[n]=e[n]?function(t){return(r=!r)?{value:S(e[n](t)),done:!1}:o?o(t):t}:o}}function T(e){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=w(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise(function(n,o){var a,s,i;a=n,s=o,i=(t=e[r](t)).done,Promise.resolve(t.value).then(function(e){a({value:e,done:i})},s)})}}}function L(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var C=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},O=function(e){return(O=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)};function F(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=O(e),n=0;n\n
\n
\n
\n
\n
\n
\n\n ',mounted:function(e){var a=null,s=!1,u=(0,i.query)(".art-progress-hover",e),p=(0,i.query)(".art-progress-loaded",e),f=(0,i.query)(".art-progress-played",e),d=(0,i.query)(".art-progress-highlight",e),h=(0,i.query)(".art-progress-indicator",e),m=(0,i.query)(".art-progress-tip",e);function v(r,n){var o=n||c(t,r),a=o.width;m.textContent=o.time;var s=m.clientWidth;a<=s/2?(0,i.setStyle)(m,"left",0):a>e.clientWidth-s/2?(0,i.setStyle)(m,"left","".concat(e.clientWidth-s,"px")):(0,i.setStyle)(m,"left","".concat(a-s/2,"px"))}r.indicator?(0,i.append)(h,r.indicator):(0,i.setStyle)(h,"backgroundColor","var(--art-theme)"),t.on("setBar",function(r,n,o){var s="played"===r&&o&&i.isMobile;"loaded"===r&&(0,i.setStyle)(p,"width","".concat(100*n,"%")),"hover"===r&&(0,i.setStyle)(u,"width","".concat(100*n,"%")),"played"===r&&((0,i.setStyle)(f,"width","".concat(100*n,"%")),(0,i.setStyle)(h,"left","".concat(100*n,"%"))),s&&((0,i.setStyle)(m,"display","flex"),v(o,{width:e.clientWidth*n,time:(0,i.secondToTime)(n*t.duration)}),clearTimeout(a),a=setTimeout(function(){(0,i.setStyle)(m,"display","none")},500))}),t.on("video:loadedmetadata",function(){d.textContent="";for(var e=0;e');(0,i.append)(d,a)}}),t.constructor.USE_RAF?t.on("raf",function(){t.emit("setBar","played",t.played),t.emit("setBar","loaded",t.loaded)}):(t.on("video:timeupdate",function(){t.emit("setBar","played",t.played)}),t.on("video:progress",function(){t.emit("setBar","loaded",t.loaded)}),t.on("video:ended",function(){t.emit("setBar","played",1)})),t.emit("setBar","loaded",t.loaded||0),i.isMobile||(o(e,"click",function(e){e.target!==h&&l(t,e)}),o(e,"mousemove",function(r){var n,o,a=c(t,r).percentage;(t.emit("setBar","hover",a,r),(0,i.setStyle)(m,"display","flex"),(0,i.includeFromEvent)(r,d))?(n=c(t,r).width,m.textContent=r.target.dataset.text,n<=(o=m.clientWidth)/2?(0,i.setStyle)(m,"left",0):n>e.clientWidth-o/2?(0,i.setStyle)(m,"left","".concat(e.clientWidth-o,"px")):(0,i.setStyle)(m,"left","".concat(n-o/2,"px"))):v(r)}),o(e,"mouseleave",function(e){(0,i.setStyle)(m,"display","none"),t.emit("setBar","hover",0,e)}),o(e,"mousedown",function(e){s=0===e.button}),t.on("document:mousemove",function(e){if(s){var r=c(t,e),n=r.second,o=r.percentage;t.emit("setBar","played",o,e),t.seek=n}}),t.on("document:mouseup",function(){s&&(s=!1)}))}})}}},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"4LBtY":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return c});var a=e("@swc/helpers/cjs/_object_spread.cjs"),s=e("@swc/helpers/cjs/_object_spread_props.cjs"),i=e("../utils");function c(e){return function(t){return(0,s._)((0,a._)({},e),{tooltip:t.i18n.get("Screenshot"),mounted:function(e){var r=t.proxy,n=t.icons;(0,i.append)(e,n.screenshot),r(e,"click",function(){t.screenshot()})}})}}},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],hXIX5:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return c});var a=e("@swc/helpers/cjs/_object_spread.cjs"),s=e("@swc/helpers/cjs/_object_spread_props.cjs"),i=e("../utils");function c(e){return function(t){return(0,s._)((0,a._)({},e),{tooltip:t.i18n.get("Show Setting"),mounted:function(e){var r=t.proxy,n=t.icons,o=t.i18n;(0,i.append)(e,n.setting),r(e,"click",function(){t.setting.toggle(),t.setting.resize()}),t.on("setting",function(t){(0,i.tooltip)(e,o.get(t?"Hide Setting":"Show Setting"))})}})}}},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"7Zm5j":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return c});var a=e("@swc/helpers/cjs/_object_spread.cjs"),s=e("@swc/helpers/cjs/_object_spread_props.cjs"),i=e("../utils");function c(e){return function(t){return(0,s._)((0,a._)({},e),{style:i.isMobile?{fontSize:"12px",padding:"0 5px"}:{cursor:"auto",padding:"0 10px"},mounted:function(e){function r(){var r="".concat((0,i.secondToTime)(t.currentTime)," / ").concat((0,i.secondToTime)(t.duration));r!==e.textContent&&(e.textContent=r)}r();for(var n=["video:loadedmetadata","video:timeupdate","video:progress"],o=0;o'),c=(0,i.append)(s,'
'),l=(0,i.append)(c,'
'),u=(0,i.append)(c,'
'),p=(0,i.append)(u,'
'),f=(0,i.append)(p,'
'),d=(0,i.append)(u,'
');function h(e){var t=(0,i.getRect)(u),r=t.top,n=t.height;return 1-(e.clientY-r)/n}function m(){if(t.muted||0===t.volume)(0,i.setStyle)(o,"display","none"),(0,i.setStyle)(a,"display","flex"),(0,i.setStyle)(d,"top","100%"),(0,i.setStyle)(f,"top","100%"),l.textContent=0;else{var e=100*t.volume;(0,i.setStyle)(o,"display","flex"),(0,i.setStyle)(a,"display","none"),(0,i.setStyle)(d,"top","".concat(100-e,"%")),(0,i.setStyle)(f,"top","".concat(100-e,"%")),l.textContent=Math.floor(e)}}if(m(),t.on("video:volumechange",m),r(o,"click",function(){t.muted=!0}),r(a,"click",function(){t.muted=!1}),i.isMobile)(0,i.setStyle)(s,"display","none");else{var v=!1;r(u,"mousedown",function(e){v=0===e.button,t.volume=h(e)}),t.on("document:mousemove",function(e){v&&(t.muted=!1,t.volume=h(e))}),t.on("document:mouseup",function(){v&&(v=!1)})}}})}}},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],kSrJ9:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return x});var a=e("@swc/helpers/cjs/_class_call_check.cjs"),s=e("@swc/helpers/cjs/_create_class.cjs"),i=e("./clickInit"),c=o.interopDefault(i),l=e("./gestureInit"),u=o.interopDefault(l),p=e("./globalInit"),f=o.interopDefault(p),d=e("./hoverInit"),h=o.interopDefault(d),m=e("./moveInit"),v=o.interopDefault(m),g=e("./resizeInit"),y=o.interopDefault(g),b=e("./updateInit"),j=o.interopDefault(b),w=e("./viewInit"),_=o.interopDefault(w),x=function(){"use strict";function e(t){(0,a._)(this,e),this.destroyEvents=[],this.proxy=this.proxy.bind(this),this.hover=this.hover.bind(this),(0,c.default)(t,this),(0,h.default)(t,this),(0,v.default)(t,this),(0,y.default)(t,this),(0,u.default)(t,this),(0,_.default)(t,this),(0,f.default)(t,this),(0,j.default)(t,this)}return(0,s._)(e,[{key:"proxy",value:function(e,t,r){var n=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(Array.isArray(t))return t.map(function(t){return n.proxy(e,t,r,o)});e.addEventListener(t,r,o);var a=function(){return e.removeEventListener(t,r,o)};return this.destroyEvents.push(a),a}},{key:"hover",value:function(e,t,r){t&&this.proxy(e,"mouseenter",t),r&&this.proxy(e,"mouseleave",r)}},{key:"remove",value:function(e){var t=this.destroyEvents.indexOf(e);t>-1&&(e(),this.destroyEvents.splice(t,1))}},{key:"destroy",value:function(){for(var e=0;eMath.abs(a)&&2>Math.abs(o))return s;var i=180*Math.atan2(o,a)/Math.PI;return i>=-45&&i<45?s=4:i>=45&&i<135?s=1:i>=-135&&i<-45?s=2:(i>=135&&i<=180||i>=-180&&i<-135)&&(s=3),s}(l,u,o,a),d=[3,4].includes(f),h=[1,2].includes(f);if(d&&!e.isRotate||h&&e.isRotate){var m=(0,s.clamp)((o-l)/e.width,-1,1),v=(0,s.clamp)((a-u)/e.height,-1,1),g=e.isRotate?v:m,y=i===n?e.constructor.TOUCH_MOVE_RATIO:1,b=(0,s.clamp)(p+e.duration*g*y,0,e.duration);e.seek=b,e.emit("setBar","played",(0,s.clamp)(b/e.duration,0,1),t),e.notice.show="".concat((0,s.secondToTime)(b)," / ").concat((0,s.secondToTime)(e.duration))}}};e.option.gesture&&(t.proxy(n,"touchstart",function(e){i=n,f(e)}),t.proxy(n,"touchmove",d)),t.proxy(o,"touchstart",function(e){i=o,f(e)}),t.proxy(o,"touchmove",d),e.on("document:touchend",function(){c&&(l=0,u=0,p=0,c=!1,i=null)})}}},{"../control/progress":"lLsXv","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],hOg1v:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function a(e,t){var r=["click","mouseup","keydown","touchend","touchmove","mousemove","contextmenu","webkitfullscreenchange"],n=["resize","scroll","orientationchange"],o=[];function a(){for(var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=0;s'},{}],kX2ah:[function(e,t,r,n){t.exports=''},{}],cYqbE:[function(e,t,r,n){t.exports=''},{}],dCZ1q:[function(e,t,r,n){t.exports=''},{}],enWOR:[function(e,t,r,n){t.exports=''},{}],aEYUh:[function(e,t,r,n){t.exports=''},{}],"6sWtx":[function(e,t,r,n){t.exports=''},{}],bhixJ:[function(e,t,r,n){t.exports=''},{}],aonuB:[function(e,t,r,n){t.exports=''},{}],hbNgp:[function(e,t,r,n){t.exports=''},{}],aNXxH:[function(e,t,r,n){t.exports=''},{}],ezk36:[function(e,t,r,n){t.exports=''},{}],kPsyz:[function(e,t,r,n){t.exports=''},{}],cUJ9T:[function(e,t,r,n){t.exports=''},{}],"9MnDP":[function(e,t,r,n){t.exports=''},{}],gtJ8Q:[function(e,t,r,n){t.exports=''},{}],luvRR:[function(e,t,r,n){t.exports=''},{}],"2VikP":[function(e,t,r,n){t.exports=''},{}],"9eYwu":[function(e,t,r,n){t.exports=''},{}],"5m73X":[function(e,t,r,n){t.exports=''},{}],"2ZLsh":[function(e,t,r,n){t.exports=''},{}],fXkDR:[function(e,t,r,n){t.exports=''},{}],jcnGd:[function(e,t,r,n){t.exports=''},{}],"2QwX5":[function(e,t,r,n){t.exports=''},{}],"9oiD9":[function(e,t,r,n){t.exports=''},{}],"68oNy":[function(e,t,r,n){t.exports=''},{}],j2oAd:[function(e,t,r,n){t.exports=''},{}],"9sVMb":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return p});var a=e("@swc/helpers/cjs/_call_super.cjs"),s=e("@swc/helpers/cjs/_class_call_check.cjs"),i=e("@swc/helpers/cjs/_create_class.cjs"),c=e("@swc/helpers/cjs/_inherits.cjs"),l=e("./utils"),u=e("./utils/component"),p=function(e){"use strict";function t(e){var r;return(0,s._)(this,t),(r=(0,a._)(this,t,[e])).name="info",l.isMobile||r.init(),r}return(0,c._)(t,e),(0,i._)(t,[{key:"init",value:function(){var e=this,t=this.art,r=t.proxy,n=t.constructor,o=t.template,a=o.$infoPanel,s=o.$infoClose,i=o.$video;r(s,"click",function(){e.show=!1});var c=null,u=(0,l.queryAll)("[data-video]",a)||[];this.art.on("destroy",function(){return clearTimeout(c)}),!function e(){for(var t=0;tu?((0,a.setStyle)(o,"width","".concat(u*l,"px")),(0,a.setStyle)(o,"height","100%"),(0,a.setStyle)(o,"margin","0 auto")):((0,a.setStyle)(o,"width","100%"),(0,a.setStyle)(o,"height","".concat(c/u,"px")),(0,a.setStyle)(o,"margin","auto 0")),s.dataset.aspectRatio=n}r.show="".concat(t.get("Aspect Ratio"),": ").concat("default"===n?t.get("Default"):n),e.emit("aspectRatio",n)}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],rWA5h:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template.$video;(0,a.def)(e,"attr",{value:function(e,r){if(void 0===r)return t[e];t[e]=r}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],ekP8q:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template,r=t.$container,n=t.$video;(0,a.def)(e,"autoHeight",{value:function(){var t=r.clientWidth,o=n.videoHeight,s=t/n.videoWidth*o;(0,a.setStyle)(r,"height","".concat(s,"px")),e.emit("autoHeight",s)}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"3d2R8":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template,r=t.$container,n=t.$player,o=t.$video;(0,a.def)(e,"autoSize",{value:function(){var t=o.videoWidth,s=o.videoHeight,i=(0,a.getRect)(r),c=i.width,l=i.height,u=t/s;c/l>u?((0,a.setStyle)(n,"width","".concat(l*u/c*100,"%")),(0,a.setStyle)(n,"height","100%")):((0,a.setStyle)(n,"width","100%"),(0,a.setStyle)(n,"height","".concat(c/u/l*100,"%"))),e.emit("autoSize",{width:e.width,height:e.height})}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"2nLRH":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template.$player;(0,a.def)(e,"cssVar",{value:function(e,r){return r?t.style.setProperty(e,r):getComputedStyle(t).getPropertyValue(e)}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"3lhzv":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template.$video;(0,a.def)(e,"currentTime",{get:function(){return t.currentTime||0},set:function(r){Number.isNaN(r=Number.parseFloat(r))||(t.currentTime=(0,a.clamp)(r,0,e.duration))}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],hQmmf:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){(0,a.def)(e,"duration",{get:function(){var t=e.template.$video.duration;return t===1/0?0:t||0}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"1KU3q":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return u});var a=e("@swc/helpers/cjs/_async_to_generator.cjs"),s=e("@swc/helpers/cjs/_ts_generator.cjs"),i=e("../config"),c=o.interopDefault(i),l=e("../utils");function u(e){for(var t=e.i18n,r=e.notice,n=e.option,o=e.constructor,i=e.proxy,u=e.template,p=u.$player,f=u.$video,d=u.$poster,h=0,m=0;m0&&void 0!==arguments[0]?arguments[0]:document.documentElement,t=arguments.length>1?arguments[1]:void 0;return new Promise(function(r,n){var o=function(){c.off("change",o),r()};c.on("change",o);var a=e[s.requestFullscreen](t);a instanceof Promise&&a.then(o).catch(n)})},exit:function(){return new Promise(function(e,t){if(!c.isFullscreen)return void e();var r=function(){c.off("change",r),e()};c.on("change",r);var n=document[s.exitFullscreen]();n instanceof Promise&&n.then(r).catch(t)})},toggle:function(e,t){return c.isFullscreen?c.exit():c.request(e,t)},onchange:function(e){c.on("change",e)},onerror:function(e){c.on("error",e)},on:function(e,t){var r=i[e];r&&document.addEventListener(r,t,!1)},off:function(e,t){var r=i[e];r&&document.removeEventListener(r,t,!1)},raw:s};Object.defineProperties(c,{isFullscreen:{get:function(){return!!document[s.fullscreenElement]}},element:{enumerable:!0,get:function(){return document[s.fullscreenElement]}},isEnabled:{enumerable:!0,get:function(){return!!document[s.fullscreenEnabled]}}}),s||(c.isEnabled=!1),r.default=c},{"@swc/helpers/cjs/_sliced_to_array.cjs":"gIQTH","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],gIQTH:[function(e,t,r,n){"use strict";var o=e("d7c30a5ae0c1ab2"),a=e("3aacfce52f67defd"),s=e("f0dae09a1a08b16a"),i=e("83f3648e614d0830");r._=function(e,t){return o._(e)||a._(e,t)||i._(e,t)||s._()}},{d7c30a5ae0c1ab2:"3QSPl","3aacfce52f67defd":"5SSeo",f0dae09a1a08b16a:"heYSj","83f3648e614d0830":"fh7mx"}],"3QSPl":[function(e,t,r,n){"use strict";r._=function(e){if(Array.isArray(e))return e}},{}],"5SSeo":[function(e,t,r,n){"use strict";r._=function(e,t){var r,n,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],s=!0,i=!1;try{for(o=o.call(e);!(s=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);s=!0);}catch(e){i=!0,n=e}finally{try{s||null==o.return||o.return()}finally{if(i)throw n}}return a}}},{}],heYSj:[function(e,t,r,n){"use strict";r._=function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},{}],itVYl:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.constructor,r=e.template,n=r.$container,o=r.$player,s="";(0,a.def)(e,"fullscreenWeb",{get:function(){return(0,a.hasClass)(o,"art-fullscreen-web")},set:function(r){r?(s=o.style.cssText,t.FULLSCREEN_WEB_IN_BODY&&(0,a.append)(document.body,o),e.state="fullscreenWeb",(0,a.setStyle)(o,"width","100%"),(0,a.setStyle)(o,"height","100%"),(0,a.addClass)(o,"art-fullscreen-web"),e.emit("fullscreenWeb",!0)):(t.FULLSCREEN_WEB_IN_BODY&&(0,a.append)(n,o),s&&(o.style.cssText=s,s=""),(0,a.removeClass)(o,"art-fullscreen-web"),e.emit("fullscreenWeb",!1)),e.emit("resize")}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],dE0YW:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template.$video;(0,a.def)(e,"loaded",{get:function(){return e.loadedTime/t.duration}}),(0,a.def)(e,"loadedTime",{get:function(){return t.buffered.length?t.buffered.end(t.buffered.length-1):0}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],kwpHL:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.icons,r=e.proxy,n=e.storage,o=e.template,s=o.$player,i=o.$video,c=!1,l=0,u=0;function p(){var t=e.template.$mini;t&&((0,a.removeClass)(s,"art-mini"),(0,a.setStyle)(t,"display","none"),s.prepend(i),e.emit("mini",!1))}function f(t,r){e.playing?((0,a.setStyle)(t,"display","none"),(0,a.setStyle)(r,"display","flex")):((0,a.setStyle)(t,"display","flex"),(0,a.setStyle)(r,"display","none"))}function d(){var t=e.template.$mini,r=(0,a.getRect)(t),o=window.innerHeight-r.height-50,s=window.innerWidth-r.width-50;n.set("top",o),n.set("left",s),(0,a.setStyle)(t,"top","".concat(o,"px")),(0,a.setStyle)(t,"left","".concat(s,"px"))}(0,a.def)(e,"mini",{get:function(){return(0,a.hasClass)(s,"art-mini")},set:function(o){if(o){e.state="mini",(0,a.addClass)(s,"art-mini");var h=function(){var o=e.template.$mini;if(o)return(0,a.append)(o,i),(0,a.setStyle)(o,"display","flex");var s=(0,a.createElement)("div");(0,a.addClass)(s,"art-mini-popup"),(0,a.append)(document.body,s),e.template.$mini=s,(0,a.append)(s,i);var d=(0,a.append)(s,'
');(0,a.append)(d,t.close),r(d,"click",p);var h=(0,a.append)(s,'
'),m=(0,a.append)(h,t.play),v=(0,a.append)(h,t.pause);return r(m,"click",function(){return e.play()}),r(v,"click",function(){return e.pause()}),f(m,v),e.on("video:playing",function(){return f(m,v)}),e.on("video:pause",function(){return f(m,v)}),e.on("video:timeupdate",function(){return f(m,v)}),r(s,"mousedown",function(e){c=0===e.button,l=e.pageX,u=e.pageY}),e.on("document:mousemove",function(e){if(c){(0,a.addClass)(s,"art-mini-dragging");var t=e.pageX-l,r=e.pageY-u;(0,a.setStyle)(s,"transform","translate(".concat(t,"px, ").concat(r,"px)"))}}),e.on("document:mouseup",function(){if(c){c=!1,(0,a.removeClass)(s,"art-mini-dragging");var e=(0,a.getRect)(s);n.set("left",e.left),n.set("top",e.top),(0,a.setStyle)(s,"left","".concat(e.left,"px")),(0,a.setStyle)(s,"top","".concat(e.top,"px")),(0,a.setStyle)(s,"transform",null)}}),s}(),m=n.get("top"),v=n.get("left");"number"==typeof m&&"number"==typeof v?((0,a.setStyle)(h,"top","".concat(m,"px")),(0,a.setStyle)(h,"left","".concat(v,"px")),(0,a.isInViewport)(h)||d()):d(),e.emit("mini",!0)}else p()}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"72iXq":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.option,r=e.storage,n=e.template,o=n.$video,s=n.$poster;for(var i in t.moreVideoAttr)e.attr(i,t.moreVideoAttr[i]);t.muted&&(e.muted=t.muted),t.volume&&(o.volume=(0,a.clamp)(t.volume,0,1));var c=r.get("volume");for(var l in"number"==typeof c&&(o.volume=(0,a.clamp)(c,0,1)),t.poster&&(0,a.setStyle)(s,"backgroundImage","url(".concat(t.poster,")")),t.autoplay&&(o.autoplay=t.autoplay),t.playsInline&&(o.playsInline=!0,o["webkit-playsinline"]=!0),t.theme&&(t.cssVar["--art-theme"]=t.theme),t.cssVar)e.cssVar(l,t.cssVar[l]);e.url=t.url}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"1B8xv":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template.$video,r=e.i18n,n=e.notice;(0,a.def)(e,"pause",{value:function(){var o=t.pause();return n.show=r.get("Pause"),e.emit("pause"),o}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"2ayfA":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t,r,n,o,s=e.i18n,i=e.notice,c=e.template.$video;document.pictureInPictureEnabled?(t=e.template.$video,r=e.proxy,n=e.notice,t.disablePictureInPicture=!1,(0,a.def)(e,"pip",{get:function(){return document.pictureInPictureElement},set:function(r){r?(e.state="pip",t.requestPictureInPicture().catch(function(e){throw n.show=e,e})):document.exitPictureInPicture().catch(function(e){throw n.show=e,e})}}),r(t,"enterpictureinpicture",function(){e.emit("pip",!0)}),r(t,"leavepictureinpicture",function(){e.emit("pip",!1)})):c.webkitSupportsPresentationMode?((o=e.template.$video).webkitSetPresentationMode("inline"),(0,a.def)(e,"pip",{get:function(){return"picture-in-picture"===o.webkitPresentationMode},set:function(t){t?(e.state="pip",o.webkitSetPresentationMode("picture-in-picture"),e.emit("pip",!0)):(o.webkitSetPresentationMode("inline"),e.emit("pip",!1))}})):(0,a.def)(e,"pip",{get:function(){return!1},set:function(){i.show=s.get("PIP Not Supported")}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"4pWSp":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template.$video,r=e.i18n,n=e.notice;(0,a.def)(e,"playbackRate",{get:function(){return t.playbackRate},set:function(o){o?o!==t.playbackRate&&(t.playbackRate=o,n.show="".concat(r.get("Rate"),": ").concat(1===o?r.get("Normal"):"".concat(o,"x"))):e.playbackRate=1}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"3GKs4":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){(0,a.def)(e,"played",{get:function(){return e.currentTime/e.duration}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],in83u:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template.$video;(0,a.def)(e,"playing",{get:function(){return"boolean"==typeof t.playing?t.playing:!!(t.currentTime>0&&!t.paused&&!t.ended&&t.readyState>2)}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],cVJNG:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return c});var a=e("@swc/helpers/cjs/_async_to_generator.cjs"),s=e("@swc/helpers/cjs/_ts_generator.cjs"),i=e("../utils");function c(e){var t=e.i18n,r=e.notice,n=e.option,o=e.constructor.instances,c=e.template.$video;(0,i.def)(e,"play",{value:function(){return(0,a._)(function(){var a,i,l;return(0,s._)(this,function(s){switch(s.label){case 0:return[4,c.play()];case 1:if(a=s.sent(),r.show=t.get("Play"),e.emit("play"),n.mutex)for(i=0;i0&&jo.clientWidth-m/2?(0,i.setStyle)(a,"left","".concat(o.clientWidth-m,"px")):(0,i.setStyle)(a,"left","".concat(t-m/2,"px"))}}(j):i.isMobile||(0,i.setStyle)(m,"display","none"),b&&(clearTimeout(l),l=setTimeout(function(){(0,i.setStyle)(m,"display","none")},500)),s.label=3;case 3:return[2]}})})()}),(0,i.def)(e,"thumbnails",{get:function(){return e.option.thumbnails},set:function(t){t.url&&!e.option.isLive&&(e.option.thumbnails=t,clearTimeout(l),l=null,u=null,p=!1,f=!1)}})}},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],bdo2A:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){(0,a.def)(e,"toggle",{value:function(){return e.playing?e.pause():e.play()}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"7uOqt":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){(0,a.def)(e,"type",{get:function(){return e.option.type},set:function(t){e.option.type=t}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"4QAa0":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return c});var a=e("@swc/helpers/cjs/_async_to_generator.cjs"),s=e("@swc/helpers/cjs/_ts_generator.cjs"),i=e("../utils");function c(e){var t=e.option,r=e.template.$video;(0,i.def)(e,"url",{get:function(){return r.src},set:function(n){return(0,a._)(function(){var o,a,c;return(0,s._)(this,function(s){switch(s.label){case 0:if(!n)return[3,4];if(o=e.url,a=t.type||(0,i.getExt)(n),c=t.customType[a],!(a&&c))return[3,2];return[4,(0,i.sleep)()];case 1:return s.sent(),e.loading.show=!0,c.call(e,r,n,e),[3,3];case 2:URL.revokeObjectURL(o),r.src=n,s.label=3;case 3:return o!==e.url&&(e.option.url=n,e.isReady&&o&&e.once("video:canplay",function(){e.emit("restart",n)})),[3,6];case 4:return[4,(0,i.sleep)()];case 5:s.sent(),e.loading.show=!0,s.label=6;case 6:return[2]}})})()}})}},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"3sLEt":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.template.$video,r=e.i18n,n=e.notice,o=e.storage;(0,a.def)(e,"volume",{get:function(){return t.volume||0},set:function(e){t.volume=(0,a.clamp)(e,0,1),n.show="".concat(r.get("Volume"),": ").concat(Number.parseInt(100*t.volume,10)),0!==t.volume&&o.set("volume",t.volume)}}),(0,a.def)(e,"muted",{get:function(){return t.muted},set:function(r){t.muted=r,e.emit("muted",r)}})}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"83Crr":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return y});var a=e("@swc/helpers/cjs/_class_call_check.cjs"),s=e("@swc/helpers/cjs/_create_class.cjs"),i=e("../utils"),c=e("./autoOrientation"),l=o.interopDefault(c),u=e("./autoPlayback"),p=o.interopDefault(u),f=e("./fastForward"),d=o.interopDefault(f),h=e("./lock"),m=o.interopDefault(h),v=e("./miniProgressBar"),g=o.interopDefault(v),y=function(){"use strict";function e(t){(0,a._)(this,e),this.art=t,this.id=0;var r=t.option;r.miniProgressBar&&!r.isLive&&this.add(g.default),r.lock&&i.isMobile&&this.add(m.default),r.autoPlayback&&!r.isLive&&this.add(p.default),r.autoOrientation&&i.isMobile&&this.add(l.default),r.fastForward&&i.isMobile&&!r.isLive&&this.add(d.default);for(var n=0;nt&&rn}return e.on("fullscreenWeb",function(t){if(t){if(f()){var n;setTimeout(function(){var t,r;e.fullscreenWeb&&!(0,i.hasClass)(o,l)&&(t=document.documentElement.clientWidth,r=document.documentElement.clientHeight,(0,i.setStyle)(o,"width","".concat(r,"px")),(0,i.setStyle)(o,"height","".concat(t,"px")),(0,i.setStyle)(o,"transform-origin","0 0"),(0,i.setStyle)(o,"transform","rotate(90deg) translate(0, -".concat(t,"px)")),(0,i.addClass)(o,l),e.isRotate=!0,e.emit("resize"))},Number(null!=(n=r.AUTO_ORIENTATION_TIME)?n:0))}}else(0,i.hasClass)(o,l)&&((0,i.setStyle)(o,"width",""),(0,i.setStyle)(o,"height",""),(0,i.setStyle)(o,"transform-origin",""),(0,i.setStyle)(o,"transform",""),(0,i.removeClass)(o,l),e.isRotate=!1,e.emit("resize"))}),e.on("fullscreen",function(e){return(0,a._)(function(){var r,n,a,c,l;return(0,s._)(this,function(s){switch(s.label){case 0:if(a=!!(null==(n=screen)||null==(r=n.orientation)?void 0:r.lock),!e)return[3,5];if(!(a&&f()))return[3,4];s.label=1;case 1:return s.trys.push([1,3,,4]),c=screen.orientation.type.startsWith("portrait")?"landscape":"portrait",[4,screen.orientation.lock(c)];case 2:return s.sent(),p=!0,(0,i.addClass)(o,u),[3,4];case 3:return l=s.sent(),p=!1,t.show=l,[3,4];case 4:return[3,6];case 5:if((0,i.hasClass)(o,u)&&(0,i.removeClass)(o,u),a&&p){try{screen.orientation.unlock()}catch(e){}p=!1}s.label=6;case 6:return[2]}})})()}),{name:"autoOrientation",get state(){return(0,i.hasClass)(o,l)}}}},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"76uK8":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.i18n,r=e.icons,n=e.storage,o=e.constructor,s=e.proxy,i=e.template.$poster,c=e.layers.add({name:"auto-playback",html:'\n
\n
\n
\n '}),l=(0,a.query)(".art-auto-playback-last",c),u=(0,a.query)(".art-auto-playback-jump",c),p=(0,a.query)(".art-auto-playback-close",c);(0,a.append)(p,r.close);var f=null;function d(){var r=(n.get("times")||{})[e.option.id||e.option.url];clearTimeout(f),(0,a.setStyle)(c,"display","none"),r&&r>=o.AUTO_PLAYBACK_MIN&&((0,a.setStyle)(c,"display","flex"),l.textContent="".concat(t.get("Last Seen")," ").concat((0,a.secondToTime)(r)),u.textContent=t.get("Jump Play"),s(p,"click",function(){(0,a.setStyle)(c,"display","none")}),s(u,"click",function(){e.seek=r,e.play(),(0,a.setStyle)(i,"display","none"),(0,a.setStyle)(c,"display","none")}),e.once("video:timeupdate",function(){f=setTimeout(function(){(0,a.setStyle)(c,"display","none")},o.AUTO_PLAYBACK_TIMEOUT)}))}return e.on("video:timeupdate",function(){if(e.playing){var t=n.get("times")||{},r=Object.keys(t);r.length>o.AUTO_PLAYBACK_MAX&&delete t[r[0]],t[e.option.id||e.option.url]=e.currentTime,n.set("times",t)}}),e.on("ready",d),e.on("restart",d),{name:"auto-playback",get times(){return n.get("times")||{}},clear:function(){return n.del("times")},delete:function(e){var t=n.get("times")||{};return delete t[e],n.set("times",t),t}}}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],gLGPW:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.constructor,r=e.proxy,n=e.template,o=n.$player,s=n.$video,i=null,c=!1,l=1,u=function(){clearTimeout(i),c&&(c=!1,e.playbackRate=l,(0,a.removeClass)(o,"art-fast-forward"))};return r(s,"touchstart",function(r){1===r.touches.length&&e.playing&&!e.isLock&&(i=setTimeout(function(){c=!0,l=e.playbackRate,e.playbackRate=t.FAST_FORWARD_VALUE,(0,a.addClass)(o,"art-fast-forward")},t.FAST_FORWARD_TIME))}),e.on("document:touchmove",u),e.on("document:touchend",u),{name:"fastForward",get state(){return(0,a.hasClass)(o,"art-fast-forward")}}}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"9btcI":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){var t=e.layers,r=e.icons,n=e.template.$player;function o(){return(0,a.hasClass)(n,"art-lock")}function s(){(0,a.addClass)(n,"art-lock"),e.isLock=!0,e.emit("lock",!0)}function i(){(0,a.removeClass)(n,"art-lock"),e.isLock=!1,e.emit("lock",!1)}return t.add({name:"lock",mounted:function(t){var n=(0,a.append)(t,r.lock),o=(0,a.append)(t,r.unlock);(0,a.setStyle)(n,"display","none"),e.on("lock",function(e){e?((0,a.setStyle)(n,"display","inline-flex"),(0,a.setStyle)(o,"display","none")):((0,a.setStyle)(n,"display","none"),(0,a.setStyle)(o,"display","inline-flex"))})},click:function(){o()?i():s()}}),{name:"lock",get state(){return o()},set state(value){value?s():i()}}}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],iSnmg:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("../utils");function s(e){return e.on("control",function(t){t?(0,a.removeClass)(e.template.$player,"art-mini-progress-bar"):(0,a.addClass)(e.template.$player,"art-mini-progress-bar")}),{name:"mini-progress-bar"}}},{"../utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"4ARoj":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return x});var a=e("@swc/helpers/cjs/_async_to_generator.cjs"),s=e("@swc/helpers/cjs/_call_super.cjs"),i=e("@swc/helpers/cjs/_class_call_check.cjs"),c=e("@swc/helpers/cjs/_create_class.cjs"),l=e("@swc/helpers/cjs/_inherits.cjs"),u=e("@swc/helpers/cjs/_to_consumable_array.cjs"),p=e("@swc/helpers/cjs/_ts_generator.cjs"),f=e("../utils"),d=e("../utils/component"),h=o.interopDefault(d),m=e("./aspectRatio"),v=o.interopDefault(m),g=e("./flip"),y=o.interopDefault(g),b=e("./playbackRate"),j=o.interopDefault(b),w=e("./subtitleOffset"),_=o.interopDefault(w),x=function(e){"use strict";function t(e){(0,i._)(this,t);var r=(0,s._)(this,t,[e]),n=e.option,o=e.controls,a=e.template.$setting;return r.name="setting",r.$parent=a,r.id=0,r.active=null,r.cache=new Map,r.option=(0,u._)(r.builtin).concat((0,u._)(n.settings)),n.setting&&(r.format(),r.render(),e.on("blur",function(){r.show&&(r.show=!1,r.render())}),e.on("focus",function(e){var t=(0,f.includeFromEvent)(e,o.setting),n=(0,f.includeFromEvent)(e,r.$parent);!r.show||t||n||(r.show=!1,r.render())}),e.on("resize",function(){return r.resize()})),r}return(0,l._)(t,e),(0,c._)(t,[{key:"builtin",get:function(){var e=[],t=this.art.option;return t.playbackRate&&e.push((0,j.default)(this.art)),t.aspectRatio&&e.push((0,v.default)(this.art)),t.flip&&e.push((0,y.default)(this.art)),t.subtitleOffset&&e.push((0,_.default)(this.art)),e}},{key:"traverse",value:function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.option,r=0;r0&&void 0!==arguments[0]?arguments[0]:this.option,r=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],a=0;a0&&void 0!==arguments[0]?arguments[0]:"",t=null;return this.traverse(function(r){r.name===e&&(t=r)}),t}},{key:"resize",value:function(){var e=this.art,t=e.controls,r=e.constructor,n=r.SETTING_WIDTH,o=r.SETTING_ITEM_HEIGHT,a=e.template,s=a.$player,i=a.$setting;if(t.setting&&this.show){var c,l,u=(null==(l=this.active[0])||null==(c=l.$parent)?void 0:c.width)||n,p=(0,f.getRect)(t.setting),d=p.left,h=p.width,m=(0,f.getRect)(s),v=m.left,g=m.width,y=d-v+h/2-u/2,b=this.active===this.option?this.active.length*o:(this.active.length+1)*o;if((0,f.setStyle)(i,"height","".concat(b,"px")),(0,f.setStyle)(i,"width","".concat(u,"px")),this.art.isRotate||f.isMobile)return;y+u>g?((0,f.setStyle)(i,"left",null),(0,f.setStyle)(i,"right",null)):((0,f.setStyle)(i,"left","".concat(y,"px")),(0,f.setStyle)(i,"right","auto"))}}},{key:"inactivate",value:function(e){for(var t=0;t1&&void 0!==arguments[1]?arguments[1]:this.option;return t.push(e),this.format(),this.createItem(e),this.render(),e}},{key:"createHeader",value:function(e){var t=this;if(this.cache.has(e.$option)){var r=this.cache.get(e.$option),n=this.art,o=n.proxy,a=n.icons.arrowLeft,s=n.constructor.SETTING_ITEM_HEIGHT,i=(0,f.createElement)("div");(0,f.setStyle)(i,"height","".concat(s,"px")),(0,f.addClass)(i,"art-setting-item"),(0,f.addClass)(i,"art-setting-item-back");var c=(0,f.append)(i,'
'),l=(0,f.createElement)("div");(0,f.addClass)(l,"art-setting-item-left-icon"),(0,f.append)(l,a),(0,f.append)(c,l),(0,f.append)(c,e.$parent.html);var u=o(i,"click",function(){return t.render(e.$parents)});e.$parent.$events.push(u),(0,f.append)(r,i)}}},{key:"createItem",value:function(e){var t,r,n=this,o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.cache.has(e.$option)){var s=this.cache.get(e.$option),i=e.$item,c="selector";(0,f.has)(e,"switch")&&(c="switch"),(0,f.has)(e,"range")&&(c="range"),(0,f.has)(e,"onClick")&&(c="button");var l=this.art,d=l.icons,h=l.proxy,m=l.constructor,v=(0,f.createElement)("div");(0,f.addClass)(v,"art-setting-item"),(0,f.setStyle)(v,"height","".concat(m.SETTING_ITEM_HEIGHT,"px")),v.dataset.name=e.name||"",v.dataset.value=e.value||"";var g=(0,f.append)(v,'
'),y=(0,f.append)(v,'
'),b=(0,f.createElement)("div");switch((0,f.addClass)(b,"art-setting-item-left-icon"),c){case"button":case"switch":case"range":(0,f.append)(b,e.icon||d.config);break;case"selector":(null==(t=e.selector)?void 0:t.length)?(0,f.append)(b,e.icon||d.config):(0,f.append)(b,d.check)}(0,f.append)(g,b),(0,f.def)(e,"$icon",{configurable:!0,get:function(){return b}}),(0,f.def)(e,"icon",{configurable:!0,get:function(){return b.innerHTML},set:function(e){b.innerHTML="",(0,f.append)(b,e)}});var j=(0,f.createElement)("div");(0,f.addClass)(j,"art-setting-item-left-text"),(0,f.append)(j,e.html||""),(0,f.append)(g,j),(0,f.def)(e,"$html",{configurable:!0,get:function(){return j}}),(0,f.def)(e,"html",{configurable:!0,get:function(){return j.innerHTML},set:function(e){j.innerHTML="",(0,f.append)(j,e)}});var w=(0,f.createElement)("div");switch((0,f.addClass)(w,"art-setting-item-right-tooltip"),(0,f.append)(w,e.tooltip||""),(0,f.append)(y,w),(0,f.def)(e,"$tooltip",{configurable:!0,get:function(){return w}}),(0,f.def)(e,"tooltip",{configurable:!0,get:function(){return w.innerHTML},set:function(e){w.innerHTML="",(0,f.append)(w,e)}}),c){case"switch":var _=(0,f.createElement)("div");(0,f.addClass)(_,"art-setting-item-right-icon");var x=(0,f.append)(_,d.switchOn),k=(0,f.append)(_,d.switchOff);(0,f.setStyle)(e.switch?k:x,"display","none"),(0,f.append)(y,_),(0,f.def)(e,"$switch",{configurable:!0,get:function(){return _}});var M=e.switch;(0,f.def)(e,"switch",{configurable:!0,get:function(){return M},set:function(e){M=e,e?((0,f.setStyle)(k,"display","none"),(0,f.setStyle)(x,"display",null)):((0,f.setStyle)(k,"display",null),(0,f.setStyle)(x,"display","none"))}});break;case"range":var S=(0,f.createElement)("div");(0,f.addClass)(S,"art-setting-item-right-icon");var E=(0,f.append)(S,'');E.value=e.range[0],E.min=e.range[1],E.max=e.range[2],E.step=e.range[3],(0,f.addClass)(E,"art-setting-range"),(0,f.append)(y,S),(0,f.def)(e,"$range",{configurable:!0,get:function(){return E}});var I=(0,u._)(e.range);(0,f.def)(e,"range",{configurable:!0,get:function(){return I},set:function(e){I=(0,u._)(e),E.value=e[0],E.min=e[1],E.max=e[2],E.step=e[3]}});break;case"selector":if(null==(r=e.selector)?void 0:r.length){var T=(0,f.createElement)("div");(0,f.addClass)(T,"art-setting-item-right-icon"),(0,f.append)(T,d.arrowRight),(0,f.append)(y,T)}}switch(c){case"switch":if(e.onSwitch){var L=h(v,"click",function(t){return(0,a._)(function(){return(0,p._)(this,function(r){switch(r.label){case 0:return[4,e.onSwitch.call(this.art,e,v,t)];case 1:return e.switch=r.sent(),[2]}})}).call(n)});e.$events.push(L)}break;case"range":if(e.$range){if(e.onRange){var C=h(e.$range,"change",function(t){return(0,a._)(function(){return(0,p._)(this,function(r){switch(r.label){case 0:return e.range[0]=e.$range.valueAsNumber,[4,e.onRange.call(this.art,e,v,t)];case 1:return e.tooltip=r.sent(),[2]}})}).call(n)});e.$events.push(C)}if(e.onChange){var O=h(e.$range,"input",function(t){return(0,a._)(function(){return(0,p._)(this,function(r){switch(r.label){case 0:return e.range[0]=e.$range.valueAsNumber,[4,e.onChange.call(this.art,e,v,t)];case 1:return e.tooltip=r.sent(),[2]}})}).call(n)});e.$events.push(O)}}break;case"selector":var F=h(v,"click",function(t){return(0,a._)(function(){var r,n;return(0,p._)(this,function(o){switch(o.label){case 0:if(!(null==(r=e.selector)?void 0:r.length))return[3,1];return this.render(e.selector),[3,3];case 1:if(this.check(e),!e.$parent.onSelect)return[3,3];return n=e.$parent,[4,e.$parent.onSelect.call(this.art,e,v,t)];case 2:n.tooltip=o.sent(),o.label=3;case 3:return[2]}})}).call(n)});e.$events.push(F),e.default&&(0,f.addClass)(v,"art-current");break;case"button":if(e.onClick){var D=h(v,"click",function(t){return(0,a._)(function(){return(0,p._)(this,function(r){switch(r.label){case 0:return[4,e.onClick.call(this.art,e,v,t)];case 1:return e.tooltip=r.sent(),[2]}})}).call(n)});e.$events.push(D)}}(0,f.def)(e,"$item",{configurable:!0,get:function(){return v}}),o?(0,f.replaceElement)(v,i):(0,f.append)(s,v),e.mounted&&setTimeout(function(){return e.mounted.call(n.art,e.$item,e)},0)}}},{key:"render",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.option;if(this.active=e,this.cache.has(e)){var t=this.cache.get(e);(0,f.inverseClass)(t,"art-current")}else{var r,n=(0,f.createElement)("div");this.cache.set(e,n),(0,f.addClass)(n,"art-setting-panel"),(0,f.append)(this.$parent,n),(0,f.inverseClass)(n,"art-current"),(null==(r=e[0])?void 0:r.$parent)&&this.createHeader(e[0]);for(var o=0;o\n ').concat(t.escape?(0,y.escape)(e):e,"\n")}).join("")}).join(""),this.art.emit("subtitleAfterUpdate",this.activeCues))}},{key:"switch",value:function(e){return(0,a._)(function(e){var t,r,n,o,a,s,i,c=arguments;return(0,d._)(this,function(l){switch(l.label){case 0:return t=c.length>1&&void 0!==c[1]?c[1]:{},n=(r=this.art).i18n,o=r.notice,a=r.option,s=(0,p._)((0,u._)({},a.subtitle,t),{url:e}),[4,this.init(s)];case 1:return i=l.sent(),t.name&&(o.show="".concat(n.get("Switch Subtitle"),": ").concat(t.name)),[2,i]}})}).apply(this,arguments)}},{key:"createTrack",value:function(e,t){var r=this,n=this.art,o=n.template,a=n.proxy,s=n.option,i=o.$video,c=o.$track,l=(0,y.createElement)("track");l.default=!0,l.kind=e,l.src=t,l.label=s.subtitle.name||"Artplayer",l.track.mode="hidden",l.onload=function(){r.art.emit("subtitleLoad",r.cues,r.option)},this.art.events.remove(this.destroyEvent),c.onload=null,(0,y.remove)(c),(0,y.append)(i,l),o.$track=l,this.destroyEvent=a(this.textTrack,"cuechange",function(){return r.update()})}},{key:"init",value:function(e){return(0,a._)(function(){var t,r,n,o;return(0,d._)(this,function(a){return(t=this,n=(r=this.art).notice,o=r.template.$subtitle,this.textTrack)?((0,m.default)(e,g.default.subtitle),e.url)?(this.option=e,this.style(e.style),[2,fetch(e.url).then(function(e){return e.arrayBuffer()}).then(function(t){var r=new TextDecoder(e.encoding).decode(t);switch(e.type||(0,y.getExt)(e.url)){case"srt":var n=(0,y.srtToVtt)(r),o=e.onVttLoad(n);return(0,y.vttToBlob)(o);case"ass":var a=(0,y.assToVtt)(r),s=e.onVttLoad(a);return(0,y.vttToBlob)(s);case"vtt":var i=e.onVttLoad(r);return(0,y.vttToBlob)(i);default:return e.url}}).then(function(e){return o.innerHTML="",t.url===e||(URL.revokeObjectURL(t.url),t.createTrack("metadata",e)),e}).catch(function(e){throw o.innerHTML="",n.show=e,e})]):[2]:[2,null]})}).call(this)}}]),t}(o.interopDefault(b).default)},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_call_super.cjs":"clpdF","@swc/helpers/cjs/_class_call_check.cjs":"4Uf9M","@swc/helpers/cjs/_create_class.cjs":"igUuK","@swc/helpers/cjs/_inherits.cjs":"jtSwf","@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","@swc/helpers/cjs/_type_of.cjs":"iXhRw","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","option-validator":"8zKz5","./scheme":"3Srhh","./utils":"hQMLb","./utils/component":"hXsfe","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],jkHHJ:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return l});var a=e("@swc/helpers/cjs/_class_call_check.cjs"),s=e("@swc/helpers/cjs/_create_class.cjs"),i=e("../package.json"),c=e("./utils"),l=function(){"use strict";function e(t){var r=this;(0,a._)(this,e),this.art=t;var n=t.option,o=t.constructor;n.container instanceof Element?this.$container=n.container:(this.$container=(0,c.query)(n.container),(0,c.errorHandle)(this.$container,"No container element found by ".concat(n.container))),(0,c.errorHandle)((0,c.supportsFlex)(),"The current browser does not support flex layout");var s=this.$container.tagName.toLowerCase();(0,c.errorHandle)("div"===s,"Unsupported container element type, only support 'div' but got '".concat(s,"'")),(0,c.errorHandle)(o.instances.every(function(e){return e.template.$container!==r.$container}),"Cannot mount multiple instances on the same dom element"),this.query=this.query.bind(this),this.$container.dataset.artId=t.id,this.init()}return(0,s._)(e,[{key:"query",value:function(e){return(0,c.query)(e,this.$container)}},{key:"init",value:function(){var t=this.art.option;if(t.useSSR||(this.$container.innerHTML=e.html),this.$player=this.query(".art-video-player"),this.$video=this.query(".art-video"),this.$track=this.query("track"),this.$poster=this.query(".art-poster"),this.$subtitle=this.query(".art-subtitle"),this.$danmuku=this.query(".art-danmuku"),this.$bottom=this.query(".art-bottom"),this.$progress=this.query(".art-progress"),this.$controls=this.query(".art-controls"),this.$controlsLeft=this.query(".art-controls-left"),this.$controlsCenter=this.query(".art-controls-center"),this.$controlsRight=this.query(".art-controls-right"),this.$layer=this.query(".art-layers"),this.$loading=this.query(".art-loading"),this.$notice=this.query(".art-notice"),this.$noticeInner=this.query(".art-notice-inner"),this.$mask=this.query(".art-mask"),this.$state=this.query(".art-state"),this.$setting=this.query(".art-settings"),this.$info=this.query(".art-info"),this.$infoPanel=this.query(".art-info-panel"),this.$infoClose=this.query(".art-info-close"),this.$contextmenu=this.query(".art-contextmenus"),t.proxy){var r=t.proxy.call(this.art,this.art);(0,c.errorHandle)(r instanceof HTMLVideoElement||r instanceof HTMLCanvasElement,"Function 'option.proxy' needs to return 'HTMLVideoElement' or 'HTMLCanvasElement'"),(0,c.replaceElement)(r,this.$video),r.className="art-video",this.$video=r}t.backdrop&&(0,c.addClass)(this.$player,"art-backdrop"),c.isMobile&&(0,c.addClass)(this.$player,"art-mobile")}},{key:"destroy",value:function(e){this.$video.src="",e?this.$container.innerHTML="":(0,c.addClass)(this.$player,"art-destroy")}}],[{key:"html",get:function(){return'\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Player version:
\n
'.concat(i.version,'
\n
\n
\n
Video url:
\n
\n
\n
\n
Video volume:
\n
\n
\n
\n
Video time:
\n
\n
\n
\n
Video duration:
\n
\n
\n
\n
Video resolution:
\n
\nx\n
\n
\n
\n
[x]
\n
\n
\n
\n ')}}]),e}()},{"@swc/helpers/cjs/_class_call_check.cjs":"4Uf9M","@swc/helpers/cjs/_create_class.cjs":"igUuK","../package.json":"2Jf7W","./utils":"hQMLb","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],ikoiH:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return i});var a=e("@swc/helpers/cjs/_class_call_check.cjs"),s=e("@swc/helpers/cjs/_create_class.cjs"),i=function(){"use strict";function e(){(0,a._)(this,e)}return(0,s._)(e,[{key:"on",value:function(e,t,r){var n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:r}),this}},{key:"once",value:function(e,t,r){var n=this;function o(){for(var a=arguments.length,s=Array(a),i=0;i1?t-1:0),n=1;n= 1) export const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent) || isIOS13 -export const isBrowser = typeof window !== 'undefined' +export const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' diff --git a/packages/artplayer/types/utils.d.ts b/packages/artplayer/types/utils.d.ts index f08c98fa5..10861d8b8 100644 --- a/packages/artplayer/types/utils.d.ts +++ b/packages/artplayer/types/utils.d.ts @@ -2,9 +2,6 @@ export interface Utils { userAgent: string isMobile: boolean isSafari: boolean - isWechat: boolean - isIE: boolean - isAndroid: boolean isIOS: boolean isIOS13: boolean query: (selector: string, parent?: HTMLElement) => HTMLElement diff --git a/test/ssr.test.js b/test/ssr.test.js index 818f038d6..6cc60b52a 100644 --- a/test/ssr.test.js +++ b/test/ssr.test.js @@ -1,3 +1,8 @@ import Artplayer from '../packages/artplayer/dist/artplayer.js' console.log(Artplayer.default.html) + +const art = new Artplayer.default({ + container: '.artplayer-app', + url: './assets/sample/video.mp4', +})