diff --git a/css/324.6b0c51f2.css b/css/855.94b8cff2.css similarity index 77% rename from css/324.6b0c51f2.css rename to css/855.94b8cff2.css index b303507..ce6a927 100644 --- a/css/324.6b0c51f2.css +++ b/css/855.94b8cff2.css @@ -1 +1 @@ -@charset "UTF-8";@keyframes plyr-progress{to{background-position:25px 0;background-position:var(--plyr-progress-loading-size,25px) 0}}@keyframes plyr-popup{0%{opacity:.5;transform:translateY(10px)}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:200px;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:2px;border-radius:var(--plyr-badge-border-radius,2px);color:#fff;color:var(--plyr-badge-text-color,#fff);font-size:9px;font-size:var(--plyr-font-size-badge,9px);line-height:1;padding:3px 4px}.plyr--full-ui ::-webkit-media-text-track-container{display:none}.plyr__captions{animation:plyr-fade-in .3s ease;bottom:0;display:none;font-size:13px;font-size:var(--plyr-font-size-small,13px);left:0;padding:10px;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:15px;font-size:var(--plyr-font-size-base,15px);padding:20px;padding:calc(var(--plyr-control-spacing, 10px)*2)}}@media (min-width:768px){.plyr__captions{font-size:18px;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(-40px);transform:translateY(calc(var(--plyr-control-spacing, 10px)*-4))}.plyr__caption{background:#000c;background:var(--plyr-captions-background,#000c);border-radius:2px;-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:#0000;border:0;border-radius:4px;border-radius:var(--plyr-control-radius,4px);color:inherit;cursor:pointer;flex-shrink:0;overflow:visible;padding:7px;padding:calc(var(--plyr-control-spacing, 10px)*.7);position:relative;transition:all .1s ease-in-out}.plyr__control svg{display:block;fill:currentColor;height:18px;height:var(--plyr-control-icon-size,18px);pointer-events:none;width:18px;width:var(--plyr-control-icon-size,18px)}.plyr__control:focus{outline:0}.plyr__control:focus-visible{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}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:2.5px;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:2.5px;padding-left:calc(var(--plyr-control-spacing, 10px)/4)}.plyr__controls .plyr__controls__item.plyr__time{padding:0 5px;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:#ffffffe6;background:var(--plyr-menu-background,#ffffffe6);border-radius:8px;border-radius:var(--plyr-menu-radius,8px);bottom:100%;box-shadow:0 1px 2px #00000026;box-shadow:var(--plyr-menu-shadow,0 1px 2px #00000026);color:#4a5464;color:var(--plyr-menu-color,#4a5464);font-size:15px;font-size:var(--plyr-font-size-base,15px);margin-bottom:10px;position:absolute;right:-3px;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:4px solid #0000;border-top-color:#ffffffe6;border:var(--plyr-menu-arrow-size,4px) solid #0000;border-top-color:var(--plyr-menu-background,#ffffffe6);content:"";height:0;position:absolute;right:14px;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:7px;padding:calc(var(--plyr-control-spacing, 10px)*.7)}.plyr__menu__container [role=menuitem],.plyr__menu__container [role=menuitemradio]{margin-top:2px}.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:13px;font-size:var(--plyr-font-size-menu,var(--plyr-font-size-small,13px));padding:4.66667px 10.5px;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:4px solid #0000;border:var(--plyr-menu-item-arrow-size,4px) solid #0000;content:"";position:absolute;top:50%;transform:translateY(-50%)}.plyr__menu__container .plyr__control--forward{padding-right:28px;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:6.5px;right:calc(var(--plyr-control-spacing, 10px)*.7*1.5 - var(--plyr-menu-item-arrow-size, 4px))}.plyr__menu__container .plyr__control--forward:focus-visible:after,.plyr__menu__container .plyr__control--forward:hover:after{border-left-color:initial}.plyr__menu__container .plyr__control--back{font-weight:400;font-weight:var(--plyr-font-weight-regular,400);margin:7px;margin:calc(var(--plyr-control-spacing, 10px)*.7);margin-bottom:3.5px;margin-bottom:calc(var(--plyr-control-spacing, 10px)*.7/2);padding-left:28px;padding-left:calc(var(--plyr-control-spacing, 10px)*.7*4);position:relative;width:calc(100% - 14px);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:6.5px;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 1px 0 #fff;box-shadow:0 1px 0 var(--plyr-menu-back-border-shadow-color,#fff);content:"";height:1px;left:0;margin-top:3.5px;margin-top:calc(var(--plyr-control-spacing, 10px)*.7/2);overflow:hidden;position:absolute;right:0;top:100%}.plyr__menu__container .plyr__control--back:focus-visible:after,.plyr__menu__container .plyr__control--back:hover:after{border-right-color:initial}.plyr__menu__container .plyr__control[role=menuitemradio]{padding-left:7px;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:#0000001a;content:"";display:block;flex-shrink:0;height:16px;margin-right:10px;margin-right:var(--plyr-control-spacing,10px);transition:all .3s ease;width:16px}.plyr__menu__container .plyr__control[role=menuitemradio]:after{background:#fff;border:0;height:6px;left:12px;opacity:0;top:50%;transform:translateY(-50%) scale(0);transition:transform .3s ease,opacity .3s ease;width:6px}.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]:focus-visible:before,.plyr__menu__container .plyr__control[role=menuitemradio]:hover:before{background:#23282f1a}.plyr__menu__container .plyr__menu__value{align-items:center;display:flex;margin-left:auto;margin-right:-5px;margin-right:calc(var(--plyr-control-spacing, 10px)*.7*-1 + 2px);overflow:hidden;padding-left:24.5px;padding-left:calc(var(--plyr-control-spacing, 10px)*.7*3.5);pointer-events:none}.plyr--full-ui input[type=range]{appearance:none;background:#0000;border:0;border-radius:26px;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:19px;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:#0000;background-image:linear-gradient(90deg,currentColor,#0000 0);background-image:linear-gradient(to right,currentColor var(--value,0),#0000 var(--value,0));border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;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{appearance:none;background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33);height:13px;height:var(--plyr-range-thumb-height,13px);margin-top:-4px;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:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-moz-range-track{background:#0000;border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;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 1px 1px #23282f26,0 0 0 1px #23282f33;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33);height:13px;height:var(--plyr-range-thumb-height,13px);position:relative;-moz-transition:all .2s ease;transition:all .2s ease;width:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-moz-range-progress{background:currentColor;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px)}.plyr--full-ui input[type=range]::-ms-track{color:#0000}.plyr--full-ui input[type=range]::-ms-fill-upper,.plyr--full-ui input[type=range]::-ms-track{background:#0000;border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;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:#0000;background:currentColor;border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;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 1px 1px #23282f26,0 0 0 1px #23282f33;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33);height:13px;height:var(--plyr-range-thumb-height,13px);margin-top:0;position:relative;-ms-transition:all .2s ease;transition:all .2s ease;width:13px;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]:focus-visible::-webkit-slider-runnable-track{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}.plyr--full-ui input[type=range]:focus-visible::-moz-range-track{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}.plyr--full-ui input[type=range]:focus-visible::-ms-track{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}.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:13px;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px))}.plyr__time+.plyr__time:before{content:"⁄";margin-right:10px;margin-right:var(--plyr-control-spacing,10px)}@media (max-width:767px){.plyr__time+.plyr__time{display:none}}.plyr__tooltip{background:#fff;background:var(--plyr-tooltip-background,#fff);border-radius:5px;border-radius:var(--plyr-tooltip-radius,5px);bottom:100%;box-shadow:0 1px 2px #00000026;box-shadow:var(--plyr-tooltip-shadow,0 1px 2px #00000026);color:#4a5464;color:var(--plyr-tooltip-color,#4a5464);font-size:13px;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:10px;margin-bottom:calc(var(--plyr-control-spacing, 10px)/2*2);opacity:0;padding:5px 7.5px;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%,10px) 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:4px solid #0000;border-left:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-right:4px solid #0000;border-right:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-top:4px solid #fff;border-top:var(--plyr-tooltip-arrow-size,4px) solid var(--plyr-tooltip-background,#fff);bottom:-4px;bottom:calc(var(--plyr-tooltip-arrow-size, 4px)*-1);content:"";height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr .plyr__control:focus-visible .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(10px) 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:16px;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(10px) scale(.8);transform-origin:100% 100%}.plyr__controls>.plyr__control:last-child .plyr__tooltip:before{left:auto;right:16px;right:calc(var(--plyr-control-icon-size, 18px)/2 + var(--plyr-control-spacing, 10px)*.7);transform:translateX(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:focus-visible .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control:hover .plyr__tooltip,.plyr__controls>.plyr__control:first-child:focus-visible .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:focus-visible .plyr__tooltip,.plyr__controls>.plyr__control:last-child:hover .plyr__tooltip{transform:translate(0) scale(1)}.plyr__progress{left:6.5px;left:calc(var(--plyr-range-thumb-height, 13px)*.5);margin-right:13px;margin-right:var(--plyr-range-thumb-height,13px);position:relative}.plyr__progress input[type=range],.plyr__progress__buffer{margin-left:-6.5px;margin-left:calc(var(--plyr-range-thumb-height, 13px)*-.5);margin-right:-6.5px;margin-right:calc(var(--plyr-range-thumb-height, 13px)*-.5);width:calc(100% + 13px);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:120px;overflow-wrap:break-word}.plyr__progress__buffer{-webkit-appearance:none;background:#0000;border:0;border-radius:100px;height:5px;height:var(--plyr-range-track-height,5px);left:0;margin-top:-2.5px;margin-top:calc(var(--plyr-range-track-height, 5px)/2*-1);padding:0;position:absolute;top:50%}.plyr__progress__buffer::-webkit-progress-bar{background:#0000}.plyr__progress__buffer::-webkit-progress-value{background:currentColor;border-radius:100px;min-width:5px;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:100px;min-width:5px;min-width:var(--plyr-range-track-height,5px);-moz-transition:width .2s ease;transition:width .2s ease}.plyr__progress__buffer::-ms-fill{border-radius:100px;-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,#23282f99 25%,#0000 0,#0000 50%,#23282f99 0,#23282f99 75%,#0000 0,#0000);background-image:linear-gradient(-45deg,var(--plyr-progress-loading-background,#23282f99) 25%,#0000 25%,#0000 50%,var(--plyr-progress-loading-background,#23282f99) 50%,var(--plyr-progress-loading-background,#23282f99) 75%,#0000 75%,#0000);background-repeat:repeat-x;background-size:25px 25px;background-size:var(--plyr-progress-loading-size,25px) var(--plyr-progress-loading-size,25px);color:#0000}.plyr--video.plyr--loading .plyr__progress__buffer{background-color:#ffffff40;background-color:var(--plyr-video-progress-buffered-background,#ffffff40)}.plyr--audio.plyr--loading .plyr__progress__buffer{background-color:#c1c8d199;background-color:var(--plyr-audio-progress-buffered-background,#c1c8d199)}.plyr__progress__marker{background-color:#fff;background-color:var(--plyr-progress-marker-background,#fff);border-radius:1px;height:5px;height:var(--plyr-range-track-height,5px);position:absolute;top:50%;transform:translate(-50%,-50%);width:3px;width:var(--plyr-progress-marker-width,3px);z-index:3}.plyr__volume{align-items:center;display:flex;position:relative}.plyr__volume input[type=range]{margin-left:5px;margin-left:calc(var(--plyr-control-spacing, 10px)/2);margin-right:5px;margin-right:calc(var(--plyr-control-spacing, 10px)/2);max-width:90px;min-width:60px;position:relative;z-index:2}.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:10px;padding:var(--plyr-control-spacing,10px)}.plyr--audio .plyr__control:focus-visible,.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:#c1c8d199;background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,#c1c8d199))}.plyr--full-ui.plyr--audio input[type=range]::-moz-range-track{background-color:#c1c8d199;background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,#c1c8d199))}.plyr--full-ui.plyr--audio input[type=range]::-ms-track{background-color:#c1c8d199;background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,#c1c8d199))}.plyr--full-ui.plyr--audio input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #23282f1a;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#23282f1a)}.plyr--full-ui.plyr--audio input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #23282f1a;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#23282f1a)}.plyr--full-ui.plyr--audio input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #23282f1a;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#23282f1a)}.plyr--audio .plyr__progress__buffer{color:#c1c8d199;color:var(--plyr-audio-progress-buffered-background,#c1c8d199)}.plyr--video{overflow:hidden}.plyr--video.plyr--menu-open{overflow:visible}.plyr__video-wrapper{background:#000;background:var(--plyr-video-background,var(--plyr-video-background,#000));border-radius:inherit;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(#0000,#000000bf);background:var(--plyr-video-controls-background,linear-gradient(#0000,#000000bf));border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;bottom:0;color:#fff;color:var(--plyr-video-control-color,#fff);left:0;padding:5px;padding:calc(var(--plyr-control-spacing, 10px)/2);padding-top:20px;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:10px;padding:var(--plyr-control-spacing,10px);padding-top:35px;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:focus-visible,.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:15px;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:2px;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:#ffffff40;background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,#ffffff40))}.plyr--full-ui.plyr--video input[type=range]::-moz-range-track{background-color:#ffffff40;background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,#ffffff40))}.plyr--full-ui.plyr--video input[type=range]::-ms-track{background-color:#ffffff40;background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,#ffffff40))}.plyr--full-ui.plyr--video input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #ffffff80;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#ffffff80)}.plyr--full-ui.plyr--video input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #ffffff80;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#ffffff80)}.plyr--full-ui.plyr--video input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #ffffff80;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#ffffff80)}.plyr--video .plyr__progress__buffer{color:#ffffff40;color:var(--plyr-video-progress-buffered-background,#ffffff40)}.plyr:fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:fullscreen video{height:100%}.plyr:fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:fullscreen .plyr__captions{font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}}.plyr--fullscreen-fallback{background:#000;border-radius:0!important;height:100%;inset:0;margin:0;position:fixed;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:21px;font-size:var(--plyr-font-size-xlarge,21px)}}.plyr__ads{border-radius:inherit;cursor:pointer;inset:0;overflow:hidden;position:absolute;z-index:-1}.plyr__ads>div,.plyr__ads>div iframe{height:100%;position:absolute;width:100%}.plyr__ads:after{background:#23282f;border-radius:2px;bottom:10px;bottom:var(--plyr-control-spacing,10px);color:#fff;content:attr(data-badge-text);font-size:11px;padding:2px 6px;pointer-events:none;position:absolute;right:10px;right:var(--plyr-control-spacing,10px);z-index:3}.plyr__ads:empty:after{display:none}.plyr__cues{background:currentColor;display:block;height:5px;height:var(--plyr-range-track-height,5px);left:0;opacity:.8;position:absolute;top:50%;transform:translateY(-50%);width:3px;z-index:3}.plyr__preview-thumb{background-color:#fff;background-color:var(--plyr-tooltip-background,#fff);border-radius:8px;border-radius:var(--plyr-menu-radius,8px);bottom:100%;box-shadow:0 1px 2px #00000026;box-shadow:var(--plyr-tooltip-shadow,0 1px 2px #00000026);margin-bottom:10px;margin-bottom:calc(var(--plyr-control-spacing, 10px)/2*2);opacity:0;padding:3px;pointer-events:none;position:absolute;transform:translateY(10px) 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:4px solid #0000;border-left:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-right:4px solid #0000;border-right:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-top:4px solid #fff;border-top:var(--plyr-tooltip-arrow-size,4px) solid var(--plyr-tooltip-background,#fff);bottom:-4px;bottom:calc(var(--plyr-tooltip-arrow-size, 4px)*-1);content:"";height:0;left:calc(50% + var(--preview-arrow-offset));position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr__preview-thumb__image-container{background:#c1c8d1;border-radius:7px;border-radius:calc(var(--plyr-menu-radius, 8px) - 1px);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 1px #00000026;content:"";pointer-events:none}.plyr__preview-thumb__image-container img{max-height:none;max-width:none}.plyr__preview-thumb__time-container{background:linear-gradient(#0000,#000000bf);background:var(--plyr-video-controls-background,linear-gradient(#0000,#000000bf));border-bottom-left-radius:7px;border-bottom-left-radius:calc(var(--plyr-menu-radius, 8px) - 1px);border-bottom-right-radius:7px;border-bottom-right-radius:calc(var(--plyr-menu-radius, 8px) - 1px);bottom:0;left:0;line-height:1.1;padding:20px 6px 6px;position:absolute;right:0;z-index:3}.plyr__preview-thumb__time-container span{color:#fff;font-size:13px;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px))}.plyr__preview-scrubbing{filter:blur(1px);height:100%;inset:0;margin:auto;opacity:0;overflow:hidden;pointer-events:none;position:absolute;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(1px,1px,1px,1px);border:0!important;height:1px!important;overflow:hidden;padding:0!important;position:absolute!important;width:1px!important}.plyr [hidden]{display:none!important}.tm-viewport[data-v-6479d338]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tm-media[data-v-6479d338]{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-drag:none}.tm-video-wrap[data-v-6479d338]{width:100%;max-width:800px;touch-action:auto}.plyr-video[data-v-6479d338]{width:100%}.tm-audio-wrap[data-v-6479d338]{display:flex;flex-direction:column;align-items:center;gap:20px;padding:24px;width:100%;max-width:400px;touch-action:auto}.plyr-audio[data-v-6479d338]{width:100%}.audio-cover[data-v-6479d338]{width:200px;height:200px;border-radius:12px;overflow:hidden;background:hsla(0,0%,100%,.1);display:flex;align-items:center;justify-content:center;box-shadow:0 8px 32px rgba(0,0,0,.3)}.cover-img[data-v-6479d338]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.audio-icon-large[data-v-6479d338]{width:80px;height:80px;color:hsla(0,0%,100%,.4)}.audio-info[data-v-6479d338]{text-align:center;width:100%}.audio-title[data-v-6479d338]{font-size:18px;font-weight:600;color:#fff;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-artist[data-v-6479d338]{font-size:14px;color:hsla(0,0%,100%,.6)}.audio-placeholder[data-v-6479d338],.video-placeholder[data-v-6479d338]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:hsla(0,0%,100%,.4)}.video-placeholder svg[data-v-6479d338]{width:80px;height:80px}.audio-placeholder .audio-name[data-v-6479d338]{font-size:14px;color:hsla(0,0%,100%,.6);text-align:center;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plyr{--plyr-color-main:#3b82f6}.plyr--audio .plyr__controls{background:hsla(0,0%,100%,.1);border-radius:8px}.plyr-custom-menu{position:relative;display:flex;align-items:center}.plyr-menu-btn{background:none;border:none;cursor:pointer;padding:8px;color:inherit;display:flex;align-items:center;justify-content:center}.plyr-menu-btn:hover{opacity:.8}.plyr-menu-dropdown{position:absolute;bottom:100%;right:0;background:#fff;border-radius:8px;box-shadow:0 4px 20px rgba(0,0,0,.3);min-width:160px;display:none;z-index:100;overflow:hidden;margin-bottom:8px}.plyr-menu-dropdown.show{display:block}.plyr-menu-item{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;color:#333;font-size:14px;transition:background .15s}.plyr-menu-item:hover{background:#f5f5f5}.plyr-menu-item svg{flex-shrink:0}.plyr-menu-item .arrow{margin-left:auto}.plyr-playmode-submenu,.plyr-speed-submenu{display:none;border-top:1px solid #eee}.plyr-playmode-submenu.show,.plyr-speed-submenu.show{display:block}.plyr-playmode-option,.plyr-speed-option{padding-left:32px;position:relative}.plyr-playmode-option.active,.plyr-speed-option.active{color:#3b82f6;font-weight:600}.plyr-playmode-option.active:before,.plyr-speed-option.active:before{content:"✓";position:absolute;left:12px}@media (max-width:768px),(pointer:coarse){.plyr--audio .plyr__volume{position:relative}.plyr--audio .plyr__volume input[type=range]{position:absolute;bottom:100%;left:50%;transform:translateX(-50%) rotate(-90deg);transform-origin:center center;width:80px;margin-bottom:40px;display:none}.plyr--audio .plyr__volume:focus-within input[type=range],.plyr--audio .plyr__volume:hover input[type=range]{display:block}.plyr--audio .plyr__volume:before{content:"";position:absolute;bottom:100%;left:50%;transform:translateX(-50%);width:36px;height:100px;background:rgba(0,0,0,.8);border-radius:8px;display:none;margin-bottom:8px}.plyr--audio .plyr__volume:focus-within:before,.plyr--audio .plyr__volume:hover:before{display:block}}#themeToggle[data-v-466b2b5c]{border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem}@media (max-width:768px){#themeToggle[data-v-466b2b5c]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-466b2b5c]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-466b2b5c]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-466b2b5c]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-466b2b5c]{transform:rotate(40deg)}.theme_toggle_g[data-v-466b2b5c]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-466b2b5c],.icon-fade-leave-active[data-v-466b2b5c]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-466b2b5c],.icon-fade-leave-from[data-v-466b2b5c]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-466b2b5c]{display:inline-block}.public-browse[data-v-3a9fa997]{min-height:100vh;background:#0a0a0a;color:#fff}.header[data-v-3a9fa997]{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:16px 24px;background:hsla(0,0%,6%,.95);backdrop-filter:blur(10px);border-bottom:1px solid #1a1a1a;position:relative}.header-left[data-v-3a9fa997]{flex:0 0 auto;z-index:1;display:flex;align-items:center;gap:8px}.theme-toggle-btn[data-v-3a9fa997]{background:transparent;border-radius:8px;transition:background .2s}.theme-toggle-btn[data-v-3a9fa997]:hover{background:hsla(0,0%,100%,.1)}.header-right[data-v-3a9fa997]{flex:0 0 auto;z-index:1}.header-center[data-v-3a9fa997]{position:absolute;left:50%;transform:translateX(-50%);z-index:0}.logo[data-v-3a9fa997]{font-size:20px;font-weight:600;color:#fff;cursor:pointer;transition:opacity .2s}.logo[data-v-3a9fa997]:hover{opacity:.8}.breadcrumb[data-v-3a9fa997]{display:flex;align-items:center;gap:4px;font-size:14px}.breadcrumb-item[data-v-3a9fa997]{padding:6px 12px;border-radius:6px;cursor:pointer;transition:background .2s;color:#ccc}.breadcrumb-item[data-v-3a9fa997]:hover{background:#252525;color:#fff}.breadcrumb-sep[data-v-3a9fa997]{color:#444}.file-count[data-v-3a9fa997]{color:#666;font-size:14px}.error-container[data-v-3a9fa997],.loading-container[data-v-3a9fa997]{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;color:#666}.error-credit[data-v-3a9fa997]{margin-top:40px;text-align:center;color:hsla(0,0%,100%,.4);font-size:14px}.error-credit p[data-v-3a9fa997]{margin-bottom:12px}.error-credit-links[data-v-3a9fa997]{display:flex;gap:24px;justify-content:center}.error-credit-links a[data-v-3a9fa997]{display:flex;align-items:center;gap:6px;color:hsla(0,0%,100%,.5);text-decoration:none;transition:color .2s}.error-credit-links a[data-v-3a9fa997]:hover{color:#3b82f6}.loading-spinner[data-v-3a9fa997]{width:48px;height:48px;border:3px solid #222;border-top-color:#3b82f6;border-radius:50%;animation:spin-3a9fa997 1s linear infinite}.loading-spinner-small[data-v-3a9fa997]{width:24px;height:24px;border:2px solid #222;border-top-color:#3b82f6;border-radius:50%;animation:spin-3a9fa997 1s linear infinite}@keyframes spin-3a9fa997{to{transform:rotate(1turn)}}.retry-btn[data-v-3a9fa997]{margin-top:20px;padding:10px 32px;background:#3b82f6;border:none;border-radius:8px;color:#fff;font-size:14px;cursor:pointer;transition:background .2s}.retry-btn[data-v-3a9fa997]:hover{background:#2563eb}.gallery-container[data-v-3a9fa997]{padding:8px}@media (min-width:1200px){.gallery-container[data-v-3a9fa997]{max-width:1400px;margin:0 auto;padding:24px}}.folders-section[data-v-3a9fa997]{margin-bottom:24px}.folders-grid[data-v-3a9fa997]{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}.folder-card[data-v-3a9fa997]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px;background:#141414;border-radius:12px;border:1px solid #1a1a1a;cursor:pointer;transition:all .2s}.folder-card[data-v-3a9fa997]:hover{background:#1a1a1a;border-color:#333;transform:translateY(-2px)}.folder-icon[data-v-3a9fa997]{width:48px;height:48px;margin-bottom:12px;color:#555}.folder-icon svg[data-v-3a9fa997]{width:100%;height:100%}.folder-name[data-v-3a9fa997]{font-size:14px;color:#999;text-align:center;word-break:break-all}.waterfall[data-v-3a9fa997]{display:flex;gap:16px}.waterfall-column[data-v-3a9fa997]{flex:1;display:flex;flex-direction:column;gap:16px}.waterfall-item[data-v-3a9fa997]{cursor:pointer}.image-wrapper[data-v-3a9fa997]{position:relative;border-radius:12px;overflow:hidden;background:#141414;border:1px solid #1a1a1a;min-height:180px}.image-wrapper[data-v-3a9fa997]:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#141414 25%,#1a1a1a 50%,#141414 75%);background-size:200% 100%;animation:shimmer-3a9fa997 1.5s infinite;z-index:1;pointer-events:none}.image-wrapper.loaded[data-v-3a9fa997]:before{display:none}.image-wrapper.loaded[data-v-3a9fa997]{min-height:auto}.image-wrapper img[data-v-3a9fa997],.image-wrapper video[data-v-3a9fa997]{width:100%;display:block;position:relative;z-index:2}@keyframes shimmer-3a9fa997{0%{background-position:200% 0}to{background-position:-200% 0}}.image-wrapper[data-v-3a9fa997]:hover{border-color:#333}.overlay[data-v-3a9fa997]{position:absolute;inset:0;background:linear-gradient(transparent 50%,rgba(0,0,0,.85));opacity:0;transition:opacity .2s;display:flex;align-items:flex-end;justify-content:flex-end;padding:12px;z-index:10}.image-wrapper:hover .overlay[data-v-3a9fa997]{opacity:1}.file-placeholder[data-v-3a9fa997]{width:100%;height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#141414;color:#555;gap:12px;padding:16px;box-sizing:border-box}.file-placeholder svg[data-v-3a9fa997]{width:48px;height:48px}.file-name[data-v-3a9fa997]{font-size:12px;color:hsla(0,0%,100%,.7);text-align:center;word-break:break-all;max-width:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.audio-placeholder[data-v-3a9fa997]{width:100%;height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a1a2e,#16213e);gap:12px;padding:16px;box-sizing:border-box}.audio-icon[data-v-3a9fa997]{width:48px;height:48px;color:hsla(0,0%,100%,.6)}.audio-name[data-v-3a9fa997]{font-size:12px;color:hsla(0,0%,100%,.7);text-align:center;word-break:break-all;max-width:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.overlay-actions[data-v-3a9fa997]{display:flex;gap:8px}.action-btn[data-v-3a9fa997]{width:32px;height:32px;border:none;border-radius:50%;background:hsla(0,0%,100%,.08);backdrop-filter:blur(8px);cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;color:hsla(0,0%,100%,.6)}.action-btn svg[data-v-3a9fa997]{width:16px;height:16px}.action-btn[data-v-3a9fa997]:hover{background:hsla(0,0%,100%,.2);color:#fff;transform:scale(1.1)}.load-trigger[data-v-3a9fa997]{display:flex;justify-content:center;align-items:center;padding:48px;min-height:100px}.loading-more[data-v-3a9fa997]{display:flex;align-items:center;gap:12px;color:#666;font-size:14px}.no-more[data-v-3a9fa997]{color:#444;font-size:14px}.credit-link[data-v-3a9fa997]{display:block;margin-top:8px;color:#555;font-size:12px;text-decoration:none;transition:color .2s;text-align:center}.credit-link[data-v-3a9fa997]:hover{color:#888}.preview-modal[data-v-3a9fa997]{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.97);display:flex;align-items:center;justify-content:center;overflow:hidden}.preview-content[data-v-3a9fa997]{padding:60px 80px;box-sizing:border-box;overflow:hidden}.preview-content-mobile[data-v-3a9fa997],.preview-content[data-v-3a9fa997]{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.preview-content-mobile[data-v-3a9fa997]{flex-direction:column;padding:0;position:absolute;top:0;left:0}.mobile-video-native[data-v-3a9fa997]{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;background:#000}.mobile-audio-wrap[data-v-3a9fa997]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;box-sizing:border-box}.mobile-audio-wrap .swipe-hint[data-v-3a9fa997]{margin-top:20px}.swipe-hint[data-v-3a9fa997]{font-size:12px;color:hsla(0,0%,100%,.4)}.other-file-preview[data-v-3a9fa997]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:hsla(0,0%,100%,.6);gap:16px}.other-file-preview svg[data-v-3a9fa997]{width:64px;height:64px}.other-file-preview .file-name[data-v-3a9fa997]{font-size:14px;color:hsla(0,0%,100%,.7);text-align:center;padding:0 20px;word-break:break-all}.swipe-viewport[data-v-3a9fa997]{width:100%;height:100%;overflow:hidden;position:relative}.swipe-track[data-v-3a9fa997]{width:300%;height:100%;display:flex;will-change:transform}.swipe-slide[data-v-3a9fa997]{width:33.333%;flex-shrink:0;height:100%;display:flex;align-items:center;justify-content:center}.preview-image[data-v-3a9fa997],.preview-video[data-v-3a9fa997]{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.preview-close[data-v-3a9fa997]{position:fixed;top:20px;right:20px;background:hsla(0,0%,100%,.1);border:none;color:#fff;cursor:pointer;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:1010}.preview-close[data-v-3a9fa997]:hover{background:hsla(0,0%,100%,.2)}.preview-close svg[data-v-3a9fa997]{width:28px;height:28px}.page-indicator[data-v-3a9fa997]{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.6);color:hsla(0,0%,100%,.8);padding:8px 16px;border-radius:20px;font-size:14px;z-index:1010}.preview-next[data-v-3a9fa997],.preview-prev[data-v-3a9fa997]{position:fixed;top:50%;transform:translateY(-50%);background:hsla(0,0%,100%,.1);border:none;color:#fff;padding:16px;cursor:pointer;border-radius:50%;width:56px;height:56px;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:1010}.preview-next[data-v-3a9fa997]:hover,.preview-prev[data-v-3a9fa997]:hover{background:hsla(0,0%,100%,.2)}.preview-next svg[data-v-3a9fa997],.preview-prev svg[data-v-3a9fa997]{width:32px;height:32px}.preview-prev[data-v-3a9fa997]{left:20px}.preview-next[data-v-3a9fa997]{right:20px}.rotate-btn[data-v-3a9fa997]{position:fixed;bottom:30px;right:20px;background:hsla(0,0%,100%,.1);border:none;color:#fff;cursor:pointer;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:1010}.rotate-btn[data-v-3a9fa997]:hover{background:hsla(0,0%,100%,.2)}.rotate-btn svg[data-v-3a9fa997]{width:24px;height:24px}@media (max-width:768px){.page-indicator[data-v-3a9fa997]{bottom:40px}}@media (max-width:1199px) and (min-width:601px){.gallery-container[data-v-3a9fa997]{padding:12px}.waterfall-column[data-v-3a9fa997],.waterfall[data-v-3a9fa997]{gap:10px}.image-wrapper[data-v-3a9fa997]{border-radius:8px}}@media (max-width:600px){.header[data-v-3a9fa997]{padding:10px 12px}.header-left .logo[data-v-3a9fa997]{font-size:16px}.breadcrumb[data-v-3a9fa997]{font-size:12px}.breadcrumb-item[data-v-3a9fa997]{padding:4px 8px}.file-count[data-v-3a9fa997]{font-size:12px}.gallery-container[data-v-3a9fa997]{padding:6px}.waterfall-column[data-v-3a9fa997],.waterfall[data-v-3a9fa997]{gap:6px}.image-wrapper[data-v-3a9fa997]{border-radius:6px;min-height:120px}.folders-section[data-v-3a9fa997]{margin-bottom:12px}.folders-grid[data-v-3a9fa997]{grid-template-columns:repeat(2,1fr);gap:8px}.folder-card[data-v-3a9fa997]{padding:16px 12px;border-radius:8px}.folder-icon[data-v-3a9fa997]{width:36px;height:36px;margin-bottom:8px}.folder-name[data-v-3a9fa997]{font-size:12px}.load-trigger[data-v-3a9fa997]{padding:24px;min-height:60px}}.copy-toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%) translateY(20px);background:rgba(0,0,0,.8);color:#fff;padding:10px 24px;border-radius:20px;font-size:14px;opacity:0;transition:all .3s ease;z-index:9999;pointer-events:none}.copy-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}:root:not(.dark) .public-browse[data-v-3a9fa997]{background:#f5f5f5;color:#333}:root:not(.dark) .header[data-v-3a9fa997]{background:hsla(0,0%,100%,.95);border-bottom-color:#e0e0e0}:root:not(.dark) .logo[data-v-3a9fa997]{color:#333}:root:not(.dark) .breadcrumb-item[data-v-3a9fa997]{color:#666}:root:not(.dark) .breadcrumb-item[data-v-3a9fa997]:hover{background:#e8e8e8;color:#333}:root:not(.dark) .breadcrumb-sep[data-v-3a9fa997]{color:#ccc}:root:not(.dark) .error-container[data-v-3a9fa997],:root:not(.dark) .file-count[data-v-3a9fa997],:root:not(.dark) .loading-container[data-v-3a9fa997]{color:#999}:root:not(.dark) .error-credit[data-v-3a9fa997]{color:rgba(0,0,0,.4)}:root:not(.dark) .error-credit-links a[data-v-3a9fa997]{color:rgba(0,0,0,.5)}:root:not(.dark) .loading-spinner-small[data-v-3a9fa997],:root:not(.dark) .loading-spinner[data-v-3a9fa997]{border-color:#ddd;border-top-color:#3b82f6}:root:not(.dark) .folder-card[data-v-3a9fa997]{background:#fff;border-color:#e0e0e0}:root:not(.dark) .folder-card[data-v-3a9fa997]:hover{background:#fafafa;border-color:#ccc}:root:not(.dark) .folder-icon[data-v-3a9fa997]{color:#999}:root:not(.dark) .folder-name[data-v-3a9fa997]{color:#666}:root:not(.dark) .image-wrapper[data-v-3a9fa997]{background:#fff;border-color:#e0e0e0}:root:not(.dark) .image-wrapper[data-v-3a9fa997]:before{background:linear-gradient(90deg,#f5f5f5 25%,#fff 50%,#f5f5f5 75%)}:root:not(.dark) .image-wrapper[data-v-3a9fa997]:hover{border-color:#ccc}:root:not(.dark) .file-placeholder[data-v-3a9fa997]{background:#f5f5f5;color:#999}:root:not(.dark) .file-name[data-v-3a9fa997]{color:rgba(0,0,0,.6)}:root:not(.dark) .audio-placeholder[data-v-3a9fa997]{background:linear-gradient(135deg,#e8f4f8,#d4e5f7)}:root:not(.dark) .audio-icon[data-v-3a9fa997]{color:rgba(0,0,0,.4)}:root:not(.dark) .audio-name[data-v-3a9fa997]{color:rgba(0,0,0,.6)}:root:not(.dark) .no-more[data-v-3a9fa997]{color:#bbb}:root:not(.dark) .credit-link[data-v-3a9fa997]{color:#aaa}:root:not(.dark) .credit-link[data-v-3a9fa997]:hover{color:#666}:root:not(.dark) .loading-more[data-v-3a9fa997]{color:#999}:root:not(.dark) .theme-toggle-btn[data-v-3a9fa997]:hover{background:rgba(0,0,0,.08)} \ No newline at end of file +@charset "UTF-8";@keyframes plyr-progress{to{background-position:25px 0;background-position:var(--plyr-progress-loading-size,25px) 0}}@keyframes plyr-popup{0%{opacity:.5;transform:translateY(10px)}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:200px;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:2px;border-radius:var(--plyr-badge-border-radius,2px);color:#fff;color:var(--plyr-badge-text-color,#fff);font-size:9px;font-size:var(--plyr-font-size-badge,9px);line-height:1;padding:3px 4px}.plyr--full-ui ::-webkit-media-text-track-container{display:none}.plyr__captions{animation:plyr-fade-in .3s ease;bottom:0;display:none;font-size:13px;font-size:var(--plyr-font-size-small,13px);left:0;padding:10px;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:15px;font-size:var(--plyr-font-size-base,15px);padding:20px;padding:calc(var(--plyr-control-spacing, 10px)*2)}}@media (min-width:768px){.plyr__captions{font-size:18px;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(-40px);transform:translateY(calc(var(--plyr-control-spacing, 10px)*-4))}.plyr__caption{background:#000c;background:var(--plyr-captions-background,#000c);border-radius:2px;-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:#0000;border:0;border-radius:4px;border-radius:var(--plyr-control-radius,4px);color:inherit;cursor:pointer;flex-shrink:0;overflow:visible;padding:7px;padding:calc(var(--plyr-control-spacing, 10px)*.7);position:relative;transition:all .1s ease-in-out}.plyr__control svg{display:block;fill:currentColor;height:18px;height:var(--plyr-control-icon-size,18px);pointer-events:none;width:18px;width:var(--plyr-control-icon-size,18px)}.plyr__control:focus{outline:0}.plyr__control:focus-visible{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}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:2.5px;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:2.5px;padding-left:calc(var(--plyr-control-spacing, 10px)/4)}.plyr__controls .plyr__controls__item.plyr__time{padding:0 5px;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:#ffffffe6;background:var(--plyr-menu-background,#ffffffe6);border-radius:8px;border-radius:var(--plyr-menu-radius,8px);bottom:100%;box-shadow:0 1px 2px #00000026;box-shadow:var(--plyr-menu-shadow,0 1px 2px #00000026);color:#4a5464;color:var(--plyr-menu-color,#4a5464);font-size:15px;font-size:var(--plyr-font-size-base,15px);margin-bottom:10px;position:absolute;right:-3px;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:4px solid #0000;border-top-color:#ffffffe6;border:var(--plyr-menu-arrow-size,4px) solid #0000;border-top-color:var(--plyr-menu-background,#ffffffe6);content:"";height:0;position:absolute;right:14px;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:7px;padding:calc(var(--plyr-control-spacing, 10px)*.7)}.plyr__menu__container [role=menuitem],.plyr__menu__container [role=menuitemradio]{margin-top:2px}.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:13px;font-size:var(--plyr-font-size-menu,var(--plyr-font-size-small,13px));padding:4.66667px 10.5px;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:4px solid #0000;border:var(--plyr-menu-item-arrow-size,4px) solid #0000;content:"";position:absolute;top:50%;transform:translateY(-50%)}.plyr__menu__container .plyr__control--forward{padding-right:28px;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:6.5px;right:calc(var(--plyr-control-spacing, 10px)*.7*1.5 - var(--plyr-menu-item-arrow-size, 4px))}.plyr__menu__container .plyr__control--forward:focus-visible:after,.plyr__menu__container .plyr__control--forward:hover:after{border-left-color:initial}.plyr__menu__container .plyr__control--back{font-weight:400;font-weight:var(--plyr-font-weight-regular,400);margin:7px;margin:calc(var(--plyr-control-spacing, 10px)*.7);margin-bottom:3.5px;margin-bottom:calc(var(--plyr-control-spacing, 10px)*.7/2);padding-left:28px;padding-left:calc(var(--plyr-control-spacing, 10px)*.7*4);position:relative;width:calc(100% - 14px);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:6.5px;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 1px 0 #fff;box-shadow:0 1px 0 var(--plyr-menu-back-border-shadow-color,#fff);content:"";height:1px;left:0;margin-top:3.5px;margin-top:calc(var(--plyr-control-spacing, 10px)*.7/2);overflow:hidden;position:absolute;right:0;top:100%}.plyr__menu__container .plyr__control--back:focus-visible:after,.plyr__menu__container .plyr__control--back:hover:after{border-right-color:initial}.plyr__menu__container .plyr__control[role=menuitemradio]{padding-left:7px;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:#0000001a;content:"";display:block;flex-shrink:0;height:16px;margin-right:10px;margin-right:var(--plyr-control-spacing,10px);transition:all .3s ease;width:16px}.plyr__menu__container .plyr__control[role=menuitemradio]:after{background:#fff;border:0;height:6px;left:12px;opacity:0;top:50%;transform:translateY(-50%) scale(0);transition:transform .3s ease,opacity .3s ease;width:6px}.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]:focus-visible:before,.plyr__menu__container .plyr__control[role=menuitemradio]:hover:before{background:#23282f1a}.plyr__menu__container .plyr__menu__value{align-items:center;display:flex;margin-left:auto;margin-right:-5px;margin-right:calc(var(--plyr-control-spacing, 10px)*.7*-1 + 2px);overflow:hidden;padding-left:24.5px;padding-left:calc(var(--plyr-control-spacing, 10px)*.7*3.5);pointer-events:none}.plyr--full-ui input[type=range]{appearance:none;background:#0000;border:0;border-radius:26px;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:19px;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:#0000;background-image:linear-gradient(90deg,currentColor,#0000 0);background-image:linear-gradient(to right,currentColor var(--value,0),#0000 var(--value,0));border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;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{appearance:none;background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33);height:13px;height:var(--plyr-range-thumb-height,13px);margin-top:-4px;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:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-moz-range-track{background:#0000;border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;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 1px 1px #23282f26,0 0 0 1px #23282f33;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33);height:13px;height:var(--plyr-range-thumb-height,13px);position:relative;-moz-transition:all .2s ease;transition:all .2s ease;width:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-moz-range-progress{background:currentColor;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px)}.plyr--full-ui input[type=range]::-ms-track{color:#0000}.plyr--full-ui input[type=range]::-ms-fill-upper,.plyr--full-ui input[type=range]::-ms-track{background:#0000;border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;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:#0000;background:currentColor;border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;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 1px 1px #23282f26,0 0 0 1px #23282f33;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33);height:13px;height:var(--plyr-range-thumb-height,13px);margin-top:0;position:relative;-ms-transition:all .2s ease;transition:all .2s ease;width:13px;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]:focus-visible::-webkit-slider-runnable-track{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}.plyr--full-ui input[type=range]:focus-visible::-moz-range-track{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}.plyr--full-ui input[type=range]:focus-visible::-ms-track{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}.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:13px;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px))}.plyr__time+.plyr__time:before{content:"⁄";margin-right:10px;margin-right:var(--plyr-control-spacing,10px)}@media (max-width:767px){.plyr__time+.plyr__time{display:none}}.plyr__tooltip{background:#fff;background:var(--plyr-tooltip-background,#fff);border-radius:5px;border-radius:var(--plyr-tooltip-radius,5px);bottom:100%;box-shadow:0 1px 2px #00000026;box-shadow:var(--plyr-tooltip-shadow,0 1px 2px #00000026);color:#4a5464;color:var(--plyr-tooltip-color,#4a5464);font-size:13px;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:10px;margin-bottom:calc(var(--plyr-control-spacing, 10px)/2*2);opacity:0;padding:5px 7.5px;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%,10px) 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:4px solid #0000;border-left:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-right:4px solid #0000;border-right:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-top:4px solid #fff;border-top:var(--plyr-tooltip-arrow-size,4px) solid var(--plyr-tooltip-background,#fff);bottom:-4px;bottom:calc(var(--plyr-tooltip-arrow-size, 4px)*-1);content:"";height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr .plyr__control:focus-visible .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(10px) 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:16px;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(10px) scale(.8);transform-origin:100% 100%}.plyr__controls>.plyr__control:last-child .plyr__tooltip:before{left:auto;right:16px;right:calc(var(--plyr-control-icon-size, 18px)/2 + var(--plyr-control-spacing, 10px)*.7);transform:translateX(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:focus-visible .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control:hover .plyr__tooltip,.plyr__controls>.plyr__control:first-child:focus-visible .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:focus-visible .plyr__tooltip,.plyr__controls>.plyr__control:last-child:hover .plyr__tooltip{transform:translate(0) scale(1)}.plyr__progress{left:6.5px;left:calc(var(--plyr-range-thumb-height, 13px)*.5);margin-right:13px;margin-right:var(--plyr-range-thumb-height,13px);position:relative}.plyr__progress input[type=range],.plyr__progress__buffer{margin-left:-6.5px;margin-left:calc(var(--plyr-range-thumb-height, 13px)*-.5);margin-right:-6.5px;margin-right:calc(var(--plyr-range-thumb-height, 13px)*-.5);width:calc(100% + 13px);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:120px;overflow-wrap:break-word}.plyr__progress__buffer{-webkit-appearance:none;background:#0000;border:0;border-radius:100px;height:5px;height:var(--plyr-range-track-height,5px);left:0;margin-top:-2.5px;margin-top:calc(var(--plyr-range-track-height, 5px)/2*-1);padding:0;position:absolute;top:50%}.plyr__progress__buffer::-webkit-progress-bar{background:#0000}.plyr__progress__buffer::-webkit-progress-value{background:currentColor;border-radius:100px;min-width:5px;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:100px;min-width:5px;min-width:var(--plyr-range-track-height,5px);-moz-transition:width .2s ease;transition:width .2s ease}.plyr__progress__buffer::-ms-fill{border-radius:100px;-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,#23282f99 25%,#0000 0,#0000 50%,#23282f99 0,#23282f99 75%,#0000 0,#0000);background-image:linear-gradient(-45deg,var(--plyr-progress-loading-background,#23282f99) 25%,#0000 25%,#0000 50%,var(--plyr-progress-loading-background,#23282f99) 50%,var(--plyr-progress-loading-background,#23282f99) 75%,#0000 75%,#0000);background-repeat:repeat-x;background-size:25px 25px;background-size:var(--plyr-progress-loading-size,25px) var(--plyr-progress-loading-size,25px);color:#0000}.plyr--video.plyr--loading .plyr__progress__buffer{background-color:#ffffff40;background-color:var(--plyr-video-progress-buffered-background,#ffffff40)}.plyr--audio.plyr--loading .plyr__progress__buffer{background-color:#c1c8d199;background-color:var(--plyr-audio-progress-buffered-background,#c1c8d199)}.plyr__progress__marker{background-color:#fff;background-color:var(--plyr-progress-marker-background,#fff);border-radius:1px;height:5px;height:var(--plyr-range-track-height,5px);position:absolute;top:50%;transform:translate(-50%,-50%);width:3px;width:var(--plyr-progress-marker-width,3px);z-index:3}.plyr__volume{align-items:center;display:flex;position:relative}.plyr__volume input[type=range]{margin-left:5px;margin-left:calc(var(--plyr-control-spacing, 10px)/2);margin-right:5px;margin-right:calc(var(--plyr-control-spacing, 10px)/2);max-width:90px;min-width:60px;position:relative;z-index:2}.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:10px;padding:var(--plyr-control-spacing,10px)}.plyr--audio .plyr__control:focus-visible,.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:#c1c8d199;background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,#c1c8d199))}.plyr--full-ui.plyr--audio input[type=range]::-moz-range-track{background-color:#c1c8d199;background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,#c1c8d199))}.plyr--full-ui.plyr--audio input[type=range]::-ms-track{background-color:#c1c8d199;background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,#c1c8d199))}.plyr--full-ui.plyr--audio input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #23282f1a;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#23282f1a)}.plyr--full-ui.plyr--audio input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #23282f1a;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#23282f1a)}.plyr--full-ui.plyr--audio input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #23282f1a;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#23282f1a)}.plyr--audio .plyr__progress__buffer{color:#c1c8d199;color:var(--plyr-audio-progress-buffered-background,#c1c8d199)}.plyr--video{overflow:hidden}.plyr--video.plyr--menu-open{overflow:visible}.plyr__video-wrapper{background:#000;background:var(--plyr-video-background,var(--plyr-video-background,#000));border-radius:inherit;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(#0000,#000000bf);background:var(--plyr-video-controls-background,linear-gradient(#0000,#000000bf));border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;bottom:0;color:#fff;color:var(--plyr-video-control-color,#fff);left:0;padding:5px;padding:calc(var(--plyr-control-spacing, 10px)/2);padding-top:20px;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:10px;padding:var(--plyr-control-spacing,10px);padding-top:35px;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:focus-visible,.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:15px;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:2px;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:#ffffff40;background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,#ffffff40))}.plyr--full-ui.plyr--video input[type=range]::-moz-range-track{background-color:#ffffff40;background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,#ffffff40))}.plyr--full-ui.plyr--video input[type=range]::-ms-track{background-color:#ffffff40;background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,#ffffff40))}.plyr--full-ui.plyr--video input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #ffffff80;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#ffffff80)}.plyr--full-ui.plyr--video input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #ffffff80;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#ffffff80)}.plyr--full-ui.plyr--video input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #ffffff80;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#ffffff80)}.plyr--video .plyr__progress__buffer{color:#ffffff40;color:var(--plyr-video-progress-buffered-background,#ffffff40)}.plyr:fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:fullscreen video{height:100%}.plyr:fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:fullscreen .plyr__captions{font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}}.plyr--fullscreen-fallback{background:#000;border-radius:0!important;height:100%;inset:0;margin:0;position:fixed;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:21px;font-size:var(--plyr-font-size-xlarge,21px)}}.plyr__ads{border-radius:inherit;cursor:pointer;inset:0;overflow:hidden;position:absolute;z-index:-1}.plyr__ads>div,.plyr__ads>div iframe{height:100%;position:absolute;width:100%}.plyr__ads:after{background:#23282f;border-radius:2px;bottom:10px;bottom:var(--plyr-control-spacing,10px);color:#fff;content:attr(data-badge-text);font-size:11px;padding:2px 6px;pointer-events:none;position:absolute;right:10px;right:var(--plyr-control-spacing,10px);z-index:3}.plyr__ads:empty:after{display:none}.plyr__cues{background:currentColor;display:block;height:5px;height:var(--plyr-range-track-height,5px);left:0;opacity:.8;position:absolute;top:50%;transform:translateY(-50%);width:3px;z-index:3}.plyr__preview-thumb{background-color:#fff;background-color:var(--plyr-tooltip-background,#fff);border-radius:8px;border-radius:var(--plyr-menu-radius,8px);bottom:100%;box-shadow:0 1px 2px #00000026;box-shadow:var(--plyr-tooltip-shadow,0 1px 2px #00000026);margin-bottom:10px;margin-bottom:calc(var(--plyr-control-spacing, 10px)/2*2);opacity:0;padding:3px;pointer-events:none;position:absolute;transform:translateY(10px) 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:4px solid #0000;border-left:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-right:4px solid #0000;border-right:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-top:4px solid #fff;border-top:var(--plyr-tooltip-arrow-size,4px) solid var(--plyr-tooltip-background,#fff);bottom:-4px;bottom:calc(var(--plyr-tooltip-arrow-size, 4px)*-1);content:"";height:0;left:calc(50% + var(--preview-arrow-offset));position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr__preview-thumb__image-container{background:#c1c8d1;border-radius:7px;border-radius:calc(var(--plyr-menu-radius, 8px) - 1px);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 1px #00000026;content:"";pointer-events:none}.plyr__preview-thumb__image-container img{max-height:none;max-width:none}.plyr__preview-thumb__time-container{background:linear-gradient(#0000,#000000bf);background:var(--plyr-video-controls-background,linear-gradient(#0000,#000000bf));border-bottom-left-radius:7px;border-bottom-left-radius:calc(var(--plyr-menu-radius, 8px) - 1px);border-bottom-right-radius:7px;border-bottom-right-radius:calc(var(--plyr-menu-radius, 8px) - 1px);bottom:0;left:0;line-height:1.1;padding:20px 6px 6px;position:absolute;right:0;z-index:3}.plyr__preview-thumb__time-container span{color:#fff;font-size:13px;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px))}.plyr__preview-scrubbing{filter:blur(1px);height:100%;inset:0;margin:auto;opacity:0;overflow:hidden;pointer-events:none;position:absolute;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(1px,1px,1px,1px);border:0!important;height:1px!important;overflow:hidden;padding:0!important;position:absolute!important;width:1px!important}.plyr [hidden]{display:none!important}.tm-viewport[data-v-6479d338]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tm-media[data-v-6479d338]{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-drag:none}.tm-video-wrap[data-v-6479d338]{width:100%;max-width:800px;touch-action:auto}.plyr-video[data-v-6479d338]{width:100%}.tm-audio-wrap[data-v-6479d338]{display:flex;flex-direction:column;align-items:center;gap:20px;padding:24px;width:100%;max-width:400px;touch-action:auto}.plyr-audio[data-v-6479d338]{width:100%}.audio-cover[data-v-6479d338]{width:200px;height:200px;border-radius:12px;overflow:hidden;background:hsla(0,0%,100%,.1);display:flex;align-items:center;justify-content:center;box-shadow:0 8px 32px rgba(0,0,0,.3)}.cover-img[data-v-6479d338]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.audio-icon-large[data-v-6479d338]{width:80px;height:80px;color:hsla(0,0%,100%,.4)}.audio-info[data-v-6479d338]{text-align:center;width:100%}.audio-title[data-v-6479d338]{font-size:18px;font-weight:600;color:#fff;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-artist[data-v-6479d338]{font-size:14px;color:hsla(0,0%,100%,.6)}.audio-placeholder[data-v-6479d338],.video-placeholder[data-v-6479d338]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:hsla(0,0%,100%,.4)}.video-placeholder svg[data-v-6479d338]{width:80px;height:80px}.audio-placeholder .audio-name[data-v-6479d338]{font-size:14px;color:hsla(0,0%,100%,.6);text-align:center;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plyr{--plyr-color-main:#3b82f6}.plyr--audio .plyr__controls{background:hsla(0,0%,100%,.1);border-radius:8px}.plyr-custom-menu{position:relative;display:flex;align-items:center}.plyr-menu-btn{background:none;border:none;cursor:pointer;padding:8px;color:inherit;display:flex;align-items:center;justify-content:center}.plyr-menu-btn:hover{opacity:.8}.plyr-menu-dropdown{position:absolute;bottom:100%;right:0;background:#fff;border-radius:8px;box-shadow:0 4px 20px rgba(0,0,0,.3);min-width:160px;display:none;z-index:100;overflow:hidden;margin-bottom:8px}.plyr-menu-dropdown.show{display:block}.plyr-menu-item{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;color:#333;font-size:14px;transition:background .15s}.plyr-menu-item:hover{background:#f5f5f5}.plyr-menu-item svg{flex-shrink:0}.plyr-menu-item .arrow{margin-left:auto}.plyr-playmode-submenu,.plyr-speed-submenu{display:none;border-top:1px solid #eee}.plyr-playmode-submenu.show,.plyr-speed-submenu.show{display:block}.plyr-playmode-option,.plyr-speed-option{padding-left:32px;position:relative}.plyr-playmode-option.active,.plyr-speed-option.active{color:#3b82f6;font-weight:600}.plyr-playmode-option.active:before,.plyr-speed-option.active:before{content:"✓";position:absolute;left:12px}@media (max-width:768px),(pointer:coarse){.plyr--audio .plyr__volume{position:relative}.plyr--audio .plyr__volume input[type=range]{position:absolute;bottom:100%;left:50%;transform:translateX(-50%) rotate(-90deg);transform-origin:center center;width:80px;margin-bottom:40px;display:none}.plyr--audio .plyr__volume:focus-within input[type=range],.plyr--audio .plyr__volume:hover input[type=range]{display:block}.plyr--audio .plyr__volume:before{content:"";position:absolute;bottom:100%;left:50%;transform:translateX(-50%);width:36px;height:100px;background:rgba(0,0,0,.8);border-radius:8px;display:none;margin-bottom:8px}.plyr--audio .plyr__volume:focus-within:before,.plyr--audio .plyr__volume:hover:before{display:block}}#themeToggle[data-v-466b2b5c]{border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem}@media (max-width:768px){#themeToggle[data-v-466b2b5c]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-466b2b5c]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-466b2b5c]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-466b2b5c]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-466b2b5c]{transform:rotate(40deg)}.theme_toggle_g[data-v-466b2b5c]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-466b2b5c],.icon-fade-leave-active[data-v-466b2b5c]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-466b2b5c],.icon-fade-leave-from[data-v-466b2b5c]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-466b2b5c]{display:inline-block}.public-browse[data-v-df1166f8]{min-height:100vh;background:#0a0a0a;color:#fff}.header[data-v-df1166f8]{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:16px 24px;background:hsla(0,0%,6%,.95);backdrop-filter:blur(10px);border-bottom:1px solid #1a1a1a;position:relative}.header-left[data-v-df1166f8]{flex:0 0 auto;z-index:1;display:flex;align-items:center;gap:8px}.theme-toggle-btn[data-v-df1166f8]{background:transparent;border-radius:8px;transition:background .2s}.theme-toggle-btn[data-v-df1166f8]:hover{background:hsla(0,0%,100%,.1)}.header-right[data-v-df1166f8]{flex:0 0 auto;z-index:1}.header-center[data-v-df1166f8]{position:absolute;left:50%;transform:translateX(-50%);z-index:0}.logo[data-v-df1166f8]{font-size:20px;font-weight:600;color:#fff;cursor:pointer;transition:opacity .2s}.logo[data-v-df1166f8]:hover{opacity:.8}.breadcrumb[data-v-df1166f8]{display:flex;align-items:center;gap:4px;font-size:14px}.breadcrumb-item[data-v-df1166f8]{padding:6px 12px;border-radius:6px;cursor:pointer;transition:background .2s;color:#ccc}.breadcrumb-item[data-v-df1166f8]:hover{background:#252525;color:#fff}.breadcrumb-sep[data-v-df1166f8]{color:#444}.file-count[data-v-df1166f8]{color:#666;font-size:14px}.error-container[data-v-df1166f8],.loading-container[data-v-df1166f8]{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;color:#666}.error-credit[data-v-df1166f8]{margin-top:40px;text-align:center;color:hsla(0,0%,100%,.4);font-size:14px}.error-credit p[data-v-df1166f8]{margin-bottom:12px}.error-credit-links[data-v-df1166f8]{display:flex;gap:24px;justify-content:center}.error-credit-links a[data-v-df1166f8]{display:flex;align-items:center;gap:6px;color:hsla(0,0%,100%,.5);text-decoration:none;transition:color .2s}.error-credit-links a[data-v-df1166f8]:hover{color:#3b82f6}.loading-spinner[data-v-df1166f8]{width:48px;height:48px;border:3px solid #222;border-top-color:#3b82f6;border-radius:50%;animation:spin-df1166f8 1s linear infinite}.loading-spinner-small[data-v-df1166f8]{width:24px;height:24px;border:2px solid #222;border-top-color:#3b82f6;border-radius:50%;animation:spin-df1166f8 1s linear infinite}@keyframes spin-df1166f8{to{transform:rotate(1turn)}}.retry-btn[data-v-df1166f8]{margin-top:20px;padding:10px 32px;background:#3b82f6;border:none;border-radius:8px;color:#fff;font-size:14px;cursor:pointer;transition:background .2s}.retry-btn[data-v-df1166f8]:hover{background:#2563eb}.gallery-container[data-v-df1166f8]{padding:8px}@media (min-width:1200px){.gallery-container[data-v-df1166f8]{max-width:1400px;margin:0 auto;padding:24px}}.folders-section[data-v-df1166f8]{margin-bottom:24px}.folders-grid[data-v-df1166f8]{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}.folder-card[data-v-df1166f8]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px;background:#141414;border-radius:12px;border:1px solid #1a1a1a;cursor:pointer;transition:all .2s}.folder-card[data-v-df1166f8]:hover{background:#1a1a1a;border-color:#333;transform:translateY(-2px)}.folder-icon[data-v-df1166f8]{width:48px;height:48px;margin-bottom:12px;color:#555}.folder-icon svg[data-v-df1166f8]{width:100%;height:100%}.folder-name[data-v-df1166f8]{font-size:14px;color:#999;text-align:center;word-break:break-all}.waterfall[data-v-df1166f8]{display:flex;gap:16px}.waterfall-column[data-v-df1166f8]{flex:1;display:flex;flex-direction:column;gap:16px}.waterfall-item[data-v-df1166f8]{cursor:pointer}.image-wrapper[data-v-df1166f8]{position:relative;border-radius:12px;overflow:hidden;background:#141414;border:1px solid #1a1a1a;min-height:180px}.image-wrapper[data-v-df1166f8]:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#141414 25%,#1a1a1a 50%,#141414 75%);background-size:200% 100%;animation:shimmer-df1166f8 1.5s infinite;z-index:1;pointer-events:none}.image-wrapper.loaded[data-v-df1166f8]:before{display:none}.image-wrapper.loaded[data-v-df1166f8]{min-height:auto}.image-wrapper img[data-v-df1166f8],.image-wrapper video[data-v-df1166f8]{width:100%;display:block;position:relative;z-index:2}@keyframes shimmer-df1166f8{0%{background-position:200% 0}to{background-position:-200% 0}}.image-wrapper[data-v-df1166f8]:hover{border-color:#333}.overlay[data-v-df1166f8]{position:absolute;inset:0;background:linear-gradient(transparent 50%,rgba(0,0,0,.85));opacity:0;transition:opacity .2s;display:flex;align-items:flex-end;justify-content:flex-end;padding:12px;z-index:10}.image-wrapper:hover .overlay[data-v-df1166f8]{opacity:1}.file-placeholder[data-v-df1166f8]{width:100%;height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#141414;color:#555;gap:12px;padding:16px;box-sizing:border-box}.file-placeholder svg[data-v-df1166f8]{width:48px;height:48px}.file-name[data-v-df1166f8]{font-size:12px;color:hsla(0,0%,100%,.7);text-align:center;word-break:break-all;max-width:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.audio-placeholder[data-v-df1166f8]{width:100%;height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a1a2e,#16213e);gap:12px;padding:16px;box-sizing:border-box}.audio-icon[data-v-df1166f8]{width:48px;height:48px;color:hsla(0,0%,100%,.6)}.audio-name[data-v-df1166f8]{font-size:12px;color:hsla(0,0%,100%,.7);text-align:center;word-break:break-all;max-width:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.overlay-actions[data-v-df1166f8]{display:flex;gap:8px}.action-btn[data-v-df1166f8]{width:32px;height:32px;border:none;border-radius:50%;background:hsla(0,0%,100%,.08);backdrop-filter:blur(8px);cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;color:hsla(0,0%,100%,.6)}.action-btn svg[data-v-df1166f8]{width:16px;height:16px}.action-btn[data-v-df1166f8]:hover{background:hsla(0,0%,100%,.2);color:#fff;transform:scale(1.1)}.load-trigger[data-v-df1166f8]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:48px;min-height:100px}.loading-more[data-v-df1166f8]{display:flex;align-items:center;gap:12px;color:#666;font-size:14px}.no-more[data-v-df1166f8]{color:#444;font-size:14px}.credit-link[data-v-df1166f8]{display:block;margin-top:8px;color:#555;font-size:12px;text-decoration:none;transition:color .2s;text-align:center}.credit-link[data-v-df1166f8]:hover{color:#888}.preview-modal[data-v-df1166f8]{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.97);display:flex;align-items:center;justify-content:center;overflow:hidden}.preview-content[data-v-df1166f8]{padding:60px 80px;box-sizing:border-box;overflow:hidden}.preview-content-mobile[data-v-df1166f8],.preview-content[data-v-df1166f8]{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.preview-content-mobile[data-v-df1166f8]{flex-direction:column;padding:0;position:absolute;top:0;left:0}.mobile-video-native[data-v-df1166f8]{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;background:#000}.mobile-audio-wrap[data-v-df1166f8]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;box-sizing:border-box}.mobile-audio-wrap .swipe-hint[data-v-df1166f8]{margin-top:20px}.swipe-hint[data-v-df1166f8]{font-size:12px;color:hsla(0,0%,100%,.4)}.other-file-preview[data-v-df1166f8]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:hsla(0,0%,100%,.6);gap:16px}.other-file-preview svg[data-v-df1166f8]{width:64px;height:64px}.other-file-preview .file-name[data-v-df1166f8]{font-size:14px;color:hsla(0,0%,100%,.7);text-align:center;padding:0 20px;word-break:break-all}.swipe-viewport[data-v-df1166f8]{width:100%;height:100%;overflow:hidden;position:relative}.swipe-track[data-v-df1166f8]{width:300%;height:100%;display:flex;will-change:transform}.swipe-slide[data-v-df1166f8]{width:33.333%;flex-shrink:0;height:100%;display:flex;align-items:center;justify-content:center}.preview-image[data-v-df1166f8],.preview-video[data-v-df1166f8]{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.preview-close[data-v-df1166f8]{position:fixed;top:20px;right:20px;background:hsla(0,0%,100%,.1);border:none;color:#fff;cursor:pointer;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:1010}.preview-close[data-v-df1166f8]:hover{background:hsla(0,0%,100%,.2)}.preview-close svg[data-v-df1166f8]{width:28px;height:28px}.page-indicator[data-v-df1166f8]{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.6);color:hsla(0,0%,100%,.8);padding:8px 16px;border-radius:20px;font-size:14px;z-index:1010}.preview-next[data-v-df1166f8],.preview-prev[data-v-df1166f8]{position:fixed;top:50%;transform:translateY(-50%);background:hsla(0,0%,100%,.1);border:none;color:#fff;padding:16px;cursor:pointer;border-radius:50%;width:56px;height:56px;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:1010}.preview-next[data-v-df1166f8]:hover,.preview-prev[data-v-df1166f8]:hover{background:hsla(0,0%,100%,.2)}.preview-next svg[data-v-df1166f8],.preview-prev svg[data-v-df1166f8]{width:32px;height:32px}.preview-prev[data-v-df1166f8]{left:20px}.preview-next[data-v-df1166f8]{right:20px}.rotate-btn[data-v-df1166f8]{position:fixed;bottom:30px;right:20px;background:hsla(0,0%,100%,.1);border:none;color:#fff;cursor:pointer;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:1010}.rotate-btn[data-v-df1166f8]:hover{background:hsla(0,0%,100%,.2)}.rotate-btn svg[data-v-df1166f8]{width:24px;height:24px}@media (max-width:768px){.page-indicator[data-v-df1166f8]{bottom:40px}}@media (max-width:1199px) and (min-width:601px){.gallery-container[data-v-df1166f8]{padding:12px}.waterfall-column[data-v-df1166f8],.waterfall[data-v-df1166f8]{gap:10px}.image-wrapper[data-v-df1166f8]{border-radius:8px}}@media (max-width:600px){.header[data-v-df1166f8]{padding:10px 12px}.header-left .logo[data-v-df1166f8]{font-size:16px}.breadcrumb[data-v-df1166f8]{font-size:12px}.breadcrumb-item[data-v-df1166f8]{padding:4px 8px}.file-count[data-v-df1166f8]{font-size:12px}.gallery-container[data-v-df1166f8]{padding:6px}.waterfall-column[data-v-df1166f8],.waterfall[data-v-df1166f8]{gap:6px}.image-wrapper[data-v-df1166f8]{border-radius:6px;min-height:120px}.folders-section[data-v-df1166f8]{margin-bottom:12px}.folders-grid[data-v-df1166f8]{grid-template-columns:repeat(2,1fr);gap:8px}.folder-card[data-v-df1166f8]{padding:16px 12px;border-radius:8px}.folder-icon[data-v-df1166f8]{width:36px;height:36px;margin-bottom:8px}.folder-name[data-v-df1166f8]{font-size:12px}.load-trigger[data-v-df1166f8]{padding:24px;min-height:60px}}.copy-toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%) translateY(20px);background:rgba(0,0,0,.8);color:#fff;padding:10px 24px;border-radius:20px;font-size:14px;opacity:0;transition:all .3s ease;z-index:9999;pointer-events:none}.copy-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}:root:not(.dark) .public-browse[data-v-df1166f8]{background:#f5f5f5;color:#333}:root:not(.dark) .header[data-v-df1166f8]{background:hsla(0,0%,100%,.95);border-bottom-color:#e0e0e0}:root:not(.dark) .logo[data-v-df1166f8]{color:#333}:root:not(.dark) .breadcrumb-item[data-v-df1166f8]{color:#666}:root:not(.dark) .breadcrumb-item[data-v-df1166f8]:hover{background:#e8e8e8;color:#333}:root:not(.dark) .breadcrumb-sep[data-v-df1166f8]{color:#ccc}:root:not(.dark) .error-container[data-v-df1166f8],:root:not(.dark) .file-count[data-v-df1166f8],:root:not(.dark) .loading-container[data-v-df1166f8]{color:#999}:root:not(.dark) .error-credit[data-v-df1166f8]{color:rgba(0,0,0,.4)}:root:not(.dark) .error-credit-links a[data-v-df1166f8]{color:rgba(0,0,0,.5)}:root:not(.dark) .loading-spinner-small[data-v-df1166f8],:root:not(.dark) .loading-spinner[data-v-df1166f8]{border-color:#ddd;border-top-color:#3b82f6}:root:not(.dark) .folder-card[data-v-df1166f8]{background:#fff;border-color:#e0e0e0}:root:not(.dark) .folder-card[data-v-df1166f8]:hover{background:#fafafa;border-color:#ccc}:root:not(.dark) .folder-icon[data-v-df1166f8]{color:#999}:root:not(.dark) .folder-name[data-v-df1166f8]{color:#666}:root:not(.dark) .image-wrapper[data-v-df1166f8]{background:#fff;border-color:#e0e0e0}:root:not(.dark) .image-wrapper[data-v-df1166f8]:before{background:linear-gradient(90deg,#f5f5f5 25%,#fff 50%,#f5f5f5 75%)}:root:not(.dark) .image-wrapper[data-v-df1166f8]:hover{border-color:#ccc}:root:not(.dark) .file-placeholder[data-v-df1166f8]{background:#f5f5f5;color:#999}:root:not(.dark) .file-name[data-v-df1166f8]{color:rgba(0,0,0,.6)}:root:not(.dark) .audio-placeholder[data-v-df1166f8]{background:linear-gradient(135deg,#e8f4f8,#d4e5f7)}:root:not(.dark) .audio-icon[data-v-df1166f8]{color:rgba(0,0,0,.4)}:root:not(.dark) .audio-name[data-v-df1166f8]{color:rgba(0,0,0,.6)}:root:not(.dark) .no-more[data-v-df1166f8]{color:#bbb}:root:not(.dark) .credit-link[data-v-df1166f8]{color:#aaa}:root:not(.dark) .credit-link[data-v-df1166f8]:hover{color:#666}:root:not(.dark) .loading-more[data-v-df1166f8]{color:#999}:root:not(.dark) .theme-toggle-btn[data-v-df1166f8]:hover{background:rgba(0,0,0,.08)} \ No newline at end of file diff --git a/css/324.6b0c51f2.css.gz b/css/855.94b8cff2.css.gz similarity index 73% rename from css/324.6b0c51f2.css.gz rename to css/855.94b8cff2.css.gz index 159f620..4f44799 100644 Binary files a/css/324.6b0c51f2.css.gz and b/css/855.94b8cff2.css.gz differ diff --git a/index.html b/index.html index 985b041..9e8be3a 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Sanyue ImgHub
\ No newline at end of file +Sanyue ImgHub
\ No newline at end of file diff --git a/index.html.gz b/index.html.gz index a31c4e8..feca205 100644 Binary files a/index.html.gz and b/index.html.gz differ diff --git a/js/324.4d567a33.js b/js/324.4d567a33.js deleted file mode 100644 index 5688cab..0000000 --- a/js/324.4d567a33.js +++ /dev/null @@ -1,2 +0,0 @@ -(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[324],{324:function(e,t,i){"use strict";i.r(t),i.d(t,{default:function(){return ns}});var s=i(6768),n=i(5130),a=i(4232);const r=["src"],o=["src"],l={key:2,class:"video-placeholder"},c={class:"audio-cover"},h=["src"],u={key:1,class:"audio-icon-large",viewBox:"0 0 24 24",fill:"currentColor"},d={class:"audio-info"},m={class:"audio-title"},p={key:0,class:"audio-artist"},g=["src"],f={key:4,class:"audio-placeholder"},y={class:"audio-name"};function b(e,t,i,b,v,w){return(0,s.uX)(),(0,s.CE)("div",{class:"tm-viewport",ref:"viewport",onPointerdown:t[3]||(t[3]=(...e)=>w.onPointerDown&&w.onPointerDown(...e)),onPointermove:t[4]||(t[4]=(...e)=>w.onPointerMove&&w.onPointerMove(...e)),onPointerup:t[5]||(t[5]=(...e)=>w.onPointerUp&&w.onPointerUp(...e)),onPointercancel:t[6]||(t[6]=(...e)=>w.onPointerUp&&w.onPointerUp(...e)),onDblclick:t[7]||(t[7]=(0,n.D$)((...e)=>w.onDblClick&&w.onDblClick(...e),["prevent"]))},[i.isImage?((0,s.uX)(),(0,s.CE)("img",{key:0,class:"tm-media",src:i.src,draggable:"false",style:(0,a.Tr)(w.mediaStyle),onLoad:t[0]||(t[0]=(...e)=>w.onLoad&&w.onLoad(...e))},null,44,r)):i.isVideo&&i.isActive?((0,s.uX)(),(0,s.CE)("div",{key:1,class:"tm-video-wrap",onPointerdown:t[1]||(t[1]=(0,n.D$)(()=>{},["stop"]))},[(0,s.Lk)("video",{ref:"videoEl",class:"plyr-video",src:i.src,playsinline:""},null,8,o)],32)):i.isVideo?((0,s.uX)(),(0,s.CE)("div",l,[...t[8]||(t[8]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M8 5v14l11-7z"})],-1)])])):i.isAudio&&i.isActive?((0,s.uX)(),(0,s.CE)("div",{key:3,class:"tm-audio-wrap",onPointerdown:t[2]||(t[2]=(0,n.D$)(()=>{},["stop"]))},[(0,s.Lk)("div",c,[v.audioCover?((0,s.uX)(),(0,s.CE)("img",{key:0,src:v.audioCover,class:"cover-img"},null,8,h)):((0,s.uX)(),(0,s.CE)("svg",u,[...t[9]||(t[9]=[(0,s.Lk)("path",{d:"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z"},null,-1)])]))]),(0,s.Lk)("div",d,[(0,s.Lk)("div",m,(0,a.v_)(v.audioTitle),1),v.audioArtist?((0,s.uX)(),(0,s.CE)("div",p,(0,a.v_)(v.audioArtist),1)):(0,s.Q3)("",!0)]),(0,s.Lk)("audio",{ref:"audioEl",class:"plyr-audio",src:i.src},null,8,g)],32)):i.isAudio?((0,s.uX)(),(0,s.CE)("div",f,[t[10]||(t[10]=(0,s.Lk)("svg",{class:"audio-icon-large",viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z"})],-1)),(0,s.Lk)("span",y,(0,a.v_)(v.audioTitle),1)])):(0,s.Q3)("",!0)],544)}i(6573),i(8100),i(7936),i(8111),i(7588),i(9577),i(1549),i(9797),i(9631),i(5623),i(4603),i(7566),i(8721);var v=i(1114),w=(i(2489),i(1701),i(8335),i(1148),i(116),i(4114),i(3579),i(3975));const k=e=>null!==e&&"undefined"!==typeof e?e.constructor:null,T=(e,t)=>Boolean(e&&t&&e instanceof t),C=e=>null===e||"undefined"===typeof e,A=e=>k(e)===Object,S=e=>k(e)===Number&&!Number.isNaN(e),x=e=>k(e)===String,E=e=>k(e)===Boolean,M=e=>"function"===typeof e,P=e=>Array.isArray(e),L=e=>T(e,WeakMap),I=e=>T(e,NodeList),$=e=>k(e)===Text,N=e=>T(e,Event),D=e=>T(e,KeyboardEvent),F=e=>T(e,window.TextTrackCue)||T(e,window.VTTCue),_=e=>T(e,TextTrack)||!C(e)&&x(e.kind),R=e=>T(e,Promise)&&M(e.then);function O(e){return null!==e&&"object"===typeof e&&1===e.nodeType&&"object"===typeof e.style&&"object"===typeof e.ownerDocument}function V(e){return C(e)||(x(e)||P(e)||I(e))&&!e.length||A(e)&&!Object.keys(e).length}function H(e){if(T(e,window.URL))return!0;if(!x(e))return!1;let t=e;e.startsWith("http://")&&e.startsWith("https://")||(t=`http://${e}`);try{return!V(new URL(t).hostname)}catch{return!1}}var j={nullOrUndefined:C,object:A,number:S,string:x,boolean:E,function:M,array:P,weakMap:L,nodeList:I,element:O,textNode:$,event:N,keyboardEvent:D,cue:F,track:_,promise:R,url:H,empty:V};const q=(()=>{const e=document.createElement("span"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},i=Object.keys(t).find(t=>void 0!==e.style[t]);return!!j.string(i)&&t[i]})();function U(e,t){setTimeout(()=>{try{e.hidden=!0,e.offsetHeight,e.hidden=!1}catch{}},t)}i(8237),i(3110);function B(e){return JSON.parse(JSON.stringify(e))}function X(e,t){return t.split(".").reduce((e,t)=>e&&e[t],e)}function z(e={},...t){if(!t.length)return e;const i=t.shift();return j.object(i)?(Object.keys(i).forEach(t=>{j.object(i[t])?(Object.keys(e).includes(t)||Object.assign(e,{[t]:{}}),z(e[t],i[t])):Object.assign(e,{[t]:i[t]})}),z(e,...t)):e}function W(e,t){const i=e.length?e:[e];Array.from(i).reverse().forEach((e,i)=>{const s=i>0?t.cloneNode(!0):t,n=e.parentNode,a=e.nextSibling;s.appendChild(e),a?n.insertBefore(s,a):n.appendChild(s)})}function Y(e,t){j.element(e)&&!j.empty(t)&&Object.entries(t).filter(([,e])=>!j.nullOrUndefined(e)).forEach(([t,i])=>e.setAttribute(t,i))}function K(e,t,i){const s=document.createElement(e);return j.object(t)&&Y(s,t),j.string(i)&&(s.textContent=i),s}function Q(e,t){j.element(e)&&j.element(t)&&t.parentNode.insertBefore(e,t.nextSibling)}function J(e,t,i,s){j.element(t)&&t.appendChild(K(e,i,s))}function G(e){j.nodeList(e)||j.array(e)?Array.from(e).forEach(G):j.element(e)&&j.element(e.parentNode)&&e.parentNode.removeChild(e)}function Z(e){if(!j.element(e))return;let{length:t}=e.childNodes;while(t>0)e.removeChild(e.lastChild),t-=1}function ee(e,t){return j.element(t)&&j.element(t.parentNode)&&j.element(e)?(t.parentNode.replaceChild(e,t),e):null}function te(e,t){if(!j.string(e)||j.empty(e))return{};const i={},s=z({},t);return e.split(",").forEach(e=>{const t=e.trim(),n=t.replace(".",""),a=t.replace(/[[\]]/g,""),r=a.split("="),[o]=r,l=r.length>1?r[1].replace(/["']/g,""):"",c=t.charAt(0);switch(c){case".":j.string(s.class)?i.class=`${s.class} ${n}`:i.class=n;break;case"#":i.id=t.replace("#","");break;case"[":i[o]=l;break;default:break}}),z(s,i)}function ie(e,t){if(!j.element(e))return;let i=t;j.boolean(i)||(i=!e.hidden),e.hidden=i}function se(e,t,i){if(j.nodeList(e))return Array.from(e).map(e=>se(e,t,i));if(j.element(e)){let s="toggle";return"undefined"!==typeof i&&(s=i?"add":"remove"),e.classList[s](t),e.classList.contains(t)}return!1}function ne(e,t){return j.element(e)&&e.classList.contains(t)}function ae(e,t){const{prototype:i}=Element;function s(){return Array.from(document.querySelectorAll(t)).includes(this)}const n=i.matches||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector||s;return n.call(e,t)}function re(e,t){const{prototype:i}=Element;function s(){let e=this;do{if(ae.matches(e,t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null}const n=i.closest||s;return n.call(e,t)}function oe(e){return this.elements.container.querySelectorAll(e)}function le(e){return this.elements.container.querySelector(e)}function ce(e=null,t=!1){j.element(e)&&e.focus({preventScroll:!0,focusVisible:t})}const he={"audio/ogg":"vorbis","audio/wav":"1","video/webm":"vp8, vorbis","video/mp4":"avc1.42E01E, mp4a.40.2","video/ogg":"theora"},ue={audio:"canPlayType"in document.createElement("audio"),video:"canPlayType"in document.createElement("video"),check(e,t){const i=ue[e]||"html5"!==t,s=i&&ue.rangeInput;return{api:i,ui:s}},pip:(()=>document.pictureInPictureEnabled&&!K("video").disablePictureInPicture)(),airplay:j.function(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:"playsInline"in document.createElement("video"),mime(e){if(j.empty(e))return!1;const[t]=e.split("/");let i=e;if(!this.isHTML5||t!==this.type)return!1;Object.keys(he).includes(i)&&(i+=`; codecs="${he[e]}"`);try{return Boolean(i&&this.media.canPlayType(i).replace(/no/,""))}catch{return!1}},textTracks:"textTracks"in document.createElement("video"),rangeInput:(()=>{const e=document.createElement("input");return e.type="range","range"===e.type})(),touch:"ontouchstart"in document.documentElement,transitions:!1!==q,reducedMotion:"matchMedia"in window&&window.matchMedia("(prefers-reduced-motion)").matches};var de=ue;const me=(()=>{let e=!1;try{const t=Object.defineProperty({},"passive",{get(){return e=!0,null}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch{}return e})();function pe(e,t,i,s=!1,n=!0,a=!1){if(!e||!("addEventListener"in e)||j.empty(t)||!j.function(i))return;const r=t.split(" ");let o=a;me&&(o={passive:n,capture:a}),r.forEach(t=>{this&&this.eventListeners&&s&&this.eventListeners.push({element:e,type:t,callback:i,options:o}),e[s?"addEventListener":"removeEventListener"](t,i,o)})}function ge(e,t="",i,s=!0,n=!1){pe.call(this,e,t,i,!0,s,n)}function fe(e,t="",i,s=!0,n=!1){pe.call(this,e,t,i,!1,s,n)}function ye(e,t="",i,s=!0,n=!1){const a=(...r)=>{fe(e,t,a,s,n),i.apply(this,r)};pe.call(this,e,t,a,!0,s,n)}function be(e,t="",i=!1,s={}){if(!j.element(e)||j.empty(t))return;const n=new CustomEvent(t,{bubbles:i,detail:{...s,plyr:this}});e.dispatchEvent(n)}function ve(){this&&this.eventListeners&&(this.eventListeners.forEach(e=>{const{element:t,type:i,callback:s,options:n}=e;t.removeEventListener(i,s,n)}),this.eventListeners=[])}function we(){return new Promise(e=>this.ready?setTimeout(e,0):ge.call(this,this.elements.container,"ready",e)).then(()=>{})}function ke(e){j.promise(e)&&e.then(null,()=>{})}function Te(e){return j.array(e)?e.filter((t,i)=>e.indexOf(t)===i):e}function Ce(e,t){return j.array(e)&&e.length?e.reduce((e,i)=>Math.abs(i-t)({...e,[t/i]:[t,i]}),{});function xe(e){if(!j.array(e)&&(!j.string(e)||!e.includes(":")))return!1;const t=j.array(e)?e:e.split(":");return t.map(Number).every(j.number)}function Ee(e){if(!j.array(e)||!e.every(j.number))return null;const[t,i]=e,s=(e,t)=>0===t?e:s(t,e%t),n=s(t,i);return[t/n,i/n]}function Me(e){const t=e=>xe(e)?e.split(":").map(Number):null;let i=t(e);if(null===i&&(i=t(this.config.ratio)),null===i&&!j.empty(this.embed)&&j.array(this.embed.ratio)&&({ratio:i}=this.embed),null===i&&this.isHTML5){const{videoWidth:e,videoHeight:t}=this.media;i=[e,t]}return Ee(i)}function Pe(e){if(!this.isVideo)return{};const{wrapper:t}=this.elements,i=Me.call(this,e);if(!j.array(i))return{};const[s,n]=Ee(i),a=Ae(`aspect-ratio: ${s}/${n}`),r=100/s*n;if(a?t.style.aspectRatio=`${s}/${n}`:t.style.paddingBottom=`${r}%`,this.isVimeo&&!this.config.vimeo.premium&&this.supported.ui){const e=100/this.media.offsetWidth*Number.parseInt(window.getComputedStyle(this.media).paddingBottom,10),i=(e-r)/(e/50);this.fullscreen.active?t.style.paddingBottom=null:this.media.style.transform=`translateY(-${i}%)`}else this.isHTML5&&t.classList.add(this.config.classNames.videoFixedRatio);return{padding:r,ratio:i}}function Le(e,t,i=.05){const s=e/t,n=Ce(Object.keys(Se),s);return Math.abs(n-s)<=i?Se[n]:[e,t]}function Ie(){const e=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),t=Math.max(document.documentElement.clientHeight||0,window.innerHeight||0);return[e,t]}const $e={getSources(){if(!this.isHTML5)return[];const e=Array.from(this.media.querySelectorAll("source"));return e.filter(e=>{const t=e.getAttribute("type");return!!j.empty(t)||de.mime.call(this,t)})},getQualityOptions(){return this.config.quality.forced?this.config.quality.options:$e.getSources.call(this).map(e=>Number(e.getAttribute("size"))).filter(Boolean)},setup(){if(!this.isHTML5)return;const e=this;e.options.speed=e.config.speed.options,j.empty(this.config.ratio)||Pe.call(e),Object.defineProperty(e.media,"quality",{get(){const t=$e.getSources.call(e),i=t.find(t=>t.getAttribute("src")===e.source);return i&&Number(i.getAttribute("size"))},set(t){if(e.quality!==t){if(e.config.quality.forced&&j.function(e.config.quality.onChange))e.config.quality.onChange(t);else{const i=$e.getSources.call(e),s=i.find(e=>Number(e.getAttribute("size"))===t);if(!s)return;const{currentTime:n,paused:a,preload:r,readyState:o,playbackRate:l}=e.media;e.media.src=s.getAttribute("src"),("none"!==r||o)&&(e.once("loadedmetadata",()=>{e.speed=l,e.currentTime=n,a||ke(e.play())}),e.media.load())}be.call(e,e.media,"qualitychange",!1,{quality:t})}}})},cancelRequests(){this.isHTML5&&(G($e.getSources.call(this)),this.media.setAttribute("src",this.config.blankVideo),this.media.load(),this.debug.log("Cancelled network requests"))}};var Ne=$e;const De=Boolean(window.document.documentMode),Fe=/Edge/.test(navigator.userAgent),_e="WebkitAppearance"in document.documentElement.style&&!/Edge/.test(navigator.userAgent),Re=/iPhone|iPod/i.test(navigator.userAgent)&&navigator.maxTouchPoints>1,Oe="MacIntel"===navigator.platform&&navigator.maxTouchPoints>1,Ve=/iPad|iPhone|iPod/i.test(navigator.userAgent)&&navigator.maxTouchPoints>1;var He={isIE:De,isEdge:Fe,isWebKit:_e,isIPhone:Re,isIPadOS:Oe,isIos:Ve};function je(e){return`${e}-${Math.floor(1e4*Math.random())}`}function qe(e,...t){return j.empty(e)?e:e.toString().replace(/\{(\d+)\}/g,(e,i)=>t[i].toString())}function Ue(e,t){return 0===e||0===t||Number.isNaN(e)||Number.isNaN(t)?0:(e/t*100).toFixed(2)}function Be(e="",t="",i=""){return e.replace(new RegExp(t.toString().replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1"),"g"),i.toString())}function Xe(e=""){return e.toString().replace(/\w\S*/g,e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase())}function ze(e=""){let t=e.toString();return t=Be(t,"-"," "),t=Be(t,"_"," "),t=Xe(t),Be(t," ","")}function We(e=""){let t=e.toString();return t=ze(t),t.charAt(0).toLowerCase()+t.slice(1)}function Ye(e){const t=document.createDocumentFragment(),i=document.createElement("div");return t.appendChild(i),i.innerHTML=e,t.firstChild.textContent}function Ke(e){const t=document.createElement("div");return t.appendChild(e),t.innerHTML}const Qe={pip:"PIP",airplay:"AirPlay",html5:"HTML5",vimeo:"Vimeo",youtube:"YouTube"},Je={get(e="",t={}){if(j.empty(e)||j.empty(t))return"";let i=X(t.i18n,e);if(j.empty(i))return Object.keys(Qe).includes(e)?Qe[e]:"";const s={"{seektime}":t.seekTime,"{title}":t.title};return Object.entries(s).forEach(([e,t])=>{i=Be(i,e,t)}),i}};var Ge=Je;class Ze{constructor(e){(0,v.A)(this,"get",e=>{if(!Ze.supported||!this.enabled)return null;const t=window.localStorage.getItem(this.key);if(j.empty(t))return null;const i=JSON.parse(t);return j.string(e)&&e.length?i[e]:i}),(0,v.A)(this,"set",e=>{if(!Ze.supported||!this.enabled)return;if(!j.object(e))return;let t=this.get();j.empty(t)&&(t={}),z(t,e);try{window.localStorage.setItem(this.key,JSON.stringify(t))}catch{}}),this.enabled=e.config.storage.enabled,this.key=e.config.storage.key}static get supported(){try{if(!("localStorage"in window))return!1;const e="___test";return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch{return!1}}}var et=Ze;function tt(e,t="text",i=!1){return new Promise((s,n)=>{try{const n=new XMLHttpRequest;if(!("withCredentials"in n))return;i&&(n.withCredentials=!0),n.addEventListener("load",()=>{if("text"===t)try{s(JSON.parse(n.responseText))}catch{s(n.responseText)}else s(n.response)}),n.addEventListener("error",()=>{throw new Error(n.status)}),n.open("GET",e,!0),n.responseType=t,n.send()}catch(a){n(a)}})}function it(e,t){if(!j.string(e))return;const i="cache",s=j.string(t);let n=!1;const a=()=>null!==document.getElementById(t),r=(e,t)=>{e.innerHTML=t,s&&a()||document.body.insertAdjacentElement("afterbegin",e)};if(!s||!a()){const a=et.supported,o=document.createElement("div");if(o.setAttribute("hidden",""),s&&o.setAttribute("id",t),a){const e=window.localStorage.getItem(`${i}-${t}`);if(n=null!==e,n){const t=JSON.parse(e);r(o,t.content)}}tt(e).then(e=>{if(!j.empty(e)){if(a)try{window.localStorage.setItem(`${i}-${t}`,JSON.stringify({content:e}))}catch{}r(o,e)}}).catch(()=>{})}}const st=e=>Math.trunc(e/60/60%60,10),nt=e=>Math.trunc(e/60%60,10),at=e=>Math.trunc(e%60,10);function rt(e=0,t=!1,i=!1){if(!j.number(e))return rt(void 0,t,i);const s=e=>`0${e}`.slice(-2);let n=st(e);const a=nt(e),r=at(e);return n=t||n>0?`${n}:`:"",`${i&&e>0?"-":""}${n}${s(a)}:${s(r)}`}const ot={getIconUrl(){const e=new URL(this.config.iconUrl,window.location),t=window.location.host?window.location.host:window.top.location.host,i=e.host!==t||He.isIE&&!window.svg4everybody;return{url:this.config.iconUrl,cors:i}},findElements(){try{return this.elements.controls=le.call(this,this.config.selectors.controls.wrapper),this.elements.buttons={play:oe.call(this,this.config.selectors.buttons.play),pause:le.call(this,this.config.selectors.buttons.pause),restart:le.call(this,this.config.selectors.buttons.restart),rewind:le.call(this,this.config.selectors.buttons.rewind),fastForward:le.call(this,this.config.selectors.buttons.fastForward),mute:le.call(this,this.config.selectors.buttons.mute),pip:le.call(this,this.config.selectors.buttons.pip),airplay:le.call(this,this.config.selectors.buttons.airplay),settings:le.call(this,this.config.selectors.buttons.settings),captions:le.call(this,this.config.selectors.buttons.captions),fullscreen:le.call(this,this.config.selectors.buttons.fullscreen)},this.elements.progress=le.call(this,this.config.selectors.progress),this.elements.inputs={seek:le.call(this,this.config.selectors.inputs.seek),volume:le.call(this,this.config.selectors.inputs.volume)},this.elements.display={buffer:le.call(this,this.config.selectors.display.buffer),currentTime:le.call(this,this.config.selectors.display.currentTime),duration:le.call(this,this.config.selectors.display.duration)},j.element(this.elements.progress)&&(this.elements.display.seekTooltip=this.elements.progress.querySelector(`.${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(e,t){const i="http://www.w3.org/2000/svg",s=ot.getIconUrl.call(this),n=`${s.cors?"":s.url}#${this.config.iconPrefix}`,a=document.createElementNS(i,"svg");Y(a,z(t,{"aria-hidden":"true",focusable:"false"}));const r=document.createElementNS(i,"use"),o=`${n}-${e}`;return"href"in r&&r.setAttributeNS("http://www.w3.org/1999/xlink","href",o),r.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o),a.appendChild(r),a},createLabel(e,t={}){const i=Ge.get(e,this.config),s={...t,class:[t.class,this.config.classNames.hidden].filter(Boolean).join(" ")};return K("span",s,i)},createBadge(e){if(j.empty(e))return null;const t=K("span",{class:this.config.classNames.menu.value});return t.appendChild(K("span",{class:this.config.classNames.menu.badge},e)),t},createButton(e,t){const i=z({},t);let s=We(e);const n={element:"button",toggle:!1,label:null,icon:null,labelPressed:null,iconPressed:null};switch(["element","icon","label"].forEach(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(" ").includes(this.config.classNames.control)||z(i,{class:`${i.class} ${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+=` ${this.config.classNames.control}--overlaid`,s="play",n.label="play",n.icon="play";break;default:j.empty(n.label)&&(n.label=s),j.empty(n.icon)&&(n.icon=e)}const a=K(n.element);return n.toggle?(a.appendChild(ot.createIcon.call(this,n.iconPressed,{class:"icon--pressed"})),a.appendChild(ot.createIcon.call(this,n.icon,{class:"icon--not-pressed"})),a.appendChild(ot.createLabel.call(this,n.labelPressed,{class:"label--pressed"})),a.appendChild(ot.createLabel.call(this,n.label,{class:"label--not-pressed"}))):(a.appendChild(ot.createIcon.call(this,n.icon)),a.appendChild(ot.createLabel.call(this,n.label))),z(i,te(this.config.selectors.buttons[s],i)),Y(a,i),"play"===s?(j.array(this.elements.buttons[s])||(this.elements.buttons[s]=[]),this.elements.buttons[s].push(a)):this.elements.buttons[s]=a,a},createRange(e,t){const i=K("input",z(te(this.config.selectors.inputs[e]),{type:"range",min:0,max:100,step:.01,value:0,autocomplete:"off",role:"slider","aria-label":Ge.get(e,this.config),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":0},t));return this.elements.inputs[e]=i,ot.updateRangeFill.call(this,i),w.setup(i),i},createProgress(e,t){const i=K("progress",z(te(this.config.selectors.display[e]),{min:0,max:100,value:0,role:"progressbar","aria-hidden":!0},t));if("volume"!==e){i.appendChild(K("span",null,"0"));const t={played:"played",buffer:"buffered"}[e],s=t?Ge.get(t,this.config):"";i.textContent=`% ${s.toLowerCase()}`}return this.elements.display[e]=i,i},createTime(e,t){const i=te(this.config.selectors.display[e],t),s=K("div",z(i,{class:`${i.class?i.class:""} ${this.config.classNames.display.time} `.trim(),"aria-label":Ge.get(e,this.config),role:"timer"}),"00:00");return this.elements.display[e]=s,s},bindMenuItemShortcuts(e,t){ge.call(this,e,"keydown keyup",i=>{if(![" ","ArrowUp","ArrowDown","ArrowRight"].includes(i.key))return;if(i.preventDefault(),i.stopPropagation(),"keydown"===i.type)return;const s=ae(e,'[role="menuitemradio"]');if(!s&&[" ","ArrowRight"].includes(i.key))ot.showMenuPanel.call(this,t,!0);else{let t;" "!==i.key&&("ArrowDown"===i.key||s&&"ArrowRight"===i.key?(t=e.nextElementSibling,j.element(t)||(t=e.parentNode.firstElementChild)):(t=e.previousElementSibling,j.element(t)||(t=e.parentNode.lastElementChild)),ce.call(this,t,!0))}},!1),ge.call(this,e,"keyup",e=>{"Return"===e.key&&ot.focusFirstMenuItem.call(this,null,!0)})},createMenuItem({value:e,list:t,type:i,title:s,badge:n=null,checked:a=!1}){const r=te(this.config.selectors.inputs[i]),o=K("button",z(r,{type:"button",role:"menuitemradio",class:`${this.config.classNames.control} ${r.class?r.class:""}`.trim(),"aria-checked":a,value:e})),l=K("span");l.innerHTML=s,j.element(n)&&l.appendChild(n),o.appendChild(l),Object.defineProperty(o,"checked",{enumerable:!0,get(){return"true"===o.getAttribute("aria-checked")},set(e){e&&Array.from(o.parentNode.children).filter(e=>ae(e,'[role="menuitemradio"]')).forEach(e=>e.setAttribute("aria-checked","false")),o.setAttribute("aria-checked",e?"true":"false")}}),this.listeners.bind(o,"click keyup",t=>{if(!j.keyboardEvent(t)||" "===t.key){switch(t.preventDefault(),t.stopPropagation(),o.checked=!0,i){case"language":this.currentTrack=Number(e);break;case"quality":this.quality=e;break;case"speed":this.speed=Number.parseFloat(e);break;default:break}ot.showMenuPanel.call(this,"home",j.keyboardEvent(t))}},i,!1),ot.bindMenuItemShortcuts.call(this,o,i),t.appendChild(o)},formatTime(e=0,t=!1){if(!j.number(e))return e;const i=st(this.duration)>0;return rt(e,i,t)},updateTimeDisplay(e=null,t=0,i=!1){j.element(e)&&j.number(t)&&(e.textContent=ot.formatTime(t,i))},updateVolume(){this.supported.ui&&(j.element(this.elements.inputs.volume)&&ot.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),j.element(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange(e,t=0){j.element(e)&&(e.value=t,ot.updateRangeFill.call(this,e))},updateProgress(e){if(!this.supported.ui||!j.event(e))return;let t=0;const i=(e,t)=>{const i=j.number(t)?t:0,s=j.element(e)?e:this.elements.display.buffer;if(j.element(s)){s.value=i;const e=s.getElementsByTagName("span")[0];j.element(e)&&(e.childNodes[0].nodeValue=i)}};if(e)switch(e.type){case"timeupdate":case"seeking":case"seeked":t=Ue(this.currentTime,this.duration),"timeupdate"===e.type&&ot.setRange.call(this,this.elements.inputs.seek,t);break;case"playing":case"progress":i(this.elements.display.buffer,100*this.buffered);break;default:break}},updateRangeFill(e){const t=j.event(e)?e.target:e;if(j.element(t)&&"range"===t.getAttribute("type")){if(ae(t,this.config.selectors.inputs.seek)){t.setAttribute("aria-valuenow",this.currentTime);const e=ot.formatTime(this.currentTime),i=ot.formatTime(this.duration),s=Ge.get("seekLabel",this.config);t.setAttribute("aria-valuetext",s.replace("{currentTime}",e).replace("{duration}",i))}else if(ae(t,this.config.selectors.inputs.volume)){const e=100*t.value;t.setAttribute("aria-valuenow",e),t.setAttribute("aria-valuetext",`${e.toFixed(1)}%`)}else t.setAttribute("aria-valuenow",t.value);(He.isWebKit||He.isIPadOS)&&t.style.setProperty("--value",t.value/t.max*100+"%")}},updateSeekTooltip(e){if(!this.config.tooltips.seek||!j.element(this.elements.inputs.seek)||!j.element(this.elements.display.seekTooltip)||0===this.duration)return;const t=this.elements.display.seekTooltip,i=`${this.config.classNames.tooltip}--visible`,s=e=>se(t,i,e);if(this.touch)return void s(!1);let n=0;const a=this.elements.progress.getBoundingClientRect();if(j.event(e)){const t=e.pageX-e.clientX;n=100/a.width*(e.pageX-a.left-t)}else{if(!ne(t,i))return;n=Number.parseFloat(t.style.left,10)}n<0?n=0:n>100&&(n=100);const r=this.duration/100*n;t.textContent=ot.formatTime(r);const o=this.config.markers?.points?.find(({time:e})=>e===Math.round(r));o&&t.insertAdjacentHTML("afterbegin",`${o.label}
`),t.style.left=`${n}%`,j.event(e)&&["mouseenter","mouseleave"].includes(e.type)&&s("mouseenter"===e.type)},timeUpdate(e){const t=!j.element(this.elements.display.duration)&&this.config.invertTime;ot.updateTimeDisplay.call(this,this.elements.display.currentTime,t?this.duration-this.currentTime:this.currentTime,t),e&&"timeupdate"===e.type&&this.media.seeking||ot.updateProgress.call(this,e)},durationUpdate(){if(!this.supported.ui||!this.config.invertTime&&this.currentTime)return;if(this.duration>=2**32)return ie(this.elements.display.currentTime,!0),void ie(this.elements.progress,!0);j.element(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute("aria-valuemax",this.duration);const e=j.element(this.elements.display.duration);!e&&this.config.displayDuration&&this.paused&&ot.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),e&&ot.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),this.config.markers.enabled&&ot.setMarkers.call(this),ot.updateSeekTooltip.call(this)},toggleMenuButton(e,t){ie(this.elements.settings.buttons[e],!t)},updateSetting(e,t,i){const s=this.elements.settings.panels[e];let n=null,a=t;if("captions"===e)n=this.currentTrack;else{if(n=j.empty(i)?this[e]:i,j.empty(n)&&(n=this.config[e].default),!j.empty(this.options[e])&&!this.options[e].includes(n))return void this.debug.warn(`Unsupported value of '${n}' for ${e}`);if(!this.config[e].options.includes(n))return void this.debug.warn(`Disabled value of '${n}' for ${e}`)}if(j.element(a)||(a=s&&s.querySelector('[role="menu"]')),!j.element(a))return;const r=this.elements.settings.buttons[e].querySelector(`.${this.config.classNames.menu.value}`);r.innerHTML=ot.getLabel.call(this,e,n);const o=a&&a.querySelector(`[value="${n}"]`);j.element(o)&&(o.checked=!0)},getLabel(e,t){switch(e){case"speed":return 1===t?Ge.get("normal",this.config):`${t}×`;case"quality":if(j.number(t)){const e=Ge.get(`qualityLabel.${t}`,this.config);return e.length?e:`${t}p`}return Xe(t);case"captions":return dt.getLabel.call(this);default:return null}},setQualityMenu(e){if(!j.element(this.elements.settings.panels.quality))return;const t="quality",i=this.elements.settings.panels.quality.querySelector('[role="menu"]');j.array(e)&&(this.options.quality=Te(e).filter(e=>this.config.quality.options.includes(e)));const s=!j.empty(this.options.quality)&&this.options.quality.length>1;if(ot.toggleMenuButton.call(this,t,s),Z(i),ot.checkMenu.call(this),!s)return;const n=e=>{const t=Ge.get(`qualityBadge.${e}`,this.config);return t.length?ot.createBadge.call(this,t):null};this.options.quality.sort((e,t)=>{const i=this.config.quality.options;return i.indexOf(e)>i.indexOf(t)?1:-1}).forEach(e=>{ot.createMenuItem.call(this,{value:e,list:i,type:t,title:ot.getLabel.call(this,"quality",e),badge:n(e)})}),ot.updateSetting.call(this,t,i)},setCaptionsMenu(){if(!j.element(this.elements.settings.panels.captions))return;const e="captions",t=this.elements.settings.panels.captions.querySelector('[role="menu"]'),i=dt.getTracks.call(this),s=Boolean(i.length);if(ot.toggleMenuButton.call(this,e,s),Z(t),ot.checkMenu.call(this),!s)return;const n=i.map((e,i)=>({value:i,checked:this.captions.toggled&&this.currentTrack===i,title:dt.getLabel.call(this,e),badge:e.language&&ot.createBadge.call(this,e.language.toUpperCase()),list:t,type:"language"}));n.unshift({value:-1,checked:!this.captions.toggled,title:Ge.get("disabled",this.config),list:t,type:"language"}),n.forEach(ot.createMenuItem.bind(this)),ot.updateSetting.call(this,e,t)},setSpeedMenu(){if(!j.element(this.elements.settings.panels.speed))return;const e="speed",t=this.elements.settings.panels.speed.querySelector('[role="menu"]');this.options.speed=this.options.speed.filter(e=>e>=this.minimumSpeed&&e<=this.maximumSpeed);const i=!j.empty(this.options.speed)&&this.options.speed.length>1;ot.toggleMenuButton.call(this,e,i),Z(t),ot.checkMenu.call(this),i&&(this.options.speed.forEach(i=>{ot.createMenuItem.call(this,{value:i,list:t,type:e,title:ot.getLabel.call(this,"speed",i)})}),ot.updateSetting.call(this,e,t))},checkMenu(){const{buttons:e}=this.elements.settings,t=!j.empty(e)&&Object.values(e).some(e=>!e.hidden);ie(this.elements.settings.menu,!t)},focusFirstMenuItem(e,t=!1){if(this.elements.settings.popup.hidden)return;let i=e;j.element(i)||(i=Object.values(this.elements.settings.panels).find(e=>!e.hidden));const s=i.querySelector('[role^="menuitem"]');ce.call(this,s,t)},toggleMenu(e){const{popup:t}=this.elements.settings,i=this.elements.buttons.settings;if(!j.element(t)||!j.element(i))return;const{hidden:s}=t;let n=s;if(j.boolean(e))n=e;else if(j.keyboardEvent(e)&&"Escape"===e.key)n=!1;else if(j.event(e)){const s=j.function(e.composedPath)?e.composedPath()[0]:e.target,a=t.contains(s);if(a||!a&&e.target!==i&&n)return}i.setAttribute("aria-expanded",n),ie(t,!n),se(this.elements.container,this.config.classNames.menu.open,n),n&&j.keyboardEvent(e)?ot.focusFirstMenuItem.call(this,null,!0):n||s||ce.call(this,i,j.keyboardEvent(e))},getMenuSize(e){const t=e.cloneNode(!0);t.style.position="absolute",t.style.opacity=0,t.removeAttribute("hidden"),e.parentNode.appendChild(t);const i=t.scrollWidth,s=t.scrollHeight;return G(t),{width:i,height:s}},showMenuPanel(e="",t=!1){const i=this.elements.container.querySelector(`#plyr-settings-${this.id}-${e}`);if(!j.element(i))return;const s=i.parentNode,n=Array.from(s.children).find(e=>!e.hidden);if(de.transitions&&!de.reducedMotion){s.style.width=`${n.scrollWidth}px`,s.style.height=`${n.scrollHeight}px`;const e=ot.getMenuSize.call(this,i),t=e=>{e.target===s&&["width","height"].includes(e.propertyName)&&(s.style.width="",s.style.height="",fe.call(this,s,q,t))};ge.call(this,s,q,t),s.style.width=`${e.width}px`,s.style.height=`${e.height}px`}ie(n,!0),ie(i,!1),ot.focusFirstMenuItem.call(this,i,t)},setDownloadUrl(){const e=this.elements.buttons.download;j.element(e)&&e.setAttribute("href",this.download)},create(e){const{bindMenuItemShortcuts:t,createButton:i,createProgress:s,createRange:n,createTime:a,setQualityMenu:r,setSpeedMenu:o,showMenuPanel:l}=ot;this.elements.controls=null,j.array(this.config.controls)&&this.config.controls.includes("play-large")&&this.elements.container.appendChild(i.call(this,"play-large"));const c=K("div",te(this.config.selectors.controls.wrapper));this.elements.controls=c;const h={class:"plyr__controls__item"};return Te(j.array(this.config.controls)?this.config.controls:[]).forEach(r=>{if("restart"===r&&c.appendChild(i.call(this,"restart",h)),"rewind"===r&&c.appendChild(i.call(this,"rewind",h)),"play"===r&&c.appendChild(i.call(this,"play",h)),"fast-forward"===r&&c.appendChild(i.call(this,"fast-forward",h)),"progress"===r){const t=K("div",{class:`${h.class} plyr__progress__container`}),i=K("div",te(this.config.selectors.progress));if(i.appendChild(n.call(this,"seek",{id:`plyr-seek-${e.id}`})),i.appendChild(s.call(this,"buffer")),this.config.tooltips.seek){const e=K("span",{class:this.config.classNames.tooltip},"00:00");i.appendChild(e),this.elements.display.seekTooltip=e}this.elements.progress=i,t.appendChild(this.elements.progress),c.appendChild(t)}if("current-time"===r&&c.appendChild(a.call(this,"currentTime",h)),"duration"===r&&c.appendChild(a.call(this,"duration",h)),"mute"===r||"volume"===r){let{volume:t}=this.elements;if(j.element(t)&&c.contains(t)||(t=K("div",z({},h,{class:`${h.class} plyr__volume`.trim()})),this.elements.volume=t,c.appendChild(t)),"mute"===r&&t.appendChild(i.call(this,"mute")),"volume"===r&&!He.isIos&&!He.isIPadOS){const i={max:1,step:.05,value:this.config.volume};t.appendChild(n.call(this,"volume",z(i,{id:`plyr-volume-${e.id}`})))}}if("captions"===r&&c.appendChild(i.call(this,"captions",h)),"settings"===r&&!j.empty(this.config.settings)){const s=K("div",z({},h,{class:`${h.class} plyr__menu`.trim(),hidden:""}));s.appendChild(i.call(this,"settings",{"aria-haspopup":!0,"aria-controls":`plyr-settings-${e.id}`,"aria-expanded":!1}));const n=K("div",{class:"plyr__menu__container",id:`plyr-settings-${e.id}`,hidden:""}),a=K("div"),r=K("div",{id:`plyr-settings-${e.id}-home`}),o=K("div",{role:"menu"});r.appendChild(o),a.appendChild(r),this.elements.settings.panels.home=r,this.config.settings.forEach(i=>{const s=K("button",z(te(this.config.selectors.buttons.settings),{type:"button",class:`${this.config.classNames.control} ${this.config.classNames.control}--forward`,role:"menuitem","aria-haspopup":!0,hidden:""}));t.call(this,s,i),ge.call(this,s,"click",()=>{l.call(this,i,!1)});const n=K("span",null,Ge.get(i,this.config)),r=K("span",{class:this.config.classNames.menu.value});r.innerHTML=e[i],n.appendChild(r),s.appendChild(n),o.appendChild(s);const c=K("div",{id:`plyr-settings-${e.id}-${i}`,hidden:""}),h=K("button",{type:"button",class:`${this.config.classNames.control} ${this.config.classNames.control}--back`});h.appendChild(K("span",{"aria-hidden":!0},Ge.get(i,this.config))),h.appendChild(K("span",{class:this.config.classNames.hidden},Ge.get("menuBack",this.config))),ge.call(this,c,"keydown",e=>{"ArrowLeft"===e.key&&(e.preventDefault(),e.stopPropagation(),l.call(this,"home",!0))},!1),ge.call(this,h,"click",()=>{l.call(this,"home",!1)}),c.appendChild(h),c.appendChild(K("div",{role:"menu"})),a.appendChild(c),this.elements.settings.buttons[i]=s,this.elements.settings.panels[i]=c}),n.appendChild(a),s.appendChild(n),c.appendChild(s),this.elements.settings.popup=n,this.elements.settings.menu=s}if("pip"===r&&de.pip&&c.appendChild(i.call(this,"pip",h)),"airplay"===r&&de.airplay&&c.appendChild(i.call(this,"airplay",h)),"download"===r){const e=z({},h,{element:"a",href:this.download,target:"_blank"});this.isHTML5&&(e.download="");const{download:t}=this.config.urls;!j.url(t)&&this.isEmbed&&z(e,{icon:`logo-${this.provider}`,label:this.provider}),c.appendChild(i.call(this,"download",e))}"fullscreen"===r&&c.appendChild(i.call(this,"fullscreen",h))}),this.isHTML5&&r.call(this,Ne.getQualityOptions.call(this)),o.call(this),c},inject(){if(this.config.loadSprite){const e=ot.getIconUrl.call(this);e.cors&&it(e.url,"sprite-plyr")}this.id=Math.floor(1e4*Math.random());let e=null;this.elements.controls=null;const t={id:this.id,seektime:this.config.seekTime,title:this.config.title};let i=!0;j.function(this.config.controls)&&(this.config.controls=this.config.controls.call(this,t)),this.config.controls||(this.config.controls=[]),j.element(this.config.controls)||j.string(this.config.controls)?e=this.config.controls:(e=ot.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality,captions:dt.getLabel.call(this)}),i=!1);const s=e=>{let i=e;return Object.entries(t).forEach(([e,t])=>{i=Be(i,`{${e}}`,t)}),i};let n;i&&j.string(this.config.controls)&&(e=s(e)),j.string(this.config.selectors.controls.container)&&(n=document.querySelector(this.config.selectors.controls.container)),j.element(n)||(n=this.elements.container);const a=j.element(e)?"insertAdjacentElement":"insertAdjacentHTML";if(n[a]("afterbegin",e),j.element(this.elements.controls)||ot.findElements.call(this),!j.empty(this.elements.buttons)){const e=e=>{const t=this.config.classNames.controlPressed;e.setAttribute("aria-pressed","false"),Object.defineProperty(e,"pressed",{configurable:!0,enumerable:!0,get(){return ne(e,t)},set(i=!1){se(e,t,i),e.setAttribute("aria-pressed",i?"true":"false")}})};Object.values(this.elements.buttons).filter(Boolean).forEach(t=>{j.array(t)||j.nodeList(t)?Array.from(t).filter(Boolean).forEach(e):e(t)})}if(He.isEdge&&U(n),this.config.tooltips.controls){const{classNames:e,selectors:t}=this.config,i=`${t.controls.wrapper} ${t.labels} .${e.hidden}`,s=oe.call(this,i);Array.from(s).forEach(e=>{se(e,this.config.classNames.hidden,!1),se(e,this.config.classNames.tooltip,!0)})}},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{}},setMarkers(){if(!this.duration||this.elements.markers)return;const e=this.config.markers?.points?.filter(({time:e})=>e>0&&ese(s,n,e);e.forEach(e=>{const t=K("span",{class:this.config.classNames.marker},""),n=e.time/this.duration*100+"%";s&&(t.addEventListener("mouseenter",()=>{e.label||(s.style.left=n,s.innerHTML=e.label,a(!0))}),t.addEventListener("mouseleave",()=>{a(!1)})),t.addEventListener("click",()=>{this.currentTime=e.time}),t.style.left=n,i.appendChild(t)}),t.appendChild(i),this.config.tooltips.seek||(s=K("span",{class:this.config.classNames.tooltip},""),t.appendChild(s)),this.elements.markers={points:i,tip:s},this.elements.progress.appendChild(t)}};var lt=ot;function ct(e,t=!0){let i=e;if(t){const e=document.createElement("a");e.href=i,i=e.href}try{return new URL(i)}catch{return null}}function ht(e){const t=new URLSearchParams;return j.object(e)&&Object.entries(e).forEach(([e,i])=>{t.set(e,i)}),t}const ut={setup(){if(!this.supported.ui)return;if(!this.isVideo||this.isYouTube||this.isHTML5&&!de.textTracks)return void(j.array(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&<.setCaptionsMenu.call(this));if(j.element(this.elements.captions)||(this.elements.captions=K("div",te(this.config.selectors.captions)),this.elements.captions.setAttribute("dir","auto"),Q(this.elements.captions,this.elements.wrapper)),He.isIE&&window.URL){const e=this.media.querySelectorAll("track");Array.from(e).forEach(e=>{const t=e.getAttribute("src"),i=ct(t);null!==i&&i.hostname!==window.location.href.hostname&&["http:","https:"].includes(i.protocol)&&tt(t,"blob").then(t=>{e.setAttribute("src",window.URL.createObjectURL(t))}).catch(()=>{G(e)})})}const e=navigator.languages||[navigator.language||navigator.userLanguage||"en"],t=Te(e.map(e=>e.split("-")[0]));let i=(this.storage.get("language")||this.captions.language||this.config.captions.language||"auto").toLowerCase();"auto"===i&&([i]=t);let s=this.storage.get("captions")||this.captions.active;if(j.boolean(s)||({active:s}=this.config.captions),Object.assign(this.captions,{toggled:!1,active:s,language:i,languages:t}),this.isHTML5){const e=this.config.captions.update?"addtrack removetrack":"removetrack";ge.call(this,this.media.textTracks,e,ut.update.bind(this))}setTimeout(ut.update.bind(this),0)},update(){const e=ut.getTracks.call(this,!0),{active:t,language:i,meta:s,currentTrackNode:n}=this.captions,a=Boolean(e.find(e=>e.language===i));this.isHTML5&&this.isVideo&&e.filter(e=>!s.get(e)).forEach(e=>{this.debug.log("Track added",e),s.set(e,{default:"showing"===e.mode}),"showing"===e.mode&&(e.mode="hidden"),ge.call(this,e,"cuechange",()=>ut.updateCues.call(this))}),(a&&this.language!==i||!e.includes(n))&&(ut.setLanguage.call(this,i),ut.toggle.call(this,t&&a)),this.elements&&se(this.elements.container,this.config.classNames.captions.enabled,!j.empty(e)),j.array(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&<.setCaptionsMenu.call(this)},toggle(e,t=!0){if(!this.supported.ui)return;const{toggled:i}=this.captions,s=this.config.classNames.captions.active,n=j.nullOrUndefined(e)?!i:e;if(n!==i){if(t||(this.captions.active=n,this.storage.set({captions:n})),!this.language&&n&&!t){const e=ut.getTracks.call(this),t=ut.findTrack.call(this,[this.captions.language,...this.captions.languages],!0);return this.captions.language=t.language,void ut.set.call(this,e.indexOf(t))}this.elements.buttons.captions&&(this.elements.buttons.captions.pressed=n),se(this.elements.container,s,n),this.captions.toggled=n,lt.updateSetting.call(this,"captions"),be.call(this,this.media,n?"captionsenabled":"captionsdisabled")}setTimeout(()=>{n&&this.captions.toggled&&(this.captions.currentTrackNode.mode="hidden")})},set(e,t=!0){const i=ut.getTracks.call(this);if(-1!==e)if(j.number(e))if(e in i){if(this.captions.currentTrack!==e){this.captions.currentTrack=e;const s=i[e],{language:n}=s||{};this.captions.currentTrackNode=s,lt.updateSetting.call(this,"captions"),t||(this.captions.language=n,this.storage.set({language:n})),this.isVimeo&&this.embed.enableTextTrack(n),be.call(this,this.media,"languagechange")}ut.toggle.call(this,!0,t),this.isHTML5&&this.isVideo&&ut.updateCues.call(this)}else this.debug.warn("Track not found",e);else this.debug.warn("Invalid caption argument",e);else ut.toggle.call(this,!1,t)},setLanguage(e,t=!0){if(!j.string(e))return void this.debug.warn("Invalid language argument",e);const i=e.toLowerCase();this.captions.language=i;const s=ut.getTracks.call(this),n=ut.findTrack.call(this,[i]);ut.set.call(this,s.indexOf(n),t)},getTracks(e=!1){const t=Array.from((this.media||{}).textTracks||[]);return t.filter(t=>!this.isHTML5||e||this.captions.meta.has(t)).filter(e=>["captions","subtitles"].includes(e.kind))},findTrack(e,t=!1){const i=ut.getTracks.call(this),s=e=>Number((this.captions.meta.get(e)||{}).default),n=Array.from(i).sort((e,t)=>s(t)-s(e));let a;return e.every(e=>(a=n.find(t=>t.language===e),!a)),a||(t?n[0]:void 0)},getCurrentTrack(){return ut.getTracks.call(this)[this.currentTrack]},getLabel(e){let t=e;return!j.track(t)&&de.textTracks&&this.captions.toggled&&(t=ut.getCurrentTrack.call(this)),j.track(t)?j.empty(t.label)?j.empty(t.language)?Ge.get("enabled",this.config):e.language.toUpperCase():t.label:Ge.get("disabled",this.config)},updateCues(e){if(!this.supported.ui)return;if(!j.element(this.elements.captions))return void this.debug.warn("No captions element to render to");if(!j.nullOrUndefined(e)&&!Array.isArray(e))return void this.debug.warn("updateCues: Invalid input",e);let t=e;if(!t){const e=ut.getCurrentTrack.call(this);t=Array.from((e||{}).activeCues||[]).map(e=>e.getCueAsHTML()).map(Ke)}const i=t.map(e=>e.trim()).join("\n"),s=i!==this.elements.captions.innerHTML;if(s){Z(this.elements.captions);const e=K("span",te(this.config.selectors.caption));e.innerHTML=i,this.elements.captions.appendChild(e),be.call(this,this.media,"cuechange")}}};var dt=ut;const mt={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.8.3/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:[.5,.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",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"},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:"",withCredentials:!1},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:[]}};var pt=mt;const gt={active:"picture-in-picture",inactive:"inline"};const ft={html5:"html5",youtube:"youtube",vimeo:"vimeo"},yt={audio:"audio",video:"video"};function bt(e){return/^(?:https?:\/\/)?(?:www\.)?(?:youtube\.com|youtube-nocookie\.com|youtu\.?be)\/.+$/.test(e)?ft.youtube:/^https?:\/\/player.vimeo.com\/video\/\d{0,9}(?=\b|\/)/.test(e)?ft.vimeo:null}function vt(){}class wt{constructor(e=!1){this.enabled=window.console&&e,this.enabled&&this.log("Debugging enabled")}get log(){return this.enabled?Function.prototype.bind.call(console.log,console):vt}get warn(){return this.enabled?Function.prototype.bind.call(console.warn,console):vt}get error(){return this.enabled?Function.prototype.bind.call(console.error,console):vt}}class kt{constructor(e){(0,v.A)(this,"onChange",()=>{if(!this.supported)return;const e=this.player.elements.buttons.fullscreen;j.element(e)&&(e.pressed=this.active);const t=this.target===this.player.media?this.target:this.player.elements.container;be.call(this.player,t,this.active?"enterfullscreen":"exitfullscreen",!0)}),(0,v.A)(this,"toggleFallback",(e=!1)=>{if(e?this.scrollPosition={x:window.scrollX??0,y:window.scrollY??0}:window.scrollTo(this.scrollPosition.x,this.scrollPosition.y),document.body.style.overflow=e?"hidden":"",se(this.target,this.player.config.classNames.fullscreen.fallback,e),He.isIos){let t=document.head.querySelector('meta[name="viewport"]');const i="viewport-fit=cover";t||(t=document.createElement("meta"),t.setAttribute("name","viewport"));const s=j.string(t.content)&&t.content.includes(i);e?(this.cleanupViewport=!s,s||(t.content+=`,${i}`)):this.cleanupViewport&&(t.content=t.content.split(",").filter(e=>e.trim()!==i).join(","))}this.onChange()}),(0,v.A)(this,"trapFocus",e=>{if(He.isIos||He.isIPadOS||!this.active||"Tab"!==e.key)return;const t=document.activeElement,i=oe.call(this.player,"a[href], button:not(:disabled), input:not(:disabled), [tabindex]"),[s]=i,n=i[i.length-1];t!==n||e.shiftKey?t===s&&e.shiftKey&&(n.focus(),e.preventDefault()):(s.focus(),e.preventDefault())}),(0,v.A)(this,"update",()=>{if(this.supported){let e;e=this.forceFallback?"Fallback (forced)":kt.nativeSupported?"Native":"Fallback",this.player.debug.log(`${e} fullscreen enabled`)}else this.player.debug.log("Fullscreen not supported and fallback disabled");se(this.player.elements.container,this.player.config.classNames.fullscreen.enabled,this.supported)}),(0,v.A)(this,"enter",()=>{this.supported&&(He.isIos&&this.player.config.fullscreen.iosNative?this.player.isVimeo?this.player.embed.requestFullscreen():this.target.webkitEnterFullscreen():!kt.nativeSupported||this.forceFallback?this.toggleFallback(!0):this.prefix?j.empty(this.prefix)||this.target[`${this.prefix}Request${this.property}`]():this.target.requestFullscreen({navigationUI:"hide"}))}),(0,v.A)(this,"exit",()=>{if(this.supported)if(He.isIos&&this.player.config.fullscreen.iosNative)this.player.isVimeo?this.player.embed.exitFullscreen():this.target.webkitEnterFullscreen(),ke(this.player.play());else if(!kt.nativeSupported||this.forceFallback)this.toggleFallback(!1);else if(this.prefix){if(!j.empty(this.prefix)){const e="moz"===this.prefix?"Cancel":"Exit";document[`${this.prefix}${e}${this.property}`]()}}else(document.cancelFullScreen||document.exitFullscreen).call(document)}),(0,v.A)(this,"toggle",()=>{this.active?this.exit():this.enter()}),this.player=e,this.prefix=kt.prefix,this.property=kt.property,this.scrollPosition={x:0,y:0},this.forceFallback="force"===e.config.fullscreen.fallback,this.player.elements.fullscreen=e.config.fullscreen.container&&re(this.player.elements.container,e.config.fullscreen.container),ge.call(this.player,document,"ms"===this.prefix?"MSFullscreenChange":`${this.prefix}fullscreenchange`,()=>{this.onChange()}),ge.call(this.player,this.player.elements.container,"dblclick",e=>{j.element(this.player.elements.controls)&&this.player.elements.controls.contains(e.target)||this.player.listeners.proxy(e,this.toggle,"fullscreen")}),ge.call(this,this.player.elements.container,"keydown",e=>this.trapFocus(e)),this.update()}static get nativeSupported(){return!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)}get useNative(){return kt.nativeSupported&&!this.forceFallback}static get prefix(){if(j.function(document.exitFullscreen))return"";let e="";const t=["webkit","moz","ms"];return t.some(t=>!(!j.function(document[`${t}ExitFullscreen`])&&!j.function(document[`${t}CancelFullScreen`]))&&(e=t,!0)),e}static get property(){return"moz"===this.prefix?"FullScreen":"Fullscreen"}get supported(){return[this.player.config.fullscreen.enabled,this.player.isVideo,kt.nativeSupported||this.player.config.fullscreen.fallback,!this.player.isYouTube||kt.nativeSupported||!He.isIos||this.player.config.playsinline&&!this.player.config.fullscreen.iosNative].every(Boolean)}get active(){if(!this.supported)return!1;if(!kt.nativeSupported||this.forceFallback)return ne(this.target,this.player.config.classNames.fullscreen.fallback);const e=this.prefix?this.target.getRootNode()[`${this.prefix}${this.property}Element`]:this.target.getRootNode().fullscreenElement;return e&&e.shadowRoot?e===this.target.getRootNode().host:e===this.target}get target(){return He.isIos&&this.player.config.fullscreen.iosNative?this.player.media:this.player.elements.fullscreen??this.player.elements.container}}var Tt=kt;function Ct(e,t=1){return new Promise((i,s)=>{const n=new Image,a=()=>{delete n.onload,delete n.onerror,(n.naturalWidth>=t?i:s)(n)};Object.assign(n,{onload:a,onerror:a,src:e})})}const At={addStyleHook(){se(this.elements.container,this.config.selectors.container.replace(".",""),!0),se(this.elements.container,this.config.classNames.uiSupported,this.supported.ui)},toggleNativeControls(e=!1){e&&this.isHTML5?this.media.setAttribute("controls",""):this.media.removeAttribute("controls")},build(){if(this.listeners.media(),!this.supported.ui)return this.debug.warn(`Basic support only for ${this.provider} ${this.type}`),void At.toggleNativeControls.call(this,!0);j.element(this.elements.controls)||(lt.inject.call(this),this.listeners.controls()),At.toggleNativeControls.call(this),this.isHTML5&&dt.setup.call(this),this.volume=null,this.muted=null,this.loop=null,this.quality=null,this.speed=null,lt.updateVolume.call(this),lt.timeUpdate.call(this),lt.durationUpdate.call(this),At.checkPlaying.call(this),se(this.elements.container,this.config.classNames.pip.supported,de.pip&&this.isHTML5&&this.isVideo),se(this.elements.container,this.config.classNames.airplay.supported,de.airplay&&this.isHTML5),se(this.elements.container,this.config.classNames.isTouch,this.touch),this.ready=!0,setTimeout(()=>{be.call(this,this.media,"ready")},0),At.setTitle.call(this),this.poster&&At.setPoster.call(this,this.poster,!1).catch(()=>{}),this.config.duration&<.durationUpdate.call(this),this.config.mediaMetadata&<.setMediaMetadata.call(this)},setTitle(){let e=Ge.get("play",this.config);if(j.string(this.config.title)&&!j.empty(this.config.title)&&(e+=`, ${this.config.title}`),Array.from(this.elements.buttons.play||[]).forEach(t=>{t.setAttribute("aria-label",e)}),this.isEmbed){const e=le.call(this,"iframe");if(!j.element(e))return;const t=j.empty(this.config.title)?"video":this.config.title,i=Ge.get("frameTitle",this.config);e.setAttribute("title",i.replace("{title}",t))}},togglePoster(e){se(this.elements.container,this.config.classNames.posterEnabled,e)},setPoster(e,t=!0){return t&&this.poster?Promise.reject(new Error("Poster already set")):(this.media.setAttribute("data-poster",e),this.elements.poster.removeAttribute("hidden"),we.call(this).then(()=>Ct(e)).catch(t=>{throw e===this.poster&&At.togglePoster.call(this,!1),t}).then(()=>{if(e!==this.poster)throw new Error("setPoster cancelled by later call to setPoster")}).then(()=>(Object.assign(this.elements.poster.style,{backgroundImage:`url('${e}')`,backgroundSize:""}),At.togglePoster.call(this,!0),e)))},checkPlaying(e){se(this.elements.container,this.config.classNames.playing,this.playing),se(this.elements.container,this.config.classNames.paused,this.paused),se(this.elements.container,this.config.classNames.stopped,this.stopped),Array.from(this.elements.buttons.play||[]).forEach(e=>{Object.assign(e,{pressed:this.playing}),e.setAttribute("aria-label",Ge.get(this.playing?"pause":"play",this.config))}),j.event(e)&&"timeupdate"===e.type||At.toggleControls.call(this)},checkLoading(e){this.loading=["stalled","waiting"].includes(e.type),clearTimeout(this.timers.loading),this.timers.loading=setTimeout(()=>{se(this.elements.container,this.config.classNames.loading,this.loading),At.toggleControls.call(this)},this.loading?250:0)},toggleControls(e){const{controls:t}=this.elements;if(t&&this.config.hideControls){const i=this.touch&&this.lastSeekTime+2e3>Date.now();this.toggleControls(Boolean(e||this.loading||this.paused||t.pressed||t.hover||i))}},migrateStyles(){Object.values({...this.media.style}).filter(e=>!j.empty(e)&&j.string(e)&&e.startsWith("--plyr")).forEach(e=>{this.elements.container.style.setProperty(e,this.media.style.getPropertyValue(e)),this.media.style.removeProperty(e)}),j.empty(this.media.style)&&this.media.removeAttribute("style")}};var St=At;class xt{constructor(e){(0,v.A)(this,"firstTouch",()=>{const{player:e}=this,{elements:t}=e;e.touch=!0,se(t.container,e.config.classNames.isTouch,!0)}),(0,v.A)(this,"global",(e=!0)=>{const{player:t}=this;t.config.keyboard.global&&pe.call(t,window,"keydown keyup",this.handleKey,e,!1),pe.call(t,document.body,"click",this.toggleMenu,e),ye.call(t,document.body,"touchstart",this.firstTouch)}),(0,v.A)(this,"container",()=>{const{player:e}=this,{config:t,elements:i,timers:s}=e;!t.keyboard.global&&t.keyboard.focused&&ge.call(e,i.container,"keydown keyup",this.handleKey,!1),ge.call(e,i.container,"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen",t=>{const{controls:n}=i;n&&"enterfullscreen"===t.type&&(n.pressed=!1,n.hover=!1);const a=["touchstart","touchmove","mousemove"].includes(t.type);let r=0;a&&(St.toggleControls.call(e,!0),r=e.touch?3e3:2e3),clearTimeout(s.controls),s.controls=setTimeout(()=>St.toggleControls.call(e,!1),r)});const n=()=>{if(!e.isVimeo||e.config.vimeo.premium)return;const t=i.wrapper,{active:s}=e.fullscreen,[n,a]=Me.call(e),r=Ae(`aspect-ratio: ${n} / ${a}`);if(!s)return void(r?(t.style.width=null,t.style.height=null):(t.style.maxWidth=null,t.style.margin=null));const[o,l]=Ie(),c=o/l>n/a;r?(t.style.width=c?"auto":"100%",t.style.height=c?"100%":"auto"):(t.style.maxWidth=c?l/a*n+"px":null,t.style.margin=c?"0 auto":null)},a=()=>{clearTimeout(s.resized),s.resized=setTimeout(n,50)};ge.call(e,i.container,"enterfullscreen exitfullscreen",t=>{const{target:s}=e.fullscreen;if(s!==i.container)return;if(!e.isEmbed&&j.empty(e.config.ratio))return;n();const r="enterfullscreen"===t.type?ge:fe;r.call(e,window,"resize",a)})}),(0,v.A)(this,"media",()=>{const{player:e}=this,{elements:t}=e;if(ge.call(e,e.media,"timeupdate seeking seeked",t=>lt.timeUpdate.call(e,t)),ge.call(e,e.media,"durationchange loadeddata loadedmetadata",t=>lt.durationUpdate.call(e,t)),ge.call(e,e.media,"ended",()=>{e.isHTML5&&e.isVideo&&e.config.resetOnEnd&&(e.restart(),e.pause())}),ge.call(e,e.media,"progress playing seeking seeked",t=>lt.updateProgress.call(e,t)),ge.call(e,e.media,"volumechange",t=>lt.updateVolume.call(e,t)),ge.call(e,e.media,"playing play pause ended emptied timeupdate",t=>St.checkPlaying.call(e,t)),ge.call(e,e.media,"waiting canplay seeked playing",t=>St.checkLoading.call(e,t)),e.supported.ui&&e.config.clickToPlay&&!e.isAudio){const i=le.call(e,`.${e.config.classNames.video}`);if(!j.element(i))return;ge.call(e,t.container,"click",s=>{const n=[t.container,i];(n.includes(s.target)||i.contains(s.target))&&(e.touch&&e.config.hideControls||(e.ended?(this.proxy(s,e.restart,"restart"),this.proxy(s,()=>{ke(e.play())},"play")):this.proxy(s,()=>{ke(e.togglePlay())},"play")))})}e.supported.ui&&e.config.disableContextMenu&&ge.call(e,t.wrapper,"contextmenu",e=>{e.preventDefault()},!1),ge.call(e,e.media,"volumechange",()=>{e.storage.set({volume:e.volume,muted:e.muted})}),ge.call(e,e.media,"ratechange",()=>{lt.updateSetting.call(e,"speed"),e.storage.set({speed:e.speed})}),ge.call(e,e.media,"qualitychange",t=>{lt.updateSetting.call(e,"quality",null,t.detail.quality)}),ge.call(e,e.media,"ready qualitychange",()=>{lt.setDownloadUrl.call(e)});const i=e.config.events.concat(["keyup","keydown"]).join(" ");ge.call(e,e.media,i,i=>{let{detail:s={}}=i;"error"===i.type&&(s=e.media.error),be.call(e,t.container,i.type,!0,s)})}),(0,v.A)(this,"proxy",(e,t,i)=>{const{player:s}=this,n=s.config.listeners[i],a=j.function(n);let r=!0;a&&(r=n.call(s,e)),!1!==r&&j.function(t)&&t.call(s,e)}),(0,v.A)(this,"bind",(e,t,i,s,n=!0)=>{const{player:a}=this,r=a.config.listeners[s],o=j.function(r);ge.call(a,e,t,e=>this.proxy(e,i,s),n&&!o)}),(0,v.A)(this,"controls",()=>{const{player:e}=this,{elements:t}=e,i=He.isIE?"change":"input";if(t.buttons.play&&Array.from(t.buttons.play).forEach(t=>{this.bind(t,"click",()=>{ke(e.togglePlay())},"play")}),this.bind(t.buttons.restart,"click",e.restart,"restart"),this.bind(t.buttons.rewind,"click",()=>{e.lastSeekTime=Date.now(),e.rewind()},"rewind"),this.bind(t.buttons.fastForward,"click",()=>{e.lastSeekTime=Date.now(),e.forward()},"fastForward"),this.bind(t.buttons.mute,"click",()=>{e.muted=!e.muted},"mute"),this.bind(t.buttons.captions,"click",()=>e.toggleCaptions()),this.bind(t.buttons.download,"click",()=>{be.call(e,e.media,"download")},"download"),this.bind(t.buttons.fullscreen,"click",()=>{e.fullscreen.toggle()},"fullscreen"),this.bind(t.buttons.pip,"click",()=>{e.pip="toggle"},"pip"),this.bind(t.buttons.airplay,"click",e.airplay,"airplay"),this.bind(t.buttons.settings,"click",t=>{t.stopPropagation(),t.preventDefault(),lt.toggleMenu.call(e,t)},null,!1),this.bind(t.buttons.settings,"keyup",t=>{[" ","Enter"].includes(t.key)&&("Enter"!==t.key?(t.preventDefault(),t.stopPropagation(),lt.toggleMenu.call(e,t)):lt.focusFirstMenuItem.call(e,null,!0))},null,!1),this.bind(t.settings.menu,"keydown",t=>{"Escape"===t.key&<.toggleMenu.call(e,t)}),this.bind(t.inputs.seek,"mousedown mousemove",e=>{const i=t.progress.getBoundingClientRect(),s=e.pageX-e.clientX,n=100/i.width*(e.pageX-i.left-s);e.currentTarget.setAttribute("seek-value",n)}),this.bind(t.inputs.seek,"mousedown mouseup keydown keyup touchstart touchend",t=>{const i=t.currentTarget,s="play-on-seeked";if(j.keyboardEvent(t)&&!["ArrowLeft","ArrowRight"].includes(t.key))return;e.lastSeekTime=Date.now();const n=i.hasAttribute(s),a=["mouseup","touchend","keyup"].includes(t.type);n&&a?(i.removeAttribute(s),ke(e.play())):!a&&e.playing&&(i.setAttribute(s,""),e.pause())}),He.isIos){const t=oe.call(e,'input[type="range"]');Array.from(t).forEach(e=>this.bind(e,i,e=>U(e.target)))}this.bind(t.inputs.seek,i,t=>{const i=t.currentTarget;let s=i.getAttribute("seek-value");j.empty(s)&&(s=i.value),i.removeAttribute("seek-value"),e.currentTime=s/i.max*e.duration},"seek"),this.bind(t.progress,"mouseenter mouseleave mousemove",t=>lt.updateSeekTooltip.call(e,t)),this.bind(t.progress,"mousemove touchmove",t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.startMove(t)}),this.bind(t.progress,"mouseleave touchend click",()=>{const{previewThumbnails:t}=e;t&&t.loaded&&t.endMove(!1,!0)}),this.bind(t.progress,"mousedown touchstart",t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.startScrubbing(t)}),this.bind(t.progress,"mouseup touchend",t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.endScrubbing(t)}),He.isWebKit&&Array.from(oe.call(e,'input[type="range"]')).forEach(t=>{this.bind(t,"input",t=>lt.updateRangeFill.call(e,t.target))}),e.config.toggleInvert&&!j.element(t.display.duration)&&this.bind(t.display.currentTime,"click",()=>{0!==e.currentTime&&(e.config.invertTime=!e.config.invertTime,lt.timeUpdate.call(e))}),this.bind(t.inputs.volume,i,t=>{e.volume=t.target.value},"volume"),this.bind(t.controls,"mouseenter mouseleave",i=>{t.controls.hover=!e.touch&&"mouseenter"===i.type}),t.fullscreen&&Array.from(t.fullscreen.children).filter(e=>!e.contains(t.container)).forEach(i=>{this.bind(i,"mouseenter mouseleave",i=>{t.controls&&(t.controls.hover=!e.touch&&"mouseenter"===i.type)})}),this.bind(t.controls,"mousedown mouseup touchstart touchend touchcancel",e=>{t.controls.pressed=["mousedown","touchstart"].includes(e.type)}),this.bind(t.controls,"focusin",()=>{const{config:i,timers:s}=e;se(t.controls,i.classNames.noTransition,!0),St.toggleControls.call(e,!0),setTimeout(()=>{se(t.controls,i.classNames.noTransition,!1)},0);const n=this.touch?3e3:4e3;clearTimeout(s.controls),s.controls=setTimeout(()=>St.toggleControls.call(e,!1),n)}),this.bind(t.inputs.volume,"wheel",t=>{const i=t.webkitDirectionInvertedFromDevice,[s,n]=[t.deltaX,-t.deltaY].map(e=>i?-e:e),a=Math.sign(Math.abs(s)>Math.abs(n)?s:n);e.increaseVolume(a/50);const{volume:r}=e.media;(1===a&&r<1||-1===a&&r>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.firstTouch=this.firstTouch.bind(this)}handleKey(e){const{player:t}=this,{elements:i}=t,{key:s,type:n,altKey:a,ctrlKey:r,metaKey:o,shiftKey:l}=e,c="keydown"===n,h=c&&s===this.lastKey;if(a||r||o||l)return;if(!s)return;const u=e=>{t.currentTime=t.duration/10*e};if(c){const n=document.activeElement;if(j.element(n)){const{editable:s}=t.config.selectors,{seek:a}=i.inputs;if(n!==a&&ae(n,s))return;if(" "===e.key&&ae(n,'button, [role^="menuitem"]'))return}const a=[" ","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","0","1","2","3","4","5","6","7","8","9","c","f","k","l","m"];switch(a.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":h||u(Number.parseInt(s,10));break;case" ":case"k":h||ke(t.togglePlay());break;case"ArrowUp":t.increaseVolume(.1);break;case"ArrowDown":t.decreaseVolume(.1);break;case"m":h||(t.muted=!t.muted);break;case"ArrowRight":t.forward();break;case"ArrowLeft":t.rewind();break;case"f":t.fullscreen.toggle();break;case"c":h||t.toggleCaptions();break;case"l":t.loop=!t.loop;break;default:break}"Escape"===s&&!t.fullscreen.usingNative&&t.fullscreen.active&&t.fullscreen.toggle(),this.lastKey=s}else this.lastKey=null}toggleMenu(e){lt.toggleMenu.call(this.player,e)}}var Et=xt,Mt=i(1583);function Pt(e){return new Promise((t,i)=>{Mt(e,{success:t,error:i})})}function Lt(e){if(j.empty(e))return null;if(j.number(Number(e)))return e;const t=/^.*(vimeo.com\/|video\/)(\d+).*/,i=e.match(t);return i?i[2]:e}function It(e){const t=/^.*(vimeo.com\/|video\/)(\d+)(\?.*h=|\/)+([\d,a-f]+)/,i=e.match(t);return i&&5===i.length?i[4]:null}function $t(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,be.call(this,this.media,e?"play":"pause"))}const Nt={setup(){const e=this;se(e.elements.wrapper,e.config.classNames.embed,!0),e.options.speed=e.config.speed.options,Pe.call(e),j.object(window.Vimeo)?Nt.ready.call(e):Pt(e.config.urls.vimeo.sdk).then(()=>{Nt.ready.call(e)}).catch(t=>{e.debug.warn("Vimeo SDK (player.js) failed to load",t)})},ready(){const e=this,t=e.config.vimeo,{premium:i,referrerPolicy:s,...n}=t;let a=e.media.getAttribute("src"),r="";j.empty(a)?(a=e.media.getAttribute(e.config.attributes.embed.id),r=e.media.getAttribute(e.config.attributes.embed.hash)):r=It(a);const o=r?{h:r}:{};i&&Object.assign(n,{controls:!1,sidedock:!1});const l=ht({loop:e.config.loop.active,autoplay:e.autoplay,muted:e.muted,gesture:"media",playsinline:e.config.playsinline,...o,...n}),c=Lt(a),h=K("iframe"),u=qe(e.config.urls.vimeo.iframe,c,l);if(h.setAttribute("src",u),h.setAttribute("allowfullscreen",""),h.setAttribute("allow",["autoplay","fullscreen","picture-in-picture","encrypted-media","accelerometer","gyroscope"].join("; ")),j.empty(s)||h.setAttribute("referrerPolicy",s),i||!t.customControls)h.setAttribute("data-poster",e.poster),e.media=ee(h,e.media);else{const t=K("div",{class:e.config.classNames.embedContainer,"data-poster":e.poster});t.appendChild(h),e.media=ee(t,e.media)}t.customControls||tt(qe(e.config.urls.vimeo.api,u)).then(t=>{!j.empty(t)&&t.thumbnail_url&&St.setPoster.call(e,t.thumbnail_url).catch(()=>{})}),e.embed=new window.Vimeo.Player(h,{autopause:e.config.autopause,muted:e.muted}),e.media.paused=!0,e.media.currentTime=0,e.supported.ui&&e.embed.disableTextTrack(),e.media.play=()=>($t.call(e,!0),e.embed.play()),e.media.pause=()=>($t.call(e,!1),e.embed.pause()),e.media.stop=()=>{e.pause(),e.currentTime=0};let{currentTime:d}=e.media;Object.defineProperty(e.media,"currentTime",{get(){return d},set(t){const{embed:i,media:s,paused:n,volume:a}=e,r=n&&!i.hasPlayed;s.seeking=!0,be.call(e,s,"seeking"),Promise.resolve(r&&i.setVolume(0)).then(()=>i.setCurrentTime(t)).then(()=>r&&i.pause()).then(()=>r&&i.setVolume(a)).catch(()=>{})}});let m=e.config.speed.selected;Object.defineProperty(e.media,"playbackRate",{get(){return m},set(t){e.embed.setPlaybackRate(t).then(()=>{m=t,be.call(e,e.media,"ratechange")}).catch(()=>{e.options.speed=[1]})}});let{volume:p}=e.config;Object.defineProperty(e.media,"volume",{get(){return p},set(t){e.embed.setVolume(t).then(()=>{p=t,be.call(e,e.media,"volumechange")})}});let{muted:g}=e.config;Object.defineProperty(e.media,"muted",{get(){return g},set(t){const i=!!j.boolean(t)&&t;e.embed.setMuted(!!i||e.config.muted).then(()=>{g=i,be.call(e,e.media,"volumechange")})}});let f,{loop:y}=e.config;Object.defineProperty(e.media,"loop",{get(){return y},set(t){const i=j.boolean(t)?t:e.config.loop.active;e.embed.setLoop(i).then(()=>{y=i})}}),e.embed.getVideoUrl().then(t=>{f=t,lt.setDownloadUrl.call(e)}).catch(e=>{this.debug.warn(e)}),Object.defineProperty(e.media,"currentSrc",{get(){return f}}),Object.defineProperty(e.media,"ended",{get(){return e.currentTime===e.duration}}),Promise.all([e.embed.getVideoWidth(),e.embed.getVideoHeight()]).then(t=>{const[i,s]=t;e.embed.ratio=Le(i,s),Pe.call(this)}),e.embed.setAutopause(e.config.autopause).then(t=>{e.config.autopause=t}),e.embed.getVideoTitle().then(t=>{e.config.title=t,St.setTitle.call(this)}),e.embed.getCurrentTime().then(t=>{d=t,be.call(e,e.media,"timeupdate")}),e.embed.getDuration().then(t=>{e.media.duration=t,be.call(e,e.media,"durationchange")}),e.embed.getTextTracks().then(t=>{e.media.textTracks=t,dt.setup.call(e)}),e.embed.on("cuechange",({cues:t=[]})=>{const i=t.map(e=>Ye(e.text));dt.updateCues.call(e,i)}),e.embed.on("loaded",()=>{if(e.embed.getPaused().then(t=>{$t.call(e,!t),t||be.call(e,e.media,"playing")}),j.element(e.embed.element)&&e.supported.ui){const t=e.embed.element;t.setAttribute("tabindex",-1)}}),e.embed.on("bufferstart",()=>{be.call(e,e.media,"waiting")}),e.embed.on("bufferend",()=>{be.call(e,e.media,"playing")}),e.embed.on("play",()=>{$t.call(e,!0),be.call(e,e.media,"playing")}),e.embed.on("pause",()=>{$t.call(e,!1)}),e.embed.on("timeupdate",t=>{e.media.seeking=!1,d=t.seconds,be.call(e,e.media,"timeupdate")}),e.embed.on("progress",t=>{e.media.buffered=t.percent,be.call(e,e.media,"progress"),1===Number.parseInt(t.percent,10)&&be.call(e,e.media,"canplaythrough"),e.embed.getDuration().then(t=>{t!==e.media.duration&&(e.media.duration=t,be.call(e,e.media,"durationchange"))})}),e.embed.on("seeked",()=>{e.media.seeking=!1,be.call(e,e.media,"seeked")}),e.embed.on("ended",()=>{e.media.paused=!0,be.call(e,e.media,"ended")}),e.embed.on("error",t=>{e.media.error=t,be.call(e,e.media,"error")}),t.customControls&&setTimeout(()=>St.build.call(e),0)}};var Dt=Nt;function Ft(e){if(j.empty(e))return null;const t=/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/,i=e.match(t);return i&&i[2]?i[2]:e}function _t(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,be.call(this,this.media,e?"play":"pause"))}function Rt(e){return e.noCookie?"https://www.youtube-nocookie.com":"http:"===window.location.protocol?"http://www.youtube.com":void 0}const Ot={setup(){if(se(this.elements.wrapper,this.config.classNames.embed,!0),j.object(window.YT)&&j.function(window.YT.Player))Ot.ready.call(this);else{const e=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=()=>{j.function(e)&&e(),Ot.ready.call(this)},Pt(this.config.urls.youtube.sdk).catch(e=>{this.debug.warn("YouTube API failed to load",e)})}},getTitle(e){const t=qe(this.config.urls.youtube.api,e);tt(t).then(e=>{if(j.object(e)){const{title:t,height:i,width:s}=e;this.config.title=t,St.setTitle.call(this),this.embed.ratio=Le(s,i)}Pe.call(this)}).catch(()=>{Pe.call(this)})},ready(){const e=this,t=e.config.youtube,i=e.media&&e.media.getAttribute("id");if(!j.empty(i)&&i.startsWith("youtube-"))return;let s=e.media.getAttribute("src");j.empty(s)&&(s=e.media.getAttribute(this.config.attributes.embed.id));const n=Ft(s),a=je(e.provider),r=K("div",{id:a,"data-poster":t.customControls?e.poster:void 0});if(e.media=ee(r,e.media),t.customControls){const t=e=>`https://i.ytimg.com/vi/${n}/${e}default.jpg`;Ct(t("maxres"),121).catch(()=>Ct(t("sd"),121)).catch(()=>Ct(t("hq"))).then(t=>St.setPoster.call(e,t.src)).then(t=>{t.includes("maxres")||(e.elements.poster.style.backgroundSize="cover")}).catch(()=>{})}e.embed=new window.YT.Player(e.media,{videoId:n,host:Rt(t),playerVars:z({},{autoplay:e.config.autoplay?1:0,hl:e.config.hl,controls:e.supported.ui&&t.customControls?0:1,disablekb:1,playsinline:e.config.playsinline&&!e.config.fullscreen.iosNative?1:0,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(t){if(!e.media.error){const i=t.data,s={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."}[i]||"An unknown error occurred";e.media.error={code:i,message:s},be.call(e,e.media,"error")}},onPlaybackRateChange(t){const i=t.target;e.media.playbackRate=i.getPlaybackRate(),be.call(e,e.media,"ratechange")},onReady(i){if(j.function(e.media.play))return;const s=i.target;Ot.getTitle.call(e,n),e.media.play=()=>{_t.call(e,!0),s.playVideo()},e.media.pause=()=>{_t.call(e,!1),s.pauseVideo()},e.media.stop=()=>{s.stopVideo()},e.media.duration=s.getDuration(),e.media.paused=!0,e.media.currentTime=0,Object.defineProperty(e.media,"currentTime",{get(){return Number(s.getCurrentTime())},set(t){e.paused&&!e.embed.hasPlayed&&e.embed.mute(),e.media.seeking=!0,be.call(e,e.media,"seeking"),s.seekTo(t)}}),Object.defineProperty(e.media,"playbackRate",{get(){return s.getPlaybackRate()},set(e){s.setPlaybackRate(e)}});let{volume:a}=e.config;Object.defineProperty(e.media,"volume",{get(){return a},set(t){a=t,s.setVolume(100*a),be.call(e,e.media,"volumechange")}});let{muted:r}=e.config;Object.defineProperty(e.media,"muted",{get(){return r},set(t){const i=j.boolean(t)?t:r;r=i,s[i?"mute":"unMute"](),s.setVolume(100*a),be.call(e,e.media,"volumechange")}}),Object.defineProperty(e.media,"currentSrc",{get(){return s.getVideoUrl()}}),Object.defineProperty(e.media,"ended",{get(){return e.currentTime===e.duration}});const o=s.getAvailablePlaybackRates();e.options.speed=o.filter(t=>e.config.speed.options.includes(t)),e.supported.ui&&t.customControls&&e.media.setAttribute("tabindex",-1),be.call(e,e.media,"timeupdate"),be.call(e,e.media,"durationchange"),clearInterval(e.timers.buffering),e.timers.buffering=setInterval(()=>{e.media.buffered=s.getVideoLoadedFraction(),(null===e.media.lastBuffered||e.media.lastBufferedSt.build.call(e),50)},onStateChange(i){const s=i.target;clearInterval(e.timers.playing);const n=e.media.seeking&&[1,2].includes(i.data);switch(n&&(e.media.seeking=!1,be.call(e,e.media,"seeked")),i.data){case-1:be.call(e,e.media,"timeupdate"),e.media.buffered=s.getVideoLoadedFraction(),be.call(e,e.media,"progress");break;case 0:_t.call(e,!1),e.media.loop?(s.stopVideo(),s.playVideo()):be.call(e,e.media,"ended");break;case 1:t.customControls&&!e.config.autoplay&&e.media.paused&&!e.embed.hasPlayed?e.media.pause():(_t.call(e,!0),be.call(e,e.media,"playing"),e.timers.playing=setInterval(()=>{be.call(e,e.media,"timeupdate")},50),e.media.duration!==s.getDuration()&&(e.media.duration=s.getDuration(),be.call(e,e.media,"durationchange")));break;case 2:e.muted||e.embed.unMute(),_t.call(e,!1);break;case 3:be.call(e,e.media,"waiting");break;default:break}be.call(e,e.elements.container,"statechange",!1,{code:i.data})}}})}};var Vt=Ot;const Ht={setup(){this.media?(se(this.elements.container,this.config.classNames.type.replace("{0}",this.type),!0),se(this.elements.container,this.config.classNames.provider.replace("{0}",this.provider),!0),this.isEmbed&&se(this.elements.container,this.config.classNames.type.replace("{0}","video"),!0),this.isVideo&&(this.elements.wrapper=K("div",{class:this.config.classNames.video}),W(this.media,this.elements.wrapper),this.elements.poster=K("div",{class:this.config.classNames.poster}),this.elements.wrapper.appendChild(this.elements.poster)),this.isHTML5?Ne.setup.call(this):this.isYouTube?Vt.setup.call(this):this.isVimeo&&Dt.setup.call(this)):this.debug.warn("No media element found!")}};var jt=Ht;function qt(e){e.manager&&e.manager.destroy(),e.elements.displayContainer&&e.elements.displayContainer.destroy(),e.elements.container.remove()}class Ut{constructor(e){(0,v.A)(this,"load",()=>{this.enabled&&(j.object(window.google)&&j.object(window.google.ima)?this.ready():Pt(this.player.config.urls.googleIMA.sdk).then(()=>{this.ready()}).catch(()=>{this.trigger("error",new Error("Google IMA SDK failed to load"))}))}),(0,v.A)(this,"ready",()=>{this.enabled||qt(this),this.startSafetyTimer(12e3,"ready()"),this.managerPromise.then(()=>{this.clearSafetyTimer("onAdsManagerLoaded()")}),this.listeners(),this.setupIMA()}),(0,v.A)(this,"setupIMA",()=>{this.elements.container=K("div",{class:this.player.config.classNames.ads}),this.player.elements.container.appendChild(this.elements.container),google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED),google.ima.settings.setLocale(this.player.config.ads.language),google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline),this.elements.displayContainer=new google.ima.AdDisplayContainer(this.elements.container,this.player.media),this.loader=new google.ima.AdsLoader(this.elements.displayContainer),this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,e=>this.onAdsManagerLoaded(e),!1),this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,e=>this.onAdError(e),!1),this.requestAds()}),(0,v.A)(this,"requestAds",()=>{const{container:e}=this.player.elements;try{const t=new google.ima.AdsRequest;t.adTagUrl=this.tagUrl,t.linearAdSlotWidth=e.offsetWidth,t.linearAdSlotHeight=e.offsetHeight,t.nonLinearAdSlotWidth=e.offsetWidth,t.nonLinearAdSlotHeight=e.offsetHeight,t.forceNonLinearFullSlot=!1,t.setAdWillPlayMuted(!this.player.muted),this.loader.requestAds(t)}catch(t){this.onAdError(t)}}),(0,v.A)(this,"pollCountdown",(e=!1)=>{if(!e)return clearInterval(this.countdownTimer),void this.elements.container.removeAttribute("data-badge-text");const t=()=>{const e=rt(Math.max(this.manager.getRemainingTime(),0)),t=`${Ge.get("advertisement",this.player.config)} - ${e}`;this.elements.container.setAttribute("data-badge-text",t)};this.countdownTimer=setInterval(t,100)}),(0,v.A)(this,"onAdsManagerLoaded",e=>{if(!this.enabled)return;const t=new google.ima.AdsRenderingSettings;t.restoreCustomPlaybackStateOnAdBreakComplete=!0,t.enablePreloading=!0,this.manager=e.getAdsManager(this.player,t),this.cuePoints=this.manager.getCuePoints(),this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,e=>this.onAdError(e)),Object.keys(google.ima.AdEvent.Type).forEach(e=>{this.manager.addEventListener(google.ima.AdEvent.Type[e],e=>this.onAdEvent(e))}),this.trigger("loaded")}),(0,v.A)(this,"addCuePoints",()=>{j.empty(this.cuePoints)||this.cuePoints.forEach(e=>{if(0!==e&&-1!==e&&e{const{container:t}=this.player.elements,i=e.getAd(),s=e.getAdData(),n=e=>{be.call(this.player,this.player.media,`ads${e.replace(/_/g,"").toLowerCase()}`)};switch(n(e.type),e.type){case google.ima.AdEvent.Type.LOADED:this.trigger("loaded"),this.pollCountdown(!0),i.isLinear()||(i.width=t.offsetWidth,i.height=t.offsetHeight);break;case google.ima.AdEvent.Type.STARTED:this.manager.setVolume(this.player.volume);break;case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:this.player.ended?this.loadAds():this.loader.contentComplete();break;case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:this.pauseContent();break;case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:this.pollCountdown(),this.resumeContent();break;case google.ima.AdEvent.Type.LOG:s.adError&&this.player.debug.warn(`Non-fatal ad error: ${s.adError.getMessage()}`);break;default:break}}),(0,v.A)(this,"onAdError",e=>{this.cancel(),this.player.debug.warn("Ads error",e)}),(0,v.A)(this,"listeners",()=>{const{container:e}=this.player.elements;let t;this.player.on("canplay",()=>{this.addCuePoints()}),this.player.on("ended",()=>{this.loader.contentComplete()}),this.player.on("timeupdate",()=>{t=this.player.currentTime}),this.player.on("seeked",()=>{const e=this.player.currentTime;j.empty(this.cuePoints)||this.cuePoints.forEach((i,s)=>{t{this.manager&&this.manager.resize(e.offsetWidth,e.offsetHeight,google.ima.ViewMode.NORMAL)})}),(0,v.A)(this,"play",()=>{const{container:e}=this.player.elements;this.managerPromise||this.resumeContent(),this.managerPromise.then(()=>{this.manager.setVolume(this.player.volume),this.elements.displayContainer.initialize();try{this.initialized||(this.manager.init(e.offsetWidth,e.offsetHeight,google.ima.ViewMode.NORMAL),this.manager.start()),this.initialized=!0}catch(t){this.onAdError(t)}}).catch(()=>{})}),(0,v.A)(this,"resumeContent",()=>{this.elements.container.style.zIndex="",this.playing=!1,ke(this.player.media.play())}),(0,v.A)(this,"pauseContent",()=>{this.elements.container.style.zIndex=3,this.playing=!0,this.player.media.pause()}),(0,v.A)(this,"cancel",()=>{this.initialized&&this.resumeContent(),this.trigger("error"),this.loadAds()}),(0,v.A)(this,"loadAds",()=>{this.managerPromise.then(()=>{this.manager&&this.manager.destroy(),this.managerPromise=new Promise(e=>{this.on("loaded",e),this.player.debug.log(this.manager)}),this.initialized=!1,this.requestAds()}).catch(()=>{})}),(0,v.A)(this,"trigger",(e,...t)=>{const i=this.events[e];j.array(i)&&i.forEach(e=>{j.function(e)&&e.apply(this,t)})}),(0,v.A)(this,"on",(e,t)=>(j.array(this.events[e])||(this.events[e]=[]),this.events[e].push(t),this)),(0,v.A)(this,"startSafetyTimer",(e,t)=>{this.player.debug.log(`Safety timer invoked from: ${t}`),this.safetyTimer=setTimeout(()=>{this.cancel(),this.clearSafetyTimer("startSafetyTimer()")},e)}),(0,v.A)(this,"clearSafetyTimer",e=>{j.nullOrUndefined(this.safetyTimer)||(this.player.debug.log(`Safety timer cleared from: ${e}`),clearTimeout(this.safetyTimer),this.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((e,t)=>{this.on("loaded",e),this.on("error",t)}),this.load()}get enabled(){const{config:e}=this;return this.player.isHTML5&&this.player.isVideo&&e.enabled&&(!j.empty(e.publisherId)||j.url(e.tagUrl))}get tagUrl(){const{config:e}=this;if(j.url(e.tagUrl))return e.tagUrl;const t={AV_PUBLISHERID:"58c25bb0073ef448b1087ad6",AV_CHANNELID:"5a0458dc28a06145e4519d21",AV_URL:window.location.hostname,cb:Date.now(),AV_WIDTH:640,AV_HEIGHT:480,AV_CDIM2:e.publisherId},i="https://go.aniview.com/api/adserver6/vast/";return`${i}?${ht(t)}`}}var Bt=Ut;function Xt(e=0,t=0,i=255){return Math.min(Math.max(e,t),i)}function zt(e){const t=[],i=e.split(/\r\n\r\n|\n\n|\r\r/);return i.forEach(e=>{const i={},s=e.split(/\r\n|\n|\r/);s.forEach(e=>{if(j.number(i.startTime)){if(!j.empty(e.trim())&&j.empty(i.text)){const t=e.trim().split("#xywh=");[i.text]=t,t[1]&&([i.x,i.y,i.w,i.h]=t[1].split(","))}}else{const t=e.match(/(\d{2})?:?(\d{2}):(\d{2}).(\d{2,3})( ?--> ?)(\d{2})?:?(\d{2}):(\d{2}).(\d{2,3})/);t&&(i.startTime=60*Number(t[1]||0)*60+60*Number(t[2])+Number(t[3])+Number(`0.${t[4]}`),i.endTime=60*Number(t[6]||0)*60+60*Number(t[7])+Number(t[8])+Number(`0.${t[9]}`))}}),i.text&&t.push(i)}),t}function Wt(e,t){const i=t.width/t.height,s={};return e>i?(s.width=t.width,s.height=1/e*t.width):(s.height=t.height,s.width=e*t.height),s}class Yt{constructor(e){(0,v.A)(this,"load",()=>{this.player.elements.display.seekTooltip&&(this.player.elements.display.seekTooltip.hidden=this.enabled),this.enabled&&this.getThumbnails().then(()=>{this.enabled&&(this.render(),this.determineContainerAutoSizing(),this.listeners(),this.loaded=!0)})}),(0,v.A)(this,"getThumbnails",()=>new Promise(e=>{const{src:t}=this.player.config.previewThumbnails;if(j.empty(t))throw new Error("Missing previewThumbnails.src config attribute");const i=()=>{this.thumbnails.sort((e,t)=>e.height-t.height),this.player.debug.log("Preview thumbnails",this.thumbnails),e()};if(j.function(t))t(e=>{this.thumbnails=e,i()});else{const e=j.string(t)?[t]:t,s=e.map(e=>this.getThumbnail(e));Promise.all(s).then(i)}})),(0,v.A)(this,"getThumbnail",e=>new Promise(t=>{tt(e,void 0,this.player.config.previewThumbnails.withCredentials).then(i=>{const s={frames:zt(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));const n=new Image;n.onload=()=>{s.height=n.naturalHeight,s.width=n.naturalWidth,this.thumbnails.push(s),t()},n.src=s.urlPrefix+s.frames[0].text})})),(0,v.A)(this,"startMove",e=>{if(this.loaded&&j.event(e)&&["touchmove","mousemove"].includes(e.type)&&this.player.media.duration){if("touchmove"===e.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{const t=this.player.elements.progress.getBoundingClientRect(),i=100/t.width*(e.pageX-t.left);this.seekTime=this.player.media.duration*(i/100),this.seekTime<0&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=e.pageX,this.elements.thumb.time.textContent=rt(this.seekTime);const s=this.player.config.markers?.points?.find(({time:e})=>e===Math.round(this.seekTime));s&&this.elements.thumb.time.insertAdjacentHTML("afterbegin",`${s.label}
`)}this.showImageAtCurrentTime()}}),(0,v.A)(this,"endMove",()=>{this.toggleThumbContainer(!1,!0)}),(0,v.A)(this,"startScrubbing",e=>{(j.nullOrUndefined(e.button)||!1===e.button||0===e.button)&&(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))}),(0,v.A)(this,"endScrubbing",()=>{this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):ye.call(this.player,this.player.media,"timeupdate",()=>{this.mouseDown||this.toggleScrubbingContainer(!1)})}),(0,v.A)(this,"listeners",()=>{this.player.on("play",()=>{this.toggleThumbContainer(!1,!0)}),this.player.on("seeked",()=>{this.toggleThumbContainer(!1)}),this.player.on("timeupdate",()=>{this.lastTime=this.player.media.currentTime})}),(0,v.A)(this,"render",()=>{this.elements.thumb.container=K("div",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=K("div",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);const e=K("div",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=K("span",{},"00:00"),e.appendChild(this.elements.thumb.time),this.elements.thumb.imageContainer.appendChild(e),j.element(this.player.elements.progress)&&this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=K("div",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)}),(0,v.A)(this,"destroy",()=>{this.elements.thumb.container&&this.elements.thumb.container.remove(),this.elements.scrubbing.container&&this.elements.scrubbing.container.remove()}),(0,v.A)(this,"showImageAtCurrentTime",()=>{this.mouseDown?this.setScrubbingContainerSize():this.setThumbContainerSizeAndPos();const e=this.thumbnails[0].frames.findIndex(e=>this.seekTime>=e.startTime&&this.seekTime<=e.endTime),t=e>=0;let i=0;this.mouseDown||this.toggleThumbContainer(t),t&&(this.thumbnails.forEach((t,s)=>{this.loadedImages.includes(t.frames[e].text)&&(i=s)}),e!==this.showingThumb&&(this.showingThumb=e,this.loadImage(i)))}),(0,v.A)(this,"loadImage",(e=0)=>{const t=this.showingThumb,i=this.thumbnails[e],{urlPrefix:s}=i,n=i.frames[t],a=i.frames[t].text,r=s+a;if(this.currentImageElement&&this.currentImageElement.dataset.filename===a)this.showImage(this.currentImageElement,n,e,t,a,!1),this.currentImageElement.dataset.index=t,this.removeOldImages(this.currentImageElement);else{this.loadingImage&&this.usingSprites&&(this.loadingImage.onload=null);const i=new Image;i.src=r,i.dataset.index=t,i.dataset.filename=a,this.showingThumbFilename=a,this.player.debug.log(`Loading image: ${r}`),i.onload=()=>this.showImage(i,n,e,t,a,!0),this.loadingImage=i,this.removeOldImages(i)}}),(0,v.A)(this,"showImage",(e,t,i,s,n,a=!0)=>{this.player.debug.log(`Showing thumb: ${n}. num: ${s}. qual: ${i}. newimg: ${a}`),this.setImageSizeAndOffset(e,t),a&&(this.currentImageContainer.appendChild(e),this.currentImageElement=e,this.loadedImages.includes(n)||this.loadedImages.push(n)),this.preloadNearby(s,!0).then(this.preloadNearby(s,!1)).then(this.getHigherQuality(i,e,t,n))}),(0,v.A)(this,"removeOldImages",e=>{Array.from(this.currentImageContainer.children).forEach(t=>{if("img"!==t.tagName.toLowerCase())return;const i=this.usingSprites?500:1e3;if(t.dataset.index!==e.dataset.index&&!t.dataset.deleting){t.dataset.deleting=!0;const{currentImageContainer:e}=this;setTimeout(()=>{e.removeChild(t),this.player.debug.log(`Removing thumb: ${t.dataset.filename}`)},i)}})}),(0,v.A)(this,"preloadNearby",(e,t=!0)=>new Promise(i=>{setTimeout(()=>{const s=this.thumbnails[0].frames[e].text;if(this.showingThumbFilename===s){let n;n=t?this.thumbnails[0].frames.slice(e):this.thumbnails[0].frames.slice(0,e).reverse();let a=!1;n.forEach(e=>{const t=e.text;if(t!==s&&!this.loadedImages.includes(t)){a=!0,this.player.debug.log(`Preloading thumb filename: ${t}`);const{urlPrefix:e}=this.thumbnails[0],s=e+t,n=new Image;n.src=s,n.onload=()=>{this.player.debug.log(`Preloaded thumb filename: ${t}`),this.loadedImages.includes(t)||this.loadedImages.push(t),i()}}}),a||i()}},300)})),(0,v.A)(this,"getHigherQuality",(e,t,i,s)=>{if(e{this.showingThumbFilename===s&&(this.player.debug.log(`Showing higher quality thumb for: ${s}`),this.loadImage(e+1))},300)}}),(0,v.A)(this,"toggleThumbContainer",(e=!1,t=!1)=>{const i=this.player.config.classNames.previewThumbnails.thumbContainerShown;this.elements.thumb.container.classList.toggle(i,e),!e&&t&&(this.showingThumb=null,this.showingThumbFilename=null)}),(0,v.A)(this,"toggleScrubbingContainer",(e=!1)=>{const t=this.player.config.classNames.previewThumbnails.scrubbingContainerShown;this.elements.scrubbing.container.classList.toggle(t,e),e||(this.showingThumb=null,this.showingThumbFilename=null)}),(0,v.A)(this,"determineContainerAutoSizing",()=>{(this.elements.thumb.imageContainer.clientHeight>20||this.elements.thumb.imageContainer.clientWidth>20)&&(this.sizeSpecifiedInCSS=!0)}),(0,v.A)(this,"setThumbContainerSizeAndPos",()=>{const{imageContainer:e}=this.elements.thumb;if(this.sizeSpecifiedInCSS){if(e.clientHeight>20&&e.clientWidth<20){const t=Math.floor(e.clientHeight*this.thumbAspectRatio);e.style.width=`${t}px`}else if(e.clientHeight<20&&e.clientWidth>20){const t=Math.floor(e.clientWidth/this.thumbAspectRatio);e.style.height=`${t}px`}}else{const t=Math.floor(this.thumbContainerHeight*this.thumbAspectRatio);e.style.height=`${this.thumbContainerHeight}px`,e.style.width=`${t}px`}this.setThumbContainerPos()}),(0,v.A)(this,"setThumbContainerPos",()=>{const e=this.player.elements.progress.getBoundingClientRect(),t=this.player.elements.container.getBoundingClientRect(),{container:i}=this.elements.thumb,s=t.left-e.left+10,n=t.right-e.left-i.clientWidth-10,a=this.mousePosX-e.left-i.clientWidth/2,r=Xt(a,s,n);i.style.left=`${r}px`,i.style.setProperty("--preview-arrow-offset",a-r+"px")}),(0,v.A)(this,"setScrubbingContainerSize",()=>{const{width:e,height:t}=Wt(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight});this.elements.scrubbing.container.style.width=`${e}px`,this.elements.scrubbing.container.style.height=`${t}px`}),(0,v.A)(this,"setImageSizeAndOffset",(e,t)=>{if(!this.usingSprites)return;const i=this.thumbContainerHeight/t.h;e.style.height=e.naturalHeight*i+"px",e.style.width=e.naturalWidth*i+"px",e.style.left=`-${t.x*i}px`,e.style.top=`-${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()}get enabled(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}get currentImageContainer(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}get usingSprites(){return Object.keys(this.thumbnails[0].frames[0]).includes("w")}get thumbAspectRatio(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}get thumbContainerHeight(){if(this.mouseDown){const{height:e}=Wt(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight});return e}return this.sizeSpecifiedInCSS?this.elements.thumb.imageContainer.clientHeight:Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}get currentImageElement(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement}set currentImageElement(e){this.mouseDown?this.currentScrubbingImageElement=e:this.currentThumbnailImageElement=e}}var Kt=Yt;const Qt={insertElements(e,t){j.string(t)?J(e,this.media,{src:t}):j.array(t)&&t.forEach(t=>{J(e,this.media,t)})},change(e){X(e,"sources.length")?(Ne.cancelRequests.call(this),this.destroy(()=>{this.options.quality=[],G(this.media),this.media=null,j.element(this.elements.container)&&this.elements.container.removeAttribute("class");const{sources:t,type:i}=e,[{provider:s=ft.html5,src:n}]=t,a="html5"===s?i:"div",r="html5"===s?{}:{src:n};Object.assign(this,{provider:s,type:i,supported:de.check(i,s,this.config.playsinline),media:K(a,r)}),this.elements.container.appendChild(this.media),j.boolean(e.autoplay)&&(this.config.autoplay=e.autoplay),this.isHTML5&&(this.config.crossorigin&&this.media.setAttribute("crossorigin",""),this.config.autoplay&&this.media.setAttribute("autoplay",""),j.empty(e.poster)||(this.poster=e.poster),this.config.loop.active&&this.media.setAttribute("loop",""),this.config.muted&&this.media.setAttribute("muted",""),this.config.playsinline&&this.media.setAttribute("playsinline","")),St.addStyleHook.call(this),this.isHTML5&&Qt.insertElements.call(this,"source",t),this.config.title=e.title,jt.setup.call(this),this.isHTML5&&Object.keys(e).includes("tracks")&&Qt.insertElements.call(this,"track",e.tracks),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&St.build.call(this),this.isHTML5&&this.media.load(),j.empty(e.previewThumbnails)||(Object.assign(this.config.previewThumbnails,e.previewThumbnails),this.previewThumbnails&&this.previewThumbnails.loaded&&(this.previewThumbnails.destroy(),this.previewThumbnails=null),this.config.previewThumbnails.enabled&&(this.previewThumbnails=new Kt(this))),this.fullscreen.update()},!0)):this.debug.warn("Invalid source format")}};var Jt=Qt;class Gt{constructor(e,t){if((0,v.A)(this,"play",()=>j.function(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then(()=>this.ads.play()).catch(()=>ke(this.media.play())),this.media.play()):null),(0,v.A)(this,"pause",()=>this.playing&&j.function(this.media.pause)?this.media.pause():null),(0,v.A)(this,"togglePlay",e=>{const t=j.boolean(e)?e:!this.playing;return t?this.play():this.pause()}),(0,v.A)(this,"stop",()=>{this.isHTML5?(this.pause(),this.restart()):j.function(this.media.stop)&&this.media.stop()}),(0,v.A)(this,"restart",()=>{this.currentTime=0}),(0,v.A)(this,"rewind",e=>{this.currentTime-=j.number(e)?e:this.config.seekTime}),(0,v.A)(this,"forward",e=>{this.currentTime+=j.number(e)?e:this.config.seekTime}),(0,v.A)(this,"increaseVolume",e=>{const t=this.media.muted?0:this.volume;this.volume=t+(j.number(e)?e:0)}),(0,v.A)(this,"decreaseVolume",e=>{this.increaseVolume(-e)}),(0,v.A)(this,"airplay",()=>{de.airplay&&this.media.webkitShowPlaybackTargetPicker()}),(0,v.A)(this,"toggleControls",e=>{if(this.supported.ui&&!this.isAudio){const t=ne(this.elements.container,this.config.classNames.hideControls),i="undefined"===typeof e?void 0:!e,s=se(this.elements.container,this.config.classNames.hideControls,i);if(s&&j.array(this.config.controls)&&this.config.controls.includes("settings")&&!j.empty(this.config.settings)&<.toggleMenu.call(this,!1),s!==t){const e=s?"controlshidden":"controlsshown";be.call(this,this.media,e)}return!s}return!1}),(0,v.A)(this,"on",(e,t)=>{ge.call(this,this.elements.container,e,t)}),(0,v.A)(this,"once",(e,t)=>{ye.call(this,this.elements.container,e,t)}),(0,v.A)(this,"off",(e,t)=>{fe(this.elements.container,e,t)}),(0,v.A)(this,"destroy",(e,t=!1)=>{if(!this.ready)return;const i=()=>{document.body.style.overflow="",this.embed=null,t?(Object.keys(this.elements).length&&(G(this.elements.buttons.play),G(this.elements.captions),G(this.elements.controls),G(this.elements.wrapper),this.elements.buttons.play=null,this.elements.captions=null,this.elements.controls=null,this.elements.wrapper=null),j.function(e)&&e()):(ve.call(this),Ne.cancelRequests.call(this),ee(this.elements.original,this.elements.container),be.call(this,this.elements.original,"destroyed",!0),j.function(e)&&e.call(this.elements.original),this.ready=!1,setTimeout(()=>{this.elements=null,this.media=null},200))};this.stop(),clearTimeout(this.timers.loading),clearTimeout(this.timers.controls),clearTimeout(this.timers.resized),this.isHTML5?(St.toggleNativeControls.call(this,!0),i()):this.isYouTube?(clearInterval(this.timers.buffering),clearInterval(this.timers.playing),null!==this.embed&&j.function(this.embed.destroy)&&this.embed.destroy(),i()):this.isVimeo&&(null!==this.embed&&this.embed.unload().then(i),setTimeout(i,200))}),(0,v.A)(this,"supports",e=>de.mime.call(this,e)),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=de.touch,this.media=e,j.string(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||j.nodeList(this.media)||j.array(this.media))&&(this.media=this.media[0]),this.config=z({},pt,Gt.defaults,t||{},(()=>{try{return JSON.parse(this.media.getAttribute("data-plyr-config"))}catch{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 wt(this.config.debug),this.debug.log("Config",this.config),this.debug.log("Support",de),j.nullOrUndefined(this.media)||!j.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(!de.check().api)return void this.debug.error("Setup failed: no support");const i=this.media.cloneNode(!0);i.autoplay=!1,this.elements.original=i;const s=this.media.tagName.toLowerCase();let n=null,a=null;switch(s){case"div":if(n=this.media.querySelector("iframe"),j.element(n)){if(a=ct(n.getAttribute("src")),this.provider=bt(a.toString()),this.elements.container=this.media,this.media=n,this.elements.container.className="",a.search.length){const e=["1","true"];e.includes(a.searchParams.get("autoplay"))&&(this.config.autoplay=!0),e.includes(a.searchParams.get("loop"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=e.includes(a.searchParams.get("playsinline")),this.config.youtube.hl=a.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(j.empty(this.provider)||!Object.values(ft).includes(this.provider))return void this.debug.error("Setup failed: Invalid provider");this.type=yt.video;break;case"video":case"audio":this.type=s,this.provider=ft.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=de.check(this.type,this.provider),this.supported.api?(this.eventListeners=[],this.listeners=new Et(this),this.storage=new et(this),this.media.plyr=this,j.element(this.elements.container)||(this.elements.container=K("div"),W(this.media,this.elements.container)),St.migrateStyles.call(this),St.addStyleHook.call(this),jt.setup.call(this),this.config.debug&&ge.call(this,this.elements.container,this.config.events.join(" "),e=>{this.debug.log(`event: ${e.type}`)}),this.fullscreen=new Tt(this),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&St.build.call(this),this.listeners.container(),this.listeners.global(),this.config.ads.enabled&&(this.ads=new Bt(this)),this.isHTML5&&this.config.autoplay&&this.once("canplay",()=>ke(this.play())),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new Kt(this))):this.debug.error("Setup failed: no support")}get isHTML5(){return this.provider===ft.html5}get isEmbed(){return this.isYouTube||this.isVimeo}get isYouTube(){return this.provider===ft.youtube}get isVimeo(){return this.provider===ft.vimeo}get isVideo(){return this.type===yt.video}get isAudio(){return this.type===yt.audio}get playing(){return Boolean(this.ready&&!this.paused&&!this.ended)}get paused(){return Boolean(this.media.paused)}get stopped(){return Boolean(this.paused&&0===this.currentTime)}get ended(){return Boolean(this.media.ended)}set currentTime(e){if(!this.duration)return;const t=j.number(e)&&e>0;this.media.currentTime=t?Math.min(e,this.duration):0,this.debug.log(`Seeking to ${this.currentTime} seconds`)}get currentTime(){return Number(this.media.currentTime)}get buffered(){const{buffered:e}=this.media;return j.number(e)?e:e&&e.length&&this.duration>0?e.end(0)/this.duration:0}get seeking(){return Boolean(this.media.seeking)}get duration(){const e=Number.parseFloat(this.config.duration),t=(this.media||{}).duration,i=j.number(t)&&t!==1/0?t:0;return e||i}set volume(e){let t=e;const i=1,s=0;j.string(t)&&(t=Number(t)),j.number(t)||(t=this.storage.get("volume")),j.number(t)||({volume:t}=this.config),t>i&&(t=i),t0&&(this.muted=!1)}get volume(){return Number(this.media.volume)}set muted(e){let t=e;j.boolean(t)||(t=this.storage.get("muted")),j.boolean(t)||(t=this.config.muted),this.config.muted=t,this.media.muted=t}get muted(){return Boolean(this.media.muted)}get hasAudio(){return!this.isHTML5||(!!this.isAudio||(Boolean(this.media.mozHasAudio)||Boolean(this.media.webkitAudioDecodedByteCount)||Boolean(this.media.audioTracks&&this.media.audioTracks.length)))}set speed(e){let t=null;j.number(e)&&(t=e),j.number(t)||(t=this.storage.get("speed")),j.number(t)||(t=this.config.speed.selected);const{minimumSpeed:i,maximumSpeed:s}=this;t=Xt(t,i,s),this.config.speed.selected=t,setTimeout(()=>{this.media&&(this.media.playbackRate=t)},0)}get speed(){return Number(this.media.playbackRate)}get minimumSpeed(){return this.isYouTube?Math.min(...this.options.speed):this.isVimeo?.5:.0625}get maximumSpeed(){return this.isYouTube?Math.max(...this.options.speed):this.isVimeo?2:16}set quality(e){const t=this.config.quality,i=this.options.quality;if(!i.length)return;let s=[!j.empty(e)&&Number(e),this.storage.get("quality"),t.selected,t.default].find(j.number),n=!0;if(!i.includes(s)){const e=Ce(i,s);this.debug.warn(`Unsupported quality option: ${s}, using ${e} instead`),s=e,n=!1}t.selected=s,this.media.quality=s,n&&this.storage.set({quality:s})}get quality(){return this.media.quality}set loop(e){const t=j.boolean(e)?e:this.config.loop.active;this.config.loop.active=t,this.media.loop=t}get loop(){return Boolean(this.media.loop)}set source(e){Jt.change.call(this,e)}get source(){return this.media.currentSrc}get download(){const{download:e}=this.config.urls;return j.url(e)?e:this.source}set download(e){j.url(e)&&(this.config.urls.download=e,lt.setDownloadUrl.call(this))}set poster(e){this.isVideo?St.setPoster.call(this,e,!1).catch(()=>{}):this.debug.warn("Poster can only be set for video")}get poster(){return this.isVideo?this.media.getAttribute("poster")||this.media.getAttribute("data-poster"):null}get ratio(){if(!this.isVideo)return null;const e=Ee(Me.call(this));return j.array(e)?e.join(":"):e}set ratio(e){this.isVideo?j.string(e)&&xe(e)?(this.config.ratio=Ee(e),Pe.call(this)):this.debug.error(`Invalid aspect ratio specified (${e})`):this.debug.warn("Aspect ratio can only be set for video")}set autoplay(e){this.config.autoplay=j.boolean(e)?e:this.config.autoplay}get autoplay(){return Boolean(this.config.autoplay)}toggleCaptions(e){dt.toggle.call(this,e,!1)}set currentTrack(e){dt.set.call(this,e,!1),dt.setup.call(this)}get currentTrack(){const{toggled:e,currentTrack:t}=this.captions;return e?t:-1}set language(e){dt.setLanguage.call(this,e,!1)}get language(){return(dt.getCurrentTrack.call(this)||{}).language}set pip(e){if(!de.pip)return;const t=j.boolean(e)?e:!this.pip;j.function(this.media.webkitSetPresentationMode)&&this.media.webkitSetPresentationMode(t?gt.active:gt.inactive),j.function(this.media.requestPictureInPicture)&&(!this.pip&&t?this.media.requestPictureInPicture():this.pip&&!t&&document.exitPictureInPicture())}get pip(){return de.pip?j.empty(this.media.webkitPresentationMode)?this.media===document.pictureInPictureElement:this.media.webkitPresentationMode===gt.active:null}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 Kt(this))}static supported(e,t){return de.check(e,t)}static loadSprite(e,t){return it(e,t)}static setup(e,t={}){let i=null;return j.string(e)?i=Array.from(document.querySelectorAll(e)):j.nodeList(e)?i=Array.from(e):j.array(e)&&(i=e.filter(j.element)),j.empty(i)?null:i.map(e=>new Gt(e,t))}}Gt.defaults=B(pt);var Zt=Gt;i(7642),i(8004),i(3853),i(5876),i(2475),i(5024),i(1698);const ei=new Set;let ti=null,ii="stop";function si(e){return e&&("AUDIO"===e.tagName||"VIDEO"===e.tagName)}function ni(e){if(si(e)){try{e.pause()}catch(t){}try{e.currentTime=0}catch(t){}try{e.removeAttribute("src")}catch(t){}try{e.load?.()}catch(t){}}}function ai(e=null){for(const t of ei)e&&t===e||ni(t);ti=e||null}let ri=!1;function oi(){ri||(ri=!0,document.addEventListener("visibilitychange",()=>{document.hidden&&ai(null)}),window.addEventListener("pagehide",()=>ai(null)))}function li(){return ii}function ci(e){["stop","sequence","loop"].includes(e)&&(ii=e)}var hi={name:"TransformMedia",props:{file:{type:Object,required:!0},src:{type:String,required:!0},isImage:{type:Boolean,default:!0},isVideo:{type:Boolean,default:!1},isAudio:{type:Boolean,default:!1},isActive:{type:Boolean,default:!1}},data(){return{pointers:new Map,scale:1,rotation:0,rotatePreview:0,tx:0,ty:0,naturalWidth:0,naturalHeight:0,startScale:1,startRotation:0,startTx:0,startTy:0,startCenter:null,startDist:0,startAngle:0,dragging:!1,dragStart:null,viewportRect:null,minScale:1,maxScale:4,gestureMode:null,edgeOverflow:0,edgeDir:0,player:null,audioCover:null,audioTitle:"",audioArtist:"",menuAdded:!1}},computed:{isActiveTransform(){return this.scale>1.001||this.pointers.size>=2||this.dragging},displayRotation(){return this.rotation+this.rotatePreview},rotateShrink(){const e=Math.min(1,Math.abs(this.rotatePreview)/90),t=Math.sin(Math.PI*e);return 1-.12*t},mediaStyle(){const e=this.scale*this.rotateShrink,t=this.pointers.size>0;return{transform:`translate3d(${this.tx}px, ${this.ty}px, 0) scale(${e}) rotate(${this.displayRotation}deg)`,transition:t?"none":"transform 0.25s ease",transformOrigin:"center center"}}},watch:{isActiveTransform(e){this.$emit(e?"lock":"unlock")},isActive(e){e?this.$nextTick(()=>this.initPlayer()):this.destroyPlayer()}},mounted(){this.isAudio&&this.initAudioInfo(),this.isActive&&this.$nextTick(()=>this.initPlayer())},beforeUnmount(){this.destroyPlayer(),this.audioCover&&(URL.revokeObjectURL(this.audioCover),this.audioCover=null)},methods:{initPlayer(){if(this.player)return;const e=this.$refs.videoEl||this.$refs.audioEl;if(!e)return;const t=this.isAudio?["play","progress","current-time","mute","volume"]:["play","progress","current-time","mute","volume","fullscreen"];this.player=new Zt(e,{controls:t,autoplay:this.isVideo,resetOnEnd:!0}),this.player.on("ready",()=>{this.tryAddCustomMenu()}),this.scheduleMenuRetry(),this.isAudio&&this.player.on("ended",this.onAudioEnded)},scheduleMenuRetry(){const e=t=>{t>=5||this.menuAdded||setTimeout(()=>{this.menuAdded||(this.tryAddCustomMenu(),e(t+1))},200*(t+1))};e(0)},tryAddCustomMenu(){if(this.menuAdded)return;if(!this.player?.elements?.controls)return;const e=this.player.elements.controls;e&&!e.querySelector(".plyr-custom-menu")&&(this.addCustomMenu(e),this.menuAdded=!0)},addCustomMenu(e){const t=li(),i=this.isAudio?`\n
\n \n \n \n 播放模式\n \n \n \n
\n
\n
播完停止
\n
顺序播放
\n
单曲循环
\n
\n `:"",s=document.createElement("div");s.className="plyr-custom-menu",s.innerHTML=`\n \n
\n
\n \n \n \n 下载\n
\n
\n \n \n \n \n 播放速度\n \n \n \n
\n
\n
0.5x
\n
0.75x
\n
正常
\n
1.25x
\n
1.5x
\n
2x
\n
\n ${i}\n
\n `,e.appendChild(s),this.bindMenuEvents(s)},bindMenuEvents(e){const t=e.querySelector(".plyr-menu-btn"),i=e.querySelector(".plyr-menu-dropdown"),s=e.querySelector(".plyr-menu-speed"),n=e.querySelector(".plyr-speed-submenu"),a=e.querySelector('[data-action="download"]'),r=e.querySelector(".plyr-menu-playmode"),o=e.querySelector(".plyr-playmode-submenu");t.addEventListener("click",e=>{e.stopPropagation(),i.classList.toggle("show"),n.classList.remove("show"),o&&o.classList.remove("show")}),a.addEventListener("click",()=>{this.downloadMedia(),i.classList.remove("show")}),s.addEventListener("click",e=>{e.stopPropagation(),n.classList.toggle("show"),o&&o.classList.remove("show")}),e.querySelectorAll(".plyr-speed-option").forEach(t=>{t.addEventListener("click",()=>{const s=parseFloat(t.dataset.speed);this.player?.media&&(this.player.media.playbackRate=s),e.querySelectorAll(".plyr-speed-option").forEach(e=>e.classList.remove("active")),t.classList.add("active"),i.classList.remove("show"),n.classList.remove("show")})}),r&&o&&(r.addEventListener("click",e=>{e.stopPropagation(),o.classList.toggle("show"),n.classList.remove("show")}),e.querySelectorAll(".plyr-playmode-option").forEach(t=>{t.addEventListener("click",()=>{const s=t.dataset.mode;ci(s),e.querySelectorAll(".plyr-playmode-option").forEach(e=>e.classList.remove("active")),t.classList.add("active"),i.classList.remove("show"),o.classList.remove("show")})})),document.addEventListener("click",()=>{i.classList.remove("show"),n.classList.remove("show"),o&&o.classList.remove("show")})},downloadMedia(){const e=document.createElement("a");e.href=this.src,e.download=this.file?.name?.split("/").pop()||"download",e.click()},onAudioEnded(){const e=li();"loop"===e?this.player?.media&&(this.player.media.currentTime=0,this.player.play()):"sequence"===e&&this.$emit("audio-ended","next")},destroyPlayer(){const e=this.$refs.videoEl||this.$refs.audioEl;if(this.player){try{this.player.pause(),this.player.destroy()}catch(t){}this.player=null}if(e)try{e.pause(),e.currentTime=0,e.src="",e.load()}catch(t){}},stopAndCleanMedia(){this.destroyPlayer()},initAudioInfo(){const e=this.file?.name||this.src,t=e.split("/").pop().replace(/\.[^.]+$/,"");this.audioTitle=t,this.audioArtist="",this.audioCover=null,this.isActive&&this.tryReadMetadata()},async tryReadMetadata(){try{const e=await fetch(this.src),t=await e.blob(),i=await t.slice(0,131072).arrayBuffer(),s=new DataView(i);73===s.getUint8(0)&&68===s.getUint8(1)&&51===s.getUint8(2)&&this.parseID3v2(s,i)}catch(e){}},parseID3v2(e,t){const i=(127&e.getUint8(6))<<21|(127&e.getUint8(7))<<14|(127&e.getUint8(8))<<7|127&e.getUint8(9);let s=10;while(st.byteLength)break;const a=new Uint8Array(t,s+10,Math.min(n,t.byteLength-s-10));"TIT2"===i?this.audioTitle=this.decodeText(a)||this.audioTitle:"TPE1"===i?this.audioArtist=this.decodeText(a):"APIC"===i&&this.extractCover(a),s+=10+n}},decodeText(e){if(e.length<2)return"";const t=e[0],i=e.slice(1);try{if(0===t)return new TextDecoder("iso-8859-1").decode(i).replace(/\0/g,"");if(1===t)return new TextDecoder("utf-16").decode(i).replace(/\0/g,"");if(3===t)return new TextDecoder("utf-8").decode(i).replace(/\0/g,"")}catch(s){}return""},extractCover(e){try{let t=1;while(tt?t+this.rubberBand(e-t,i,.55):e<-t?-t-this.rubberBand(-t-e,i,.55):e},calcTwoPointer(){const e=Array.from(this.pointers.entries()).sort((e,t)=>e[0]-t[0]),t=e[0][1],i=e[1][1],s=i.x-t.x,n=i.y-t.y,a=Math.hypot(s,n),r=Math.atan2(n,s)*(180/Math.PI),o={x:(t.x+i.x)/2,y:(t.y+i.y)/2};return{dist:a,angle:r,center:o}},normalizeAngle(e){return e=(e%360+360)%360,e>180?e-360:e},onPointerDown(e){if(this.isImage){if(e.currentTarget.setPointerCapture?.(e.pointerId),this.viewportRect=this.getViewportRect(),this.pointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),2===this.pointers.size){const{dist:e,angle:t,center:i}=this.calcTwoPointer();return this.startDist=e,this.startAngle=t,this.startCenter=i,this.startScale=this.scale,this.startRotation=this.rotation,this.startTx=this.tx,this.startTy=this.ty,this.dragging=!1,this.gestureMode=null,void(this.rotatePreview=0)}this.scale>1.001&&(this.dragging=!0,this.dragStart={x:e.clientX,y:e.clientY},this.startTx=this.tx,this.startTy=this.ty)}},onPointerMove(e){if(this.isImage&&this.pointers.has(e.pointerId)){if(this.pointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),2===this.pointers.size){e.preventDefault();const{dist:t,angle:i,center:s}=this.calcTwoPointer(),n=t/(this.startDist||t),a=Math.abs(n-1),r=this.normalizeAngle(i-this.startAngle),o=Math.abs(r);if(!this.gestureMode)if(o>=8)this.gestureMode="rotate";else{if(!(a>=.08))return;this.gestureMode="pinch"}if("rotate"===this.gestureMode)return this.scale=this.startScale,void(this.rotatePreview=this.clamp(r,-90,90));if("pinch"===this.gestureMode&&(this.scale=this.clamp(this.startScale*n,this.minScale,this.maxScale),this.rotatePreview=0),this.startCenter&&this.viewportRect){const e=this.startCenter.x-this.viewportRect.left-this.viewportRect.width/2,t=this.startCenter.y-this.viewportRect.top-this.viewportRect.height/2,i=s.x-this.viewportRect.left-this.viewportRect.width/2,n=s.y-this.viewportRect.top-this.viewportRect.height/2;this.tx=this.startTx+(i-e),this.ty=this.startTy+(n-t)}return}if(this.dragging&&this.scale>1.001){e.preventDefault();const t=e.clientX-this.dragStart.x,i=e.clientY-this.dragStart.y,s=this.startTx+t,n=this.startTy+i,{maxX:a,maxY:r,vw:o,vh:l}=this.getPanBounds();let c=0,h=0;s>a?(c=s-a,h=-1):s<-a&&(c=-a-s,h=1),this.edgeOverflow=c,this.edgeDir=h,this.tx=this.applyBoundWithRubber(s,a,o),this.ty=this.applyBoundWithRubber(n,r,l)}}},onPointerUp(e){if(this.isImage&&(this.pointers.has(e.pointerId)&&this.pointers.delete(e.pointerId),this.pointers.size<2&&"rotate"===this.gestureMode&&(this.finishRotate(),this.gestureMode=null),this.pointers.size<2&&(this.startCenter=null,this.startDist=0,this.startAngle=0,this.gestureMode=null),0===this.pointers.size)){if(this.dragging=!1,this.edgeOverflow>60&&0!==this.edgeDir){const e=this.edgeDir;return this.reset(),void this.$emit("edge-swipe",e)}if(this.edgeOverflow=0,this.edgeDir=0,this.scale<=1.001)this.scale=1,this.tx=0,this.ty=0;else{const{maxX:e,maxY:t}=this.getPanBounds();this.tx=Math.max(-e,Math.min(e,this.tx)),this.ty=Math.max(-t,Math.min(t,this.ty))}}},finishRotate(){const e=this.rotatePreview;let t=0;Math.abs(e)>=30&&(t=e>0?90:-90);const i=((this.rotation+t)%360+360)%360;this.rotation=i,this.rotatePreview=0,this.updateFillScale()},updateFillScale(){const e=this.rotation%360,t=90===e||270===e;t?(this.scale=2,this.tx=0,this.ty=0):(this.scale=1,this.tx=0,this.ty=0)},onDblClick(){this.isImage&&(this.scale>1.001?(this.scale=1,this.tx=0,this.ty=0):this.scale=2)}}},ui=i(1241);const di=(0,ui.A)(hi,[["render",b],["__scopeId","data-v-6479d338"]]);var mi=di,pi=i(4453);const gi={class:"public-browse"},fi={class:"header"},yi={class:"header-left"},bi={class:"logo"},vi={class:"header-center"},wi={class:"breadcrumb"},ki=["onClick"],Ti={class:"header-right"},Ci={class:"file-count"},Ai={key:0,class:"loading-container"},Si={key:1,class:"error-container"},xi={key:2,class:"gallery-container",ref:"galleryContainer"},Ei={key:0,class:"folders-section"},Mi={class:"folders-grid"},Pi=["onClick"],Li={class:"folder-name"},Ii={class:"waterfall",ref:"waterfall"},$i=["onClick"],Ni=["src","alt","onLoad"],Di=["src","onLoadedmetadata"],Fi={key:2,class:"audio-placeholder"},_i={class:"audio-name"},Ri={key:3,class:"file-placeholder"},Oi={class:"file-name"},Vi={class:"overlay"},Hi={class:"overlay-actions"},ji=["onClick"],qi=["onClick"],Ui={ref:"loadTrigger",class:"load-trigger"},Bi={key:0,class:"loading-more"},Xi={key:1,class:"no-more"},zi={key:2,class:"credit-link",href:"https://github.com/axibayuit-a11y",target:"_blank",rel:"noopener"},Wi=["src"],Yi=["src"],Ki=["src"],Qi={key:2,class:"other-file-preview"},Ji={class:"file-name"},Gi={class:"page-indicator"};function Zi(e,t,i,r,o,l){const c=pi.A,h=mi;return(0,s.uX)(),(0,s.CE)("div",gi,[(0,s.Lk)("header",fi,[(0,s.Lk)("div",yi,[(0,s.Lk)("span",bi,(0,a.v_)(l.siteName),1),(0,s.bF)(c,{class:"theme-toggle-btn"})]),(0,s.Lk)("div",vi,[(0,s.Lk)("div",wi,[(0,s.Lk)("span",{class:"breadcrumb-item",onClick:t[0]||(t[0]=(...e)=>l.goToRoot&&l.goToRoot(...e))},(0,a.v_)(l.rootDirName),1),((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(l.pathParts,(e,i)=>((0,s.uX)(),(0,s.CE)(s.FK,{key:i},[t[28]||(t[28]=(0,s.Lk)("span",{class:"breadcrumb-sep"},"/",-1)),(0,s.Lk)("span",{class:"breadcrumb-item",onClick:e=>l.goToPath(i)},(0,a.v_)(e),9,ki)],64))),128))])]),(0,s.Lk)("div",Ti,[(0,s.Lk)("span",Ci,(0,a.v_)(o.totalCount)+" 个文件",1)])]),o.loading&&0===o.files.length?((0,s.uX)(),(0,s.CE)("div",Ai,[...t[29]||(t[29]=[(0,s.Lk)("div",{class:"loading-spinner"},null,-1),(0,s.Lk)("p",null,"加载中...",-1)])])):o.error?((0,s.uX)(),(0,s.CE)("div",Si,[(0,s.Lk)("p",null,(0,a.v_)(o.error),1),o.canRetry?((0,s.uX)(),(0,s.CE)("button",{key:0,onClick:t[1]||(t[1]=(...e)=>l.loadFiles&&l.loadFiles(...e)),class:"retry-btn"},"重试")):(0,s.Q3)("",!0),t[30]||(t[30]=(0,s.Fv)('

该图库由林酱贡献代码

',1))])):((0,s.uX)(),(0,s.CE)("div",xi,[l.folders.length>0?((0,s.uX)(),(0,s.CE)("div",Ei,[(0,s.Lk)("div",Mi,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(l.folders,e=>((0,s.uX)(),(0,s.CE)("div",{key:e.name,class:"folder-card",onClick:t=>l.enterFolder(e.name)},[t[31]||(t[31]=(0,s.Lk)("div",{class:"folder-icon"},[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M10 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z"})])],-1)),(0,s.Lk)("span",Li,(0,a.v_)(l.getFolderName(e.name)),1)],8,Pi))),128))])])):(0,s.Q3)("",!0),(0,s.Lk)("div",Ii,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(l.columns,(e,i)=>((0,s.uX)(),(0,s.CE)("div",{key:i,class:"waterfall-column"},[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(e,e=>((0,s.uX)(),(0,s.CE)("div",{key:e.name,class:"waterfall-item",onClick:t=>l.openPreview(e)},[(0,s.Lk)("div",{class:(0,a.C4)(["image-wrapper",{loaded:e.loaded}])},[l.isImage(e)?((0,s.uX)(),(0,s.CE)("img",{key:0,src:l.getFileUrl(e.name),alt:e.name,loading:"lazy",onLoad:t=>l.onImageLoad(t,e),onError:t[2]||(t[2]=(...e)=>l.handleImageError&&l.handleImageError(...e))},null,40,Ni)):l.isVideo(e)?((0,s.uX)(),(0,s.CE)("video",{key:1,src:l.getFileUrl(e.name),muted:"",loop:"",preload:"metadata",onLoadedmetadata:t=>l.onVideoLoad(t,e),onPointerenter:t[3]||(t[3]=e=>"mouse"===e.pointerType&&e.target.play()),onPointerleave:t[4]||(t[4]=e=>"mouse"===e.pointerType&&e.target.pause())},null,40,Di)):l.isAudio(e)?((0,s.uX)(),(0,s.CE)("div",Fi,[t[32]||(t[32]=(0,s.Lk)("svg",{class:"audio-icon",viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z"})],-1)),(0,s.Lk)("span",_i,(0,a.v_)(l.getFileName(e.name)),1)])):((0,s.uX)(),(0,s.CE)("div",Ri,[t[33]||(t[33]=(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm-1 7V3.5L18.5 9H13z"})],-1)),(0,s.Lk)("span",Oi,(0,a.v_)(l.getFileName(e.name)),1)])),(0,s.Lk)("div",Vi,[(0,s.Lk)("div",Hi,[(0,s.Lk)("button",{class:"action-btn",onClick:(0,n.D$)(t=>l.copyLink(e.name),["stop"]),title:"复制链接"},[...t[34]||(t[34]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"})],-1)])],8,ji),(0,s.Lk)("button",{class:"action-btn",onClick:(0,n.D$)(t=>l.downloadFile(e.name),["stop"]),title:"下载"},[...t[35]||(t[35]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"})],-1)])],8,qi)])])],2)],8,$i))),128))]))),128))],512),(0,s.Lk)("div",Ui,[o.loading&&o.files.length>0?((0,s.uX)(),(0,s.CE)("div",Bi,[...t[36]||(t[36]=[(0,s.Lk)("div",{class:"loading-spinner-small"},null,-1),(0,s.Lk)("span",null,"加载中...",-1)])])):!o.hasMore&&l.mediaFiles.length>0?((0,s.uX)(),(0,s.CE)("div",Xi," 已加载全部 ")):(0,s.Q3)("",!0),!o.hasMore&&l.mediaFiles.length>0?((0,s.uX)(),(0,s.CE)("a",zi," 林酱贡献 ")):(0,s.Q3)("",!0)],512)],512)),o.previewVisible?((0,s.uX)(),(0,s.CE)("div",{key:3,class:"preview-modal",onClick:t[27]||(t[27]=(0,n.D$)((...e)=>l.closePreview&&l.closePreview(...e),["self"]))},[(0,s.Lk)("button",{class:"preview-close",onClick:t[5]||(t[5]=(0,n.D$)((...e)=>l.closePreview&&l.closePreview(...e),["stop"]))},[...t[37]||(t[37]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})],-1)])]),o.isMobile?(0,s.Q3)("",!0):((0,s.uX)(),(0,s.CE)("div",{key:0,class:"preview-content",onClick:t[11]||(t[11]=(0,n.D$)(()=>{},["stop"])),onWheel:t[12]||(t[12]=(0,n.D$)((...e)=>l.handleWheel&&l.handleWheel(...e),["prevent"]))},[l.currentPreviewFile&&l.isImage(l.currentPreviewFile)?((0,s.uX)(),(0,s.CE)("img",{key:"img-"+l.currentPreviewFile.name,src:l.getFileUrl(l.currentPreviewFile.name),class:"preview-image",style:(0,a.Tr)(l.desktopImageStyle),draggable:"false",onMousedown:t[6]||(t[6]=(...e)=>l.onImageMouseDown&&l.onImageMouseDown(...e)),onMousemove:t[7]||(t[7]=(...e)=>l.onImageMouseMove&&l.onImageMouseMove(...e)),onMouseup:t[8]||(t[8]=(...e)=>l.onImageMouseUp&&l.onImageMouseUp(...e)),onMouseleave:t[9]||(t[9]=(...e)=>l.onImageMouseUp&&l.onImageMouseUp(...e))},null,44,Wi)):l.currentPreviewFile&&l.isVideo(l.currentPreviewFile)?((0,s.uX)(),(0,s.CE)("video",{ref:"desktopVideo",key:"video-"+l.currentPreviewFile.name,src:l.getFileUrl(l.currentPreviewFile.name),controls:"",class:"preview-video",style:(0,a.Tr)(l.desktopImageStyle),onPlay:t[10]||(t[10]=(...e)=>l.onDesktopVideoPlay&&l.onDesktopVideoPlay(...e))},null,44,Yi)):l.currentPreviewFile&&l.isAudio(l.currentPreviewFile)?((0,s.uX)(),(0,s.Wv)(h,{ref:"desktopAudio",key:"audio-"+l.currentPreviewFile.name,file:l.currentPreviewFile,src:l.getFileUrl(l.currentPreviewFile.name),"is-image":!1,"is-video":!1,"is-audio":!0,"is-active":!0,onAudioEnded:l.onAudioEnded},null,8,["file","src","onAudioEnded"])):(0,s.Q3)("",!0)],32)),o.isMobile?((0,s.uX)(),(0,s.CE)("div",{key:1,class:"preview-content preview-content-mobile",onClick:t[23]||(t[23]=(0,n.D$)(()=>{},["stop"]))},[l.currentPreviewFile&&l.isVideo(l.currentPreviewFile)?((0,s.uX)(),(0,s.CE)("video",{ref:"mobileVideo",key:"m-video-"+l.currentPreviewFile.name,src:l.getFileUrl(l.currentPreviewFile.name),controls:"",playsinline:"","webkit-playsinline":"","x5-video-player-type":"h5","x5-video-player-fullscreen":"true",class:"mobile-video-native",onPlay:t[13]||(t[13]=(...e)=>l.onMobileMediaPlay&&l.onMobileMediaPlay(...e))},null,40,Ki)):l.currentPreviewFile&&l.isAudio(l.currentPreviewFile)?((0,s.uX)(),(0,s.CE)("div",{key:1,class:"mobile-audio-wrap",onTouchstart:t[14]||(t[14]=(...e)=>l.onAudioSwipeStart&&l.onAudioSwipeStart(...e)),onTouchmove:t[15]||(t[15]=(...e)=>l.onAudioSwipeMove&&l.onAudioSwipeMove(...e)),onTouchend:t[16]||(t[16]=(...e)=>l.onAudioSwipeEnd&&l.onAudioSwipeEnd(...e))},[((0,s.uX)(),(0,s.Wv)(h,{ref:"mobileAudio",key:"m-audio-"+l.currentPreviewFile.name,file:l.currentPreviewFile,src:l.getFileUrl(l.currentPreviewFile.name),"is-image":!1,"is-video":!1,"is-audio":!0,"is-active":!0,onAudioEnded:l.onAudioEnded},null,8,["file","src","onAudioEnded"])),t[38]||(t[38]=(0,s.Lk)("div",{class:"swipe-hint"},"← 滑动切换 →",-1))],32)):l.currentPreviewFile&&!l.isImage(l.currentPreviewFile)?((0,s.uX)(),(0,s.CE)("div",Qi,[t[39]||(t[39]=(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm-1 7V3.5L18.5 9H13z"})],-1)),(0,s.Lk)("span",Ji,(0,a.v_)(l.getFileName(l.currentPreviewFile.name)),1)])):((0,s.uX)(),(0,s.CE)("div",{key:3,class:"swipe-viewport",ref:"mobileViewport",onTouchstart:t[20]||(t[20]=(...e)=>l.onSwipeStart&&l.onSwipeStart(...e)),onTouchmove:t[21]||(t[21]=(...e)=>l.onSwipeMove&&l.onSwipeMove(...e)),onTouchend:t[22]||(t[22]=(...e)=>l.onSwipeEnd&&l.onSwipeEnd(...e))},[(0,s.Lk)("div",{class:"swipe-track",style:(0,a.Tr)(l.swipeTrackStyle),onTransitionend:t[19]||(t[19]=(...e)=>l.onSwipeTransitionEnd&&l.onSwipeTransitionEnd(...e))},[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(l.swipeWindow,(e,i)=>((0,s.uX)(),(0,s.CE)("div",{class:"swipe-slide",key:l.getSlideKey(e,i)},[e?((0,s.uX)(),(0,s.Wv)(h,{key:0,file:e,src:l.getFileUrl(e.name),"is-image":l.isImage(e),"is-video":!1,"is-audio":!1,"is-active":1===i,onLock:t[17]||(t[17]=e=>o.gestureLocked=!0),onUnlock:t[18]||(t[18]=e=>o.gestureLocked=!1),onEdgeSwipe:l.onEdgeSwipe},null,8,["file","src","is-image","is-active","onEdgeSwipe"])):(0,s.Q3)("",!0)]))),128))],36)],544))])):(0,s.Q3)("",!0),!o.isMobile&&o.previewIndex>0?((0,s.uX)(),(0,s.CE)("button",{key:2,class:"preview-prev",onClick:t[24]||(t[24]=(0,n.D$)((...e)=>l.prevImage&&l.prevImage(...e),["stop"]))},[...t[40]||(t[40]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"})],-1)])])):(0,s.Q3)("",!0),!o.isMobile&&o.previewIndexl.nextImage&&l.nextImage(...e),["stop"]))},[...t[41]||(t[41]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"})],-1)])])):(0,s.Q3)("",!0),o.isMobile?(0,s.Q3)("",!0):((0,s.uX)(),(0,s.CE)("button",{key:4,class:"rotate-btn",onClick:t[26]||(t[26]=(0,n.D$)((...e)=>l.rotateImage&&l.rotateImage(...e),["stop"])),title:"旋转90°"},[...t[42]||(t[42]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M7.11 8.53L5.7 7.11C4.8 8.27 4.24 9.61 4.07 11h2.02c.14-.87.49-1.72 1.02-2.47zM6.09 13H4.07c.17 1.39.72 2.73 1.62 3.89l1.41-1.42c-.52-.75-.87-1.59-1.01-2.47zm1.01 5.32c1.16.9 2.51 1.44 3.9 1.61V17.9c-.87-.15-1.71-.49-2.46-1.03L7.1 18.32zM13 4.07V1L8.45 5.55 13 10V6.09c2.84.48 5 2.94 5 5.91s-2.16 5.43-5 5.91v2.02c3.95-.49 7-3.85 7-7.93s-3.05-7.44-7-7.93z"})],-1)])])),(0,s.Lk)("div",Gi,(0,a.v_)(o.previewIndex+1)+" / "+(0,a.v_)(l.mediaFiles.length),1)])):(0,s.Q3)("",!0)])}var es=i(4373),ts=i(8401),is={name:"PublicBrowse",components:{TransformMedia:mi,ToggleDark:pi.A},data(){return{files:[],allowedDirs:[],rootDir:"",currentPath:"",totalCount:0,loading:!1,error:null,canRetry:!0,hasMore:!0,previewVisible:!1,previewIndex:0,observer:null,pageSize:24,columnCount:4,columnHeights:[0,0,0,0],imageRotation:0,imageScale:1,imageTx:0,imageTy:0,imageDragging:!1,imageDragStart:null,imageStartTx:0,imageStartTy:0,swipeX:0,swipeStartX:0,swipeStartY:0,swipeStartT:0,swipeActive:!1,swipeAnimating:!1,swipeDir:0,viewportW:0,gestureLocked:!1,audioSwipeStartX:0,audioSwipeStartT:0,audioSwipeActive:!1,isMobile:!1}},computed:{...(0,ts.L8)(["userConfig"]),siteName(){return this.userConfig?.siteTitle||"公开相册"},rootDirName(){return this.rootDir.split("/").filter(Boolean).pop()||"根目录"},pathParts(){if(!this.currentPath||!this.rootDir)return[];const e=this.currentPath.replace(this.rootDir,"").replace(/^\/+/,"");return e.split("/").filter(Boolean)},folders(){return this.files.filter(e=>e.isFolder)},mediaFiles(){return this.files.filter(e=>!e.isFolder)},columns(){const e=Array.from({length:this.columnCount},()=>[]);for(const t of this.mediaFiles){const i=t.columnIndex??0;i0?this.mediaFiles[this.previewIndex-1]:null},nextPreviewFile(){return this.previewIndex1?this.imageDragging?"grabbing":"grab":"default"}},swipeWindow(){return[this.prevPreviewFile,this.currentPreviewFile,this.nextPreviewFile]},swipeTrackStyle(){const e=-this.viewportW,t=e+this.swipeX;return{transform:`translate3d(${t}px, 0, 0)`,transition:this.swipeAnimating?"transform 0.28s ease":"none"}}},watch:{"$route.params.dir":{handler(){this.initFromRoute()}}},mounted(){oi(),this.checkMobile(),this.initFromRoute(),this.setupIntersectionObserver(),this.updateColumnCount(),window.addEventListener("resize",this.updateColumnCount),window.addEventListener("resize",this.checkMobile)},beforeUnmount(){this.observer&&this.observer.disconnect(),window.removeEventListener("resize",this.updateColumnCount),window.removeEventListener("resize",this.checkMobile)},methods:{checkMobile(){const e=window.matchMedia?.("(pointer: coarse)").matches,t=window.innerWidth<=768;this.isMobile=e||t},getSlideKey(e,t){return e?1===t?`${e.name}-${this.previewIndex}`:e.name:`empty-${t}`},updateColumnCount(){const e=window.innerWidth;let t;t=e<600?2:e<900?3:4,t!==this.columnCount&&(this.columnCount=t,this.columnHeights=new Array(this.columnCount).fill(0),this.mediaFiles.forEach(e=>{e.columnIndex=void 0,this.assignToColumn(e)}))},getShortestColumn(){let e=0,t=this.columnHeights[0];for(let i=1;i{const t=e[0];t.isIntersecting&&this.hasMore&&!this.loading&&this.loadMore()},{rootMargin:"200px"})},observeLoadTrigger(){this.$nextTick(()=>{this.$refs.loadTrigger&&this.observer&&this.observer.observe(this.$refs.loadTrigger)})},async initFromRoute(){const e=this.$route.params.dir||"",t=Array.isArray(e)?e.join("/"):e;if(!t)return this.error="请指定要浏览的目录,例如: /browse/landscape",void(this.canRetry=!1);const i=t.split("/").filter(Boolean);this.rootDir=i[0],this.currentPath=t,this.files=[],this.hasMore=!0,this.columnHeights=new Array(this.columnCount).fill(0),await this.loadFiles(),this.observeLoadTrigger()},async loadFiles(){this.loading=!0,this.error=null,this.canRetry=!0;try{const e=await es.A.get(`/api/public/list?dir=${encodeURIComponent(this.currentPath)}&count=${this.pageSize}`);e.data.allowedDirs&&(this.allowedDirs=e.data.allowedDirs);const t=(e.data.directories||[]).map(e=>({name:e,isFolder:!0})),i=(e.data.files||[]).map(e=>({name:e.name,isFolder:!1,metadata:e.metadata,columnIndex:void 0}));i.forEach(e=>this.assignToColumn(e)),this.files=[...t,...i],this.totalCount=e.data.totalCount||this.files.length,this.hasMore=this.mediaFiles.length({name:e.name,isFolder:!1,metadata:e.metadata,columnIndex:void 0}));i.forEach(e=>this.assignToColumn(e)),this.files.push(...i),this.hasMore=this.mediaFiles.length{this.showToast("已复制")}).catch(()=>{const e=document.createElement("input");e.value=t,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),this.showToast("已复制")})},showToast(e){const t=document.querySelector(".copy-toast");t&&t.remove();const i=document.createElement("div");i.className="copy-toast",i.textContent=e,document.body.appendChild(i),setTimeout(()=>i.classList.add("show"),10),setTimeout(()=>{i.classList.remove("show"),setTimeout(()=>i.remove(),300)},1500)},downloadFile(e){const t=document.createElement("a");t.href=this.getFileUrl(e),t.download=e.split("/").pop(),t.click()},openPreview(e){if(e.isFolder)return;ai(null);const t=this.mediaFiles.findIndex(t=>t.name===e.name);t>=0&&(this.previewIndex=t,this.previewVisible=!0,this.imageRotation=0,this.imageScale=1,this.imageTx=0,this.imageTy=0,this.gestureLocked=!1,document.body.style.overflow="hidden",this.$nextTick(()=>{this.viewportW=this.$refs.mobileViewport?.getBoundingClientRect().width||window.innerWidth}))},closePreview(){ai(null),this.previewVisible=!1,this.imageRotation=0,this.imageScale=1,this.imageTx=0,this.imageTy=0,this.gestureLocked=!1,document.body.style.overflow=""},prevImage(){ai(null),this.previewIndex>0&&(this.previewIndex--,this.imageRotation=0,this.imageScale=1,this.imageTx=0,this.imageTy=0)},nextImage(){ai(null),this.previewIndex0?-.1:.1;let i=this.imageScale+t;i=Math.max(.5,Math.min(4,i)),this.imageScale=i,i<=1&&(this.imageTx=0,this.imageTy=0)},onImageMouseDown(e){this.imageScale<=1||(e.preventDefault(),this.imageDragging=!0,this.imageDragStart={x:e.clientX,y:e.clientY},this.imageStartTx=this.imageTx,this.imageStartTy=this.imageTy)},onImageMouseMove(e){if(!this.imageDragging)return;const t=e.clientX-this.imageDragStart.x,i=e.clientY-this.imageDragStart.y;this.imageTx=this.imageStartTx+t,this.imageTy=this.imageStartTy+i},onImageMouseUp(){this.imageDragging=!1},onSwipeStart(e){if(this.gestureLocked)return;if(this.swipeAnimating)return;const t=e.touches[0];this.swipeStartX=t.clientX,this.swipeStartY=t.clientY,this.swipeStartT=performance.now(),this.swipeX=0,this.swipeActive=!1,this.viewportW=this.$refs.mobileViewport?.getBoundingClientRect().width||window.innerWidth},onSwipeMove(e){if(this.gestureLocked)return;if(this.swipeAnimating)return;const t=e.touches[0],i=t.clientX-this.swipeStartX,s=t.clientY-this.swipeStartY;if(!this.swipeActive){if(Math.abs(i)<8)return;if(Math.abs(i)<=Math.abs(s))return;this.swipeActive=!0}e.preventDefault();let n=i;0===this.previewIndex&&n>0?n=this.rubberBand(n,this.viewportW,.55):this.previewIndex===this.mediaFiles.length-1&&n<0&&(n=-this.rubberBand(-n,this.viewportW,.55)),this.swipeX=n},onSwipeEnd(){if(this.gestureLocked)return;if(this.swipeAnimating)return;if(!this.swipeActive)return void(this.swipeX=0);const e=Math.max(1,performance.now()-this.swipeStartT),t=this.swipeX/e,i=.2*this.viewportW;let s=0;(this.swipeX<=-i||t<=-.8)&&(s=1),(this.swipeX>=i||t>=.8)&&(s=-1),(-1===s&&0===this.previewIndex||1===s&&this.previewIndex===this.mediaFiles.length-1)&&(s=0),this.swipeDir=s,this.swipeAnimating=!0,this.swipeX=1===s?-this.viewportW:-1===s?+this.viewportW:0},onSwipeTransitionEnd(){this.swipeAnimating&&(1===this.swipeDir&&this.previewIndex++,-1===this.swipeDir&&this.previewIndex--,this.swipeAnimating=!1,this.swipeDir=0,this.swipeX=0)},rubberBand(e,t,i=.55){return e*t*i/(t+i*e)},onEdgeSwipe(e){-1===e&&0===this.previewIndex||1===e&&this.previewIndex===this.mediaFiles.length-1||(this.swipeDir=e,this.swipeAnimating=!0,1===e?this.swipeX=-this.viewportW:-1===e&&(this.swipeX=+this.viewportW))},onAudioSwipeStart(e){const t=e.touches[0];this.audioSwipeStartX=t.clientX,this.audioSwipeStartT=performance.now(),this.audioSwipeActive=!1},onAudioSwipeMove(e){if(!this.audioSwipeStartX)return;const t=e.touches[0],i=t.clientX-this.audioSwipeStartX;Math.abs(i)>30&&(this.audioSwipeActive=!0)},onAudioSwipeEnd(e){if(!this.audioSwipeActive)return void(this.audioSwipeStartX=0);const t=e.changedTouches[0],i=t.clientX-this.audioSwipeStartX,s=Math.max(1,performance.now()-this.audioSwipeStartT),n=i/s,a=80;i>a||n>.5?this.prevImage():(i<-a||n<-.5)&&this.nextImage(),this.audioSwipeStartX=0,this.audioSwipeActive=!1},onDesktopVideoPlay(e){ai(e.target)},onMobileMediaPlay(e){ai(e.target)},onAudioEnded(e){"next"===e&&this.previewIndex{setTimeout(()=>{const e=this.isMobile?this.$refs.mobileAudio:this.$refs.desktopAudio;e?.player&&e.player.play()},100)}))}}};const ss=(0,ui.A)(is,[["render",Zi],["__scopeId","data-v-3a9fa997"]]);var ns=ss},1114:function(e,t,i){"use strict";function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function n(e,t){if("object"!=s(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var n=i.call(e,t||"default");if("object"!=s(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function a(e){var t=n(e,"string");return"symbol"==s(t)?t:t+""}function r(e,t,i){return(t=a(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}i.d(t,{A:function(){return r}})},1583:function(e,t,i){var s,n,a;i(4114),function(i,r){n=[],s=r,a="function"===typeof s?s.apply(t,n):s,void 0===a||(e.exports=a)}(0,function(){var e=function(){},t={},i={},s={};function n(e,t){e=e.push?e:[e];var n,a,r,o,l=[],c=e.length,h=c;n=function(e,i){i.length&&l.push(e),h--,h||t(l)};while(c--)a=e[c],r=i[a],r?n(a,r):(o=s[a]=s[a]||[],o.push(n))}function a(e,t){if(e){var n=s[e];if(i[e]=t,n)while(n.length)n[0](e,t),n.splice(0,1)}}function r(t,i){t.call&&(t={success:t}),i.length?(t.error||e)(i):(t.success||e)(t)}function o(t,i,s,n){var a,r,l,c=document,h=s.async,u=(s.numRetries||0)+1,d=s.before||e,m=t.replace(/[\?|#].*$/,""),p=t.replace(/^(css|img|module|nomodule)!/,"");if(n=n||0,/(^css!|\.css$)/.test(m))l=c.createElement("link"),l.rel="stylesheet",l.href=p,a="hideFocus"in l,a&&l.relList&&(a=0,l.rel="preload",l.as="style");else if(/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(m))l=c.createElement("img"),l.src=p;else if(l=c.createElement("script"),l.src=p,l.async=void 0===h||h,r="noModule"in l,/^module!/.test(m)){if(!r)return i(t,"l");l.type="module"}else if(/^nomodule!/.test(m)&&r)return i(t,"l");l.onload=l.onerror=l.onbeforeload=function(e){var r=e.type[0];if(a)try{l.sheet.cssText.length||(r="e")}catch(c){18!=c.code&&(r="e")}if("e"==r){if(n+=1,nt){var i=function(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}(t);return parseFloat(e.toFixed(i))}return Math.round(e/t)*t}return function(){function t(e,i){(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,t),f(e)?this.element=e:m(e)&&(this.element=document.querySelector(e)),f(this.element)&&b(this.element.rangeTouch)&&(this.config=s({},n,{},i),this.init())}return i=t,o=[{key:"setup",value:function(e){var i=1(i=100/l.width*(n.clientX-l.left))?i=0:100i?i-=(100-2*i)*c:50d.handleToggleClick&&d.handleToggleClick(...e))},[(0,s.bF)(n.eB,{name:"icon-fade",mode:"out-in"},{default:(0,s.k6)(()=>[u.isAuto?((0,s.uX)(),(0,s.Wv)(m,{key:"auto-mode",icon:"circle-half-stroke",class:"auto-icon",style:{"font-size":"1.5em",color:"var(--theme-toggle-color)"}})):((0,s.uX)(),(0,s.CE)("svg",{key:"sun-moon",class:(0,a.C4)(["theme_toggle_svg",{dark:u.isDark}]),width:"1.5em",height:"1.5em",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",stroke:"currentColor"},[(0,s.Lk)("mask",r,[t[1]||(t[1]=(0,s.Lk)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"white"},null,-1)),(0,s.Lk)("circle",{class:"theme_toggle_circle1",fill:"black",cx:u.isDark?"50%":"100%",cy:u.isDark?"23%":"0%",r:u.isDark?"9":"5"},null,8,o)]),(0,s.Lk)("circle",{class:"theme_toggle_circle2",cx:"12",cy:"12",r:u.isDark?"9":"5",mask:"url(#themeMask)"},null,8,l),(0,s.Lk)("g",{class:"theme_toggle_g",stroke:"currentColor",opacity:u.isDark?0:1},[...t[2]||(t[2]=[(0,s.Lk)("line",{x1:"12",y1:"1",x2:"12",y2:"3"},null,-1),(0,s.Lk)("line",{x1:"12",y1:"21",x2:"12",y2:"23"},null,-1),(0,s.Lk)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},null,-1),(0,s.Lk)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},null,-1),(0,s.Lk)("line",{x1:"1",y1:"12",x2:"3",y2:"12"},null,-1),(0,s.Lk)("line",{x1:"21",y1:"12",x2:"23",y2:"12"},null,-1),(0,s.Lk)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},null,-1),(0,s.Lk)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},null,-1)])],8,c)],2))]),_:1})])}var u={name:"ToggleDark",data(){return{isDark:this.$store.getters.useDarkMode,isAuto:!this.$store.getters.cusDarkMode}},methods:{handleToggleClick(){this.isAuto?(this.isDark=!1,this.isAuto=!1,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):this.isDark?(this.isAuto=!0,this.$store.commit("setCusDarkMode",!1)):(this.isDark=!0,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0))}}},d=i(1241);const m=(0,d.A)(u,[["render",h],["__scopeId","data-v-466b2b5c"]]);var p=m}}]); -//# sourceMappingURL=324.4d567a33.js.map \ No newline at end of file diff --git a/js/324.4d567a33.js.gz b/js/324.4d567a33.js.gz deleted file mode 100644 index c0b4f4d..0000000 Binary files a/js/324.4d567a33.js.gz and /dev/null differ diff --git a/js/324.4d567a33.js.map b/js/324.4d567a33.js.map deleted file mode 100644 index 2944661..0000000 --- a/js/324.4d567a33.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/324.4d567a33.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/components/TransformMedia.vue?13e5","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/is.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/animation.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/objects.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/elements.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/support.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/events.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/promise.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/arrays.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/style.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/html5.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/browser.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/strings.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/i18n.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/storage.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/fetch.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/load-sprite.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/time.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/controls.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/urls.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/captions.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/config/defaults.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/config/states.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/config/types.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/console.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/fullscreen.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/load-image.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/ui.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/listeners.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/load-script.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plugins/vimeo.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plugins/youtube.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/media.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plugins/ads.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/numbers.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plugins/preview-thumbnails.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/source.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plyr.js","webpack://sanyue_imghub/./src/utils/mediaManager.js","webpack://sanyue_imghub/./src/components/TransformMedia.vue","webpack://sanyue_imghub/./src/components/TransformMedia.vue?c392","webpack://sanyue_imghub/./src/views/PublicBrowse.vue?bee2","webpack://sanyue_imghub/./src/views/PublicBrowse.vue","webpack://sanyue_imghub/./src/views/PublicBrowse.vue?bab5","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://sanyue_imghub/./node_modules/loadjs/dist/loadjs.umd.js","webpack://sanyue_imghub/src/js/rangetouch.js","webpack://sanyue_imghub/src/js/config.js","webpack://sanyue_imghub/src/js/utils/css.js","webpack://sanyue_imghub/src/js/utils/is.js","webpack://sanyue_imghub/src/js/utils/numbers.js","webpack://sanyue_imghub/src/js/utils/events.js","webpack://sanyue_imghub/./src/components/ToggleDark.vue?6d4a","webpack://sanyue_imghub/./src/components/ToggleDark.vue","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0bce"],"sourcesContent":["import { normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, withModifiers as _withModifiers, toDisplayString as _toDisplayString } from \"vue\";\nconst _hoisted_1 = [\"src\"];\nconst _hoisted_2 = [\"src\"];\nconst _hoisted_3 = {\n key: 2,\n class: \"video-placeholder\"\n};\nconst _hoisted_4 = {\n class: \"audio-cover\"\n};\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 1,\n class: \"audio-icon-large\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n};\nconst _hoisted_7 = {\n class: \"audio-info\"\n};\nconst _hoisted_8 = {\n class: \"audio-title\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"audio-artist\"\n};\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = {\n key: 4,\n class: \"audio-placeholder\"\n};\nconst _hoisted_12 = {\n class: \"audio-name\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return _openBlock(), _createElementBlock(\"div\", {\n class: \"tm-viewport\",\n ref: \"viewport\",\n onPointerdown: _cache[3] || (_cache[3] = (...args) => $options.onPointerDown && $options.onPointerDown(...args)),\n onPointermove: _cache[4] || (_cache[4] = (...args) => $options.onPointerMove && $options.onPointerMove(...args)),\n onPointerup: _cache[5] || (_cache[5] = (...args) => $options.onPointerUp && $options.onPointerUp(...args)),\n onPointercancel: _cache[6] || (_cache[6] = (...args) => $options.onPointerUp && $options.onPointerUp(...args)),\n onDblclick: _cache[7] || (_cache[7] = _withModifiers((...args) => $options.onDblClick && $options.onDblClick(...args), [\"prevent\"]))\n }, [$props.isImage ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n class: \"tm-media\",\n src: $props.src,\n draggable: \"false\",\n style: _normalizeStyle($options.mediaStyle),\n onLoad: _cache[0] || (_cache[0] = (...args) => $options.onLoad && $options.onLoad(...args))\n }, null, 44, _hoisted_1)) : $props.isVideo && $props.isActive ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"tm-video-wrap\",\n onPointerdown: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"video\", {\n ref: \"videoEl\",\n class: \"plyr-video\",\n src: $props.src,\n playsinline: \"\"\n }, null, 8, _hoisted_2)], 32)) : $props.isVideo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [...(_cache[8] || (_cache[8] = [_createElementVNode(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n }, [_createElementVNode(\"path\", {\n d: \"M8 5v14l11-7z\"\n })], -1)]))])) : $props.isAudio && $props.isActive ? (_openBlock(), _createElementBlock(\"div\", {\n key: 3,\n class: \"tm-audio-wrap\",\n onPointerdown: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_4, [$data.audioCover ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: $data.audioCover,\n class: \"cover-img\"\n }, null, 8, _hoisted_5)) : (_openBlock(), _createElementBlock(\"svg\", _hoisted_6, [...(_cache[9] || (_cache[9] = [_createElementVNode(\"path\", {\n d: \"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z\"\n }, null, -1)]))]))]), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, _toDisplayString($data.audioTitle), 1), $data.audioArtist ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, _toDisplayString($data.audioArtist), 1)) : _createCommentVNode(\"\", true)]), _createElementVNode(\"audio\", {\n ref: \"audioEl\",\n class: \"plyr-audio\",\n src: $props.src\n }, null, 8, _hoisted_10)], 32)) : $props.isAudio ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_cache[10] || (_cache[10] = _createElementVNode(\"svg\", {\n class: \"audio-icon-large\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n }, [_createElementVNode(\"path\", {\n d: \"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z\"\n })], -1)), _createElementVNode(\"span\", _hoisted_12, _toDisplayString($data.audioTitle), 1)])) : _createCommentVNode(\"\", true)], 544);\n}","// ==========================================================================\n// Type checking utils\n// ==========================================================================\n\nconst getConstructor = input => (input !== null && typeof input !== 'undefined' ? input.constructor : null);\nconst instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor);\nconst isNullOrUndefined = input => input === null || typeof input === 'undefined';\nconst isObject = input => getConstructor(input) === Object;\nconst isNumber = input => getConstructor(input) === Number && !Number.isNaN(input);\nconst isString = input => getConstructor(input) === String;\nconst isBoolean = input => getConstructor(input) === Boolean;\nconst isFunction = input => typeof input === 'function';\nconst isArray = input => Array.isArray(input);\nconst isWeakMap = input => instanceOf(input, WeakMap);\nconst isNodeList = input => instanceOf(input, NodeList);\nconst isTextNode = input => getConstructor(input) === Text;\nconst isEvent = input => instanceOf(input, Event);\nconst isKeyboardEvent = input => instanceOf(input, KeyboardEvent);\nconst isCue = input => instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);\nconst isTrack = input => instanceOf(input, TextTrack) || (!isNullOrUndefined(input) && isString(input.kind));\nconst isPromise = input => instanceOf(input, Promise) && isFunction(input.then);\n\nfunction isElement(input) {\n return input !== null\n && typeof input === 'object'\n && input.nodeType === 1\n && typeof input.style === 'object'\n && typeof input.ownerDocument === 'object';\n}\n\nfunction isEmpty(input) {\n return isNullOrUndefined(input)\n || ((isString(input) || isArray(input) || isNodeList(input)) && !input.length)\n || (isObject(input) && !Object.keys(input).length);\n}\n\nfunction isUrl(input) {\n // Accept a URL object\n if (instanceOf(input, window.URL)) {\n return true;\n }\n\n // Must be string from here\n if (!isString(input)) {\n return false;\n }\n\n // Add the protocol if required\n let string = input;\n if (!input.startsWith('http://') || !input.startsWith('https://')) {\n string = `http://${input}`;\n }\n\n try {\n return !isEmpty(new URL(string).hostname);\n }\n catch {\n return false;\n }\n}\n\nexport default {\n nullOrUndefined: isNullOrUndefined,\n object: isObject,\n number: isNumber,\n string: isString,\n boolean: isBoolean,\n function: isFunction,\n array: isArray,\n weakMap: isWeakMap,\n nodeList: isNodeList,\n element: isElement,\n textNode: isTextNode,\n event: isEvent,\n keyboardEvent: isKeyboardEvent,\n cue: isCue,\n track: isTrack,\n promise: isPromise,\n url: isUrl,\n empty: isEmpty,\n};\n","// ==========================================================================\n// Animation utils\n// ==========================================================================\n\nimport is from './is';\n\nexport const transitionEndEvent = (() => {\n const element = document.createElement('span');\n\n const events = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend',\n transition: 'transitionend',\n };\n\n const type = Object.keys(events).find(event => element.style[event] !== undefined);\n\n return is.string(type) ? events[type] : false;\n})();\n\n// Force repaint of element\nexport function repaint(element, delay) {\n setTimeout(() => {\n try {\n element.hidden = true;\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight;\n element.hidden = false;\n }\n catch {}\n }, delay);\n}\n","// ==========================================================================\n// Object utils\n// ==========================================================================\n\nimport is from './is';\n\n// Clone nested objects\nexport function cloneDeep(object) {\n return JSON.parse(JSON.stringify(object));\n}\n\n// Get a nested value in an object\nexport function getDeep(object, path) {\n return path.split('.').reduce((obj, key) => obj && obj[key], object);\n}\n\n// Deep extend destination object with N more objects\nexport function extend(target = {}, ...sources) {\n if (!sources.length) {\n return target;\n }\n\n const source = sources.shift();\n\n if (!is.object(source)) {\n return target;\n }\n\n Object.keys(source).forEach((key) => {\n if (is.object(source[key])) {\n if (!Object.keys(target).includes(key)) {\n Object.assign(target, { [key]: {} });\n }\n\n extend(target[key], source[key]);\n }\n else {\n Object.assign(target, { [key]: source[key] });\n }\n });\n\n return extend(target, ...sources);\n}\n","// ==========================================================================\n// Element utils\n// ==========================================================================\n\nimport is from './is';\nimport { extend } from './objects';\n\n// Wrap an element\nexport function wrap(elements, wrapper) {\n // Convert `elements` to an array, if necessary.\n const targets = elements.length ? elements : [elements];\n\n // Loops backwards to prevent having to clone the wrapper on the\n // first element (see `child` below).\n Array.from(targets)\n .reverse()\n .forEach((element, index) => {\n const child = index > 0 ? wrapper.cloneNode(true) : wrapper;\n // Cache the current parent and sibling.\n const parent = element.parentNode;\n const sibling = element.nextSibling;\n\n // Wrap the element (is automatically removed from its current\n // parent).\n child.appendChild(element);\n\n // If the element had a sibling, insert the wrapper before\n // the sibling to maintain the HTML structure; otherwise, just\n // append it to the parent.\n if (sibling) {\n parent.insertBefore(child, sibling);\n }\n else {\n parent.appendChild(child);\n }\n });\n}\n\n// Set attributes\nexport function setAttributes(element, attributes) {\n if (!is.element(element) || is.empty(attributes)) return;\n\n // Assume null and undefined attributes should be left out,\n // Setting them would otherwise convert them to \"null\" and \"undefined\"\n Object.entries(attributes)\n .filter(([, value]) => !is.nullOrUndefined(value))\n .forEach(([key, value]) => element.setAttribute(key, value));\n}\n\n// Create a DocumentFragment\nexport function createElement(type, attributes, text) {\n // Create a new \n const element = document.createElement(type);\n\n // Set all passed attributes\n if (is.object(attributes)) {\n setAttributes(element, attributes);\n }\n\n // Add text node\n if (is.string(text)) {\n element.textContent = text;\n }\n\n // Return built element\n return element;\n}\n\n// Insert an element after another\nexport function insertAfter(element, target) {\n if (!is.element(element) || !is.element(target)) return;\n\n target.parentNode.insertBefore(element, target.nextSibling);\n}\n\n// Insert a DocumentFragment\nexport function insertElement(type, parent, attributes, text) {\n if (!is.element(parent)) return;\n\n parent.appendChild(createElement(type, attributes, text));\n}\n\n// Remove element(s)\nexport function removeElement(element) {\n if (is.nodeList(element) || is.array(element)) {\n Array.from(element).forEach(removeElement);\n return;\n }\n\n if (!is.element(element) || !is.element(element.parentNode)) {\n return;\n }\n\n element.parentNode.removeChild(element);\n}\n\n// Remove all child elements\nexport function emptyElement(element) {\n if (!is.element(element)) return;\n\n let { length } = element.childNodes;\n\n while (length > 0) {\n element.removeChild(element.lastChild);\n length -= 1;\n }\n}\n\n// Replace element\nexport function replaceElement(newChild, oldChild) {\n if (!is.element(oldChild) || !is.element(oldChild.parentNode) || !is.element(newChild)) return null;\n\n oldChild.parentNode.replaceChild(newChild, oldChild);\n\n return newChild;\n}\n\n// Get an attribute object from a string selector\nexport function getAttributesFromSelector(sel, existingAttributes) {\n // For example:\n // '.test' to { class: 'test' }\n // '#test' to { id: 'test' }\n // '[data-test=\"test\"]' to { 'data-test': 'test' }\n\n if (!is.string(sel) || is.empty(sel)) return {};\n\n const attributes = {};\n const existing = extend({}, existingAttributes);\n\n sel.split(',').forEach((s) => {\n // Remove whitespace\n const selector = s.trim();\n const className = selector.replace('.', '');\n const stripped = selector.replace(/[[\\]]/g, '');\n // Get the parts and value\n const parts = stripped.split('=');\n const [key] = parts;\n const value = parts.length > 1 ? parts[1].replace(/[\"']/g, '') : '';\n // Get the first character\n const start = selector.charAt(0);\n\n switch (start) {\n case '.':\n // Add to existing classname\n if (is.string(existing.class)) {\n attributes.class = `${existing.class} ${className}`;\n }\n else {\n attributes.class = className;\n }\n break;\n\n case '#':\n // ID selector\n attributes.id = selector.replace('#', '');\n break;\n\n case '[':\n // Attribute selector\n attributes[key] = value;\n\n break;\n\n default:\n break;\n }\n });\n\n return extend(existing, attributes);\n}\n\n// Toggle hidden\nexport function toggleHidden(element, hidden) {\n if (!is.element(element)) return;\n\n let hide = hidden;\n\n if (!is.boolean(hide)) {\n hide = !element.hidden;\n }\n\n element.hidden = hide;\n}\n\n// Mirror Element.classList.toggle, with IE compatibility for \"force\" argument\nexport function toggleClass(element, className, force) {\n if (is.nodeList(element)) {\n return Array.from(element).map(e => toggleClass(e, className, force));\n }\n\n if (is.element(element)) {\n let method = 'toggle';\n if (typeof force !== 'undefined') {\n method = force ? 'add' : 'remove';\n }\n\n element.classList[method](className);\n return element.classList.contains(className);\n }\n\n return false;\n}\n\n// Has class name\nexport function hasClass(element, className) {\n return is.element(element) && element.classList.contains(className);\n}\n\n// Element matches selector\nexport function matches(element, selector) {\n const { prototype } = Element;\n\n function match() {\n return Array.from(document.querySelectorAll(selector)).includes(this);\n }\n\n const method\n = prototype.matches\n || prototype.webkitMatchesSelector\n || prototype.mozMatchesSelector\n || prototype.msMatchesSelector\n || match;\n\n return method.call(element, selector);\n}\n\n// Closest ancestor element matching selector (also tests element itself)\nexport function closest(element, selector) {\n const { prototype } = Element;\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\n function closestElement() {\n let el = this;\n\n do {\n if (matches.matches(el, selector)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n }\n\n const method = prototype.closest || closestElement;\n\n return method.call(element, selector);\n}\n\n// Find all elements\nexport function getElements(selector) {\n return this.elements.container.querySelectorAll(selector);\n}\n\n// Find a single element\nexport function getElement(selector) {\n return this.elements.container.querySelector(selector);\n}\n\n// Set focus and tab focus class\nexport function setFocus(element = null, focusVisible = false) {\n if (!is.element(element)) return;\n\n // Set regular focus\n element.focus({ preventScroll: true, focusVisible });\n}\n","// ==========================================================================\n// Plyr support checks\n// ==========================================================================\n\nimport { transitionEndEvent } from './utils/animation';\nimport { createElement } from './utils/elements';\nimport is from './utils/is';\n\n// Default codecs for checking mimetype support\nconst defaultCodecs = {\n 'audio/ogg': 'vorbis',\n 'audio/wav': '1',\n 'video/webm': 'vp8, vorbis',\n 'video/mp4': 'avc1.42E01E, mp4a.40.2',\n 'video/ogg': 'theora',\n};\n\n// Check for feature support\nconst support = {\n // Basic support\n audio: 'canPlayType' in document.createElement('audio'),\n video: 'canPlayType' in document.createElement('video'),\n\n // Check for support\n // Basic functionality vs full UI\n check(type, provider) {\n const api = support[type] || provider !== 'html5';\n const ui = api && support.rangeInput;\n\n return {\n api,\n ui,\n };\n },\n\n // Picture-in-picture support\n pip: (() => {\n return (document.pictureInPictureEnabled && !createElement('video').disablePictureInPicture);\n })(),\n\n // Airplay support\n // Safari only currently\n airplay: is.function(window.WebKitPlaybackTargetAvailabilityEvent),\n\n // Inline playback support\n // https://webkit.org/blog/6784/new-video-policies-for-ios/\n playsinline: 'playsInline' in document.createElement('video'),\n\n // Check for mime type support against a player instance\n // Credits: http://diveintohtml5.info/everything.html\n // Related: http://www.leanbackplayer.com/test/h5mt.html\n mime(input) {\n if (is.empty(input)) {\n return false;\n }\n\n const [mediaType] = input.split('/');\n let type = input;\n\n // Verify we're using HTML5 and there's no media type mismatch\n if (!this.isHTML5 || mediaType !== this.type) {\n return false;\n }\n\n // Add codec if required\n if (Object.keys(defaultCodecs).includes(type)) {\n type += `; codecs=\"${defaultCodecs[input]}\"`;\n }\n\n try {\n return Boolean(type && this.media.canPlayType(type).replace(/no/, ''));\n }\n catch {\n return false;\n }\n },\n\n // Check for textTracks support\n textTracks: 'textTracks' in document.createElement('video'),\n\n // Sliders\n rangeInput: (() => {\n const range = document.createElement('input');\n range.type = 'range';\n return range.type === 'range';\n })(),\n\n // Touch\n // NOTE: Remember a device can be mouse + touch enabled so we check on first touch event\n touch: 'ontouchstart' in document.documentElement,\n\n // Detect transitions support\n transitions: transitionEndEvent !== false,\n\n // Reduced motion iOS & MacOS setting\n // https://webkit.org/blog/7551/responsive-design-for-motion/\n reducedMotion: 'matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches,\n};\n\nexport default support;\n","// ==========================================================================\n// Event utils\n// ==========================================================================\n\nimport is from './is';\n\n// Check for passive event listener support\n// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n// https://www.youtube.com/watch?v=NPM6172J22g\nconst supportsPassiveListeners = (() => {\n // Test via a getter in the options object to see if the passive property is accessed\n let supported = false;\n try {\n const options = Object.defineProperty({}, 'passive', {\n get() {\n supported = true;\n return null;\n },\n });\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n }\n catch {}\n\n return supported;\n})();\n\n// Toggle event listener\nexport function toggleListener(element, event, callback, toggle = false, passive = true, capture = false) {\n // Bail if no element, event, or callback\n if (!element || !('addEventListener' in element) || is.empty(event) || !is.function(callback)) {\n return;\n }\n\n // Allow multiple events\n const events = event.split(' ');\n // Build options\n // Default to just the capture boolean for browsers with no passive listener support\n let options = capture;\n\n // If passive events listeners are supported\n if (supportsPassiveListeners) {\n options = {\n // Whether the listener can be passive (i.e. default never prevented)\n passive,\n // Whether the listener is a capturing listener or not\n capture,\n };\n }\n\n // If a single node is passed, bind the event listener\n events.forEach((type) => {\n if (this && this.eventListeners && toggle) {\n // Cache event listener\n this.eventListeners.push({ element, type, callback, options });\n }\n\n element[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options);\n });\n}\n\n// Bind event handler\nexport function on(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, true, passive, capture);\n}\n\n// Unbind event handler\nexport function off(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, false, passive, capture);\n}\n\n// Bind once-only event handler\nexport function once(element, events = '', callback, passive = true, capture = false) {\n const onceCallback = (...args) => {\n off(element, events, onceCallback, passive, capture);\n callback.apply(this, args);\n };\n\n toggleListener.call(this, element, events, onceCallback, true, passive, capture);\n}\n\n// Trigger event\nexport function triggerEvent(element, type = '', bubbles = false, detail = {}) {\n // Bail if no element\n if (!is.element(element) || is.empty(type)) {\n return;\n }\n\n // Create and dispatch the event\n const event = new CustomEvent(type, {\n bubbles,\n detail: { ...detail, plyr: this },\n });\n\n // Dispatch the event\n element.dispatchEvent(event);\n}\n\n// Unbind all cached event listeners\nexport function unbindListeners() {\n if (this && this.eventListeners) {\n this.eventListeners.forEach((item) => {\n const { element, type, callback, options } = item;\n element.removeEventListener(type, callback, options);\n });\n\n this.eventListeners = [];\n }\n}\n\n// Run method when / if player is ready\nexport function ready() {\n return new Promise(resolve =>\n this.ready ? setTimeout(resolve, 0) : on.call(this, this.elements.container, 'ready', resolve),\n ).then(() => {});\n}\n","import is from './is';\n/**\n * Silence a Promise-like object.\n * This is useful for avoiding non-harmful, but potentially confusing \"uncaught\n * play promise\" rejection error messages.\n * @param {object} value An object that may or may not be `Promise`-like.\n */\nexport function silencePromise(value) {\n if (is.promise(value)) {\n value.then(null, () => {});\n }\n}\n\nexport default { silencePromise };\n","// ==========================================================================\n// Array utils\n// ==========================================================================\n\nimport is from './is';\n\n// Remove duplicates in an array\nexport function dedupe(array) {\n if (!is.array(array)) {\n return array;\n }\n\n return array.filter((item, index) => array.indexOf(item) === index);\n}\n\n// Get the closest value in an array\nexport function closest(array, value) {\n if (!is.array(array) || !array.length) {\n return null;\n }\n\n return array.reduce((prev, curr) => (Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev));\n}\n","// ==========================================================================\n// Style utils\n// ==========================================================================\n\nimport { closest } from './arrays';\nimport is from './is';\n\n// Check support for a CSS declaration\nexport function supportsCSS(declaration) {\n if (!window || !window.CSS) {\n return false;\n }\n\n return window.CSS.supports(declaration);\n}\n\n// Standard/common aspect ratios\nconst standardRatios = [\n [1, 1],\n [4, 3],\n [3, 4],\n [5, 4],\n [4, 5],\n [3, 2],\n [2, 3],\n [16, 10],\n [10, 16],\n [16, 9],\n [9, 16],\n [21, 9],\n [9, 21],\n [32, 9],\n [9, 32],\n].reduce((out, [x, y]) => ({ ...out, [x / y]: [x, y] }), {});\n\n// Validate an aspect ratio\nexport function validateAspectRatio(input) {\n if (!is.array(input) && (!is.string(input) || !input.includes(':'))) {\n return false;\n }\n\n const ratio = is.array(input) ? input : input.split(':');\n\n return ratio.map(Number).every(is.number);\n}\n\n// Reduce an aspect ratio to it's lowest form\nexport function reduceAspectRatio(ratio) {\n if (!is.array(ratio) || !ratio.every(is.number)) {\n return null;\n }\n\n const [width, height] = ratio;\n const getDivider = (w, h) => (h === 0 ? w : getDivider(h, w % h));\n const divider = getDivider(width, height);\n\n return [width / divider, height / divider];\n}\n\n// Calculate an aspect ratio\nexport function getAspectRatio(input) {\n const parse = ratio => (validateAspectRatio(ratio) ? ratio.split(':').map(Number) : null);\n // Try provided ratio\n let ratio = parse(input);\n\n // Get from config\n if (ratio === null) {\n ratio = parse(this.config.ratio);\n }\n\n // Get from embed\n if (ratio === null && !is.empty(this.embed) && is.array(this.embed.ratio)) {\n ({ ratio } = this.embed);\n }\n\n // Get from HTML5 video\n if (ratio === null && this.isHTML5) {\n const { videoWidth, videoHeight } = this.media;\n ratio = [videoWidth, videoHeight];\n }\n\n return reduceAspectRatio(ratio);\n}\n\n// Set aspect ratio for responsive container\nexport function setAspectRatio(input) {\n if (!this.isVideo) {\n return {};\n }\n\n const { wrapper } = this.elements;\n const ratio = getAspectRatio.call(this, input);\n\n if (!is.array(ratio)) {\n return {};\n }\n\n const [x, y] = reduceAspectRatio(ratio);\n const useNative = supportsCSS(`aspect-ratio: ${x}/${y}`);\n const padding = (100 / x) * y;\n\n if (useNative) {\n wrapper.style.aspectRatio = `${x}/${y}`;\n }\n else {\n wrapper.style.paddingBottom = `${padding}%`;\n }\n\n // For Vimeo we have an extra
to hide the standard controls and UI\n if (this.isVimeo && !this.config.vimeo.premium && this.supported.ui) {\n const height = (100 / this.media.offsetWidth) * Number.parseInt(window.getComputedStyle(this.media).paddingBottom, 10);\n const offset = (height - padding) / (height / 50);\n\n if (this.fullscreen.active) {\n wrapper.style.paddingBottom = null;\n }\n else {\n this.media.style.transform = `translateY(-${offset}%)`;\n }\n }\n else if (this.isHTML5) {\n wrapper.classList.add(this.config.classNames.videoFixedRatio);\n }\n\n return { padding, ratio };\n}\n\n// Round an aspect ratio to closest standard ratio\nexport function roundAspectRatio(x, y, tolerance = 0.05) {\n const ratio = x / y;\n const closestRatio = closest(Object.keys(standardRatios), ratio);\n\n // Check match is within tolerance\n if (Math.abs(closestRatio - ratio) <= tolerance) {\n return standardRatios[closestRatio];\n }\n\n // No match\n return [x, y];\n}\n\n// Get the size of the viewport\n// https://stackoverflow.com/questions/1248081/how-to-get-the-browser-viewport-dimensions\nexport function getViewportSize() {\n const width = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\n const height = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\n return [width, height];\n}\n","// ==========================================================================\n// Plyr HTML5 helpers\n// ==========================================================================\n\nimport support from './support';\nimport { removeElement } from './utils/elements';\nimport { triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport { silencePromise } from './utils/promise';\nimport { setAspectRatio } from './utils/style';\n\nconst html5 = {\n getSources() {\n if (!this.isHTML5) {\n return [];\n }\n\n const sources = Array.from(this.media.querySelectorAll('source'));\n\n // Filter out unsupported sources (if type is specified)\n return sources.filter((source) => {\n const type = source.getAttribute('type');\n\n if (is.empty(type)) {\n return true;\n }\n\n return support.mime.call(this, type);\n });\n },\n\n // Get quality levels\n getQualityOptions() {\n // Whether we're forcing all options (e.g. for streaming)\n if (this.config.quality.forced) {\n return this.config.quality.options;\n }\n\n // Get sizes from elements\n return html5.getSources\n .call(this)\n .map(source => Number(source.getAttribute('size')))\n .filter(Boolean);\n },\n\n setup() {\n if (!this.isHTML5) {\n return;\n }\n\n const player = this;\n\n // Set speed options from config\n player.options.speed = player.config.speed.options;\n\n // Set aspect ratio if fixed\n if (!is.empty(this.config.ratio)) {\n setAspectRatio.call(player);\n }\n\n // Quality\n Object.defineProperty(player.media, 'quality', {\n get() {\n // Get sources\n const sources = html5.getSources.call(player);\n const source = sources.find(s => s.getAttribute('src') === player.source);\n\n // Return size, if match is found\n return source && Number(source.getAttribute('size'));\n },\n set(input) {\n if (player.quality === input) {\n return;\n }\n\n // If we're using an external handler...\n if (player.config.quality.forced && is.function(player.config.quality.onChange)) {\n player.config.quality.onChange(input);\n }\n else {\n // Get sources\n const sources = html5.getSources.call(player);\n // Get first match for requested size\n const source = sources.find(s => Number(s.getAttribute('size')) === input);\n\n // No matching source found\n if (!source) {\n return;\n }\n\n // Get current state\n const { currentTime, paused, preload, readyState, playbackRate } = player.media;\n\n // Set new source\n player.media.src = source.getAttribute('src');\n\n // Prevent loading if preload=\"none\" and the current source isn't loaded (#1044)\n if (preload !== 'none' || readyState) {\n // Restore time\n player.once('loadedmetadata', () => {\n player.speed = playbackRate;\n player.currentTime = currentTime;\n\n // Resume playing\n if (!paused) {\n silencePromise(player.play());\n }\n });\n\n // Load new source\n player.media.load();\n }\n }\n\n // Trigger change event\n triggerEvent.call(player, player.media, 'qualitychange', false, {\n quality: input,\n });\n },\n });\n },\n\n // Cancel current network requests\n // See https://github.com/sampotts/plyr/issues/174\n cancelRequests() {\n if (!this.isHTML5) {\n return;\n }\n\n // Remove child sources\n removeElement(html5.getSources.call(this));\n\n // Set blank video src attribute\n // This is to prevent a MEDIA_ERR_SRC_NOT_SUPPORTED error\n // Info: http://stackoverflow.com/questions/32231579/how-to-properly-dispose-of-an-html5-video-and-close-socket-or-connection\n this.media.setAttribute('src', this.config.blankVideo);\n\n // Load the new empty source\n // This will cancel existing requests\n // See https://github.com/sampotts/plyr/issues/174\n this.media.load();\n\n // Debugging\n this.debug.log('Cancelled network requests');\n },\n};\n\nexport default html5;\n","// ==========================================================================\n// Browser sniffing\n// Unfortunately, due to mixed support, UA sniffing is required\n// ==========================================================================\n\nconst isIE = Boolean(window.document.documentMode);\nconst isEdge = /Edge/.test(navigator.userAgent);\nconst isWebKit = 'WebkitAppearance' in document.documentElement.style && !/Edge/.test(navigator.userAgent);\nconst isIPhone = /iPhone|iPod/i.test(navigator.userAgent) && navigator.maxTouchPoints > 1;\n// navigator.platform may be deprecated but this check is still required\nconst isIPadOS = navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;\nconst isIos = /iPad|iPhone|iPod/i.test(navigator.userAgent) && navigator.maxTouchPoints > 1;\n\nexport default {\n isIE,\n isEdge,\n isWebKit,\n isIPhone,\n isIPadOS,\n isIos,\n};\n","// ==========================================================================\n// String utils\n// ==========================================================================\n\nimport is from './is';\n\n// Generate a random ID\nexport function generateId(prefix) {\n return `${prefix}-${Math.floor(Math.random() * 10000)}`;\n}\n\n// Format string\nexport function format(input, ...args) {\n if (is.empty(input)) return input;\n\n return input.toString().replace(/\\{(\\d+)\\}/g, (_, i) => args[i].toString());\n}\n\n// Get percentage\nexport function getPercentage(current, max) {\n if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) {\n return 0;\n }\n\n return ((current / max) * 100).toFixed(2);\n}\n\n// Replace all occurrences of a string in a string\nexport function replaceAll(input = '', find = '', replace = '') {\n return input.replace(new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1'), 'g'), replace.toString());\n}\n\n// Convert to title case\nexport function toTitleCase(input = '') {\n return input.toString().replace(/\\w\\S*/g, text => text.charAt(0).toUpperCase() + text.slice(1).toLowerCase());\n}\n\n// Convert string to pascalCase\nexport function toPascalCase(input = '') {\n let string = input.toString();\n\n // Convert kebab case\n string = replaceAll(string, '-', ' ');\n\n // Convert snake case\n string = replaceAll(string, '_', ' ');\n\n // Convert to title case\n string = toTitleCase(string);\n\n // Convert to pascal case\n return replaceAll(string, ' ', '');\n}\n\n// Convert string to pascalCase\nexport function toCamelCase(input = '') {\n let string = input.toString();\n\n // Convert to pascal case\n string = toPascalCase(string);\n\n // Convert first character to lowercase\n return string.charAt(0).toLowerCase() + string.slice(1);\n}\n\n// Remove HTML from a string\nexport function stripHTML(source) {\n const fragment = document.createDocumentFragment();\n const element = document.createElement('div');\n fragment.appendChild(element);\n element.innerHTML = source;\n return fragment.firstChild.textContent;\n}\n\n// Like outerHTML, but also works for DocumentFragment\nexport function getHTML(element) {\n const wrapper = document.createElement('div');\n wrapper.appendChild(element);\n return wrapper.innerHTML;\n}\n","// ==========================================================================\n// Plyr internationalization\n// ==========================================================================\n\nimport is from './is';\nimport { getDeep } from './objects';\nimport { replaceAll } from './strings';\n\n// Skip i18n for abbreviations and brand names\nconst resources = {\n pip: 'PIP',\n airplay: 'AirPlay',\n html5: 'HTML5',\n vimeo: 'Vimeo',\n youtube: 'YouTube',\n};\n\nconst i18n = {\n get(key = '', config = {}) {\n if (is.empty(key) || is.empty(config)) {\n return '';\n }\n\n let string = getDeep(config.i18n, key);\n\n if (is.empty(string)) {\n if (Object.keys(resources).includes(key)) {\n return resources[key];\n }\n\n return '';\n }\n\n const replace = {\n '{seektime}': config.seekTime,\n '{title}': config.title,\n };\n\n Object.entries(replace).forEach(([k, v]) => {\n string = replaceAll(string, k, v);\n });\n\n return string;\n },\n};\n\nexport default i18n;\n","// ==========================================================================\n// Plyr storage\n// ==========================================================================\n\nimport is from './utils/is';\nimport { extend } from './utils/objects';\n\nclass Storage {\n constructor(player) {\n this.enabled = player.config.storage.enabled;\n this.key = player.config.storage.key;\n }\n\n // Check for actual support (see if we can use it)\n static get supported() {\n try {\n if (!('localStorage' in window)) return false;\n const test = '___test';\n // Try to use it (it might be disabled, e.g. user is in private mode)\n // see: https://github.com/sampotts/plyr/issues/131\n window.localStorage.setItem(test, test);\n window.localStorage.removeItem(test);\n return true;\n }\n catch {\n return false;\n }\n }\n\n get = (key) => {\n if (!Storage.supported || !this.enabled) {\n return null;\n }\n const store = window.localStorage.getItem(this.key);\n if (is.empty(store)) return null;\n const json = JSON.parse(store);\n return is.string(key) && key.length ? json[key] : json;\n };\n\n set = (object) => {\n // Bail if we don't have localStorage support or it's disabled\n if (!Storage.supported || !this.enabled) {\n return;\n }\n\n // Can only store objects\n if (!is.object(object)) {\n return;\n }\n\n // Get current storage\n let storage = this.get();\n\n // Default to empty object\n if (is.empty(storage)) {\n storage = {};\n }\n\n // Update the working copy of the values\n extend(storage, object);\n\n // Update storage\n try {\n window.localStorage.setItem(this.key, JSON.stringify(storage));\n }\n catch { }\n };\n}\n\nexport default Storage;\n","// ==========================================================================\n// Fetch wrapper\n// Using XHR to avoid issues with older browsers\n// ==========================================================================\n\nexport default function fetch(url, responseType = 'text', withCredentials = false) {\n return new Promise((resolve, reject) => {\n try {\n const request = new XMLHttpRequest();\n\n // Check for CORS support\n if (!('withCredentials' in request)) return;\n\n // Set to true if needed for CORS\n if (withCredentials) {\n request.withCredentials = true;\n }\n\n request.addEventListener('load', () => {\n if (responseType === 'text') {\n try {\n resolve(JSON.parse(request.responseText));\n }\n catch {\n resolve(request.responseText);\n }\n }\n else {\n resolve(request.response);\n }\n });\n\n request.addEventListener('error', () => {\n throw new Error(request.status);\n });\n\n request.open('GET', url, true);\n request.responseType = responseType;\n request.send();\n }\n catch (error) {\n reject(error);\n }\n });\n}\n","// ==========================================================================\n// Sprite loader\n// ==========================================================================\n\nimport Storage from '../storage';\nimport fetch from './fetch';\nimport is from './is';\n\n// Load an external SVG sprite\nexport default function loadSprite(url, id) {\n if (!is.string(url)) {\n return;\n }\n\n const prefix = 'cache';\n const hasId = is.string(id);\n let isCached = false;\n const exists = () => document.getElementById(id) !== null;\n\n const update = (container, data) => {\n container.innerHTML = data;\n\n // Check again incase of race condition\n if (hasId && exists()) {\n return;\n }\n\n // Inject the SVG to the body\n document.body.insertAdjacentElement('afterbegin', container);\n };\n\n // Only load once if ID set\n if (!hasId || !exists()) {\n const useStorage = Storage.supported;\n // Create container\n const container = document.createElement('div');\n container.setAttribute('hidden', '');\n\n if (hasId) {\n container.setAttribute('id', id);\n }\n\n // Check in cache\n if (useStorage) {\n const cached = window.localStorage.getItem(`${prefix}-${id}`);\n isCached = cached !== null;\n\n if (isCached) {\n const data = JSON.parse(cached);\n update(container, data.content);\n }\n }\n\n // Get the sprite\n fetch(url)\n .then((result) => {\n if (is.empty(result)) {\n return;\n }\n\n if (useStorage) {\n try {\n window.localStorage.setItem(\n `${prefix}-${id}`,\n JSON.stringify({\n content: result,\n }),\n );\n }\n catch {}\n }\n\n update(container, result);\n })\n .catch(() => {});\n }\n}\n","// ==========================================================================\n// Time utils\n// ==========================================================================\n\nimport is from './is';\n\n// Time helpers\nexport const getHours = value => Math.trunc((value / 60 / 60) % 60, 10);\nexport const getMinutes = value => Math.trunc((value / 60) % 60, 10);\nexport const getSeconds = value => Math.trunc(value % 60, 10);\n\n// Format time to UI friendly string\nexport function formatTime(time = 0, displayHours = false, inverted = false) {\n // Bail if the value isn't a number\n if (!is.number(time)) {\n return formatTime(undefined, displayHours, inverted);\n }\n\n // Format time component to add leading zero\n const format = value => `0${value}`.slice(-2);\n // Breakdown to hours, mins, secs\n let hours = getHours(time);\n const mins = getMinutes(time);\n const secs = getSeconds(time);\n\n // Do we need to display hours?\n if (displayHours || hours > 0) {\n hours = `${hours}:`;\n }\n else {\n hours = '';\n }\n\n // Render\n return `${inverted && time > 0 ? '-' : ''}${hours}${format(mins)}:${format(secs)}`;\n}\n","// ==========================================================================\n// Plyr controls\n// TODO: This needs to be split into smaller files and cleaned up\n// ==========================================================================\n\nimport RangeTouch from 'rangetouch';\n\nimport captions from './captions';\nimport html5 from './html5';\nimport support from './support';\nimport { repaint, transitionEndEvent } from './utils/animation';\nimport { dedupe } from './utils/arrays';\nimport browser from './utils/browser';\nimport {\n createElement,\n emptyElement,\n getAttributesFromSelector,\n getElement,\n getElements,\n hasClass,\n matches,\n removeElement,\n setAttributes,\n setFocus,\n toggleClass,\n toggleHidden,\n} from './utils/elements';\nimport { off, on } from './utils/events';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport loadSprite from './utils/load-sprite';\nimport { extend } from './utils/objects';\nimport { getPercentage, replaceAll, toCamelCase, toTitleCase } from './utils/strings';\nimport { formatTime, getHours } from './utils/time';\n\n// TODO: Don't export a massive object - break down and create class\nconst controls = {\n // Get icon URL\n getIconUrl() {\n const url = new URL(this.config.iconUrl, window.location);\n const host = window.location.host ? window.location.host : window.top.location.host;\n const cors = url.host !== host || (browser.isIE && !window.svg4everybody);\n\n return {\n url: this.config.iconUrl,\n cors,\n };\n },\n\n // Find the UI controls\n findElements() {\n try {\n this.elements.controls = getElement.call(this, this.config.selectors.controls.wrapper);\n\n // Buttons\n this.elements.buttons = {\n play: getElements.call(this, this.config.selectors.buttons.play),\n pause: getElement.call(this, this.config.selectors.buttons.pause),\n restart: getElement.call(this, this.config.selectors.buttons.restart),\n rewind: getElement.call(this, this.config.selectors.buttons.rewind),\n fastForward: getElement.call(this, this.config.selectors.buttons.fastForward),\n mute: getElement.call(this, this.config.selectors.buttons.mute),\n pip: getElement.call(this, this.config.selectors.buttons.pip),\n airplay: getElement.call(this, this.config.selectors.buttons.airplay),\n settings: getElement.call(this, this.config.selectors.buttons.settings),\n captions: getElement.call(this, this.config.selectors.buttons.captions),\n fullscreen: getElement.call(this, this.config.selectors.buttons.fullscreen),\n };\n\n // Progress\n this.elements.progress = getElement.call(this, this.config.selectors.progress);\n\n // Inputs\n this.elements.inputs = {\n seek: getElement.call(this, this.config.selectors.inputs.seek),\n volume: getElement.call(this, this.config.selectors.inputs.volume),\n };\n\n // Display\n this.elements.display = {\n buffer: getElement.call(this, this.config.selectors.display.buffer),\n currentTime: getElement.call(this, this.config.selectors.display.currentTime),\n duration: getElement.call(this, this.config.selectors.display.duration),\n };\n\n // Seek tooltip\n if (is.element(this.elements.progress)) {\n this.elements.display.seekTooltip = this.elements.progress.querySelector(`.${this.config.classNames.tooltip}`);\n }\n\n return true;\n }\n catch (error) {\n // Log it\n this.debug.warn('It looks like there is a problem with your custom controls HTML', error);\n\n // Restore native video controls\n this.toggleNativeControls(true);\n\n return false;\n }\n },\n\n // Create icon\n createIcon(type, attributes) {\n const namespace = 'http://www.w3.org/2000/svg';\n const iconUrl = controls.getIconUrl.call(this);\n const iconPath = `${!iconUrl.cors ? iconUrl.url : ''}#${this.config.iconPrefix}`;\n // Create \n const icon = document.createElementNS(namespace, 'svg');\n setAttributes(\n icon,\n extend(attributes, {\n 'aria-hidden': 'true',\n 'focusable': 'false',\n }),\n );\n\n // Create the to reference sprite\n const use = document.createElementNS(namespace, 'use');\n const path = `${iconPath}-${type}`;\n\n // Set `href` attributes\n // https://github.com/sampotts/plyr/issues/460\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href\n if ('href' in use) {\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n }\n\n // Always set the older attribute even though it's \"deprecated\" (it'll be around for ages)\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', path);\n\n // Add to \n icon.appendChild(use);\n\n return icon;\n },\n\n // Create hidden text label\n createLabel(key, attr = {}) {\n const text = i18n.get(key, this.config);\n const attributes = { ...attr, class: [attr.class, this.config.classNames.hidden].filter(Boolean).join(' ') };\n\n return createElement('span', attributes, text);\n },\n\n // Create a badge\n createBadge(text) {\n if (is.empty(text)) {\n return null;\n }\n\n const badge = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n badge.appendChild(\n createElement(\n 'span',\n {\n class: this.config.classNames.menu.badge,\n },\n text,\n ),\n );\n\n return badge;\n },\n\n // Create a
`);\n }\n\n // Set position\n tipElement.style.left = `${percent}%`;\n\n // Show/hide the tooltip\n // If the event is a moues in/out and percentage is inside bounds\n if (is.event(event) && ['mouseenter', 'mouseleave'].includes(event.type)) {\n toggle(event.type === 'mouseenter');\n }\n },\n\n // Handle time change event\n timeUpdate(event) {\n // Only invert if only one time element is displayed and used for both duration and currentTime\n const invert = !is.element(this.elements.display.duration) && this.config.invertTime;\n\n // Duration\n controls.updateTimeDisplay.call(\n this,\n this.elements.display.currentTime,\n invert ? this.duration - this.currentTime : this.currentTime,\n invert,\n );\n\n // Ignore updates while seeking\n if (event && event.type === 'timeupdate' && this.media.seeking) {\n return;\n }\n\n // Playing progress\n controls.updateProgress.call(this, event);\n },\n\n // Show the duration on metadataloaded or durationchange events\n durationUpdate() {\n // Bail if no UI or durationchange event triggered after playing/seek when invertTime is false\n if (!this.supported.ui || (!this.config.invertTime && this.currentTime)) {\n return;\n }\n\n // If duration is the 2**32 (shaka), Infinity (HLS), DASH-IF (Number.MAX_SAFE_INTEGER || Number.MAX_VALUE) indicating live we hide the currentTime and progressbar.\n // https://github.com/video-dev/hls.js/blob/5820d29d3c4c8a46e8b75f1e3afa3e68c1a9a2db/src/controller/buffer-controller.js#L415\n // https://github.com/google/shaka-player/blob/4d889054631f4e1cf0fbd80ddd2b71887c02e232/lib/media/streaming_engine.js#L1062\n // https://github.com/Dash-Industry-Forum/dash.js/blob/69859f51b969645b234666800d4cb596d89c602d/src/dash/models/DashManifestModel.js#L338\n if (this.duration >= 2 ** 32) {\n toggleHidden(this.elements.display.currentTime, true);\n toggleHidden(this.elements.progress, true);\n return;\n }\n\n // Update ARIA values\n if (is.element(this.elements.inputs.seek)) {\n this.elements.inputs.seek.setAttribute('aria-valuemax', this.duration);\n }\n\n // If there's a spot to display duration\n const hasDuration = is.element(this.elements.display.duration);\n\n // If there's only one time display, display duration there\n if (!hasDuration && this.config.displayDuration && this.paused) {\n controls.updateTimeDisplay.call(this, this.elements.display.currentTime, this.duration);\n }\n\n // If there's a duration element, update content\n if (hasDuration) {\n controls.updateTimeDisplay.call(this, this.elements.display.duration, this.duration);\n }\n\n if (this.config.markers.enabled) {\n controls.setMarkers.call(this);\n }\n\n // Update the tooltip (if visible)\n controls.updateSeekTooltip.call(this);\n },\n\n // Hide/show a tab\n toggleMenuButton(setting, toggle) {\n toggleHidden(this.elements.settings.buttons[setting], !toggle);\n },\n\n // Update the selected setting\n updateSetting(setting, container, input) {\n const pane = this.elements.settings.panels[setting];\n let value = null;\n let list = container;\n\n if (setting === 'captions') {\n value = this.currentTrack;\n }\n else {\n value = !is.empty(input) ? input : this[setting];\n\n // Get default\n if (is.empty(value)) {\n value = this.config[setting].default;\n }\n\n // Unsupported value\n if (!is.empty(this.options[setting]) && !this.options[setting].includes(value)) {\n this.debug.warn(`Unsupported value of '${value}' for ${setting}`);\n return;\n }\n\n // Disabled value\n if (!this.config[setting].options.includes(value)) {\n this.debug.warn(`Disabled value of '${value}' for ${setting}`);\n return;\n }\n }\n\n // Get the list if we need to\n if (!is.element(list)) {\n list = pane && pane.querySelector('[role=\"menu\"]');\n }\n\n // If there's no list it means it's not been rendered...\n if (!is.element(list)) {\n return;\n }\n\n // Update the label\n const label = this.elements.settings.buttons[setting].querySelector(`.${this.config.classNames.menu.value}`);\n label.innerHTML = controls.getLabel.call(this, setting, value);\n\n // Find the radio option and check it\n const target = list && list.querySelector(`[value=\"${value}\"]`);\n\n if (is.element(target)) {\n target.checked = true;\n }\n },\n\n // Translate a value into a nice label\n getLabel(setting, value) {\n switch (setting) {\n case 'speed':\n return value === 1 ? i18n.get('normal', this.config) : `${value}×`;\n\n case 'quality':\n if (is.number(value)) {\n const label = i18n.get(`qualityLabel.${value}`, this.config);\n\n if (!label.length) {\n return `${value}p`;\n }\n\n return label;\n }\n\n return toTitleCase(value);\n\n case 'captions':\n return captions.getLabel.call(this);\n\n default:\n return null;\n }\n },\n\n // Set the quality menu\n setQualityMenu(options) {\n // Menu required\n if (!is.element(this.elements.settings.panels.quality)) {\n return;\n }\n\n const type = 'quality';\n const list = this.elements.settings.panels.quality.querySelector('[role=\"menu\"]');\n\n // Set options if passed and filter based on uniqueness and config\n if (is.array(options)) {\n this.options.quality = dedupe(options).filter(quality => this.config.quality.options.includes(quality));\n }\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.options.quality) && this.options.quality.length > 1;\n controls.toggleMenuButton.call(this, type, toggle);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If we're hiding, nothing more to do\n if (!toggle) {\n return;\n }\n\n // Get the badge HTML for HD, 4K etc\n const getBadge = (quality) => {\n const label = i18n.get(`qualityBadge.${quality}`, this.config);\n\n if (!label.length) {\n return null;\n }\n\n return controls.createBadge.call(this, label);\n };\n\n // Sort options by the config and then render options\n this.options.quality\n .sort((a, b) => {\n const sorting = this.config.quality.options;\n return sorting.indexOf(a) > sorting.indexOf(b) ? 1 : -1;\n })\n .forEach((quality) => {\n controls.createMenuItem.call(this, {\n value: quality,\n list,\n type,\n title: controls.getLabel.call(this, 'quality', quality),\n badge: getBadge(quality),\n });\n });\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Set the looping options\n /* setLoopMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panels.loop)) {\n return;\n }\n\n const options = ['start', 'end', 'all', 'reset'];\n const list = this.elements.settings.panels.loop.querySelector('[role=\"menu\"]');\n\n // Show the pane and tab\n toggleHidden(this.elements.settings.buttons.loop, false);\n toggleHidden(this.elements.settings.panels.loop, false);\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.loop.options);\n controls.toggleMenuButton.call(this, 'loop', toggle);\n\n // Empty the menu\n emptyElement(list);\n\n options.forEach(option => {\n const item = createElement('li');\n\n const button = createElement(\n 'button',\n extend(getAttributesFromSelector(this.config.selectors.buttons.loop), {\n type: 'button',\n class: this.config.classNames.control,\n 'data-plyr-loop-action': option,\n }),\n i18n.get(option, this.config)\n );\n\n if (['start', 'end'].includes(option)) {\n const badge = controls.createBadge.call(this, '00:00');\n button.appendChild(badge);\n }\n\n item.appendChild(button);\n list.appendChild(item);\n });\n }, */\n\n // Get current selected caption language\n // TODO: rework this to user the getter in the API?\n\n // Set a list of available captions languages\n setCaptionsMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panels.captions)) {\n return;\n }\n\n // TODO: Captions or language? Currently it's mixed\n const type = 'captions';\n const list = this.elements.settings.panels.captions.querySelector('[role=\"menu\"]');\n const tracks = captions.getTracks.call(this);\n const toggle = Boolean(tracks.length);\n\n // Toggle the pane and tab\n controls.toggleMenuButton.call(this, type, toggle);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If there's no captions, bail\n if (!toggle) {\n return;\n }\n\n // Generate options data\n const options = tracks.map((track, value) => ({\n value,\n checked: this.captions.toggled && this.currentTrack === value,\n title: captions.getLabel.call(this, track),\n badge: track.language && controls.createBadge.call(this, track.language.toUpperCase()),\n list,\n type: 'language',\n }));\n\n // Add the \"Disabled\" option to turn off captions\n options.unshift({\n value: -1,\n checked: !this.captions.toggled,\n title: i18n.get('disabled', this.config),\n list,\n type: 'language',\n });\n\n // Generate options\n options.forEach(controls.createMenuItem.bind(this));\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Set a list of available captions languages\n setSpeedMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panels.speed)) {\n return;\n }\n\n const type = 'speed';\n const list = this.elements.settings.panels.speed.querySelector('[role=\"menu\"]');\n\n // Filter out invalid speeds\n this.options.speed = this.options.speed.filter(o => o >= this.minimumSpeed && o <= this.maximumSpeed);\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.options.speed) && this.options.speed.length > 1;\n controls.toggleMenuButton.call(this, type, toggle);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If we're hiding, nothing more to do\n if (!toggle) {\n return;\n }\n\n // Create items\n this.options.speed.forEach((speed) => {\n controls.createMenuItem.call(this, {\n value: speed,\n list,\n type,\n title: controls.getLabel.call(this, 'speed', speed),\n });\n });\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Check if we need to hide/show the settings menu\n checkMenu() {\n const { buttons } = this.elements.settings;\n const visible = !is.empty(buttons) && Object.values(buttons).some(button => !button.hidden);\n\n toggleHidden(this.elements.settings.menu, !visible);\n },\n\n // Focus the first menu item in a given (or visible) menu\n focusFirstMenuItem(pane, focusVisible = false) {\n if (this.elements.settings.popup.hidden) {\n return;\n }\n\n let target = pane;\n\n if (!is.element(target)) {\n target = Object.values(this.elements.settings.panels).find(p => !p.hidden);\n }\n\n const firstItem = target.querySelector('[role^=\"menuitem\"]');\n\n setFocus.call(this, firstItem, focusVisible);\n },\n\n // Show/hide menu\n toggleMenu(input) {\n const { popup } = this.elements.settings;\n const button = this.elements.buttons.settings;\n\n // Menu and button are required\n if (!is.element(popup) || !is.element(button)) {\n return;\n }\n\n // True toggle by default\n const { hidden } = popup;\n let show = hidden;\n\n if (is.boolean(input)) {\n show = input;\n }\n else if (is.keyboardEvent(input) && input.key === 'Escape') {\n show = false;\n }\n else if (is.event(input)) {\n // If Plyr is in a shadowDOM, the event target is set to the component, instead of the\n // Element in the shadowDOM. The path, if available, is complete.\n const target = is.function(input.composedPath) ? input.composedPath()[0] : input.target;\n const isMenuItem = popup.contains(target);\n\n // If the click was inside the menu or if the click\n // wasn't the button or menu item and we're trying to\n // show the menu (a doc click shouldn't show the menu)\n if (isMenuItem || (!isMenuItem && input.target !== button && show)) {\n return;\n }\n }\n\n // Set button attributes\n button.setAttribute('aria-expanded', show);\n\n // Show the actual popup\n toggleHidden(popup, !show);\n\n // Add class hook\n toggleClass(this.elements.container, this.config.classNames.menu.open, show);\n\n // Focus the first item if key interaction\n if (show && is.keyboardEvent(input)) {\n controls.focusFirstMenuItem.call(this, null, true);\n }\n else if (!show && !hidden) {\n // If closing, re-focus the button\n setFocus.call(this, button, is.keyboardEvent(input));\n }\n },\n\n // Get the natural size of a menu panel\n getMenuSize(tab) {\n const clone = tab.cloneNode(true);\n clone.style.position = 'absolute';\n clone.style.opacity = 0;\n clone.removeAttribute('hidden');\n\n // Append to parent so we get the \"real\" size\n tab.parentNode.appendChild(clone);\n\n // Get the sizes before we remove\n const width = clone.scrollWidth;\n const height = clone.scrollHeight;\n\n // Remove from the DOM\n removeElement(clone);\n\n return {\n width,\n height,\n };\n },\n\n // Show a panel in the menu\n showMenuPanel(type = '', focusVisible = false) {\n const target = this.elements.container.querySelector(`#plyr-settings-${this.id}-${type}`);\n\n // Nothing to show, bail\n if (!is.element(target)) {\n return;\n }\n\n // Hide all other panels\n const container = target.parentNode;\n const current = Array.from(container.children).find(node => !node.hidden);\n\n // If we can do fancy animations, we'll animate the height/width\n if (support.transitions && !support.reducedMotion) {\n // Set the current width as a base\n container.style.width = `${current.scrollWidth}px`;\n container.style.height = `${current.scrollHeight}px`;\n\n // Get potential sizes\n const size = controls.getMenuSize.call(this, target);\n\n // Restore auto height/width\n const restore = (event) => {\n // We're only bothered about height and width on the container\n if (event.target !== container || !['width', 'height'].includes(event.propertyName)) {\n return;\n }\n\n // Revert back to auto\n container.style.width = '';\n container.style.height = '';\n\n // Only listen once\n off.call(this, container, transitionEndEvent, restore);\n };\n\n // Listen for the transition finishing and restore auto height/width\n on.call(this, container, transitionEndEvent, restore);\n\n // Set dimensions to target\n container.style.width = `${size.width}px`;\n container.style.height = `${size.height}px`;\n }\n\n // Set attributes on current tab\n toggleHidden(current, true);\n\n // Set attributes on target\n toggleHidden(target, false);\n\n // Focus the first item\n controls.focusFirstMenuItem.call(this, target, focusVisible);\n },\n\n // Set the download URL\n setDownloadUrl() {\n const button = this.elements.buttons.download;\n\n // Bail if no button\n if (!is.element(button)) {\n return;\n }\n\n // Set attribute\n button.setAttribute('href', this.download);\n },\n\n // Build the default HTML\n create(data) {\n const {\n bindMenuItemShortcuts,\n createButton,\n createProgress,\n createRange,\n createTime,\n setQualityMenu,\n setSpeedMenu,\n showMenuPanel,\n } = controls;\n this.elements.controls = null;\n\n // Larger overlaid play button\n if (is.array(this.config.controls) && this.config.controls.includes('play-large')) {\n this.elements.container.appendChild(createButton.call(this, 'play-large'));\n }\n\n // Create the container\n const container = createElement('div', getAttributesFromSelector(this.config.selectors.controls.wrapper));\n this.elements.controls = container;\n\n // Default item attributes\n const defaultAttributes = { class: 'plyr__controls__item' };\n\n // Loop through controls in order\n dedupe(is.array(this.config.controls) ? this.config.controls : []).forEach((control) => {\n // Restart button\n if (control === 'restart') {\n container.appendChild(createButton.call(this, 'restart', defaultAttributes));\n }\n\n // Rewind button\n if (control === 'rewind') {\n container.appendChild(createButton.call(this, 'rewind', defaultAttributes));\n }\n\n // Play/Pause button\n if (control === 'play') {\n container.appendChild(createButton.call(this, 'play', defaultAttributes));\n }\n\n // Fast forward button\n if (control === 'fast-forward') {\n container.appendChild(createButton.call(this, 'fast-forward', defaultAttributes));\n }\n\n // Progress\n if (control === 'progress') {\n const progressContainer = createElement('div', {\n class: `${defaultAttributes.class} plyr__progress__container`,\n });\n\n const progress = createElement('div', getAttributesFromSelector(this.config.selectors.progress));\n\n // Seek range slider\n progress.appendChild(\n createRange.call(this, 'seek', {\n id: `plyr-seek-${data.id}`,\n }),\n );\n\n // Buffer progress\n progress.appendChild(createProgress.call(this, 'buffer'));\n\n // TODO: Add loop display indicator\n\n // Seek tooltip\n if (this.config.tooltips.seek) {\n const tooltip = createElement(\n 'span',\n {\n class: this.config.classNames.tooltip,\n },\n '00:00',\n );\n\n progress.appendChild(tooltip);\n this.elements.display.seekTooltip = tooltip;\n }\n\n this.elements.progress = progress;\n progressContainer.appendChild(this.elements.progress);\n container.appendChild(progressContainer);\n }\n\n // Media current time display\n if (control === 'current-time') {\n container.appendChild(createTime.call(this, 'currentTime', defaultAttributes));\n }\n\n // Media duration display\n if (control === 'duration') {\n container.appendChild(createTime.call(this, 'duration', defaultAttributes));\n }\n\n // Volume controls\n if (control === 'mute' || control === 'volume') {\n let { volume } = this.elements;\n\n // Create the volume container if needed\n if (!is.element(volume) || !container.contains(volume)) {\n volume = createElement(\n 'div',\n extend({}, defaultAttributes, {\n class: `${defaultAttributes.class} plyr__volume`.trim(),\n }),\n );\n\n this.elements.volume = volume;\n\n container.appendChild(volume);\n }\n\n // Toggle mute button\n if (control === 'mute') {\n volume.appendChild(createButton.call(this, 'mute'));\n }\n\n // Volume range control\n // Ignored on iOS as it's handled globally\n // https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html\n if (control === 'volume' && !browser.isIos && !browser.isIPadOS) {\n // Set the attributes\n const attributes = {\n max: 1,\n step: 0.05,\n value: this.config.volume,\n };\n\n // Create the volume range slider\n volume.appendChild(\n createRange.call(\n this,\n 'volume',\n extend(attributes, {\n id: `plyr-volume-${data.id}`,\n }),\n ),\n );\n }\n }\n\n // Toggle captions button\n if (control === 'captions') {\n container.appendChild(createButton.call(this, 'captions', defaultAttributes));\n }\n\n // Settings button / menu\n if (control === 'settings' && !is.empty(this.config.settings)) {\n const wrapper = createElement(\n 'div',\n extend({}, defaultAttributes, {\n class: `${defaultAttributes.class} plyr__menu`.trim(),\n hidden: '',\n }),\n );\n\n wrapper.appendChild(\n createButton.call(this, 'settings', {\n 'aria-haspopup': true,\n 'aria-controls': `plyr-settings-${data.id}`,\n 'aria-expanded': false,\n }),\n );\n\n const popup = createElement('div', {\n class: 'plyr__menu__container',\n id: `plyr-settings-${data.id}`,\n hidden: '',\n });\n\n const inner = createElement('div');\n\n const home = createElement('div', {\n id: `plyr-settings-${data.id}-home`,\n });\n\n // Create the menu\n const menu = createElement('div', {\n role: 'menu',\n });\n\n home.appendChild(menu);\n inner.appendChild(home);\n this.elements.settings.panels.home = home;\n\n // Build the menu items\n this.config.settings.forEach((type) => {\n // TODO: bundle this with the createMenuItem helper and bindings\n const menuItem = createElement(\n 'button',\n extend(getAttributesFromSelector(this.config.selectors.buttons.settings), {\n 'type': 'button',\n 'class': `${this.config.classNames.control} ${this.config.classNames.control}--forward`,\n 'role': 'menuitem',\n 'aria-haspopup': true,\n 'hidden': '',\n }),\n );\n\n // Bind menu shortcuts for keyboard users\n bindMenuItemShortcuts.call(this, menuItem, type);\n\n // Show menu on click\n on.call(this, menuItem, 'click', () => {\n showMenuPanel.call(this, type, false);\n });\n\n const flex = createElement('span', null, i18n.get(type, this.config));\n\n const value = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n // Speed contains HTML entities\n value.innerHTML = data[type];\n\n flex.appendChild(value);\n menuItem.appendChild(flex);\n menu.appendChild(menuItem);\n\n // Build the panes\n const pane = createElement('div', {\n id: `plyr-settings-${data.id}-${type}`,\n hidden: '',\n });\n\n // Back button\n const backButton = createElement('button', {\n type: 'button',\n class: `${this.config.classNames.control} ${this.config.classNames.control}--back`,\n });\n\n // Visible label\n backButton.appendChild(\n createElement(\n 'span',\n {\n 'aria-hidden': true,\n },\n i18n.get(type, this.config),\n ),\n );\n\n // Screen reader label\n backButton.appendChild(\n createElement(\n 'span',\n {\n class: this.config.classNames.hidden,\n },\n i18n.get('menuBack', this.config),\n ),\n );\n\n // Go back via keyboard\n on.call(\n this,\n pane,\n 'keydown',\n (event) => {\n if (event.key !== 'ArrowLeft') return;\n\n // Prevent seek\n event.preventDefault();\n event.stopPropagation();\n\n // Show the respective menu\n showMenuPanel.call(this, 'home', true);\n },\n false,\n );\n\n // Go back via button click\n on.call(this, backButton, 'click', () => {\n showMenuPanel.call(this, 'home', false);\n });\n\n // Add to pane\n pane.appendChild(backButton);\n\n // Menu\n pane.appendChild(\n createElement('div', {\n role: 'menu',\n }),\n );\n\n inner.appendChild(pane);\n\n this.elements.settings.buttons[type] = menuItem;\n this.elements.settings.panels[type] = pane;\n });\n\n popup.appendChild(inner);\n wrapper.appendChild(popup);\n container.appendChild(wrapper);\n\n this.elements.settings.popup = popup;\n this.elements.settings.menu = wrapper;\n }\n\n // Picture in picture button\n if (control === 'pip' && support.pip) {\n container.appendChild(createButton.call(this, 'pip', defaultAttributes));\n }\n\n // Airplay button\n if (control === 'airplay' && support.airplay) {\n container.appendChild(createButton.call(this, 'airplay', defaultAttributes));\n }\n\n // Download button\n if (control === 'download') {\n const attributes = extend({}, defaultAttributes, {\n element: 'a',\n href: this.download,\n target: '_blank',\n });\n\n // Set download attribute for HTML5 only\n if (this.isHTML5) {\n attributes.download = '';\n }\n\n const { download } = this.config.urls;\n\n if (!is.url(download) && this.isEmbed) {\n extend(attributes, {\n icon: `logo-${this.provider}`,\n label: this.provider,\n });\n }\n\n container.appendChild(createButton.call(this, 'download', attributes));\n }\n\n // Toggle fullscreen button\n if (control === 'fullscreen') {\n container.appendChild(createButton.call(this, 'fullscreen', defaultAttributes));\n }\n });\n\n // Set available quality levels\n if (this.isHTML5) {\n setQualityMenu.call(this, html5.getQualityOptions.call(this));\n }\n\n setSpeedMenu.call(this);\n\n return container;\n },\n\n // Insert controls\n inject() {\n // Sprite\n if (this.config.loadSprite) {\n const icon = controls.getIconUrl.call(this);\n\n // Only load external sprite using AJAX\n if (icon.cors) {\n loadSprite(icon.url, 'sprite-plyr');\n }\n }\n\n // Create a unique ID\n this.id = Math.floor(Math.random() * 10000);\n\n // Null by default\n let container = null;\n this.elements.controls = null;\n\n // Set template properties\n const props = {\n id: this.id,\n seektime: this.config.seekTime,\n title: this.config.title,\n };\n let update = true;\n\n // If function, run it and use output\n if (is.function(this.config.controls)) {\n this.config.controls = this.config.controls.call(this, props);\n }\n\n // Convert falsy controls to empty array (primarily for empty strings)\n if (!this.config.controls) {\n this.config.controls = [];\n }\n\n if (is.element(this.config.controls) || is.string(this.config.controls)) {\n // HTMLElement or Non-empty string passed as the option\n container = this.config.controls;\n }\n else {\n // Create controls\n container = controls.create.call(this, {\n id: this.id,\n seektime: this.config.seekTime,\n speed: this.speed,\n quality: this.quality,\n captions: captions.getLabel.call(this),\n // TODO: Looping\n // loop: 'None',\n });\n update = false;\n }\n\n // Replace props with their value\n const replace = (input) => {\n let result = input;\n\n Object.entries(props).forEach(([key, value]) => {\n result = replaceAll(result, `{${key}}`, value);\n });\n\n return result;\n };\n\n // Update markup\n if (update) {\n if (is.string(this.config.controls)) {\n container = replace(container);\n }\n }\n\n // Controls container\n let target;\n\n // Inject to custom location\n if (is.string(this.config.selectors.controls.container)) {\n target = document.querySelector(this.config.selectors.controls.container);\n }\n\n // Inject into the container by default\n if (!is.element(target)) {\n target = this.elements.container;\n }\n\n // Inject controls HTML (needs to be before captions, hence \"afterbegin\")\n const insertMethod = is.element(container) ? 'insertAdjacentElement' : 'insertAdjacentHTML';\n target[insertMethod]('afterbegin', container);\n\n // Find the elements if need be\n if (!is.element(this.elements.controls)) {\n controls.findElements.call(this);\n }\n\n // Add pressed property to buttons\n if (!is.empty(this.elements.buttons)) {\n const addProperty = (button) => {\n const className = this.config.classNames.controlPressed;\n button.setAttribute('aria-pressed', 'false');\n\n Object.defineProperty(button, 'pressed', {\n configurable: true,\n enumerable: true,\n get() {\n return hasClass(button, className);\n },\n set(pressed = false) {\n toggleClass(button, className, pressed);\n button.setAttribute('aria-pressed', pressed ? 'true' : 'false');\n },\n });\n };\n\n // Toggle classname when pressed property is set\n Object.values(this.elements.buttons)\n .filter(Boolean)\n .forEach((button) => {\n if (is.array(button) || is.nodeList(button)) {\n Array.from(button).filter(Boolean).forEach(addProperty);\n }\n else {\n addProperty(button);\n }\n });\n }\n\n // Edge sometimes doesn't finish the paint so force a repaint\n if (browser.isEdge) {\n repaint(target);\n }\n\n // Setup tooltips\n if (this.config.tooltips.controls) {\n const { classNames, selectors } = this.config;\n const selector = `${selectors.controls.wrapper} ${selectors.labels} .${classNames.hidden}`;\n const labels = getElements.call(this, selector);\n\n Array.from(labels).forEach((label) => {\n toggleClass(label, this.config.classNames.hidden, false);\n toggleClass(label, this.config.classNames.tooltip, true);\n });\n }\n },\n\n // Set media metadata\n setMediaMetadata() {\n try {\n if ('mediaSession' in navigator) {\n navigator.mediaSession.metadata = new window.MediaMetadata({\n title: this.config.mediaMetadata.title,\n artist: this.config.mediaMetadata.artist,\n album: this.config.mediaMetadata.album,\n artwork: this.config.mediaMetadata.artwork,\n });\n }\n }\n catch {\n // Do nothing\n }\n },\n\n // Add markers\n setMarkers() {\n if (!this.duration || this.elements.markers) return;\n\n // Get valid points\n const points = this.config.markers?.points?.filter(({ time }) => time > 0 && time < this.duration);\n if (!points?.length) return;\n\n const containerFragment = document.createDocumentFragment();\n const pointsFragment = document.createDocumentFragment();\n let tipElement = null;\n const tipVisible = `${this.config.classNames.tooltip}--visible`;\n const toggleTip = show => toggleClass(tipElement, tipVisible, show);\n\n // Inject markers to progress container\n points.forEach((point) => {\n const markerElement = createElement(\n 'span',\n {\n class: this.config.classNames.marker,\n },\n '',\n );\n\n const left = `${(point.time / this.duration) * 100}%`;\n\n if (tipElement) {\n // Show on hover\n markerElement.addEventListener('mouseenter', () => {\n if (point.label) return;\n tipElement.style.left = left;\n tipElement.innerHTML = point.label;\n toggleTip(true);\n });\n\n // Hide on leave\n markerElement.addEventListener('mouseleave', () => {\n toggleTip(false);\n });\n }\n\n markerElement.addEventListener('click', () => {\n this.currentTime = point.time;\n });\n\n markerElement.style.left = left;\n pointsFragment.appendChild(markerElement);\n });\n\n containerFragment.appendChild(pointsFragment);\n\n // Inject a tooltip if needed\n if (!this.config.tooltips.seek) {\n tipElement = createElement(\n 'span',\n {\n class: this.config.classNames.tooltip,\n },\n '',\n );\n\n containerFragment.appendChild(tipElement);\n }\n\n this.elements.markers = {\n points: pointsFragment,\n tip: tipElement,\n };\n\n this.elements.progress.appendChild(containerFragment);\n },\n};\n\nexport default controls;\n","// ==========================================================================\n// URL utils\n// ==========================================================================\n\nimport is from './is';\n\n/**\n * Parse a string to a URL object\n * @param {string} input - the URL to be parsed\n * @param {boolean} safe - failsafe parsing\n */\nexport function parseUrl(input, safe = true) {\n let url = input;\n\n if (safe) {\n const parser = document.createElement('a');\n parser.href = url;\n url = parser.href;\n }\n\n try {\n return new URL(url);\n }\n catch {\n return null;\n }\n}\n\n// Convert object to URLSearchParams\nexport function buildUrlParams(input) {\n const params = new URLSearchParams();\n\n if (is.object(input)) {\n Object.entries(input).forEach(([key, value]) => {\n params.set(key, value);\n });\n }\n\n return params;\n}\n","// ==========================================================================\n// Plyr Captions\n// TODO: Create as class\n// ==========================================================================\n\nimport controls from './controls';\nimport support from './support';\nimport { dedupe } from './utils/arrays';\nimport browser from './utils/browser';\nimport {\n createElement,\n emptyElement,\n getAttributesFromSelector,\n insertAfter,\n removeElement,\n toggleClass,\n} from './utils/elements';\nimport { on, triggerEvent } from './utils/events';\nimport fetch from './utils/fetch';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport { getHTML } from './utils/strings';\nimport { parseUrl } from './utils/urls';\n\nconst captions = {\n // Setup captions\n setup() {\n // Requires UI support\n if (!this.supported.ui) {\n return;\n }\n\n // Only Vimeo and HTML5 video supported at this point\n if (!this.isVideo || this.isYouTube || (this.isHTML5 && !support.textTracks)) {\n // Clear menu and hide\n if (\n is.array(this.config.controls)\n && this.config.controls.includes('settings')\n && this.config.settings.includes('captions')\n ) {\n controls.setCaptionsMenu.call(this);\n }\n\n return;\n }\n\n // Inject the container\n if (!is.element(this.elements.captions)) {\n this.elements.captions = createElement('div', getAttributesFromSelector(this.config.selectors.captions));\n this.elements.captions.setAttribute('dir', 'auto');\n\n insertAfter(this.elements.captions, this.elements.wrapper);\n }\n\n // Fix IE captions if CORS is used\n // Fetch captions and inject as blobs instead (data URIs not supported!)\n if (browser.isIE && window.URL) {\n const elements = this.media.querySelectorAll('track');\n\n Array.from(elements).forEach((track) => {\n const src = track.getAttribute('src');\n const url = parseUrl(src);\n\n if (\n url !== null\n && url.hostname !== window.location.href.hostname\n && ['http:', 'https:'].includes(url.protocol)\n ) {\n fetch(src, 'blob')\n .then((blob) => {\n track.setAttribute('src', window.URL.createObjectURL(blob));\n })\n .catch(() => {\n removeElement(track);\n });\n }\n });\n }\n\n // Get and set initial data\n // The \"preferred\" options are not realized unless / until the wanted language has a match\n // * languages: Array of user's browser languages.\n // * language: The language preferred by user settings or config\n // * active: The state preferred by user settings or config\n // * toggled: The real captions state\n\n const browserLanguages = navigator.languages || [navigator.language || navigator.userLanguage || 'en'];\n const languages = dedupe(browserLanguages.map(language => language.split('-')[0]));\n let language = (this.storage.get('language') || this.captions.language || this.config.captions.language || 'auto').toLowerCase();\n\n // Use first browser language when language is 'auto'\n if (language === 'auto') {\n [language] = languages;\n }\n\n let active = this.storage.get('captions') || this.captions.active;\n if (!is.boolean(active)) {\n ({ active } = this.config.captions);\n }\n\n Object.assign(this.captions, {\n toggled: false,\n active,\n language,\n languages,\n });\n\n // Watch changes to textTracks and update captions menu\n if (this.isHTML5) {\n const trackEvents = this.config.captions.update ? 'addtrack removetrack' : 'removetrack';\n on.call(this, this.media.textTracks, trackEvents, captions.update.bind(this));\n }\n\n // Update available languages in list next tick (the event must not be triggered before the listeners)\n setTimeout(captions.update.bind(this), 0);\n },\n\n // Update available language options in settings based on tracks\n update() {\n const tracks = captions.getTracks.call(this, true);\n // Get the wanted language\n const { active, language, meta, currentTrackNode } = this.captions;\n const languageExists = Boolean(tracks.find(track => track.language === language));\n\n // Handle tracks (add event listener and \"pseudo\"-default)\n if (this.isHTML5 && this.isVideo) {\n tracks\n .filter(track => !meta.get(track))\n .forEach((track) => {\n this.debug.log('Track added', track);\n\n // Attempt to store if the original dom element was \"default\"\n meta.set(track, {\n default: track.mode === 'showing',\n });\n\n // Turn off native caption rendering to avoid double captions\n // Note: mode='hidden' forces a track to download. To ensure every track\n // isn't downloaded at once, only 'showing' tracks should be reassigned\n\n if (track.mode === 'showing') {\n track.mode = 'hidden';\n }\n\n // Add event listener for cue changes\n on.call(this, track, 'cuechange', () => captions.updateCues.call(this));\n });\n }\n\n // Update language first time it matches, or if the previous matching track was removed\n if ((languageExists && this.language !== language) || !tracks.includes(currentTrackNode)) {\n captions.setLanguage.call(this, language);\n captions.toggle.call(this, active && languageExists);\n }\n\n // Enable or disable captions based on track length\n if (this.elements) {\n toggleClass(this.elements.container, this.config.classNames.captions.enabled, !is.empty(tracks));\n }\n\n // Update available languages in list\n if (\n is.array(this.config.controls)\n && this.config.controls.includes('settings')\n && this.config.settings.includes('captions')\n ) {\n controls.setCaptionsMenu.call(this);\n }\n },\n\n // Toggle captions display\n // Used internally for the toggleCaptions method, with the passive option forced to false\n toggle(input, passive = true) {\n // If there's no full support\n if (!this.supported.ui) {\n return;\n }\n\n const { toggled } = this.captions; // Current state\n const activeClass = this.config.classNames.captions.active;\n // Get the next state\n // If the method is called without parameter, toggle based on current value\n const active = is.nullOrUndefined(input) ? !toggled : input;\n\n // Update state and trigger event\n if (active !== toggled) {\n // When passive, don't override user preferences\n if (!passive) {\n this.captions.active = active;\n this.storage.set({ captions: active });\n }\n\n // Force language if the call isn't passive and there is no matching language to toggle to\n if (!this.language && active && !passive) {\n const tracks = captions.getTracks.call(this);\n const track = captions.findTrack.call(this, [this.captions.language, ...this.captions.languages], true);\n\n // Override user preferences to avoid switching languages if a matching track is added\n this.captions.language = track.language;\n\n // Set caption, but don't store in localStorage as user preference\n captions.set.call(this, tracks.indexOf(track));\n return;\n }\n\n // Toggle button if it's enabled\n if (this.elements.buttons.captions) {\n this.elements.buttons.captions.pressed = active;\n }\n\n // Add class hook\n toggleClass(this.elements.container, activeClass, active);\n\n this.captions.toggled = active;\n\n // Update settings menu\n controls.updateSetting.call(this, 'captions');\n\n // Trigger event (not used internally)\n triggerEvent.call(this, this.media, active ? 'captionsenabled' : 'captionsdisabled');\n }\n\n // Wait for the call stack to clear before setting mode='hidden'\n // on the active track - forcing the browser to download it\n setTimeout(() => {\n if (active && this.captions.toggled) {\n this.captions.currentTrackNode.mode = 'hidden';\n }\n });\n },\n\n // Set captions by track index\n // Used internally for the currentTrack setter with the passive option forced to false\n set(index, passive = true) {\n const tracks = captions.getTracks.call(this);\n\n // Disable captions if setting to -1\n if (index === -1) {\n captions.toggle.call(this, false, passive);\n return;\n }\n\n if (!is.number(index)) {\n this.debug.warn('Invalid caption argument', index);\n return;\n }\n\n if (!(index in tracks)) {\n this.debug.warn('Track not found', index);\n return;\n }\n\n if (this.captions.currentTrack !== index) {\n this.captions.currentTrack = index;\n const track = tracks[index];\n const { language } = track || {};\n\n // Store reference to node for invalidation on remove\n this.captions.currentTrackNode = track;\n\n // Update settings menu\n controls.updateSetting.call(this, 'captions');\n\n // When passive, don't override user preferences\n if (!passive) {\n this.captions.language = language;\n this.storage.set({ language });\n }\n\n // Handle Vimeo captions\n if (this.isVimeo) {\n this.embed.enableTextTrack(language);\n }\n\n // Trigger event\n triggerEvent.call(this, this.media, 'languagechange');\n }\n\n // Show captions\n captions.toggle.call(this, true, passive);\n\n if (this.isHTML5 && this.isVideo) {\n // If we change the active track while a cue is already displayed we need to update it\n captions.updateCues.call(this);\n }\n },\n\n // Set captions by language\n // Used internally for the language setter with the passive option forced to false\n setLanguage(input, passive = true) {\n if (!is.string(input)) {\n this.debug.warn('Invalid language argument', input);\n return;\n }\n // Normalize\n const language = input.toLowerCase();\n this.captions.language = language;\n\n // Set currentTrack\n const tracks = captions.getTracks.call(this);\n const track = captions.findTrack.call(this, [language]);\n captions.set.call(this, tracks.indexOf(track), passive);\n },\n\n // Get current valid caption tracks\n // If update is false it will also ignore tracks without metadata\n // This is used to \"freeze\" the language options when captions.update is false\n getTracks(update = false) {\n // Handle media or textTracks missing or null\n const tracks = Array.from((this.media || {}).textTracks || []);\n // For HTML5, use cache instead of current tracks when it exists (if captions.update is false)\n // Filter out removed tracks and tracks that aren't captions/subtitles (for example metadata)\n return tracks\n .filter(track => !this.isHTML5 || update || this.captions.meta.has(track))\n .filter(track => ['captions', 'subtitles'].includes(track.kind));\n },\n\n // Match tracks based on languages and get the first\n findTrack(languages, force = false) {\n const tracks = captions.getTracks.call(this);\n const sortIsDefault = track => Number((this.captions.meta.get(track) || {}).default);\n const sorted = Array.from(tracks).sort((a, b) => sortIsDefault(b) - sortIsDefault(a));\n let track;\n\n languages.every((language) => {\n track = sorted.find(t => t.language === language);\n return !track; // Break iteration if there is a match\n });\n\n // If no match is found but is required, get first\n return track || (force ? sorted[0] : undefined);\n },\n\n // Get the current track\n getCurrentTrack() {\n return captions.getTracks.call(this)[this.currentTrack];\n },\n\n // Get UI label for track\n getLabel(track) {\n let currentTrack = track;\n\n if (!is.track(currentTrack) && support.textTracks && this.captions.toggled) {\n currentTrack = captions.getCurrentTrack.call(this);\n }\n\n if (is.track(currentTrack)) {\n if (!is.empty(currentTrack.label)) {\n return currentTrack.label;\n }\n\n if (!is.empty(currentTrack.language)) {\n return track.language.toUpperCase();\n }\n\n return i18n.get('enabled', this.config);\n }\n\n return i18n.get('disabled', this.config);\n },\n\n // Update captions using current track's active cues\n // Also optional array argument in case there isn't any track (ex: vimeo)\n updateCues(input) {\n // Requires UI\n if (!this.supported.ui) {\n return;\n }\n\n if (!is.element(this.elements.captions)) {\n this.debug.warn('No captions element to render to');\n return;\n }\n\n // Only accept array or empty input\n if (!is.nullOrUndefined(input) && !Array.isArray(input)) {\n this.debug.warn('updateCues: Invalid input', input);\n return;\n }\n\n let cues = input;\n\n // Get cues from track\n if (!cues) {\n const track = captions.getCurrentTrack.call(this);\n\n cues = Array.from((track || {}).activeCues || [])\n .map(cue => cue.getCueAsHTML())\n .map(getHTML);\n }\n\n // Set new caption text\n const content = cues.map(cueText => cueText.trim()).join('\\n');\n const changed = content !== this.elements.captions.innerHTML;\n\n if (changed) {\n // Empty the container and create a new child element\n emptyElement(this.elements.captions);\n const caption = createElement('span', getAttributesFromSelector(this.config.selectors.caption));\n caption.innerHTML = content;\n this.elements.captions.appendChild(caption);\n\n // Trigger event\n triggerEvent.call(this, this.media, 'cuechange');\n }\n },\n};\n\nexport default captions;\n","// ==========================================================================\n// Plyr default config\n// ==========================================================================\n\nconst defaults = {\n // Disable\n enabled: true,\n\n // Custom media title\n title: '',\n\n // Logging to console\n debug: false,\n\n // Auto play (if supported)\n autoplay: false,\n\n // Only allow one media playing at once (vimeo only)\n autopause: true,\n\n // Allow inline playback on iOS\n playsinline: true,\n\n // Default time to skip when rewind/fast forward\n seekTime: 10,\n\n // Default volume\n volume: 1,\n muted: false,\n\n // Pass a custom duration\n duration: null,\n\n // Display the media duration on load in the current time position\n // If you have opted to display both duration and currentTime, this is ignored\n displayDuration: true,\n\n // Invert the current time to be a countdown\n invertTime: true,\n\n // Clicking the currentTime inverts it's value to show time left rather than elapsed\n toggleInvert: true,\n\n // Force an aspect ratio\n // The format must be `'w:h'` (e.g. `'16:9'`)\n ratio: null,\n\n // Click video container to play/pause\n clickToPlay: true,\n\n // Auto hide the controls\n hideControls: true,\n\n // Reset to start when playback ended\n resetOnEnd: false,\n\n // Disable the standard context menu\n disableContextMenu: true,\n\n // Sprite (for icons)\n loadSprite: true,\n iconPrefix: 'plyr',\n iconUrl: 'https://cdn.plyr.io/3.8.3/plyr.svg',\n\n // Blank video (used to prevent errors on source change)\n blankVideo: 'https://cdn.plyr.io/static/blank.mp4',\n\n // Quality default\n quality: {\n default: 576,\n // The options to display in the UI, if available for the source media\n options: [4320, 2880, 2160, 1440, 1080, 720, 576, 480, 360, 240],\n forced: false,\n onChange: null,\n },\n\n // Set loops\n loop: {\n active: false,\n // start: null,\n // end: null,\n },\n\n // Speed default and options to display\n speed: {\n selected: 1,\n // The options to display in the UI, if available for the source media (e.g. Vimeo and YouTube only support 0.5x-4x)\n options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 4],\n },\n\n // Keyboard shortcut settings\n keyboard: {\n focused: true,\n global: false,\n },\n\n // Display tooltips\n tooltips: {\n controls: false,\n seek: true,\n },\n\n // Captions settings\n captions: {\n active: false,\n language: 'auto',\n // Listen to new tracks added after Plyr is initialized.\n // This is needed for streaming captions, but may result in unselectable options\n update: false,\n },\n\n // Fullscreen settings\n fullscreen: {\n enabled: true, // Allow fullscreen?\n fallback: true, // Fallback using full viewport/window\n iosNative: false, // Use the native fullscreen in iOS (disables custom controls)\n // Selector for the fullscreen container so contextual / non-player content can remain visible in fullscreen mode\n // Non-ancestors of the player element will be ignored\n // container: null, // defaults to the player element\n },\n\n // Local storage\n storage: {\n enabled: true,\n key: 'plyr',\n },\n\n // Default controls\n controls: [\n 'play-large',\n // 'restart',\n // 'rewind',\n 'play',\n // 'fast-forward',\n 'progress',\n 'current-time',\n // 'duration',\n 'mute',\n 'volume',\n 'captions',\n 'settings',\n 'pip',\n 'airplay',\n // 'download',\n 'fullscreen',\n ],\n settings: ['captions', 'quality', 'speed'],\n\n // Localisation\n i18n: {\n restart: 'Restart',\n rewind: 'Rewind {seektime}s',\n play: 'Play',\n pause: 'Pause',\n fastForward: 'Forward {seektime}s',\n seek: 'Seek',\n seekLabel: '{currentTime} of {duration}',\n played: 'Played',\n buffered: 'Buffered',\n currentTime: 'Current time',\n duration: 'Duration',\n volume: 'Volume',\n mute: 'Mute',\n unmute: 'Unmute',\n enableCaptions: 'Enable captions',\n disableCaptions: 'Disable captions',\n download: 'Download',\n enterFullscreen: 'Enter fullscreen',\n exitFullscreen: 'Exit fullscreen',\n frameTitle: 'Player for {title}',\n captions: 'Captions',\n settings: 'Settings',\n pip: 'PIP',\n menuBack: 'Go back to previous menu',\n speed: 'Speed',\n normal: 'Normal',\n quality: 'Quality',\n loop: 'Loop',\n start: 'Start',\n end: 'End',\n all: 'All',\n reset: 'Reset',\n disabled: 'Disabled',\n enabled: 'Enabled',\n advertisement: 'Ad',\n qualityBadge: {\n 2160: '4K',\n 1440: 'HD',\n 1080: 'HD',\n 720: 'HD',\n 576: 'SD',\n 480: 'SD',\n },\n },\n\n // URLs\n urls: {\n download: null,\n vimeo: {\n sdk: 'https://player.vimeo.com/api/player.js',\n iframe: 'https://player.vimeo.com/video/{0}?{1}',\n api: 'https://vimeo.com/api/oembed.json?url={0}',\n },\n youtube: {\n sdk: 'https://www.youtube.com/iframe_api',\n api: 'https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}',\n },\n googleIMA: {\n sdk: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js',\n },\n },\n\n // Custom control listeners\n listeners: {\n seek: null,\n play: null,\n pause: null,\n restart: null,\n rewind: null,\n fastForward: null,\n mute: null,\n volume: null,\n captions: null,\n download: null,\n fullscreen: null,\n pip: null,\n airplay: null,\n speed: null,\n quality: null,\n loop: null,\n language: null,\n },\n\n // Events to watch and bubble\n events: [\n // Events to watch on HTML5 media elements and bubble\n // https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events\n 'ended',\n 'progress',\n 'stalled',\n 'playing',\n 'waiting',\n 'canplay',\n 'canplaythrough',\n 'loadstart',\n 'loadeddata',\n 'loadedmetadata',\n 'timeupdate',\n 'volumechange',\n 'play',\n 'pause',\n 'error',\n 'seeking',\n 'seeked',\n 'emptied',\n 'ratechange',\n 'cuechange',\n\n // Custom events\n 'download',\n 'enterfullscreen',\n 'exitfullscreen',\n 'captionsenabled',\n 'captionsdisabled',\n 'languagechange',\n 'controlshidden',\n 'controlsshown',\n 'ready',\n\n // YouTube\n 'statechange',\n\n // Quality\n 'qualitychange',\n\n // Ads\n 'adsloaded',\n 'adscontentpause',\n 'adscontentresume',\n 'adstarted',\n 'adsmidpoint',\n 'adscomplete',\n 'adsallcomplete',\n 'adsimpression',\n 'adsclick',\n ],\n\n // Selectors\n // Change these to match your template if using custom HTML\n selectors: {\n editable: 'input, textarea, select, [contenteditable]',\n container: '.plyr',\n controls: {\n container: null,\n wrapper: '.plyr__controls',\n },\n labels: '[data-plyr]',\n buttons: {\n play: '[data-plyr=\"play\"]',\n pause: '[data-plyr=\"pause\"]',\n restart: '[data-plyr=\"restart\"]',\n rewind: '[data-plyr=\"rewind\"]',\n fastForward: '[data-plyr=\"fast-forward\"]',\n mute: '[data-plyr=\"mute\"]',\n captions: '[data-plyr=\"captions\"]',\n download: '[data-plyr=\"download\"]',\n fullscreen: '[data-plyr=\"fullscreen\"]',\n pip: '[data-plyr=\"pip\"]',\n airplay: '[data-plyr=\"airplay\"]',\n settings: '[data-plyr=\"settings\"]',\n loop: '[data-plyr=\"loop\"]',\n },\n inputs: {\n seek: '[data-plyr=\"seek\"]',\n volume: '[data-plyr=\"volume\"]',\n speed: '[data-plyr=\"speed\"]',\n language: '[data-plyr=\"language\"]',\n quality: '[data-plyr=\"quality\"]',\n },\n display: {\n currentTime: '.plyr__time--current',\n duration: '.plyr__time--duration',\n buffer: '.plyr__progress__buffer',\n loop: '.plyr__progress__loop', // Used later\n volume: '.plyr__volume--display',\n },\n progress: '.plyr__progress',\n captions: '.plyr__captions',\n caption: '.plyr__caption',\n },\n\n // Class hooks added to the player in different states\n classNames: {\n type: 'plyr--{0}',\n provider: 'plyr--{0}',\n video: 'plyr__video-wrapper',\n embed: 'plyr__video-embed',\n videoFixedRatio: 'plyr__video-wrapper--fixed-ratio',\n embedContainer: 'plyr__video-embed__container',\n poster: 'plyr__poster',\n posterEnabled: 'plyr__poster-enabled',\n ads: 'plyr__ads',\n control: 'plyr__control',\n controlPressed: 'plyr__control--pressed',\n playing: 'plyr--playing',\n paused: 'plyr--paused',\n stopped: 'plyr--stopped',\n loading: 'plyr--loading',\n hover: 'plyr--hover',\n tooltip: 'plyr__tooltip',\n cues: 'plyr__cues',\n marker: 'plyr__progress__marker',\n hidden: 'plyr__sr-only',\n hideControls: 'plyr--hide-controls',\n isTouch: 'plyr--is-touch',\n uiSupported: 'plyr--full-ui',\n noTransition: 'plyr--no-transition',\n display: {\n time: 'plyr__time',\n },\n menu: {\n value: 'plyr__menu__value',\n badge: 'plyr__badge',\n open: 'plyr--menu-open',\n },\n captions: {\n enabled: 'plyr--captions-enabled',\n active: 'plyr--captions-active',\n },\n fullscreen: {\n enabled: 'plyr--fullscreen-enabled',\n fallback: 'plyr--fullscreen-fallback',\n },\n pip: {\n supported: 'plyr--pip-supported',\n active: 'plyr--pip-active',\n },\n airplay: {\n supported: 'plyr--airplay-supported',\n active: 'plyr--airplay-active',\n },\n previewThumbnails: {\n // Tooltip thumbs\n thumbContainer: 'plyr__preview-thumb',\n thumbContainerShown: 'plyr__preview-thumb--is-shown',\n imageContainer: 'plyr__preview-thumb__image-container',\n timeContainer: 'plyr__preview-thumb__time-container',\n // Scrubbing\n scrubbingContainer: 'plyr__preview-scrubbing',\n scrubbingContainerShown: 'plyr__preview-scrubbing--is-shown',\n },\n },\n\n // Embed attributes\n attributes: {\n embed: {\n provider: 'data-plyr-provider',\n id: 'data-plyr-embed-id',\n hash: 'data-plyr-embed-hash',\n },\n },\n\n // Advertisements plugin\n // Register for an account here: http://vi.ai/publisher-video-monetization/?aid=plyrio\n ads: {\n enabled: false,\n publisherId: '',\n tagUrl: '',\n },\n\n // Preview Thumbnails plugin\n previewThumbnails: {\n enabled: false,\n src: '',\n withCredentials: false,\n },\n\n // Vimeo plugin\n vimeo: {\n byline: false,\n portrait: false,\n title: false,\n speed: true,\n transparent: false,\n // Custom settings from Plyr\n customControls: true,\n referrerPolicy: null, // https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/referrerPolicy\n // Whether the owner of the video has a Pro or Business account\n // (which allows us to properly hide controls without CSS hacks, etc)\n premium: false,\n },\n\n // YouTube plugin\n youtube: {\n rel: 0, // No related vids\n showinfo: 0, // Hide info\n iv_load_policy: 3, // Hide annotations\n modestbranding: 1, // Hide logos as much as possible (they still show one in the corner when paused)\n // Custom settings from Plyr\n customControls: true,\n noCookie: false, // Whether to use an alternative version of YouTube without cookies\n },\n\n // Media Metadata\n mediaMetadata: {\n title: '',\n artist: '',\n album: '',\n artwork: [],\n },\n\n // Markers\n markers: {\n enabled: false,\n points: [],\n },\n};\n\nexport default defaults;\n","// ==========================================================================\n// Plyr states\n// ==========================================================================\n\nexport const pip = {\n active: 'picture-in-picture',\n inactive: 'inline',\n};\n\nexport default { pip };\n","// ==========================================================================\n// Plyr supported types and providers\n// ==========================================================================\n\nexport const providers = {\n html5: 'html5',\n youtube: 'youtube',\n vimeo: 'vimeo',\n};\n\nexport const types = {\n audio: 'audio',\n video: 'video',\n};\n\n/**\n * Get provider by URL\n * @param {string} url\n */\nexport function getProviderByUrl(url) {\n // YouTube\n if (/^(?:https?:\\/\\/)?(?:www\\.)?(?:youtube\\.com|youtube-nocookie\\.com|youtu\\.?be)\\/.+$/.test(url)) {\n return providers.youtube;\n }\n\n // Vimeo\n if (/^https?:\\/\\/player.vimeo.com\\/video\\/\\d{0,9}(?=\\b|\\/)/.test(url)) {\n return providers.vimeo;\n }\n\n return null;\n}\n\nexport default { providers, types };\n","// ==========================================================================\n// Console wrapper\n// ==========================================================================\n\nfunction noop() {}\n\nexport default class Console {\n constructor(enabled = false) {\n this.enabled = window.console && enabled;\n\n if (this.enabled) {\n this.log('Debugging enabled');\n }\n }\n\n get log() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.log, console) : noop;\n }\n\n get warn() {\n return this.enabled ? Function.prototype.bind.call(console.warn, console) : noop;\n }\n\n get error() {\n return this.enabled ? Function.prototype.bind.call(console.error, console) : noop;\n }\n}\n","// ==========================================================================\n// Fullscreen wrapper\n// https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#prefixing\n// https://webkit.org/blog/7929/designing-websites-for-iphone-x/\n// ==========================================================================\n\nimport browser from './utils/browser';\nimport { closest, getElements, hasClass, toggleClass } from './utils/elements';\nimport { on, triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport { silencePromise } from './utils/promise';\n\nclass Fullscreen {\n constructor(player) {\n // Keep reference to parent\n this.player = player;\n\n // Get prefix\n this.prefix = Fullscreen.prefix;\n this.property = Fullscreen.property;\n\n // Scroll position\n this.scrollPosition = { x: 0, y: 0 };\n\n // Force the use of 'full window/browser' rather than fullscreen\n this.forceFallback = player.config.fullscreen.fallback === 'force';\n\n // Get the fullscreen element\n // Checks container is an ancestor, defaults to null\n this.player.elements.fullscreen\n = player.config.fullscreen.container && closest(this.player.elements.container, player.config.fullscreen.container);\n\n // Register event listeners\n // Handle event (incase user presses escape etc)\n on.call(\n this.player,\n document,\n this.prefix === 'ms' ? 'MSFullscreenChange' : `${this.prefix}fullscreenchange`,\n () => {\n // TODO: Filter for target??\n this.onChange();\n },\n );\n\n // Fullscreen toggle on double click\n on.call(this.player, this.player.elements.container, 'dblclick', (event) => {\n // Ignore double click in controls\n if (is.element(this.player.elements.controls) && this.player.elements.controls.contains(event.target)) {\n return;\n }\n\n this.player.listeners.proxy(event, this.toggle, 'fullscreen');\n });\n\n // Tap focus when in fullscreen\n on.call(this, this.player.elements.container, 'keydown', event => this.trapFocus(event));\n\n // Update the UI\n this.update();\n }\n\n // Determine if native supported\n static get nativeSupported() {\n return !!(\n document.fullscreenEnabled\n || document.webkitFullscreenEnabled\n || document.mozFullScreenEnabled\n || document.msFullscreenEnabled\n );\n }\n\n // If we're actually using native\n get useNative() {\n return Fullscreen.nativeSupported && !this.forceFallback;\n }\n\n // Get the prefix for handlers\n static get prefix() {\n // No prefix\n if (is.function(document.exitFullscreen)) return '';\n\n // Check for fullscreen support by vendor prefix\n let value = '';\n const prefixes = ['webkit', 'moz', 'ms'];\n\n prefixes.some((pre) => {\n if (is.function(document[`${pre}ExitFullscreen`]) || is.function(document[`${pre}CancelFullScreen`])) {\n value = pre;\n return true;\n }\n\n return false;\n });\n\n return value;\n }\n\n static get property() {\n return this.prefix === 'moz' ? 'FullScreen' : 'Fullscreen';\n }\n\n // Determine if fullscreen is supported\n get supported() {\n return [\n // Fullscreen is enabled in config\n this.player.config.fullscreen.enabled,\n // Must be a video\n this.player.isVideo,\n // Either native is supported or fallback enabled\n Fullscreen.nativeSupported || this.player.config.fullscreen.fallback,\n // YouTube has no way to trigger fullscreen, so on devices with no native support, playsinline\n // must be enabled and iosNative fullscreen must be disabled to offer the fullscreen fallback\n !this.player.isYouTube\n || Fullscreen.nativeSupported\n || !browser.isIos\n || (this.player.config.playsinline && !this.player.config.fullscreen.iosNative),\n ].every(Boolean);\n }\n\n // Get active state\n get active() {\n if (!this.supported) return false;\n\n // Fallback using classname\n if (!Fullscreen.nativeSupported || this.forceFallback) {\n return hasClass(this.target, this.player.config.classNames.fullscreen.fallback);\n }\n\n const element = !this.prefix\n ? this.target.getRootNode().fullscreenElement\n : this.target.getRootNode()[`${this.prefix}${this.property}Element`];\n\n return element && element.shadowRoot ? element === this.target.getRootNode().host : element === this.target;\n }\n\n // Get target element\n get target() {\n return browser.isIos && this.player.config.fullscreen.iosNative\n ? this.player.media\n : this.player.elements.fullscreen ?? this.player.elements.container;\n }\n\n onChange = () => {\n if (!this.supported) return;\n\n // Update toggle button\n const button = this.player.elements.buttons.fullscreen;\n if (is.element(button)) {\n button.pressed = this.active;\n }\n\n // Always trigger events on the plyr / media element (not a fullscreen container) and let them bubble up\n const target = this.target === this.player.media ? this.target : this.player.elements.container;\n // Trigger an event\n triggerEvent.call(this.player, target, this.active ? 'enterfullscreen' : 'exitfullscreen', true);\n };\n\n toggleFallback = (toggle = false) => {\n // Store or restore scroll position\n if (toggle) {\n this.scrollPosition = {\n x: window.scrollX ?? 0,\n y: window.scrollY ?? 0,\n };\n }\n else {\n window.scrollTo(this.scrollPosition.x, this.scrollPosition.y);\n }\n\n // Toggle scroll\n document.body.style.overflow = toggle ? 'hidden' : '';\n\n // Toggle class hook\n toggleClass(this.target, this.player.config.classNames.fullscreen.fallback, toggle);\n\n // Force full viewport on iPhone X+\n if (browser.isIos) {\n let viewport = document.head.querySelector('meta[name=\"viewport\"]');\n const property = 'viewport-fit=cover';\n\n // Inject the viewport meta if required\n if (!viewport) {\n viewport = document.createElement('meta');\n viewport.setAttribute('name', 'viewport');\n }\n\n // Check if the property already exists\n const hasProperty = is.string(viewport.content) && viewport.content.includes(property);\n\n if (toggle) {\n this.cleanupViewport = !hasProperty;\n if (!hasProperty) viewport.content += `,${property}`;\n }\n else if (this.cleanupViewport) {\n viewport.content = viewport.content\n .split(',')\n .filter(part => part.trim() !== property)\n .join(',');\n }\n }\n\n // Toggle button and fire events\n this.onChange();\n };\n\n // Trap focus inside container\n trapFocus = (event) => {\n // Bail if iOS/iPadOS, not active, not the tab key\n if (browser.isIos || browser.isIPadOS || !this.active || event.key !== 'Tab') return;\n\n // Get the current focused element\n const focused = document.activeElement;\n const focusable = getElements.call(this.player, 'a[href], button:not(:disabled), input:not(:disabled), [tabindex]');\n const [first] = focusable;\n const last = focusable[focusable.length - 1];\n\n if (focused === last && !event.shiftKey) {\n // Move focus to first element that can be tabbed if Shift isn't used\n first.focus();\n event.preventDefault();\n }\n else if (focused === first && event.shiftKey) {\n // Move focus to last element that can be tabbed if Shift is used\n last.focus();\n event.preventDefault();\n }\n };\n\n // Update UI\n update = () => {\n if (this.supported) {\n let mode;\n\n if (this.forceFallback) mode = 'Fallback (forced)';\n else if (Fullscreen.nativeSupported) mode = 'Native';\n else mode = 'Fallback';\n\n this.player.debug.log(`${mode} fullscreen enabled`);\n }\n else {\n this.player.debug.log('Fullscreen not supported and fallback disabled');\n }\n\n // Add styling hook to show button\n toggleClass(this.player.elements.container, this.player.config.classNames.fullscreen.enabled, this.supported);\n };\n\n // Make an element fullscreen\n enter = () => {\n if (!this.supported) return;\n\n // iOS native fullscreen doesn't need the request step\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n if (this.player.isVimeo) {\n this.player.embed.requestFullscreen();\n }\n else {\n this.target.webkitEnterFullscreen();\n }\n }\n else if (!Fullscreen.nativeSupported || this.forceFallback) {\n this.toggleFallback(true);\n }\n else if (!this.prefix) {\n this.target.requestFullscreen({ navigationUI: 'hide' });\n }\n else if (!is.empty(this.prefix)) {\n this.target[`${this.prefix}Request${this.property}`]();\n }\n };\n\n // Bail from fullscreen\n exit = () => {\n if (!this.supported) return;\n\n // iOS native fullscreen\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n if (this.player.isVimeo) {\n this.player.embed.exitFullscreen();\n }\n else {\n this.target.webkitEnterFullscreen();\n }\n silencePromise(this.player.play());\n }\n else if (!Fullscreen.nativeSupported || this.forceFallback) {\n this.toggleFallback(false);\n }\n else if (!this.prefix) {\n (document.cancelFullScreen || document.exitFullscreen).call(document);\n }\n else if (!is.empty(this.prefix)) {\n const action = this.prefix === 'moz' ? 'Cancel' : 'Exit';\n document[`${this.prefix}${action}${this.property}`]();\n }\n };\n\n // Toggle state\n toggle = () => {\n if (!this.active) this.enter();\n else this.exit();\n };\n}\n\nexport default Fullscreen;\n","// ==========================================================================\n// Load image avoiding xhr/fetch CORS issues\n// Server status can't be obtained this way unfortunately, so this uses \"naturalWidth\" to determine if the image has loaded\n// By default it checks if it is at least 1px, but you can add a second argument to change this\n// ==========================================================================\n\nexport default function loadImage(src, minWidth = 1) {\n return new Promise((resolve, reject) => {\n const image = new Image();\n\n const handler = () => {\n delete image.onload;\n delete image.onerror;\n (image.naturalWidth >= minWidth ? resolve : reject)(image);\n };\n\n Object.assign(image, { onload: handler, onerror: handler, src });\n });\n}\n","// ==========================================================================\n// Plyr UI\n// ==========================================================================\n\nimport captions from './captions';\nimport controls from './controls';\nimport support from './support';\nimport { getElement, toggleClass } from './utils/elements';\nimport { ready, triggerEvent } from './utils/events';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport loadImage from './utils/load-image';\n\nconst ui = {\n addStyleHook() {\n toggleClass(this.elements.container, this.config.selectors.container.replace('.', ''), true);\n toggleClass(this.elements.container, this.config.classNames.uiSupported, this.supported.ui);\n },\n\n // Toggle native HTML5 media controls\n toggleNativeControls(toggle = false) {\n if (toggle && this.isHTML5) {\n this.media.setAttribute('controls', '');\n }\n else {\n this.media.removeAttribute('controls');\n }\n },\n\n // Setup the UI\n build() {\n // Re-attach media element listeners\n // TODO: Use event bubbling?\n this.listeners.media();\n\n // Don't setup interface if no support\n if (!this.supported.ui) {\n this.debug.warn(`Basic support only for ${this.provider} ${this.type}`);\n\n // Restore native controls\n ui.toggleNativeControls.call(this, true);\n\n // Bail\n return;\n }\n\n // Inject custom controls if not present\n if (!is.element(this.elements.controls)) {\n // Inject custom controls\n controls.inject.call(this);\n\n // Re-attach control listeners\n this.listeners.controls();\n }\n\n // Remove native controls\n ui.toggleNativeControls.call(this);\n\n // Setup captions for HTML5\n if (this.isHTML5) {\n captions.setup.call(this);\n }\n\n // Reset volume\n this.volume = null;\n\n // Reset mute state\n this.muted = null;\n\n // Reset loop state\n this.loop = null;\n\n // Reset quality setting\n this.quality = null;\n\n // Reset speed\n this.speed = null;\n\n // Reset volume display\n controls.updateVolume.call(this);\n\n // Reset time display\n controls.timeUpdate.call(this);\n\n // Reset duration display\n controls.durationUpdate.call(this);\n\n // Update the UI\n ui.checkPlaying.call(this);\n\n // Check for picture-in-picture support\n toggleClass(\n this.elements.container,\n this.config.classNames.pip.supported,\n support.pip && this.isHTML5 && this.isVideo,\n );\n\n // Check for airplay support\n toggleClass(this.elements.container, this.config.classNames.airplay.supported, support.airplay && this.isHTML5);\n\n // Add touch class\n toggleClass(this.elements.container, this.config.classNames.isTouch, this.touch);\n\n // Ready for API calls\n this.ready = true;\n\n // Ready event at end of execution stack\n setTimeout(() => {\n triggerEvent.call(this, this.media, 'ready');\n }, 0);\n\n // Set the title\n ui.setTitle.call(this);\n\n // Assure the poster image is set, if the property was added before the element was created\n if (this.poster) {\n ui.setPoster.call(this, this.poster, false).catch(() => {});\n }\n\n // Manually set the duration if user has overridden it.\n // The event listeners for it doesn't get called if preload is disabled (#701)\n if (this.config.duration) {\n controls.durationUpdate.call(this);\n }\n\n // Media metadata\n if (this.config.mediaMetadata) {\n controls.setMediaMetadata.call(this);\n }\n },\n\n // Setup aria attribute for play and iframe title\n setTitle() {\n // Find the current text\n let label = i18n.get('play', this.config);\n\n // If there's a media title set, use that for the label\n if (is.string(this.config.title) && !is.empty(this.config.title)) {\n label += `, ${this.config.title}`;\n }\n\n // If there's a play button, set label\n Array.from(this.elements.buttons.play || []).forEach((button) => {\n button.setAttribute('aria-label', label);\n });\n\n // Set iframe title\n // https://github.com/sampotts/plyr/issues/124\n if (this.isEmbed) {\n const iframe = getElement.call(this, 'iframe');\n\n if (!is.element(iframe)) {\n return;\n }\n\n // Default to media type\n const title = !is.empty(this.config.title) ? this.config.title : 'video';\n const format = i18n.get('frameTitle', this.config);\n\n iframe.setAttribute('title', format.replace('{title}', title));\n }\n },\n\n // Toggle poster\n togglePoster(enable) {\n toggleClass(this.elements.container, this.config.classNames.posterEnabled, enable);\n },\n\n // Set the poster image (async)\n // Used internally for the poster setter, with the passive option forced to false\n setPoster(poster, passive = true) {\n // Don't override if call is passive\n if (passive && this.poster) {\n return Promise.reject(new Error('Poster already set'));\n }\n\n // Set property synchronously to respect the call order\n this.media.setAttribute('data-poster', poster);\n\n // Show the poster\n this.elements.poster.removeAttribute('hidden');\n\n // Wait until ui is ready\n return (\n ready\n .call(this)\n // Load image\n .then(() => loadImage(poster))\n .catch((error) => {\n // Hide poster on error unless it's been set by another call\n if (poster === this.poster) {\n ui.togglePoster.call(this, false);\n }\n // Rethrow\n throw error;\n })\n .then(() => {\n // Prevent race conditions\n if (poster !== this.poster) {\n throw new Error('setPoster cancelled by later call to setPoster');\n }\n })\n .then(() => {\n Object.assign(this.elements.poster.style, {\n backgroundImage: `url('${poster}')`,\n // Reset backgroundSize as well (since it can be set to \"cover\" for padded thumbnails for youtube)\n backgroundSize: '',\n });\n\n ui.togglePoster.call(this, true);\n\n return poster;\n })\n );\n },\n\n // Check playing state\n checkPlaying(event) {\n // Class hooks\n toggleClass(this.elements.container, this.config.classNames.playing, this.playing);\n toggleClass(this.elements.container, this.config.classNames.paused, this.paused);\n toggleClass(this.elements.container, this.config.classNames.stopped, this.stopped);\n\n // Set state\n Array.from(this.elements.buttons.play || []).forEach((target) => {\n Object.assign(target, { pressed: this.playing });\n target.setAttribute('aria-label', i18n.get(this.playing ? 'pause' : 'play', this.config));\n });\n\n // Only update controls on non timeupdate events\n if (is.event(event) && event.type === 'timeupdate') {\n return;\n }\n\n // Toggle controls\n ui.toggleControls.call(this);\n },\n\n // Check if media is loading\n checkLoading(event) {\n this.loading = ['stalled', 'waiting'].includes(event.type);\n\n // Clear timer\n clearTimeout(this.timers.loading);\n\n // Timer to prevent flicker when seeking\n this.timers.loading = setTimeout(\n () => {\n // Update progress bar loading class state\n toggleClass(this.elements.container, this.config.classNames.loading, this.loading);\n\n // Update controls visibility\n ui.toggleControls.call(this);\n },\n this.loading ? 250 : 0,\n );\n },\n\n // Toggle controls based on state and `force` argument\n toggleControls(force) {\n const { controls: controlsElement } = this.elements;\n\n if (controlsElement && this.config.hideControls) {\n // Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.)\n const recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now();\n\n // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide\n this.toggleControls(\n Boolean(\n force || this.loading || this.paused || controlsElement.pressed || controlsElement.hover || recentTouchSeek,\n ),\n );\n }\n },\n\n // Migrate any custom properties from the media to the parent\n migrateStyles() {\n // Loop through values (as they are the keys when the object is spread 🤔)\n Object.values({ ...this.media.style })\n // We're only fussed about Plyr specific properties\n .filter(key => !is.empty(key) && is.string(key) && key.startsWith('--plyr'))\n .forEach((key) => {\n // Set on the container\n this.elements.container.style.setProperty(key, this.media.style.getPropertyValue(key));\n\n // Clean up from media element\n this.media.style.removeProperty(key);\n });\n\n // Remove attribute if empty\n if (is.empty(this.media.style)) {\n this.media.removeAttribute('style');\n }\n },\n};\n\nexport default ui;\n","// ==========================================================================\n// Plyr Event Listeners\n// ==========================================================================\n\nimport controls from './controls';\nimport ui from './ui';\nimport { repaint } from './utils/animation';\nimport browser from './utils/browser';\nimport { getElement, getElements, matches, toggleClass } from './utils/elements';\nimport { off, on, once, toggleListener, triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport { silencePromise } from './utils/promise';\nimport { getAspectRatio, getViewportSize, supportsCSS } from './utils/style';\n\nclass Listeners {\n constructor(player) {\n this.player = player;\n this.lastKey = null;\n this.focusTimer = null;\n this.lastKeyDown = null;\n\n this.handleKey = this.handleKey.bind(this);\n this.toggleMenu = this.toggleMenu.bind(this);\n this.firstTouch = this.firstTouch.bind(this);\n }\n\n // Handle key presses\n handleKey(event) {\n const { player } = this;\n const { elements } = player;\n const { key, type, altKey, ctrlKey, metaKey, shiftKey } = event;\n const pressed = type === 'keydown';\n const repeat = pressed && key === this.lastKey;\n\n // Bail if a modifier key is set\n if (altKey || ctrlKey || metaKey || shiftKey) {\n return;\n }\n\n // If the event is bubbled from the media element\n // Firefox doesn't get the key for whatever reason\n if (!key) {\n return;\n }\n\n // Seek by increment\n const seekByIncrement = (increment) => {\n // Divide the max duration into 10th's and times by the number value\n player.currentTime = (player.duration / 10) * increment;\n };\n\n // Handle the key on keydown\n // Reset on keyup\n if (pressed) {\n // Check focused element\n // and if the focused element is not editable (e.g. text input)\n // and any that accept key input http://webaim.org/techniques/keyboard/\n const focused = document.activeElement;\n if (is.element(focused)) {\n const { editable } = player.config.selectors;\n const { seek } = elements.inputs;\n\n if (focused !== seek && matches(focused, editable)) {\n return;\n }\n\n if (event.key === ' ' && matches(focused, 'button, [role^=\"menuitem\"]')) {\n return;\n }\n }\n\n // Which keys should we prevent default\n const preventDefault = [\n ' ',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowRight',\n 'ArrowDown',\n\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n\n 'c',\n 'f',\n 'k',\n 'l',\n 'm',\n ];\n\n // If the key is found prevent default (e.g. prevent scrolling for arrows)\n if (preventDefault.includes(key)) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n switch (key) {\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n if (!repeat) {\n seekByIncrement(Number.parseInt(key, 10));\n }\n break;\n\n case ' ':\n case 'k':\n if (!repeat) {\n silencePromise(player.togglePlay());\n }\n break;\n\n case 'ArrowUp':\n player.increaseVolume(0.1);\n break;\n\n case 'ArrowDown':\n player.decreaseVolume(0.1);\n break;\n\n case 'm':\n if (!repeat) {\n player.muted = !player.muted;\n }\n break;\n\n case 'ArrowRight':\n player.forward();\n break;\n\n case 'ArrowLeft':\n player.rewind();\n break;\n\n case 'f':\n player.fullscreen.toggle();\n break;\n\n case 'c':\n if (!repeat) {\n player.toggleCaptions();\n }\n break;\n\n case 'l':\n player.loop = !player.loop;\n break;\n\n default:\n break;\n }\n\n // Escape is handle natively when in full screen\n // So we only need to worry about non native\n if (key === 'Escape' && !player.fullscreen.usingNative && player.fullscreen.active) {\n player.fullscreen.toggle();\n }\n\n // Store last key for next cycle\n this.lastKey = key;\n }\n else {\n this.lastKey = null;\n }\n }\n\n // Toggle menu\n toggleMenu(event) {\n controls.toggleMenu.call(this.player, event);\n }\n\n // Device is touch enabled\n firstTouch = () => {\n const { player } = this;\n const { elements } = player;\n\n player.touch = true;\n\n // Add touch class\n toggleClass(elements.container, player.config.classNames.isTouch, true);\n };\n\n // Global window & document listeners\n global = (toggle = true) => {\n const { player } = this;\n\n // Keyboard shortcuts\n if (player.config.keyboard.global) {\n toggleListener.call(player, window, 'keydown keyup', this.handleKey, toggle, false);\n }\n\n // Click anywhere closes menu\n toggleListener.call(player, document.body, 'click', this.toggleMenu, toggle);\n\n // Detect touch by events\n once.call(player, document.body, 'touchstart', this.firstTouch);\n };\n\n // Container listeners\n container = () => {\n const { player } = this;\n const { config, elements, timers } = player;\n\n // Keyboard shortcuts\n if (!config.keyboard.global && config.keyboard.focused) {\n on.call(player, elements.container, 'keydown keyup', this.handleKey, false);\n }\n\n // Toggle controls on mouse events and entering fullscreen\n on.call(\n player,\n elements.container,\n 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen',\n (event) => {\n const { controls: controlsElement } = elements;\n\n // Remove button states for fullscreen\n if (controlsElement && event.type === 'enterfullscreen') {\n controlsElement.pressed = false;\n controlsElement.hover = false;\n }\n\n // Show, then hide after a timeout unless another control event occurs\n const show = ['touchstart', 'touchmove', 'mousemove'].includes(event.type);\n let delay = 0;\n\n if (show) {\n ui.toggleControls.call(player, true);\n // Use longer timeout for touch devices\n delay = player.touch ? 3000 : 2000;\n }\n\n // Clear timer\n clearTimeout(timers.controls);\n\n // Set new timer to prevent flicker when seeking\n timers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay);\n },\n );\n\n // Set a gutter for Vimeo\n const setGutter = () => {\n if (!player.isVimeo || player.config.vimeo.premium) {\n return;\n }\n\n const target = elements.wrapper;\n const { active } = player.fullscreen;\n const [videoWidth, videoHeight] = getAspectRatio.call(player);\n const useNativeAspectRatio = supportsCSS(`aspect-ratio: ${videoWidth} / ${videoHeight}`);\n\n // If not active, remove styles\n if (!active) {\n if (useNativeAspectRatio) {\n target.style.width = null;\n target.style.height = null;\n }\n else {\n target.style.maxWidth = null;\n target.style.margin = null;\n }\n return;\n }\n\n // Determine which dimension will overflow and constrain view\n const [viewportWidth, viewportHeight] = getViewportSize();\n const overflow = viewportWidth / viewportHeight > videoWidth / videoHeight;\n\n if (useNativeAspectRatio) {\n target.style.width = overflow ? 'auto' : '100%';\n target.style.height = overflow ? '100%' : 'auto';\n }\n else {\n target.style.maxWidth = overflow ? `${(viewportHeight / videoHeight) * videoWidth}px` : null;\n target.style.margin = overflow ? '0 auto' : null;\n }\n };\n\n // Handle resizing\n const resized = () => {\n clearTimeout(timers.resized);\n timers.resized = setTimeout(setGutter, 50);\n };\n\n on.call(player, elements.container, 'enterfullscreen exitfullscreen', (event) => {\n const { target } = player.fullscreen;\n\n // Ignore events not from target\n if (target !== elements.container) {\n return;\n }\n\n // If it's not an embed and no ratio specified\n if (!player.isEmbed && is.empty(player.config.ratio)) {\n return;\n }\n\n // Set Vimeo gutter\n setGutter();\n\n // Watch for resizes\n const method = event.type === 'enterfullscreen' ? on : off;\n method.call(player, window, 'resize', resized);\n });\n };\n\n // Listen for media events\n media = () => {\n const { player } = this;\n const { elements } = player;\n\n // Time change on media\n on.call(player, player.media, 'timeupdate seeking seeked', event => controls.timeUpdate.call(player, event));\n\n // Display duration\n on.call(player, player.media, 'durationchange loadeddata loadedmetadata', event =>\n controls.durationUpdate.call(player, event));\n\n // Handle the media finishing\n on.call(player, player.media, 'ended', () => {\n // Show poster on end\n if (player.isHTML5 && player.isVideo && player.config.resetOnEnd) {\n // Restart\n player.restart();\n\n // Call pause otherwise IE11 will start playing the video again\n player.pause();\n }\n });\n\n // Check for buffer progress\n on.call(player, player.media, 'progress playing seeking seeked', event =>\n controls.updateProgress.call(player, event));\n\n // Handle volume changes\n on.call(player, player.media, 'volumechange', event => controls.updateVolume.call(player, event));\n\n // Handle play/pause\n on.call(player, player.media, 'playing play pause ended emptied timeupdate', event =>\n ui.checkPlaying.call(player, event));\n\n // Loading state\n on.call(player, player.media, 'waiting canplay seeked playing', event => ui.checkLoading.call(player, event));\n\n // Click video\n if (player.supported.ui && player.config.clickToPlay && !player.isAudio) {\n // Re-fetch the wrapper\n const wrapper = getElement.call(player, `.${player.config.classNames.video}`);\n\n // Bail if there's no wrapper (this should never happen)\n if (!is.element(wrapper)) {\n return;\n }\n\n // On click play, pause or restart\n on.call(player, elements.container, 'click', (event) => {\n const targets = [elements.container, wrapper];\n\n // Ignore if click if not container or in video wrapper\n if (!targets.includes(event.target) && !wrapper.contains(event.target)) {\n return;\n }\n\n // Touch devices will just show controls (if hidden)\n if (player.touch && player.config.hideControls) {\n return;\n }\n\n if (player.ended) {\n this.proxy(event, player.restart, 'restart');\n this.proxy(\n event,\n () => {\n silencePromise(player.play());\n },\n 'play',\n );\n }\n else {\n this.proxy(\n event,\n () => {\n silencePromise(player.togglePlay());\n },\n 'play',\n );\n }\n });\n }\n\n // Disable right click\n if (player.supported.ui && player.config.disableContextMenu) {\n on.call(\n player,\n elements.wrapper,\n 'contextmenu',\n (event) => {\n event.preventDefault();\n },\n false,\n );\n }\n\n // Volume change\n on.call(player, player.media, 'volumechange', () => {\n // Save to storage\n player.storage.set({\n volume: player.volume,\n muted: player.muted,\n });\n });\n\n // Speed change\n on.call(player, player.media, 'ratechange', () => {\n // Update UI\n controls.updateSetting.call(player, 'speed');\n\n // Save to storage\n player.storage.set({ speed: player.speed });\n });\n\n // Quality change\n on.call(player, player.media, 'qualitychange', (event) => {\n // Update UI\n controls.updateSetting.call(player, 'quality', null, event.detail.quality);\n });\n\n // Update download link when ready and if quality changes\n on.call(player, player.media, 'ready qualitychange', () => {\n controls.setDownloadUrl.call(player);\n });\n\n // Proxy events to container\n // Bubble up key events for Edge\n const proxyEvents = player.config.events.concat(['keyup', 'keydown']).join(' ');\n\n on.call(player, player.media, proxyEvents, (event) => {\n let { detail = {} } = event;\n\n // Get error details from media\n if (event.type === 'error') {\n detail = player.media.error;\n }\n\n triggerEvent.call(player, elements.container, event.type, true, detail);\n });\n };\n\n // Run default and custom handlers\n proxy = (event, defaultHandler, customHandlerKey) => {\n const { player } = this;\n const customHandler = player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n let returned = true;\n\n // Execute custom handler\n if (hasCustomHandler) {\n returned = customHandler.call(player, event);\n }\n\n // Only call default handler if not prevented in custom handler\n if (returned !== false && is.function(defaultHandler)) {\n defaultHandler.call(player, event);\n }\n };\n\n // Trigger custom and default handlers\n bind = (element, type, defaultHandler, customHandlerKey, passive = true) => {\n const { player } = this;\n const customHandler = player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n\n on.call(\n player,\n element,\n type,\n event => this.proxy(event, defaultHandler, customHandlerKey),\n passive && !hasCustomHandler,\n );\n };\n\n // Listen for control events\n controls = () => {\n const { player } = this;\n const { elements } = player;\n // IE doesn't support input event, so we fallback to change\n const inputEvent = browser.isIE ? 'change' : 'input';\n\n // Play/pause toggle\n if (elements.buttons.play) {\n Array.from(elements.buttons.play).forEach((button) => {\n this.bind(\n button,\n 'click',\n () => {\n silencePromise(player.togglePlay());\n },\n 'play',\n );\n });\n }\n\n // Pause\n this.bind(elements.buttons.restart, 'click', player.restart, 'restart');\n\n // Rewind\n this.bind(\n elements.buttons.rewind,\n 'click',\n () => {\n // Record seek time so we can prevent hiding controls for a few seconds after rewind\n player.lastSeekTime = Date.now();\n player.rewind();\n },\n 'rewind',\n );\n\n // Rewind\n this.bind(\n elements.buttons.fastForward,\n 'click',\n () => {\n // Record seek time so we can prevent hiding controls for a few seconds after fast forward\n player.lastSeekTime = Date.now();\n player.forward();\n },\n 'fastForward',\n );\n\n // Mute toggle\n this.bind(\n elements.buttons.mute,\n 'click',\n () => {\n player.muted = !player.muted;\n },\n 'mute',\n );\n\n // Captions toggle\n this.bind(elements.buttons.captions, 'click', () => player.toggleCaptions());\n\n // Download\n this.bind(\n elements.buttons.download,\n 'click',\n () => {\n triggerEvent.call(player, player.media, 'download');\n },\n 'download',\n );\n\n // Fullscreen toggle\n this.bind(\n elements.buttons.fullscreen,\n 'click',\n () => {\n player.fullscreen.toggle();\n },\n 'fullscreen',\n );\n\n // Picture-in-Picture\n this.bind(\n elements.buttons.pip,\n 'click',\n () => {\n player.pip = 'toggle';\n },\n 'pip',\n );\n\n // Airplay\n this.bind(elements.buttons.airplay, 'click', player.airplay, 'airplay');\n\n // Settings menu - click toggle\n this.bind(\n elements.buttons.settings,\n 'click',\n (event) => {\n // Prevent the document click listener closing the menu\n event.stopPropagation();\n event.preventDefault();\n\n controls.toggleMenu.call(player, event);\n },\n null,\n false,\n ); // Can't be passive as we're preventing default\n\n // Settings menu - keyboard toggle\n // We have to bind to keyup otherwise Firefox triggers a click when a keydown event handler shifts focus\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n this.bind(\n elements.buttons.settings,\n 'keyup',\n (event) => {\n if (![' ', 'Enter'].includes(event.key)) {\n return;\n }\n\n // Because return triggers a click anyway, all we need to do is set focus\n if (event.key === 'Enter') {\n controls.focusFirstMenuItem.call(player, null, true);\n return;\n }\n\n // Prevent scroll\n event.preventDefault();\n\n // Prevent playing video (Firefox)\n event.stopPropagation();\n\n // Toggle menu\n controls.toggleMenu.call(player, event);\n },\n null,\n false, // Can't be passive as we're preventing default\n );\n\n // Escape closes menu\n this.bind(elements.settings.menu, 'keydown', (event) => {\n if (event.key === 'Escape') {\n controls.toggleMenu.call(player, event);\n }\n });\n\n // Set range input alternative \"value\", which matches the tooltip time (#954)\n this.bind(elements.inputs.seek, 'mousedown mousemove', (event) => {\n const rect = elements.progress.getBoundingClientRect();\n const scrollLeft = event.pageX - event.clientX;\n const percent = (100 / rect.width) * (event.pageX - rect.left - scrollLeft);\n event.currentTarget.setAttribute('seek-value', percent);\n });\n\n // Pause while seeking\n this.bind(elements.inputs.seek, 'mousedown mouseup keydown keyup touchstart touchend', (event) => {\n const seek = event.currentTarget;\n const attribute = 'play-on-seeked';\n\n if (is.keyboardEvent(event) && !['ArrowLeft', 'ArrowRight'].includes(event.key)) {\n return;\n }\n\n // Record seek time so we can prevent hiding controls for a few seconds after seek\n player.lastSeekTime = Date.now();\n\n // Was playing before?\n const play = seek.hasAttribute(attribute);\n // Done seeking\n const done = ['mouseup', 'touchend', 'keyup'].includes(event.type);\n\n // If we're done seeking and it was playing, resume playback\n if (play && done) {\n seek.removeAttribute(attribute);\n silencePromise(player.play());\n }\n else if (!done && player.playing) {\n seek.setAttribute(attribute, '');\n player.pause();\n }\n });\n\n // Fix range inputs on iOS\n // Super weird iOS bug where after you interact with an ,\n // it takes over further interactions on the page. This is a hack\n if (browser.isIos) {\n const inputs = getElements.call(player, 'input[type=\"range\"]');\n Array.from(inputs).forEach(input => this.bind(input, inputEvent, event => repaint(event.target)));\n }\n\n // Seek\n this.bind(\n elements.inputs.seek,\n inputEvent,\n (event) => {\n const seek = event.currentTarget;\n // If it exists, use seek-value instead of \"value\" for consistency with tooltip time (#954)\n let seekTo = seek.getAttribute('seek-value');\n\n if (is.empty(seekTo)) {\n seekTo = seek.value;\n }\n\n seek.removeAttribute('seek-value');\n\n player.currentTime = (seekTo / seek.max) * player.duration;\n },\n 'seek',\n );\n\n // Seek tooltip\n this.bind(elements.progress, 'mouseenter mouseleave mousemove', event =>\n controls.updateSeekTooltip.call(player, event));\n\n // Preview thumbnails plugin\n // TODO: Really need to work on some sort of plug-in wide event bus or pub-sub for this\n this.bind(elements.progress, 'mousemove touchmove', (event) => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.startMove(event);\n }\n });\n\n // Hide thumbnail preview - on mouse click, mouse leave, and video play/seek. All four are required, e.g., for buffering\n this.bind(elements.progress, 'mouseleave touchend click', () => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.endMove(false, true);\n }\n });\n\n // Show scrubbing preview\n this.bind(elements.progress, 'mousedown touchstart', (event) => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.startScrubbing(event);\n }\n });\n\n this.bind(elements.progress, 'mouseup touchend', (event) => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.endScrubbing(event);\n }\n });\n\n // Polyfill for lower fill in for webkit\n if (browser.isWebKit) {\n Array.from(getElements.call(player, 'input[type=\"range\"]')).forEach((element) => {\n this.bind(element, 'input', event => controls.updateRangeFill.call(player, event.target));\n });\n }\n\n // Current time invert\n // Only if one time element is used for both currentTime and duration\n if (player.config.toggleInvert && !is.element(elements.display.duration)) {\n this.bind(elements.display.currentTime, 'click', () => {\n // Do nothing if we're at the start\n if (player.currentTime === 0) {\n return;\n }\n\n player.config.invertTime = !player.config.invertTime;\n\n controls.timeUpdate.call(player);\n });\n }\n\n // Volume\n this.bind(\n elements.inputs.volume,\n inputEvent,\n (event) => {\n player.volume = event.target.value;\n },\n 'volume',\n );\n\n // Update controls.hover state (used for ui.toggleControls to avoid hiding when interacting)\n this.bind(elements.controls, 'mouseenter mouseleave', (event) => {\n elements.controls.hover = !player.touch && event.type === 'mouseenter';\n });\n\n // Also update controls.hover state for any non-player children of fullscreen element (as above)\n if (elements.fullscreen) {\n Array.from(elements.fullscreen.children)\n .filter(c => !c.contains(elements.container))\n .forEach((child) => {\n this.bind(child, 'mouseenter mouseleave', (event) => {\n if (elements.controls) {\n elements.controls.hover = !player.touch && event.type === 'mouseenter';\n }\n });\n });\n }\n\n // Update controls.pressed state (used for ui.toggleControls to avoid hiding when interacting)\n this.bind(elements.controls, 'mousedown mouseup touchstart touchend touchcancel', (event) => {\n elements.controls.pressed = ['mousedown', 'touchstart'].includes(event.type);\n });\n\n // Show controls when they receive focus (e.g., when using keyboard tab key)\n this.bind(elements.controls, 'focusin', () => {\n const { config, timers } = player;\n\n // Skip transition to prevent focus from scrolling the parent element\n toggleClass(elements.controls, config.classNames.noTransition, true);\n\n // Toggle\n ui.toggleControls.call(player, true);\n\n // Restore transition\n setTimeout(() => {\n toggleClass(elements.controls, config.classNames.noTransition, false);\n }, 0);\n\n // Delay a little more for mouse users\n const delay = this.touch ? 3000 : 4000;\n\n // Clear timer\n clearTimeout(timers.controls);\n\n // Hide again after delay\n timers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay);\n });\n\n // Mouse wheel for volume\n this.bind(\n elements.inputs.volume,\n 'wheel',\n (event) => {\n // Detect \"natural\" scroll - supported on OS X Safari only\n // Other browsers on OS X will be inverted until support improves\n const inverted = event.webkitDirectionInvertedFromDevice;\n // Get delta from event. Invert if `inverted` is true\n const [x, y] = [event.deltaX, -event.deltaY].map(value => (inverted ? -value : value));\n // Using the biggest delta, normalize to 1 or -1 (or 0 if no delta)\n const direction = Math.sign(Math.abs(x) > Math.abs(y) ? x : y);\n\n // Change the volume by 2%\n player.increaseVolume(direction / 50);\n\n // Don't break page scrolling at max and min\n const { volume } = player.media;\n if ((direction === 1 && volume < 1) || (direction === -1 && volume > 0)) {\n event.preventDefault();\n }\n },\n 'volume',\n false,\n );\n };\n}\n\nexport default Listeners;\n","// ==========================================================================\n// Load an external script\n// ==========================================================================\n\nimport loadjs from 'loadjs';\n\nexport default function loadScript(url) {\n return new Promise((resolve, reject) => {\n loadjs(url, {\n success: resolve,\n error: reject,\n });\n });\n}\n","// ==========================================================================\n// Vimeo plugin\n// ==========================================================================\n\nimport captions from '../captions';\nimport controls from '../controls';\nimport ui from '../ui';\nimport { createElement, replaceElement, toggleClass } from '../utils/elements';\nimport { triggerEvent } from '../utils/events';\nimport fetch from '../utils/fetch';\nimport is from '../utils/is';\nimport loadScript from '../utils/load-script';\nimport { format, stripHTML } from '../utils/strings';\nimport { roundAspectRatio, setAspectRatio } from '../utils/style';\nimport { buildUrlParams } from '../utils/urls';\n\n// Parse Vimeo ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n if (is.number(Number(url))) {\n return url;\n }\n\n // eslint-disable-next-line regexp/optimal-quantifier-concatenation\n const regex = /^.*(vimeo.com\\/|video\\/)(\\d+).*/;\n const match = url.match(regex);\n return match ? match[2] : url;\n}\n\n// Try to extract a hash for private videos from the URL\nfunction parseHash(url) {\n /* This regex matches a hexadecimal hash if given in any of these forms:\n * - [https://player.]vimeo.com/video/{id}/{hash}[?params]\n * - [https://player.]vimeo.com/video/{id}?h={hash}[¶ms]\n * - [https://player.]vimeo.com/video/{id}?[params]&h={hash}\n * - video/{id}/{hash}\n * If matched, the hash is available in capture group 4\n */\n const regex = /^.*(vimeo.com\\/|video\\/)(\\d+)(\\?.*h=|\\/)+([\\d,a-f]+)/;\n const found = url.match(regex);\n\n return found && found.length === 5 ? found[4] : null;\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nconst vimeo = {\n setup() {\n const player = this;\n\n // Add embed class for responsive\n toggleClass(player.elements.wrapper, player.config.classNames.embed, true);\n\n // Set speed options from config\n player.options.speed = player.config.speed.options;\n\n // Set initial ratio\n setAspectRatio.call(player);\n\n // Load the SDK if not already\n if (!is.object(window.Vimeo)) {\n loadScript(player.config.urls.vimeo.sdk)\n .then(() => {\n vimeo.ready.call(player);\n })\n .catch((error) => {\n player.debug.warn('Vimeo SDK (player.js) failed to load', error);\n });\n }\n else {\n vimeo.ready.call(player);\n }\n },\n\n // API Ready\n ready() {\n const player = this;\n const config = player.config.vimeo;\n const { premium, referrerPolicy, ...frameParams } = config;\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n let hash = '';\n // Get from
if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(player.config.attributes.embed.id);\n // hash can also be set as attribute on the
\n hash = player.media.getAttribute(player.config.attributes.embed.hash);\n }\n else {\n hash = parseHash(source);\n }\n const hashParam = hash ? { h: hash } : {};\n\n // If the owner has a pro or premium account then we can hide controls etc\n if (premium) {\n Object.assign(frameParams, {\n controls: false,\n sidedock: false,\n });\n }\n\n // Get Vimeo params for the iframe\n const params = buildUrlParams({\n loop: player.config.loop.active,\n autoplay: player.autoplay,\n muted: player.muted,\n gesture: 'media',\n playsinline: player.config.playsinline,\n // hash has to be added to iframe-URL\n ...hashParam,\n ...frameParams,\n });\n\n const id = parseId(source);\n // Build an iframe\n const iframe = createElement('iframe');\n const src = format(player.config.urls.vimeo.iframe, id, params);\n iframe.setAttribute('src', src);\n iframe.setAttribute('allowfullscreen', '');\n iframe.setAttribute(\n 'allow',\n ['autoplay', 'fullscreen', 'picture-in-picture', 'encrypted-media', 'accelerometer', 'gyroscope'].join('; '),\n );\n\n // Set the referrer policy if required\n if (!is.empty(referrerPolicy)) {\n iframe.setAttribute('referrerPolicy', referrerPolicy);\n }\n\n // Inject the package\n if (premium || !config.customControls) {\n iframe.setAttribute('data-poster', player.poster);\n player.media = replaceElement(iframe, player.media);\n }\n else {\n const wrapper = createElement('div', {\n 'class': player.config.classNames.embedContainer,\n 'data-poster': player.poster,\n });\n wrapper.appendChild(iframe);\n player.media = replaceElement(wrapper, player.media);\n }\n\n // Get poster image\n if (!config.customControls) {\n fetch(format(player.config.urls.vimeo.api, src)).then((response) => {\n if (is.empty(response) || !response.thumbnail_url) {\n return;\n }\n\n // Set and show poster\n ui.setPoster.call(player, response.thumbnail_url).catch(() => {});\n });\n }\n\n // Setup instance\n // https://github.com/vimeo/player.js\n player.embed = new window.Vimeo.Player(iframe, {\n autopause: player.config.autopause,\n muted: player.muted,\n });\n\n player.media.paused = true;\n player.media.currentTime = 0;\n\n // Disable native text track rendering\n if (player.supported.ui) {\n player.embed.disableTextTrack();\n }\n\n // Create a faux HTML5 API using the Vimeo API\n player.media.play = () => {\n assurePlaybackState.call(player, true);\n return player.embed.play();\n };\n\n player.media.pause = () => {\n assurePlaybackState.call(player, false);\n return player.embed.pause();\n };\n\n player.media.stop = () => {\n player.pause();\n player.currentTime = 0;\n };\n\n // Seeking\n let { currentTime } = player.media;\n Object.defineProperty(player.media, 'currentTime', {\n get() {\n return currentTime;\n },\n set(time) {\n // Vimeo will automatically play on seek if the video hasn't been played before\n\n // Get current paused state and volume etc\n const { embed, media, paused, volume } = player;\n const restorePause = paused && !embed.hasPlayed;\n\n // Set seeking state and trigger event\n media.seeking = true;\n triggerEvent.call(player, media, 'seeking');\n\n // If paused, mute until seek is complete\n Promise.resolve(restorePause && embed.setVolume(0))\n // Seek\n .then(() => embed.setCurrentTime(time))\n // Restore paused\n .then(() => restorePause && embed.pause())\n // Restore volume\n .then(() => restorePause && embed.setVolume(volume))\n .catch(() => {\n // Do nothing\n });\n },\n });\n\n // Playback speed\n let speed = player.config.speed.selected;\n Object.defineProperty(player.media, 'playbackRate', {\n get() {\n return speed;\n },\n set(input) {\n player.embed\n .setPlaybackRate(input)\n .then(() => {\n speed = input;\n triggerEvent.call(player, player.media, 'ratechange');\n })\n .catch(() => {\n // Cannot set Playback Rate, Video is probably not on Pro account\n player.options.speed = [1];\n });\n },\n });\n\n // Volume\n let { volume } = player.config;\n Object.defineProperty(player.media, 'volume', {\n get() {\n return volume;\n },\n set(input) {\n player.embed.setVolume(input).then(() => {\n volume = input;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Muted\n let { muted } = player.config;\n Object.defineProperty(player.media, 'muted', {\n get() {\n return muted;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : false;\n\n player.embed.setMuted(toggle ? true : player.config.muted).then(() => {\n muted = toggle;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Loop\n let { loop } = player.config;\n Object.defineProperty(player.media, 'loop', {\n get() {\n return loop;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : player.config.loop.active;\n\n player.embed.setLoop(toggle).then(() => {\n loop = toggle;\n });\n },\n });\n\n // Source\n let currentSrc;\n player.embed\n .getVideoUrl()\n .then((value) => {\n currentSrc = value;\n controls.setDownloadUrl.call(player);\n })\n .catch((error) => {\n this.debug.warn(error);\n });\n\n Object.defineProperty(player.media, 'currentSrc', {\n get() {\n return currentSrc;\n },\n });\n\n // Ended\n Object.defineProperty(player.media, 'ended', {\n get() {\n return player.currentTime === player.duration;\n },\n });\n\n // Set aspect ratio based on video size\n Promise.all([player.embed.getVideoWidth(), player.embed.getVideoHeight()]).then((dimensions) => {\n const [width, height] = dimensions;\n player.embed.ratio = roundAspectRatio(width, height);\n setAspectRatio.call(this);\n });\n\n // Set autopause\n player.embed.setAutopause(player.config.autopause).then((state) => {\n player.config.autopause = state;\n });\n\n // Get title\n player.embed.getVideoTitle().then((title) => {\n player.config.title = title;\n ui.setTitle.call(this);\n });\n\n // Get current time\n player.embed.getCurrentTime().then((value) => {\n currentTime = value;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n // Get duration\n player.embed.getDuration().then((value) => {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n });\n\n // Get captions\n player.embed.getTextTracks().then((tracks) => {\n player.media.textTracks = tracks;\n captions.setup.call(player);\n });\n\n player.embed.on('cuechange', ({ cues = [] }) => {\n const strippedCues = cues.map(cue => stripHTML(cue.text));\n captions.updateCues.call(player, strippedCues);\n });\n\n player.embed.on('loaded', () => {\n // Assure state and events are updated on autoplay\n player.embed.getPaused().then((paused) => {\n assurePlaybackState.call(player, !paused);\n if (!paused) {\n triggerEvent.call(player, player.media, 'playing');\n }\n });\n\n if (is.element(player.embed.element) && player.supported.ui) {\n const frame = player.embed.element;\n\n // Fix keyboard focus issues\n // https://github.com/sampotts/plyr/issues/317\n frame.setAttribute('tabindex', -1);\n }\n });\n\n player.embed.on('bufferstart', () => {\n triggerEvent.call(player, player.media, 'waiting');\n });\n\n player.embed.on('bufferend', () => {\n triggerEvent.call(player, player.media, 'playing');\n });\n\n player.embed.on('play', () => {\n assurePlaybackState.call(player, true);\n triggerEvent.call(player, player.media, 'playing');\n });\n\n player.embed.on('pause', () => {\n assurePlaybackState.call(player, false);\n });\n\n player.embed.on('timeupdate', (data) => {\n player.media.seeking = false;\n currentTime = data.seconds;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n player.embed.on('progress', (data) => {\n player.media.buffered = data.percent;\n triggerEvent.call(player, player.media, 'progress');\n\n // Check all loaded\n if (Number.parseInt(data.percent, 10) === 1) {\n triggerEvent.call(player, player.media, 'canplaythrough');\n }\n\n // Get duration as if we do it before load, it gives an incorrect value\n // https://github.com/sampotts/plyr/issues/891\n player.embed.getDuration().then((value) => {\n if (value !== player.media.duration) {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n }\n });\n });\n\n player.embed.on('seeked', () => {\n player.media.seeking = false;\n triggerEvent.call(player, player.media, 'seeked');\n });\n\n player.embed.on('ended', () => {\n player.media.paused = true;\n triggerEvent.call(player, player.media, 'ended');\n });\n\n player.embed.on('error', (detail) => {\n player.media.error = detail;\n triggerEvent.call(player, player.media, 'error');\n });\n\n // Rebuild UI\n if (config.customControls) {\n setTimeout(() => ui.build.call(player), 0);\n }\n },\n};\n\nexport default vimeo;\n","// ==========================================================================\n// YouTube plugin\n// ==========================================================================\n\nimport ui from '../ui';\nimport { createElement, replaceElement, toggleClass } from '../utils/elements';\nimport { triggerEvent } from '../utils/events';\nimport fetch from '../utils/fetch';\nimport is from '../utils/is';\nimport loadImage from '../utils/load-image';\nimport loadScript from '../utils/load-script';\nimport { extend } from '../utils/objects';\nimport { format, generateId } from '../utils/strings';\nimport { roundAspectRatio, setAspectRatio } from '../utils/style';\n\n// Parse YouTube ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n const regex = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n const match = url.match(regex);\n return match && match[2] ? match[2] : url;\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nfunction getHost(config) {\n if (config.noCookie) {\n return 'https://www.youtube-nocookie.com';\n }\n\n if (window.location.protocol === 'http:') {\n return 'http://www.youtube.com';\n }\n\n // Use YouTube's default\n return undefined;\n}\n\nconst youtube = {\n setup() {\n // Add embed class for responsive\n toggleClass(this.elements.wrapper, this.config.classNames.embed, true);\n\n // Setup API\n if (is.object(window.YT) && is.function(window.YT.Player)) {\n youtube.ready.call(this);\n }\n else {\n // Reference current global callback\n const callback = window.onYouTubeIframeAPIReady;\n\n // Set callback to process queue\n window.onYouTubeIframeAPIReady = () => {\n // Call global callback if set\n if (is.function(callback)) {\n callback();\n }\n\n youtube.ready.call(this);\n };\n\n // Load the SDK\n loadScript(this.config.urls.youtube.sdk).catch((error) => {\n this.debug.warn('YouTube API failed to load', error);\n });\n }\n },\n\n // Get the media title\n getTitle(videoId) {\n const url = format(this.config.urls.youtube.api, videoId);\n\n fetch(url)\n .then((data) => {\n if (is.object(data)) {\n const { title, height, width } = data;\n\n // Set title\n this.config.title = title;\n ui.setTitle.call(this);\n\n // Set aspect ratio\n this.embed.ratio = roundAspectRatio(width, height);\n }\n\n setAspectRatio.call(this);\n })\n .catch(() => {\n // Set aspect ratio\n setAspectRatio.call(this);\n });\n },\n\n // API ready\n ready() {\n const player = this;\n const config = player.config.youtube;\n // Ignore already setup (race condition)\n const currentId = player.media && player.media.getAttribute('id');\n if (!is.empty(currentId) && currentId.startsWith('youtube-')) {\n return;\n }\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from
if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(this.config.attributes.embed.id);\n }\n\n // Replace the