@videts/vide 0.8.0 → 0.9.2

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.
Files changed (147) hide show
  1. package/README.md +9 -9
  2. package/dist/chunk-2OVLZ27V.mjs +1 -0
  3. package/dist/chunk-3RDTWUHH.mjs +1 -0
  4. package/dist/chunk-6DWWYSH4.mjs +1 -0
  5. package/dist/chunk-G74QBLVV.mjs +1 -0
  6. package/dist/chunk-JRU2FKRB.mjs +2 -0
  7. package/dist/chunk-LPSJOF2I.mjs +2 -0
  8. package/dist/chunk-NA4C7W64.mjs +2 -0
  9. package/dist/chunk-UY5CGRNN.mjs +1 -0
  10. package/dist/chunk-VPH4JIJV.mjs +1 -0
  11. package/dist/chunk-WINCDUN5.mjs +1 -0
  12. package/dist/dash/index.d.ts +3 -9
  13. package/dist/dash/index.js +1 -0
  14. package/dist/dash/index.mjs +1 -2
  15. package/dist/drm/index.d.ts +4 -31
  16. package/dist/drm/index.js +1 -0
  17. package/dist/drm/index.mjs +1 -1
  18. package/dist/hls/index.d.ts +3 -9
  19. package/dist/hls/index.js +1 -0
  20. package/dist/hls/index.mjs +1 -2
  21. package/dist/index.d.ts +2 -2
  22. package/dist/index.js +1 -0
  23. package/dist/index.mjs +1 -1
  24. package/dist/omid/index.d.ts +2 -2
  25. package/dist/omid/index.js +2 -0
  26. package/dist/react/index.d.ts +240 -0
  27. package/dist/react/index.js +2 -0
  28. package/dist/react/index.mjs +2 -0
  29. package/dist/simid/index.d.ts +2 -2
  30. package/dist/simid/index.js +1 -0
  31. package/dist/ssai/index.d.ts +4 -40
  32. package/dist/ssai/index.js +1 -0
  33. package/dist/ssai/index.mjs +1 -1
  34. package/dist/svelte/DashPlugin.svelte +23 -0
  35. package/dist/svelte/DashPlugin.svelte.d.ts +4 -0
  36. package/dist/svelte/DrmPlugin.svelte +20 -0
  37. package/dist/svelte/DrmPlugin.svelte.d.ts +4 -0
  38. package/dist/svelte/HlsPlugin.svelte +23 -0
  39. package/dist/svelte/HlsPlugin.svelte.d.ts +4 -0
  40. package/dist/svelte/SsaiPlugin.svelte +23 -0
  41. package/dist/svelte/SsaiPlugin.svelte.d.ts +4 -0
  42. package/dist/svelte/VastPlugin.svelte +20 -0
  43. package/dist/svelte/VastPlugin.svelte.d.ts +4 -0
  44. package/dist/svelte/VideControls.svelte +22 -0
  45. package/dist/svelte/VideControls.svelte.d.ts +8 -0
  46. package/dist/svelte/VideUI.svelte +49 -0
  47. package/dist/svelte/VideUI.svelte.d.ts +9 -0
  48. package/dist/svelte/Video.svelte +31 -0
  49. package/dist/svelte/Video.svelte.d.ts +10 -0
  50. package/dist/svelte/VmapPlugin.svelte +20 -0
  51. package/dist/svelte/VmapPlugin.svelte.d.ts +4 -0
  52. package/dist/svelte/components/AdCountdown.svelte +37 -0
  53. package/dist/svelte/components/AdCountdown.svelte.d.ts +7 -0
  54. package/dist/svelte/components/AdLabel.svelte +26 -0
  55. package/dist/svelte/components/AdLabel.svelte.d.ts +8 -0
  56. package/dist/svelte/components/AdLearnMore.svelte +42 -0
  57. package/dist/svelte/components/AdLearnMore.svelte.d.ts +9 -0
  58. package/dist/svelte/components/AdOverlay.svelte +46 -0
  59. package/dist/svelte/components/AdOverlay.svelte.d.ts +8 -0
  60. package/dist/svelte/components/AdSkip.svelte +67 -0
  61. package/dist/svelte/components/AdSkip.svelte.d.ts +8 -0
  62. package/dist/svelte/components/BigPlayButton.svelte +46 -0
  63. package/dist/svelte/components/BigPlayButton.svelte.d.ts +8 -0
  64. package/dist/svelte/components/ClickPlay.svelte +76 -0
  65. package/dist/svelte/components/ClickPlay.svelte.d.ts +7 -0
  66. package/dist/svelte/components/ErrorDisplay.svelte +27 -0
  67. package/dist/svelte/components/ErrorDisplay.svelte.d.ts +6 -0
  68. package/dist/svelte/components/FullscreenButton.svelte +65 -0
  69. package/dist/svelte/components/FullscreenButton.svelte.d.ts +9 -0
  70. package/dist/svelte/components/Loader.svelte +11 -0
  71. package/dist/svelte/components/Loader.svelte.d.ts +6 -0
  72. package/dist/svelte/components/MuteButton.svelte +57 -0
  73. package/dist/svelte/components/MuteButton.svelte.d.ts +8 -0
  74. package/dist/svelte/components/PlayButton.svelte +63 -0
  75. package/dist/svelte/components/PlayButton.svelte.d.ts +8 -0
  76. package/dist/svelte/components/Poster.svelte +13 -0
  77. package/dist/svelte/components/Poster.svelte.d.ts +8 -0
  78. package/dist/svelte/components/Progress.svelte +101 -0
  79. package/dist/svelte/components/Progress.svelte.d.ts +6 -0
  80. package/dist/svelte/components/TimeDisplay.svelte +33 -0
  81. package/dist/svelte/components/TimeDisplay.svelte.d.ts +7 -0
  82. package/dist/svelte/components/Volume.svelte +117 -0
  83. package/dist/svelte/components/Volume.svelte.d.ts +8 -0
  84. package/dist/svelte/context.d.ts +6 -0
  85. package/dist/svelte/context.js +10 -0
  86. package/dist/svelte/create-vide-player.svelte.d.ts +2 -0
  87. package/dist/svelte/create-vide-player.svelte.js +22 -0
  88. package/dist/svelte/helpers.d.ts +17 -0
  89. package/dist/svelte/helpers.js +31 -0
  90. package/dist/svelte/icons/IconFullscreenEnter.svelte +3 -0
  91. package/dist/svelte/icons/IconFullscreenEnter.svelte.d.ts +26 -0
  92. package/dist/svelte/icons/IconFullscreenExit.svelte +3 -0
  93. package/dist/svelte/icons/IconFullscreenExit.svelte.d.ts +26 -0
  94. package/dist/svelte/icons/IconPause.svelte +3 -0
  95. package/dist/svelte/icons/IconPause.svelte.d.ts +26 -0
  96. package/dist/svelte/icons/IconPlay.svelte +3 -0
  97. package/dist/svelte/icons/IconPlay.svelte.d.ts +26 -0
  98. package/dist/svelte/icons/IconVolumeHigh.svelte +3 -0
  99. package/dist/svelte/icons/IconVolumeHigh.svelte.d.ts +26 -0
  100. package/dist/svelte/icons/IconVolumeLow.svelte +3 -0
  101. package/dist/svelte/icons/IconVolumeLow.svelte.d.ts +26 -0
  102. package/dist/svelte/icons/IconVolumeMute.svelte +3 -0
  103. package/dist/svelte/icons/IconVolumeMute.svelte.d.ts +26 -0
  104. package/dist/svelte/index.d.ts +42 -0
  105. package/dist/svelte/index.js +39 -0
  106. package/dist/svelte/use-ad-state.svelte.d.ts +7 -0
  107. package/dist/svelte/use-ad-state.svelte.js +40 -0
  108. package/dist/svelte/use-autohide.svelte.d.ts +2 -0
  109. package/dist/svelte/use-autohide.svelte.js +68 -0
  110. package/dist/svelte/use-keyboard.svelte.d.ts +7 -0
  111. package/dist/svelte/use-keyboard.svelte.js +96 -0
  112. package/dist/svelte/use-plugin.svelte.d.ts +15 -0
  113. package/dist/svelte/use-plugin.svelte.js +40 -0
  114. package/dist/svelte/use-vide-event.svelte.d.ts +3 -0
  115. package/dist/svelte/use-vide-event.svelte.js +9 -0
  116. package/dist/{types-vxIcXgJz.d.ts → types-BsEF8iWC.d.ts} +106 -1
  117. package/dist/types-C1_eVsFF.d.ts +49 -0
  118. package/dist/types-C6XFF6w_.d.ts +30 -0
  119. package/dist/types-COeag8fU.d.ts +173 -0
  120. package/dist/types-CwjR99DL.d.ts +10 -0
  121. package/dist/types-DsixuzNX.d.ts +52 -0
  122. package/dist/types-DzY1cmXC.d.ts +10 -0
  123. package/dist/types-SuT99_Z3.d.ts +40 -0
  124. package/dist/ui/index.d.ts +7 -37
  125. package/dist/ui/index.js +1 -0
  126. package/dist/ui/index.mjs +1 -2
  127. package/dist/ui/theme.css +138 -46
  128. package/dist/vast/index.d.ts +188 -4
  129. package/dist/vast/index.js +1 -0
  130. package/dist/vast/index.mjs +1 -1
  131. package/dist/vide.core.global.js +1 -1
  132. package/dist/vide.global.js +2 -2
  133. package/dist/vide.ssai.global.js +1 -1
  134. package/dist/vide.ui.css +138 -46
  135. package/dist/vide.ui.global.js +1 -1
  136. package/dist/vide.vast.global.js +1 -1
  137. package/dist/vide.vmap.global.js +1 -1
  138. package/dist/vmap/index.d.ts +5 -49
  139. package/dist/vmap/index.js +1 -0
  140. package/dist/vmap/index.mjs +1 -1
  141. package/dist/vue/index.d.ts +354 -0
  142. package/dist/vue/index.js +2 -0
  143. package/dist/vue/index.mjs +2 -0
  144. package/package.json +46 -5
  145. package/dist/chunk-726XNUGZ.mjs +0 -1
  146. package/dist/chunk-G4Q7R3SH.mjs +0 -1
  147. package/dist/types-CAJmacV6.d.ts +0 -98
@@ -0,0 +1,240 @@
1
+ import { S as SsaiPluginOptions } from '../types-DsixuzNX.js';
2
+ import { a as VmapPluginOptions } from '../types-C1_eVsFF.js';
3
+ import { e as VastPluginOptions } from '../types-COeag8fU.js';
4
+ import { D as DrmPluginOptions } from '../types-C6XFF6w_.js';
5
+ import { D as DashPluginOptions } from '../types-DzY1cmXC.js';
6
+ import { H as HlsPluginOptions } from '../types-CwjR99DL.js';
7
+ import * as react from 'react';
8
+ import { ComponentPropsWithRef, ReactNode, ComponentPropsWithoutRef, RefObject } from 'react';
9
+ import * as react_jsx_runtime from 'react/jsx-runtime';
10
+ import { P as Player, c as PlayerEvent, b as EventHandler, d as PlayerEventMap, A as AdMeta } from '../types-BsEF8iWC.js';
11
+ import { b as UiPluginOptions } from '../types-SuT99_Z3.js';
12
+
13
+ interface VideUIProps extends ComponentPropsWithRef<"section"> {
14
+ children: ReactNode;
15
+ }
16
+ declare const VideUI: react.ForwardRefExoticComponent<Omit<VideUIProps, "ref"> & react.RefAttributes<HTMLElement>>;
17
+ interface VideControlsProps extends ComponentPropsWithRef<"div"> {
18
+ children: ReactNode;
19
+ }
20
+ declare function VideControls({ children, className, ...divProps }: VideControlsProps): react_jsx_runtime.JSX.Element | null;
21
+
22
+ interface VidePlayerHandle {
23
+ /** Player instance. `null` before `<Vide.Video>` mounts. */
24
+ readonly current: Player | null;
25
+ /** @internal Used by Vide.Root/Vide.Video to bind the media element. */
26
+ _registerEl: (el: HTMLVideoElement) => void;
27
+ }
28
+ /** @deprecated Use `VidePlayerHandle` instead. */
29
+ type UseVidePlayerHandle = VidePlayerHandle;
30
+ declare function useVidePlayer(): VidePlayerHandle;
31
+
32
+ declare function useVideEvent<K extends PlayerEvent>(target: VidePlayerHandle | Player | null, event: K, handler: EventHandler<PlayerEventMap[K]>): void;
33
+
34
+ declare function useHls(handle: VidePlayerHandle, options?: HlsPluginOptions): void;
35
+ declare function useDash(handle: VidePlayerHandle, options?: DashPluginOptions): void;
36
+ declare function useDrm(handle: VidePlayerHandle, options: DrmPluginOptions): void;
37
+ declare function useVast(handle: VidePlayerHandle, options: VastPluginOptions): void;
38
+ declare function useVmap(handle: VidePlayerHandle, options: VmapPluginOptions): void;
39
+ declare function useSsai(handle: VidePlayerHandle, options?: SsaiPluginOptions): void;
40
+ declare function useUi(handle: VidePlayerHandle, options: UiPluginOptions): void;
41
+
42
+ interface VideContextValue {
43
+ player: Player | null;
44
+ registerEl: (el: HTMLVideoElement) => void;
45
+ }
46
+ declare const VideContext: react.Context<VideContextValue | null>;
47
+ declare function useVideContext(): Player | null;
48
+
49
+ interface VideRootProps {
50
+ player: VidePlayerHandle;
51
+ children: ReactNode;
52
+ }
53
+ declare function VideRoot({ player: handle, children }: VideRootProps): react_jsx_runtime.JSX.Element;
54
+
55
+ interface VideVideoProps extends ComponentPropsWithoutRef<"video"> {
56
+ }
57
+ declare function VideVideo(videoProps: VideVideoProps): react_jsx_runtime.JSX.Element;
58
+
59
+ declare const HlsPlugin: {
60
+ (props: HlsPluginOptions): null;
61
+ displayName: string;
62
+ };
63
+ declare const DashPlugin: {
64
+ (props: DashPluginOptions): null;
65
+ displayName: string;
66
+ };
67
+ declare const DrmPlugin: {
68
+ (props: DrmPluginOptions): null;
69
+ displayName: string;
70
+ };
71
+ declare const VastPlugin: {
72
+ (props: VastPluginOptions): null;
73
+ displayName: string;
74
+ };
75
+ declare const VmapPlugin: {
76
+ (props: VmapPluginOptions): null;
77
+ displayName: string;
78
+ };
79
+ declare const SsaiPlugin: {
80
+ (props: SsaiPluginOptions): null;
81
+ displayName: string;
82
+ };
83
+
84
+ interface PlayButtonProps {
85
+ className?: string;
86
+ children?: ReactNode;
87
+ }
88
+ declare function PlayButton({ className, children }: PlayButtonProps): react_jsx_runtime.JSX.Element;
89
+
90
+ interface MuteButtonProps {
91
+ className?: string;
92
+ children?: ReactNode;
93
+ }
94
+ declare function MuteButton({ className, children }: MuteButtonProps): react_jsx_runtime.JSX.Element;
95
+
96
+ interface ProgressProps {
97
+ className?: string;
98
+ }
99
+ declare function Progress({ className }: ProgressProps): react_jsx_runtime.JSX.Element;
100
+
101
+ interface VolumeProps {
102
+ className?: string;
103
+ children?: ReactNode;
104
+ }
105
+ declare function Volume({ className, children }: VolumeProps): react_jsx_runtime.JSX.Element;
106
+
107
+ interface FullscreenButtonProps {
108
+ className?: string;
109
+ target?: HTMLElement | null;
110
+ children?: ReactNode;
111
+ }
112
+ declare function FullscreenButton({ className, target, children, }: FullscreenButtonProps): react_jsx_runtime.JSX.Element;
113
+
114
+ interface TimeDisplayProps {
115
+ className?: string;
116
+ separator?: string;
117
+ }
118
+ declare function TimeDisplay({ className, separator }: TimeDisplayProps): react_jsx_runtime.JSX.Element;
119
+
120
+ interface LoaderProps extends ComponentPropsWithoutRef<"div"> {
121
+ }
122
+ declare function Loader({ className, ...divProps }: LoaderProps): react_jsx_runtime.JSX.Element;
123
+
124
+ interface PosterProps extends ComponentPropsWithoutRef<"div"> {
125
+ src: string;
126
+ alt?: string;
127
+ }
128
+ declare function Poster({ src, alt, className, ...divProps }: PosterProps): react_jsx_runtime.JSX.Element;
129
+
130
+ interface ErrorDisplayProps {
131
+ className?: string;
132
+ }
133
+ declare function ErrorDisplay({ className }: ErrorDisplayProps): react_jsx_runtime.JSX.Element;
134
+
135
+ interface BigPlayButtonProps {
136
+ className?: string;
137
+ children?: ReactNode;
138
+ }
139
+ declare function BigPlayButton({ className, children }: BigPlayButtonProps): react_jsx_runtime.JSX.Element;
140
+
141
+ interface ClickPlayProps {
142
+ className?: string;
143
+ enableFullscreen?: boolean;
144
+ }
145
+ declare function ClickPlay({ className, enableFullscreen, }: ClickPlayProps): react_jsx_runtime.JSX.Element;
146
+
147
+ interface AdState {
148
+ active: boolean;
149
+ meta: AdMeta | null;
150
+ }
151
+ declare function useAdState(player: Player | null): AdState;
152
+
153
+ interface AdOverlayProps {
154
+ className?: string;
155
+ children?: ReactNode;
156
+ }
157
+ declare function AdOverlay({ className, children }: AdOverlayProps): react_jsx_runtime.JSX.Element | null;
158
+
159
+ interface AdSkipProps {
160
+ className?: string;
161
+ children?: ReactNode;
162
+ }
163
+ declare function AdSkip({ className, children }: AdSkipProps): react_jsx_runtime.JSX.Element | null;
164
+
165
+ interface AdCountdownProps {
166
+ className?: string;
167
+ format?: (remaining: number) => ReactNode;
168
+ }
169
+ declare function AdCountdown({ className, format }: AdCountdownProps): react_jsx_runtime.JSX.Element | null;
170
+
171
+ interface AdLabelProps {
172
+ className?: string;
173
+ children?: ReactNode;
174
+ }
175
+ declare function AdLabel({ className, children }: AdLabelProps): react_jsx_runtime.JSX.Element | null;
176
+
177
+ interface AdLearnMoreProps {
178
+ className?: string;
179
+ children?: ReactNode;
180
+ showTitle?: boolean;
181
+ }
182
+ declare function AdLearnMore({ className, children, showTitle, }: AdLearnMoreProps): react_jsx_runtime.JSX.Element | null;
183
+
184
+ declare function useAutohide(containerRef: RefObject<HTMLElement | null>, player: Player | null): void;
185
+
186
+ interface UseKeyboardOptions {
187
+ disableSeek?: boolean;
188
+ disableVolume?: boolean;
189
+ disableFullscreen?: boolean;
190
+ }
191
+ declare function useKeyboard(containerRef: RefObject<HTMLElement | null>, player: Player | null, options?: UseKeyboardOptions): void;
192
+
193
+ declare const Vide: {
194
+ readonly Root: typeof VideRoot;
195
+ readonly Video: typeof VideVideo;
196
+ readonly UI: react.ForwardRefExoticComponent<Omit<VideUIProps, "ref"> & react.RefAttributes<HTMLElement>>;
197
+ readonly Controls: typeof VideControls;
198
+ readonly HlsPlugin: {
199
+ (props: HlsPluginOptions): null;
200
+ displayName: string;
201
+ };
202
+ readonly DashPlugin: {
203
+ (props: DashPluginOptions): null;
204
+ displayName: string;
205
+ };
206
+ readonly DrmPlugin: {
207
+ (props: DrmPluginOptions): null;
208
+ displayName: string;
209
+ };
210
+ readonly VastPlugin: {
211
+ (props: VastPluginOptions): null;
212
+ displayName: string;
213
+ };
214
+ readonly VmapPlugin: {
215
+ (props: VmapPluginOptions): null;
216
+ displayName: string;
217
+ };
218
+ readonly SsaiPlugin: {
219
+ (props: SsaiPluginOptions): null;
220
+ displayName: string;
221
+ };
222
+ readonly PlayButton: typeof PlayButton;
223
+ readonly MuteButton: typeof MuteButton;
224
+ readonly Progress: typeof Progress;
225
+ readonly Volume: typeof Volume;
226
+ readonly FullscreenButton: typeof FullscreenButton;
227
+ readonly TimeDisplay: typeof TimeDisplay;
228
+ readonly Loader: typeof Loader;
229
+ readonly Poster: typeof Poster;
230
+ readonly ErrorDisplay: typeof ErrorDisplay;
231
+ readonly BigPlayButton: typeof BigPlayButton;
232
+ readonly ClickPlay: typeof ClickPlay;
233
+ readonly AdOverlay: typeof AdOverlay;
234
+ readonly AdSkip: typeof AdSkip;
235
+ readonly AdCountdown: typeof AdCountdown;
236
+ readonly AdLabel: typeof AdLabel;
237
+ readonly AdLearnMore: typeof AdLearnMore;
238
+ };
239
+
240
+ export { AdCountdown, type AdCountdownProps, AdLabel, type AdLabelProps, AdLearnMore, type AdLearnMoreProps, AdOverlay, type AdOverlayProps, AdSkip, type AdSkipProps, type AdState, BigPlayButton, type BigPlayButtonProps, ClickPlay, type ClickPlayProps, DashPlugin, DrmPlugin, ErrorDisplay, type ErrorDisplayProps, FullscreenButton, type FullscreenButtonProps, HlsPlugin, Loader, type LoaderProps, MuteButton, type MuteButtonProps, PlayButton, type PlayButtonProps, Poster, type PosterProps, Progress, type ProgressProps, SsaiPlugin, TimeDisplay, type TimeDisplayProps, type UseKeyboardOptions, type UseVidePlayerHandle, VastPlugin, Vide, VideContext, type VideContextValue, VideControls, type VideControlsProps, type VidePlayerHandle, VideRoot, type VideRootProps, VideUI, type VideUIProps, VideVideo, type VideVideoProps, VmapPlugin, Volume, type VolumeProps, useAdState, useAutohide, useDash, useDrm, useHls, useKeyboard, useSsai, useUi, useVast, useVideContext, useVideEvent, useVidePlayer, useVmap };
@@ -0,0 +1,2 @@
1
+ import {d as d$1}from'../chunk-2OVLZ27V.mjs';import {b as b$1,e,c,x}from'../chunk-LPSJOF2I.mjs';import {a}from'../chunk-6DWWYSH4.mjs';import {a as a$3}from'../chunk-3RDTWUHH.mjs';import {c as c$1}from'../chunk-WINCDUN5.mjs';import'../chunk-G74QBLVV.mjs';import'../chunk-UY5CGRNN.mjs';import {a as a$1}from'../chunk-NA4C7W64.mjs';import {a as a$2}from'../chunk-JRU2FKRB.mjs';import'../chunk-H3OXPFD3.mjs';import {e as e$1}from'../chunk-VPH4JIJV.mjs';import'../chunk-DWXOYV4E.mjs';import {createContext,forwardRef,useContext,useState,useEffect,useCallback,useRef,useMemo}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';function We(){let[r,t]=useState(null),e=useCallback(o=>{let i=a(o);t(i);},[]);return useEffect(()=>()=>{r?.destroy();},[r]),{current:r,_registerEl:e}}function Xe(r){return r===null?null:"_registerEl"in r?r.current:r}function f(r,t,e){let o=useRef(e);o.current=e;let i=Xe(r);useEffect(()=>{if(!i)return;let n=s=>o.current(s);return i.on(t,n),()=>i.off(t,n)},[i,t]);}function V(r,t,e){let o=useRef(e);o.current=e,useEffect(()=>{let i=r.current;if(!i)return;let s=t(o.current).setup(i);return ()=>{s?.();}},[r.current,t]);}function Je(r,t){V(r,a$1,t??{});}function Qe(r,t){V(r,a$2,t??{});}function Ze(r,t){V(r,e$1,t);}function et(r,t){V(r,a$3,t);}function tt(r,t){V(r,c$1,t);}function ot(r,t){V(r,d$1,t??{});}function rt(r,t){V(r,x,t);}var v=createContext(null);function d(){let r=useContext(v);if(r===null)throw new Error("useVideContext must be used within <Vide.Root>");return r.player}function Ce(){let r=useContext(v);if(r===null)throw new Error("Vide.Video must be used within <Vide.Root>");return r}function U({player:r,children:t}){let e=useMemo(()=>({player:r.current,registerEl:r._registerEl}),[r.current,r._registerEl]);return jsx(v.Provider,{value:e,children:t})}function z(r){let{registerEl:t}=Ce(),e=useCallback(o=>{o&&t(o);},[t]);return jsx("video",{ref:e,...r})}function Ee(...r){return r.filter(Boolean).join(" ")}var K=forwardRef(function({children:t,className:e,...o},i){let s=useContext(v)?.player??null,[a,l]=useState("");return useEffect(()=>{if(!s){l("");return}l(b$1(s.state));let m=({to:u})=>{l(b$1(u));};return s.on("statechange",m),()=>{s.off("statechange",m);}},[s]),jsx("section",{ref:i,className:Ee("vide-ui",a,e),"aria-label":"Video player",...o,children:t})});function W({children:r,className:t,...e}){return useContext(v)?.player?jsx("div",{className:Ee("vide-controls",t),...e,children:r}):null}function b(r,t){function e(o){let n=useContext(v)?.player??null,s=useRef(o);return s.current=o,useEffect(()=>{if(!n)return;let l=t(s.current).setup(n);return ()=>{l?.();}},[n,t]),null}return e.displayName=r,e}var q=b("HlsPlugin",a$1),G=b("DashPlugin",a$2),X=b("DrmPlugin",e$1),Y=b("VastPlugin",a$3),$=b("VmapPlugin",c$1),J=b("SsaiPlugin",d$1);var h={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:24,height:24,fill:"currentColor","aria-hidden":true};function H(){return jsx("svg",{...h,"aria-hidden":"true",children:jsx("path",{d:"M8 5v14l11-7z"})})}function Ne(){return jsx("svg",{...h,"aria-hidden":"true",children:jsx("path",{d:"M6 19h4V5H6v14zm8-14v14h4V5h-4z"})})}function w(){return jsx("svg",{...h,"aria-hidden":"true",children:jsx("path",{d:"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 D(){return jsx("svg",{...h,"aria-hidden":"true",children:jsx("path",{d:"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 T(){return jsx("svg",{...h,"aria-hidden":"true",children:jsx("path",{d:"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 Me(){return jsx("svg",{...h,"aria-hidden":"true",children:jsx("path",{d:"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"})})}function Re(){return jsx("svg",{...h,"aria-hidden":"true",children:jsx("path",{d:"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"})})}function Z({className:r,children:t}){let e=d(),[o,i]=useState(false);f(e,"statechange",({to:s})=>{s==="playing"||s==="ad:playing"?i(true):(s==="paused"||s==="ready"||s==="ended"||s==="ad:paused")&&i(false);});let n=useCallback(()=>{e&&(e.state==="playing"||e.state==="ad:playing"?e.pause():e.play().catch(()=>{}));},[e]);return jsx("button",{type:"button",className:["vide-play",r].filter(Boolean).join(" "),"aria-label":o?"Pause":"Play",onClick:n,"data-playing":o||void 0,children:t??(o?jsx(Ne,{}):jsx(H,{}))})}function ee({className:r,children:t}){let e=d(),[o,i]=useState(false),[n,s]=useState(1);useEffect(()=>{if(!e)return;let m=()=>{i(e.muted||e.volume===0),s(e.volume);};return e.el.addEventListener("volumechange",m),m(),()=>{e.el.removeEventListener("volumechange",m);}},[e]);let a=useCallback(()=>{e&&(e.muted=!e.muted);},[e]),l;return o?l=jsx(T,{}):n<.5?l=jsx(D,{}):l=jsx(w,{}),jsx("button",{type:"button",className:["vide-mute",r].filter(Boolean).join(" "),"aria-label":o?"Unmute":"Mute",onClick:a,"data-muted":o||void 0,children:t??l})}function re({className:r}){let t=d(),[e,o]=useState(0),[i,n]=useState(0),[s,a]=useState(false),l=useRef(false),m=useRef(null);f(t,"timeupdate",({currentTime:p,duration:c})=>{if(!l.current&&c>0&&o(p/c),t&&t.el.buffered.length>0&&c>0){let k=t.el.buffered.end(t.el.buffered.length-1);n(Math.min(1,k/c));}}),f(t,"statechange",({to:p})=>{a(p==="ad:loading"||p==="ad:playing"||p==="ad:paused");});let u=useCallback(p=>{if(!m.current)return 0;let c=m.current.getBoundingClientRect();return c.width===0?0:Math.max(0,Math.min(1,(p.clientX-c.left)/c.width))},[]),g=useCallback(p=>{!t||s||(l.current=true,m.current?.setPointerCapture(p.pointerId),o(u(p)));},[t,s,u]),O=useCallback(p=>{l.current&&o(u(p));},[u]),I=useCallback(p=>{if(!l.current||!t)return;l.current=false,m.current?.releasePointerCapture(p.pointerId);let c=u(p),k=t.el.duration;Number.isFinite(k)&&k>0&&(t.currentTime=c*k);},[t,u]);return jsxs("div",{ref:m,className:["vide-progress",r].filter(Boolean).join(" "),role:"slider",tabIndex:0,"aria-label":"Seek","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round(e*100),"data-disabled":s||void 0,style:{"--vide-progress":e,"--vide-progress-buffered":i},onPointerDown:g,onPointerMove:O,onPointerUp:I,children:[jsx("div",{className:"vide-progress__buffered"}),jsx("div",{className:"vide-progress__bar"}),jsx("div",{className:"vide-progress__handle"})]})}function ne({className:r,children:t}){let e=d(),[o,i]=useState(1),[n,s]=useState(false),a=useRef(false),l=useRef(null);useEffect(()=>{if(!e)return;let p=()=>{a.current||i(e.muted?0:e.volume),s(e.muted||e.volume===0);};return e.el.addEventListener("volumechange",p),p(),()=>{e.el.removeEventListener("volumechange",p);}},[e]);let m=useCallback(()=>{e&&(e.muted=!e.muted);},[e]),u=useCallback(p=>{if(!l.current)return 0;let c=l.current.getBoundingClientRect();return c.width===0?0:Math.max(0,Math.min(1,(p.clientX-c.left)/c.width))},[]),g=useCallback(p=>{if(!e)return;a.current=true,l.current?.setPointerCapture(p.pointerId);let c=u(p);e.volume=c,e.muted&&c>0&&(e.muted=false),i(c),s(c===0);},[e,u]),O=useCallback(p=>{if(!a.current||!e)return;let c=u(p);e.volume=c,e.muted&&c>0&&(e.muted=false),i(c),s(c===0);},[e,u]),I=useCallback(p=>{a.current&&(a.current=false,l.current?.releasePointerCapture(p.pointerId));},[]);return jsxs("div",{className:["vide-volume",r].filter(Boolean).join(" "),"data-muted":n||void 0,style:{"--vide-volume":o},children:[jsx("button",{type:"button",className:"vide-volume__button","aria-label":n?"Unmute":"Mute",onClick:m,children:t??(n?jsx(T,{}):o<.5?jsx(D,{}):jsx(w,{}))}),jsxs("div",{ref:l,className:"vide-volume__slider",role:"slider",tabIndex:0,"aria-label":"Volume","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round(o*100),onPointerDown:g,onPointerMove:O,onPointerUp:I,children:[jsx("div",{className:"vide-volume__track"}),jsx("div",{className:"vide-volume__filled"})]})]})}function se({className:r,target:t,children:e}){let o=d(),[i,n]=useState(false);useEffect(()=>{let a=()=>{n(document.fullscreenElement!=null||document.webkitFullscreenElement!=null);};return document.addEventListener("fullscreenchange",a),document.addEventListener("webkitfullscreenchange",a),()=>{document.removeEventListener("fullscreenchange",a),document.removeEventListener("webkitfullscreenchange",a);}},[]);let s=useCallback(()=>{let a=t??o?.el.closest(".vide-ui")??o?.el.parentElement;a&&(document.fullscreenElement?document.exitFullscreen().catch(()=>{}):a.requestFullscreen().catch(()=>{}));},[o,t]);return jsx("button",{type:"button",className:["vide-fullscreen",r].filter(Boolean).join(" "),"aria-label":i?"Exit fullscreen":"Fullscreen",onClick:s,"data-fullscreen":i||void 0,children:e??(i?jsx(Re,{}):jsx(Me,{}))})}function le({className:r,separator:t="/"}){let e$1=d(),[o,i]=useState(0),[n,s]=useState(0);return f(e$1,"timeupdate",a=>{i(a.currentTime),s(a.duration);}),jsxs("div",{className:["vide-time",r].filter(Boolean).join(" "),"aria-label":"Time",children:[jsx("span",{className:"vide-time__current",children:e(o)}),jsx("span",{className:"vide-time__separator",children:t}),jsx("span",{className:"vide-time__duration",children:e(n)})]})}function ue({className:r,...t}){return jsx("div",{className:["vide-loader",r].filter(Boolean).join(" "),...t,children:jsx("div",{className:"vide-loader__spinner"})})}function pe({src:r,alt:t="",className:e,...o}){return jsx("div",{className:["vide-poster",e].filter(Boolean).join(" "),...o,children:jsx("img",{className:"vide-poster__image",src:r,alt:t})})}function ce({className:r}){let t=useContext(v)?.player??null,[e,o]=useState("");return f(t,"error",({message:i})=>{o(i);}),jsx("div",{className:["vide-error",r].filter(Boolean).join(" "),children:jsx("span",{className:"vide-error__message",children:e})})}function me({className:r,children:t}){let e=useContext(v)?.player??null,o=useCallback(()=>{if(e){if(e.state==="ended"){let s=function({to:a}){a==="ready"&&(n.off("statechange",s),n.play().catch(()=>{}));};let n=e;n.on("statechange",s),n.el.currentTime=0,n.el.load();return}e.play().catch(()=>{});}},[e]);return jsx("button",{type:"button",className:["vide-bigplay",r].filter(Boolean).join(" "),"aria-label":"Play video",onClick:o,children:t??jsx(H,{})})}var At=200;function fe({className:r,enableFullscreen:t=true}){let e=useContext(v)?.player??null,o=useRef(null),i=useCallback(()=>{e&&(e.state==="playing"||e.state==="ad:playing"?e.pause():e.play().catch(()=>{}));},[e]),n=useCallback(()=>{if(!t)return;let a=e?.el.closest(".vide-ui")??e?.el.parentElement;a&&(document.fullscreenElement!=null?document.exitFullscreen().catch(()=>{}):a.requestFullscreen&&a.requestFullscreen().catch(()=>{}));},[e,t]),s=useCallback(()=>{if(e){if(c(e.state)){e.el.click(),i();return}if(o.current!==null){clearTimeout(o.current),o.current=null,n();return}o.current=setTimeout(()=>{o.current=null,i();},At);}},[e,i,n]);return jsx("div",{className:["vide-clickplay",r].filter(Boolean).join(" "),onClick:s,onKeyDown:a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),s());}})}function P(r){let[t,e]=useState({active:false,meta:null});return f(r,"ad:start",o=>{e({active:true,meta:{adId:o.adId,clickThrough:o.clickThrough,skipOffset:o.skipOffset,duration:o.duration,adTitle:o.adTitle,adStartTime:Date.now()}});}),f(r,"ad:end",()=>{e({active:false,meta:null});}),f(r,"ad:skip",()=>{e({active:false,meta:null});}),t}function ve({className:r,children:t}){let e=d(),{active:o,meta:i}=P(e),n=useCallback(()=>{if(!e)return;e.el.click();let s=i?.clickThrough;s?(window.open(s,"_blank"),e.el.pause()):e.el.paused?Promise.resolve(e.el.play()).catch(()=>{}):e.el.pause();},[e,i]);return !e||!o?null:jsx("div",{className:["vide-ad-overlay",r].filter(Boolean).join(" "),onClick:n,children:t})}function ye({className:r,children:t}){let e=d(),{active:o,meta:i}=P(e),[n,s]=useState(false),[a,l]=useState(0);f(e,"timeupdate",({currentTime:u})=>{!o||!i||i.skipOffset===void 0||(u>=i.skipOffset?s(true):(s(false),l(Math.max(0,Math.ceil(i.skipOffset-u)))));});let m=useCallback(()=>{!e||!n||!i||e.emit("ad:skip",{adId:i.adId});},[e,n,i]);return !e||!o||!i||i.skipOffset===void 0?null:jsx("button",{type:"button",className:["vide-skip",!n&&"vide-skip--disabled",r].filter(Boolean).join(" "),"aria-label":"Skip ad",onClick:m,disabled:!n,children:n?t??"Skip Ad":`Skip in ${a}s`})}function Pe({className:r,format:t}){let e=d(),{active:o,meta:i}=P(e),[n,s]=useState(0);return f(e,"timeupdate",({currentTime:a})=>{if(!o||!i)return;let l=i.duration??(e&&Number.isFinite(e.duration)?e.duration:0);s(Math.max(0,Math.ceil(l-a)));}),!e||!o?null:jsx("div",{className:["vide-ad-countdown",r].filter(Boolean).join(" "),children:t?t(n):`Ad \xB7 ${n}s`})}function ge({className:r,children:t}){let e=d(),{active:o}=P(e);return !e||!o?null:jsx("div",{className:["vide-ad-label",r].filter(Boolean).join(" "),children:t??"Ad"})}function xe({className:r,children:t,showTitle:e}){let o=d(),{active:i,meta:n}=P(o),s=useCallback(()=>{!o||!n?.clickThrough||(o.el.click(),window.open(n.clickThrough,"_blank"),o.el.pause());},[o,n]);return !o||!i||!n?.clickThrough?null:jsx("button",{type:"button",className:["vide-ad-cta",r].filter(Boolean).join(" "),onClick:s,children:e&&n.adTitle?jsxs(Fragment,{children:[jsx("span",{className:"vide-ad-cta__title",children:n.adTitle}),t??"Learn More"]}):t??"Learn More"})}var qt=3e3;function Gt(r,t){let e=useRef(null);useEffect(()=>{let o=r.current;if(!o||!t)return;function i(){if(!t)return true;let u=t.state;return u==="paused"||u==="ended"||u==="idle"||u==="ready"||c(u)}function n(){o?.classList.remove("vide-ui--autohide");}function s(){e.current!==null&&(clearTimeout(e.current),e.current=null);}function a(){s(),!i()&&(e.current=setTimeout(()=>{o?.classList.add("vide-ui--autohide");},qt));}function l(){n(),a();}function m({to:u}){u==="paused"||u==="ended"||u==="idle"||u==="ready"||c(u)?(s(),n()):a();}return o.addEventListener("mousemove",l),o.addEventListener("touchstart",l),o.addEventListener("keydown",l),t.on("statechange",m),a(),()=>{s(),o.removeEventListener("mousemove",l),o.removeEventListener("touchstart",l),o.removeEventListener("keydown",l),o.classList.remove("vide-ui--autohide"),t.off("statechange",m);}},[r,t]);}function Yt(r,t,e={}){useEffect(()=>{let o=r.current;if(!o||!t)return;o.setAttribute("tabindex","0");function i(n){if(!t)return;let s=!e.disableSeek,a=!e.disableVolume,l=!e.disableFullscreen,m=c(t.state);switch(n.key){case " ":case "k":case "K":n.preventDefault(),t.state==="playing"||t.state==="ad:playing"?t.pause():t.play().catch(()=>{});break;case "ArrowLeft":if(!s||m)return;n.preventDefault(),t.currentTime=Math.max(0,t.el.currentTime-5);break;case "ArrowRight":if(!s||m)return;n.preventDefault(),t.currentTime=Math.min(t.el.duration||0,t.el.currentTime+5);break;case "ArrowUp":if(!a)return;n.preventDefault(),t.volume=Math.min(1,t.volume+.1),t.muted&&(t.muted=false);break;case "ArrowDown":if(!a)return;n.preventDefault(),t.volume=Math.max(0,t.volume-.1);break;case "m":case "M":if(!a)return;n.preventDefault(),t.muted=!t.muted;break;case "f":case "F":if(!l)return;n.preventDefault(),document.fullscreenElement!=null?document.exitFullscreen().catch(()=>{}):(o?.closest(".vide-ui")??o)?.requestFullscreen().catch(()=>{});break;default:if(n.key.length===1&&n.key>="0"&&n.key<="9"&&s&&!m){n.preventDefault();let u=Number.parseInt(n.key,10)/10,g=t.el.duration;Number.isFinite(g)&&g>0&&(t.currentTime=u*g);}break}}return o.addEventListener("keydown",i),()=>{o.removeEventListener("keydown",i),o.removeAttribute("tabindex");}},[r,t,e.disableSeek,e.disableVolume,e.disableFullscreen]);}var Bn={Root:U,Video:z,UI:K,Controls:W,HlsPlugin:q,DashPlugin:G,DrmPlugin:X,VastPlugin:Y,VmapPlugin:$,SsaiPlugin:J,PlayButton:Z,MuteButton:ee,Progress:re,Volume:ne,FullscreenButton:se,TimeDisplay:le,Loader:ue,Poster:pe,ErrorDisplay:ce,BigPlayButton:me,ClickPlay:fe,AdOverlay:ve,AdSkip:ye,AdCountdown:Pe,AdLabel:ge,AdLearnMore:xe};
2
+ export{Pe as AdCountdown,ge as AdLabel,xe as AdLearnMore,ve as AdOverlay,ye as AdSkip,me as BigPlayButton,fe as ClickPlay,G as DashPlugin,X as DrmPlugin,ce as ErrorDisplay,se as FullscreenButton,q as HlsPlugin,ue as Loader,ee as MuteButton,Z as PlayButton,pe as Poster,re as Progress,J as SsaiPlugin,le as TimeDisplay,Y as VastPlugin,Bn as Vide,v as VideContext,W as VideControls,U as VideRoot,K as VideUI,z as VideVideo,$ as VmapPlugin,ne as Volume,P as useAdState,Gt as useAutohide,Qe as useDash,Ze as useDrm,Je as useHls,Yt as useKeyboard,ot as useSsai,rt as useUi,et as useVast,d as useVideContext,f as useVideEvent,We as useVidePlayer,tt as useVmap};
@@ -0,0 +1,2 @@
1
+ import {d as d$1}from'../chunk-2OVLZ27V.mjs';import {b as b$1,e,c,x}from'../chunk-LPSJOF2I.mjs';import {a}from'../chunk-6DWWYSH4.mjs';import {a as a$3}from'../chunk-3RDTWUHH.mjs';import {c as c$1}from'../chunk-WINCDUN5.mjs';import'../chunk-G74QBLVV.mjs';import'../chunk-UY5CGRNN.mjs';import {a as a$1}from'../chunk-NA4C7W64.mjs';import {a as a$2}from'../chunk-JRU2FKRB.mjs';import'../chunk-H3OXPFD3.mjs';import {e as e$1}from'../chunk-VPH4JIJV.mjs';import'../chunk-DWXOYV4E.mjs';import {createContext,forwardRef,useContext,useState,useEffect,useCallback,useRef,useMemo}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';function We(){let[r,t]=useState(null),e=useCallback(o=>{let i=a(o);t(i);},[]);return useEffect(()=>()=>{r?.destroy();},[r]),{current:r,_registerEl:e}}function Xe(r){return r===null?null:"_registerEl"in r?r.current:r}function f(r,t,e){let o=useRef(e);o.current=e;let i=Xe(r);useEffect(()=>{if(!i)return;let n=s=>o.current(s);return i.on(t,n),()=>i.off(t,n)},[i,t]);}function V(r,t,e){let o=useRef(e);o.current=e,useEffect(()=>{let i=r.current;if(!i)return;let s=t(o.current).setup(i);return ()=>{s?.();}},[r.current,t]);}function Je(r,t){V(r,a$1,t??{});}function Qe(r,t){V(r,a$2,t??{});}function Ze(r,t){V(r,e$1,t);}function et(r,t){V(r,a$3,t);}function tt(r,t){V(r,c$1,t);}function ot(r,t){V(r,d$1,t??{});}function rt(r,t){V(r,x,t);}var v=createContext(null);function d(){let r=useContext(v);if(r===null)throw new Error("useVideContext must be used within <Vide.Root>");return r.player}function Ce(){let r=useContext(v);if(r===null)throw new Error("Vide.Video must be used within <Vide.Root>");return r}function U({player:r,children:t}){let e=useMemo(()=>({player:r.current,registerEl:r._registerEl}),[r.current,r._registerEl]);return jsx(v.Provider,{value:e,children:t})}function z(r){let{registerEl:t}=Ce(),e=useCallback(o=>{o&&t(o);},[t]);return jsx("video",{ref:e,...r})}function Ee(...r){return r.filter(Boolean).join(" ")}var K=forwardRef(function({children:t,className:e,...o},i){let s=useContext(v)?.player??null,[a,l]=useState("");return useEffect(()=>{if(!s){l("");return}l(b$1(s.state));let m=({to:u})=>{l(b$1(u));};return s.on("statechange",m),()=>{s.off("statechange",m);}},[s]),jsx("section",{ref:i,className:Ee("vide-ui",a,e),"aria-label":"Video player",...o,children:t})});function W({children:r,className:t,...e}){return useContext(v)?.player?jsx("div",{className:Ee("vide-controls",t),...e,children:r}):null}function b(r,t){function e(o){let n=useContext(v)?.player??null,s=useRef(o);return s.current=o,useEffect(()=>{if(!n)return;let l=t(s.current).setup(n);return ()=>{l?.();}},[n,t]),null}return e.displayName=r,e}var q=b("HlsPlugin",a$1),G=b("DashPlugin",a$2),X=b("DrmPlugin",e$1),Y=b("VastPlugin",a$3),$=b("VmapPlugin",c$1),J=b("SsaiPlugin",d$1);var h={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:24,height:24,fill:"currentColor","aria-hidden":true};function H(){return jsx("svg",{...h,"aria-hidden":"true",children:jsx("path",{d:"M8 5v14l11-7z"})})}function Ne(){return jsx("svg",{...h,"aria-hidden":"true",children:jsx("path",{d:"M6 19h4V5H6v14zm8-14v14h4V5h-4z"})})}function w(){return jsx("svg",{...h,"aria-hidden":"true",children:jsx("path",{d:"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 D(){return jsx("svg",{...h,"aria-hidden":"true",children:jsx("path",{d:"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 T(){return jsx("svg",{...h,"aria-hidden":"true",children:jsx("path",{d:"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 Me(){return jsx("svg",{...h,"aria-hidden":"true",children:jsx("path",{d:"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"})})}function Re(){return jsx("svg",{...h,"aria-hidden":"true",children:jsx("path",{d:"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"})})}function Z({className:r,children:t}){let e=d(),[o,i]=useState(false);f(e,"statechange",({to:s})=>{s==="playing"||s==="ad:playing"?i(true):(s==="paused"||s==="ready"||s==="ended"||s==="ad:paused")&&i(false);});let n=useCallback(()=>{e&&(e.state==="playing"||e.state==="ad:playing"?e.pause():e.play().catch(()=>{}));},[e]);return jsx("button",{type:"button",className:["vide-play",r].filter(Boolean).join(" "),"aria-label":o?"Pause":"Play",onClick:n,"data-playing":o||void 0,children:t??(o?jsx(Ne,{}):jsx(H,{}))})}function ee({className:r,children:t}){let e=d(),[o,i]=useState(false),[n,s]=useState(1);useEffect(()=>{if(!e)return;let m=()=>{i(e.muted||e.volume===0),s(e.volume);};return e.el.addEventListener("volumechange",m),m(),()=>{e.el.removeEventListener("volumechange",m);}},[e]);let a=useCallback(()=>{e&&(e.muted=!e.muted);},[e]),l;return o?l=jsx(T,{}):n<.5?l=jsx(D,{}):l=jsx(w,{}),jsx("button",{type:"button",className:["vide-mute",r].filter(Boolean).join(" "),"aria-label":o?"Unmute":"Mute",onClick:a,"data-muted":o||void 0,children:t??l})}function re({className:r}){let t=d(),[e,o]=useState(0),[i,n]=useState(0),[s,a]=useState(false),l=useRef(false),m=useRef(null);f(t,"timeupdate",({currentTime:p,duration:c})=>{if(!l.current&&c>0&&o(p/c),t&&t.el.buffered.length>0&&c>0){let k=t.el.buffered.end(t.el.buffered.length-1);n(Math.min(1,k/c));}}),f(t,"statechange",({to:p})=>{a(p==="ad:loading"||p==="ad:playing"||p==="ad:paused");});let u=useCallback(p=>{if(!m.current)return 0;let c=m.current.getBoundingClientRect();return c.width===0?0:Math.max(0,Math.min(1,(p.clientX-c.left)/c.width))},[]),g=useCallback(p=>{!t||s||(l.current=true,m.current?.setPointerCapture(p.pointerId),o(u(p)));},[t,s,u]),O=useCallback(p=>{l.current&&o(u(p));},[u]),I=useCallback(p=>{if(!l.current||!t)return;l.current=false,m.current?.releasePointerCapture(p.pointerId);let c=u(p),k=t.el.duration;Number.isFinite(k)&&k>0&&(t.currentTime=c*k);},[t,u]);return jsxs("div",{ref:m,className:["vide-progress",r].filter(Boolean).join(" "),role:"slider",tabIndex:0,"aria-label":"Seek","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round(e*100),"data-disabled":s||void 0,style:{"--vide-progress":e,"--vide-progress-buffered":i},onPointerDown:g,onPointerMove:O,onPointerUp:I,children:[jsx("div",{className:"vide-progress__buffered"}),jsx("div",{className:"vide-progress__bar"}),jsx("div",{className:"vide-progress__handle"})]})}function ne({className:r,children:t}){let e=d(),[o,i]=useState(1),[n,s]=useState(false),a=useRef(false),l=useRef(null);useEffect(()=>{if(!e)return;let p=()=>{a.current||i(e.muted?0:e.volume),s(e.muted||e.volume===0);};return e.el.addEventListener("volumechange",p),p(),()=>{e.el.removeEventListener("volumechange",p);}},[e]);let m=useCallback(()=>{e&&(e.muted=!e.muted);},[e]),u=useCallback(p=>{if(!l.current)return 0;let c=l.current.getBoundingClientRect();return c.width===0?0:Math.max(0,Math.min(1,(p.clientX-c.left)/c.width))},[]),g=useCallback(p=>{if(!e)return;a.current=true,l.current?.setPointerCapture(p.pointerId);let c=u(p);e.volume=c,e.muted&&c>0&&(e.muted=false),i(c),s(c===0);},[e,u]),O=useCallback(p=>{if(!a.current||!e)return;let c=u(p);e.volume=c,e.muted&&c>0&&(e.muted=false),i(c),s(c===0);},[e,u]),I=useCallback(p=>{a.current&&(a.current=false,l.current?.releasePointerCapture(p.pointerId));},[]);return jsxs("div",{className:["vide-volume",r].filter(Boolean).join(" "),"data-muted":n||void 0,style:{"--vide-volume":o},children:[jsx("button",{type:"button",className:"vide-volume__button","aria-label":n?"Unmute":"Mute",onClick:m,children:t??(n?jsx(T,{}):o<.5?jsx(D,{}):jsx(w,{}))}),jsxs("div",{ref:l,className:"vide-volume__slider",role:"slider",tabIndex:0,"aria-label":"Volume","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round(o*100),onPointerDown:g,onPointerMove:O,onPointerUp:I,children:[jsx("div",{className:"vide-volume__track"}),jsx("div",{className:"vide-volume__filled"})]})]})}function se({className:r,target:t,children:e}){let o=d(),[i,n]=useState(false);useEffect(()=>{let a=()=>{n(document.fullscreenElement!=null||document.webkitFullscreenElement!=null);};return document.addEventListener("fullscreenchange",a),document.addEventListener("webkitfullscreenchange",a),()=>{document.removeEventListener("fullscreenchange",a),document.removeEventListener("webkitfullscreenchange",a);}},[]);let s=useCallback(()=>{let a=t??o?.el.closest(".vide-ui")??o?.el.parentElement;a&&(document.fullscreenElement?document.exitFullscreen().catch(()=>{}):a.requestFullscreen().catch(()=>{}));},[o,t]);return jsx("button",{type:"button",className:["vide-fullscreen",r].filter(Boolean).join(" "),"aria-label":i?"Exit fullscreen":"Fullscreen",onClick:s,"data-fullscreen":i||void 0,children:e??(i?jsx(Re,{}):jsx(Me,{}))})}function le({className:r,separator:t="/"}){let e$1=d(),[o,i]=useState(0),[n,s]=useState(0);return f(e$1,"timeupdate",a=>{i(a.currentTime),s(a.duration);}),jsxs("div",{className:["vide-time",r].filter(Boolean).join(" "),"aria-label":"Time",children:[jsx("span",{className:"vide-time__current",children:e(o)}),jsx("span",{className:"vide-time__separator",children:t}),jsx("span",{className:"vide-time__duration",children:e(n)})]})}function ue({className:r,...t}){return jsx("div",{className:["vide-loader",r].filter(Boolean).join(" "),...t,children:jsx("div",{className:"vide-loader__spinner"})})}function pe({src:r,alt:t="",className:e,...o}){return jsx("div",{className:["vide-poster",e].filter(Boolean).join(" "),...o,children:jsx("img",{className:"vide-poster__image",src:r,alt:t})})}function ce({className:r}){let t=useContext(v)?.player??null,[e,o]=useState("");return f(t,"error",({message:i})=>{o(i);}),jsx("div",{className:["vide-error",r].filter(Boolean).join(" "),children:jsx("span",{className:"vide-error__message",children:e})})}function me({className:r,children:t}){let e=useContext(v)?.player??null,o=useCallback(()=>{if(e){if(e.state==="ended"){let s=function({to:a}){a==="ready"&&(n.off("statechange",s),n.play().catch(()=>{}));};let n=e;n.on("statechange",s),n.el.currentTime=0,n.el.load();return}e.play().catch(()=>{});}},[e]);return jsx("button",{type:"button",className:["vide-bigplay",r].filter(Boolean).join(" "),"aria-label":"Play video",onClick:o,children:t??jsx(H,{})})}var At=200;function fe({className:r,enableFullscreen:t=true}){let e=useContext(v)?.player??null,o=useRef(null),i=useCallback(()=>{e&&(e.state==="playing"||e.state==="ad:playing"?e.pause():e.play().catch(()=>{}));},[e]),n=useCallback(()=>{if(!t)return;let a=e?.el.closest(".vide-ui")??e?.el.parentElement;a&&(document.fullscreenElement!=null?document.exitFullscreen().catch(()=>{}):a.requestFullscreen&&a.requestFullscreen().catch(()=>{}));},[e,t]),s=useCallback(()=>{if(e){if(c(e.state)){e.el.click(),i();return}if(o.current!==null){clearTimeout(o.current),o.current=null,n();return}o.current=setTimeout(()=>{o.current=null,i();},At);}},[e,i,n]);return jsx("div",{className:["vide-clickplay",r].filter(Boolean).join(" "),onClick:s,onKeyDown:a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),s());}})}function P(r){let[t,e]=useState({active:false,meta:null});return f(r,"ad:start",o=>{e({active:true,meta:{adId:o.adId,clickThrough:o.clickThrough,skipOffset:o.skipOffset,duration:o.duration,adTitle:o.adTitle,adStartTime:Date.now()}});}),f(r,"ad:end",()=>{e({active:false,meta:null});}),f(r,"ad:skip",()=>{e({active:false,meta:null});}),t}function ve({className:r,children:t}){let e=d(),{active:o,meta:i}=P(e),n=useCallback(()=>{if(!e)return;e.el.click();let s=i?.clickThrough;s?(window.open(s,"_blank"),e.el.pause()):e.el.paused?Promise.resolve(e.el.play()).catch(()=>{}):e.el.pause();},[e,i]);return !e||!o?null:jsx("div",{className:["vide-ad-overlay",r].filter(Boolean).join(" "),onClick:n,children:t})}function ye({className:r,children:t}){let e=d(),{active:o,meta:i}=P(e),[n,s]=useState(false),[a,l]=useState(0);f(e,"timeupdate",({currentTime:u})=>{!o||!i||i.skipOffset===void 0||(u>=i.skipOffset?s(true):(s(false),l(Math.max(0,Math.ceil(i.skipOffset-u)))));});let m=useCallback(()=>{!e||!n||!i||e.emit("ad:skip",{adId:i.adId});},[e,n,i]);return !e||!o||!i||i.skipOffset===void 0?null:jsx("button",{type:"button",className:["vide-skip",!n&&"vide-skip--disabled",r].filter(Boolean).join(" "),"aria-label":"Skip ad",onClick:m,disabled:!n,children:n?t??"Skip Ad":`Skip in ${a}s`})}function Pe({className:r,format:t}){let e=d(),{active:o,meta:i}=P(e),[n,s]=useState(0);return f(e,"timeupdate",({currentTime:a})=>{if(!o||!i)return;let l=i.duration??(e&&Number.isFinite(e.duration)?e.duration:0);s(Math.max(0,Math.ceil(l-a)));}),!e||!o?null:jsx("div",{className:["vide-ad-countdown",r].filter(Boolean).join(" "),children:t?t(n):`Ad \xB7 ${n}s`})}function ge({className:r,children:t}){let e=d(),{active:o}=P(e);return !e||!o?null:jsx("div",{className:["vide-ad-label",r].filter(Boolean).join(" "),children:t??"Ad"})}function xe({className:r,children:t,showTitle:e}){let o=d(),{active:i,meta:n}=P(o),s=useCallback(()=>{!o||!n?.clickThrough||(o.el.click(),window.open(n.clickThrough,"_blank"),o.el.pause());},[o,n]);return !o||!i||!n?.clickThrough?null:jsx("button",{type:"button",className:["vide-ad-cta",r].filter(Boolean).join(" "),onClick:s,children:e&&n.adTitle?jsxs(Fragment,{children:[jsx("span",{className:"vide-ad-cta__title",children:n.adTitle}),t??"Learn More"]}):t??"Learn More"})}var qt=3e3;function Gt(r,t){let e=useRef(null);useEffect(()=>{let o=r.current;if(!o||!t)return;function i(){if(!t)return true;let u=t.state;return u==="paused"||u==="ended"||u==="idle"||u==="ready"||c(u)}function n(){o?.classList.remove("vide-ui--autohide");}function s(){e.current!==null&&(clearTimeout(e.current),e.current=null);}function a(){s(),!i()&&(e.current=setTimeout(()=>{o?.classList.add("vide-ui--autohide");},qt));}function l(){n(),a();}function m({to:u}){u==="paused"||u==="ended"||u==="idle"||u==="ready"||c(u)?(s(),n()):a();}return o.addEventListener("mousemove",l),o.addEventListener("touchstart",l),o.addEventListener("keydown",l),t.on("statechange",m),a(),()=>{s(),o.removeEventListener("mousemove",l),o.removeEventListener("touchstart",l),o.removeEventListener("keydown",l),o.classList.remove("vide-ui--autohide"),t.off("statechange",m);}},[r,t]);}function Yt(r,t,e={}){useEffect(()=>{let o=r.current;if(!o||!t)return;o.setAttribute("tabindex","0");function i(n){if(!t)return;let s=!e.disableSeek,a=!e.disableVolume,l=!e.disableFullscreen,m=c(t.state);switch(n.key){case " ":case "k":case "K":n.preventDefault(),t.state==="playing"||t.state==="ad:playing"?t.pause():t.play().catch(()=>{});break;case "ArrowLeft":if(!s||m)return;n.preventDefault(),t.currentTime=Math.max(0,t.el.currentTime-5);break;case "ArrowRight":if(!s||m)return;n.preventDefault(),t.currentTime=Math.min(t.el.duration||0,t.el.currentTime+5);break;case "ArrowUp":if(!a)return;n.preventDefault(),t.volume=Math.min(1,t.volume+.1),t.muted&&(t.muted=false);break;case "ArrowDown":if(!a)return;n.preventDefault(),t.volume=Math.max(0,t.volume-.1);break;case "m":case "M":if(!a)return;n.preventDefault(),t.muted=!t.muted;break;case "f":case "F":if(!l)return;n.preventDefault(),document.fullscreenElement!=null?document.exitFullscreen().catch(()=>{}):(o?.closest(".vide-ui")??o)?.requestFullscreen().catch(()=>{});break;default:if(n.key.length===1&&n.key>="0"&&n.key<="9"&&s&&!m){n.preventDefault();let u=Number.parseInt(n.key,10)/10,g=t.el.duration;Number.isFinite(g)&&g>0&&(t.currentTime=u*g);}break}}return o.addEventListener("keydown",i),()=>{o.removeEventListener("keydown",i),o.removeAttribute("tabindex");}},[r,t,e.disableSeek,e.disableVolume,e.disableFullscreen]);}var Bn={Root:U,Video:z,UI:K,Controls:W,HlsPlugin:q,DashPlugin:G,DrmPlugin:X,VastPlugin:Y,VmapPlugin:$,SsaiPlugin:J,PlayButton:Z,MuteButton:ee,Progress:re,Volume:ne,FullscreenButton:se,TimeDisplay:le,Loader:ue,Poster:pe,ErrorDisplay:ce,BigPlayButton:me,ClickPlay:fe,AdOverlay:ve,AdSkip:ye,AdCountdown:Pe,AdLabel:ge,AdLearnMore:xe};
2
+ export{Pe as AdCountdown,ge as AdLabel,xe as AdLearnMore,ve as AdOverlay,ye as AdSkip,me as BigPlayButton,fe as ClickPlay,G as DashPlugin,X as DrmPlugin,ce as ErrorDisplay,se as FullscreenButton,q as HlsPlugin,ue as Loader,ee as MuteButton,Z as PlayButton,pe as Poster,re as Progress,J as SsaiPlugin,le as TimeDisplay,Y as VastPlugin,Bn as Vide,v as VideContext,W as VideControls,U as VideRoot,K as VideUI,z as VideVideo,$ as VmapPlugin,ne as Volume,P as useAdState,Gt as useAutohide,Qe as useDash,Ze as useDrm,Je as useHls,Yt as useKeyboard,ot as useSsai,rt as useUi,et as useVast,d as useVideContext,f as useVideEvent,We as useVidePlayer,tt as useVmap};
@@ -1,5 +1,5 @@
1
- import { b as AdPlugin } from '../types-CAJmacV6.js';
2
- import '../types-vxIcXgJz.js';
1
+ import { A as AdPlugin } from '../types-COeag8fU.js';
2
+ import '../types-BsEF8iWC.js';
3
3
 
4
4
  interface SimidPluginOptions {
5
5
  /** Container element to mount the SIMID iframe into. */
@@ -0,0 +1 @@
1
+ function k(t,r){let i=document.createElement("iframe");i.sandbox.add("allow-scripts","allow-same-origin"),i.style.cssText="position:absolute;top:0;left:0;width:100%;height:100%;border:none;display:none;pointer-events:auto;",i.src=t;let a=new MessageChannel,o=a.port1,l=()=>{i.contentWindow?.postMessage("simid:connect","*",[a.port2]);};i.addEventListener("load",l,{once:true}),r.appendChild(i);let m=false;return {iframe:i,port:o,show(){m||(i.style.display="");},destroy(){m||(m=true,i.removeEventListener("load",l),i.remove(),o.close());}}}function h(t,r,i,a){return {sessionId:t,messageId:r,timestamp:Date.now(),type:i,args:a}}function j(t,r,i,a){let o={messageId:i};return a!==void 0&&(o.value=a),h(t,r,"resolve",o)}function T(t,r,i,a,o){let l={errorCode:a};return o!==void 0&&(l.message=o),h(t,r,"reject",{messageId:i,value:l})}function b(t){if(typeof t!="object"||t===null)return null;let r=t;return typeof r.sessionId!="string"||typeof r.messageId!="number"||typeof r.timestamp!="number"||typeof r.type!="string"?null:{sessionId:r.sessionId,messageId:r.messageId,timestamp:r.timestamp,type:r.type,args:r.args}}function x(t){return t.type==="createSession"}function C(t){return t.type==="resolve"}function y(t){return t.type==="reject"}function L(t,r,i,a){let o=false,l="",m=0,f=[],d=new Map;function w(){return m++}function S(e,n){let s=w(),u=h(l,s,e,n);return r.postMessage(u),s}function g(e,n){let s=w();r.postMessage(j(l,s,e,n));}function M(e,n,s){let u=w();r.postMessage(T(l,u,e,n,s));}function P(e,n,s){return new Promise((u,c)=>{let v=S(e,n),I=setTimeout(()=>{d.delete(v),c(new Error(`SIMID timeout waiting for response to ${e}`));},i.handshakeTimeout);d.set(v,{resolve:p=>{clearTimeout(I),d.delete(v),u(p);},reject:p=>{clearTimeout(I),d.delete(v),c(p);}});})}function q(){let e=t.el.getBoundingClientRect();return {x:Math.round(e.x),y:Math.round(e.y),width:Math.round(e.width),height:Math.round(e.height)}}function A(){let e=q();return {videoDimensions:e,creativeDimensions:e,fullscreen:!!document.fullscreenElement,fullscreenAllowed:!!document.fullscreenEnabled,variableDurationAllowed:false,skippableState:"playerHandles",version:"1.2",muted:t.muted,volume:t.volume,navigationSupport:i.policy.navigation==="new-tab"?"playerHandles":"notSupported"}}function N(){return {adParameters:"",clickThruUrl:a.creatives[0]?.linear?.clickThrough}}function O(){return {currentTime:t.el.currentTime,duration:t.el.duration,ended:t.el.ended,muted:t.muted,paused:t.el.paused,volume:t.volume,fullscreen:!!document.fullscreenElement}}function H(){let e=t.el,n=["play","pause","playing","ended","seeking","seeked","stalled"];for(let I of n){let p=()=>{o||S(`SIMID:Media:${I}`);};e.addEventListener(I,p),f.push(()=>e.removeEventListener(I,p));}let s=()=>{o||S("SIMID:Media:timeupdate",{currentTime:e.currentTime});};e.addEventListener("timeupdate",s),f.push(()=>e.removeEventListener("timeupdate",s));let u=()=>{o||S("SIMID:Media:durationchange",{duration:e.duration});};e.addEventListener("durationchange",u),f.push(()=>e.removeEventListener("durationchange",u));let c=()=>{o||S("SIMID:Media:volumechange",{volume:e.volume,muted:e.muted});};e.addEventListener("volumechange",c),f.push(()=>e.removeEventListener("volumechange",c));let v=()=>{o||S("SIMID:Media:error",{error:e.error?.code??0,message:e.error?.message??""});};e.addEventListener("error",v),f.push(()=>e.removeEventListener("error",v));}function V(e){if(o)return;if(C(e)||y(e)){let u=e.args?.messageId;if(u!==void 0){let c=d.get(u);c&&(C(e)?c.resolve(e):c.reject(new Error(`SIMID creative rejected: ${JSON.stringify(e.args)}`)));}return}let n=e.type;if(n==="SIMID:Creative:requestPause"){i.policy.allowPause?(t.pause(),g(e.messageId)):M(e.messageId,1203,"Pause not allowed");return}if(n==="SIMID:Creative:requestPlay"){i.policy.allowPlay?(t.play(),g(e.messageId)):M(e.messageId,1203,"Play not allowed");return}if(n==="SIMID:Creative:requestResize"){i.policy.allowResize?g(e.messageId):M(e.messageId,1203,"Resize not allowed");return}if(n==="SIMID:Creative:requestNavigation"){let s=e.args;i.policy.navigation==="new-tab"&&s?.uri?(window.open(s.uri,"_blank"),g(e.messageId)):M(e.messageId,1214,"Navigation not supported");return}if(n==="SIMID:Creative:getMediaState"){g(e.messageId,O());return}if(n==="SIMID:Creative:requestSkip"){g(e.messageId),t.emit("ad:skip",{adId:a.id});return}if(n==="SIMID:Creative:requestStop"){g(e.messageId),S("SIMID:Player:adStopped",{code:4}),D(),t.emit("ad:skip",{adId:a.id});return}if(n!=="SIMID:Creative:clickThru"){if(n==="SIMID:Creative:fatalError"){t.emit("ad:error",{error:new Error(`SIMID creative fatal error: ${JSON.stringify(e.args)}`),source:"simid"}),D();return}if(n==="SIMID:Creative:log"){let s=e.args;console.debug("[vide:simid] creative:",s?.message);return}if(n==="SIMID:Creative:reportTracking"){g(e.messageId);return}if(n==="SIMID:Creative:requestChangeVolume"){let s=e.args;s?.volume!==void 0&&(t.volume=s.volume),s?.muted!==void 0&&(t.muted=s.muted),g(e.messageId);return}if(n==="SIMID:Creative:requestFullscreen"||n==="SIMID:Creative:requestExitFullscreen"||n==="SIMID:Creative:requestChangeAdDuration"){M(e.messageId,1203,"Not supported");return}if(n==="SIMID:Creative:expandNonlinear"||n==="SIMID:Creative:collapseNonlinear"){M(e.messageId,1203,"Not supported");return}}}function R(e){let n=b(e.data);n&&V(n);}function D(){if(!o){o=true,r.removeEventListener("message",R);for(let e of f)e();f.length=0;for(let[,e]of d)e.reject(new Error("SIMID host destroyed"));d.clear();}}async function F(){r.addEventListener("message",R),r.start();let e=await new Promise((u,c)=>{let v=setTimeout(()=>{c(new Error("SIMID handshake timeout: no createSession"));},i.handshakeTimeout),I=p=>{let E=b(p.data);!E||!x(E)||(clearTimeout(v),r.removeEventListener("message",I),u(E));};r.addEventListener("message",I);});if(o)throw new Error("SIMID host destroyed during handshake");l=e.sessionId,g(e.messageId);let n=await P("SIMID:Player:init",{environmentData:A(),creativeData:N()});if(o)throw new Error("SIMID host destroyed during handshake");if(y(n))throw new Error(`SIMID creative rejected init: ${JSON.stringify(n.args)}`);let s=await P("SIMID:Player:startCreative");if(o)throw new Error("SIMID host destroyed during handshake");if(y(s))throw new Error(`SIMID creative rejected startCreative: ${JSON.stringify(s.args)}`);H();}return {start:F,destroy:D}}var z={allowPause:true,allowPlay:true,allowResize:false,navigation:"new-tab"};function G(t){return {name:"simid",setup(r,i){let a=i.creatives.flatMap(d=>d.linear?.interactiveCreativeFiles??[]).find(d=>d.apiFramework==="SIMID");if(!a)return;let o={...z,...t.policy},l=t.handshakeTimeout??5e3,m=k(a.url,t.container),f=L(r,m.port,{policy:o,handshakeTimeout:l},i);return f.start().then(()=>m.show()).catch(d=>{r.emit("ad:error",{error:d instanceof Error?d:new Error(String(d)),source:"simid"}),m.destroy();}),()=>{f.destroy(),m.destroy();}}}}export{G as simid};
@@ -1,42 +1,6 @@
1
- import { e as Plugin } from '../types-vxIcXgJz.js';
2
-
3
- /** Parsed ad break metadata from stream signals. */
4
- interface AdBreakMetadata {
5
- id: string;
6
- /** Absolute start time in seconds relative to stream timeline. */
7
- startTime: number;
8
- /** Duration of the ad break in seconds. */
9
- duration: number;
10
- trackingUrls?: string[];
11
- clickThrough?: string;
12
- customData?: Record<string, string>;
13
- }
14
- /** Discriminated union of raw metadata from different stream sources. */
15
- type RawMetadata = {
16
- source: "daterange";
17
- attributes: Record<string, string>;
18
- } | {
19
- source: "id3";
20
- samples: Array<{
21
- type: string;
22
- data: Uint8Array;
23
- }>;
24
- } | {
25
- source: "eventstream";
26
- schemeIdUri: string;
27
- value: string;
28
- startTime: number;
29
- duration: number;
30
- messageData?: string | undefined;
31
- };
32
- /** Custom parser: receives raw metadata, returns zero or more ad breaks. */
33
- type MetadataParser = (raw: RawMetadata) => AdBreakMetadata[];
34
- interface SsaiPluginOptions {
35
- /** Custom metadata parser. Overrides default auto-detection. */
36
- parser?: MetadataParser;
37
- /** Tolerance in seconds for time-based ad break matching. Default: 0.5. */
38
- tolerance?: number;
39
- }
1
+ import { f as Plugin } from '../types-BsEF8iWC.js';
2
+ import { A as AdBreakMetadata, S as SsaiPluginOptions } from '../types-DsixuzNX.js';
3
+ export { a as AdTrackingMap, M as MetadataParser, R as RawMetadata } from '../types-DsixuzNX.js';
40
4
 
41
5
  /**
42
6
  * Parse a DATERANGE into an ad break. Returns null if not an ad marker.
@@ -58,4 +22,4 @@ declare function parseEventStream(schemeIdUri: string, value: string, startTime:
58
22
  /** Create an SSAI (Server-Side Ad Insertion) plugin for vide. */
59
23
  declare function ssai(options?: SsaiPluginOptions): Plugin;
60
24
 
61
- export { type AdBreakMetadata, type MetadataParser, type RawMetadata, type SsaiPluginOptions, parseDateRange, parseEventStream, parseId3Samples, ssai };
25
+ export { AdBreakMetadata, SsaiPluginOptions, parseDateRange, parseEventStream, parseId3Samples, ssai };
@@ -0,0 +1 @@
1
+ export{b as parseDateRange,a as parseEventStream,c as parseId3Samples,d as ssai}from'../chunk-2OVLZ27V.mjs';import'../chunk-UY5CGRNN.mjs';
@@ -1 +1 @@
1
- import {a}from'../chunk-G4Q7R3SH.mjs';var w="urn:scte:scte35:2013:xml",A="urn:scte:scte35:2014:xml+bin";function k(e,t,r,i,l,g){return e===w||e===A||e.startsWith("urn:scte:scte35:")?{id:g??`dash-event-${r}`,startTime:r,duration:i,customData:{schemeIdUri:e,value:t,...l?{messageData:l}:{}}}:null}function D(e,t,r){function i(l){let a=l?.event;if(a)if(t){let n={source:"eventstream",schemeIdUri:a.schemeIdUri,value:a.value,startTime:a.calculatedPresentationTime,duration:a.duration,messageData:a.messageData},o=t(n);o.length>0&&r(o);}else {let n=k(a.schemeIdUri,a.value,a.calculatedPresentationTime,a.duration,a.messageData,a.id);n&&r([n]);}}return e.on("eventModeOnReceive",i),e.on("eventModeOnStart",i),()=>{e.off("eventModeOnReceive",i),e.off("eventModeOnStart",i);}}var R="com.apple.hls.interstitial",b="SCTE35-OUT";function M(e,t){let r=e.ID;if(!r)return null;let l=e.CLASS===R,g=b in e;if(!l&&!g)return null;let a=e["START-DATE"],n=e.DURATION??e["PLANNED-DURATION"],o=0;if(a){let v=new Date(a).getTime();o=t!=null?(v-t)/1e3:v/1e3;}let u=n?Number.parseFloat(n):0;return {id:r,startTime:o,duration:u,customData:{...e}}}function L(e){try{return new TextDecoder().decode(e)}catch{return null}}function S(e,t){for(let r of e){let i=L(r.data);if(i?.includes("SCTE35"))return {id:`id3-${t}`,startTime:t,duration:0,customData:{raw:i}}}return null}function T(e,t,r){let i=new Set;function l(n){let o=n?.dateRanges;if(!o)return;let u,v=n?.fragments;if(v){for(let f of v)if(f.programDateTime!=null){u=f.programDateTime-f.start*1e3;break}}for(let[f,m]of Object.entries(o)){if(i.has(f))continue;i.add(f);let d=m.attr??m;if(t){let c=t({source:"daterange",attributes:d});c.length>0&&r(c);}else {let s=M(d,u);s&&r([s]);}}}function g(n,o){let u=o;u?.details&&l(u.details);}function a(n,o){let u=o;if(!u?.samples?.length)return;let v=u.samples[0]?.pts??0;if(t){let f={source:"id3",samples:u.samples.map(d=>({type:d.type,data:d.data}))},m=t(f);m.length>0&&r(m);}else {let f=u.samples.map(d=>({type:d.type,data:d.data})),m=S(f,v);m&&r([m]);}}if(e.on("hlsLevelUpdated",g),e.on("hlsFragParsingMetadata",a),e.levels&&e.currentLevel!=null&&e.currentLevel>=0){let n=e.levels[e.currentLevel]?.details;n&&l(n);}return ()=>{e.off("hlsLevelUpdated",g),e.off("hlsFragParsingMetadata",a);}}var E=.5;function B(e={}){return {name:"ssai",setup(t){let r=e.tolerance??E,i=e.parser,l=new Map,g=new Set,a$1=new Set,n=null,o=false;function u(d){for(let s of d)l.has(s.id)||l.set(s.id,s);}function v(){if(n)return true;let d=t.getPluginData("hls");if(d)return n=T(d,i,u),true;let s=t.getPluginData("dash");return s?(n=D(s,i,u),true):false}function f({currentTime:d}){if(!o){for(let[s,c]of l)g.has(s)||d>=c.startTime-r&&(g.add(s),t.emit("ad:breakStart",{breakId:c.id}),t.emit("ad:start",{adId:c.id}),c.trackingUrls?.length&&a(c.trackingUrls),t.emit("ad:impression",{adId:c.id}));for(let[s,c]of l){if(!g.has(s)||a$1.has(s))continue;let h=c.startTime+c.duration;c.duration>0&&d>=h-r&&(a$1.add(s),t.emit("ad:end",{adId:c.id}),t.emit("ad:breakEnd",{breakId:c.id}));}}}t.on("timeupdate",f),v();function m(){if(n||o){t.off("statechange",m);return}v()&&t.off("statechange",m);}return n||t.on("statechange",m),()=>{o=true,t.off("timeupdate",f),t.off("statechange",m),n&&n();}}}}export{M as parseDateRange,k as parseEventStream,S as parseId3Samples,B as ssai};
1
+ export{b as parseDateRange,a as parseEventStream,c as parseId3Samples,d as ssai}from'../chunk-2OVLZ27V.mjs';import'../chunk-UY5CGRNN.mjs';
@@ -0,0 +1,23 @@
1
+ <script lang="ts">
2
+ import { getContext } from "svelte";
3
+ import { dash } from "../dash/index.js";
4
+ import type { DashPluginOptions } from "../dash/types.js";
5
+ import { type PlayerGetter, VIDE_PLAYER_KEY } from "./context.js";
6
+
7
+ const { dashConfig, recovery }: DashPluginOptions = $props();
8
+
9
+ const getPlayer = getContext<PlayerGetter>(VIDE_PLAYER_KEY);
10
+
11
+ $effect(() => {
12
+ const p = getPlayer();
13
+ if (!p) return;
14
+ const opts: DashPluginOptions = {};
15
+ if (dashConfig !== undefined) opts.dashConfig = dashConfig;
16
+ if (recovery !== undefined) opts.recovery = recovery;
17
+ const plugin = dash(opts);
18
+ const cleanup = plugin.setup(p);
19
+ return () => {
20
+ cleanup?.();
21
+ };
22
+ });
23
+ </script>
@@ -0,0 +1,4 @@
1
+ import type { DashPluginOptions } from "../dash/types.js";
2
+ declare const DashPlugin: import("svelte").Component<DashPluginOptions, {}, "">;
3
+ type DashPlugin = ReturnType<typeof DashPlugin>;
4
+ export default DashPlugin;
@@ -0,0 +1,20 @@
1
+ <script lang="ts">
2
+ import { getContext } from "svelte";
3
+ import { drm } from "../drm/index.js";
4
+ import type { DrmPluginOptions } from "../drm/types.js";
5
+ import { type PlayerGetter, VIDE_PLAYER_KEY } from "./context.js";
6
+
7
+ const { widevine, fairplay }: DrmPluginOptions = $props();
8
+
9
+ const getPlayer = getContext<PlayerGetter>(VIDE_PLAYER_KEY);
10
+
11
+ $effect(() => {
12
+ const p = getPlayer();
13
+ if (!p) return;
14
+ const plugin = drm({ widevine, fairplay });
15
+ const cleanup = plugin.setup(p);
16
+ return () => {
17
+ cleanup?.();
18
+ };
19
+ });
20
+ </script>
@@ -0,0 +1,4 @@
1
+ import type { DrmPluginOptions } from "../drm/types.js";
2
+ declare const DrmPlugin: import("svelte").Component<DrmPluginOptions, {}, "">;
3
+ type DrmPlugin = ReturnType<typeof DrmPlugin>;
4
+ export default DrmPlugin;
@@ -0,0 +1,23 @@
1
+ <script lang="ts">
2
+ import { getContext } from "svelte";
3
+ import { hls } from "../hls/index.js";
4
+ import type { HlsPluginOptions } from "../hls/types.js";
5
+ import { type PlayerGetter, VIDE_PLAYER_KEY } from "./context.js";
6
+
7
+ const { hlsConfig, recovery }: HlsPluginOptions = $props();
8
+
9
+ const getPlayer = getContext<PlayerGetter>(VIDE_PLAYER_KEY);
10
+
11
+ $effect(() => {
12
+ const p = getPlayer();
13
+ if (!p) return;
14
+ const opts: HlsPluginOptions = {};
15
+ if (hlsConfig !== undefined) opts.hlsConfig = hlsConfig;
16
+ if (recovery !== undefined) opts.recovery = recovery;
17
+ const plugin = hls(opts);
18
+ const cleanup = plugin.setup(p);
19
+ return () => {
20
+ cleanup?.();
21
+ };
22
+ });
23
+ </script>
@@ -0,0 +1,4 @@
1
+ import type { HlsPluginOptions } from "../hls/types.js";
2
+ declare const HlsPlugin: import("svelte").Component<HlsPluginOptions, {}, "">;
3
+ type HlsPlugin = ReturnType<typeof HlsPlugin>;
4
+ export default HlsPlugin;
@@ -0,0 +1,23 @@
1
+ <script lang="ts">
2
+ import { getContext } from "svelte";
3
+ import { ssai } from "../ssai/index.js";
4
+ import type { SsaiPluginOptions } from "../ssai/types.js";
5
+ import { type PlayerGetter, VIDE_PLAYER_KEY } from "./context.js";
6
+
7
+ const { tolerance, parser }: SsaiPluginOptions = $props();
8
+
9
+ const getPlayer = getContext<PlayerGetter>(VIDE_PLAYER_KEY);
10
+
11
+ $effect(() => {
12
+ const p = getPlayer();
13
+ if (!p) return;
14
+ const opts: SsaiPluginOptions = {};
15
+ if (tolerance !== undefined) opts.tolerance = tolerance;
16
+ if (parser !== undefined) opts.parser = parser;
17
+ const plugin = ssai(opts);
18
+ const cleanup = plugin.setup(p);
19
+ return () => {
20
+ cleanup?.();
21
+ };
22
+ });
23
+ </script>
@@ -0,0 +1,4 @@
1
+ import type { SsaiPluginOptions } from "../ssai/types.js";
2
+ declare const SsaiPlugin: import("svelte").Component<SsaiPluginOptions, {}, "">;
3
+ type SsaiPlugin = ReturnType<typeof SsaiPlugin>;
4
+ export default SsaiPlugin;
@@ -0,0 +1,20 @@
1
+ <script lang="ts">
2
+ import { getContext } from "svelte";
3
+ import { vast } from "../vast/index.js";
4
+ import type { VastPluginOptions } from "../vast/types.js";
5
+ import { type PlayerGetter, VIDE_PLAYER_KEY } from "./context.js";
6
+
7
+ const { tagUrl, timeout, allowSkip, adPlugins }: VastPluginOptions = $props();
8
+
9
+ const getPlayer = getContext<PlayerGetter>(VIDE_PLAYER_KEY);
10
+
11
+ $effect(() => {
12
+ const p = getPlayer();
13
+ if (!p) return;
14
+ const plugin = vast({ tagUrl, timeout, allowSkip, adPlugins });
15
+ const cleanup = plugin.setup(p);
16
+ return () => {
17
+ cleanup?.();
18
+ };
19
+ });
20
+ </script>
@@ -0,0 +1,4 @@
1
+ import type { VastPluginOptions } from "../vast/types.js";
2
+ declare const VastPlugin: import("svelte").Component<VastPluginOptions, {}, "">;
3
+ type VastPlugin = ReturnType<typeof VastPlugin>;
4
+ export default VastPlugin;
@@ -0,0 +1,22 @@
1
+ <script lang="ts">
2
+ import { getContext } from "svelte";
3
+ import type { Snippet } from "svelte";
4
+ import { type PlayerGetter, VIDE_PLAYER_KEY } from "./context.js";
5
+
6
+ interface Props {
7
+ class?: string;
8
+ children?: Snippet;
9
+ }
10
+
11
+ const { class: className, children }: Props = $props();
12
+
13
+ const getPlayer = getContext<PlayerGetter>(VIDE_PLAYER_KEY);
14
+ </script>
15
+
16
+ {#if getPlayer()}
17
+ <div class={["vide-controls", className].filter(Boolean).join(" ")}>
18
+ {#if children}
19
+ {@render children()}
20
+ {/if}
21
+ </div>
22
+ {/if}
@@ -0,0 +1,8 @@
1
+ import type { Snippet } from "svelte";
2
+ interface Props {
3
+ class?: string;
4
+ children?: Snippet;
5
+ }
6
+ declare const VideControls: import("svelte").Component<Props, {}, "">;
7
+ type VideControls = ReturnType<typeof VideControls>;
8
+ export default VideControls;