/*! * artplayer.js v5.1.1 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2024 Harvey Zack * Released under the MIT License. */ !function(t, e, r, a, o) { var n = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : "undefined" != typeof window ? window : "undefined" != typeof global ? global : {} , i = "function" == typeof n[a] && n[a] , s = i.cache || {} , l = "undefined" != typeof module && "function" == typeof module.require && module.require.bind(module); function c(e, r) { if (!s[e]) { if (!t[e]) { var o = "function" == typeof n[a] && n[a]; if (!r && o) return o(e, !0); if (i) return i(e, !0); if (l && "string" == typeof e) return l(e); var u = new Error("Cannot find module '" + e + "'"); throw u.code = "MODULE_NOT_FOUND", u } d.resolve = function(r) { var a = t[e][1][r]; return null != a ? a : r } , d.cache = {}; var p = s[e] = new c.Module(e); t[e][0].call(p.exports, d, p, p.exports, this) } return s[e].exports; function d(t) { var e = d.resolve(t); return !1 === e ? {} : c(e) } } c.isParcelRequire = !0, c.Module = function(t) { this.id = t, this.bundle = c, this.exports = {} } , c.modules = t, c.cache = s, c.parent = i, c.register = function(e, r) { t[e] = [function(t, e) { e.exports = r } , {}] } , Object.defineProperty(c, "root", { get: function() { return n[a] } }), n[a] = c; for (var u = 0; u < e.length; u++) c(e[u]); if (r) { var p = c(r); "object" == typeof exports && "undefined" != typeof module ? module.exports = p : "function" == typeof define && define.amd && define((function() { return p } )) } }({ abjMI: [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r); var o = t("bundle-text:./style/index.less") , n = a.interopDefault(o) , i = t("option-validator") , s = a.interopDefault(i) , l = t("./utils/emitter") , c = a.interopDefault(l) , u = t("./utils") , p = t("./scheme") , d = a.interopDefault(p) , f = t("./config") , h = a.interopDefault(f) , m = t("./template") , g = a.interopDefault(m) , v = t("./i18n") , y = a.interopDefault(v) , b = t("./player") , x = a.interopDefault(b) , w = t("./control") , j = a.interopDefault(w) , k = t("./contextmenu") , $ = a.interopDefault(k) , S = t("./info") , I = a.interopDefault(S) , T = t("./subtitle") , E = a.interopDefault(T) , O = t("./events") , M = a.interopDefault(O) , C = t("./hotkey") , F = a.interopDefault(C) , H = t("./layer") , B = a.interopDefault(H) , D = t("./loading") , A = a.interopDefault(D) , R = t("./notice") , z = a.interopDefault(R) , L = t("./mask") , P = a.interopDefault(L) , N = t("./icons") , _ = a.interopDefault(N) , Z = t("./setting") , q = a.interopDefault(Z) , V = t("./storage") , W = a.interopDefault(V) , U = t("./plugins") , Y = a.interopDefault(U); let K = 0; const G = []; class X extends c.default { constructor(t, e) { super(), this.id = ++K; const r = u.mergeDeep(X.option, t); if (r.container = t.container, this.option = (0, s.default)(r, d.default), this.isLock = !1, this.isReady = !1, this.isFocus = !1, this.isInput = !1, this.isRotate = !1, this.isDestroy = !1, this.template = new (0, g.default)(this), this.events = new (0, M.default)(this), this.storage = new (0, W.default)(this), this.icons = new (0, _.default)(this), this.i18n = new (0, y.default)(this), this.notice = new (0, z.default)(this), this.player = new (0, x.default)(this), this.layers = new (0, B.default)(this), this.controls = new (0, j.default)(this), this.contextmenu = new (0, $.default)(this), this.subtitle = new (0, E.default)(this), this.info = new (0, I.default)(this), this.loading = new (0, A.default)(this), this.hotkey = new (0, F.default)(this), this.mask = new (0, P.default)(this), this.setting = new (0, q.default)(this), this.plugins = new (0, Y.default)(this), "function" == typeof e && this.on("ready", (()=>e.call(this, this))), X.DEBUG) { const t = t=>console.log(`[ART.${this.id}] -> ${t}`); t("Version@" + X.version), t("Env@" + X.env), t("Build@" + X.build); for (let e = 0; e < h.default.events.length; e++) this.on("video:" + h.default.events[e], (e=>t("Event@" + e.type))) } G.push(this) } static get instances() { return G } static get version() { return "5.1.1" } static get env() { return "production" } static get build() { return "2024-01-11 10:39:44" } static get config() { return h.default } static get utils() { return u } static get scheme() { return d.default } static get Emitter() { return c.default } static get validator() { return s.default } static get kindOf() { return s.default.kindOf } static get html() { return g.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, fastForward: !1, autoPlayback: !1, autoOrientation: !1, airplay: !1, layers: [], contextmenu: [], controls: [], settings: [], quality: [], highlight: [], plugins: [], thumbnails: { url: "", number: 60, column: 10, width: 0, height: 0 }, subtitle: { url: "", type: "", style: {}, name: "", escape: !0, encoding: "utf-8", onVttLoad: t=>t }, moreVideoAttr: { controls: !1, preload: u.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(t=!0) { this.events.destroy(), this.template.destroy(t), G.splice(G.indexOf(this), 1), this.isDestroy = !0, this.emit("destroy") } } r.default = X, X.DEBUG = !1, X.CONTEXTMENU = !0, X.NOTICE_TIME = 2e3, X.SETTING_WIDTH = 250, X.SETTING_ITEM_WIDTH = 200, X.SETTING_ITEM_HEIGHT = 35, X.RESIZE_TIME = 200, X.SCROLL_TIME = 200, X.SCROLL_GAP = 50, X.AUTO_PLAYBACK_MAX = 10, X.AUTO_PLAYBACK_MIN = 5, X.AUTO_PLAYBACK_TIMEOUT = 3e3, X.RECONNECT_TIME_MAX = 5, X.RECONNECT_SLEEP_TIME = 1e3, X.CONTROL_HIDE_TIME = 3e3, X.DBCLICK_TIME = 300, X.DBCLICK_FULLSCREEN = !0, X.MOBILE_DBCLICK_PLAY = !0, X.MOBILE_CLICK_PLAY = !1, X.AUTO_ORIENTATION_TIME = 200, X.INFO_LOOP_TIME = 1e3, X.FAST_FORWARD_VALUE = 3, X.FAST_FORWARD_TIME = 1e3, X.TOUCH_MOVE_RATIO = .5, X.VOLUME_STEP = .1, X.SEEK_STEP = 5, X.PLAYBACK_RATE = [.5, .75, 1, 1.25, 1.5, 2], X.ASPECT_RATIO = ["default", "4:3", "16:9"], X.FLIP = ["normal", "horizontal", "vertical"], X.FULLSCREEN_WEB_IN_BODY = !1, X.LOG_VERSION = !0, X.USE_RAF = !1, u.isBrowser && (window.Artplayer = X, u.setStyleText("artplayer-style", n.default), setTimeout((()=>{ X.LOG_VERSION && console.log(`%c ArtPlayer %c ${X.version} %c https://artplayer.org`, "color: #fff; background: #5f5f5f", "color: #fff; background: #4bc729", "") } ), 100)) } , { "bundle-text:./style/index.less": "kfOe8", "option-validator": "bAWi2", "./utils/emitter": "2bGVu", "./utils": "h3rH9", "./scheme": "AdvwB", "./config": "9Xmqu", "./template": "2gKYH", "./i18n": "1AdeF", "./player": "556MW", "./control": "14IBq", "./contextmenu": "7iUum", "./info": "hD2Lg", "./subtitle": "lum0D", "./events": "1Epl5", "./hotkey": "eTow4", "./layer": "4fDoD", "./loading": "fE0Sp", "./notice": "9PuGy", "./mask": "2etr0", "./icons": "6dYSr", "./setting": "bRHiA", "./storage": "f2Thp", "./plugins": "96ThS", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], kfOe8: [function(t, e, r) { e.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:#fff3;--art-hover-color:#fff3;--art-loaded-color:#fff3;--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:#00000080;--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{-webkit-backdrop-filter:saturate(180%)blur(20px);backdrop-filter:saturate(180%)blur(20px);background-color:#000000bf!important}.art-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.art-video-player{width:100%;height:100%;zoom:1;text-align:left;direction:ltr;user-select:none;box-sizing:border-box;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;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{max-width:100%;vertical-align:top}.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{-webkit-backdrop-filter:saturate(180%)blur(20px);backdrop-filter:saturate(180%)blur(20px);background-color:#000000bf!important}.art-video{z-index:10;width:100%;height:100%;cursor:pointer;position:absolute;inset:0}.art-poster{z-index:11;width:100%;height:100%;pointer-events:none;background-position:50%;background-repeat:no-repeat;background-size:cover;position:absolute;inset:0}.art-video-player .art-subtitle{z-index:20;width:100%;text-align:center;pointer-events:none;justify-content:center;align-items:center;gap:var(--art-subtitle-gap);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;width:100%;height:100%;pointer-events:none;position:absolute;inset:0;overflow:hidden}.art-video-player .art-layers{z-index:40;width:100%;height:100%;pointer-events:none;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;width:100%;height:100%;pointer-events:none;justify-content:center;align-items:center;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;width:100%;height:100%;pointer-events:none;justify-content:center;align-items:center;display:none;position:absolute;inset:0}.art-video-player.art-loading-show .art-loading{display:flex}.art-video-player .art-bottom{z-index:60;width:100%;height:100%;opacity:0;pointer-events:none;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{height:50%;width:100%;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;width:100%;height:100%;width:0%;background-color:var(--art-hover-color);display:none;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{z-index:10;width:100%;height:100%;width:0%;background-color:var(--art-loaded-color);position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-played{z-index:20;width:100%;height:100%;width:0%;background-color:var(--art-theme);position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{z-index:30;width:100%;height:100%;pointer-events:none;position:absolute;inset:0}.art-bottom .art-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{z-index:0;width:100%;height:100%;pointer-events:auto;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{width:100%;height:100%;pointer-events:none}.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{height:100%;flex:1;justify-content:center;align-items:center;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{height:100%;width:100%;border-radius:var(--art-border-radius);background-color:var(--art-widget-background);flex-direction:column;align-items:center;gap:10px;padding:10px 0 12px;display:flex}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider{width:100%;cursor:pointer;flex:1;justify-content:center;display:flex;position:relative}.art-control-volume .art-volume-panel .art-volume-inner .art-volume-slider .art-volume-handle{width:2px;border-radius:var(--art-border-radius);background-color:#ffffff40;justify-content:center;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;width:100%;height:100%;background-color:var(--art-theme);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: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);transform-origin:100% 100%;max-height:var(--art-settings-max-height);left:auto;right:var(--art-padding);bottom:var(--art-control-height);transform:scale(var(--art-settings-scale));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{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{min-width:32px;height:24px;justify-content:center;align-items:center;display:flex}.art-video-player .art-settings .art-setting-panel .art-setting-item .art-setting-item-right .art-setting-range{height:3px;width:80px;appearance:none;background-color:#fff3;outline:none}.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{width:100px;text-align:right}.art-video-player .art-info .art-info-panel .art-info-item .art-info-content{width:250px;text-overflow:ellipsis;white-space:nowrap;user-select:all;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-control-height:60px;--art-control-icon-scale:1.3}.art-fullscreen-web{--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;width:320px;height:180px;border-radius:var(--art-border-radius);cursor:move;user-select:none;background:#000;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;width:100%;height:100%;pointer-events:none;opacity:0;background-color:#00000040;justify-content:center;align-items:center;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-droging{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{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{width:100%;flex-shrink:0;justify-content:center;align-items:center;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)}' } , {}], bAWi2: [function(t, e, r) { e.exports = function() { "use strict"; function t(e) { return (t = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) { return typeof t } : function(t) { return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t } )(e) } var e = Object.prototype.toString , r = function(r) { if (void 0 === r) return "undefined"; if (null === r) return "null"; var o = t(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 function(t) { return "GeneratorFunction" === a(t) }(r) ? "generatorfunction" : "function"; if (function(t) { return Array.isArray ? Array.isArray(t) : t instanceof Array }(r)) return "array"; if (function(t) { return !(!t.constructor || "function" != typeof t.constructor.isBuffer) && t.constructor.isBuffer(t) }(r)) return "buffer"; if (function(t) { try { if ("number" == typeof t.length && "function" == typeof t.callee) return !0 } catch (t) { if (-1 !== t.message.indexOf("callee")) return !0 } return !1 }(r)) return "arguments"; if (function(t) { return t instanceof Date || "function" == typeof t.toDateString && "function" == typeof t.getDate && "function" == typeof t.setDate }(r)) return "date"; if (function(t) { return t instanceof Error || "string" == typeof t.message && t.constructor && "number" == typeof t.constructor.stackTraceLimit }(r)) return "error"; if (function(t) { return t instanceof RegExp || "string" == typeof t.flags && "boolean" == typeof t.ignoreCase && "boolean" == typeof t.multiline && "boolean" == typeof t.global }(r)) 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(t) { return "function" == typeof t.throw && "function" == typeof t.return && "function" == typeof t.next }(r)) return "generator"; switch (o = e.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(t) { return t.constructor ? t.constructor.name : null } function o(t, e) { var a = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : ["option"]; return n(t, e, a), i(t, e, a), function(t, e, a) { var s = r(e) , l = r(t); if ("object" === s) { if ("object" !== l) throw new Error("[Type Error]: '".concat(a.join("."), "' require 'object' type, but got '").concat(l, "'")); Object.keys(e).forEach((function(r) { var s = t[r] , l = e[r] , c = a.slice(); c.push(r), n(s, l, c), i(s, l, c), o(s, l, c) } )) } if ("array" === s) { if ("array" !== l) throw new Error("[Type Error]: '".concat(a.join("."), "' require 'array' type, but got '").concat(l, "'")); t.forEach((function(r, s) { var l = t[s] , c = e[s] || e[0] , u = a.slice(); u.push(s), n(l, c, u), i(l, c, u), o(l, c, u) } )) } }(t, e, a), t } function n(t, e, a) { if ("string" === r(e)) { var o = r(t); if ("?" === e[0] && (e = e.slice(1) + "|undefined"), !(-1 < e.indexOf("|") ? e.split("|").map((function(t) { return t.toLowerCase().trim() } )).filter(Boolean).some((function(t) { return o === t } )) : e.toLowerCase().trim() === o)) throw new Error("[Type Error]: '".concat(a.join("."), "' require '").concat(e, "' type, but got '").concat(o, "'")) } } function i(t, e, a) { if ("function" === r(e)) { var o = e(t, r(t), a); if (!0 !== o) { var n = r(o); throw "string" === n ? new Error(o) : "error" === n ? o : new Error("[Validator Error]: The scheme for '".concat(a.join("."), "' validator require return true, but got '").concat(o, "'")) } } } return o.kindOf = r, o }() } , {}], "2bGVu": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); r.default = class { on(t, e, r) { const a = this.e || (this.e = {}); return (a[t] || (a[t] = [])).push({ fn: e, ctx: r }), this } once(t, e, r) { const a = this; function o(...n) { a.off(t, o), e.apply(r, n) } return o._ = e, this.on(t, o, r) } emit(t, ...e) { const r = ((this.e || (this.e = {}))[t] || []).slice(); for (let t = 0; t < r.length; t += 1) r[t].fn.apply(r[t].ctx, e); return this } off(t, e) { const r = this.e || (this.e = {}) , a = r[t] , o = []; if (a && e) for (let t = 0, r = a.length; t < r; t += 1) a[t].fn !== e && a[t].fn._ !== e && o.push(a[t]); return o.length ? r[t] = o : delete r[t], this } } } , { "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], guZOB: [function(t, e, r) { r.interopDefault = function(t) { return t && t.__esModule ? t : { default: t } } , r.defineInteropFlag = function(t) { Object.defineProperty(t, "__esModule", { value: !0 }) } , r.exportAll = function(t, e) { return Object.keys(t).forEach((function(r) { "default" === r || "__esModule" === r || e.hasOwnProperty(r) || Object.defineProperty(e, r, { enumerable: !0, get: function() { return t[r] } }) } )), e } , r.export = function(t, e, r) { Object.defineProperty(t, e, { enumerable: !0, get: r }) } } , {}], h3rH9: [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r); var o = t("./dom"); a.exportAll(o, r); var n = t("./error"); a.exportAll(n, r); var i = t("./subtitle"); a.exportAll(i, r); var s = t("./file"); a.exportAll(s, r); var l = t("./property"); a.exportAll(l, r); var c = t("./time"); a.exportAll(c, r); var u = t("./format"); a.exportAll(u, r); var p = t("./compatibility"); a.exportAll(p, r) } , { "./dom": "XgAQE", "./error": "2nFlF", "./subtitle": "yqFoT", "./file": "1VRQn", "./property": "3weX2", "./time": "7kBIx", "./format": "13atT", "./compatibility": "luXC1", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], XgAQE: [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r), a.export(r, "query", (()=>n)), a.export(r, "queryAll", (()=>i)), a.export(r, "addClass", (()=>s)), a.export(r, "removeClass", (()=>l)), a.export(r, "hasClass", (()=>c)), a.export(r, "append", (()=>u)), a.export(r, "remove", (()=>p)), a.export(r, "setStyle", (()=>d)), a.export(r, "setStyles", (()=>f)), a.export(r, "getStyle", (()=>h)), a.export(r, "sublings", (()=>m)), a.export(r, "inverseClass", (()=>g)), a.export(r, "tooltip", (()=>v)), a.export(r, "isInViewport", (()=>y)), a.export(r, "includeFromEvent", (()=>b)), a.export(r, "replaceElement", (()=>x)), a.export(r, "createElement", (()=>w)), a.export(r, "getIcon", (()=>j)), a.export(r, "setStyleText", (()=>k)); var o = t("./compatibility"); function n(t, e=document) { return e.querySelector(t) } function i(t, e=document) { return Array.from(e.querySelectorAll(t)) } function s(t, e) { return t.classList.add(e) } function l(t, e) { return t.classList.remove(e) } function c(t, e) { return t.classList.contains(e) } function u(t, e) { return e instanceof Element ? t.appendChild(e) : t.insertAdjacentHTML("beforeend", String(e)), t.lastElementChild || t.lastChild } function p(t) { return t.parentNode.removeChild(t) } function d(t, e, r) { return t.style[e] = r, t } function f(t, e) { for (const r in e) d(t, r, e[r]); return t } function h(t, e, r=!0) { const a = window.getComputedStyle(t, null).getPropertyValue(e); return r ? parseFloat(a) : a } function m(t) { return Array.from(t.parentElement.children).filter((e=>e !== t)) } function g(t, e) { m(t).forEach((t=>l(t, e))), s(t, e) } function v(t, e, r="top") { o.isMobile || (t.setAttribute("aria-label", e), s(t, "hint--rounded"), s(t, `hint--${r}`)) } function y(t, e=0) { const r = t.getBoundingClientRect() , a = window.innerHeight || document.documentElement.clientHeight , o = window.innerWidth || document.documentElement.clientWidth , n = r.top - e <= a && r.top + r.height + e >= 0 , i = r.left - e <= o + e && r.left + r.width + e >= 0; return n && i } function b(t, e) { return t.composedPath && t.composedPath().indexOf(e) > -1 } function x(t, e) { return e.parentNode.replaceChild(t, e), t } function w(t) { return document.createElement(t) } function j(t="", e="") { const r = w("i"); return s(r, "art-icon"), s(r, `art-icon-${t}`), u(r, e), r } function k(t, e) { const r = document.getElementById(t); if (r) r.textContent = e; else { const r = w("style"); r.id = t, r.textContent = e, document.head.appendChild(r) } } } , { "./compatibility": "luXC1", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], luXC1: [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r), a.export(r, "userAgent", (()=>o)), a.export(r, "isSafari", (()=>n)), a.export(r, "isWechat", (()=>i)), a.export(r, "isIE", (()=>s)), a.export(r, "isAndroid", (()=>l)), a.export(r, "isIOS", (()=>c)), a.export(r, "isIOS13", (()=>u)), a.export(r, "isMobile", (()=>p)), a.export(r, "isBrowser", (()=>d)); const o = "undefined" != typeof navigator ? navigator.userAgent : "" , n = /^((?!chrome|android).)*safari/i.test(o) , i = /MicroMessenger/i.test(o) , s = /MSIE|Trident/i.test(o) , l = /android/i.test(o) , c = /iPad|iPhone|iPod/i.test(o) && !window.MSStream , u = c || o.includes("Macintosh") && navigator.maxTouchPoints >= 1 , p = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(o) || u , d = "undefined" != typeof window } , { "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "2nFlF": [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r), a.export(r, "ArtPlayerError", (()=>o)), a.export(r, "errorHandle", (()=>n)); class o extends Error { constructor(t, e) { super(t), "function" == typeof Error.captureStackTrace && Error.captureStackTrace(this, e || this.constructor), this.name = "ArtPlayerError" } } function n(t, e) { if (!t) throw new o(e); return t } } , { "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], yqFoT: [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); function o(t) { return "WEBVTT \r\n\r\n".concat((e = t, e.replace(/(\d\d:\d\d:\d\d)[,.](\d+)/g, ((t,e,r)=>{ let a = r.slice(0, 3); return 1 === r.length && (a = r + "00"), 2 === r.length && (a = r + "0"), `${e},${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")); var e } function n(t) { return URL.createObjectURL(new Blob([t],{ type: "text/vtt" })) } function i(t) { const e = new RegExp("Dialogue:\\s\\d,(\\d+:\\d\\d:\\d\\d.\\d\\d),(\\d+:\\d\\d:\\d\\d.\\d\\d),([^,]*),([^,]*),(?:[^,]*,){4}([\\s\\S]*)$","i"); function r(t="") { return t.split(/[:.]/).map(((t,e,r)=>{ if (e === r.length - 1) { if (1 === t.length) return `.${t}00`; if (2 === t.length) return `.${t}0` } else if (1 === t.length) return (0 === e ? "0" : ":0") + t; return 0 === e ? t : e === r.length - 1 ? `.${t}` : `:${t}` } )).join("") } return `WEBVTT\n\n${t.split(/\r?\n/).map((t=>{ const a = t.match(e); 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((t=>t.trim())).join("\n") } : null } )).filter((t=>t)).map(((t,e)=>t ? `${e + 1}\n${t.start} --\x3e ${t.end}\n${t.text}` : "")).filter((t=>t.trim())).join("\n\n")}` } a.defineInteropFlag(r), a.export(r, "srtToVtt", (()=>o)), a.export(r, "vttToBlob", (()=>n)), a.export(r, "assToVtt", (()=>i)) } , { "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "1VRQn": [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); function o(t) { return t.includes("?") ? o(t.split("?")[0]) : t.includes("#") ? o(t.split("#")[0]) : t.trim().toLowerCase().split(".").pop() } function n(t, e) { const r = document.createElement("a"); r.style.display = "none", r.href = t, r.download = e, document.body.appendChild(r), r.click(), document.body.removeChild(r) } a.defineInteropFlag(r), a.export(r, "getExt", (()=>o)), a.export(r, "download", (()=>n)) } , { "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "3weX2": [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r), a.export(r, "def", (()=>o)), a.export(r, "has", (()=>i)), a.export(r, "get", (()=>s)), a.export(r, "mergeDeep", (()=>l)); const o = Object.defineProperty , {hasOwnProperty: n} = Object.prototype; function i(t, e) { return n.call(t, e) } function s(t, e) { return Object.getOwnPropertyDescriptor(t, e) } function l(...t) { const e = t=>t && "object" == typeof t && !Array.isArray(t); return t.reduce(((t,r)=>(Object.keys(r).forEach((a=>{ const o = t[a] , n = r[a]; Array.isArray(o) && Array.isArray(n) ? t[a] = o.concat(...n) : e(o) && e(n) ? t[a] = l(o, n) : t[a] = n } )), t)), {}) } } , { "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "7kBIx": [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); function o(t=0) { return new Promise((e=>setTimeout(e, t))) } function n(t, e) { let r; return function(...a) { clearTimeout(r), r = setTimeout((()=>(r = null, t.apply(this, a))), e) } } function i(t, e) { let r = !1; return function(...a) { r || (t.apply(this, a), r = !0, setTimeout((function() { r = !1 } ), e)) } } a.defineInteropFlag(r), a.export(r, "sleep", (()=>o)), a.export(r, "debounce", (()=>n)), a.export(r, "throttle", (()=>i)) } , { "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "13atT": [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); function o(t, e, r) { return Math.max(Math.min(t, Math.max(e, r)), Math.min(e, r)) } function n(t) { return t.charAt(0).toUpperCase() + t.slice(1) } function i(t) { return ["string", "number"].includes(typeof t) } function s(t) { if (!t) return "00:00"; const e = Math.floor(t / 3600) , r = Math.floor((t - 3600 * e) / 60) , a = Math.floor(t - 3600 * e - 60 * r); return (e > 0 ? [e, r, a] : [r, a]).map((t=>t < 10 ? `0${t}` : String(t))).join(":") } function l(t) { return t.replace(/[&<>'"]/g, (t=>({ "&": "&", "<": "<", ">": ">", "'": "'", '"': """ }[t] || t))) } function c(t) { const e = { "&": "&", "<": "<", ">": ">", "'": "'", """: '"' } , r = new RegExp(`(${Object.keys(e).join("|")})`,"g"); return t.replace(r, (t=>e[t] || t)) } a.defineInteropFlag(r), a.export(r, "clamp", (()=>o)), a.export(r, "capitalize", (()=>n)), a.export(r, "isStringOrNumber", (()=>i)), a.export(r, "secondToTime", (()=>s)), a.export(r, "escape", (()=>l)), a.export(r, "unescape", (()=>c)) } , { "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], AdvwB: [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r), a.export(r, "ComponentOption", (()=>d)); var o = t("../utils"); const n = "array" , i = "boolean" , s = "string" , l = "number" , c = "object" , u = "function"; function p(t, e, r) { return (0, o.errorHandle)(e === s || e === l || t instanceof Element, `${r.join(".")} require '${s}' or 'Element' type`) } const d = { html: p, disable: `?${i}`, name: `?${s}`, index: `?${l}`, style: `?${c}`, click: `?${u}`, mounted: `?${u}`, tooltip: `?${s}|${l}`, width: `?${l}`, selector: `?${n}`, onSelect: `?${u}`, switch: `?${i}`, onSwitch: `?${u}`, range: `?${n}`, onRange: `?${u}`, onChange: `?${u}` }; r.default = { id: s, container: p, url: s, poster: s, type: s, theme: s, lang: s, volume: l, isLive: i, muted: i, autoplay: i, autoSize: i, autoMini: i, loop: i, flip: i, playbackRate: i, aspectRatio: i, screenshot: i, setting: i, hotkey: i, pip: i, mutex: i, backdrop: i, fullscreen: i, fullscreenWeb: i, subtitleOffset: i, miniProgressBar: i, useSSR: i, playsInline: i, lock: i, fastForward: i, autoPlayback: i, autoOrientation: i, airplay: i, plugins: [u], layers: [d], contextmenu: [d], settings: [d], controls: [{ ...d, position: (t,e,r)=>{ const a = ["top", "left", "right"]; return (0, o.errorHandle)(a.includes(t), `${r.join(".")} only accept ${a.toString()} as parameters`) } }], quality: [{ default: `?${i}`, html: s, url: s }], highlight: [{ time: l, text: s }], thumbnails: { url: s, number: l, column: l, width: l, height: l }, subtitle: { url: s, name: s, type: s, style: c, escape: i, encoding: s, onVttLoad: u }, moreVideoAttr: c, i18n: c, icons: c, cssVar: c, customType: c } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "9Xmqu": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r), r.default = { propertys: ["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": "guZOB" }], "2gKYH": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("./utils"); class o { constructor(t) { this.art = t; const {option: e, constructor: r} = t; e.container instanceof Element ? this.$container = e.container : (this.$container = (0, a.query)(e.container), (0, a.errorHandle)(this.$container, `No container element found by ${e.container}`)); const o = this.$container.tagName.toLowerCase(); (0, a.errorHandle)("div" === o, `Unsupported container element type, only support 'div' but got '${o}'`), (0, a.errorHandle)(r.instances.every((t=>t.template.$container !== this.$container)), "Cannot mount multiple instances on the same dom element"), this.query = this.query.bind(this), this.$container.dataset.artId = t.id, this.init() } static get html() { return '
Player version:
5.1.1
Video url:
Video volume:
Video time:
Video duration:
Video resolution:
x
[x]
' } query(t) { return (0, a.query)(t, this.$container) } init() { const {option: t} = this.art; t.useSSR || (this.$container.innerHTML = o.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.backdrop && (0, a.addClass)(this.$player, "art-backdrop"), a.isMobile && (0, a.addClass)(this.$player, "art-mobile") } destroy(t) { t ? this.$container.innerHTML = "" : (0, a.addClass)(this.$player, "art-destroy") } } r.default = o } , { "./utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "1AdeF": [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r); var o = t("../utils") , n = t("./zh-cn") , i = a.interopDefault(n); r.default = class { constructor(t) { this.art = t, this.languages = { "zh-cn": i.default }, this.language = {}, this.update(t.option.i18n) } init() { const t = this.art.option.lang.toLowerCase(); this.language = this.languages[t] || {} } get(t) { return this.language[t] || t } update(t) { this.languages = (0, o.mergeDeep)(this.languages, t), this.init() } } } , { "../utils": "h3rH9", "./zh-cn": "3ZSKq", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "3ZSKq": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); const a = { "Video Info": "统计信息", Close: "关闭", "Video Load Failed": "加载失败", Volume: "音量", Play: "播放", Pause: "暂停", Rate: "速度", Mute: "静音", "Video Flip": "画面翻转", Horizontal: "水平", Vertical: "垂直", Reconnect: "重新连接", "Show Setting": "显示设置", "Hide Setting": "隐藏设置", Screenshot: "截图", "Play Speed": "播放速度", "Aspect Ratio": "画面比例", Default: "默认", Normal: "正常", Open: "打开", "Switch Video": "切换", "Switch Subtitle": "切换字幕", Fullscreen: "全屏", "Exit Fullscreen": "退出全屏", "Web Fullscreen": "网页全屏", "Exit Web Fullscreen": "退出网页全屏", "Mini Player": "迷你播放器", "PIP Mode": "开启画中画", "Exit PIP Mode": "退出画中画", "PIP Not Supported": "不支持画中画", "Fullscreen Not Supported": "不支持全屏", "Subtitle Offset": "字幕偏移", "Last Seen": "上次看到", "Jump Play": "跳转播放", AirPlay: "隔空播放", "AirPlay Not Available": "隔空播放不可用" }; r.default = a, "undefined" != typeof window && (window["artplayer-i18n-zh-cn"] = a) } , { "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "556MW": [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r); var o = t("./urlMix") , n = a.interopDefault(o) , i = t("./attrMix") , s = a.interopDefault(i) , l = t("./playMix") , c = a.interopDefault(l) , u = t("./pauseMix") , p = a.interopDefault(u) , d = t("./toggleMix") , f = a.interopDefault(d) , h = t("./seekMix") , m = a.interopDefault(h) , g = t("./volumeMix") , v = a.interopDefault(g) , y = t("./currentTimeMix") , b = a.interopDefault(y) , x = t("./durationMix") , w = a.interopDefault(x) , j = t("./switchMix") , k = a.interopDefault(j) , $ = t("./playbackRateMix") , S = a.interopDefault($) , I = t("./aspectRatioMix") , T = a.interopDefault(I) , E = t("./screenshotMix") , O = a.interopDefault(E) , M = t("./fullscreenMix") , C = a.interopDefault(M) , F = t("./fullscreenWebMix") , H = a.interopDefault(F) , B = t("./pipMix") , D = a.interopDefault(B) , A = t("./loadedMix") , R = a.interopDefault(A) , z = t("./playedMix") , L = a.interopDefault(z) , P = t("./playingMix") , N = a.interopDefault(P) , _ = t("./autoSizeMix") , Z = a.interopDefault(_) , q = t("./rectMix") , V = a.interopDefault(q) , W = t("./flipMix") , U = a.interopDefault(W) , Y = t("./miniMix") , K = a.interopDefault(Y) , G = t("./posterMix") , X = a.interopDefault(G) , J = t("./autoHeightMix") , Q = a.interopDefault(J) , tt = t("./cssVarMix") , et = a.interopDefault(tt) , rt = t("./themeMix") , at = a.interopDefault(rt) , ot = t("./typeMix") , nt = a.interopDefault(ot) , it = t("./stateMix") , st = a.interopDefault(it) , lt = t("./subtitleOffsetMix") , ct = a.interopDefault(lt) , ut = t("./airplayMix") , pt = a.interopDefault(ut) , dt = t("./qualityMix") , ft = a.interopDefault(dt) , ht = t("./optionInit") , mt = a.interopDefault(ht) , gt = t("./eventInit") , vt = a.interopDefault(gt); r.default = class { constructor(t) { (0, n.default)(t), (0, s.default)(t), (0, c.default)(t), (0, p.default)(t), (0, f.default)(t), (0, m.default)(t), (0, v.default)(t), (0, b.default)(t), (0, w.default)(t), (0, k.default)(t), (0, S.default)(t), (0, T.default)(t), (0, O.default)(t), (0, C.default)(t), (0, H.default)(t), (0, D.default)(t), (0, R.default)(t), (0, L.default)(t), (0, N.default)(t), (0, Z.default)(t), (0, V.default)(t), (0, U.default)(t), (0, K.default)(t), (0, X.default)(t), (0, Q.default)(t), (0, et.default)(t), (0, at.default)(t), (0, nt.default)(t), (0, st.default)(t), (0, ct.default)(t), (0, pt.default)(t), (0, ft.default)(t), (0, vt.default)(t), (0, mt.default)(t) } } } , { "./urlMix": "2mRAc", "./attrMix": "2EA19", "./playMix": "fD2Tc", "./pauseMix": "c3LGJ", "./toggleMix": "fVsAa", "./seekMix": "dmROF", "./volumeMix": "9jtfB", "./currentTimeMix": "7NCDR", "./durationMix": "YS7JL", "./switchMix": "dzUqN", "./playbackRateMix": "5I2mT", "./aspectRatioMix": "7m6R8", "./screenshotMix": "2dgtR", "./fullscreenMix": "fKDW8", "./fullscreenWebMix": "lNvYI", "./pipMix": "8j7oC", "./loadedMix": "dwVOT", "./playedMix": "dDeLx", "./playingMix": "ceoBp", "./autoSizeMix": "lcWXX", "./rectMix": "f7y88", "./flipMix": "l4qt5", "./miniMix": "9ZPBQ", "./posterMix": "5K8hA", "./autoHeightMix": "3T5ls", "./cssVarMix": "6KfHs", "./themeMix": "7lcSc", "./typeMix": "8JgTw", "./stateMix": "cebt1", "./subtitleOffsetMix": "hJvIy", "./airplayMix": "4Tp0U", "./qualityMix": "3wZgN", "./optionInit": "iPdgW", "./eventInit": "3mj0J", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "2mRAc": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {option: e, template: {$video: r}} = t; (0, a.def)(t, "url", { get: ()=>r.src, async set(o) { if (o) { const n = t.url , i = e.type || (0, a.getExt)(o) , s = e.customType[i]; i && s ? (await (0, a.sleep)(), t.loading.show = !0, s.call(t, r, o, t)) : (URL.revokeObjectURL(n), r.src = o), n !== t.url && (t.option.url = o, t.isReady && n && t.once("video:canplay", (()=>{ t.emit("restart", o) } ))) } else await (0, a.sleep)(), t.loading.show = !0 } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "2EA19": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {template: {$video: e}} = t; (0, a.def)(t, "attr", { value(t, r) { if (void 0 === r) return e[t]; e[t] = r } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], fD2Tc: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {i18n: e, notice: r, option: o, constructor: {instances: n}, template: {$video: i}} = t; (0, a.def)(t, "play", { value: async function() { const a = await i.play(); if (r.show = e.get("Play"), t.emit("play"), o.mutex) for (let e = 0; e < n.length; e++) { const r = n[e]; r !== t && r.pause() } return a } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], c3LGJ: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {template: {$video: e}, i18n: r, notice: o} = t; (0, a.def)(t, "pause", { value() { const a = e.pause(); return o.show = r.get("Pause"), t.emit("pause"), a } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], fVsAa: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { (0, a.def)(t, "toggle", { value: ()=>t.playing ? t.pause() : t.play() }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], dmROF: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {notice: e} = t; (0, a.def)(t, "seek", { set(r) { t.currentTime = r, t.emit("seek", t.currentTime), t.duration && (e.show = `${(0, a.secondToTime)(t.currentTime)} / ${(0, a.secondToTime)(t.duration)}`) } }), (0, a.def)(t, "forward", { set(e) { t.seek = t.currentTime + e } }), (0, a.def)(t, "backward", { set(e) { t.seek = t.currentTime - e } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "9jtfB": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {template: {$video: e}, i18n: r, notice: o, storage: n} = t; (0, a.def)(t, "volume", { get: ()=>e.volume || 0, set: t=>{ e.volume = (0, a.clamp)(t, 0, 1), o.show = `${r.get("Volume")}: ${parseInt(100 * e.volume, 10)}`, 0 !== e.volume && n.set("volume", e.volume) } }), (0, a.def)(t, "muted", { get: ()=>e.muted, set: r=>{ e.muted = r, t.emit("muted", r) } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "7NCDR": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {$video: e} = t.template; (0, a.def)(t, "currentTime", { get: ()=>e.currentTime || 0, set: r=>{ r = parseFloat(r), Number.isNaN(r) || (e.currentTime = (0, a.clamp)(r, 0, t.duration)) } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], YS7JL: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { (0, a.def)(t, "duration", { get: ()=>{ const {duration: e} = t.template.$video; return e === 1 / 0 ? 0 : e || 0 } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], dzUqN: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { function e(e, r) { return new Promise(((a,o)=>{ if (e === t.url) return; const {playing: n, aspectRatio: i, playbackRate: s} = t; t.pause(), t.url = e, t.notice.show = "", t.once("video:error", o), t.once("video:canplay", (async()=>{ t.playbackRate = s, t.aspectRatio = i, t.currentTime = r, n && await t.play(), t.notice.show = "", a() } )) } )) } (0, a.def)(t, "switchQuality", { value: r=>e(r, t.currentTime) }), (0, a.def)(t, "switchUrl", { value: t=>e(t, 0) }), (0, a.def)(t, "switch", { set: t.switchUrl }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "5I2mT": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {template: {$video: e}, i18n: r, notice: o} = t; (0, a.def)(t, "playbackRate", { get: ()=>e.playbackRate, set(a) { if (a) { if (a === e.playbackRate) return; e.playbackRate = a, o.show = `${r.get("Rate")}: ${1 === a ? r.get("Normal") : `${a}x`}` } else t.playbackRate = 1 } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "7m6R8": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {i18n: e, notice: r, template: {$video: o, $player: n}} = t; (0, a.def)(t, "aspectRatio", { get: ()=>n.dataset.aspectRatio || "default", set(i) { if (i || (i = "default"), "default" === i) (0, a.setStyle)(o, "width", null), (0, a.setStyle)(o, "height", null), (0, a.setStyle)(o, "margin", null), delete n.dataset.aspectRatio; else { const t = i.split(":").map(Number) , {clientWidth: e, clientHeight: r} = n , s = e / r , l = t[0] / t[1]; s > l ? ((0, a.setStyle)(o, "width", l * r + "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", e / l + "px"), (0, a.setStyle)(o, "margin", "auto 0")), n.dataset.aspectRatio = i } r.show = `${e.get("Aspect Ratio")}: ${"default" === i ? e.get("Default") : i}`, t.emit("aspectRatio", i) } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "2dgtR": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {notice: e, template: {$video: r}} = t , o = (0, a.createElement)("canvas"); (0, a.def)(t, "getDataURL", { value: ()=>new Promise(((t,a)=>{ try { o.width = r.videoWidth, o.height = r.videoHeight, o.getContext("2d").drawImage(r, 0, 0), t(o.toDataURL("image/png")) } catch (t) { e.show = t, a(t) } } )) }), (0, a.def)(t, "getBlobUrl", { value: ()=>new Promise(((t,a)=>{ try { o.width = r.videoWidth, o.height = r.videoHeight, o.getContext("2d").drawImage(r, 0, 0), o.toBlob((e=>{ t(URL.createObjectURL(e)) } )) } catch (t) { e.show = t, a(t) } } )) }), (0, a.def)(t, "screenshot", { value: async()=>{ const e = await t.getDataURL(); return (0, a.download)(e, `artplayer_${(0, a.secondToTime)(r.currentTime)}.png`), t.emit("screenshot", e), e } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], fKDW8: [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r); var o = t("../libs/screenfull") , n = a.interopDefault(o) , i = t("../utils"); r.default = function(t) { const {i18n: e, notice: r, template: {$video: a, $player: o}} = t; t.once("video:loadedmetadata", (()=>{ n.default.isEnabled ? (t=>{ n.default.on("change", (()=>{ t.emit("fullscreen", n.default.isFullscreen) } )), (0, i.def)(t, "fullscreen", { get: ()=>n.default.isFullscreen, async set(e) { e ? (t.state = "fullscreen", await n.default.request(o), (0, i.addClass)(o, "art-fullscreen")) : (await n.default.exit(), (0, i.removeClass)(o, "art-fullscreen")), t.emit("resize") } }) } )(t) : document.fullscreenEnabled || a.webkitSupportsFullscreen ? (t=>{ (0, i.def)(t, "fullscreen", { get: ()=>a.webkitDisplayingFullscreen, set(e) { e ? (t.state = "fullscreen", a.webkitEnterFullscreen(), t.emit("fullscreen", !0)) : (a.webkitExitFullscreen(), t.emit("fullscreen", !1)), t.emit("resize") } }) } )(t) : (0, i.def)(t, "fullscreen", { get: ()=>!1, set() { r.show = e.get("Fullscreen Not Supported") } }), (0, i.def)(t, "fullscreen", (0, i.get)(t, "fullscreen")) } )) } } , { "../libs/screenfull": "lUahW", "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], lUahW: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); const a = [["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"]] , o = (()=>{ if ("undefined" == typeof document) return !1; const t = a[0] , e = {}; for (const r of a) { if (r[1]in document) { for (const [a,o] of r.entries()) e[t[a]] = o; return e } } return !1 } )() , n = { change: o.fullscreenchange, error: o.fullscreenerror }; let i = { request: (t=document.documentElement,e)=>new Promise(((r,a)=>{ const n = ()=>{ i.off("change", n), r() } ; i.on("change", n); const s = t[o.requestFullscreen](e); s instanceof Promise && s.then(n).catch(a) } )), exit: ()=>new Promise(((t,e)=>{ if (!i.isFullscreen) return void t(); const r = ()=>{ i.off("change", r), t() } ; i.on("change", r); const a = document[o.exitFullscreen](); a instanceof Promise && a.then(r).catch(e) } )), toggle: (t,e)=>i.isFullscreen ? i.exit() : i.request(t, e), onchange(t) { i.on("change", t) }, onerror(t) { i.on("error", t) }, on(t, e) { const r = n[t]; r && document.addEventListener(r, e, !1) }, off(t, e) { const r = n[t]; r && document.removeEventListener(r, e, !1) }, raw: o }; Object.defineProperties(i, { isFullscreen: { get: ()=>Boolean(document[o.fullscreenElement]) }, element: { enumerable: !0, get: ()=>document[o.fullscreenElement] }, isEnabled: { enumerable: !0, get: ()=>Boolean(document[o.fullscreenEnabled]) } }), o || (i = { isEnabled: !1 }), r.default = i } , { "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], lNvYI: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {constructor: e, template: {$container: r, $player: o}} = t; let n = ""; (0, a.def)(t, "fullscreenWeb", { get: ()=>(0, a.hasClass)(o, "art-fullscreen-web"), set(i) { i ? (n = o.style.cssText, e.FULLSCREEN_WEB_IN_BODY && (0, a.append)(document.body, o), t.state = "fullscreenWeb", (0, a.setStyle)(o, "width", "100%"), (0, a.setStyle)(o, "height", "100%"), (0, a.addClass)(o, "art-fullscreen-web"), t.emit("fullscreenWeb", !0)) : (e.FULLSCREEN_WEB_IN_BODY && (0, a.append)(r, o), n && (o.style.cssText = n, n = ""), (0, a.removeClass)(o, "art-fullscreen-web"), t.emit("fullscreenWeb", !1)), t.emit("resize") } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "8j7oC": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {i18n: e, notice: r, template: {$video: o}} = t; document.pictureInPictureEnabled ? function(t) { const {template: {$video: e}, proxy: r, notice: o} = t; e.disablePictureInPicture = !1, (0, a.def)(t, "pip", { get: ()=>document.pictureInPictureElement, set(r) { r ? (t.state = "pip", e.requestPictureInPicture().catch((t=>{ throw o.show = t, t } ))) : document.exitPictureInPicture().catch((t=>{ throw o.show = t, t } )) } }), r(e, "enterpictureinpicture", (()=>{ t.emit("pip", !0) } )), r(e, "leavepictureinpicture", (()=>{ t.emit("pip", !1) } )) }(t) : o.webkitSupportsPresentationMode ? function(t) { const {$video: e} = t.template; e.webkitSetPresentationMode("inline"), (0, a.def)(t, "pip", { get: ()=>"picture-in-picture" === e.webkitPresentationMode, set(r) { r ? (t.state = "pip", e.webkitSetPresentationMode("picture-in-picture"), t.emit("pip", !0)) : (e.webkitSetPresentationMode("inline"), t.emit("pip", !1)) } }) }(t) : (0, a.def)(t, "pip", { get: ()=>!1, set() { r.show = e.get("PIP Not Supported") } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], dwVOT: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {$video: e} = t.template; (0, a.def)(t, "loaded", { get: ()=>t.loadedTime / e.duration }), (0, a.def)(t, "loadedTime", { get: ()=>e.buffered.length ? e.buffered.end(e.buffered.length - 1) : 0 }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], dDeLx: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { (0, a.def)(t, "played", { get: ()=>t.currentTime / t.duration }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], ceoBp: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {$video: e} = t.template; (0, a.def)(t, "playing", { get: ()=>!!(e.currentTime > 0 && !e.paused && !e.ended && e.readyState > 2) }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], lcWXX: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {$container: e, $player: r, $video: o} = t.template; (0, a.def)(t, "autoSize", { value() { const {videoWidth: n, videoHeight: i} = o , {width: s, height: l} = e.getBoundingClientRect() , c = n / i; if (s / l > c) { const t = l * c / s * 100; (0, a.setStyle)(r, "width", `${t}%`), (0, a.setStyle)(r, "height", "100%") } else { const t = s / c / l * 100; (0, a.setStyle)(r, "width", "100%"), (0, a.setStyle)(r, "height", `${t}%`) } t.emit("autoSize", { width: t.width, height: t.height }) } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], f7y88: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { (0, a.def)(t, "rect", { get: ()=>t.template.$player.getBoundingClientRect() }); const e = ["bottom", "height", "left", "right", "top", "width"]; for (let r = 0; r < e.length; r++) { const o = e[r]; (0, a.def)(t, o, { get: ()=>t.rect[o] }) } (0, a.def)(t, "x", { get: ()=>t.left + window.pageXOffset }), (0, a.def)(t, "y", { get: ()=>t.top + window.pageYOffset }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], l4qt5: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {template: {$player: e}, i18n: r, notice: o} = t; (0, a.def)(t, "flip", { get: ()=>e.dataset.flip || "normal", set(n) { n || (n = "normal"), "normal" === n ? delete e.dataset.flip : e.dataset.flip = n, o.show = `${r.get("Video Flip")}: ${r.get((0, a.capitalize)(n))}`, t.emit("flip", n) } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "9ZPBQ": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {icons: e, proxy: r, storage: o, template: {$player: n, $video: i}} = t; let s = !1 , l = 0 , c = 0; function u() { const {$mini: e} = t.template; e && ((0, a.removeClass)(n, "art-mini"), (0, a.setStyle)(e, "display", "none"), n.prepend(i), t.emit("mini", !1)) } function p(e, r) { t.playing ? ((0, a.setStyle)(e, "display", "none"), (0, a.setStyle)(r, "display", "flex")) : ((0, a.setStyle)(e, "display", "flex"), (0, a.setStyle)(r, "display", "none")) } function d() { const {$mini: e} = t.template , r = e.getBoundingClientRect() , n = window.innerHeight - r.height - 50 , i = window.innerWidth - r.width - 50; o.set("top", n), o.set("left", i), (0, a.setStyle)(e, "top", `${n}px`), (0, a.setStyle)(e, "left", `${i}px`) } (0, a.def)(t, "mini", { get: ()=>(0, a.hasClass)(n, "art-mini"), set(f) { if (f) { t.state = "mini", (0, a.addClass)(n, "art-mini"); const f = function() { const {$mini: n} = t.template; if (n) return (0, a.append)(n, i), (0, a.setStyle)(n, "display", "flex"); { const n = (0, a.createElement)("div"); (0, a.addClass)(n, "art-mini-popup"), (0, a.append)(document.body, n), t.template.$mini = n, (0, a.append)(n, i); const d = (0, a.append)(n, '
'); (0, a.append)(d, e.close), r(d, "click", u); const f = (0, a.append)(n, '
') , h = (0, a.append)(f, e.play) , m = (0, a.append)(f, e.pause); return r(h, "click", (()=>t.play())), r(m, "click", (()=>t.pause())), p(h, m), t.on("video:playing", (()=>p(h, m))), t.on("video:pause", (()=>p(h, m))), t.on("video:timeupdate", (()=>p(h, m))), r(n, "mousedown", (t=>{ s = 0 === t.button, l = t.pageX, c = t.pageY } )), t.on("document:mousemove", (t=>{ if (s) { (0, a.addClass)(n, "art-mini-droging"); const e = t.pageX - l , r = t.pageY - c; (0, a.setStyle)(n, "transform", `translate(${e}px, ${r}px)`) } } )), t.on("document:mouseup", (()=>{ if (s) { s = !1, (0, a.removeClass)(n, "art-mini-droging"); const t = n.getBoundingClientRect(); o.set("left", t.left), o.set("top", t.top), (0, a.setStyle)(n, "left", `${t.left}px`), (0, a.setStyle)(n, "top", `${t.top}px`), (0, a.setStyle)(n, "transform", null) } } )), n } }() , h = o.get("top") , m = o.get("left"); h && m ? ((0, a.setStyle)(f, "top", `${h}px`), (0, a.setStyle)(f, "left", `${m}px`), (0, a.isInViewport)(f) || d()) : d(), t.emit("mini", !0) } else u() } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "5K8hA": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {template: {$poster: e}} = t; (0, a.def)(t, "poster", { get: ()=>{ try { return e.style.backgroundImage.match(/"(.*)"/)[1] } catch (t) { return "" } } , set(t) { (0, a.setStyle)(e, "backgroundImage", `url(${t})`) } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "3T5ls": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {template: {$container: e, $video: r}} = t; (0, a.def)(t, "autoHeight", { value() { const {clientWidth: o} = e , {videoHeight: n, videoWidth: i} = r , s = n * (o / i); (0, a.setStyle)(e, "height", s + "px"), t.emit("autoHeight", s) } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "6KfHs": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {$player: e} = t.template; (0, a.def)(t, "cssVar", { value: (t,r)=>r ? e.style.setProperty(t, r) : getComputedStyle(e).getPropertyValue(t) }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "7lcSc": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { (0, a.def)(t, "theme", { get: ()=>t.cssVar("--art-theme"), set(e) { t.cssVar("--art-theme", e) } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "8JgTw": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { (0, a.def)(t, "type", { get: ()=>t.option.type, set(e) { t.option.type = e } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], cebt1: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const e = ["mini", "pip", "fullscreen", "fullscreenWeb"]; (0, a.def)(t, "state", { get: ()=>e.find((e=>t[e])) || "standard", set(r) { for (let a = 0; a < e.length; a++) { const o = e[a]; o !== r && t[o] && (t[o] = !1) } } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], hJvIy: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {clamp: e} = t.constructor.utils , {notice: r, template: o, i18n: n} = t; let i = 0 , s = []; t.on("subtitle:switch", (()=>{ s = [] } )), (0, a.def)(t, "subtitleOffset", { get: ()=>i, set(a) { if (o.$track && o.$track.track) { const l = Array.from(o.$track.track.cues); i = e(a, -5, 5); for (let r = 0; r < l.length; r++) { const a = l[r]; s[r] || (s[r] = { startTime: a.startTime, endTime: a.endTime }), a.startTime = e(s[r].startTime + i, 0, t.duration), a.endTime = e(s[r].endTime + i, 0, t.duration) } t.subtitle.update(), r.show = `${n.get("Subtitle Offset")}: ${a}s`, t.emit("subtitleOffset", a) } else t.emit("subtitleOffset", 0) } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "4Tp0U": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {i18n: e, notice: r, proxy: o, template: {$video: n}} = t; let i = !0; window.WebKitPlaybackTargetAvailabilityEvent && n.webkitShowPlaybackTargetPicker ? o(n, "webkitplaybacktargetavailabilitychanged", (t=>{ switch (t.availability) { case "available": i = !0; break; case "not-available": i = !1 } } )) : i = !1, (0, a.def)(t, "airplay", { value() { i ? (n.webkitShowPlaybackTargetPicker(), t.emit("airplay")) : r.show = e.get("AirPlay Not Available") } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "3wZgN": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { (0, a.def)(t, "quality", { set(e) { const {controls: r, notice: a, i18n: o} = t , n = e.find((t=>t.default)) || e[0]; r.update({ name: "quality", position: "right", index: 10, style: { marginRight: "10px" }, html: n ? n.html : "", selector: e, async onSelect(e) { await t.switchQuality(e.url), a.show = `${o.get("Switch Video")}: ${e.html}` } }) } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], iPdgW: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {option: e, storage: r, template: {$video: o, $poster: n}} = t; for (const r in e.moreVideoAttr) t.attr(r, e.moreVideoAttr[r]); e.muted && (t.muted = e.muted), e.volume && (o.volume = (0, a.clamp)(e.volume, 0, 1)); const i = r.get("volume"); "number" == typeof i && (o.volume = (0, a.clamp)(i, 0, 1)), e.poster && (0, a.setStyle)(n, "backgroundImage", `url(${e.poster})`), e.autoplay && (o.autoplay = e.autoplay), e.playsInline && (o.playsInline = !0, o["webkit-playsinline"] = !0), e.theme && (e.cssVar["--art-theme"] = e.theme); for (const r in e.cssVar) t.cssVar(r, e.cssVar[r]); t.url = e.url } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "3mj0J": [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r); var o = t("../config") , n = a.interopDefault(o) , i = t("../utils"); r.default = function(t) { const {i18n: e, notice: r, option: a, constructor: o, proxy: s, template: {$player: l, $video: c, $poster: u}} = t; let p = 0; for (let e = 0; e < n.default.events.length; e++) s(c, n.default.events[e], (e=>{ t.emit(`video:${e.type}`, e) } )); t.on("video:canplay", (()=>{ p = 0, t.loading.show = !1 } )), t.once("video:canplay", (()=>{ t.loading.show = !1, t.controls.show = !0, t.mask.show = !0, t.isReady = !0, t.emit("ready") } )), t.on("video:ended", (()=>{ a.loop ? (t.seek = 0, t.play(), t.controls.show = !1, t.mask.show = !1) : (t.controls.show = !0, t.mask.show = !0) } )), t.on("video:error", (async n=>{ p < o.RECONNECT_TIME_MAX ? (await (0, i.sleep)(o.RECONNECT_SLEEP_TIME), p += 1, t.url = a.url, r.show = `${e.get("Reconnect")}: ${p}`, t.emit("error", n, p)) : (t.mask.show = !0, t.loading.show = !1, t.controls.show = !0, (0, i.addClass)(l, "art-error"), await (0, i.sleep)(o.RECONNECT_SLEEP_TIME), r.show = e.get("Video Load Failed")) } )), t.on("video:loadedmetadata", (()=>{ t.emit("resize"), i.isMobile && (t.loading.show = !1, t.controls.show = !0, t.mask.show = !0) } )), t.on("video:loadstart", (()=>{ t.loading.show = !0, t.mask.show = !1, t.controls.show = !0 } )), t.on("video:pause", (()=>{ t.controls.show = !0, t.mask.show = !0 } )), t.on("video:play", (()=>{ t.mask.show = !1, (0, i.setStyle)(u, "display", "none") } )), t.on("video:playing", (()=>{ t.mask.show = !1 } )), t.on("video:progress", (()=>{ t.playing && (t.loading.show = !1) } )), t.on("video:seeked", (()=>{ t.loading.show = !1, t.mask.show = !0 } )), t.on("video:seeking", (()=>{ t.loading.show = !0, t.mask.show = !1 } )), t.on("video:timeupdate", (()=>{ t.mask.show = !1 } )), t.on("video:waiting", (()=>{ t.loading.show = !0, t.mask.show = !1 } )) } } , { "../config": "9Xmqu", "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "14IBq": [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r); var o = t("../utils") , n = t("../utils/component") , i = a.interopDefault(n) , s = t("./fullscreen") , l = a.interopDefault(s) , c = t("./fullscreenWeb") , u = a.interopDefault(c) , p = t("./pip") , d = a.interopDefault(p) , f = t("./playAndPause") , h = a.interopDefault(f) , m = t("./progress") , g = a.interopDefault(m) , v = t("./time") , y = a.interopDefault(v) , b = t("./volume") , x = a.interopDefault(b) , w = t("./setting") , j = a.interopDefault(w) , k = t("./thumbnails") , $ = a.interopDefault(k) , S = t("./screenshot") , I = a.interopDefault(S) , T = t("./airplay") , E = a.interopDefault(T); class O extends i.default { constructor(t) { super(t), this.name = "control", this.timer = Date.now(); const {constructor: e} = t , {$player: r} = this.art.template; t.on("mousemove", (()=>{ o.isMobile || (this.show = !0) } )), t.on("click", (()=>{ o.isMobile ? this.toggle() : this.show = !0 } )), t.on("video:timeupdate", (()=>{ !t.isInput && t.playing && this.show && Date.now() - this.timer >= e.CONTROL_HIDE_TIME && (this.show = !1) } )), t.on("control", (t=>{ t ? ((0, o.removeClass)(r, "art-hide-cursor"), (0, o.addClass)(r, "art-hover"), this.timer = Date.now()) : ((0, o.addClass)(r, "art-hide-cursor"), (0, o.removeClass)(r, "art-hover")) } )), this.init() } init() { const {option: t} = this.art; t.isLive || this.add((0, g.default)({ name: "progress", position: "top", index: 10 })), !t.thumbnails.url || t.isLive || o.isMobile || this.add((0, $.default)({ name: "thumbnails", position: "top", index: 20 })), this.add((0, h.default)({ name: "playAndPause", position: "left", index: 10 })), this.add((0, x.default)({ name: "volume", position: "left", index: 20 })), t.isLive || this.add((0, y.default)({ name: "time", position: "left", index: 30 })), t.quality.length && (0, o.sleep)().then((()=>{ this.art.quality = t.quality } )), t.screenshot && !o.isMobile && this.add((0, I.default)({ name: "screenshot", position: "right", index: 20 })), t.setting && this.add((0, j.default)({ name: "setting", position: "right", index: 30 })), t.pip && this.add((0, d.default)({ name: "pip", position: "right", index: 40 })), t.airplay && window.WebKitPlaybackTargetAvailabilityEvent && this.add((0, E.default)({ name: "airplay", position: "right", index: 50 })), t.fullscreenWeb && this.add((0, u.default)({ name: "fullscreenWeb", position: "right", index: 60 })), t.fullscreen && this.add((0, l.default)({ name: "fullscreen", position: "right", index: 70 })); for (let e = 0; e < t.controls.length; e++) this.add(t.controls[e]) } add(t) { const e = "function" == typeof t ? t(this.art) : t , {$progress: r, $controlsLeft: a, $controlsRight: n} = this.art.template; switch (e.position) { case "top": this.$parent = r; break; case "left": this.$parent = a; break; case "right": this.$parent = n; break; default: (0, o.errorHandle)(!1, "Control option.position must one of 'top', 'left', 'right'") } super.add(e) } } r.default = O } , { "../utils": "h3rH9", "../utils/component": "guki8", "./fullscreen": "cxHNK", "./fullscreenWeb": "66eEC", "./pip": "kCFkA", "./playAndPause": "iRhgD", "./progress": "aBBSH", "./time": "7H0CE", "./volume": "lMwFm", "./setting": "8BrCu", "./thumbnails": "2HiWx", "./screenshot": "c1GeG", "./airplay": "6GRju", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], guki8: [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r); var o = t("./dom") , n = t("./format") , i = t("./error") , s = t("option-validator") , l = a.interopDefault(s) , c = t("../scheme"); r.default = class { constructor(t) { this.id = 0, this.art = t, 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, o.hasClass)(this.art.template.$player, `art-${this.name}-show`) } set show(t) { const {$player: e} = this.art.template , r = `art-${this.name}-show`; t ? (0, o.addClass)(e, r) : (0, o.removeClass)(e, r), this.art.emit(this.name, t) } toggle() { this.show = !this.show } add(t) { const e = "function" == typeof t ? t(this.art) : t; if (e.html = e.html || "", (0, l.default)(e, c.ComponentOption), !this.$parent || !this.name || e.disable) return; const r = e.name || `${this.name}${this.id}` , a = this.cache.get(r); (0, i.errorHandle)(!a, `Can't add an existing [${r}] to the [${this.name}]`), this.id += 1; const n = (0, o.createElement)("div"); (0, o.addClass)(n, `art-${this.name}`), (0, o.addClass)(n, `art-${this.name}-${r}`); const s = Array.from(this.$parent.children); n.dataset.index = e.index || this.id; const u = s.find((t=>Number(t.dataset.index) >= Number(n.dataset.index))); u ? u.insertAdjacentElement("beforebegin", n) : (0, o.append)(this.$parent, n), e.html && (0, o.append)(n, e.html), e.style && (0, o.setStyles)(n, e.style), e.tooltip && (0, o.tooltip)(n, e.tooltip); const p = []; if (e.click) { const t = this.art.events.proxy(n, "click", (t=>{ t.preventDefault(), e.click.call(this.art, this, t) } )); p.push(t) } return e.selector && ["left", "right"].includes(e.position) && this.addSelector(e, n, p), this[r] = n, this.cache.set(r, { $ref: n, events: p, option: e }), e.mounted && e.mounted.call(this.art, n), n } addSelector(t, e, r) { const {hover: a, proxy: i} = this.art.events; (0, o.addClass)(e, "art-control-selector"); const s = (0, o.createElement)("div"); (0, o.addClass)(s, "art-selector-value"), (0, o.append)(s, t.html), e.innerText = "", (0, o.append)(e, s); const l = t.selector.map(((t,e)=>`
${t.html}
`)).join("") , c = (0, o.createElement)("div"); (0, o.addClass)(c, "art-selector-list"), (0, o.append)(c, l), (0, o.append)(e, c); const u = ()=>{ const t = (0, o.getStyle)(e, "width") / 2 - (0, o.getStyle)(c, "width") / 2; c.style.left = `${t}px` } ; a(e, u); const p = i(c, "click", (async e=>{ const r = (e.composedPath() || []).find((t=>(0, o.hasClass)(t, "art-selector-item"))); if (!r) return; (0, o.inverseClass)(r, "art-current"); const a = Number(r.dataset.index) , i = t.selector[a] || {}; if (s.innerText = r.innerText, t.onSelect) { const a = await t.onSelect.call(this.art, i, r, e); (0, n.isStringOrNumber)(a) && (s.innerHTML = a) } u() } )); r.push(p) } remove(t) { const e = this.cache.get(t); (0, i.errorHandle)(e, `Can't find [${t}] from the [${this.name}]`), e.option.beforeUnmount && e.option.beforeUnmount.call(this.art, e.$ref); for (let t = 0; t < e.events.length; t++) this.art.events.remove(e.events[t]); this.cache.delete(t), delete this[t], (0, o.remove)(e.$ref) } update(t) { const e = this.cache.get(t.name); return e && (t = Object.assign(e.option, t), this.remove(t.name)), this.add(t) } } } , { "./dom": "XgAQE", "./format": "13atT", "./error": "2nFlF", "option-validator": "bAWi2", "../scheme": "AdvwB", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], cxHNK: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { return e=>({ ...t, tooltip: e.i18n.get("Fullscreen"), mounted: t=>{ const {proxy: r, icons: o, i18n: n} = e , i = (0, a.append)(t, o.fullscreenOn) , s = (0, a.append)(t, o.fullscreenOff); (0, a.setStyle)(s, "display", "none"), r(t, "click", (()=>{ e.fullscreen = !e.fullscreen } )), e.on("fullscreen", (e=>{ e ? ((0, a.tooltip)(t, n.get("Exit Fullscreen")), (0, a.setStyle)(i, "display", "none"), (0, a.setStyle)(s, "display", "inline-flex")) : ((0, a.tooltip)(t, n.get("Fullscreen")), (0, a.setStyle)(i, "display", "inline-flex"), (0, a.setStyle)(s, "display", "none")) } )) } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "66eEC": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { return e=>({ ...t, tooltip: e.i18n.get("Web Fullscreen"), mounted: t=>{ const {proxy: r, icons: o, i18n: n} = e , i = (0, a.append)(t, o.fullscreenWebOn) , s = (0, a.append)(t, o.fullscreenWebOff); (0, a.setStyle)(s, "display", "none"), r(t, "click", (()=>{ e.fullscreenWeb = !e.fullscreenWeb } )), e.on("fullscreenWeb", (e=>{ e ? ((0, a.tooltip)(t, n.get("Exit Web Fullscreen")), (0, a.setStyle)(i, "display", "none"), (0, a.setStyle)(s, "display", "inline-flex")) : ((0, a.tooltip)(t, n.get("Web Fullscreen")), (0, a.setStyle)(i, "display", "inline-flex"), (0, a.setStyle)(s, "display", "none")) } )) } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], kCFkA: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { return e=>({ ...t, tooltip: e.i18n.get("PIP Mode"), mounted: t=>{ const {proxy: r, icons: o, i18n: n} = e; (0, a.append)(t, o.pip), r(t, "click", (()=>{ e.pip = !e.pip } )), e.on("pip", (e=>{ (0, a.tooltip)(t, n.get(e ? "Exit PIP Mode" : "PIP Mode")) } )) } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], iRhgD: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { return e=>({ ...t, mounted: t=>{ const {proxy: r, icons: o, i18n: n} = e , i = (0, a.append)(t, o.play) , s = (0, a.append)(t, o.pause); function l() { (0, a.setStyle)(i, "display", "flex"), (0, a.setStyle)(s, "display", "none") } function c() { (0, a.setStyle)(i, "display", "none"), (0, a.setStyle)(s, "display", "flex") } (0, a.tooltip)(i, n.get("Play")), (0, a.tooltip)(s, n.get("Pause")), r(i, "click", (()=>{ e.play() } )), r(s, "click", (()=>{ e.pause() } )), e.playing ? c() : l(), e.on("video:playing", (()=>{ c() } )), e.on("video:pause", (()=>{ l() } )) } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], aBBSH: [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r), a.export(r, "getPosFromEvent", (()=>n)), a.export(r, "setCurrentTime", (()=>i)); var o = t("../utils"); function n(t, e) { const {$progress: r} = t.template , {left: a} = r.getBoundingClientRect() , n = o.isMobile ? e.touches[0].clientX : e.clientX , i = (0, o.clamp)(n - a, 0, r.clientWidth) , s = i / r.clientWidth * t.duration; return { second: s, time: (0, o.secondToTime)(s), width: i, percentage: (0, o.clamp)(i / r.clientWidth, 0, 1) } } function i(t, e) { if (t.isRotate) { const r = e.touches[0].clientY / t.height , a = r * t.duration; t.emit("setBar", "played", r), t.seek = a } else { const {second: r, percentage: a} = n(t, e); t.emit("setBar", "played", a), t.seek = r } } r.default = function(t) { return e=>{ const {icons: r, option: a, proxy: s} = e; return { ...t, html: '
', mounted: t=>{ let l = !1; const c = (0, o.query)(".art-progress-hover", t) , u = (0, o.query)(".art-progress-loaded", t) , p = (0, o.query)(".art-progress-played", t) , d = (0, o.query)(".art-progress-highlight", t) , f = (0, o.query)(".art-progress-indicator", t) , h = (0, o.query)(".art-progress-tip", t); function m(t, e) { "loaded" === t && (0, o.setStyle)(u, "width", 100 * e + "%"), "played" === t && ((0, o.setStyle)(p, "width", 100 * e + "%"), (0, o.setStyle)(f, "left", 100 * e + "%")) } r.indicator ? (0, o.append)(f, r.indicator) : (0, o.setStyle)(f, "backgroundColor", "var(--art-theme)"), e.on("video:loadedmetadata", (()=>{ for (let t = 0; t < a.highlight.length; t++) { const r = a.highlight[t] , n = (0, o.clamp)(r.time, 0, e.duration) / e.duration * 100 , i = ``; (0, o.append)(d, i) } } )), m("loaded", e.loaded), e.on("setBar", ((t,e)=>{ m(t, e) } )), e.on("video:progress", (()=>{ m("loaded", e.loaded) } )), e.constructor.USE_RAF ? e.on("raf", (()=>{ m("played", e.played) } )) : e.on("video:timeupdate", (()=>{ m("played", e.played) } )), e.on("video:ended", (()=>{ m("played", 1) } )), o.isMobile || (s(t, "click", (t=>{ t.target !== f && i(e, t) } )), s(t, "mousemove", (r=>{ !function(t) { const {width: r} = n(e, t); (0, o.setStyle)(c, "width", `${r}px`), (0, o.setStyle)(c, "display", "flex") }(r), (0, o.setStyle)(h, "display", "flex"), (0, o.includeFromEvent)(r, d) ? function(r) { const {width: a} = n(e, r) , {text: i} = r.target.dataset; h.innerHTML = i; const s = h.clientWidth; a <= s / 2 ? (0, o.setStyle)(h, "left", 0) : a > t.clientWidth - s / 2 ? (0, o.setStyle)(h, "left", t.clientWidth - s + "px") : (0, o.setStyle)(h, "left", a - s / 2 + "px") }(r) : function(r) { const {width: a, time: i} = n(e, r); h.innerHTML = i; const s = h.clientWidth; a <= s / 2 ? (0, o.setStyle)(h, "left", 0) : a > t.clientWidth - s / 2 ? (0, o.setStyle)(h, "left", t.clientWidth - s + "px") : (0, o.setStyle)(h, "left", a - s / 2 + "px") }(r) } )), s(t, "mouseleave", (()=>{ (0, o.setStyle)(h, "display", "none"), (0, o.setStyle)(c, "display", "none") } )), s(t, "mousedown", (t=>{ l = 0 === t.button } )), e.on("document:mousemove", (t=>{ if (l) { const {second: r, percentage: a} = n(e, t); m("played", a), e.seek = r } } )), e.on("document:mouseup", (()=>{ l && (l = !1) } ))) } } } } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "7H0CE": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { return e=>({ ...t, style: a.isMobile ? { fontSize: "12px", padding: "0 5px" } : { cursor: "auto", padding: "0 10px" }, mounted: t=>{ function r() { const r = `${(0, a.secondToTime)(e.currentTime)} / ${(0, a.secondToTime)(e.duration)}`; r !== t.innerText && (t.innerText = r) } r(); const o = ["video:loadedmetadata", "video:timeupdate", "video:progress"]; for (let t = 0; t < o.length; t++) e.on(o[t], r) } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], lMwFm: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { return e=>({ ...t, mounted: t=>{ const {proxy: r, icons: o} = e , n = (0, a.append)(t, o.volume) , i = (0, a.append)(t, o.volumeClose) , s = (0, a.append)(t, '
') , l = (0, a.append)(s, '
') , c = (0, a.append)(l, '
') , u = (0, a.append)(l, '
') , p = (0, a.append)(u, '
') , d = (0, a.append)(p, '
') , f = (0, a.append)(u, '
'); function h(t) { const {top: e, height: r} = u.getBoundingClientRect(); return 1 - (t.clientY - e) / r } function m() { if (e.muted || 0 === e.volume) (0, a.setStyle)(n, "display", "none"), (0, a.setStyle)(i, "display", "flex"), (0, a.setStyle)(f, "top", "100%"), (0, a.setStyle)(d, "top", "100%"), c.innerText = 0; else { const t = 100 * e.volume; (0, a.setStyle)(n, "display", "flex"), (0, a.setStyle)(i, "display", "none"), (0, a.setStyle)(f, "top", 100 - t + "%"), (0, a.setStyle)(d, "top", 100 - t + "%"), c.innerText = Math.floor(t) } } if (m(), e.on("video:volumechange", m), r(n, "click", (()=>{ e.muted = !0 } )), r(i, "click", (()=>{ e.muted = !1 } )), a.isMobile) (0, a.setStyle)(s, "display", "none"); else { let t = !1; r(u, "mousedown", (r=>{ t = 0 === r.button, e.volume = h(r) } )), e.on("document:mousemove", (r=>{ t && (e.muted = !1, e.volume = h(r)) } )), e.on("document:mouseup", (()=>{ t && (t = !1) } )) } } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "8BrCu": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { return e=>({ ...t, tooltip: e.i18n.get("Show Setting"), mounted: t=>{ const {proxy: r, icons: o, i18n: n} = e; (0, a.append)(t, o.setting), r(t, "click", (()=>{ e.setting.toggle(), e.setting.updateStyle() } )), e.on("setting", (e=>{ (0, a.tooltip)(t, n.get(e ? "Hide Setting" : "Show Setting")) } )) } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "2HiWx": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils") , o = t("./progress"); r.default = function(t) { return e=>({ ...t, mounted: t=>{ const {option: r, template: {$progress: n, $video: i}, events: {proxy: s, loadImg: l}} = e; let c = null , u = !1 , p = !1; s(n, "mousemove", (async s=>{ if (!u) { u = !0; const t = await l(r.thumbnails.url); c = t, p = !0 } p && ((0, a.setStyle)(t, "display", "flex"), function(s) { const {width: l} = (0, o.getPosFromEvent)(e, s) , {url: u, number: p, column: d, width: f, height: h} = r.thumbnails , m = f || c.naturalWidth / d , g = h || m / (i.videoWidth / i.videoHeight) , v = n.clientWidth / p , y = Math.floor(l / v) , b = Math.ceil(y / d) - 1 , x = y % d || d - 1; (0, a.setStyle)(t, "backgroundImage", `url(${u})`), (0, a.setStyle)(t, "height", `${g}px`), (0, a.setStyle)(t, "width", `${m}px`), (0, a.setStyle)(t, "backgroundPosition", `-${x * m}px -${b * g}px`), l <= m / 2 ? (0, a.setStyle)(t, "left", 0) : l > n.clientWidth - m / 2 ? (0, a.setStyle)(t, "left", n.clientWidth - m + "px") : (0, a.setStyle)(t, "left", l - m / 2 + "px") }(s)) } )), s(n, "mouseleave", (()=>{ (0, a.setStyle)(t, "display", "none") } )), e.on("hover", (e=>{ e || (0, a.setStyle)(t, "display", "none") } )) } }) } } , { "../utils": "h3rH9", "./progress": "aBBSH", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], c1GeG: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { return e=>({ ...t, tooltip: e.i18n.get("Screenshot"), mounted: t=>{ const {proxy: r, icons: o} = e; (0, a.append)(t, o.screenshot), r(t, "click", (()=>{ e.screenshot() } )) } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "6GRju": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { return e=>({ ...t, tooltip: e.i18n.get("AirPlay"), mounted: t=>{ const {proxy: r, icons: o} = e; (0, a.append)(t, o.airplay), r(t, "click", (()=>e.airplay())) } }) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "7iUum": [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r); var o = t("../utils") , n = t("../utils/component") , i = a.interopDefault(n) , s = t("./playbackRate") , l = a.interopDefault(s) , c = t("./aspectRatio") , u = a.interopDefault(c) , p = t("./flip") , d = a.interopDefault(p) , f = t("./info") , h = a.interopDefault(f) , m = t("./version") , g = a.interopDefault(m) , v = t("./close") , y = a.interopDefault(v); class b extends i.default { constructor(t) { super(t), this.name = "contextmenu", this.$parent = t.template.$contextmenu, o.isMobile || this.init() } init() { const {option: t, proxy: e, template: {$player: r, $contextmenu: a}} = this.art; t.playbackRate && this.add((0, l.default)({ name: "playbackRate", index: 10 })), t.aspectRatio && this.add((0, u.default)({ name: "aspectRatio", index: 20 })), t.flip && this.add((0, d.default)({ name: "flip", index: 30 })), this.add((0, h.default)({ name: "info", index: 40 })), this.add((0, g.default)({ name: "version", index: 50 })), this.add((0, y.default)({ name: "close", index: 60 })); for (let e = 0; e < t.contextmenu.length; e++) this.add(t.contextmenu[e]); e(r, "contextmenu", (t=>{ if (t.preventDefault(), !this.art.constructor.CONTEXTMENU) return; this.show = !0; const e = t.clientX , n = t.clientY , {height: i, width: s, left: l, top: c} = r.getBoundingClientRect() , {height: u, width: p} = a.getBoundingClientRect(); let d = e - l , f = n - c; e + p > l + s && (d = s - p), n + u > c + i && (f = i - u), (0, o.setStyles)(a, { top: `${f}px`, left: `${d}px` }) } )), e(r, "click", (t=>{ (0, o.includeFromEvent)(t, a) || (this.show = !1) } )), this.art.on("blur", (()=>{ this.show = !1 } )) } } r.default = b } , { "../utils": "h3rH9", "../utils/component": "guki8", "./playbackRate": "f1W36", "./aspectRatio": "afxZC", "./flip": "9jCuX", "./info": "k8wIZ", "./version": "bb0TU", "./close": "9zTkI", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], f1W36: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { return e=>{ const {i18n: r, constructor: {PLAYBACK_RATE: o}} = e , n = o.map((t=>`${1 === t ? r.get("Normal") : t.toFixed(1)}`)).join(""); return { ...t, html: `${r.get("Play Speed")}: ${n}`, click: (t,r)=>{ const {value: a} = r.target.dataset; a && (e.playbackRate = Number(a), t.show = !1) } , mounted: t=>{ const r = (0, a.query)('[data-value="1"]', t); r && (0, a.inverseClass)(r, "art-current"), e.on("video:ratechange", (()=>{ const r = (0, a.queryAll)("span", t).find((t=>Number(t.dataset.value) === e.playbackRate)); r && (0, a.inverseClass)(r, "art-current") } )) } } } } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], afxZC: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { return e=>{ const {i18n: r, constructor: {ASPECT_RATIO: o}} = e , n = o.map((t=>`${"default" === t ? r.get("Default") : t}`)).join(""); return { ...t, html: `${r.get("Aspect Ratio")}: ${n}`, click: (t,r)=>{ const {value: a} = r.target.dataset; a && (e.aspectRatio = a, t.show = !1) } , mounted: t=>{ const r = (0, a.query)('[data-value="default"]', t); r && (0, a.inverseClass)(r, "art-current"), e.on("aspectRatio", (e=>{ const r = (0, a.queryAll)("span", t).find((t=>t.dataset.value === e)); r && (0, a.inverseClass)(r, "art-current") } )) } } } } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "9jCuX": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { return e=>{ const {i18n: r, constructor: {FLIP: o}} = e , n = o.map((t=>`${r.get((0, a.capitalize)(t))}`)).join(""); return { ...t, html: `${r.get("Video Flip")}: ${n}`, click: (t,r)=>{ const {value: a} = r.target.dataset; a && (e.flip = a.toLowerCase(), t.show = !1) } , mounted: t=>{ const r = (0, a.query)('[data-value="normal"]', t); r && (0, a.inverseClass)(r, "art-current"), e.on("flip", (e=>{ const r = (0, a.queryAll)("span", t).find((t=>t.dataset.value === e)); r && (0, a.inverseClass)(r, "art-current") } )) } } } } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], k8wIZ: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r), r.default = function(t) { return e=>({ ...t, html: e.i18n.get("Video Info"), click: t=>{ e.info.show = !0, t.show = !1 } }) } } , { "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], bb0TU: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r), r.default = function(t) { return { ...t, html: 'ArtPlayer 5.1.1' } } } , { "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "9zTkI": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r), r.default = function(t) { return e=>({ ...t, html: e.i18n.get("Close"), click: t=>{ t.show = !1 } }) } } , { "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], hD2Lg: [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r); var o = t("./utils") , n = t("./utils/component") , i = a.interopDefault(n); class s extends i.default { constructor(t) { super(t), this.name = "info", o.isMobile || this.init() } init() { const {proxy: t, constructor: e, template: {$infoPanel: r, $infoClose: a, $video: n}} = this.art; t(a, "click", (()=>{ this.show = !1 } )); let i = null; const s = (0, o.queryAll)("[data-video]", r) || []; this.art.on("destroy", (()=>clearTimeout(i))), function t() { for (let t = 0; t < s.length; t++) { const e = s[t] , r = n[e.dataset.video] , a = "number" == typeof r ? r.toFixed(2) : r; e.innerText !== a && (e.innerText = a) } i = setTimeout(t, e.INFO_LOOP_TIME) }() } } r.default = s } , { "./utils": "h3rH9", "./utils/component": "guki8", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], lum0D: [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r); var o = t("./utils") , n = t("./utils/component") , i = a.interopDefault(n) , s = t("option-validator") , l = a.interopDefault(s) , c = t("./scheme") , u = a.interopDefault(c); class p extends i.default { constructor(t) { super(t), this.name = "subtitle", this.eventDestroy = ()=>null, this.init(t.option.subtitle); let e = !1; t.on("video:timeupdate", (()=>{ if (!this.url) return; const t = this.art.template.$video.webkitDisplayingFullscreen; "boolean" == typeof t && t !== e && (e = t, this.createTrack(t ? "subtitles" : "metadata", this.url)) } )) } get url() { return this.art.template.$track.src } set url(t) { this.switch(t) } get textTrack() { return this.art.template.$video.textTracks[0] } get activeCue() { return this.textTrack.activeCues[0] } style(t, e) { const {$subtitle: r} = this.art.template; return "object" == typeof t ? (0, o.setStyles)(r, t) : (0, o.setStyle)(r, t, e) } update() { const {$subtitle: t} = this.art.template; t.innerHTML = "", this.activeCue && (this.art.option.subtitle.escape ? t.innerHTML = this.activeCue.text.split(/\r?\n/).map((t=>`
${(0, o.escape)(t)}
`)).join("") : t.innerHTML = this.activeCue.text, this.art.emit("subtitleUpdate", this.activeCue.text)) } async switch(t, e={}) { const {i18n: r, notice: a, option: o} = this.art , n = { ...o.subtitle, ...e, url: t } , i = await this.init(n); return e.name && (a.show = `${r.get("Switch Subtitle")}: ${e.name}`), i } createTrack(t, e) { const {template: r, proxy: a, option: n} = this.art , {$video: i, $track: s} = r , l = (0, o.createElement)("track"); l.default = !0, l.kind = t, l.src = e, l.label = n.subtitle.name || "Artplayer", l.track.mode = "hidden", this.eventDestroy(), (0, o.remove)(s), (0, o.append)(i, l), r.$track = l, this.eventDestroy = a(this.textTrack, "cuechange", (()=>this.update())) } async init(t) { const {notice: e, template: {$subtitle: r}} = this.art; if ((0, l.default)(t, u.default.subtitle), t.url) return this.style(t.style), fetch(t.url).then((t=>t.arrayBuffer())).then((e=>{ const r = new TextDecoder(t.encoding).decode(e); switch (this.art.emit("subtitleLoad", t.url), t.type || (0, o.getExt)(t.url)) { case "srt": { const e = (0, o.srtToVtt)(r) , a = t.onVttLoad(e); return (0, o.vttToBlob)(a) } case "ass": { const e = (0, o.assToVtt)(r) , a = t.onVttLoad(e); return (0, o.vttToBlob)(a) } case "vtt": { const e = t.onVttLoad(r); return (0, o.vttToBlob)(e) } default: return t.url } } )).then((t=>(r.innerHTML = "", this.url === t || (URL.revokeObjectURL(this.url), this.createTrack("metadata", t), this.art.emit("subtitleSwitch", t)), t))).catch((t=>{ throw r.innerHTML = "", e.show = t, t } )) } } r.default = p } , { "./utils": "h3rH9", "./utils/component": "guki8", "option-validator": "bAWi2", "./scheme": "AdvwB", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "1Epl5": [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r); var o = t("../utils/error") , n = t("./clickInit") , i = a.interopDefault(n) , s = t("./hoverInit") , l = a.interopDefault(s) , c = t("./moveInit") , u = a.interopDefault(c) , p = t("./resizeInit") , d = a.interopDefault(p) , f = t("./gestureInit") , h = a.interopDefault(f) , m = t("./viewInit") , g = a.interopDefault(m) , v = t("./documentInit") , y = a.interopDefault(v) , b = t("./updateInit") , x = a.interopDefault(b); r.default = class { constructor(t) { this.destroyEvents = [], this.proxy = this.proxy.bind(this), this.hover = this.hover.bind(this), this.loadImg = this.loadImg.bind(this), (0, i.default)(t, this), (0, l.default)(t, this), (0, u.default)(t, this), (0, d.default)(t, this), (0, h.default)(t, this), (0, g.default)(t, this), (0, y.default)(t, this), (0, x.default)(t, this) } proxy(t, e, r, a={}) { if (Array.isArray(e)) return e.map((e=>this.proxy(t, e, r, a))); t.addEventListener(e, r, a); const o = ()=>t.removeEventListener(e, r, a); return this.destroyEvents.push(o), o } hover(t, e, r) { e && this.proxy(t, "mouseenter", e), r && this.proxy(t, "mouseleave", r) } loadImg(t) { return new Promise(((e,r)=>{ let a; if (t instanceof HTMLImageElement) a = t; else { if ("string" != typeof t) return r(new (0, o.ArtPlayerError)("Unable to get Image")); a = new Image, a.src = t } if (a.complete) return e(a); this.proxy(a, "load", (()=>e(a))), this.proxy(a, "error", (()=>r(new (0, o.ArtPlayerError)(`Failed to load Image: ${a.src}`)))) } )) } remove(t) { const e = this.destroyEvents.indexOf(t); e > -1 && (t(), this.destroyEvents.splice(e, 1)) } destroy() { for (let t = 0; t < this.destroyEvents.length; t++) this.destroyEvents[t]() } } } , { "../utils/error": "2nFlF", "./clickInit": "gzL6e", "./hoverInit": "kpTJf", "./moveInit": "ef6qz", "./resizeInit": "9TXOX", "./gestureInit": "dePMU", "./viewInit": "hDyWF", "./documentInit": "7RjDP", "./updateInit": "8SmBT", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], gzL6e: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t, e) { const {constructor: r, template: {$player: o, $video: n}} = t; e.proxy(document, ["click", "contextmenu"], (e=>{ (0, a.includeFromEvent)(e, o) ? (t.isInput = "INPUT" === e.target.tagName, t.isFocus = !0, t.emit("focus", e)) : (t.isInput = !1, t.isFocus = !1, t.emit("blur", e)) } )); let i = 0; e.proxy(n, "click", (e=>{ const o = Date.now() , {MOBILE_CLICK_PLAY: n, DBCLICK_TIME: s, MOBILE_DBCLICK_PLAY: l, DBCLICK_FULLSCREEN: c} = r; o - i <= s ? (t.emit("dblclick", e), a.isMobile ? !t.isLock && l && t.toggle() : c && (t.fullscreen = !t.fullscreen)) : (t.emit("click", e), a.isMobile ? !t.isLock && n && t.toggle() : t.toggle()), i = o } )) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], kpTJf: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t, e) { const {$player: r} = t.template; e.hover(r, (e=>{ (0, a.addClass)(r, "art-hover"), t.emit("hover", !0, e) } ), (e=>{ (0, a.removeClass)(r, "art-hover"), t.emit("hover", !1, e) } )) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], ef6qz: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r), r.default = function(t, e) { const {$player: r} = t.template; e.proxy(r, "mousemove", (e=>{ t.emit("mousemove", e) } )) } } , { "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "9TXOX": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t, e) { const {option: r, constructor: o} = t; t.on("resize", (()=>{ const {aspectRatio: e, notice: a} = t; "standard" === t.state && r.autoSize && t.autoSize(), t.aspectRatio = e, a.show = "" } )); const n = (0, a.debounce)((()=>t.emit("resize")), o.RESIZE_TIME); e.proxy(window, ["orientationchange", "resize"], (()=>n())), screen && screen.orientation && screen.orientation.onchange && e.proxy(screen.orientation, "change", (()=>n())) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], dePMU: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils") , o = t("../control/progress"); function n(t, e, r, a) { var o = e - a , n = r - t , i = 0; if (Math.abs(n) < 2 && Math.abs(o) < 2) return i; var s = function(t, e) { return 180 * Math.atan2(e, t) / Math.PI }(n, o); return s >= -45 && s < 45 ? i = 4 : s >= 45 && s < 135 ? i = 1 : s >= -135 && s < -45 ? i = 2 : (s >= 135 && s <= 180 || s >= -180 && s < -135) && (i = 3), i } r.default = function(t, e) { if (a.isMobile && !t.option.isLive) { const {$video: r, $progress: i} = t.template; let s = null , l = !1 , c = 0 , u = 0 , p = 0; const d = e=>{ if (1 === e.touches.length && !t.isLock) { s === i && (0, o.setCurrentTime)(t, e), l = !0; const {pageX: r, pageY: a} = e.touches[0]; c = r, u = a, p = t.currentTime } } , f = e=>{ if (1 === e.touches.length && l && t.duration) { const {pageX: o, pageY: i} = e.touches[0] , l = n(c, u, o, i) , d = [3, 4].includes(l) , f = [1, 2].includes(l); if (d && !t.isRotate || f && t.isRotate) { const e = (0, a.clamp)((o - c) / t.width, -1, 1) , n = (0, a.clamp)((i - u) / t.height, -1, 1) , l = t.isRotate ? n : e , d = s === r ? t.constructor.TOUCH_MOVE_RATIO : 1 , f = (0, a.clamp)(p + t.duration * l * d, 0, t.duration); t.seek = f, t.emit("setBar", "played", (0, a.clamp)(f / t.duration, 0, 1)), t.notice.show = `${(0, a.secondToTime)(f)} / ${(0, a.secondToTime)(t.duration)}` } } } , h = ()=>{ l && (c = 0, u = 0, p = 0, l = !1, s = null) } ; e.proxy(i, "touchstart", (t=>{ s = i, d(t) } )), e.proxy(r, "touchstart", (t=>{ s = r, d(t) } )), e.proxy(r, "touchmove", f), e.proxy(i, "touchmove", f), e.proxy(document, "touchend", h) } } } , { "../utils": "h3rH9", "../control/progress": "aBBSH", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], hDyWF: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t, e) { const {option: r, constructor: o, template: {$container: n}} = t , i = (0, a.throttle)((()=>{ t.emit("view", (0, a.isInViewport)(n, o.SCROLL_GAP)) } ), o.SCROLL_TIME); e.proxy(window, "scroll", (()=>i())), t.on("view", (e=>{ r.autoMini && (t.mini = !e) } )) } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "7RjDP": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r), r.default = function(t, e) { e.proxy(document, "mousemove", (e=>{ t.emit("document:mousemove", e) } )), e.proxy(document, "mouseup", (e=>{ t.emit("document:mouseup", e) } )) } } , { "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "8SmBT": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r), r.default = function(t) { if (t.constructor.USE_RAF) { let e = null; !function r() { t.playing && t.emit("raf"), t.isDestroy || (e = requestAnimationFrame(r)) }(), t.on("destroy", (()=>{ cancelAnimationFrame(e) } )) } } } , { "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], eTow4: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("./utils"); r.default = class { constructor(t) { this.art = t, this.keys = {}, t.option.hotkey && !a.isMobile && this.init() } init() { const {proxy: t, constructor: e} = this.art; this.add(27, (()=>{ this.art.fullscreenWeb && (this.art.fullscreenWeb = !1) } )), this.add(32, (()=>{ this.art.toggle() } )), this.add(37, (()=>{ this.art.backward = e.SEEK_STEP } )), this.add(38, (()=>{ this.art.volume += e.VOLUME_STEP } )), this.add(39, (()=>{ this.art.forward = e.SEEK_STEP } )), this.add(40, (()=>{ this.art.volume -= e.VOLUME_STEP } )), t(window, "keydown", (t=>{ if (this.art.isFocus) { const e = document.activeElement.tagName.toUpperCase() , r = document.activeElement.getAttribute("contenteditable"); if (!("INPUT" === e || "TEXTAREA" === e || "" === r || "true" === r || t.altKey || t.ctrlKey || t.metaKey || t.shiftKey)) { const e = this.keys[t.keyCode]; if (e) { t.preventDefault(); for (let r = 0; r < e.length; r++) e[r].call(this.art, t); this.art.emit("hotkey", t) } } } } )) } add(t, e) { return this.keys[t] ? this.keys[t].push(e) : this.keys[t] = [e], this } remove(t, e) { if (this.keys[t]) { const r = this.keys[t].indexOf(e); -1 !== r && this.keys[t].splice(r, 1) } return this } } } , { "./utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "4fDoD": [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r); var o = t("./utils/component") , n = a.interopDefault(o); class i extends n.default { constructor(t) { super(t); const {option: e, template: {$layer: r}} = t; this.name = "layer", this.$parent = r; for (let t = 0; t < e.layers.length; t++) this.add(e.layers[t]) } } r.default = i } , { "./utils/component": "guki8", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], fE0Sp: [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r); var o = t("./utils") , n = t("./utils/component") , i = a.interopDefault(n); class s extends i.default { constructor(t) { super(t), this.name = "loading", (0, o.append)(t.template.$loading, t.icons.loading) } } r.default = s } , { "./utils": "h3rH9", "./utils/component": "guki8", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "9PuGy": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("./utils"); r.default = class { constructor(t) { this.art = t, this.timer = null } set show(t) { const {constructor: e, template: {$player: r, $noticeInner: o}} = this.art; t ? (o.innerText = t instanceof Error ? t.message.trim() : t, (0, a.addClass)(r, "art-notice-show"), clearTimeout(this.timer), this.timer = setTimeout((()=>{ o.innerText = "", (0, a.removeClass)(r, "art-notice-show") } ), e.NOTICE_TIME)) : (0, a.removeClass)(r, "art-notice-show") } } } , { "./utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "2etr0": [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r); var o = t("./utils") , n = t("./utils/component") , i = a.interopDefault(n); class s extends i.default { constructor(t) { super(t), this.name = "mask"; const {template: e, icons: r, events: a} = t , n = (0, o.append)(e.$state, r.state) , i = (0, o.append)(e.$state, r.error); (0, o.setStyle)(i, "display", "none"), t.on("destroy", (()=>{ (0, o.setStyle)(n, "display", "none"), (0, o.setStyle)(i, "display", null) } )), a.proxy(e.$state, "click", (()=>t.play())) } } r.default = s } , { "./utils": "h3rH9", "./utils/component": "guki8", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "6dYSr": [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r); var o = t("../utils") , n = t("bundle-text:./loading.svg") , i = a.interopDefault(n) , s = t("bundle-text:./state.svg") , l = a.interopDefault(s) , c = t("bundle-text:./check.svg") , u = a.interopDefault(c) , p = t("bundle-text:./play.svg") , d = a.interopDefault(p) , f = t("bundle-text:./pause.svg") , h = a.interopDefault(f) , m = t("bundle-text:./volume.svg") , g = a.interopDefault(m) , v = t("bundle-text:./volume-close.svg") , y = a.interopDefault(v) , b = t("bundle-text:./screenshot.svg") , x = a.interopDefault(b) , w = t("bundle-text:./setting.svg") , j = a.interopDefault(w) , k = t("bundle-text:./arrow-left.svg") , $ = a.interopDefault(k) , S = t("bundle-text:./arrow-right.svg") , I = a.interopDefault(S) , T = t("bundle-text:./playback-rate.svg") , E = a.interopDefault(T) , O = t("bundle-text:./aspect-ratio.svg") , M = a.interopDefault(O) , C = t("bundle-text:./config.svg") , F = a.interopDefault(C) , H = t("bundle-text:./pip.svg") , B = a.interopDefault(H) , D = t("bundle-text:./lock.svg") , A = a.interopDefault(D) , R = t("bundle-text:./unlock.svg") , z = a.interopDefault(R) , L = t("bundle-text:./fullscreen-off.svg") , P = a.interopDefault(L) , N = t("bundle-text:./fullscreen-on.svg") , _ = a.interopDefault(N) , Z = t("bundle-text:./fullscreen-web-off.svg") , q = a.interopDefault(Z) , V = t("bundle-text:./fullscreen-web-on.svg") , W = a.interopDefault(V) , U = t("bundle-text:./switch-on.svg") , Y = a.interopDefault(U) , K = t("bundle-text:./switch-off.svg") , G = a.interopDefault(K) , X = t("bundle-text:./flip.svg") , J = a.interopDefault(X) , Q = t("bundle-text:./error.svg") , tt = a.interopDefault(Q) , et = t("bundle-text:./close.svg") , rt = a.interopDefault(et) , at = t("bundle-text:./airplay.svg") , ot = a.interopDefault(at); r.default = class { constructor(t) { const e = { loading: i.default, state: l.default, play: d.default, pause: h.default, check: u.default, volume: g.default, volumeClose: y.default, screenshot: x.default, setting: j.default, pip: B.default, arrowLeft: $.default, arrowRight: I.default, playbackRate: E.default, aspectRatio: M.default, config: F.default, lock: A.default, flip: J.default, unlock: z.default, fullscreenOff: P.default, fullscreenOn: _.default, fullscreenWebOff: q.default, fullscreenWebOn: W.default, switchOn: Y.default, switchOff: G.default, error: tt.default, close: rt.default, airplay: ot.default, ...t.option.icons }; for (const t in e) (0, o.def)(this, t, { get: ()=>(0, o.getIcon)(t, e[t]) }) } } } , { "../utils": "h3rH9", "bundle-text:./loading.svg": "fY5Gt", "bundle-text:./state.svg": "iNfLt", "bundle-text:./check.svg": "jtE9u", "bundle-text:./play.svg": "elgfY", "bundle-text:./pause.svg": "eKokJ", "bundle-text:./volume.svg": "hNB4y", "bundle-text:./volume-close.svg": "i9vta", "bundle-text:./screenshot.svg": "kB3Mf", "bundle-text:./setting.svg": "3MONs", "bundle-text:./arrow-left.svg": "iMCpk", "bundle-text:./arrow-right.svg": "3oe4L", "bundle-text:./playback-rate.svg": "liE22", "bundle-text:./aspect-ratio.svg": "8HqYc", "bundle-text:./config.svg": "hYAAH", "bundle-text:./pip.svg": "jmNrH", "bundle-text:./lock.svg": "cIqko", "bundle-text:./unlock.svg": "65zy4", "bundle-text:./fullscreen-off.svg": "jaJRT", "bundle-text:./fullscreen-on.svg": "cRY1X", "bundle-text:./fullscreen-web-off.svg": "3aVGL", "bundle-text:./fullscreen-web-on.svg": "4DiVn", "bundle-text:./switch-on.svg": "kwdKE", "bundle-text:./switch-off.svg": "bWfXZ", "bundle-text:./flip.svg": "h3zZ9", "bundle-text:./error.svg": "7Oyth", "bundle-text:./close.svg": "U5Jcy", "bundle-text:./airplay.svg": "jK5Fx", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], fY5Gt: [function(t, e, r) { e.exports = '' } , {}], iNfLt: [function(t, e, r) { e.exports = '' } , {}], jtE9u: [function(t, e, r) { e.exports = '' } , {}], elgfY: [function(t, e, r) { e.exports = '' } , {}], eKokJ: [function(t, e, r) { e.exports = '' } , {}], hNB4y: [function(t, e, r) { e.exports = '' } , {}], i9vta: [function(t, e, r) { e.exports = '' } , {}], kB3Mf: [function(t, e, r) { e.exports = '' } , {}], "3MONs": [function(t, e, r) { e.exports = '' } , {}], iMCpk: [function(t, e, r) { e.exports = '' } , {}], "3oe4L": [function(t, e, r) { e.exports = '' } , {}], liE22: [function(t, e, r) { e.exports = '' } , {}], "8HqYc": [function(t, e, r) { e.exports = '' } , {}], hYAAH: [function(t, e, r) { e.exports = '' } , {}], jmNrH: [function(t, e, r) { e.exports = '' } , {}], cIqko: [function(t, e, r) { e.exports = '' } , {}], "65zy4": [function(t, e, r) { e.exports = '' } , {}], jaJRT: [function(t, e, r) { e.exports = '' } , {}], cRY1X: [function(t, e, r) { e.exports = '' } , {}], "3aVGL": [function(t, e, r) { e.exports = '' } , {}], "4DiVn": [function(t, e, r) { e.exports = '' } , {}], kwdKE: [function(t, e, r) { e.exports = '' } , {}], bWfXZ: [function(t, e, r) { e.exports = '' } , {}], h3zZ9: [function(t, e, r) { e.exports = '' } , {}], "7Oyth": [function(t, e, r) { e.exports = '' } , {}], U5Jcy: [function(t, e, r) { e.exports = '' } , {}], jK5Fx: [function(t, e, r) { e.exports = '' } , {}], bRHiA: [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r); var o = t("./flip") , n = a.interopDefault(o) , i = t("./aspectRatio") , s = a.interopDefault(i) , l = t("./playbackRate") , c = a.interopDefault(l) , u = t("./subtitleOffset") , p = a.interopDefault(u) , d = t("../utils/component") , f = a.interopDefault(d) , h = t("../utils/error") , m = t("../utils"); class g extends f.default { constructor(t) { super(t); const {option: e, controls: r, template: {$setting: a}} = t; this.name = "setting", this.$parent = a, this.option = [], this.events = [], this.cache = new Map, e.setting && (this.init(), t.on("blur", (()=>{ this.show && (this.show = !1, this.render(this.option)) } )), t.on("focus", (t=>{ const e = (0, m.includeFromEvent)(t, r.setting) , a = (0, m.includeFromEvent)(t, this.$parent); !this.show || e || a || (this.show = !1, this.render(this.option)) } ))) } static makeRecursion(t, e, r) { for (let a = 0; a < t.length; a++) { const o = t[a]; o.$parentItem = e, o.$parentList = r, g.makeRecursion(o.selector || [], o, t) } return t } get defaultSettings() { const t = [] , {option: e} = this.art; return e.playbackRate && t.push((0, c.default)(this.art)), e.aspectRatio && t.push((0, s.default)(this.art)), e.flip && t.push((0, n.default)(this.art)), e.subtitleOffset && t.push((0, p.default)(this.art)), t } init() { const {option: t} = this.art , e = [...this.defaultSettings, ...t.settings]; this.option = g.makeRecursion(e), this.destroy(), this.render(this.option) } destroy() { for (let t = 0; t < this.events.length; t++) this.art.events.remove(this.events[t]); this.$parent.innerHTML = "", this.events = [], this.cache = new Map } find(t="", e=this.option) { for (let r = 0; r < e.length; r++) { const a = e[r]; if (a.name === t) return a; { const e = this.find(t, a.selector || []); if (e) return e } } } remove(t) { const e = this.find(t); (0, h.errorHandle)(e, `Can't find [${t}] from the [setting]`); const r = e.$parentItem ? e.$parentItem.selector : this.option; return r.splice(r.indexOf(e), 1), this.option = g.makeRecursion(this.option), this.destroy(), this.render(this.option), this.option } update(t) { const e = this.find(t.name); return e ? (Object.assign(e, t), this.option = g.makeRecursion(this.option), this.destroy(), this.render(this.option)) : this.add(t), this.option } add(t) { return this.option.push(t), this.option = g.makeRecursion(this.option), this.destroy(), this.render(this.option), this.option } creatHeader(t) { const {icons: e, proxy: r, constructor: a} = this.art , o = (0, m.createElement)("div"); (0, m.setStyle)(o, "height", `${a.SETTING_ITEM_HEIGHT}px`), (0, m.addClass)(o, "art-setting-item"), (0, m.addClass)(o, "art-setting-item-back"); const n = (0, m.append)(o, '
') , i = (0, m.createElement)("div"); (0, m.addClass)(i, "art-setting-item-left-icon"), (0, m.append)(i, e.arrowLeft), (0, m.append)(n, i), (0, m.append)(n, t.$parentItem.html); const s = r(o, "click", (()=>this.render(t.$parentList))); return this.events.push(s), o } creatItem(t, e) { const {icons: r, proxy: a, constructor: o} = this.art , n = (0, m.createElement)("div"); (0, m.addClass)(n, "art-setting-item"), (0, m.setStyle)(n, "height", `${o.SETTING_ITEM_HEIGHT}px`), (0, m.isStringOrNumber)(e.name) && (n.dataset.name = e.name), (0, m.isStringOrNumber)(e.value) && (n.dataset.value = e.value); const i = (0, m.append)(n, '
') , s = (0, m.append)(n, '
') , l = (0, m.createElement)("div"); switch ((0, m.addClass)(l, "art-setting-item-left-icon"), t) { case "switch": case "range": (0, m.append)(l, (0, m.isStringOrNumber)(e.icon) || e.icon instanceof Element ? e.icon : r.config); break; case "selector": e.selector && e.selector.length ? (0, m.append)(l, (0, m.isStringOrNumber)(e.icon) || e.icon instanceof Element ? e.icon : r.config) : (0, m.append)(l, r.check) } (0, m.append)(i, l), e.$icon = l, (0, m.def)(e, "icon", { configurable: !0, get: ()=>l.innerHTML, set(t) { (0, m.isStringOrNumber)(t) && (l.innerHTML = t) } }); const c = (0, m.createElement)("div"); (0, m.addClass)(c, "art-setting-item-left-text"), (0, m.append)(c, e.html || ""), (0, m.append)(i, c), e.$html = c, (0, m.def)(e, "html", { configurable: !0, get: ()=>c.innerHTML, set(t) { (0, m.isStringOrNumber)(t) && (c.innerHTML = t) } }); const u = (0, m.createElement)("div"); switch ((0, m.addClass)(u, "art-setting-item-right-tooltip"), (0, m.append)(u, e.tooltip || ""), (0, m.append)(s, u), e.$tooltip = u, (0, m.def)(e, "tooltip", { configurable: !0, get: ()=>u.innerHTML, set(t) { (0, m.isStringOrNumber)(t) && (u.innerHTML = t) } }), t) { case "switch": { const t = (0, m.createElement)("div"); (0, m.addClass)(t, "art-setting-item-right-icon"); const a = (0, m.append)(t, r.switchOn) , o = (0, m.append)(t, r.switchOff); (0, m.setStyle)(e.switch ? o : a, "display", "none"), (0, m.append)(s, t), e.$switch = e.switch, (0, m.def)(e, "switch", { configurable: !0, get: ()=>e.$switch, set(t) { e.$switch = t, t ? ((0, m.setStyle)(o, "display", "none"), (0, m.setStyle)(a, "display", null)) : ((0, m.setStyle)(o, "display", null), (0, m.setStyle)(a, "display", "none")) } }); break } case "range": { const t = (0, m.createElement)("div"); (0, m.addClass)(t, "art-setting-item-right-icon"); const r = (0, m.append)(t, ''); r.value = e.range[0] || 0, r.min = e.range[1] || 0, r.max = e.range[2] || 10, r.step = e.range[3] || 1, (0, m.addClass)(r, "art-setting-range"), (0, m.append)(s, t), e.$range = r, (0, m.def)(e, "range", { configurable: !0, get: ()=>r.valueAsNumber, set(t) { r.value = Number(t) } }) } break; case "selector": if (e.selector && e.selector.length) { const t = (0, m.createElement)("div"); (0, m.addClass)(t, "art-setting-item-right-icon"), (0, m.append)(t, r.arrowRight), (0, m.append)(s, t) } } switch (t) { case "switch": if (e.onSwitch) { const t = a(n, "click", (async t=>{ e.switch = await e.onSwitch.call(this.art, e, n, t) } )); this.events.push(t) } break; case "range": if (e.$range) { if (e.onRange) { const t = a(e.$range, "change", (async t=>{ e.tooltip = await e.onRange.call(this.art, e, n, t) } )); this.events.push(t) } if (e.onChange) { const t = a(e.$range, "input", (async t=>{ e.tooltip = await e.onChange.call(this.art, e, n, t) } )); this.events.push(t) } } break; case "selector": { const t = a(n, "click", (async t=>{ if (e.selector && e.selector.length) this.render(e.selector, e.width); else { (0, m.inverseClass)(n, "art-current"); for (let t = 0; t < e.$parentItem.selector.length; t++) { const r = e.$parentItem.selector[t]; r.default = r === e } if (e.$parentList && this.render(e.$parentList), e.$parentItem && e.$parentItem.onSelect) { const r = await e.$parentItem.onSelect.call(this.art, e, n, t); e.$parentItem.$tooltip && (0, m.isStringOrNumber)(r) && (e.$parentItem.$tooltip.innerHTML = r) } } } )); this.events.push(t), e.default && (0, m.addClass)(n, "art-current") } } return n } updateStyle(t) { const {controls: e, constructor: r, template: {$player: a, $setting: o}} = this.art; if (e.setting && !m.isMobile) { const n = t || r.SETTING_WIDTH , {left: i, width: s} = e.setting.getBoundingClientRect() , {left: l, width: c} = a.getBoundingClientRect() , u = i - l + s / 2 - n / 2; u + n > c ? ((0, m.setStyle)(o, "left", null), (0, m.setStyle)(o, "right", null)) : ((0, m.setStyle)(o, "left", `${u}px`), (0, m.setStyle)(o, "right", "auto")) } } render(t, e) { const {constructor: r} = this.art; if (this.cache.has(t)) { const e = this.cache.get(t); (0, m.inverseClass)(e, "art-current"), (0, m.setStyle)(this.$parent, "width", `${e.dataset.width}px`), (0, m.setStyle)(this.$parent, "height", `${e.dataset.height}px`), this.updateStyle(Number(e.dataset.width)) } else { const a = (0, m.createElement)("div"); (0, m.addClass)(a, "art-setting-panel"), a.dataset.width = e || r.SETTING_WIDTH, a.dataset.height = t.length * r.SETTING_ITEM_HEIGHT, t[0] && t[0].$parentItem && ((0, m.append)(a, this.creatHeader(t[0])), a.dataset.height = Number(a.dataset.height) + r.SETTING_ITEM_HEIGHT); for (let e = 0; e < t.length; e++) { const r = t[e]; (0, m.has)(r, "switch") ? (0, m.append)(a, this.creatItem("switch", r)) : (0, m.has)(r, "range") ? (0, m.append)(a, this.creatItem("range", r)) : (0, m.append)(a, this.creatItem("selector", r)) } (0, m.append)(this.$parent, a), this.cache.set(t, a), (0, m.inverseClass)(a, "art-current"), (0, m.setStyle)(this.$parent, "width", `${a.dataset.width}px`), (0, m.setStyle)(this.$parent, "height", `${a.dataset.height}px`), this.updateStyle(Number(a.dataset.width)), t[0] && t[0].$parentItem && t[0].$parentItem.mounted && t[0].$parentItem.mounted.call(this.art, a, t[0].$parentItem) } } } r.default = g } , { "./flip": "bNOaj", "./aspectRatio": "5lAsp", "./playbackRate": "e6hsR", "./subtitleOffset": "fFNEr", "../utils/component": "guki8", "../utils/error": "2nFlF", "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], bNOaj: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {i18n: e, icons: r, constructor: {SETTING_ITEM_WIDTH: o, FLIP: n}} = t; function i(t, r, o) { r && (r.innerText = e.get((0, a.capitalize)(o))); const n = (0, a.queryAll)(".art-setting-item", t).find((t=>t.dataset.value === o)); n && (0, a.inverseClass)(n, "art-current") } return { width: o, name: "flip", html: e.get("Video Flip"), tooltip: e.get((0, a.capitalize)(t.flip)), icon: r.flip, selector: n.map((r=>({ value: r, name: `aspect-ratio-${r}`, default: r === t.flip, html: e.get((0, a.capitalize)(r)) }))), onSelect: e=>(t.flip = e.value, e.html), mounted: (e,r)=>{ i(e, r.$tooltip, t.flip), t.on("flip", (()=>{ i(e, r.$tooltip, t.flip) } )) } } } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "5lAsp": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {i18n: e, icons: r, constructor: {SETTING_ITEM_WIDTH: o, ASPECT_RATIO: n}} = t; function i(t) { return "default" === t ? e.get("Default") : t } function s(t, e, r) { e && (e.innerText = i(r)); const o = (0, a.queryAll)(".art-setting-item", t).find((t=>t.dataset.value === r)); o && (0, a.inverseClass)(o, "art-current") } return { width: o, name: "aspect-ratio", html: e.get("Aspect Ratio"), icon: r.aspectRatio, tooltip: i(t.aspectRatio), selector: n.map((e=>({ value: e, name: `aspect-ratio-${e}`, default: e === t.aspectRatio, html: i(e) }))), onSelect: e=>(t.aspectRatio = e.value, e.html), mounted: (e,r)=>{ s(e, r.$tooltip, t.aspectRatio), t.on("aspectRatio", (()=>{ s(e, r.$tooltip, t.aspectRatio) } )) } } } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], e6hsR: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {i18n: e, icons: r, constructor: {SETTING_ITEM_WIDTH: o, PLAYBACK_RATE: n}} = t; function i(t) { return 1 === t ? e.get("Normal") : t.toFixed(1) } function s(t, e, r) { e && (e.innerText = i(r)); const o = (0, a.queryAll)(".art-setting-item", t).find((t=>Number(t.dataset.value) === r)); o && (0, a.inverseClass)(o, "art-current") } return { width: o, name: "playback-rate", html: e.get("Play Speed"), tooltip: i(t.playbackRate), icon: r.playbackRate, selector: n.map((e=>({ value: e, name: `aspect-ratio-${e}`, default: e === t.playbackRate, html: i(e) }))), onSelect: e=>(t.playbackRate = e.value, e.html), mounted: (e,r)=>{ s(e, r.$tooltip, t.playbackRate), t.on("video:ratechange", (()=>{ s(e, r.$tooltip, t.playbackRate) } )) } } } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], fFNEr: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r), r.default = function(t) { const {i18n: e, icons: r, constructor: a} = t; return { width: a.SETTING_ITEM_WIDTH, name: "subtitle-offset", html: e.get("Subtitle Offset"), icon: r.subtitle, tooltip: "0s", range: [0, -5, 5, .1], onChange: e=>(t.subtitleOffset = e.range, e.range + "s") } } } , { "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], f2Thp: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); r.default = class { constructor() { this.name = "artplayer_settings", this.settings = {} } get(t) { try { const e = JSON.parse(window.localStorage.getItem(this.name)) || {}; return t ? e[t] : e } catch (e) { return t ? this.settings[t] : this.settings } } set(t, e) { try { const r = Object.assign({}, this.get(), { [t]: e }); window.localStorage.setItem(this.name, JSON.stringify(r)) } catch (r) { this.settings[t] = e } } del(t) { try { const e = this.get(); delete e[t], window.localStorage.setItem(this.name, JSON.stringify(e)) } catch (e) { delete this.settings[t] } } clear() { try { window.localStorage.removeItem(this.name) } catch (t) { this.settings = {} } } } } , { "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "96ThS": [function(t, e, r) { var a = t("@parcel/transformer-js/src/esmodule-helpers.js"); a.defineInteropFlag(r); var o = t("../utils") , n = t("./miniProgressBar") , i = a.interopDefault(n) , s = t("./autoOrientation") , l = a.interopDefault(s) , c = t("./autoPlayback") , u = a.interopDefault(c) , p = t("./fastForward") , d = a.interopDefault(p) , f = t("./lock") , h = a.interopDefault(f); r.default = class { constructor(t) { this.art = t, this.id = 0; const {option: e} = t; e.miniProgressBar && !e.isLive && this.add(i.default), e.lock && o.isMobile && this.add(h.default), e.autoPlayback && !e.isLive && this.add(u.default), e.autoOrientation && o.isMobile && this.add(l.default), e.fastForward && o.isMobile && !e.isLive && this.add(d.default); for (let t = 0; t < e.plugins.length; t++) this.add(e.plugins[t]) } add(t) { this.id += 1; const e = t.call(this.art, this.art); return e instanceof Promise ? e.then((e=>this.next(t, e))) : this.next(t, e) } next(t, e) { const r = e && e.name || t.name || `plugin${this.id}`; return (0, o.errorHandle)(!(0, o.has)(this, r), `Cannot add a plugin that already has the same name: ${r}`), (0, o.def)(this, r, { value: e }), this } } } , { "../utils": "h3rH9", "./miniProgressBar": "iBx4M", "./autoOrientation": "2O9qO", "./autoPlayback": "iiOc1", "./fastForward": "d9NUE", "./lock": "5dnKh", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], iBx4M: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { return t.on("control", (e=>{ e ? (0, a.removeClass)(t.template.$player, "art-mini-progress-bar") : (0, a.addClass)(t.template.$player, "art-mini-progress-bar") } )), { name: "mini-progress-bar" } } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "2O9qO": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {constructor: e, template: {$player: r, $video: o}} = t; return t.on("fullscreenWeb", (n=>{ if (n) { const {videoWidth: n, videoHeight: i} = o , {clientWidth: s, clientHeight: l} = document.documentElement; (n > i && s < l || n < i && s > l) && setTimeout((()=>{ (0, a.setStyle)(r, "width", `${l}px`), (0, a.setStyle)(r, "height", `${s}px`), (0, a.setStyle)(r, "transform-origin", "0 0"), (0, a.setStyle)(r, "transform", `rotate(90deg) translate(0, -${s}px)`), (0, a.addClass)(r, "art-auto-orientation"), t.isRotate = !0, t.emit("resize") } ), e.AUTO_ORIENTATION_TIME) } else (0, a.hasClass)(r, "art-auto-orientation") && ((0, a.removeClass)(r, "art-auto-orientation"), t.isRotate = !1, t.emit("resize")) } )), t.on("fullscreen", (async t=>{ const e = screen.orientation.type; if (t) { const {videoWidth: t, videoHeight: n} = o , {clientWidth: i, clientHeight: s} = document.documentElement; if (t > n && i < s || t < n && i > s) { const t = e.startsWith("portrait") ? "landscape" : "portrait"; await screen.orientation.lock(t), (0, a.addClass)(r, "art-auto-orientation-fullscreen") } } else (0, a.hasClass)(r, "art-auto-orientation-fullscreen") && (await screen.orientation.lock(e), (0, a.removeClass)(r, "art-auto-orientation-fullscreen")) } )), { name: "autoOrientation", get state() { return (0, a.hasClass)(r, "art-auto-orientation") } } } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], iiOc1: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {i18n: e, icons: r, storage: o, constructor: n, proxy: i, template: {$poster: s}} = t , l = t.layers.add({ name: "auto-playback", html: '
' }) , c = (0, a.query)(".art-auto-playback-last", l) , u = (0, a.query)(".art-auto-playback-jump", l) , p = (0, a.query)(".art-auto-playback-close", l); return t.on("video:timeupdate", (()=>{ if (t.playing) { const e = o.get("times") || {} , r = Object.keys(e); r.length > n.AUTO_PLAYBACK_MAX && delete e[r[0]], e[t.option.id || t.option.url] = t.currentTime, o.set("times", e) } } )), t.on("ready", (()=>{ const d = (o.get("times") || {})[t.option.id || t.option.url]; d && d >= n.AUTO_PLAYBACK_MIN && ((0, a.append)(p, r.close), (0, a.setStyle)(l, "display", "flex"), c.innerText = `${e.get("Last Seen")} ${(0, a.secondToTime)(d)}`, u.innerText = e.get("Jump Play"), i(p, "click", (()=>{ (0, a.setStyle)(l, "display", "none") } )), i(u, "click", (()=>{ t.seek = d, t.play(), (0, a.setStyle)(s, "display", "none"), (0, a.setStyle)(l, "display", "none") } )), t.once("video:timeupdate", (()=>{ setTimeout((()=>{ (0, a.setStyle)(l, "display", "none") } ), n.AUTO_PLAYBACK_TIMEOUT) } ))) } )), { name: "auto-playback", get times() { return o.get("times") || {} }, clear: ()=>o.del("times"), delete(t) { const e = o.get("times") || {}; return delete e[t], o.set("times", e), e } } } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], d9NUE: [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {constructor: e, proxy: r, template: {$player: o, $video: n}} = t; let i = null , s = !1 , l = 1; const c = ()=>{ clearTimeout(i), s && (s = !1, t.playbackRate = l, (0, a.removeClass)(o, "art-fast-forward")) } ; return r(n, "touchstart", (r=>{ 1 === r.touches.length && t.playing && !t.isLock && (i = setTimeout((()=>{ s = !0, l = t.playbackRate, t.playbackRate = e.FAST_FORWARD_VALUE, (0, a.addClass)(o, "art-fast-forward") } ), e.FAST_FORWARD_TIME)) } )), r(document, "touchmove", c), r(document, "touchend", c), { name: "fastForward", get state() { return (0, a.hasClass)(o, "art-fast-forward") } } } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }], "5dnKh": [function(t, e, r) { t("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r); var a = t("../utils"); r.default = function(t) { const {layers: e, icons: r, template: {$player: o}} = t; return e.add({ name: "lock", mounted(e) { const o = (0, a.append)(e, r.lock) , n = (0, a.append)(e, r.unlock); (0, a.setStyle)(o, "display", "none"), t.on("lock", (t=>{ t ? ((0, a.setStyle)(o, "display", "inline-flex"), (0, a.setStyle)(n, "display", "none")) : ((0, a.setStyle)(o, "display", "none"), (0, a.setStyle)(n, "display", "inline-flex")) } )) }, click() { (0, a.hasClass)(o, "art-lock") ? ((0, a.removeClass)(o, "art-lock"), this.isLock = !1, t.emit("lock", !1)) : ((0, a.addClass)(o, "art-lock"), this.isLock = !0, t.emit("lock", !0)) } }), { name: "lock", get state() { return (0, a.hasClass)(o, "art-lock") } } } } , { "../utils": "h3rH9", "@parcel/transformer-js/src/esmodule-helpers.js": "guZOB" }] }, ["abjMI"], "abjMI", "parcelRequireb749");