{"version":3,"file":"440.4c9e8092d187e949e000.js","mappings":"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","sources":["webpack:///./node_modules/@openhpi/xikolo-video-player/dist/esm/xm-aspect-ratio-box_12.entry.js"],"sourcesContent":["import { r as registerInstance, h, g as getElement, c as createEvent } from './index-ca895dd4.js';\n\nconst aspectRatioBoxCss = \":host{display:block}.bx{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%}.bx>.ct{position:absolute;top:0;left:0;height:100%;width:100%}\";\nconst XmAspectRatioBoxStyle0 = aspectRatioBoxCss;\n\nconst AspectRatioBox = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.ratio = 0.5625;\n this.fullscreen = this.isVideoInFullscreen();\n }\n handleFullscreenChange() {\n this.fullscreen = this.isVideoInFullscreen();\n }\n render() {\n return (h(\"div\", { key: '853d4a74cea32c99d757b6db1881a2ee1d653ada', class: \"bx\", style: !this.fullscreen ? { 'padding-bottom': `${this.ratio * 100}%` } : {} }, h(\"div\", { key: 'adbd5628ec945da699657c1fc90e67147a84507f', class: \"ct\" }, h(\"slot\", { key: '988c7d6a4bd3553335cdd0eb49509334357953f4' }))));\n }\n isVideoInFullscreen() {\n const fullScreenElement = document.fullscreenElement || document.webkitFullscreenElement;\n if (fullScreenElement) {\n return true;\n }\n return false;\n }\n get el() { return getElement(this); }\n};\nAspectRatioBox.style = XmAspectRatioBoxStyle0;\n\nconst Play = `\n \n`;\nconst Pause = `\n \n`;\nconst Expand = `\n \n`;\nconst Compress = `\n \n`;\nconst VolumeOff = `\n \n`;\nconst VolumeOn = `\n\n`;\nconst Settings = `\n \n`;\nconst ArrowRight = `\n\n`;\nconst ArrowLeft = `\n\n`;\nconst Restart = `\n\n`;\nconst Subtitle = `\n\n`;\nconst Speed = `\n\n`;\nconst loading = `\n`;\n\nvar DE;\n(function (DE) {\n // labels\n DE[\"playbackRate\"] = \"Wiedergabegeschwindigkeit\";\n DE[\"textTrack\"] = \"Untertitel\";\n DE[\"textTrackDefault\"] = \"Aus\";\n // control button titles and aria-labels\n DE[\"play\"] = \"Wiedergabe\";\n DE[\"pause\"] = \"Pause\";\n DE[\"restart\"] = \"Nochmal\";\n DE[\"mute\"] = \"Stumm schalten\";\n DE[\"unmute\"] = \"Ton einschalten\";\n DE[\"settings\"] = \"Einstellungen\";\n DE[\"enterFullscreen\"] = \"Vollbildmodus \\u00F6ffnen\";\n DE[\"exitFullscreen\"] = \"Vollbildmodus beenden\";\n DE[\"enableSubtitles\"] = \"Untertitel einblenden\";\n DE[\"disableSubtitles\"] = \"Untertitel ausblenden\";\n DE[\"changeVolume\"] = \"Lautst\\u00E4rke \\u00E4ndern\";\n})(DE || (DE = {}));\nvar EN;\n(function (EN) {\n // labels\n EN[\"playbackRate\"] = \"Playback rate\";\n EN[\"textTrack\"] = \"Subtitles\";\n EN[\"textTrackDefault\"] = \"Off\";\n // control button titles and aria-labels\n EN[\"play\"] = \"Play\";\n EN[\"pause\"] = \"Pause\";\n EN[\"restart\"] = \"Restart\";\n EN[\"mute\"] = \"Mute\";\n EN[\"unmute\"] = \"Unmute\";\n EN[\"settings\"] = \"Settings\";\n EN[\"enterFullscreen\"] = \"Enter full screen\";\n EN[\"exitFullscreen\"] = \"Exit full screen\";\n EN[\"enableSubtitles\"] = \"Enable subtitles\";\n EN[\"disableSubtitles\"] = \"Disable subtitles\";\n EN[\"changeVolume\"] = \"Control volume\";\n})(EN || (EN = {}));\nconst locales = { de: DE, en: EN };\nfunction isKnownLocale(locale) {\n return Object.keys(locales).includes(locale);\n}\n\nvar SettingNames;\n(function (SettingNames) {\n SettingNames[\"PLAYBACKRATE\"] = \"playbackRate\";\n SettingNames[\"TEXTTRACK\"] = \"textTrack\";\n})(SettingNames || (SettingNames = {}));\nconst textTrackDefault = 'off';\nconst settingList = [\n {\n name: SettingNames.PLAYBACKRATE,\n label: locales.en.playbackRate,\n values: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2],\n currentValue: 1,\n },\n {\n name: SettingNames.TEXTTRACK,\n label: locales.en.textTrack,\n values: [textTrackDefault],\n valueLabels: [locales.en.textTrackDefault],\n currentValue: textTrackDefault,\n },\n];\nconst defaultSettingsSubmenuStatus = {\n isOpen: false,\n currentSetting: null,\n};\n\nvar Mode;\n(function (Mode) {\n Mode[Mode[\"PLAYING\"] = 0] = \"PLAYING\";\n Mode[Mode[\"PAUSED\"] = 1] = \"PAUSED\";\n Mode[Mode[\"BUFFERING\"] = 2] = \"BUFFERING\";\n Mode[Mode[\"FINISHED\"] = 3] = \"FINISHED\";\n})(Mode || (Mode = {}));\nconst defaultStatus = {\n language: 'en',\n duration: null,\n volume: 1.0,\n muted: false,\n fullscreen: false,\n mode: Mode.PAUSED,\n openedSettingsMenu: false,\n showPlaybackRate: false,\n progress: 0,\n subtitle: {\n enabled: false,\n language: null,\n activeCues: null,\n },\n settings: {\n playbackRate: 1,\n textTrack: textTrackDefault,\n },\n loading: true,\n};\n\n// left pad a number with zeros\nfunction lzpad(num, digits = 2) {\n const negative = num < 0;\n let buffer = Math.abs(num).toString();\n if (buffer.length < digits) {\n buffer = new Array(digits - buffer.length + 1).join('0').concat(buffer);\n }\n return (negative ? '-' : '') + buffer;\n}\n/**\n * Format a duration has HH:MM:SS.\n *\n * Negative durations are returned with a leading minus symbol. Formatting is\n * capped at hours e.g. a two day long duration is returned 48:00:00.\n *\n * @param {number} seconds Duration to format in seconds.\n */\nfunction format(seconds) {\n const negative = seconds < 0;\n const secs = Math.abs(Math.floor(seconds));\n const s = secs % 60;\n const m = Math.floor(secs / 60) % 60;\n const h = Math.floor(secs / 3600);\n return `${negative ? '-' : ''}${h > 0 ? `${lzpad(h)}:` : ''}${lzpad(m)}:${lzpad(s)}`;\n}\n\nconst Fullscreen = (props) => {\n if (props.status.fullscreen) {\n return (h(\"button\", { onClick: props.onExit, title: locales[props.status.language].exitFullscreen, \"aria-label\": locales[props.status.language].exitFullscreen },\n h(\"span\", { class: \"svg\", innerHTML: Compress })));\n }\n return (h(\"button\", { onClick: props.onRequest, title: locales[props.status.language].enterFullscreen, \"aria-label\": locales[props.status.language].enterFullscreen },\n h(\"span\", { class: \"svg\", innerHTML: Expand })));\n};\nconst Control = (props) => {\n if (props.status.mode === Mode.PLAYING) {\n return (h(\"button\", { onClick: props.onPause, title: locales[props.status.language].pause, \"aria-label\": locales[props.status.language].pause },\n h(\"span\", { class: \"svg\", innerHTML: Pause })));\n }\n if (props.status.mode === Mode.FINISHED) {\n return (h(\"button\", { onClick: props.onPlay, title: locales[props.status.language].restart, \"aria-label\": locales[props.status.language].restart },\n h(\"span\", { class: \"svg\", innerHTML: Restart })));\n }\n return (h(\"button\", { onClick: props.onPlay, title: locales[props.status.language].play, \"aria-label\": locales[props.status.language].play },\n h(\"span\", { class: \"svg\", innerHTML: Play })));\n};\nconst CurrentTime = (props) => {\n const { duration, progress } = props.status;\n return (h(\"span\", { class: \"controls__time\", title: `Time left of ${format(duration)}s` },\n format(progress),\n \" / \",\n format(duration)));\n};\nconst Volume = (props) => {\n const { muted, volume } = props.status;\n const fnSetVolume = (e) => {\n const el = e.target;\n props.onChangeVolume(parseFloat(el.value));\n };\n const volumeSlider = (h(\"input\", { class: \"controls__slider controls__slider--volume\", type: \"range\", min: \"0\", max: \"1\", step: \"0.1\", value: muted ? 0 : volume, onChange: fnSetVolume, onInput: fnSetVolume, \"aria-label\": locales[props.status.language].changeVolume }));\n if (muted) {\n return (h(\"div\", { class: \"controls-volume\" },\n h(\"button\", { class: \"controls__unmute\", onClick: props.onUnmute, title: locales[props.status.language].unmute, \"aria-label\": locales[props.status.language].unmute },\n h(\"span\", { class: \"svg\", innerHTML: VolumeOff })),\n volumeSlider));\n }\n return (h(\"div\", { class: \"controls-volume\" },\n h(\"button\", { class: \"controls__mute\", onClick: props.onMute, title: locales[props.status.language].mute, \"aria-label\": locales[props.status.language].mute },\n h(\"span\", { class: \"svg\", innerHTML: VolumeOn })),\n volumeSlider));\n};\nconst SettingsMenuToggleButton = (props) => {\n if (props.status.openedSettingsMenu) {\n return (h(\"button\", { onClick: props.onCloseSettingsMenu, title: locales[props.status.language].settings, \"aria-label\": locales[props.status.language].settings, \"aria-haspopup\": \"true\" },\n h(\"span\", { class: \"controls__settings-icon controls__settings-icon--open svg\", innerHTML: Settings })));\n }\n return (h(\"button\", { onClick: props.onOpenSettingsMenu, title: locales[props.status.language].settings, \"aria-label\": locales[props.status.language].settings, \"aria-haspopup\": \"true\" },\n h(\"span\", { class: \"controls__settings-icon svg\", innerHTML: Settings })));\n};\nconst SubtitleButton = (props) => {\n if (!props.visible)\n return;\n if (props.status.subtitle.enabled) {\n return (h(\"button\", { class: \"controls__button\", onClick: props.onDisable, title: locales[props.status.language].disableSubtitles, \"aria-label\": locales[props.status.language].disableSubtitles },\n h(\"span\", { class: \"controls__button-icon controls__button-icon--active svg\", innerHTML: Subtitle })));\n }\n return (h(\"button\", { class: \"controls__button\", onClick: props.onEnable, title: locales[props.status.language].enableSubtitles, \"aria-label\": locales[props.status.language].enableSubtitles },\n h(\"span\", { class: \"controls__button-icon svg\", innerHTML: Subtitle })));\n};\nconst Subtitles = (props) => {\n const { enabled, activeCues } = props.status.subtitle;\n if (enabled && activeCues && activeCues.length) {\n return (h(\"div\", { class: \"controls__subtitle\" }, activeCues.map((cue) => (h(\"span\", { class: \"controls__subtitle-row\", dir: \"auto\" }, cue.text)))));\n }\n};\nconst CustomControlButton = (props) => (h(\"button\", { class: \"controls__button\", onClick: () => props.onClick(props.config), title: props.config.title },\n h(\"span\", { class: `controls__button-icon ${props.config.active ? 'controls__button-icon--active' : ''} svg` },\n h(\"slot\", { name: props.config.name }))));\n\n/**\n * https://github.com/NoHomey/bind-decorator/blob/master/src/index.ts\n */\nfunction bind() {\n return function (target, property, descriptor) {\n return {\n configurable: true,\n get() {\n const bound = descriptor.value.bind(this);\n Object.defineProperty(this, property, {\n value: bound,\n configurable: true,\n writable: true,\n });\n return bound;\n },\n };\n };\n}\n\nconst PlaybackRateToggleButton = (props) => {\n if (props.status.showPlaybackRate) {\n return (h(\"button\", { onClick: props.onHide, title: locales[props.status.language].playbackRate, \"aria-label\": locales[props.status.language].playbackRate },\n h(\"span\", { class: \"controls__button-icon controls__button-icon--active svg\", innerHTML: Speed })));\n }\n return (h(\"button\", { onClick: props.onShow, title: locales[props.status.language].playbackRate, \"aria-label\": locales[props.status.language].playbackRate },\n h(\"span\", { class: \"controls__button-icon svg\", innerHTML: Speed })));\n};\nconst PlaybackRate = (props) => {\n const playbackRateSetting = settingList.find((setting) => setting.name === SettingNames.PLAYBACKRATE);\n playbackRateSetting.currentValue =\n props.status.settings[SettingNames.PLAYBACKRATE];\n return (h(\"div\", { class: props.status.showPlaybackRate\n ? 'controls__playback-rate__menu controls__playback-rate__menu--open'\n : 'controls__playback-rate__menu' }, playbackRateSetting.values.map((value) => (h(\"button\", { class: value === playbackRateSetting.currentValue\n ? 'controls__playback-rate__button controls__playback-rate__button--current'\n : 'controls__playback-rate__button', onClick: () => props.onChange(value), innerHTML: value })))));\n};\n\nconst controlsCss = \"@charset \\\"UTF-8\\\";.controls{background-color:\\\"#353535\\\";background-color:var(--vp-gutter-color);display:-ms-flexbox;display:flex;-ms-flex:1 0 auto;flex:1 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap}@media only screen and (min-width: 992px){.controls--fullscreen-mode .controls__subtitle-row{font-size:2.5em}.controls--fullscreen-mode .controls__toolbar .controls__playback-rate__menu{margin-bottom:-3px;bottom:60px}.controls--fullscreen-mode .controls__toolbar .controls__playback-rate__button{font-size:1em}.controls--fullscreen-mode .controls__toolbar .controls__time{font-size:1.2em}.controls--fullscreen-mode .controls__toolbar svg,.controls--fullscreen-mode .controls__toolbar .svg{height:2em;width:2em}}@media only screen and (min-width: 376px){.controls .controls__toolbar button{padding:0.6em 0.7em}}@media only screen and (min-width: 992px){.controls .controls__toolbar .controls__slider--volume{display:none}}@media only screen and (max-width: 580px){.controls .controls__subtitle{bottom:40px}.controls .controls__subtitle-row{font-size:1.3em;line-height:1em;padding:5px}.controls .controls__toolbar .controls__slider--volume{display:none}.controls .controls__toolbar .controls__time{padding:inherit}}@media only screen and (max-width: 590px){.controls .controls__toolbar .controls__time{font-size:0.75em}}.controls__playback-rate{position:relative}.controls__playback-rate__menu{position:absolute;z-index:3;margin-bottom:-1px;bottom:50px;right:50%;-webkit-transform:translateX(50%);transform:translateX(50%);background:var(--vp-menu-color);font-size:0.9em;line-height:0.9em;padding:0.2em;visibility:hidden;opacity:0;-webkit-transition:visibility 0.3s linear, opacity 0.3s linear;transition:visibility 0.3s linear, opacity 0.3s linear}.controls__playback-rate__menu--open{visibility:visible;opacity:1}.controls__playback-rate__button{font-size:0.9em;line-height:0.9em;width:40px;-webkit-box-sizing:content-box;box-sizing:content-box;text-align:left;position:relative;text-indent:1em}.controls__playback-rate__button:hover{background:rgba(255, 255, 255, 0.2)}.controls__playback-rate__button--current{font-weight:600}.controls__playback-rate__button--current:before{content:\\\"•\\\";color:var(--vp-main-color);position:absolute;left:-0.1em}.controls__subtitle{position:absolute;left:0px;right:0px;z-index:3;bottom:60px;-ms-flex-item-align:center;align-self:center;text-align:center;max-width:90%;margin:auto}.controls__subtitle-row{background:rgba(50, 50, 50, 0.7);padding:10px;margin:0.2em;border-radius:10px;display:inline-block;white-space:pre-wrap;font-size:1.5em;line-height:1.3em}.controls__slider{-ms-flex:1 1 100%;flex:1 1 100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;overflow:hidden;height:0.5em;height:var(--vp-control-slider-height);background:transparent;color:orange;color:var(--vp-slider-color);margin:0;border-top:1px solid black;border-top-color:var(--vp-bg-color);border-bottom:1px solid black;border-bottom-color:var(--vp-bg-color);cursor:pointer}.controls__slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;-webkit-box-shadow:-100vw 0 0 100vw currentColor;box-shadow:-100vw 0 0 100vw currentColor;width:1px;height:var(--vp-control-slider-height)}.controls__slider::-moz-range-thumb{-moz-appearance:none;appearance:none;box-shadow:-100vw 0 0 100vw currentColor;width:0;border:0}.controls__slider::-ms-thumb{appearance:none;box-shadow:-100vw 0 0 100vw orange;width:0;border:0}.controls__slider::-ms-fill-upper{background:#353535}.controls__slider::-ms-track{color:#353535}@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none){.controls__slider{height:inherit;padding:0px}}.controls__slider--volume{border:1px solid black}.controls__slider--volume:focus{border:1px solid white;border-color:var(--vp-main-color)}.controls__toolbar{margin:1px;color:inherit;display:-ms-flexbox;display:flex;-ms-flex:1 1 100%;flex:1 1 100%;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-align:center;align-items:center}.controls__toolbar .controls-volume{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-align:center;align-items:center}@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none){.controls__toolbar .controls-volume{-ms-flex:1 1 0%;flex:1 1 0%}}@media only screen and (min-width: 376px){.controls__toolbar .controls-volume:hover .controls__slider--volume{display:block}}.controls__toolbar .controls__time{-ms-flex-positive:1;flex-grow:1;font-size:0.9em;padding:0.6em 0.7em}.controls__toolbar .controls__settings-icon{display:block;overflow:hidden;-webkit-transition-duration:0.4s;transition-duration:0.4s;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform, -webkit-transform}.controls__toolbar .controls__settings-icon--open,.controls__toolbar .controls__settings-icon:hover{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.controls__toolbar .controls__button-icon{display:block;overflow:hidden;-webkit-transition:-webkit-box-shadow 0.3s ease-in-out;transition:-webkit-box-shadow 0.3s ease-in-out;transition:box-shadow 0.3s ease-in-out;transition:box-shadow 0.3s ease-in-out, -webkit-box-shadow 0.3s ease-in-out}.controls__toolbar .controls__button-icon--active,.controls__toolbar .controls__button-icon:hover{-webkit-box-shadow:0px 2px 1px -1px rgba(231, 166, 26, 0.72);box-shadow:0px 2px 1px -1px rgba(231, 166, 26, 0.72)}.controls__toolbar button{border:0;padding:0.6em 0.5em;margin:0;background:transparent;color:inherit;cursor:pointer}.controls__toolbar button:hover .controls__settings-icon{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.controls__toolbar button:hover .controls__subtitle-icon{-webkit-box-shadow:0px 2px 1px -1px rgba(231, 166, 26, 0.72);box-shadow:0px 2px 1px -1px rgba(231, 166, 26, 0.72)}.controls__toolbar svg,.controls__toolbar .svg{display:block;height:1.5em;width:1.5em;fill:currentColor;color:inherit}\";\nconst XmControlsStyle0 = controlsCss;\n\nvar __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst Controls = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.playEvent = createEvent(this, \"control:play\", 7);\n this.pauseEvent = createEvent(this, \"control:pause\", 7);\n this.enterFullscreenEvent = createEvent(this, \"control:enterFullscreen\", 7);\n this.exitFullscreenEvent = createEvent(this, \"control:exitFullscreen\", 7);\n this.muteEvent = createEvent(this, \"control:mute\", 7);\n this.unmuteEvent = createEvent(this, \"control:unmute\", 7);\n this.changeVolumeEvent = createEvent(this, \"control:changeVolume\", 7);\n this.enableTextTrackEvent = createEvent(this, \"control:enableTextTrack\", 7);\n this.disableTextTrackEvent = createEvent(this, \"control:disableTextTrack\", 7);\n this.openSettingsMenuEvent = createEvent(this, \"control:openSettingsMenu\", 7);\n this.closeSettingsMenuEvent = createEvent(this, \"control:closeSettingsMenu\", 7);\n this.changePlaybackRateEvent = createEvent(this, \"control:changePlaybackRate\", 7);\n this.showPlaybackRateEvent = createEvent(this, \"control:showPlaybackRate\", 7);\n this.hidePlaybackRateEvent = createEvent(this, \"control:hidePlaybackRate\", 7);\n this.changeToggleControlActiveStateEvent = createEvent(this, \"control:changeToggleControlActiveState\", 7);\n this.status = undefined;\n this.textTracks = undefined;\n this.slidesSrc = undefined;\n this.toggleControlButtons = undefined;\n }\n hideMenus(e) {\n this.closeSettingsMenu(e);\n this.hidePlaybackRate(e);\n }\n render() {\n return (h(\"div\", { key: '235baa41c66c38bf6c86dffe89651308f55b63d5', class: this.status.fullscreen\n ? 'controls controls--fullscreen-mode'\n : 'controls' }, h(Subtitles, { key: 'a6005ecd6db88326566abc203dbd97ff32473ac5', status: this.status }), h(\"xm-settings-menu\", { key: '230d5e7c545dd594c78b37f2ce1c25759f24cf3e', status: this.status, textTracks: this.textTracks }), h(\"xm-slider\", { key: '81b292b94fba72c16687d7d0dcd86296f8040aba', duration: this.status.duration, progress: this.status.progress, slidesSrc: this.slidesSrc }), h(\"div\", { key: 'd20773aa6e919fa4df0f92a16bda16ae6423ba20', class: \"controls__toolbar\", \"data-test-id\": \"controlsToolbar\" }, h(Control, { key: '10fd5bf24b7366281fb29710b0884263c3e8099a', status: this.status, onPause: this.pause, onPlay: this.play }), h(Volume, { key: '27999562c6316cb22379a1ffd43cab42ebb6c52b', status: this.status, onMute: this.mute, onUnmute: this.unmute, onChangeVolume: this.setVolume }), h(CurrentTime, { key: '20c1af82f7c1f1005a088e951a03a303aa1ff490', status: this.status }), h(\"div\", { key: 'c3cc27367bb4220086cc1c3f2030bb9fe4d5bebf', class: \"controls__playback-rate\" }, h(PlaybackRate, { key: 'ed0db6d32a2c13c1832805636e354832abff3b84', status: this.status, onChange: this.setPlaybackRate }), h(PlaybackRateToggleButton, { key: '7b90c98c439c15e3f1d84aa402203145e486b4c6', status: this.status, onShow: this.showPlaybackRate, onHide: this.hidePlaybackRate })), this.toggleControlButtons &&\n this.toggleControlButtons.map((button) => (h(CustomControlButton, { config: button, onClick: this.changeToggleControlActiveState }))), h(SubtitleButton, { key: '9f8dfef147acba39a5d4811b29afebdb6543fef7', status: this.status, visible: !!this.status.subtitle.language, onEnable: this.enableTextTrack, onDisable: this.disableTextTrack }), h(SettingsMenuToggleButton, { key: '00caab7b33c17d098c5e6f6985d60bd90f073a21', status: this.status, onOpenSettingsMenu: this.openSettingsMenu, onCloseSettingsMenu: this.closeSettingsMenu, \"data-test-id\": \"settingsMenuToggleButton\" }), h(Fullscreen, { key: 'c06a44b0995cdd4e5b4d6840336b8d5e35a27e67', status: this.status, onRequest: this.enterFullscreen, onExit: this.exitFullscreen }))));\n }\n play() {\n this.playEvent.emit();\n }\n pause() {\n this.pauseEvent.emit();\n }\n enterFullscreen() {\n this.enterFullscreenEvent.emit();\n }\n exitFullscreen() {\n this.exitFullscreenEvent.emit();\n }\n mute() {\n this.muteEvent.emit();\n }\n unmute() {\n this.unmuteEvent.emit();\n }\n setVolume(volume) {\n this.changeVolumeEvent.emit({ volume });\n }\n openSettingsMenu(e) {\n e.stopPropagation();\n this.hidePlaybackRateEvent.emit();\n this.openSettingsMenuEvent.emit();\n }\n closeSettingsMenu(e) {\n e.stopPropagation();\n this.closeSettingsMenuEvent.emit();\n }\n enableTextTrack() {\n this.enableTextTrackEvent.emit();\n }\n disableTextTrack() {\n this.disableTextTrackEvent.emit();\n }\n setPlaybackRate(playbackRate) {\n this.changePlaybackRateEvent.emit({ playbackRate });\n this.hidePlaybackRateEvent.emit();\n }\n showPlaybackRate(e) {\n e.stopPropagation();\n this.closeSettingsMenuEvent.emit();\n this.showPlaybackRateEvent.emit();\n }\n hidePlaybackRate(e) {\n e.stopPropagation();\n this.hidePlaybackRateEvent.emit();\n }\n changeToggleControlActiveState(button) {\n button.active = !button.active;\n this.changeToggleControlActiveStateEvent.emit(button);\n }\n get el() { return getElement(this); }\n};\n__decorate$5([\n bind()\n], Controls.prototype, \"play\", null);\n__decorate$5([\n bind()\n], Controls.prototype, \"pause\", null);\n__decorate$5([\n bind()\n], Controls.prototype, \"enterFullscreen\", null);\n__decorate$5([\n bind()\n], Controls.prototype, \"exitFullscreen\", null);\n__decorate$5([\n bind()\n], Controls.prototype, \"mute\", null);\n__decorate$5([\n bind()\n], Controls.prototype, \"unmute\", null);\n__decorate$5([\n bind()\n], Controls.prototype, \"setVolume\", null);\n__decorate$5([\n bind()\n], Controls.prototype, \"openSettingsMenu\", null);\n__decorate$5([\n bind()\n], Controls.prototype, \"closeSettingsMenu\", null);\n__decorate$5([\n bind()\n], Controls.prototype, \"enableTextTrack\", null);\n__decorate$5([\n bind()\n], Controls.prototype, \"disableTextTrack\", null);\n__decorate$5([\n bind()\n], Controls.prototype, \"setPlaybackRate\", null);\n__decorate$5([\n bind()\n], Controls.prototype, \"showPlaybackRate\", null);\n__decorate$5([\n bind()\n], Controls.prototype, \"hidePlaybackRate\", null);\n__decorate$5([\n bind()\n], Controls.prototype, \"changeToggleControlActiveState\", null);\nControls.style = XmControlsStyle0;\n\nconst kalturaCss = \"xm-kaltura,xm-aspect-ratio-box{height:100%}\";\nconst XmKalturaStyle0 = kalturaCss;\n\nconst Kaltura = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.timeUpdateEvent = createEvent(this, \"timeupdate\", 7);\n this.ratioLoadedEvent = createEvent(this, \"ratioLoaded\", 7);\n this.endedEvent = createEvent(this, \"ended\", 7);\n this.playEvent = createEvent(this, \"play\", 7);\n this.pauseEvent = createEvent(this, \"pause\", 7);\n this.seekedEvent = createEvent(this, \"seeked\", 7);\n this.bufferingEvent = createEvent(this, \"buffering\", 7);\n this.bufferedEvent = createEvent(this, \"buffered\", 7);\n this.callbacks = [];\n this.active = false;\n this.ratio = undefined;\n this.duration = undefined;\n this.entryId = undefined;\n this.partnerId = undefined;\n this.poster = undefined;\n this.volume = undefined;\n }\n async volumeChanged(volume) {\n if (this.playerAvailable()) {\n return (this.player.volume = volume);\n }\n else {\n this.addToCallBacks(() => (this.player.volume = volume));\n }\n }\n async componentDidLoad() {\n if (!this.active)\n return;\n const { Core, Provider } = await import('./kaltura-module-6fac6476.js');\n // See https://github.com/kaltura/playkit-js-providers\n const provider = await new Provider.Provider({\n partnerId: this.partnerId,\n });\n const mediaInfo = await provider.getMediaConfig({ entryId: this.entryId });\n // Add poster to sources\n mediaInfo.sources.poster = this.poster;\n // See https://github.com/kaltura/playkit-js\n this.player = await Core.loadPlayer();\n this.player.setSources(mediaInfo.sources);\n this.playerContainer.appendChild(this.player.getView());\n this.timeUpdateEvent.emit({\n duration: this.duration,\n seconds: 0,\n });\n this.ratioLoadedEvent.emit({\n name: this.el.getAttribute('slot'),\n ratio: this.ratio,\n });\n this.player.addEventListener('waiting', () => {\n this.bufferingEvent.emit();\n });\n this.player.addEventListener('playing', () => {\n this.bufferedEvent.emit();\n });\n this.player.addEventListener('timeupdate', () => {\n this.timeUpdateEvent.emit({\n duration: this.duration,\n seconds: this.player.currentTime,\n });\n });\n this.player.addEventListener('ended', (e) => {\n this.endedEvent.emit(e);\n });\n /**\n * Emit events to tack via lanalytics\n */\n this.player.addEventListener('play', (e) => this.playEvent.emit(e));\n this.player.addEventListener('pause', (e) => this.pauseEvent.emit(e));\n this.player.addEventListener('seeked', (e) => this.seekedEvent.emit(e));\n // Call all functions collected before the player was ready\n this.applyCallbacks();\n }\n disconnectedCallback() {\n this.player.destroy();\n }\n /**\n * Call getCurrentTime on the Kaltura player\n *\n * If the player is not initialized, it will save the function\n * so it can be applied once the player is ready.\n */\n async currentTime() {\n if (this.playerAvailable()) {\n return this.player.currentTime;\n }\n else {\n this.addToCallBacks(() => this.player.currentTime);\n }\n }\n /**\n * Call pause on the Kaltura player\n *\n * If the player is not initialized, it will save the function\n * so it can be applied once the player is ready.\n */\n async pause() {\n if (this.playerAvailable()) {\n this.player.pause();\n }\n else {\n this.addToCallBacks(() => this.player.pause());\n }\n }\n /**\n * Call play on the Kaltura player\n *\n * If the player is not initialized, it will save the function\n * so it can be applied once the player is ready.\n */\n async play() {\n if (this.playerAvailable()) {\n this.player.play();\n }\n else {\n this.addToCallBacks(() => this.player.play());\n }\n }\n /**\n * Call seek on the Kaltura player\n *\n * If the player is not initialized, it will save the function\n * so it can be applied once the player is ready.\n */\n async seek(seconds) {\n if (this.playerAvailable()) {\n return (this.player.currentTime = seconds);\n }\n else {\n this.addToCallBacks(() => (this.player.currentTime = seconds));\n }\n }\n /**\n * Call setPlaybackRate on the Kaltura player\n *\n * If the player is not initialized, it will save the function\n * so it can be applied once the player is ready.\n */\n async setPlaybackRate(playbackRate) {\n if (this.playerAvailable()) {\n return (this.player.playbackRate = playbackRate);\n }\n else {\n this.addToCallBacks(() => (this.player.playbackRate = playbackRate));\n }\n }\n playerAvailable() {\n return this.player != null;\n }\n addToCallBacks(fn) {\n this.callbacks.push(fn);\n }\n /**\n * Calls all functions in the callback array\n * Empties the queue after that\n */\n applyCallbacks() {\n this.callbacks.forEach((fn) => {\n fn();\n });\n this.callbacks = [];\n }\n render() {\n if (!this.active)\n return;\n return (h(\"xm-aspect-ratio-box\", { ref: (e) => (this.playerContainer = e), ratio: this.ratio }));\n }\n get el() { return getElement(this); }\n static get watchers() { return {\n \"volume\": [\"volumeChanged\"]\n }; }\n};\nKaltura.style = XmKalturaStyle0;\n\nclass TextTrackList {\n constructor() {\n this.vttList = [];\n this.textTracks = [];\n // List of cues of currently selected language.\n this.currentCues = null;\n this.loadedFiles = 0;\n this.totalFiles = 0;\n }\n addWebVTT(webVTT, total) {\n // Inserts the new webVTT file at the HTML index position (presort).\n this.vttList.splice(webVTT.index, 0, webVTT);\n this.textTracks.splice(webVTT.index, 0, webVTT.meta);\n this.loadedFiles++;\n this.totalFiles = total;\n this.sortAndInitLists();\n }\n increaseLoadedFiles() {\n this.loadedFiles++;\n if (this.totalFiles > 0)\n this.sortAndInitLists();\n }\n sortAndInitLists() {\n // Sort list after all files are loaded\n if (this.loadedFiles === this.totalFiles) {\n this.textTracks = [];\n this.vttList.sort(this.compareWebVTTList);\n this.vttList.forEach((webVTT) => this.textTracks.push(webVTT.meta));\n }\n }\n setCurrentCuesByLanguage(language) {\n if (this.currentLanguage !== language) {\n const webVTT = this.vttList.find((vtt) => vtt.meta.language === language);\n if (webVTT && webVTT.cues) {\n this.currentLanguage = language;\n this.currentCues = webVTT.cues;\n return;\n }\n this.currentCues = null;\n }\n }\n getActiveCues(seconds) {\n if (this.currentCues === null)\n return null;\n const cues = this.currentCues.filter((cue) => cue.start <= seconds && cue.end >= seconds);\n return cues.length ? cues : null;\n }\n getCurrentCues() {\n return this.currentCues;\n }\n getTextTracks() {\n return this.textTracks.length ? this.textTracks : null;\n }\n getTextTrackValues() {\n return [textTrackDefault].concat(this.textTracks.map((meta) => meta.language));\n }\n getTextTrackLabels(language) {\n return [locales[language].textTrackDefault].concat(this.textTracks.map((meta) => meta.label));\n }\n compareCueLists(a, b) {\n if (a === null && b === null)\n return true;\n if (a === null ||\n b === null ||\n a.length !== b.length ||\n a[0].identifier !== b[0].identifier) {\n return false;\n }\n return true;\n }\n compareWebVTTList(a, b) {\n return a.index > b.index ? 1 : -1;\n }\n}\n\n/*\n Breakpoint test to check if device is small\n */\nconst isSmall = window.matchMedia('only screen and (max-width: 376px)').matches;\nconst fixDecimalPrecision = (number) => {\n return parseFloat(number.toFixed(1));\n};\nconst isInteractiveElement = (target) => {\n var _a;\n const intElems = ['A', 'BUTTON'];\n if (intElems.includes(target.tagName)) {\n return true;\n }\n if ((_a = target.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement) {\n return isInteractiveElement(target.shadowRoot.activeElement);\n }\n return false;\n};\nconst hasDefaultScrollingBehavior = (key, target) => {\n return ((key === ' ' && !isInteractiveElement(target)) ||\n key === 'ArrowUp' ||\n key === 'ArrowDown');\n};\nconst getPresentationNodes = (el) => el.querySelectorAll('xm-presentation');\nconst getVideoElement = (el, selector) => el.querySelector(selector);\n/**\n * Request fullscreen on the element.\n * Takes vendor prefixes into account to support all browsers.\n */\nconst requestFullscreen = (element) => {\n const requestMethod = element.requestFullscreen || element.webkitRequestFullscreen;\n return requestMethod === null || requestMethod === void 0 ? void 0 : requestMethod.call(element);\n};\n/**\n * Exits fullscreen on the document.\n * Takes vendor prefixes into account to support all browsers.\n */\nconst exitFullscreen = () => {\n const requestMethod = document.exitFullscreen || document.webkitExitFullscreen;\n return requestMethod === null || requestMethod === void 0 ? void 0 : requestMethod.call(document);\n};\n\nconst Loading = ({ status: { loading: loading$1, fullscreen }, }) => {\n return (loading$1 && (h(\"div\", { class: fullscreen ? 'loading loading--fullscreen-mode' : 'loading' },\n h(\"span\", { class: \"loading__spinner\", innerHTML: loading }))));\n};\n\nconst playerCss = \":host{display:block;color:white;color:var(--vp-main-color);background:rgba(0, 0, 0, 0.75);background:rgba(var(--vp-bg-color-rgb), 0.75);border:1px solid black;border-color:var(--vp-bg-color);font-family:\\\"Helvetica Neue\\\", -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", \\\"Roboto\\\", \\\"Ubuntu\\\", \\\"Cantarell\\\", Helvetica, Arial, sans-serif}.player{display:-ms-flexbox;display:flex;-ms-flex:1 0 auto;flex:1 0 auto;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-direction:column;flex-direction:column;position:relative;width:100%;height:100%}.player xm-screen{-ms-flex-positive:1;flex-grow:1}.player xm-screen ::slotted(*){height:100%}:host{--vp-slider-color:var(--vps-slider-color, orange);--vp-gutter-color:var(--vps-gutter-color, #353535);--vp-gutter-width:40px;--vp-main-color:var(--vps-main-color, white);--vp-bg-color:var(--vps-bg-color, black);--vp-bg-color-rgb:var(--vps-bg-color-rgb, 0, 0, 0);--vp-menu-color:var(--vps-menu-color, #323232);--vp-control-slider-height:var(--vps-control-slider-height, 0.5em)}.loading{-webkit-animation:0s linear 750ms forwards delayedShow;animation:0s linear 750ms forwards delayedShow;visibility:hidden;position:absolute;inset:0;margin-bottom:46px;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;width:100%;background-color:rgba(0, 0, 0, 0.5);z-index:2}.loading--fullscreen-mode{margin-bottom:55px}.loading__spinner{fill:currentColor;position:relative;width:70px;height:70px;-webkit-animation:spinner 1.3s linear infinite;animation:spinner 1.3s linear infinite}@-webkit-keyframes spinner{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes delayedShow{to{visibility:visible}}@keyframes delayedShow{to{visibility:visible}}\";\nconst XmPlayerStyle0 = playerCss;\n\nvar __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst Player = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.cueListChangeEvent = createEvent(this, \"notifyCueListChanged\", 7);\n this.activeCueUpdateEvent = createEvent(this, \"notifyActiveCuesUpdated\", 7);\n /**\n * Used on key control to skip the video forwards and backwards\n */\n this.skippedSeconds = 5;\n /**\n * List of keyboard keys the player listens to on the 'keydown` event\n */\n this.shortcutKeys = {\n Space: ' ',\n Enter: 'Enter',\n ArrowUp: 'ArrowUp',\n ArrowDown: 'ArrowDown',\n ArrowLeft: 'ArrowLeft',\n ArrowRight: 'ArrowRight',\n f: 'f',\n m: 'm',\n };\n this.textTracks = new TextTrackList();\n this.hasDefaultTexttrack = false;\n this.presentations = {};\n this.timeUpdate = async (e) => {\n const { seconds, duration } = e.detail;\n this.cueUpdate(seconds);\n this.status = Object.assign(Object.assign({}, this.status), { duration, progress: seconds });\n if (this.secondary) {\n const currentTime = await this.secondary.currentTime();\n const skew = Math.abs(currentTime - seconds);\n if (skew > 1.0) {\n this.secondary.seek(seconds);\n }\n }\n };\n this.cueUpdate = (seconds, refresh) => {\n const { activeCues } = this.status.subtitle;\n const cues = this.textTracks.getActiveCues(seconds);\n if (cues &&\n (refresh || !this.textTracks.compareCueLists(cues, activeCues))) {\n this.status = Object.assign(Object.assign({}, this.status), { subtitle: Object.assign(Object.assign({}, this.status.subtitle), { activeCues: cues }) });\n this.activeCueUpdateEvent.emit({ cues });\n }\n };\n this.setLanguage = (language) => {\n var _a, _b;\n const candidates = [\n language,\n navigator && navigator.language,\n ];\n const closestLang = (_b = (_a = this.el\n .closest('[lang]')) === null || _a === void 0 ? void 0 : _a.getAttribute('lang')) === null || _b === void 0 ? void 0 : _b.slice(0, 2);\n if (closestLang) {\n candidates.push(closestLang);\n }\n const chosen = candidates.find(isKnownLocale);\n this.status = Object.assign(Object.assign({}, this.status), { language: chosen || defaultStatus.language });\n };\n /**\n * Depending on the currently active presentation,\n * this will determine which video sources to render\n *\n * Both slot and name attributes are needed to\n * pass through slots from consumers to subcomponents to cross the Shadow-DOM boundary\n *\n */\n this.renderVideoContent = () => {\n const activePresentation = this.presentations[this.activePresentationMode];\n const refs = activePresentation.refs;\n if (refs.length === 2) {\n this.renderVideoByRef(refs[0], 'primary');\n this.renderVideoByRef(refs[1], 'secondary');\n return (h(\"xm-screen\", { fullscreen: this.status.fullscreen, primaryRatio: this.primaryRatio, secondaryRatio: this.secondaryRatio }, h(\"slot\", { slot: \"primary\", name: \"primary\" }), h(\"slot\", { slot: \"secondary\", name: \"secondary\" })));\n }\n else {\n this.renderVideoByRef(refs[0], 'primary');\n return h(\"slot\", { slot: \"primary\", name: \"primary\" });\n }\n };\n this.renderVideoByRef = (ref, slot) => {\n const video = this.el.querySelector(`[name='${ref}']`);\n video.setAttribute('slot', slot);\n video.setAttribute('active', 'true');\n video.ondblclick = this.toggleFullscreen;\n };\n this.renderControls = () => {\n return (h(\"xm-controls\", { status: this.status, textTracks: this.textTracks, toggleControlButtons: this.toggleControlButtons, slidesSrc: this.slidesSrc }, this.toggleControlButtons &&\n this.toggleControlButtons.map((button) => (\n // Pass through slots from consumers to subcomponents to cross the Shadow-DOM boundary\n h(\"slot\", { slot: button.name, name: button.name })))));\n };\n this.volume = defaultStatus.volume;\n this.playbackrate = defaultStatus.settings.playbackRate;\n this.showsubtitle = defaultStatus.subtitle.enabled;\n this.lang = undefined;\n this.slidesSrc = undefined;\n this.status = defaultStatus;\n this.toggleControlButtons = undefined;\n this.activePresentationMode = undefined;\n }\n componentWillLoad() {\n const presentationNodes = getPresentationNodes(this.el);\n presentationNodes.forEach((presentation) => {\n const references = presentation.reference.split(',');\n const content = { refs: references, label: presentation.label };\n Object.defineProperty(this.presentations, presentation.name, {\n value: content,\n });\n });\n this.activePresentationMode = Object.getOwnPropertyNames(this.presentations)[0];\n }\n componentDidLoad() {\n this.primary = getVideoElement(this.el, '[slot=primary]');\n this.secondary = getVideoElement(this.el, '[slot=secondary]');\n this.primary.addEventListener('click', this._click);\n this.primary.addEventListener('timeupdate', this.timeUpdate);\n this.primary.addEventListener('ended', this._ended);\n if (this.secondary) {\n this.secondary.addEventListener('click', this._click);\n this.secondary.volume = 0;\n }\n document.addEventListener('fullscreenchange', this._fullscreenchange);\n document.addEventListener('webkitfullscreenchange', this._fullscreenchange);\n // On small devices the volume slider is hidden\n // So the user can only change it via the device buttons\n // That's why the player's initial state for 'volume' will remain the default 100%\n if (!isSmall) {\n this._setVolume(this.volume);\n }\n this._setPlaybackRate(this.playbackrate);\n this.setLanguage(this.lang);\n this.status = Object.assign(Object.assign({}, this.status), { loading: false });\n }\n disconnectedCallback() {\n this.primary.removeEventListener('click', this._click);\n this.primary.removeEventListener('timeupdate', this.timeUpdate);\n this.primary.removeEventListener('ended', this._ended);\n if (this.secondary)\n this.secondary.removeEventListener('click', this._click);\n document.removeEventListener('fullscreenchange', this._fullscreenchange);\n document.removeEventListener('webkitfullscreenchange', this._fullscreenchange);\n }\n render() {\n return (h(\"div\", { key: '645dde7928d34249e37248267959d622410a5f43', class: \"player\", tabindex: \"0\" }, h(Loading, { key: '8653c9992d376db799e25187e761b7da17ade59f', status: this.status }), this.renderVideoContent(), this.renderControls()));\n }\n /**\n * Call a method on all videos.\n *\n * Use this when you want to call on all videos being rendered, without having to check how many there are.\n * @param functionName\n * @param params\n */\n async _invokePlayerFunction(functionName, params) {\n if (!this.primary[functionName])\n return;\n return Promise.all([\n this.primary[functionName].apply(this.primary, params),\n this.secondary\n ? this.secondary[functionName].apply(this.secondary, params)\n : null,\n ]);\n }\n async _click() {\n if (!this.status.openedSettingsMenu && !this.status.showPlaybackRate) {\n switch (this.status.mode) {\n case Mode.PAUSED:\n case Mode.FINISHED:\n return this.play();\n default:\n return this.pause();\n }\n }\n }\n handleBufferStart() {\n this.status = Object.assign(Object.assign({}, this.status), { loading: true });\n }\n handleBufferEnd() {\n this.status = Object.assign(Object.assign({}, this.status), { loading: false });\n }\n _resizeScreen(e) {\n if (e.detail.name === 'primary') {\n this.primaryRatio = parseFloat(e.detail.ratio) * 100;\n }\n else {\n this.secondaryRatio = parseFloat(e.detail.ratio) * 100;\n }\n }\n _addToggleControlButton(e) {\n if (!e.detail)\n return;\n if (!this.toggleControlButtons)\n this.toggleControlButtons = new Array();\n this.toggleControlButtons.push(e.detail);\n }\n _changeToggleControlActiveState(e) {\n const newToggleControlProps = e.detail;\n this.toggleControlButtons = this.toggleControlButtons.map((toggleControl) => {\n // apply changed props to player state, leave rest unchanged\n if (toggleControl.name === newToggleControlProps.name)\n return newToggleControlProps;\n return toggleControl;\n });\n }\n _addTextTrack(e) {\n const vtt = e.detail.webVTT;\n const { total, isDefault } = e.detail;\n if (!vtt) {\n this.textTracks.increaseLoadedFiles();\n return;\n }\n this.textTracks.addWebVTT(vtt, total);\n if (!this.hasDefaultTexttrack) {\n this.setLanguage(this.lang);\n // Use the default text track\n if (isDefault) {\n this.hasDefaultTexttrack = true;\n this._setTextTrack(vtt.meta.language, this.showsubtitle);\n // Use the player language as default text track language\n }\n else if (vtt.meta.language === this.status.language) {\n this._setTextTrack(vtt.meta.language, this.showsubtitle);\n }\n }\n }\n handleKeyDown(e) {\n const { key, altKey, shiftKey, ctrlKey, metaKey } = e;\n const target = e.target;\n // Only trigger internal functions when pressed without special key\n if (altKey || ctrlKey || metaKey || shiftKey) {\n return;\n }\n if (hasDefaultScrollingBehavior(key, target)) {\n // Prevent default scrolling when focusing the player and pressing \"Space\" or \"ArrowUp\" / \"ArrowDown\"\n e.preventDefault();\n }\n switch (key) {\n case this.shortcutKeys.Space:\n case this.shortcutKeys.Enter:\n // Some interactive elements, e.g. links and buttons, have default behavior for Space and Enter keys.\n // The events still bubble up in this case, but we want to ignore them, when the user was focusing on such an element\n if (isInteractiveElement(target))\n return;\n this.togglePlay();\n break;\n case this.shortcutKeys.ArrowUp:\n this.increaseVolume();\n break;\n case this.shortcutKeys.ArrowDown:\n this.decreaseVolume();\n break;\n case this.shortcutKeys.ArrowLeft:\n this.skipBackward();\n break;\n case this.shortcutKeys.ArrowRight:\n this.skipForward();\n break;\n case this.shortcutKeys.f:\n this.toggleFullscreen();\n break;\n case this.shortcutKeys.m:\n this.toggleMute();\n break;\n }\n }\n /**\n * Invoke the play function on the player.\n * Also sets the internal state to mode \"playing\"\n */\n async play() {\n await this._invokePlayerFunction('play');\n this.status = Object.assign(Object.assign({}, this.status), { mode: Mode.PLAYING });\n }\n /**\n * Invoke the pause function on the player.\n * Also sets the internal state to mode \"paused\"\n */\n async pause() {\n await this._invokePlayerFunction('pause');\n this.status = Object.assign(Object.assign({}, this.status), { mode: Mode.PAUSED });\n }\n /**\n * Invoke the seek function on the player.\n *\n * Sometimes seeking starts playing the video.\n * If the player was in paused state, we manually pause again.\n *\n * @param seconds\n */\n async seek(seconds) {\n await this._invokePlayerFunction('seek', [seconds]);\n if (this.status.mode === Mode.PAUSED) {\n this.pause();\n this.status = Object.assign(Object.assign({}, this.status), { progress: seconds });\n this.cueUpdate(seconds);\n }\n }\n /**\n * Get the current video progress\n *\n */\n async getProgress() {\n return this.status.progress;\n }\n async _ended() {\n this.status = Object.assign(Object.assign({}, this.status), { mode: Mode.FINISHED });\n }\n _fullscreenchange() {\n const doc = document;\n const fullscreen = doc.fullScreen || doc.mozFullScreen || doc.webkitIsFullScreen;\n this.status = Object.assign(Object.assign({}, this.status), { fullscreen });\n }\n async _seek(e) {\n await this.seek(e.detail.seconds);\n }\n enterFullscreen() {\n if (!this.status.fullscreen) {\n requestFullscreen(this.el);\n }\n }\n exitFullscreen() {\n if (this.status.fullscreen) {\n exitFullscreen();\n }\n }\n async _openSettingsMenu() {\n this.status = Object.assign(Object.assign({}, this.status), { openedSettingsMenu: true });\n }\n async _closeSettingsMenu() {\n this.status = Object.assign(Object.assign({}, this.status), { openedSettingsMenu: false });\n }\n /**\n * Sets the mute state true and the primary slot volume to 0.\n */\n async mute() {\n this.primary.volume = 0;\n this.status = Object.assign(Object.assign({}, this.status), { muted: true });\n }\n /**\n * Sets the mute state false and resets the primary slot video volume.\n */\n async unmute() {\n this.primary.volume = this.status.volume;\n this.status = Object.assign(Object.assign({}, this.status), { muted: false });\n }\n async _setVolume(volume) {\n this.status = Object.assign(Object.assign({}, this.status), { volume });\n if (volume === 0) {\n this.mute();\n }\n else {\n this.unmute();\n }\n }\n async _changeVolume(e) {\n this._setVolume(e.detail.volume);\n }\n /**\n * Values of the keyboard keys the player listens to on the 'keydown` event.\n *\n * Internal functions are only triggered when key is pressed without special key\n * (alt, ctrl, meta, shift).\n */\n async getShortcutKeys() {\n return Promise.resolve(Object.values(this.shortcutKeys));\n }\n _setupVolume(newValue, oldValue) {\n const volume = parseFloat(newValue);\n if (newValue != oldValue) {\n this._setVolume(volume);\n }\n }\n _setupLanguage(newValue, oldValue) {\n if (newValue != oldValue) {\n this.setLanguage(newValue);\n }\n }\n async _setPlaybackRate(playbackRate) {\n if (!isNaN(playbackRate)) {\n await this._invokePlayerFunction('setPlaybackRate', [playbackRate]);\n this.status = Object.assign(Object.assign({}, this.status), { settings: Object.assign(Object.assign({}, this.status.settings), { playbackRate }) });\n }\n }\n async _changePlaybackRate(e) {\n this._setPlaybackRate(e.detail.playbackRate);\n }\n _setupPlaybackRate(newValue, oldValue) {\n if (newValue === oldValue)\n return;\n const playbackRate = parseFloat(newValue);\n this._setPlaybackRate(playbackRate);\n }\n async _showPlaybackRate() {\n this.status = Object.assign(Object.assign({}, this.status), { showPlaybackRate: true });\n }\n async _hidePlaybackRate() {\n this.status = Object.assign(Object.assign({}, this.status), { showPlaybackRate: false });\n }\n /**\n * Enable the text track\n */\n async enableTextTrack() {\n this.status = Object.assign(Object.assign({}, this.status), { subtitle: Object.assign(Object.assign({}, this.status.subtitle), { enabled: true }), settings: Object.assign(Object.assign({}, this.status.settings), { textTrack: this.status.subtitle.language }) });\n }\n /**\n * Disable the text track\n */\n async disableTextTrack() {\n this.status = Object.assign(Object.assign({}, this.status), { subtitle: Object.assign(Object.assign({}, this.status.subtitle), { enabled: false }), settings: Object.assign(Object.assign({}, this.status.settings), { textTrack: defaultStatus.settings.textTrack }) });\n }\n _setTextTrack(textTrack, enable = true) {\n if (textTrack === defaultStatus.settings.textTrack) {\n this.status = Object.assign(Object.assign({}, this.status), { subtitle: Object.assign(Object.assign({}, this.status.subtitle), { enabled: false }) });\n }\n else {\n this.status = Object.assign(Object.assign({}, this.status), { subtitle: Object.assign(Object.assign({}, this.status.subtitle), { language: textTrack, enabled: enable }) });\n // Sets the current language & cues in the used player TextTrackList\n this.textTracks.setCurrentCuesByLanguage(textTrack);\n // Notifies external listeners that a full cue list change has occurred\n const currentCues = this.textTracks.getCurrentCues();\n this.cueListChangeEvent.emit({\n cues: currentCues,\n });\n // Triggers an update for collecting active cues for the new language\n this.cueUpdate(this.status.progress, true);\n }\n this.status = Object.assign(Object.assign({}, this.status), { settings: Object.assign(Object.assign({}, this.status.settings), { textTrack }) });\n }\n _changeTextTrack(e) {\n this._setTextTrack(e.detail.textTrack);\n }\n togglePlay() {\n if (this.status.mode === Mode.PAUSED) {\n this.play();\n }\n if (this.status.mode === Mode.PLAYING) {\n this.pause();\n }\n }\n toggleFullscreen() {\n if (this.status.fullscreen) {\n exitFullscreen();\n }\n else {\n requestFullscreen(this.el);\n }\n }\n toggleMute() {\n if (this.status.muted) {\n this.unmute();\n }\n else {\n this.mute();\n }\n }\n increaseVolume() {\n let volume = fixDecimalPrecision(this.status.volume);\n if (volume < 1) {\n this._setVolume((volume += 0.1));\n }\n }\n decreaseVolume() {\n let volume = fixDecimalPrecision(this.status.volume);\n if (volume > 0) {\n this._setVolume((volume -= 0.1));\n }\n }\n skipForward() {\n const progress = this.status.progress;\n const endOfVideo = this.status.duration;\n const newPosition = progress < endOfVideo - this.skippedSeconds\n ? progress + this.skippedSeconds\n : endOfVideo;\n this.seek(newPosition);\n }\n skipBackward() {\n const progress = this.status.progress;\n const newPosition = progress < this.skippedSeconds ? 0 : progress - this.skippedSeconds;\n this.seek(newPosition);\n }\n get el() { return getElement(this); }\n static get watchers() { return {\n \"volume\": [\"_setupVolume\"],\n \"lang\": [\"_setupLanguage\"],\n \"playbackrate\": [\"_setupPlaybackRate\"]\n }; }\n};\n__decorate$4([\n bind()\n], Player.prototype, \"_invokePlayerFunction\", null);\n__decorate$4([\n bind()\n], Player.prototype, \"_click\", null);\n__decorate$4([\n bind()\n], Player.prototype, \"_addToggleControlButton\", null);\n__decorate$4([\n bind()\n], Player.prototype, \"_changeToggleControlActiveState\", null);\n__decorate$4([\n bind()\n], Player.prototype, \"_addTextTrack\", null);\n__decorate$4([\n bind()\n], Player.prototype, \"handleKeyDown\", null);\n__decorate$4([\n bind()\n], Player.prototype, \"_ended\", null);\n__decorate$4([\n bind()\n], Player.prototype, \"_fullscreenchange\", null);\n__decorate$4([\n bind()\n], Player.prototype, \"_setVolume\", null);\n__decorate$4([\n bind()\n], Player.prototype, \"_setPlaybackRate\", null);\n__decorate$4([\n bind()\n], Player.prototype, \"_setTextTrack\", null);\n__decorate$4([\n bind()\n], Player.prototype, \"togglePlay\", null);\n__decorate$4([\n bind()\n], Player.prototype, \"toggleFullscreen\", null);\n__decorate$4([\n bind()\n], Player.prototype, \"toggleMute\", null);\n__decorate$4([\n bind()\n], Player.prototype, \"increaseVolume\", null);\n__decorate$4([\n bind()\n], Player.prototype, \"decreaseVolume\", null);\n__decorate$4([\n bind()\n], Player.prototype, \"skipForward\", null);\n__decorate$4([\n bind()\n], Player.prototype, \"skipBackward\", null);\nPlayer.style = XmPlayerStyle0;\n\nconst Presentation = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.reference = undefined;\n this.name = undefined;\n this.label = undefined;\n }\n};\n\n// The programming goals of Split.js are to deliver readable, understandable and\n// maintainable code, while at the same time manually optimizing for tiny minified file size,\n// browser compatibility without additional requirements\n// and very few assumptions about the user's page layout.\nvar global = typeof window !== 'undefined' ? window : null;\nvar ssr = global === null;\nvar document$1 = !ssr ? global.document : undefined;\n\n// Save a couple long function names that are used frequently.\n// This optimization saves around 400 bytes.\nvar addEventListener = 'addEventListener';\nvar removeEventListener = 'removeEventListener';\nvar getBoundingClientRect = 'getBoundingClientRect';\nvar gutterStartDragging = '_a';\nvar aGutterSize = '_b';\nvar bGutterSize = '_c';\nvar HORIZONTAL = 'horizontal';\nvar NOOP = function () { return false; };\n\n// Helper function determines which prefixes of CSS calc we need.\n// We only need to do this once on startup, when this anonymous function is called.\n//\n// Tests -webkit, -moz and -o prefixes. Modified from StackOverflow:\n// http://stackoverflow.com/questions/16625140/js-feature-detection-to-detect-the-usage-of-webkit-calc-over-calc/16625167#16625167\nvar calc = ssr\n ? 'calc'\n : ((['', '-webkit-', '-moz-', '-o-']\n .filter(function (prefix) {\n var el = document$1.createElement('div');\n el.style.cssText = \"width:\" + prefix + \"calc(9px)\";\n\n return !!el.style.length\n })\n .shift()) + \"calc\");\n\n// Helper function checks if its argument is a string-like type\nvar isString = function (v) { return typeof v === 'string' || v instanceof String; };\n\n// Helper function allows elements and string selectors to be used\n// interchangeably. In either case an element is returned. This allows us to\n// do `Split([elem1, elem2])` as well as `Split(['#id1', '#id2'])`.\nvar elementOrSelector = function (el) {\n if (isString(el)) {\n var ele = document$1.querySelector(el);\n if (!ele) {\n throw new Error((\"Selector \" + el + \" did not match a DOM element\"))\n }\n return ele\n }\n\n return el\n};\n\n// Helper function gets a property from the properties object, with a default fallback\nvar getOption = function (options, propName, def) {\n var value = options[propName];\n if (value !== undefined) {\n return value\n }\n return def\n};\n\nvar getGutterSize = function (gutterSize, isFirst, isLast, gutterAlign) {\n if (isFirst) {\n if (gutterAlign === 'end') {\n return 0\n }\n if (gutterAlign === 'center') {\n return gutterSize / 2\n }\n } else if (isLast) {\n if (gutterAlign === 'start') {\n return 0\n }\n if (gutterAlign === 'center') {\n return gutterSize / 2\n }\n }\n\n return gutterSize\n};\n\n// Default options\nvar defaultGutterFn = function (i, gutterDirection) {\n var gut = document$1.createElement('div');\n gut.className = \"gutter gutter-\" + gutterDirection;\n return gut\n};\n\nvar defaultElementStyleFn = function (dim, size, gutSize) {\n var style = {};\n\n if (!isString(size)) {\n style[dim] = calc + \"(\" + size + \"% - \" + gutSize + \"px)\";\n } else {\n style[dim] = size;\n }\n\n return style\n};\n\nvar defaultGutterStyleFn = function (dim, gutSize) {\n var obj;\n\n return (( obj = {}, obj[dim] = (gutSize + \"px\"), obj ));\n};\n\n// The main function to initialize a split. Split.js thinks about each pair\n// of elements as an independant pair. Dragging the gutter between two elements\n// only changes the dimensions of elements in that pair. This is key to understanding\n// how the following functions operate, since each function is bound to a pair.\n//\n// A pair object is shaped like this:\n//\n// {\n// a: DOM element,\n// b: DOM element,\n// aMin: Number,\n// bMin: Number,\n// dragging: Boolean,\n// parent: DOM element,\n// direction: 'horizontal' | 'vertical'\n// }\n//\n// The basic sequence:\n//\n// 1. Set defaults to something sane. `options` doesn't have to be passed at all.\n// 2. Initialize a bunch of strings based on the direction we're splitting.\n// A lot of the behavior in the rest of the library is paramatized down to\n// rely on CSS strings and classes.\n// 3. Define the dragging helper functions, and a few helpers to go with them.\n// 4. Loop through the elements while pairing them off. Every pair gets an\n// `pair` object and a gutter.\n// 5. Actually size the pair elements, insert gutters and attach event listeners.\nvar Split = function (idsOption, options) {\n if ( options === void 0 ) options = {};\n\n if (ssr) { return {} }\n\n var ids = idsOption;\n var dimension;\n var clientAxis;\n var position;\n var positionEnd;\n var clientSize;\n var elements;\n\n // Allow HTMLCollection to be used as an argument when supported\n if (Array.from) {\n ids = Array.from(ids);\n }\n\n // All DOM elements in the split should have a common parent. We can grab\n // the first elements parent and hope users read the docs because the\n // behavior will be whacky otherwise.\n var firstElement = elementOrSelector(ids[0]);\n var parent = firstElement.parentNode;\n var parentStyle = getComputedStyle ? getComputedStyle(parent) : null;\n var parentFlexDirection = parentStyle ? parentStyle.flexDirection : null;\n\n // Set default options.sizes to equal percentages of the parent element.\n var sizes = getOption(options, 'sizes') || ids.map(function () { return 100 / ids.length; });\n\n // Standardize minSize and maxSize to an array if it isn't already.\n // This allows minSize and maxSize to be passed as a number.\n var minSize = getOption(options, 'minSize', 100);\n var minSizes = Array.isArray(minSize) ? minSize : ids.map(function () { return minSize; });\n var maxSize = getOption(options, 'maxSize', Infinity);\n var maxSizes = Array.isArray(maxSize) ? maxSize : ids.map(function () { return maxSize; });\n\n // Get other options\n var expandToMin = getOption(options, 'expandToMin', false);\n var gutterSize = getOption(options, 'gutterSize', 10);\n var gutterAlign = getOption(options, 'gutterAlign', 'center');\n var snapOffset = getOption(options, 'snapOffset', 30);\n var snapOffsets = Array.isArray(snapOffset) ? snapOffset : ids.map(function () { return snapOffset; });\n var dragInterval = getOption(options, 'dragInterval', 1);\n var direction = getOption(options, 'direction', HORIZONTAL);\n var cursor = getOption(\n options,\n 'cursor',\n direction === HORIZONTAL ? 'col-resize' : 'row-resize'\n );\n var gutter = getOption(options, 'gutter', defaultGutterFn);\n var elementStyle = getOption(\n options,\n 'elementStyle',\n defaultElementStyleFn\n );\n var gutterStyle = getOption(options, 'gutterStyle', defaultGutterStyleFn);\n\n // 2. Initialize a bunch of strings based on the direction we're splitting.\n // A lot of the behavior in the rest of the library is paramatized down to\n // rely on CSS strings and classes.\n if (direction === HORIZONTAL) {\n dimension = 'width';\n clientAxis = 'clientX';\n position = 'left';\n positionEnd = 'right';\n clientSize = 'clientWidth';\n } else if (direction === 'vertical') {\n dimension = 'height';\n clientAxis = 'clientY';\n position = 'top';\n positionEnd = 'bottom';\n clientSize = 'clientHeight';\n }\n\n // 3. Define the dragging helper functions, and a few helpers to go with them.\n // Each helper is bound to a pair object that contains its metadata. This\n // also makes it easy to store references to listeners that that will be\n // added and removed.\n //\n // Even though there are no other functions contained in them, aliasing\n // this to self saves 50 bytes or so since it's used so frequently.\n //\n // The pair object saves metadata like dragging state, position and\n // event listener references.\n\n function setElementSize(el, size, gutSize, i) {\n // Split.js allows setting sizes via numbers (ideally), or if you must,\n // by string, like '300px'. This is less than ideal, because it breaks\n // the fluid layout that `calc(% - px)` provides. You're on your own if you do that,\n // make sure you calculate the gutter size by hand.\n var style = elementStyle(dimension, size, gutSize, i);\n\n Object.keys(style).forEach(function (prop) {\n // eslint-disable-next-line no-param-reassign\n el.style[prop] = style[prop];\n });\n }\n\n function setGutterSize(gutterElement, gutSize, i) {\n var style = gutterStyle(dimension, gutSize, i);\n\n Object.keys(style).forEach(function (prop) {\n // eslint-disable-next-line no-param-reassign\n gutterElement.style[prop] = style[prop];\n });\n }\n\n function getSizes() {\n return elements.map(function (element) { return element.size; })\n }\n\n // Supports touch events, but not multitouch, so only the first\n // finger `touches[0]` is counted.\n function getMousePosition(e) {\n if ('touches' in e) { return e.touches[0][clientAxis] }\n return e[clientAxis]\n }\n\n // Actually adjust the size of elements `a` and `b` to `offset` while dragging.\n // calc is used to allow calc(percentage + gutterpx) on the whole split instance,\n // which allows the viewport to be resized without additional logic.\n // Element a's size is the same as offset. b's size is total size - a size.\n // Both sizes are calculated from the initial parent percentage,\n // then the gutter size is subtracted.\n function adjust(offset) {\n var a = elements[this.a];\n var b = elements[this.b];\n var percentage = a.size + b.size;\n\n a.size = (offset / this.size) * percentage;\n b.size = percentage - (offset / this.size) * percentage;\n\n setElementSize(a.element, a.size, this[aGutterSize], a.i);\n setElementSize(b.element, b.size, this[bGutterSize], b.i);\n }\n\n // drag, where all the magic happens. The logic is really quite simple:\n //\n // 1. Ignore if the pair is not dragging.\n // 2. Get the offset of the event.\n // 3. Snap offset to min if within snappable range (within min + snapOffset).\n // 4. Actually adjust each element in the pair to offset.\n //\n // ---------------------------------------------------------------------\n // | | <- a.minSize || b.minSize -> | |\n // | | | <- this.snapOffset || this.snapOffset -> | | |\n // | | | || | | |\n // | | | || | | |\n // ---------------------------------------------------------------------\n // | <- this.start this.size -> |\n function drag(e) {\n var offset;\n var a = elements[this.a];\n var b = elements[this.b];\n\n if (!this.dragging) { return }\n\n // Get the offset of the event from the first side of the\n // pair `this.start`. Then offset by the initial position of the\n // mouse compared to the gutter size.\n offset =\n getMousePosition(e) -\n this.start +\n (this[aGutterSize] - this.dragOffset);\n\n if (dragInterval > 1) {\n offset = Math.round(offset / dragInterval) * dragInterval;\n }\n\n // If within snapOffset of min or max, set offset to min or max.\n // snapOffset buffers a.minSize and b.minSize, so logic is opposite for both.\n // Include the appropriate gutter sizes to prevent overflows.\n if (offset <= a.minSize + a.snapOffset + this[aGutterSize]) {\n offset = a.minSize + this[aGutterSize];\n } else if (\n offset >=\n this.size - (b.minSize + b.snapOffset + this[bGutterSize])\n ) {\n offset = this.size - (b.minSize + this[bGutterSize]);\n }\n\n if (offset >= a.maxSize - a.snapOffset + this[aGutterSize]) {\n offset = a.maxSize + this[aGutterSize];\n } else if (\n offset <=\n this.size - (b.maxSize - b.snapOffset + this[bGutterSize])\n ) {\n offset = this.size - (b.maxSize + this[bGutterSize]);\n }\n\n // Actually adjust the size.\n adjust.call(this, offset);\n\n // Call the drag callback continously. Don't do anything too intensive\n // in this callback.\n getOption(options, 'onDrag', NOOP)(getSizes());\n }\n\n // Cache some important sizes when drag starts, so we don't have to do that\n // continously:\n //\n // `size`: The total size of the pair. First + second + first gutter + second gutter.\n // `start`: The leading side of the first element.\n //\n // ------------------------------------------------\n // | aGutterSize -> ||| |\n // | ||| |\n // | ||| |\n // | ||| <- bGutterSize |\n // ------------------------------------------------\n // | <- start size -> |\n function calculateSizes() {\n // Figure out the parent size minus padding.\n var a = elements[this.a].element;\n var b = elements[this.b].element;\n\n var aBounds = a[getBoundingClientRect]();\n var bBounds = b[getBoundingClientRect]();\n\n this.size =\n aBounds[dimension] +\n bBounds[dimension] +\n this[aGutterSize] +\n this[bGutterSize];\n this.start = aBounds[position];\n this.end = aBounds[positionEnd];\n }\n\n function innerSize(element) {\n // Return nothing if getComputedStyle is not supported (< IE9)\n // Or if parent element has no layout yet\n if (!getComputedStyle) { return null }\n\n var computedStyle = getComputedStyle(element);\n\n if (!computedStyle) { return null }\n\n var size = element[clientSize];\n\n if (size === 0) { return null }\n\n if (direction === HORIZONTAL) {\n size -=\n parseFloat(computedStyle.paddingLeft) +\n parseFloat(computedStyle.paddingRight);\n } else {\n size -=\n parseFloat(computedStyle.paddingTop) +\n parseFloat(computedStyle.paddingBottom);\n }\n\n return size\n }\n\n // When specifying percentage sizes that are less than the computed\n // size of the element minus the gutter, the lesser percentages must be increased\n // (and decreased from the other elements) to make space for the pixels\n // subtracted by the gutters.\n function trimToMin(sizesToTrim) {\n // Try to get inner size of parent element.\n // If it's no supported, return original sizes.\n var parentSize = innerSize(parent);\n if (parentSize === null) {\n return sizesToTrim\n }\n\n if (minSizes.reduce(function (a, b) { return a + b; }, 0) > parentSize) {\n return sizesToTrim\n }\n\n // Keep track of the excess pixels, the amount of pixels over the desired percentage\n // Also keep track of the elements with pixels to spare, to decrease after if needed\n var excessPixels = 0;\n var toSpare = [];\n\n var pixelSizes = sizesToTrim.map(function (size, i) {\n // Convert requested percentages to pixel sizes\n var pixelSize = (parentSize * size) / 100;\n var elementGutterSize = getGutterSize(\n gutterSize,\n i === 0,\n i === sizesToTrim.length - 1,\n gutterAlign\n );\n var elementMinSize = minSizes[i] + elementGutterSize;\n\n // If element is too smal, increase excess pixels by the difference\n // and mark that it has no pixels to spare\n if (pixelSize < elementMinSize) {\n excessPixels += elementMinSize - pixelSize;\n toSpare.push(0);\n return elementMinSize\n }\n\n // Otherwise, mark the pixels it has to spare and return it's original size\n toSpare.push(pixelSize - elementMinSize);\n return pixelSize\n });\n\n // If nothing was adjusted, return the original sizes\n if (excessPixels === 0) {\n return sizesToTrim\n }\n\n return pixelSizes.map(function (pixelSize, i) {\n var newPixelSize = pixelSize;\n\n // While there's still pixels to take, and there's enough pixels to spare,\n // take as many as possible up to the total excess pixels\n if (excessPixels > 0 && toSpare[i] - excessPixels > 0) {\n var takenPixels = Math.min(\n excessPixels,\n toSpare[i] - excessPixels\n );\n\n // Subtract the amount taken for the next iteration\n excessPixels -= takenPixels;\n newPixelSize = pixelSize - takenPixels;\n }\n\n // Return the pixel size adjusted as a percentage\n return (newPixelSize / parentSize) * 100\n })\n }\n\n // stopDragging is very similar to startDragging in reverse.\n function stopDragging() {\n var self = this;\n var a = elements[self.a].element;\n var b = elements[self.b].element;\n\n if (self.dragging) {\n getOption(options, 'onDragEnd', NOOP)(getSizes());\n }\n\n self.dragging = false;\n\n // Remove the stored event listeners. This is why we store them.\n global[removeEventListener]('mouseup', self.stop);\n global[removeEventListener]('touchend', self.stop);\n global[removeEventListener]('touchcancel', self.stop);\n global[removeEventListener]('mousemove', self.move);\n global[removeEventListener]('touchmove', self.move);\n\n // Clear bound function references\n self.stop = null;\n self.move = null;\n\n a[removeEventListener]('selectstart', NOOP);\n a[removeEventListener]('dragstart', NOOP);\n b[removeEventListener]('selectstart', NOOP);\n b[removeEventListener]('dragstart', NOOP);\n\n a.style.userSelect = '';\n a.style.webkitUserSelect = '';\n a.style.MozUserSelect = '';\n a.style.pointerEvents = '';\n\n b.style.userSelect = '';\n b.style.webkitUserSelect = '';\n b.style.MozUserSelect = '';\n b.style.pointerEvents = '';\n\n self.gutter.style.cursor = '';\n self.parent.style.cursor = '';\n document$1.body.style.cursor = '';\n }\n\n // startDragging calls `calculateSizes` to store the inital size in the pair object.\n // It also adds event listeners for mouse/touch events,\n // and prevents selection while dragging so avoid the selecting text.\n function startDragging(e) {\n // Right-clicking can't start dragging.\n if ('button' in e && e.button !== 0) {\n return\n }\n\n // Alias frequently used variables to save space. 200 bytes.\n var self = this;\n var a = elements[self.a].element;\n var b = elements[self.b].element;\n\n // Call the onDragStart callback.\n if (!self.dragging) {\n getOption(options, 'onDragStart', NOOP)(getSizes());\n }\n\n // Don't actually drag the element. We emulate that in the drag function.\n e.preventDefault();\n\n // Set the dragging property of the pair object.\n self.dragging = true;\n\n // Create two event listeners bound to the same pair object and store\n // them in the pair object.\n self.move = drag.bind(self);\n self.stop = stopDragging.bind(self);\n\n // All the binding. `window` gets the stop events in case we drag out of the elements.\n global[addEventListener]('mouseup', self.stop);\n global[addEventListener]('touchend', self.stop);\n global[addEventListener]('touchcancel', self.stop);\n global[addEventListener]('mousemove', self.move);\n global[addEventListener]('touchmove', self.move);\n\n // Disable selection. Disable!\n a[addEventListener]('selectstart', NOOP);\n a[addEventListener]('dragstart', NOOP);\n b[addEventListener]('selectstart', NOOP);\n b[addEventListener]('dragstart', NOOP);\n\n a.style.userSelect = 'none';\n a.style.webkitUserSelect = 'none';\n a.style.MozUserSelect = 'none';\n a.style.pointerEvents = 'none';\n\n b.style.userSelect = 'none';\n b.style.webkitUserSelect = 'none';\n b.style.MozUserSelect = 'none';\n b.style.pointerEvents = 'none';\n\n // Set the cursor at multiple levels\n self.gutter.style.cursor = cursor;\n self.parent.style.cursor = cursor;\n document$1.body.style.cursor = cursor;\n\n // Cache the initial sizes of the pair.\n calculateSizes.call(self);\n\n // Determine the position of the mouse compared to the gutter\n self.dragOffset = getMousePosition(e) - self.end;\n }\n\n // adjust sizes to ensure percentage is within min size and gutter.\n sizes = trimToMin(sizes);\n\n // 5. Create pair and element objects. Each pair has an index reference to\n // elements `a` and `b` of the pair (first and second elements).\n // Loop through the elements while pairing them off. Every pair gets a\n // `pair` object and a gutter.\n //\n // Basic logic:\n //\n // - Starting with the second element `i > 0`, create `pair` objects with\n // `a = i - 1` and `b = i`\n // - Set gutter sizes based on the _pair_ being first/last. The first and last\n // pair have gutterSize / 2, since they only have one half gutter, and not two.\n // - Create gutter elements and add event listeners.\n // - Set the size of the elements, minus the gutter sizes.\n //\n // -----------------------------------------------------------------------\n // | i=0 | i=1 | i=2 | i=3 |\n // | | | | |\n // | pair 0 pair 1 pair 2 |\n // | | | | |\n // -----------------------------------------------------------------------\n var pairs = [];\n elements = ids.map(function (id, i) {\n // Create the element object.\n var element = {\n element: elementOrSelector(id),\n size: sizes[i],\n minSize: minSizes[i],\n maxSize: maxSizes[i],\n snapOffset: snapOffsets[i],\n i: i,\n };\n\n var pair;\n\n if (i > 0) {\n // Create the pair object with its metadata.\n pair = {\n a: i - 1,\n b: i,\n dragging: false,\n direction: direction,\n parent: parent,\n };\n\n pair[aGutterSize] = getGutterSize(\n gutterSize,\n i - 1 === 0,\n false,\n gutterAlign\n );\n pair[bGutterSize] = getGutterSize(\n gutterSize,\n false,\n i === ids.length - 1,\n gutterAlign\n );\n\n // if the parent has a reverse flex-direction, switch the pair elements.\n if (\n parentFlexDirection === 'row-reverse' ||\n parentFlexDirection === 'column-reverse'\n ) {\n var temp = pair.a;\n pair.a = pair.b;\n pair.b = temp;\n }\n }\n\n // Determine the size of the current element. IE8 is supported by\n // staticly assigning sizes without draggable gutters. Assigns a string\n // to `size`.\n //\n // Create gutter elements for each pair.\n if (i > 0) {\n var gutterElement = gutter(i, direction, element.element);\n setGutterSize(gutterElement, gutterSize, i);\n\n // Save bound event listener for removal later\n pair[gutterStartDragging] = startDragging.bind(pair);\n\n // Attach bound event listener\n gutterElement[addEventListener](\n 'mousedown',\n pair[gutterStartDragging]\n );\n gutterElement[addEventListener](\n 'touchstart',\n pair[gutterStartDragging]\n );\n\n parent.insertBefore(gutterElement, element.element);\n\n pair.gutter = gutterElement;\n }\n\n setElementSize(\n element.element,\n element.size,\n getGutterSize(\n gutterSize,\n i === 0,\n i === ids.length - 1,\n gutterAlign\n ),\n i\n );\n\n // After the first iteration, and we have a pair object, append it to the\n // list of pairs.\n if (i > 0) {\n pairs.push(pair);\n }\n\n return element\n });\n\n function adjustToMin(element) {\n var isLast = element.i === pairs.length;\n var pair = isLast ? pairs[element.i - 1] : pairs[element.i];\n\n calculateSizes.call(pair);\n\n var size = isLast\n ? pair.size - element.minSize - pair[bGutterSize]\n : element.minSize + pair[aGutterSize];\n\n adjust.call(pair, size);\n }\n\n elements.forEach(function (element) {\n var computedSize = element.element[getBoundingClientRect]()[dimension];\n\n if (computedSize < element.minSize) {\n if (expandToMin) {\n adjustToMin(element);\n } else {\n // eslint-disable-next-line no-param-reassign\n element.minSize = computedSize;\n }\n }\n });\n\n function setSizes(newSizes) {\n var trimmed = trimToMin(newSizes);\n trimmed.forEach(function (newSize, i) {\n if (i > 0) {\n var pair = pairs[i - 1];\n\n var a = elements[pair.a];\n var b = elements[pair.b];\n\n a.size = trimmed[i - 1];\n b.size = newSize;\n\n setElementSize(a.element, a.size, pair[aGutterSize], a.i);\n setElementSize(b.element, b.size, pair[bGutterSize], b.i);\n }\n });\n }\n\n function destroy(preserveStyles, preserveGutter) {\n pairs.forEach(function (pair) {\n if (preserveGutter !== true) {\n pair.parent.removeChild(pair.gutter);\n } else {\n pair.gutter[removeEventListener](\n 'mousedown',\n pair[gutterStartDragging]\n );\n pair.gutter[removeEventListener](\n 'touchstart',\n pair[gutterStartDragging]\n );\n }\n\n if (preserveStyles !== true) {\n var style = elementStyle(\n dimension,\n pair.a.size,\n pair[aGutterSize]\n );\n\n Object.keys(style).forEach(function (prop) {\n elements[pair.a].element.style[prop] = '';\n elements[pair.b].element.style[prop] = '';\n });\n }\n });\n }\n\n return {\n setSizes: setSizes,\n getSizes: getSizes,\n collapse: function collapse(i) {\n adjustToMin(elements[i]);\n },\n destroy: destroy,\n parent: parent,\n pairs: pairs,\n }\n};\n\nconst screenCss = \":host{display:block;background-color:black;background-color:var(--vp-bg-color)}.landscape,.portrait{display:-ms-flexbox;display:flex;-ms-flex-align:stretch;align-items:stretch;height:100%}@media only screen and (min-width: 992px){.landscape.fullscreen .gutter__draggable-area,.portrait.fullscreen .gutter__draggable-area{width:55px}.landscape.fullscreen .gutter__handle,.portrait.fullscreen .gutter__handle{height:55px}.landscape.fullscreen .gutter__arrow svg,.portrait.fullscreen .gutter__arrow svg{height:30px;width:30px}}.landscape{-ms-flex-direction:row;flex-direction:row}.landscape:hover .gutter__draggable-area,.landscape:hover .gutter__handle{display:block}.portrait{-ms-flex-direction:column;flex-direction:column;width:100%}.gutter{position:relative;background-color:var(--vp-gutter-color)}.gutter.gutter--horizontal{cursor:col-resize}.gutter__draggable-area,.gutter__handle{display:none;position:absolute;z-index:1;width:var(--vp-gutter-width);height:100%;left:50%;top:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.gutter__handle{position:relative;background-color:var(--vp-gutter-color);height:var(--vp-gutter-width);width:100%;border-radius:50%}.gutter__arrow{position:absolute;background-color:transparent;top:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.gutter__arrow--left{left:25%}.gutter__arrow--right{left:75%}.gutter__arrow svg{display:block;height:20px;width:20px;fill:currentcolor}.pane{position:relative;overflow:hidden}\";\nconst XmScreenStyle0 = screenCss;\n\nvar __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst Screen = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.orientationPortrait = undefined;\n this.fullscreen = undefined;\n this.primaryRatio = 50;\n this.secondaryRatio = 50;\n }\n disconnectedCallback() {\n this.split.destroy();\n }\n componentWillLoad() {\n this.setOrientation();\n }\n componentDidRender() {\n if (this.primaryRatio && this.secondaryRatio) {\n // Initialization of video orientation when rendered\n this.initSplitScreen();\n }\n }\n render() {\n const clWrp = {\n landscape: !this.orientationPortrait,\n portrait: this.orientationPortrait,\n fullscreen: this.fullscreen,\n };\n return (h(\"div\", { key: '2341ba9291cc21102f4ee2d6468d558254aefe05', class: clWrp }, h(\"div\", { key: '7430a3ee836c18239d206c184ceea4c5e2890a76', class: \"pane primary\", ref: (e) => (this.primary = e) }, h(\"slot\", { key: '2d3c7cc0b0e2a01af739975cd4a3ef89a1613125', name: \"primary\" })), h(\"div\", { key: 'd79041c31f9b7fdaa9a3ca96827379fcf7fa751b', class: \"pane secondary\", ref: (e) => (this.secondary = e) }, h(\"slot\", { key: 'f372f77d739c6b808e3854a2e1cdb258bddd64c4', name: \"secondary\" }))));\n }\n initSplitScreen() {\n // reinitialize in case component did rerender\n if (this.split) {\n this.split.destroy();\n }\n // Mobile view is vertical\n if (window.innerWidth < 768) {\n this.split = Split([this.primary, this.secondary], {\n sizes: [this.secondaryRatio, this.primaryRatio],\n gutterSize: 6,\n direction: 'vertical',\n });\n }\n else {\n this.split = Split([this.primary, this.secondary], {\n sizes: [this.secondaryRatio, this.primaryRatio],\n gutterSize: 6,\n direction: 'horizontal',\n gutter: this.gutter,\n });\n }\n }\n /**\n * Override of gutter creation function for horizontal alignment\n * See: https://github.com/nathancahill/split/tree/master/packages/splitjs#gutter\n */\n gutter() {\n const gutter = document.createElement('div');\n gutter.className = `gutter gutter--horizontal`;\n const handlerTemplate = `\n \n \n ${ArrowLeft}\n ${ArrowRight}\n \n \n `;\n gutter.innerHTML = handlerTemplate;\n return gutter;\n }\n /**\n * On every window resize event,\n * the Screen needs to evaluate video arrangements (landscape / portrait).\n *\n * If there is a mismatch of these properties,\n * the Screen will re-render with the correct orientation\n */\n handleScreenSize() {\n if ((this.hasSmallScreenWidth() && !this.orientationPortrait) ||\n (!this.hasSmallScreenWidth() && this.orientationPortrait)) {\n this.setOrientation();\n }\n }\n /**\n * Initially and after every window re-size,\n * the Screen need to evaluate orientation of the video streams\n *\n * On smaller screens, they are stacked on top of each other (portrait).\n * On bigger screens, there they are side by side (landscape).\n */\n setOrientation() {\n if (this.hasSmallScreenWidth()) {\n this.orientationPortrait = true;\n }\n else {\n this.orientationPortrait = false;\n }\n }\n hasSmallScreenWidth() {\n return window.innerWidth < 768;\n }\n get el() { return getElement(this); }\n};\n__decorate$3([\n bind()\n], Screen.prototype, \"handleScreenSize\", null);\nScreen.style = XmScreenStyle0;\n\nconst Submenu = (props) => {\n const setting = props.status.currentSetting;\n if (setting) {\n return (h(\"div\", { class: props.status.isOpen\n ? 'settings-menu__submenu menu menu--open'\n : 'settings-menu__submenu menu hide' },\n h(\"div\", { class: \"settings-menu__submenu-header\" },\n h(\"button\", { class: \"settings-menu__button\", onClick: props.onCloseSubmenu, \"aria-label\": setting.label },\n h(\"span\", { class: \"settings-menu__arrow settings-menu__arrow--left\" },\n h(\"span\", { class: \"svg\", innerHTML: ArrowLeft })),\n h(\"span\", { class: \"settings-menu__button-label\", innerHTML: setting.label }))),\n h(\"div\", { class: \"settings-menu__submenu-content\" }, setting.values.map((value, index) => {\n var _a, _b;\n return (h(\"button\", { class: value === setting.currentValue\n ? 'settings-menu__button settings-menu__button--current'\n : 'settings-menu__button', onClick: () => props.onChangeSetting(value), \"aria-label\": ((_a = setting.valueLabels) === null || _a === void 0 ? void 0 : _a[index])\n ? setting.valueLabels[index]\n : value, innerHTML: ((_b = setting.valueLabels) === null || _b === void 0 ? void 0 : _b[index])\n ? setting.valueLabels[index]\n : value }));\n }))));\n }\n};\nconst SubmenuToggleButton = (props) => (h(\"button\", { class: \"settings-menu__button\", \"aria-label\": props.setting.label, onClick: props.status.isOpen ? props.onCloseSubmenu : props.onOpenSubmenu },\n h(\"span\", { class: \"settings-menu__button-label\" },\n props.setting.label,\n \" \"),\n h(\"span\", { class: \"settings-menu__button-value\" },\n ' ',\n props.setting.valueLabels\n ? props.setting.valueLabels[props.setting.values.findIndex((value) => props.setting.currentValue === value)]\n : props.setting.currentValue),\n h(\"span\", { class: \"settings-menu__arrow settings-menu__arrow--right\" },\n h(\"span\", { class: \"svg\", innerHTML: ArrowRight }))));\n\nconst settingsMenuCss = \"@charset \\\"UTF-8\\\";.settings-menu{max-height:90%;position:absolute;z-index:3;bottom:50px;right:10px;background:var(--vp-menu-color);font-size:0.9em;line-height:0.9em;padding:0.2em}@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none){.settings-menu{height:100%}}@media only screen and (min-width: 992px){.settings-menu--fullscreen-mode{bottom:60px;font-size:1em}.settings-menu--fullscreen-mode .settings-menu__button{font-size:1em}}@media only screen and (max-width: 576px){.settings-menu{font-size:0.8em}.settings-menu .settings-menu__button{font-size:0.8em}}.settings-menu__button{display:-ms-flexbox;display:flex;-ms-flex:1 1 100%;flex:1 1 100%;width:100%;background:transparent;position:relative;border:none;color:white;color:var(--vp-main-color);padding:0.4em;cursor:pointer}@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none){.settings-menu__button{line-height:1.2em}}.settings-menu__button-value{margin-left:auto;padding-left:0.6em;font-weight:600}.settings-menu__button:hover{background:rgba(255, 255, 255, 0.2)}.settings-menu__button--current{font-weight:600}.settings-menu__button--current:before{content:\\\"•\\\";color:var(--vp-main-color);position:absolute;left:0.7em}.settings-menu__submenu-header{-webkit-box-shadow:2px 2px 2px 1px rgba(0, 0, 0, 0.5);box-shadow:2px 2px 2px 1px rgba(0, 0, 0, 0.5);-webkit-box-shadow:2px 2px 2px 1px rgba(var(--vp-bg-color-rgb), 0.5);box-shadow:2px 2px 2px 1px rgba(var(--vp-bg-color-rgb), 0.5)}.settings-menu__submenu-content{overflow-y:auto;scrollbar-color:orange rgba(50, 50, 50, 0.5);scrollbar-color:var(--vp-slider-color) rgba(var(--vp-menu-color-rgb), 0.5)}.settings-menu__submenu-content .settings-menu__button{padding-left:1.8em}.settings-menu__arrow{margin-top:-1px}.settings-menu__arrow--right{margin-left:0.4em;margin-right:-0.4em}.settings-menu__arrow--left{margin-right:0.4em;margin-left:-0.4em}.settings-menu__arrow svg,.settings-menu__arrow .svg{display:block;height:1.4em;width:1.4em;fill:currentColor;color:inherit;vertical-align:middle}.menu{display:-ms-flexbox;display:flex;-ms-flex-flow:column nowrap;flex-flow:column nowrap;overflow:hidden;visibility:hidden;opacity:0;-webkit-transition:visibility 0.3s linear, opacity 0.3s linear;transition:visibility 0.3s linear, opacity 0.3s linear}.menu--open{visibility:visible;opacity:1}.hide{display:none}.show{display:block}\";\nconst XmSettingsMenuStyle0 = settingsMenuCss;\n\nvar __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst SettingsMenu = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.changePlaybackRateEvent = createEvent(this, \"setting:changePlaybackRate\", 7);\n this.changeTextTrackEvent = createEvent(this, \"setting:changeTextTrack\", 7);\n this.status = undefined;\n this.textTracks = undefined;\n this.submenuStatus = defaultSettingsSubmenuStatus;\n }\n render() {\n let classes = 'settings-menu menu';\n if (this.status.fullscreen) {\n classes += ' settings-menu--fullscreen-mode';\n }\n if (this.status.openedSettingsMenu) {\n classes += ' menu--open';\n }\n return (h(\"div\", { key: '0b01df8556a77bdbc605a3468b1f7bbf442e4bf8', class: classes, onClick: (e) => e.stopPropagation(), \"data-test-id\": \"settingsMenu\", role: \"menu\", tabindex: \"0\" }, h(Submenu, { key: 'b27f1fbb94224a04b12ab5cd279b057c58d79fd4', status: this.submenuStatus, onChangeSetting: this._setSetting, onCloseSubmenu: this._onCloseSubmenu }), h(\"div\", { key: '43d51380dde9737cf6b711c7bbcb92043b92fbc3', class: this.submenuStatus.isOpen\n ? 'settings-menu__content hide'\n : 'settings-menu__content show' }, h(SubmenuToggleButton, { key: 'bbb1605574fbf861278f7f698e8ea6c4c19e1b0d', status: this.submenuStatus, setting: this._getSetting(SettingNames.TEXTTRACK), onOpenSubmenu: () => this._onOpenSubmenu(SettingNames.TEXTTRACK), onCloseSubmenu: this._onCloseSubmenu }), h(SubmenuToggleButton, { key: '6c30aacbd68ae1de669c2f079381e4d130fac8ba', status: this.submenuStatus, setting: this._getSetting(SettingNames.PLAYBACKRATE), onOpenSubmenu: () => this._onOpenSubmenu(SettingNames.PLAYBACKRATE), onCloseSubmenu: this._onCloseSubmenu }))));\n }\n _getSetting(settingName) {\n const setting = settingList.find((settingItem) => settingItem.name === settingName);\n setting.currentValue = this.status.settings[settingName];\n setting.label = locales[this.status.language][settingName];\n if (settingName === SettingNames.TEXTTRACK) {\n setting.values = this.textTracks.getTextTrackValues();\n setting.valueLabels = this.textTracks.getTextTrackLabels(this.status.language);\n }\n return setting;\n }\n _onOpenSubmenu(settingName) {\n this.submenuStatus = {\n isOpen: true,\n currentSetting: this._getSetting(settingName),\n };\n }\n _onCloseSubmenu() {\n this.submenuStatus = Object.assign(Object.assign({}, this.submenuStatus), { isOpen: false });\n }\n _checkSettingsMenuOpeningState(newState) {\n if (!newState.openedSettingsMenu) {\n this._onCloseSubmenu();\n }\n }\n _setSetting(value) {\n switch (this.submenuStatus.currentSetting.name) {\n case SettingNames.PLAYBACKRATE:\n this._setPlaybackRate(value);\n break;\n case SettingNames.TEXTTRACK:\n this._setTextTrack(value);\n break;\n }\n this._onCloseSubmenu();\n }\n _setPlaybackRate(playbackRate) {\n this.changePlaybackRateEvent.emit({ playbackRate });\n }\n _setTextTrack(textTrack) {\n this.changeTextTrackEvent.emit({ textTrack });\n }\n get el() { return getElement(this); }\n static get watchers() { return {\n \"status\": [\"_checkSettingsMenuOpeningState\"]\n }; }\n};\n__decorate$2([\n bind()\n], SettingsMenu.prototype, \"_getSetting\", null);\n__decorate$2([\n bind()\n], SettingsMenu.prototype, \"_onOpenSubmenu\", null);\n__decorate$2([\n bind()\n], SettingsMenu.prototype, \"_onCloseSubmenu\", null);\n__decorate$2([\n bind()\n], SettingsMenu.prototype, \"_setSetting\", null);\n__decorate$2([\n bind()\n], SettingsMenu.prototype, \"_setPlaybackRate\", null);\n__decorate$2([\n bind()\n], SettingsMenu.prototype, \"_setTextTrack\", null);\nSettingsMenu.style = XmSettingsMenuStyle0;\n\nconst slidePreviewBarCss = \":host{position:absolute;width:100%;height:100%;--vp-slide-preview-color-value:143, 93, 0}.slide{position:absolute;height:100%;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;border-left:2px solid rgb(var(--vp-slide-preview-color-value))}.slide:first-child{border-left:none}.slide:hover{background-color:rgba(var(--vp-slide-preview-color-value), 0.7)}\";\nconst XmSlidePreviewBarStyle0 = slidePreviewBarCss;\n\nconst SlidePreviewBar = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.slides = [];\n this.handleClick = (e) => {\n const seconds = this.getSecondsFromCurrentMousePosition(e);\n this.onSeek(seconds);\n };\n this.onMove = (e) => {\n const seconds = this.getSecondsFromCurrentMousePosition(e);\n const time = format(seconds);\n const positionX = (this.el.clientWidth * seconds) / this.duration;\n this.hover = Object.assign(Object.assign({}, this.hover), { time,\n positionX });\n };\n this.togglePreviewTooltip = (e) => {\n const el = e.target;\n this.hover = Object.assign(Object.assign({}, this.hover), { status: !this.hover.status, thumbnail: el.dataset.thumbnail });\n };\n this.getSecondsFromCurrentMousePosition = (e) => {\n const el = e.target;\n var rect = el.getBoundingClientRect();\n var mousePosition = e.clientX - rect.left;\n // Knowing the position of the mouse on the corresponding slide\n // div and its data attributes we determine the point in seconds\n // from the overall progress bar where the mouse is located\n const seconds = parseFloat(el.dataset.start) +\n (mousePosition * parseFloat(el.dataset.duration)) / rect.width;\n return seconds;\n };\n this.getSlides = (slidesSrc) => {\n let slides = JSON.parse(slidesSrc);\n slides.forEach((slide, index) => {\n if (index === 0) {\n // Ensure the first slide starts at the beginning of the bar\n slide.startPosition = 0;\n }\n const isLastSlide = index === slides.length - 1;\n slide.duration = isLastSlide\n ? this.duration - slide.startPosition\n : slides[index + 1].startPosition - slide.startPosition;\n });\n this.slides = slides;\n };\n this.hover = {\n status: false,\n time: '00:00',\n positionX: 0,\n thumbnail: '',\n };\n this.duration = undefined;\n this.slidesSrc = undefined;\n this.onSeek = undefined;\n }\n componentWillLoad() {\n this.getSlides(this.slidesSrc);\n }\n render() {\n return (h(\"div\", { key: 'b83b450b041dd619a1fb2b41d5db68fcca15484a' }, this.slides.map((slide) => (h(\"div\", { class: \"slide\", \"data-start\": slide.startPosition, \"data-duration\": slide.duration, \"data-thumbnail\": slide.thumbnail, style: {\n left: `${(slide.startPosition * 100) / this.duration}%`,\n width: `${(slide.duration * 100) / this.duration}%`,\n }, onClick: this.handleClick, onMouseEnter: this.togglePreviewTooltip, onMouseLeave: this.togglePreviewTooltip, onMouseMove: this.onMove }))), h(\"xm-tooltip\", { key: '0851a3f4d22b5f85f17d631bdec2b8106f53c4b9', image: this.hover.thumbnail, show: this.hover.status, content: this.hover.time, positionX: this.hover.positionX })));\n }\n get el() { return getElement(this); }\n};\nSlidePreviewBar.style = XmSlidePreviewBarStyle0;\n\nconst sliderCss = \":host{width:100%;position:relative}.slider{display:-ms-flexbox;display:flex}.slider__progress{-ms-flex:1 1 100%;flex:1 1 100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;overflow:hidden;height:0.5em;height:var(--vp-control-slider-height);background:transparent;color:orange;color:var(--vp-slider-color);margin:0;border-top:1px solid var(--vp-bg-color);border-top-color:black;border-bottom:1px solid var(--vp-bg-color);border-bottom-color:black;cursor:pointer}.slider__progress::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;-webkit-box-shadow:-100vw 0 0 100vw currentColor;box-shadow:-100vw 0 0 100vw currentColor;width:1px;height:var(--vp-control-slider-height)}.slider__progress::-moz-range-thumb{-moz-appearance:none;appearance:none;box-shadow:-100vw 0 0 100vw currentColor;width:0;border:0}.slider__progress::-ms-thumb{appearance:none;box-shadow:-100vw 0 0 100vw orange;width:0;border:0}.slider__progress::-ms-fill-upper{background:#353535;background:var(--vp-gutter-color)}.slider__progress::-ms-track{color:#353535;color:var(--vp-gutter-color)}@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none){.slider__progress{height:inherit;padding:0px}}\";\nconst XmSliderStyle0 = sliderCss;\n\nvar __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst Slider = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.seekEvent = createEvent(this, \"slider:seek\", 7);\n this.handleClickOnSlidePreview = (seconds) => {\n this.seekEvent.emit({ seconds });\n };\n this.duration = undefined;\n this.progress = undefined;\n this.fullscreen = undefined;\n this.slidesSrc = undefined;\n this.hoverStatus = {\n hover: false,\n hoverTime: '00:00',\n hoverPositionX: 0,\n };\n }\n render() {\n return (h(\"div\", { key: '908f05d65922f4c0550082fee3e18155800edad2', class: \"slider\" }, h(\"input\", { key: 'bfa92221187a0ceefd0eb1a5c934a0b3376eb4e0', class: \"slider__progress\", part: \"slider\", type: \"range\", min: \"0\", max: this.duration, step: \"any\", autocomplete: \"off\", value: this.progress, onChange: this.onSeek, onInput: this.onSeek, onMouseMove: this.onMove, onMouseEnter: this.toggleTooltip, onMouseLeave: this.toggleTooltip }), this.slidesSrc && this.duration ? (h(\"xm-slide-preview-bar\", { duration: this.duration, slidesSrc: this.slidesSrc, onSeek: this.handleClickOnSlidePreview })) : (h(\"xm-tooltip\", { show: this.hoverStatus.hover, content: this.hoverStatus.hoverTime, positionX: this.hoverStatus.hoverPositionX }))));\n }\n onSeek(e) {\n const el = e.target;\n const seconds = parseFloat(el.value);\n this.seekEvent.emit({ seconds });\n }\n onMove(e) {\n const el = e.target;\n // Uses the position of the mouse on the progress bar to\n // work out what point in the video the user will skip to if\n // the progress bar is clicked at that point\n const seconds = (e.offsetX / el.clientWidth) * this.duration;\n const time = format(seconds);\n // Get mouse position\n const rect = el.getBoundingClientRect();\n const position = e.pageX - rect.left;\n this.hoverStatus = Object.assign(Object.assign({}, this.hoverStatus), { hoverTime: time, hoverPositionX: position });\n }\n toggleTooltip() {\n this.hoverStatus = Object.assign(Object.assign({}, this.hoverStatus), { hover: !this.hoverStatus.hover });\n }\n get el() { return getElement(this); }\n};\n__decorate$1([\n bind()\n], Slider.prototype, \"onSeek\", null);\n__decorate$1([\n bind()\n], Slider.prototype, \"onMove\", null);\n__decorate$1([\n bind()\n], Slider.prototype, \"toggleTooltip\", null);\nSlider.style = XmSliderStyle0;\n\n/**\n * See spec: https://www.w3.org/TR/webvtt1/#file-structure\n */\n\nfunction ParserError (message, error) {\n this.message = message;\n this.error = error;\n}\n\nParserError.prototype = Object.create(Error.prototype);\n\nconst TIMESTAMP_REGEXP = /([0-9]+)?:?([0-9]{2}):([0-9]{2}\\.[0-9]{2,3})/;\n\nfunction parse$2 (input, options) {\n if (!options) {\n options = {};\n }\n\n const { meta = false, strict = true } = options;\n\n if (typeof input !== 'string') {\n throw new ParserError('Input must be a string');\n }\n\n input = input.trim();\n input = input.replace(/\\r\\n/g, '\\n');\n input = input.replace(/\\r/g, '\\n');\n\n const parts = input.split('\\n\\n');\n const header = parts.shift();\n\n if (!header.startsWith('WEBVTT')) {\n throw new ParserError('Must start with \"WEBVTT\"');\n }\n\n const headerParts = header.split('\\n');\n\n const headerComments = headerParts[0].replace('WEBVTT', '');\n\n if (headerComments.length > 0\n && (headerComments[0] !== ' ' && headerComments[0] !== '\\t')\n ) {\n throw new ParserError('Header comment must start with space or tab');\n }\n\n // nothing of interests, return early\n if (parts.length === 0 && headerParts.length === 1) {\n return { valid: true, strict, cues: [], errors: [] };\n }\n\n if (!meta && headerParts.length > 1 && headerParts[1] !== '') {\n throw new ParserError('Missing blank line after signature');\n }\n\n const { cues, errors } = parseCues(parts, strict);\n\n if (strict && errors.length > 0) {\n throw errors[0];\n }\n\n const headerMeta = meta ? parseMeta(headerParts) : null;\n\n const result = { valid: errors.length === 0, strict, cues, errors };\n\n if (meta) {\n result.meta = headerMeta;\n }\n\n return result;\n}\n\nfunction parseMeta (headerParts) {\n const meta = {};\n headerParts.slice(1).forEach(header => {\n const splitIdx = header.indexOf(':');\n const key = header.slice(0, splitIdx).trim();\n const value = header.slice(splitIdx + 1).trim();\n meta[key] = value;\n });\n return Object.keys(meta).length > 0 ? meta : null;\n}\n\nfunction parseCues (cues, strict) {\n const errors = [];\n\n const parsedCues = cues\n .map((cue, i) => {\n try {\n return parseCue(cue, i, strict);\n } catch (e) {\n errors.push(e);\n return null;\n }\n })\n .filter(Boolean);\n\n return {\n cues: parsedCues,\n errors\n };\n}\n\n/**\n * Parse a single cue block.\n *\n * @param {array} cue Array of content for the cue\n * @param {number} i Index of cue in array\n *\n * @returns {object} cue Cue object with start, end, text and styles.\n * Null if it's a note\n */\nfunction parseCue (cue, i, strict) {\n let identifier = '';\n let start = 0;\n let end = 0.01;\n let text = '';\n let styles = '';\n\n // split and remove empty lines\n const lines = cue.split('\\n').filter(Boolean);\n\n if (lines.length > 0 && lines[0].trim().startsWith('NOTE')) {\n return null;\n }\n\n if (lines.length === 1 && !lines[0].includes('-->')) {\n throw new ParserError(`Cue identifier cannot be standalone (cue #${i})`);\n }\n\n if (lines.length > 1 &&\n !(lines[0].includes('-->') || lines[1].includes('-->'))) {\n const msg = `Cue identifier needs to be followed by timestamp (cue #${i})`;\n throw new ParserError(msg);\n }\n\n if (lines.length > 1 && lines[1].includes('-->')) {\n identifier = lines.shift();\n }\n\n const times = typeof lines[0] === 'string' && lines[0].split(' --> ');\n\n if (times.length !== 2 ||\n !validTimestamp(times[0]) ||\n !validTimestamp(times[1])) {\n\n throw new ParserError(`Invalid cue timestamp (cue #${i})`);\n }\n\n start = parseTimestamp(times[0]);\n end = parseTimestamp(times[1]);\n\n if (strict) {\n if (start > end) {\n throw new ParserError(`Start timestamp greater than end (cue #${i})`);\n }\n\n if (end <= start) {\n throw new ParserError(`End must be greater than start (cue #${i})`);\n }\n }\n\n if (!strict && end < start) {\n throw new ParserError(\n `End must be greater or equal to start when not strict (cue #${i})`\n );\n }\n\n // TODO better style validation\n styles = times[1].replace(TIMESTAMP_REGEXP, '').trim();\n\n lines.shift();\n\n text = lines.join('\\n');\n\n if (!text) {\n return false;\n }\n\n return { identifier, start, end, text, styles };\n}\n\nfunction validTimestamp (timestamp) {\n return TIMESTAMP_REGEXP.test(timestamp);\n}\n\nfunction parseTimestamp (timestamp) {\n const matches = timestamp.match(TIMESTAMP_REGEXP);\n let secs = parseFloat(matches[1] || 0) * 60 * 60; // hours\n secs += parseFloat(matches[2]) * 60; // mins\n secs += parseFloat(matches[3]);\n // secs += parseFloat(matches[4]);\n return secs;\n}\n\nvar parser = { ParserError, parse: parse$2 };\n\n/**\n * See spec: https://www.w3.org/TR/webvtt1/#file-structure\n */\n\nfunction CompilerError (message, error) {\n this.message = message;\n this.error = error;\n}\n\nCompilerError.prototype = Object.create(Error.prototype);\n\nfunction compile$1 (input) {\n\n if (!input) {\n throw new CompilerError('Input must be non-null');\n }\n\n if (typeof input !== 'object') {\n throw new CompilerError('Input must be an object');\n }\n\n if (Array.isArray(input)) {\n throw new CompilerError('Input cannot be array');\n }\n\n if (!input.valid) {\n throw new CompilerError('Input must be valid');\n }\n\n let output = 'WEBVTT\\n';\n\n if (input.meta) {\n if (typeof input.meta !== 'object' || Array.isArray(input.meta)) {\n throw new CompilerError('Metadata must be an object');\n }\n\n Object.entries(input.meta).forEach((i) => {\n if (typeof i[1] !== 'string') {\n throw new CompilerError(`Metadata value for \"${i[0]}\" must be string`);\n }\n\n output += `${i[0]}: ${i[1]}\\n`;\n });\n }\n\n let lastTime = null;\n\n input.cues.forEach((cue, index) => {\n if (lastTime && lastTime > cue.start) {\n throw new CompilerError(`Cue number ${index} is not in chronological`\n + ' order');\n }\n\n lastTime = cue.start;\n\n output += '\\n';\n output += compileCue(cue);\n output += '\\n';\n });\n\n return output;\n}\n\n/**\n * Compile a single cue block.\n *\n * @param {array} cue Array of content for the cue\n *\n * @returns {object} cue Cue object with start, end, text and styles.\n * Null if it's a note\n */\nfunction compileCue (cue) {\n // TODO: check for malformed JSON\n if (typeof cue !== 'object') {\n throw new CompilerError('Cue malformed: not of type object');\n }\n\n if (typeof cue.identifier !== 'string' &&\n typeof cue.identifier !== 'number' &&\n cue.identifier !== null) {\n throw new CompilerError(`Cue malformed: identifier value is not a string.\n ${JSON.stringify(cue)}`);\n }\n\n if (isNaN(cue.start)) {\n throw new CompilerError(`Cue malformed: null start value.\n ${JSON.stringify(cue)}`);\n }\n\n if (isNaN(cue.end)) {\n throw new CompilerError(`Cue malformed: null end value.\n ${JSON.stringify(cue)}`);\n }\n\n if (cue.start >= cue.end) {\n throw new CompilerError(`Cue malformed: start timestamp greater than end\n ${JSON.stringify(cue)}`);\n }\n\n if (typeof cue.text !== 'string') {\n throw new CompilerError(`Cue malformed: null text value.\n ${JSON.stringify(cue)}`);\n }\n\n if (typeof cue.styles !== 'string') {\n throw new CompilerError(`Cue malformed: null styles value.\n ${JSON.stringify(cue)}`);\n }\n\n let output = '';\n\n if (cue.identifier.length > 0) {\n output += `${cue.identifier}\\n`;\n }\n\n const startTimestamp = convertTimestamp(cue.start);\n const endTimestamp = convertTimestamp(cue.end);\n\n output += `${startTimestamp} --> ${endTimestamp}`;\n output += cue.styles ? ` ${cue.styles}` : '';\n output += `\\n${cue.text}`;\n\n return output;\n}\n\nfunction convertTimestamp (time) {\n const hours = pad$1(calculateHours(time), 2);\n const minutes = pad$1(calculateMinutes(time), 2);\n const seconds = pad$1(calculateSeconds(time), 2);\n const milliseconds = pad$1(calculateMs(time), 3);\n return `${hours}:${minutes}:${seconds}.${milliseconds}`;\n}\n\nfunction pad$1 (num, zeroes) {\n let output = `${num}`;\n\n while (output.length < zeroes) {\n output = `0${ output }`;\n }\n\n return output;\n}\n\nfunction calculateHours (time) {\n return Math.floor(time / 60 / 60);\n}\n\nfunction calculateMinutes (time) {\n return (Math.floor(time / 60) % 60);\n}\n\nfunction calculateSeconds (time) {\n return Math.floor((time) % 60);\n}\n\nfunction calculateMs (time) {\n return Math.floor((time % 1).toFixed(4) * 1000);\n}\n\nvar compiler = { CompilerError, compile: compile$1 };\n\nconst parse$1 = parser.parse;\n\nfunction segment$2 (input, segmentLength) {\n segmentLength = segmentLength || 10;\n\n const parsed = parse$1(input);\n const segments = [];\n\n let cues = [];\n let queuedCue = null;\n let currentSegmentDuration = 0;\n let totalSegmentsDuration = 0;\n\n /**\n * One pass segmenting of cues\n */\n parsed.cues.forEach((cue, i) => {\n const firstCue = i === 0;\n const lastCue = i === parsed.cues.length - 1;\n const start = cue.start;\n const end = cue.end;\n const nextStart = lastCue ? Infinity : parsed.cues[i + 1].start;\n const cueLength = firstCue ? end : end - start;\n const silence = firstCue ? 0 : (start - parsed.cues[i - 1].end);\n\n currentSegmentDuration = currentSegmentDuration + cueLength + silence;\n\n // if there's a boundary cue queued, push and clear queue\n if (queuedCue) {\n cues.push(queuedCue);\n currentSegmentDuration += queuedCue.end - totalSegmentsDuration;\n queuedCue = null;\n }\n\n cues.push(cue);\n\n // if a cue passes a segment boundary, it appears in both\n let shouldQueue = nextStart - end < segmentLength &&\n silence < segmentLength &&\n currentSegmentDuration > segmentLength;\n\n if (shouldSegment(totalSegmentsDuration, segmentLength, nextStart,\n silence)) {\n\n const duration = segmentDuration(lastCue, end, segmentLength,\n currentSegmentDuration,\n totalSegmentsDuration);\n\n segments.push({ duration, cues });\n\n totalSegmentsDuration += duration;\n currentSegmentDuration = 0;\n cues = [];\n } else {\n shouldQueue = false;\n }\n\n if (shouldQueue) {\n queuedCue = cue;\n }\n });\n\n return segments;\n}\n\nfunction shouldSegment (total, length, nextStart, silence) {\n\n // this is stupid, but gets one case fixed...\n const x = alignToSegmentLength(silence, length);\n const nextCueIsInNextSegment = silence <= length ||\n x + total < nextStart;\n\n return nextCueIsInNextSegment && nextStart - total >= length;\n}\n\nfunction segmentDuration (lastCue, end, length, currentSegment, totalSegments) {\n let duration = length;\n\n if (currentSegment > length) {\n duration = alignToSegmentLength(currentSegment - length, length);\n }\n\n // make sure the last cue covers the whole time of the cues\n if (lastCue) {\n duration = parseFloat((end - totalSegments).toFixed(2));\n } else {\n duration = Math.round(duration);\n }\n\n return duration;\n}\n\nfunction alignToSegmentLength (n, segmentLength) {\n n += segmentLength - n % segmentLength;\n return n;\n}\n\nvar segmenter = { segment: segment$2 };\n\nconst segment$1 = segmenter.segment;\n\nfunction hlsSegment (input, segmentLength, startOffset) {\n\n if (typeof startOffset === 'undefined') {\n startOffset = '900000';\n }\n\n const segments = segment$1(input, segmentLength);\n\n const result = [];\n segments.forEach((seg, i) => {\n\n const content = `WEBVTT\nX-TIMESTAMP-MAP=MPEGTS:${startOffset},LOCAL:00:00:00.000\n\n${printableCues(seg.cues)}\n`;\n const filename = generateSegmentFilename(i);\n result.push({ filename, content });\n });\n return result;\n}\n\nfunction hlsSegmentPlaylist (input, segmentLength) {\n\n const segmented = segment$1(input, segmentLength);\n\n const printable = printableSegments(segmented);\n const longestSegment = Math.round(findLongestSegment(segmented));\n\n const template = `#EXTM3U\n#EXT-X-TARGETDURATION:${longestSegment}\n#EXT-X-VERSION:3\n#EXT-X-MEDIA-SEQUENCE:0\n#EXT-X-PLAYLIST-TYPE:VOD\n${printable}\n#EXT-X-ENDLIST\n`;\n return template;\n}\n\nfunction pad (num, n) {\n const padding = '0'.repeat(Math.max(0, n - num.toString().length));\n\n return `${padding}${num}`;\n}\n\nfunction generateSegmentFilename (index) {\n return `${index}.vtt`;\n}\n\nfunction printableSegments (segments) {\n const result = [];\n segments.forEach((seg, i) => {\n result.push(`#EXTINF:${seg.duration.toFixed(5)},\n${generateSegmentFilename(i)}`);\n });\n\n return result.join('\\n');\n}\n\nfunction findLongestSegment (segments) {\n let max = 0;\n segments.forEach((seg) => {\n if (seg.duration > max) {\n max = seg.duration;\n }\n });\n\n return max;\n}\n\nfunction printableCues (cues) {\n const result = [];\n cues.forEach((cue) => {\n result.push(printableCue(cue));\n });\n\n return result.join('\\n\\n');\n}\n\nfunction printableCue (cue) {\n const printable = [];\n\n if (cue.identifier) {\n printable.push(cue.identifier);\n }\n\n const start = printableTimestamp(cue.start);\n const end = printableTimestamp(cue.end);\n\n const styles = cue.styles ? `${cue.styles}` : '';\n\n // always add a space after end timestamp, otherwise JWPlayer will not\n // handle cues correctly\n printable.push(`${start} --> ${end} ${styles}`);\n\n printable.push(cue.text);\n\n return printable.join('\\n');\n}\n\nfunction printableTimestamp (timestamp) {\n const ms = (timestamp % 1).toFixed(3);\n timestamp = Math.round(timestamp - ms);\n const hours = Math.floor(timestamp / 3600);\n const mins = Math.floor((timestamp - (hours * 3600)) / 60);\n const secs = timestamp - (hours * 3600) - (mins * 60);\n\n // TODO hours aren't required by spec, but we include them, should be config\n const hourString = `${pad(hours, 2)}:`;\n return `${hourString}${pad(mins, 2)}:${pad(secs, 2)}.${pad(ms * 1000, 3)}`;\n}\n\nvar hls$1 = { hlsSegment, hlsSegmentPlaylist };\n\nconst parse = parser.parse;\nconst compile = compiler.compile;\nconst segment = segmenter.segment;\nconst hls = hls$1;\n\nvar nodeWebvtt = { parse, compile, segment, hls };\n\nvar __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nconst TextTrack = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.textTrackLoadedEvent = createEvent(this, \"texttrack:loaded\", 7);\n this.vtt = null;\n this.language = undefined;\n this.src = undefined;\n this.label = undefined;\n this.default = undefined;\n }\n componentWillLoad() {\n this.loadFile(this.src);\n }\n async loadFile(url) {\n return fetch(url)\n .then((response) => response.text())\n .then((data) => {\n this.vtt = nodeWebvtt.parse(data, { meta: true });\n this.extendMeta();\n if (this.vtt.valid) {\n // Determines the index position of the current text track component in the HTML.\n const textTrackCollection = Array.from(this.el.parentNode.children).filter((element) => element.hasAttribute('language'));\n this.vtt.index = textTrackCollection.indexOf(this.el);\n this.textTrackLoadedEvent.emit({\n webVTT: this.vtt,\n total: textTrackCollection.length,\n isDefault: this.default,\n });\n }\n else {\n console.error(`Failed to load text track file: Check the meta data of the VTT file ${this.src} or set the attributes label and language.`);\n this.textTrackLoadedEvent.emit({ webVTT: null });\n }\n })\n .catch((error) => {\n console.error(`Failed to load text track file ${this.src}: ${error}`);\n this.textTrackLoadedEvent.emit({ webVTT: null });\n });\n }\n extendMeta() {\n if (this.vtt.valid) {\n if (this.vtt.meta) {\n if (this.label)\n this.vtt.meta.label = this.label;\n if (this.language)\n this.vtt.meta.language = this.language;\n }\n else if (this.label && this.language) {\n this.vtt.meta = {\n label: this.label,\n language: this.language,\n };\n }\n else\n this.vtt.valid = false;\n }\n else {\n console.error(`Failed to load text track file: File ${this.src} is not valid`);\n }\n }\n get el() { return getElement(this); }\n};\n__decorate([\n bind()\n], TextTrack.prototype, \"extendMeta\", null);\n\nconst tooltipCss = \":host{position:absolute;z-index:2;left:50%;bottom:calc(100% + 10px)}.tooltip{background-color:var(--vp-menu-color);font-size:0.9em;text-align:center}.tooltip__content{margin:0;padding:0.4em}.tooltip__image{max-height:125px;padding:5px;display:block}.tooltip :after{content:\\\"\\\";position:absolute;top:100%;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:0;height:0;border-left:0.4em solid transparent;border-right:0.4em solid transparent;border-top:0.4em solid var(--vp-menu-color)}\";\nconst XmTooltipStyle0 = tooltipCss;\n\nconst Tooltip = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.show = undefined;\n this.content = undefined;\n this.image = undefined;\n this.positionX = undefined;\n }\n componentDidUpdate() {\n if (this.positionX) {\n const centeredPosition = this.positionX - this.el.clientWidth * 0.5;\n const containerWidth = this.el.parentElement.clientWidth;\n const overflowsToTheLeft = centeredPosition <= 0;\n const overflowsToTheRight = this.positionX + this.el.clientWidth * 0.5 >= containerWidth;\n if (overflowsToTheLeft) {\n this.el.style.left = `0px`;\n }\n else if (overflowsToTheRight) {\n this.el.style.left = `${containerWidth - this.el.clientWidth}px`;\n }\n else {\n this.el.style.left = `${centeredPosition}px`;\n }\n }\n }\n render() {\n return (h(\"div\", { key: '89f81875be3cda97eff9f4623ccb33c7f659ea37', class: \"tooltip\", role: \"tooltip\", hidden: !this.show }, this.image && h(\"img\", { key: '44f610dedc067b0d67288d1c640ec85b9f4c2fc6', class: \"tooltip__image\", src: this.image }), h(\"p\", { key: '04cd94a02c7fceb01878b3130d4b636d5a3caaf1', class: \"tooltip__content\" }, this.content)));\n }\n get el() { return getElement(this); }\n};\nTooltip.style = XmTooltipStyle0;\n\nconst vimeoCss = \":host{display:-ms-flexbox;display:flex;-ms-flex:1 0 auto;flex:1 0 auto;-ms-flex-flow:row nowrap;flex-flow:row nowrap;background-color:black;background-color:var(--vp-bg-color)}xm-aspect-ratio-box{-ms-flex-positive:1;flex-grow:1}iframe,.video-iframe,.overlay{position:absolute;top:0;left:0;height:100%;width:100%}\";\nconst XmVimeoStyle0 = vimeoCss;\n\nconst Vimeo = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.playEvent = createEvent(this, \"play\", 7);\n this.pauseEvent = createEvent(this, \"pause\", 7);\n this.timeUpdateEvent = createEvent(this, \"timeupdate\", 7);\n this.progressEvent = createEvent(this, \"progress\", 7);\n this.seekingEvent = createEvent(this, \"seeking\", 7);\n this.seekedEvent = createEvent(this, \"seeked\", 7);\n this.endedEvent = createEvent(this, \"ended\", 7);\n this.bufferingEvent = createEvent(this, \"buffering\", 7);\n this.bufferedEvent = createEvent(this, \"buffered\", 7);\n this.ratioLoadedEvent = createEvent(this, \"ratioLoaded\", 7);\n this.callbacks = [];\n this.active = false;\n this.src = undefined;\n this.volume = undefined;\n this.ratio = undefined;\n this.player = undefined;\n }\n render() {\n if (!this.active)\n return;\n return (h(\"xm-aspect-ratio-box\", { ratio: this.ratio }, h(\"div\", { ref: (el) => (this.container = el) }, h(\"iframe\", { class: \"video-iframe\" })), h(\"div\", { class: \"overlay\", tabindex: \"0\" }, h(\"slot\", { name: \"overlay\" }))));\n }\n async componentDidLoad() {\n if (!this.active)\n return;\n /**\n * IE11 hack:\n * We need to save the given stencil 'magic' class from our placeholder to\n * place it to the new js generated iframe.\n */\n const iframePlaceholder = this.container.querySelector('iframe');\n const classesForIE11 = iframePlaceholder.getAttribute('class');\n if (iframePlaceholder) {\n iframePlaceholder.remove();\n }\n const { default: Player } = await import('./player.es-c5456970.js');\n this.player = new Player(this.container, {\n id: this.src,\n controls: false,\n autopause: false,\n });\n Promise.all([\n this.player.getVideoWidth(),\n this.player.getVideoHeight(),\n ]).then((dimensions) => {\n this.ratio = dimensions[1] / dimensions[0];\n this.ratioLoadedEvent.emit({\n name: this.el.getAttribute('slot'),\n ratio: this.ratio,\n });\n });\n this.player.on('play', (e) => {\n // When seeking a play event is emitted without payload, ignore that.\n if (e !== undefined)\n this.playEvent.emit(e);\n });\n this.player.on('pause', (e) => this.pauseEvent.emit(e));\n this.player.on('timeupdate', (e) => this.timeUpdateEvent.emit(e));\n this.player.on('progress', (e) => this.progressEvent.emit(e));\n this.player.on('seeking', (e) => this.seekingEvent.emit(e));\n this.player.on('seeked', (e) => this.seekedEvent.emit(e));\n this.player.on('ended', (e) => this.endedEvent.emit(e));\n // Wait for Vimeo Player to be ready to access the actual iframe element\n await this.player.ready();\n // add classes for IE11\n const iframe = this.container.querySelector('iframe');\n if (iframe) {\n iframe.className += ` ${classesForIE11}`;\n }\n // Sometimes vimeo videos has texttrack enabled per default\n await this.player.disableTextTrack();\n // Emit one default timeupdate event to update player with duration\n this.player.getDuration().then((duration) => {\n const e = new CustomEvent('timeupdate', {\n detail: { duration, seconds: 0 },\n });\n this.el.dispatchEvent(e);\n });\n // As controls are disabled we do not want the iframe to be\n // focusable by tabbing\n // @ts-ignore\n this.player.element.tabIndex = -1;\n // Read aspect ratio from video to configure view box\n this.ratio = await this.getAspectRatio();\n // Call all functions collected before the player was ready\n this.applyCallbacks();\n // This event indicates the video component is loaded and ready\n this.el.dispatchEvent(new CustomEvent('ready'));\n }\n async disconnectedCallback() {\n this.player.destroy();\n }\n async srcChanged(value) {\n await this.player.loadVideo(value);\n }\n async volumeChanged(volume) {\n if (this.playerAvailable()) {\n return this.player.setVolume(volume);\n }\n else {\n this.addToCallBacks(() => this.player.setVolume(volume));\n }\n }\n /**\n * Call play on the Vimeo player\n *\n * If the player is not initialized, it will save the function\n * so it can be applied once the player is ready.\n */\n async play() {\n if (this.playerAvailable()) {\n return this.player.play();\n }\n else {\n this.addToCallBacks(() => this.player.play());\n }\n }\n /**\n * Call pause on the Vimeo player\n *\n * If the player is not initialized, it will save the function\n * so it can be applied once the player is ready.\n */\n async pause() {\n if (this.playerAvailable()) {\n return this.player.pause();\n }\n else {\n this.addToCallBacks(() => this.player.pause());\n }\n }\n /**\n * Call seek on the Vimeo player\n *\n * If the player is not initialized, it will save the function\n * so it can be applied once the player is ready.\n */\n async seek(seconds) {\n if (this.playerAvailable()) {\n return this.player.setCurrentTime(seconds);\n }\n else {\n this.addToCallBacks(() => this.player.setCurrentTime(seconds));\n }\n }\n /**\n * Call getCurrentTime on the Vimeo player\n *\n * If the player is not initialized, it will save the function\n * so it can be applied once the player is ready.\n */\n async currentTime() {\n if (this.playerAvailable()) {\n return this.player.getCurrentTime();\n }\n else {\n this.addToCallBacks(() => this.player.getCurrentTime());\n }\n }\n /**\n * Call setPlaybackRate on the Vimeo player\n *\n * If the player is not initialized, it will save the function\n * so it can be applied once the player is ready.\n */\n async setPlaybackRate(playbackRate) {\n if (this.playerAvailable()) {\n return this.player.setPlaybackRate(playbackRate);\n }\n else {\n this.addToCallBacks(() => this.player.setPlaybackRate(playbackRate));\n }\n }\n playerAvailable() {\n return this.player != null;\n }\n addToCallBacks(fn) {\n this.callbacks.push(fn);\n }\n /**\n * Calls all functions in the callback array\n * Empties the queue after that\n */\n applyCallbacks() {\n this.callbacks.forEach((fn) => {\n fn();\n });\n this.callbacks = [];\n }\n async getDimensions() {\n return Promise.all([\n this.player.getVideoWidth(),\n this.player.getVideoHeight(),\n ]).then((dimensions) => ({ width: dimensions[0], height: dimensions[1] }));\n }\n getAspectRatio() {\n return this.getDimensions().then(({ width, height }) => height / width);\n }\n get el() { return getElement(this); }\n static get watchers() { return {\n \"src\": [\"srcChanged\"],\n \"volume\": [\"volumeChanged\"]\n }; }\n};\nVimeo.style = XmVimeoStyle0;\n\nexport { AspectRatioBox as xm_aspect_ratio_box, Controls as xm_controls, Kaltura as xm_kaltura, Player as xm_player, Presentation as xm_presentation, Screen as xm_screen, SettingsMenu as xm_settings_menu, SlidePreviewBar as xm_slide_preview_bar, Slider as xm_slider, TextTrack as xm_text_track, Tooltip as xm_tooltip, Vimeo as xm_vimeo };\n\n//# sourceMappingURL=xm-aspect-ratio-box_12.entry.js.map"],"names":["AspectRatioBox","constructor","hostRef","r","this","ratio","fullscreen","isVideoInFullscreen","handleFullscreenChange","render","h","key","class","style","document","fullscreenElement","webkitFullscreenElement","el","g","Settings","ArrowRight","ArrowLeft","Subtitle","Speed","DE","EN","locales","de","en","isKnownLocale","locale","Object","keys","includes","SettingNames","textTrackDefault","settingList","name","PLAYBACKRATE","label","playbackRate","values","currentValue","TEXTTRACK","textTrack","valueLabels","defaultSettingsSubmenuStatus","isOpen","currentSetting","Mode","defaultStatus","language","duration","volume","muted","mode","PAUSED","openedSettingsMenu","showPlaybackRate","progress","subtitle","enabled","activeCues","settings","loading","lzpad","num","digits","negative","buffer","Math","abs","toString","length","Array","join","concat","format","seconds","secs","floor","s","m","Fullscreen","props","status","onClick","onExit","title","exitFullscreen","innerHTML","onRequest","enterFullscreen","Control","PLAYING","onPause","pause","FINISHED","onPlay","restart","play","CurrentTime","Volume","fnSetVolume","e","target","onChangeVolume","parseFloat","value","volumeSlider","type","min","max","step","onChange","onInput","changeVolume","onUnmute","unmute","onMute","mute","SettingsMenuToggleButton","onCloseSettingsMenu","onOpenSettingsMenu","SubtitleButton","visible","onDisable","disableSubtitles","onEnable","enableSubtitles","Subtitles","map","cue","dir","text","CustomControlButton","config","active","bind","property","descriptor","configurable","get","bound","defineProperty","writable","PlaybackRateToggleButton","onHide","onShow","PlaybackRate","playbackRateSetting","find","setting","__decorate$5","decorators","desc","d","c","arguments","getOwnPropertyDescriptor","Reflect","decorate","i","Controls","playEvent","pauseEvent","enterFullscreenEvent","exitFullscreenEvent","muteEvent","unmuteEvent","changeVolumeEvent","enableTextTrackEvent","disableTextTrackEvent","openSettingsMenuEvent","closeSettingsMenuEvent","changePlaybackRateEvent","showPlaybackRateEvent","hidePlaybackRateEvent","changeToggleControlActiveStateEvent","undefined","textTracks","slidesSrc","toggleControlButtons","hideMenus","closeSettingsMenu","hidePlaybackRate","setVolume","setPlaybackRate","button","changeToggleControlActiveState","enableTextTrack","disableTextTrack","openSettingsMenu","emit","stopPropagation","prototype","Kaltura","timeUpdateEvent","ratioLoadedEvent","endedEvent","seekedEvent","bufferingEvent","bufferedEvent","callbacks","entryId","partnerId","poster","volumeChanged","playerAvailable","player","addToCallBacks","componentDidLoad","Core","Provider","provider","mediaInfo","getMediaConfig","sources","loadPlayer","setSources","playerContainer","appendChild","getView","getAttribute","addEventListener","currentTime","applyCallbacks","disconnectedCallback","destroy","seek","fn","push","forEach","ref","watchers","TextTrackList","vttList","currentCues","loadedFiles","totalFiles","addWebVTT","webVTT","total","splice","index","meta","sortAndInitLists","increaseLoadedFiles","sort","compareWebVTTList","setCurrentCuesByLanguage","currentLanguage","vtt","cues","getActiveCues","filter","start","end","getCurrentCues","getTextTracks","getTextTrackValues","getTextTrackLabels","compareCueLists","a","b","identifier","isSmall","window","matchMedia","matches","fixDecimalPrecision","number","toFixed","isInteractiveElement","_a","tagName","shadowRoot","activeElement","getVideoElement","selector","querySelector","requestFullscreen","element","requestMethod","webkitRequestFullscreen","call","webkitExitFullscreen","Loading","loading$1","__decorate$4","Player","cueListChangeEvent","activeCueUpdateEvent","skippedSeconds","shortcutKeys","Space","Enter","ArrowUp","ArrowDown","f","hasDefaultTexttrack","presentations","timeUpdate","async","detail","cueUpdate","assign","secondary","refresh","setLanguage","_b","candidates","navigator","closestLang","closest","slice","chosen","renderVideoContent","refs","activePresentationMode","renderVideoByRef","primaryRatio","secondaryRatio","slot","video","setAttribute","ondblclick","toggleFullscreen","renderControls","playbackrate","showsubtitle","lang","componentWillLoad","querySelectorAll","presentation","content","reference","split","getOwnPropertyNames","primary","_click","_ended","_fullscreenchange","_setVolume","_setPlaybackRate","removeEventListener","tabindex","_invokePlayerFunction","functionName","params","Promise","all","apply","handleBufferStart","handleBufferEnd","_resizeScreen","_addToggleControlButton","_changeToggleControlActiveState","newToggleControlProps","toggleControl","_addTextTrack","isDefault","_setTextTrack","handleKeyDown","altKey","shiftKey","ctrlKey","metaKey","hasDefaultScrollingBehavior","preventDefault","togglePlay","increaseVolume","decreaseVolume","skipBackward","skipForward","toggleMute","getProgress","doc","fullScreen","mozFullScreen","webkitIsFullScreen","_seek","_openSettingsMenu","_closeSettingsMenu","_changeVolume","getShortcutKeys","resolve","_setupVolume","newValue","oldValue","_setupLanguage","isNaN","_changePlaybackRate","_setupPlaybackRate","_showPlaybackRate","_hidePlaybackRate","enable","_changeTextTrack","endOfVideo","newPosition","Presentation","global","ssr","document$1","getBoundingClientRect","gutterStartDragging","aGutterSize","bGutterSize","HORIZONTAL","NOOP","calc","prefix","createElement","cssText","shift","isString","v","String","elementOrSelector","ele","Error","getOption","options","propName","def","getGutterSize","gutterSize","isFirst","isLast","gutterAlign","defaultGutterFn","gutterDirection","gut","className","defaultElementStyleFn","dim","size","gutSize","defaultGutterStyleFn","obj","Split","idsOption","dimension","clientAxis","position","positionEnd","clientSize","elements","ids","from","parent","parentNode","parentStyle","getComputedStyle","parentFlexDirection","flexDirection","sizes","minSize","minSizes","isArray","maxSize","Infinity","maxSizes","expandToMin","snapOffset","snapOffsets","dragInterval","direction","cursor","gutter","elementStyle","gutterStyle","setElementSize","prop","getSizes","getMousePosition","touches","adjust","offset","percentage","drag","dragging","dragOffset","round","calculateSizes","aBounds","bBounds","trimToMin","sizesToTrim","parentSize","computedStyle","paddingLeft","paddingRight","paddingTop","paddingBottom","innerSize","reduce","excessPixels","toSpare","pixelSizes","pixelSize","elementGutterSize","elementMinSize","newPixelSize","takenPixels","stopDragging","self","stop","move","userSelect","webkitUserSelect","MozUserSelect","pointerEvents","body","startDragging","pairs","adjustToMin","pair","id","temp","gutterElement","setGutterSize","insertBefore","computedSize","setSizes","newSizes","trimmed","newSize","collapse","preserveStyles","preserveGutter","removeChild","__decorate$3","Screen","orientationPortrait","setOrientation","componentDidRender","initSplitScreen","clWrp","landscape","portrait","innerWidth","handlerTemplate","handleScreenSize","hasSmallScreenWidth","Submenu","onCloseSubmenu","onChangeSetting","SubmenuToggleButton","onOpenSubmenu","findIndex","__decorate$2","SettingsMenu","changeTextTrackEvent","submenuStatus","classes","role","_setSetting","_onCloseSubmenu","_getSetting","_onOpenSubmenu","settingName","settingItem","_checkSettingsMenuOpeningState","newState","SlidePreviewBar","slides","handleClick","getSecondsFromCurrentMousePosition","onSeek","onMove","time","positionX","clientWidth","hover","togglePreviewTooltip","thumbnail","dataset","rect","mousePosition","clientX","left","width","getSlides","JSON","parse","slide","startPosition","isLastSlide","onMouseEnter","onMouseLeave","onMouseMove","image","show","__decorate$1","Slider","seekEvent","handleClickOnSlidePreview","hoverStatus","hoverTime","hoverPositionX","part","autocomplete","toggleTooltip","offsetX","pageX","ParserError","message","error","create","TIMESTAMP_REGEXP","validTimestamp","timestamp","test","parseTimestamp","match","parser","input","strict","parts","trim","replace","header","startsWith","headerParts","headerComments","valid","errors","parsedCues","styles","lines","Boolean","times","parseCue","parseCues","headerMeta","splitIdx","indexOf","parseMeta","result","CompilerError","convertTimestamp","hours","pad$1","calculateHours","minutes","calculateMinutes","calculateSeconds","milliseconds","calculateMs","zeroes","output","parse$1","alignToSegmentLength","n","segmentLength","segmenter","parsed","segments","queuedCue","currentSegmentDuration","totalSegmentsDuration","firstCue","lastCue","nextStart","cueLength","silence","shouldQueue","x","nextCueIsInNextSegment","shouldSegment","currentSegment","totalSegments","segmentDuration","segment$1","pad","repeat","generateSegmentFilename","printableTimestamp","ms","mins","nodeWebvtt","compile","entries","lastTime","stringify","startTimestamp","endTimestamp","compileCue","segment","hls","hlsSegment","startOffset","seg","printable","printableCue","printableCues","filename","hlsSegmentPlaylist","segmented","printableSegments","findLongestSegment","__decorate","TextTrack","textTrackLoadedEvent","src","default","loadFile","url","fetch","then","response","data","extendMeta","textTrackCollection","children","hasAttribute","console","catch","Tooltip","componentDidUpdate","centeredPosition","containerWidth","parentElement","overflowsToTheLeft","overflowsToTheRight","hidden","Vimeo","progressEvent","seekingEvent","container","iframePlaceholder","classesForIE11","remove","controls","autopause","getVideoWidth","getVideoHeight","dimensions","on","ready","iframe","getDuration","CustomEvent","dispatchEvent","tabIndex","getAspectRatio","srcChanged","loadVideo","setCurrentTime","getCurrentTime","getDimensions","height"],"sourceRoot":""}