@videts/vide 0.7.4 → 0.8.0
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/README.md +1 -1
- package/dist/chunk-H3OXPFD3.mjs +1 -0
- package/dist/dash/index.d.ts +3 -1
- package/dist/dash/index.mjs +2 -2
- package/dist/drm/index.d.ts +2 -2
- package/dist/drm/index.mjs +1 -1
- package/dist/hls/index.d.ts +3 -1
- package/dist/hls/index.mjs +2 -2
- package/dist/index.d.ts +5 -5
- package/dist/index.mjs +1 -1
- package/dist/omid/index.d.ts +2 -2
- package/dist/omid/index.mjs +2 -2
- package/dist/simid/index.d.ts +2 -2
- package/dist/ssai/index.d.ts +1 -1
- package/dist/{types-8aPf_wxJ.d.ts → types-CAJmacV6.d.ts} +1 -1
- package/dist/{types-Cine0xi3.d.ts → types-vxIcXgJz.d.ts} +83 -14
- package/dist/ui/index.d.ts +3 -3
- package/dist/ui/index.mjs +2 -2
- package/dist/vast/index.d.ts +3 -3
- package/dist/vide.core.global.js +1 -0
- package/dist/vide.dash.global.js +2 -0
- package/dist/vide.drm.global.js +1 -0
- package/dist/vide.global.js +2 -0
- package/dist/vide.hls.global.js +2 -0
- package/dist/vide.omid.global.js +2 -0
- package/dist/vide.simid.global.js +1 -0
- package/dist/vide.ssai.global.js +1 -0
- package/dist/vide.ui.css +864 -0
- package/dist/vide.ui.global.js +2 -0
- package/dist/vide.vast.global.js +1 -0
- package/dist/vide.vmap.global.js +1 -0
- package/dist/vmap/index.d.ts +2 -2
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
[](https://www.npmjs.com/package/@videts/vide)
|
|
5
5
|
[](https://bundlephobia.com/package/@videts/vide)
|
|
6
6
|
|
|
7
|
-
Modular video player library. Use only what you need.
|
|
7
|
+
Modular video player library. Use only what you need. Also works with `<audio>`.
|
|
8
8
|
|
|
9
9
|
**[Documentation](https://hogekai.github.io/vide/)** · **[Getting Started](https://hogekai.github.io/vide/getting-started)** · **[Demo](https://hogekai.github.io/vide/demo)**
|
|
10
10
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function n(r){return r>=2160?"4K":r>=1440?"1440p":r>=1080?"1080p":r>=720?"720p":r>=480?"480p":r>=360?"360p":r>=240?"240p":`${r}p`}export{n as a};
|
package/dist/dash/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { e as Plugin } from '../types-
|
|
1
|
+
import { R as RecoveryConfig, e as Plugin } from '../types-vxIcXgJz.js';
|
|
2
2
|
|
|
3
3
|
interface DashPluginOptions {
|
|
4
4
|
/** dash.js MediaPlayerSettingClass — passed to updateSettings(). */
|
|
5
5
|
dashConfig?: Record<string, unknown> | undefined;
|
|
6
|
+
/** Error recovery settings. `false` to disable. Defaults to enabled (3 retries, 3s delay, 2x backoff). */
|
|
7
|
+
recovery?: Partial<RecoveryConfig> | false | undefined;
|
|
6
8
|
}
|
|
7
9
|
|
|
8
10
|
/** Create a DASH streaming plugin for vide. */
|
package/dist/dash/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import'../chunk-DWXOYV4E.mjs';var
|
|
2
|
-
export{
|
|
1
|
+
import {a}from'../chunk-H3OXPFD3.mjs';import'../chunk-DWXOYV4E.mjs';var w="application/dash+xml",L={maxRetries:3,retryDelay:3e3,backoffMultiplier:2};function T(n){try{return new URL(n,"https://placeholder.invalid").pathname.endsWith(".mpd")}catch{return n.includes(".mpd")}}function C(n){return n.toLowerCase()===w}function k(n={}){return {name:"dash",setup(e){let c=null,u=false,g=n.recovery===false?false:{...L,...n.recovery??{}},s=0,f=null,v="",l=null;function m(){f!==null&&(clearTimeout(f),f=null);}function R(a){if(g===false||u||s>=g.maxRetries||!l)return false;s++;let r=g.retryDelay*g.backoffMultiplier**(s-1);return m(),f=setTimeout(()=>{u||!l||(a.reset(),a.initialize(l,v,l.autoplay));},r),true}let p={canHandle(a,r){return r&&C(r)?true:T(a)},load(a,r){this.unload(r),E(a,r);},unload(a){m(),s=0,v="",l=null,c&&(c.destroy(),c=null);}};function E(a$1,r){v=a$1,l=r,import('dashjs').then(h=>{if(u)return;let y=h.default,t=y.MediaPlayer().create();c=t,e.setPluginData("dash",t);let b=e.getPluginData("drm");b?.dashConfig&&t.updateSettings(b.dashConfig),n.dashConfig&&t.updateSettings(n.dashConfig),t.on(y.MediaPlayer.events.ERROR,o=>{if(typeof o.error=="object"&&o.error!==null){let d=R(t);e.emit("error",{code:o.error.code,message:o.error.message,source:"dash",recoverable:d,retryCount:d?s:void 0});}else e.emit("error",{code:3001,message:`DASH error: ${String(o.error)}`,source:"dash"});}),t.on(y.MediaPlayer.events.STREAM_INITIALIZED,()=>{s>0&&(s=0,m());let d=t.getBitrateInfoListFor("video").map(i=>({id:i.qualityIndex,width:i.width,height:i.height,bitrate:i.bitrate,label:a(i.height)}));e.setPluginData("qualities",d),e.setPluginData("qualitySetter",i=>{i===-1?t.updateSettings({streaming:{abr:{autoSwitchBitrate:{video:true}}}}):(t.updateSettings({streaming:{abr:{autoSwitchBitrate:{video:false}}}}),t.setQualityFor("video",i,true)),e.setPluginData("autoQuality",i===-1);});}),t.on(y.MediaPlayer.events.QUALITY_CHANGE_RENDERED,o=>{if(o.mediaType!=="video")return;let i=e.qualities.find(D=>D.id===o.newQuality);if(i){e.setPluginData("currentQuality",i);let D=t.getSettings();e.setPluginData("autoQuality",D?.streaming?.abr?.autoSwitchBitrate?.video??true);}}),t.initialize(r,a$1,r.autoplay);}).catch(h=>{u||e.emit("error",{code:3e3,message:h instanceof Error?`Failed to load dashjs: ${h.message}`:"Failed to load dashjs",source:"dash"});});}return e.registerSourceHandler(p),()=>{u=true,m(),p.unload(e.el);}}}}
|
|
2
|
+
export{k as dash};
|
package/dist/drm/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { e as Plugin } from '../types-
|
|
1
|
+
import { M as MediaElement, e as Plugin } from '../types-vxIcXgJz.js';
|
|
2
2
|
|
|
3
3
|
/** Widevine DRM configuration. */
|
|
4
4
|
interface WidevineConfig {
|
|
@@ -59,7 +59,7 @@ interface EmeOptions {
|
|
|
59
59
|
*
|
|
60
60
|
* Returns a cleanup function that removes listeners and closes sessions.
|
|
61
61
|
*/
|
|
62
|
-
declare function setupEme(videoElement:
|
|
62
|
+
declare function setupEme(videoElement: MediaElement, options: EmeOptions, onError: (err: Error) => void): () => void;
|
|
63
63
|
|
|
64
64
|
/** Create a DRM plugin for vide. */
|
|
65
65
|
declare function drm(options: DrmPluginOptions): Plugin;
|
package/dist/drm/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import'../chunk-DWXOYV4E.mjs';function l(e){let r={licenseUrl:e.licenseUrl,serverCertificateUrl:e.certificateUrl};if(e.headers){let t=e.headers;r.licenseXhrSetup=n=>{for(let[i,s]of Object.entries(t))n.setRequestHeader(i,s);};}return {emeEnabled:true,drmSystems:{"com.apple.fps.1_0":r}}}function g(e){let r={serverURL:e.licenseUrl,serverCertificateURL:e.certificateUrl};return e.headers&&(r.httpRequestHeaders=e.headers),{streaming:{protection:{data:{"com.apple.fps.1_0":r}}}}}function h(e){let r={licenseUrl:e.licenseUrl};if(e.headers){let t=e.headers;r.licenseXhrSetup=n=>{for(let[i,s]of Object.entries(t))n.setRequestHeader(i,s);};}return {emeEnabled:true,drmSystems:{"com.widevine.alpha":r}}}function v(e){let r={serverURL:e.licenseUrl};return e.headers&&(r.httpRequestHeaders=e.headers),{streaming:{protection:{data:{"com.widevine.alpha":r}}}}}function u(e){return e.keySystem==="com.widevine.alpha"&&e.widevine?h(e.widevine):e.keySystem==="com.apple.fps.1_0"&&e.fairplay?l(e.fairplay):{}}function y(e){return e.keySystem==="com.widevine.alpha"&&e.widevine?v(e.widevine):e.keySystem==="com.apple.fps.1_0"&&e.fairplay?g(e.fairplay):{}}var K="com.apple.fps.1_0",
|
|
1
|
+
import'../chunk-DWXOYV4E.mjs';function l(e){let r={licenseUrl:e.licenseUrl,serverCertificateUrl:e.certificateUrl};if(e.headers){let t=e.headers;r.licenseXhrSetup=n=>{for(let[i,s]of Object.entries(t))n.setRequestHeader(i,s);};}return {emeEnabled:true,drmSystems:{"com.apple.fps.1_0":r}}}function g(e){let r={serverURL:e.licenseUrl,serverCertificateURL:e.certificateUrl};return e.headers&&(r.httpRequestHeaders=e.headers),{streaming:{protection:{data:{"com.apple.fps.1_0":r}}}}}function h(e){let r={licenseUrl:e.licenseUrl};if(e.headers){let t=e.headers;r.licenseXhrSetup=n=>{for(let[i,s]of Object.entries(t))n.setRequestHeader(i,s);};}return {emeEnabled:true,drmSystems:{"com.widevine.alpha":r}}}function v(e){let r={serverURL:e.licenseUrl};return e.headers&&(r.httpRequestHeaders=e.headers),{streaming:{protection:{data:{"com.widevine.alpha":r}}}}}function u(e){return e.keySystem==="com.widevine.alpha"&&e.widevine?h(e.widevine):e.keySystem==="com.apple.fps.1_0"&&e.fairplay?l(e.fairplay):{}}function y(e){return e.keySystem==="com.widevine.alpha"&&e.widevine?v(e.widevine):e.keySystem==="com.apple.fps.1_0"&&e.fairplay?g(e.fairplay):{}}var K="com.apple.fps.1_0",M=[{initDataTypes:["cenc"],videoCapabilities:[{contentType:'video/mp4;codecs="avc1.42E01E"'}]}],P=[{initDataTypes:["sinf"],videoCapabilities:[{contentType:'video/mp4;codecs="avc1.42E01E"'}]}];async function m(e){for(let r of e)try{let t=r===K?P:M;return await navigator.requestMediaKeySystemAccess(r,t),r}catch{}return null}var R="com.apple.fps.1_0",U=[{initDataTypes:["cenc"],videoCapabilities:[{contentType:'video/mp4;codecs="avc1.42E01E"'}]}],D=[{initDataTypes:["sinf"],videoCapabilities:[{contentType:'video/mp4;codecs="avc1.42E01E"'}]}];function p(e,r,t){let n=false,i=[],s=null,a=o=>{if(n||e.mediaKeys&&e.mediaKeys!==s||!s||!o.initData)return;let f=s.createSession("temporary");i.push(f),f.generateRequest(o.initDataType,o.initData).then(()=>{},c=>{n||t(c instanceof Error?c:new Error("generateRequest failed"));}),f.addEventListener("message",c=>{n||k(c,f,r,t,()=>n);}),f.addEventListener("keystatuseschange",()=>{if(!n)for(let[,c]of f.keyStatuses)(c==="expired"||c==="internal-error")&&t(new Error(`Key status: ${c}`));});},d=r.keySystem===R?D:U;return navigator.requestMediaKeySystemAccess(r.keySystem,d).then(o=>{if(!n)return o.createMediaKeys()}).then(o=>{if(!(n||!o)&&(s=o,r.keySystem===R&&r.certificateUrl))return L(r.certificateUrl,r.headers,t,()=>n).then(f=>{if(!(n||!f))return s?.setServerCertificate(f.buffer)})}).then(()=>{n||!s||(e.mediaKeys||e.setMediaKeys(s),e.addEventListener("encrypted",a));}).catch(o=>{n||t(o instanceof Error?o:new Error("EME setup failed"));}),()=>{n=true,e.removeEventListener("encrypted",a);for(let o of i)o.close().catch(()=>{});}}async function L(e,r,t,n){try{let i=await fetch(e,r?{headers:r}:{});if(!i.ok)throw new Error(`Certificate fetch failed: ${i.status} ${i.statusText}`);let s=await i.arrayBuffer();return n()?null:new Uint8Array(s)}catch(i){return n()||t(i instanceof Error?i:new Error("Certificate fetch failed")),null}}function k(e,r,t,n,i){let s=new Uint8Array(e.message);Promise.resolve(t.prepareLicenseRequest?t.prepareLicenseRequest(s):s).then(a=>{if(!i())return fetch(t.licenseUrl,{method:"POST",body:a.buffer,...t.headers?{headers:t.headers}:{}})}).then(a=>{if(!(i()||!a)){if(!a.ok)throw new Error(`License request failed: ${a.status} ${a.statusText}`);return a.arrayBuffer()}}).then(a=>{if(i()||!a)return;let d=new Uint8Array(a);return Promise.resolve(t.processLicenseResponse?t.processLicenseResponse(d):d)}).then(a=>{if(!(i()||!a))return r.update(a.buffer)}).catch(a=>{i()||n(a instanceof Error?a:new Error("License exchange failed"));});}function B(e){return {name:"drm",setup(r){let t=false,n,i=[];return e.widevine&&i.push("com.widevine.alpha"),e.fairplay&&i.push("com.apple.fps.1_0"),i.length===0?(console.warn("[vide/drm] No DRM configuration provided"),()=>{}):(m(i).then(s=>{if(t)return;if(!s){r.emit("error",{code:4e3,message:"No supported DRM key system found",source:"drm"});return}let a={keySystem:s,widevine:e.widevine,fairplay:e.fairplay},d={keySystem:s,hlsConfig:u(a),dashConfig:y(a)};r.setPluginData("drm",d);let o=s!=="com.widevine.alpha",f=o?e.fairplay:e.widevine;if(!f)return;let c={keySystem:s,licenseUrl:f.licenseUrl,headers:f.headers,prepareLicenseRequest:f.prepareLicenseRequest,processLicenseResponse:f.processLicenseResponse};o&&(c.certificateUrl=f.certificateUrl),n=p(r.el,c,C=>{t||r.emit("error",{code:4002,message:C.message,source:"drm"});});}).catch(s=>{t||r.emit("error",{code:4001,message:s instanceof Error?`DRM detection failed: ${s.message}`:"DRM detection failed",source:"drm"});}),()=>{t=true,n?.();})}}}export{y as dashDrmConfig,m as detectKeySystem,B as drm,u as hlsDrmConfig,p as setupEme};
|
package/dist/hls/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { e as Plugin } from '../types-
|
|
1
|
+
import { R as RecoveryConfig, e as Plugin } from '../types-vxIcXgJz.js';
|
|
2
2
|
|
|
3
3
|
interface HlsPluginOptions {
|
|
4
4
|
/** Configuration passed directly to the hls.js constructor. */
|
|
5
5
|
hlsConfig?: Record<string, unknown> | undefined;
|
|
6
|
+
/** Error recovery settings. `false` to disable. Defaults to enabled (3 retries, 3s delay, 2x backoff). */
|
|
7
|
+
recovery?: Partial<RecoveryConfig> | false | undefined;
|
|
6
8
|
}
|
|
7
9
|
|
|
8
10
|
/** Create an HLS streaming plugin for vide. */
|
package/dist/hls/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import'../chunk-DWXOYV4E.mjs';var
|
|
2
|
-
export{
|
|
1
|
+
import {a}from'../chunk-H3OXPFD3.mjs';import'../chunk-DWXOYV4E.mjs';var E=["application/vnd.apple.mpegurl","application/x-mpegurl"],T={maxRetries:3,retryDelay:3e3,backoffMultiplier:2};function _(r){if(r.startsWith("data:")){let e=r.indexOf(";");return e===-1?false:E.includes(r.slice(5,e).toLowerCase())}if(r.startsWith("blob:"))return r.includes(".m3u8");try{return new URL(r,"https://placeholder.invalid").pathname.endsWith(".m3u8")}catch{return r.includes(".m3u8")}}function C(r){return E.includes(r.toLowerCase())}function w(r={}){return {name:"hls",setup(e){let d=null,u=false,f=r.recovery===false?false:{...T,...r.recovery??{}},o=0,m=null;function g(){m!==null&&(clearTimeout(m),m=null);}function L(s,i){if(f===false||u||o>=f.maxRetries)return false;o++;let l=f.retryDelay*f.backoffMultiplier**(o-1);return g(),m=setTimeout(()=>{u||(i==="networkError"?s.startLoad(-1):s.recoverMediaError());},l),true}let v={canHandle(s,i){return i&&C(i)?true:_(s)},load(s,i){this.unload(i),b(s,i);},unload(s){g(),o=0,d&&(d.destroy(),d=null);}};function b(s,i){import('hls.js').then(l=>{if(u)return;let a$1=l.default;if(!a$1.isSupported()){if(i.canPlayType("application/vnd.apple.mpegurl")){i.src=s;return}e.emit("error",{code:2e3,message:"HLS is not supported in this browser",source:"hls"});return}let H=e.getPluginData("drm"),R={...r.hlsConfig??{},...H?.hlsConfig??{}},n=new a$1(R);d=n,e.setPluginData("hls",n),n.on(a$1.Events.ERROR,(h,t)=>{if(!t.fatal)return;let c=L(n,t.type);e.emit("error",{code:2002,message:`HLS fatal error: ${t.type} - ${t.details}`,source:"hls",recoverable:c,retryCount:c?o:void 0});}),n.on(a$1.Events.FRAG_LOADED,()=>{o>0&&(o=0,g());}),n.on(a$1.Events.MANIFEST_PARSED,()=>{let h=n.levels.map((t,c)=>({id:c,width:t.width,height:t.height,bitrate:t.bitrate,label:a(t.height)}));e.setPluginData("qualities",h),e.setPluginData("qualitySetter",t=>{n.currentLevel=t,e.setPluginData("autoQuality",t===-1);});}),n.on(a$1.Events.LEVEL_SWITCHED,(h,t)=>{let p=e.qualities[t.level];p&&(e.setPluginData("currentQuality",p),e.setPluginData("autoQuality",n.autoLevelEnabled));}),n.attachMedia(i),n.loadSource(s);}).catch(l=>{u||e.emit("error",{code:2001,message:l instanceof Error?`Failed to load hls.js: ${l.message}`:"Failed to load hls.js",source:"hls"});});}return e.registerSourceHandler(v),()=>{u=true,g(),v.unload(e.el);}}}}
|
|
2
|
+
export{w as hls};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { P as Player } from './types-
|
|
2
|
-
export { A as AdQuartile, E as EventBus, a as EventHandler, b as PlayerEvent, c as PlayerEventMap, d as PlayerState, e as Plugin, S as SourceHandler } from './types-
|
|
1
|
+
import { M as MediaElement, P as Player } from './types-vxIcXgJz.js';
|
|
2
|
+
export { A as AdQuartile, E as EventBus, a as EventHandler, b as PlayerEvent, c as PlayerEventMap, d as PlayerState, e as Plugin, Q as QualityLevel, R as RecoveryConfig, S as SeekableRange, f as SourceHandler, V as VideCue, g as VideTextTrack } from './types-vxIcXgJz.js';
|
|
3
3
|
|
|
4
|
-
/** Create a vide player instance wrapping the given
|
|
5
|
-
declare function createPlayer(el:
|
|
4
|
+
/** Create a vide player instance wrapping the given media element. */
|
|
5
|
+
declare function createPlayer(el: MediaElement): Player;
|
|
6
6
|
|
|
7
7
|
/** Core: HTMLMediaElement error. */
|
|
8
8
|
declare const ERR_MEDIA = 1000;
|
|
@@ -25,4 +25,4 @@ declare const ERR_DRM_LICENSE = 4002;
|
|
|
25
25
|
/** DRM: certificate request failed. */
|
|
26
26
|
declare const ERR_DRM_CERTIFICATE = 4003;
|
|
27
27
|
|
|
28
|
-
export { ERR_DASH_IMPORT, ERR_DASH_PLAYBACK, ERR_DRM_CERTIFICATE, ERR_DRM_DETECTION, ERR_DRM_LICENSE, ERR_DRM_UNSUPPORTED, ERR_HLS_FATAL, ERR_HLS_IMPORT, ERR_HLS_UNSUPPORTED, ERR_MEDIA, Player, createPlayer };
|
|
28
|
+
export { ERR_DASH_IMPORT, ERR_DASH_PLAYBACK, ERR_DRM_CERTIFICATE, ERR_DRM_DETECTION, ERR_DRM_LICENSE, ERR_DRM_UNSUPPORTED, ERR_HLS_FATAL, ERR_HLS_IMPORT, ERR_HLS_UNSUPPORTED, ERR_MEDIA, MediaElement, Player, createPlayer };
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{e as ERR_DASH_IMPORT,f as ERR_DASH_PLAYBACK,j as ERR_DRM_CERTIFICATE,h as ERR_DRM_DETECTION,i as ERR_DRM_LICENSE,g as ERR_DRM_UNSUPPORTED,d as ERR_HLS_FATAL,c as ERR_HLS_IMPORT,b as ERR_HLS_UNSUPPORTED,a as ERR_MEDIA}from'./chunk-DWXOYV4E.mjs';var
|
|
1
|
+
export{e as ERR_DASH_IMPORT,f as ERR_DASH_PLAYBACK,j as ERR_DRM_CERTIFICATE,h as ERR_DRM_DETECTION,i as ERR_DRM_LICENSE,g as ERR_DRM_UNSUPPORTED,d as ERR_HLS_FATAL,c as ERR_HLS_IMPORT,b as ERR_HLS_UNSUPPORTED,a as ERR_MEDIA}from'./chunk-DWXOYV4E.mjs';var ne={idle:["loading","playing","error"],loading:["ready","playing","error"],ready:["playing","loading","ad:loading","error"],playing:["paused","buffering","loading","ad:loading","ended","error"],paused:["playing","loading","ad:loading","ended","error"],buffering:["playing","loading","error"],"ad:loading":["ad:playing","playing","error"],"ad:playing":["ad:paused","playing","error"],"ad:paused":["ad:playing","playing","error"],ended:["idle","loading","error"],error:["idle","loading"]};function re(t,a){return ne[t].includes(a)}function ae(t){return t.readyState>=3?t.paused?"ready":"playing":t.readyState>=1?"loading":"idle"}function ie(t){let a=ae(t),g=t instanceof HTMLAudioElement,p=new Map,E=[],l=false,k=[],d=null,m=t.getAttribute("src")??"",L=false,o=new Map,h=t.duration===Number.POSITIVE_INFINITY,b=null;function x(e){let n=p.get(e);return n||(n=new Set,p.set(e,n)),n}function i(e,n){let r=p.get(e);if(r)for(let u of r)try{u(n);}catch(y){console.error("[vide] Event handler error:",y);}}function s(e){if(e===a)return;if(!re(a,e)){console.warn(`[vide] Invalid transition: ${a} \u2192 ${e}`);return}let n=a;a=e,i("statechange",{from:n,to:e});}function v(){return a==="ad:loading"||a==="ad:playing"||a==="ad:paused"}function S(){!v()&&t.paused&&s("loading");}function R(){a==="loading"&&s("ready");}function P(){v()||s("playing"),i("play",void 0);}function H(){v()||s("paused"),i("pause",void 0);}function w(){a==="playing"&&s("buffering");}function C(){(a==="buffering"||a==="ready")&&s("playing");}function I(){v()||s("ended"),i("ended",void 0);}function M(){i("timeupdate",{currentTime:t.currentTime,duration:t.duration});}function _(){let e=t.error;v()||s("error"),i("error",{code:e?.code??1e3,message:e?.message??"Unknown error",source:"core"});}function A(){let e=t.duration===Number.POSITIVE_INFINITY;e!==h&&(h=e,i("livestatechange",{isLive:e}));}t.addEventListener("durationchange",A),t.addEventListener("loadstart",S),t.addEventListener("canplay",R),t.addEventListener("play",P),t.addEventListener("pause",H),t.addEventListener("waiting",w),t.addEventListener("playing",C),t.addEventListener("ended",I),t.addEventListener("timeupdate",M),t.addEventListener("error",_);function T(e,n){return {id:n,label:e.label,language:e.language,kind:e.kind,active:e.mode==="showing"}}function V(e){if(!e)return [];let n=[];for(let r=0;r<e.length;r++){let u=e[r];n.push({startTime:u.startTime,endTime:u.endTime,text:u.text??""});}return n}let c=new Map;function Q(e){if(c.has(e))return;let n=()=>{e.mode==="showing"&&i("cuechange",{cues:V(e.activeCues)});};c.set(e,n),e.addEventListener("cuechange",n);}function j(e){let n=c.get(e);n&&(e.removeEventListener("cuechange",n),c.delete(e));}function O(){let e=[];for(let n=0;n<t.textTracks.length;n++)e.push(T(t.textTracks[n],n));i("texttracksavailable",{tracks:e});}function D(){for(let e=0;e<t.textTracks.length;e++)Q(t.textTracks[e]);O();}function q(e){e.track&&j(e.track),O();}let N=typeof t.textTracks.addEventListener=="function";if(N){t.textTracks.addEventListener("addtrack",D),t.textTracks.addEventListener("removetrack",q);for(let e=0;e<t.textTracks.length;e++)Q(t.textTracks[e]);}let U=new Set(["statechange","play","pause","ended","timeupdate","livestatechange","error","ad:start","ad:end","ad:skip","ad:click","ad:error","ad:impression","ad:loaded","ad:quartile","ad:mute","ad:unmute","ad:volumeChange","ad:fullscreen","ad:breakStart","ad:breakEnd","qualitiesavailable","qualitychange","texttrackchange","texttracksavailable","cuechange","destroy"]);function K(){if(t.removeEventListener("durationchange",A),t.removeEventListener("loadstart",S),t.removeEventListener("canplay",R),t.removeEventListener("play",P),t.removeEventListener("pause",H),t.removeEventListener("waiting",w),t.removeEventListener("playing",C),t.removeEventListener("ended",I),t.removeEventListener("timeupdate",M),t.removeEventListener("error",_),N){t.textTracks.removeEventListener("addtrack",D),t.textTracks.removeEventListener("removetrack",q);for(let[e,n]of c)e.removeEventListener("cuechange",n);c.clear();}}function Y(){if(d||L)return;let e=t.querySelectorAll("source");for(let n of e){let r=n.getAttribute("src"),u=n.getAttribute("type")??void 0;if(r){for(let y of k)if(y.canHandle(r,u)){d=y,m=r,s("loading"),y.load(r,t);for(let W of e)W.remove();return}}}}let f={get el(){return t},get state(){return a},on(e,n){U.has(e)?x(e).add(n):t.addEventListener(e,n);},off(e,n){U.has(e)?x(e).delete(n):t.removeEventListener(e,n);},emit:i,once(e,n){let r=u=>{f.off(e,r),n(u);};f.on(e,r);},play(){return t.play()},pause(){t.pause();},get currentTime(){return t.currentTime},set currentTime(e){t.currentTime=e;},get duration(){return t.duration},set duration(e){},get volume(){return t.volume},set volume(e){t.volume=e;},get muted(){return t.muted},set muted(e){t.muted=e;},get playbackRate(){return t.playbackRate},set playbackRate(e){t.playbackRate=e;},get paused(){return t.paused},get ended(){return t.ended},get readyState(){return t.readyState},get buffered(){return t.buffered},get seekable(){return t.seekable},get seeking(){return t.seeking},get isLive(){return l?false:t.duration===Number.POSITIVE_INFINITY},get seekableRange(){return l||t.seekable.length===0?null:{start:t.seekable.start(0),end:t.seekable.end(0)}},get qualities(){return o.get("qualities")??[]},get currentQuality(){return o.get("currentQuality")??null},get isAutoQuality(){return o.get("autoQuality")??true},get isAudio(){return g},setQuality(e){let n=o.get("qualitySetter");n&&n(e);},get textTracks(){return t.textTracks},getTextTracks(){let e=[];for(let n=0;n<t.textTracks.length;n++)e.push(T(t.textTracks[n],n));return e},getActiveTextTrack(){for(let e=0;e<t.textTracks.length;e++)if(t.textTracks[e].mode==="showing")return T(t.textTracks[e],e);return null},get activeCues(){for(let e=0;e<t.textTracks.length;e++)if(t.textTracks[e].mode==="showing")return V(t.textTracks[e].activeCues);return []},setTextTrack(e){for(let r=0;r<t.textTracks.length;r++)t.textTracks[r].mode=r===e?"showing":"disabled";let n=e>=0&&e<t.textTracks.length?T(t.textTracks[e],e):null;i("texttrackchange",{track:n});},addTextTrack(e){let n=document.createElement("track");n.src=e.src,n.label=e.label,n.srclang=e.language,n.kind=e.kind??"subtitles",e.default&&(n.default=true),t.appendChild(n);},get videoWidth(){return g?0:t.videoWidth},get videoHeight(){return g?0:t.videoHeight},get networkState(){return t.networkState},get loop(){return t.loop},set loop(e){t.loop=e;},get autoplay(){return t.autoplay},set autoplay(e){t.autoplay=e;},get poster(){return g?"":t.poster},set poster(e){g||(t.poster=e);},get preload(){return t.preload},set preload(e){t.preload=e;},get defaultPlaybackRate(){return t.defaultPlaybackRate},set defaultPlaybackRate(e){t.defaultPlaybackRate=e;},get defaultMuted(){return t.defaultMuted},set defaultMuted(e){t.defaultMuted=e;},get crossOrigin(){return t.crossOrigin},set crossOrigin(e){t.crossOrigin=e;},get controls(){return t.controls},set controls(e){t.controls=e;},get src(){return m},set src(e){if(d&&(d.unload(t),d=null),o.delete("qualities"),o.delete("currentQuality"),o.delete("autoQuality"),o.delete("qualitySetter"),b=null,L=true,m=e,!e){t.removeAttribute("src");return}for(let n of k)if(n.canHandle(e)){d=n,s("loading"),n.load(e,t);return}t.src=e;},registerSourceHandler(e){if(l){console.warn("[vide] Cannot register source handler after destroy");return}k.push(e),!L&&!d&&Y();},addEventListener(e,n,r){t.addEventListener(e,n,r);},removeEventListener(e,n,r){t.removeEventListener(e,n,r);},use(e){if(l){console.warn("[vide] Cannot use plugin after destroy");return}let n=e.setup(f);n&&E.push(n);},setPluginData(e,n){if(o.set(e,n),e==="qualities")i("qualitiesavailable",{qualities:n});else if(e==="currentQuality"){let r=n;i("qualitychange",{from:b,to:r}),b=r;}},getPluginData(e){return o.get(e)},destroy(){if(!l){l=true,d&&(d.unload(t),d=null);for(let e of E)try{e();}catch(n){console.error("[vide] Plugin cleanup error:",n);}E.length=0,i("destroy",void 0),K(),p.clear(),o.clear();}}};return f._setState=s,f}export{ie as createPlayer};
|
package/dist/omid/index.d.ts
CHANGED
package/dist/omid/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function E(e,t,r){let n=true;t.adEvents.loaded(t.vastProperties),t.adEvents.impressionOccurred(),t.mediaEvents.start(r,e.el.muted?0:e.el.volume);function o(i){n&&(i.quartile==="firstQuartile"?t.mediaEvents.firstQuartile():i.quartile==="midpoint"?t.mediaEvents.midpoint():i.quartile==="thirdQuartile"&&t.mediaEvents.thirdQuartile());}function s(i){n&&(i.to==="ad:paused"?t.mediaEvents.pause():i.to==="ad:playing"&&i.from==="ad:paused"&&t.mediaEvents.resume());}function d(){n&&(n=false,t.mediaEvents.complete(),t.finish());}function a(){n&&(n=false,t.mediaEvents.skipped(),t.finish());}function u(){n&&(n=false,t.error("Ad playback error"),t.finish());}function c(){n&&(n=false,t.finish());}function l(i){n&&t.mediaEvents.volumeChange(i.volume);}function p(i){if(!n)return;let v=i.fullscreen?"fullscreen":"normal";t.mediaEvents.playerStateChange(v);}return e.on("ad:quartile",o),e.on("statechange",s),e.on("ad:end",d),e.on("ad:skip",a),e.on("ad:error",u),e.on("destroy",c),e.on("ad:volumeChange",l),e.on("ad:fullscreen",p),()=>{n=false,e.off("ad:quartile",o),e.off("statechange",s),e.off("ad:end",d),e.off("ad:skip",a),e.off("ad:error",u),e.off("destroy",c),e.off("ad:volumeChange",l),e.off("ad:fullscreen",p);}}function w(e,t){return new Promise((r,n)=>{let o=document.createElement("script");o.src=e,o.async=true;let s=setTimeout(()=>{o.remove(),n(new Error(`OM SDK script load timeout: ${e}`));},t);o.onload=()=>{clearTimeout(s),r();},o.onerror=()=>{clearTimeout(s),o.remove(),n(new Error(`OM SDK script load failed: ${e}`));},document.head.appendChild(o);})}function b(){let t=globalThis.OmidSessionClient;if(!t)return null;let r=t.default??t;return typeof r.AdSession!="function"?null:r}async function h(e,t,r){let n=Date.now();if(await w(e,r),t){let s=Date.now()-n,d=Math.max(r-s,1e3);await w(t,d);}let o=b();if(!o)throw new Error("OM SDK namespace not found after script load");return o}function P(e,t,r){let n=new e.Partner(r.partner.name,r.partner.version),o=r.verifications.filter(m=>m.resourceUrl).map(m=>new e.VerificationScriptResource(m.resourceUrl,m.vendor,m.parameters,"full")),s=new e.Context(n,o,r.contentUrl,r.customReferenceData);s.setVideoElement(t);let d=t.parentElement;d&&s.setSlotElement(d),s.setServiceWindow(window);let a=new e.AdSession(s);if(a.setCreativeType("video"),a.setImpressionType("beginToRender"),!a.isSupported())throw new Error("OM SDK session not supported in this environment");let u=false,c=false,l=null;a.registerSessionObserver(m=>{m.type==="sessionStart"&&(u=true,l&&(l(true),l=null));}),a.start();let p=new e.AdEvents(a),i=new e.MediaEvents(a),v=r.position??"standalone",f=r.skipOffset!==void 0,O=r.skipOffset??-1,S=r.isAutoPlay??true,y=new e.VastProperties(f,O,S,v);return {get adEvents(){return p},get mediaEvents(){return i},get vastProperties(){return y},get started(){return u},waitForStart(m){return u?Promise.resolve(true):new Promise(g=>{l=g,setTimeout(()=>{u||(l=null,g(false));},m);})},finish(){c||(c=true,a.finish());},error(m){a.error("video",m);}}}var A="https://pagead2.googlesyndication.com/omsdk/releases/live/omweb-v1.js";function
|
|
2
|
-
export{
|
|
1
|
+
function E(e,t,r){let n=true;t.adEvents.loaded(t.vastProperties),t.adEvents.impressionOccurred(),t.mediaEvents.start(r,e.el.muted?0:e.el.volume);function o(i){n&&(i.quartile==="firstQuartile"?t.mediaEvents.firstQuartile():i.quartile==="midpoint"?t.mediaEvents.midpoint():i.quartile==="thirdQuartile"&&t.mediaEvents.thirdQuartile());}function s(i){n&&(i.to==="ad:paused"?t.mediaEvents.pause():i.to==="ad:playing"&&i.from==="ad:paused"&&t.mediaEvents.resume());}function d(){n&&(n=false,t.mediaEvents.complete(),t.finish());}function a(){n&&(n=false,t.mediaEvents.skipped(),t.finish());}function u(){n&&(n=false,t.error("Ad playback error"),t.finish());}function c(){n&&(n=false,t.finish());}function l(i){n&&t.mediaEvents.volumeChange(i.volume);}function p(i){if(!n)return;let v=i.fullscreen?"fullscreen":"normal";t.mediaEvents.playerStateChange(v);}return e.on("ad:quartile",o),e.on("statechange",s),e.on("ad:end",d),e.on("ad:skip",a),e.on("ad:error",u),e.on("destroy",c),e.on("ad:volumeChange",l),e.on("ad:fullscreen",p),()=>{n=false,e.off("ad:quartile",o),e.off("statechange",s),e.off("ad:end",d),e.off("ad:skip",a),e.off("ad:error",u),e.off("destroy",c),e.off("ad:volumeChange",l),e.off("ad:fullscreen",p);}}function w(e,t){return new Promise((r,n)=>{let o=document.createElement("script");o.src=e,o.async=true;let s=setTimeout(()=>{o.remove(),n(new Error(`OM SDK script load timeout: ${e}`));},t);o.onload=()=>{clearTimeout(s),r();},o.onerror=()=>{clearTimeout(s),o.remove(),n(new Error(`OM SDK script load failed: ${e}`));},document.head.appendChild(o);})}function b(){let t=globalThis.OmidSessionClient;if(!t)return null;let r=t.default??t;return typeof r.AdSession!="function"?null:r}async function h(e,t,r){let n=Date.now();if(await w(e,r),t){let s=Date.now()-n,d=Math.max(r-s,1e3);await w(t,d);}let o=b();if(!o)throw new Error("OM SDK namespace not found after script load");return o}function P(e,t,r){let n=new e.Partner(r.partner.name,r.partner.version),o=r.verifications.filter(m=>m.resourceUrl).map(m=>new e.VerificationScriptResource(m.resourceUrl,m.vendor,m.parameters,"full")),s=new e.Context(n,o,r.contentUrl,r.customReferenceData);s.setVideoElement(t);let d=t.parentElement;d&&s.setSlotElement(d),s.setServiceWindow(window);let a=new e.AdSession(s);if(a.setCreativeType("video"),a.setImpressionType("beginToRender"),!a.isSupported())throw new Error("OM SDK session not supported in this environment");let u=false,c=false,l=null;a.registerSessionObserver(m=>{m.type==="sessionStart"&&(u=true,l&&(l(true),l=null));}),a.start();let p=new e.AdEvents(a),i=new e.MediaEvents(a),v=r.position??"standalone",f=r.skipOffset!==void 0,O=r.skipOffset??-1,S=r.isAutoPlay??true,y=new e.VastProperties(f,O,S,v);return {get adEvents(){return p},get mediaEvents(){return i},get vastProperties(){return y},get started(){return u},waitForStart(m){return u?Promise.resolve(true):new Promise(g=>{l=g,setTimeout(()=>{u||(l=null,g(false));},m);})},finish(){c||(c=true,a.finish());},error(m){a.error("video",m);}}}var A="https://pagead2.googlesyndication.com/omsdk/releases/live/omweb-v1.js";function j(e){return {name:"omid",setup(t,r){let n=r.verifications??[];if(n.length===0)return;let o=false,s=null,d=null,a=e.timeout??5e3,u=e.serviceScriptUrl??A,c={...e,serviceScriptUrl:u,verifications:n,skipOffset:r.creatives[0]?.linear?.skipOffset},l=h(u,e.sessionClientUrl,a).catch(i=>i);async function p(){if(!o)try{let i=await l;if(o)return;if(i instanceof Error)throw i;let f=P(i,t.el,c);if(d=f,o){f.finish();return}let O=await f.waitForStart(a);if(o){f.finish();return}if(!O){console.warn("[vide:omid] Session start timed out"),f.finish();return}let S=Number.isFinite(t.el.duration)?t.el.duration:0;s=E(t,f,S);}catch(i){if(o)return;console.warn("[vide:omid] Failed to initialize:",i instanceof Error?i.message:String(i)),t.emit("ad:error",{error:i instanceof Error?i:new Error(String(i)),source:"omid"});}}return p(),()=>{o=true,s&&(s(),s=null),d&&(d.finish(),d=null);}}}}
|
|
2
|
+
export{j as omid};
|
package/dist/simid/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { b as AdPlugin } from '../types-
|
|
2
|
-
import '../types-
|
|
1
|
+
import { b as AdPlugin } from '../types-CAJmacV6.js';
|
|
2
|
+
import '../types-vxIcXgJz.js';
|
|
3
3
|
|
|
4
4
|
interface SimidPluginOptions {
|
|
5
5
|
/** Container element to mount the SIMID iframe into. */
|
package/dist/ssai/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
type MediaElement = HTMLVideoElement | HTMLAudioElement;
|
|
1
2
|
type PlayerState = "idle" | "loading" | "ready" | "playing" | "paused" | "buffering" | "ad:loading" | "ad:playing" | "ad:paused" | "ended" | "error";
|
|
2
3
|
type AdQuartile = "start" | "firstQuartile" | "midpoint" | "thirdQuartile" | "complete";
|
|
3
4
|
interface PlayerEventMap {
|
|
@@ -12,10 +13,15 @@ interface PlayerEventMap {
|
|
|
12
13
|
currentTime: number;
|
|
13
14
|
duration: number;
|
|
14
15
|
};
|
|
16
|
+
livestatechange: {
|
|
17
|
+
isLive: boolean;
|
|
18
|
+
};
|
|
15
19
|
error: {
|
|
16
20
|
code: number;
|
|
17
21
|
message: string;
|
|
18
22
|
source: string;
|
|
23
|
+
recoverable?: boolean | undefined;
|
|
24
|
+
retryCount?: number | undefined;
|
|
19
25
|
};
|
|
20
26
|
"ad:start": {
|
|
21
27
|
adId: string;
|
|
@@ -64,38 +70,82 @@ interface PlayerEventMap {
|
|
|
64
70
|
"ad:breakEnd": {
|
|
65
71
|
breakId: string | undefined;
|
|
66
72
|
};
|
|
73
|
+
qualitiesavailable: {
|
|
74
|
+
qualities: QualityLevel[];
|
|
75
|
+
};
|
|
76
|
+
qualitychange: {
|
|
77
|
+
from: QualityLevel | null;
|
|
78
|
+
to: QualityLevel;
|
|
79
|
+
};
|
|
80
|
+
texttrackchange: {
|
|
81
|
+
track: VideTextTrack | null;
|
|
82
|
+
};
|
|
83
|
+
texttracksavailable: {
|
|
84
|
+
tracks: VideTextTrack[];
|
|
85
|
+
};
|
|
86
|
+
cuechange: {
|
|
87
|
+
cues: VideCue[];
|
|
88
|
+
};
|
|
67
89
|
destroy: undefined;
|
|
68
90
|
}
|
|
69
91
|
type PlayerEvent = keyof PlayerEventMap;
|
|
92
|
+
interface RecoveryConfig {
|
|
93
|
+
maxRetries: number;
|
|
94
|
+
retryDelay: number;
|
|
95
|
+
backoffMultiplier: number;
|
|
96
|
+
}
|
|
70
97
|
type EventHandler<T> = (data: T) => void;
|
|
71
|
-
/**
|
|
72
|
-
type
|
|
98
|
+
/** Native media event names not already covered by PlayerEventMap. */
|
|
99
|
+
type NativeMediaEvent = Exclude<keyof HTMLMediaElementEventMap, keyof PlayerEventMap>;
|
|
73
100
|
interface EventBus {
|
|
74
101
|
on<K extends PlayerEvent>(event: K, handler: EventHandler<PlayerEventMap[K]>): void;
|
|
75
|
-
on<K extends
|
|
102
|
+
on<K extends NativeMediaEvent>(event: K, handler: (ev: HTMLMediaElementEventMap[K]) => void): void;
|
|
76
103
|
on(event: string, handler: (...args: any[]) => void): void;
|
|
77
104
|
off<K extends PlayerEvent>(event: K, handler: EventHandler<PlayerEventMap[K]>): void;
|
|
78
|
-
off<K extends
|
|
105
|
+
off<K extends NativeMediaEvent>(event: K, handler: (ev: HTMLMediaElementEventMap[K]) => void): void;
|
|
79
106
|
off(event: string, handler: (...args: any[]) => void): void;
|
|
80
107
|
emit<K extends PlayerEvent>(event: K, data: PlayerEventMap[K]): void;
|
|
81
108
|
once<K extends PlayerEvent>(event: K, handler: EventHandler<PlayerEventMap[K]>): void;
|
|
82
|
-
once<K extends
|
|
109
|
+
once<K extends NativeMediaEvent>(event: K, handler: (ev: HTMLMediaElementEventMap[K]) => void): void;
|
|
83
110
|
once(event: string, handler: (...args: any[]) => void): void;
|
|
84
111
|
}
|
|
112
|
+
interface SeekableRange {
|
|
113
|
+
start: number;
|
|
114
|
+
end: number;
|
|
115
|
+
}
|
|
116
|
+
interface QualityLevel {
|
|
117
|
+
id: number;
|
|
118
|
+
width: number;
|
|
119
|
+
height: number;
|
|
120
|
+
bitrate: number;
|
|
121
|
+
label: string;
|
|
122
|
+
}
|
|
123
|
+
interface VideTextTrack {
|
|
124
|
+
id: number;
|
|
125
|
+
label: string;
|
|
126
|
+
language: string;
|
|
127
|
+
kind: "subtitles" | "captions" | "descriptions" | "chapters" | "metadata";
|
|
128
|
+
active: boolean;
|
|
129
|
+
}
|
|
130
|
+
interface VideCue {
|
|
131
|
+
startTime: number;
|
|
132
|
+
endTime: number;
|
|
133
|
+
text: string;
|
|
134
|
+
}
|
|
85
135
|
interface SourceHandler {
|
|
86
136
|
/** Whether this handler can process the given URL/type. */
|
|
87
137
|
canHandle(url: string, type?: string): boolean;
|
|
88
|
-
/** Load the source into the
|
|
89
|
-
load(url: string,
|
|
138
|
+
/** Load the source into the media element. */
|
|
139
|
+
load(url: string, mediaElement: MediaElement): void;
|
|
90
140
|
/** Unload the source and clean up. */
|
|
91
|
-
unload(
|
|
141
|
+
unload(mediaElement: MediaElement): void;
|
|
92
142
|
}
|
|
93
143
|
interface Plugin {
|
|
94
144
|
name: string;
|
|
95
145
|
setup(player: Player): (() => void) | undefined;
|
|
96
146
|
}
|
|
97
147
|
interface Player extends EventBus {
|
|
98
|
-
readonly el:
|
|
148
|
+
readonly el: MediaElement;
|
|
99
149
|
readonly state: PlayerState;
|
|
100
150
|
play(): Promise<void>;
|
|
101
151
|
pause(): void;
|
|
@@ -110,6 +160,25 @@ interface Player extends EventBus {
|
|
|
110
160
|
readonly buffered: TimeRanges;
|
|
111
161
|
readonly seekable: TimeRanges;
|
|
112
162
|
readonly seeking: boolean;
|
|
163
|
+
readonly isLive: boolean;
|
|
164
|
+
readonly seekableRange: SeekableRange | null;
|
|
165
|
+
readonly qualities: QualityLevel[];
|
|
166
|
+
readonly currentQuality: QualityLevel | null;
|
|
167
|
+
setQuality(id: number): void;
|
|
168
|
+
readonly isAutoQuality: boolean;
|
|
169
|
+
readonly isAudio: boolean;
|
|
170
|
+
readonly textTracks: TextTrackList;
|
|
171
|
+
getTextTracks(): VideTextTrack[];
|
|
172
|
+
getActiveTextTrack(): VideTextTrack | null;
|
|
173
|
+
readonly activeCues: VideCue[];
|
|
174
|
+
setTextTrack(id: number): void;
|
|
175
|
+
addTextTrack(options: {
|
|
176
|
+
src: string;
|
|
177
|
+
label: string;
|
|
178
|
+
language: string;
|
|
179
|
+
kind?: "subtitles" | "captions";
|
|
180
|
+
default?: boolean;
|
|
181
|
+
}): void;
|
|
113
182
|
readonly videoWidth: number;
|
|
114
183
|
readonly videoHeight: number;
|
|
115
184
|
readonly networkState: number;
|
|
@@ -121,11 +190,11 @@ interface Player extends EventBus {
|
|
|
121
190
|
defaultMuted: boolean;
|
|
122
191
|
crossOrigin: string | null;
|
|
123
192
|
controls: boolean;
|
|
124
|
-
/** Web-standard addEventListener, delegates to the underlying
|
|
125
|
-
addEventListener<K extends keyof
|
|
193
|
+
/** Web-standard addEventListener, delegates to the underlying media element. */
|
|
194
|
+
addEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (ev: HTMLMediaElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions): void;
|
|
126
195
|
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
127
|
-
/** Web-standard removeEventListener, delegates to the underlying
|
|
128
|
-
removeEventListener<K extends keyof
|
|
196
|
+
/** Web-standard removeEventListener, delegates to the underlying media element. */
|
|
197
|
+
removeEventListener<K extends keyof HTMLMediaElementEventMap>(type: K, listener: (ev: HTMLMediaElementEventMap[K]) => void, options?: boolean | EventListenerOptions): void;
|
|
129
198
|
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
130
199
|
/** Current media source URL. Setting triggers SourceHandler lookup. */
|
|
131
200
|
src: string;
|
|
@@ -139,4 +208,4 @@ interface Player extends EventBus {
|
|
|
139
208
|
getPluginData(key: string): unknown;
|
|
140
209
|
}
|
|
141
210
|
|
|
142
|
-
export type { AdQuartile as A, EventBus as E, Player as P,
|
|
211
|
+
export type { AdQuartile as A, EventBus as E, MediaElement as M, Player as P, QualityLevel as Q, RecoveryConfig as R, SeekableRange as S, VideCue as V, EventHandler as a, PlayerEvent as b, PlayerEventMap as c, PlayerState as d, Plugin as e, SourceHandler as f, VideTextTrack as g };
|
package/dist/ui/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { P as Player, d as PlayerState, e as Plugin } from '../types-
|
|
2
|
-
import { b as AdPlugin, e as VastAd } from '../types-
|
|
1
|
+
import { P as Player, d as PlayerState, e as Plugin } from '../types-vxIcXgJz.js';
|
|
2
|
+
import { b as AdPlugin, e as VastAd } from '../types-CAJmacV6.js';
|
|
3
3
|
|
|
4
4
|
/** A single UI component that can be independently mounted and connected. */
|
|
5
5
|
interface UIComponent {
|
|
@@ -39,7 +39,7 @@ declare function createAdCountdown(adState: AdUIStateRef): UIComponent;
|
|
|
39
39
|
|
|
40
40
|
declare function createAdLabel(): UIComponent;
|
|
41
41
|
|
|
42
|
-
declare function createAdOverlay(): UIComponent;
|
|
42
|
+
declare function createAdOverlay(adState: AdUIStateRef): UIComponent;
|
|
43
43
|
|
|
44
44
|
declare function createAdSkip(adState: AdUIStateRef): UIComponent;
|
|
45
45
|
|
package/dist/ui/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function P(e){return {name:"ui-ad",setup(t,n){let r=n.creatives.find(o=>o.linear)?.linear;if(r)return e.set({adId:n.id,skipOffset:r.skipOffset,clickThrough:r.clickThrough,duration:r.duration}),()=>{e.clear();}}}}function C(e){return `vide-ui--${e.replace(":","-")}`}function f(e){return e==="ad:loading"||e==="ad:playing"||e==="ad:paused"}function S(e,t){e.classList.add(C(t.state));function n({from:r,to:o}){e.classList.remove(C(r)),e.classList.add(C(o));}return t.on("statechange",n),()=>t.off("statechange",n)}function b(e){if(!Number.isFinite(e)||e<0)return "0:00";let t=Math.floor(e),n=Math.floor(t/3600),r=Math.floor(t%3600/60),o=t%60,i=n>0?String(r).padStart(2,"0"):String(r),l=String(o).padStart(2,"0");return n>0?`${n}:${i}:${l}`:`${i}:${l}`}function u(e,t){let n=document.createElement(e);return n.className=t,n}function A(){let e={current:null,set(t){e.current=t;},clear(){e.current=null;}};return e}function M(e){let t=null,n=null;function r(){if(!t||!n||!f(n.state))return;let o=e.current?.duration??(Number.isFinite(n.el.duration)?n.el.duration:0),i=n.el.currentTime,l=Math.max(0,Math.ceil(o-i));t.textContent=`Ad \xB7 ${l}s`;}return {mount(o){t=u("div","vide-ad-countdown"),o.appendChild(t);},connect(o){n=o,n.on("timeupdate",r);},destroy(){t&&(t.remove(),t=null),n&&(n.off("timeupdate",r),n=null);}}}function T(){let e=null;return {mount(t){e=u("div","vide-ad-label"),e.textContent="Ad",t.appendChild(e);},connect(t){},destroy(){e&&(e.remove(),e=null);}}}function k(){let e=null,t=null;function n(){t&&(t.el.click(),t.el.paused?Promise.resolve(t.el.play()).catch(()=>{}):t.el.pause());}return {mount(r){e=u("div","vide-ad-overlay"),r.appendChild(e);},connect(r){t=r,e&&e.addEventListener("click",n);},destroy(){e&&(e.removeEventListener("click",n),e.remove(),e=null),t=null;}}}var x="http://www.w3.org/2000/svg";function y(e,t="0 0 24 24"){let n=document.createElementNS(x,"svg");n.setAttribute("viewBox",t),n.setAttribute("width","24"),n.setAttribute("height","24"),n.setAttribute("fill","currentColor"),n.setAttribute("aria-hidden","true");for(let r of e){let o=document.createElementNS(x,"path");o.setAttribute("d",r),n.appendChild(o);}return n}function L(){return y(["M8 5v14l11-7z"])}function I(){return y(["M6 19h4V5H6v14zm8-14v14h4V5h-4z"])}function U(){return y(["M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"])}function H(){return y(["M18.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM5 9v6h4l5 5V4L9 9H5z"])}function V(){return y(["M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4l-1.88 1.88L12 7.76V4z"])}function w(){return y(["M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"])}function j(){return y(["M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"])}function F(){return y(["M5 18l10-6L5 6v12zm12-12v12h2V6h-2z"])}function D(e){let t=null,n=null,r=null;function o(){!r||!e.current||t?.classList.contains("vide-skip--disabled")||r.emit("ad:skip",{adId:e.current.adId});}function i(){if(!t||!n||!r||!f(r.state))return;if(!e.current||e.current.skipOffset===void 0){t.style.display="none";return}t.style.display="";let{skipOffset:a}=e.current,m=r.el.currentTime;if(m>=a)t.classList.remove("vide-skip--disabled"),n.textContent="Skip Ad";else {t.classList.add("vide-skip--disabled");let d=Math.max(0,Math.ceil(a-m));n.textContent=`Skip in ${d}s`;}}function l({to:a}){!t||!n||f(a)||(t.style.display="none",t.classList.add("vide-skip--disabled"),n.textContent="");}return {mount(a){t=u("button","vide-skip vide-skip--disabled"),t.type="button",t.setAttribute("aria-label","Skip ad"),t.style.display="none",n=u("span","vide-skip__label"),t.appendChild(n),t.appendChild(F()),a.appendChild(t);},connect(a){r=a,t&&(t.addEventListener("click",o),r.on("timeupdate",i),r.on("statechange",l));},destroy(){t&&(t.removeEventListener("click",o),t.remove(),t=null,n=null),r&&(r.off("timeupdate",i),r.off("statechange",l),r=null);}}}var J=3e3;function _(){let e=null,t=null,n=null;function r(){if(!t)return true;let d=t.state;return d==="paused"||d==="ended"||d==="idle"||d==="ready"||f(d)}function o(){e&&e.classList.remove("vide-ui--autohide");}function i(){l(),!r()&&(n=setTimeout(()=>{e&&e.classList.add("vide-ui--autohide");},J));}function l(){n!==null&&(clearTimeout(n),n=null);}function a(){o(),i();}function m({to:d}){d==="paused"||d==="ended"||d==="idle"||d==="ready"||f(d)?(l(),o()):i();}return {mount(d){e=d.closest(".vide-ui")??d;},connect(d){t=d,e&&(e.addEventListener("mousemove",a),e.addEventListener("touchstart",a),e.addEventListener("keydown",a),t.on("statechange",m),i());},destroy(){l(),e&&(e.removeEventListener("mousemove",a),e.removeEventListener("touchstart",a),e.removeEventListener("keydown",a),e.classList.remove("vide-ui--autohide"),e=null),t&&(t.off("statechange",m),t=null);}}}function G(){let e=null,t=null;function n(){if(t){if(t.state==="ended"){let o=function({to:i}){i==="ready"&&(t?.off("statechange",o),t?.play().catch(()=>{}));};t.on("statechange",o),t.el.currentTime=0,t.el.load();return}t.play().catch(()=>{});}}return {mount(r){e=u("button","vide-bigplay"),e.type="button",e.setAttribute("aria-label","Play video"),e.appendChild(L()),r.appendChild(e);},connect(r){t=r,e&&e.addEventListener("click",n);},destroy(){e&&(e.removeEventListener("click",n),e.remove(),e=null),t=null;}}}var Q=200;function N(e){let t=null,n=null,r=null,o=null;function i(){n&&(n.state==="playing"||n.state==="ad:playing"?n.pause():n.play().catch(()=>{}));}function l(){!o||e.has("fullscreen")||(document.fullscreenElement!=null?document.exitFullscreen().catch(()=>{}):o.requestFullscreen&&o.requestFullscreen().catch(()=>{}));}function a(){if(n){if(f(n.state)){n.el.click(),i();return}if(r!==null){clearTimeout(r),r=null,l();return}r=setTimeout(()=>{r=null,i();},Q);}}return {mount(m){t=u("div","vide-clickplay"),o=m.closest(".vide-ui")?.parentElement??m,m.appendChild(t);},connect(m){n=m,t&&t.addEventListener("click",a);},destroy(){r!==null&&(clearTimeout(r),r=null),t&&(t.removeEventListener("click",a),t.remove(),t=null),n=null,o=null;}}}function z(){let e=null,t=null,n=null;function r({message:o}){t&&(t.textContent=o);}return {mount(o){e=u("div","vide-error"),t=u("span","vide-error__message"),e.appendChild(t),o.appendChild(e);},connect(o){n=o,n.on("error",r);},destroy(){e&&(e.remove(),e=null,t=null),n&&(n.off("error",r),n=null);}}}function R(){let e=null,t=null,n=null;function r(){return document.fullscreenElement!=null||document.webkitFullscreenElement!=null}function o(a){e&&(n&&n.remove(),n=a?j():w(),e.appendChild(n));}function i(){t&&(r()?typeof document.exitFullscreen=="function"?document.exitFullscreen().catch(()=>{}):typeof document.webkitExitFullscreen=="function"&&document.webkitExitFullscreen():typeof t.requestFullscreen=="function"?t.requestFullscreen().catch(()=>{}):typeof t.webkitRequestFullscreen=="function"?t.webkitRequestFullscreen():t.querySelector("video")?.webkitEnterFullscreen?.());}function l(){if(!e)return;let a=r();a?(e.classList.add("vide-fullscreen--active"),e.setAttribute("aria-label","Exit fullscreen")):(e.classList.remove("vide-fullscreen--active"),e.setAttribute("aria-label","Fullscreen")),o(a);}return {mount(a){t=a.closest(".vide-ui")?.parentElement??a,e=u("button","vide-fullscreen"),e.type="button",e.setAttribute("aria-label","Fullscreen"),o(false),a.appendChild(e);},connect(){e&&(e.addEventListener("click",i),document.addEventListener("fullscreenchange",l),document.addEventListener("webkitfullscreenchange",l));},destroy(){e&&(e.removeEventListener("click",i),e.remove(),e=null,n=null),document.removeEventListener("fullscreenchange",l),document.removeEventListener("webkitfullscreenchange",l),t=null;}}}function B(e){let t=null,n=null,{excluded:r}=e;function o(i){if(!n)return;let l=!r.has("volume"),a=!r.has("progress"),m=!r.has("fullscreen"),d=f(n.state);switch(i.key){case " ":case "k":case "K":i.preventDefault(),n.state==="playing"||n.state==="ad:playing"?n.pause():n.play().catch(()=>{});break;case "ArrowLeft":if(!a||d)return;i.preventDefault(),n.currentTime=Math.max(0,n.el.currentTime-5);break;case "ArrowRight":if(!a||d)return;i.preventDefault(),n.currentTime=Math.min(n.el.duration||0,n.el.currentTime+5);break;case "ArrowUp":if(!l)return;i.preventDefault(),n.volume=Math.min(1,n.volume+.1),n.muted&&(n.muted=false);break;case "ArrowDown":if(!l)return;i.preventDefault(),n.volume=Math.max(0,n.volume-.1);break;case "m":case "M":if(!l)return;i.preventDefault(),n.muted=!n.muted;break;case "f":case "F":if(!m)return;if(i.preventDefault(),document.fullscreenElement!=null)document.exitFullscreen().catch(()=>{});else {let p=t?.closest(".vide-ui")?.parentElement??t;p?.requestFullscreen&&p.requestFullscreen().catch(()=>{});}break;default:if(i.key.length===1&&i.key>="0"&&i.key<="9"&&a&&!d){i.preventDefault();let p=Number.parseInt(i.key,10)/10,v=n.el.duration;Number.isFinite(v)&&v>0&&(n.currentTime=p*v);}break}}return {mount(i){t=i.closest(".vide-ui")??i,t.setAttribute("tabindex","0");},connect(i){n=i,t&&t.addEventListener("keydown",o);},destroy(){t&&(t.removeEventListener("keydown",o),t.removeAttribute("tabindex"),t=null),n=null;}}}function K(){let e=null;return {mount(t){e=u("div","vide-loader");let n=u("div","vide-loader__spinner");e.appendChild(n),t.appendChild(e);},connect(t){},destroy(){e&&(e.remove(),e=null);}}}function O(){let e=null,t=null,n=null;function r(l){e&&(n&&n.remove(),n=l?I():L(),e.appendChild(n));}function o(){t&&(t.state==="playing"?t.pause():t.play().catch(()=>{}));}function i({to:l}){e&&(l==="playing"?(e.classList.add("vide-play--playing"),e.classList.remove("vide-play--paused"),e.setAttribute("aria-label","Pause"),r(true)):(l==="paused"||l==="ready"||l==="ended")&&(e.classList.remove("vide-play--playing"),e.classList.add("vide-play--paused"),e.setAttribute("aria-label","Play"),r(false)));}return {mount(l){e=u("button","vide-play vide-play--paused"),e.type="button",e.setAttribute("aria-label","Play"),r(false),l.appendChild(e);},connect(l){t=l,e&&(e.addEventListener("click",o),t.on("statechange",i));},destroy(){e&&(e.removeEventListener("click",o),e.remove(),e=null,n=null),t&&(t.off("statechange",i),t=null);}}}function q(e){let t=null;return {mount(n){t=u("div","vide-poster");let r=u("img","vide-poster__image");r.src=e.src,r.alt="",t.appendChild(r),n.appendChild(t);},connect(n){},destroy(){t&&(t.remove(),t=null);}}}function $(){let e=null,t=null,n=null,r=null,o=null,i=false;function l(s){if(!e)return 0;let c=e.getBoundingClientRect();return c.width===0?0:Math.max(0,Math.min(1,(s.clientX-c.left)/c.width))}function a(s){e&&e.style.setProperty("--vide-progress",String(s));}function m(){if(!o||!n)return;let s=o.el;if(s.buffered.length>0&&s.duration>0){let E=s.buffered.end(s.buffered.length-1)/s.duration;n.style.setProperty("--vide-progress-buffered",String(Math.min(1,E)));}}function d(){if(i||!o)return;let{currentTime:s,duration:c}=o.el;c>0&&a(s/c),m(),e&&(e.setAttribute("aria-valuenow",String(Math.floor(s))),Number.isFinite(c)&&e.setAttribute("aria-valuemax",String(Math.floor(c))));}function p(s){!o||!e||f(o.state)||(i=true,e.classList.add("vide-progress--dragging"),e.setPointerCapture(s.pointerId),a(l(s)));}function v(s){i&&a(l(s));}function h(s){if(!i||!o)return;i=false,e&&(e.classList.remove("vide-progress--dragging"),e.releasePointerCapture(s.pointerId));let c=l(s),E=o.el.duration;Number.isFinite(E)&&E>0&&(o.currentTime=c*E);}function g({to:s}){e&&(f(s)?e.classList.add("vide-progress--disabled"):e.classList.remove("vide-progress--disabled"));}return {mount(s){e=u("div","vide-progress"),e.setAttribute("role","slider"),e.setAttribute("aria-label","Seek"),e.setAttribute("aria-valuemin","0"),e.setAttribute("aria-valuemax","0"),e.setAttribute("aria-valuenow","0"),n=u("div","vide-progress__buffered"),t=u("div","vide-progress__bar"),r=u("div","vide-progress__handle"),e.appendChild(n),e.appendChild(t),e.appendChild(r),s.appendChild(e);},connect(s){o=s,e&&(o.on("timeupdate",d),o.on("statechange",g),e.addEventListener("pointerdown",p),e.addEventListener("pointermove",v),e.addEventListener("pointerup",h));},destroy(){e&&(e.removeEventListener("pointerdown",p),e.removeEventListener("pointermove",v),e.removeEventListener("pointerup",h),e.remove(),e=null,t=null,n=null,r=null),o&&(o.off("timeupdate",d),o.off("statechange",g),o=null);}}}function X(){let e=null,t=null,n=null,r=null;function o({currentTime:i,duration:l}){t&&(t.textContent=b(i)),n&&(n.textContent=b(l));}return {mount(i){e=u("div","vide-time"),t=u("span","vide-time__current");let l=u("span","vide-time__separator");n=u("span","vide-time__duration"),t.textContent="0:00",l.textContent="/",n.textContent="0:00",e.appendChild(t),e.appendChild(l),e.appendChild(n),i.appendChild(e);},connect(i){r=i,r.on("timeupdate",o);},destroy(){e&&(e.remove(),e=null,t=null,n=null),r&&(r.off("timeupdate",o),r=null);}}}function Y(){let e=null,t=null,n=null,r=null,o=false,i=null;function l(){if(!t||!r)return;i&&i.remove(),r.muted||r.volume===0?i=V():r.volume<.5?i=H():i=U(),t.appendChild(i);}function a(){if(!r||!e||!t)return;r.muted||r.volume===0?(e.classList.add("vide-volume--muted"),t.setAttribute("aria-label","Unmute")):(e.classList.remove("vide-volume--muted"),t.setAttribute("aria-label","Mute"));let c=r.muted?0:r.volume;e.style.setProperty("--vide-volume",String(c)),n&&n.setAttribute("aria-valuenow",String(Math.round(c*100))),l();}function m(s){if(!n)return 0;let c=n.getBoundingClientRect();return c.width===0?0:Math.max(0,Math.min(1,(s.clientX-c.left)/c.width))}function d(){r&&(r.muted=!r.muted);}function p(){o||a();}function v(s){if(!r||!n)return;o=true,n.setPointerCapture(s.pointerId);let c=m(s);r.volume=c,r.muted&&c>0&&(r.muted=false),a();}function h(s){if(!o||!r)return;let c=m(s);r.volume=c,r.muted&&c>0&&(r.muted=false),a();}function g(s){!o||!n||(o=false,n.releasePointerCapture(s.pointerId));}return {mount(s){e=u("div","vide-volume"),t=u("button","vide-volume__button"),t.type="button",t.setAttribute("aria-label","Mute"),n=u("div","vide-volume__slider"),n.setAttribute("role","slider"),n.setAttribute("aria-label","Volume"),n.setAttribute("aria-valuemin","0"),n.setAttribute("aria-valuemax","100"),n.setAttribute("aria-valuenow","100");let c=u("div","vide-volume__track"),E=u("div","vide-volume__filled");n.appendChild(c),n.appendChild(E),e.appendChild(t),e.appendChild(n),s.appendChild(e);},connect(s){r=s,!(!t||!n)&&(t.addEventListener("click",d),n.addEventListener("pointerdown",v),n.addEventListener("pointermove",h),n.addEventListener("pointerup",g),r.el.addEventListener("volumechange",p),a());},destroy(){t&&t.removeEventListener("click",d),n&&(n.removeEventListener("pointerdown",v),n.removeEventListener("pointermove",h),n.removeEventListener("pointerup",g)),r&&(r.el.removeEventListener("volumechange",p),r=null),e&&(e.remove(),e=null,t=null,n=null,i=null);}}}function W(e,t,n){e.mount(t),e.connect(n);}function st(e){let t=A(),n=new Set(e.exclude);return {name:"ui",setup(r){let o=document.createElement("div");o.className="vide-ui",o.setAttribute("role","region"),o.setAttribute("aria-label","Video player"),e.container.appendChild(o);let i=[];function l(p,v,h){n.has(p)||(W(v,h,r),i.push(v));}if(l("loader",K(),o),l("error",z(),o),l("bigplay",G(),o),e.poster&&l("poster",q({src:e.poster}),o),l("clickplay",N(n),o),!n.has("ad-overlay")||!n.has("ad-label")||!n.has("ad-countdown")||!n.has("ad-skip")){let p=document.createElement("div");p.className="vide-ad",o.appendChild(p),l("ad-overlay",k(),p),l("ad-label",T(),p),l("ad-countdown",M(t),p),l("ad-skip",D(t),p);}let m=document.createElement("div");m.className="vide-controls",m.addEventListener("click",p=>p.stopPropagation()),o.appendChild(m),l("play",O(),m),l("progress",$(),m),l("time",X(),m),l("volume",Y(),m),l("fullscreen",R(),m),l("autohide",_(),o),l("keyboard",B({excluded:n}),o);let d=S(o,r);return ()=>{for(let p of i)p.destroy();d(),o.remove();}},getAdPlugin(){return ()=>[P(t)]}}}
|
|
2
|
-
export{
|
|
1
|
+
function P(e){return {name:"ui-ad",setup(n,t){let r=t.creatives.find(o=>o.linear)?.linear;if(r)return e.set({adId:t.id,skipOffset:r.skipOffset,clickThrough:r.clickThrough,duration:r.duration}),()=>{e.clear();}}}}function b(e){return `vide-ui--${e.replace(":","-")}`}function f(e){return e==="ad:loading"||e==="ad:playing"||e==="ad:paused"}function A(e,n){e.classList.add(b(n.state));function t({from:r,to:o}){e.classList.remove(b(r)),e.classList.add(b(o));}return n.on("statechange",t),()=>n.off("statechange",t)}function C(e){if(!Number.isFinite(e)||e<0)return "0:00";let n=Math.floor(e),t=Math.floor(n/3600),r=Math.floor(n%3600/60),o=n%60,i=t>0?String(r).padStart(2,"0"):String(r),l=String(o).padStart(2,"0");return t>0?`${t}:${i}:${l}`:`${i}:${l}`}function u(e,n){let t=document.createElement(e);return t.className=n,t}function S(){let e={current:null,set(n){e.current=n;},clear(){e.current=null;}};return e}function M(e){let n=null,t=null;function r(){if(!n||!t||!f(t.state))return;let o=e.current?.duration??(Number.isFinite(t.el.duration)?t.el.duration:0),i=t.el.currentTime,l=Math.max(0,Math.ceil(o-i));n.textContent=`Ad \xB7 ${l}s`;}return {mount(o){n=u("div","vide-ad-countdown"),o.appendChild(n);},connect(o){t=o,t.on("timeupdate",r);},destroy(){n&&(n.remove(),n=null),t&&(t.off("timeupdate",r),t=null);}}}function T(){let e=null;return {mount(n){e=u("div","vide-ad-label"),e.textContent="Ad",n.appendChild(e);},connect(n){},destroy(){e&&(e.remove(),e=null);}}}function k(e){let n=null,t=null;function r(){if(!t)return;t.el.click();let o=e.current?.clickThrough;o?(window.open(o,"_blank"),t.el.pause()):t.el.paused?Promise.resolve(t.el.play()).catch(()=>{}):t.el.pause();}return {mount(o){n=u("div","vide-ad-overlay"),o.appendChild(n);},connect(o){t=o,n&&n.addEventListener("click",r);},destroy(){n&&(n.removeEventListener("click",r),n.remove(),n=null),t=null;}}}var x="http://www.w3.org/2000/svg";function y(e,n="0 0 24 24"){let t=document.createElementNS(x,"svg");t.setAttribute("viewBox",n),t.setAttribute("width","24"),t.setAttribute("height","24"),t.setAttribute("fill","currentColor"),t.setAttribute("aria-hidden","true");for(let r of e){let o=document.createElementNS(x,"path");o.setAttribute("d",r),t.appendChild(o);}return t}function L(){return y(["M8 5v14l11-7z"])}function I(){return y(["M6 19h4V5H6v14zm8-14v14h4V5h-4z"])}function U(){return y(["M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"])}function H(){return y(["M18.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM5 9v6h4l5 5V4L9 9H5z"])}function V(){return y(["M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4l-1.88 1.88L12 7.76V4z"])}function w(){return y(["M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"])}function j(){return y(["M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"])}function F(){return y(["M5 18l10-6L5 6v12zm12-12v12h2V6h-2z"])}function _(e){let n=null,t=null,r=null;function o(){!r||!e.current||n?.classList.contains("vide-skip--disabled")||r.emit("ad:skip",{adId:e.current.adId});}function i(){if(!n||!t||!r||!f(r.state))return;if(!e.current||e.current.skipOffset===void 0){n.style.display="none";return}n.style.display="";let{skipOffset:a}=e.current,m=r.el.currentTime;if(m>=a)n.classList.remove("vide-skip--disabled"),t.textContent="Skip Ad";else {n.classList.add("vide-skip--disabled");let d=Math.max(0,Math.ceil(a-m));t.textContent=`Skip in ${d}s`;}}function l({to:a}){!n||!t||f(a)||(n.style.display="none",n.classList.add("vide-skip--disabled"),t.textContent="");}return {mount(a){n=u("button","vide-skip vide-skip--disabled"),n.type="button",n.setAttribute("aria-label","Skip ad"),n.style.display="none",t=u("span","vide-skip__label"),n.appendChild(t),n.appendChild(F()),a.appendChild(n);},connect(a){r=a,n&&(n.addEventListener("click",o),r.on("timeupdate",i),r.on("statechange",l));},destroy(){n&&(n.removeEventListener("click",o),n.remove(),n=null,t=null),r&&(r.off("timeupdate",i),r.off("statechange",l),r=null);}}}var J=3e3;function D(){let e=null,n=null,t=null;function r(){if(!n)return true;let d=n.state;return d==="paused"||d==="ended"||d==="idle"||d==="ready"||f(d)}function o(){e&&e.classList.remove("vide-ui--autohide");}function i(){l(),!r()&&(t=setTimeout(()=>{e&&e.classList.add("vide-ui--autohide");},J));}function l(){t!==null&&(clearTimeout(t),t=null);}function a(){o(),i();}function m({to:d}){d==="paused"||d==="ended"||d==="idle"||d==="ready"||f(d)?(l(),o()):i();}return {mount(d){e=d.closest(".vide-ui")??d;},connect(d){n=d,e&&(e.addEventListener("mousemove",a),e.addEventListener("touchstart",a),e.addEventListener("keydown",a),n.on("statechange",m),i());},destroy(){l(),e&&(e.removeEventListener("mousemove",a),e.removeEventListener("touchstart",a),e.removeEventListener("keydown",a),e.classList.remove("vide-ui--autohide"),e=null),n&&(n.off("statechange",m),n=null);}}}function G(){let e=null,n=null;function t(){if(n){if(n.state==="ended"){let o=function({to:i}){i==="ready"&&(n?.off("statechange",o),n?.play().catch(()=>{}));};n.on("statechange",o),n.el.currentTime=0,n.el.load();return}n.play().catch(()=>{});}}return {mount(r){e=u("button","vide-bigplay"),e.type="button",e.setAttribute("aria-label","Play video"),e.appendChild(L()),r.appendChild(e);},connect(r){n=r,e&&e.addEventListener("click",t);},destroy(){e&&(e.removeEventListener("click",t),e.remove(),e=null),n=null;}}}var Q=200;function N(e){let n=null,t=null,r=null,o=null;function i(){t&&(t.state==="playing"||t.state==="ad:playing"?t.pause():t.play().catch(()=>{}));}function l(){!o||e.has("fullscreen")||(document.fullscreenElement!=null?document.exitFullscreen().catch(()=>{}):o.requestFullscreen&&o.requestFullscreen().catch(()=>{}));}function a(){if(t){if(f(t.state)){t.el.click(),i();return}if(r!==null){clearTimeout(r),r=null,l();return}r=setTimeout(()=>{r=null,i();},Q);}}return {mount(m){n=u("div","vide-clickplay"),o=m.closest(".vide-ui")?.parentElement??m,m.appendChild(n);},connect(m){t=m,n&&n.addEventListener("click",a);},destroy(){r!==null&&(clearTimeout(r),r=null),n&&(n.removeEventListener("click",a),n.remove(),n=null),t=null,o=null;}}}function z(){let e=null,n=null,t=null;function r({message:o}){n&&(n.textContent=o);}return {mount(o){e=u("div","vide-error"),n=u("span","vide-error__message"),e.appendChild(n),o.appendChild(e);},connect(o){t=o,t.on("error",r);},destroy(){e&&(e.remove(),e=null,n=null),t&&(t.off("error",r),t=null);}}}function R(){let e=null,n=null,t=null;function r(){return document.fullscreenElement!=null||document.webkitFullscreenElement!=null}function o(a){e&&(t&&t.remove(),t=a?j():w(),e.appendChild(t));}function i(){n&&(r()?typeof document.exitFullscreen=="function"?document.exitFullscreen().catch(()=>{}):typeof document.webkitExitFullscreen=="function"&&document.webkitExitFullscreen():typeof n.requestFullscreen=="function"?n.requestFullscreen().catch(()=>{}):typeof n.webkitRequestFullscreen=="function"?n.webkitRequestFullscreen():n.querySelector("video")?.webkitEnterFullscreen?.());}function l(){if(!e)return;let a=r();a?(e.classList.add("vide-fullscreen--active"),e.setAttribute("aria-label","Exit fullscreen")):(e.classList.remove("vide-fullscreen--active"),e.setAttribute("aria-label","Fullscreen")),o(a);}return {mount(a){n=a.closest(".vide-ui")?.parentElement??a,e=u("button","vide-fullscreen"),e.type="button",e.setAttribute("aria-label","Fullscreen"),o(false),a.appendChild(e);},connect(){e&&(e.addEventListener("click",i),document.addEventListener("fullscreenchange",l),document.addEventListener("webkitfullscreenchange",l));},destroy(){e&&(e.removeEventListener("click",i),e.remove(),e=null,t=null),document.removeEventListener("fullscreenchange",l),document.removeEventListener("webkitfullscreenchange",l),n=null;}}}function B(e){let n=null,t=null,{excluded:r}=e;function o(i){if(!t)return;let l=!r.has("volume"),a=!r.has("progress"),m=!r.has("fullscreen"),d=f(t.state);switch(i.key){case " ":case "k":case "K":i.preventDefault(),t.state==="playing"||t.state==="ad:playing"?t.pause():t.play().catch(()=>{});break;case "ArrowLeft":if(!a||d)return;i.preventDefault(),t.currentTime=Math.max(0,t.el.currentTime-5);break;case "ArrowRight":if(!a||d)return;i.preventDefault(),t.currentTime=Math.min(t.el.duration||0,t.el.currentTime+5);break;case "ArrowUp":if(!l)return;i.preventDefault(),t.volume=Math.min(1,t.volume+.1),t.muted&&(t.muted=false);break;case "ArrowDown":if(!l)return;i.preventDefault(),t.volume=Math.max(0,t.volume-.1);break;case "m":case "M":if(!l)return;i.preventDefault(),t.muted=!t.muted;break;case "f":case "F":if(!m)return;if(i.preventDefault(),document.fullscreenElement!=null)document.exitFullscreen().catch(()=>{});else {let p=n?.closest(".vide-ui")?.parentElement??n;p?.requestFullscreen&&p.requestFullscreen().catch(()=>{});}break;default:if(i.key.length===1&&i.key>="0"&&i.key<="9"&&a&&!d){i.preventDefault();let p=Number.parseInt(i.key,10)/10,v=t.el.duration;Number.isFinite(v)&&v>0&&(t.currentTime=p*v);}break}}return {mount(i){n=i.closest(".vide-ui")??i,n.setAttribute("tabindex","0");},connect(i){t=i,n&&n.addEventListener("keydown",o);},destroy(){n&&(n.removeEventListener("keydown",o),n.removeAttribute("tabindex"),n=null),t=null;}}}function K(){let e=null;return {mount(n){e=u("div","vide-loader");let t=u("div","vide-loader__spinner");e.appendChild(t),n.appendChild(e);},connect(n){},destroy(){e&&(e.remove(),e=null);}}}function O(){let e=null,n=null,t=null;function r(l){e&&(t&&t.remove(),t=l?I():L(),e.appendChild(t));}function o(){n&&(n.state==="playing"?n.pause():n.play().catch(()=>{}));}function i({to:l}){e&&(l==="playing"||l==="ad:playing"?(e.classList.add("vide-play--playing"),e.classList.remove("vide-play--paused"),e.setAttribute("aria-label","Pause"),r(true)):(l==="paused"||l==="ready"||l==="ended"||l==="ad:paused")&&(e.classList.remove("vide-play--playing"),e.classList.add("vide-play--paused"),e.setAttribute("aria-label","Play"),r(false)));}return {mount(l){e=u("button","vide-play vide-play--paused"),e.type="button",e.setAttribute("aria-label","Play"),r(false),l.appendChild(e);},connect(l){n=l,e&&(e.addEventListener("click",o),n.on("statechange",i));},destroy(){e&&(e.removeEventListener("click",o),e.remove(),e=null,t=null),n&&(n.off("statechange",i),n=null);}}}function q(e){let n=null;return {mount(t){n=u("div","vide-poster");let r=u("img","vide-poster__image");r.src=e.src,r.alt="",n.appendChild(r),t.appendChild(n);},connect(t){},destroy(){n&&(n.remove(),n=null);}}}function $(){let e=null,n=null,t=null,r=null,o=null,i=false;function l(s){if(!e)return 0;let c=e.getBoundingClientRect();return c.width===0?0:Math.max(0,Math.min(1,(s.clientX-c.left)/c.width))}function a(s){e&&e.style.setProperty("--vide-progress",String(s));}function m(){if(!o||!t)return;let s=o.el;if(s.buffered.length>0&&s.duration>0){let g=s.buffered.end(s.buffered.length-1)/s.duration;t.style.setProperty("--vide-progress-buffered",String(Math.min(1,g)));}}function d(){if(i||!o)return;let{currentTime:s,duration:c}=o.el;c>0&&a(s/c),m(),e&&(e.setAttribute("aria-valuenow",String(Math.floor(s))),Number.isFinite(c)&&e.setAttribute("aria-valuemax",String(Math.floor(c))));}function p(s){!o||!e||f(o.state)||(i=true,e.classList.add("vide-progress--dragging"),e.setPointerCapture(s.pointerId),a(l(s)));}function v(s){i&&a(l(s));}function h(s){if(!i||!o)return;i=false,e&&(e.classList.remove("vide-progress--dragging"),e.releasePointerCapture(s.pointerId));let c=l(s),g=o.el.duration;Number.isFinite(g)&&g>0&&(o.currentTime=c*g);}function E({to:s}){e&&(f(s)?e.classList.add("vide-progress--disabled"):e.classList.remove("vide-progress--disabled"));}return {mount(s){e=u("div","vide-progress"),e.setAttribute("role","slider"),e.setAttribute("aria-label","Seek"),e.setAttribute("aria-valuemin","0"),e.setAttribute("aria-valuemax","0"),e.setAttribute("aria-valuenow","0"),t=u("div","vide-progress__buffered"),n=u("div","vide-progress__bar"),r=u("div","vide-progress__handle"),e.appendChild(t),e.appendChild(n),e.appendChild(r),s.appendChild(e);},connect(s){o=s,e&&(o.on("timeupdate",d),o.on("statechange",E),e.addEventListener("pointerdown",p),e.addEventListener("pointermove",v),e.addEventListener("pointerup",h));},destroy(){e&&(e.removeEventListener("pointerdown",p),e.removeEventListener("pointermove",v),e.removeEventListener("pointerup",h),e.remove(),e=null,n=null,t=null,r=null),o&&(o.off("timeupdate",d),o.off("statechange",E),o=null);}}}function X(){let e=null,n=null,t=null,r=null;function o({currentTime:i,duration:l}){n&&(n.textContent=C(i)),t&&(t.textContent=C(l));}return {mount(i){e=u("div","vide-time"),n=u("span","vide-time__current");let l=u("span","vide-time__separator");t=u("span","vide-time__duration"),n.textContent="0:00",l.textContent="/",t.textContent="0:00",e.appendChild(n),e.appendChild(l),e.appendChild(t),i.appendChild(e);},connect(i){r=i,r.on("timeupdate",o);},destroy(){e&&(e.remove(),e=null,n=null,t=null),r&&(r.off("timeupdate",o),r=null);}}}function Y(){let e=null,n=null,t=null,r=null,o=false,i=null;function l(){if(!n||!r)return;i&&i.remove(),r.muted||r.volume===0?i=V():r.volume<.5?i=H():i=U(),n.appendChild(i);}function a(){if(!r||!e||!n)return;r.muted||r.volume===0?(e.classList.add("vide-volume--muted"),n.setAttribute("aria-label","Unmute")):(e.classList.remove("vide-volume--muted"),n.setAttribute("aria-label","Mute"));let c=r.muted?0:r.volume;e.style.setProperty("--vide-volume",String(c)),t&&t.setAttribute("aria-valuenow",String(Math.round(c*100))),l();}function m(s){if(!t)return 0;let c=t.getBoundingClientRect();return c.width===0?0:Math.max(0,Math.min(1,(s.clientX-c.left)/c.width))}function d(){r&&(r.muted=!r.muted);}function p(){o||a();}function v(s){if(!r||!t)return;o=true,t.setPointerCapture(s.pointerId);let c=m(s);r.volume=c,r.muted&&c>0&&(r.muted=false),a();}function h(s){if(!o||!r)return;let c=m(s);r.volume=c,r.muted&&c>0&&(r.muted=false),a();}function E(s){!o||!t||(o=false,t.releasePointerCapture(s.pointerId));}return {mount(s){e=u("div","vide-volume"),n=u("button","vide-volume__button"),n.type="button",n.setAttribute("aria-label","Mute"),t=u("div","vide-volume__slider"),t.setAttribute("role","slider"),t.setAttribute("aria-label","Volume"),t.setAttribute("aria-valuemin","0"),t.setAttribute("aria-valuemax","100"),t.setAttribute("aria-valuenow","100");let c=u("div","vide-volume__track"),g=u("div","vide-volume__filled");t.appendChild(c),t.appendChild(g),e.appendChild(n),e.appendChild(t),s.appendChild(e);},connect(s){r=s,!(!n||!t)&&(n.addEventListener("click",d),t.addEventListener("pointerdown",v),t.addEventListener("pointermove",h),t.addEventListener("pointerup",E),r.el.addEventListener("volumechange",p),a());},destroy(){n&&n.removeEventListener("click",d),t&&(t.removeEventListener("pointerdown",v),t.removeEventListener("pointermove",h),t.removeEventListener("pointerup",E)),r&&(r.el.removeEventListener("volumechange",p),r=null),e&&(e.remove(),e=null,n=null,t=null,i=null);}}}function W(e,n,t){e.mount(n),e.connect(t);}function st(e){let n=S(),t=new Set(e.exclude);return {name:"ui",setup(r){r.isAudio&&(t.add("fullscreen"),t.add("poster"));let o=document.createElement("div");o.className="vide-ui",o.setAttribute("role","region"),o.setAttribute("aria-label",r.isAudio?"Audio player":"Video player"),e.container.appendChild(o);let i=[];function l(p,v,h){t.has(p)||(W(v,h,r),i.push(v));}if(l("loader",K(),o),l("error",z(),o),l("bigplay",G(),o),e.poster&&l("poster",q({src:e.poster}),o),l("clickplay",N(t),o),!t.has("ad-overlay")||!t.has("ad-label")||!t.has("ad-countdown")||!t.has("ad-skip")){let p=document.createElement("div");p.className="vide-ad",o.appendChild(p),l("ad-overlay",k(n),p),l("ad-label",T(),p),l("ad-countdown",M(n),p),l("ad-skip",_(n),p);}let m=document.createElement("div");m.className="vide-controls",m.addEventListener("click",p=>p.stopPropagation()),o.appendChild(m),l("play",O(),m),l("progress",$(),m),l("time",X(),m),l("volume",Y(),m),l("fullscreen",R(),m),l("autohide",D(),o),l("keyboard",B({excluded:t}),o);let d=A(o,r);return ()=>{for(let p of i)p.destroy();d(),o.remove();}},getAdPlugin(){return ()=>[P(n)]}}}
|
|
2
|
+
export{A as connectStateClasses,M as createAdCountdown,T as createAdLabel,k as createAdOverlay,_ as createAdSkip,S as createAdUIState,D as createAutohide,G as createBigPlay,N as createClickPlay,z as createErrorDisplay,R as createFullscreen,B as createKeyboard,K as createLoader,O as createPlayButton,q as createPoster,$ as createProgress,X as createTimeDisplay,Y as createVolume,C as formatTime,f as isAdState,b as stateToClass,st as ui,P as uiAdPlugin};
|
package/dist/vast/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { e as Plugin } from '../types-
|
|
2
|
-
import { V as VastResponse, R as ResolveOptions, a as VastPluginOptions } from '../types-
|
|
3
|
-
export { A as AdCategory, b as AdPlugin, c as AdVerification, d as VastProgressEvent } from '../types-
|
|
1
|
+
import { e as Plugin } from '../types-vxIcXgJz.js';
|
|
2
|
+
import { V as VastResponse, R as ResolveOptions, a as VastPluginOptions } from '../types-CAJmacV6.js';
|
|
3
|
+
export { A as AdCategory, b as AdPlugin, c as AdVerification, d as VastProgressEvent } from '../types-CAJmacV6.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Parse a VAST XML string into a VastResponse object.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var Vide=(function(exports){'use strict';var F=1e3,B=2e3,$=2001,z=2002,G=3e3,J=3001,X=4e3,Z=4001,ee=4002,te=4003;var ne={idle:["loading","playing","error"],loading:["ready","playing","error"],ready:["playing","loading","ad:loading","error"],playing:["paused","buffering","loading","ad:loading","ended","error"],paused:["playing","loading","ad:loading","ended","error"],buffering:["playing","loading","error"],"ad:loading":["ad:playing","playing","error"],"ad:playing":["ad:paused","playing","error"],"ad:paused":["ad:playing","playing","error"],ended:["idle","loading","error"],error:["idle","loading"]};function re(t,a){return ne[t].includes(a)}function ae(t){return t.readyState>=3?t.paused?"ready":"playing":t.readyState>=1?"loading":"idle"}function ie(t){let a=ae(t),g=t instanceof HTMLAudioElement,E=new Map,y=[],c=false,k=[],d=null,m=t.getAttribute("src")??"",L=false,o=new Map,b=t.duration===Number.POSITIVE_INFINITY,R=null;function x(e){let n=E.get(e);return n||(n=new Set,E.set(e,n)),n}function i(e,n){let r=E.get(e);if(r)for(let u of r)try{u(n);}catch(p){console.error("[vide] Event handler error:",p);}}function s(e){if(e===a)return;if(!re(a,e)){console.warn(`[vide] Invalid transition: ${a} \u2192 ${e}`);return}let n=a;a=e,i("statechange",{from:n,to:e});}function v(){return a==="ad:loading"||a==="ad:playing"||a==="ad:paused"}function h(){!v()&&t.paused&&s("loading");}function S(){a==="loading"&&s("ready");}function P(){v()||s("playing"),i("play",void 0);}function _(){v()||s("paused"),i("pause",void 0);}function I(){a==="playing"&&s("buffering");}function H(){(a==="buffering"||a==="ready")&&s("playing");}function M(){v()||s("ended"),i("ended",void 0);}function A(){i("timeupdate",{currentTime:t.currentTime,duration:t.duration});}function C(){let e=t.error;v()||s("error"),i("error",{code:e?.code??1e3,message:e?.message??"Unknown error",source:"core"});}function w(){let e=t.duration===Number.POSITIVE_INFINITY;e!==b&&(b=e,i("livestatechange",{isLive:e}));}t.addEventListener("durationchange",w),t.addEventListener("loadstart",h),t.addEventListener("canplay",S),t.addEventListener("play",P),t.addEventListener("pause",_),t.addEventListener("waiting",I),t.addEventListener("playing",H),t.addEventListener("ended",M),t.addEventListener("timeupdate",A),t.addEventListener("error",C);function T(e,n){return {id:n,label:e.label,language:e.language,kind:e.kind,active:e.mode==="showing"}}function D(e){if(!e)return [];let n=[];for(let r=0;r<e.length;r++){let u=e[r];n.push({startTime:u.startTime,endTime:u.endTime,text:u.text??""});}return n}let l=new Map;function O(e){if(l.has(e))return;let n=()=>{e.mode==="showing"&&i("cuechange",{cues:D(e.activeCues)});};l.set(e,n),e.addEventListener("cuechange",n);}function K(e){let n=l.get(e);n&&(e.removeEventListener("cuechange",n),l.delete(e));}function V(){let e=[];for(let n=0;n<t.textTracks.length;n++)e.push(T(t.textTracks[n],n));i("texttracksavailable",{tracks:e});}function N(){for(let e=0;e<t.textTracks.length;e++)O(t.textTracks[e]);V();}function Q(e){e.track&&K(e.track),V();}let q=typeof t.textTracks.addEventListener=="function";if(q){t.textTracks.addEventListener("addtrack",N),t.textTracks.addEventListener("removetrack",Q);for(let e=0;e<t.textTracks.length;e++)O(t.textTracks[e]);}let U=new Set(["statechange","play","pause","ended","timeupdate","livestatechange","error","ad:start","ad:end","ad:skip","ad:click","ad:error","ad:impression","ad:loaded","ad:quartile","ad:mute","ad:unmute","ad:volumeChange","ad:fullscreen","ad:breakStart","ad:breakEnd","qualitiesavailable","qualitychange","texttrackchange","texttracksavailable","cuechange","destroy"]);function Y(){if(t.removeEventListener("durationchange",w),t.removeEventListener("loadstart",h),t.removeEventListener("canplay",S),t.removeEventListener("play",P),t.removeEventListener("pause",_),t.removeEventListener("waiting",I),t.removeEventListener("playing",H),t.removeEventListener("ended",M),t.removeEventListener("timeupdate",A),t.removeEventListener("error",C),q){t.textTracks.removeEventListener("addtrack",N),t.textTracks.removeEventListener("removetrack",Q);for(let[e,n]of l)e.removeEventListener("cuechange",n);l.clear();}}function j(){if(d||L)return;let e=t.querySelectorAll("source");for(let n of e){let r=n.getAttribute("src"),u=n.getAttribute("type")??void 0;if(r){for(let p of k)if(p.canHandle(r,u)){d=p,m=r,s("loading"),p.load(r,t);for(let W of e)W.remove();return}}}}let f={get el(){return t},get state(){return a},on(e,n){U.has(e)?x(e).add(n):t.addEventListener(e,n);},off(e,n){U.has(e)?x(e).delete(n):t.removeEventListener(e,n);},emit:i,once(e,n){let r=u=>{f.off(e,r),n(u);};f.on(e,r);},play(){return t.play()},pause(){t.pause();},get currentTime(){return t.currentTime},set currentTime(e){t.currentTime=e;},get duration(){return t.duration},set duration(e){},get volume(){return t.volume},set volume(e){t.volume=e;},get muted(){return t.muted},set muted(e){t.muted=e;},get playbackRate(){return t.playbackRate},set playbackRate(e){t.playbackRate=e;},get paused(){return t.paused},get ended(){return t.ended},get readyState(){return t.readyState},get buffered(){return t.buffered},get seekable(){return t.seekable},get seeking(){return t.seeking},get isLive(){return c?false:t.duration===Number.POSITIVE_INFINITY},get seekableRange(){return c||t.seekable.length===0?null:{start:t.seekable.start(0),end:t.seekable.end(0)}},get qualities(){return o.get("qualities")??[]},get currentQuality(){return o.get("currentQuality")??null},get isAutoQuality(){return o.get("autoQuality")??true},get isAudio(){return g},setQuality(e){let n=o.get("qualitySetter");n&&n(e);},get textTracks(){return t.textTracks},getTextTracks(){let e=[];for(let n=0;n<t.textTracks.length;n++)e.push(T(t.textTracks[n],n));return e},getActiveTextTrack(){for(let e=0;e<t.textTracks.length;e++)if(t.textTracks[e].mode==="showing")return T(t.textTracks[e],e);return null},get activeCues(){for(let e=0;e<t.textTracks.length;e++)if(t.textTracks[e].mode==="showing")return D(t.textTracks[e].activeCues);return []},setTextTrack(e){for(let r=0;r<t.textTracks.length;r++)t.textTracks[r].mode=r===e?"showing":"disabled";let n=e>=0&&e<t.textTracks.length?T(t.textTracks[e],e):null;i("texttrackchange",{track:n});},addTextTrack(e){let n=document.createElement("track");n.src=e.src,n.label=e.label,n.srclang=e.language,n.kind=e.kind??"subtitles",e.default&&(n.default=true),t.appendChild(n);},get videoWidth(){return g?0:t.videoWidth},get videoHeight(){return g?0:t.videoHeight},get networkState(){return t.networkState},get loop(){return t.loop},set loop(e){t.loop=e;},get autoplay(){return t.autoplay},set autoplay(e){t.autoplay=e;},get poster(){return g?"":t.poster},set poster(e){g||(t.poster=e);},get preload(){return t.preload},set preload(e){t.preload=e;},get defaultPlaybackRate(){return t.defaultPlaybackRate},set defaultPlaybackRate(e){t.defaultPlaybackRate=e;},get defaultMuted(){return t.defaultMuted},set defaultMuted(e){t.defaultMuted=e;},get crossOrigin(){return t.crossOrigin},set crossOrigin(e){t.crossOrigin=e;},get controls(){return t.controls},set controls(e){t.controls=e;},get src(){return m},set src(e){if(d&&(d.unload(t),d=null),o.delete("qualities"),o.delete("currentQuality"),o.delete("autoQuality"),o.delete("qualitySetter"),R=null,L=true,m=e,!e){t.removeAttribute("src");return}for(let n of k)if(n.canHandle(e)){d=n,s("loading"),n.load(e,t);return}t.src=e;},registerSourceHandler(e){if(c){console.warn("[vide] Cannot register source handler after destroy");return}k.push(e),!L&&!d&&j();},addEventListener(e,n,r){t.addEventListener(e,n,r);},removeEventListener(e,n,r){t.removeEventListener(e,n,r);},use(e){if(c){console.warn("[vide] Cannot use plugin after destroy");return}let n=e.setup(f);n&&y.push(n);},setPluginData(e,n){if(o.set(e,n),e==="qualities")i("qualitiesavailable",{qualities:n});else if(e==="currentQuality"){let r=n;i("qualitychange",{from:R,to:r}),R=r;}},getPluginData(e){return o.get(e)},destroy(){if(!c){c=true,d&&(d.unload(t),d=null);for(let e of y)try{e();}catch(n){console.error("[vide] Plugin cleanup error:",n);}y.length=0,i("destroy",void 0),Y(),E.clear(),o.clear();}}};return f._setState=s,f}exports.ERR_DASH_IMPORT=G;exports.ERR_DASH_PLAYBACK=J;exports.ERR_DRM_CERTIFICATE=te;exports.ERR_DRM_DETECTION=Z;exports.ERR_DRM_LICENSE=ee;exports.ERR_DRM_UNSUPPORTED=X;exports.ERR_HLS_FATAL=z;exports.ERR_HLS_IMPORT=$;exports.ERR_HLS_UNSUPPORTED=B;exports.ERR_MEDIA=F;exports.createPlayer=ie;return exports;})({});
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(function(){'use strict';var w=Object.defineProperty;var T=(e,t)=>()=>(e&&(t=e(e=0)),t);var C=(e,t)=>{for(var o in t)w(e,o,{get:t[o],enumerable:true});};var R={};C(R,{default:()=>k});var I,k,E=T(()=>{I=globalThis.dashjs,k=I;});function P(e){return e>=2160?"4K":e>=1440?"1440p":e>=1080?"1080p":e>=720?"720p":e>=480?"480p":e>=360?"360p":e>=240?"240p":`${e}p`}var q="application/dash+xml",A={maxRetries:3,retryDelay:3e3,backoffMultiplier:2};function Q(e){try{return new URL(e,"https://placeholder.invalid").pathname.endsWith(".mpd")}catch{return e.includes(".mpd")}}function _(e){return e.toLowerCase()===q}function M(e={}){return {name:"dash",setup(t){let o=null,d=false,f=e.recovery===false?false:{...A,...e.recovery??{}},u=0,g=null,p="",l=null;function m(){g!==null&&(clearTimeout(g),g=null);}function S(n){if(f===false||d||u>=f.maxRetries||!l)return false;u++;let a=f.retryDelay*f.backoffMultiplier**(u-1);return m(),g=setTimeout(()=>{d||!l||(n.reset(),n.initialize(l,p,l.autoplay));},a),true}let b={canHandle(n,a){return a&&_(a)?true:Q(n)},load(n,a){this.unload(a),L(n,a);},unload(n){m(),u=0,p="",l=null,o&&(o.destroy(),o=null);}};function L(n,a){p=n,l=a,Promise.resolve().then(()=>(E(),R)).then(y=>{if(d)return;let h=y.default,r=h.MediaPlayer().create();o=r,t.setPluginData("dash",r);let D=t.getPluginData("drm");D?.dashConfig&&r.updateSettings(D.dashConfig),e.dashConfig&&r.updateSettings(e.dashConfig),r.on(h.MediaPlayer.events.ERROR,s=>{if(typeof s.error=="object"&&s.error!==null){let c=S(r);t.emit("error",{code:s.error.code,message:s.error.message,source:"dash",recoverable:c,retryCount:c?u:void 0});}else t.emit("error",{code:3001,message:`DASH error: ${String(s.error)}`,source:"dash"});}),r.on(h.MediaPlayer.events.STREAM_INITIALIZED,()=>{u>0&&(u=0,m());let c=r.getBitrateInfoListFor("video").map(i=>({id:i.qualityIndex,width:i.width,height:i.height,bitrate:i.bitrate,label:P(i.height)}));t.setPluginData("qualities",c),t.setPluginData("qualitySetter",i=>{i===-1?r.updateSettings({streaming:{abr:{autoSwitchBitrate:{video:true}}}}):(r.updateSettings({streaming:{abr:{autoSwitchBitrate:{video:false}}}}),r.setQualityFor("video",i,true)),t.setPluginData("autoQuality",i===-1);});}),r.on(h.MediaPlayer.events.QUALITY_CHANGE_RENDERED,s=>{if(s.mediaType!=="video")return;let i=t.qualities.find(v=>v.id===s.newQuality);if(i){t.setPluginData("currentQuality",i);let v=r.getSettings();t.setPluginData("autoQuality",v?.streaming?.abr?.autoSwitchBitrate?.video??true);}}),r.initialize(a,n,a.autoplay);}).catch(y=>{d||t.emit("error",{code:3e3,message:y instanceof Error?`Failed to load dashjs: ${y.message}`:"Failed to load dashjs",source:"dash"});});}return t.registerSourceHandler(b),()=>{d=true,m(),b.unload(t.el);}}}}var B=globalThis.Vide??(globalThis.Vide={});B.dash=M;
|
|
2
|
+
})();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(){'use strict';function l(e){let r={licenseUrl:e.licenseUrl,serverCertificateUrl:e.certificateUrl};if(e.headers){let t=e.headers;r.licenseXhrSetup=n=>{for(let[i,s]of Object.entries(t))n.setRequestHeader(i,s);};}return {emeEnabled:true,drmSystems:{"com.apple.fps.1_0":r}}}function g(e){let r={serverURL:e.licenseUrl,serverCertificateURL:e.certificateUrl};return e.headers&&(r.httpRequestHeaders=e.headers),{streaming:{protection:{data:{"com.apple.fps.1_0":r}}}}}function h(e){let r={licenseUrl:e.licenseUrl};if(e.headers){let t=e.headers;r.licenseXhrSetup=n=>{for(let[i,s]of Object.entries(t))n.setRequestHeader(i,s);};}return {emeEnabled:true,drmSystems:{"com.widevine.alpha":r}}}function v(e){let r={serverURL:e.licenseUrl};return e.headers&&(r.httpRequestHeaders=e.headers),{streaming:{protection:{data:{"com.widevine.alpha":r}}}}}function u(e){return e.keySystem==="com.widevine.alpha"&&e.widevine?h(e.widevine):e.keySystem==="com.apple.fps.1_0"&&e.fairplay?l(e.fairplay):{}}function y(e){return e.keySystem==="com.widevine.alpha"&&e.widevine?v(e.widevine):e.keySystem==="com.apple.fps.1_0"&&e.fairplay?g(e.fairplay):{}}var w="com.apple.fps.1_0",S=[{initDataTypes:["cenc"],videoCapabilities:[{contentType:'video/mp4;codecs="avc1.42E01E"'}]}],K=[{initDataTypes:["sinf"],videoCapabilities:[{contentType:'video/mp4;codecs="avc1.42E01E"'}]}];async function m(e){for(let r of e)try{let t=r===w?K:S;return await navigator.requestMediaKeySystemAccess(r,t),r}catch{}return null}var R="com.apple.fps.1_0",M=[{initDataTypes:["cenc"],videoCapabilities:[{contentType:'video/mp4;codecs="avc1.42E01E"'}]}],P=[{initDataTypes:["sinf"],videoCapabilities:[{contentType:'video/mp4;codecs="avc1.42E01E"'}]}];function p(e,r,t){let n=false,i=[],s=null,a=o=>{if(n||e.mediaKeys&&e.mediaKeys!==s||!s||!o.initData)return;let f=s.createSession("temporary");i.push(f),f.generateRequest(o.initDataType,o.initData).then(()=>{},c=>{n||t(c instanceof Error?c:new Error("generateRequest failed"));}),f.addEventListener("message",c=>{n||D(c,f,r,t,()=>n);}),f.addEventListener("keystatuseschange",()=>{if(!n)for(let[,c]of f.keyStatuses)(c==="expired"||c==="internal-error")&&t(new Error(`Key status: ${c}`));});},d=r.keySystem===R?P:M;return navigator.requestMediaKeySystemAccess(r.keySystem,d).then(o=>{if(!n)return o.createMediaKeys()}).then(o=>{if(!(n||!o)&&(s=o,r.keySystem===R&&r.certificateUrl))return U(r.certificateUrl,r.headers,t,()=>n).then(f=>{if(!(n||!f))return s?.setServerCertificate(f.buffer)})}).then(()=>{n||!s||(e.mediaKeys||e.setMediaKeys(s),e.addEventListener("encrypted",a));}).catch(o=>{n||t(o instanceof Error?o:new Error("EME setup failed"));}),()=>{n=true,e.removeEventListener("encrypted",a);for(let o of i)o.close().catch(()=>{});}}async function U(e,r,t,n){try{let i=await fetch(e,r?{headers:r}:{});if(!i.ok)throw new Error(`Certificate fetch failed: ${i.status} ${i.statusText}`);let s=await i.arrayBuffer();return n()?null:new Uint8Array(s)}catch(i){return n()||t(i instanceof Error?i:new Error("Certificate fetch failed")),null}}function D(e,r,t,n,i){let s=new Uint8Array(e.message);Promise.resolve(t.prepareLicenseRequest?t.prepareLicenseRequest(s):s).then(a=>{if(!i())return fetch(t.licenseUrl,{method:"POST",body:a.buffer,...t.headers?{headers:t.headers}:{}})}).then(a=>{if(!(i()||!a)){if(!a.ok)throw new Error(`License request failed: ${a.status} ${a.statusText}`);return a.arrayBuffer()}}).then(a=>{if(i()||!a)return;let d=new Uint8Array(a);return Promise.resolve(t.processLicenseResponse?t.processLicenseResponse(d):d)}).then(a=>{if(!(i()||!a))return r.update(a.buffer)}).catch(a=>{i()||n(a instanceof Error?a:new Error("License exchange failed"));});}function C(e){return {name:"drm",setup(r){let t=false,n,i=[];return e.widevine&&i.push("com.widevine.alpha"),e.fairplay&&i.push("com.apple.fps.1_0"),i.length===0?(console.warn("[vide/drm] No DRM configuration provided"),()=>{}):(m(i).then(s=>{if(t)return;if(!s){r.emit("error",{code:4e3,message:"No supported DRM key system found",source:"drm"});return}let a={keySystem:s,widevine:e.widevine,fairplay:e.fairplay},d={keySystem:s,hlsConfig:u(a),dashConfig:y(a)};r.setPluginData("drm",d);let o=s!=="com.widevine.alpha",f=o?e.fairplay:e.widevine;if(!f)return;let c={keySystem:s,licenseUrl:f.licenseUrl,headers:f.headers,prepareLicenseRequest:f.prepareLicenseRequest,processLicenseResponse:f.processLicenseResponse};o&&(c.certificateUrl=f.certificateUrl),n=p(r.el,c,E=>{t||r.emit("error",{code:4002,message:E.message,source:"drm"});});}).catch(s=>{t||r.emit("error",{code:4001,message:s instanceof Error?`DRM detection failed: ${s.message}`:"DRM detection failed",source:"drm"});}),()=>{t=true,n?.();})}}}var L=globalThis.Vide??(globalThis.Vide={});Object.assign(L,{drm:C,detectKeySystem:m,dashDrmConfig:y,hlsDrmConfig:u,setupEme:p});})();
|