;(function () {
var _excluded = ['premium', 'referrerPolicy']
function _objectWithoutProperties(source, excluded) {
if (source == null) return {}
var target = _objectWithoutPropertiesLoose(source, excluded)
var key, i
if (Object.getOwnPropertySymbols) {
var sourceSymbolKeys = Object.getOwnPropertySymbols(source)
for (i = 0; i < sourceSymbolKeys.length; i++) {
key = sourceSymbolKeys[i]
if (excluded.indexOf(key) >= 0) continue
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue
target[key] = source[key]
}
}
return target
}
function _objectWithoutPropertiesLoose(source, excluded) {
if (source == null) return {}
var target = {}
var sourceKeys = Object.keys(source)
var key, i
for (i = 0; i < sourceKeys.length; i++) {
key = sourceKeys[i]
if (excluded.indexOf(key) >= 0) continue
target[key] = source[key]
}
return target
}
function _toConsumableArray(arr) {
return (
_arrayWithoutHoles(arr) ||
_iterableToArray(arr) ||
_unsupportedIterableToArray(arr) ||
_nonIterableSpread()
)
}
function _nonIterableSpread() {
throw new TypeError(
'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'
)
}
function _iterableToArray(iter) {
if (
(typeof Symbol !== 'undefined' && iter[Symbol.iterator] != null) ||
iter['@@iterator'] != null
)
return Array.from(iter)
}
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) return _arrayLikeToArray(arr)
}
function _classCallCheck2(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError('Cannot call a class as a function')
}
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i]
descriptor.enumerable = descriptor.enumerable || false
descriptor.configurable = true
if ('value' in descriptor) descriptor.writable = true
Object.defineProperty(target, descriptor.key, descriptor)
}
}
function _createClass2(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps)
if (staticProps) _defineProperties(Constructor, staticProps)
Object.defineProperty(Constructor, 'prototype', { writable: false })
return Constructor
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object)
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object)
enumerableOnly &&
(symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable
})),
keys.push.apply(keys, symbols)
}
return keys
}
function _objectSpread(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {}
i % 2
? ownKeys(Object(source), !0).forEach(function (key) {
_defineProperty2(target, key, source[key])
})
: Object.getOwnPropertyDescriptors
? Object.defineProperties(
target,
Object.getOwnPropertyDescriptors(source)
)
: ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(
target,
key,
Object.getOwnPropertyDescriptor(source, key)
)
})
}
return target
}
function _slicedToArray(arr, i) {
return (
_arrayWithHoles(arr) ||
_iterableToArrayLimit(arr, i) ||
_unsupportedIterableToArray(arr, i) ||
_nonIterableRest()
)
}
function _nonIterableRest() {
throw new TypeError(
'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'
)
}
function _unsupportedIterableToArray(o, minLen) {
if (!o) return
if (typeof o === 'string') return _arrayLikeToArray(o, minLen)
var n = Object.prototype.toString.call(o).slice(8, -1)
if (n === 'Object' && o.constructor) n = o.constructor.name
if (n === 'Map' || n === 'Set') return Array.from(o)
if (n === 'Arguments' || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
return _arrayLikeToArray(o, minLen)
}
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length
for (var i = 0, arr2 = new Array(len); i < len; i++) {
arr2[i] = arr[i]
}
return arr2
}
function _iterableToArrayLimit(arr, i) {
var _i =
arr == null
? null
: (typeof Symbol !== 'undefined' && arr[Symbol.iterator]) ||
arr['@@iterator']
if (_i == null) return
var _arr = []
var _n = true
var _d = false
var _s, _e
try {
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
_arr.push(_s.value)
if (i && _arr.length === i) break
}
} catch (err) {
_d = true
_e = err
} finally {
try {
if (!_n && _i['return'] != null) _i['return']()
} finally {
if (_d) throw _e
}
}
return _arr
}
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr
}
function _defineProperty2(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
})
} else {
obj[key] = value
}
return obj
}
function _typeof(obj) {
'@babel/helpers - typeof'
return (
(_typeof =
'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator
? function (obj) {
return typeof obj
}
: function (obj) {
return obj &&
'function' == typeof Symbol &&
obj.constructor === Symbol &&
obj !== Symbol.prototype
? 'symbol'
: typeof obj
}),
_typeof(obj)
)
}
var __vite_style__ = document.createElement('style')
__vite_style__.innerHTML =
'@charset "UTF-8";._video-container_1vz16_1{position:relative;width:100%;--plyr-color-main: #01c1b5}._video-container_1vz16_1 video{width:100%}._video-container_1vz16_1 .video-back{position:absolute;left:.53333rem;top:.53333rem;color:#fff;z-index:99;font-size:.64rem;width:.8rem;height:.8rem;background-color:rgba(0,0,0,.5);border-radius:50%;padding:.10667rem .13333rem .10667rem .08rem}._video-container_1vz16_1 .plyr__poster{background-size:cover}._video-container_1vz16_1 .plyr__control--overlaid{border:.02667rem solid #fff;background-color:transparent!important}._video-container_1vz16_1 .plyr--video .plyr__control:hover{background-color:transparent!important}._video-container_1vz16_1 ._video_1vz16_1{position:relative}._loadingVideo_1vz16_35{position:absolute;top:0;left:0;bottom:0;right:0;background:rgba(0,0,0,.9);z-index:10}._playOver_1vz16_44{background:rgba(0,0,0,.5);color:#fff;display:flex;align-items:center;justify-content:center;flex-direction:column}._playOver_1vz16_44 ._tips_1vz16_52{font-size:.4rem;color:#fff}._playOver_1vz16_44 ._btn_1vz16_56{margin:.26667rem 0}._freeTxt_1vz16_59{font-size:.4rem;color:#fff;line-height:.56rem;padding-top:.26667rem}._freeRate_1vz16_65{color:#32ffd8}@keyframes plyr-progress{to{background-position:.66667rem 0;background-position:var(--plyr-progress-loading-size,25px) 0}}@keyframes plyr-popup{0%{opacity:.5;transform:translateY(.26667rem)}to{opacity:1;transform:translateY(0)}}@keyframes plyr-fade-in{0%{opacity:0}to{opacity:1}}.plyr{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;align-items:center;direction:ltr;display:flex;flex-direction:column;font-family:inherit;font-family:var(--plyr-font-family,inherit);font-variant-numeric:tabular-nums;font-weight:400;font-weight:var(--plyr-font-weight-regular,400);line-height:1.7;line-height:var(--plyr-line-height,1.7);max-width:100%;min-width:5.33333rem;position:relative;text-shadow:none;transition:box-shadow .3s ease;z-index:0}.plyr audio,.plyr iframe,.plyr video{display:block;height:100%;width:100%}.plyr button{font:inherit;line-height:inherit;width:auto}.plyr:focus{outline:0}.plyr--full-ui{box-sizing:border-box}.plyr--full-ui *,.plyr--full-ui :after,.plyr--full-ui :before{box-sizing:inherit}.plyr--full-ui a,.plyr--full-ui button,.plyr--full-ui input,.plyr--full-ui label{touch-action:manipulation}.plyr__badge{background:#4a5464;background:var(--plyr-badge-background,#4a5464);border-radius:.05333rem;border-radius:var(--plyr-badge-border-radius,2px);color:#fff;color:var(--plyr-badge-text-color,#fff);font-size:.24rem;font-size:var(--plyr-font-size-badge,9px);line-height:1;padding:.08rem .10667rem}.plyr--full-ui ::-webkit-media-text-track-container{display:none}.plyr__captions{animation:plyr-fade-in .3s ease;bottom:0;display:none;font-size:.34667rem;font-size:var(--plyr-font-size-small,13px);left:0;padding:.26667rem;padding:var(--plyr-control-spacing,10px);position:absolute;text-align:center;transition:transform .4s ease-in-out;width:100%}.plyr__captions span:empty{display:none}@media (min-width:480px){.plyr__captions{font-size:.4rem;font-size:var(--plyr-font-size-base,15px);padding:.53333rem;padding:calc(var(--plyr-control-spacing, 10px)*2)}}@media (min-width:768px){.plyr__captions{font-size:.48rem;font-size:var(--plyr-font-size-large,18px)}}.plyr--captions-active .plyr__captions{display:block}.plyr:not(.plyr--hide-controls) .plyr__controls:not(:empty)~.plyr__captions{transform:translateY(-1.06667rem);transform:translateY(calc(var(--plyr-control-spacing, 10px)*-4))}.plyr__caption{background:rgba(0,0,0,.8);background:var(--plyr-captions-background,rgba(0,0,0,.8));border-radius:.05333rem;-webkit-box-decoration-break:clone;box-decoration-break:clone;color:#fff;color:var(--plyr-captions-text-color,#fff);line-height:185%;padding:.2em .5em;white-space:pre-wrap}.plyr__caption div{display:inline}.plyr__control{background:transparent;border:0;border-radius:.08rem;border-radius:var(--plyr-control-radius,3px);color:inherit;cursor:pointer;flex-shrink:0;overflow:visible;padding:.18667rem;padding:calc(var(--plyr-control-spacing, 10px)*.7);position:relative;transition:all .3s ease}.plyr__control svg{fill:currentColor;display:block;height:.48rem;height:var(--plyr-control-icon-size,18px);pointer-events:none;width:.48rem;width:var(--plyr-control-icon-size,18px)}.plyr__control:focus{outline:0}.plyr__control.plyr__tab-focus{outline:.08rem dotted #00b2ff;outline:var(--plyr-tab-focus-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff))) dotted .08rem;outline-offset:.05333rem}a.plyr__control{text-decoration:none}.plyr__control.plyr__control--pressed .icon--not-pressed,.plyr__control.plyr__control--pressed .label--not-pressed,.plyr__control:not(.plyr__control--pressed) .icon--pressed,.plyr__control:not(.plyr__control--pressed) .label--pressed,a.plyr__control:after,a.plyr__control:before{display:none}.plyr--full-ui ::-webkit-media-controls{display:none}.plyr__controls{align-items:center;display:flex;justify-content:flex-end;text-align:center}.plyr__controls .plyr__progress__container{flex:1;min-width:0}.plyr__controls .plyr__controls__item{margin-left:.06667rem;margin-left:calc(var(--plyr-control-spacing, 10px)/4)}.plyr__controls .plyr__controls__item:first-child{margin-left:0;margin-right:auto}.plyr__controls .plyr__controls__item.plyr__progress__container{padding-left:.06667rem;padding-left:calc(var(--plyr-control-spacing, 10px)/4)}.plyr__controls .plyr__controls__item.plyr__time{padding:0 .13333rem;padding:0 calc(var(--plyr-control-spacing, 10px)/2)}.plyr__controls .plyr__controls__item.plyr__progress__container:first-child,.plyr__controls .plyr__controls__item.plyr__time+.plyr__time,.plyr__controls .plyr__controls__item.plyr__time:first-child{padding-left:0}.plyr [data-plyr=airplay],.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr [data-plyr=pip],.plyr__controls:empty{display:none}.plyr--airplay-supported [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen],.plyr--pip-supported [data-plyr=pip]{display:inline-block}.plyr__menu{display:flex;position:relative}.plyr__menu .plyr__control svg{transition:transform .3s ease}.plyr__menu .plyr__control[aria-expanded=true] svg{transform:rotate(90deg)}.plyr__menu .plyr__control[aria-expanded=true] .plyr__tooltip{display:none}.plyr__menu__container{animation:plyr-popup .2s ease;background:hsla(0,0%,100%,.9);background:var(--plyr-menu-background,hsla(0,0%,100%,.9));border-radius:.10667rem;bottom:100%;box-shadow:0 .02667rem .05333rem rgba(0,0,0,.15);box-shadow:var(--plyr-menu-shadow,0 1px 2px rgba(0,0,0,.15));color:#4a5464;color:var(--plyr-menu-color,#4a5464);font-size:.4rem;font-size:var(--plyr-font-size-base,15px);margin-bottom:.26667rem;position:absolute;right:-.08rem;text-align:left;white-space:nowrap;z-index:3}.plyr__menu__container>div{overflow:hidden;transition:height .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1)}.plyr__menu__container:after{border:.10667rem solid transparent;border-top-color:rgba(255,255,255,.9);border:var(--plyr-menu-arrow-size,4px) solid transparent;border-top-color:var(--plyr-menu-background,hsla(0,0%,100%,.9));content:"";height:0;position:absolute;right:.37333rem;right:calc(var(--plyr-control-icon-size, 18px)/2 + var(--plyr-control-spacing, 10px)*.7 - var(--plyr-menu-arrow-size, 4px)/2);top:100%;width:0}.plyr__menu__container [role=menu]{padding:.18667rem;padding:calc(var(--plyr-control-spacing, 10px)*.7)}.plyr__menu__container [role=menuitem],.plyr__menu__container [role=menuitemradio]{margin-top:.05333rem}.plyr__menu__container [role=menuitem]:first-child,.plyr__menu__container [role=menuitemradio]:first-child{margin-top:0}.plyr__menu__container .plyr__control{align-items:center;color:#4a5464;color:var(--plyr-menu-color,#4a5464);display:flex;font-size:.34667rem;font-size:var(--plyr-font-size-menu,var(--plyr-font-size-small,13px));padding:.12444rem .28rem;padding:calc(var(--plyr-control-spacing, 10px)*.7/1.5) calc(var(--plyr-control-spacing, 10px)*.7*1.5);-webkit-user-select:none;user-select:none;width:100%}.plyr__menu__container .plyr__control>span{align-items:inherit;display:flex;width:100%}.plyr__menu__container .plyr__control:after{border:.10667rem solid transparent;border:var(--plyr-menu-item-arrow-size,4px) solid transparent;content:"";position:absolute;top:50%;transform:translateY(-50%)}.plyr__menu__container .plyr__control--forward{padding-right:.74667rem;padding-right:calc(var(--plyr-control-spacing, 10px)*.7*4)}.plyr__menu__container .plyr__control--forward:after{border-left-color:#728197;border-left-color:var(--plyr-menu-arrow-color,#728197);right:.17333rem;right:calc(var(--plyr-control-spacing, 10px)*.7*1.5 - var(--plyr-menu-item-arrow-size, 4px))}.plyr__menu__container .plyr__control--forward.plyr__tab-focus:after,.plyr__menu__container .plyr__control--forward:hover:after{border-left-color:currentColor}.plyr__menu__container .plyr__control--back{font-weight:400;font-weight:var(--plyr-font-weight-regular,400);margin:.18667rem;margin:calc(var(--plyr-control-spacing, 10px)*.7);margin-bottom:.09333rem;margin-bottom:calc(var(--plyr-control-spacing, 10px)*.7/2);padding-left:.74667rem;padding-left:calc(var(--plyr-control-spacing, 10px)*.7*4);position:relative;width:calc(100% - 0.37333rem);width:calc(100% - var(--plyr-control-spacing, 10px)*.7*2)}.plyr__menu__container .plyr__control--back:after{border-right-color:#728197;border-right-color:var(--plyr-menu-arrow-color,#728197);left:.17333rem;left:calc(var(--plyr-control-spacing, 10px)*.7*1.5 - var(--plyr-menu-item-arrow-size, 4px))}.plyr__menu__container .plyr__control--back:before{background:#dcdfe5;background:var(--plyr-menu-back-border-color,#dcdfe5);box-shadow:0 .02667rem #fff;box-shadow:0 .02667rem 0 var(--plyr-menu-back-border-shadow-color,#fff);content:"";height:.02667rem;left:0;margin-top:.09333rem;margin-top:calc(var(--plyr-control-spacing, 10px)*.7/2);overflow:hidden;position:absolute;right:0;top:100%}.plyr__menu__container .plyr__control--back.plyr__tab-focus:after,.plyr__menu__container .plyr__control--back:hover:after{border-right-color:currentColor}.plyr__menu__container .plyr__control[role=menuitemradio]{padding-left:.18667rem;padding-left:calc(var(--plyr-control-spacing, 10px)*.7)}.plyr__menu__container .plyr__control[role=menuitemradio]:after,.plyr__menu__container .plyr__control[role=menuitemradio]:before{border-radius:100%}.plyr__menu__container .plyr__control[role=menuitemradio]:before{background:rgba(0,0,0,.1);content:"";display:block;flex-shrink:0;height:.42667rem;margin-right:.26667rem;margin-right:var(--plyr-control-spacing,10px);transition:all .3s ease;width:.42667rem}.plyr__menu__container .plyr__control[role=menuitemradio]:after{background:#fff;border:0;height:.16rem;left:.32rem;opacity:0;top:50%;transform:translateY(-50%) scale(0);transition:transform .3s ease,opacity .3s ease;width:.16rem}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]:before{background:#00b2ff;background:var(--plyr-control-toggle-checked-background,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)))}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]:after{opacity:1;transform:translateY(-50%) scale(1)}.plyr__menu__container .plyr__control[role=menuitemradio].plyr__tab-focus:before,.plyr__menu__container .plyr__control[role=menuitemradio]:hover:before{background:rgba(35,40,47,.1)}.plyr__menu__container .plyr__menu__value{align-items:center;display:flex;margin-left:auto;margin-right:calc(-0.18667rem + 2);margin-right:calc(var(--plyr-control-spacing, 10px)*.7*-1 - -2);overflow:hidden;padding-left:.65333rem;padding-left:calc(var(--plyr-control-spacing, 10px)*.7*3.5);pointer-events:none}.plyr--full-ui input[type=range]{-webkit-appearance:none;appearance:none;background:transparent;border:0;border-radius:.69333rem;border-radius:calc(var(--plyr-range-thumb-height, 13px)*2);color:#00b2ff;color:var(--plyr-range-fill-background,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));display:block;height:.50667rem;height:calc(var(--plyr-range-thumb-active-shadow-width, 3px)*2 + var(--plyr-range-thumb-height, 13px));margin:0;min-width:0;padding:0;transition:box-shadow .3s ease;width:100%}.plyr--full-ui input[type=range]::-webkit-slider-runnable-track{background:transparent;background-image:linear-gradient(90deg,currentColor 0,transparent 0);background-image:linear-gradient(to right,currentColor var(--value,0),transparent var(--value,0));border:0;border-radius:.06667rem;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:.13333rem;height:var(--plyr-range-track-height,5px);-webkit-transition:box-shadow .3s ease;transition:box-shadow .3s ease;-webkit-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 .02667rem .02667rem rgba(35,40,47,.15),0 0 0 .02667rem rgba(35,40,47,.2);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 .02667rem rgba(35,40,47,.2));height:.34667rem;height:var(--plyr-range-thumb-height,13px);margin-top:-.10667rem;margin-top:calc((var(--plyr-range-thumb-height, 13px) - var(--plyr-range-track-height, 5px))/2*-1);position:relative;-webkit-transition:all .2s ease;transition:all .2s ease;width:.34667rem;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-moz-range-track{background:transparent;border:0;border-radius:.06667rem;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:.13333rem;height:var(--plyr-range-track-height,5px);-moz-transition:box-shadow .3s ease;transition:box-shadow .3s ease;user-select:none}.plyr--full-ui input[type=range]::-moz-range-thumb{background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 .02667rem .02667rem rgba(35,40,47,.15),0 0 0 .02667rem rgba(35,40,47,.2);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 .02667rem rgba(35,40,47,.2));height:.34667rem;height:var(--plyr-range-thumb-height,13px);position:relative;-moz-transition:all .2s ease;transition:all .2s ease;width:.34667rem;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-moz-range-progress{background:currentColor;border-radius:.06667rem;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:.13333rem;height:var(--plyr-range-track-height,5px)}.plyr--full-ui input[type=range]::-ms-track{color:transparent}.plyr--full-ui input[type=range]::-ms-fill-upper,.plyr--full-ui input[type=range]::-ms-track{background:transparent;border:0;border-radius:.06667rem;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:.13333rem;height:var(--plyr-range-track-height,5px);-ms-transition:box-shadow .3s ease;transition:box-shadow .3s ease;user-select:none}.plyr--full-ui input[type=range]::-ms-fill-lower{background:transparent;background:currentColor;border:0;border-radius:.06667rem;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:.13333rem;height:var(--plyr-range-track-height,5px);-ms-transition:box-shadow .3s ease;transition:box-shadow .3s ease;user-select:none}.plyr--full-ui input[type=range]::-ms-thumb{background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 .02667rem .02667rem rgba(35,40,47,.15),0 0 0 .02667rem rgba(35,40,47,.2);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 .02667rem rgba(35,40,47,.2));height:.34667rem;height:var(--plyr-range-thumb-height,13px);margin-top:0;position:relative;-ms-transition:all .2s ease;transition:all .2s ease;width:.34667rem;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-ms-tooltip{display:none}.plyr--full-ui input[type=range]::-moz-focus-outer{border:0}.plyr--full-ui input[type=range]:focus{outline:0}.plyr--full-ui input[type=range].plyr__tab-focus::-webkit-slider-runnable-track{outline:.08rem dotted #00b2ff;outline:var(--plyr-tab-focus-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff))) dotted .08rem;outline-offset:.05333rem}.plyr--full-ui input[type=range].plyr__tab-focus::-moz-range-track{outline:.08rem dotted #00b2ff;outline:var(--plyr-tab-focus-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff))) dotted .08rem;outline-offset:.05333rem}.plyr--full-ui input[type=range].plyr__tab-focus::-ms-track{outline:.08rem dotted #00b2ff;outline:var(--plyr-tab-focus-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff))) dotted .08rem;outline-offset:.05333rem}.plyr__poster{background-color:#000;background-color:var(--plyr-video-background,var(--plyr-video-background,#000));background-position:50% 50%;background-repeat:no-repeat;background-size:contain;height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .2s ease;width:100%;z-index:1}.plyr--stopped.plyr__poster-enabled .plyr__poster{opacity:1}.plyr--youtube.plyr--paused.plyr__poster-enabled:not(.plyr--stopped) .plyr__poster{display:none}.plyr__time{font-size:.34667rem;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px))}.plyr__time+.plyr__time:before{content:"\\2044";margin-right:.26667rem;margin-right:var(--plyr-control-spacing,10px)}@media (max-width:767px){.plyr__time+.plyr__time{display:none}}.plyr__tooltip{background:hsla(0,0%,100%,.9);background:var(--plyr-tooltip-background,hsla(0,0%,100%,.9));border-radius:.13333rem;border-radius:var(--plyr-tooltip-radius,5px);bottom:100%;box-shadow:0 .02667rem .05333rem rgba(0,0,0,.15);box-shadow:var(--plyr-tooltip-shadow,0 1px 2px rgba(0,0,0,.15));color:#4a5464;color:var(--plyr-tooltip-color,#4a5464);font-size:.34667rem;font-size:var(--plyr-font-size-small,13px);font-weight:400;font-weight:var(--plyr-font-weight-regular,400);left:50%;line-height:1.3;margin-bottom:.26667rem;margin-bottom:calc(var(--plyr-control-spacing, 10px)/2*2);opacity:0;padding:.13333rem .2rem;padding:calc(var(--plyr-control-spacing, 10px)/2) calc(var(--plyr-control-spacing, 10px)/2*1.5);pointer-events:none;position:absolute;transform:translate(-50%,.26667rem) scale(.8);transform-origin:50% 100%;transition:transform .2s ease .1s,opacity .2s ease .1s;white-space:nowrap;z-index:2}.plyr__tooltip:before{border-left:.10667rem solid transparent;border-left:var(--plyr-tooltip-arrow-size,4px) solid transparent;border-right:.10667rem solid transparent;border-right:var(--plyr-tooltip-arrow-size,4px) solid transparent;border-top:.10667rem solid hsla(0,0%,100%,.9);border-top:var(--plyr-tooltip-arrow-size,4px) solid var(--plyr-tooltip-background,hsla(0,0%,100%,.9));bottom:-.10667rem;bottom:calc(var(--plyr-tooltip-arrow-size, 4px)*-1);content:"";height:0;left:50%;position:absolute;transform:translate(-50%);width:0;z-index:2}.plyr .plyr__control.plyr__tab-focus .plyr__tooltip,.plyr .plyr__control:hover .plyr__tooltip,.plyr__tooltip--visible{opacity:1;transform:translate(-50%) scale(1)}.plyr .plyr__control:hover .plyr__tooltip{z-index:3}.plyr__controls>.plyr__control:first-child .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip{left:0;transform:translateY(.26667rem) scale(.8);transform-origin:0 100%}.plyr__controls>.plyr__control:first-child .plyr__tooltip:before,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip:before{left:.42667rem;left:calc(var(--plyr-control-icon-size, 18px)/2 + var(--plyr-control-spacing, 10px)*.7)}.plyr__controls>.plyr__control:last-child .plyr__tooltip{left:auto;right:0;transform:translateY(.26667rem) scale(.8);transform-origin:100% 100%}.plyr__controls>.plyr__control:last-child .plyr__tooltip:before{left:auto;right:.42667rem;right:calc(var(--plyr-control-icon-size, 18px)/2 + var(--plyr-control-spacing, 10px)*.7);transform:translate(50%)}.plyr__controls>.plyr__control:first-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control:hover .plyr__tooltip,.plyr__controls>.plyr__control:first-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child:hover .plyr__tooltip,.plyr__controls>.plyr__control:last-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:last-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:last-child:hover .plyr__tooltip{transform:translate(0) scale(1)}.plyr__progress{left:.17333rem;left:calc(var(--plyr-range-thumb-height, 13px)*.5);margin-right:.34667rem;margin-right:var(--plyr-range-thumb-height,13px);position:relative}.plyr__progress input[type=range],.plyr__progress__buffer{margin-left:-.17333rem;margin-left:calc(var(--plyr-range-thumb-height, 13px)*-.5);margin-right:-.17333rem;margin-right:calc(var(--plyr-range-thumb-height, 13px)*-.5);width:calc(100% + 0.34667rem);width:calc(100% + var(--plyr-range-thumb-height, 13px))}.plyr__progress input[type=range]{position:relative;z-index:2}.plyr__progress .plyr__tooltip{left:0;max-width:3.2rem;overflow-wrap:break-word;white-space:normal}.plyr__progress__buffer{-webkit-appearance:none;background:transparent;border:0;border-radius:2.66667rem;height:.13333rem;height:var(--plyr-range-track-height,5px);left:0;margin-top:-.06667rem;margin-top:calc((var(--plyr-range-track-height, 5px)/2)*-1);padding:0;position:absolute;top:50%}.plyr__progress__buffer::-webkit-progress-bar{background:transparent}.plyr__progress__buffer::-webkit-progress-value{background:currentColor;border-radius:2.66667rem;min-width:.13333rem;min-width:var(--plyr-range-track-height,5px);-webkit-transition:width .2s ease;transition:width .2s ease}.plyr__progress__buffer::-moz-progress-bar{background:currentColor;border-radius:2.66667rem;min-width:.13333rem;min-width:var(--plyr-range-track-height,5px);-moz-transition:width .2s ease;transition:width .2s ease}.plyr__progress__buffer::-ms-fill{border-radius:2.66667rem;-ms-transition:width .2s ease;transition:width .2s ease}.plyr--loading .plyr__progress__buffer{animation:plyr-progress 1s linear infinite;background-image:linear-gradient(-45deg,rgba(35,40,47,.6) 25%,transparent 0,transparent 50%,rgba(35,40,47,.6) 0,rgba(35,40,47,.6) 75%,transparent 0,transparent);background-image:linear-gradient(-45deg,var(--plyr-progress-loading-background,rgba(35,40,47,.6)) 25%,transparent 25%,transparent 50%,var(--plyr-progress-loading-background,rgba(35,40,47,.6)) 50%,var(--plyr-progress-loading-background,rgba(35,40,47,.6)) 75%,transparent 75%,transparent);background-repeat:repeat-x;background-size:.66667rem .66667rem;background-size:var(--plyr-progress-loading-size,25px) var(--plyr-progress-loading-size,25px);color:transparent}.plyr--video.plyr--loading .plyr__progress__buffer{background-color:rgba(255,255,255,.25);background-color:var(--plyr-video-progress-buffered-background,hsla(0,0%,100%,.25))}.plyr--audio.plyr--loading .plyr__progress__buffer{background-color:rgba(193,200,209,.6);background-color:var(--plyr-audio-progress-buffered-background,rgba(193,200,209,.6))}.plyr__progress__marker{background-color:#fff;background-color:var(--plyr-progress-marker-background,#fff);border-radius:.02667rem;height:.13333rem;height:var(--plyr-range-track-height,5px);position:absolute;top:50%;transform:translate(-50%,-50%);width:.08rem;width:var(--plyr-progress-marker-width,3px);z-index:3}.plyr__volume{align-items:center;display:flex;max-width:2.93333rem;min-width:2.13333rem;position:relative;width:20%}.plyr__volume input[type=range]{margin-left:.13333rem;margin-left:calc(var(--plyr-control-spacing, 10px)/2);margin-right:.13333rem;margin-right:calc(var(--plyr-control-spacing, 10px)/2);position:relative;z-index:2}.plyr--is-ios .plyr__volume{min-width:0;width:auto}.plyr--audio{display:block}.plyr--audio .plyr__controls{background:#fff;background:var(--plyr-audio-controls-background,#fff);border-radius:inherit;color:#4a5464;color:var(--plyr-audio-control-color,#4a5464);padding:.26667rem;padding:var(--plyr-control-spacing,10px)}.plyr--audio .plyr__control.plyr__tab-focus,.plyr--audio .plyr__control:hover,.plyr--audio .plyr__control[aria-expanded=true]{background:#00b2ff;background:var(--plyr-audio-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));color:#fff;color:var(--plyr-audio-control-color-hover,#fff)}.plyr--full-ui.plyr--audio input[type=range]::-webkit-slider-runnable-track{background-color:rgba(193,200,209,.6);background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,rgba(193,200,209,.6)))}.plyr--full-ui.plyr--audio input[type=range]::-moz-range-track{background-color:rgba(193,200,209,.6);background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,rgba(193,200,209,.6)))}.plyr--full-ui.plyr--audio input[type=range]::-ms-track{background-color:rgba(193,200,209,.6);background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,rgba(193,200,209,.6)))}.plyr--full-ui.plyr--audio input[type=range]:active::-webkit-slider-thumb{box-shadow:0 .02667rem .02667rem rgba(35,40,47,.15),0 0 0 .02667rem rgba(35,40,47,.2),0 0 0 .08rem rgba(35,40,47,.1);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 .02667rem rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,rgba(35,40,47,.1))}.plyr--full-ui.plyr--audio input[type=range]:active::-moz-range-thumb{box-shadow:0 .02667rem .02667rem rgba(35,40,47,.15),0 0 0 .02667rem rgba(35,40,47,.2),0 0 0 .08rem rgba(35,40,47,.1);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 .02667rem rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,rgba(35,40,47,.1))}.plyr--full-ui.plyr--audio input[type=range]:active::-ms-thumb{box-shadow:0 .02667rem .02667rem rgba(35,40,47,.15),0 0 0 .02667rem rgba(35,40,47,.2),0 0 0 .08rem rgba(35,40,47,.1);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 .02667rem rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,rgba(35,40,47,.1))}.plyr--audio .plyr__progress__buffer{color:rgba(193,200,209,.6);color:var(--plyr-audio-progress-buffered-background,rgba(193,200,209,.6))}.plyr--video{background:#000;background:var(--plyr-video-background,var(--plyr-video-background,#000));overflow:hidden}.plyr--video.plyr--menu-open{overflow:visible}.plyr__video-wrapper{background:#000;background:var(--plyr-video-background,var(--plyr-video-background,#000));height:100%;margin:auto;overflow:hidden;position:relative;width:100%}.plyr__video-embed,.plyr__video-wrapper--fixed-ratio{aspect-ratio:16/9}@supports not (aspect-ratio:16/9){.plyr__video-embed,.plyr__video-wrapper--fixed-ratio{height:0;padding-bottom:56.25%;position:relative}}.plyr__video-embed iframe,.plyr__video-wrapper--fixed-ratio video{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.plyr--full-ui .plyr__video-embed>.plyr__video-embed__container{padding-bottom:240%;position:relative;transform:translateY(-38.28125%)}.plyr--video .plyr__controls{background:linear-gradient(transparent,rgba(0,0,0,.75));background:var(--plyr-video-controls-background,linear-gradient(transparent,rgba(0,0,0,.75)));border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;bottom:0;color:#fff;color:var(--plyr-video-control-color,#fff);left:0;padding:.13333rem;padding:calc(var(--plyr-control-spacing, 10px)/2);padding-top:.53333rem;padding-top:calc(var(--plyr-control-spacing, 10px)*2);position:absolute;right:0;transition:opacity .4s ease-in-out,transform .4s ease-in-out;z-index:3}@media (min-width:480px){.plyr--video .plyr__controls{padding:.26667rem;padding:var(--plyr-control-spacing,10px);padding-top:.93333rem;padding-top:calc(var(--plyr-control-spacing, 10px)*3.5)}}.plyr--video.plyr--hide-controls .plyr__controls{opacity:0;pointer-events:none;transform:translateY(100%)}.plyr--video .plyr__control.plyr__tab-focus,.plyr--video .plyr__control:hover,.plyr--video .plyr__control[aria-expanded=true]{background:#00b2ff;background:var(--plyr-video-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));color:#fff;color:var(--plyr-video-control-color-hover,#fff)}.plyr__control--overlaid{background:#00b2ff;background:var(--plyr-video-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));border:0;border-radius:100%;color:#fff;color:var(--plyr-video-control-color,#fff);display:none;left:50%;opacity:.9;padding:.4rem;padding:calc(var(--plyr-control-spacing, 10px)*1.5);position:absolute;top:50%;transform:translate(-50%,-50%);transition:.3s;z-index:2}.plyr__control--overlaid svg{left:.05333rem;position:relative}.plyr__control--overlaid:focus,.plyr__control--overlaid:hover{opacity:1}.plyr--playing .plyr__control--overlaid{opacity:0;visibility:hidden}.plyr--full-ui.plyr--video .plyr__control--overlaid{display:block}.plyr--full-ui.plyr--video input[type=range]::-webkit-slider-runnable-track{background-color:rgba(255,255,255,.25);background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,hsla(0,0%,100%,.25)))}.plyr--full-ui.plyr--video input[type=range]::-moz-range-track{background-color:rgba(255,255,255,.25);background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,hsla(0,0%,100%,.25)))}.plyr--full-ui.plyr--video input[type=range]::-ms-track{background-color:rgba(255,255,255,.25);background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,hsla(0,0%,100%,.25)))}.plyr--full-ui.plyr--video input[type=range]:active::-webkit-slider-thumb{box-shadow:0 .02667rem .02667rem rgba(35,40,47,.15),0 0 0 .02667rem rgba(35,40,47,.2),0 0 0 .08rem rgba(255,255,255,.5);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 .02667rem rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,hsla(0,0%,100%,.5))}.plyr--full-ui.plyr--video input[type=range]:active::-moz-range-thumb{box-shadow:0 .02667rem .02667rem rgba(35,40,47,.15),0 0 0 .02667rem rgba(35,40,47,.2),0 0 0 .08rem rgba(255,255,255,.5);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 .02667rem rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,hsla(0,0%,100%,.5))}.plyr--full-ui.plyr--video input[type=range]:active::-ms-thumb{box-shadow:0 .02667rem .02667rem rgba(35,40,47,.15),0 0 0 .02667rem rgba(35,40,47,.2),0 0 0 .08rem rgba(255,255,255,.5);box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px rgba(35,40,47,.15),0 0 0 .02667rem rgba(35,40,47,.2)),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,hsla(0,0%,100%,.5))}.plyr--video .plyr__progress__buffer{color:rgba(255,255,255,.25);color:var(--plyr-video-progress-buffered-background,hsla(0,0%,100%,.25))}.plyr:-webkit-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-webkit-full-screen video{height:100%}.plyr:fullscreen video{height:100%}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-webkit-full-screen.plyr--hide-controls{cursor:none}.plyr:fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-webkit-full-screen .plyr__captions{font-size:.56rem;font-size:var(--plyr-font-size-xlarge,21px)}.plyr:fullscreen .plyr__captions{font-size:.56rem;font-size:var(--plyr-font-size-xlarge,21px)}}.plyr--fullscreen-fallback{background:#000;border-radius:0!important;bottom:0;display:block;height:100%;left:0;margin:0;position:fixed;right:0;top:0;width:100%;z-index:10000000}.plyr--fullscreen-fallback video{height:100%}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen{display:block}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr--fullscreen-fallback.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr--fullscreen-fallback .plyr__captions{font-size:.56rem;font-size:var(--plyr-font-size-xlarge,21px)}}.plyr__ads{border-radius:inherit;bottom:0;cursor:pointer;left:0;overflow:hidden;position:absolute;right:0;top:0;z-index:-1}.plyr__ads>div,.plyr__ads>div iframe{height:100%;position:absolute;width:100%}.plyr__ads:after{background:#23282f;border-radius:.05333rem;bottom:.26667rem;bottom:var(--plyr-control-spacing,10px);color:#fff;content:attr(data-badge-text);font-size:.29333rem;padding:.05333rem .16rem;pointer-events:none;position:absolute;right:.26667rem;right:var(--plyr-control-spacing,10px);z-index:3}.plyr__ads:empty:after{display:none}.plyr__cues{background:currentColor;display:block;height:.13333rem;height:var(--plyr-range-track-height,5px);left:0;opacity:.8;position:absolute;top:50%;transform:translateY(-50%);width:.08rem;z-index:3}.plyr__preview-thumb{background-color:rgba(255,255,255,.9);background-color:var(--plyr-tooltip-background,hsla(0,0%,100%,.9));border-radius:.13333rem;border-radius:var(--plyr-tooltip-radius,5px);bottom:100%;box-shadow:0 .02667rem .05333rem rgba(0,0,0,.15);box-shadow:var(--plyr-tooltip-shadow,0 1px 2px rgba(0,0,0,.15));margin-bottom:.26667rem;margin-bottom:calc(var(--plyr-control-spacing, 10px)/2*2);opacity:0;padding:.08rem;pointer-events:none;position:absolute;transform:translateY(.26667rem) scale(.8);transform-origin:50% 100%;transition:transform .2s ease .1s,opacity .2s ease .1s;z-index:2}.plyr__preview-thumb--is-shown{opacity:1;transform:translate(0) scale(1)}.plyr__preview-thumb:before{border-left:.10667rem solid transparent;border-left:var(--plyr-tooltip-arrow-size,4px) solid transparent;border-right:.10667rem solid transparent;border-right:var(--plyr-tooltip-arrow-size,4px) solid transparent;border-top:.10667rem solid hsla(0,0%,100%,.9);border-top:var(--plyr-tooltip-arrow-size,4px) solid var(--plyr-tooltip-background,hsla(0,0%,100%,.9));bottom:-.10667rem;bottom:calc(var(--plyr-tooltip-arrow-size, 4px)*-1);content:"";height:0;left:calc(50% + var(--preview-arrow-offset));position:absolute;transform:translate(-50%);width:0;z-index:2}.plyr__preview-thumb__image-container{background:#c1c8d1;border-radius:.10667rem;border-radius:calc(var(--plyr-tooltip-radius, 5px) - .02667rem);overflow:hidden;position:relative;z-index:0}.plyr__preview-thumb__image-container img,.plyr__preview-thumb__image-container:after{height:100%;left:0;position:absolute;top:0;width:100%}.plyr__preview-thumb__image-container:after{border-radius:inherit;box-shadow:inset 0 0 0 .02667rem rgba(0,0,0,.15);content:"";pointer-events:none}.plyr__preview-thumb__image-container img{max-height:none;max-width:none}.plyr__preview-thumb__time-container{background:linear-gradient(transparent,rgba(0,0,0,.75));background:var(--plyr-video-controls-background,linear-gradient(transparent,rgba(0,0,0,.75)));border-bottom-left-radius:.10667rem;border-bottom-left-radius:calc(var(--plyr-tooltip-radius, 5px) - .02667rem);border-bottom-right-radius:.10667rem;border-bottom-right-radius:calc(var(--plyr-tooltip-radius, 5px) - .02667rem);bottom:0;left:0;line-height:1.1;padding:.53333rem .16rem .16rem;position:absolute;right:0;z-index:3}.plyr__preview-thumb__time-container span{color:#fff;font-size:.34667rem;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px))}.plyr__preview-scrubbing{bottom:0;filter:blur(.02667rem);height:100%;left:0;margin:auto;opacity:0;overflow:hidden;pointer-events:none;position:absolute;right:0;top:0;transition:opacity .3s ease;width:100%;z-index:1}.plyr__preview-scrubbing--is-shown{opacity:1}.plyr__preview-scrubbing img{height:100%;left:0;max-height:none;max-width:none;object-fit:contain;position:absolute;top:0;width:100%}.plyr--no-transition{transition:none!important}.plyr__sr-only{clip:rect(.02667rem,.02667rem,.02667rem,.02667rem);border:0!important;height:.02667rem!important;overflow:hidden;padding:0!important;position:absolute!important;width:.02667rem!important}.plyr [hidden]{display:none!important}\n'
document.head.appendChild(__vite_style__)
System.register(
['./vendor-legacy.09f20d09.js', './index-legacy.595c24c3.js'],
function (exports) {
'use strict'
var defineComponent,
createVNode,
Loading,
createTextVNode,
Fragment,
Icon,
Button,
Toast,
listenerMessage,
browser$1,
postMessage,
state
return {
setters: [
function (module) {
defineComponent = module.d
createVNode = module.a
Loading = module.L
createTextVNode = module.j
Fragment = module.F
Icon = module.K
Button = module.B
Toast = module.T
},
function (module) {
listenerMessage = module.l
browser$1 = module.b
postMessage = module.p
state = module.s
}
],
execute: function execute() {
var video = '_video_1vz16_1'
var loadingVideo = '_loadingVideo_1vz16_35'
var playOver = '_playOver_1vz16_44'
var tips = '_tips_1vz16_52'
var btn = '_btn_1vz16_56'
var freeTxt = '_freeTxt_1vz16_59'
var freeRate = '_freeRate_1vz16_65'
var styles = {
'video-container': '_video-container_1vz16_1',
video: video,
loadingVideo: loadingVideo,
playOver: playOver,
tips: tips,
btn: btn,
freeTxt: freeTxt,
freeRate: freeRate
}
function _defineProperty$1(e, t, i) {
return (
t in e
? Object.defineProperty(e, t, {
value: i,
enumerable: !0,
configurable: !0,
writable: !0
})
: (e[t] = i),
e
)
}
function _classCallCheck(e, t) {
if (!(e instanceof t))
throw new TypeError('Cannot call a class as a function')
}
function _defineProperties(e, t) {
for (var i = 0; i < t.length; i++) {
var s = t[i]
;(s.enumerable = s.enumerable || !1),
(s.configurable = !0),
'value' in s && (s.writable = !0),
Object.defineProperty(e, s.key, s)
}
}
function _createClass(e, t, i) {
return (
t && _defineProperties(e.prototype, t),
i && _defineProperties(e, i),
e
)
}
function _defineProperty(e, t, i) {
return (
t in e
? Object.defineProperty(e, t, {
value: i,
enumerable: !0,
configurable: !0,
writable: !0
})
: (e[t] = i),
e
)
}
function ownKeys(e, t) {
var i = Object.keys(e)
if (Object.getOwnPropertySymbols) {
var s = Object.getOwnPropertySymbols(e)
t &&
(s = s.filter(function (t) {
return Object.getOwnPropertyDescriptor(e, t).enumerable
})),
i.push.apply(i, s)
}
return i
}
function _objectSpread2(e) {
for (var t = 1; t < arguments.length; t++) {
var i = null != arguments[t] ? arguments[t] : {}
t % 2
? ownKeys(Object(i), !0).forEach(function (t) {
_defineProperty(e, t, i[t])
})
: Object.getOwnPropertyDescriptors
? Object.defineProperties(
e,
Object.getOwnPropertyDescriptors(i)
)
: ownKeys(Object(i)).forEach(function (t) {
Object.defineProperty(
e,
t,
Object.getOwnPropertyDescriptor(i, t)
)
})
}
return e
}
var defaults$1 = { addCSS: !0, thumbWidth: 15, watch: !0 }
function matches$1(e, t) {
return function () {
return Array.from(document.querySelectorAll(t)).includes(this)
}.call(e, t)
}
function trigger(e, t) {
if (e && t) {
var i = new Event(t, { bubbles: !0 })
e.dispatchEvent(i)
}
}
var getConstructor$1 = function getConstructor$1(e) {
return null != e ? e.constructor : null
},
instanceOf$1 = function instanceOf$1(e, t) {
return !!(e && t && e instanceof t)
},
isNullOrUndefined$1 = function isNullOrUndefined$1(e) {
return null == e
},
isObject$1 = function isObject$1(e) {
return getConstructor$1(e) === Object
},
isNumber$1 = function isNumber$1(e) {
return getConstructor$1(e) === Number && !Number.isNaN(e)
},
isString$1 = function isString$1(e) {
return getConstructor$1(e) === String
},
isBoolean$1 = function isBoolean$1(e) {
return getConstructor$1(e) === Boolean
},
isFunction$1 = function isFunction$1(e) {
return getConstructor$1(e) === Function
},
isArray$1 = function isArray$1(e) {
return Array.isArray(e)
},
isNodeList$1 = function isNodeList$1(e) {
return instanceOf$1(e, NodeList)
},
isElement$1 = function isElement$1(e) {
return instanceOf$1(e, Element)
},
isEvent$1 = function isEvent$1(e) {
return instanceOf$1(e, Event)
},
isEmpty$1 = function isEmpty$1(e) {
return (
isNullOrUndefined$1(e) ||
((isString$1(e) || isArray$1(e) || isNodeList$1(e)) &&
!e.length) ||
(isObject$1(e) && !Object.keys(e).length)
)
},
is$1 = {
nullOrUndefined: isNullOrUndefined$1,
object: isObject$1,
number: isNumber$1,
string: isString$1,
boolean: isBoolean$1,
function: isFunction$1,
array: isArray$1,
nodeList: isNodeList$1,
element: isElement$1,
event: isEvent$1,
empty: isEmpty$1
}
function getDecimalPlaces(e) {
var t = ''.concat(e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/)
return t
? Math.max(0, (t[1] ? t[1].length : 0) - (t[2] ? +t[2] : 0))
: 0
}
function round(e, t) {
if (1 > t) {
var i = getDecimalPlaces(t)
return parseFloat(e.toFixed(i))
}
return Math.round(e / t) * t
}
var RangeTouch = (function () {
function e(t, i) {
_classCallCheck(this, e),
is$1.element(t)
? (this.element = t)
: is$1.string(t) &&
(this.element = document.querySelector(t)),
is$1.element(this.element) &&
is$1.empty(this.element.rangeTouch) &&
((this.config = _objectSpread2({}, defaults$1, {}, i)),
this.init())
}
return (
_createClass(
e,
[
{
key: 'init',
value: function value() {
e.enabled &&
(this.config.addCSS &&
((this.element.style.userSelect = 'none'),
(this.element.style.webKitUserSelect = 'none'),
(this.element.style.touchAction = 'manipulation')),
this.listeners(!0),
(this.element.rangeTouch = this))
}
},
{
key: 'destroy',
value: function value() {
e.enabled &&
(this.config.addCSS &&
((this.element.style.userSelect = ''),
(this.element.style.webKitUserSelect = ''),
(this.element.style.touchAction = '')),
this.listeners(!1),
(this.element.rangeTouch = null))
}
},
{
key: 'listeners',
value: function value(e) {
var t = this,
i = e ? 'addEventListener' : 'removeEventListener'
;['touchstart', 'touchmove', 'touchend'].forEach(
function (e) {
t.element[i](
e,
function (e) {
return t.set(e)
},
!1
)
}
)
}
},
{
key: 'get',
value: function value(t) {
if (!e.enabled || !is$1.event(t)) return null
var i,
s = t.target,
n = t.changedTouches[0],
r = parseFloat(s.getAttribute('min')) || 0,
a = parseFloat(s.getAttribute('max')) || 100,
o = parseFloat(s.getAttribute('step')) || 1,
l = s.getBoundingClientRect(),
c =
((100 / l.width) * (this.config.thumbWidth / 2)) / 100
return (
0 > (i = (100 / l.width) * (n.clientX - l.left))
? (i = 0)
: 100 < i && (i = 100),
50 > i
? (i -= (100 - 2 * i) * c)
: 50 < i && (i += 2 * (i - 50) * c),
r + round((i / 100) * (a - r), o)
)
}
},
{
key: 'set',
value: function value(t) {
e.enabled &&
is$1.event(t) &&
!t.target.disabled &&
(t.preventDefault(),
(t.target.value = this.get(t)),
trigger(
t.target,
'touchend' === t.type ? 'change' : 'input'
))
}
}
],
[
{
key: 'setup',
value: function value(t) {
var i =
1 < arguments.length && void 0 !== arguments[1]
? arguments[1]
: {},
s = null
if (
(is$1.empty(t) || is$1.string(t)
? (s = Array.from(
document.querySelectorAll(
is$1.string(t) ? t : 'input[type="range"]'
)
))
: is$1.element(t)
? (s = [t])
: is$1.nodeList(t)
? (s = Array.from(t))
: is$1.array(t) && (s = t.filter(is$1.element)),
is$1.empty(s))
)
return null
var n = _objectSpread2({}, defaults$1, {}, i)
if (is$1.string(t) && n.watch) {
var r = new MutationObserver(function (i) {
Array.from(i).forEach(function (i) {
Array.from(i.addedNodes).forEach(function (i) {
is$1.element(i) && matches$1(i, t) && new e(i, n)
})
})
})
r.observe(document.body, { childList: !0, subtree: !0 })
}
return s.map(function (t) {
return new e(t, i)
})
}
},
{
key: 'enabled',
get: function get() {
return 'ontouchstart' in document.documentElement
}
}
]
),
e
)
})()
var getConstructor = function getConstructor(e) {
return null != e ? e.constructor : null
},
instanceOf = function instanceOf(e, t) {
return Boolean(e && t && e instanceof t)
},
isNullOrUndefined = function isNullOrUndefined(e) {
return null == e
},
isObject = function isObject(e) {
return getConstructor(e) === Object
},
isNumber = function isNumber(e) {
return getConstructor(e) === Number && !Number.isNaN(e)
},
isString = function isString(e) {
return getConstructor(e) === String
},
isBoolean = function isBoolean(e) {
return getConstructor(e) === Boolean
},
isFunction = function isFunction(e) {
return getConstructor(e) === Function
},
isArray = function isArray(e) {
return Array.isArray(e)
},
isWeakMap = function isWeakMap(e) {
return instanceOf(e, WeakMap)
},
isNodeList = function isNodeList(e) {
return instanceOf(e, NodeList)
},
isTextNode = function isTextNode(e) {
return getConstructor(e) === Text
},
isEvent = function isEvent(e) {
return instanceOf(e, Event)
},
isKeyboardEvent = function isKeyboardEvent(e) {
return instanceOf(e, KeyboardEvent)
},
isCue = function isCue(e) {
return (
instanceOf(e, window.TextTrackCue) ||
instanceOf(e, window.VTTCue)
)
},
isTrack = function isTrack(e) {
return (
instanceOf(e, TextTrack) ||
(!isNullOrUndefined(e) && isString(e.kind))
)
},
isPromise = function isPromise(e) {
return instanceOf(e, Promise) && isFunction(e.then)
},
isElement = function isElement(e) {
return (
null !== e &&
'object' == _typeof(e) &&
1 === e.nodeType &&
'object' == _typeof(e.style) &&
'object' == _typeof(e.ownerDocument)
)
},
isEmpty = function isEmpty(e) {
return (
isNullOrUndefined(e) ||
((isString(e) || isArray(e) || isNodeList(e)) && !e.length) ||
(isObject(e) && !Object.keys(e).length)
)
},
isUrl = function isUrl(e) {
if (instanceOf(e, window.URL)) return !0
if (!isString(e)) return !1
var t = e
;(e.startsWith('http://') && e.startsWith('https://')) ||
(t = 'http://'.concat(e))
try {
return !isEmpty(new URL(t).hostname)
} catch (e) {
return !1
}
}
var is = {
nullOrUndefined: isNullOrUndefined,
object: isObject,
number: isNumber,
string: isString,
boolean: isBoolean,
function: isFunction,
array: isArray,
weakMap: isWeakMap,
nodeList: isNodeList,
element: isElement,
textNode: isTextNode,
event: isEvent,
keyboardEvent: isKeyboardEvent,
cue: isCue,
track: isTrack,
promise: isPromise,
url: isUrl,
empty: isEmpty
}
var transitionEndEvent = (function () {
var e = document.createElement('span'),
t = {
WebkitTransition: 'webkitTransitionEnd',
MozTransition: 'transitionend',
OTransition: 'oTransitionEnd otransitionend',
transition: 'transitionend'
},
i = Object.keys(t).find(function (t) {
return void 0 !== e.style[t]
})
return !!is.string(i) && t[i]
})()
function repaint(e, t) {
setTimeout(function () {
try {
;(e.hidden = !0), e.offsetHeight, (e.hidden = !1)
} catch (e) {}
}, t)
}
var browser = {
isIE: Boolean(window.document.documentMode),
isEdge: window.navigator.userAgent.includes('Edge'),
isWebkit:
'WebkitAppearance' in document.documentElement.style &&
!/Edge/.test(navigator.userAgent),
isIPhone: /(iPhone|iPod)/gi.test(navigator.platform),
isIos:
('MacIntel' === navigator.platform &&
navigator.maxTouchPoints > 1) ||
/(iPad|iPhone|iPod)/gi.test(navigator.platform)
}
function cloneDeep(e) {
return JSON.parse(JSON.stringify(e))
}
function getDeep(e, t) {
return t.split('.').reduce(function (e, t) {
return e && e[t]
}, e)
}
function extend() {
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: {}
for (
var _len = arguments.length,
t = new Array(_len > 1 ? _len - 1 : 0),
_key = 1;
_key < _len;
_key++
) {
t[_key - 1] = arguments[_key]
}
if (!t.length) return e
var i = t.shift()
return is.object(i)
? (Object.keys(i).forEach(function (t) {
is.object(i[t])
? (Object.keys(e).includes(t) ||
Object.assign(e, _defineProperty2({}, t, {})),
extend(e[t], i[t]))
: Object.assign(e, _defineProperty2({}, t, i[t]))
}),
extend.apply(void 0, [e].concat(t)))
: e
}
function wrap(e, t) {
var i = e.length ? e : [e]
Array.from(i)
.reverse()
.forEach(function (e, i) {
var s = i > 0 ? t.cloneNode(!0) : t,
n = e.parentNode,
r = e.nextSibling
s.appendChild(e), r ? n.insertBefore(s, r) : n.appendChild(s)
})
}
function setAttributes(e, t) {
is.element(e) &&
!is.empty(t) &&
Object.entries(t)
.filter(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
e = _ref2[1]
return !is.nullOrUndefined(e)
})
.forEach(function (_ref3) {
var _ref4 = _slicedToArray(_ref3, 2),
t = _ref4[0],
i = _ref4[1]
return e.setAttribute(t, i)
})
}
function createElement(e, t, i) {
var s = document.createElement(e)
return (
is.object(t) && setAttributes(s, t),
is.string(i) && (s.innerText = i),
s
)
}
function insertAfter(e, t) {
is.element(e) &&
is.element(t) &&
t.parentNode.insertBefore(e, t.nextSibling)
}
function insertElement(e, t, i, s) {
is.element(t) && t.appendChild(createElement(e, i, s))
}
function removeElement(e) {
is.nodeList(e) || is.array(e)
? Array.from(e).forEach(removeElement)
: is.element(e) &&
is.element(e.parentNode) &&
e.parentNode.removeChild(e)
}
function emptyElement(e) {
if (!is.element(e)) return
var t = e.childNodes.length
for (; t > 0; ) {
e.removeChild(e.lastChild), (t -= 1)
}
}
function replaceElement(e, t) {
return is.element(t) && is.element(t.parentNode) && is.element(e)
? (t.parentNode.replaceChild(e, t), e)
: null
}
function getAttributesFromSelector(e, t) {
if (!is.string(e) || is.empty(e)) return {}
var i = {},
s = extend({}, t)
return (
e.split(',').forEach(function (e) {
var t = e.trim(),
n = t.replace('.', ''),
r = t.replace(/[[\]]/g, '').split('='),
_r = _slicedToArray(r, 1),
a = _r[0],
o = r.length > 1 ? r[1].replace(/["']/g, '') : ''
switch (t.charAt(0)) {
case '.':
is.string(s.class)
? (i.class = ''.concat(s.class, ' ').concat(n))
: (i.class = n)
break
case '#':
i.id = t.replace('#', '')
break
case '[':
i[a] = o
}
}),
extend(s, i)
)
}
function toggleHidden(e, t) {
if (!is.element(e)) return
var i = t
is.boolean(i) || (i = !e.hidden), (e.hidden = i)
}
function toggleClass(e, t, i) {
if (is.nodeList(e))
return Array.from(e).map(function (e) {
return toggleClass(e, t, i)
})
if (is.element(e)) {
var s = 'toggle'
return (
void 0 !== i && (s = i ? 'add' : 'remove'),
e.classList[s](t),
e.classList.contains(t)
)
}
return !1
}
function hasClass(e, t) {
return is.element(e) && e.classList.contains(t)
}
function matches(e, t) {
var _Element = Element,
i = _Element.prototype
return (
i.matches ||
i.webkitMatchesSelector ||
i.mozMatchesSelector ||
i.msMatchesSelector ||
function () {
return Array.from(document.querySelectorAll(t)).includes(this)
}
).call(e, t)
}
function closest$1(e, t) {
var _Element2 = Element,
i = _Element2.prototype
return (
i.closest ||
function () {
var e = this
do {
if (matches.matches(e, t)) return e
e = e.parentElement || e.parentNode
} while (null !== e && 1 === e.nodeType)
return null
}
).call(e, t)
}
function getElements(e) {
return this.elements.container.querySelectorAll(e)
}
function getElement(e) {
return this.elements.container.querySelector(e)
}
function setFocus() {
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: null
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: !1
is.element(e) &&
(e.focus({ preventScroll: !0 }),
t && toggleClass(e, this.config.classNames.tabFocus))
}
var defaultCodecs = {
'audio/ogg': 'vorbis',
'audio/wav': '1',
'video/webm': 'vp8, vorbis',
'video/mp4': 'avc1.42E01E, mp4a.40.2',
'video/ogg': 'theora'
},
support = {
audio: 'canPlayType' in document.createElement('audio'),
video: 'canPlayType' in document.createElement('video'),
check: function check(e, t, i) {
var s = browser.isIPhone && i && support.playsinline,
n = support[e] || 'html5' !== t
return {
api: n,
ui:
n &&
support.rangeInput &&
('video' !== e || !browser.isIPhone || s)
}
},
pip: !(
browser.isIPhone ||
(!is.function(
createElement('video').webkitSetPresentationMode
) &&
(!document.pictureInPictureEnabled ||
createElement('video').disablePictureInPicture))
),
airplay: is.function(
window.WebKitPlaybackTargetAvailabilityEvent
),
playsinline: 'playsInline' in document.createElement('video'),
mime: function mime(e) {
if (is.empty(e)) return !1
var _e$split = e.split('/'),
_e$split2 = _slicedToArray(_e$split, 1),
t = _e$split2[0]
var i = e
if (!this.isHTML5 || t !== this.type) return !1
Object.keys(defaultCodecs).includes(i) &&
(i += '; codecs="'.concat(defaultCodecs[e], '"'))
try {
return Boolean(
i && this.media.canPlayType(i).replace(/no/, '')
)
} catch (e) {
return !1
}
},
textTracks: 'textTracks' in document.createElement('video'),
rangeInput: (function () {
var e = document.createElement('input')
return (e.type = 'range'), 'range' === e.type
})(),
touch: 'ontouchstart' in document.documentElement,
transitions: !1 !== transitionEndEvent,
reducedMotion:
'matchMedia' in window &&
window.matchMedia('(prefers-reduced-motion)').matches
},
supportsPassiveListeners = (function () {
var e = !1
try {
var t = Object.defineProperty({}, 'passive', {
get: function get() {
return (e = !0), null
}
})
window.addEventListener('test', null, t),
window.removeEventListener('test', null, t)
} catch (e) {}
return e
})()
function toggleListener(e, t, i) {
var _this2 = this
var s =
arguments.length > 3 && arguments[3] !== undefined
? arguments[3]
: !1
var n =
arguments.length > 4 && arguments[4] !== undefined
? arguments[4]
: !0
var r =
arguments.length > 5 && arguments[5] !== undefined
? arguments[5]
: !1
if (
!e ||
!('addEventListener' in e) ||
is.empty(t) ||
!is.function(i)
)
return
var a = t.split(' ')
var o = r
supportsPassiveListeners && (o = { passive: n, capture: r }),
a.forEach(function (t) {
_this2 &&
_this2.eventListeners &&
s &&
_this2.eventListeners.push({
element: e,
type: t,
callback: i,
options: o
}),
e[s ? 'addEventListener' : 'removeEventListener'](t, i, o)
})
}
function on(e) {
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: ''
var i = arguments.length > 2 ? arguments[2] : undefined
var s =
arguments.length > 3 && arguments[3] !== undefined
? arguments[3]
: !0
var n =
arguments.length > 4 && arguments[4] !== undefined
? arguments[4]
: !1
toggleListener.call(this, e, t, i, !0, s, n)
}
function off(e) {
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: ''
var i = arguments.length > 2 ? arguments[2] : undefined
var s =
arguments.length > 3 && arguments[3] !== undefined
? arguments[3]
: !0
var n =
arguments.length > 4 && arguments[4] !== undefined
? arguments[4]
: !1
toggleListener.call(this, e, t, i, !1, s, n)
}
function once(e) {
var _this3 = this
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: ''
var i = arguments.length > 2 ? arguments[2] : undefined
var s =
arguments.length > 3 && arguments[3] !== undefined
? arguments[3]
: !0
var n =
arguments.length > 4 && arguments[4] !== undefined
? arguments[4]
: !1
var r = function r() {
for (
var _len2 = arguments.length, a = new Array(_len2), _key2 = 0;
_key2 < _len2;
_key2++
) {
a[_key2] = arguments[_key2]
}
off(e, t, r, s, n), i.apply(_this3, a)
}
toggleListener.call(this, e, t, r, !0, s, n)
}
function triggerEvent(e) {
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: ''
var i =
arguments.length > 2 && arguments[2] !== undefined
? arguments[2]
: !1
var s =
arguments.length > 3 && arguments[3] !== undefined
? arguments[3]
: {}
if (!is.element(e) || is.empty(t)) return
var n = new CustomEvent(t, {
bubbles: i,
detail: _objectSpread(_objectSpread({}, s), {}, { plyr: this })
})
e.dispatchEvent(n)
}
function unbindListeners() {
this &&
this.eventListeners &&
(this.eventListeners.forEach(function (e) {
var t = e.element,
i = e.type,
s = e.callback,
n = e.options
t.removeEventListener(i, s, n)
}),
(this.eventListeners = []))
}
function ready() {
var _this4 = this
return new Promise(function (e) {
return _this4.ready
? setTimeout(e, 0)
: on.call(_this4, _this4.elements.container, 'ready', e)
}).then(function () {})
}
function silencePromise(e) {
is.promise(e) && e.then(null, function () {})
}
function dedupe(e) {
return is.array(e)
? e.filter(function (t, i) {
return e.indexOf(t) === i
})
: e
}
function closest(e, t) {
return is.array(e) && e.length
? e.reduce(function (e, i) {
return Math.abs(i - t) < Math.abs(e - t) ? i : e
})
: null
}
function supportsCSS(e) {
return !(!window || !window.CSS) && window.CSS.supports(e)
}
var standardRatios = [
[1, 1],
[4, 3],
[3, 4],
[5, 4],
[4, 5],
[3, 2],
[2, 3],
[16, 10],
[10, 16],
[16, 9],
[9, 16],
[21, 9],
[9, 21],
[32, 9],
[9, 32]
].reduce(function (e, _ref5) {
var _ref6 = _slicedToArray(_ref5, 2),
t = _ref6[0],
i = _ref6[1]
return _objectSpread(
_objectSpread({}, e),
{},
_defineProperty2({}, t / i, [t, i])
)
}, {})
function validateAspectRatio(e) {
if (!(is.array(e) || (is.string(e) && e.includes(':')))) return !1
return (is.array(e) ? e : e.split(':')).map(Number).every(is.number)
}
function reduceAspectRatio(e) {
if (!is.array(e) || !e.every(is.number)) return null
var _e2 = _slicedToArray(e, 2),
t = _e2[0],
i = _e2[1],
s = function s(e, t) {
return 0 === t ? e : s(t, e % t)
},
n = s(t, i)
return [t / n, i / n]
}
function getAspectRatio(e) {
var _this$embed
var t = function t(e) {
return validateAspectRatio(e) ? e.split(':').map(Number) : null
}
var i = t(e)
if (
(null === i && (i = t(this.config.ratio)),
null === i &&
!is.empty(this.embed) &&
is.array(this.embed.ratio) &&
((_this$embed = this.embed),
(i = _this$embed.ratio),
_this$embed),
null === i && this.isHTML5)
) {
var _this$media = this.media,
_e3 = _this$media.videoWidth,
_t = _this$media.videoHeight
i = [_e3, _t]
}
return reduceAspectRatio(i)
}
function setAspectRatio(e) {
if (!this.isVideo) return {}
var t = this.elements.wrapper,
i = getAspectRatio.call(this, e)
if (!is.array(i)) return {}
var _reduceAspectRatio = reduceAspectRatio(i),
_reduceAspectRatio2 = _slicedToArray(_reduceAspectRatio, 2),
s = _reduceAspectRatio2[0],
n = _reduceAspectRatio2[1],
r = (100 / s) * n
if (
(supportsCSS('aspect-ratio: '.concat(s, '/').concat(n))
? (t.style.aspectRatio = ''.concat(s, '/').concat(n))
: (t.style.paddingBottom = ''.concat(r, '%')),
this.isVimeo && !this.config.vimeo.premium && this.supported.ui)
) {
var _e4 =
(100 / this.media.offsetWidth) *
parseInt(
window.getComputedStyle(this.media).paddingBottom,
10
),
_i2 = (_e4 - r) / (_e4 / 50)
this.fullscreen.active
? (t.style.paddingBottom = null)
: (this.media.style.transform = 'translateY(-'.concat(
_i2,
'%)'
))
} else
this.isHTML5 &&
t.classList.add(this.config.classNames.videoFixedRatio)
return { padding: r, ratio: i }
}
function roundAspectRatio(e, t) {
var i =
arguments.length > 2 && arguments[2] !== undefined
? arguments[2]
: 0.05
var s = e / t,
n = closest(Object.keys(standardRatios), s)
return Math.abs(n - s) <= i ? standardRatios[n] : [e, t]
}
function getViewportSize() {
return [
Math.max(
document.documentElement.clientWidth || 0,
window.innerWidth || 0
),
Math.max(
document.documentElement.clientHeight || 0,
window.innerHeight || 0
)
]
}
var html5 = {
getSources: function getSources() {
var _this5 = this
if (!this.isHTML5) return []
return Array.from(this.media.querySelectorAll('source')).filter(
function (e) {
var t = e.getAttribute('type')
return !!is.empty(t) || support.mime.call(_this5, t)
}
)
},
getQualityOptions: function getQualityOptions() {
return this.config.quality.forced
? this.config.quality.options
: html5.getSources
.call(this)
.map(function (e) {
return Number(e.getAttribute('size'))
})
.filter(Boolean)
},
setup: function setup() {
if (!this.isHTML5) return
var e = this
;(e.options.speed = e.config.speed.options),
is.empty(this.config.ratio) || setAspectRatio.call(e),
Object.defineProperty(e.media, 'quality', {
get: function get() {
var t = html5.getSources.call(e).find(function (t) {
return t.getAttribute('src') === e.source
})
return t && Number(t.getAttribute('size'))
},
set: function set(t) {
if (e.quality !== t) {
if (
e.config.quality.forced &&
is.function(e.config.quality.onChange)
)
e.config.quality.onChange(t)
else {
var i = html5.getSources.call(e).find(function (e) {
return Number(e.getAttribute('size')) === t
})
if (!i) return
var _e$media = e.media,
s = _e$media.currentTime,
n = _e$media.paused,
r = _e$media.preload,
a = _e$media.readyState,
o = _e$media.playbackRate
;(e.media.src = i.getAttribute('src')),
('none' !== r || a) &&
(e.once('loadedmetadata', function () {
;(e.speed = o),
(e.currentTime = s),
n || silencePromise(e.play())
}),
e.media.load())
}
triggerEvent.call(e, e.media, 'qualitychange', !1, {
quality: t
})
}
}
})
},
cancelRequests: function cancelRequests() {
this.isHTML5 &&
(removeElement(html5.getSources.call(this)),
this.media.setAttribute('src', this.config.blankVideo),
this.media.load(),
this.debug.log('Cancelled network requests'))
}
}
function generateId(e) {
return ''.concat(e, '-').concat(Math.floor(1e4 * Math.random()))
}
function format(e) {
for (
var _len3 = arguments.length,
t = new Array(_len3 > 1 ? _len3 - 1 : 0),
_key3 = 1;
_key3 < _len3;
_key3++
) {
t[_key3 - 1] = arguments[_key3]
}
return is.empty(e)
? e
: e.toString().replace(/{(\d+)}/g, function (e, i) {
return t[i].toString()
})
}
function getPercentage(e, t) {
return 0 === e || 0 === t || Number.isNaN(e) || Number.isNaN(t)
? 0
: ((e / t) * 100).toFixed(2)
}
var replaceAll = function replaceAll() {
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: ''
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: ''
var i =
arguments.length > 2 && arguments[2] !== undefined
? arguments[2]
: ''
return e.replace(
new RegExp(
t.toString().replace(/([.*+?^=!:${}()|[\]/\\])/g, '\\$1'),
'g'
),
i.toString()
)
},
toTitleCase = function toTitleCase() {
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: ''
return e.toString().replace(/\w\S*/g, function (e) {
return e.charAt(0).toUpperCase() + e.slice(1).toLowerCase()
})
}
function toPascalCase() {
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: ''
var t = e.toString()
return (
(t = replaceAll(t, '-', ' ')),
(t = replaceAll(t, '_', ' ')),
(t = toTitleCase(t)),
replaceAll(t, ' ', '')
)
}
function toCamelCase() {
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: ''
var t = e.toString()
return (t = toPascalCase(t)), t.charAt(0).toLowerCase() + t.slice(1)
}
function stripHTML(e) {
var t = document.createDocumentFragment(),
i = document.createElement('div')
return t.appendChild(i), (i.innerHTML = e), t.firstChild.innerText
}
function getHTML(e) {
var t = document.createElement('div')
return t.appendChild(e), t.innerHTML
}
var resources = {
pip: 'PIP',
airplay: 'AirPlay',
html5: 'HTML5',
vimeo: 'Vimeo',
youtube: 'YouTube'
},
i18n = {
get: function get() {
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: ''
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: {}
if (is.empty(e) || is.empty(t)) return ''
var i = getDeep(t.i18n, e)
if (is.empty(i))
return Object.keys(resources).includes(e) ? resources[e] : ''
var s = { '{seektime}': t.seekTime, '{title}': t.title }
return (
Object.entries(s).forEach(function (_ref7) {
var _ref8 = _slicedToArray(_ref7, 2),
e = _ref8[0],
t = _ref8[1]
i = replaceAll(i, e, t)
}),
i
)
}
}
var Storage = /*#__PURE__*/ (function () {
function Storage(e) {
var _this6 = this
_classCallCheck2(this, Storage)
_defineProperty$1(this, 'get', function (e) {
if (!Storage.supported || !_this6.enabled) return null
var t = window.localStorage.getItem(_this6.key)
if (is.empty(t)) return null
var i = JSON.parse(t)
return is.string(e) && e.length ? i[e] : i
}),
_defineProperty$1(this, 'set', function (e) {
if (!Storage.supported || !_this6.enabled) return
if (!is.object(e)) return
var t = _this6.get()
is.empty(t) && (t = {}), extend(t, e)
try {
window.localStorage.setItem(_this6.key, JSON.stringify(t))
} catch (e) {}
}),
(this.enabled = e.config.storage.enabled),
(this.key = e.config.storage.key)
}
_createClass2(Storage, null, [
{
key: 'supported',
get: function get() {
try {
if (!('localStorage' in window)) return !1
var e = '___test'
return (
window.localStorage.setItem(e, e),
window.localStorage.removeItem(e),
!0
)
} catch (e) {
return !1
}
}
}
])
return Storage
})()
function fetch(e) {
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: 'text'
return new Promise(function (i, s) {
try {
var _s2 = new XMLHttpRequest()
if (!('withCredentials' in _s2)) return
_s2.addEventListener('load', function () {
if ('text' === t)
try {
i(JSON.parse(_s2.responseText))
} catch (e) {
i(_s2.responseText)
}
else i(_s2.response)
}),
_s2.addEventListener('error', function () {
throw new Error(_s2.status)
}),
_s2.open('GET', e, !0),
(_s2.responseType = t),
_s2.send()
} catch (e) {
s(e)
}
})
}
function _loadSprite(e, t) {
if (!is.string(e)) return
var i = is.string(t)
var s = !1
var n = function n() {
return null !== document.getElementById(t)
},
r = function r(e, t) {
;(e.innerHTML = t),
(i && n()) ||
document.body.insertAdjacentElement('afterbegin', e)
}
if (!i || !n()) {
var _n2 = Storage.supported,
a = document.createElement('div')
if (
(a.setAttribute('hidden', ''),
i && a.setAttribute('id', t),
_n2)
) {
var _e5 = window.localStorage.getItem('cache-'.concat(t))
if (((s = null !== _e5), s)) {
var _t2 = JSON.parse(_e5)
r(a, _t2.content)
}
}
fetch(e)
.then(function (e) {
if (!is.empty(e)) {
if (_n2)
try {
window.localStorage.setItem(
'cache-'.concat(t),
JSON.stringify({ content: e })
)
} catch (e) {}
r(a, e)
}
})
.catch(function () {})
}
}
var getHours = function getHours(e) {
return Math.trunc((e / 60 / 60) % 60, 10)
},
getSeconds = function getSeconds(e) {
return Math.trunc(e % 60, 10)
}
function _formatTime() {
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: 0
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: !1
var i =
arguments.length > 2 && arguments[2] !== undefined
? arguments[2]
: !1
if (!is.number(e)) return _formatTime(void 0, t, i)
var s = function s(e) {
return '0'.concat(e).slice(-2)
}
var n = getHours(e)
var r = ((a = e), Math.trunc((a / 60) % 60, 10))
var a
var o = getSeconds(e)
return (
(n = t || n > 0 ? ''.concat(n, ':') : ''),
''
.concat(i && e > 0 ? '-' : '')
.concat(n)
.concat(s(r), ':')
.concat(s(o))
)
}
var controls = {
getIconUrl: function getIconUrl() {
var e = new URL(this.config.iconUrl, window.location),
t = window.location.host
? window.location.host
: window.top.location.host,
i = e.host !== t || (browser.isIE && !window.svg4everybody)
return { url: this.config.iconUrl, cors: i }
},
findElements: function findElements() {
try {
return (
(this.elements.controls = getElement.call(
this,
this.config.selectors.controls.wrapper
)),
(this.elements.buttons = {
play: getElements.call(
this,
this.config.selectors.buttons.play
),
pause: getElement.call(
this,
this.config.selectors.buttons.pause
),
restart: getElement.call(
this,
this.config.selectors.buttons.restart
),
rewind: getElement.call(
this,
this.config.selectors.buttons.rewind
),
fastForward: getElement.call(
this,
this.config.selectors.buttons.fastForward
),
mute: getElement.call(
this,
this.config.selectors.buttons.mute
),
pip: getElement.call(
this,
this.config.selectors.buttons.pip
),
airplay: getElement.call(
this,
this.config.selectors.buttons.airplay
),
settings: getElement.call(
this,
this.config.selectors.buttons.settings
),
captions: getElement.call(
this,
this.config.selectors.buttons.captions
),
fullscreen: getElement.call(
this,
this.config.selectors.buttons.fullscreen
)
}),
(this.elements.progress = getElement.call(
this,
this.config.selectors.progress
)),
(this.elements.inputs = {
seek: getElement.call(
this,
this.config.selectors.inputs.seek
),
volume: getElement.call(
this,
this.config.selectors.inputs.volume
)
}),
(this.elements.display = {
buffer: getElement.call(
this,
this.config.selectors.display.buffer
),
currentTime: getElement.call(
this,
this.config.selectors.display.currentTime
),
duration: getElement.call(
this,
this.config.selectors.display.duration
)
}),
is.element(this.elements.progress) &&
(this.elements.display.seekTooltip =
this.elements.progress.querySelector(
'.'.concat(this.config.classNames.tooltip)
)),
!0
)
} catch (e) {
return (
this.debug.warn(
'It looks like there is a problem with your custom controls HTML',
e
),
this.toggleNativeControls(!0),
!1
)
}
},
createIcon: function createIcon(e, t) {
var i = 'http://www.w3.org/2000/svg',
s = controls.getIconUrl.call(this),
n = ''
.concat(s.cors ? '' : s.url, '#')
.concat(this.config.iconPrefix),
r = document.createElementNS(i, 'svg')
setAttributes(
r,
extend(t, { 'aria-hidden': 'true', focusable: 'false' })
)
var a = document.createElementNS(i, 'use'),
o = ''.concat(n, '-').concat(e)
return (
'href' in a &&
a.setAttributeNS('http://www.w3.org/1999/xlink', 'href', o),
a.setAttributeNS(
'http://www.w3.org/1999/xlink',
'xlink:href',
o
),
r.appendChild(a),
r
)
},
createLabel: function createLabel(e) {
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: {}
var i = i18n.get(e, this.config)
return createElement(
'span',
_objectSpread(
_objectSpread({}, t),
{},
{
class: [t.class, this.config.classNames.hidden]
.filter(Boolean)
.join(' ')
}
),
i
)
},
createBadge: function createBadge(e) {
if (is.empty(e)) return null
var t = createElement('span', {
class: this.config.classNames.menu.value
})
return (
t.appendChild(
createElement(
'span',
{ class: this.config.classNames.menu.badge },
e
)
),
t
)
},
createButton: function createButton(e, t) {
var _this7 = this
var i = extend({}, t)
var s = toCamelCase(e)
var n = {
element: 'button',
toggle: !1,
label: null,
icon: null,
labelPressed: null,
iconPressed: null
}
switch (
(['element', 'icon', 'label'].forEach(function (e) {
Object.keys(i).includes(e) && ((n[e] = i[e]), delete i[e])
}),
'button' !== n.element ||
Object.keys(i).includes('type') ||
(i.type = 'button'),
Object.keys(i).includes('class')
? i.class.split(' ').some(function (e) {
return e === _this7.config.classNames.control
}) ||
extend(i, {
class: ''
.concat(i.class, ' ')
.concat(this.config.classNames.control)
})
: (i.class = this.config.classNames.control),
e)
) {
case 'play':
;(n.toggle = !0),
(n.label = 'play'),
(n.labelPressed = 'pause'),
(n.icon = 'play'),
(n.iconPressed = 'pause')
break
case 'mute':
;(n.toggle = !0),
(n.label = 'mute'),
(n.labelPressed = 'unmute'),
(n.icon = 'volume'),
(n.iconPressed = 'muted')
break
case 'captions':
;(n.toggle = !0),
(n.label = 'enableCaptions'),
(n.labelPressed = 'disableCaptions'),
(n.icon = 'captions-off'),
(n.iconPressed = 'captions-on')
break
case 'fullscreen':
;(n.toggle = !0),
(n.label = 'enterFullscreen'),
(n.labelPressed = 'exitFullscreen'),
(n.icon = 'enter-fullscreen'),
(n.iconPressed = 'exit-fullscreen')
break
case 'play-large':
;(i.class += ' '.concat(
this.config.classNames.control,
'--overlaid'
)),
(s = 'play'),
(n.label = 'play'),
(n.icon = 'play')
break
default:
is.empty(n.label) && (n.label = s),
is.empty(n.icon) && (n.icon = e)
}
var r = createElement(n.element)
return (
n.toggle
? (r.appendChild(
controls.createIcon.call(this, n.iconPressed, {
class: 'icon--pressed'
})
),
r.appendChild(
controls.createIcon.call(this, n.icon, {
class: 'icon--not-pressed'
})
),
r.appendChild(
controls.createLabel.call(this, n.labelPressed, {
class: 'label--pressed'
})
),
r.appendChild(
controls.createLabel.call(this, n.label, {
class: 'label--not-pressed'
})
))
: (r.appendChild(controls.createIcon.call(this, n.icon)),
r.appendChild(controls.createLabel.call(this, n.label))),
extend(
i,
getAttributesFromSelector(this.config.selectors.buttons[s], i)
),
setAttributes(r, i),
'play' === s
? (is.array(this.elements.buttons[s]) ||
(this.elements.buttons[s] = []),
this.elements.buttons[s].push(r))
: (this.elements.buttons[s] = r),
r
)
},
createRange: function createRange(e, t) {
var i = createElement(
'input',
extend(
getAttributesFromSelector(this.config.selectors.inputs[e]),
{
type: 'range',
min: 0,
max: 100,
step: 0.01,
value: 0,
autocomplete: 'off',
role: 'slider',
'aria-label': i18n.get(e, this.config),
'aria-valuemin': 0,
'aria-valuemax': 100,
'aria-valuenow': 0
},
t
)
)
return (
(this.elements.inputs[e] = i),
controls.updateRangeFill.call(this, i),
RangeTouch.setup(i),
i
)
},
createProgress: function createProgress(e, t) {
var i = createElement(
'progress',
extend(
getAttributesFromSelector(this.config.selectors.display[e]),
{
min: 0,
max: 100,
value: 0,
role: 'progressbar',
'aria-hidden': !0
},
t
)
)
if ('volume' !== e) {
i.appendChild(createElement('span', null, '0'))
var _t3 = { played: 'played', buffer: 'buffered' }[e],
s = _t3 ? i18n.get(_t3, this.config) : ''
i.innerText = '% '.concat(s.toLowerCase())
}
return (this.elements.display[e] = i), i
},
createTime: function createTime(e, t) {
var i = getAttributesFromSelector(
this.config.selectors.display[e],
t
),
s = createElement(
'div',
extend(i, {
class: ''
.concat(i.class ? i.class : '', ' ')
.concat(this.config.classNames.display.time, ' ')
.trim(),
'aria-label': i18n.get(e, this.config)
}),
'00:00'
)
return (this.elements.display[e] = s), s
},
bindMenuItemShortcuts: function bindMenuItemShortcuts(e, t) {
var _this8 = this
on.call(
this,
e,
'keydown keyup',
function (i) {
if (
!['Space', 'ArrowUp', 'ArrowDown', 'ArrowRight'].includes(
i.key
)
)
return
if (
(i.preventDefault(),
i.stopPropagation(),
'keydown' === i.type)
)
return
var s = matches(e, '[role="menuitemradio"]')
if (!s && ['Space', 'ArrowRight'].includes(i.key))
controls.showMenuPanel.call(_this8, t, !0)
else {
var _t4
'Space' !== i.key &&
('ArrowDown' === i.key || (s && 'ArrowRight' === i.key)
? ((_t4 = e.nextElementSibling),
is.element(_t4) ||
(_t4 = e.parentNode.firstElementChild))
: ((_t4 = e.previousElementSibling),
is.element(_t4) ||
(_t4 = e.parentNode.lastElementChild)),
setFocus.call(_this8, _t4, !0))
}
},
!1
),
on.call(this, e, 'keyup', function (e) {
'Return' === e.key &&
controls.focusFirstMenuItem.call(_this8, null, !0)
})
},
createMenuItem: function createMenuItem(_ref9) {
var _this9 = this
var e = _ref9.value,
t = _ref9.list,
i = _ref9.type,
s = _ref9.title,
_ref9$badge = _ref9.badge,
n = _ref9$badge === void 0 ? null : _ref9$badge,
_ref9$checked = _ref9.checked,
r = _ref9$checked === void 0 ? !1 : _ref9$checked
var a = getAttributesFromSelector(
this.config.selectors.inputs[i]
),
o = createElement(
'button',
extend(a, {
type: 'button',
role: 'menuitemradio',
class: ''
.concat(this.config.classNames.control, ' ')
.concat(a.class ? a.class : '')
.trim(),
'aria-checked': r,
value: e
})
),
l = createElement('span')
;(l.innerHTML = s),
is.element(n) && l.appendChild(n),
o.appendChild(l),
Object.defineProperty(o, 'checked', {
enumerable: !0,
get: function get() {
return 'true' === o.getAttribute('aria-checked')
},
set: function set(e) {
e &&
Array.from(o.parentNode.children)
.filter(function (e) {
return matches(e, '[role="menuitemradio"]')
})
.forEach(function (e) {
return e.setAttribute('aria-checked', 'false')
}),
o.setAttribute('aria-checked', e ? 'true' : 'false')
}
}),
this.listeners.bind(
o,
'click keyup',
function (t) {
if (!is.keyboardEvent(t) || 'Space' === t.key) {
switch (
(t.preventDefault(),
t.stopPropagation(),
(o.checked = !0),
i)
) {
case 'language':
_this9.currentTrack = Number(e)
break
case 'quality':
_this9.quality = e
break
case 'speed':
_this9.speed = parseFloat(e)
}
controls.showMenuPanel.call(
_this9,
'home',
is.keyboardEvent(t)
)
}
},
i,
!1
),
controls.bindMenuItemShortcuts.call(this, o, i),
t.appendChild(o)
},
formatTime: function formatTime() {
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: 0
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: !1
if (!is.number(e)) return e
return _formatTime(e, getHours(this.duration) > 0, t)
},
updateTimeDisplay: function updateTimeDisplay() {
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: null
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: 0
var i =
arguments.length > 2 && arguments[2] !== undefined
? arguments[2]
: !1
is.element(e) &&
is.number(t) &&
(e.innerText = controls.formatTime(t, i))
},
updateVolume: function updateVolume() {
this.supported.ui &&
(is.element(this.elements.inputs.volume) &&
controls.setRange.call(
this,
this.elements.inputs.volume,
this.muted ? 0 : this.volume
),
is.element(this.elements.buttons.mute) &&
(this.elements.buttons.mute.pressed =
this.muted || 0 === this.volume))
},
setRange: function setRange(e) {
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: 0
is.element(e) &&
((e.value = t), controls.updateRangeFill.call(this, e))
},
updateProgress: function updateProgress(e) {
var _this10 = this
if (!this.supported.ui || !is.event(e)) return
var t = 0
var i = function i(e, t) {
var i = is.number(t) ? t : 0,
s = is.element(e) ? e : _this10.elements.display.buffer
if (is.element(s)) {
s.value = i
var _e6 = s.getElementsByTagName('span')[0]
is.element(_e6) && (_e6.childNodes[0].nodeValue = i)
}
}
if (e)
switch (e.type) {
case 'timeupdate':
case 'seeking':
case 'seeked':
;(t = getPercentage(this.currentTime, this.duration)),
'timeupdate' === e.type &&
controls.setRange.call(
this,
this.elements.inputs.seek,
t
)
break
case 'playing':
case 'progress':
i(this.elements.display.buffer, 100 * this.buffered)
}
},
updateRangeFill: function updateRangeFill(e) {
var t = is.event(e) ? e.target : e
if (is.element(t) && 'range' === t.getAttribute('type')) {
if (matches(t, this.config.selectors.inputs.seek)) {
t.setAttribute('aria-valuenow', this.currentTime)
var _e7 = controls.formatTime(this.currentTime),
i = controls.formatTime(this.duration),
s = i18n.get('seekLabel', this.config)
t.setAttribute(
'aria-valuetext',
s.replace('{currentTime}', _e7).replace('{duration}', i)
)
} else if (matches(t, this.config.selectors.inputs.volume)) {
var _e8 = 100 * t.value
t.setAttribute('aria-valuenow', _e8),
t.setAttribute(
'aria-valuetext',
''.concat(_e8.toFixed(1), '%')
)
} else t.setAttribute('aria-valuenow', t.value)
browser.isWebkit &&
t.style.setProperty('--value', (t.value / t.max) * 100 + '%')
}
},
updateSeekTooltip: function updateSeekTooltip(e) {
var t, i
if (
!this.config.tooltips.seek ||
!is.element(this.elements.inputs.seek) ||
!is.element(this.elements.display.seekTooltip) ||
0 === this.duration
)
return
var s = this.elements.display.seekTooltip,
n = ''.concat(this.config.classNames.tooltip, '--visible'),
r = function r(e) {
return toggleClass(s, n, e)
}
if (this.touch) return void r(!1)
var a = 0
var o = this.elements.progress.getBoundingClientRect()
if (is.event(e)) a = (100 / o.width) * (e.pageX - o.left)
else {
if (!hasClass(s, n)) return
a = parseFloat(s.style.left, 10)
}
a < 0 ? (a = 0) : a > 100 && (a = 100)
var l = (this.duration / 100) * a
s.innerText = controls.formatTime(l)
var c =
null === (t = this.config.markers) ||
void 0 === t ||
null === (i = t.points) ||
void 0 === i
? void 0
: i.find(function (_ref10) {
var e = _ref10.time
return e === Math.round(l)
})
c &&
s.insertAdjacentHTML('afterbegin', ''.concat(c.label, '
')),
(s.style.left = ''.concat(a, '%')),
is.event(e) &&
['mouseenter', 'mouseleave'].includes(e.type) &&
r('mouseenter' === e.type)
},
timeUpdate: function timeUpdate(e) {
var t =
!is.element(this.elements.display.duration) &&
this.config.invertTime
controls.updateTimeDisplay.call(
this,
this.elements.display.currentTime,
t ? this.duration - this.currentTime : this.currentTime,
t
),
(e && 'timeupdate' === e.type && this.media.seeking) ||
controls.updateProgress.call(this, e)
},
durationUpdate: function durationUpdate() {
if (
!this.supported.ui ||
(!this.config.invertTime && this.currentTime)
)
return
if (this.duration >= Math.pow(2, 32))
return (
toggleHidden(this.elements.display.currentTime, !0),
void toggleHidden(this.elements.progress, !0)
)
is.element(this.elements.inputs.seek) &&
this.elements.inputs.seek.setAttribute(
'aria-valuemax',
this.duration
)
var e = is.element(this.elements.display.duration)
!e &&
this.config.displayDuration &&
this.paused &&
controls.updateTimeDisplay.call(
this,
this.elements.display.currentTime,
this.duration
),
e &&
controls.updateTimeDisplay.call(
this,
this.elements.display.duration,
this.duration
),
this.config.markers.enabled && controls.setMarkers.call(this),
controls.updateSeekTooltip.call(this)
},
toggleMenuButton: function toggleMenuButton(e, t) {
toggleHidden(this.elements.settings.buttons[e], !t)
},
updateSetting: function updateSetting(e, t, i) {
var s = this.elements.settings.panels[e]
var n = null,
r = t
if ('captions' === e) n = this.currentTrack
else {
if (
((n = is.empty(i) ? this[e] : i),
is.empty(n) && (n = this.config[e].default),
!is.empty(this.options[e]) && !this.options[e].includes(n))
)
return void this.debug.warn(
"Unsupported value of '".concat(n, "' for ").concat(e)
)
if (!this.config[e].options.includes(n))
return void this.debug.warn(
"Disabled value of '".concat(n, "' for ").concat(e)
)
}
if (
(is.element(r) || (r = s && s.querySelector('[role="menu"]')),
!is.element(r))
)
return
this.elements.settings.buttons[e].querySelector(
'.'.concat(this.config.classNames.menu.value)
).innerHTML = controls.getLabel.call(this, e, n)
var a = r && r.querySelector('[value="'.concat(n, '"]'))
is.element(a) && (a.checked = !0)
},
getLabel: function getLabel(e, t) {
switch (e) {
case 'speed':
return 1 === t
? i18n.get('normal', this.config)
: ''.concat(t, '×')
case 'quality':
if (is.number(t)) {
var _e9 = i18n.get('qualityLabel.'.concat(t), this.config)
return _e9.length ? _e9 : ''.concat(t, 'p')
}
return toTitleCase(t)
case 'captions':
return captions.getLabel.call(this)
default:
return null
}
},
setQualityMenu: function setQualityMenu(e) {
var _this11 = this
if (!is.element(this.elements.settings.panels.quality)) return
var t = 'quality',
i =
this.elements.settings.panels.quality.querySelector(
'[role="menu"]'
)
is.array(e) &&
(this.options.quality = dedupe(e).filter(function (e) {
return _this11.config.quality.options.includes(e)
}))
var s =
!is.empty(this.options.quality) &&
this.options.quality.length > 1
if (
(controls.toggleMenuButton.call(this, t, s),
emptyElement(i),
controls.checkMenu.call(this),
!s)
)
return
var n = function n(e) {
var t = i18n.get('qualityBadge.'.concat(e), _this11.config)
return t.length ? controls.createBadge.call(_this11, t) : null
}
this.options.quality
.sort(function (e, t) {
var i = _this11.config.quality.options
return i.indexOf(e) > i.indexOf(t) ? 1 : -1
})
.forEach(function (e) {
controls.createMenuItem.call(_this11, {
value: e,
list: i,
type: t,
title: controls.getLabel.call(_this11, 'quality', e),
badge: n(e)
})
}),
controls.updateSetting.call(this, t, i)
},
setCaptionsMenu: function setCaptionsMenu() {
var _this12 = this
if (!is.element(this.elements.settings.panels.captions)) return
var e = 'captions',
t =
this.elements.settings.panels.captions.querySelector(
'[role="menu"]'
),
i = captions.getTracks.call(this),
s = Boolean(i.length)
if (
(controls.toggleMenuButton.call(this, e, s),
emptyElement(t),
controls.checkMenu.call(this),
!s)
)
return
var n = i.map(function (e, i) {
return {
value: i,
checked:
_this12.captions.toggled && _this12.currentTrack === i,
title: captions.getLabel.call(_this12, e),
badge:
e.language &&
controls.createBadge.call(
_this12,
e.language.toUpperCase()
),
list: t,
type: 'language'
}
})
n.unshift({
value: -1,
checked: !this.captions.toggled,
title: i18n.get('disabled', this.config),
list: t,
type: 'language'
}),
n.forEach(controls.createMenuItem.bind(this)),
controls.updateSetting.call(this, e, t)
},
setSpeedMenu: function setSpeedMenu() {
var _this13 = this
if (!is.element(this.elements.settings.panels.speed)) return
var e = 'speed',
t =
this.elements.settings.panels.speed.querySelector(
'[role="menu"]'
)
this.options.speed = this.options.speed.filter(function (e) {
return e >= _this13.minimumSpeed && e <= _this13.maximumSpeed
})
var i =
!is.empty(this.options.speed) && this.options.speed.length > 1
controls.toggleMenuButton.call(this, e, i),
emptyElement(t),
controls.checkMenu.call(this),
i &&
(this.options.speed.forEach(function (i) {
controls.createMenuItem.call(_this13, {
value: i,
list: t,
type: e,
title: controls.getLabel.call(_this13, 'speed', i)
})
}),
controls.updateSetting.call(this, e, t))
},
checkMenu: function checkMenu() {
var e = this.elements.settings.buttons,
t =
!is.empty(e) &&
Object.values(e).some(function (e) {
return !e.hidden
})
toggleHidden(this.elements.settings.menu, !t)
},
focusFirstMenuItem: function focusFirstMenuItem(e) {
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: !1
if (this.elements.settings.popup.hidden) return
var i = e
is.element(i) ||
(i = Object.values(this.elements.settings.panels).find(
function (e) {
return !e.hidden
}
))
var s = i.querySelector('[role^="menuitem"]')
setFocus.call(this, s, t)
},
toggleMenu: function toggleMenu(e) {
var t = this.elements.settings.popup,
i = this.elements.buttons.settings
if (!is.element(t) || !is.element(i)) return
var s = t.hidden
var n = s
if (is.boolean(e)) n = e
else if (is.keyboardEvent(e) && 'Escape' === e.key) n = !1
else if (is.event(e)) {
var _s3 = is.function(e.composedPath)
? e.composedPath()[0]
: e.target,
r = t.contains(_s3)
if (r || (!r && e.target !== i && n)) return
}
i.setAttribute('aria-expanded', n),
toggleHidden(t, !n),
toggleClass(
this.elements.container,
this.config.classNames.menu.open,
n
),
n && is.keyboardEvent(e)
? controls.focusFirstMenuItem.call(this, null, !0)
: n || s || setFocus.call(this, i, is.keyboardEvent(e))
},
getMenuSize: function getMenuSize(e) {
var t = e.cloneNode(!0)
;(t.style.position = 'absolute'),
(t.style.opacity = 0),
t.removeAttribute('hidden'),
e.parentNode.appendChild(t)
var i = t.scrollWidth,
s = t.scrollHeight
return removeElement(t), { width: i, height: s }
},
showMenuPanel: function showMenuPanel() {
var _this14 = this
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: ''
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: !1
var i = this.elements.container.querySelector(
'#plyr-settings-'.concat(this.id, '-').concat(e)
)
if (!is.element(i)) return
var s = i.parentNode,
n = Array.from(s.children).find(function (e) {
return !e.hidden
})
if (support.transitions && !support.reducedMotion) {
;(s.style.width = ''.concat(n.scrollWidth, 'px')),
(s.style.height = ''.concat(n.scrollHeight, 'px'))
var _e10 = controls.getMenuSize.call(this, i),
_t5 = function _t5(e) {
e.target === s &&
['width', 'height'].includes(e.propertyName) &&
((s.style.width = ''),
(s.style.height = ''),
off.call(_this14, s, transitionEndEvent, _t5))
}
on.call(this, s, transitionEndEvent, _t5),
(s.style.width = ''.concat(_e10.width, 'px')),
(s.style.height = ''.concat(_e10.height, 'px'))
}
toggleHidden(n, !0),
toggleHidden(i, !1),
controls.focusFirstMenuItem.call(this, i, t)
},
setDownloadUrl: function setDownloadUrl() {
var e = this.elements.buttons.download
is.element(e) && e.setAttribute('href', this.download)
},
create: function create(e) {
var _this15 = this
var t = controls.bindMenuItemShortcuts,
i = controls.createButton,
s = controls.createProgress,
n = controls.createRange,
r = controls.createTime,
a = controls.setQualityMenu,
o = controls.setSpeedMenu,
l = controls.showMenuPanel
;(this.elements.controls = null),
is.array(this.config.controls) &&
this.config.controls.includes('play-large') &&
this.elements.container.appendChild(
i.call(this, 'play-large')
)
var c = createElement(
'div',
getAttributesFromSelector(
this.config.selectors.controls.wrapper
)
)
this.elements.controls = c
var u = { class: 'plyr__controls__item' }
return (
dedupe(
is.array(this.config.controls) ? this.config.controls : []
).forEach(function (a) {
if (
('restart' === a &&
c.appendChild(i.call(_this15, 'restart', u)),
'rewind' === a &&
c.appendChild(i.call(_this15, 'rewind', u)),
'play' === a && c.appendChild(i.call(_this15, 'play', u)),
'fast-forward' === a &&
c.appendChild(i.call(_this15, 'fast-forward', u)),
'progress' === a)
) {
var _t6 = createElement('div', {
class: ''.concat(u.class, ' plyr__progress__container')
}),
_i3 = createElement(
'div',
getAttributesFromSelector(
_this15.config.selectors.progress
)
)
if (
(_i3.appendChild(
n.call(_this15, 'seek', {
id: 'plyr-seek-'.concat(e.id)
})
),
_i3.appendChild(s.call(_this15, 'buffer')),
_this15.config.tooltips.seek)
) {
var _e11 = createElement(
'span',
{ class: _this15.config.classNames.tooltip },
'00:00'
)
_i3.appendChild(_e11),
(_this15.elements.display.seekTooltip = _e11)
}
;(_this15.elements.progress = _i3),
_t6.appendChild(_this15.elements.progress),
c.appendChild(_t6)
}
if (
('current-time' === a &&
c.appendChild(r.call(_this15, 'currentTime', u)),
'duration' === a &&
c.appendChild(r.call(_this15, 'duration', u)),
'mute' === a || 'volume' === a)
) {
var _t7 = _this15.elements.volume
if (
((is.element(_t7) && c.contains(_t7)) ||
((_t7 = createElement(
'div',
extend({}, u, {
class: ''.concat(u.class, ' plyr__volume').trim()
})
)),
(_this15.elements.volume = _t7),
c.appendChild(_t7)),
'mute' === a && _t7.appendChild(i.call(_this15, 'mute')),
'volume' === a && !browser.isIos)
) {
var _i4 = {
max: 1,
step: 0.05,
value: _this15.config.volume
}
_t7.appendChild(
n.call(
_this15,
'volume',
extend(_i4, { id: 'plyr-volume-'.concat(e.id) })
)
)
}
}
if (
('captions' === a &&
c.appendChild(i.call(_this15, 'captions', u)),
'settings' === a && !is.empty(_this15.config.settings))
) {
var _s4 = createElement(
'div',
extend({}, u, {
class: ''.concat(u.class, ' plyr__menu').trim(),
hidden: ''
})
)
_s4.appendChild(
i.call(_this15, 'settings', {
'aria-haspopup': !0,
'aria-controls': 'plyr-settings-'.concat(e.id),
'aria-expanded': !1
})
)
var _n3 = createElement('div', {
class: 'plyr__menu__container',
id: 'plyr-settings-'.concat(e.id),
hidden: ''
}),
_r2 = createElement('div'),
_a = createElement('div', {
id: 'plyr-settings-'.concat(e.id, '-home')
}),
_o = createElement('div', { role: 'menu' })
_a.appendChild(_o),
_r2.appendChild(_a),
(_this15.elements.settings.panels.home = _a),
_this15.config.settings.forEach(function (i) {
var s = createElement(
'button',
extend(
getAttributesFromSelector(
_this15.config.selectors.buttons.settings
),
{
type: 'button',
class: ''
.concat(_this15.config.classNames.control, ' ')
.concat(
_this15.config.classNames.control,
'--forward'
),
role: 'menuitem',
'aria-haspopup': !0,
hidden: ''
}
)
)
t.call(_this15, s, i),
on.call(_this15, s, 'click', function () {
l.call(_this15, i, !1)
})
var n = createElement(
'span',
null,
i18n.get(i, _this15.config)
),
a = createElement('span', {
class: _this15.config.classNames.menu.value
})
;(a.innerHTML = e[i]),
n.appendChild(a),
s.appendChild(n),
_o.appendChild(s)
var c = createElement('div', {
id: 'plyr-settings-'.concat(e.id, '-').concat(i),
hidden: ''
}),
u = createElement('button', {
type: 'button',
class: ''
.concat(_this15.config.classNames.control, ' ')
.concat(
_this15.config.classNames.control,
'--back'
)
})
u.appendChild(
createElement(
'span',
{ 'aria-hidden': !0 },
i18n.get(i, _this15.config)
)
),
u.appendChild(
createElement(
'span',
{ class: _this15.config.classNames.hidden },
i18n.get('menuBack', _this15.config)
)
),
on.call(
_this15,
c,
'keydown',
function (e) {
'ArrowLeft' === e.key &&
(e.preventDefault(),
e.stopPropagation(),
l.call(_this15, 'home', !0))
},
!1
),
on.call(_this15, u, 'click', function () {
l.call(_this15, 'home', !1)
}),
c.appendChild(u),
c.appendChild(createElement('div', { role: 'menu' })),
_r2.appendChild(c),
(_this15.elements.settings.buttons[i] = s),
(_this15.elements.settings.panels[i] = c)
}),
_n3.appendChild(_r2),
_s4.appendChild(_n3),
c.appendChild(_s4),
(_this15.elements.settings.popup = _n3),
(_this15.elements.settings.menu = _s4)
}
if (
('pip' === a &&
support.pip &&
c.appendChild(i.call(_this15, 'pip', u)),
'airplay' === a &&
support.airplay &&
c.appendChild(i.call(_this15, 'airplay', u)),
'download' === a)
) {
var _e12 = extend({}, u, {
element: 'a',
href: _this15.download,
target: '_blank'
})
_this15.isHTML5 && (_e12.download = '')
var _t8 = _this15.config.urls.download
!is.url(_t8) &&
_this15.isEmbed &&
extend(_e12, {
icon: 'logo-'.concat(_this15.provider),
label: _this15.provider
}),
c.appendChild(i.call(_this15, 'download', _e12))
}
'fullscreen' === a &&
c.appendChild(i.call(_this15, 'fullscreen', u))
}),
this.isHTML5 &&
a.call(this, html5.getQualityOptions.call(this)),
o.call(this),
c
)
},
inject: function inject() {
var _this16 = this
if (this.config.loadSprite) {
var _e13 = controls.getIconUrl.call(this)
_e13.cors && _loadSprite(_e13.url, 'sprite-plyr')
}
this.id = Math.floor(1e4 * Math.random())
var e = null
this.elements.controls = null
var t = {
id: this.id,
seektime: this.config.seekTime,
title: this.config.title
}
var i = !0
is.function(this.config.controls) &&
(this.config.controls = this.config.controls.call(this, t)),
this.config.controls || (this.config.controls = []),
is.element(this.config.controls) ||
is.string(this.config.controls)
? (e = this.config.controls)
: ((e = controls.create.call(this, {
id: this.id,
seektime: this.config.seekTime,
speed: this.speed,
quality: this.quality,
captions: captions.getLabel.call(this)
})),
(i = !1))
var s
i &&
is.string(this.config.controls) &&
(e = (function (e) {
var i = e
return (
Object.entries(t).forEach(function (_ref11) {
var _ref12 = _slicedToArray(_ref11, 2),
e = _ref12[0],
t = _ref12[1]
i = replaceAll(i, '{'.concat(e, '}'), t)
}),
i
)
})(e)),
is.string(this.config.selectors.controls.container) &&
(s = document.querySelector(
this.config.selectors.controls.container
)),
is.element(s) || (s = this.elements.container)
if (
(s[
is.element(e) ? 'insertAdjacentElement' : 'insertAdjacentHTML'
]('afterbegin', e),
is.element(this.elements.controls) ||
controls.findElements.call(this),
!is.empty(this.elements.buttons))
) {
var _e14 = function _e14(e) {
var t = _this16.config.classNames.controlPressed
Object.defineProperty(e, 'pressed', {
enumerable: !0,
get: function get() {
return hasClass(e, t)
},
set: function set() {
var i =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: !1
toggleClass(e, t, i)
}
})
}
Object.values(this.elements.buttons)
.filter(Boolean)
.forEach(function (t) {
is.array(t) || is.nodeList(t)
? Array.from(t).filter(Boolean).forEach(_e14)
: _e14(t)
})
}
if (
(browser.isEdge && repaint(s), this.config.tooltips.controls)
) {
var _this$config = this.config,
_e15 = _this$config.classNames,
_t9 = _this$config.selectors,
_i5 = ''
.concat(_t9.controls.wrapper, ' ')
.concat(_t9.labels, ' .')
.concat(_e15.hidden),
_s5 = getElements.call(this, _i5)
Array.from(_s5).forEach(function (e) {
toggleClass(e, _this16.config.classNames.hidden, !1),
toggleClass(e, _this16.config.classNames.tooltip, !0)
})
}
},
setMediaMetadata: function setMediaMetadata() {
try {
'mediaSession' in navigator &&
(navigator.mediaSession.metadata = new window.MediaMetadata({
title: this.config.mediaMetadata.title,
artist: this.config.mediaMetadata.artist,
album: this.config.mediaMetadata.album,
artwork: this.config.mediaMetadata.artwork
}))
} catch (e) {}
},
setMarkers: function setMarkers() {
var _this17 = this
var e, t
if (!this.duration || this.elements.markers) return
var i =
null === (e = this.config.markers) ||
void 0 === e ||
null === (t = e.points) ||
void 0 === t
? void 0
: t.filter(function (_ref13) {
var e = _ref13.time
return e > 0 && e < _this17.duration
})
if (null == i || !i.length) return
var s = document.createDocumentFragment(),
n = document.createDocumentFragment()
var r = null
var a = ''.concat(this.config.classNames.tooltip, '--visible'),
o = function o(e) {
return toggleClass(r, a, e)
}
i.forEach(function (e) {
var t = createElement(
'span',
{ class: _this17.config.classNames.marker },
''
),
i = (e.time / _this17.duration) * 100 + '%'
r &&
(t.addEventListener('mouseenter', function () {
e.label ||
((r.style.left = i), (r.innerHTML = e.label), o(!0))
}),
t.addEventListener('mouseleave', function () {
o(!1)
})),
t.addEventListener('click', function () {
_this17.currentTime = e.time
}),
(t.style.left = i),
n.appendChild(t)
}),
s.appendChild(n),
this.config.tooltips.seek ||
((r = createElement(
'span',
{ class: this.config.classNames.tooltip },
''
)),
s.appendChild(r)),
(this.elements.markers = { points: n, tip: r }),
this.elements.progress.appendChild(s)
}
}
function parseUrl(e) {
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: !0
var i = e
if (t) {
var _e16 = document.createElement('a')
;(_e16.href = i), (i = _e16.href)
}
try {
return new URL(i)
} catch (e) {
return null
}
}
function buildUrlParams(e) {
var t = new URLSearchParams()
return (
is.object(e) &&
Object.entries(e).forEach(function (_ref14) {
var _ref15 = _slicedToArray(_ref14, 2),
e = _ref15[0],
i = _ref15[1]
t.set(e, i)
}),
t
)
}
var captions = {
setup: function setup() {
var _e18, _e19, _this$config$captions
if (!this.supported.ui) return
if (
!this.isVideo ||
this.isYouTube ||
(this.isHTML5 && !support.textTracks)
)
return void (
is.array(this.config.controls) &&
this.config.controls.includes('settings') &&
this.config.settings.includes('captions') &&
controls.setCaptionsMenu.call(this)
)
if (
(is.element(this.elements.captions) ||
((this.elements.captions = createElement(
'div',
getAttributesFromSelector(this.config.selectors.captions)
)),
insertAfter(this.elements.captions, this.elements.wrapper)),
browser.isIE && window.URL)
) {
var _e17 = this.media.querySelectorAll('track')
Array.from(_e17).forEach(function (e) {
var t = e.getAttribute('src'),
i = parseUrl(t)
null !== i &&
i.hostname !== window.location.href.hostname &&
['http:', 'https:'].includes(i.protocol) &&
fetch(t, 'blob')
.then(function (t) {
e.setAttribute('src', window.URL.createObjectURL(t))
})
.catch(function () {
removeElement(e)
})
})
}
var e = dedupe(
(
navigator.languages || [
navigator.language || navigator.userLanguage || 'en'
]
).map(function (e) {
return e.split('-')[0]
})
)
var t = (
this.storage.get('language') ||
this.config.captions.language ||
'auto'
).toLowerCase()
'auto' === t &&
((_e18 = e),
(_e19 = _slicedToArray(_e18, 1)),
(t = _e19[0]),
_e18)
var i = this.storage.get('captions')
if (
(is.boolean(i) ||
((_this$config$captions = this.config.captions),
(i = _this$config$captions.active),
_this$config$captions),
Object.assign(this.captions, {
toggled: !1,
active: i,
language: t,
languages: e
}),
this.isHTML5)
) {
var _e20 = this.config.captions.update
? 'addtrack removetrack'
: 'removetrack'
on.call(
this,
this.media.textTracks,
_e20,
captions.update.bind(this)
)
}
setTimeout(captions.update.bind(this), 0)
},
update: function update() {
var _this18 = this
var e = captions.getTracks.call(this, !0),
_this$captions = this.captions,
t = _this$captions.active,
i = _this$captions.language,
s = _this$captions.meta,
n = _this$captions.currentTrackNode,
r = Boolean(
e.find(function (e) {
return e.language === i
})
)
this.isHTML5 &&
this.isVideo &&
e
.filter(function (e) {
return !s.get(e)
})
.forEach(function (e) {
_this18.debug.log('Track added', e),
s.set(e, { default: 'showing' === e.mode }),
'showing' === e.mode && (e.mode = 'hidden'),
on.call(_this18, e, 'cuechange', function () {
return captions.updateCues.call(_this18)
})
}),
((r && this.language !== i) || !e.includes(n)) &&
(captions.setLanguage.call(this, i),
captions.toggle.call(this, t && r)),
this.elements &&
toggleClass(
this.elements.container,
this.config.classNames.captions.enabled,
!is.empty(e)
),
is.array(this.config.controls) &&
this.config.controls.includes('settings') &&
this.config.settings.includes('captions') &&
controls.setCaptionsMenu.call(this)
},
toggle: function toggle(e) {
var _this19 = this
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: !0
if (!this.supported.ui) return
var i = this.captions.toggled,
s = this.config.classNames.captions.active,
n = is.nullOrUndefined(e) ? !i : e
if (n !== i) {
if (
(t ||
((this.captions.active = n),
this.storage.set({ captions: n })),
!this.language && n && !t)
) {
var _e21 = captions.getTracks.call(this),
_t10 = captions.findTrack.call(
this,
[this.captions.language].concat(
_toConsumableArray(this.captions.languages)
),
!0
)
return (
(this.captions.language = _t10.language),
void captions.set.call(this, _e21.indexOf(_t10))
)
}
this.elements.buttons.captions &&
(this.elements.buttons.captions.pressed = n),
toggleClass(this.elements.container, s, n),
(this.captions.toggled = n),
controls.updateSetting.call(this, 'captions'),
triggerEvent.call(
this,
this.media,
n ? 'captionsenabled' : 'captionsdisabled'
)
}
setTimeout(function () {
n &&
_this19.captions.toggled &&
(_this19.captions.currentTrackNode.mode = 'hidden')
})
},
set: function set(e) {
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: !0
var i = captions.getTracks.call(this)
if (-1 !== e) {
if (is.number(e)) {
if (e in i) {
if (this.captions.currentTrack !== e) {
this.captions.currentTrack = e
var s = i[e],
_ref16 = s || {},
n = _ref16.language
;(this.captions.currentTrackNode = s),
controls.updateSetting.call(this, 'captions'),
t ||
((this.captions.language = n),
this.storage.set({ language: n })),
this.isVimeo && this.embed.enableTextTrack(n),
triggerEvent.call(this, this.media, 'languagechange')
}
captions.toggle.call(this, !0, t),
this.isHTML5 &&
this.isVideo &&
captions.updateCues.call(this)
} else this.debug.warn('Track not found', e)
} else this.debug.warn('Invalid caption argument', e)
} else captions.toggle.call(this, !1, t)
},
setLanguage: function setLanguage(e) {
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: !0
if (!is.string(e))
return void this.debug.warn('Invalid language argument', e)
var i = e.toLowerCase()
this.captions.language = i
var s = captions.getTracks.call(this),
n = captions.findTrack.call(this, [i])
captions.set.call(this, s.indexOf(n), t)
},
getTracks: function getTracks() {
var _this20 = this
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: !1
return Array.from((this.media || {}).textTracks || [])
.filter(function (t) {
return !_this20.isHTML5 || e || _this20.captions.meta.has(t)
})
.filter(function (e) {
return ['captions', 'subtitles'].includes(e.kind)
})
},
findTrack: function findTrack(e) {
var _this21 = this
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: !1
var i = captions.getTracks.call(this),
s = function s(e) {
return Number((_this21.captions.meta.get(e) || {}).default)
},
n = Array.from(i).sort(function (e, t) {
return s(t) - s(e)
})
var r
return (
e.every(function (e) {
return (
(r = n.find(function (t) {
return t.language === e
})),
!r
)
}),
r || (t ? n[0] : void 0)
)
},
getCurrentTrack: function getCurrentTrack() {
return captions.getTracks.call(this)[this.currentTrack]
},
getLabel: function getLabel(e) {
var t = e
return (
!is.track(t) &&
support.textTracks &&
this.captions.toggled &&
(t = captions.getCurrentTrack.call(this)),
is.track(t)
? is.empty(t.label)
? is.empty(t.language)
? i18n.get('enabled', this.config)
: e.language.toUpperCase()
: t.label
: i18n.get('disabled', this.config)
)
},
updateCues: function updateCues(e) {
if (!this.supported.ui) return
if (!is.element(this.elements.captions))
return void this.debug.warn(
'No captions element to render to'
)
if (!is.nullOrUndefined(e) && !Array.isArray(e))
return void this.debug.warn('updateCues: Invalid input', e)
var t = e
if (!t) {
var _e22 = captions.getCurrentTrack.call(this)
t = Array.from((_e22 || {}).activeCues || [])
.map(function (e) {
return e.getCueAsHTML()
})
.map(getHTML)
}
var i = t
.map(function (e) {
return e.trim()
})
.join('\n')
if (i !== this.elements.captions.innerHTML) {
emptyElement(this.elements.captions)
var _e23 = createElement(
'span',
getAttributesFromSelector(this.config.selectors.caption)
)
;(_e23.innerHTML = i),
this.elements.captions.appendChild(_e23),
triggerEvent.call(this, this.media, 'cuechange')
}
}
},
defaults = {
enabled: !0,
title: '',
debug: !1,
autoplay: !1,
autopause: !0,
playsinline: !0,
seekTime: 10,
volume: 1,
muted: !1,
duration: null,
displayDuration: !0,
invertTime: !0,
toggleInvert: !0,
ratio: null,
clickToPlay: !0,
hideControls: !0,
resetOnEnd: !1,
disableContextMenu: !0,
loadSprite: !0,
iconPrefix: 'plyr',
iconUrl: 'https://cdn.plyr.io/3.7.2/plyr.svg',
blankVideo: 'https://cdn.plyr.io/static/blank.mp4',
quality: {
default: 576,
options: [
4320, 2880, 2160, 1440, 1080, 720, 576, 480, 360, 240
],
forced: !1,
onChange: null
},
loop: { active: !1 },
speed: {
selected: 1,
options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 4]
},
keyboard: { focused: !0, global: !1 },
tooltips: { controls: !1, seek: !0 },
captions: { active: !1, language: 'auto', update: !1 },
fullscreen: { enabled: !0, fallback: !0, iosNative: !1 },
storage: { enabled: !0, key: 'plyr' },
controls: [
'play-large',
'play',
'progress',
'current-time',
'mute',
'volume',
'captions',
'settings',
'pip',
'airplay',
'fullscreen'
],
settings: ['captions', 'quality', 'speed'],
i18n: {
restart: 'Restart',
rewind: 'Rewind {seektime}s',
play: 'Play',
pause: 'Pause',
fastForward: 'Forward {seektime}s',
seek: 'Seek',
seekLabel: '{currentTime} of {duration}',
played: 'Played',
buffered: 'Buffered',
currentTime: 'Current time',
duration: 'Duration',
volume: 'Volume',
mute: 'Mute',
unmute: 'Unmute',
enableCaptions: 'Enable captions',
disableCaptions: 'Disable captions',
download: 'Download',
enterFullscreen: 'Enter fullscreen',
exitFullscreen: 'Exit fullscreen',
frameTitle: 'Player for {title}',
captions: 'Captions',
settings: 'Settings',
pip: 'PIP',
menuBack: 'Go back to previous menu',
speed: 'Speed',
normal: 'Normal',
quality: 'Quality',
loop: 'Loop',
start: 'Start',
end: 'End',
all: 'All',
reset: 'Reset',
disabled: 'Disabled',
enabled: 'Enabled',
advertisement: 'Ad',
qualityBadge: {
2160: '4K',
1440: 'HD',
1080: 'HD',
720: 'HD',
576: 'SD',
480: 'SD'
}
},
urls: {
download: null,
vimeo: {
sdk: 'https://player.vimeo.com/api/player.js',
iframe: 'https://player.vimeo.com/video/{0}?{1}',
api: 'https://vimeo.com/api/oembed.json?url={0}'
},
youtube: {
sdk: 'https://www.youtube.com/iframe_api',
api: 'https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}'
},
googleIMA: {
sdk: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js'
}
},
listeners: {
seek: null,
play: null,
pause: null,
restart: null,
rewind: null,
fastForward: null,
mute: null,
volume: null,
captions: null,
download: null,
fullscreen: null,
pip: null,
airplay: null,
speed: null,
quality: null,
loop: null,
language: null
},
events: [
'ended',
'progress',
'stalled',
'playing',
'waiting',
'canplay',
'canplaythrough',
'loadstart',
'loadeddata',
'loadedmetadata',
'timeupdate',
'volumechange',
'play',
'pause',
'error',
'seeking',
'seeked',
'emptied',
'ratechange',
'cuechange',
'download',
'enterfullscreen',
'exitfullscreen',
'captionsenabled',
'captionsdisabled',
'languagechange',
'controlshidden',
'controlsshown',
'ready',
'statechange',
'qualitychange',
'adsloaded',
'adscontentpause',
'adscontentresume',
'adstarted',
'adsmidpoint',
'adscomplete',
'adsallcomplete',
'adsimpression',
'adsclick'
],
selectors: {
editable: 'input, textarea, select, [contenteditable]',
container: '.plyr',
controls: { container: null, wrapper: '.plyr__controls' },
labels: '[data-plyr]',
buttons: {
play: '[data-plyr="play"]',
pause: '[data-plyr="pause"]',
restart: '[data-plyr="restart"]',
rewind: '[data-plyr="rewind"]',
fastForward: '[data-plyr="fast-forward"]',
mute: '[data-plyr="mute"]',
captions: '[data-plyr="captions"]',
download: '[data-plyr="download"]',
fullscreen: '[data-plyr="fullscreen"]',
pip: '[data-plyr="pip"]',
airplay: '[data-plyr="airplay"]',
settings: '[data-plyr="settings"]',
loop: '[data-plyr="loop"]'
},
inputs: {
seek: '[data-plyr="seek"]',
volume: '[data-plyr="volume"]',
speed: '[data-plyr="speed"]',
language: '[data-plyr="language"]',
quality: '[data-plyr="quality"]'
},
display: {
currentTime: '.plyr__time--current',
duration: '.plyr__time--duration',
buffer: '.plyr__progress__buffer',
loop: '.plyr__progress__loop',
volume: '.plyr__volume--display'
},
progress: '.plyr__progress',
captions: '.plyr__captions',
caption: '.plyr__caption'
},
classNames: {
type: 'plyr--{0}',
provider: 'plyr--{0}',
video: 'plyr__video-wrapper',
embed: 'plyr__video-embed',
videoFixedRatio: 'plyr__video-wrapper--fixed-ratio',
embedContainer: 'plyr__video-embed__container',
poster: 'plyr__poster',
posterEnabled: 'plyr__poster-enabled',
ads: 'plyr__ads',
control: 'plyr__control',
controlPressed: 'plyr__control--pressed',
playing: 'plyr--playing',
paused: 'plyr--paused',
stopped: 'plyr--stopped',
loading: 'plyr--loading',
hover: 'plyr--hover',
tooltip: 'plyr__tooltip',
cues: 'plyr__cues',
marker: 'plyr__progress__marker',
hidden: 'plyr__sr-only',
hideControls: 'plyr--hide-controls',
isIos: 'plyr--is-ios',
isTouch: 'plyr--is-touch',
uiSupported: 'plyr--full-ui',
noTransition: 'plyr--no-transition',
display: { time: 'plyr__time' },
menu: {
value: 'plyr__menu__value',
badge: 'plyr__badge',
open: 'plyr--menu-open'
},
captions: {
enabled: 'plyr--captions-enabled',
active: 'plyr--captions-active'
},
fullscreen: {
enabled: 'plyr--fullscreen-enabled',
fallback: 'plyr--fullscreen-fallback'
},
pip: {
supported: 'plyr--pip-supported',
active: 'plyr--pip-active'
},
airplay: {
supported: 'plyr--airplay-supported',
active: 'plyr--airplay-active'
},
tabFocus: 'plyr__tab-focus',
previewThumbnails: {
thumbContainer: 'plyr__preview-thumb',
thumbContainerShown: 'plyr__preview-thumb--is-shown',
imageContainer: 'plyr__preview-thumb__image-container',
timeContainer: 'plyr__preview-thumb__time-container',
scrubbingContainer: 'plyr__preview-scrubbing',
scrubbingContainerShown: 'plyr__preview-scrubbing--is-shown'
}
},
attributes: {
embed: {
provider: 'data-plyr-provider',
id: 'data-plyr-embed-id',
hash: 'data-plyr-embed-hash'
}
},
ads: { enabled: !1, publisherId: '', tagUrl: '' },
previewThumbnails: { enabled: !1, src: '' },
vimeo: {
byline: !1,
portrait: !1,
title: !1,
speed: !0,
transparent: !1,
customControls: !0,
referrerPolicy: null,
premium: !1
},
youtube: {
rel: 0,
showinfo: 0,
iv_load_policy: 3,
modestbranding: 1,
customControls: !0,
noCookie: !1
},
mediaMetadata: { title: '', artist: '', album: '', artwork: [] },
markers: { enabled: !1, points: [] }
},
pip = { active: 'picture-in-picture', inactive: 'inline' },
providers = { html5: 'html5', youtube: 'youtube', vimeo: 'vimeo' },
types = { audio: 'audio', video: 'video' }
function getProviderByUrl(e) {
return /^(https?:\/\/)?(www\.)?(youtube\.com|youtube-nocookie\.com|youtu\.?be)\/.+$/.test(
e
)
? providers.youtube
: /^https?:\/\/player.vimeo.com\/video\/\d{0,9}(?=\b|\/)/.test(e)
? providers.vimeo
: null
}
var noop = function noop() {}
var Console = /*#__PURE__*/ (function () {
function Console() {
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: !1
_classCallCheck2(this, Console)
;(this.enabled = window.console && e),
this.enabled && this.log('Debugging enabled')
}
_createClass2(Console, [
{
key: 'log',
get: function get() {
return this.enabled
? Function.prototype.bind.call(console.log, console)
: noop
}
},
{
key: 'warn',
get: function get() {
return this.enabled
? Function.prototype.bind.call(console.warn, console)
: noop
}
},
{
key: 'error',
get: function get() {
return this.enabled
? Function.prototype.bind.call(console.error, console)
: noop
}
}
])
return Console
})()
var Fullscreen = /*#__PURE__*/ (function () {
function Fullscreen(e) {
var _this22 = this
_classCallCheck2(this, Fullscreen)
_defineProperty$1(this, 'onChange', function () {
if (!_this22.enabled) return
var e = _this22.player.elements.buttons.fullscreen
is.element(e) && (e.pressed = _this22.active)
var t =
_this22.target === _this22.player.media
? _this22.target
: _this22.player.elements.container
triggerEvent.call(
_this22.player,
t,
_this22.active ? 'enterfullscreen' : 'exitfullscreen',
!0
)
}),
_defineProperty$1(this, 'toggleFallback', function () {
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: !1
if (
(e
? (_this22.scrollPosition = {
x: window.scrollX || 0,
y: window.scrollY || 0
})
: window.scrollTo(
_this22.scrollPosition.x,
_this22.scrollPosition.y
),
(document.body.style.overflow = e ? 'hidden' : ''),
toggleClass(
_this22.target,
_this22.player.config.classNames.fullscreen.fallback,
e
),
browser.isIos)
) {
var t = document.head.querySelector('meta[name="viewport"]')
var i = 'viewport-fit=cover'
t ||
((t = document.createElement('meta')),
t.setAttribute('name', 'viewport'))
var s = is.string(t.content) && t.content.includes(i)
e
? ((_this22.cleanupViewport = !s),
s || (t.content += ','.concat(i)))
: _this22.cleanupViewport &&
(t.content = t.content
.split(',')
.filter(function (e) {
return e.trim() !== i
})
.join(','))
}
_this22.onChange()
}),
_defineProperty$1(this, 'trapFocus', function (e) {
if (browser.isIos || !_this22.active || 'Tab' !== e.key)
return
var t = document.activeElement,
i = getElements.call(
_this22.player,
'a[href], button:not(:disabled), input:not(:disabled), [tabindex]'
),
_i6 = _slicedToArray(i, 1),
s = _i6[0],
n = i[i.length - 1]
t !== n || e.shiftKey
? t === s && e.shiftKey && (n.focus(), e.preventDefault())
: (s.focus(), e.preventDefault())
}),
_defineProperty$1(this, 'update', function () {
if (_this22.enabled) {
var _e24
;(_e24 = _this22.forceFallback
? 'Fallback (forced)'
: Fullscreen.native
? 'Native'
: 'Fallback'),
_this22.player.debug.log(
''.concat(_e24, ' fullscreen enabled')
)
} else _this22.player.debug.log('Fullscreen not supported and fallback disabled')
toggleClass(
_this22.player.elements.container,
_this22.player.config.classNames.fullscreen.enabled,
_this22.enabled
)
}),
_defineProperty$1(this, 'enter', function () {
_this22.enabled &&
(browser.isIos && _this22.player.config.fullscreen.iosNative
? _this22.player.isVimeo
? _this22.player.embed.requestFullscreen()
: _this22.target.webkitEnterFullscreen()
: !Fullscreen.native || _this22.forceFallback
? _this22.toggleFallback(!0)
: _this22.prefix
? is.empty(_this22.prefix) ||
_this22.target[
''
.concat(_this22.prefix, 'Request')
.concat(_this22.property)
]()
: _this22.target.requestFullscreen({
navigationUI: 'hide'
}))
}),
_defineProperty$1(this, 'exit', function () {
if (_this22.enabled)
if (
browser.isIos &&
_this22.player.config.fullscreen.iosNative
)
_this22.target.webkitExitFullscreen(),
silencePromise(_this22.player.play())
else if (!Fullscreen.native || _this22.forceFallback)
_this22.toggleFallback(!1)
else if (_this22.prefix) {
if (!is.empty(_this22.prefix)) {
var _e25 = 'moz' === _this22.prefix ? 'Cancel' : 'Exit'
document[
''
.concat(_this22.prefix)
.concat(_e25)
.concat(_this22.property)
]()
}
} else
(
document.cancelFullScreen || document.exitFullscreen
).call(document)
}),
_defineProperty$1(this, 'toggle', function () {
_this22.active ? _this22.exit() : _this22.enter()
}),
(this.player = e),
(this.prefix = Fullscreen.prefix),
(this.property = Fullscreen.property),
(this.scrollPosition = { x: 0, y: 0 }),
(this.forceFallback = 'force' === e.config.fullscreen.fallback),
(this.player.elements.fullscreen =
e.config.fullscreen.container &&
closest$1(
this.player.elements.container,
e.config.fullscreen.container
)),
on.call(
this.player,
document,
'ms' === this.prefix
? 'MSFullscreenChange'
: ''.concat(this.prefix, 'fullscreenchange'),
function () {
_this22.onChange()
}
),
on.call(
this.player,
this.player.elements.container,
'dblclick',
function (e) {
;(is.element(_this22.player.elements.controls) &&
_this22.player.elements.controls.contains(e.target)) ||
_this22.player.listeners.proxy(
e,
_this22.toggle,
'fullscreen'
)
}
),
on.call(
this,
this.player.elements.container,
'keydown',
function (e) {
return _this22.trapFocus(e)
}
),
this.update()
}
_createClass2(
Fullscreen,
[
{
key: 'usingNative',
get: function get() {
return Fullscreen.native && !this.forceFallback
}
},
{
key: 'enabled',
get: function get() {
return (
(Fullscreen.native ||
this.player.config.fullscreen.fallback) &&
this.player.config.fullscreen.enabled &&
this.player.supported.ui &&
this.player.isVideo
)
}
},
{
key: 'active',
get: function get() {
if (!this.enabled) return !1
if (!Fullscreen.native || this.forceFallback)
return hasClass(
this.target,
this.player.config.classNames.fullscreen.fallback
)
var e = this.prefix
? this.target.getRootNode()[
''
.concat(this.prefix)
.concat(this.property, 'Element')
]
: this.target.getRootNode().fullscreenElement
return e && e.shadowRoot
? e === this.target.getRootNode().host
: e === this.target
}
},
{
key: 'target',
get: function get() {
return browser.isIos &&
this.player.config.fullscreen.iosNative
? this.player.media
: this.player.elements.fullscreen ||
this.player.elements.container
}
}
],
[
{
key: 'native',
get: function get() {
return !!(
document.fullscreenEnabled ||
document.webkitFullscreenEnabled ||
document.mozFullScreenEnabled ||
document.msFullscreenEnabled
)
}
},
{
key: 'prefix',
get: function get() {
if (is.function(document.exitFullscreen)) return ''
var e = ''
return (
['webkit', 'moz', 'ms'].some(function (t) {
return (
!(
!is.function(
document[''.concat(t, 'ExitFullscreen')]
) &&
!is.function(
document[''.concat(t, 'CancelFullScreen')]
)
) && ((e = t), !0)
)
}),
e
)
}
},
{
key: 'property',
get: function get() {
return 'moz' === this.prefix ? 'FullScreen' : 'Fullscreen'
}
}
]
)
return Fullscreen
})()
function loadImage(e) {
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: 1
return new Promise(function (i, s) {
var n = new Image(),
r = function r() {
delete n.onload,
delete n.onerror,
(n.naturalWidth >= t ? i : s)(n)
}
Object.assign(n, { onload: r, onerror: r, src: e })
})
}
var ui = {
addStyleHook: function addStyleHook() {
toggleClass(
this.elements.container,
this.config.selectors.container.replace('.', ''),
!0
),
toggleClass(
this.elements.container,
this.config.classNames.uiSupported,
this.supported.ui
)
},
toggleNativeControls: function toggleNativeControls() {
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: !1
e && this.isHTML5
? this.media.setAttribute('controls', '')
: this.media.removeAttribute('controls')
},
build: function build() {
var _this23 = this
if ((this.listeners.media(), !this.supported.ui))
return (
this.debug.warn(
'Basic support only for '
.concat(this.provider, ' ')
.concat(this.type)
),
void ui.toggleNativeControls.call(this, !0)
)
is.element(this.elements.controls) ||
(controls.inject.call(this), this.listeners.controls()),
ui.toggleNativeControls.call(this),
this.isHTML5 && captions.setup.call(this),
(this.volume = null),
(this.muted = null),
(this.loop = null),
(this.quality = null),
(this.speed = null),
controls.updateVolume.call(this),
controls.timeUpdate.call(this),
controls.durationUpdate.call(this),
ui.checkPlaying.call(this),
toggleClass(
this.elements.container,
this.config.classNames.pip.supported,
support.pip && this.isHTML5 && this.isVideo
),
toggleClass(
this.elements.container,
this.config.classNames.airplay.supported,
support.airplay && this.isHTML5
),
toggleClass(
this.elements.container,
this.config.classNames.isIos,
browser.isIos
),
toggleClass(
this.elements.container,
this.config.classNames.isTouch,
this.touch
),
(this.ready = !0),
setTimeout(function () {
triggerEvent.call(_this23, _this23.media, 'ready')
}, 0),
ui.setTitle.call(this),
this.poster &&
ui.setPoster
.call(this, this.poster, !1)
.catch(function () {}),
this.config.duration && controls.durationUpdate.call(this),
this.config.mediaMetadata &&
controls.setMediaMetadata.call(this)
},
setTitle: function setTitle() {
var e = i18n.get('play', this.config)
if (
(is.string(this.config.title) &&
!is.empty(this.config.title) &&
(e += ', '.concat(this.config.title)),
Array.from(this.elements.buttons.play || []).forEach(function (
t
) {
t.setAttribute('aria-label', e)
}),
this.isEmbed)
) {
var _e26 = getElement.call(this, 'iframe')
if (!is.element(_e26)) return
var t = is.empty(this.config.title)
? 'video'
: this.config.title,
i = i18n.get('frameTitle', this.config)
_e26.setAttribute('title', i.replace('{title}', t))
}
},
togglePoster: function togglePoster(e) {
toggleClass(
this.elements.container,
this.config.classNames.posterEnabled,
e
)
},
setPoster: function setPoster(e) {
var _this24 = this
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: !0
return t && this.poster
? Promise.reject(new Error('Poster already set'))
: (this.media.setAttribute('data-poster', e),
this.elements.poster.removeAttribute('hidden'),
ready
.call(this)
.then(function () {
return loadImage(e)
})
.catch(function (t) {
throw (
(e === _this24.poster &&
ui.togglePoster.call(_this24, !1),
t)
)
})
.then(function () {
if (e !== _this24.poster)
throw new Error(
'setPoster cancelled by later call to setPoster'
)
})
.then(function () {
return (
Object.assign(_this24.elements.poster.style, {
backgroundImage: "url('".concat(e, "')"),
backgroundSize: ''
}),
ui.togglePoster.call(_this24, !0),
e
)
}))
},
checkPlaying: function checkPlaying(e) {
var _this25 = this
toggleClass(
this.elements.container,
this.config.classNames.playing,
this.playing
),
toggleClass(
this.elements.container,
this.config.classNames.paused,
this.paused
),
toggleClass(
this.elements.container,
this.config.classNames.stopped,
this.stopped
),
Array.from(this.elements.buttons.play || []).forEach(function (
e
) {
Object.assign(e, { pressed: _this25.playing }),
e.setAttribute(
'aria-label',
i18n.get(
_this25.playing ? 'pause' : 'play',
_this25.config
)
)
}),
(is.event(e) && 'timeupdate' === e.type) ||
ui.toggleControls.call(this)
},
checkLoading: function checkLoading(e) {
var _this26 = this
;(this.loading = ['stalled', 'waiting'].includes(e.type)),
clearTimeout(this.timers.loading),
(this.timers.loading = setTimeout(
function () {
toggleClass(
_this26.elements.container,
_this26.config.classNames.loading,
_this26.loading
),
ui.toggleControls.call(_this26)
},
this.loading ? 250 : 0
))
},
toggleControls: function toggleControls(e) {
var t = this.elements.controls
if (t && this.config.hideControls) {
var i = this.touch && this.lastSeekTime + 2e3 > Date.now()
this.toggleControls(
Boolean(
e ||
this.loading ||
this.paused ||
t.pressed ||
t.hover ||
i
)
)
}
},
migrateStyles: function migrateStyles() {
var _this27 = this
Object.values(_objectSpread({}, this.media.style))
.filter(function (e) {
return !is.empty(e) && is.string(e) && e.startsWith('--plyr')
})
.forEach(function (e) {
_this27.elements.container.style.setProperty(
e,
_this27.media.style.getPropertyValue(e)
),
_this27.media.style.removeProperty(e)
}),
is.empty(this.media.style) &&
this.media.removeAttribute('style')
}
}
var Listeners = /*#__PURE__*/ (function () {
function Listeners(e) {
var _this28 = this
_classCallCheck2(this, Listeners)
_defineProperty$1(this, 'firstTouch', function () {
var e = _this28.player,
t = e.elements
;(e.touch = !0),
toggleClass(t.container, e.config.classNames.isTouch, !0)
}),
_defineProperty$1(this, 'setTabFocus', function (e) {
var t = _this28.player,
i = t.elements,
s = e.key,
n = e.type,
r = e.timeStamp
if (
(clearTimeout(_this28.focusTimer),
'keydown' === n && 'Tab' !== s)
)
return
'keydown' === n && (_this28.lastKeyDown = r)
var a = r - _this28.lastKeyDown <= 20
;('focus' !== n || a) &&
((function () {
var e = t.config.classNames.tabFocus
toggleClass(getElements.call(t, '.'.concat(e)), e, !1)
})(),
'focusout' !== n &&
(_this28.focusTimer = setTimeout(function () {
var e = document.activeElement
i.container.contains(e) &&
toggleClass(
document.activeElement,
t.config.classNames.tabFocus,
!0
)
}, 10)))
}),
_defineProperty$1(this, 'global', function () {
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: !0
var t = _this28.player
t.config.keyboard.global &&
toggleListener.call(
t,
window,
'keydown keyup',
_this28.handleKey,
e,
!1
),
toggleListener.call(
t,
document.body,
'click',
_this28.toggleMenu,
e
),
once.call(
t,
document.body,
'touchstart',
_this28.firstTouch
),
toggleListener.call(
t,
document.body,
'keydown focus blur focusout',
_this28.setTabFocus,
e,
!1,
!0
)
}),
_defineProperty$1(this, 'container', function () {
var e = _this28.player,
t = e.config,
i = e.elements,
s = e.timers
!t.keyboard.global &&
t.keyboard.focused &&
on.call(
e,
i.container,
'keydown keyup',
_this28.handleKey,
!1
),
on.call(
e,
i.container,
'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen',
function (t) {
var n = i.controls
n &&
'enterfullscreen' === t.type &&
((n.pressed = !1), (n.hover = !1))
var r = 0
;['touchstart', 'touchmove', 'mousemove'].includes(
t.type
) &&
(ui.toggleControls.call(e, !0),
(r = e.touch ? 3e3 : 2e3)),
clearTimeout(s.controls),
(s.controls = setTimeout(function () {
return ui.toggleControls.call(e, !1)
}, r))
}
)
var n = function n() {
if (!e.isVimeo || e.config.vimeo.premium) return
var t = i.wrapper,
s = e.fullscreen.active,
_getAspectRatio$call = getAspectRatio.call(e),
_getAspectRatio$call2 = _slicedToArray(
_getAspectRatio$call,
2
),
n = _getAspectRatio$call2[0],
r = _getAspectRatio$call2[1],
a = supportsCSS(
'aspect-ratio: '.concat(n, ' / ').concat(r)
)
if (!s)
return void (a
? ((t.style.width = null), (t.style.height = null))
: ((t.style.maxWidth = null),
(t.style.margin = null)))
var _getViewportSize = getViewportSize(),
_getViewportSize2 = _slicedToArray(_getViewportSize, 2),
o = _getViewportSize2[0],
l = _getViewportSize2[1],
c = o / l > n / r
a
? ((t.style.width = c ? 'auto' : '100%'),
(t.style.height = c ? '100%' : 'auto'))
: ((t.style.maxWidth = c ? (l / r) * n + 'px' : null),
(t.style.margin = c ? '0 auto' : null))
},
r = function r() {
clearTimeout(s.resized), (s.resized = setTimeout(n, 50))
}
on.call(
e,
i.container,
'enterfullscreen exitfullscreen',
function (t) {
var s = e.fullscreen.target
if (s !== i.container) return
if (!e.isEmbed && is.empty(e.config.ratio)) return
n()
;('enterfullscreen' === t.type ? on : off).call(
e,
window,
'resize',
r
)
}
)
}),
_defineProperty$1(this, 'media', function () {
var e = _this28.player,
t = e.elements
if (
(on.call(
e,
e.media,
'timeupdate seeking seeked',
function (t) {
return controls.timeUpdate.call(e, t)
}
),
on.call(
e,
e.media,
'durationchange loadeddata loadedmetadata',
function (t) {
return controls.durationUpdate.call(e, t)
}
),
on.call(e, e.media, 'ended', function () {
e.isHTML5 &&
e.isVideo &&
e.config.resetOnEnd &&
(e.restart(), e.pause())
}),
on.call(
e,
e.media,
'progress playing seeking seeked',
function (t) {
return controls.updateProgress.call(e, t)
}
),
on.call(e, e.media, 'volumechange', function (t) {
return controls.updateVolume.call(e, t)
}),
on.call(
e,
e.media,
'playing play pause ended emptied timeupdate',
function (t) {
return ui.checkPlaying.call(e, t)
}
),
on.call(
e,
e.media,
'waiting canplay seeked playing',
function (t) {
return ui.checkLoading.call(e, t)
}
),
e.supported.ui && e.config.clickToPlay && !e.isAudio)
) {
var _i7 = getElement.call(
e,
'.'.concat(e.config.classNames.video)
)
if (!is.element(_i7)) return
on.call(e, t.container, 'click', function (s) {
;([t.container, _i7].includes(s.target) ||
_i7.contains(s.target)) &&
((e.touch && e.config.hideControls) ||
(e.ended
? (_this28.proxy(s, e.restart, 'restart'),
_this28.proxy(
s,
function () {
silencePromise(e.play())
},
'play'
))
: _this28.proxy(
s,
function () {
silencePromise(e.togglePlay())
},
'play'
)))
})
}
e.supported.ui &&
e.config.disableContextMenu &&
on.call(
e,
t.wrapper,
'contextmenu',
function (e) {
e.preventDefault()
},
!1
),
on.call(e, e.media, 'volumechange', function () {
e.storage.set({ volume: e.volume, muted: e.muted })
}),
on.call(e, e.media, 'ratechange', function () {
controls.updateSetting.call(e, 'speed'),
e.storage.set({ speed: e.speed })
}),
on.call(e, e.media, 'qualitychange', function (t) {
controls.updateSetting.call(
e,
'quality',
null,
t.detail.quality
)
}),
on.call(e, e.media, 'ready qualitychange', function () {
controls.setDownloadUrl.call(e)
})
var i = e.config.events.concat(['keyup', 'keydown']).join(' ')
on.call(e, e.media, i, function (i) {
var _i$detail = i.detail,
s = _i$detail === void 0 ? {} : _i$detail
'error' === i.type && (s = e.media.error),
triggerEvent.call(e, t.container, i.type, !0, s)
})
}),
_defineProperty$1(this, 'proxy', function (e, t, i) {
var s = _this28.player,
n = s.config.listeners[i]
var r = !0
is.function(n) && (r = n.call(s, e)),
!1 !== r && is.function(t) && t.call(s, e)
}),
_defineProperty$1(this, 'bind', function (e, t, i, s) {
var n =
arguments.length > 4 && arguments[4] !== undefined
? arguments[4]
: !0
var r = _this28.player,
a = r.config.listeners[s],
o = is.function(a)
on.call(
r,
e,
t,
function (e) {
return _this28.proxy(e, i, s)
},
n && !o
)
}),
_defineProperty$1(this, 'controls', function () {
var e = _this28.player,
t = e.elements,
i = browser.isIE ? 'change' : 'input'
if (
(t.buttons.play &&
Array.from(t.buttons.play).forEach(function (t) {
_this28.bind(
t,
'click',
function () {
silencePromise(e.togglePlay())
},
'play'
)
}),
_this28.bind(
t.buttons.restart,
'click',
e.restart,
'restart'
),
_this28.bind(
t.buttons.rewind,
'click',
function () {
;(e.lastSeekTime = Date.now()), e.rewind()
},
'rewind'
),
_this28.bind(
t.buttons.fastForward,
'click',
function () {
;(e.lastSeekTime = Date.now()), e.forward()
},
'fastForward'
),
_this28.bind(
t.buttons.mute,
'click',
function () {
e.muted = !e.muted
},
'mute'
),
_this28.bind(t.buttons.captions, 'click', function () {
return e.toggleCaptions()
}),
_this28.bind(
t.buttons.download,
'click',
function () {
triggerEvent.call(e, e.media, 'download')
},
'download'
),
_this28.bind(
t.buttons.fullscreen,
'click',
function () {
e.fullscreen.toggle()
},
'fullscreen'
),
_this28.bind(
t.buttons.pip,
'click',
function () {
e.pip = 'toggle'
},
'pip'
),
_this28.bind(
t.buttons.airplay,
'click',
e.airplay,
'airplay'
),
_this28.bind(
t.buttons.settings,
'click',
function (t) {
t.stopPropagation(),
t.preventDefault(),
controls.toggleMenu.call(e, t)
},
null,
!1
),
_this28.bind(
t.buttons.settings,
'keyup',
function (t) {
;['Space', 'Enter'].includes(t.key) &&
('Enter' !== t.key
? (t.preventDefault(),
t.stopPropagation(),
controls.toggleMenu.call(e, t))
: controls.focusFirstMenuItem.call(e, null, !0))
},
null,
!1
),
_this28.bind(t.settings.menu, 'keydown', function (t) {
'Escape' === t.key && controls.toggleMenu.call(e, t)
}),
_this28.bind(
t.inputs.seek,
'mousedown mousemove',
function (e) {
var i = t.progress.getBoundingClientRect(),
s = (100 / i.width) * (e.pageX - i.left)
e.currentTarget.setAttribute('seek-value', s)
}
),
_this28.bind(
t.inputs.seek,
'mousedown mouseup keydown keyup touchstart touchend',
function (t) {
var i = t.currentTarget,
s = 'play-on-seeked'
if (
is.keyboardEvent(t) &&
!['ArrowLeft', 'ArrowRight'].includes(t.key)
)
return
e.lastSeekTime = Date.now()
var n = i.hasAttribute(s),
r = ['mouseup', 'touchend', 'keyup'].includes(t.type)
n && r
? (i.removeAttribute(s), silencePromise(e.play()))
: !r &&
e.playing &&
(i.setAttribute(s, ''), e.pause())
}
),
browser.isIos)
) {
var _t11 = getElements.call(e, 'input[type="range"]')
Array.from(_t11).forEach(function (e) {
return _this28.bind(e, i, function (e) {
return repaint(e.target)
})
})
}
_this28.bind(
t.inputs.seek,
i,
function (t) {
var i = t.currentTarget
var s = i.getAttribute('seek-value')
is.empty(s) && (s = i.value),
i.removeAttribute('seek-value'),
(e.currentTime = (s / i.max) * e.duration)
},
'seek'
),
_this28.bind(
t.progress,
'mouseenter mouseleave mousemove',
function (t) {
return controls.updateSeekTooltip.call(e, t)
}
),
_this28.bind(
t.progress,
'mousemove touchmove',
function (t) {
var i = e.previewThumbnails
i && i.loaded && i.startMove(t)
}
),
_this28.bind(
t.progress,
'mouseleave touchend click',
function () {
var t = e.previewThumbnails
t && t.loaded && t.endMove(!1, !0)
}
),
_this28.bind(
t.progress,
'mousedown touchstart',
function (t) {
var i = e.previewThumbnails
i && i.loaded && i.startScrubbing(t)
}
),
_this28.bind(t.progress, 'mouseup touchend', function (t) {
var i = e.previewThumbnails
i && i.loaded && i.endScrubbing(t)
}),
browser.isWebkit &&
Array.from(
getElements.call(e, 'input[type="range"]')
).forEach(function (t) {
_this28.bind(t, 'input', function (t) {
return controls.updateRangeFill.call(e, t.target)
})
}),
e.config.toggleInvert &&
!is.element(t.display.duration) &&
_this28.bind(t.display.currentTime, 'click', function () {
0 !== e.currentTime &&
((e.config.invertTime = !e.config.invertTime),
controls.timeUpdate.call(e))
}),
_this28.bind(
t.inputs.volume,
i,
function (t) {
e.volume = t.target.value
},
'volume'
),
_this28.bind(
t.controls,
'mouseenter mouseleave',
function (i) {
t.controls.hover = !e.touch && 'mouseenter' === i.type
}
),
t.fullscreen &&
Array.from(t.fullscreen.children)
.filter(function (e) {
return !e.contains(t.container)
})
.forEach(function (i) {
_this28.bind(
i,
'mouseenter mouseleave',
function (i) {
t.controls &&
(t.controls.hover =
!e.touch && 'mouseenter' === i.type)
}
)
}),
_this28.bind(
t.controls,
'mousedown mouseup touchstart touchend touchcancel',
function (e) {
t.controls.pressed = [
'mousedown',
'touchstart'
].includes(e.type)
}
),
_this28.bind(t.controls, 'focusin', function () {
var i = e.config,
s = e.timers
toggleClass(t.controls, i.classNames.noTransition, !0),
ui.toggleControls.call(e, !0),
setTimeout(function () {
toggleClass(t.controls, i.classNames.noTransition, !1)
}, 0)
var n = _this28.touch ? 3e3 : 4e3
clearTimeout(s.controls),
(s.controls = setTimeout(function () {
return ui.toggleControls.call(e, !1)
}, n))
}),
_this28.bind(
t.inputs.volume,
'wheel',
function (t) {
var i = t.webkitDirectionInvertedFromDevice,
_map = [t.deltaX, -t.deltaY].map(function (e) {
return i ? -e : e
}),
_map2 = _slicedToArray(_map, 2),
s = _map2[0],
n = _map2[1],
r = Math.sign(Math.abs(s) > Math.abs(n) ? s : n)
e.increaseVolume(r / 50)
var a = e.media.volume
;((1 === r && a < 1) || (-1 === r && a > 0)) &&
t.preventDefault()
},
'volume',
!1
)
}),
(this.player = e),
(this.lastKey = null),
(this.focusTimer = null),
(this.lastKeyDown = null),
(this.handleKey = this.handleKey.bind(this)),
(this.toggleMenu = this.toggleMenu.bind(this)),
(this.setTabFocus = this.setTabFocus.bind(this)),
(this.firstTouch = this.firstTouch.bind(this))
}
_createClass2(Listeners, [
{
key: 'handleKey',
value: function handleKey(e) {
var t = this.player,
i = t.elements,
s = e.key,
n = e.type,
r = e.altKey,
a = e.ctrlKey,
o = e.metaKey,
l = e.shiftKey,
c = 'keydown' === n,
u = c && s === this.lastKey
if (r || a || o || l) return
if (!s) return
if (c) {
var _n4 = document.activeElement
if (is.element(_n4)) {
var _s6 = t.config.selectors.editable,
_r3 = i.inputs.seek
if (_n4 !== _r3 && matches(_n4, _s6)) return
if (
'Space' === e.key &&
matches(_n4, 'button, [role^="menuitem"]')
)
return
}
switch (
([
'Space',
'ArrowLeft',
'ArrowUp',
'ArrowRight',
'ArrowDown',
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'c',
'f',
'k',
'l',
'm'
].includes(s) &&
(e.preventDefault(), e.stopPropagation()),
s)
) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
u ||
((d = parseInt(s, 10)),
(t.currentTime = (t.duration / 10) * d))
break
case 'Space':
case 'k':
u || silencePromise(t.togglePlay())
break
case 'ArrowUp':
t.increaseVolume(0.1)
break
case 'ArrowDown':
t.decreaseVolume(0.1)
break
case 'm':
u || (t.muted = !t.muted)
break
case 'ArrowRight':
t.forward()
break
case 'ArrowLeft':
t.rewind()
break
case 'f':
t.fullscreen.toggle()
break
case 'c':
u || t.toggleCaptions()
break
case 'l':
t.loop = !t.loop
}
'Escape' === s &&
!t.fullscreen.usingNative &&
t.fullscreen.active &&
t.fullscreen.toggle(),
(this.lastKey = s)
} else this.lastKey = null
var d
}
},
{
key: 'toggleMenu',
value: function toggleMenu(e) {
controls.toggleMenu.call(this.player, e)
}
}
])
return Listeners
})()
function createCommonjsModule(e, t) {
return e((t = { exports: {} }), t.exports), t.exports
}
var loadjs_umd = createCommonjsModule(function (e, t) {
e.exports = (function () {
var e = function e() {},
t = {},
i = {},
s = {}
function n(e, t) {
e = e.push ? e : [e]
var n,
r,
a,
o = [],
l = e.length,
c = l
for (
n = function n(e, i) {
i.length && o.push(e), --c || t(o)
};
l--;
) {
;(r = e[l]),
(a = i[r]) ? n(r, a) : (s[r] = s[r] || []).push(n)
}
}
function r(e, t) {
if (e) {
var n = s[e]
if (((i[e] = t), n))
for (; n.length; ) {
n[0](e, t), n.splice(0, 1)
}
}
}
function a(t, i) {
t.call && (t = { success: t }),
i.length ? (t.error || e)(i) : (t.success || e)(t)
}
function o(t, i, s, n) {
var r,
a,
l = document,
c = s.async,
u = (s.numRetries || 0) + 1,
d = s.before || e,
h = t.replace(/[\?|#].*$/, ''),
m = t.replace(/^(css|img)!/, '')
;(n = n || 0),
/(^css!|\.css$)/.test(h)
? (((a = l.createElement('link')).rel = 'stylesheet'),
(a.href = m),
(r = 'hideFocus' in a) &&
a.relList &&
((r = 0), (a.rel = 'preload'), (a.as = 'style')))
: /(^img!|\.(png|gif|jpg|svg|webp)$)/.test(h)
? ((a = l.createElement('img')).src = m)
: (((a = l.createElement('script')).src = t),
(a.async = void 0 === c || c)),
(a.onload =
a.onerror =
a.onbeforeload =
function (e) {
var l = e.type[0]
if (r)
try {
a.sheet.cssText.length || (l = 'e')
} catch (e) {
18 != e.code && (l = 'e')
}
if ('e' == l) {
if ((n += 1) < u) return o(t, i, s, n)
} else if ('preload' == a.rel && 'style' == a.as)
return (a.rel = 'stylesheet')
i(t, l, e.defaultPrevented)
}),
!1 !== d(t, a) && l.head.appendChild(a)
}
function l(e, t, i) {
var s,
n,
r = (e = e.push ? e : [e]).length,
a = r,
l = []
for (
s = function s(e, i, _s7) {
if (('e' == i && l.push(e), 'b' == i)) {
if (!_s7) return
l.push(e)
}
--r || t(l)
},
n = 0;
n < a;
n++
) {
o(e[n], s, i)
}
}
function c(e, i, s) {
var n, o
if ((i && i.trim && (n = i), (o = (n ? s : i) || {}), n)) {
if (n in t) throw 'LoadJS'
t[n] = !0
}
function c(t, i) {
l(
e,
function (e) {
a(o, e), t && a({ success: t, error: i }, e), r(n, e)
},
o
)
}
if (o.returnPromise) return new Promise(c)
c()
}
return (
(c.ready = function (e, t) {
return (
n(e, function (e) {
a(t, e)
}),
c
)
}),
(c.done = function (e) {
r(e, [])
}),
(c.reset = function () {
;(t = {}), (i = {}), (s = {})
}),
(c.isDefined = function (e) {
return e in t
}),
c
)
})()
})
function loadScript(e) {
return new Promise(function (t, i) {
loadjs_umd(e, { success: t, error: i })
})
}
function parseId$1(e) {
if (is.empty(e)) return null
if (is.number(Number(e))) return e
return e.match(/^.*(vimeo.com\/|video\/)(\d+).*/) ? RegExp.$2 : e
}
function parseHash(e) {
var t = e.match(
/^.*(vimeo.com\/|video\/)(\d+)(\?.*&*h=|\/)+([\d,a-f]+)/
)
return t && 5 === t.length ? t[4] : null
}
function assurePlaybackState$1(e) {
e && !this.embed.hasPlayed && (this.embed.hasPlayed = !0),
this.media.paused === e &&
((this.media.paused = !e),
triggerEvent.call(this, this.media, e ? 'play' : 'pause'))
}
var vimeo = {
setup: function setup() {
var e = this
toggleClass(e.elements.wrapper, e.config.classNames.embed, !0),
(e.options.speed = e.config.speed.options),
setAspectRatio.call(e),
is.object(window.Vimeo)
? vimeo.ready.call(e)
: loadScript(e.config.urls.vimeo.sdk)
.then(function () {
vimeo.ready.call(e)
})
.catch(function (t) {
e.debug.warn('Vimeo SDK (player.js) failed to load', t)
})
},
ready: function ready() {
var _this29 = this
var e = this,
t = e.config.vimeo,
i = t.premium,
s = t.referrerPolicy,
n = _objectWithoutProperties(t, _excluded)
var r = e.media.getAttribute('src'),
a = ''
is.empty(r)
? ((r = e.media.getAttribute(e.config.attributes.embed.id)),
(a = e.media.getAttribute(e.config.attributes.embed.hash)))
: (a = parseHash(r))
var o = a ? { h: a } : {}
i && Object.assign(n, { controls: !1, sidedock: !1 })
var l = buildUrlParams(
_objectSpread(
_objectSpread(
{
loop: e.config.loop.active,
autoplay: e.autoplay,
muted: e.muted,
gesture: 'media',
playsinline: !this.config.fullscreen.iosNative
},
o
),
n
)
),
c = parseId$1(r),
u = createElement('iframe'),
d = format(e.config.urls.vimeo.iframe, c, l)
if (
(u.setAttribute('src', d),
u.setAttribute('allowfullscreen', ''),
u.setAttribute(
'allow',
[
'autoplay',
'fullscreen',
'picture-in-picture',
'encrypted-media',
'accelerometer',
'gyroscope'
].join('; ')
),
is.empty(s) || u.setAttribute('referrerPolicy', s),
i || !t.customControls)
)
u.setAttribute('data-poster', e.poster),
(e.media = replaceElement(u, e.media))
else {
var _t12 = createElement('div', {
class: e.config.classNames.embedContainer,
'data-poster': e.poster
})
_t12.appendChild(u), (e.media = replaceElement(_t12, e.media))
}
t.customControls ||
fetch(format(e.config.urls.vimeo.api, d)).then(function (t) {
!is.empty(t) &&
t.thumbnail_url &&
ui.setPoster.call(e, t.thumbnail_url).catch(function () {})
}),
(e.embed = new window.Vimeo.Player(u, {
autopause: e.config.autopause,
muted: e.muted
})),
(e.media.paused = !0),
(e.media.currentTime = 0),
e.supported.ui && e.embed.disableTextTrack(),
(e.media.play = function () {
return assurePlaybackState$1.call(e, !0), e.embed.play()
}),
(e.media.pause = function () {
return assurePlaybackState$1.call(e, !1), e.embed.pause()
}),
(e.media.stop = function () {
e.pause(), (e.currentTime = 0)
})
var h = e.media.currentTime
Object.defineProperty(e.media, 'currentTime', {
get: function get() {
return h
},
set: function set(t) {
var i = e.embed,
s = e.media,
n = e.paused,
r = e.volume,
a = n && !i.hasPlayed
;(s.seeking = !0),
triggerEvent.call(e, s, 'seeking'),
Promise.resolve(a && i.setVolume(0))
.then(function () {
return i.setCurrentTime(t)
})
.then(function () {
return a && i.pause()
})
.then(function () {
return a && i.setVolume(r)
})
.catch(function () {})
}
})
var m = e.config.speed.selected
Object.defineProperty(e.media, 'playbackRate', {
get: function get() {
return m
},
set: function set(t) {
e.embed
.setPlaybackRate(t)
.then(function () {
;(m = t), triggerEvent.call(e, e.media, 'ratechange')
})
.catch(function () {
e.options.speed = [1]
})
}
})
var p = e.config.volume
Object.defineProperty(e.media, 'volume', {
get: function get() {
return p
},
set: function set(t) {
e.embed.setVolume(t).then(function () {
;(p = t), triggerEvent.call(e, e.media, 'volumechange')
})
}
})
var g = e.config.muted
Object.defineProperty(e.media, 'muted', {
get: function get() {
return g
},
set: function set(t) {
var i = !!is.boolean(t) && t
e.embed.setVolume(i ? 0 : e.config.volume).then(function () {
;(g = i), triggerEvent.call(e, e.media, 'volumechange')
})
}
})
var f,
y = e.config.loop
Object.defineProperty(e.media, 'loop', {
get: function get() {
return y
},
set: function set(t) {
var i = is.boolean(t) ? t : e.config.loop.active
e.embed.setLoop(i).then(function () {
y = i
})
}
}),
e.embed
.getVideoUrl()
.then(function (t) {
;(f = t), controls.setDownloadUrl.call(e)
})
.catch(function (e) {
_this29.debug.warn(e)
}),
Object.defineProperty(e.media, 'currentSrc', {
get: function get() {
return f
}
}),
Object.defineProperty(e.media, 'ended', {
get: function get() {
return e.currentTime === e.duration
}
}),
Promise.all([
e.embed.getVideoWidth(),
e.embed.getVideoHeight()
]).then(function (t) {
var _t13 = _slicedToArray(t, 2),
i = _t13[0],
s = _t13[1]
;(e.embed.ratio = roundAspectRatio(i, s)),
setAspectRatio.call(_this29)
}),
e.embed.setAutopause(e.config.autopause).then(function (t) {
e.config.autopause = t
}),
e.embed.getVideoTitle().then(function (t) {
;(e.config.title = t), ui.setTitle.call(_this29)
}),
e.embed.getCurrentTime().then(function (t) {
;(h = t), triggerEvent.call(e, e.media, 'timeupdate')
}),
e.embed.getDuration().then(function (t) {
;(e.media.duration = t),
triggerEvent.call(e, e.media, 'durationchange')
}),
e.embed.getTextTracks().then(function (t) {
;(e.media.textTracks = t), captions.setup.call(e)
}),
e.embed.on('cuechange', function (_ref17) {
var _ref17$cues = _ref17.cues,
t = _ref17$cues === void 0 ? [] : _ref17$cues
var i = t.map(function (e) {
return stripHTML(e.text)
})
captions.updateCues.call(e, i)
}),
e.embed.on('loaded', function () {
if (
(e.embed.getPaused().then(function (t) {
assurePlaybackState$1.call(e, !t),
t || triggerEvent.call(e, e.media, 'playing')
}),
is.element(e.embed.element) && e.supported.ui)
) {
e.embed.element.setAttribute('tabindex', -1)
}
}),
e.embed.on('bufferstart', function () {
triggerEvent.call(e, e.media, 'waiting')
}),
e.embed.on('bufferend', function () {
triggerEvent.call(e, e.media, 'playing')
}),
e.embed.on('play', function () {
assurePlaybackState$1.call(e, !0),
triggerEvent.call(e, e.media, 'playing')
}),
e.embed.on('pause', function () {
assurePlaybackState$1.call(e, !1)
}),
e.embed.on('timeupdate', function (t) {
;(e.media.seeking = !1),
(h = t.seconds),
triggerEvent.call(e, e.media, 'timeupdate')
}),
e.embed.on('progress', function (t) {
;(e.media.buffered = t.percent),
triggerEvent.call(e, e.media, 'progress'),
1 === parseInt(t.percent, 10) &&
triggerEvent.call(e, e.media, 'canplaythrough'),
e.embed.getDuration().then(function (t) {
t !== e.media.duration &&
((e.media.duration = t),
triggerEvent.call(e, e.media, 'durationchange'))
})
}),
e.embed.on('seeked', function () {
;(e.media.seeking = !1),
triggerEvent.call(e, e.media, 'seeked')
}),
e.embed.on('ended', function () {
;(e.media.paused = !0), triggerEvent.call(e, e.media, 'ended')
}),
e.embed.on('error', function (t) {
;(e.media.error = t), triggerEvent.call(e, e.media, 'error')
}),
t.customControls &&
setTimeout(function () {
return ui.build.call(e)
}, 0)
}
}
function parseId(e) {
if (is.empty(e)) return null
return e.match(
/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/
)
? RegExp.$2
: e
}
function assurePlaybackState(e) {
e && !this.embed.hasPlayed && (this.embed.hasPlayed = !0),
this.media.paused === e &&
((this.media.paused = !e),
triggerEvent.call(this, this.media, e ? 'play' : 'pause'))
}
function getHost(e) {
return e.noCookie
? 'https://www.youtube-nocookie.com'
: 'http:' === window.location.protocol
? 'http://www.youtube.com'
: void 0
}
var youtube = {
setup: function setup() {
var _this30 = this
if (
(toggleClass(
this.elements.wrapper,
this.config.classNames.embed,
!0
),
is.object(window.YT) && is.function(window.YT.Player))
)
youtube.ready.call(this)
else {
var e = window.onYouTubeIframeAPIReady
;(window.onYouTubeIframeAPIReady = function () {
is.function(e) && e(), youtube.ready.call(_this30)
}),
loadScript(this.config.urls.youtube.sdk).catch(function (
e
) {
_this30.debug.warn('YouTube API failed to load', e)
})
}
},
getTitle: function getTitle(e) {
var _this31 = this
fetch(format(this.config.urls.youtube.api, e))
.then(function (e) {
if (is.object(e)) {
var t = e.title,
i = e.height,
s = e.width
;(_this31.config.title = t),
ui.setTitle.call(_this31),
(_this31.embed.ratio = roundAspectRatio(s, i))
}
setAspectRatio.call(_this31)
})
.catch(function () {
setAspectRatio.call(_this31)
})
},
ready: function ready() {
var e = this,
t = e.config.youtube,
i = e.media && e.media.getAttribute('id')
if (!is.empty(i) && i.startsWith('youtube-')) return
var s = e.media.getAttribute('src')
is.empty(s) &&
(s = e.media.getAttribute(this.config.attributes.embed.id))
var n = parseId(s),
r = createElement('div', {
id: generateId(e.provider),
'data-poster': t.customControls ? e.poster : void 0
})
if (
((e.media = replaceElement(r, e.media)), t.customControls)
) {
var _t14 = function _t14(e) {
return 'https://i.ytimg.com/vi/'
.concat(n, '/')
.concat(e, 'default.jpg')
}
loadImage(_t14('maxres'), 121)
.catch(function () {
return loadImage(_t14('sd'), 121)
})
.catch(function () {
return loadImage(_t14('hq'))
})
.then(function (t) {
return ui.setPoster.call(e, t.src)
})
.then(function (t) {
t.includes('maxres') ||
(e.elements.poster.style.backgroundSize = 'cover')
})
.catch(function () {})
}
e.embed = new window.YT.Player(e.media, {
videoId: n,
host: getHost(t),
playerVars: extend(
{},
{
autoplay: e.config.autoplay ? 1 : 0,
hl: e.config.hl,
controls: e.supported.ui && t.customControls ? 0 : 1,
disablekb: 1,
playsinline: e.config.fullscreen.iosNative ? 0 : 1,
cc_load_policy: e.captions.active ? 1 : 0,
cc_lang_pref: e.config.captions.language,
widget_referrer: window ? window.location.href : null
},
t
),
events: {
onError: function onError(t) {
if (!e.media.error) {
var _i8 = t.data,
_s8 =
{
2: 'The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.',
5: 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.',
100: 'The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.',
101: 'The owner of the requested video does not allow it to be played in embedded players.',
150: 'The owner of the requested video does not allow it to be played in embedded players.'
}[_i8] || 'An unknown error occured'
;(e.media.error = { code: _i8, message: _s8 }),
triggerEvent.call(e, e.media, 'error')
}
},
onPlaybackRateChange: function onPlaybackRateChange(t) {
var i = t.target
;(e.media.playbackRate = i.getPlaybackRate()),
triggerEvent.call(e, e.media, 'ratechange')
},
onReady: function onReady(i) {
if (is.function(e.media.play)) return
var s = i.target
youtube.getTitle.call(e, n),
(e.media.play = function () {
assurePlaybackState.call(e, !0), s.playVideo()
}),
(e.media.pause = function () {
assurePlaybackState.call(e, !1), s.pauseVideo()
}),
(e.media.stop = function () {
s.stopVideo()
}),
(e.media.duration = s.getDuration()),
(e.media.paused = !0),
(e.media.currentTime = 0),
Object.defineProperty(e.media, 'currentTime', {
get: function get() {
return Number(s.getCurrentTime())
},
set: function set(t) {
e.paused && !e.embed.hasPlayed && e.embed.mute(),
(e.media.seeking = !0),
triggerEvent.call(e, e.media, 'seeking'),
s.seekTo(t)
}
}),
Object.defineProperty(e.media, 'playbackRate', {
get: function get() {
return s.getPlaybackRate()
},
set: function set(e) {
s.setPlaybackRate(e)
}
})
var r = e.config.volume
Object.defineProperty(e.media, 'volume', {
get: function get() {
return r
},
set: function set(t) {
;(r = t),
s.setVolume(100 * r),
triggerEvent.call(e, e.media, 'volumechange')
}
})
var a = e.config.muted
Object.defineProperty(e.media, 'muted', {
get: function get() {
return a
},
set: function set(t) {
var i = is.boolean(t) ? t : a
;(a = i),
s[i ? 'mute' : 'unMute'](),
s.setVolume(100 * r),
triggerEvent.call(e, e.media, 'volumechange')
}
}),
Object.defineProperty(e.media, 'currentSrc', {
get: function get() {
return s.getVideoUrl()
}
}),
Object.defineProperty(e.media, 'ended', {
get: function get() {
return e.currentTime === e.duration
}
})
var o = s.getAvailablePlaybackRates()
;(e.options.speed = o.filter(function (t) {
return e.config.speed.options.includes(t)
})),
e.supported.ui &&
t.customControls &&
e.media.setAttribute('tabindex', -1),
triggerEvent.call(e, e.media, 'timeupdate'),
triggerEvent.call(e, e.media, 'durationchange'),
clearInterval(e.timers.buffering),
(e.timers.buffering = setInterval(function () {
;(e.media.buffered = s.getVideoLoadedFraction()),
(null === e.media.lastBuffered ||
e.media.lastBuffered < e.media.buffered) &&
triggerEvent.call(e, e.media, 'progress'),
(e.media.lastBuffered = e.media.buffered),
1 === e.media.buffered &&
(clearInterval(e.timers.buffering),
triggerEvent.call(e, e.media, 'canplaythrough'))
}, 200)),
t.customControls &&
setTimeout(function () {
return ui.build.call(e)
}, 50)
},
onStateChange: function onStateChange(i) {
var s = i.target
clearInterval(e.timers.playing)
switch (
(e.media.seeking &&
[1, 2].includes(i.data) &&
((e.media.seeking = !1),
triggerEvent.call(e, e.media, 'seeked')),
i.data)
) {
case -1:
triggerEvent.call(e, e.media, 'timeupdate'),
(e.media.buffered = s.getVideoLoadedFraction()),
triggerEvent.call(e, e.media, 'progress')
break
case 0:
assurePlaybackState.call(e, !1),
e.media.loop
? (s.stopVideo(), s.playVideo())
: triggerEvent.call(e, e.media, 'ended')
break
case 1:
t.customControls &&
!e.config.autoplay &&
e.media.paused &&
!e.embed.hasPlayed
? e.media.pause()
: (assurePlaybackState.call(e, !0),
triggerEvent.call(e, e.media, 'playing'),
(e.timers.playing = setInterval(function () {
triggerEvent.call(e, e.media, 'timeupdate')
}, 50)),
e.media.duration !== s.getDuration() &&
((e.media.duration = s.getDuration()),
triggerEvent.call(
e,
e.media,
'durationchange'
)))
break
case 2:
e.muted || e.embed.unMute(),
assurePlaybackState.call(e, !1)
break
case 3:
triggerEvent.call(e, e.media, 'waiting')
}
triggerEvent.call(
e,
e.elements.container,
'statechange',
!1,
{ code: i.data }
)
}
}
})
}
},
media = {
setup: function setup() {
this.media
? (toggleClass(
this.elements.container,
this.config.classNames.type.replace('{0}', this.type),
!0
),
toggleClass(
this.elements.container,
this.config.classNames.provider.replace(
'{0}',
this.provider
),
!0
),
this.isEmbed &&
toggleClass(
this.elements.container,
this.config.classNames.type.replace('{0}', 'video'),
!0
),
this.isVideo &&
((this.elements.wrapper = createElement('div', {
class: this.config.classNames.video
})),
wrap(this.media, this.elements.wrapper),
(this.elements.poster = createElement('div', {
class: this.config.classNames.poster
})),
this.elements.wrapper.appendChild(this.elements.poster)),
this.isHTML5
? html5.setup.call(this)
: this.isYouTube
? youtube.setup.call(this)
: this.isVimeo && vimeo.setup.call(this))
: this.debug.warn('No media element found!')
}
}
var Ads = /*#__PURE__*/ (function () {
function Ads(e) {
var _this32 = this
_classCallCheck2(this, Ads)
_defineProperty$1(this, 'load', function () {
_this32.enabled &&
(is.object(window.google) && is.object(window.google.ima)
? _this32.ready()
: loadScript(_this32.player.config.urls.googleIMA.sdk)
.then(function () {
_this32.ready()
})
.catch(function () {
_this32.trigger(
'error',
new Error('Google IMA SDK failed to load')
)
}))
}),
_defineProperty$1(this, 'ready', function () {
var e
_this32.enabled ||
((e = _this32).manager && e.manager.destroy(),
e.elements.displayContainer &&
e.elements.displayContainer.destroy(),
e.elements.container.remove()),
_this32.startSafetyTimer(12e3, 'ready()'),
_this32.managerPromise.then(function () {
_this32.clearSafetyTimer('onAdsManagerLoaded()')
}),
_this32.listeners(),
_this32.setupIMA()
}),
_defineProperty$1(this, 'setupIMA', function () {
;(_this32.elements.container = createElement('div', {
class: _this32.player.config.classNames.ads
})),
_this32.player.elements.container.appendChild(
_this32.elements.container
),
google.ima.settings.setVpaidMode(
google.ima.ImaSdkSettings.VpaidMode.ENABLED
),
google.ima.settings.setLocale(
_this32.player.config.ads.language
),
google.ima.settings.setDisableCustomPlaybackForIOS10Plus(
_this32.player.config.playsinline
),
(_this32.elements.displayContainer =
new google.ima.AdDisplayContainer(
_this32.elements.container,
_this32.player.media
)),
(_this32.loader = new google.ima.AdsLoader(
_this32.elements.displayContainer
)),
_this32.loader.addEventListener(
google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,
function (e) {
return _this32.onAdsManagerLoaded(e)
},
!1
),
_this32.loader.addEventListener(
google.ima.AdErrorEvent.Type.AD_ERROR,
function (e) {
return _this32.onAdError(e)
},
!1
),
_this32.requestAds()
}),
_defineProperty$1(this, 'requestAds', function () {
var e = _this32.player.elements.container
try {
var t = new google.ima.AdsRequest()
;(t.adTagUrl = _this32.tagUrl),
(t.linearAdSlotWidth = e.offsetWidth),
(t.linearAdSlotHeight = e.offsetHeight),
(t.nonLinearAdSlotWidth = e.offsetWidth),
(t.nonLinearAdSlotHeight = e.offsetHeight),
(t.forceNonLinearFullSlot = !1),
t.setAdWillPlayMuted(!_this32.player.muted),
_this32.loader.requestAds(t)
} catch (e) {
_this32.onAdError(e)
}
}),
_defineProperty$1(this, 'pollCountdown', function () {
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: !1
if (!e)
return (
clearInterval(_this32.countdownTimer),
void _this32.elements.container.removeAttribute(
'data-badge-text'
)
)
_this32.countdownTimer = setInterval(function () {
var e = _formatTime(
Math.max(_this32.manager.getRemainingTime(), 0)
),
t = ''
.concat(
i18n.get('advertisement', _this32.player.config),
' - '
)
.concat(e)
_this32.elements.container.setAttribute(
'data-badge-text',
t
)
}, 100)
}),
_defineProperty$1(this, 'onAdsManagerLoaded', function (e) {
if (!_this32.enabled) return
var t = new google.ima.AdsRenderingSettings()
;(t.restoreCustomPlaybackStateOnAdBreakComplete = !0),
(t.enablePreloading = !0),
(_this32.manager = e.getAdsManager(_this32.player, t)),
(_this32.cuePoints = _this32.manager.getCuePoints()),
_this32.manager.addEventListener(
google.ima.AdErrorEvent.Type.AD_ERROR,
function (e) {
return _this32.onAdError(e)
}
),
Object.keys(google.ima.AdEvent.Type).forEach(function (e) {
_this32.manager.addEventListener(
google.ima.AdEvent.Type[e],
function (e) {
return _this32.onAdEvent(e)
}
)
}),
_this32.trigger('loaded')
}),
_defineProperty$1(this, 'addCuePoints', function () {
is.empty(_this32.cuePoints) ||
_this32.cuePoints.forEach(function (e) {
if (0 !== e && -1 !== e && e < _this32.player.duration) {
var t = _this32.player.elements.progress
if (is.element(t)) {
var i = (100 / _this32.player.duration) * e,
s = createElement('span', {
class: _this32.player.config.classNames.cues
})
;(s.style.left = ''.concat(i.toString(), '%')),
t.appendChild(s)
}
}
})
}),
_defineProperty$1(this, 'onAdEvent', function (e) {
var t = _this32.player.elements.container,
i = e.getAd(),
s = e.getAdData()
switch (
((function (e) {
triggerEvent.call(
_this32.player,
_this32.player.media,
'ads'.concat(e.replace(/_/g, '').toLowerCase())
)
})(e.type),
e.type)
) {
case google.ima.AdEvent.Type.LOADED:
_this32.trigger('loaded'),
_this32.pollCountdown(!0),
i.isLinear() ||
((i.width = t.offsetWidth),
(i.height = t.offsetHeight))
break
case google.ima.AdEvent.Type.STARTED:
_this32.manager.setVolume(_this32.player.volume)
break
case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:
_this32.player.ended
? _this32.loadAds()
: _this32.loader.contentComplete()
break
case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:
_this32.pauseContent()
break
case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:
_this32.pollCountdown(), _this32.resumeContent()
break
case google.ima.AdEvent.Type.LOG:
s.adError &&
_this32.player.debug.warn(
'Non-fatal ad error: '.concat(s.adError.getMessage())
)
}
}),
_defineProperty$1(this, 'onAdError', function (e) {
_this32.cancel(), _this32.player.debug.warn('Ads error', e)
}),
_defineProperty$1(this, 'listeners', function () {
var e = _this32.player.elements.container
var t
_this32.player.on('canplay', function () {
_this32.addCuePoints()
}),
_this32.player.on('ended', function () {
_this32.loader.contentComplete()
}),
_this32.player.on('timeupdate', function () {
t = _this32.player.currentTime
}),
_this32.player.on('seeked', function () {
var e = _this32.player.currentTime
is.empty(_this32.cuePoints) ||
_this32.cuePoints.forEach(function (i, s) {
t < i &&
i < e &&
(_this32.manager.discardAdBreak(),
_this32.cuePoints.splice(s, 1))
})
}),
window.addEventListener('resize', function () {
_this32.manager &&
_this32.manager.resize(
e.offsetWidth,
e.offsetHeight,
google.ima.ViewMode.NORMAL
)
})
}),
_defineProperty$1(this, 'play', function () {
var e = _this32.player.elements.container
_this32.managerPromise || _this32.resumeContent(),
_this32.managerPromise
.then(function () {
_this32.manager.setVolume(_this32.player.volume),
_this32.elements.displayContainer.initialize()
try {
_this32.initialized ||
(_this32.manager.init(
e.offsetWidth,
e.offsetHeight,
google.ima.ViewMode.NORMAL
),
_this32.manager.start()),
(_this32.initialized = !0)
} catch (e) {
_this32.onAdError(e)
}
})
.catch(function () {})
}),
_defineProperty$1(this, 'resumeContent', function () {
;(_this32.elements.container.style.zIndex = ''),
(_this32.playing = !1),
silencePromise(_this32.player.media.play())
}),
_defineProperty$1(this, 'pauseContent', function () {
;(_this32.elements.container.style.zIndex = 3),
(_this32.playing = !0),
_this32.player.media.pause()
}),
_defineProperty$1(this, 'cancel', function () {
_this32.initialized && _this32.resumeContent(),
_this32.trigger('error'),
_this32.loadAds()
}),
_defineProperty$1(this, 'loadAds', function () {
_this32.managerPromise
.then(function () {
_this32.manager && _this32.manager.destroy(),
(_this32.managerPromise = new Promise(function (e) {
_this32.on('loaded', e),
_this32.player.debug.log(_this32.manager)
})),
(_this32.initialized = !1),
_this32.requestAds()
})
.catch(function () {})
}),
_defineProperty$1(this, 'trigger', function (e) {
for (
var _len4 = arguments.length,
t = new Array(_len4 > 1 ? _len4 - 1 : 0),
_key4 = 1;
_key4 < _len4;
_key4++
) {
t[_key4 - 1] = arguments[_key4]
}
var i = _this32.events[e]
is.array(i) &&
i.forEach(function (e) {
is.function(e) && e.apply(_this32, t)
})
}),
_defineProperty$1(this, 'on', function (e, t) {
return (
is.array(_this32.events[e]) || (_this32.events[e] = []),
_this32.events[e].push(t),
_this32
)
}),
_defineProperty$1(this, 'startSafetyTimer', function (e, t) {
_this32.player.debug.log(
'Safety timer invoked from: '.concat(t)
),
(_this32.safetyTimer = setTimeout(function () {
_this32.cancel(),
_this32.clearSafetyTimer('startSafetyTimer()')
}, e))
}),
_defineProperty$1(this, 'clearSafetyTimer', function (e) {
is.nullOrUndefined(_this32.safetyTimer) ||
(_this32.player.debug.log(
'Safety timer cleared from: '.concat(e)
),
clearTimeout(_this32.safetyTimer),
(_this32.safetyTimer = null))
}),
(this.player = e),
(this.config = e.config.ads),
(this.playing = !1),
(this.initialized = !1),
(this.elements = { container: null, displayContainer: null }),
(this.manager = null),
(this.loader = null),
(this.cuePoints = null),
(this.events = {}),
(this.safetyTimer = null),
(this.countdownTimer = null),
(this.managerPromise = new Promise(function (e, t) {
_this32.on('loaded', e), _this32.on('error', t)
})),
this.load()
}
_createClass2(Ads, [
{
key: 'enabled',
get: function get() {
var e = this.config
return (
this.player.isHTML5 &&
this.player.isVideo &&
e.enabled &&
(!is.empty(e.publisherId) || is.url(e.tagUrl))
)
}
},
{
key: 'tagUrl',
get: function get() {
var e = this.config
if (is.url(e.tagUrl)) return e.tagUrl
return 'https://go.aniview.com/api/adserver6/vast/?'.concat(
buildUrlParams({
AV_PUBLISHERID: '58c25bb0073ef448b1087ad6',
AV_CHANNELID: '5a0458dc28a06145e4519d21',
AV_URL: window.location.hostname,
cb: Date.now(),
AV_WIDTH: 640,
AV_HEIGHT: 480,
AV_CDIM2: e.publisherId
})
)
}
}
])
return Ads
})()
function clamp() {
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: 0
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: 0
var i =
arguments.length > 2 && arguments[2] !== undefined
? arguments[2]
: 255
return Math.min(Math.max(e, t), i)
}
var parseVtt = function parseVtt(e) {
var t = []
return (
e.split(/\r\n\r\n|\n\n|\r\r/).forEach(function (e) {
var i = {}
e.split(/\r\n|\n|\r/).forEach(function (e) {
if (is.number(i.startTime)) {
if (!is.empty(e.trim()) && is.empty(i.text)) {
var _t16, _t17, _t15$1$split, _t15$1$split2
var _t15 = e.trim().split('#xywh=')
;((_t16 = _t15),
(_t17 = _slicedToArray(_t16, 1)),
(i.text = _t17[0]),
_t16),
_t15[1] &&
((_t15$1$split = _t15[1].split(',')),
(_t15$1$split2 = _slicedToArray(_t15$1$split, 4)),
(i.x = _t15$1$split2[0]),
(i.y = _t15$1$split2[1]),
(i.w = _t15$1$split2[2]),
(i.h = _t15$1$split2[3]),
_t15$1$split)
}
} else {
var _t18 = e.match(
/([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})( ?--> ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/
)
_t18 &&
((i.startTime =
60 * Number(_t18[1] || 0) * 60 +
60 * Number(_t18[2]) +
Number(_t18[3]) +
Number('0.'.concat(_t18[4]))),
(i.endTime =
60 * Number(_t18[6] || 0) * 60 +
60 * Number(_t18[7]) +
Number(_t18[8]) +
Number('0.'.concat(_t18[9]))))
}
}),
i.text && t.push(i)
}),
t
)
},
fitRatio = function fitRatio(e, t) {
var i = {}
return (
e > t.width / t.height
? ((i.width = t.width), (i.height = (1 / e) * t.width))
: ((i.height = t.height), (i.width = e * t.height)),
i
)
}
var PreviewThumbnails = /*#__PURE__*/ (function () {
function PreviewThumbnails(e) {
var _this33 = this
_classCallCheck2(this, PreviewThumbnails)
_defineProperty$1(this, 'load', function () {
_this33.player.elements.display.seekTooltip &&
(_this33.player.elements.display.seekTooltip.hidden =
_this33.enabled),
_this33.enabled &&
_this33.getThumbnails().then(function () {
_this33.enabled &&
(_this33.render(),
_this33.determineContainerAutoSizing(),
(_this33.loaded = !0))
})
}),
_defineProperty$1(this, 'getThumbnails', function () {
return new Promise(function (e) {
var t = _this33.player.config.previewThumbnails.src
if (is.empty(t))
throw new Error(
'Missing previewThumbnails.src config attribute'
)
var i = function i() {
_this33.thumbnails.sort(function (e, t) {
return e.height - t.height
}),
_this33.player.debug.log(
'Preview thumbnails',
_this33.thumbnails
),
e()
}
if (is.function(t))
t(function (e) {
;(_this33.thumbnails = e), i()
})
else {
var _e27 = (is.string(t) ? [t] : t).map(function (e) {
return _this33.getThumbnail(e)
})
Promise.all(_e27).then(i)
}
})
}),
_defineProperty$1(this, 'getThumbnail', function (e) {
return new Promise(function (t) {
fetch(e).then(function (i) {
var s = {
frames: parseVtt(i),
height: null,
urlPrefix: ''
}
s.frames[0].text.startsWith('/') ||
s.frames[0].text.startsWith('http://') ||
s.frames[0].text.startsWith('https://') ||
(s.urlPrefix = e.substring(0, e.lastIndexOf('/') + 1))
var n = new Image()
;(n.onload = function () {
;(s.height = n.naturalHeight),
(s.width = n.naturalWidth),
_this33.thumbnails.push(s),
t()
}),
(n.src = s.urlPrefix + s.frames[0].text)
})
})
}),
_defineProperty$1(this, 'startMove', function (e) {
if (
_this33.loaded &&
is.event(e) &&
['touchmove', 'mousemove'].includes(e.type) &&
_this33.player.media.duration
) {
if ('touchmove' === e.type)
_this33.seekTime =
_this33.player.media.duration *
(_this33.player.elements.inputs.seek.value / 100)
else {
var t, i
var s =
_this33.player.elements.progress.getBoundingClientRect(),
n = (100 / s.width) * (e.pageX - s.left)
;(_this33.seekTime =
_this33.player.media.duration * (n / 100)),
_this33.seekTime < 0 && (_this33.seekTime = 0),
_this33.seekTime > _this33.player.media.duration - 1 &&
(_this33.seekTime =
_this33.player.media.duration - 1),
(_this33.mousePosX = e.pageX),
(_this33.elements.thumb.time.innerText = _formatTime(
_this33.seekTime
))
var r =
null === (t = _this33.player.config.markers) ||
void 0 === t ||
null === (i = t.points) ||
void 0 === i
? void 0
: i.find(function (_ref18) {
var e = _ref18.time
return e === Math.round(_this33.seekTime)
})
r &&
_this33.elements.thumb.time.insertAdjacentHTML(
'afterbegin',
''.concat(r.label, '
')
)
}
_this33.showImageAtCurrentTime()
}
}),
_defineProperty$1(this, 'endMove', function () {
_this33.toggleThumbContainer(!1, !0)
}),
_defineProperty$1(this, 'startScrubbing', function (e) {
;(is.nullOrUndefined(e.button) ||
!1 === e.button ||
0 === e.button) &&
((_this33.mouseDown = !0),
_this33.player.media.duration &&
(_this33.toggleScrubbingContainer(!0),
_this33.toggleThumbContainer(!1, !0),
_this33.showImageAtCurrentTime()))
}),
_defineProperty$1(this, 'endScrubbing', function () {
;(_this33.mouseDown = !1),
Math.ceil(_this33.lastTime) ===
Math.ceil(_this33.player.media.currentTime)
? _this33.toggleScrubbingContainer(!1)
: once.call(
_this33.player,
_this33.player.media,
'timeupdate',
function () {
_this33.mouseDown ||
_this33.toggleScrubbingContainer(!1)
}
)
}),
_defineProperty$1(this, 'listeners', function () {
_this33.player.on('play', function () {
_this33.toggleThumbContainer(!1, !0)
}),
_this33.player.on('seeked', function () {
_this33.toggleThumbContainer(!1)
}),
_this33.player.on('timeupdate', function () {
_this33.lastTime = _this33.player.media.currentTime
})
}),
_defineProperty$1(this, 'render', function () {
;(_this33.elements.thumb.container = createElement('div', {
class:
_this33.player.config.classNames.previewThumbnails
.thumbContainer
})),
(_this33.elements.thumb.imageContainer = createElement(
'div',
{
class:
_this33.player.config.classNames.previewThumbnails
.imageContainer
}
)),
_this33.elements.thumb.container.appendChild(
_this33.elements.thumb.imageContainer
)
var e = createElement('div', {
class:
_this33.player.config.classNames.previewThumbnails
.timeContainer
})
;(_this33.elements.thumb.time = createElement(
'span',
{},
'00:00'
)),
e.appendChild(_this33.elements.thumb.time),
_this33.elements.thumb.imageContainer.appendChild(e),
is.element(_this33.player.elements.progress) &&
_this33.player.elements.progress.appendChild(
_this33.elements.thumb.container
),
(_this33.elements.scrubbing.container = createElement(
'div',
{
class:
_this33.player.config.classNames.previewThumbnails
.scrubbingContainer
}
)),
_this33.player.elements.wrapper.appendChild(
_this33.elements.scrubbing.container
)
}),
_defineProperty$1(this, 'destroy', function () {
_this33.elements.thumb.container &&
_this33.elements.thumb.container.remove(),
_this33.elements.scrubbing.container &&
_this33.elements.scrubbing.container.remove()
}),
_defineProperty$1(this, 'showImageAtCurrentTime', function () {
_this33.mouseDown
? _this33.setScrubbingContainerSize()
: _this33.setThumbContainerSizeAndPos()
var e = _this33.thumbnails[0].frames.findIndex(function (e) {
return (
_this33.seekTime >= e.startTime &&
_this33.seekTime <= e.endTime
)
}),
t = e >= 0
var i = 0
_this33.mouseDown || _this33.toggleThumbContainer(t),
t &&
(_this33.thumbnails.forEach(function (t, s) {
_this33.loadedImages.includes(t.frames[e].text) &&
(i = s)
}),
e !== _this33.showingThumb &&
((_this33.showingThumb = e), _this33.loadImage(i)))
}),
_defineProperty$1(this, 'loadImage', function () {
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: 0
var t = _this33.showingThumb,
i = _this33.thumbnails[e],
s = i.urlPrefix,
n = i.frames[t],
r = i.frames[t].text,
a = s + r
if (
_this33.currentImageElement &&
_this33.currentImageElement.dataset.filename === r
)
_this33.showImage(
_this33.currentImageElement,
n,
e,
t,
r,
!1
),
(_this33.currentImageElement.dataset.index = t),
_this33.removeOldImages(_this33.currentImageElement)
else {
_this33.loadingImage &&
_this33.usingSprites &&
(_this33.loadingImage.onload = null)
var _i9 = new Image()
;(_i9.src = a),
(_i9.dataset.index = t),
(_i9.dataset.filename = r),
(_this33.showingThumbFilename = r),
_this33.player.debug.log('Loading image: '.concat(a)),
(_i9.onload = function () {
return _this33.showImage(_i9, n, e, t, r, !0)
}),
(_this33.loadingImage = _i9),
_this33.removeOldImages(_i9)
}
}),
_defineProperty$1(this, 'showImage', function (e, t, i, s, n) {
var r =
arguments.length > 5 && arguments[5] !== undefined
? arguments[5]
: !0
_this33.player.debug.log(
'Showing thumb: '
.concat(n, '. num: ')
.concat(s, '. qual: ')
.concat(i, '. newimg: ')
.concat(r)
),
_this33.setImageSizeAndOffset(e, t),
r &&
(_this33.currentImageContainer.appendChild(e),
(_this33.currentImageElement = e),
_this33.loadedImages.includes(n) ||
_this33.loadedImages.push(n)),
_this33
.preloadNearby(s, !0)
.then(_this33.preloadNearby(s, !1))
.then(_this33.getHigherQuality(i, e, t, n))
}),
_defineProperty$1(this, 'removeOldImages', function (e) {
Array.from(_this33.currentImageContainer.children).forEach(
function (t) {
if ('img' !== t.tagName.toLowerCase()) return
var i = _this33.usingSprites ? 500 : 1e3
if (
t.dataset.index !== e.dataset.index &&
!t.dataset.deleting
) {
t.dataset.deleting = !0
var _e28 = _this33.currentImageContainer
setTimeout(function () {
_e28.removeChild(t),
_this33.player.debug.log(
'Removing thumb: '.concat(t.dataset.filename)
)
}, i)
}
}
)
}),
_defineProperty$1(this, 'preloadNearby', function (e) {
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: !0
return new Promise(function (i) {
setTimeout(function () {
var s = _this33.thumbnails[0].frames[e].text
if (_this33.showingThumbFilename === s) {
var n
n = t
? _this33.thumbnails[0].frames.slice(e)
: _this33.thumbnails[0].frames.slice(0, e).reverse()
var r = !1
n.forEach(function (e) {
var t = e.text
if (t !== s && !_this33.loadedImages.includes(t)) {
;(r = !0),
_this33.player.debug.log(
'Preloading thumb filename: '.concat(t)
)
var _e29 = _this33.thumbnails[0].urlPrefix,
_s9 = _e29 + t,
_n5 = new Image()
;(_n5.src = _s9),
(_n5.onload = function () {
_this33.player.debug.log(
'Preloaded thumb filename: '.concat(t)
),
_this33.loadedImages.includes(t) ||
_this33.loadedImages.push(t),
i()
})
}
}),
r || i()
}
}, 300)
})
}),
_defineProperty$1(
this,
'getHigherQuality',
function (e, t, i, s) {
if (e < _this33.thumbnails.length - 1) {
var n = t.naturalHeight
_this33.usingSprites && (n = i.h),
n < _this33.thumbContainerHeight &&
setTimeout(function () {
_this33.showingThumbFilename === s &&
(_this33.player.debug.log(
'Showing higher quality thumb for: '.concat(s)
),
_this33.loadImage(e + 1))
}, 300)
}
}
),
_defineProperty$1(this, 'toggleThumbContainer', function () {
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: !1
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: !1
var i =
_this33.player.config.classNames.previewThumbnails
.thumbContainerShown
_this33.elements.thumb.container.classList.toggle(i, e),
!e &&
t &&
((_this33.showingThumb = null),
(_this33.showingThumbFilename = null))
}),
_defineProperty$1(
this,
'toggleScrubbingContainer',
function () {
var e =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: !1
var t =
_this33.player.config.classNames.previewThumbnails
.scrubbingContainerShown
_this33.elements.scrubbing.container.classList.toggle(t, e),
e ||
((_this33.showingThumb = null),
(_this33.showingThumbFilename = null))
}
),
_defineProperty$1(
this,
'determineContainerAutoSizing',
function () {
;(_this33.elements.thumb.imageContainer.clientHeight > 20 ||
_this33.elements.thumb.imageContainer.clientWidth > 20) &&
(_this33.sizeSpecifiedInCSS = !0)
}
),
_defineProperty$1(
this,
'setThumbContainerSizeAndPos',
function () {
var e = _this33.elements.thumb.imageContainer
if (_this33.sizeSpecifiedInCSS) {
if (e.clientHeight > 20 && e.clientWidth < 20) {
var t = Math.floor(
e.clientHeight * _this33.thumbAspectRatio
)
e.style.width = ''.concat(t, 'px')
} else if (e.clientHeight < 20 && e.clientWidth > 20) {
var _t19 = Math.floor(
e.clientWidth / _this33.thumbAspectRatio
)
e.style.height = ''.concat(_t19, 'px')
}
} else {
var _t20 = Math.floor(
_this33.thumbContainerHeight * _this33.thumbAspectRatio
)
;(e.style.height = ''.concat(
_this33.thumbContainerHeight,
'px'
)),
(e.style.width = ''.concat(_t20, 'px'))
}
_this33.setThumbContainerPos()
}
),
_defineProperty$1(this, 'setThumbContainerPos', function () {
var e =
_this33.player.elements.progress.getBoundingClientRect(),
t =
_this33.player.elements.container.getBoundingClientRect(),
i = _this33.elements.thumb.container,
s = t.left - e.left + 10,
n = t.right - e.left - i.clientWidth - 10,
r = _this33.mousePosX - e.left - i.clientWidth / 2,
a = clamp(r, s, n)
;(i.style.left = ''.concat(a, 'px')),
i.style.setProperty('--preview-arrow-offset', r - a + 'px')
}),
_defineProperty$1(
this,
'setScrubbingContainerSize',
function () {
var _fitRatio = fitRatio(_this33.thumbAspectRatio, {
width: _this33.player.media.clientWidth,
height: _this33.player.media.clientHeight
}),
e = _fitRatio.width,
t = _fitRatio.height
;(_this33.elements.scrubbing.container.style.width =
''.concat(e, 'px')),
(_this33.elements.scrubbing.container.style.height =
''.concat(t, 'px'))
}
),
_defineProperty$1(
this,
'setImageSizeAndOffset',
function (e, t) {
if (!_this33.usingSprites) return
var i = _this33.thumbContainerHeight / t.h
;(e.style.height = e.naturalHeight * i + 'px'),
(e.style.width = e.naturalWidth * i + 'px'),
(e.style.left = '-'.concat(t.x * i, 'px')),
(e.style.top = '-'.concat(t.y * i, 'px'))
}
),
(this.player = e),
(this.thumbnails = []),
(this.loaded = !1),
(this.lastMouseMoveTime = Date.now()),
(this.mouseDown = !1),
(this.loadedImages = []),
(this.elements = { thumb: {}, scrubbing: {} }),
this.load()
}
_createClass2(PreviewThumbnails, [
{
key: 'enabled',
get: function get() {
return (
this.player.isHTML5 &&
this.player.isVideo &&
this.player.config.previewThumbnails.enabled
)
}
},
{
key: 'currentImageContainer',
get: function get() {
return this.mouseDown
? this.elements.scrubbing.container
: this.elements.thumb.imageContainer
}
},
{
key: 'usingSprites',
get: function get() {
return Object.keys(this.thumbnails[0].frames[0]).includes('w')
}
},
{
key: 'thumbAspectRatio',
get: function get() {
return this.usingSprites
? this.thumbnails[0].frames[0].w /
this.thumbnails[0].frames[0].h
: this.thumbnails[0].width / this.thumbnails[0].height
}
},
{
key: 'thumbContainerHeight',
get: function get() {
if (this.mouseDown) {
var _fitRatio2 = fitRatio(this.thumbAspectRatio, {
width: this.player.media.clientWidth,
height: this.player.media.clientHeight
}),
e = _fitRatio2.height
return e
}
return this.sizeSpecifiedInCSS
? this.elements.thumb.imageContainer.clientHeight
: Math.floor(
this.player.media.clientWidth /
this.thumbAspectRatio /
4
)
}
},
{
key: 'currentImageElement',
get: function get() {
return this.mouseDown
? this.currentScrubbingImageElement
: this.currentThumbnailImageElement
},
set: function set(e) {
this.mouseDown
? (this.currentScrubbingImageElement = e)
: (this.currentThumbnailImageElement = e)
}
}
])
return PreviewThumbnails
})()
var source = {
insertElements: function insertElements(e, t) {
var _this34 = this
is.string(t)
? insertElement(e, this.media, { src: t })
: is.array(t) &&
t.forEach(function (t) {
insertElement(e, _this34.media, t)
})
},
change: function change(e) {
var _this35 = this
getDeep(e, 'sources.length')
? (html5.cancelRequests.call(this),
this.destroy.call(
this,
function () {
;(_this35.options.quality = []),
removeElement(_this35.media),
(_this35.media = null),
is.element(_this35.elements.container) &&
_this35.elements.container.removeAttribute('class')
var t = e.sources,
i = e.type,
_t21 = _slicedToArray(t, 1),
_t21$ = _t21[0],
_t21$$provider = _t21$.provider,
s =
_t21$$provider === void 0
? providers.html5
: _t21$$provider,
n = _t21$.src,
r = 'html5' === s ? i : 'div',
a = 'html5' === s ? {} : { src: n }
Object.assign(_this35, {
provider: s,
type: i,
supported: support.check(
i,
s,
_this35.config.playsinline
),
media: createElement(r, a)
}),
_this35.elements.container.appendChild(_this35.media),
is.boolean(e.autoplay) &&
(_this35.config.autoplay = e.autoplay),
_this35.isHTML5 &&
(_this35.config.crossorigin &&
_this35.media.setAttribute('crossorigin', ''),
_this35.config.autoplay &&
_this35.media.setAttribute('autoplay', ''),
is.empty(e.poster) || (_this35.poster = e.poster),
_this35.config.loop.active &&
_this35.media.setAttribute('loop', ''),
_this35.config.muted &&
_this35.media.setAttribute('muted', ''),
_this35.config.playsinline &&
_this35.media.setAttribute('playsinline', '')),
ui.addStyleHook.call(_this35),
_this35.isHTML5 &&
source.insertElements.call(_this35, 'source', t),
(_this35.config.title = e.title),
media.setup.call(_this35),
_this35.isHTML5 &&
Object.keys(e).includes('tracks') &&
source.insertElements.call(
_this35,
'track',
e.tracks
),
(_this35.isHTML5 ||
(_this35.isEmbed && !_this35.supported.ui)) &&
ui.build.call(_this35),
_this35.isHTML5 && _this35.media.load(),
is.empty(e.previewThumbnails) ||
(Object.assign(
_this35.config.previewThumbnails,
e.previewThumbnails
),
_this35.previewThumbnails &&
_this35.previewThumbnails.loaded &&
(_this35.previewThumbnails.destroy(),
(_this35.previewThumbnails = null)),
_this35.config.previewThumbnails.enabled &&
(_this35.previewThumbnails = new PreviewThumbnails(
_this35
))),
_this35.fullscreen.update()
},
!0
))
: this.debug.warn('Invalid source format')
}
}
var Plyr = /*#__PURE__*/ (function () {
function Plyr(e, t) {
var _this36 = this
_classCallCheck2(this, Plyr)
if (
(_defineProperty$1(this, 'play', function () {
return is.function(_this36.media.play)
? (_this36.ads &&
_this36.ads.enabled &&
_this36.ads.managerPromise
.then(function () {
return _this36.ads.play()
})
.catch(function () {
return silencePromise(_this36.media.play())
}),
_this36.media.play())
: null
}),
_defineProperty$1(this, 'pause', function () {
return _this36.playing && is.function(_this36.media.pause)
? _this36.media.pause()
: null
}),
_defineProperty$1(this, 'togglePlay', function (e) {
return (is.boolean(e) ? e : !_this36.playing)
? _this36.play()
: _this36.pause()
}),
_defineProperty$1(this, 'stop', function () {
_this36.isHTML5
? (_this36.pause(), _this36.restart())
: is.function(_this36.media.stop) && _this36.media.stop()
}),
_defineProperty$1(this, 'restart', function () {
_this36.currentTime = 0
}),
_defineProperty$1(this, 'rewind', function (e) {
_this36.currentTime -= is.number(e)
? e
: _this36.config.seekTime
}),
_defineProperty$1(this, 'forward', function (e) {
_this36.currentTime += is.number(e)
? e
: _this36.config.seekTime
}),
_defineProperty$1(this, 'increaseVolume', function (e) {
var t = _this36.media.muted ? 0 : _this36.volume
_this36.volume = t + (is.number(e) ? e : 0)
}),
_defineProperty$1(this, 'decreaseVolume', function (e) {
_this36.increaseVolume(-e)
}),
_defineProperty$1(this, 'airplay', function () {
support.airplay &&
_this36.media.webkitShowPlaybackTargetPicker()
}),
_defineProperty$1(this, 'toggleControls', function (e) {
if (_this36.supported.ui && !_this36.isAudio) {
var _t22 = hasClass(
_this36.elements.container,
_this36.config.classNames.hideControls
),
_i10 = void 0 === e ? void 0 : !e,
_s10 = toggleClass(
_this36.elements.container,
_this36.config.classNames.hideControls,
_i10
)
if (
(_s10 &&
is.array(_this36.config.controls) &&
_this36.config.controls.includes('settings') &&
!is.empty(_this36.config.settings) &&
controls.toggleMenu.call(_this36, !1),
_s10 !== _t22)
) {
var _e30 = _s10 ? 'controlshidden' : 'controlsshown'
triggerEvent.call(_this36, _this36.media, _e30)
}
return !_s10
}
return !1
}),
_defineProperty$1(this, 'on', function (e, t) {
on.call(_this36, _this36.elements.container, e, t)
}),
_defineProperty$1(this, 'once', function (e, t) {
once.call(_this36, _this36.elements.container, e, t)
}),
_defineProperty$1(this, 'off', function (e, t) {
off(_this36.elements.container, e, t)
}),
_defineProperty$1(this, 'destroy', function (e) {
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: !1
if (!_this36.ready) return
var i = function i() {
;(document.body.style.overflow = ''),
(_this36.embed = null),
t
? (Object.keys(_this36.elements).length &&
(removeElement(_this36.elements.buttons.play),
removeElement(_this36.elements.captions),
removeElement(_this36.elements.controls),
removeElement(_this36.elements.wrapper),
(_this36.elements.buttons.play = null),
(_this36.elements.captions = null),
(_this36.elements.controls = null),
(_this36.elements.wrapper = null)),
is.function(e) && e())
: (unbindListeners.call(_this36),
html5.cancelRequests.call(_this36),
replaceElement(
_this36.elements.original,
_this36.elements.container
),
triggerEvent.call(
_this36,
_this36.elements.original,
'destroyed',
!0
),
is.function(e) && e.call(_this36.elements.original),
(_this36.ready = !1),
setTimeout(function () {
;(_this36.elements = null), (_this36.media = null)
}, 200))
}
_this36.stop(),
clearTimeout(_this36.timers.loading),
clearTimeout(_this36.timers.controls),
clearTimeout(_this36.timers.resized),
_this36.isHTML5
? (ui.toggleNativeControls.call(_this36, !0), i())
: _this36.isYouTube
? (clearInterval(_this36.timers.buffering),
clearInterval(_this36.timers.playing),
null !== _this36.embed &&
is.function(_this36.embed.destroy) &&
_this36.embed.destroy(),
i())
: _this36.isVimeo &&
(null !== _this36.embed &&
_this36.embed.unload().then(i),
setTimeout(i, 200))
}),
_defineProperty$1(this, 'supports', function (e) {
return support.mime.call(_this36, e)
}),
(this.timers = {}),
(this.ready = !1),
(this.loading = !1),
(this.failed = !1),
(this.touch = support.touch),
(this.media = e),
is.string(this.media) &&
(this.media = document.querySelectorAll(this.media)),
((window.jQuery && this.media instanceof jQuery) ||
is.nodeList(this.media) ||
is.array(this.media)) &&
(this.media = this.media[0]),
(this.config = extend(
{},
defaults,
Plyr.defaults,
t || {},
(function () {
try {
return JSON.parse(
_this36.media.getAttribute('data-plyr-config')
)
} catch (e) {
return {}
}
})()
)),
(this.elements = {
container: null,
fullscreen: null,
captions: null,
buttons: {},
display: {},
progress: {},
inputs: {},
settings: { popup: null, menu: null, panels: {}, buttons: {} }
}),
(this.captions = {
active: null,
currentTrack: -1,
meta: new WeakMap()
}),
(this.fullscreen = { active: !1 }),
(this.options = { speed: [], quality: [] }),
(this.debug = new Console(this.config.debug)),
this.debug.log('Config', this.config),
this.debug.log('Support', support),
is.nullOrUndefined(this.media) || !is.element(this.media))
)
return void this.debug.error(
'Setup failed: no suitable element passed'
)
if (this.media.plyr)
return void this.debug.warn('Target already setup')
if (!this.config.enabled)
return void this.debug.error('Setup failed: disabled by config')
if (!support.check().api)
return void this.debug.error('Setup failed: no support')
var i = this.media.cloneNode(!0)
;(i.autoplay = !1), (this.elements.original = i)
var s = this.media.tagName.toLowerCase()
var n = null,
r = null
switch (s) {
case 'div':
if (
((n = this.media.querySelector('iframe')), is.element(n))
) {
if (
((r = parseUrl(n.getAttribute('src'))),
(this.provider = getProviderByUrl(r.toString())),
(this.elements.container = this.media),
(this.media = n),
(this.elements.container.className = ''),
r.search.length)
) {
var _e31 = ['1', 'true']
_e31.includes(r.searchParams.get('autoplay')) &&
(this.config.autoplay = !0),
_e31.includes(r.searchParams.get('loop')) &&
(this.config.loop.active = !0),
this.isYouTube
? ((this.config.playsinline = _e31.includes(
r.searchParams.get('playsinline')
)),
(this.config.youtube.hl = r.searchParams.get('hl')))
: (this.config.playsinline = !0)
}
} else
(this.provider = this.media.getAttribute(
this.config.attributes.embed.provider
)),
this.media.removeAttribute(
this.config.attributes.embed.provider
)
if (
is.empty(this.provider) ||
!Object.values(providers).includes(this.provider)
)
return void this.debug.error(
'Setup failed: Invalid provider'
)
this.type = types.video
break
case 'video':
case 'audio':
;(this.type = s),
(this.provider = providers.html5),
this.media.hasAttribute('crossorigin') &&
(this.config.crossorigin = !0),
this.media.hasAttribute('autoplay') &&
(this.config.autoplay = !0),
(this.media.hasAttribute('playsinline') ||
this.media.hasAttribute('webkit-playsinline')) &&
(this.config.playsinline = !0),
this.media.hasAttribute('muted') &&
(this.config.muted = !0),
this.media.hasAttribute('loop') &&
(this.config.loop.active = !0)
break
default:
return void this.debug.error('Setup failed: unsupported type')
}
;(this.supported = support.check(
this.type,
this.provider,
this.config.playsinline
)),
this.supported.api
? ((this.eventListeners = []),
(this.listeners = new Listeners(this)),
(this.storage = new Storage(this)),
(this.media.plyr = this),
is.element(this.elements.container) ||
((this.elements.container = createElement('div', {
tabindex: 0
})),
wrap(this.media, this.elements.container)),
ui.migrateStyles.call(this),
ui.addStyleHook.call(this),
media.setup.call(this),
this.config.debug &&
on.call(
this,
this.elements.container,
this.config.events.join(' '),
function (e) {
_this36.debug.log('event: '.concat(e.type))
}
),
(this.fullscreen = new Fullscreen(this)),
(this.isHTML5 || (this.isEmbed && !this.supported.ui)) &&
ui.build.call(this),
this.listeners.container(),
this.listeners.global(),
this.config.ads.enabled && (this.ads = new Ads(this)),
this.isHTML5 &&
this.config.autoplay &&
this.once('canplay', function () {
return silencePromise(_this36.play())
}),
(this.lastSeekTime = 0),
this.config.previewThumbnails.enabled &&
(this.previewThumbnails = new PreviewThumbnails(this)))
: this.debug.error('Setup failed: no support')
}
_createClass2(
Plyr,
[
{
key: 'isHTML5',
get: function get() {
return this.provider === providers.html5
}
},
{
key: 'isEmbed',
get: function get() {
return this.isYouTube || this.isVimeo
}
},
{
key: 'isYouTube',
get: function get() {
return this.provider === providers.youtube
}
},
{
key: 'isVimeo',
get: function get() {
return this.provider === providers.vimeo
}
},
{
key: 'isVideo',
get: function get() {
return this.type === types.video
}
},
{
key: 'isAudio',
get: function get() {
return this.type === types.audio
}
},
{
key: 'playing',
get: function get() {
return Boolean(this.ready && !this.paused && !this.ended)
}
},
{
key: 'paused',
get: function get() {
return Boolean(this.media.paused)
}
},
{
key: 'stopped',
get: function get() {
return Boolean(this.paused && 0 === this.currentTime)
}
},
{
key: 'ended',
get: function get() {
return Boolean(this.media.ended)
}
},
{
key: 'currentTime',
get: function get() {
return Number(this.media.currentTime)
},
set: function set(e) {
if (!this.duration) return
var t = is.number(e) && e > 0
;(this.media.currentTime = t
? Math.min(e, this.duration)
: 0),
this.debug.log(
'Seeking to '.concat(this.currentTime, ' seconds')
)
}
},
{
key: 'buffered',
get: function get() {
var e = this.media.buffered
return is.number(e)
? e
: e && e.length && this.duration > 0
? e.end(0) / this.duration
: 0
}
},
{
key: 'seeking',
get: function get() {
return Boolean(this.media.seeking)
}
},
{
key: 'duration',
get: function get() {
var e = parseFloat(this.config.duration),
t = (this.media || {}).duration,
i = is.number(t) && t !== 1 / 0 ? t : 0
return e || i
}
},
{
key: 'volume',
get: function get() {
return Number(this.media.volume)
},
set: function set(e) {
var _this$config2
var t = e
is.string(t) && (t = Number(t)),
is.number(t) || (t = this.storage.get('volume')),
is.number(t) ||
((_this$config2 = this.config),
(t = _this$config2.volume),
_this$config2),
t > 1 && (t = 1),
t < 0 && (t = 0),
(this.config.volume = t),
(this.media.volume = t),
!is.empty(e) && this.muted && t > 0 && (this.muted = !1)
}
},
{
key: 'muted',
get: function get() {
return Boolean(this.media.muted)
},
set: function set(e) {
var t = e
is.boolean(t) || (t = this.storage.get('muted')),
is.boolean(t) || (t = this.config.muted),
(this.config.muted = t),
(this.media.muted = t)
}
},
{
key: 'hasAudio',
get: function get() {
return (
!this.isHTML5 ||
!!this.isAudio ||
Boolean(this.media.mozHasAudio) ||
Boolean(this.media.webkitAudioDecodedByteCount) ||
Boolean(
this.media.audioTracks && this.media.audioTracks.length
)
)
}
},
{
key: 'speed',
get: function get() {
return Number(this.media.playbackRate)
},
set: function set(e) {
var _this37 = this
var t = null
is.number(e) && (t = e),
is.number(t) || (t = this.storage.get('speed')),
is.number(t) || (t = this.config.speed.selected)
var i = this.minimumSpeed,
s = this.maximumSpeed
;(t = clamp(t, i, s)),
(this.config.speed.selected = t),
setTimeout(function () {
_this37.media && (_this37.media.playbackRate = t)
}, 0)
}
},
{
key: 'minimumSpeed',
get: function get() {
return this.isYouTube
? Math.min.apply(
Math,
_toConsumableArray(this.options.speed)
)
: this.isVimeo
? 0.5
: 0.0625
}
},
{
key: 'maximumSpeed',
get: function get() {
return this.isYouTube
? Math.max.apply(
Math,
_toConsumableArray(this.options.speed)
)
: this.isVimeo
? 2
: 16
}
},
{
key: 'quality',
get: function get() {
return this.media.quality
},
set: function set(e) {
var t = this.config.quality,
i = this.options.quality
if (!i.length) return
var s = [
!is.empty(e) && Number(e),
this.storage.get('quality'),
t.selected,
t.default
].find(is.number),
n = !0
if (!i.includes(s)) {
var _e32 = closest(i, s)
this.debug.warn(
'Unsupported quality option: '
.concat(s, ', using ')
.concat(_e32, ' instead')
),
(s = _e32),
(n = !1)
}
;(t.selected = s),
(this.media.quality = s),
n && this.storage.set({ quality: s })
}
},
{
key: 'loop',
get: function get() {
return Boolean(this.media.loop)
},
set: function set(e) {
var t = is.boolean(e) ? e : this.config.loop.active
;(this.config.loop.active = t), (this.media.loop = t)
}
},
{
key: 'source',
get: function get() {
return this.media.currentSrc
},
set: function set(e) {
source.change.call(this, e)
}
},
{
key: 'download',
get: function get() {
var e = this.config.urls.download
return is.url(e) ? e : this.source
},
set: function set(e) {
is.url(e) &&
((this.config.urls.download = e),
controls.setDownloadUrl.call(this))
}
},
{
key: 'poster',
get: function get() {
return this.isVideo
? this.media.getAttribute('poster') ||
this.media.getAttribute('data-poster')
: null
},
set: function set(e) {
this.isVideo
? ui.setPoster.call(this, e, !1).catch(function () {})
: this.debug.warn('Poster can only be set for video')
}
},
{
key: 'ratio',
get: function get() {
if (!this.isVideo) return null
var e = reduceAspectRatio(getAspectRatio.call(this))
return is.array(e) ? e.join(':') : e
},
set: function set(e) {
this.isVideo
? is.string(e) && validateAspectRatio(e)
? ((this.config.ratio = reduceAspectRatio(e)),
setAspectRatio.call(this))
: this.debug.error(
'Invalid aspect ratio specified ('.concat(e, ')')
)
: this.debug.warn(
'Aspect ratio can only be set for video'
)
}
},
{
key: 'autoplay',
get: function get() {
return Boolean(this.config.autoplay)
},
set: function set(e) {
this.config.autoplay = is.boolean(e)
? e
: this.config.autoplay
}
},
{
key: 'toggleCaptions',
value: function toggleCaptions(e) {
captions.toggle.call(this, e, !1)
}
},
{
key: 'currentTrack',
get: function get() {
var _this$captions2 = this.captions,
e = _this$captions2.toggled,
t = _this$captions2.currentTrack
return e ? t : -1
},
set: function set(e) {
captions.set.call(this, e, !1), captions.setup.call(this)
}
},
{
key: 'language',
get: function get() {
return (captions.getCurrentTrack.call(this) || {}).language
},
set: function set(e) {
captions.setLanguage.call(this, e, !1)
}
},
{
key: 'pip',
get: function get() {
return support.pip
? is.empty(this.media.webkitPresentationMode)
? this.media === document.pictureInPictureElement
: this.media.webkitPresentationMode === pip.active
: null
},
set: function set(e) {
if (!support.pip) return
var t = is.boolean(e) ? e : !this.pip
is.function(this.media.webkitSetPresentationMode) &&
this.media.webkitSetPresentationMode(
t ? pip.active : pip.inactive
),
is.function(this.media.requestPictureInPicture) &&
(!this.pip && t
? this.media.requestPictureInPicture()
: this.pip && !t && document.exitPictureInPicture())
}
},
{
key: 'setPreviewThumbnails',
value: function setPreviewThumbnails(e) {
this.previewThumbnails &&
this.previewThumbnails.loaded &&
(this.previewThumbnails.destroy(),
(this.previewThumbnails = null)),
Object.assign(this.config.previewThumbnails, e),
this.config.previewThumbnails.enabled &&
(this.previewThumbnails = new PreviewThumbnails(this))
}
}
],
[
{
key: 'supported',
value: function supported(e, t, i) {
return support.check(e, t, i)
}
},
{
key: 'loadSprite',
value: function loadSprite(e, t) {
return _loadSprite(e, t)
}
},
{
key: 'setup',
value: function setup(e) {
var t =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: {}
var i = null
return (
is.string(e)
? (i = Array.from(document.querySelectorAll(e)))
: is.nodeList(e)
? (i = Array.from(e))
: is.array(e) && (i = e.filter(is.element)),
is.empty(i)
? null
: i.map(function (e) {
return new Plyr(e, t)
})
)
}
}
]
)
return Plyr
})()
Plyr.defaults = cloneDeep(defaults)
var plyr = ''
var iconVideoPlay =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIAAABSCAMAAADw8nOpAAAAAXNSR0IArs4c6QAAAapQTFRFAAAA////////////2NjY2dnZ9vb2////9vb23Nzc3d3d3t7e39/f////4+Pj4+Pj6+vr7Ozs5+fn6Ojo7u7u6enp6enp7+/v8fHx7Ozs8fHx7e3t7+/v8/Pz8PDw8/Pz9PT0+/v78PDw8PDw9PT09PT0////9fX1/Pz89fX19fX19fX18vLy/Pz89vb29vb2/Pz8+fn59/f3////9/f3+vr69/f3+vr6////+Pj4+/v7////+/v7+/v7+Pj4+fn5/////f39+/v7+/v7+/v7+fn5+/v7+/v7/f39////+/v7////+/v7/f39/Pz8/Pz8/////Pz8/////Pz8/f39/f39/Pz8/f39/v7+/Pz8/v7+/////Pz8/v7+/v7+/v7+/v7+/Pz8/v7+/////v7+/v7+/v7+/v7+/v7+/v7+/////v7+/v7+/v7+/////v7+/////v7+/v7+/////v7+/////v7+/////////////////v7+/////v7+/////////////v7+/////////////////////v7+////////////////////////lZ+FUgAAAI10Uk5TAAYSFRobGxscHR4fICMkJScpKywsLi8vNTY2OD5BQkJDQ0RGRkhISktMTlBRUlNVWFlbXF1gY29wcXJyc3R1d3p7fH+AgoSFhoaHj5CTlJWXmJifn6WoqKusr6+0tLi5ury/v8LDyMvMzdTV1tjY2trb3ODh4eLj5ejs7e3u7u/w8vT19vj5+vr7/P3+n1NMJwAAA5RJREFUWMO1metfEkEUhg86lrZZRBeVitJSsVIkKym7KFqYqJGXLiplCWUYBKllRiaQa7Lz/s998Bqyu7ML+37eeX47t3Pec4ZIR9VuX2gutpSW5fRSbC7kc1dTKaroHEtyFIgnxzorzPFs7VMbADLRCb/X5XRIksPp8vonohkAG1PtNsPAysFVIB8JtNawAtW0BiJ5YHWw0hDwaDALxAbqmIrqBmJANnhEfMq9OfDZNqaptlmOXK/g9Bvj4DNNTFdNMxzxRpFfHOFIeZiQPCnwEd0frZ2HPCQxQUlDMuZrtYkt61hsZgbUvIj1Fi1i1ybCdmZI9jA2u9SJPQpGmWGNQulRJULpZybUr0CF2aUo3cyUuhWl6NxbNtHPTKofm0X2qHbdzDrur+f6obNkm0eYlaAw5gvP/AgW7aUg7YsYKbjXXG5mJalZ5v/dd1sCQ6xEDSFxcOp9SEmlIqUU+g5E3Bz3sJLl4bn9mBzEDCuDZhDcyzNZrhpxT104Loxs4tndfDSIWbX1mdzCr8fHRJmzGNzZ7lWo5ZlhAMDna4LINqxub3o7YmrffN12A8qkQ4wZQzsREU1jQO2TH7sW4+ddIeQApomIKuR8nS4S+HBRAFmX36ggok5EmAASf5+d0GdG0ElEYwgIIYHvt3WRAYwRURKtgkjgbb0OshVJomqeqRFGIhfQPqQ1GV5Nbo2lPIwEEjd0FtNNPowbQoK/PKOBHIePQvAbQwJrD6pUR/gRojl4jSKBj5fVRngxRwtwGUdi6/nJ4iNcWKBlNJhAAis3i45owDKl4TCFRL6j2AgH0iRDMocsnvclyCUg36shTU8c99QmvgSnKWR+uOgIJ5YoZuoQ4dOV4iMuIWbuqP9+VKVx1E1cSP7qrOaFNBw28KVDI2xMwEduRA0h/2hXRVG4DYZgvDuvH4INJYqVOyKJwkA6Uw0/helMNOlqBMnCpCtoDdbuVwlbAyEDw1+cFjMwU3o269sOMX7dmM3SMIOvt5P3E0GHuWcGNSzruTiAN/VMUHuWVctYS7ceXjVjrC2w/1YUKdRbnlKq92DBFy9HwRe3WVuWWlE8W1HiW9CIsKJdYkVTx4rWkxUNMivaeFY0G61oiVrRuCWixoR4eznRKNgE7xNtgveJvwEcKXernoio8mmZHxS2nz2mZQCZyLjf62pwSJKjweX1j0cyAORpE88eljzOHHxCWlhOy3J6eUHoCekfdmynrwwsFL4AAAAASUVORK5CYII='
var ColVideo = exports(
'C',
defineComponent({
name: 'col-video',
props: {
trySee: {
// 是否试看
type: Boolean,
default: false
},
freeTitleStatus: { type: Boolean, default: true }, // 试看比例
freeRate: { type: Number, default: 100 },
setting: { type: Object, default: function _default() {} },
controls: Boolean,
height: String,
src: { type: String, default: '' },
poster: { type: String, default: '' },
styleValue: {
type: Object,
default: function _default() {
return {}
}
},
preload: { type: String, default: 'auto' },
currentTime: { type: Boolean, default: true },
playsinline: { type: Boolean, default: true },
onPlay: { type: Function, default: function _default() {} }
},
data: function data() {
return {
player: null, // playTime: 0,
loading: true, // 首次进入加载中
trySeeOver: false, // 试看是否结束
showSeeStatus: true // 是否显示试看状态
}
},
mounted: function mounted() {
var _this38 = this
this._init()
listenerMessage('setVideoPlayer', function (result) {
var content =
result === null || result === void 0
? void 0
: result.content
if (content.status === 'pause') {
_this38.player.pause()
}
})
},
computed: {
computedSeeStatus: function computedSeeStatus() {
console.log(
this.showSeeStatus,
this.trySee,
this.trySeeOver,
'this.showSeeStatus, this.trySee'
)
return this.showSeeStatus && this.trySee
},
playTime: function playTime() {
// 允许播放时间
var player = this.player
var playTime = (player.duration * this.freeRate) / 100
return playTime || 0
}
},
methods: {
_init: function _init() {
var _this39 = this // controls: [
// 'play-large' , // 中间的大播放按钮
// 'restart' , // 重新开始播放
// 'rewind' , // 按寻道时间倒带(默认 10 秒)
// 'play' , // 播放/暂停播放
// 'fast-forward' , // 快进查找时间(默认 10 秒)
// 'progress' , // 播放和缓冲的进度条和滑动条
// 'current-time' , // 播放的当前时间
// ' duration' , // 媒体的完整持续时间
// 'mute' , // 切换静音
// 'volume', // 音量控制
// 'captions' , // 切换字幕
// 'settings' , // 设置菜单
// 'pip' , // 画中画(当前仅 Safari)
// 'airplay' , // Airplay(当前仅 Safari)
// 'download ' , // 显示一个下载按钮,其中包含指向当前源或您在选项中指定的自定义 URL 的链接
// 'fullscreen' , // 切换全屏
// ] ;
var controls = [
'play-large',
'play',
'progress',
'captions',
'fullscreen'
]
if (this.currentTime) {
controls.push('current-time')
}
var params = _objectSpread(
_objectSpread({ controls: controls }, this.setting),
{},
{ invertTime: false }
)
if (browser$1().iPhone) {
params.fullscreen = {
enabled: true,
fallback: 'force',
iosNative: true
}
}
this.player = new Plyr(this.$refs.video, params) // fullscreen: {
// enabled: true,
// fallback: 'force',
// iosNative: true
// }
this.player.elements.container
? (this.player.elements.container.style.height =
this.height || '210px')
: null
if (this.preload === 'none') {
this.loading = false
}
this.player.on('loadedmetadata', function () {
_this39.loading = false
console.log('loading 1111')
if (_this39.trySee) {
_this39.domPlayVisibility()
} else {
_this39.domPlayVisibility(false)
} // 监听播放事件
var _this = _this39
_this39.player.on('timeupdate', function () {
var players = _this.player
if (
players.currentTime >= _this39.playTime &&
_this.trySee
) {
players.pause()
_this.trySeeOver = true
_this.showSeeStatus = true
_this.domPlayVisibility() // 试看结束后隐藏播放按钮
}
})
})
this.player.on('play', function () {
postMessage(
{ api: 'getDeviceStatus', content: { type: 'video' } },
function (res) {
// 判断是否在录屏中, 如果在录屏则不允许播放
if (res.content.status == '1') {
Toast('为了保证数据安全,请不要录屏')
_this39.player.pause()
}
}
)
_this39.onPlay && _this39.onPlay()
})
this.player.on('enterfullscreen', function () {
console.log('fullscreen')
var i = document.createElement('i')
i.id = 'fullscreen-back'
i.className = 'van-icon van-icon-arrow-left video-back'
i.addEventListener('click', function () {
_this39.player.fullscreen.exit()
})
console.log(document.getElementsByClassName('plyr'))
document.getElementsByClassName('plyr')[0].appendChild(i)
})
this.player.on('exitfullscreen', function () {
console.log('exitfullscreen')
var i = document.getElementById('fullscreen-back')
i && i.remove()
})
}, // 操作功能
domPlayVisibility: function domPlayVisibility() {
var hide =
arguments.length > 0 && arguments[0] !== undefined
? arguments[0]
: true
var controls = document.querySelector('.plyr__controls')
var controls2 = document.querySelector(
'.plyr__control--overlaid'
)
if (hide) {
controls === null || controls === void 0
? void 0
: controls.setAttribute('style', 'display:none')
controls2 === null || controls2 === void 0
? void 0
: controls2.setAttribute('style', 'display:none')
} else {
controls === null || controls === void 0
? void 0
: controls.removeAttribute('style')
setTimeout(function () {
controls2 === null || controls2 === void 0
? void 0
: controls2.removeAttribute('style')
}, 200)
}
},
onClickPlay: function onClickPlay() {
this.player.play()
this.domPlayVisibility(false)
this.showSeeStatus = false
},
onBuy: function onBuy() {
this.$router.back()
},
onReplay: function onReplay() {
this.player.restart()
this.player.play()
this.domPlayVisibility(false)
this.trySeeOver = false
this.showSeeStatus = false
}
},
unmounted: function unmounted() {
var _this$player
;(_this$player = this.player) === null ||
_this$player === void 0
? void 0
: _this$player.destroy()
},
render: function render() {
var _this40 = this
return createVNode(
'div',
{ class: styles['video-container'] },
[
createVNode(
'video',
{
ref: 'video',
class: styles['video'],
src: this.src,
playsinline: this.playsinline,
poster: this.poster,
preload: this.preload,
style: _objectSpread({}, this.styleValue)
},
null
),
this.loading &&
createVNode(
'div',
{
class: styles.loadingVideo,
style: { height: this.height || '210px' }
},
[
createVNode(
Loading,
{
size: 36,
color: '#01C1B5',
vertical: true,
style: {
height: '100%',
justifyContent: 'center'
}
},
{
default: function _default() {
return [
createTextVNode('\u52A0\u8F7D\u4E2D...')
]
}
}
)
]
),
this.trySee &&
this.computedSeeStatus &&
!this.loading &&
createVNode(
'div',
{
class: [styles.loadingVideo, styles.playOver],
style: { height: this.height || '210px' }
},
[
!this.trySeeOver
? createVNode(Fragment, null, [
createVNode(
Icon,
{
name: iconVideoPlay,
size: 50,
onClick: this.onClickPlay
},
null
),
createVNode('p', { class: styles.freeTxt }, [
createTextVNode('\u514D\u8D39'),
this.freeTitleStatus ? '试看' : '领取'
])
])
: createVNode(Fragment, null, [
createVNode('p', { class: styles.tips }, [
this.freeTitleStatus
? '免费试看结束,购买完整课程后继续学习'
: '试看结束,领取课程后继续学习'
]),
createVNode(
Button,
{
class: styles.btn,
type: 'primary',
round: true,
size: 'small',
onClick: this.onBuy
},
{
default: function _default() {
return [
state.platformType === 'STUDENT'
? _this40.freeTitleStatus
? '立即购买'
: '免费领取'
: '返回'
]
}
}
),
createVNode(
'div',
{
class: styles.replay,
onClick: this.onReplay
},
[
createVNode(
Icon,
{
name: 'replay',
style: { marginRight: '5px' },
size: 16
},
null
),
createTextVNode('\u91CD\u64AD')
]
)
])
]
)
]
)
}
})
)
}
}
}
)
})()