@flowplayer/player 3.33.0 → 3.34.0-rc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core.js +1 -1
- package/default.js +1 -1
- package/embed.js +2 -2
- package/package.json +1 -1
- package/plugins/ads.js +2 -2
- package/plugins/analytics.js +1 -1
- package/plugins/dash.js +1 -1
- package/plugins/ga4.js +1 -1
- package/plugins/hls.js +1 -1
- package/plugins/playlist.d.ts +0 -5
- package/plugins/rts.js +1 -1
- package/plugins/ssai.js +1 -1
- package/plugins/subtitles.d.ts +8 -38
- package/plugins/subtitles.js +1 -1
package/plugins/ssai.js
CHANGED
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
* https://github.com/lancedikson/bowser
|
|
5
5
|
* MIT License | (c) Dustin Diaz 2012-2015
|
|
6
6
|
* MIT License | (c) Denis Demchenko 2015-2019
|
|
7
|
-
*/const F=class Bowser{static getParser(e,t=!1){if("string"!=typeof e)throw new Error("UserAgent should be a string");return new Parser(e,t)}static parse(e){return new Parser(e).getResult()}static get BROWSER_MAP(){return E}static get ENGINE_MAP(){return T}static get OS_MAP(){return _}static get PLATFORMS_MAP(){return P}}.parse(window.navigator.userAgent),{platform:D,os:I,browser:L}=F,B=e=>e&&e.toLowerCase();var q={rnd:Math.random().toString(36).substr(2,32),os:B(I.name+(I.versionName?` ${I.versionName}`:"")),device:B(D.type),browser:B(L.name),browser_version:(L&&L.version?L.version:"unknown").split(".").shift(),plugin_version:"3.33.0"};const x="https://fp-eu-w1-aai.flowplayer.com/in",j="POST",H=["ad-requested","ad-request-error","ad-request-completed","ad-completed","ad-started","ad-error","ad-skipped"],V=["event_type","ad_tag_id","media_id","player_id","site_id","sitegroup_id","rnd","os","device","browser","browser_version","plugin_version","player_version"],Q=["vast_error","reason","request_load_time","ad_type","vast_ad_id"],K=k("ads/analytics"),z=RequestQueue.of(),G=(...e)=>Object.assign({},...e);class Analytics{static of(e,t){return new Analytics(e,t)}static ensure_required_keys(e,t){return e.required_keys.filter(e=>!(e in t))}static pluck_valid_keys(e,t){return((e,...t)=>Object.keys(e).filter(e=>~t.indexOf(e)).reduce((t,r)=>Object.assign(t,{[r]:e[r]}),{}))(t,...e.valid_keys)}static mergeMetadata(e,t={}){return e.metadata=Analytics.pluck_valid_keys(e,G(e.metadata,t,{player_version:"3.33.0"})),e}constructor(e,t={}){this.emitter=e,this.metadata=G(q,t.metadata||{}),this.emitter=e,this.events=t.events||[],this.required_keys=t.required_keys||[],this.optional_keys=t.optional_keys||[],this.valid_keys=this.required_keys.slice(0).concat(this.optional_keys),K(this),this.wireup()}wireup(){this.events.forEach(e=>{this.emitter.on(e,t=>{const r=t.detail,i=G(this.metadata,{event_type:e},r),s=Analytics.pluck_valid_keys(this,i),o=Analytics.ensure_required_keys(this,s);if(K(`Event[${e}]`,{payload:s,observation:r}),o.length)return K(`Analytics.validate_metadata() failed for\n Event[${e}]\n missing keys: ${o}`,s);RequestQueue.rpush(z,[x,j,s])})})}destroy(){const e=this;e.emitter=e.metadata=e.events=e.required_keys=e.optional_keys=e.valid_keys=void 0}}const W="ssai-ad-active";var $;function Y(e,t){var r;switch(t){case $.Preroll:return 0;case $.Postroll:return-1;default:return null===(r=e.ssai)||void 0===r?void 0:r.provider.getContentCurrentTime(e)}}function X(e,t,r){var i,s,o,n;const a=null===(i=t.ssai)||void 0===i?void 0:i.provider.getAdType(),c=null===(n=null===(o=null===(s=t.ssai)||void 0===s?void 0:s.provider)||void 0===o?void 0:o.src)||void 0===n?void 0:n.analyticsId,d={ad_break_time:Y(t,a),ad_muted:t.muted,event_type:e,is_ssai:!0};a&&Object.assign(d,{ad_type:a}),c&&Object.assign(d,{ad_tag_id:c}),r&&"duration"in r&&Object.assign(d,{ad_remaining_seconds:r.duration-r.currentTime,ad_duration_seconds:r.duration}),t.emit("health:record",{event:"ads/"+e,detail:d}),t.emit(e,Object.assign(d,r))}function Z(e,t){var r;e.setState(W,!0);const i=null===(r=e.ssai)||void 0===r?void 0:r.state;i&&(i.adProgress={currentTime:0,duration:t},te(e,i))}function J(e,t){var r;const i=null===(r=e.ssai)||void 0===r?void 0:r.state;i&&(i.adProgress=t,te(e,i))}function ee(e){if(!e.ssai)return;const t=e.ssai.state;e.setState(W,!1),delete t.adProgress,void 0!==t.rate&&(e.playbackRate=t.rate,delete t.rate),"number"==typeof t.snapbackTime&&(c(e,t.snapbackTime),delete t.snapbackTime)}function te(e,t){const r=e.playbackRate;1!==r&&(t.rate=r,e.playbackRate=1)}!function(e){e.Preroll="preroll",e.Midroll="midroll",e.Postroll="postroll"}($||($={}));const re=navigator.languages||[navigator.language];const ie="flowplayer-ssai-ui",se="flowplayer-ssai-controls",oe="flowplayer-ssai-timeline",ne="flowplayer-ssai-indicator",ae={Unknown:"00-00",MediaUnknown:"01-00",MediaUnavailable:"01-01",MediaUnsupportedVideoFormat:"01-02",MediaUnsupportedAudioFormat:"01-03",MediaBitrateExceeded:"01-04",MediaBufferOverread:"01-05",MediaIntegerOverflow:"01-06",MediaQuotaExceeded:"01-07",MediaInvalidCompositionDuration:"01-08",MediaInvalidCompositionSourceDuration:"01-09",MediaInvalidCompositionSourceStartTime:"01-10",MediaMalformedDepth:"01-11",PlaybackUnknown:"02-00",PlaybackVideoBufferUnderRun:"02-01",PlaybackAudioBufferUnderRun:"02-02",PlaybackVideoBufferingTimeout:"02-03",PlaybackAudioBufferingTimeout:"02-04",PlaybackManifestParseError:"02-05",PlaybackVideoDecodeError:"02-06",PlaybackAudioDecodeError:"02-07",PlaybackDroppedFramesExceeded:"02-08",PlaybackPlayheadExceedsDuration:"02-09",PlaybackUnsupportedDevice:"02-10",PlaybackManifestLoadError:"02-11",PlaybackManifestLoadTimeout:"02-12",PlaybackManifestParsingError:"02-13",PlaybackManifestIncompatibleCodecs:"02-14",PlaybackLevelEmptyError:"02-15",PlaybackLevelLoadError:"02-16",PlaybackLevelLoadTimeout:"02-17",PlaybackLevelSwitchError:"02-18",PlaybackAudioTrackLoadError:"02-19",PlaybackAudioTrackLoadTimeout:"02-20",PlaybackFragLoadError:"02-21",PlaybackFragLoadTimeout:"02-22",PlaybackFragDecryptError:"02-23",PlaybackFragParsingError:"02-24",PlaybackFragGap:"02-25",PlaybackRemuxAllocError:"02-26",PlaybackBufferAddCodecError:"02-27",PlaybackBufferIncompatibleCodecs:"02-28",PlaybackBufferAppendError:"02-29",PlaybackBufferStalledError:"02-30",PlaybackBufferFullError:"02-31",PlaybackBufferSeekOverHole:"02-32",PlaybackBufferNudgeOnStall:"02-33",PlaybackInternalException:"02-34",PlaybackInternalAborted:"02-35",PlaybackManifestLoaderFailure:"02-36",PlaybackSegmentBaseLoaderError:"02-37",PlaybackTimeSyncFailed:"02-38",PlaybackFragmentLoaderFailure:"02-39",PlaybackAppendError:"02-40",PlaybackRemoveError:"02-41",PlaybackDataUpdateFailed:"02-42",PlaybackManifestNoStreams:"02-43",PlaybackUnknownManifestType:"02-44",PlaybackDashInsufficientSegmentInfo:"02-45",PlaybackDashNoRepresentations:"02-46",PlaybackDashNoAdaptationSets:"02-47",PlaybackDashNoInitSegment:"02-48",PlaybackDashUnsupportedContainerFormat:"02-49",PlaybackDashKeySystemMismatch:"02-50",PlaybackMultipleKeyIDs:"02-51",PlaybackDashConflictingKeyIDs:"02-52",PlaybackRestrictedStreams:"02-53",PlaybackHlsMasterAndMediaTags:"02-54",PlaybackRepresentationIdConflict:"02-55",PlaybackHlsUnsupportedKeyFormats:"02-56",PlaybackManifestNoVariants:"02-57",PlaybackHlsUndeclaredVariables:"02-58",PlaybackAes128InvalidKeyLength:"02-59",PlaybackDashConflictingAes128Keys:"02-60",PlaybackDashUnsupportedAes128Encryption:"02-61",PlaybackManifestPatchMismatch:"02-62",PlaybackEmptyMediaPlaylist:"02-63",PlaybackNonContiguousCompositionTrack:"02-64",PlaybackDecoderNotFound:"02-65",PlaybackDecoderTemporarilyUnavailable:"02-66",PlaybackIncompatibleAsset:"02-67",PlaybackNoCompatibleExternalDisplay:"02-69",PlaybackOutOfMemory:"02-70",PlaybackToneMappingFailed:"02-71",PlaybackVideoCompositorFailed:"02-72",NetworkUnknown:"03-00",NetworkNoInternet:"03-01",NetworkRequestTimeout:"03-02",NetworkUnableToResolveHost:"03-03",NetworkResourceNotFound:"03-04",NetworkExpiredUrl:"03-05",NetworkUrlResolutionFailed:"03-06",NetworkDownloadErrorIdManifest:"03-07",NetworkDownloadErrorIdSidx:"03-08",NetworkDownloadErrorIdContent:"03-09",NetworkDownloadErrorIdInitialization:"03-10",NetworkDownloadErrorIdXlink:"03-11",NetworkHttpRequestFailed:"03-12",NetworkMaxRetriesExceeded:"03-13",NetworkSegmentMissing:"03-14",NetworkHttp400BadRequest:"03-400",NetworkHttp401Unauthorized:"03-401",NetworkHttp402PaymentRequired:"03-402",NetworkHttp403Forbidden:"03-403",NetworkHttp404NotFound:"03-404",NetworkHttp405MethodNotAllowed:"03-405",NetworkHttp406NotAcceptable:"03-406",NetworkHttp407ProxyAuthenticationRequired:"03-407",NetworkHttp408RequestTimeout:"03-408",NetworkHttp409Conflict:"03-409",NetworkHttp410Gone:"03-410",NetworkHttp411LengthRequired:"03-411",NetworkHttp412PreconditionFailed:"03-412",NetworkHttp413PayloadTooLarge:"03-413",NetworkHttp414URITooLong:"03-414",NetworkHttp415UnsupportedMediaType:"03-415",NetworkHttp416RangeNotSatisfiable:"03-416",NetworkHttp417ExpectationFailed:"03-417",NetworkHttp418ImATeapot:"03-418",NetworkHttp421MisdirectedRequest:"03-421",NetworkHttp422UnprocessableEntity:"03-422",NetworkHttp423Locked:"03-423",NetworkHttp424FailedDependency:"03-424",NetworkHttp425TooEarly:"03-425",NetworkHttp426UpgradeRequired:"03-426",NetworkHttp428PreconditionRequired:"03-428",NetworkHttp429TooManyRequests:"03-429",NetworkHttp431RequestHeaderFieldsTooLarge:"03-431",NetworkHttp451UnavailableForLegalReasons:"03-451",NetworkHttp500InternalServerError:"03-500",NetworkHttp501NotImplemented:"03-501",NetworkHttp502BadGateway:"03-502",NetworkHttp503ServiceUnavailable:"03-503",NetworkHttp504GatewayTimeout:"03-504",NetworkHttp505HTTPVersionNotSupported:"03-505",NetworkHttp506VariantAlsoNegotiates:"03-506",NetworkHttp507InsufficientStorage:"03-507",NetworkHttp508LoopDetected:"03-508",NetworkHttp510NotExtended:"03-510",NetworkHttp511NetworkAuthenticationRequired:"03-511",ContentProtectionUnknown:"04-00",ContentProtectionConcurrentStreamLimitExceeded:"04-01",ContentProtectionEntitlementRefused:"04-02",ContentProtectionLicenseExpired:"04-03",ContentProtectionBadLicenseRequest:"04-04",ContentProtectionLicenseServerTimeout:"04-05",ContentProtectionInsufficientHDCPSupport:"04-06",ContentProtectionGeoRestricted:"04-07",ContentProtectionParentalControlRestricted:"04-08",ContentProtectionCDNUnauthorized:"04-09",ContentProtectionInvalidAccessToken:"04-10",ContentProtectionKeySystemNoKeys:"04-11",ContentProtectionKeySystemNoAccess:"04-12",ContentProtectionKeySystemNoSession:"04-13",ContentProtectionKeySystemNoConfiguredLicense:"04-14",ContentProtectionKeySystemCertificateRequestFailed:"04-15",ContentProtectionKeySystemCertificateUpdateFailed:"04-16",ContentProtectionKeySystemSessionUpdateFailed:"04-17",ContentProtectionKeySystemStatusOutputRestricted:"04-18",ContentProtectionKeySystemStatusInternalError:"04-19",ContentProtectionKeyLoadError:"04-20",ContentProtectionKeyLoadTimeout:"04-21",ContentProtectionCapabilityMediaKeysError:"04-22",ContentProtectionManifestKeySystemUnknown:"04-23",ContentProtectionKeySystemUnavailable:"04-24",ContentProtectionCDMCreationFailed:"04-25",ContentProtectionCDMAttachFailed:"04-26",ContentProtectionCDMServerCertificateRejected:"04-27",ContentProtectionCDMSessionCreationFailed:"04-28",ContentProtectionCDMLicenseRequestFailed:"04-29",ContentProtectionCDMLicenseResponseRejected:"04-30",ContentProtectionManifestMissingDRMInfo:"04-31",ContentProtectionLicenseServerMissing:"04-32",ContentProtectionOfflineSessionRemoved:"04-33",ContentProtectionInitDataTransformationError:"04-34",ContentProtectionServerCertificateRequestFailed:"04-35",ContentProtectionInsufficientHDCPVersion:"04-36",ContentProtectionHDCPVersionCheckFailed:"04-37",AdsUnknown:"08-00",AdsVastParseError:"08-100",AdsInvalidVastSchema:"08-101",AdsVastVersionNotSupported:"08-102",AdsUnexpectedAdType:"08-200",AdsCreativeLinearityMismatch:"08-201",AdsCreativeDurationMismatch:"08-202",AdsCreativeSizeMismatch:"08-203",AdsWrapperVastError:"08-300",AdsVastResponseRedirectTimeout:"08-301",AdsWrapperLimitReached:"08-302",AdsVastResponseEmpty:"08-303",AdsLinearAdDisplayError:"08-400",AdsMediaFileNotFound:"08-401",AdsMediaFileUnavailable:"08-402",AdsUnsupportedMimeType:"08-403",AdsUnableToDisplayMediaFile:"08-405",AdsMezzanineFileMissing:"08-406",AdsMezzanineFileDownloaded:"08-407",AdsRejectedAd:"08-408",AdsInteractiveCreativeError:"08-409",AdsVerificationNodeExecutionError:"08-410",AdsNonLinearAdDisplayError:"08-500",AdsNonLinearAdSizeMismatch:"08-501",AdsNonLinearAdFetchError:"08-502",AdsNonLinearUnsupportedType:"08-503",AdsCompanionAdDisplayError:"08-600",AdsCompanionAdSizeMismatch:"08-601",AdsRequiredCompanionAdError:"08-602",AdsCompanionAdFetchError:"08-603",AdsUndefinedVastError:"08-900",AdsUnknownVpaidError:"08-901",AdsVastDocumentEmpty:"08-999"},ce=Object.fromEntries(Object.entries(ae).map(([e,t])=>[t,e])),de=[1e7]+""+-1e3+-4e3+-8e3+-1e11,le="off";class FlowplayerError extends Error{static getErrorKey(e){return e in ce?ce[e]:ce["00-00"]}constructor(e,t,r={}){super(e),this.message=e,this.flowplayerErrorCode=t,this.config=r,this.id="undefined"==typeof crypto?"":de.replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16)),this.isFatal=!!r.isFatal,this.errorKey=FlowplayerError.getErrorKey(this.flowplayerErrorCode)||"unknown"}toJSON(){return{message:this.message,flowplayer_error_code:this.flowplayerErrorCode,id:this.id,root_error_id:this.config.rootErrorId,resource:this.config.resource,is_fatal:this.isFatal,is_retry:!!this.config.isRetry}}}function ue(e,t){const r=new google.ima.dai.api.UiSettings,i=e.opt("lang")||function(){try{return re.reduce((e,t)=>~t.indexOf("-")?e.concat(t,t.split("-")[0]):e.concat(t),[])}catch(e){return[]}}().find(e=>!e.includes("-"))||"en";r.setLocale(i);const s=new google.ima.dai.api.StreamManager(e,function(e,t){const r=e._customElements.get(t);return r&&e.root.querySelector(r)||void 0}(e,ie),r);return s.addEventListener([google.ima.dai.api.StreamEvent.Type.LOADED,google.ima.dai.api.StreamEvent.Type.ERROR,google.ima.dai.api.StreamEvent.Type.STREAM_INITIALIZED,google.ima.dai.api.StreamEvent.Type.AD_BREAK_STARTED,google.ima.dai.api.StreamEvent.Type.AD_PROGRESS,google.ima.dai.api.StreamEvent.Type.AD_BREAK_ENDED,google.ima.dai.api.StreamEvent.Type.RESUMED,google.ima.dai.api.StreamEvent.Type.PAUSED,google.ima.dai.api.StreamEvent.Type.STARTED,google.ima.dai.api.StreamEvent.Type.COMPLETE,google.ima.dai.api.StreamEvent.Type.SKIPPED,google.ima.dai.api.StreamEvent.Type.CLICK],r=>{!function(e,t,r,i){var s;if((null===(s=e.ssai)||void 0===s?void 0:s.provider)!==i)return;switch(r.type){case google.ima.dai.api.StreamEvent.Type.STREAM_INITIALIZED:return async function(e,t,r,i){var s,o;const n=i.getStreamData().streamId;if(!n||!t.isPod)return;if(!t.isVod){const r=null===(s=t.src)||void 0===s?void 0:s.streamUrl;return r?(t.daiStream=t.buildPodStreamURL(r,n),e.setSrc(t.daiStream)):console.error("streamUrl param is missing : https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5?service=pod#create_a_simple_video_player_2")}const a=null===(o=t.src)||void 0===o?void 0:o.requestStreamUrl;if(!a)return console.error("requestStreamUrl param is missing : https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5?service=pod#vod-pod-serving_1");try{t.daiStream=await a(r,n),r.loadStreamMetadata(),e.setSrc(t.daiStream)}catch(r){me(e,t,n)}}(e,i,t,r);case google.ima.dai.api.StreamEvent.Type.RESUMED:return X(h,e,pe(e,r,i));case google.ima.dai.api.StreamEvent.Type.PAUSED:return X(f,e,pe(e,r,i));case google.ima.dai.api.StreamEvent.Type.COMPLETE:return X(v,e,pe(e,r,i));case google.ima.dai.api.StreamEvent.Type.SKIPPED:return X(g,e,pe(e,r,i));case google.ima.dai.api.StreamEvent.Type.LOADED:return function(e,t,r){const i=r.getStreamData().url;if(!i||t.isPod&&!t.isVod)return;t.daiStream=i,e.setSrc(i)}(e,i,r);case google.ima.dai.api.StreamEvent.Type.STARTED:return i.currentAd=r.getAd(),X(y,e,pe(e,r,i));case google.ima.dai.api.StreamEvent.Type.AD_BREAK_STARTED:return Z(e),X(u,e,pe(e,r,i));case google.ima.dai.api.StreamEvent.Type.AD_BREAK_ENDED:return X(p,e,pe(e,r,i)),ee(e),i.currentAd=void 0;case google.ima.dai.api.StreamEvent.Type.ERROR:return me(e,i,r.getStreamData().url||"",r);case google.ima.dai.api.StreamEvent.Type.AD_PROGRESS:{const t=pe(e,r,i);return J(e,t),X(m,e,t)}case google.ima.dai.api.StreamEvent.Type.CLICK:(function(e){if(!e.paused)e.togglePlay(!1)})(e)}}(e,s,r,t)},!1),e.on(b,r=>{var i,o;(null===(i=e.ssai)||void 0===i?void 0:i.provider)===t&&(null===(o=r.detail)||void 0===o||o.samples.forEach(e=>s.processMetadata("ID3",e.data,e.pts)))}),e.on(w,r=>{var i;const o=r.detail;if(!o||(null===(i=e.ssai)||void 0===i?void 0:i.provider)!==t)return;const n=o.event.messageData,a=o.event.calculatedPresentationTime;s.processMetadata("urn:google:dai:2018",n,a)}),s}function pe(e,t,r){const i=r.currentAd,s=Object.assign({},t.getStreamData().adProgressData);return i&&Object.assign(s,{vast_ad_id:i.getAdId()}),(null==i?void 0:i.getAdPodInfo())&&Object.assign(s,{position:i.getAdPodInfo().getAdPosition(),totals:i.getAdPodInfo().getTotalAds()}),s}function me(e,t,r,i){var s,o,n,a,c;e.emit("flowplayer:error",{error:new FlowplayerError((null===(s=null==i?void 0:i.getStreamData())||void 0===s?void 0:s.errorMessage)||"error loading stream",ae.AdsUnknown,{isFatal:!0,showErrorUI:!(null===(o=t.src)||void 0===o?void 0:o.backupStream),resource:(null===(n=null==i?void 0:i.getStreamData())||void 0===n?void 0:n.url)||(null===(a=t.src)||void 0===a?void 0:a.contentSourceId)||r,retryOpts:{retry:le}})}),(null===(c=t.src)||void 0===c?void 0:c.backupStream)&&e.setSrc(t.src.backupStream)}var ge;!function(e){e.Preroll="preroll",e.Midroll="midroll",e.Postroll="postroll"}(ge||(ge={}));const fe=k("ads/ima/sdk");var he;async function ye(e,t){var r;const i=null===(r=null===window||void 0===window?void 0:window.google)||void 0===r?void 0:r.ima;if(t?null==i?void 0:i.dai:i)return void fe(":noop");const s=t?"https://imasdk.googleapis.com/js/sdkloader/ima3_dai.js":e._storage.getItem("ima/debug")?"https://imasdk.googleapis.com/js/sdkloader/ima3_debug.js":"https://imasdk.googleapis.com/js/sdkloader/ima3.js";try{return await async function(e){return new Promise((t,r)=>{let i=document.querySelector(`script[src='${e}']`);if(i)return ve(i,t,r);i=document.createElement("script"),i.setAttribute("state",he.LOADING),ve(i,t,r),i.src=e,document.head.appendChild(i)})}(s),void fe(":loaded")}catch(e){fe(`:error ${e.message}`,e)}}function ve(e,t,r){const i=e.getAttribute("state");if(i&&[he.ERROR,he.LOADED].includes(i))return t(void 0);e.addEventListener("load",()=>{e.setAttribute("state",he.LOADED),t(void 0)},{once:!0}),["error","abort"].forEach(t=>{e.addEventListener(t,()=>{e.setAttribute("state",he.ERROR),r("script failed to load")},{once:!0})})}!function(e){e.LOADING="loading",e.LOADED="loaded",e.ERROR="error"}(he||(he={}));class Dai{constructor(e){this.make_analytics(e)}async onload(e,t){var r,i;return await ye(e,!0),(null===(i=null===(r=window.google)||void 0===r?void 0:r.ima)||void 0===i?void 0:i.dai)?((null==this?void 0:this.streamManager)||(this.streamManager=ue(e,this)),this.src=t,this.isPod=!!t.customAssetKey||!!t.requestStreamUrl,this.isVod=!!t.contentSourceId||!!t.videoId||!!t.requestStreamUrl,this.isPod?this.requestPodStream(t):void this.requestStream(t)):(console.warn("google.ima.dai unavailable"),void(t.backupStream&&e.setSrc(t.backupStream)))}onNewSrc(e,t){var r;t.src!==this.daiStream&&(this.daiStream=void 0,e.ssai=void 0,null===(r=this.streamManager)||void 0===r||r.reset())}make_analytics(e){const t=Analytics.of(e,{required_keys:V,events:H,optional_keys:Q});e.on("config",()=>{var r;return Analytics.mergeMetadata(t,null===(r=e.opts)||void 0===r?void 0:r.metadata)})}onId3(e){var t;const r={},i=e.value;r[i.key]=i.data,null===(t=this.streamManager)||void 0===t||t.onTimedMetadata(r)}getAdType(){if(this.currentAd)switch(this.currentAd.getAdPodInfo().getPodIndex()){case 0:return ge.Preroll;case-1:return ge.Postroll;case-2:return;default:return ge.Midroll}}getContentCurrentTime(e){const t=e.currentTime;return this.streamManager?this.streamManager.contentTimeForStreamTime(t):t}setContentCurrentTime(e,t){}getContentDuration(e){const t=e.duration;return this.streamManager?this.streamManager.contentTimeForStreamTime(t):t}getPreviousActiveAdStart(e,t){var r;const i=null===(r=null==this?void 0:this.streamManager)||void 0===r?void 0:r.previousCuePointForStreamTime(t);if(i&&!i.played)return i.start}requestStream(e){var t;const r=this.isVod?new google.ima.dai.api.VODStreamRequest:new google.ima.dai.api.LiveStreamRequest;null===(t=this.streamManager)||void 0===t||t.requestStream(Object.assign(r,e))}requestPodStream(e){var t;const r=this.isVod?new google.ima.dai.api.PodVodStreamRequest:new google.ima.dai.api.PodStreamRequest;null===(t=this.streamManager)||void 0===t||t.requestStream(Object.assign(r,e))}buildPodStreamURL(e,t){return e.replace("[[STREAMID]]",t)}}Dai.Type="google/dai";let be=null;const we=()=>{if(be)return be;const e=class extends YospaceAdManagement.AnalyticEventObserver{constructor(e){super(),this.video=e}onAdvertBreakStart(e){const t=e.getDuration();if(!e.isActive()&&t){const e=a(this.video);c(this.video,e+t/1e3)}Z(this.video,e.getStart()),X(u,this.video)}onAdvertBreakEnd(){ee(this.video),X(p,this.video)}onAdvertStart(e){}onAdvertEnd(){}onTrackingEvent(e){}};return be=e,e};function Se(e,t){YospaceAdManagement.SessionVOD.create(e,t.ssai.properties,e=>{const r=e.getPayload();if(r.getSessionResult()===YospaceAdManagement.SessionResult.INITIALISED){t.ssai.session=r;const e=new(we())(t);r.addAnalyticObserver(e),t.setSrc({src:r.getPlaybackUrl()}),setInterval(()=>{const e=1e3*a(t);r.onPlayheadUpdate(e),function(e,t,r){const i=e.getCurrentAdBreak();if(!i)return;const s={currentTime:r-i.getStart(),duration:i.getDuration()};J(t,s),X(m,t,s)}(r,t,e)},250)}else console.warn("YoSpace Failed to initialise session. ResultCode = "+r.getResultCode())})}class Yospace{static exists(){return!!window.YospaceAdManagement}constructor(e){!function(e){Object.defineProperty(e,"currentTime",{get:function(){if(e.ssai){const t=e.ssai.state.adProgress;return t?t.currentTime:e.ssai.provider.getContentCurrentTime(e)}return a(e)},set:function(t){var r;if(e.ssai){if(e.ssai.state.adProgress)return;return null===(r=e.ssai.provider)||void 0===r?void 0:r.setContentCurrentTime(e,t)}return c(e,t)}}),Object.defineProperty(e,"duration",{get:function(){if(e.ssai){const t=e.ssai.state.adProgress;return t?t.duration:e.ssai.provider.getContentDuration(e)}return l(e)},set:function(){}})}(e)}onload(e,t){Object.assign(e.ssai,function(){const e=new YospaceAdManagement.SessionProperties;return e.setUserAgent(navigator.userAgent),{properties:e}}()),t&&t.src&&Se(t.src,e)}getContentCurrentTime(e){const t=a(e),r=e.ssai.session;return r?r.getContentPositionForPlayhead(1e3*t)/1e3:t}setContentCurrentTime(e,t){const r=e.ssai.session;if(!r)return c(e,t);return c(e,r.getPlayheadForContentPosition(1e3*t)/1e3)}getContentDuration(e){const t=e.ssai.session,r=l(e);return t?t.getContentPositionForPlayhead(t.getDuration())/1e3:r}getAdType(){}getPreviousActiveAdStart(e,t){const r=e.ssai.session;if(!r)return;const i=r.getAdBreaks();let s;const o=1e3*t;return i.forEach(e=>{void 0===s&&e.getStart()<o&&e.isActive()&&(s=e)}),void 0!==s?s.getStart()/1e3:void 0}}function ke(e){var n;if((null===(n=this.player.ssai)||void 0===n?void 0:n.provider)===this)switch(e.type){case s:case i:return function(e){if(!e.player.hasState(W))return;return X(e.player.paused?f:h,e.player)}(this);case t:return function(e){const t=e.player,r=t.hls;if(!r)return;if(t.hasState(W))return r.config.maxBufferLength=1;const i=t.currentTime;let s,o=0;for(;o<t.buffered.length;o++)if(t.buffered.start(o)-1<=i&&t.buffered.end(o)>=i){s=t.buffered.end(o);break}if(void 0===s)return;const n=e.getAdCues().find(e=>!e.played&&e.endTime>s&&e.startTime<=s);return r.config.maxBufferLength=n?1:30}(this);case r:return function(e){if(!e.activeCue||!e.player.hasState(W))return;const t=e.player.currentTime;if(t<=e.activeCue.endTime)return e.ad={duration:e.activeCue.endTime-e.activeCue.startTime,currentTime:t-e.activeCue.startTime},X(m,e.player,Object.assign(Object.assign({},e.ad),e.podInfo));if(e.podInfo.totals!==e.podInfo.position)return;Ae(e)}(this);case o:return Ae(this)}}function Ae(e){e.activeCue&&e.player.hasState(W)&&(X(v,e.player),X(p,e.player),ee(e.player),e.activeCue.played=!0,e.activeCue=void 0)}Yospace.Type="yospace";var Me=function(e){var t={exports:{}};return e(t,t.exports),t.exports}(function(e,t){var r=function(){for(var e=new Array(256),t=0;t<256;++t)e[t]="%"+((t<16?"0":"")+t.toString(16)).toUpperCase();return e}(),i=Object.prototype.hasOwnProperty;t.arrayToObject=function(e,t){for(var r=t.plainObjects?Object.create(null):{},i=0;i<e.length;++i)void 0!==e[i]&&(r[i]=e[i]);return r},t.merge=function(e,r,s){if(!r)return e;if("object"!=typeof r){if(Array.isArray(e))e.push(r);else{if("object"!=typeof e)return[e,r];(s.plainObjects||s.allowPrototypes||!i.call(Object.prototype,r))&&(e[r]=!0)}return e}if("object"!=typeof e)return[e].concat(r);var o=e;return Array.isArray(e)&&!Array.isArray(r)&&(o=t.arrayToObject(e,s)),Object.keys(r).reduce(function(e,o){var n=r[o];return i.call(e,o)?e[o]=t.merge(e[o],n,s):e[o]=n,e},o)},t.decode=function(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(t){return e}},t.encode=function(e){if(0===e.length)return e;for(var t="string"==typeof e?e:String(e),i="",s=0;s<t.length;++s){var o=t.charCodeAt(s);45===o||46===o||95===o||126===o||o>=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122?i+=t.charAt(s):o<128?i+=r[o]:o<2048?i+=r[192|o>>6]+r[128|63&o]:o<55296||o>=57344?i+=r[224|o>>12]+r[128|o>>6&63]+r[128|63&o]:(s+=1,o=65536+((1023&o)<<10|1023&t.charCodeAt(s)),i+=r[240|o>>18]+r[128|o>>12&63]+r[128|o>>6&63]+r[128|63&o])}return i},t.compact=function(e,r){if("object"!=typeof e||null===e)return e;var i=r||[],s=i.indexOf(e);if(-1!==s)return i[s];if(i.push(e),Array.isArray(e)){for(var o=[],n=0;n<e.length;++n)e[n]&&"object"==typeof e[n]?o.push(t.compact(e[n],i)):void 0!==e[n]&&o.push(e[n]);return o}for(var a=Object.keys(e),c=0;c<a.length;++c){var d=a[c];e[d]=t.compact(e[d],i)}return e},t.isRegExp=function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},t.isBuffer=function(e){return null!=e&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))}}),Ee={brackets:function(e){return e+"[]"},indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},Pe={delimiter:"&",strictNullHandling:!1,skipNulls:!1,encode:!0,encoder:Me.encode},_e=function e(t,r,i,s,o,n,a,c,d){var l=t;if("function"==typeof a)l=a(r,l);else if(l instanceof Date)l=l.toISOString();else if(null===l){if(s)return n?n(r):r;l=""}if("string"==typeof l||"number"==typeof l||"boolean"==typeof l||Me.isBuffer(l))return n?[n(r)+"="+n(l)]:[r+"="+String(l)];var u,p=[];if(void 0===l)return p;if(Array.isArray(a))u=a;else{var m=Object.keys(l);u=c?m.sort(c):m}for(var g=0;g<u.length;++g){var f=u[g];o&&null===l[f]||(p=Array.isArray(l)?p.concat(e(l[f],i(r,f),i,s,o,n,a,c,d)):p.concat(e(l[f],r+(d?"."+f:"["+f+"]"),i,s,o,n,a,c,d)))}return p},Te=Object.prototype.hasOwnProperty,Ce={delimiter:"&",depth:5,arrayLimit:20,parameterLimit:1e3,strictNullHandling:!1,plainObjects:!1,allowPrototypes:!1,allowDots:!1,decoder:Me.decode},Ue=function e(t,r,i){if(!t.length)return r;var s,o=t.shift();if("[]"===o)s=(s=[]).concat(e(t,r,i));else{s=i.plainObjects?Object.create(null):{};var n="["===o.charAt(0)&&"]"===o.charAt(o.length-1)?o.slice(1,-1):o,a=parseInt(n,10);!isNaN(a)&&o!==n&&String(a)===n&&a>=0&&i.parseArrays&&a<=i.arrayLimit?(s=[])[a]=e(t,r,i):s[n]=e(t,r,i)}return s},Re=function(e,t,r){if(e){var i=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,s=/(\[[^[\]]*])/g,o=/(\[[^[\]]*])/.exec(i),n=o?i.slice(0,o.index):i,a=[];if(n){if(!r.plainObjects&&Te.call(Object.prototype,n)&&!r.allowPrototypes)return;a.push(n)}for(var c=0;null!==(o=s.exec(i))&&c<r.depth;){if(c+=1,!r.plainObjects&&Te.call(Object.prototype,o[1].slice(1,-1))&&!r.allowPrototypes)return;a.push(o[1])}return o&&a.push("["+i.slice(o.index)+"]"),Ue(a,t,r)}},Ne=function(e,t){var r,i,s=e,o=t||{},n=void 0===o.delimiter?Pe.delimiter:o.delimiter,a="boolean"==typeof o.strictNullHandling?o.strictNullHandling:Pe.strictNullHandling,c="boolean"==typeof o.skipNulls?o.skipNulls:Pe.skipNulls,d=("boolean"==typeof o.encode?o.encode:Pe.encode)?"function"==typeof o.encoder?o.encoder:Pe.encoder:null,l="function"==typeof o.sort?o.sort:null,u=void 0!==o.allowDots&&o.allowDots;if(null!==o.encoder&&void 0!==o.encoder&&"function"!=typeof o.encoder)throw new TypeError("Encoder has to be a function.");"function"==typeof o.filter?s=(i=o.filter)("",s):Array.isArray(o.filter)&&(r=i=o.filter);var p,m=[];if("object"!=typeof s||null===s)return"";p=o.arrayFormat in Ee?o.arrayFormat:"indices"in o?o.indices?"indices":"repeat":"indices";var g=Ee[p];r||(r=Object.keys(s)),l&&r.sort(l);for(var f=0;f<r.length;++f){var h=r[f];c&&null===s[h]||(m=m.concat(_e(s[h],h,g,a,c,d,i,l,u)))}return m.join(n)},Oe=function(e,t){var r=t||{};if(null!==r.decoder&&void 0!==r.decoder&&"function"!=typeof r.decoder)throw new TypeError("Decoder has to be a function.");if(r.delimiter="string"==typeof r.delimiter||Me.isRegExp(r.delimiter)?r.delimiter:Ce.delimiter,r.depth="number"==typeof r.depth?r.depth:Ce.depth,r.arrayLimit="number"==typeof r.arrayLimit?r.arrayLimit:Ce.arrayLimit,r.parseArrays=!1!==r.parseArrays,r.decoder="function"==typeof r.decoder?r.decoder:Ce.decoder,r.allowDots="boolean"==typeof r.allowDots?r.allowDots:Ce.allowDots,r.plainObjects="boolean"==typeof r.plainObjects?r.plainObjects:Ce.plainObjects,r.allowPrototypes="boolean"==typeof r.allowPrototypes?r.allowPrototypes:Ce.allowPrototypes,r.parameterLimit="number"==typeof r.parameterLimit?r.parameterLimit:Ce.parameterLimit,r.strictNullHandling="boolean"==typeof r.strictNullHandling?r.strictNullHandling:Ce.strictNullHandling,""===e||null==e)return r.plainObjects?Object.create(null):{};for(var i="string"==typeof e?function(e,t){for(var r={},i=e.split(t.delimiter,t.parameterLimit===1/0?void 0:t.parameterLimit),s=0;s<i.length;++s){var o,n,a=i[s],c=-1===a.indexOf("]=")?a.indexOf("="):a.indexOf("]=")+1;-1===c?(o=t.decoder(a),n=t.strictNullHandling?null:""):(o=t.decoder(a.slice(0,c)),n=t.decoder(a.slice(c+1))),Te.call(r,o)?r[o]=[].concat(r[o]).concat(n):r[o]=n}return r}(e,r):e,s=r.plainObjects?Object.create(null):{},o=Object.keys(i),n=0;n<o.length;++n){var a=o[n],c=Re(a,i[a],r);s=Me.merge(s,c,r)}return Me.compact(s)};const Fe=k("fpads:macros"),De=/\[([\s\S]+?)\]/g;class Macros{static run(e){try{return e()}catch(e){return void console.error(e)}}static merge(...e){return e.reduce((e,t)=>Object.assign(e,t),{})}static cast(e){return void 0===e?"":"function"==typeof e?encodeURIComponent(Macros.run(e)||""):"string"==typeof e?encodeURIComponent(e):"number"==typeof e||"boolean"==typeof e?e.toString():""}static normalize(e){return e.trim()}static process_obj(e,t,r){return Object.keys(e).reduce((i,s)=>{const o=Macros.process_str(s,t,r,!0),n=e[s];return null===n?(i[o]=n,i):"object"==typeof n?(i[o]=Macros.process_obj(n,t,r),i):"string"==typeof n?(i[o]=Macros.process_str(n,t,r),i):(console.error(new Error(`${n} at ${s} not a handled Macro type`)),i)},{})}static process_str(e,t,r,i=!1){return e.replace(t.pattern,(e,t)=>{const s=Macros.normalize(t);if(!(s in r)||void 0===r[s])return e;const o=r[s],n=i?o:Macros.cast(o);return Fe("Macro.replace(raw: %s, macro: %s, value: %s)",i,t,n),n})}constructor(e={},t=De){this.vars=e,this.pattern=t}fork(e={},t=this.pattern){const r=Macros.merge(this.vars,e);return new Macros(r,t)}compile(e,t={}){const r=Macros.merge(this.vars,t),[i,s]=e.split("?"),o=Oe(s||"",{strictNullHandling:!0,decoder:e=>e}),n=Ne(Macros.process_obj(o,this,r),{encode:!1,strictNullHandling:!0});return Macros.process_str(i,this,r,!0)+"?"+n}}function Ie(e,t={width:0,height:0}){let r,i;try{const e=document.createElement("a");e.href=r=window.location!=window.parent.location?document.referrer:document.location.href,i=e.hostname}catch(e){console.error(e)}const{width:s,height:o}=t,{video_source:n}=e||{},a=function(){const e=window;return"object"==typeof e.__flowplayerAdParameters?e.__flowplayerAdParameters:{}}();return Object.assign({random:Date.now(),page_url:r,domain:i,player_width:s,player_height:o,video_url:n,videourl:n},a)}Macros.patterns={BRACKETS:De,CURLY:/\{([\s\S]+?)\}/g,UNDERSCORE:/__([\s\S]+?)__/g};const Le="X-AD-CREATIVE-SIGNALING";class MediaTailor{constructor(e){this.ad={duration:0,currentTime:0},this.podInfo={totals:0,position:0},this.player=e,e.on([r,t,s,i,o],ke.bind(this))}onload(e,t){this.stream=this.compileMacros(e,t),e.setSrc(this.stream)}compileMacros(e,t){var r,i;const s=e.opts,o=Ie(void 0,{width:e.clientWidth,height:e.clientHeight});(s.duration||(null===(r=s.metadata)||void 0===r?void 0:r.duration))&&Object.assign(o,{media_duration:s.duration||(null===(i=s.metadata)||void 0===i?void 0:i.duration)});return new Macros(Object.assign({referrer_url:document.referrer,autoplay:!!e.opts.autoplay},e.opts.metadata,t.parameters,o)).compile(t.stream)}onNewSrc(e,t){t.src!==this.stream&&(this.activeCue=void 0,e.ssai=void 0)}getPreviousActiveAdStart(e,t){if(this.activeCue)return;const r=this.getAdCues(),i=r.slice().reverse().find(e=>e.endTime<t);if(!i||i.played)return;const s=r[r.indexOf(i)+1];return!s||t<s.startTime&&(t+.1<=s.startTime||s.played||e.paused)?this.findAdBreakStartCue(i).startTime:void 0}onId3(e){var t;if(e.played||e==this.activeCue)return;if((null===(t=e.value)||void 0===t?void 0:t.key)!==Le)return;if(this.activeCue)return X(v,this.player),this.activeCue.played=!0,this.activeCue=e,++this.podInfo.position,X(y,this.player,Object.assign(Object.assign({},this.ad),this.podInfo));const r=this.findAdBreakStartCue(e);if(r!==e)return this.player.currentTime=r.startTime;Math.abs(e.startTime-this.player.currentTime)>1&&(this.player.currentTime=e.startTime),this.activeCue=e,Z(this.player),this.setPodInfo(e),X(u,this.player),X(y,this.player,Object.assign(Object.assign({},this.ad),this.podInfo))}setPodInfo(e){const t=this.getAdCues().filter(t=>t.startTime>=e.startTime);let r=1;for(;r<=t.length-1&&!(t[r].startTime-t[r-1].endTime>1);)r++;return this.podInfo={totals:r,position:1},this.player.hasState("is-live")?this.ad_type=$.Midroll:e.startTime<=1?this.ad_type=$.Preroll:Math.abs(t[r-1].endTime-this.player.duration)<=1?this.ad_type=$.Postroll:this.ad_type=$.Midroll}findAdBreakStartCue(e){const t=this.getAdCues().filter(t=>t.startTime<=e.startTime).reverse();let r=e,i=1;for(;i<t.length&&!(t[i-1].startTime-t[i].endTime>.1);)r=t[i],i++;return r}getAdCues(){var e;const t=(null===(e=Array.from(this.player.textTracks).find(e=>"metadata"===e.kind))||void 0===e?void 0:e.cues)||[];return Array.from(t).slice().filter(e=>{var t;return(null===(t=e.value)||void 0===t?void 0:t.key)===Le})}getContentCurrentTime(e){if(!this.activeCue)return 0;let t=this.findAdBreakStartCue(this.activeCue).startTime;return this.getAdCues().filter(e=>e.endTime<t).forEach(e=>{t-=e.endTime-e.startTime}),t}getAdType(){return this.ad_type}getContentDuration(e){return 0}setContentCurrentTime(e,t){}}MediaTailor.Type="mediaTailor";const Be=(e,t)=>new(((e,t)=>{const r=e.get(t);if(!r)throw new Error(`no flowplayer component with the name ${t} exists`);const i=window.customElements.get(t);if(!i)throw new Error(`no default flowplayer component with the name ${t} exists`);const s=window.customElements.get(r);return"function"!=typeof s?i:s})(e._customElements,t))(e),qe=(e,t,r)=>{window.customElements.get(t)||window.customElements.define(t,r),e.customElements.get(t)||e.customElements.set(t,t)};class FlowplayerComponent extends HTMLElement{constructor(e){super(),this.player=e}}class SSAIAdUi extends FlowplayerComponent{constructor(e){super(e),this.className="fp-ssai-ui",this.append(...this.fsIcons(),...this.player.createComponents(se,ne))}fsIcons(){return this.player.createComponents("flowplayer-fullscreen-enter-icon","flowplayer-fullscreen-exit-icon").map(e=>(e.onclick=()=>this.player.toggleFullScreen(),e))}}class SSAITimeline extends FlowplayerComponent{constructor(e){super(e),this.className="fp-ssai-timeline";const t=document.createElement("div");t.className="fp-ssai-progress fp-color",this.append(t),this.player.on(p,()=>{t.classList.remove("go"),"--ssai-percent-complete --ssai-percent-previous".split(" ").forEach(e=>this.style.setProperty(e,"0"))}),this.player.on(m,e=>{var r,i;const s=null===(r=e.detail)||void 0===r?void 0:r.currentTime,o=null===(i=e.detail)||void 0===i?void 0:i.duration;if(void 0===o||void 0===s)return;const n=s/o*100,a=t.style.getPropertyValue("--ssai-percent-complete");t.classList.remove("go"),t.style.setProperty("--ssai-percent-previous",a),t.style.setProperty("--ssai-percent-complete",n.toFixed(3)),t.classList.add("go")})}}function xe(e){const t="number"==typeof e?e:parseInt(e,10);return(t>9?"":"0")+t}function je(e){if(isNaN(e)||e>=Number.MAX_SAFE_INTEGER)return"";const t=e<0?"-":"";e=Math.round(Math.abs(e));const r=Math.floor(e/3600);let i=Math.floor(e/60);return e-=60*i,r>=1?(i-=60*r,t+r+":"+xe(i)+":"+xe(e)):t+xe(i)+":"+xe(e)}class SSAIControls extends FlowplayerComponent{constructor(e){super(e),this.className="fp-ssai-controls";const t=document.createElement("span");t.className="fp-ssai-elapsed";const r=document.createElement("span");r.className="fp-ssai-duration",this.player.on(m,e=>{const i=e.detail;i&&(t.textContent=je(i.currentTime||0),r.textContent=je(i.duration||0))}),this.append(...this.player.createComponents("flowplayer-control-buttons"),t,...this.player.createComponents(oe),r,...this.player.createComponents("flowplayer-volume-control"))}}class SSAIAdIndicator extends FlowplayerComponent{constructor(e){super(e),this.className="fp-ssai-indicator",this.player.on(y,e=>{var t,r;const i=null===(t=e.detail)||void 0===t?void 0:t.totals,s=null===(r=e.detail)||void 0===r?void 0:r.position;void 0!==i&&void 0!==s&&(this.textContent=`${this.player.i18n("ads.indicator","ADS")} ${s} / ${i}`)})}}var He,Ve=Object.freeze({__proto__:null,ID3:"ID3"});const Qe=((He=class ID3{init(e,t,r){r.textTracks.addEventListener("addtrack",({track:e})=>{if(e&&"metadata"===e.kind)return"id3"==e.id||"id3"==e.label||"com.apple.streaming"==e.inBandMetadataTrackDispatchType?function(e,t){t.mode="hidden",t.addEventListener("cuechange",async()=>{Array.from(t.activeCues||[]).forEach(async t=>{(function(e){return"object"==typeof e.value&&"string"==typeof e.value.key&&!!e.value.data})(t)&&e.emit("ID3",{cue:t})})})}(r,e):void 0})}}).pluginName="id3",He.events=Ve,He),Ke=e(window,Qe);var ze;const Ge=((ze=class Ssai{constructor(e,t){this.umd=e,this.providers=[],this.player=t,qe(e,ie,SSAIAdUi),qe(e,oe,SSAITimeline),qe(e,se,SSAIControls),qe(e,ne,SSAIAdIndicator)}init(e,t,r){const i=Be(r,ie);if(t.append(i),r.on(Ke.events.ID3,({detail:e})=>{var t,i,s;const o=null==e?void 0:e.cue;o&&(null===(s=null===(t=r.ssai)||void 0===t?void 0:(i=t.provider).onId3)||void 0===s||s.call(i,o))}),r.on("seeked",()=>function(e){if(e.opt("live"))return;if(!e.ssai)return;const{provider:t,state:r}=e.ssai;if(r.snapback)return r.snapback=!1;const i=a(e),s=t.getPreviousActiveAdStart(e,i);void 0!==s&&(r.snapback=!0,r.snapbackTime=i,c(e,s))}(r)),r.on("src",e=>{var t,i,s;r.setState(W,!1),null===(s=null===(i=null===(t=r.ssai)||void 0===t?void 0:t.provider)||void 0===i?void 0:i.onNewSrc)||void 0===s||s.call(i,r,e.detail)}),this.umd.extensions.find(e=>e.pluginName===Ke.pluginName))return;new Ke(this.umd,r).init(e,t,r)}onload(e,t,r,i){var s,o;null===(o=null===(s=r.ssai)||void 0===s?void 0:s.provider)||void 0===o||o.onload(r,i)}wants(e,t,r){return!!this.findProvider(t)}findProvider(e){let t;switch(e.type){case MediaTailor.Type:t=this.providers.find(e=>e instanceof MediaTailor)||new MediaTailor(this.player);break;case Dai.Type:t=this.providers.find(e=>e instanceof Dai)||new Dai(this.player);break;case Yospace.Type:Yospace.exists()&&(t=this.providers.find(e=>e instanceof Yospace)||new Yospace(this.player))}return t&&(this.player.ssai={provider:t,state:{snapback:!1}},this.providers.includes(t)||this.providers.push(t)),t}}).pluginName="ssai",ze.events=S,ze);return e(window,Ge)});
|
|
7
|
+
*/const F=class Bowser{static getParser(e,t=!1){if("string"!=typeof e)throw new Error("UserAgent should be a string");return new Parser(e,t)}static parse(e){return new Parser(e).getResult()}static get BROWSER_MAP(){return E}static get ENGINE_MAP(){return T}static get OS_MAP(){return _}static get PLATFORMS_MAP(){return P}}.parse(window.navigator.userAgent),{platform:D,os:I,browser:L}=F,B=e=>e&&e.toLowerCase();var q={rnd:Math.random().toString(36).substr(2,32),os:B(I.name+(I.versionName?` ${I.versionName}`:"")),device:B(D.type),browser:B(L.name),browser_version:(L&&L.version?L.version:"unknown").split(".").shift(),plugin_version:"3.34.0-rc"};const x="https://fp-eu-w1-aai.flowplayer.com/in",j="POST",H=["ad-requested","ad-request-error","ad-request-completed","ad-completed","ad-started","ad-error","ad-skipped"],V=["event_type","ad_tag_id","media_id","player_id","site_id","sitegroup_id","rnd","os","device","browser","browser_version","plugin_version","player_version"],Q=["vast_error","reason","request_load_time","ad_type","vast_ad_id"],K=k("ads/analytics"),z=RequestQueue.of(),G=(...e)=>Object.assign({},...e);class Analytics{static of(e,t){return new Analytics(e,t)}static ensure_required_keys(e,t){return e.required_keys.filter(e=>!(e in t))}static pluck_valid_keys(e,t){return((e,...t)=>Object.keys(e).filter(e=>~t.indexOf(e)).reduce((t,r)=>Object.assign(t,{[r]:e[r]}),{}))(t,...e.valid_keys)}static mergeMetadata(e,t={}){return e.metadata=Analytics.pluck_valid_keys(e,G(e.metadata,t,{player_version:"3.34.0-rc"})),e}constructor(e,t={}){this.emitter=e,this.metadata=G(q,t.metadata||{}),this.emitter=e,this.events=t.events||[],this.required_keys=t.required_keys||[],this.optional_keys=t.optional_keys||[],this.valid_keys=this.required_keys.slice(0).concat(this.optional_keys),K(this),this.wireup()}wireup(){this.events.forEach(e=>{this.emitter.on(e,t=>{const r=t.detail,i=G(this.metadata,{event_type:e},r),s=Analytics.pluck_valid_keys(this,i),o=Analytics.ensure_required_keys(this,s);if(K(`Event[${e}]`,{payload:s,observation:r}),o.length)return K(`Analytics.validate_metadata() failed for\n Event[${e}]\n missing keys: ${o}`,s);RequestQueue.rpush(z,[x,j,s])})})}destroy(){const e=this;e.emitter=e.metadata=e.events=e.required_keys=e.optional_keys=e.valid_keys=void 0}}const W="ssai-ad-active";var $;function Y(e,t){var r;switch(t){case $.Preroll:return 0;case $.Postroll:return-1;default:return null===(r=e.ssai)||void 0===r?void 0:r.provider.getContentCurrentTime(e)}}function X(e,t,r){var i,s,o,n;const a=null===(i=t.ssai)||void 0===i?void 0:i.provider.getAdType(),c=null===(n=null===(o=null===(s=t.ssai)||void 0===s?void 0:s.provider)||void 0===o?void 0:o.src)||void 0===n?void 0:n.analyticsId,d={ad_break_time:Y(t,a),ad_muted:t.muted,event_type:e,is_ssai:!0};a&&Object.assign(d,{ad_type:a}),c&&Object.assign(d,{ad_tag_id:c}),r&&"duration"in r&&Object.assign(d,{ad_remaining_seconds:r.duration-r.currentTime,ad_duration_seconds:r.duration}),t.emit("health:record",{event:"ads/"+e,detail:d}),t.emit(e,Object.assign(d,r))}function Z(e,t){var r;e.setState(W,!0);const i=null===(r=e.ssai)||void 0===r?void 0:r.state;i&&(i.adProgress={currentTime:0,duration:t},te(e,i))}function J(e,t){var r;const i=null===(r=e.ssai)||void 0===r?void 0:r.state;i&&(i.adProgress=t,te(e,i))}function ee(e){if(!e.ssai)return;const t=e.ssai.state;e.setState(W,!1),delete t.adProgress,void 0!==t.rate&&(e.playbackRate=t.rate,delete t.rate),"number"==typeof t.snapbackTime&&(c(e,t.snapbackTime),delete t.snapbackTime)}function te(e,t){const r=e.playbackRate;1!==r&&(t.rate=r,e.playbackRate=1)}!function(e){e.Preroll="preroll",e.Midroll="midroll",e.Postroll="postroll"}($||($={}));const re=navigator.languages||[navigator.language];const ie="flowplayer-ssai-ui",se="flowplayer-ssai-controls",oe="flowplayer-ssai-timeline",ne="flowplayer-ssai-indicator",ae={Unknown:"00-00",MediaUnknown:"01-00",MediaUnavailable:"01-01",MediaUnsupportedVideoFormat:"01-02",MediaUnsupportedAudioFormat:"01-03",MediaBitrateExceeded:"01-04",MediaBufferOverread:"01-05",MediaIntegerOverflow:"01-06",MediaQuotaExceeded:"01-07",MediaInvalidCompositionDuration:"01-08",MediaInvalidCompositionSourceDuration:"01-09",MediaInvalidCompositionSourceStartTime:"01-10",MediaMalformedDepth:"01-11",PlaybackUnknown:"02-00",PlaybackVideoBufferUnderRun:"02-01",PlaybackAudioBufferUnderRun:"02-02",PlaybackVideoBufferingTimeout:"02-03",PlaybackAudioBufferingTimeout:"02-04",PlaybackManifestParseError:"02-05",PlaybackVideoDecodeError:"02-06",PlaybackAudioDecodeError:"02-07",PlaybackDroppedFramesExceeded:"02-08",PlaybackPlayheadExceedsDuration:"02-09",PlaybackUnsupportedDevice:"02-10",PlaybackManifestLoadError:"02-11",PlaybackManifestLoadTimeout:"02-12",PlaybackManifestParsingError:"02-13",PlaybackManifestIncompatibleCodecs:"02-14",PlaybackLevelEmptyError:"02-15",PlaybackLevelLoadError:"02-16",PlaybackLevelLoadTimeout:"02-17",PlaybackLevelSwitchError:"02-18",PlaybackAudioTrackLoadError:"02-19",PlaybackAudioTrackLoadTimeout:"02-20",PlaybackFragLoadError:"02-21",PlaybackFragLoadTimeout:"02-22",PlaybackFragDecryptError:"02-23",PlaybackFragParsingError:"02-24",PlaybackFragGap:"02-25",PlaybackRemuxAllocError:"02-26",PlaybackBufferAddCodecError:"02-27",PlaybackBufferIncompatibleCodecs:"02-28",PlaybackBufferAppendError:"02-29",PlaybackBufferStalledError:"02-30",PlaybackBufferFullError:"02-31",PlaybackBufferSeekOverHole:"02-32",PlaybackBufferNudgeOnStall:"02-33",PlaybackInternalException:"02-34",PlaybackInternalAborted:"02-35",PlaybackManifestLoaderFailure:"02-36",PlaybackSegmentBaseLoaderError:"02-37",PlaybackTimeSyncFailed:"02-38",PlaybackFragmentLoaderFailure:"02-39",PlaybackAppendError:"02-40",PlaybackRemoveError:"02-41",PlaybackDataUpdateFailed:"02-42",PlaybackManifestNoStreams:"02-43",PlaybackUnknownManifestType:"02-44",PlaybackDashInsufficientSegmentInfo:"02-45",PlaybackDashNoRepresentations:"02-46",PlaybackDashNoAdaptationSets:"02-47",PlaybackDashNoInitSegment:"02-48",PlaybackDashUnsupportedContainerFormat:"02-49",PlaybackDashKeySystemMismatch:"02-50",PlaybackMultipleKeyIDs:"02-51",PlaybackDashConflictingKeyIDs:"02-52",PlaybackRestrictedStreams:"02-53",PlaybackHlsMasterAndMediaTags:"02-54",PlaybackRepresentationIdConflict:"02-55",PlaybackHlsUnsupportedKeyFormats:"02-56",PlaybackManifestNoVariants:"02-57",PlaybackHlsUndeclaredVariables:"02-58",PlaybackAes128InvalidKeyLength:"02-59",PlaybackDashConflictingAes128Keys:"02-60",PlaybackDashUnsupportedAes128Encryption:"02-61",PlaybackManifestPatchMismatch:"02-62",PlaybackEmptyMediaPlaylist:"02-63",PlaybackNonContiguousCompositionTrack:"02-64",PlaybackDecoderNotFound:"02-65",PlaybackDecoderTemporarilyUnavailable:"02-66",PlaybackIncompatibleAsset:"02-67",PlaybackNoCompatibleExternalDisplay:"02-69",PlaybackOutOfMemory:"02-70",PlaybackToneMappingFailed:"02-71",PlaybackVideoCompositorFailed:"02-72",NetworkUnknown:"03-00",NetworkNoInternet:"03-01",NetworkRequestTimeout:"03-02",NetworkUnableToResolveHost:"03-03",NetworkResourceNotFound:"03-04",NetworkExpiredUrl:"03-05",NetworkUrlResolutionFailed:"03-06",NetworkDownloadErrorIdManifest:"03-07",NetworkDownloadErrorIdSidx:"03-08",NetworkDownloadErrorIdContent:"03-09",NetworkDownloadErrorIdInitialization:"03-10",NetworkDownloadErrorIdXlink:"03-11",NetworkHttpRequestFailed:"03-12",NetworkMaxRetriesExceeded:"03-13",NetworkSegmentMissing:"03-14",NetworkHttp400BadRequest:"03-400",NetworkHttp401Unauthorized:"03-401",NetworkHttp402PaymentRequired:"03-402",NetworkHttp403Forbidden:"03-403",NetworkHttp404NotFound:"03-404",NetworkHttp405MethodNotAllowed:"03-405",NetworkHttp406NotAcceptable:"03-406",NetworkHttp407ProxyAuthenticationRequired:"03-407",NetworkHttp408RequestTimeout:"03-408",NetworkHttp409Conflict:"03-409",NetworkHttp410Gone:"03-410",NetworkHttp411LengthRequired:"03-411",NetworkHttp412PreconditionFailed:"03-412",NetworkHttp413PayloadTooLarge:"03-413",NetworkHttp414URITooLong:"03-414",NetworkHttp415UnsupportedMediaType:"03-415",NetworkHttp416RangeNotSatisfiable:"03-416",NetworkHttp417ExpectationFailed:"03-417",NetworkHttp418ImATeapot:"03-418",NetworkHttp421MisdirectedRequest:"03-421",NetworkHttp422UnprocessableEntity:"03-422",NetworkHttp423Locked:"03-423",NetworkHttp424FailedDependency:"03-424",NetworkHttp425TooEarly:"03-425",NetworkHttp426UpgradeRequired:"03-426",NetworkHttp428PreconditionRequired:"03-428",NetworkHttp429TooManyRequests:"03-429",NetworkHttp431RequestHeaderFieldsTooLarge:"03-431",NetworkHttp451UnavailableForLegalReasons:"03-451",NetworkHttp500InternalServerError:"03-500",NetworkHttp501NotImplemented:"03-501",NetworkHttp502BadGateway:"03-502",NetworkHttp503ServiceUnavailable:"03-503",NetworkHttp504GatewayTimeout:"03-504",NetworkHttp505HTTPVersionNotSupported:"03-505",NetworkHttp506VariantAlsoNegotiates:"03-506",NetworkHttp507InsufficientStorage:"03-507",NetworkHttp508LoopDetected:"03-508",NetworkHttp510NotExtended:"03-510",NetworkHttp511NetworkAuthenticationRequired:"03-511",ContentProtectionUnknown:"04-00",ContentProtectionConcurrentStreamLimitExceeded:"04-01",ContentProtectionEntitlementRefused:"04-02",ContentProtectionLicenseExpired:"04-03",ContentProtectionBadLicenseRequest:"04-04",ContentProtectionLicenseServerTimeout:"04-05",ContentProtectionInsufficientHDCPSupport:"04-06",ContentProtectionGeoRestricted:"04-07",ContentProtectionParentalControlRestricted:"04-08",ContentProtectionCDNUnauthorized:"04-09",ContentProtectionInvalidAccessToken:"04-10",ContentProtectionKeySystemNoKeys:"04-11",ContentProtectionKeySystemNoAccess:"04-12",ContentProtectionKeySystemNoSession:"04-13",ContentProtectionKeySystemNoConfiguredLicense:"04-14",ContentProtectionKeySystemCertificateRequestFailed:"04-15",ContentProtectionKeySystemCertificateUpdateFailed:"04-16",ContentProtectionKeySystemSessionUpdateFailed:"04-17",ContentProtectionKeySystemStatusOutputRestricted:"04-18",ContentProtectionKeySystemStatusInternalError:"04-19",ContentProtectionKeyLoadError:"04-20",ContentProtectionKeyLoadTimeout:"04-21",ContentProtectionCapabilityMediaKeysError:"04-22",ContentProtectionManifestKeySystemUnknown:"04-23",ContentProtectionKeySystemUnavailable:"04-24",ContentProtectionCDMCreationFailed:"04-25",ContentProtectionCDMAttachFailed:"04-26",ContentProtectionCDMServerCertificateRejected:"04-27",ContentProtectionCDMSessionCreationFailed:"04-28",ContentProtectionCDMLicenseRequestFailed:"04-29",ContentProtectionCDMLicenseResponseRejected:"04-30",ContentProtectionManifestMissingDRMInfo:"04-31",ContentProtectionLicenseServerMissing:"04-32",ContentProtectionOfflineSessionRemoved:"04-33",ContentProtectionInitDataTransformationError:"04-34",ContentProtectionServerCertificateRequestFailed:"04-35",ContentProtectionInsufficientHDCPVersion:"04-36",ContentProtectionHDCPVersionCheckFailed:"04-37",AdsUnknown:"08-00",AdsVastParseError:"08-100",AdsInvalidVastSchema:"08-101",AdsVastVersionNotSupported:"08-102",AdsUnexpectedAdType:"08-200",AdsCreativeLinearityMismatch:"08-201",AdsCreativeDurationMismatch:"08-202",AdsCreativeSizeMismatch:"08-203",AdsWrapperVastError:"08-300",AdsVastResponseRedirectTimeout:"08-301",AdsWrapperLimitReached:"08-302",AdsVastResponseEmpty:"08-303",AdsLinearAdDisplayError:"08-400",AdsMediaFileNotFound:"08-401",AdsMediaFileUnavailable:"08-402",AdsUnsupportedMimeType:"08-403",AdsUnableToDisplayMediaFile:"08-405",AdsMezzanineFileMissing:"08-406",AdsMezzanineFileDownloaded:"08-407",AdsRejectedAd:"08-408",AdsInteractiveCreativeError:"08-409",AdsVerificationNodeExecutionError:"08-410",AdsNonLinearAdDisplayError:"08-500",AdsNonLinearAdSizeMismatch:"08-501",AdsNonLinearAdFetchError:"08-502",AdsNonLinearUnsupportedType:"08-503",AdsCompanionAdDisplayError:"08-600",AdsCompanionAdSizeMismatch:"08-601",AdsRequiredCompanionAdError:"08-602",AdsCompanionAdFetchError:"08-603",AdsUndefinedVastError:"08-900",AdsUnknownVpaidError:"08-901",AdsVastDocumentEmpty:"08-999"},ce=Object.fromEntries(Object.entries(ae).map(([e,t])=>[t,e])),de=[1e7]+""+-1e3+-4e3+-8e3+-1e11,le="off";class FlowplayerError extends Error{static getErrorKey(e){return e in ce?ce[e]:ce["00-00"]}constructor(e,t,r={}){super(e),this.message=e,this.flowplayerErrorCode=t,this.config=r,this.id="undefined"==typeof crypto?"":de.replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16)),this.isFatal=!!r.isFatal,this.errorKey=FlowplayerError.getErrorKey(this.flowplayerErrorCode)||"unknown"}toJSON(){return{message:this.message,flowplayer_error_code:this.flowplayerErrorCode,id:this.id,root_error_id:this.config.rootErrorId,resource:this.config.resource,is_fatal:this.isFatal,is_retry:!!this.config.isRetry}}}function ue(e,t){const r=new google.ima.dai.api.UiSettings,i=e.opt("lang")||function(){try{return re.reduce((e,t)=>~t.indexOf("-")?e.concat(t,t.split("-")[0]):e.concat(t),[])}catch(e){return[]}}().find(e=>!e.includes("-"))||"en";r.setLocale(i);const s=new google.ima.dai.api.StreamManager(e,function(e,t){const r=e._customElements.get(t);return r&&e.root.querySelector(r)||void 0}(e,ie),r);return s.addEventListener([google.ima.dai.api.StreamEvent.Type.LOADED,google.ima.dai.api.StreamEvent.Type.ERROR,google.ima.dai.api.StreamEvent.Type.STREAM_INITIALIZED,google.ima.dai.api.StreamEvent.Type.AD_BREAK_STARTED,google.ima.dai.api.StreamEvent.Type.AD_PROGRESS,google.ima.dai.api.StreamEvent.Type.AD_BREAK_ENDED,google.ima.dai.api.StreamEvent.Type.RESUMED,google.ima.dai.api.StreamEvent.Type.PAUSED,google.ima.dai.api.StreamEvent.Type.STARTED,google.ima.dai.api.StreamEvent.Type.COMPLETE,google.ima.dai.api.StreamEvent.Type.SKIPPED,google.ima.dai.api.StreamEvent.Type.CLICK],r=>{!function(e,t,r,i){var s;if((null===(s=e.ssai)||void 0===s?void 0:s.provider)!==i)return;switch(r.type){case google.ima.dai.api.StreamEvent.Type.STREAM_INITIALIZED:return async function(e,t,r,i){var s,o;const n=i.getStreamData().streamId;if(!n||!t.isPod)return;if(!t.isVod){const r=null===(s=t.src)||void 0===s?void 0:s.streamUrl;return r?(t.daiStream=t.buildPodStreamURL(r,n),e.setSrc(t.daiStream)):console.error("streamUrl param is missing : https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5?service=pod#create_a_simple_video_player_2")}const a=null===(o=t.src)||void 0===o?void 0:o.requestStreamUrl;if(!a)return console.error("requestStreamUrl param is missing : https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5?service=pod#vod-pod-serving_1");try{t.daiStream=await a(r,n),r.loadStreamMetadata(),e.setSrc(t.daiStream)}catch(r){me(e,t,n)}}(e,i,t,r);case google.ima.dai.api.StreamEvent.Type.RESUMED:return X(h,e,pe(e,r,i));case google.ima.dai.api.StreamEvent.Type.PAUSED:return X(f,e,pe(e,r,i));case google.ima.dai.api.StreamEvent.Type.COMPLETE:return X(v,e,pe(e,r,i));case google.ima.dai.api.StreamEvent.Type.SKIPPED:return X(g,e,pe(e,r,i));case google.ima.dai.api.StreamEvent.Type.LOADED:return function(e,t,r){const i=r.getStreamData().url;if(!i||t.isPod&&!t.isVod)return;t.daiStream=i,e.setSrc(i)}(e,i,r);case google.ima.dai.api.StreamEvent.Type.STARTED:return i.currentAd=r.getAd(),X(y,e,pe(e,r,i));case google.ima.dai.api.StreamEvent.Type.AD_BREAK_STARTED:return Z(e),X(u,e,pe(e,r,i));case google.ima.dai.api.StreamEvent.Type.AD_BREAK_ENDED:return X(p,e,pe(e,r,i)),ee(e),i.currentAd=void 0;case google.ima.dai.api.StreamEvent.Type.ERROR:return me(e,i,r.getStreamData().url||"",r);case google.ima.dai.api.StreamEvent.Type.AD_PROGRESS:{const t=pe(e,r,i);return J(e,t),X(m,e,t)}case google.ima.dai.api.StreamEvent.Type.CLICK:(function(e){if(!e.paused)e.togglePlay(!1)})(e)}}(e,s,r,t)},!1),e.on(b,r=>{var i,o;(null===(i=e.ssai)||void 0===i?void 0:i.provider)===t&&(null===(o=r.detail)||void 0===o||o.samples.forEach(e=>s.processMetadata("ID3",e.data,e.pts)))}),e.on(w,r=>{var i;const o=r.detail;if(!o||(null===(i=e.ssai)||void 0===i?void 0:i.provider)!==t)return;const n=o.event.messageData,a=o.event.calculatedPresentationTime;s.processMetadata("urn:google:dai:2018",n,a)}),s}function pe(e,t,r){const i=r.currentAd,s=Object.assign({},t.getStreamData().adProgressData);return i&&Object.assign(s,{vast_ad_id:i.getAdId()}),(null==i?void 0:i.getAdPodInfo())&&Object.assign(s,{position:i.getAdPodInfo().getAdPosition(),totals:i.getAdPodInfo().getTotalAds()}),s}function me(e,t,r,i){var s,o,n,a,c;e.emit("flowplayer:error",{error:new FlowplayerError((null===(s=null==i?void 0:i.getStreamData())||void 0===s?void 0:s.errorMessage)||"error loading stream",ae.AdsUnknown,{isFatal:!0,showErrorUI:!(null===(o=t.src)||void 0===o?void 0:o.backupStream),resource:(null===(n=null==i?void 0:i.getStreamData())||void 0===n?void 0:n.url)||(null===(a=t.src)||void 0===a?void 0:a.contentSourceId)||r,retryOpts:{retry:le}})}),(null===(c=t.src)||void 0===c?void 0:c.backupStream)&&e.setSrc(t.src.backupStream)}var ge;!function(e){e.Preroll="preroll",e.Midroll="midroll",e.Postroll="postroll"}(ge||(ge={}));const fe=k("ads/ima/sdk");var he;async function ye(e,t){var r;const i=null===(r=null===window||void 0===window?void 0:window.google)||void 0===r?void 0:r.ima;if(t?null==i?void 0:i.dai:i)return void fe(":noop");const s=t?"https://imasdk.googleapis.com/js/sdkloader/ima3_dai.js":e._storage.getItem("ima/debug")?"https://imasdk.googleapis.com/js/sdkloader/ima3_debug.js":"https://imasdk.googleapis.com/js/sdkloader/ima3.js";try{return await async function(e){return new Promise((t,r)=>{let i=document.querySelector(`script[src='${e}']`);if(i)return ve(i,t,r);i=document.createElement("script"),i.setAttribute("state",he.LOADING),ve(i,t,r),i.src=e,document.head.appendChild(i)})}(s),void fe(":loaded")}catch(e){fe(`:error ${e.message}`,e)}}function ve(e,t,r){const i=e.getAttribute("state");if(i&&[he.ERROR,he.LOADED].includes(i))return t(void 0);e.addEventListener("load",()=>{e.setAttribute("state",he.LOADED),t(void 0)},{once:!0}),["error","abort"].forEach(t=>{e.addEventListener(t,()=>{e.setAttribute("state",he.ERROR),r("script failed to load")},{once:!0})})}!function(e){e.LOADING="loading",e.LOADED="loaded",e.ERROR="error"}(he||(he={}));class Dai{constructor(e){this.make_analytics(e)}async onload(e,t){var r,i;return await ye(e,!0),(null===(i=null===(r=window.google)||void 0===r?void 0:r.ima)||void 0===i?void 0:i.dai)?((null==this?void 0:this.streamManager)||(this.streamManager=ue(e,this)),this.src=t,this.isPod=!!t.customAssetKey||!!t.requestStreamUrl,this.isVod=!!t.contentSourceId||!!t.videoId||!!t.requestStreamUrl,this.isPod?this.requestPodStream(t):void this.requestStream(t)):(console.warn("google.ima.dai unavailable"),void(t.backupStream&&e.setSrc(t.backupStream)))}onNewSrc(e,t){var r;t.src!==this.daiStream&&(this.daiStream=void 0,e.ssai=void 0,null===(r=this.streamManager)||void 0===r||r.reset())}make_analytics(e){const t=Analytics.of(e,{required_keys:V,events:H,optional_keys:Q});e.on("config",()=>{var r;return Analytics.mergeMetadata(t,null===(r=e.opts)||void 0===r?void 0:r.metadata)})}onId3(e){var t;const r={},i=e.value;r[i.key]=i.data,null===(t=this.streamManager)||void 0===t||t.onTimedMetadata(r)}getAdType(){if(this.currentAd)switch(this.currentAd.getAdPodInfo().getPodIndex()){case 0:return ge.Preroll;case-1:return ge.Postroll;case-2:return;default:return ge.Midroll}}getContentCurrentTime(e){const t=e.currentTime;return this.streamManager?this.streamManager.contentTimeForStreamTime(t):t}setContentCurrentTime(e,t){}getContentDuration(e){const t=e.duration;return this.streamManager?this.streamManager.contentTimeForStreamTime(t):t}getPreviousActiveAdStart(e,t){var r;const i=null===(r=null==this?void 0:this.streamManager)||void 0===r?void 0:r.previousCuePointForStreamTime(t);if(i&&!i.played)return i.start}requestStream(e){var t;const r=this.isVod?new google.ima.dai.api.VODStreamRequest:new google.ima.dai.api.LiveStreamRequest;null===(t=this.streamManager)||void 0===t||t.requestStream(Object.assign(r,e))}requestPodStream(e){var t;const r=this.isVod?new google.ima.dai.api.PodVodStreamRequest:new google.ima.dai.api.PodStreamRequest;null===(t=this.streamManager)||void 0===t||t.requestStream(Object.assign(r,e))}buildPodStreamURL(e,t){return e.replace("[[STREAMID]]",t)}}Dai.Type="google/dai";let be=null;const we=()=>{if(be)return be;const e=class extends YospaceAdManagement.AnalyticEventObserver{constructor(e){super(),this.video=e}onAdvertBreakStart(e){const t=e.getDuration();if(!e.isActive()&&t){const e=a(this.video);c(this.video,e+t/1e3)}Z(this.video,e.getStart()),X(u,this.video)}onAdvertBreakEnd(){ee(this.video),X(p,this.video)}onAdvertStart(e){}onAdvertEnd(){}onTrackingEvent(e){}};return be=e,e};function Se(e,t){YospaceAdManagement.SessionVOD.create(e,t.ssai.properties,e=>{const r=e.getPayload();if(r.getSessionResult()===YospaceAdManagement.SessionResult.INITIALISED){t.ssai.session=r;const e=new(we())(t);r.addAnalyticObserver(e),t.setSrc({src:r.getPlaybackUrl()}),setInterval(()=>{const e=1e3*a(t);r.onPlayheadUpdate(e),function(e,t,r){const i=e.getCurrentAdBreak();if(!i)return;const s={currentTime:r-i.getStart(),duration:i.getDuration()};J(t,s),X(m,t,s)}(r,t,e)},250)}else console.warn("YoSpace Failed to initialise session. ResultCode = "+r.getResultCode())})}class Yospace{static exists(){return!!window.YospaceAdManagement}constructor(e){!function(e){Object.defineProperty(e,"currentTime",{get:function(){if(e.ssai){const t=e.ssai.state.adProgress;return t?t.currentTime:e.ssai.provider.getContentCurrentTime(e)}return a(e)},set:function(t){var r;if(e.ssai){if(e.ssai.state.adProgress)return;return null===(r=e.ssai.provider)||void 0===r?void 0:r.setContentCurrentTime(e,t)}return c(e,t)}}),Object.defineProperty(e,"duration",{get:function(){if(e.ssai){const t=e.ssai.state.adProgress;return t?t.duration:e.ssai.provider.getContentDuration(e)}return l(e)},set:function(){}})}(e)}onload(e,t){Object.assign(e.ssai,function(){const e=new YospaceAdManagement.SessionProperties;return e.setUserAgent(navigator.userAgent),{properties:e}}()),t&&t.src&&Se(t.src,e)}getContentCurrentTime(e){const t=a(e),r=e.ssai.session;return r?r.getContentPositionForPlayhead(1e3*t)/1e3:t}setContentCurrentTime(e,t){const r=e.ssai.session;if(!r)return c(e,t);return c(e,r.getPlayheadForContentPosition(1e3*t)/1e3)}getContentDuration(e){const t=e.ssai.session,r=l(e);return t?t.getContentPositionForPlayhead(t.getDuration())/1e3:r}getAdType(){}getPreviousActiveAdStart(e,t){const r=e.ssai.session;if(!r)return;const i=r.getAdBreaks();let s;const o=1e3*t;return i.forEach(e=>{void 0===s&&e.getStart()<o&&e.isActive()&&(s=e)}),void 0!==s?s.getStart()/1e3:void 0}}function ke(e){var n;if((null===(n=this.player.ssai)||void 0===n?void 0:n.provider)===this)switch(e.type){case s:case i:return function(e){if(!e.player.hasState(W))return;return X(e.player.paused?f:h,e.player)}(this);case t:return function(e){const t=e.player,r=t.hls;if(!r)return;if(t.hasState(W))return r.config.maxBufferLength=1;const i=t.currentTime;let s,o=0;for(;o<t.buffered.length;o++)if(t.buffered.start(o)-1<=i&&t.buffered.end(o)>=i){s=t.buffered.end(o);break}if(void 0===s)return;const n=e.getAdCues().find(e=>!e.played&&e.endTime>s&&e.startTime<=s);return r.config.maxBufferLength=n?1:30}(this);case r:return function(e){if(!e.activeCue||!e.player.hasState(W))return;const t=e.player.currentTime;if(t<=e.activeCue.endTime)return e.ad={duration:e.activeCue.endTime-e.activeCue.startTime,currentTime:t-e.activeCue.startTime},X(m,e.player,Object.assign(Object.assign({},e.ad),e.podInfo));if(e.podInfo.totals!==e.podInfo.position)return;Ae(e)}(this);case o:return Ae(this)}}function Ae(e){e.activeCue&&e.player.hasState(W)&&(X(v,e.player),X(p,e.player),ee(e.player),e.activeCue.played=!0,e.activeCue=void 0)}Yospace.Type="yospace";var Me=function(e){var t={exports:{}};return e(t,t.exports),t.exports}(function(e,t){var r=function(){for(var e=new Array(256),t=0;t<256;++t)e[t]="%"+((t<16?"0":"")+t.toString(16)).toUpperCase();return e}(),i=Object.prototype.hasOwnProperty;t.arrayToObject=function(e,t){for(var r=t.plainObjects?Object.create(null):{},i=0;i<e.length;++i)void 0!==e[i]&&(r[i]=e[i]);return r},t.merge=function(e,r,s){if(!r)return e;if("object"!=typeof r){if(Array.isArray(e))e.push(r);else{if("object"!=typeof e)return[e,r];(s.plainObjects||s.allowPrototypes||!i.call(Object.prototype,r))&&(e[r]=!0)}return e}if("object"!=typeof e)return[e].concat(r);var o=e;return Array.isArray(e)&&!Array.isArray(r)&&(o=t.arrayToObject(e,s)),Object.keys(r).reduce(function(e,o){var n=r[o];return i.call(e,o)?e[o]=t.merge(e[o],n,s):e[o]=n,e},o)},t.decode=function(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(t){return e}},t.encode=function(e){if(0===e.length)return e;for(var t="string"==typeof e?e:String(e),i="",s=0;s<t.length;++s){var o=t.charCodeAt(s);45===o||46===o||95===o||126===o||o>=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122?i+=t.charAt(s):o<128?i+=r[o]:o<2048?i+=r[192|o>>6]+r[128|63&o]:o<55296||o>=57344?i+=r[224|o>>12]+r[128|o>>6&63]+r[128|63&o]:(s+=1,o=65536+((1023&o)<<10|1023&t.charCodeAt(s)),i+=r[240|o>>18]+r[128|o>>12&63]+r[128|o>>6&63]+r[128|63&o])}return i},t.compact=function(e,r){if("object"!=typeof e||null===e)return e;var i=r||[],s=i.indexOf(e);if(-1!==s)return i[s];if(i.push(e),Array.isArray(e)){for(var o=[],n=0;n<e.length;++n)e[n]&&"object"==typeof e[n]?o.push(t.compact(e[n],i)):void 0!==e[n]&&o.push(e[n]);return o}for(var a=Object.keys(e),c=0;c<a.length;++c){var d=a[c];e[d]=t.compact(e[d],i)}return e},t.isRegExp=function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},t.isBuffer=function(e){return null!=e&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))}}),Ee={brackets:function(e){return e+"[]"},indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},Pe={delimiter:"&",strictNullHandling:!1,skipNulls:!1,encode:!0,encoder:Me.encode},_e=function e(t,r,i,s,o,n,a,c,d){var l=t;if("function"==typeof a)l=a(r,l);else if(l instanceof Date)l=l.toISOString();else if(null===l){if(s)return n?n(r):r;l=""}if("string"==typeof l||"number"==typeof l||"boolean"==typeof l||Me.isBuffer(l))return n?[n(r)+"="+n(l)]:[r+"="+String(l)];var u,p=[];if(void 0===l)return p;if(Array.isArray(a))u=a;else{var m=Object.keys(l);u=c?m.sort(c):m}for(var g=0;g<u.length;++g){var f=u[g];o&&null===l[f]||(p=Array.isArray(l)?p.concat(e(l[f],i(r,f),i,s,o,n,a,c,d)):p.concat(e(l[f],r+(d?"."+f:"["+f+"]"),i,s,o,n,a,c,d)))}return p},Te=Object.prototype.hasOwnProperty,Ce={delimiter:"&",depth:5,arrayLimit:20,parameterLimit:1e3,strictNullHandling:!1,plainObjects:!1,allowPrototypes:!1,allowDots:!1,decoder:Me.decode},Ue=function e(t,r,i){if(!t.length)return r;var s,o=t.shift();if("[]"===o)s=(s=[]).concat(e(t,r,i));else{s=i.plainObjects?Object.create(null):{};var n="["===o.charAt(0)&&"]"===o.charAt(o.length-1)?o.slice(1,-1):o,a=parseInt(n,10);!isNaN(a)&&o!==n&&String(a)===n&&a>=0&&i.parseArrays&&a<=i.arrayLimit?(s=[])[a]=e(t,r,i):s[n]=e(t,r,i)}return s},Re=function(e,t,r){if(e){var i=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,s=/(\[[^[\]]*])/g,o=/(\[[^[\]]*])/.exec(i),n=o?i.slice(0,o.index):i,a=[];if(n){if(!r.plainObjects&&Te.call(Object.prototype,n)&&!r.allowPrototypes)return;a.push(n)}for(var c=0;null!==(o=s.exec(i))&&c<r.depth;){if(c+=1,!r.plainObjects&&Te.call(Object.prototype,o[1].slice(1,-1))&&!r.allowPrototypes)return;a.push(o[1])}return o&&a.push("["+i.slice(o.index)+"]"),Ue(a,t,r)}},Ne=function(e,t){var r,i,s=e,o=t||{},n=void 0===o.delimiter?Pe.delimiter:o.delimiter,a="boolean"==typeof o.strictNullHandling?o.strictNullHandling:Pe.strictNullHandling,c="boolean"==typeof o.skipNulls?o.skipNulls:Pe.skipNulls,d=("boolean"==typeof o.encode?o.encode:Pe.encode)?"function"==typeof o.encoder?o.encoder:Pe.encoder:null,l="function"==typeof o.sort?o.sort:null,u=void 0!==o.allowDots&&o.allowDots;if(null!==o.encoder&&void 0!==o.encoder&&"function"!=typeof o.encoder)throw new TypeError("Encoder has to be a function.");"function"==typeof o.filter?s=(i=o.filter)("",s):Array.isArray(o.filter)&&(r=i=o.filter);var p,m=[];if("object"!=typeof s||null===s)return"";p=o.arrayFormat in Ee?o.arrayFormat:"indices"in o?o.indices?"indices":"repeat":"indices";var g=Ee[p];r||(r=Object.keys(s)),l&&r.sort(l);for(var f=0;f<r.length;++f){var h=r[f];c&&null===s[h]||(m=m.concat(_e(s[h],h,g,a,c,d,i,l,u)))}return m.join(n)},Oe=function(e,t){var r=t||{};if(null!==r.decoder&&void 0!==r.decoder&&"function"!=typeof r.decoder)throw new TypeError("Decoder has to be a function.");if(r.delimiter="string"==typeof r.delimiter||Me.isRegExp(r.delimiter)?r.delimiter:Ce.delimiter,r.depth="number"==typeof r.depth?r.depth:Ce.depth,r.arrayLimit="number"==typeof r.arrayLimit?r.arrayLimit:Ce.arrayLimit,r.parseArrays=!1!==r.parseArrays,r.decoder="function"==typeof r.decoder?r.decoder:Ce.decoder,r.allowDots="boolean"==typeof r.allowDots?r.allowDots:Ce.allowDots,r.plainObjects="boolean"==typeof r.plainObjects?r.plainObjects:Ce.plainObjects,r.allowPrototypes="boolean"==typeof r.allowPrototypes?r.allowPrototypes:Ce.allowPrototypes,r.parameterLimit="number"==typeof r.parameterLimit?r.parameterLimit:Ce.parameterLimit,r.strictNullHandling="boolean"==typeof r.strictNullHandling?r.strictNullHandling:Ce.strictNullHandling,""===e||null==e)return r.plainObjects?Object.create(null):{};for(var i="string"==typeof e?function(e,t){for(var r={},i=e.split(t.delimiter,t.parameterLimit===1/0?void 0:t.parameterLimit),s=0;s<i.length;++s){var o,n,a=i[s],c=-1===a.indexOf("]=")?a.indexOf("="):a.indexOf("]=")+1;-1===c?(o=t.decoder(a),n=t.strictNullHandling?null:""):(o=t.decoder(a.slice(0,c)),n=t.decoder(a.slice(c+1))),Te.call(r,o)?r[o]=[].concat(r[o]).concat(n):r[o]=n}return r}(e,r):e,s=r.plainObjects?Object.create(null):{},o=Object.keys(i),n=0;n<o.length;++n){var a=o[n],c=Re(a,i[a],r);s=Me.merge(s,c,r)}return Me.compact(s)};const Fe=k("fpads:macros"),De=/\[([\s\S]+?)\]/g;class Macros{static run(e){try{return e()}catch(e){return void console.error(e)}}static merge(...e){return e.reduce((e,t)=>Object.assign(e,t),{})}static cast(e){return void 0===e?"":"function"==typeof e?encodeURIComponent(Macros.run(e)||""):"string"==typeof e?encodeURIComponent(e):"number"==typeof e||"boolean"==typeof e?e.toString():""}static normalize(e){return e.trim()}static process_obj(e,t,r){return Object.keys(e).reduce((i,s)=>{const o=Macros.process_str(s,t,r,!0),n=e[s];return null===n?(i[o]=n,i):"object"==typeof n?(i[o]=Macros.process_obj(n,t,r),i):"string"==typeof n?(i[o]=Macros.process_str(n,t,r),i):(console.error(new Error(`${n} at ${s} not a handled Macro type`)),i)},{})}static process_str(e,t,r,i=!1){return e.replace(t.pattern,(e,t)=>{const s=Macros.normalize(t);if(!(s in r)||void 0===r[s])return e;const o=r[s],n=i?o:Macros.cast(o);return Fe("Macro.replace(raw: %s, macro: %s, value: %s)",i,t,n),n})}constructor(e={},t=De){this.vars=e,this.pattern=t}fork(e={},t=this.pattern){const r=Macros.merge(this.vars,e);return new Macros(r,t)}compile(e,t={}){const r=Macros.merge(this.vars,t),[i,s]=e.split("?"),o=Oe(s||"",{strictNullHandling:!0,decoder:e=>e}),n=Ne(Macros.process_obj(o,this,r),{encode:!1,strictNullHandling:!0});return Macros.process_str(i,this,r,!0)+"?"+n}}function Ie(e,t={width:0,height:0}){let r,i;try{const e=document.createElement("a");e.href=r=window.location!=window.parent.location?document.referrer:document.location.href,i=e.hostname}catch(e){console.error(e)}const{width:s,height:o}=t,{video_source:n}=e||{},a=function(){const e=window;return"object"==typeof e.__flowplayerAdParameters?e.__flowplayerAdParameters:{}}();return Object.assign({random:Date.now(),page_url:r,domain:i,player_width:s,player_height:o,video_url:n,videourl:n},a)}Macros.patterns={BRACKETS:De,CURLY:/\{([\s\S]+?)\}/g,UNDERSCORE:/__([\s\S]+?)__/g};const Le="X-AD-CREATIVE-SIGNALING";class MediaTailor{constructor(e){this.ad={duration:0,currentTime:0},this.podInfo={totals:0,position:0},this.player=e,e.on([r,t,s,i,o],ke.bind(this))}onload(e,t){this.stream=this.compileMacros(e,t),e.setSrc(this.stream)}compileMacros(e,t){var r,i;const s=e.opts,o=Ie(void 0,{width:e.clientWidth,height:e.clientHeight});(s.duration||(null===(r=s.metadata)||void 0===r?void 0:r.duration))&&Object.assign(o,{media_duration:s.duration||(null===(i=s.metadata)||void 0===i?void 0:i.duration)});return new Macros(Object.assign({referrer_url:document.referrer,autoplay:!!e.opts.autoplay},e.opts.metadata,t.parameters,o)).compile(t.stream)}onNewSrc(e,t){t.src!==this.stream&&(this.activeCue=void 0,e.ssai=void 0)}getPreviousActiveAdStart(e,t){if(this.activeCue)return;const r=this.getAdCues(),i=r.slice().reverse().find(e=>e.endTime<t);if(!i||i.played)return;const s=r[r.indexOf(i)+1];return!s||t<s.startTime&&(t+.1<=s.startTime||s.played||e.paused)?this.findAdBreakStartCue(i).startTime:void 0}onId3(e){var t;if(e.played||e==this.activeCue)return;if((null===(t=e.value)||void 0===t?void 0:t.key)!==Le)return;if(this.activeCue)return X(v,this.player),this.activeCue.played=!0,this.activeCue=e,++this.podInfo.position,X(y,this.player,Object.assign(Object.assign({},this.ad),this.podInfo));const r=this.findAdBreakStartCue(e);if(r!==e)return this.player.currentTime=r.startTime;Math.abs(e.startTime-this.player.currentTime)>1&&(this.player.currentTime=e.startTime),this.activeCue=e,Z(this.player),this.setPodInfo(e),X(u,this.player),X(y,this.player,Object.assign(Object.assign({},this.ad),this.podInfo))}setPodInfo(e){const t=this.getAdCues().filter(t=>t.startTime>=e.startTime);let r=1;for(;r<=t.length-1&&!(t[r].startTime-t[r-1].endTime>1);)r++;return this.podInfo={totals:r,position:1},this.player.hasState("is-live")?this.ad_type=$.Midroll:e.startTime<=1?this.ad_type=$.Preroll:Math.abs(t[r-1].endTime-this.player.duration)<=1?this.ad_type=$.Postroll:this.ad_type=$.Midroll}findAdBreakStartCue(e){const t=this.getAdCues().filter(t=>t.startTime<=e.startTime).reverse();let r=e,i=1;for(;i<t.length&&!(t[i-1].startTime-t[i].endTime>.1);)r=t[i],i++;return r}getAdCues(){var e;const t=(null===(e=Array.from(this.player.textTracks).find(e=>"metadata"===e.kind))||void 0===e?void 0:e.cues)||[];return Array.from(t).slice().filter(e=>{var t;return(null===(t=e.value)||void 0===t?void 0:t.key)===Le})}getContentCurrentTime(e){if(!this.activeCue)return 0;let t=this.findAdBreakStartCue(this.activeCue).startTime;return this.getAdCues().filter(e=>e.endTime<t).forEach(e=>{t-=e.endTime-e.startTime}),t}getAdType(){return this.ad_type}getContentDuration(e){return 0}setContentCurrentTime(e,t){}}MediaTailor.Type="mediaTailor";const Be=(e,t)=>new(((e,t)=>{const r=e.get(t);if(!r)throw new Error(`no flowplayer component with the name ${t} exists`);const i=window.customElements.get(t);if(!i)throw new Error(`no default flowplayer component with the name ${t} exists`);const s=window.customElements.get(r);return"function"!=typeof s?i:s})(e._customElements,t))(e),qe=(e,t,r)=>{window.customElements.get(t)||window.customElements.define(t,r),e.customElements.get(t)||e.customElements.set(t,t)};class FlowplayerComponent extends HTMLElement{constructor(e){super(),this.player=e}}class SSAIAdUi extends FlowplayerComponent{constructor(e){super(e),this.className="fp-ssai-ui",this.append(...this.fsIcons(),...this.player.createComponents(se,ne))}fsIcons(){return this.player.createComponents("flowplayer-fullscreen-enter-icon","flowplayer-fullscreen-exit-icon").map(e=>(e.onclick=()=>this.player.toggleFullScreen(),e))}}class SSAITimeline extends FlowplayerComponent{constructor(e){super(e),this.className="fp-ssai-timeline";const t=document.createElement("div");t.className="fp-ssai-progress fp-color",this.append(t),this.player.on(p,()=>{t.classList.remove("go"),"--ssai-percent-complete --ssai-percent-previous".split(" ").forEach(e=>this.style.setProperty(e,"0"))}),this.player.on(m,e=>{var r,i;const s=null===(r=e.detail)||void 0===r?void 0:r.currentTime,o=null===(i=e.detail)||void 0===i?void 0:i.duration;if(void 0===o||void 0===s)return;const n=s/o*100,a=t.style.getPropertyValue("--ssai-percent-complete");t.classList.remove("go"),t.style.setProperty("--ssai-percent-previous",a),t.style.setProperty("--ssai-percent-complete",n.toFixed(3)),t.classList.add("go")})}}function xe(e){const t="number"==typeof e?e:parseInt(e,10);return(t>9?"":"0")+t}function je(e){if(isNaN(e)||e>=Number.MAX_SAFE_INTEGER)return"";const t=e<0?"-":"";e=Math.round(Math.abs(e));const r=Math.floor(e/3600);let i=Math.floor(e/60);return e-=60*i,r>=1?(i-=60*r,t+r+":"+xe(i)+":"+xe(e)):t+xe(i)+":"+xe(e)}class SSAIControls extends FlowplayerComponent{constructor(e){super(e),this.className="fp-ssai-controls";const t=document.createElement("span");t.className="fp-ssai-elapsed";const r=document.createElement("span");r.className="fp-ssai-duration",this.player.on(m,e=>{const i=e.detail;i&&(t.textContent=je(i.currentTime||0),r.textContent=je(i.duration||0))}),this.append(...this.player.createComponents("flowplayer-control-buttons"),t,...this.player.createComponents(oe),r,...this.player.createComponents("flowplayer-volume-control"))}}class SSAIAdIndicator extends FlowplayerComponent{constructor(e){super(e),this.className="fp-ssai-indicator",this.player.on(y,e=>{var t,r;const i=null===(t=e.detail)||void 0===t?void 0:t.totals,s=null===(r=e.detail)||void 0===r?void 0:r.position;void 0!==i&&void 0!==s&&(this.textContent=`${this.player.i18n("ads.indicator","ADS")} ${s} / ${i}`)})}}var He,Ve=Object.freeze({__proto__:null,ID3:"ID3"});const Qe=((He=class ID3{init(e,t,r){r.textTracks.addEventListener("addtrack",({track:e})=>{if(e&&"metadata"===e.kind)return"id3"==e.id||"id3"==e.label||"com.apple.streaming"==e.inBandMetadataTrackDispatchType?function(e,t){t.mode="hidden",t.addEventListener("cuechange",async()=>{Array.from(t.activeCues||[]).forEach(async t=>{(function(e){return"object"==typeof e.value&&"string"==typeof e.value.key&&!!e.value.data})(t)&&e.emit("ID3",{cue:t})})})}(r,e):void 0})}}).pluginName="id3",He.events=Ve,He),Ke=e(window,Qe);var ze;const Ge=((ze=class Ssai{constructor(e,t){this.umd=e,this.providers=[],this.player=t,qe(e,ie,SSAIAdUi),qe(e,oe,SSAITimeline),qe(e,se,SSAIControls),qe(e,ne,SSAIAdIndicator)}init(e,t,r){const i=Be(r,ie);if(t.append(i),r.on(Ke.events.ID3,({detail:e})=>{var t,i,s;const o=null==e?void 0:e.cue;o&&(null===(s=null===(t=r.ssai)||void 0===t?void 0:(i=t.provider).onId3)||void 0===s||s.call(i,o))}),r.on("seeked",()=>function(e){if(e.opt("live"))return;if(!e.ssai)return;const{provider:t,state:r}=e.ssai;if(r.snapback)return r.snapback=!1;const i=a(e),s=t.getPreviousActiveAdStart(e,i);void 0!==s&&(r.snapback=!0,r.snapbackTime=i,c(e,s))}(r)),r.on("src",e=>{var t,i,s;r.setState(W,!1),null===(s=null===(i=null===(t=r.ssai)||void 0===t?void 0:t.provider)||void 0===i?void 0:i.onNewSrc)||void 0===s||s.call(i,r,e.detail)}),this.umd.extensions.find(e=>e.pluginName===Ke.pluginName))return;new Ke(this.umd,r).init(e,t,r)}onload(e,t,r,i){var s,o;null===(o=null===(s=r.ssai)||void 0===s?void 0:s.provider)||void 0===o||o.onload(r,i)}wants(e,t,r){return!!this.findProvider(t)}findProvider(e){let t;switch(e.type){case MediaTailor.Type:t=this.providers.find(e=>e instanceof MediaTailor)||new MediaTailor(this.player);break;case Dai.Type:t=this.providers.find(e=>e instanceof Dai)||new Dai(this.player);break;case Yospace.Type:Yospace.exists()&&(t=this.providers.find(e=>e instanceof Yospace)||new Yospace(this.player))}return t&&(this.player.ssai={provider:t,state:{snapback:!1}},this.providers.includes(t)||this.providers.push(t)),t}}).pluginName="ssai",ze.events=S,ze);return e(window,Ge)});
|
package/plugins/subtitles.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { Get } from 'type-fest';
|
|
2
|
-
import type hlsjs from 'hls.js';
|
|
3
2
|
import type { Level } from 'hls.js';
|
|
4
3
|
import type { LevelAttributes } from 'hls.js';
|
|
5
4
|
import type { Paths } from 'type-fest';
|
|
@@ -38,6 +37,8 @@ declare enum AutoplayOpts {
|
|
|
38
37
|
AUDIO_REQUIRED = 2
|
|
39
38
|
}
|
|
40
39
|
|
|
40
|
+
/* Excluded from this release type: BaseTextTrackAttributes */
|
|
41
|
+
|
|
41
42
|
/* Excluded from this release type: BEFORE_PAUSE */
|
|
42
43
|
|
|
43
44
|
/* Excluded from this release type: BEFORE_PLAY */
|
|
@@ -241,6 +242,8 @@ CUEPOINTS = "cuepoints";
|
|
|
241
242
|
|
|
242
243
|
/* Excluded from this release type: CUES_PARSED */
|
|
243
244
|
|
|
245
|
+
/* Excluded from this release type: DashTextTrackAttributes */
|
|
246
|
+
|
|
244
247
|
/**
|
|
245
248
|
* @public
|
|
246
249
|
*/
|
|
@@ -861,6 +864,8 @@ declare type HasGlobalSrcExtensios<PluginSrcs extends unknown[]> = ArrayToInters
|
|
|
861
864
|
|
|
862
865
|
declare type HasSrcExtensions<PluginBareConfigs extends unknown[]> = TupleToUnion<PickSrcExtensions<PluginBareConfigs>> extends never ? false : true;
|
|
863
866
|
|
|
867
|
+
/* Excluded from this release type: HlsTextTrackAttributes */
|
|
868
|
+
|
|
864
869
|
declare const HOVERED = "is-hovered";
|
|
865
870
|
|
|
866
871
|
/**
|
|
@@ -898,11 +903,6 @@ export declare type HTMLTrackAttributes = {
|
|
|
898
903
|
* The kind of track.
|
|
899
904
|
*/
|
|
900
905
|
kind?: "captions" | "chapters" | "subtitles";
|
|
901
|
-
/**
|
|
902
|
-
* The mode of the track.
|
|
903
|
-
* Possible options: 'hidden', 'showing', 'disabled'.
|
|
904
|
-
*/
|
|
905
|
-
mode?: "hidden" | "showing" | "disabled";
|
|
906
906
|
/**
|
|
907
907
|
* The ID of the subtitle.
|
|
908
908
|
* The unique identifier for the subtitle track.
|
|
@@ -2077,14 +2077,13 @@ export declare type SubtitlesEvents = typeof events_2;
|
|
|
2077
2077
|
export declare type SubtitlesPlayer = PlayerWith<{
|
|
2078
2078
|
on(event: SubtitlesEvents["TRACK_UPDATED"], handler: (e: SubtitlesTracksEvent) => void): Player;
|
|
2079
2079
|
/* Excluded from this release type: emit */
|
|
2080
|
-
/* Excluded from this release type: hls */
|
|
2081
2080
|
}>;
|
|
2082
2081
|
|
|
2083
2082
|
/**
|
|
2084
2083
|
* @public
|
|
2085
2084
|
* This event is emitted when the subtitles tracks are updated.
|
|
2086
2085
|
*/
|
|
2087
|
-
export declare type SubtitlesTracksEvent = FPEvent<
|
|
2086
|
+
export declare type SubtitlesTracksEvent = FPEvent<TextTrack>;
|
|
2088
2087
|
|
|
2089
2088
|
/**
|
|
2090
2089
|
* @public
|
|
@@ -2094,36 +2093,7 @@ declare const SWITCH = "subs:change";
|
|
|
2094
2093
|
|
|
2095
2094
|
/* Excluded from this release type: TEXT_TRACKS */
|
|
2096
2095
|
|
|
2097
|
-
|
|
2098
|
-
* @public
|
|
2099
|
-
* Represents a TextTrack with additional attributes for handling custom track states and properties.
|
|
2100
|
-
*/
|
|
2101
|
-
export declare type TextTrackWithAttributes = TextTrack & {
|
|
2102
|
-
/**
|
|
2103
|
-
* Indicates whether the track has been removed.
|
|
2104
|
-
*/
|
|
2105
|
-
removed?: boolean;
|
|
2106
|
-
/**
|
|
2107
|
-
* Indicates whether the track is embedded in the HLS stream.
|
|
2108
|
-
*/
|
|
2109
|
-
is_hls_embedded?: boolean;
|
|
2110
|
-
/**
|
|
2111
|
-
* Indicates whether the track is the default track.
|
|
2112
|
-
*/
|
|
2113
|
-
default?: boolean;
|
|
2114
|
-
/**
|
|
2115
|
-
* The unique identifier for the track.
|
|
2116
|
-
*/
|
|
2117
|
-
track_id?: string | number;
|
|
2118
|
-
/**
|
|
2119
|
-
* Indicates whether the track is currently active.
|
|
2120
|
-
*/
|
|
2121
|
-
is_active?: boolean;
|
|
2122
|
-
/**
|
|
2123
|
-
* Additional attributes associated with the track.
|
|
2124
|
-
*/
|
|
2125
|
-
attr?: LevelAttributes;
|
|
2126
|
-
};
|
|
2096
|
+
/* Excluded from this release type: TextTrackWithAttributes */
|
|
2127
2097
|
|
|
2128
2098
|
/**
|
|
2129
2099
|
* @public
|
package/plugins/subtitles.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):((e="undefined"!=typeof globalThis?globalThis:e||self).flowplayer=e.flowplayer||{},e.flowplayer.subtitles=t())}(this,function(){"use strict";function e(e,t,s){const i=function(e){return Array.isArray(e)?e.slice(0):e.split(".")}(t);for(;i.length;){if(null==e)return s;const t=i.shift();if("string"!=typeof t)return s;e=e[t]}return null==e?s:e}function t(e,t){e.innerHTML="",t.forEach(function(t){const s=document.createElement("pre");s.classList.add("fp-cue"),function(e,t){const s=e.style,i=t.size;s.setProperty("--caption-size",i.toString());const n=t.position;n&&"auto"!==n&&t?s.setProperty("--caption-position",n.toString()):s.removeProperty("--caption-position");const r="captions-align-"+t.align;Array.from(e.classList).forEach(function(s){s!=r&&("captions-vertical"==s&&t.vertical||s.startsWith("captions")&&e.classList.remove(s))}),e.classList.add(r),e.classList.toggle("captions-vertical",!!t.vertical)}(e,t),s.appendChild(t.getCueAsHTML()),e.appendChild(s)})}function s(){}const i="is-tv",n="has-menu-opened",r="is-source-processing",o="mount",a="click",l=(e,t)=>new(((e,t)=>{const s=e.get(t);if(!s)throw new Error(`no flowplayer component with the name ${t} exists`);const i=window.customElements.get(t);if(!i)throw new Error(`no default flowplayer component with the name ${t} exists`);const n=window.customElements.get(s);return"function"!=typeof n?i:n})(e._customElements,t))(e),c=(e,t,s)=>{window.customElements.get(t)||window.customElements.define(t,s),e.customElements.get(t)||e.customElements.set(t,t)};function u(e,t,s){const i=function(e,t){const s=new CustomEvent(e,{detail:t,cancelable:!0});return t&&Object.defineProperty(s,"data",{get:()=>t}),s}(t,s);return e.dispatchEvent(i),e}function d(e,t){const s=e._customElements.get(t);return s&&e.root.querySelector(s)||void 0}!function(){let e=!1;try{const t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("testPassive",null,t),window.removeEventListener("testPassive",null,t)}catch(e){}}();const p="flowplayer-subtitles-menu",m="flowplayer-subs-menu-icon",h="flowplayer-menu-back";class FlowplayerComponent extends HTMLElement{constructor(e){super(),this.player=e}}const f="fp-menu",y="fp-menu-container",v="fp-on",b="fp-invis",g="details[open]."+y;class FlowplayerMenu extends FlowplayerComponent{constructor(e){super(e),this.player=e,this.menuContainer=document.createElement("details"),this.summaryEle=document.createElement("summary"),this.menuHeader=document.createElement("div"),this.menuTitle=document.createElement("h3"),this.olEle=document.createElement("ol"),this.olEle.id=E(),this.menu=document.createElement("div"),this.closeEle=document.createElement("span"),this.menuHeader.classList.add("fp-menu-header"),this.menuHeader.append(this.menuTitle,this.closeEle),this.menu.classList.add(f),this.menu.append(this.menuHeader,this.olEle),this.closeEle.classList.add("fp-close"),this.closeEle.textContent="×",this.menuContainer.classList.add(y),this.menuContainer.append(this.summaryEle,this.menu),this.menuContainer.addEventListener(a,t=>{if(t.defaultPrevented)return;t.preventDefault();const s=this.menuContainer.open;s||(k(),document.active_menu=this.menuContainer),this.menuContainer.open=!s,e.root.classList.toggle(n,!s),this.summaryEle.setAttribute("aria-expanded",s?"false":"true")}),this.addEventListener("focusin",e=>{e.target;HTMLLIElement}),this.addEventListener("focusout",e=>{e.target;HTMLLIElement}),this.append(this.menuContainer),this.olEle.setAttribute("aria-labelledby",this.summaryEle.id),this.olEle.setAttribute("role","menu"),this.summaryEle.setAttribute("aria-haspopup","true"),this.summaryEle.setAttribute("aria-controls",this.olEle.id),this.summaryEle.setAttribute("tabindex","0"),this.summaryEle.setAttribute("aria-expanded","false"),this.summaryEle.setAttribute("role","button")}get options(){return this.olEle.querySelectorAll("li")}setMenuAttrs(e){if(this.className=e.class,this.toggle_visibility(!0),this.summaryEle.id||(this.summaryEle.id=e.id||E()),this.summaryEle.setAttribute("aria-label",e.menuTitle||"Menu"),e.summaryTitle&&(this.summaryEle.textContent=e.summaryTitle),e.summaryIcon){const t=l(this.player,e.summaryIcon);t.setAttribute("tabindex",""),this.summaryEle.append(t)}e.menuTitle&&(this.menuTitle.textContent=e.menuTitle),this.menu.classList.toggle("fp-icons",!!e.icons),this.addEventListener(e.options_event,e=>{this.render(e.data)}),e.item_selected_event&&this.addEventListener(e.item_selected_event,e=>{void 0!==e.data&&this.select_item(e.data.selected_index)})}render(e){this.olEle&&(this.olEle.innerHTML="",e&&e.forEach(this.menuOption,this),this.toggle_visibility(!(null==e?void 0:e.length)))}menuOption(e,t){const s=document.createElement("li");s.setAttribute("tabindex","0"),e.icon&&s.append(e.icon);const i=document.createElement("span");i.textContent=e.text,s.append(i),this.olEle.appendChild(s),e.isButton?(s.setAttribute("role","menuitem"),s.addEventListener(a,()=>{"function"==typeof e.onclick&&e.onclick()})):(s.setAttribute("role","menuitemradio"),s.setAttribute("aria-checked","false"),s.addEventListener(a,()=>{this.select_item(t),"function"==typeof e.onclick&&e.onclick()}),e.selected&&this.select_item(t))}select_item(e){var t;if(this.options[e]&&!(null===(t=this.options[e])||void 0===t?void 0:t.hasAttribute("aria-checked")))throw new Error("Cannot select a button-only item");this.options.forEach((t,s)=>{t.hasAttribute("aria-checked")&&(t.classList.toggle(v,s===e),t.setAttribute("aria-checked",s===e?"true":"false"))})}unselect_item(){this.options.forEach(e=>{e.classList.remove(v),e.hasAttribute("aria-checked")&&e.setAttribute("aria-checked","false")})}toggle_visibility(e){this.classList.toggle(b,e),this.menu.style.setProperty("display",e?"none":"flex")}}function k(){Array.from(document.querySelectorAll(".fp-engine")).forEach(e=>{var t;const s=e.root.querySelector(g);s&&(s.open=!1,null===(t=s.querySelector("summary"))||void 0===t||t.removeAttribute("aria-expanded"),e.root.classList.toggle(n,!1))})}function E(){return Math.random().toString(36).replace(/[^a-z]+/g,"").substr(0,5)}document.addEventListener(a,function(e){this.active_menu&&!e.composedPath().includes(this.active_menu)&&(k(),this.active_menu=void 0)});const x=["255, 255, 255","255, 255, 0","0, 255, 0","0, 255, 255","0, 0, 255","255, 0, 255","255, 0, 0","0, 0, 0"],A=[.25,.5,.75,1,1.25,1.5,1.75,2,3,4],w=["White","Yellow","Green","Cyan","Blue","Magenta","Red","Black"],_=["Monospaced Serif","Proportional Serif","Monospaced Sans-Serif","Proportional Sans-Serif","Casual","Cursive"],T=["Courier New, monospace","serif","Andale Mono, Lucida Console, monospace","sans-serif","Comic Sans MS, Impact, fantasy","Monotype Corsiva, cursive"],C=["None","Drop shadow","Raised","Depressed","Outline"],O=["","rgb(34, 34, 34) 2px 2px 3px, rgb(34, 34, 34) 2px 2px 4px, rgb(34, 34, 34) 2px 2px 5px","rgb(34, 34, 34) 1px 1px, rgb(34, 34, 34) 2px 2px, rgb(34, 34, 34) 3px 3px","rgb(204, 204, 204) 1px 1px, rgb(204, 204, 204) 0px 1px, rgb(34, 34, 34) -1px -1px, rgb(34, 34, 34) 0px -1px","rgb(34, 34, 34) 0px 0px 1px, rgb(34, 34, 34) 0px 0px 1px, rgb(34, 34, 34) 0px 0px 1px, rgb(34, 34, 34) 0px 0px 1px, rgb(34, 34, 34) 0px 0px 1px"];class StyleOpt{constructor(e,t,s,i,n){this.player=e,this.labels=t,this.values=s,this.css_variable=i,this.default_value=n,this.selected=e._storage.getItem(i)||n}set selected(e){document.documentElement.style.setProperty(this.css_variable,e),this.player._storage.setItem(this.css_variable,e)}get selected(){return document.documentElement.style.getPropertyValue(this.css_variable)}}var S;!function(e){e[e.main=0]="main",e[e.tracks=1]="tracks",e[e.style=2]="style",e[e.styleOpt=3]="styleOpt"}(S||(S={}));class FlowplayerSubtitlesMenu extends FlowplayerMenu{constructor(e){if(super(e),this.state=S.main,this.selectedTrackIdx=-1,this.isTV=!1,this.styleOpts=function(e){return{[e.i18n("cc.properties.fontSize","Font size")]:new StyleOpt(e,A.map(e=>100*e+"%"),A.map(e=>100*e+"%"),"--fp-sub-font-size","100%"),[e.i18n("cc.properties.fontFamily","Font family")]:new StyleOpt(e,_.map(t=>e.i18n(`cc.fontFamily.${t}`,t)),T,"--fp-sub-font-family","sans-serif"),[e.i18n("cc.properties.fontColor","Font color")]:new StyleOpt(e,w.map(t=>e.i18n(`cc.colors.${t}`,t)),x,"--fp-sub-font-color",x[0]),[e.i18n("cc.properties.fontOpacity","Font opacity")]:new StyleOpt(e,A.flatMap(e=>e>1?[]:100*e+"%"),A.flatMap(e=>e>1?[]:e+""),"--fp-sub-font-opacity","1"),[e.i18n("cc.properties.backgroundColor","Background color")]:new StyleOpt(e,w.map(t=>e.i18n(`cc.colors.${t}`,t)),x,"--fp-sub-background-color",x[7]),[e.i18n("cc.properties.backgroundOpacity","Background opacity")]:new StyleOpt(e,A.flatMap(e=>e>1?[]:100*e+"%"),A.flatMap(e=>e>1?[]:e+""),"--fp-sub-background-opacity","0.5"),[e.i18n("cc.properties.characterEdgeStyle","Character edge style")]:new StyleOpt(e,C.map(t=>e.i18n(`cc.edgeStyle.${t}`,t)),O,"--fp-sub-edge-style","")}}(e),e.on(o,()=>{setTimeout(()=>this.isTV=e.hasState(i),0),this.classList.toggle("subs-native",!!e.opt("subtitles.native"))}),e.on(N.events.TRACK_UPDATED,e=>this.summaryEle.classList.toggle("fp-color-text",!!e.detail)),e.opt("subtitles.native"))return;const t=l(this.player,h);t.setAttribute("aria-label","Back to previous menu"),t.setAttribute("role","button"),this.menuHeader.prepend(t),t.addEventListener("click",()=>this.navigateBack());const s=l(this.player,m);s.setAttribute("role","button"),s.setAttribute("aria-label","Open style menu"),s.addEventListener("click",()=>this.createMenu(S.style)),this.menuHeader.insertBefore(s,this.menuTitle),this.summaryEle.addEventListener("click",()=>{this.menuContainer.open||this.createMenu(S.main)}),this.menu.addEventListener("click",e=>{(e.target===s||e.target===t||this.state!==S.main&&e.target!==this.closeEle)&&e.preventDefault()}),this.addEventListener(N.events.TRACKS,e=>{var t;this.tracks=e.detail,this.selectedTrackIdx=-1,this.toggle_visibility(!(null===(t=null==this?void 0:this.tracks)||void 0===t?void 0:t.length)),this.state===(this.isTV?S.tracks:S.main)&&this.createMenu(this.isTV?S.tracks:S.main)}),this.addEventListener(N.events.SWITCH,e=>{this.selectedTrackIdx=e.detail.selected_index,this.state===(this.isTV?S.tracks:S.main)&&this.select_item(this.selectedTrackIdx)}),this.player.addEventListener("tv-menu:will-open",()=>{var e;(null===(e=this.tracks)||void 0===e?void 0:e.length)&&this.createMenu(S.main)}),this.player.on(["tv-menu:will-close","keyboard:close:menus"],e=>{var t;this.state!==S.main&&(null===(t=document.activeElement)||void 0===t?void 0:t.closest(`.${f}`))===this.menu&&(this.navigateBack(),e.preventDefault())})}navigateBack(){switch(this.state){case S.style:case S.tracks:return this.createMenu(S.main);case S.styleOpt:return this.createMenu(S.style)}}getMenuTitle(){switch(this.state){case S.main:return this.player.i18n("cc.menu_title","Subtitles");case S.tracks:return this.player.i18n("cc.tracks","Tracks");case S.style:return this.player.i18n("cc.options","Options");default:return""}}createMenuOpts(e){switch(this.state){case S.main:return this.isTV?this.createTvMainMenuOpts():this.createTracksMenuOpts();case S.tracks:return this.createTracksMenuOpts();case S.style:return this.createStyleMenuOpts();case S.styleOpt:return e?this.createStylePropertyMenuOpts(this.styleOpts[e]):[]}}createMenu(e,t){var s;this.state=e,this.menu.classList.toggle("fp-submenu",e>0),this.menuTitle.textContent=t||this.getMenuTitle(),this.render(this.createMenuOpts(t)),null===(s=this.menu.querySelector("li"))||void 0===s||s.focus()}createTvMainMenuOpts(){return[{text:this.player.i18n("cc.tracks","Tracks"),onclick:this.createMenu.bind(this,S.tracks)},{text:this.player.i18n("cc.options","Options"),onclick:this.createMenu.bind(this,S.style)}]}createTracksMenuOpts(){return Array.isArray(null==this?void 0:this.tracks)?this.tracks.map((e,t)=>({text:e.text,onclick:()=>{e.onclick(),this.selectedTrackIdx=this.selectedTrackIdx===t?-1:t},selected:this.selectedTrackIdx===t})):[]}createStyleMenuOpts(){const e=Object.keys(this.styleOpts).map(e=>({text:e,onclick:this.createMenu.bind(this,S.styleOpt,e)}));return e.push({text:this.player.i18n("cc.reset","Reset"),onclick:()=>Object.values(this.styleOpts).forEach(e=>e.selected=e.default_value)}),e}createStylePropertyMenuOpts(e){return e.labels.map((t,s)=>({text:t,onclick:()=>{e.selected=e.values[s]},selected:s===e.values.indexOf(e.selected)}))}select_item(e){if(this.state!==S.style)return this.state===S.styleOpt?super.select_item(e):void this.options.forEach((t,s)=>{t.classList.toggle(v,s===e&&!t.classList.contains(v))})}}class FlowplayerIcon extends FlowplayerComponent{constructor(e,t){super(e),this.classList.add("fp-icon",t.name),t.title&&this.setAttribute("title",t.title),t.title&&this.setAttribute("aria-label",t.title),t.translation_key&&this.setAttribute("aria-label",e.i18n(t.translation_key)),this.setAttribute("tabindex","0"),this.setAttribute("focusable","true")}}function L(e){return!document.fullscreenEnabled&&"function"==typeof e.webkitEnterFullScreen&&"function"==typeof e.webkitExitFullScreen}const M="tracks:text:updated",I="subs:tracks",F="subs:change",P="cues:parsed",H="tracks:text:all";var B,j=Object.freeze({__proto__:null,TRACK_UPDATED:M,TRACKS:I,SWITCH:F,CUES_PARSED:P,TEXT_TRACKS:H});function R(e,t){if(function(e){return Object.values(B).includes(e)}(t=t||B.Anonymous))return e instanceof HTMLVideoElement&&(e.poster="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),"crossOrigin"in e?e.crossOrigin=t:e.setAttribute("crossorigin",t),e}function V(e){const t=document.createElement("a");return t.href=e,t.origin}function D(e,t){const i=document.createElement("track");i.className="fp-track renderable",i.kind=t.kind||"captions",i.label=t.label||t.lang||"",i.lang=t.lang||"",i.id=["fp",t.lang].join("-");const n=i.track;return n.removeCue=s,"string"!=typeof t.crossorigin&&function(e,t){try{return e.src.startsWith("blob:"),V(e.src)!==V(t)}catch(e){return console.error(e),!0}}(e,t.src)&&(R(e),t.crossorigin=e.getAttribute("crossorigin")),"crossorigin"in t&&R(e,t.crossorigin),Object.keys(t).forEach(e=>{"default"!==e&&(i[e]=t[e])}),n.mode=t.default?"hidden":"disabled",e.appendChild(i),i}!function(e){e.Anonymous="anonymous",e.UseCredentials="use-credentials",e.Empty=""}(B||(B={}));const q={translation_key:"cc.menu_title",name:"fp-subtitles-menu"},z={name:"fp-menu-back"};var K;const N=((K=class Subtitles{constructor(e){c(e,p,FlowplayerSubtitlesMenu),c(e,m,class extends FlowplayerIcon{constructor(e){super(e,q)}}),c(e,h,class extends FlowplayerIcon{constructor(e){super(e,z)}})}init(n,a,c){var m,h;const f=l(c,p);f instanceof FlowplayerSubtitlesMenu&&f.setMenuAttrs({class:"fp-cc",summaryTitle:c.i18n("cc.button","CC"),menuTitle:c.i18n("cc.menu_title","Subtitles"),options_event:(null===(m=n.subtitles)||void 0===m?void 0:m.native)?I:void 0,item_selected_event:(null===(h=n.subtitles)||void 0===h?void 0:h.native)?F:void 0});const y=function(e){const t=document.createElement("div");return t.classList.add("fp-captions"),t.ontouchend=t=>e.emit(t.type),t.onclick=t=>e.emit(t.type),t}(c);let v,b=[],g=[];function k(){return Array.from(c.textTracks).filter(e=>~["captions","subtitles","descriptions"].indexOf(e.kind)&&!e.removed&&e.label)}function E(){return k().find(e=>e.is_active)}function x(e){Array.from(e.querySelectorAll("track")).forEach(t=>{["captions","subtitles","descriptions"].includes(t.kind)&&e.removeChild(t)})}function A(e,t,s){u(t,I,s.map(function(t){return{text:t.label,onclick:w.bind(0,e,t)}}));const i=E();return i?k().find(e=>e===i)?void u(t,F,{selected_index:s.indexOf(i)}):_():e.emit(M)}function w(e,t){var s,i;if(t==E())return _();_(),t.is_hls_embedded&&"number"==typeof t.track_id&&e.hls&&(e.hls.subtitleTrack=t.track_id),t.mode=(null===(s=e.opts.subtitles)||void 0===s?void 0:s.native)?"showing":"hidden",t.is_active=!0,e.emit(M,t),(null===(i=e.opts.subtitles)||void 0===i?void 0:i.native)||e.emit("cuechange",{track:t})}function _(){const e=E();e&&(c.emit(M),e.mode="disabled",e.is_active=!1,t(y,[]))}!function(e){if(!L(e))return;e.on("webkitbeginfullscreen",()=>{const e=E();e&&(e.mode="showing")}),e.on("webkitendfullscreen",()=>{var t;const s=k().find(e=>"showing"===e.mode);s&&!(null===(t=e.opts.subtitles)||void 0===t?void 0:t.native)&&(s.mode="hidden"),s!==E()&&(s?w(e,s):_(),u(f,F,{selected_index:s?g.indexOf(s):-1}))})}(c),c.on(o,function(){var e,t;const s=d(c,"flowplayer-control");if(!s)return null===(e=d(c,"flowplayer-ui"))||void 0===e?void 0:e.appendChild(y);s.insertAdjacentElement("beforebegin",y),null===(t=c.hasState(i)?d(c,"flowplayer-tv-menu"):s)||void 0===t||t.append(f)}),c.on("config",function(e){var t,s;const i=null===(s=null===(t=e.data)||void 0===t?void 0:t.subtitles)||void 0===s?void 0:s.tracks;i&&b!==i&&(b=i,x(c),g=k(),A(c,f,g),b.forEach(e=>D(c,e)))}),c.on(H,e=>{const t=e.detail.tracks;t!==v&&(v=t,g=g.flatMap(e=>e.is_hls_embedded?(e.removed=!0,[]):e),A(c,f,g),t.filter(e=>{var t,s;return~["subtitles","captions"].indexOf((null==e?void 0:e.kind)||(null===(s=null===(t=null==e?void 0:e.subtitleTrack)||void 0===t?void 0:t.type)||void 0===s?void 0:s.toLocaleLowerCase())||"")}).forEach(e=>{var t,i,n,r,o,a,l;const u=c.addTextTrack("captions"===e.kind?"captions":"subtitles",(null===(t=e.subtitleTrack)||void 0===t?void 0:t.name)||e.label,null===(i=e.subtitleTrack)||void 0===i?void 0:i.lang);u.is_hls_embedded=!0,u.default=void 0!==(null===(n=e.subtitleTrack)||void 0===n?void 0:n.default)?null===(r=e.subtitleTrack)||void 0===r?void 0:r.default:e.default,u.track_id=null!==(a=null===(o=e.subtitleTrack)||void 0===o?void 0:o.id)&&void 0!==a?a:e._id,u.mode=u.default?"hidden":"disabled",u.removeCue=s,u.attr=null===(l=e.subtitleTrack)||void 0===l?void 0:l.attrs}))}),c.on(P,e=>{const t=e.detail,s=g.find(e=>e.is_hls_embedded&&!e.removed&&(e.default&&"default"===t.track||e.track_id===t.track||"subtitles"+e.track_id===t.track||"captions"+e.track_id===t.track));s&&t.cues.forEach(e=>s.addCue(e))}),c.textTracks.addEventListener("addtrack",()=>{const e=k();if(g.length===e.length&&g.every((t,s)=>t===e[s]))return;let t=E();if(e.map(function(e){return~["showing","hidden"].indexOf(e.mode)&&(t=e,e.mode="disabled",e.is_active=!1),e.oncuechange=function(t){var s;if(!(e===E()||L(c)&&c.hasState("is-fullscreen")))return e.mode="disabled";(null===(s=n.subtitles)||void 0===s?void 0:s.native)||c.emit(t.type,{track:t.target})},e}),u(f,I,e.map(function(e){return{text:e.label,onclick:w.bind(0,c,e)}})),g=e,!t)return _();w(c,t),u(f,F,{selected_index:g.indexOf(t)})}),c.on("cuechange",function(s){var i;const n=null===(i=s.data)||void 0===i?void 0:i.track;if(!n||!["captions","subtitles","descriptions"].includes(n.kind))return;const r=Array.from(e(n,"activeCues",[])).filter((e,t,s)=>t===s.findIndex(t=>e.id===t.id)).sort((e,t)=>"number"!=typeof e.line||"number"!=typeof t.line?0:e.line-t.line);t(y,r)}),c.on(["playlist/advance","src"],e=>{t(y,[]),c.currentSrc&&("src"===e.type&&["is-playlist",r].some(e=>c.root.classList.contains(e))||(delete c.opts.subtitles,x(c),b=[],_(),g=[],v=[],k().forEach(e=>e.removed=!0),u(f,I,[])))})}}).pluginName="subtitles",K.events=j,K);return function(e,t){if("object"==typeof exports&&"undefined"!=typeof module)return t;if(null===document.currentScript)return t;"flowplayer"in e||(e.flowplayer={extensions:[]});const s=e.flowplayer;return"function"==typeof s?(s(t),t):(Array.isArray(s.extensions)||(s.extensions=[]),~s.extensions.indexOf(t)||s.extensions.push(t),t)}(window,N)});
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):((e="undefined"!=typeof globalThis?globalThis:e||self).flowplayer=e.flowplayer||{},e.flowplayer.subtitles=t())}(this,function(){"use strict";function e(e,t,s){const i=function(e){return Array.isArray(e)?e.slice(0):e.split(".")}(t);for(;i.length;){if(null==e)return s;const t=i.shift();if("string"!=typeof t)return s;e=e[t]}return null==e?s:e}function t(e,t){e.innerHTML="",t.forEach(function(t){const s=document.createElement("pre");s.classList.add("fp-cue"),function(e,t){const s=e.style,i=t.size;s.setProperty("--caption-size",i.toString());const n=t.position;n&&"auto"!==n&&t?s.setProperty("--caption-position",n.toString()):s.removeProperty("--caption-position");const r="captions-align-"+t.align;Array.from(e.classList).forEach(function(s){s!=r&&("captions-vertical"==s&&t.vertical||s.startsWith("captions")&&e.classList.remove(s))}),e.classList.add(r),e.classList.toggle("captions-vertical",!!t.vertical)}(e,t),s.appendChild(t.getCueAsHTML()),e.appendChild(s)})}function s(){}const i="is-tv",n="has-menu-opened",r="is-source-processing",o="mount",a="click",l=(e,t)=>new(((e,t)=>{const s=e.get(t);if(!s)throw new Error(`no flowplayer component with the name ${t} exists`);const i=window.customElements.get(t);if(!i)throw new Error(`no default flowplayer component with the name ${t} exists`);const n=window.customElements.get(s);return"function"!=typeof n?i:n})(e._customElements,t))(e),c=(e,t,s)=>{window.customElements.get(t)||window.customElements.define(t,s),e.customElements.get(t)||e.customElements.set(t,t)};function u(e,t,s){const i=function(e,t){const s=new CustomEvent(e,{detail:t,cancelable:!0});return t&&Object.defineProperty(s,"data",{get:()=>t}),s}(t,s);return e.dispatchEvent(i),e}function d(e,t){const s=e._customElements.get(t);return s&&e.root.querySelector(s)||void 0}!function(){let e=!1;try{const t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("testPassive",null,t),window.removeEventListener("testPassive",null,t)}catch(e){}}();const p="flowplayer-subtitles-menu",m="flowplayer-subs-menu-icon",h="flowplayer-menu-back";class FlowplayerComponent extends HTMLElement{constructor(e){super(),this.player=e}}const f="fp-menu",y="fp-menu-container",v="fp-on",b="fp-invis",g="details[open]."+y;class FlowplayerMenu extends FlowplayerComponent{constructor(e){super(e),this.player=e,this.menuContainer=document.createElement("details"),this.summaryEle=document.createElement("summary"),this.menuHeader=document.createElement("div"),this.menuTitle=document.createElement("h3"),this.olEle=document.createElement("ol"),this.olEle.id=E(),this.menu=document.createElement("div"),this.closeEle=document.createElement("span"),this.menuHeader.classList.add("fp-menu-header"),this.menuHeader.append(this.menuTitle,this.closeEle),this.menu.classList.add(f),this.menu.append(this.menuHeader,this.olEle),this.closeEle.classList.add("fp-close"),this.closeEle.textContent="×",this.menuContainer.classList.add(y),this.menuContainer.append(this.summaryEle,this.menu),this.menuContainer.addEventListener(a,t=>{if(t.defaultPrevented)return;t.preventDefault();const s=this.menuContainer.open;s||(k(),document.active_menu=this.menuContainer),this.menuContainer.open=!s,e.root.classList.toggle(n,!s),this.summaryEle.setAttribute("aria-expanded",s?"false":"true")}),this.addEventListener("focusin",e=>{e.target;HTMLLIElement}),this.addEventListener("focusout",e=>{e.target;HTMLLIElement}),this.append(this.menuContainer),this.olEle.setAttribute("aria-labelledby",this.summaryEle.id),this.olEle.setAttribute("role","menu"),this.summaryEle.setAttribute("aria-haspopup","true"),this.summaryEle.setAttribute("aria-controls",this.olEle.id),this.summaryEle.setAttribute("tabindex","0"),this.summaryEle.setAttribute("aria-expanded","false"),this.summaryEle.setAttribute("role","button")}get options(){return this.olEle.querySelectorAll("li")}setMenuAttrs(e){if(this.className=e.class,this.toggle_visibility(!0),this.summaryEle.id||(this.summaryEle.id=e.id||E()),this.summaryEle.setAttribute("aria-label",e.menuTitle||"Menu"),e.summaryTitle&&(this.summaryEle.textContent=e.summaryTitle),e.summaryIcon){const t=l(this.player,e.summaryIcon);t.setAttribute("tabindex",""),this.summaryEle.append(t)}e.menuTitle&&(this.menuTitle.textContent=e.menuTitle),this.menu.classList.toggle("fp-icons",!!e.icons),this.addEventListener(e.options_event,e=>{this.render(e.data)}),e.item_selected_event&&this.addEventListener(e.item_selected_event,e=>{void 0!==e.data&&this.select_item(e.data.selected_index)})}render(e){this.olEle&&(this.olEle.innerHTML="",e&&e.forEach(this.menuOption,this),this.toggle_visibility(!(null==e?void 0:e.length)))}menuOption(e,t){const s=document.createElement("li");s.setAttribute("tabindex","0"),e.icon&&s.append(e.icon);const i=document.createElement("span");i.textContent=e.text,s.append(i),this.olEle.appendChild(s),e.isButton?(s.setAttribute("role","menuitem"),s.addEventListener(a,()=>{"function"==typeof e.onclick&&e.onclick()})):(s.setAttribute("role","menuitemradio"),s.setAttribute("aria-checked","false"),s.addEventListener(a,()=>{this.select_item(t),"function"==typeof e.onclick&&e.onclick()}),e.selected&&this.select_item(t))}select_item(e){var t;if(this.options[e]&&!(null===(t=this.options[e])||void 0===t?void 0:t.hasAttribute("aria-checked")))throw new Error("Cannot select a button-only item");this.options.forEach((t,s)=>{t.hasAttribute("aria-checked")&&(t.classList.toggle(v,s===e),t.setAttribute("aria-checked",s===e?"true":"false"))})}unselect_item(){this.options.forEach(e=>{e.classList.remove(v),e.hasAttribute("aria-checked")&&e.setAttribute("aria-checked","false")})}toggle_visibility(e){this.classList.toggle(b,e),this.menu.style.setProperty("display",e?"none":"flex")}}function k(){Array.from(document.querySelectorAll(".fp-engine")).forEach(e=>{var t;const s=e.root.querySelector(g);s&&(s.open=!1,null===(t=s.querySelector("summary"))||void 0===t||t.removeAttribute("aria-expanded"),e.root.classList.toggle(n,!1))})}function E(){return Math.random().toString(36).replace(/[^a-z]+/g,"").substr(0,5)}document.addEventListener(a,function(e){this.active_menu&&!e.composedPath().includes(this.active_menu)&&(k(),this.active_menu=void 0)});const x=["255, 255, 255","255, 255, 0","0, 255, 0","0, 255, 255","0, 0, 255","255, 0, 255","255, 0, 0","0, 0, 0"],A=[.25,.5,.75,1,1.25,1.5,1.75,2,3,4],w=["White","Yellow","Green","Cyan","Blue","Magenta","Red","Black"],T=["Monospaced Serif","Proportional Serif","Monospaced Sans-Serif","Proportional Sans-Serif","Casual","Cursive"],_=["Courier New, monospace","serif","Andale Mono, Lucida Console, monospace","sans-serif","Comic Sans MS, Impact, fantasy","Monotype Corsiva, cursive"],C=["None","Drop shadow","Raised","Depressed","Outline"],O=["","rgb(34, 34, 34) 2px 2px 3px, rgb(34, 34, 34) 2px 2px 4px, rgb(34, 34, 34) 2px 2px 5px","rgb(34, 34, 34) 1px 1px, rgb(34, 34, 34) 2px 2px, rgb(34, 34, 34) 3px 3px","rgb(204, 204, 204) 1px 1px, rgb(204, 204, 204) 0px 1px, rgb(34, 34, 34) -1px -1px, rgb(34, 34, 34) 0px -1px","rgb(34, 34, 34) 0px 0px 1px, rgb(34, 34, 34) 0px 0px 1px, rgb(34, 34, 34) 0px 0px 1px, rgb(34, 34, 34) 0px 0px 1px, rgb(34, 34, 34) 0px 0px 1px"];class StyleOpt{constructor(e,t,s,i,n){this.player=e,this.labels=t,this.values=s,this.css_variable=i,this.default_value=n,this.selected=e._storage.getItem(i)||n}set selected(e){document.documentElement.style.setProperty(this.css_variable,e),this.player._storage.setItem(this.css_variable,e)}get selected(){return document.documentElement.style.getPropertyValue(this.css_variable)}}var S;!function(e){e[e.main=0]="main",e[e.tracks=1]="tracks",e[e.style=2]="style",e[e.styleOpt=3]="styleOpt"}(S||(S={}));class FlowplayerSubtitlesMenu extends FlowplayerMenu{constructor(e){if(super(e),this.state=S.main,this.selectedTrackIdx=-1,this.isTV=!1,this.styleOpts=function(e){return{[e.i18n("cc.properties.fontSize","Font size")]:new StyleOpt(e,A.map(e=>100*e+"%"),A.map(e=>100*e+"%"),"--fp-sub-font-size","100%"),[e.i18n("cc.properties.fontFamily","Font family")]:new StyleOpt(e,T.map(t=>e.i18n(`cc.fontFamily.${t}`,t)),_,"--fp-sub-font-family","sans-serif"),[e.i18n("cc.properties.fontColor","Font color")]:new StyleOpt(e,w.map(t=>e.i18n(`cc.colors.${t}`,t)),x,"--fp-sub-font-color",x[0]),[e.i18n("cc.properties.fontOpacity","Font opacity")]:new StyleOpt(e,A.flatMap(e=>e>1?[]:100*e+"%"),A.flatMap(e=>e>1?[]:e+""),"--fp-sub-font-opacity","1"),[e.i18n("cc.properties.backgroundColor","Background color")]:new StyleOpt(e,w.map(t=>e.i18n(`cc.colors.${t}`,t)),x,"--fp-sub-background-color",x[7]),[e.i18n("cc.properties.backgroundOpacity","Background opacity")]:new StyleOpt(e,A.flatMap(e=>e>1?[]:100*e+"%"),A.flatMap(e=>e>1?[]:e+""),"--fp-sub-background-opacity","0.5"),[e.i18n("cc.properties.characterEdgeStyle","Character edge style")]:new StyleOpt(e,C.map(t=>e.i18n(`cc.edgeStyle.${t}`,t)),O,"--fp-sub-edge-style","")}}(e),e.on(o,()=>{setTimeout(()=>this.isTV=e.hasState(i),0),this.classList.toggle("subs-native",!!e.opt("subtitles.native"))}),e.on(U.events.TRACK_UPDATED,e=>this.summaryEle.classList.toggle("fp-color-text",!!e.detail)),e.opt("subtitles.native"))return;const t=l(this.player,h);t.setAttribute("aria-label","Back to previous menu"),t.setAttribute("role","button"),this.menuHeader.prepend(t),t.addEventListener("click",()=>this.navigateBack());const s=l(this.player,m);s.setAttribute("role","button"),s.setAttribute("aria-label","Open style menu"),s.addEventListener("click",()=>this.createMenu(S.style)),this.menuHeader.insertBefore(s,this.menuTitle),this.summaryEle.addEventListener("click",()=>{this.menuContainer.open||this.createMenu(S.main)}),this.menu.addEventListener("click",e=>{(e.target===s||e.target===t||this.state!==S.main&&e.target!==this.closeEle)&&e.preventDefault()}),this.addEventListener(U.events.TRACKS,e=>{var t;this.tracks=e.detail,this.selectedTrackIdx=-1,this.toggle_visibility(!(null===(t=null==this?void 0:this.tracks)||void 0===t?void 0:t.length)),this.state===(this.isTV?S.tracks:S.main)&&this.createMenu(this.isTV?S.tracks:S.main)}),this.addEventListener(U.events.SWITCH,e=>{this.selectedTrackIdx=e.detail.selected_index,this.state===(this.isTV?S.tracks:S.main)&&this.select_item(this.selectedTrackIdx)}),this.player.addEventListener("tv-menu:will-open",()=>{var e;(null===(e=this.tracks)||void 0===e?void 0:e.length)&&this.createMenu(S.main)}),this.player.on(["tv-menu:will-close","keyboard:close:menus"],e=>{var t;this.state!==S.main&&(null===(t=document.activeElement)||void 0===t?void 0:t.closest(`.${f}`))===this.menu&&(this.navigateBack(),e.preventDefault())})}navigateBack(){switch(this.state){case S.style:case S.tracks:return this.createMenu(S.main);case S.styleOpt:return this.createMenu(S.style)}}getMenuTitle(){switch(this.state){case S.main:return this.player.i18n("cc.menu_title","Subtitles");case S.tracks:return this.player.i18n("cc.tracks","Tracks");case S.style:return this.player.i18n("cc.options","Options");default:return""}}createMenuOpts(e){switch(this.state){case S.main:return this.isTV?this.createTvMainMenuOpts():this.createTracksMenuOpts();case S.tracks:return this.createTracksMenuOpts();case S.style:return this.createStyleMenuOpts();case S.styleOpt:return e?this.createStylePropertyMenuOpts(this.styleOpts[e]):[]}}createMenu(e,t){var s;this.state=e,this.menu.classList.toggle("fp-submenu",e>0),this.menuTitle.textContent=t||this.getMenuTitle(),this.render(this.createMenuOpts(t)),null===(s=this.menu.querySelector("li"))||void 0===s||s.focus()}createTvMainMenuOpts(){return[{text:this.player.i18n("cc.tracks","Tracks"),onclick:this.createMenu.bind(this,S.tracks)},{text:this.player.i18n("cc.options","Options"),onclick:this.createMenu.bind(this,S.style)}]}createTracksMenuOpts(){return Array.isArray(null==this?void 0:this.tracks)?this.tracks.map((e,t)=>({text:e.text,onclick:()=>{e.onclick(),this.selectedTrackIdx=this.selectedTrackIdx===t?-1:t},selected:this.selectedTrackIdx===t})):[]}createStyleMenuOpts(){const e=Object.keys(this.styleOpts).map(e=>({text:e,onclick:this.createMenu.bind(this,S.styleOpt,e)}));return e.push({text:this.player.i18n("cc.reset","Reset"),onclick:()=>Object.values(this.styleOpts).forEach(e=>e.selected=e.default_value)}),e}createStylePropertyMenuOpts(e){return e.labels.map((t,s)=>({text:t,onclick:()=>{e.selected=e.values[s]},selected:s===e.values.indexOf(e.selected)}))}select_item(e){if(this.state!==S.style)return this.state===S.styleOpt?super.select_item(e):void this.options.forEach((t,s)=>{t.classList.toggle(v,s===e&&!t.classList.contains(v))})}}class FlowplayerIcon extends FlowplayerComponent{constructor(e,t){super(e),this.classList.add("fp-icon",t.name),t.title&&this.setAttribute("title",t.title),t.title&&this.setAttribute("aria-label",t.title),t.translation_key&&this.setAttribute("aria-label",e.i18n(t.translation_key)),this.setAttribute("tabindex","0"),this.setAttribute("focusable","true")}}function L(e){return!document.fullscreenEnabled&&"function"==typeof e.webkitEnterFullScreen&&"function"==typeof e.webkitExitFullScreen}const M="tracks:text:updated",I="subs:tracks",F="subs:change",P="cues:parsed",H="tracks:text:all";var B,j=Object.freeze({__proto__:null,TRACK_UPDATED:M,TRACKS:I,SWITCH:F,CUES_PARSED:P,TEXT_TRACKS:H});function R(e,t){if(function(e){return Object.values(B).includes(e)}(t=t||B.Anonymous))return e instanceof HTMLVideoElement&&(e.poster="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),"crossOrigin"in e?e.crossOrigin=t:e.setAttribute("crossorigin",t),e}function V(e){const t=document.createElement("a");return t.href=e,t.origin}function D(e,t){const i=document.createElement("track");i.className="fp-track renderable",i.kind=t.kind||"captions",i.label=t.label||t.lang||"",i.lang=t.lang||"",i.id=["fp",t.lang].join("-");const n=i.track;return n.removeCue=s,"string"!=typeof t.crossorigin&&function(e,t){try{return e.src.startsWith("blob:"),V(e.src)!==V(t)}catch(e){return console.error(e),!0}}(e,t.src)&&(R(e),t.crossorigin=e.getAttribute("crossorigin")),"crossorigin"in t&&R(e,t.crossorigin),Object.keys(t).forEach(e=>{"default"!==e&&(i[e]=t[e])}),n.mode=t.default?"hidden":"disabled",e.appendChild(i),i}!function(e){e.Anonymous="anonymous",e.UseCredentials="use-credentials",e.Empty=""}(B||(B={}));const q={translation_key:"cc.menu_title",name:"fp-subtitles-menu"},z={name:"fp-menu-back"};function K(e,t){var s;if(!e.dash)return;const i=e.dash.getTracksFor("text")[function(e,t){return Array.from(e.textTracks).filter(e=>!e.removed&&"boolean"==typeof e.isEmbedded).indexOf(t)}(e,t)];return i&&i.labels.length&&((null===(s=i.labels.find(e=>e.text))||void 0===s?void 0:s.text)||i.lang)||t.language}var N;const U=((N=class Subtitles{constructor(e){c(e,p,FlowplayerSubtitlesMenu),c(e,m,class extends FlowplayerIcon{constructor(e){super(e,q)}}),c(e,h,class extends FlowplayerIcon{constructor(e){super(e,z)}})}init(n,a,c){var m,h;const f=l(c,p);f instanceof FlowplayerSubtitlesMenu&&f.setMenuAttrs({class:"fp-cc",summaryTitle:c.i18n("cc.button","CC"),menuTitle:c.i18n("cc.menu_title","Subtitles"),options_event:(null===(m=n.subtitles)||void 0===m?void 0:m.native)?I:void 0,item_selected_event:(null===(h=n.subtitles)||void 0===h?void 0:h.native)?F:void 0});const y=function(e){const t=document.createElement("div");return t.classList.add("fp-captions"),t.ontouchend=t=>e.emit(t.type),t.onclick=t=>e.emit(t.type),t}(c);let v,b=[],g=[];function k(){return Array.from(c.textTracks).filter(e=>~["captions","subtitles","descriptions"].indexOf(e.kind)&&!e.removed&&e.label&&!e.isTTML)}function E(){return k().find(e=>e.is_active)}function x(e){Array.from(e.querySelectorAll("track")).forEach(t=>{["captions","subtitles","descriptions"].includes(t.kind)&&e.removeChild(t)})}function A(e,t,s){u(t,I,s.map(function(t){return{text:t.label,onclick:w.bind(0,e,t)}}));const i=E();return i?k().find(e=>e===i)?void u(t,F,{selected_index:s.indexOf(i)}):T():e.emit(M)}function w(e,t){var s,i;if(t==E())return T();T(),t.is_active=!0,e.emit(M,t),t.mode=(null===(s=n.subtitles)||void 0===s?void 0:s.native)?"showing":"hidden",(null===(i=e.opts.subtitles)||void 0===i?void 0:i.native)||e.emit("cuechange",{track:t})}function T(){const e=E();e&&(e.is_active=!1,c.emit(M),e.mode="disabled",t(y,[]))}!function(e){if(!L(e))return;e.on("webkitbeginfullscreen",()=>{const e=E();e&&(e.mode="showing")}),e.on("webkitendfullscreen",()=>{var t;const s=k().find(e=>"showing"===e.mode);s&&!(null===(t=e.opts.subtitles)||void 0===t?void 0:t.native)&&(s.mode="hidden"),s!==E()&&(s?w(e,s):T(),u(f,F,{selected_index:s?g.indexOf(s):-1}))})}(c),c.on(o,function(){var e,t;const s=d(c,"flowplayer-control");if(!s)return null===(e=d(c,"flowplayer-ui"))||void 0===e?void 0:e.appendChild(y);s.insertAdjacentElement("beforebegin",y),null===(t=c.hasState(i)?d(c,"flowplayer-tv-menu"):s)||void 0===t||t.append(f)}),c.on("config",function(e){var t,s;const i=null===(s=null===(t=e.data)||void 0===t?void 0:t.subtitles)||void 0===s?void 0:s.tracks;i&&b!==i&&(b=i,x(c),g=k(),A(c,f,g),b.forEach(e=>D(c,e)))}),c.on(H,e=>{const t=e.detail.tracks;t!==v&&(v=t,g=g.flatMap(e=>e.is_hls_embedded?(e.removed=!0,[]):e),A(c,f,g),t.filter(e=>{var t,s;return~["subtitles","captions"].indexOf((null==e?void 0:e.kind)||(null===(s=null===(t=null==e?void 0:e.subtitleTrack)||void 0===t?void 0:t.type)||void 0===s?void 0:s.toLocaleLowerCase())||"")}).forEach(e=>{var t,i,n,r,o,a,l;const u=c.addTextTrack("captions"===e.kind?"captions":"subtitles",(null===(t=e.subtitleTrack)||void 0===t?void 0:t.name)||e.label,null===(i=e.subtitleTrack)||void 0===i?void 0:i.lang);u.is_hls_embedded=!0,u.default=void 0!==(null===(n=e.subtitleTrack)||void 0===n?void 0:n.default)?null===(r=e.subtitleTrack)||void 0===r?void 0:r.default:e.default,u.track_id=null!==(a=null===(o=e.subtitleTrack)||void 0===o?void 0:o.id)&&void 0!==a?a:e._id,u.mode=u.default?"hidden":"disabled",u.removeCue=s,u.attr=null===(l=e.subtitleTrack)||void 0===l?void 0:l.attrs}))}),c.on(P,e=>{const t=e.detail,s=g.find(e=>e.is_hls_embedded&&!e.removed&&(e.default&&"default"===t.track||e.track_id===t.track||"subtitles"+e.track_id===t.track||"captions"+e.track_id===t.track));s&&t.cues.forEach(e=>s.addCue(e))}),c.textTracks.addEventListener("addtrack",()=>{const e=k();if(g.length===e.length&&g.every((t,s)=>t===e[s]))return;let t=E();if(e.map(e=>((e.default||!c.dash&&["showing","hidden"].includes(e.mode))&&(t=e,e.mode="disabled",e.is_active=!1),e.oncuechange=function(t){var s;if(!L(c)||!c.hasState("is-fullscreen"))return e!==E()?e.mode="disabled":void((null===(s=n.subtitles)||void 0===s?void 0:s.native)||("showing"===e.mode&&(e.mode="hidden"),c.emit(t.type,{track:t.target})))},e)),u(f,I,e.map(e=>({text:c.dash?K(c,e):e.label,onclick:w.bind(0,c,e)}))),g=e,!t)return T();w(c,t),u(f,F,{selected_index:g.indexOf(t)})}),c.on("cuechange",function(s){var i;const n=null===(i=s.data)||void 0===i?void 0:i.track;if(!n||!["captions","subtitles","descriptions"].includes(n.kind))return;const r=Array.from(e(n,"activeCues",[])).filter((e,t,s)=>t===s.findIndex(t=>e.id===t.id)).sort((e,t)=>"number"!=typeof e.line||"number"!=typeof t.line?0:e.line-t.line);t(y,r)}),c.on(["playlist/advance","src"],e=>{t(y,[]),c.currentSrc&&("src"===e.type&&["is-playlist",r].some(e=>c.root.classList.contains(e))||(delete c.opts.subtitles,x(c),b=[],T(),g=[],v=[],u(f,I,[]),function(e){Array.from(e.textTracks).filter(e=>~["captions","subtitles","descriptions"].indexOf(e.kind)).forEach(e=>{e.removed=!0,delete e.isEmbedded})}(c)))})}}).pluginName="subtitles",N.events=j,N);return function(e,t){if("object"==typeof exports&&"undefined"!=typeof module)return t;if(null===document.currentScript)return t;"flowplayer"in e||(e.flowplayer={extensions:[]});const s=e.flowplayer;return"function"==typeof s?(s(t),t):(Array.isArray(s.extensions)||(s.extensions=[]),~s.extensions.indexOf(t)||s.extensions.push(t),t)}(window,U)});
|