@munsonlabs/video-player 0.1.0 → 0.1.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.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @munsonlabs/video-player
2
2
 
3
- A Vue 3 video player supporting YouTube, Vimeo, Dailymotion, Brightcove, JW Player, and plain HTML5. Includes a sticky stage player, lazy loading, custom actions, IMA ad support, and web component exports.
3
+ A Vue 3 video player supporting YouTube, Vimeo, Dailymotion, Brightcove, JW Player, and plain HTML5. Includes a sticky stage player, lazy loading, custom actions, IMA ad support, header bidding, captions, adaptive quality selection, and web component exports.
4
4
 
5
5
  ## Installation
6
6
 
@@ -46,14 +46,14 @@ import '@munsonlabs/video-player/style'
46
46
 
47
47
  ### Playlists
48
48
 
49
- Pass `playlist` (a `VideoEntry[]`, the same shape as a `VideoItem`'s props) to let the stage track the currently-playing video's position within it. This works alongside the existing `video-select`/`video-toggle` window events, not instead of them — position is derived by matching the current video's URL against the playlist on every read, so an external selection (e.g. clicking a `VideoItem` elsewhere on the page) naturally updates "where we are in the playlist" too, with nothing extra to keep in sync.
49
+ Pass `playlist` (a `VideoEntry[]`, the same shape as a `VideoItem`'s props) to let the stage track the currently-playing video's position within it. This works alongside the existing `video-select`/`video-toggle` window events, not instead of them: position is derived by matching the current video's URL against the playlist on every read, so an external selection (e.g. clicking a `VideoItem` elsewhere on the page) naturally updates "where we are in the playlist" too, with nothing extra to keep in sync.
50
50
 
51
51
  ```vue
52
52
  <VideoStage :playlist="videos" @state-change="onStateChange" />
53
53
  ```
54
54
 
55
- - Auto-advance (playing the next playlist entry automatically once the current one fires `ended`, with no wraparound — playback simply stops after the last entry) is fully owned by `VideoStage`: it's remembered in `localStorage` and toggled only via the controls popup's built-in "Auto" button (and, if enabled, the `action="autoplay"` HUD button — see [Actions](#actions)). There's no prop for it — every consumer gets the same persisted, in-player toggle with zero wiring.
56
- - Whenever `playlist` is set, the controls popup automatically shows a skip-to-next button (only while there's a next entry) and the "Auto" toggle described above — no extra markup needed.
55
+ - Auto-advance (playing the next playlist entry automatically once the current one fires `ended`, with no wraparound, so playback simply stops after the last entry) is fully owned by `VideoStage`: it's remembered in `localStorage` and toggled only via the controls popup's built-in "Auto" button (and, if enabled, the `action="autoplay"` HUD button, see [Actions](#actions)). There's no prop for it: every consumer gets the same persisted, in-player toggle with zero wiring.
56
+ - Whenever `playlist` is set, the controls popup automatically shows a skip-to-next button (only while there's a next entry) and the "Auto" toggle described above, with no extra markup needed.
57
57
  - A template ref on `VideoStage` exposes `playNext()`, `playPrevious()`, `hasNext`, and `hasPrevious` too, for building your own next/previous buttons outside the player's own controls:
58
58
 
59
59
  ```vue
@@ -73,28 +73,31 @@ const stage = ref(null)
73
73
 
74
74
  ## VideoItem / VideoPlayer Props
75
75
 
76
- | Prop | Type | Default | Description |
77
- | -------------- | -------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
78
- | `videoUrl` | `string` | — | **Required.** The video URL or platform-specific URI — the platform is auto-detected from its shape, see [Platform URLs](#platform-urls) |
79
- | `title` | `string` | `''` | Video title |
80
- | `poster` | `string` | `''` | Poster image URL |
81
- | `aspectRatio` | `string` | `'16:9'` | e.g. `'16:9'`, `'9:16'`, `'4:3'` |
82
- | `autoplay` | `boolean` | `false` | Autoplay on mount (mutes automatically) |
83
- | `muted` | `boolean` | `false` | Start muted |
84
- | `lazy` | `boolean` | `true`\* | Show placeholder until clicked |
85
- | `nativeUi` | `boolean` | `false` | Use the platform's native controls (YouTube, Vimeo, Dailymotion only) |
86
- | `autoStage` | `boolean` | `false` | Immediately send this video to the stage on mount |
87
- | `playbackRate` | `number` | `1` | Initial playback rate |
88
- | `adTagUrl` | `string` | `''` | VAST or VMAP ad tag URL |
89
- | `adTagParams` | `object` | — | Extra query params merged onto whichever ad tag URL ends up in use — see [Ads](#ads-ima--vast--vmap) |
90
- | `payload` | `object` | `{}` | Arbitrary data attached to every `state-change` event |
91
- | `action` | `PlayerAction` | `null` | Button shown in the player HUD — see [Actions](#actions) |
92
-
93
- \* `lazy` only has an effect on `VideoItem` (default `true`), which is what actually implements the placeholder-until-clicked behavior. `VideoPlayer` accepts the prop for type compatibility but defaults to `false` and never reads it — using `<VideoPlayer>` directly always mounts the real player immediately, regardless of `lazy`.
76
+ | Prop | Type | Default | Description |
77
+ | ------------------- | -------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
78
+ | `videoUrl` | `string` | - | **Required.** The video URL or platform-specific URI (the platform is auto-detected from its shape, see [Platform URLs](#platform-urls)) |
79
+ | `title` | `string` | `''` | Video title |
80
+ | `poster` | `string` | `''` | Poster image URL |
81
+ | `aspectRatio` | `string` | `'16:9'` | e.g. `'16:9'`, `'9:16'`, `'4:3'` |
82
+ | `autoplay` | `boolean` | `false` | Autoplay on mount (mutes automatically) |
83
+ | `muted` | `boolean` | `false` | Start muted |
84
+ | `lazy` | `boolean` | `true`\* | Show placeholder until clicked |
85
+ | `nativeUi` | `boolean` | `false` | Use the platform's native controls (YouTube, Vimeo, Dailymotion only) |
86
+ | `autoStage` | `boolean` | `false` | Immediately send this video to the stage on mount |
87
+ | `playbackRate` | `number` | `1` | Initial playback rate |
88
+ | `adTagUrl` | `string` | `''` | VAST or VMAP ad tag URL |
89
+ | `adTagParams` | `object` | - | Fills `{macro}` tokens on whichever ad tag URL ends up in use, see [Ads](#ads-ima--vast--vmap) |
90
+ | `headerBidding` | `object` | - | Runs a Prebid.js auction before the ad plays, see [Header bidding](#header-bidding-prebidjs) |
91
+ | `tracks` | `array` | - | WebVTT caption/subtitle tracks, see [Captions](#captions-webvtt) |
92
+ | `payload` | `object` | `{}` | Arbitrary data attached to every `state-change` event |
93
+ | `action` | `PlayerAction` | `null` | Button shown in the player HUD, see [Actions](#actions) |
94
+ | `disableTapCapture` | `boolean` | `false` | Disables the full-video tap-to-reveal-controls overlay (tap/click still reaches embed platform UI underneath, e.g. YouTube's own) |
95
+
96
+ \* `lazy` only has an effect on `VideoItem` (default `true`), which is what actually implements the placeholder-until-clicked behaviour. `VideoPlayer` accepts the prop for type compatibility but defaults to `false` and never reads it: using `<VideoPlayer>` directly always mounts the real player immediately, regardless of `lazy`.
94
97
 
95
98
  ### Platform URLs
96
99
 
97
- The platform is detected automatically from the shape of `videoUrl` — there's no separate prop to set it.
100
+ The platform is detected automatically from the shape of `videoUrl`; there's no separate prop to set it.
98
101
 
99
102
  | Platform | URL format |
100
103
  | ------------- | -------------------------------------------------------------------------------------------------------- |
@@ -105,7 +108,7 @@ The platform is detected automatically from the shape of `videoUrl` — there's
105
108
  | `jwplayer` | `https://cdn.jwplayer.com/videos/...` · `https://cdn.jwplayer.com/manifests/...` · `jwplayer://MEDIA_ID` |
106
109
  | `html5` | Any direct MP4 / HLS URL |
107
110
 
108
- \* `PLAYER_ID_EMBED` is one path segment: `{PLAYER_ID}_{EMBED_NAME}` (e.g. `abc123_default` for the account's default player) — this is exactly the URL Brightcove Studio's "Publish" panel gives you for an embed.
111
+ \* `PLAYER_ID_EMBED` is one path segment: `{PLAYER_ID}_{EMBED_NAME}` (e.g. `abc123_default` for the account's default player), which is exactly the URL Brightcove Studio's "Publish" panel gives you for an embed.
109
112
 
110
113
  ---
111
114
 
@@ -127,6 +130,10 @@ interface StateChangeEvent {
127
130
  | 'adend'
128
131
  | 'volumechange'
129
132
  | 'ratechange'
133
+ | 'captionchange'
134
+ | 'qualitychange'
135
+ | 'pipchange'
136
+ | 'loopchange'
130
137
  | 'firstQuartile'
131
138
  | 'midpoint'
132
139
  | 'thirdQuartile'
@@ -138,16 +145,26 @@ interface StateChangeEvent {
138
145
  error?: { code: number; message: string } | null
139
146
  isMuted?: boolean // volumechange only
140
147
  playbackRate?: number // ratechange only
148
+ captionIndex?: number | null // captionchange only; null means captions are off
149
+ qualityIndex?: number | null // qualitychange only; null means Auto
150
+ isPipActive?: boolean // pipchange only
151
+ isLooping?: boolean // loopchange only
141
152
  element?: HTMLElement | null // controlsopen/controlsclose only
142
153
  payload?: Record<string, unknown>
143
154
  }
144
155
  ```
145
156
 
146
- `firstQuartile` / `midpoint` / `thirdQuartile` fire once each as playback crosses 25%, 50%, and 75% of the video's duration — useful for analytics integrations that expect IAB-style progress milestones. They reset and can fire again on loop restart.
157
+ `firstQuartile` / `midpoint` / `thirdQuartile` fire once each as playback crosses 25%, 50%, and 75% of the video's duration. This is useful for analytics integrations that expect IAB-style progress milestones. They reset and can fire again on loop restart.
147
158
 
148
- `controlsopen` / `controlsclose` fire when the expanded controls popup mounts/unmounts (e.g. via the "show controls" button), with `element` set to the popup's root DOM node — handy for positioning your own UI relative to it, or measuring it. On `controlsclose`, `element` is a snapshot of the closing node; it's detached from the DOM immediately after.
159
+ `controlsopen` / `controlsclose` fire when the expanded controls popup mounts/unmounts (e.g. via the "show controls" button), with `element` set to the popup's root DOM node: handy for positioning your own UI relative to it, or measuring it. On `controlsclose`, `element` is a snapshot of the closing node; it's detached from the DOM immediately after.
149
160
 
150
- On `error`, the player shows a "Retry" button that re-attempts loading the current source. You can also trigger this yourself via a template ref on `VideoPlayer`, which exposes a `retry()` method along with `togglePlay()`, `seek()`, `toggleMute()`, `setVolume()`, `toggleFullscreen()`, `toggleLoop()`, and `setPlaybackRate()`. Note this is on `VideoPlayer` specifically — `VideoItem` doesn't forward a ref to it, since it may be showing a lazy placeholder instead:
161
+ `captionchange` / `qualitychange` fire on every `setCaptionTrack()`/`setQuality()` call (whichever menu triggered it) and whenever the adapter detects the active track/level changed on its own (e.g. hls.js's own ABR switching), but never before playback has started (so the initial caption/quality detection at mount doesn't get reported as a "change"). See [Captions](#captions-webvtt) and [Video Quality](#video-quality-hls).
162
+
163
+ `pipchange` fires whenever Picture-in-Picture is entered or exited, whether that came from the player's own PiP button or the user closing the browser's floating PiP window directly.
164
+
165
+ `loopchange` fires whenever `toggleLoop()` is called (e.g. from the "Loop" row in the controls menu), never before playback has started.
166
+
167
+ On `error`, the player shows a "Retry" button that re-attempts loading the current source. You can also trigger this yourself via a template ref on `VideoPlayer`, which exposes a `retry()` method along with `togglePlay()`, `seek()`, `toggleMute()`, `setVolume()`, `toggleFullscreen()`, `toggleLoop()`, `setPlaybackRate()`, `setCaptionTrack()`, `setQuality()`, and `togglePip()`. Note this is on `VideoPlayer` specifically: `VideoItem` doesn't forward a ref to it, since it may be showing a lazy placeholder instead:
151
168
 
152
169
  ```vue
153
170
  <script setup>
@@ -179,7 +196,7 @@ The `action` prop adds a button to the player HUD. Pass a built-in string or a c
179
196
  <VideoItem action="autoplay" ... />
180
197
  ```
181
198
 
182
- `action="autoplay"` toggles [auto-advance](#playlists) and only makes sense when rendered inside a `VideoStage` with a `playlist` set — it reads and flips the same `autoAdvance` state as the controls popup's built-in "Auto" button, just as a HUD button instead.
199
+ `action="autoplay"` toggles [auto-advance](#playlists) and only makes sense when rendered inside a `VideoStage` with a `playlist` set: it reads and flips the same `autoAdvance` state as the controls popup's built-in "Auto" button, just as a HUD button instead.
183
200
 
184
201
  ### Custom action
185
202
 
@@ -209,7 +226,12 @@ const saveAction = {
209
226
 
210
227
  ## Ads (IMA / VAST / VMAP)
211
228
 
212
- Pass an `adTagUrl` to enable pre-roll, mid-roll, or VMAP ad schedules via the Google IMA SDK. The SDK is loaded automatically on demand.
229
+ **Step by step:**
230
+
231
+ 1. Get a VAST or VMAP ad tag URL. For testing, use [Google's public IMA sample tags](https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/tags); for production, this comes from your ad server (Google Ad Manager): ask whoever manages ad ops for the tag, or build it yourself if you already know the ad unit path.
232
+ 2. Pass it as `adTagUrl` on `VideoItem`/`VideoPlayer`. That's it for a basic pre-roll/VMAP schedule: the Google IMA SDK is loaded automatically on demand, nothing else to configure.
233
+ 3. Confirm it's working: watch for `adstart`/`adend` on the `state-change` event, or check the Network tab for a request to `pubads.g.doubleclick.net` (or wherever your ad server lives) when the video plays.
234
+ 4. Only if your ad tag is a **macro template** (contains literal `{tokenName}` placeholders, as Brightcove's auto-discovered ad tags usually do, see below) do you need `adTagParams` too. Otherwise skip it entirely.
213
235
 
214
236
  ```vue
215
237
  <VideoItem video-url="https://..." ad-tag-url="https://pubads.g.doubleclick.net/..." />
@@ -217,26 +239,125 @@ Pass an `adTagUrl` to enable pre-roll, mid-roll, or VMAP ad schedules via the Go
217
239
 
218
240
  Ads are not supported on YouTube, Vimeo, or Dailymotion.
219
241
 
220
- Some platforms (currently Brightcove) auto-discover their own ad tag URL — the platform's own wins if you don't pass `adTagUrl` yourself. `adTagParams` merges query params onto **whichever** ad tag URL ends up in use, prop-supplied or auto-discovered, without needing to know or duplicate where the base URL came from:
242
+ Some platforms (currently Brightcove) auto-discover their own ad tag URL: the platform's own wins if you don't pass `adTagUrl` yourself. Brightcove's ad tag URLs are typically macro templates (e.g. `...&iu={adUnit}&vid={referenceId}&rdid={rdid}&cust_params={customParameters}`), not ready-to-use URLs. `adTagParams` fills these in on **whichever** ad tag URL ends up in use, prop-supplied or auto-discovered, without needing to know or duplicate where the base URL came from:
221
243
 
222
244
  ```vue
223
245
  <VideoItem
224
246
  video-url="https://players.brightcove.net/..."
225
- :ad-tag-params="{ rdid: deviceId, idtype: 'idfa', is_lat: 0, ppid: userId, cust_params: 'pageType=article&contentId=123' }"
247
+ :ad-tag-params="{
248
+ adUnit: 'network/section',
249
+ referenceId: videoId,
250
+ rdid: deviceId,
251
+ idtype: 'idfa',
252
+ is_lat: 0,
253
+ customParameters: 'pageType=article&contentId=123',
254
+ }"
226
255
  />
227
256
  ```
228
257
 
258
+ Name each key exactly after the macro it fills, not the query param it happens to sit inside (`vid={referenceId}` means the key is `referenceId`, not `vid`). A key with no matching `{macro}` in the URL is a no-op: this only fills in existing macros, it doesn't add new query params, so it has no effect on a non-templated ad tag URL (JW, or one you built by hand).
259
+
260
+ ### Header bidding (Prebid.js)
261
+
262
+ **Step by step:**
263
+
264
+ 1. Confirm your organisation already runs Prebid.js somewhere on the page: check for `window.pbjs` in the console. If it's not there, this isn't something to set up from this package; talk to whoever manages ad ops or your header-bidding wrapper vendor, since Prebid deployments are custom builds specific to which bidders you use (see below for why this player doesn't load Prebid itself).
265
+ 2. Get a Prebid **video ad unit** config from ad ops/your bidder: an object with `code`, `mediaTypes.video` (player size, mime types, etc.), and a `bids` array with your bidder's specific params (e.g. AppNexus's `placementId`). This is the same object your org's existing Prebid setup already uses elsewhere for video slots, if one exists.
266
+ 3. Get the GAM ad unit path (`iu`) to target: same source as step 1 in [Ads](#ads-ima--vast--vmap) above.
267
+ 4. Pass both as `headerBidding: { adUnit, params: { iu: '...' } }`, on the same `VideoItem`/`VideoPlayer` that already has a plain `adTagUrl`/`adTagParams` set as the fallback (step 2 of the Ads section). Never rely on `headerBidding` alone with nothing to fall back to.
268
+ 5. Verify: after playing, run `pbjs.getBidResponsesForAdUnitCode('your-ad-unit-code')` in the console to confirm a bid came back, and check the Network tab for `hb_bidder`/`hb_pb`/etc. in the actual ad request's `cust_params` to confirm the winning bid's targeting made it into the request IMA sent.
269
+
270
+ The auction runs **in the background** and is never awaited: it can't block mounting, playback, or controls. Its result is only used if it's ready by the time the ad is actually requested (on the viewer's first play); otherwise the ad request goes out with whatever `adTagUrl`/`adTagParams` already resolved to, same as if `headerBidding` weren't set at all:
271
+
272
+ ```vue
273
+ <VideoItem
274
+ video-url="https://players.brightcove.net/..."
275
+ :header-bidding="{
276
+ adUnit: {
277
+ code: 'video-preroll',
278
+ mediaTypes: { video: { context: 'instream', playerSize: [640, 480] } },
279
+ bids: [{ bidder: 'appnexus', params: { placementId: 123456 } }],
280
+ },
281
+ params: { iu: '/network/adunit' },
282
+ timeoutMs: 1000,
283
+ }"
284
+ />
285
+ ```
286
+
287
+ `adUnit` is a standard Prebid video ad unit, the same object you'd otherwise hand to `pbjs.addAdUnits()`. `params` is passed through to `buildVideoUrl()` (GAM ad tag params, e.g. `iu`). `timeoutMs` (default `1000`) bounds the Prebid auction itself. Every failure mode (no `window.pbjs`, the auction timing out, no bid won, `buildVideoUrl()` throwing) fails open to whatever `adTagUrl`/`adTagParams` would have resolved to; combined with never being awaited, a header-bidding hiccup can't block or break anything else in the player, ever.
288
+
229
289
  ### Ad overlay UI
230
290
 
231
- While an ad is playing, a small overlay shows an "Ad" badge with a countdown to the ad's end, and a mute button that controls the ad creative's own independent audio (separate from the content video's volume/mute state — muting the player has no effect on ad audio, and vice versa). If the ad is paused (e.g. by another player's cross-player pause coordination), a resume icon appears over it as well.
291
+ While an ad is playing, a small overlay shows an "Ad" badge with a countdown to the ad's end, a dedicated pause/resume button, and a mute button that controls the ad creative's own independent audio (separate from the content video's volume/mute state: muting the player has no effect on ad audio, and vice versa).
292
+
293
+ ### Ad visibility behaviour
294
+
295
+ An ad pauses itself whenever the tab is hidden or the window loses focus (checked on `visibilitychange`/`blur`, and once up front when the ad starts, so a mid-roll beginning on an already-backgrounded tab is caught too) — no manual setup needed, and it doesn't auto-resume, since the point is to stop burning an impression on nobody watching. If Picture-in-Picture is active when an ad starts, it's exited too (skipped on iOS, where the ad creative renders directly into the same `<video>` element PiP is already mirroring, so there's nothing to lose by staying in PiP there).
296
+
297
+ ---
298
+
299
+ ## Captions (WebVTT)
300
+
301
+ Only meaningful for the native `<video>` path (plain MP4/HLS): captions are unsupported on YouTube, Vimeo, and Dailymotion, which render their own captions inside their iframe instead if the source video has them. Brightcove and JW Player get real support for free, since both resolve to an actual `<video>`/HLS source under the hood.
302
+
303
+ There are two ways a caption track ends up available, and you don't have to pick: the player supports both at once.
304
+
305
+ - **HLS streams that already declare subtitle renditions in their own manifest** get picked up automatically by hls.js/Safari's native HLS, with no `tracks` prop needed at all. A "Captions" option just appears in the controls menu once the manifest has parsed.
306
+ - **Everything else** (a plain MP4, or an HLS stream with no subtitle rendition of its own) needs WebVTT tracks supplied explicitly via `tracks`:
307
+
308
+ ```vue
309
+ <VideoItem
310
+ video-url="https://.../video.mp4"
311
+ :tracks="[
312
+ { src: '/captions/en.vtt', kind: 'captions', srclang: 'en', label: 'English', default: true },
313
+ { src: '/captions/fr.vtt', kind: 'captions', srclang: 'fr', label: 'Français' },
314
+ ]"
315
+ />
316
+ ```
317
+
318
+ ```ts
319
+ interface CaptionTrackDef {
320
+ src: string // a WebVTT file URL: <track> only understands VTT, not SRT or other subtitle formats
321
+ kind?: 'captions' | 'subtitles'
322
+ srclang?: string
323
+ label?: string
324
+ default?: boolean
325
+ }
326
+ ```
327
+
328
+ Each entry renders as a native `<track>` element: the browser fetches and parses the file itself, nothing is loaded or parsed by this package. `default: true` has the browser show that track immediately with no extra wiring; the player detects and reports this the same way as a track picked manually via the controls menu.
329
+
330
+ Clicking "Captions" in the controls menu cycles Off → first track → next track → ... → Off. Programmatically, a template ref on `VideoPlayer` exposes `setCaptionTrack(index)` (`null` turns captions off); see [Events](#state-change) for the `captionchange` event this fires.
331
+
332
+ ---
333
+
334
+ ## Video Quality (HLS)
335
+
336
+ Adaptive HLS streams automatically expose a "Quality" option in the controls menu once hls.js (or Safari's native HLS) has parsed the manifest's resolution variants: there's no prop to set and nothing to configure. Clicking it cycles Auto → highest → ... → lowest → Auto; Auto leaves hls.js's adaptive bitrate algorithm in control.
337
+
338
+ This only applies to HLS: plain MP4/HTML5 sources have no variant levels at all, and it's unsupported on YouTube, Vimeo, and Dailymotion. Brightcove and JW Player get it for free, same reasoning as captions above.
339
+
340
+ **Safari plays HLS natively instead of through hls.js** (see [Peer Dependencies](#peer-dependencies)), and native HLS has no manual quality-override hook at all: the Quality option simply won't appear there, since Safari's own adaptive bitrate algorithm is always in control on that path.
341
+
342
+ Programmatically, a template ref on `VideoPlayer` exposes `setQuality(index)` (`null` re-enables Auto); see [Events](#state-change) for the `qualitychange` event this fires.
343
+
344
+ ---
345
+
346
+ ## Picture-in-Picture
347
+
348
+ A Picture-in-Picture button appears in the controls automatically wherever the browser supports it (`document.pictureInPictureEnabled`) — nothing to configure. It stays in sync whether PiP is toggled from the player's own button or the browser's floating window is closed directly.
349
+
350
+ Only supported on the native `<video>` path (plain MP4/HLS): YouTube, Vimeo, and Dailymotion are unsupported here since their iframe content isn't a real `<video>` element this package controls directly. Brightcove and JW Player get it for free, same reasoning as captions/quality above.
351
+
352
+ Programmatically, a template ref on `VideoPlayer` exposes `togglePip()`; see [Events](#state-change) for the `pipchange` event this fires.
232
353
 
233
354
  ---
234
355
 
235
356
  ## Theming the HUD buttons
236
357
 
237
- The three buttons in the HUD row — the action button (mute/loop/custom/save), the central play/pause button, and the "show controls" button — read their background and icon color from two CSS custom properties, falling back to the default frosted-glass look when unset. The expanded controls popup (opened via the "show controls" button) is unaffected and keeps its own fixed styling.
358
+ Three buttons read their background and icon colour from two CSS custom properties, falling back to the default frosted-glass look when unset: the action button (mute/loop/custom/save), the central play/pause button, and the "show controls" button. The expanded controls popup (opened via the "show controls" button) is unaffected and keeps its own fixed styling.
238
359
 
239
- Set the variables on any ancestor of the player — e.g. a wrapper `<div>` or `:root` — to restyle all three buttons at once:
360
+ Set the variables on any ancestor of the player (e.g. a wrapper `<div>` or `:root`) to restyle all three buttons at once:
240
361
 
241
362
  ```css
242
363
  .my-video-wrapper {
@@ -245,7 +366,7 @@ Set the variables on any ancestor of the player — e.g. a wrapper `<div>` or `:
245
366
  }
246
367
  ```
247
368
 
248
- Icons use `fill="currentColor"`, so `--mvp-btn-color` recolors the icon along with `--mvp-btn-bg` for the background. Hover state is a `filter: brightness()` lift on top of `--mvp-btn-bg`, so it works for both the default translucent look and a solid theme color.
369
+ Icons use `fill="currentColor"`, so `--mvp-btn-color` recolours the icon along with `--mvp-btn-bg` for the background. Hover state is a `filter: brightness()` lift on top of `--mvp-btn-bg`, so it works for both the default translucent look and a solid theme colour.
249
370
 
250
371
  ### Controls popup position
251
372
 
@@ -298,7 +419,7 @@ window.addEventListener('video-state', (e) => {
298
419
 
299
420
  ## Web Component Usage
300
421
 
301
- Import the element bundle to register all components as native custom elements. Vue is an external dependency — use an import map to provide it:
422
+ Import the element bundle to register all components as native custom elements. These elements render into the light DOM, not a shadow root (`shadowRoot: false` — YouTube/Vimeo/Dailymotion's SDKs mount by resolving a plain element ID, which can't see into a shadow root), so styling has nowhere encapsulated to live. Rather than requiring a separate stylesheet import, the element bundle links its own `dist/style.css` onto the page automatically the moment it's imported — nothing else to remember there. Vue is an external dependency: use an import map to provide it:
302
423
 
303
424
  ```html
304
425
  <script type="importmap">
@@ -317,7 +438,7 @@ Import the element bundle to register all components as native custom elements.
317
438
  ></video-item>
318
439
  ```
319
440
 
320
- If you'll be playing HLS (`.m3u8`) sources, also add an import map entry for `hls.js` — it's loaded on demand via a dynamic `import('hls.js')`, which (unlike the Vue usage, where your own bundler resolves it) has no resolution path in a plain browser without one:
441
+ If you'll be playing HLS (`.m3u8`) sources, also add an import map entry for `hls.js`. It's loaded on demand via a dynamic `import('hls.js')`, which (unlike the Vue usage, where your own bundler resolves it) has no resolution path in a plain browser without one:
321
442
 
322
443
  ```html
323
444
  <script type="importmap">
@@ -341,7 +462,7 @@ If you'll be playing HLS (`.m3u8`) sources, also add an import map entry for `hl
341
462
 
342
463
  ### Passing objects as web component attributes
343
464
 
344
- Boolean and string props map directly to HTML attributes. Object props (`payload`) can be passed as inline JSON strings — Vue's custom element runtime parses them automatically:
465
+ Boolean and string props map directly to HTML attributes. Object props (`payload`) can be passed as inline JSON strings: Vue's custom element runtime parses them automatically:
345
466
 
346
467
  ```html
347
468
  <video-item video-url="https://..." ad-tag-url="https://..." payload='{"articleId":"123"}'></video-item>
@@ -367,7 +488,7 @@ player.addEventListener('state-change', (e) => {
367
488
 
368
489
  ## Peer Dependencies
369
490
 
370
- | Package | Version |
371
- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
372
- | `vue` | `>=3` (Vue usage only) |
373
- | `hls.js` | `^1.6.16` — optional, only needed for HLS (`.m3u8`) playback via native `<video>`; see [Web Component Usage](#web-component-usage) for the import map entry if you're not using a bundler |
491
+ | Package | Version |
492
+ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
493
+ | `vue` | `>=3` (Vue usage only) |
494
+ | `hls.js` | `^1.6.16`, optional, only needed for HLS (`.m3u8`) playback via native `<video>`; see [Web Component Usage](#web-component-usage) for the import map entry if you're not using a bundler |
@@ -6,6 +6,28 @@ interface CustomAction {
6
6
  onClick: () => void;
7
7
  }
8
8
  type PlayerAction = BuiltinAction | CustomAction;
9
+ interface HeaderBiddingAdUnit {
10
+ code: string;
11
+ mediaTypes: {
12
+ video: Record<string, unknown>;
13
+ };
14
+ bids: Array<{
15
+ bidder: string;
16
+ params?: Record<string, unknown>;
17
+ }>;
18
+ }
19
+ interface HeaderBiddingConfig {
20
+ adUnit: HeaderBiddingAdUnit;
21
+ params?: Record<string, string>;
22
+ timeoutMs?: number;
23
+ }
24
+ interface CaptionTrackDef {
25
+ src: string;
26
+ kind?: 'captions' | 'subtitles';
27
+ srclang?: string;
28
+ label?: string;
29
+ default?: boolean;
30
+ }
9
31
  interface PlayerProps {
10
32
  videoUrl: string;
11
33
  title?: string;
@@ -13,6 +35,8 @@ interface PlayerProps {
13
35
  aspectRatio?: string;
14
36
  adTagUrl?: string;
15
37
  adTagParams?: Record<string, string>;
38
+ headerBidding?: HeaderBiddingConfig;
39
+ tracks?: CaptionTrackDef[];
16
40
  autoplay?: boolean;
17
41
  muted?: boolean;
18
42
  playbackRate?: number;
package/dist/element.mjs CHANGED
@@ -1 +1,3 @@
1
- import{Fragment as e,Transition as t,computed as n,createBlock as r,createCommentVNode as i,createElementBlock as a,createElementVNode as o,createStaticVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,defineCustomElement as d,inject as f,mergeProps as p,nextTick as m,normalizeClass as h,normalizeProps as g,normalizeStyle as _,onBeforeUnmount as v,onMounted as y,openBlock as b,provide as x,reactive as S,ref as C,toDisplayString as w,toRef as T,unref as E,watch as D,withCtx as O,withModifiers as k}from"vue";function A(){return/iPad|iPhone|iPod/.test(navigator.userAgent)||/Mac/.test(navigator.userAgent)&&navigator.maxTouchPoints>1}function j(e){(e.requestFullscreen||e.webkitRequestFullscreen)?.call(e)}function M(){(document.exitFullscreen||document.webkitExitFullscreen)?.call(document)}function N(e){let[t,n]=e.split(`:`).map(Number);return{isPortrait:n>t,cssRatio:`${t}/${n}`}}function P(e,t){if(!t||!Object.keys(t).length)return e;let n;try{n=new URL(e)}catch{return e}for(let[e,r]of Object.entries(t))r!=null&&r!==``&&n.searchParams.set(e,r);return n.toString()}function F(e){return!e||isNaN(e)?`0:00`:`${Math.floor(e/60)}:${String(Math.floor(e%60)).padStart(2,`0`)}`}function I(e,t=(...e)=>String(e[0])){let n={};return async(...r)=>{let i=t(...r);if(n[i])return n[i];let a=await e(...r);return n[i]=a,a}}function L(e){return e.filter(e=>e.src&&(e.type===`application/x-mpegURL`||e.type===`video/mp4`)).sort((e,t)=>e.type===`application/x-mpegURL`?-1:1)}const ee=`video-select`,te=`video-state`,R=`fullscreen-pending`,z=`fullscreen-pending-done`,ne=`player:autoAdvance`,B=`mvp-youtube`,V=`mvp-vimeo`,re=`mvp-dailymotion`,H=`mvp-ad-playing`,U=`mvp-ad-paused`,ie=`16:9`,W=[.5,.75,1,1.25,1.5,2],ae=[[.25,`firstQuartile`],[.5,`midpoint`],[.75,`thirdQuartile`]];function oe(e){return e.match(/cdn\.jwplayer\.com\/videos\/([^-]+)/)?.[1]??e.match(/cdn\.jwplayer\.com\/manifests\/([^.]+)/)?.[1]??e.match(/^jwplayer:\/\/([^/]+)$/)?.[1]??null}function se(e){let t=e?.advertising?.schedule;return Array.isArray(t)&&t.length?t[0].tag??null:e?.advertising?.tag??null}const G=I(async e=>{let t=await fetch(`https://cdn.jwplayer.com/v2/media/${e}`);if(!t.ok)throw Error(`JW Platform API error: ${t.status}`);let n=(await t.json()).playlist?.[0];if(!n)throw Error(`JW Platform: empty playlist`);let r=L((n.sources??[]).map(e=>({src:e.file,type:e.type})));if(!r.length)throw Error(`JW Platform: no playable sources found`);return{src:r[0].src,type:r[0].type,poster:n.image??null,adTagUrl:se(n)}});async function ce(e){let t=oe(e);if(!t)throw Error(`JW Platform: unrecognised source URL: ${e}`);let n=await G(t);if(e.startsWith(`jwplayer://`))return n;let r=/\.mp4(\?|#|$)/.test(e)?`video/mp4`:`application/x-mpegURL`;return{...n,src:e,type:r}}function K(e){let t;try{t=new URL(e)}catch{return null}if(t.hostname!==`players.brightcove.net`)return null;let[,n,r]=t.pathname.split(`/`),i=t.searchParams.get(`videoId`),a=r?.indexOf(`_`)??-1;return!n||a===-1||!i?null:{accountId:n,playerId:r.slice(0,a),embed:r.slice(a+1),videoId:i}}function le(e){return(e?.plugins??[]).find(e=>e.name===`ima3`)?.options?.serverUrl??null}const ue=I(async(e,t,n,r)=>{let i=await fetch(`https://players.brightcove.net/${e}/${t}_${n}/config.json`);if(!i.ok)throw Error(`Brightcove: could not load player config (${i.status})`);let a=await i.json(),o=r??a?.video_cloud?.policy_key;if(!o)throw Error(`Brightcove: policy_key not found in player config`);return{policyKey:o,adTagUrl:le(a)}},(e,t,n)=>`${e}/${t}_${n}`);async function de(e,t,n){let r=await fetch(`https://edge.api.brightcove.com/playback/v1/accounts/${e}/videos/${t}`,{headers:{Accept:`application/json;pk=${n}`}});if(!r.ok)throw Error(`Brightcove Playback API error: ${r.status}`);let i=await r.json(),a=L(i.sources||[]);if(!a.length)throw Error(`Brightcove: no playable sources found`);return{sources:a.map(e=>({src:e.src,type:e.type})),poster:i.poster??i.thumbnail??null}}async function fe(e,t){let n=K(e);if(!n)throw Error(`Brightcove: invalid src — expected a Brightcove embed URL, e.g. "https://players.brightcove.net/{accountId}/{playerId}_{embed}/index.html?videoId={videoId}"`);let{accountId:r,playerId:i,embed:a,videoId:o}=n,{policyKey:s,adTagUrl:c}=await ue(r,i,a,t),{sources:l,poster:u}=await de(r,o,s);return{...l[0],poster:u,adTagUrl:c}}function q(){let e=new Map;function t(t,n){for(let r of Array.isArray(t)?t:[t])e.has(r)||e.set(r,new Set),e.get(r)?.add(n)}function n(t,n){e.get(t)?.delete(n)}function r(t,...n){e.get(t)?.forEach(e=>e(...n))}function i(){e.clear()}return{on:t,off:n,trigger:r,dispose:i}}const pe={};function me(e,t=e){return pe[t]||(pe[t]=new Promise((t,n)=>{let r=document.createElement(`script`);r.src=e,r.onload=()=>t(),r.onerror=()=>n(Error(`Failed to load script: ${e}`)),document.head.appendChild(r)})),pe[t]}let he=0;function ge(e,t){e.parentElement?.classList.add(t);let n=`${t}-${++he}`,r=document.createElement(`div`);r.id=n,r.className=`mvp-tech`,r.style.cssText=`width:100%;height:100%;top:0;left:0;position:absolute`;let i=document.createElement(`div`);return i.style.cssText=`width:100%;height:100%;position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity 0.2s`,i.appendChild(r),e.parentElement?.insertBefore(i,e),{techId:n,wrapper:i,innerDiv:r}}function _e(e,t){e.style.display=`none`,t.style.opacity=`1`,t.style.pointerEvents=``}function ve(e,t,n){t.remove(),e.parentElement?.classList.remove(n),e.style.display=``}function ye(e){return e.closest(`.player__shell`)}function be(e){e.trigger(R);let t=document.createElement(`div`);t.style.cssText=`position:fixed;inset:0;z-index:99999;opacity:0;pointer-events:none`,document.body.appendChild(t);let n=!1;function r(){n||(e.trigger(z),t.style.opacity=`1`,t.style.pointerEvents=`auto`)}function i(r){n||(n=!0,e.trigger(z),t.remove(),r?.())}return{overlay:t,reveal:r,finish:i}}function xe(e,t){return t===e.PlayerState.PLAYING||t===e.PlayerState.BUFFERING}function Se(e){let t={videoId:null,listId:null},n=e.match(/^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|shorts\/|&v=)([^#&?]*).*/);n?.[2]?.length===11&&(t.videoId=n[2]);let r=e.match(/[?&]list=([^#&?]+)/);return r?.[1]&&(t.listId=r[1]),t}let Ce=!1,we=!1;const J=[];function Te(){we||(we=!0,me(`https://www.youtube.com/iframe_api`).then(()=>{window.YT?.ready(()=>{Ce=!0,J.forEach(e=>e()),J.length=0})}))}function Ee(e,t){Te();let n=q(),{techId:r,wrapper:i}=ge(e,B),a=Se(t.src),o=null,s=a.videoId,c=!1,l=!1,u=!1,d=null,f=!1,p=null,m=!1,h=new Set,g=null,_={active:!1,wasPaused:!1,timeBefore:0,catchUpInterval:null};function v(e,t=0){let n=setTimeout(()=>{h.delete(n),e()},t);h.add(n)}function y(){try{let e=o?.getPlayerResponse()?.adPlacements;return Array.isArray(e)&&e.length>0}catch{return!1}}function b(e){o?.loadVideoById({videoId:e})}function x(e){o?.cueVideoById({videoId:e})}function S(){a.videoId&&(_.wasPaused=!1,c?s===a.videoId?o?.playVideo():(b(a.videoId),s=a.videoId):(n.trigger(`waiting`),l=!0))}function C(){_.catchUpInterval&&clearInterval(_.catchUpInterval),_.active=!1,_.wasPaused&&o?.pauseVideo(),n.trigger(`seeked`)}function w(){m=(o?.getAvailablePlaybackRates()??[]).length>1,c=!0,t.muted&&o?.mute(),l?S():u&&a.videoId&&(x(a.videoId),s=a.videoId)}function T(e){if(e===d||p!==null)return;d=e;let t=y();t!==f&&(f=t,n.trigger(t?`adstart`:`adend`));let r=window.YT;if(r){switch(e){case-1:n.trigger(`loadstart`),n.trigger(`loadedmetadata`),n.trigger(`durationchange`),n.trigger(`ratechange`);break;case r.PlayerState.ENDED:n.trigger(`ended`);break;case r.PlayerState.PLAYING:n.trigger(`timeupdate`),n.trigger(`durationchange`),n.trigger(`playing`),n.trigger(`play`),_.active&&C();break;case r.PlayerState.PAUSED:n.trigger(`canplay`),_.active||n.trigger(`pause`);break;case r.PlayerState.BUFFERING:n.trigger(`waiting`);break;case r.PlayerState.CUED:n.trigger(`canplay`);break}g&&=(clearInterval(g),null),e===r.PlayerState.PLAYING&&(g=setInterval(()=>n.trigger(`timeupdate`),250))}}function E(){let e={controls:+!!t.nativeUi,modestbranding:1,rel:0,showinfo:0,mute:+!!t.muted,origin:window.location.origin,allowfullscreen:1,fullscreen:1,fs:1,playsinline:1,...t.customVars};s=a.videoId,o=new window.YT.Player(r,{videoId:s??void 0,playerVars:e,events:{onReady:w,onStateChange:e=>T(e.data),onPlaybackRateChange:()=>n.trigger(`ratechange`),onVolumeChange:()=>n.trigger(`volumechange`),onError:e=>{p=e.data,n.trigger(`error`),v(()=>{p=null})}}})}Ce?E():J.push(E),t.autoplay?c?S():l=!0:a.videoId&&(u=!0);function D(){if(!o)return;let e=o.getCurrentTime(),{video_id:t}=o.getVideoData();o.pauseVideo();let{overlay:r,reveal:i,finish:a}=be(n),s=document.createElement(`div`);s.id=`yt-fs-${Math.random().toString(36).slice(2)}`,r.appendChild(s);let c=null,l=()=>{a(()=>{let t=c?.getCurrentTime()??e;try{c?.destroy()}catch{}o?.seekTo(t,!0),n.trigger(`timeupdate`)})};c=new window.YT.Player(s.id,{videoId:t,playerVars:{playsinline:0,autoplay:1,controls:1,modestbranding:1,rel:0,start:Math.floor(e)},events:{onReady:t=>{i(),t.target.seekTo(e,!0),t.target.playVideo()},onStateChange:e=>{let t=window.YT;t&&(e.data===t.PlayerState.PAUSED||e.data===t.PlayerState.ENDED)&&l()}}})}function O(){if(A()&&o){D();return}let t=ye(e);t&&j(t)}function k(){M()}return{el:i,play:S,pause:()=>o?.pauseVideo(),paused:()=>{if(!o)return!0;let e=window.YT;return!e||!xe(e,d)},currentTime:()=>o?.getCurrentTime()??0,setCurrentTime:e=>{if(!o)return;let t=window.YT;t&&d===t.PlayerState.PAUSED&&(_.timeBefore=o.getCurrentTime()),_.active||(_.wasPaused=!t||!xe(t,d)),o.seekTo(e,!0),n.trigger(`timeupdate`),n.trigger(`seeking`),_.active=!0,t&&d===t.PlayerState.PAUSED&&_.timeBefore!==e&&(_.catchUpInterval&&clearInterval(_.catchUpInterval),_.catchUpInterval=setInterval(()=>{d!==t.PlayerState.PAUSED||!_.active?_.catchUpInterval&&clearInterval(_.catchUpInterval):o&&o.getCurrentTime()!==_.timeBefore&&(n.trigger(`timeupdate`),C())},250))},duration:()=>o?.getDuration()??0,volume:()=>o?o.getVolume()/100:1,setVolume:e=>o?.setVolume(e*100),muted:()=>o?.isMuted()??!1,setMuted:e=>{o&&(e?o.mute():o.unMute(),v(()=>n.trigger(`volumechange`),50))},playbackRate:()=>o?.getPlaybackRate()??1,setPlaybackRate:e=>o?.setPlaybackRate(e),bufferedEnd:()=>o?.getVideoLoadedFraction?o.getVideoLoadedFraction()*o.getDuration():0,error:()=>p===null?null:{code:p,message:`This video could not be played.`},setSrc:e=>{let t=Se(e);a.videoId=t.videoId,a.listId=t.listId,a.videoId&&(c?(b(a.videoId),s=a.videoId):u=!0)},featuresPlaybackRate:()=>m,enterFullscreen:O,exitFullscreen:k,on:n.on,off:n.off,dispose:()=>{if(h.forEach(clearTimeout),h.clear(),g&&clearInterval(g),_.catchUpInterval&&clearInterval(_.catchUpInterval),o)try{o.stopVideo(),o.destroy()}catch{}else{let e=J.indexOf(E);e!==-1&&J.splice(e,1)}o=null,ve(e,i,B),n.dispose()}}}function De(e){return e.match(/(?:vimeo\.com\/(?:video\/|channels\/[^/]+\/|groups\/[^/]+\/videos\/)?|player\.vimeo\.com\/video\/)(\d+)/)?.[1]??null}function Oe(e,t){let n=q(),{techId:r,wrapper:i}=ge(e,V),a=De(t.src),o=null,s=0,c=0,l=1,u=!1,d=!0,f=1,p=!1,m=!1,h=!1,g=null,_=new Set;function v(e,t=0){let n=setTimeout(()=>{_.delete(n),e()},t);_.add(n)}function y(){if(!o){m=!0;return}o.play().catch(()=>{})}function b(){t.muted&&o?.setMuted(!0).catch(()=>{}),m&&y()}async function x(e){if(await me(`https://player.vimeo.com/api/player.js`,`vimeo`),h||!window.Vimeo)return;let i={id:Number(e),byline:!1,portrait:!1,title:!1,transparent:!0,controls:!!t.nativeUi,autopause:!1,...t.autoplay!==void 0&&{autoplay:t.autoplay},...t.muted!==void 0&&{muted:t.muted}};o=new window.Vimeo.Player(r,i),t.autoplay&&(m=!0),o.ready().then(b).catch(e=>{g={code:4,message:e?.message||`This video is unavailable or cannot be embedded here.`},n.trigger(`error`)}),o.on(`play`,()=>{d=!1,n.trigger(`play`),n.trigger(`playing`)}),o.on(`pause`,()=>{d=!0,n.trigger(`pause`)}),o.on(`ended`,()=>{d=!0,n.trigger(`ended`)}),o.on(`timeupdate`,e=>{let{seconds:t,duration:r}=e;s=t,c=r,n.trigger(`timeupdate`),r&&!p&&(p=!0,n.trigger(`durationchange`))}),o.on(`loaded`,()=>{p=!1,n.trigger(`loadedmetadata`),n.trigger(`durationchange`)}),o.on(`seeking`,e=>{s=e.seconds,n.trigger(`seeking`)}),o.on(`seeked`,e=>{s=e.seconds,n.trigger(`seeked`),n.trigger(`timeupdate`)}),o.on(`bufferstart`,()=>n.trigger(`waiting`)),o.on(`bufferend`,()=>n.trigger(`canplay`)),o.on(`volumechange`,e=>{l=e.volume,n.trigger(`volumechange`)}),o.on(`error`,()=>n.trigger(`error`))}a&&x(a);function S(){if(!A()){let t=ye(e);t&&j(t);return}o?.requestFullscreen().catch(()=>{})}function C(){M()}return{el:i,play:y,pause:()=>o?.pause().catch(()=>{}),paused:()=>d,currentTime:()=>s,setCurrentTime:e=>{o?.setCurrentTime(e).catch(()=>{}),n.trigger(`timeupdate`),n.trigger(`seeking`)},duration:()=>c,volume:()=>l,setVolume:e=>{l=e,o?.setVolume(e).catch(()=>{})},muted:()=>u,setMuted:e=>{u=e,o?.setMuted(e).then(()=>v(()=>n.trigger(`volumechange`),50)).catch(()=>{})},playbackRate:()=>f,setPlaybackRate:e=>{f=e,o?.setPlaybackRate(e).catch(()=>{}),n.trigger(`ratechange`)},bufferedEnd:()=>s,error:()=>g,setSrc:()=>{},featuresPlaybackRate:()=>!1,enterFullscreen:S,exitFullscreen:C,on:n.on,off:n.off,dispose:()=>{h=!0,_.forEach(clearTimeout),_.clear(),o?.destroy().catch(()=>{}),o=null,ve(e,i,V),n.dispose()}}}function ke(e){let t=e.match(/[?&]video=([a-zA-Z0-9]+)/);return t?t[1]:e.match(/(?:dailymotion\.com\/(?:embed\/)?video\/|dai\.ly\/)([a-zA-Z0-9]+)/)?.[1]??null}function Ae(e,t){let n=q(),{techId:r,wrapper:i}=ge(e,re),a=ye(e),o=ke(t.src),s=typeof t.customVars?.playerId==`string`?t.customVars.playerId:void 0,c=null,l=0,u=0,d=1,f=!1,p=!0,m=!1,h=!1,g=null;async function _(){if(!o){g={code:4,message:`Could not parse video ID from source URL`},n.trigger(`error`);return}try{let e=await me(s?`https://geo.dailymotion.com/libs/player/${s}.js`:`https://geo.dailymotion.com/libs/player.js`,s||`dailymotion-sdk`).then(()=>window.dailymotion);if(!e)return;let i=await e.createPlayer(r,{...s&&{player:s},video:o,params:{autoplay:!!t.autoplay,mute:!!t.muted}});c=i;let a=e.events;m&&i.play(),i.on(a.PLAYER_CRITICALPATHREADY,e=>{let t=e.videoThumbnails;if(!t)return;let r=Object.keys(t).map(Number).sort((e,t)=>t-e)[0],i=r===void 0?void 0:t[r];i&&n.trigger(`posterchange`,i)}),i.on(a.VIDEO_PLAY,()=>{p=!1,n.trigger(`play`),n.trigger(`playing`),!t.autoplay&&!h&&(h=!0,i.pause())}),i.on(a.VIDEO_PLAYING,()=>{p=!1,n.trigger(`play`),n.trigger(`playing`)}),i.on(a.VIDEO_PAUSE,()=>{p=!0,n.trigger(`pause`)}),a.VIDEO_BUFFERING&&i.on(a.VIDEO_BUFFERING,()=>n.trigger(`waiting`)),i.on(a.VIDEO_END,()=>{p=!0,n.trigger(`ended`)}),i.on(a.VIDEO_TIMECHANGE,e=>{l=e.videoTime??l,u=e.videoDuration??u,n.trigger(`timeupdate`)}),i.on(a.VIDEO_DURATIONCHANGE,e=>{u=e.videoDuration??u,n.trigger(`durationchange`)}),i.on(a.VIDEO_SEEKSTART,()=>n.trigger(`seeking`)),i.on(a.VIDEO_SEEKEND,e=>{l=e.videoTime??l,n.trigger(`seeked`)}),i.on(a.PLAYER_VOLUMECHANGE,e=>{d=e.playerVolume??d,f=e.playerIsMuted??f,n.trigger(`volumechange`)}),i.on(a.PLAYER_ERROR,()=>n.trigger(`error`)),a.AD_START&&i.on(a.AD_START,()=>{p=!1,n.trigger(`play`),n.trigger(`adstart`)}),a.AD_END&&i.on(a.AD_END,()=>n.trigger(`adend`))}catch(e){g={code:4,message:e instanceof Error?e.message:`This video could not be played.`},n.trigger(`error`)}}_();function v(){c?c.play():m=!0}function y(){if(A()){c?.setFullscreen(!0);return}a&&j(a)}function b(){if(A()){c?.setFullscreen(!1);return}M()}return{el:i,play:v,pause:()=>c?.pause(),paused:()=>p,currentTime:()=>l,setCurrentTime:e=>{l=e,c?.seek(e),n.trigger(`seeking`)},duration:()=>u,volume:()=>d,setVolume:e=>{d=e,c?.setVolume(e)},muted:()=>f,setMuted:e=>{f=e,c?.setMute(e)},playbackRate:()=>1,setPlaybackRate:()=>{},bufferedEnd:()=>l,error:()=>g,setSrc:()=>{},featuresPlaybackRate:()=>!1,enterFullscreen:y,exitFullscreen:b,on:n.on,off:n.off,dispose:()=>{c?.destroy?.(),c=null,ve(e,i,re),n.dispose()}}}const je=[{test:e=>/youtu\.be|youtube\.com/.test(e),key:`youtube`,embed:!0},{test:e=>/vimeo\.com|player\.vimeo\.com/.test(e),key:`vimeo`,embed:!0},{test:e=>/dailymotion\.com|dai\.ly/.test(e),key:`dailymotion`,embed:!0},{test:e=>/cdn\.jwplayer\.com/.test(e)||e.startsWith(`jwplayer://`),key:`jwplayer`,embed:!1},{test:e=>/players\.brightcove\.net/.test(e),key:`brightcove`,embed:!1}];function Me(e){return je.find(t=>t.test(e))?.key??`html5`}function Ne(e){if(/\.m3u8(\?|#|$)/.test(e))return`application/x-mpegURL`;if(/\.mp4(\?|#|$)/.test(e))return`video/mp4`}function Pe(e){return je.find(t=>t.test(e))?.embed??!1}const Fe={youtube:Ee,vimeo:Oe,dailymotion:Ae};function Ie(e,t,n){let r=Fe[Me(e)];return r?r(t,n):null}async function Le(e){let t=Me(e);return t===`jwplayer`?ce(e):t===`brightcove`?fe(e):{src:e,type:Ne(e)}}const Re=`application/x-mpegURL`,ze=[`play`,`pause`,`ended`,`error`,`timeupdate`,`durationchange`,`progress`,`volumechange`,`ratechange`,`seeking`,`seeked`,`waiting`,`playing`,`canplay`];function Be(e,t){let n=q(),r=null,i=!1,a=null;async function o(t){let{default:o}=await import(`hls.js`);if(i||a!==t)return;if(typeof o?.isSupported!=`function`||!o.isSupported()){e.src=t;return}r=new o({liveDurationInfinity:!0}),r.loadSource(t),r.attachMedia(e);let s=o.Events,c=o.ErrorTypes;r.on(s.ERROR,(e,o)=>{if(!(!o.fatal||i||a!==t))switch(o.type){case c.NETWORK_ERROR:r?.startLoad();break;case c.MEDIA_ERROR:r?.recoverMediaError();break;default:r?.destroy(),r=null,n.trigger(`error`);break}})}function s(){return e.canPlayType(`application/vnd.apple.mpegurl`)!==``||e.canPlayType(Re)!==``}function c(t,n){if(r?.destroy(),r=null,a=null,n===Re&&!s()){a=t,o(t);return}e.src=t}let l=e=>()=>n.trigger(e),u=ze.map(e=>[e,l(e)]);for(let[t,n]of u)e.addEventListener(t,n);let d=[[`webkitbeginfullscreen`,l(`nativefullscreenenter`)],[`webkitendfullscreen`,l(`nativefullscreenexit`)]];for(let[t,n]of d)e.addEventListener(t,n);e.poster=t.poster??``,e.muted=t.muted??t.autoplay??!1,e.playbackRate=t.playbackRate??1,e.playsInline=!0,c(t.src,t.type),t.autoplay&&e.play();function f(){let t=e;if(typeof t.webkitEnterFullscreen==`function`){t.webkitEnterFullscreen();return}let n=e.closest(`.player__shell`);n instanceof HTMLElement&&j(n)}function p(){let t=e;if(typeof t.webkitExitFullscreen==`function`){t.webkitExitFullscreen();return}M()}return{el:e,play:()=>e.play(),pause:()=>e.pause(),paused:()=>e.paused,currentTime:()=>e.currentTime,setCurrentTime:t=>{e.currentTime=t},duration:()=>e.duration,volume:()=>e.volume,setVolume:t=>{e.volume=t},muted:()=>e.muted,setMuted:t=>{e.muted=t},playbackRate:()=>e.playbackRate,setPlaybackRate:t=>{e.playbackRate=t},bufferedEnd:()=>{let{buffered:t,duration:n}=e;if(!t.length)return 0;let r=t.end(t.length-1);return n&&r>n?n:r},error:()=>{let t=e.error;return t?{code:t.code,message:t.message||`This video could not be played.`}:null},setSrc:c,featuresPlaybackRate:()=>!0,enterFullscreen:f,exitFullscreen:p,on:n.on,off:n.off,dispose:()=>{i=!0,r?.destroy();for(let[t,n]of u)e.removeEventListener(t,n);for(let[t,n]of d)e.removeEventListener(t,n);n.dispose()}}}function Ve(){return window.google?.ima?Promise.resolve():new Promise((e,t)=>{let n=document.createElement(`script`);n.src=`https://imasdk.googleapis.com/js/sdkloader/ima3.js`,n.onload=()=>e(),n.onerror=()=>t(Error(`Failed to load Google IMA SDK`)),document.head.appendChild(n)})}function He(e,t,n,r){let i=document.createElement(`div`);i.className=`ima-ad-container`,e.appendChild(i);let a=null,o=null,s=null,c=!1,l=!1,u=!1,d=!1,f=!1,p=!1,m=1,h=new ResizeObserver(([e])=>{let t=window.google?.ima;if(!s||!t)return;let{width:n,height:r}=e.contentRect;s.resize(n,r,t.ViewMode.NORMAL)});h.observe(t);function g(){o?.contentComplete()}function _(t){d=t,e.classList.toggle(H,t),t||(f=!1,e.classList.remove(U))}function v(){if(c||!l||!u||!a||!o)return;c=!0;let e=window.google?.ima;if(!e)return;a.initialize();let t=new e.AdsRequest;t.adTagUrl=n,o.requestAds(t)}Ve().then(()=>{if(p)return;let n=window.google?.ima;n&&(a=new n.AdDisplayContainer(i,t),o=new n.AdsLoader(a),l=!0,o.addEventListener(n.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,i=>{if(p)return;let a=new n.AdsRenderingSettings;a.restoreCustomPlaybackStateOnAdBreakComplete=!0,s=i.getAdsManager(t,a),t.addEventListener(`ended`,g),s.addEventListener(n.AdEvent.Type.CONTENT_PAUSE_REQUESTED,()=>{t.removeEventListener(`ended`,g),t.pause(),_(!0),r.onAdStart();let e=s?.getVolume()??1;e>0&&(m=e),r.onAdMuteChange(e===0)}),s.addEventListener(n.AdEvent.Type.CONTENT_RESUME_REQUESTED,()=>{t.addEventListener(`ended`,g),_(!1),r.onAdEnd(),t.ended||t.play()}),s.addEventListener(n.AdEvent.Type.PAUSED,()=>{f=!0,e.classList.add(U),r.onAdPauseChange(!0)}),s.addEventListener(n.AdEvent.Type.RESUMED,()=>{f=!1,e.classList.remove(U),r.onAdPauseChange(!1)}),s.addEventListener(n.AdEvent.Type.AD_PROGRESS,()=>{r.onAdProgress(s?.getRemainingTime()??0)}),s.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{_(!1),r.onError(e.getError().getMessage()),t.play()});try{s.init(t.clientWidth,t.clientHeight,n.ViewMode.NORMAL),s.start()}catch(e){r.onError(e instanceof Error?e.message:`Ad playback failed to start.`)}}),o.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{r.onError(e.getError().getMessage())}),v())}).catch(e=>r.onError(e.message));function y(){u=!0,v()}function b(){if(!s)return;let e=s.getVolume();e>0?(m=e,s.setVolume(0)):s.setVolume(m||1),r.onAdMuteChange(s.getVolume()===0)}return{isAdPlaying:()=>d,isAdPaused:()=>f,requestAdsOnFirstPlay:y,pauseAd:()=>s?.pause(),resumeAd:()=>s?.resume(),toggleAdMute:b,dispose:()=>{p=!0,h.disconnect(),t.removeEventListener(`ended`,g),s?.destroy(),o?.destroy(),i.remove(),e.classList.remove(H,U)}}}const Ue=new Set;function We(e){return Ue.add(e),()=>Ue.delete(e)}function Ge(e){Ue.forEach(t=>{if(t!==e)try{t()}catch{}})}function Ke(e){let t=C(!1),n=C(!1);function r(){let e=document;t.value=!!(document.fullscreenElement||e.webkitFullscreenElement),n.value=!1}function i(){let n=e();if(n){if(t.value){n.exitFullscreen();return}n.enterFullscreen()}}function a(){n.value=!0}function o(e){e.on(R,()=>{n.value=!0}),e.on(z,()=>{n.value=!1}),e.on(`nativefullscreenenter`,()=>{t.value=!0,n.value=!1}),e.on(`nativefullscreenexit`,()=>{t.value=!1,n.value=!1})}return y(()=>{document.addEventListener(`fullscreenchange`,r),document.addEventListener(`webkitfullscreenchange`,r)}),v(()=>{document.removeEventListener(`fullscreenchange`,r),document.removeEventListener(`webkitfullscreenchange`,r)}),{isFullscreen:t,isFullscreenPending:n,toggleFullscreen:i,markFullscreenPending:a,attachPlayerEvents:o}}function qe(){let e=C(!1),t=null;function n(){clearTimeout(t??void 0),e.value=!1}function r(r){r.on(`waiting`,()=>{clearTimeout(t??void 0),t=setTimeout(()=>{e.value=!0},500)}),r.on(`playing`,n),r.on(`canplay`,n)}return v(()=>clearTimeout(t??void 0)),{isBuffering:e,attachPlayerEvents:r,reset:n}}function Je(e,t,n){let r=new Set;function i(){if(!t.value)return;let i=e.value/t.value;for(let[e,t]of ae)!r.has(e)&&i>=e&&(r.add(e),n(t))}function a(){r.clear()}return{checkQuartiles:i,reset:a}}function Ye(){try{return JSON.parse(localStorage.getItem(`player:positions`)??`[]`)}catch{return[]}}function Xe(e){localStorage.setItem(`player:positions`,JSON.stringify(e))}function Ze(e,t){if(t<5)return;let n=Ye().filter(t=>t.url!==e);n.unshift({url:e,time:t}),Xe(n.slice(0,5))}function Qe(e){return Ye().find(t=>t.url===e)?.time??null}function $e(e){Xe(Ye().filter(t=>t.url!==e))}function et(e,t,n){let r=!1;function i(t){if(r)return;let n=Qe(e);n&&t.setCurrentTime(n),r=!0}function a(t){!t||n.value||Ze(e,t.currentTime()??0)}function o(){$e(e)}function s(){document.visibilityState===`hidden`&&a(t())}return y(()=>document.addEventListener(`visibilitychange`,s)),v(()=>{a(t()),document.removeEventListener(`visibilitychange`,s)}),{restoreOnce:i,save:a,clear:o}}function tt(e,t,n,r){let i=null;y(()=>{let a=e.value?.closest(`.player__shell`);a&&(i=new IntersectionObserver(([e])=>{let i=t();!e.isIntersecting&&i&&!i.paused()&&!n.value&&!r.value&&i.pause()},{threshold:.1}),i.observe(a))}),v(()=>i?.disconnect())}function nt(e,t,n,r,i,a){function o(){let n=e();if(!(!n||!t.value)){if(!a.value){n.play();return}n.pause()}}function s(t){e()?.setCurrentTime(n.value*(t/100))}function c(){let t=e();t?.setMuted(!t.muted())}function l(t){let n=e();n&&(n.setVolume(t),n.setMuted(t===0))}function u(){r.value=!r.value}function d(t){let n=e();n&&(n.setPlaybackRate(t),i.value=t)}return{togglePlay:o,seek:s,toggleMute:c,setVolume:l,toggleLoop:u,setPlaybackRate:d}}function rt(e,t){let{isPlaying:n,hasEnded:r,isReady:i,isAdPlaying:a,isLive:o,current:s,total:c,buffered:l,vol:u,isMuted:d,isLooping:f,playbackRate:p,supportsPlaybackRate:m,hasStarted:h,isError:g,errorMessage:_}=e,{fire:v,pauseThisPlayer:y,positionMemory:b,quartiles:x,buffering:S,fullscreen:C}=t;function w(e){i.value=!0,m.value=e.featuresPlaybackRate();let t=()=>{let t=e.duration();if(t===1/0){o.value=!0;return}o.value=!1,t&&t>0&&isFinite(t)&&(c.value=t)};e.on(`adstart`,()=>{Ge(y),a.value=!0,v(`adstart`)}),e.on(`adend`,()=>{a.value=!1,v(`adend`)}),e.on(`play`,()=>{Ge(y),h.value=!0,n.value=!0,r.value=!1,o.value||b.restoreOnce(e),v(`play`)}),e.on(`pause`,()=>{n.value=!1,o.value||b.save(e),v(`pause`)}),e.on(`ended`,()=>{if(n.value=!1,x.reset(),S.reset(),f.value){e.setCurrentTime(0),e.play();return}c.value&&(s.value=c.value),r.value=!0,b.clear(),v(`ended`)}),e.on(`seeked`,()=>{v(`seeked`)}),e.on(`error`,()=>{let t=e.error();_.value=t?.message||`This video could not be played.`,g.value=!0,i.value=!0,v(`error`,{error:t})}),e.on(`timeupdate`,()=>{r.value||(s.value=e.currentTime()??0,c.value||t(),m.value||=e.featuresPlaybackRate(),o.value||x.checkQuartiles())}),e.on(`durationchange`,t),e.on(`progress`,()=>{let t=e.duration();l.value=t?e.bufferedEnd()/t*100:0}),e.on(`volumechange`,()=>{let t=e.muted();u.value=e.volume()??1,d.value=t??!1,h.value&&v(`volumechange`,{isMuted:t})}),e.on(`ratechange`,()=>{let t=e.playbackRate()??1;p.value=t,h.value&&v(`ratechange`,{playbackRate:t})}),S.attachPlayerEvents(e),C.attachPlayerEvents(e)}return{attachPlayerEvents:w}}function it(e,t,r){let i=null,a=null,o=null,s=null,c=C(!1),l=C(!1),u=C(!1),d=C(!1),f=C(!1),p=C(!1),m=C(0),h=C(!1),g=C(0),_=C(0),b=C(0),x=C(1),S=C(t.muted??t.autoplay??!1),w=C(!1),T=C(t.playbackRate??1),E=C(!1),O=C(!1),k=C(!1),A=C(``),j=C(!1),M=n(()=>_.value?g.value/_.value*100:0),N=n(()=>Math.max(b.value,M.value)),I=()=>i,L=Ke(I),ee=qe(),te=et(t.videoUrl,I,l);function R(e,n={}){r(`state-change`,{type:e,currentTime:g.value,duration:_.value,src:t.videoUrl,...n,payload:t.payload})}let z=Je(g,_,R);function ne(){!i||!s||(k.value=!1,A.value=``,i.setSrc(s.src,s.type))}function B(){a?.toggleAdMute()}function V(){if(a?.isAdPlaying()){a.pauseAd();return}i?.pause()}function re(){if(a?.isAdPlaying()){a.isAdPaused()?a.resumeAd():a.pauseAd();return}H.togglePlay()}let H=nt(I,u,_,w,T,c),{attachPlayerEvents:U}=rt({isPlaying:c,hasEnded:l,isReady:u,isAdPlaying:d,isLive:h,current:g,total:_,buffered:b,vol:x,isMuted:S,isLooping:w,playbackRate:T,supportsPlaybackRate:E,hasStarted:O,isError:k,errorMessage:A},{fire:R,pauseThisPlayer:V,positionMemory:te,quartiles:z,buffering:ee,fullscreen:L});return D(()=>t.muted,e=>{!i||e===void 0||i.setMuted(e)}),D(()=>t.playbackRate,e=>{!i||e===void 0||i.setPlaybackRate(e)}),tt(e,I,L.isFullscreen,L.isFullscreenPending),D(O,t=>{!t||!e.value||!i||i.el===e.value||_e(e.value,i.el)}),y(async()=>{if(Pe(t.videoUrl)){if(!e.value)return;let n=Ie(t.videoUrl,e.value,{src:t.videoUrl,poster:t.poster,autoplay:t.autoplay,muted:t.muted??t.autoplay,nativeUi:t.nativeUi});if(!n){k.value=!0,u.value=!0,A.value=`This platform is not yet supported.`;return}j.value=!!t.nativeUi,i=n,s={src:t.videoUrl},o=We(V),U(i);return}let n=await Le(t.videoUrl).catch(()=>({src:t.videoUrl}));if(!e.value)return;s={src:n.src,type:n.type},i=Be(e.value,{src:n.src,type:n.type,poster:n.poster||t.poster||``,autoplay:t.autoplay,muted:t.muted??t.autoplay,playbackRate:T.value});let r=P(t.adTagUrl||n.adTagUrl||``,t.adTagParams);r&&e.value.parentElement&&(a=He(e.value.parentElement,e.value,r,{onAdStart:()=>{d.value=!0,f.value=!1,R(`adstart`)},onAdEnd:()=>{d.value=!1,f.value=!1,m.value=0,R(`adend`)},onAdPauseChange:e=>{f.value=e,e||Ge(V)},onAdMuteChange:e=>{p.value=e},onAdProgress:e=>{m.value=e},onError:e=>{d.value=!1,f.value=!1,m.value=0,console.error(`Ad playback error for ${r}:`,e)}}),i.on(`play`,()=>a?.requestAdsOnFirstPlay())),o=We(V),U(i)}),v(()=>{o?.(),a?.dispose(),a=null,i?.dispose(),i=null}),{isPlaying:c,hasEnded:l,isReady:u,isAdPlaying:d,isAdPaused:f,isAdMuted:p,adRemainingTime:m,isLive:h,isBuffering:ee.isBuffering,current:g,total:_,vol:x,isMuted:S,isLooping:w,playbackRate:T,hasStarted:O,isError:k,errorMessage:A,progress:M,bufferedDisplay:N,isFullscreen:L.isFullscreen,isFullscreenPending:L.isFullscreenPending,fmt:F,fire:R,retry:ne,togglePlay:re,seek:H.seek,toggleMute:H.toggleMute,setVolume:H.setVolume,toggleFullscreen:L.toggleFullscreen,markFullscreenPending:L.markFullscreenPending,toggleLoop:H.toggleLoop,toggleAdMute:B,setPlaybackRate:H.setPlaybackRate,supportsPlaybackRate:E,nativeUi:j}}function at(e){let t=C(!0),n=C(!1),r=null,i=0;function a(e=400){i=Date.now()+e}function o(e=3500){clearTimeout(r??void 0),r=setTimeout(()=>{t.value=!1,n.value=!1},e)}function s(){clearTimeout(r??void 0)}function c(){n.value=!0,t.value=!0,o()}function l(){n.value=!1,e.value&&o()}function u(){e.value&&o()}function d(){t.value=!0,e.value&&o()}function f(){t.value=!0,o()}function p(){Date.now()<i||e.value&&o(600)}return D(e,e=>{if(!e){clearTimeout(r??void 0),t.value=!0;return}o()}),v(()=>clearTimeout(r??void 0)),{showHUD:t,isOpen:n,scheduleHide:o,pauseHide:s,onVideoTap:d,onMouseMove:f,onMouseLeave:p,openControls:c,closeControls:l,keepOpen:u,suppressMouseLeave:a}}const Y=Symbol(`player`),X=Symbol(`hud`),ot=Symbol(`action`),st=Symbol(`compact`),ct=Symbol(`playlist`);function Z(e){let t=f(e);if(t===void 0)throw Error(`[video-player] missing "${String(e.description)}" context — this component must be rendered inside <VideoPlayer>`);return t}function lt(e,t){return{hudVisible:n(()=>!e.isReady||e.isError?!1:t.showHUD),popupVisible:n(()=>!e.isReady||e.isError?!1:e.isFullscreen?t.showHUD:t.isOpen)}}function ut(e,t){return n(()=>!(!e?.value||t.isFullscreen))}function dt(e,t,r){let i=n(()=>e?.value??null),a=n(()=>!!i.value&&typeof i.value==`object`),o=n(()=>a.value?i.value:null),s=n(()=>i.value===`mute`?t.isMuted?`Unmute`:`Mute`:i.value===`loop`?t.isLooping?`Disable loop`:`Loop`:i.value===`autoplay`?r.autoAdvance?`Disable autoplay next`:`Autoplay next`:``),c=n(()=>i.value===`mute`?t.isMuted:i.value===`loop`?t.isLooping:i.value===`autoplay`&&r.autoAdvance);function l(){i.value===`mute`?t.toggleMute():i.value===`loop`?t.toggleLoop():i.value===`autoplay`&&r.toggleAutoAdvance()}return{currentAction:i,isCustom:a,customAction:o,builtinLabel:s,builtinActive:c,onBuiltinClick:l}}var Q=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n};const ft={},pt={viewBox:`0 0 24 24`,fill:`currentColor`};function mt(e,t){return b(),a(`svg`,pt,[...t[0]||=[o(`path`,{d:`M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z`},null,-1)]])}var ht=Q(ft,[[`render`,mt]]);const gt={},_t={viewBox:`0 0 24 24`,fill:`currentColor`};function vt(e,t){return b(),a(`svg`,_t,[...t[0]||=[o(`path`,{d:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`},null,-1)]])}var yt=Q(gt,[[`render`,vt]]);const bt={},xt={viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function St(e,t){return b(),a(`svg`,xt,[...t[0]||=[s(`<line x1="4" y1="6" x2="20" y2="6"></line><line x1="4" y1="12" x2="20" y2="12"></line><line x1="4" y1="18" x2="20" y2="18"></line><circle cx="9" cy="6" r="2.5" fill="currentColor" stroke="none"></circle><circle cx="15" cy="12" r="2.5" fill="currentColor" stroke="none"></circle><circle cx="9" cy="18" r="2.5" fill="currentColor" stroke="none"></circle>`,6)]])}var Ct=Q(bt,[[`render`,St]]);const wt={},Tt={viewBox:`0 0 24 24`,fill:`currentColor`};function Et(e,t){return b(),a(`svg`,Tt,[...t[0]||=[o(`path`,{d:`M4 12l1.41 1.41L11 7.83V20h2V7.83l5.59 5.58L20 12l-8-8-8 8z`},null,-1)]])}var Dt=Q(wt,[[`render`,Et]]);const Ot={},kt={viewBox:`0 0 24 24`,fill:`currentColor`};function At(e,t){return b(),a(`svg`,kt,[...t[0]||=[o(`path`,{d:`M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z`},null,-1)]])}var jt=Q(Ot,[[`render`,At]]);const Mt={},Nt={viewBox:`0 0 24 24`,fill:`currentColor`};function Pt(e,t){return b(),a(`svg`,Nt,[...t[0]||=[o(`path`,{d:`M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z`},null,-1)]])}var Ft=Q(Mt,[[`render`,Pt]]);const It={},Lt={viewBox:`0 0 24 24`,fill:`currentColor`};function Rt(e,t){return b(),a(`svg`,Lt,[...t[0]||=[o(`path`,{d:`M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4z`},null,-1)]])}var zt=Q(It,[[`render`,Rt]]);const Bt={},Vt={viewBox:`0 0 24 24`,fill:`currentColor`};function Ht(e,t){return b(),a(`svg`,Vt,[...t[0]||=[o(`circle`,{cx:`5`,cy:`12`,r:`2`},null,-1),o(`circle`,{cx:`12`,cy:`12`,r:`2`},null,-1),o(`circle`,{cx:`19`,cy:`12`,r:`2`},null,-1)]])}var Ut=Q(Bt,[[`render`,Ht]]);const Wt={},Gt={viewBox:`0 0 24 24`,fill:`currentColor`};function Kt(e,t){return b(),a(`svg`,Gt,[...t[0]||=[o(`path`,{d:`M6 19h4V5H6v14zm8-14v14h4V5h-4z`},null,-1)]])}var qt=Q(Wt,[[`render`,Kt]]);const Jt={},Yt={viewBox:`0 0 24 24`,fill:`currentColor`};function Xt(e,t){return b(),a(`svg`,Yt,[...t[0]||=[o(`path`,{d:`M8 5v14l11-7z`},null,-1)]])}var Zt=Q(Jt,[[`render`,Xt]]);const Qt={},$t={viewBox:`0 0 24 24`,fill:`currentColor`};function en(e,t){return b(),a(`svg`,$t,[...t[0]||=[o(`path`,{d:`M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z`},null,-1)]])}var tn=Q(Qt,[[`render`,en]]);const nn={},rn={viewBox:`0 0 24 24`,fill:`currentColor`};function an(e,t){return b(),a(`svg`,rn,[...t[0]||=[o(`path`,{d:`M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z`},null,-1)]])}var on=Q(nn,[[`render`,an]]);const sn={},cn={viewBox:`0 0 24 24`,fill:`currentColor`};function ln(e,t){return b(),a(`svg`,cn,[...t[0]||=[o(`path`,{d:`M16.5 12A4.5 4.5 0 0 0 14 7.97v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51A8.796 8.796 0 0 0 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.06A8.99 8.99 0 0 0 17.73 18L19 19.27 20.27 18 5.27 3 4.27 3zM12 4L9.91 6.09 12 8.18V4z`},null,-1)]])}var un=Q(sn,[[`render`,ln]]);const dn={},fn={viewBox:`0 0 24 24`,fill:`currentColor`};function pn(e,t){return b(),a(`svg`,fn,[...t[0]||=[o(`path`,{d:`M3 9v6h4l5 5V4L7 9H3zm13.5 3A4.5 4.5 0 0 0 14 7.97v8.05c1.48-.73 2.5-2.25 2.5-4.02z`},null,-1)]])}var mn=Q(dn,[[`render`,pn]]);const hn=[`aria-label`];var $=Q(u({__name:`PlayPauseButton`,props:{isPlaying:{type:Boolean,required:!0},hasEnded:{type:Boolean,required:!1,default:!1},size:{type:String,required:!1,default:`sm`}},emits:[`toggle-play`],setup(e){let t=e,i=n(()=>t.isPlaying?`Pause`:t.hasEnded?`Replay`:`Play`);return(t,n)=>(b(),a(`button`,{class:h([`ppbtn`,`ppbtn--${e.size}`]),"aria-label":i.value,onClick:n[0]||=k(e=>t.$emit(`toggle-play`),[`stop`])},[e.isPlaying?(b(),r(E(qt),{key:0})):e.hasEnded?(b(),r(E(tn),{key:1})):(b(),r(E(Zt),{key:2}))],10,hn))}}),[[`__scopeId`,`data-v-85902525`]]),gn=u({__name:`VolumeIcon`,setup(e){let t=Z(Y),i=n(()=>!t.isMuted&&t.vol>0);return(e,t)=>i.value?(b(),r(E(mn),{key:0})):(b(),r(E(un),{key:1}))}}),_n=Q(u({__name:`Spinner`,props:{size:{type:Number,required:!1,default:14},borderWidth:{type:Number,required:!1,default:2}},setup(e){return(t,n)=>(b(),a(`div`,{class:`spinner`,style:_({width:`${e.size}px`,height:`${e.size}px`,borderWidth:`${e.borderWidth}px`})},null,4))}}),[[`__scopeId`,`data-v-259be2b2`]]);const vn={class:`hud`},yn=[`aria-label`],bn=[`aria-label`],xn=[`aria-label`],Sn=[`aria-label`,`innerHTML`],Cn={key:4,class:`hud__spacer`},wn={class:`hud__play-wrap`};var Tn=Q(u({__name:`HudButtons`,setup(t){let n=Z(Y),s=Z(X),{currentAction:c,isCustom:u,customAction:d,builtinLabel:p,builtinActive:m,onBuiltinClick:g}=dt(f(ot),n,Z(ct));return(t,f)=>(b(),a(`div`,vn,[!E(s).isOpen&&!E(n).isFullscreen?(b(),a(e,{key:0},[E(c)===`mute`?(b(),a(`button`,{key:0,class:h([`hud__btn`,{"hud__btn--active":E(m)}]),"aria-label":E(p),onClick:f[0]||=k((...e)=>E(g)&&E(g)(...e),[`stop`])},[l(gn)],10,yn)):E(c)===`loop`?(b(),a(`button`,{key:1,class:h([`hud__btn`,{"hud__btn--active":E(m)}]),"aria-label":E(p),onClick:f[1]||=k((...e)=>E(g)&&E(g)(...e),[`stop`])},[l(E(zt))],10,bn)):E(c)===`autoplay`?(b(),a(`button`,{key:2,class:h([`hud__btn`,{"hud__btn--active":E(m)}]),"aria-label":E(p),onClick:f[2]||=k((...e)=>E(g)&&E(g)(...e),[`stop`])},[l(E(on))],10,xn)):E(u)&&E(d)?(b(),a(`button`,{key:3,class:`hud__btn`,"aria-label":E(d).label,onClick:f[3]||=k(e=>E(d).onClick(),[`stop`]),innerHTML:E(d).icon},null,8,Sn)):(b(),a(`div`,Cn))],64)):i(`v-if`,!0),o(`div`,wn,[l($,{"is-playing":E(n).isPlaying,"has-ended":E(n).hasEnded,size:`lg`,onTogglePlay:E(n).togglePlay},null,8,[`is-playing`,`has-ended`,`onTogglePlay`]),E(n).isBuffering?(b(),r(_n,{key:0,class:`hud__buf-spinner`})):i(`v-if`,!0)]),!E(s).isOpen&&!E(n).isFullscreen?(b(),a(`button`,{key:1,class:`hud__btn`,"aria-label":`Show controls`,onClick:f[4]||=k((...e)=>E(s).openControls&&E(s).openControls(...e),[`stop`])},[l(E(Ct))])):i(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-a6d118e7`]]);function En(e){let t=C(null),r=n(()=>t.value??e.progress),i=null;function a(){i&&clearTimeout(i),i=null,t.value=null}function o(e){i&&clearTimeout(i),i=null,t.value=Number(e.target.value)}function s(n){let r=Number(n.target.value);t.value=r,e.seek(r),i&&clearTimeout(i),i=setTimeout(a,3e3)}return D(()=>e.current,()=>{if(t.value===null||!e.total)return;let n=t.value/100*e.total;Math.abs(e.current-n)<1&&a()}),v(a),{displaySeek:r,onSeekInput:o,onSeekChange:s}}function Dn(e,t,n){if(!document.startViewTransition||!e.value){n();return}e.value.style.viewTransitionName=t,document.startViewTransition(async()=>{n(),await m()}).finished.finally(()=>{e.value&&(e.value.style.viewTransitionName=``)})}const On={class:`controls__vol-header`},kn=[`aria-label`],An={class:`controls__vol-body`},jn=[`value`],Mn={class:`controls__vol-pct`};var Nn=Q(u({__name:`VolumePanel`,emits:[`back`],setup(t){let r=Z(Y),i=Z(X),s=n(()=>r.isMuted?0:Math.round(r.vol*100));function c(e){r.setVolume(Number(e.target.value)/100)}return(t,n)=>(b(),a(e,null,[o(`div`,On,[o(`button`,{class:`controls__btn`,"aria-label":`Back`,onClick:n[0]||=e=>t.$emit(`back`)},[l(E(ht))]),n[6]||=o(`span`,{class:`controls__vol-label`},`Volume`,-1),o(`button`,{class:`controls__btn`,"aria-label":E(r).isMuted?`Unmute`:`Mute`,onClick:n[1]||=e=>E(r).toggleMute()},[l(gn)],8,kn)]),o(`div`,An,[o(`input`,{type:`range`,min:`0`,max:`100`,step:`1`,value:s.value,class:`controls__vol-slider`,style:_({"--v":s.value+`%`}),"aria-label":`Volume`,onInput:c,onMousedown:n[2]||=e=>E(i).pauseHide(),onMouseup:n[3]||=e=>E(i).scheduleHide(),onTouchstartPassive:n[4]||=e=>E(i).pauseHide(),onTouchend:n[5]||=e=>E(i).scheduleHide()},null,44,jn),o(`span`,Mn,w(s.value)+`%`,1)])],64))}}),[[`__scopeId`,`data-v-10b0ae67`]]);function Pn(e){function t(){let t=W.indexOf(e.playbackRate);e.setPlaybackRate(W[(t+1)%W.length])}function n(e){return`${e}×`}return{cycleRate:t,fmtRate:n}}const Fn={class:`controls__more-header`},In={class:`controls__more-body`},Ln={class:`controls__more-value`},Rn={class:`controls__more-row-label`},zn={class:`controls__more-value`},Bn={class:`controls__more-row-label`},Vn={class:`controls__more-value`},Hn=[`aria-label`],Un={class:`controls__more-row-label`},Wn=[`innerHTML`];var Gn=Q(u({__name:`MoreMenu`,props:{isCustom:{type:Boolean,required:!0},customAction:{type:[Object,null],required:!0}},emits:[`back`],setup(t){let n=Z(Y),r=Z(ct),{cycleRate:s,fmtRate:u}=Pn(n);return(d,f)=>(b(),a(e,null,[o(`div`,Fn,[o(`button`,{class:`controls__btn`,"aria-label":`Back`,onClick:f[0]||=e=>d.$emit(`back`)},[l(E(ht))]),f[5]||=o(`span`,{class:`controls__more-label`},`More`,-1)]),o(`div`,In,[E(n).supportsPlaybackRate?(b(),a(`button`,{key:0,class:`controls__more-row`,"aria-label":`Playback speed`,onClick:f[1]||=(...e)=>E(s)&&E(s)(...e)},[f[6]||=o(`span`,null,`Playback speed`,-1),o(`span`,Ln,w(E(u)(E(n).playbackRate)),1)])):i(`v-if`,!0),o(`button`,{class:h([`controls__more-row`,{"controls__more-row--active":E(n).isLooping}]),"aria-label":`Toggle loop`,onClick:f[2]||=e=>E(n).toggleLoop()},[o(`span`,Rn,[l(E(zt),{class:`controls__more-row-icon`}),f[7]||=c(`Loop`,-1)]),o(`span`,zn,w(E(n).isLooping?`On`:`Off`),1)],2),E(r).hasPlaylist?(b(),a(`button`,{key:1,class:h([`controls__more-row`,{"controls__more-row--active":E(r).autoAdvance}]),"aria-label":`Toggle autoplay next`,onClick:f[3]||=e=>E(r).toggleAutoAdvance()},[o(`span`,Bn,[l(E(on),{class:`controls__more-row-icon`}),f[8]||=c(`Autoplay next`,-1)]),o(`span`,Vn,w(E(r).autoAdvance?`On`:`Off`),1)],2)):i(`v-if`,!0),t.isCustom&&t.customAction?(b(),a(`button`,{key:2,class:`controls__more-row`,"aria-label":t.customAction.label,onClick:f[4]||=e=>t.customAction.onClick()},[o(`span`,Un,[o(`span`,{class:`controls__more-row-icon`,innerHTML:t.customAction.icon},null,8,Wn),c(w(t.customAction.label),1)])],8,Hn)):i(`v-if`,!0)])],64))}}),[[`__scopeId`,`data-v-e89a8208`]]);const Kn=[`value`],qn={class:`controls__row`},Jn={class:`controls__play-wrap`},Yn={key:0,class:`controls__live`},Xn={key:1,class:`controls__time`},Zn={class:`controls__fs-wrap`},Qn=[`aria-label`];var $n=Q(u({__name:`ControlsPopup`,setup(t){let n=Z(Y),s=Z(X),u=Z(ct),d=ut(f(st),n),{isCustom:p,customAction:m}=dt(f(ot),n,u),g=C(!1),x=C(!1),S=C(null);function T(e){return!S.value||S.value.contains(e)?!1:(s.closeControls(),!0)}function D(e){T(e.target)}function O(e){T(e.target)&&e.preventDefault()}y(()=>{n.fire(`controlsopen`,{element:S.value}),document.addEventListener(`click`,D,!0),document.addEventListener(`touchend`,O,!0)}),v(()=>{g.value=!1,x.value=!1,n.fire(`controlsclose`,{element:S.value}),document.removeEventListener(`click`,D,!0),document.removeEventListener(`touchend`,O,!0)});function j(e){s.suppressMouseLeave(),Dn(S,`controls-popup`,e)}function M(){if(A()){n.toggleMute();return}j(()=>{g.value=!0})}function N(){j(()=>{x.value=!0})}let{displaySeek:P,onSeekInput:F,onSeekChange:I}=En(n);function L(){n.isFullscreen||n.markFullscreenPending(),n.toggleFullscreen()}return(t,f)=>(b(),a(`div`,{ref_key:`popupEl`,ref:S,class:h([`controls`,{"controls--fs":E(n).isFullscreen,"controls--compact":E(d)}]),onMousemove:f[10]||=k((...e)=>E(s).keepOpen&&E(s).keepOpen(...e),[`stop`])},[g.value?(b(),r(Nn,{key:0,onBack:f[0]||=e=>j(()=>g.value=!1)})):x.value?(b(),r(Gn,{key:1,"is-custom":E(p),"custom-action":E(m),onBack:f[1]||=e=>j(()=>x.value=!1)},null,8,[`is-custom`,`custom-action`])):(b(),a(e,{key:2},[E(n).isLive?i(`v-if`,!0):(b(),a(`input`,{key:0,type:`range`,min:`0`,max:`100`,value:E(P),class:`controls__seek`,style:_({"--p":E(P)+`%`,"--b":E(n).bufferedDisplay+`%`}),onInput:f[2]||=(...e)=>E(F)&&E(F)(...e),onChange:f[3]||=(...e)=>E(I)&&E(I)(...e),onMousedown:f[4]||=e=>E(s).pauseHide(),onMouseup:f[5]||=e=>E(s).scheduleHide(),onTouchstartPassive:f[6]||=e=>E(s).pauseHide(),onTouchend:f[7]||=e=>E(s).scheduleHide()},null,44,Kn)),o(`div`,qn,[o(`div`,Jn,[E(n).isBuffering?(b(),r(_n,{key:0})):(b(),r($,{key:1,"is-playing":E(n).isPlaying,"has-ended":E(n).hasEnded,size:`sm`,onTogglePlay:f[8]||=e=>E(n).togglePlay()},null,8,[`is-playing`,`has-ended`]))]),E(n).isLive?(b(),a(`span`,Yn,[...f[11]||=[o(`span`,{class:`controls__live-dot`},null,-1),c(`Live`,-1)]])):(b(),a(`span`,Xn,w(E(n).fmt(E(n).current))+` / `+w(E(n).fmt(E(n).total)),1)),E(u).hasNext?(b(),a(`button`,{key:2,class:`controls__btn`,"aria-label":`Play next`,onClick:f[9]||=e=>E(u).playNext()},[l(E(on))])):i(`v-if`,!0),o(`button`,{class:`controls__btn`,"aria-label":`Volume`,onClick:M},[l(gn)]),o(`button`,{class:h([`controls__btn controls__btn--more`,{"controls__btn--active":E(n).isLooping||E(n).playbackRate!==1||E(u).autoAdvance}]),"aria-label":`More`,onClick:N},[l(E(Ut))],2),o(`div`,Zn,[E(n).isFullscreenPending?(b(),r(_n,{key:0})):(b(),a(`button`,{key:1,class:`controls__btn`,"aria-label":E(n).isFullscreen?`Exit fullscreen`:`Fullscreen`,onClick:L},[E(n).isFullscreen?(b(),r(E(Ft),{key:0})):(b(),r(E(jt),{key:1}))],8,Qn))])])],64))],34))}}),[[`__scopeId`,`data-v-5712aad4`]]);const er={class:`ad-overlay`},tr={class:`ad-overlay__bar`},nr={class:`ad-overlay__badge`},rr={key:0,class:`ad-overlay__countdown`},ir=[`aria-label`],ar={key:0,class:`ad-overlay__resume`};var or=Q(u({__name:`AdOverlay`,setup(e){let t=Z(Y),s=n(()=>t.adRemainingTime>0?t.fmt(t.adRemainingTime):``);return(e,n)=>(b(),a(`div`,er,[o(`div`,tr,[o(`div`,nr,[n[2]||=o(`span`,null,`Ad`,-1),s.value?(b(),a(`span`,rr,w(s.value),1)):i(`v-if`,!0)]),o(`button`,{class:`ad-overlay__mute`,"aria-label":E(t).isAdMuted?`Unmute ad`:`Mute ad`,onClick:n[0]||=e=>E(t).toggleAdMute()},[E(t).isAdMuted?(b(),r(E(un),{key:0})):(b(),r(E(mn),{key:1}))],8,ir)]),E(t).isAdPaused?(b(),a(`div`,ar,[l($,{"is-playing":!1,size:`lg`,onTogglePlay:n[1]||=e=>E(t).togglePlay()})])):i(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-23efcc8b`]]);const sr={key:0,class:`overlay__spinner`},cr={key:0,class:`overlay__error`};var lr=Q(u({__name:`PlayerOverlay`,props:{disableTapCapture:{type:Boolean,required:!1,default:!1}},setup(n){let s=Z(Y),c=Z(X),{hudVisible:u,popupVisible:d}=lt(s,c);function f(){if(s.isAdPlaying&&s.isAdPaused){s.togglePlay();return}c.onVideoTap()}return(c,p)=>(b(),a(e,null,[!n.disableTapCapture&&E(s).hasStarted&&!(E(s).isAdPlaying&&!E(s).isAdPaused)?(b(),a(`div`,{key:0,class:`overlay__tap-capture`,onClick:f,onTouchend:k(f,[`prevent`,`stop`])},null,32)):i(`v-if`,!0),E(s).isAdPlaying?(b(),r(or,{key:1})):i(`v-if`,!0),l(t,{name:`fade`},{default:O(()=>[!E(s).isReady&&!E(s).isError?(b(),a(`div`,sr,[l(_n,{size:40,"border-width":3})])):i(`v-if`,!0)]),_:1}),l(t,{name:`fade`},{default:O(()=>[E(s).isError?(b(),a(`div`,cr,[o(`p`,null,w(E(s).errorMessage||`This video could not be played.`),1),o(`button`,{class:`overlay__retry`,onClick:p[0]||=k((...e)=>E(s).retry&&E(s).retry(...e),[`stop`])},`Retry`)])):i(`v-if`,!0)]),_:1}),o(`div`,{class:h([`overlay__hud`,{"overlay__hud--visible":E(u)}])},[l(Tn)],2),l(t,{name:`popup`},{default:O(()=>[E(d)?(b(),a(`div`,{key:0,class:h([`overlay__popup`,{"overlay__popup--fs":E(s).isFullscreen}])},[l($n)],2)):i(`v-if`,!0)]),_:1})],64))}}),[[`__scopeId`,`data-v-f3307b98`]]);const ur={class:`player`},dr={"data-mvp-player":``},fr=[`poster`],pr={key:1,class:`player__native-play`};var mr=Q(u({__name:`VideoPlayer`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1,default:``},poster:{type:String,required:!1,default:``},aspectRatio:{type:String,required:!1,default:ie},adTagUrl:{type:String,required:!1,default:``},adTagParams:{type:Object,required:!1},autoplay:{type:Boolean,required:!1,default:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1,default:!1},autoStage:{type:Boolean,required:!1,default:!1},lazy:{type:Boolean,required:!1,default:!1},payload:{type:Object,required:!1,default:()=>({})},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1,default:!1},hasPlaylist:{type:Boolean,required:!1,default:!1},hasNext:{type:Boolean,required:!1,default:!1},hasPrevious:{type:Boolean,required:!1,default:!1},autoAdvance:{type:Boolean,required:!1,default:!1}},emits:[`state-change`,`play-next`,`play-previous`,`toggle-auto-advance`],setup(e,{expose:t,emit:s}){let c=e,u=s,d=C(null),f=S(it(d,c,u)),p=S(at(T(f,`isPlaying`)));x(Y,f),x(X,p),x(ot,T(c,`action`)),x(ct,S({hasPlaylist:n(()=>c.hasPlaylist),hasNext:n(()=>c.hasNext),hasPrevious:n(()=>c.hasPrevious),autoAdvance:n(()=>c.autoAdvance),playNext:()=>u(`play-next`),playPrevious:()=>u(`play-previous`),toggleAutoAdvance:()=>u(`toggle-auto-advance`)}));let m=n(()=>N(c.aspectRatio)),g=n(()=>m.value.isPortrait),v=n(()=>m.value.cssRatio),y=n(()=>!c.poster&&!f.isReady);return t(f),(e,t)=>(b(),a(`div`,ur,[o(`div`,{class:h([`player__shell`,{"player__shell--portrait":g.value}]),style:_({aspectRatio:v.value}),onMousemove:t[0]||=e=>p.onMouseMove(),onContextmenuCapture:t[1]||=k(()=>{},[`prevent`]),onMouseleave:t[2]||=e=>p.onMouseLeave()},[o(`div`,dr,[o(`video`,{ref_key:`videoEl`,ref:d,class:h([`mvp-video`,{"mvp-video--hidden":y.value}]),poster:c.poster,playsinline:``},null,10,fr),f.nativeUi?i(`v-if`,!0):(b(),r(lr,{key:0,"disable-tap-capture":c.disableTapCapture},null,8,[`disable-tap-capture`])),f.nativeUi&&!f.hasStarted?(b(),a(`div`,pr,[l($,{"is-playing":!1,size:`lg`,onTogglePlay:f.togglePlay},null,8,[`onTogglePlay`])])):i(`v-if`,!0)])],38)]))}}),[[`__scopeId`,`data-v-4ab3cf75`]]);const hr=C(0),gr=n(()=>hr.value>0);function _r(){hr.value++}function vr(){hr.value--}function yr(e,t){window.dispatchEvent(new CustomEvent(e,{detail:t}))}function br(e,t){let n=e=>t(e.detail);y(()=>window.addEventListener(e,n)),v(()=>window.removeEventListener(e,n))}function xr(e,t){let r=n(()=>!e.value||!t.value?-1:e.value.findIndex(e=>e.videoUrl===t.value?.videoUrl)),i=n(()=>r.value===-1||!e.value?null:e.value[r.value+1]??null),a=n(()=>r.value<=0||!e.value?null:e.value[r.value-1]??null);return{hasNext:n(()=>i.value!==null),hasPrevious:n(()=>a.value!==null),nextEntry:i,previousEntry:a}}function Sr(){return localStorage.getItem(ne)===`true`}function Cr(e){localStorage.setItem(ne,String(e))}const wr=[`src`],Tr={class:`stage__idle-body`},Er={class:`stage__idle-btn`},Dr={class:`stage__idle-title`},Or={key:1,class:`stage__idle-empty`};var kr=Q(u({__name:`VideoStage`,props:{pinPosition:{type:String,required:!1,default:`bottom-right`},playlist:{type:Array,required:!1}},emits:[`state-change`],setup(t,{expose:s,emit:c}){let u=t,d=c,f=C(Sr());D(f,Cr);let m=n(()=>!!u.playlist?.length),g=C(null),S=C(null),O=C(!1),A=C(!1),j=C(null),M=C(null),P=C(!1);x(st,P);let{hasNext:F,hasPrevious:I,nextEntry:L,previousEntry:R}=xr(T(u,`playlist`),S),z=n(()=>P.value&&!!S.value&&O.value),ne=n(()=>N(S.value?.aspectRatio||`16:9`).cssRatio),B=C(null),V=C(null);D(P,e=>{B.value=e&&M.value?{height:M.value.offsetHeight,width:M.value.offsetWidth}:null});let re=n(()=>{if(!B.value)return{};let{height:e,width:t}=B.value,n=V.value&&t?V.value/t:1;return{height:`${Math.round(e*n)}px`}}),H=null,U=null;function ie(){H?.disconnect(),U?.disconnect(),j.value&&(H=new IntersectionObserver(([e])=>{P.value=!e.isIntersecting},{threshold:1}),H.observe(j.value),U=new ResizeObserver(([e])=>{V.value=e.contentRect.width}),U.observe(j.value))}D(j,ie);function W(){S.value&&(S.value={...S.value,autoplay:!0},O.value=!0)}function ae(){j.value?.scrollIntoView({behavior:`smooth`,block:`center`})}function oe(){S.value=null,O.value=!1,A.value=!1,P.value=!1,B.value=null,se()}function se(){yr(te,{currentVideoUrl:S.value?.videoUrl??null,isPlaying:A.value})}function G(e){if(S.value?.videoUrl===e.videoUrl&&O.value){g.value?.togglePlay();return}S.value=e,O.value=!1,A.value=!1,se(),O.value=!0}function ce(e){if(!(!S.value||e.videoUrl!==S.value.videoUrl)){if(!O.value){S.value={...S.value,autoplay:!0},O.value=!0;return}g.value?.togglePlay()}}function K(){L.value&&G({...L.value,autoplay:!0})}function le(){R.value&&G({...R.value,autoplay:!0})}function ue(e){e.type===`play`&&(A.value=!0),(e.type===`pause`||e.type===`ended`)&&(A.value=!1),e.type===`ended`&&f.value&&K(),se(),d(`state-change`,e)}return br(ee,G),br(`video-toggle`,ce),y(_r),v(()=>{vr(),H?.disconnect(),U?.disconnect()}),s({playNext:K,playPrevious:le,hasNext:F,hasPrevious:I}),(n,s)=>(b(),a(`div`,{ref_key:`wrapperEl`,ref:j,class:`stage-wrapper`,style:_(re.value)},[o(`div`,{ref_key:`stageEl`,ref:M,class:h([`stage`,{"stage--minified":z.value,[`stage--pin-${t.pinPosition}`]:z.value}])},[z.value?(b(),a(`button`,{key:0,class:`stage__scroll-to`,"aria-label":`Scroll to player`,onClick:k(ae,[`stop`])},[l(E(Dt))])):i(`v-if`,!0),z.value?(b(),a(`button`,{key:1,class:`stage__dismiss`,"aria-label":`Close`,onClick:k(oe,[`stop`])},[l(E(yt))])):i(`v-if`,!0),S.value&&O.value?(b(),r(mr,p({ref_key:`playerRef`,ref:g,key:S.value.videoUrl},S.value,{"has-playlist":m.value,"has-next":E(F),"has-previous":E(I),"auto-advance":f.value,onStateChange:ue,onPlayNext:K,onPlayPrevious:le,onToggleAutoAdvance:s[0]||=e=>f.value=!f.value}),null,16,[`has-playlist`,`has-next`,`has-previous`,`auto-advance`])):(b(),a(`div`,{key:3,class:`stage__idle`,style:_({aspectRatio:ne.value}),onClick:W},[S.value?.poster?(b(),a(`img`,{key:0,src:S.value.poster,class:`stage__idle-poster`},null,8,wr)):i(`v-if`,!0),s[1]||=o(`div`,{class:`stage__idle-scrim`},null,-1),o(`div`,Tr,[S.value?(b(),a(e,{key:0},[o(`div`,Er,[l(E(Zt))]),o(`p`,Dr,w(S.value.title),1)],64)):(b(),a(`p`,Or,`Select a video to play`))])],4))],2)],4))}}),[[`__scopeId`,`data-v-fb8c86cf`]]);const Ar={class:`placeholder`},jr=[`src`,`alt`],Mr={class:`placeholder__btn-wrap`},Nr={key:1,class:`placeholder__footer`},Pr={class:`placeholder__title`};var Fr=Q(u({__name:`VideoPlaceholder`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1,default:``},poster:{type:String,required:!1,default:``},aspectRatio:{type:String,required:!1,default:ie},adTagUrl:{type:String,required:!1,default:``},adTagParams:{type:Object,required:!1},autoplay:{type:Boolean,required:!1,default:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1,default:!1},autoStage:{type:Boolean,required:!1,default:!1},lazy:{type:Boolean,required:!1},payload:{type:Object,required:!1,default:()=>({})},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1}},setup(e){let t=e,r=n(()=>N(t.aspectRatio)),s=n(()=>r.value.isPortrait),c=n(()=>r.value.cssRatio),u=C(!1),d=C(!1);br(te,e=>{u.value=e.currentVideoUrl===t.videoUrl,d.value=u.value&&e.isPlaying});function f(e){yr(ee,{...t,...e!==void 0&&{autoplay:e}})}function p(){f(!0)}return y(()=>{t.autoStage&&f()}),(t,n)=>(b(),a(`div`,Ar,[o(`div`,{class:h([`placeholder__shell`,{"placeholder__shell--portrait":s.value,"placeholder__shell--active":u.value}]),style:_({aspectRatio:c.value}),onClick:p},[e.poster?(b(),a(`img`,{key:0,class:`placeholder__poster`,src:e.poster,alt:e.title},null,8,jr)):i(`v-if`,!0),n[0]||=o(`div`,{class:`placeholder__scrim`},null,-1),o(`div`,Mr,[l($,{"is-playing":u.value&&d.value,size:`lg`,onTogglePlay:p},null,8,[`is-playing`])]),e.title?(b(),a(`div`,Nr,[o(`p`,Pr,w(e.title),1)])):i(`v-if`,!0)],6)]))}}),[[`__scopeId`,`data-v-dbcb4f82`]]),Ir=u({__name:`VideoItem`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1},poster:{type:String,required:!1},aspectRatio:{type:String,required:!1},adTagUrl:{type:String,required:!1},adTagParams:{type:Object,required:!1},autoplay:{type:Boolean,required:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1},autoStage:{type:Boolean,required:!1},lazy:{type:Boolean,required:!1,default:!0},payload:{type:Object,required:!1},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1}},emits:[`state-change`],setup(t,{emit:n}){let i=t,o=n,s=C(!1);return(t,n)=>E(gr)?(b(),r(Fr,g(p({key:0},i)),null,16)):(b(),a(e,{key:1},[i.lazy&&!s.value&&!i.autoplay?(b(),r(Fr,p({key:0},i,{onClickCapture:n[0]||=e=>s.value=!0}),null,16)):(b(),r(mr,p({key:1},i,{autoplay:s.value||i.autoplay,onStateChange:n[1]||=e=>o(`state-change`,e)}),null,16,[`autoplay`]))],64))}});const Lr=d(mr,{shadowRoot:!1}),Rr=d(kr,{shadowRoot:!1}),zr=d(Fr,{shadowRoot:!1}),Br=d(Ir,{shadowRoot:!1});customElements.define(`video-player`,Lr),customElements.define(`video-stage`,Rr),customElements.define(`video-placeholder`,zr),customElements.define(`video-item`,Br);export{Br as VideoItemElement,zr as VideoPlaceholderElement,Lr as VideoPlayerElement,Rr as VideoStageElement};
1
+ import{Fragment as e,Transition as t,computed as n,createBlock as r,createCommentVNode as i,createElementBlock as a,createElementVNode as o,createStaticVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,defineCustomElement as d,inject as f,mergeProps as p,nextTick as m,normalizeClass as h,normalizeProps as g,normalizeStyle as _,onBeforeUnmount as v,onMounted as y,openBlock as b,provide as x,reactive as S,ref as C,renderList as w,resolveDynamicComponent as T,toDisplayString as E,toRef as D,unref as O,watch as k,withCtx as A,withModifiers as j}from"vue";function M(){return/iPad|iPhone|iPod/.test(navigator.userAgent)||/Mac/.test(navigator.userAgent)&&navigator.maxTouchPoints>1}function N(e){(e.requestFullscreen||e.webkitRequestFullscreen)?.call(e)}function P(){(document.exitFullscreen||document.webkitExitFullscreen)?.call(document)}function F(e){let[t,n]=e.split(`:`).map(Number);return{isPortrait:n>t,cssRatio:`${t}/${n}`}}function ee(e,t){if(!t||!Object.keys(t).length)return e;let n=e;for(let[e,r]of Object.entries(t))r!=null&&r!==``&&(n=n.split(`{${e}}`).join(encodeURIComponent(r)));return n}function te(e){return!e||isNaN(e)?`0:00`:`${Math.floor(e/60)}:${String(Math.floor(e%60)).padStart(2,`0`)}`}function I(e,t=(...e)=>String(e[0])){let n={};return async(...r)=>{let i=t(...r);if(n[i])return n[i];let a=await e(...r);return n[i]=a,a}}function L(e){return e.filter(e=>e.src&&(e.type===`application/x-mpegURL`||e.type===`video/mp4`)).sort((e,t)=>e.type===`application/x-mpegURL`?-1:1)}const R=`video-select`,ne=`video-state`,re=`fullscreen-pending`,z=`fullscreen-pending-done`,B=`player:autoAdvance`,V=`mvp-youtube`,H=`mvp-vimeo`,U=`mvp-dailymotion`,W=`mvp-ad-playing`,G=`mvp-ad-paused`,ie=`16:9`,K=[.5,.75,1,1.25,1.5,2],ae=[[.25,`firstQuartile`],[.5,`midpoint`],[.75,`thirdQuartile`]];function q(e){return e.match(/cdn\.jwplayer\.com\/videos\/([^-]+)/)?.[1]??e.match(/cdn\.jwplayer\.com\/manifests\/([^.]+)/)?.[1]??e.match(/^jwplayer:\/\/([^/]+)$/)?.[1]??null}function J(e){let t=e?.advertising?.schedule;return Array.isArray(t)&&t.length?t[0].tag??null:e?.advertising?.tag??null}const oe=I(async e=>{let t=await fetch(`https://cdn.jwplayer.com/v2/media/${e}`);if(!t.ok)throw Error(`JW Platform API error: ${t.status}`);let n=(await t.json()).playlist?.[0];if(!n)throw Error(`JW Platform: empty playlist`);let r=L((n.sources??[]).map(e=>({src:e.file,type:e.type})));if(!r.length)throw Error(`JW Platform: no playable sources found`);return{src:r[0].src,type:r[0].type,poster:n.image??null,adTagUrl:J(n)}});async function se(e){let t=q(e);if(!t)throw Error(`JW Platform: unrecognised source URL: ${e}`);let n=await oe(t);if(e.startsWith(`jwplayer://`))return n;let r=/\.mp4(\?|#|$)/.test(e)?`video/mp4`:`application/x-mpegURL`;return{...n,src:e,type:r}}function ce(e){let t;try{t=new URL(e)}catch{return null}if(t.hostname!==`players.brightcove.net`)return null;let[,n,r]=t.pathname.split(`/`),i=t.searchParams.get(`videoId`),a=r?.indexOf(`_`)??-1;return!n||a===-1||!i?null:{accountId:n,playerId:r.slice(0,a),embed:r.slice(a+1),videoId:i}}function le(e){for(let t of e?.plugins??[]){let e=t.options?.serverUrl??t.options?.imaOptions?.serverUrl;if(e)return e}return null}const ue=I(async(e,t,n,r)=>{let i=await fetch(`https://players.brightcove.net/${e}/${t}_${n}/config.json`);if(!i.ok)throw Error(`Brightcove: could not load player config (${i.status})`);let a=await i.json(),o=r??a?.video_cloud?.policy_key;if(!o)throw Error(`Brightcove: policy_key not found in player config`);return{policyKey:o,adTagUrl:le(a)}},(e,t,n)=>`${e}/${t}_${n}`);async function de(e,t,n){let r=await fetch(`https://edge.api.brightcove.com/playback/v1/accounts/${e}/videos/${t}`,{headers:{Accept:`application/json;pk=${n}`}});if(!r.ok)throw Error(`Brightcove Playback API error: ${r.status}`);let i=await r.json(),a=L(i.sources||[]);if(!a.length)throw Error(`Brightcove: no playable sources found`);return{sources:a.map(e=>({src:e.src,type:e.type})),poster:i.poster??i.thumbnail??null}}async function fe(e,t){let n=ce(e);if(!n)throw Error(`Brightcove: invalid src — expected a Brightcove embed URL, e.g. "https://players.brightcove.net/{accountId}/{playerId}_{embed}/index.html?videoId={videoId}"`);let{accountId:r,playerId:i,embed:a,videoId:o}=n,{policyKey:s,adTagUrl:c}=await ue(r,i,a,t),{sources:l,poster:u}=await de(r,o,s);return{...l[0],poster:u,adTagUrl:c}}function pe(){let e=new Map;function t(t,n){for(let r of Array.isArray(t)?t:[t])e.has(r)||e.set(r,new Set),e.get(r)?.add(n)}function n(t,n){e.get(t)?.delete(n)}function r(t,...n){e.get(t)?.forEach(e=>e(...n))}function i(){e.clear()}return{on:t,off:n,trigger:r,dispose:i}}const me={};function he(e,t=e){return me[t]||(me[t]=new Promise((t,n)=>{let r=document.createElement(`script`);r.src=e,r.onload=()=>t(),r.onerror=()=>n(Error(`Failed to load script: ${e}`)),document.head.appendChild(r)})),me[t]}let ge=0;function _e(e,t){e.parentElement?.classList.add(t);let n=`${t}-${++ge}`,r=document.createElement(`div`);r.id=n,r.className=`mvp-tech`,r.style.cssText=`width:100%;height:100%;top:0;left:0;position:absolute`;let i=document.createElement(`div`);return i.style.cssText=`width:100%;height:100%;position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity 0.2s`,i.appendChild(r),e.parentElement?.insertBefore(i,e),{techId:n,wrapper:i,innerDiv:r}}function ve(e,t){e.style.display=`none`,t.style.opacity=`1`,t.style.pointerEvents=``}function ye(e,t,n){t.remove(),e.parentElement?.classList.remove(n),e.style.display=``}function be(e){return e.closest(`.player__shell`)}function xe(e){e.trigger(re);let t=document.createElement(`div`);t.style.cssText=`position:fixed;inset:0;z-index:99999;opacity:0;pointer-events:none`,document.body.appendChild(t);let n=!1;function r(){n||e.trigger(z)}function i(r){n||(n=!0,e.trigger(z),t.remove(),r?.())}return{overlay:t,reveal:r,finish:i}}function Se(e,t){return t===e.PlayerState.PLAYING||t===e.PlayerState.BUFFERING}function Ce(e){let t={videoId:null,listId:null},n=e.match(/^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|shorts\/|&v=)([^#&?]*).*/);n?.[2]?.length===11&&(t.videoId=n[2]);let r=e.match(/[?&]list=([^#&?]+)/);return r?.[1]&&(t.listId=r[1]),t}let we=!1,Te=!1;const Ee=[];function De(){Te||(Te=!0,he(`https://www.youtube.com/iframe_api`).then(()=>{window.YT?.ready(()=>{we=!0,Ee.forEach(e=>e()),Ee.length=0})}))}function Oe(e,t){De();let n=pe(),{techId:r,wrapper:i}=_e(e,V),a=Ce(t.src),o=null,s=a.videoId,c=!1,l=!1,u=!1,d=null,f=!1,p=null,m=!1,h=new Set,g=null,_={active:!1,wasPaused:!1,timeBefore:0,catchUpInterval:null};function v(e,t=0){let n=setTimeout(()=>{h.delete(n),e()},t);h.add(n)}function y(){try{let e=o?.getPlayerResponse()?.adPlacements;return Array.isArray(e)&&e.length>0}catch{return!1}}function b(e){o?.loadVideoById({videoId:e})}function x(e){o?.cueVideoById({videoId:e})}function S(){a.videoId&&(_.wasPaused=!1,c?s===a.videoId?o?.playVideo():(b(a.videoId),s=a.videoId):(n.trigger(`waiting`),l=!0))}function C(){_.catchUpInterval&&clearInterval(_.catchUpInterval),_.active=!1,_.wasPaused&&o?.pauseVideo(),n.trigger(`seeked`)}function w(){m=(o?.getAvailablePlaybackRates()??[]).length>1,c=!0,t.muted&&o?.mute(),l?S():u&&a.videoId&&(x(a.videoId),s=a.videoId)}function T(e){if(e===d||p!==null)return;d=e;let t=y();t!==f&&(f=t,n.trigger(t?`adstart`:`adend`));let r=window.YT;if(r){switch(e){case-1:n.trigger(`loadstart`),n.trigger(`loadedmetadata`),n.trigger(`durationchange`),n.trigger(`ratechange`);break;case r.PlayerState.ENDED:n.trigger(`ended`);break;case r.PlayerState.PLAYING:n.trigger(`timeupdate`),n.trigger(`durationchange`),n.trigger(`playing`),n.trigger(`play`),_.active&&C();break;case r.PlayerState.PAUSED:n.trigger(`canplay`),_.active||n.trigger(`pause`);break;case r.PlayerState.BUFFERING:n.trigger(`waiting`);break;case r.PlayerState.CUED:n.trigger(`canplay`);break}g&&=(clearInterval(g),null),e===r.PlayerState.PLAYING&&(g=setInterval(()=>n.trigger(`timeupdate`),250))}}function E(){let e={controls:+!!t.nativeUi,modestbranding:1,rel:0,showinfo:0,mute:+!!t.muted,origin:window.location.origin,allowfullscreen:1,fullscreen:1,fs:1,playsinline:1,...t.customVars};s=a.videoId,o=new window.YT.Player(r,{videoId:s??void 0,playerVars:e,events:{onReady:w,onStateChange:e=>T(e.data),onPlaybackRateChange:()=>n.trigger(`ratechange`),onVolumeChange:()=>n.trigger(`volumechange`),onError:e=>{p=e.data,n.trigger(`error`),v(()=>{p=null})}}})}we?E():Ee.push(E),t.autoplay?c?S():l=!0:a.videoId&&(u=!0);function D(){if(!o)return;let e=o.getCurrentTime(),{video_id:t}=o.getVideoData();o.pauseVideo();let{overlay:r,reveal:i,finish:a}=xe(n),s=document.createElement(`div`);s.id=`yt-fs-${Math.random().toString(36).slice(2)}`,r.appendChild(s);let c=null,l=()=>{document.removeEventListener(`pointerdown`,u,!0),a(()=>{let t=c?.getCurrentTime()??e;try{c?.destroy()}catch{}o?.seekTo(t,!0),n.trigger(`timeupdate`)})};function u(){l()}c=new window.YT.Player(s.id,{videoId:t,playerVars:{playsinline:0,autoplay:1,controls:1,modestbranding:1,rel:0,start:Math.floor(e)},events:{onReady:t=>{i(),t.target.seekTo(e,!0),t.target.playVideo()},onStateChange:e=>{let t=window.YT;t&&(e.data===t.PlayerState.ENDED?l():e.data===t.PlayerState.PAUSED?(document.removeEventListener(`pointerdown`,u,!0),document.addEventListener(`pointerdown`,u,{capture:!0,once:!0})):(document.removeEventListener(`pointerdown`,u,!0),i()))}}})}function O(){if(M()&&o){D();return}let t=be(e);t&&N(t)}function k(){P()}return{el:i,play:S,pause:()=>o?.pauseVideo(),paused:()=>{if(!o)return!0;let e=window.YT;return!e||!Se(e,d)},currentTime:()=>o?.getCurrentTime()??0,setCurrentTime:e=>{if(!o)return;let t=window.YT;t&&d===t.PlayerState.PAUSED&&(_.timeBefore=o.getCurrentTime()),_.active||(_.wasPaused=!t||!Se(t,d)),o.seekTo(e,!0),n.trigger(`timeupdate`),n.trigger(`seeking`),_.active=!0,t&&d===t.PlayerState.PAUSED&&_.timeBefore!==e&&(_.catchUpInterval&&clearInterval(_.catchUpInterval),_.catchUpInterval=setInterval(()=>{d!==t.PlayerState.PAUSED||!_.active?_.catchUpInterval&&clearInterval(_.catchUpInterval):o&&o.getCurrentTime()!==_.timeBefore&&(n.trigger(`timeupdate`),C())},250))},duration:()=>o?.getDuration()??0,volume:()=>o?o.getVolume()/100:1,setVolume:e=>o?.setVolume(e*100),muted:()=>o?.isMuted()??!1,setMuted:e=>{o&&(e?o.mute():o.unMute(),v(()=>n.trigger(`volumechange`),50))},playbackRate:()=>o?.getPlaybackRate()??1,setPlaybackRate:e=>o?.setPlaybackRate(e),bufferedEnd:()=>o?.getVideoLoadedFraction?o.getVideoLoadedFraction()*o.getDuration():0,error:()=>p===null?null:{code:p,message:`This video could not be played.`},setSrc:e=>{let t=Ce(e);a.videoId=t.videoId,a.listId=t.listId,a.videoId&&(c?(b(a.videoId),s=a.videoId):u=!0)},featuresPlaybackRate:()=>m,featuresCaptions:()=>!1,getCaptionTracks:()=>[],setCaptionTrack:()=>{},getActiveCaptionTrack:()=>null,featuresQuality:()=>!1,getQualityLevels:()=>[],getCurrentQuality:()=>null,isAutoQuality:()=>!0,setQuality:()=>{},featuresPip:()=>!1,isPipActive:()=>!1,togglePip:()=>{},enterFullscreen:O,exitFullscreen:k,on:n.on,off:n.off,dispose:()=>{if(h.forEach(clearTimeout),h.clear(),g&&clearInterval(g),_.catchUpInterval&&clearInterval(_.catchUpInterval),o)try{o.stopVideo(),o.destroy()}catch{}else{let e=Ee.indexOf(E);e!==-1&&Ee.splice(e,1)}o=null,ye(e,i,V),n.dispose()}}}function ke(e){return e.match(/(?:vimeo\.com\/(?:video\/|channels\/[^/]+\/|groups\/[^/]+\/videos\/)?|player\.vimeo\.com\/video\/)(\d+)/)?.[1]??null}function Ae(e,t){let n=pe(),{techId:r,wrapper:i}=_e(e,H),a=ke(t.src),o=null,s=0,c=0,l=1,u=!1,d=!0,f=1,p=!1,m=!1,h=!1,g=null,_=new Set;function v(e,t=0){let n=setTimeout(()=>{_.delete(n),e()},t);_.add(n)}function y(){if(!o){m=!0;return}o.play().catch(()=>{})}function b(){t.muted&&o?.setMuted(!0).catch(()=>{}),m&&y()}async function x(e){if(await he(`https://player.vimeo.com/api/player.js`,`vimeo`),h||!window.Vimeo)return;let i={id:Number(e),byline:!1,portrait:!1,title:!1,transparent:!0,controls:!!t.nativeUi,autopause:!1,...t.autoplay!==void 0&&{autoplay:t.autoplay},...t.muted!==void 0&&{muted:t.muted}};o=new window.Vimeo.Player(r,i),t.autoplay&&(m=!0),o.ready().then(b).catch(e=>{g={code:4,message:e?.message||`This video is unavailable or cannot be embedded here.`},n.trigger(`error`)}),o.on(`play`,()=>{d=!1,n.trigger(`play`),n.trigger(`playing`)}),o.on(`pause`,()=>{d=!0,n.trigger(`pause`)}),o.on(`ended`,()=>{d=!0,n.trigger(`ended`)}),o.on(`timeupdate`,e=>{let{seconds:t,duration:r}=e;s=t,c=r,n.trigger(`timeupdate`),r&&!p&&(p=!0,n.trigger(`durationchange`))}),o.on(`loaded`,()=>{p=!1,n.trigger(`loadedmetadata`),n.trigger(`durationchange`)}),o.on(`seeking`,e=>{s=e.seconds,n.trigger(`seeking`)}),o.on(`seeked`,e=>{s=e.seconds,n.trigger(`seeked`),n.trigger(`timeupdate`)}),o.on(`bufferstart`,()=>n.trigger(`waiting`)),o.on(`bufferend`,()=>n.trigger(`canplay`)),o.on(`volumechange`,e=>{l=e.volume,n.trigger(`volumechange`)}),o.on(`error`,()=>n.trigger(`error`))}a&&x(a);function S(){if(!M()){let t=be(e);t&&N(t);return}o?.requestFullscreen().catch(()=>{})}function C(){P()}return{el:i,play:y,pause:()=>o?.pause().catch(()=>{}),paused:()=>d,currentTime:()=>s,setCurrentTime:e=>{o?.setCurrentTime(e).catch(()=>{}),n.trigger(`timeupdate`),n.trigger(`seeking`)},duration:()=>c,volume:()=>l,setVolume:e=>{l=e,o?.setVolume(e).catch(()=>{})},muted:()=>u,setMuted:e=>{u=e,o?.setMuted(e).then(()=>v(()=>n.trigger(`volumechange`),50)).catch(()=>{})},playbackRate:()=>f,setPlaybackRate:e=>{f=e,o?.setPlaybackRate(e).catch(()=>{}),n.trigger(`ratechange`)},bufferedEnd:()=>s,error:()=>g,setSrc:()=>{},featuresPlaybackRate:()=>!1,featuresCaptions:()=>!1,getCaptionTracks:()=>[],setCaptionTrack:()=>{},getActiveCaptionTrack:()=>null,featuresQuality:()=>!1,getQualityLevels:()=>[],getCurrentQuality:()=>null,isAutoQuality:()=>!0,setQuality:()=>{},featuresPip:()=>!1,isPipActive:()=>!1,togglePip:()=>{},enterFullscreen:S,exitFullscreen:C,on:n.on,off:n.off,dispose:()=>{h=!0,_.forEach(clearTimeout),_.clear(),o?.destroy().catch(()=>{}),o=null,ye(e,i,H),n.dispose()}}}function je(e){let t=e.match(/[?&]video=([a-zA-Z0-9]+)/);return t?t[1]:e.match(/(?:dailymotion\.com\/(?:embed\/)?video\/|dai\.ly\/)([a-zA-Z0-9]+)/)?.[1]??null}function Me(e,t){let n=pe(),{techId:r,wrapper:i}=_e(e,U),a=be(e),o=je(t.src),s=typeof t.customVars?.playerId==`string`?t.customVars.playerId:void 0,c=null,l=0,u=0,d=1,f=!1,p=!0,m=!1,h=!1,g=null;async function _(){if(!o){g={code:4,message:`Could not parse video ID from source URL`},n.trigger(`error`);return}try{let e=await he(s?`https://geo.dailymotion.com/libs/player/${s}.js`:`https://geo.dailymotion.com/libs/player.js`,s||`dailymotion-sdk`).then(()=>window.dailymotion);if(!e)return;let i=await e.createPlayer(r,{...s&&{player:s},video:o,params:{autoplay:!!t.autoplay,mute:!!t.muted}});c=i;let a=e.events;m&&i.play(),i.on(a.PLAYER_CRITICALPATHREADY,e=>{let t=e.videoThumbnails;if(!t)return;let r=Object.keys(t).map(Number).sort((e,t)=>t-e)[0],i=r===void 0?void 0:t[r];i&&n.trigger(`posterchange`,i)}),i.on(a.VIDEO_PLAY,()=>{p=!1,n.trigger(`play`),n.trigger(`playing`),!t.autoplay&&!h&&(h=!0,i.pause())}),i.on(a.VIDEO_PLAYING,()=>{p=!1,n.trigger(`play`),n.trigger(`playing`)}),i.on(a.VIDEO_PAUSE,()=>{p=!0,n.trigger(`pause`)}),a.VIDEO_BUFFERING&&i.on(a.VIDEO_BUFFERING,()=>n.trigger(`waiting`)),i.on(a.VIDEO_END,()=>{p=!0,n.trigger(`ended`)}),i.on(a.VIDEO_TIMECHANGE,e=>{l=e.videoTime??l,u=e.videoDuration??u,n.trigger(`timeupdate`)}),i.on(a.VIDEO_DURATIONCHANGE,e=>{u=e.videoDuration??u,n.trigger(`durationchange`)}),i.on(a.VIDEO_SEEKSTART,()=>n.trigger(`seeking`)),i.on(a.VIDEO_SEEKEND,e=>{l=e.videoTime??l,n.trigger(`seeked`)}),i.on(a.PLAYER_VOLUMECHANGE,e=>{d=e.playerVolume??d,f=e.playerIsMuted??f,n.trigger(`volumechange`)}),i.on(a.PLAYER_ERROR,()=>n.trigger(`error`)),a.AD_START&&i.on(a.AD_START,()=>{p=!1,n.trigger(`play`),n.trigger(`adstart`)}),a.AD_END&&i.on(a.AD_END,()=>n.trigger(`adend`))}catch(e){g={code:4,message:e instanceof Error?e.message:`This video could not be played.`},n.trigger(`error`)}}_();function v(){c?c.play():m=!0}function y(){if(M()){c?.setFullscreen(!0);return}a&&N(a)}function b(){if(M()){c?.setFullscreen(!1);return}P()}return{el:i,play:v,pause:()=>c?.pause(),paused:()=>p,currentTime:()=>l,setCurrentTime:e=>{l=e,c?.seek(e),n.trigger(`seeking`)},duration:()=>u,volume:()=>d,setVolume:e=>{d=e,c?.setVolume(e)},muted:()=>f,setMuted:e=>{f=e,c?.setMute(e)},playbackRate:()=>1,setPlaybackRate:()=>{},bufferedEnd:()=>l,error:()=>g,setSrc:()=>{},featuresPlaybackRate:()=>!1,featuresCaptions:()=>!1,getCaptionTracks:()=>[],setCaptionTrack:()=>{},getActiveCaptionTrack:()=>null,featuresQuality:()=>!1,getQualityLevels:()=>[],getCurrentQuality:()=>null,isAutoQuality:()=>!0,setQuality:()=>{},featuresPip:()=>!1,isPipActive:()=>!1,togglePip:()=>{},enterFullscreen:y,exitFullscreen:b,on:n.on,off:n.off,dispose:()=>{c?.destroy?.(),c=null,ye(e,i,U),n.dispose()}}}const Ne=[{test:e=>/youtu\.be|youtube\.com/.test(e),key:`youtube`,embed:!0},{test:e=>/vimeo\.com|player\.vimeo\.com/.test(e),key:`vimeo`,embed:!0},{test:e=>/dailymotion\.com|dai\.ly/.test(e),key:`dailymotion`,embed:!0},{test:e=>/cdn\.jwplayer\.com/.test(e)||e.startsWith(`jwplayer://`),key:`jwplayer`,embed:!1},{test:e=>/players\.brightcove\.net/.test(e),key:`brightcove`,embed:!1}];function Pe(e){return Ne.find(t=>t.test(e))?.key??`html5`}function Fe(e){if(/\.m3u8(\?|#|$)/.test(e))return`application/x-mpegURL`;if(/\.mp4(\?|#|$)/.test(e))return`video/mp4`}function Ie(e){return Ne.find(t=>t.test(e))?.embed??!1}const Le={youtube:Oe,vimeo:Ae,dailymotion:Me};function Re(e,t,n){let r=Le[Pe(e)];return r?r(t,n):null}async function ze(e){let t=Pe(e);return t===`jwplayer`?se(e):t===`brightcove`?fe(e):{src:e,type:Fe(e)}}function Be(e){return e.kind===`captions`||e.kind===`subtitles`}function Ve(e,t){e.textTracks.addEventListener(`addtrack`,t),e.textTracks.addEventListener(`removetrack`,t);function n(){let t=[];for(let n=0;n<e.textTracks.length;n++){let r=e.textTracks[n];Be(r)&&t.push({index:n,label:r.label||r.language||`Track ${n+1}`,language:r.language})}return t}function r(t){for(let n=0;n<e.textTracks.length;n++){let r=e.textTracks[n];Be(r)&&(r.mode=n===t?`showing`:`hidden`)}}function i(){for(let t=0;t<e.textTracks.length;t++){let n=e.textTracks[t];if(Be(n)&&n.mode===`showing`)return t}return null}return{featuresCaptions:()=>n().length>0,getCaptionTracks:n,setCaptionTrack:r,getActiveCaptionTrack:i,dispose:()=>{e.textTracks.removeEventListener(`addtrack`,t),e.textTracks.removeEventListener(`removetrack`,t)}}}function He(e){function t(){return(e()?.levels??[]).map((e,t)=>({index:t,height:e.height,bitrate:e.bitrate,label:`${e.height}p`}))}function n(){return e()?.autoLevelEnabled??!0}function r(){let t=e();return t?n()?null:t.currentLevel:null}function i(t){let n=e();n&&(n.currentLevel=t??-1)}return{featuresQuality:()=>t().length>0,getQualityLevels:t,getCurrentQuality:r,isAutoQuality:n,setQuality:i}}function Ue(e,t,n){let r=[[`webkitbeginfullscreen`,t],[`webkitendfullscreen`,n]];for(let[t,n]of r)e.addEventListener(t,n);function i(){let t=e;if(typeof t.webkitEnterFullscreen==`function`){t.webkitEnterFullscreen();return}let n=e.closest(`.player__shell`);n instanceof HTMLElement&&N(n)}function a(){let t=e;if(typeof t.webkitExitFullscreen==`function`){t.webkitExitFullscreen();return}P()}return{enterFullscreen:i,exitFullscreen:a,dispose:()=>{for(let[t,n]of r)e.removeEventListener(t,n)}}}function We(e,t){let n=[[`enterpictureinpicture`,t],[`leavepictureinpicture`,t]];for(let[t,r]of n)e.addEventListener(t,r);function r(){return typeof document<`u`&&!!document.pictureInPictureEnabled&&!e.disablePictureInPicture}function i(){return document.pictureInPictureElement===e}function a(){i()?document.exitPictureInPicture():r()&&e.requestPictureInPicture()}return{featuresPip:r,isPipActive:i,togglePip:a,dispose:()=>{for(let[t,r]of n)e.removeEventListener(t,r)}}}const Ge=`application/x-mpegURL`,Ke=[`play`,`pause`,`ended`,`error`,`timeupdate`,`durationchange`,`progress`,`volumechange`,`ratechange`,`seeking`,`seeked`,`waiting`,`playing`,`canplay`];function qe(e,t){let n=pe(),r=null,i=!1,a=null;async function o(o){let{default:s}=await import(`hls.js`);if(i||a!==o)return;if(typeof s?.isSupported!=`function`||!s.isSupported()){e.src=o,t.autoplay&&e.play();return}r=new s({liveDurationInfinity:!0}),r.loadSource(o),r.attachMedia(e),t.autoplay&&e.play();let c=s.Events,u=s.ErrorTypes;r.on(c.MANIFEST_PARSED,l(`qualitychange`)),r.on(c.LEVEL_SWITCHED,l(`qualitychange`)),r.on(c.ERROR,(e,t)=>{if(!(!t.fatal||i||a!==o))switch(t.type){case u.NETWORK_ERROR:r?.startLoad();break;case u.MEDIA_ERROR:r?.recoverMediaError();break;default:r?.destroy(),r=null,n.trigger(`error`);break}})}function s(){return/Apple/.test(navigator.vendor)&&!/CriOS|FxiOS|OPiOS|EdgiOS|Chrome|Chromium|Android/.test(navigator.userAgent)&&(e.canPlayType(`application/vnd.apple.mpegurl`)!==``||e.canPlayType(Ge)!==``)}function c(n,i){if(r?.destroy(),r=null,a=null,i===Ge&&!s()){a=n,o(n);return}e.src=n,t.autoplay&&e.play()}let l=e=>()=>n.trigger(e),u=Ke.map(e=>[e,l(e)]);for(let[t,n]of u)e.addEventListener(t,n);let d=Ve(e,l(`captionschange`)),f=He(()=>r),p=Ue(e,l(`nativefullscreenenter`),l(`nativefullscreenexit`)),m=We(e,l(`pipchange`));return e.poster=t.poster??``,e.muted=t.muted??t.autoplay??!1,e.playbackRate=t.playbackRate??1,e.playsInline=!0,c(t.src,t.type),{el:e,play:()=>e.play(),pause:()=>e.pause(),paused:()=>e.paused,currentTime:()=>e.currentTime,setCurrentTime:t=>{e.currentTime=t},duration:()=>e.duration,volume:()=>e.volume,setVolume:t=>{e.volume=t},muted:()=>e.muted,setMuted:t=>{e.muted=t},playbackRate:()=>e.playbackRate,setPlaybackRate:t=>{e.playbackRate=t},bufferedEnd:()=>{let{buffered:t,duration:n}=e;if(!t.length)return 0;let r=t.end(t.length-1);return n&&r>n?n:r},error:()=>{let t=e.error;return t?{code:t.code,message:t.message||`This video could not be played.`}:null},setSrc:c,featuresPlaybackRate:()=>!0,featuresCaptions:d.featuresCaptions,getCaptionTracks:d.getCaptionTracks,setCaptionTrack:d.setCaptionTrack,getActiveCaptionTrack:d.getActiveCaptionTrack,featuresQuality:f.featuresQuality,getQualityLevels:f.getQualityLevels,getCurrentQuality:f.getCurrentQuality,isAutoQuality:f.isAutoQuality,setQuality:f.setQuality,featuresPip:m.featuresPip,isPipActive:m.isPipActive,togglePip:m.togglePip,enterFullscreen:p.enterFullscreen,exitFullscreen:p.exitFullscreen,on:n.on,off:n.off,dispose:()=>{i=!0,r?.destroy();for(let[t,n]of u)e.removeEventListener(t,n);d.dispose(),p.dispose(),m.dispose(),n.dispose()}}}const Je=new Set;function Ye(e){return Je.add(e),()=>Je.delete(e)}function Xe(e){Je.forEach(t=>{if(t!==e)try{t()}catch{}})}function Ze(e){let t=C(!1),n=C(!1);function r(){let e=document;t.value=!!(document.fullscreenElement||e.webkitFullscreenElement),n.value=!1}function i(){let n=e();if(n){if(t.value){n.exitFullscreen();return}n.enterFullscreen()}}function a(){n.value=!0}function o(e){e.on(re,()=>{n.value=!0}),e.on(z,()=>{n.value=!1}),e.on(`nativefullscreenenter`,()=>{t.value=!0,n.value=!1}),e.on(`nativefullscreenexit`,()=>{t.value=!1,n.value=!1})}return y(()=>{document.addEventListener(`fullscreenchange`,r),document.addEventListener(`webkitfullscreenchange`,r)}),v(()=>{document.removeEventListener(`fullscreenchange`,r),document.removeEventListener(`webkitfullscreenchange`,r)}),{isFullscreen:t,isFullscreenPending:n,toggleFullscreen:i,markFullscreenPending:a,attachPlayerEvents:o}}function Qe(){let e=C(!1),t=null;function n(){clearTimeout(t??void 0),e.value=!1}function r(r){r.on(`waiting`,()=>{clearTimeout(t??void 0),t=setTimeout(()=>{e.value=!0},500)}),r.on(`playing`,n),r.on(`canplay`,n)}return v(()=>clearTimeout(t??void 0)),{isBuffering:e,attachPlayerEvents:r,reset:n}}function $e(e,t,n){let r=new Set;function i(){if(!t.value)return;let i=e.value/t.value;for(let[e,t]of ae)!r.has(e)&&i>=e&&(r.add(e),n(t))}function a(){r.clear()}return{checkQuartiles:i,reset:a}}function et(){try{return JSON.parse(localStorage.getItem(`player:positions`)??`[]`)}catch{return[]}}function tt(e){localStorage.setItem(`player:positions`,JSON.stringify(e))}function nt(e){return et().find(t=>t.url===e)?.time??null}function rt(e){tt(et().filter(t=>t.url!==e))}function it(e,t,n){let r=!1;function i(t){if(r)return;let n=nt(e);n&&t.setCurrentTime(n),r=!0}function a(e){!e||n.value}function o(){rt(e)}function s(){document.visibilityState===`hidden`&&a(t())}return y(()=>document.addEventListener(`visibilitychange`,s)),v(()=>{a(t()),document.removeEventListener(`visibilitychange`,s)}),{restoreOnce:i,save:a,clear:o}}function at(e,t,n,r){let i=null;y(()=>{let a=e.value?.closest(`.player__shell`);a&&(i=new IntersectionObserver(([e])=>{let i=t();!e.isIntersecting&&i&&!i.paused()&&!n.value&&!r.value&&i.pause()},{threshold:.1}),i.observe(a))}),v(()=>i?.disconnect())}function ot(e,t,n,r,i,a){function o(){let n=e();if(!(!n||!t.value)){if(!a.value){n.play();return}n.pause()}}function s(t){e()?.setCurrentTime(n.value*(t/100))}function c(){let t=e();t?.setMuted(!t.muted())}function l(t){let n=e();n&&(n.setVolume(t),n.setMuted(t===0))}function u(){r.value=!r.value}function d(t){let n=e();n&&(n.setPlaybackRate(t),i.value=t)}return{togglePlay:o,seek:s,toggleMute:c,setVolume:l,toggleLoop:u,setPlaybackRate:d}}function st(e,t){let{isPlaying:n,hasEnded:r,isReady:i,isAdPlaying:a,isLive:o,current:s,total:c,buffered:l,vol:u,isMuted:d,isLooping:f,playbackRate:p,supportsPlaybackRate:m,supportsCaptions:h,captionTracks:g,activeCaptionIndex:_,supportsQuality:v,qualityLevels:y,currentQualityIndex:b,isAutoQuality:x,supportsPip:S,isPipActive:C,hasStarted:w,isError:T,errorMessage:E}=e,{fire:D,pauseThisPlayer:O,positionMemory:k,quartiles:A,buffering:j,fullscreen:M}=t;function N(e){i.value=!0,m.value=e.featuresPlaybackRate();function t(){g.value=e.getCaptionTracks(),h.value=e.featuresCaptions();let t=e.getActiveCaptionTrack();t!==_.value&&(_.value=t,w.value&&D(`captionchange`,{captionIndex:t}))}t(),e.on(`captionschange`,t);function N(){y.value=e.getQualityLevels(),v.value=e.featuresQuality();let t=e.getCurrentQuality(),n=e.isAutoQuality(),r=t!==b.value||n!==x.value;b.value=t,x.value=n,r&&w.value&&D(`qualitychange`,{qualityIndex:n?null:t})}N(),e.on(`qualitychange`,N);function P(){S.value=e.featuresPip();let t=e.isPipActive();t!==C.value&&(C.value=t,w.value&&D(`pipchange`,{isPipActive:t}))}P(),e.on(`pipchange`,P);let F=()=>{let t=e.duration();if(t===1/0){o.value=!0;return}o.value=!1,t&&t>0&&isFinite(t)&&(c.value=t)};e.on(`adstart`,()=>{Xe(O),a.value=!0,D(`adstart`)}),e.on(`adend`,()=>{a.value=!1,D(`adend`)}),e.on(`play`,()=>{Xe(O),w.value=!0,n.value=!0,r.value=!1,o.value||k.restoreOnce(e),D(`play`)}),e.on(`pause`,()=>{n.value=!1,o.value||k.save(e),D(`pause`)}),e.on(`ended`,()=>{if(n.value=!1,A.reset(),j.reset(),f.value){e.setCurrentTime(0),e.play();return}c.value&&(s.value=c.value),r.value=!0,k.clear(),D(`ended`)}),e.on(`seeked`,()=>{D(`seeked`)}),e.on(`error`,()=>{let t=e.error();E.value=t?.message||`This video could not be played.`,T.value=!0,i.value=!0,D(`error`,{error:t})}),e.on(`timeupdate`,()=>{if(r.value)return;s.value=e.currentTime()??0,c.value||F(),m.value||=e.featuresPlaybackRate();let t=e.getActiveCaptionTrack();_.value!==t&&(_.value=t,w.value&&D(`captionchange`,{captionIndex:t})),o.value||A.checkQuartiles()}),e.on(`durationchange`,F),e.on(`progress`,()=>{let t=e.duration();l.value=t?e.bufferedEnd()/t*100:0}),e.on(`volumechange`,()=>{let t=e.muted();u.value=e.volume()??1,d.value=t??!1,w.value&&D(`volumechange`,{isMuted:t})}),e.on(`ratechange`,()=>{let t=e.playbackRate()??1;p.value=t,w.value&&D(`ratechange`,{playbackRate:t})}),j.attachPlayerEvents(e),M.attachPlayerEvents(e)}return{attachPlayerEvents:N}}function ct(){return window.google?.ima?Promise.resolve():new Promise((e,t)=>{let n=document.createElement(`script`);n.src=`https://imasdk.googleapis.com/js/sdkloader/ima3.js`,n.onload=()=>e(),n.onerror=()=>t(Error(`Failed to load Google IMA SDK`)),document.head.appendChild(n)})}function lt(e,t,n,r){let i=document.createElement(`div`);i.className=`ima-ad-container`,e.appendChild(i);let a=n,o=null,s=null,c=null,l=!1,u=!1,d=!1,f=!1,p=!1,m=!1,h=1,g=new ResizeObserver(([e])=>{let t=window.google?.ima;if(!c||!t)return;let{width:n,height:r}=e.contentRect;c.resize(n,r,t.ViewMode.NORMAL)});g.observe(t);function _(){s?.contentComplete()}function v(t){f=t,e.classList.toggle(W,t),t||(p=!1,e.classList.remove(G))}function y(){if(l||!u||!d||!o||!s||!a)return;l=!0;let e=window.google?.ima;if(!e)return;o.initialize();let t=new e.AdsRequest;t.adTagUrl=a,s.requestAds(t)}function b(e){a=e,y()}ct().then(()=>{if(m)return;let n=window.google?.ima;n&&(o=new n.AdDisplayContainer(i,t),s=new n.AdsLoader(o),u=!0,s.addEventListener(n.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,i=>{if(m)return;let a=new n.AdsRenderingSettings;a.restoreCustomPlaybackStateOnAdBreakComplete=!0,c=i.getAdsManager(t,a),t.addEventListener(`ended`,_),c.addEventListener(n.AdEvent.Type.CONTENT_PAUSE_REQUESTED,()=>{t.removeEventListener(`ended`,_),t.pause(),v(!0),r.onAdStart();let e=c?.getVolume()??1;e>0&&(h=e),r.onAdMuteChange(e===0)}),c.addEventListener(n.AdEvent.Type.CONTENT_RESUME_REQUESTED,()=>{t.addEventListener(`ended`,_),v(!1),r.onAdEnd(),t.ended||t.play()}),c.addEventListener(n.AdEvent.Type.PAUSED,()=>{p=!0,e.classList.add(G),r.onAdPauseChange(!0)}),c.addEventListener(n.AdEvent.Type.RESUMED,()=>{p=!1,e.classList.remove(G),r.onAdPauseChange(!1)}),c.addEventListener(n.AdEvent.Type.AD_PROGRESS,()=>{r.onAdProgress(c?.getRemainingTime()??0)}),c.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{v(!1),r.onError(e.getError().getMessage()),t.play()});try{c.init(t.clientWidth,t.clientHeight,n.ViewMode.NORMAL),c.start()}catch(e){r.onError(e instanceof Error?e.message:`Ad playback failed to start.`)}}),s.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{r.onError(e.getError().getMessage())}),y())}).catch(e=>r.onError(e.message));function x(){d=!0,y()}function S(){if(!c)return;let e=c.getVolume();e>0?(h=e,c.setVolume(0)):c.setVolume(h||1),r.onAdMuteChange(c.getVolume()===0)}return{isAdPlaying:()=>f,isAdPaused:()=>p,requestAdsOnFirstPlay:x,setAdTagUrl:b,pauseAd:()=>c?.pause(),resumeAd:()=>c?.resume(),toggleAdMute:S,dispose:()=>{m=!0,g.disconnect(),t.removeEventListener(`ended`,_),c?.destroy(),s?.destroy(),i.remove(),e.classList.remove(W,G)}}}function ut(e,t){let n=window.pbjs;if(!n)return Promise.resolve(t);let r=e.timeoutMs??1e3;return new Promise(i=>{let a=!1;function o(e){a||(a=!0,i(e||t))}let s=setTimeout(()=>o(t),r);n.que.push(()=>{try{n.addAdUnits(e.adUnit),n.requestBids({adUnitCodes:[e.adUnit.code],timeout:r,bidsBackHandler:()=>{clearTimeout(s);try{o(n.adServers?.gam?.buildVideoUrl({adUnit:e.adUnit,params:e.params}))}catch{o(t)}}})}catch{clearTimeout(s),o(t)}})})}function dt(e,t){let{isAdPlaying:n,isAdPaused:r,isAdMuted:i,adRemainingTime:a}=e,{fire:o,pauseThisPlayer:s}=t,c=null,l=null;function u(e,t,u,d){if(!(u||d)||!e.parentElement)return;d&&ut(d,u).catch(()=>u).then(e=>c?.setAdTagUrl(e));function f(){!M()&&t.isPipActive()&&document.exitPictureInPicture()}function p(){!M()&&(document.hidden||!document.hasFocus())&&c?.isAdPlaying()&&c.pauseAd()}document.addEventListener(`visibilitychange`,p),window.addEventListener(`blur`,p);let m=()=>{t.isPipActive()||p()};t.on(`pipchange`,m),l=()=>{document.removeEventListener(`visibilitychange`,p),window.removeEventListener(`blur`,p),t.off(`pipchange`,m)},c=lt(e.parentElement,e,u,{onAdStart:()=>{n.value=!0,r.value=!1,o(`adstart`),f(),p()},onAdEnd:()=>{n.value=!1,r.value=!1,a.value=0,o(`adend`)},onAdPauseChange:e=>{r.value=e,e||Xe(s)},onAdMuteChange:e=>{i.value=e},onAdProgress:e=>{a.value=e},onError:e=>{n.value=!1,r.value=!1,a.value=0,console.error(`Ad playback error:`,e)}}),t.on(`play`,()=>c?.requestAdsOnFirstPlay())}return{attach:u,isAdPlaying:()=>c?.isAdPlaying()??!1,isAdPaused:()=>c?.isAdPaused()??!1,pauseAd:()=>c?.pauseAd(),resumeAd:()=>c?.resumeAd(),toggleAdMute:()=>c?.toggleAdMute(),dispose:()=>{c?.dispose(),c=null,l?.(),l=null}}}function ft(e,t,r){let i=null,a=null,o=null,s=C(!1),c=C(!1),l=C(!1),u=C(!1),d=C(!1),f=C(!1),p=C(0),m=C(!1),h=C(0),g=C(0),_=C(0),b=C(1),x=C(t.muted??t.autoplay??!1),S=C(!1),w=C(t.playbackRate??1),T=C(!1),E=C(!1),D=C([]),O=C(null),A=C(!1),j=C([]),M=C(null),N=C(!0),P=C(!1),F=C(!1),I=C(!1),L=C(!1),R=C(``),ne=C(!1),re=n(()=>g.value?h.value/g.value*100:0),z=n(()=>Math.max(_.value,re.value)),B=()=>i,V=Ze(B),H=Qe(),U=it(t.videoUrl,B,c);function W(e,n={}){r(`state-change`,{type:e,currentTime:h.value,duration:g.value,src:t.videoUrl,...n,payload:t.payload})}let G=$e(h,g,W);function ie(){!i||!o||(L.value=!1,R.value=``,i.setSrc(o.src,o.type))}function K(){if(q.isAdPlaying()){q.pauseAd();return}i?.pause()}function ae(){if(q.isAdPlaying()){q.isAdPaused()?q.resumeAd():q.pauseAd();return}J.togglePlay()}let q=dt({isAdPlaying:u,isAdPaused:d,isAdMuted:f,adRemainingTime:p},{fire:W,pauseThisPlayer:K}),J=ot(B,l,g,S,w,s),{attachPlayerEvents:oe}=st({isPlaying:s,hasEnded:c,isReady:l,isAdPlaying:u,isLive:m,current:h,total:g,buffered:_,vol:b,isMuted:x,isLooping:S,playbackRate:w,supportsPlaybackRate:T,supportsCaptions:E,captionTracks:D,activeCaptionIndex:O,supportsQuality:A,qualityLevels:j,currentQualityIndex:M,isAutoQuality:N,supportsPip:P,isPipActive:F,hasStarted:I,isError:L,errorMessage:R},{fire:W,pauseThisPlayer:K,positionMemory:U,quartiles:G,buffering:H,fullscreen:V});function se(e){i?.setCaptionTrack(e),O.value=e,I.value&&W(`captionchange`,{captionIndex:e})}function ce(e){i?.setQuality(e),M.value=e,N.value=e===null,I.value&&W(`qualitychange`,{qualityIndex:e})}function le(){i?.togglePip()}function ue(){J.toggleLoop(),I.value&&W(`loopchange`,{isLooping:S.value})}return k(()=>t.muted,e=>{!i||e===void 0||i.setMuted(e)}),k(()=>t.playbackRate,e=>{!i||e===void 0||i.setPlaybackRate(e)}),at(e,B,V.isFullscreen,V.isFullscreenPending),k(I,t=>{!t||!e.value||!i||i.el===e.value||ve(e.value,i.el)}),y(async()=>{if(Ie(t.videoUrl)){if(!e.value)return;let n=Re(t.videoUrl,e.value,{src:t.videoUrl,poster:t.poster,autoplay:t.autoplay,muted:t.muted??t.autoplay,nativeUi:t.nativeUi});if(!n){L.value=!0,l.value=!0,R.value=`This platform is not yet supported.`;return}ne.value=!!t.nativeUi,i=n,o={src:t.videoUrl},a=Ye(K),oe(i);return}let n=await ze(t.videoUrl).catch(()=>({src:t.videoUrl}));if(!e.value)return;o={src:n.src,type:n.type},i=qe(e.value,{src:n.src,type:n.type,poster:n.poster||t.poster||``,autoplay:t.autoplay,muted:t.muted??t.autoplay,playbackRate:w.value});let r=ee(t.adTagUrl||n.adTagUrl||``,t.adTagParams);q.attach(e.value,i,r,t.headerBidding),a=Ye(K),oe(i)}),v(()=>{a?.(),q.dispose(),i?.dispose(),i=null}),{isPlaying:s,hasEnded:c,isReady:l,isAdPlaying:u,isAdPaused:d,isAdMuted:f,adRemainingTime:p,isLive:m,isBuffering:H.isBuffering,current:h,total:g,vol:b,isMuted:x,isLooping:S,playbackRate:w,hasStarted:I,isError:L,errorMessage:R,progress:re,bufferedDisplay:z,isFullscreen:V.isFullscreen,isFullscreenPending:V.isFullscreenPending,fmt:te,fire:W,retry:ie,togglePlay:ae,seek:J.seek,toggleMute:J.toggleMute,setVolume:J.setVolume,toggleFullscreen:V.toggleFullscreen,markFullscreenPending:V.markFullscreenPending,toggleLoop:ue,toggleAdMute:q.toggleAdMute,setPlaybackRate:J.setPlaybackRate,supportsPlaybackRate:T,supportsCaptions:E,captionTracks:D,activeCaptionIndex:O,setCaptionTrack:se,supportsQuality:A,qualityLevels:j,currentQualityIndex:M,isAutoQuality:N,setQuality:ce,supportsPip:P,isPipActive:F,togglePip:le,nativeUi:ne}}function pt(e){let t=C(!0),n=C(!1),r=null,i=0;function a(e=400){i=Date.now()+e}function o(e=3500){clearTimeout(r??void 0),r=setTimeout(()=>{t.value=!1,n.value=!1},e)}function s(){clearTimeout(r??void 0)}function c(){n.value=!0,t.value=!0,o()}function l(){n.value=!1,e.value&&o()}function u(){e.value&&o()}function d(){t.value=!0,e.value&&o()}function f(){t.value=!0,o()}function p(){Date.now()<i||e.value&&o(600)}return k(e,e=>{if(!e){clearTimeout(r??void 0),t.value=!0;return}o()}),v(()=>clearTimeout(r??void 0)),{showHUD:t,isOpen:n,scheduleHide:o,pauseHide:s,onVideoTap:d,onMouseMove:f,onMouseLeave:p,openControls:c,closeControls:l,keepOpen:u,suppressMouseLeave:a}}const Y=Symbol(`player`),X=Symbol(`hud`),mt=Symbol(`action`),ht=Symbol(`compact`),gt=Symbol(`playlist`);function Z(e){let t=f(e);if(t===void 0)throw Error(`[video-player] missing "${String(e.description)}" context — this component must be rendered inside <VideoPlayer>`);return t}function _t(e,t){return{hudVisible:n(()=>!e.isReady||e.isError?!1:t.showHUD),popupVisible:n(()=>!e.isReady||e.isError?!1:e.isFullscreen?t.showHUD:t.isOpen)}}function vt(e,t){return n(()=>!(!e?.value||t.isFullscreen))}function yt(e,t,r){let i=n(()=>e?.value??null),a=n(()=>!!i.value&&typeof i.value==`object`),o=n(()=>a.value?i.value:null),s=n(()=>i.value===`mute`?t.isMuted?`Unmute`:`Mute`:i.value===`loop`?t.isLooping?`Disable loop`:`Loop`:i.value===`autoplay`?r.autoAdvance?`Disable autoplay next`:`Autoplay next`:``),c=n(()=>i.value===`mute`?t.isMuted:i.value===`loop`?t.isLooping:i.value===`autoplay`&&r.autoAdvance);function l(){i.value===`mute`?t.toggleMute():i.value===`loop`?t.toggleLoop():i.value===`autoplay`&&r.toggleAutoAdvance()}return{currentAction:i,isCustom:a,customAction:o,builtinLabel:s,builtinActive:c,onBuiltinClick:l}}var Q=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n};const bt={},xt={viewBox:`0 0 24 24`,fill:`currentColor`};function St(e,t){return b(),a(`svg`,xt,[...t[0]||=[o(`path`,{d:`M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z`},null,-1)]])}var Ct=Q(bt,[[`render`,St]]);const wt={},Tt={viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function Et(e,t){return b(),a(`svg`,Tt,[...t[0]||=[o(`rect`,{x:`2`,y:`5`,width:`20`,height:`14`,rx:`2`},null,-1),o(`path`,{d:`M9.5 10.5a2 2 0 0 0-3.5 1.3v.4a2 2 0 0 0 3.5 1.3`},null,-1),o(`path`,{d:`M17.5 10.5a2 2 0 0 0-3.5 1.3v.4a2 2 0 0 0 3.5 1.3`},null,-1)]])}var Dt=Q(wt,[[`render`,Et]]);const Ot={},kt={viewBox:`0 0 24 24`,fill:`currentColor`};function At(e,t){return b(),a(`svg`,kt,[...t[0]||=[o(`path`,{d:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`},null,-1)]])}var jt=Q(Ot,[[`render`,At]]);const Mt={},Nt={viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function Pt(e,t){return b(),a(`svg`,Nt,[...t[0]||=[s(`<line x1="4" y1="6" x2="20" y2="6"></line><line x1="4" y1="12" x2="20" y2="12"></line><line x1="4" y1="18" x2="20" y2="18"></line><circle cx="9" cy="6" r="2.5" fill="currentColor" stroke="none"></circle><circle cx="15" cy="12" r="2.5" fill="currentColor" stroke="none"></circle><circle cx="9" cy="18" r="2.5" fill="currentColor" stroke="none"></circle>`,6)]])}var Ft=Q(Mt,[[`render`,Pt]]);const It={},Lt={viewBox:`0 0 24 24`,fill:`currentColor`};function Rt(e,t){return b(),a(`svg`,Lt,[...t[0]||=[o(`path`,{d:`M4 12l1.41 1.41L11 7.83V20h2V7.83l5.59 5.58L20 12l-8-8-8 8z`},null,-1)]])}var zt=Q(It,[[`render`,Rt]]);const Bt={},Vt={viewBox:`0 0 24 24`,fill:`currentColor`};function Ht(e,t){return b(),a(`svg`,Vt,[...t[0]||=[o(`path`,{d:`M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z`},null,-1)]])}var Ut=Q(Bt,[[`render`,Ht]]);const Wt={},Gt={viewBox:`0 0 24 24`,fill:`currentColor`};function Kt(e,t){return b(),a(`svg`,Gt,[...t[0]||=[o(`path`,{d:`M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z`},null,-1)]])}var qt=Q(Wt,[[`render`,Kt]]);const Jt={},Yt={viewBox:`0 0 24 24`,fill:`currentColor`};function Xt(e,t){return b(),a(`svg`,Yt,[...t[0]||=[o(`path`,{d:`M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4z`},null,-1)]])}var Zt=Q(Jt,[[`render`,Xt]]);const Qt={},$t={viewBox:`0 0 24 24`,fill:`currentColor`};function en(e,t){return b(),a(`svg`,$t,[...t[0]||=[o(`circle`,{cx:`5`,cy:`12`,r:`2`},null,-1),o(`circle`,{cx:`12`,cy:`12`,r:`2`},null,-1),o(`circle`,{cx:`19`,cy:`12`,r:`2`},null,-1)]])}var tn=Q(Qt,[[`render`,en]]);const nn={},rn={viewBox:`0 0 24 24`,fill:`currentColor`};function an(e,t){return b(),a(`svg`,rn,[...t[0]||=[o(`path`,{d:`M6 19h4V5H6v14zm8-14v14h4V5h-4z`},null,-1)]])}var on=Q(nn,[[`render`,an]]);const sn={},cn={viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function ln(e,t){return b(),a(`svg`,cn,[...t[0]||=[o(`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`},null,-1),o(`rect`,{x:`12`,y:`11`,width:`8`,height:`6`,rx:`1`,fill:`currentColor`,stroke:`none`},null,-1)]])}var un=Q(sn,[[`render`,ln]]);const dn={},fn={viewBox:`0 0 24 24`,fill:`currentColor`};function pn(e,t){return b(),a(`svg`,fn,[...t[0]||=[o(`path`,{d:`M8 5v14l11-7z`},null,-1)]])}var mn=Q(dn,[[`render`,pn]]);const hn={},gn={viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function _n(e,t){return b(),a(`svg`,gn,[...t[0]||=[o(`rect`,{x:`2`,y:`6`,width:`20`,height:`12`,rx:`2`},null,-1),o(`path`,{d:`M7 14v-4M12 14V8M17 14v-2`},null,-1)]])}var vn=Q(hn,[[`render`,_n]]);const yn={},bn={viewBox:`0 0 24 24`,fill:`currentColor`};function xn(e,t){return b(),a(`svg`,bn,[...t[0]||=[o(`path`,{d:`M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z`},null,-1)]])}var Sn=Q(yn,[[`render`,xn]]);const Cn={},wn={viewBox:`0 0 24 24`,fill:`currentColor`};function Tn(e,t){return b(),a(`svg`,wn,[...t[0]||=[o(`path`,{d:`M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z`},null,-1)]])}var En=Q(Cn,[[`render`,Tn]]);const Dn={},On={viewBox:`0 0 24 24`,fill:`currentColor`};function kn(e,t){return b(),a(`svg`,On,[...t[0]||=[o(`path`,{d:`M16.5 12A4.5 4.5 0 0 0 14 7.97v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51A8.796 8.796 0 0 0 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.06A8.99 8.99 0 0 0 17.73 18L19 19.27 20.27 18 5.27 3 4.27 3zM12 4L9.91 6.09 12 8.18V4z`},null,-1)]])}var An=Q(Dn,[[`render`,kn]]);const jn={},Mn={viewBox:`0 0 24 24`,fill:`currentColor`};function Nn(e,t){return b(),a(`svg`,Mn,[...t[0]||=[o(`path`,{d:`M3 9v6h4l5 5V4L7 9H3zm13.5 3A4.5 4.5 0 0 0 14 7.97v8.05c1.48-.73 2.5-2.25 2.5-4.02z`},null,-1)]])}var Pn=Q(jn,[[`render`,Nn]]);const Fn=[`aria-label`];var In=Q(u({__name:`PlayPauseButton`,props:{isPlaying:{type:Boolean,required:!0},hasEnded:{type:Boolean,required:!1,default:!1},size:{type:String,required:!1,default:`sm`}},emits:[`toggle-play`],setup(e){let t=e,i=n(()=>t.isPlaying?`Pause`:t.hasEnded?`Replay`:`Play`);return(t,n)=>(b(),a(`button`,{class:h([`ppbtn`,`ppbtn--${e.size}`]),"aria-label":i.value,onClick:n[0]||=j(e=>t.$emit(`toggle-play`),[`stop`])},[e.isPlaying?(b(),r(O(on),{key:0})):e.hasEnded?(b(),r(O(Sn),{key:1})):(b(),r(O(mn),{key:2}))],10,Fn))}}),[[`__scopeId`,`data-v-85902525`]]),Ln=u({__name:`VolumeIcon`,setup(e){let t=Z(Y),i=n(()=>!t.isMuted&&t.vol>0);return(e,t)=>i.value?(b(),r(O(Pn),{key:0})):(b(),r(O(An),{key:1}))}}),Rn=Q(u({__name:`Spinner`,props:{size:{type:Number,required:!1,default:14},borderWidth:{type:Number,required:!1,default:2}},setup(e){return(t,n)=>(b(),a(`div`,{class:`spinner`,style:_({width:`${e.size}px`,height:`${e.size}px`,borderWidth:`${e.borderWidth}px`})},null,4))}}),[[`__scopeId`,`data-v-259be2b2`]]);const zn={class:`hud`},Bn=[`aria-label`],Vn=[`aria-label`],Hn=[`aria-label`],Un=[`aria-label`,`innerHTML`],Wn={key:4,class:`hud__spacer`},Gn={class:`hud__play-wrap`};var Kn=Q(u({__name:`HudButtons`,setup(t){let n=Z(Y),s=Z(X),{currentAction:c,isCustom:u,customAction:d,builtinLabel:p,builtinActive:m,onBuiltinClick:g}=yt(f(mt),n,Z(gt));return(t,f)=>(b(),a(`div`,zn,[!O(s).isOpen&&!O(n).isFullscreen?(b(),a(e,{key:0},[O(c)===`mute`?(b(),a(`button`,{key:0,class:h([`hud__btn`,{"hud__btn--active":O(m)}]),"aria-label":O(p),onClick:f[0]||=j((...e)=>O(g)&&O(g)(...e),[`stop`])},[l(Ln)],10,Bn)):O(c)===`loop`?(b(),a(`button`,{key:1,class:h([`hud__btn`,{"hud__btn--active":O(m)}]),"aria-label":O(p),onClick:f[1]||=j((...e)=>O(g)&&O(g)(...e),[`stop`])},[l(O(Zt))],10,Vn)):O(c)===`autoplay`?(b(),a(`button`,{key:2,class:h([`hud__btn`,{"hud__btn--active":O(m)}]),"aria-label":O(p),onClick:f[2]||=j((...e)=>O(g)&&O(g)(...e),[`stop`])},[l(O(En))],10,Hn)):O(u)&&O(d)?(b(),a(`button`,{key:3,class:`hud__btn`,"aria-label":O(d).label,onClick:f[3]||=j(e=>O(d).onClick(),[`stop`]),innerHTML:O(d).icon},null,8,Un)):(b(),a(`div`,Wn))],64)):i(`v-if`,!0),o(`div`,Gn,[l(In,{"is-playing":O(n).isPlaying,"has-ended":O(n).hasEnded,size:`lg`,onTogglePlay:O(n).togglePlay},null,8,[`is-playing`,`has-ended`,`onTogglePlay`]),O(n).isBuffering?(b(),r(Rn,{key:0,class:`hud__buf-spinner`})):i(`v-if`,!0)]),!O(s).isOpen&&!O(n).isFullscreen?(b(),a(`button`,{key:1,class:`hud__btn`,"aria-label":`Show controls`,onClick:f[4]||=j((...e)=>O(s).openControls&&O(s).openControls(...e),[`stop`])},[l(O(Ft))])):i(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-a6d118e7`]]);function qn(e){let t=C(null),r=n(()=>t.value??e.progress),i=null;function a(){i&&clearTimeout(i),i=null,t.value=null}function o(e){i&&clearTimeout(i),i=null,t.value=Number(e.target.value)}function s(n){let r=Number(n.target.value);t.value=r,e.seek(r),i&&clearTimeout(i),i=setTimeout(a,3e3)}return k(()=>e.current,()=>{if(t.value===null||!e.total)return;let n=t.value/100*e.total;Math.abs(e.current-n)<1&&a()}),v(a),{displaySeek:r,onSeekInput:o,onSeekChange:s}}function Jn(e,t,n){if(!document.startViewTransition||!e.value){n();return}e.value.style.viewTransitionName=t,document.startViewTransition(async()=>{n(),await m()}).finished.finally(()=>{e.value&&(e.value.style.viewTransitionName=``)})}const Yn={class:`controls__vol-header`},Xn=[`aria-label`],Zn={class:`controls__vol-body`},Qn=[`value`],$n={class:`controls__vol-pct`};var er=Q(u({__name:`VolumePanel`,emits:[`back`],setup(t){let r=Z(Y),i=Z(X),s=n(()=>r.isMuted?0:Math.round(r.vol*100));function c(e){r.setVolume(Number(e.target.value)/100)}return(t,n)=>(b(),a(e,null,[o(`div`,Yn,[o(`button`,{class:`controls__btn`,"aria-label":`Back`,onClick:n[0]||=e=>t.$emit(`back`)},[l(O(Ct))]),n[6]||=o(`span`,{class:`controls__vol-label`},`Volume`,-1),o(`button`,{class:`controls__btn`,"aria-label":O(r).isMuted?`Unmute`:`Mute`,onClick:n[1]||=e=>O(r).toggleMute()},[l(Ln)],8,Xn)]),o(`div`,Zn,[o(`input`,{type:`range`,min:`0`,max:`100`,step:`1`,value:s.value,class:`controls__vol-slider`,style:_({"--v":s.value+`%`}),"aria-label":`Volume`,onInput:c,onMousedown:n[2]||=e=>O(i).pauseHide(),onMouseup:n[3]||=e=>O(i).scheduleHide(),onTouchstartPassive:n[4]||=e=>O(i).pauseHide(),onTouchend:n[5]||=e=>O(i).scheduleHide()},null,44,Qn),o(`span`,$n,E(s.value)+`%`,1)])],64))}}),[[`__scopeId`,`data-v-10b0ae67`]]);function tr(e){function t(){let t=K.indexOf(e.playbackRate);e.setPlaybackRate(K[(t+1)%K.length])}function n(e){return`${e}×`}return{cycleRate:t,fmtRate:n}}function nr(e){function t(){let t=e.captionTracks;if(!t.length)return;let n=t[t.findIndex(t=>t.index===e.activeCaptionIndex)+1];e.setCaptionTrack(n?n.index:null)}function n(){return e.captionTracks.find(t=>t.index===e.activeCaptionIndex)?.label??`Off`}return{cycleCaptionTrack:t,currentCaptionLabel:n}}function rr(e){function t(){let t=e.qualityLevels;if(!t.length)return;if(e.isAutoQuality){e.setQuality(t[t.length-1].index);return}let n=t.findIndex(t=>t.index===e.currentQualityIndex);e.setQuality(n<=0?null:t[n-1].index)}function n(){return e.isAutoQuality?`Auto`:e.qualityLevels.find(t=>t.index===e.currentQualityIndex)?.label??`Auto`}return{cycleQuality:t,currentQualityLabel:n}}const ir=[`aria-label`],ar={key:0,class:`controls__more-row-label`},or=[`innerHTML`],sr={key:1},cr={key:2,class:`controls__more-value`};var $=Q(u({__name:`MoreMenuRow`,props:{label:{type:String,required:!0},ariaLabel:{type:String,required:!1,default:``},icon:{type:null,required:!1},iconHtml:{type:String,required:!1},active:{type:Boolean,required:!1,default:!1},value:{type:String,required:!1}},emits:[`click`],setup(e){return(t,n)=>(b(),a(`button`,{class:h([`controls__more-row`,{"controls__more-row--active":e.active}]),"aria-label":e.ariaLabel||e.label,onClick:n[0]||=e=>t.$emit(`click`)},[e.icon||e.iconHtml?(b(),a(`span`,ar,[e.icon?(b(),r(T(e.icon),{key:0,class:`controls__more-row-icon`})):(b(),a(`span`,{key:1,class:`controls__more-row-icon`,innerHTML:e.iconHtml},null,8,or)),c(` `+E(e.label),1)])):(b(),a(`span`,sr,E(e.label),1)),e.value===void 0?i(`v-if`,!0):(b(),a(`span`,cr,E(e.value),1))],10,ir))}}),[[`__scopeId`,`data-v-47ca5bfc`]]);const lr={class:`controls__more-header`};var ur=Q(u({__name:`MoreMenu`,props:{isCustom:{type:Boolean,required:!0},customAction:{type:[Object,null],required:!0}},emits:[`back`],setup(t){let n=Z(Y),s=Z(X),c=Z(gt),{cycleRate:u,fmtRate:d}=tr(n),{cycleCaptionTrack:f,currentCaptionLabel:p}=nr(n),{cycleQuality:m,currentQualityLabel:h}=rr(n);return(g,_)=>(b(),a(e,null,[o(`div`,lr,[o(`button`,{class:`controls__btn`,"aria-label":`Back`,onClick:_[0]||=e=>g.$emit(`back`)},[l(O(Ct))]),_[5]||=o(`span`,{class:`controls__more-label`},`More`,-1)]),o(`div`,{class:`controls__more-body`,onTouchstartPassive:_[4]||=e=>O(s).keepOpen()},[O(n).supportsPlaybackRate?(b(),r($,{key:0,label:`Playback speed`,value:O(d)(O(n).playbackRate),onClick:O(u)},null,8,[`value`,`onClick`])):i(`v-if`,!0),l($,{label:`Loop`,"aria-label":`Toggle loop`,icon:O(Zt),active:O(n).isLooping,value:O(n).isLooping?`On`:`Off`,onClick:_[1]||=e=>O(n).toggleLoop()},null,8,[`icon`,`active`,`value`]),O(n).supportsCaptions?(b(),r($,{key:1,label:`Captions`,icon:O(Dt),active:O(n).activeCaptionIndex!==null,value:O(p)(),onClick:O(f)},null,8,[`icon`,`active`,`value`,`onClick`])):i(`v-if`,!0),O(n).supportsQuality?(b(),r($,{key:2,label:`Quality`,icon:O(vn),active:!O(n).isAutoQuality,value:O(h)(),onClick:O(m)},null,8,[`icon`,`active`,`value`,`onClick`])):i(`v-if`,!0),O(c).hasPlaylist?(b(),r($,{key:3,label:`Autoplay next`,"aria-label":`Toggle autoplay next`,icon:O(En),active:O(c).autoAdvance,value:O(c).autoAdvance?`On`:`Off`,onClick:_[2]||=e=>O(c).toggleAutoAdvance()},null,8,[`icon`,`active`,`value`])):i(`v-if`,!0),t.isCustom&&t.customAction?(b(),r($,{key:4,label:t.customAction.label,"icon-html":t.customAction.icon,onClick:_[3]||=e=>t.customAction.onClick()},null,8,[`label`,`icon-html`])):i(`v-if`,!0)],32)],64))}}),[[`__scopeId`,`data-v-e89a8208`]]);const dr=[`value`],fr={class:`controls__row`},pr={class:`controls__play-wrap`},mr={key:0,class:`controls__live`},hr={key:1,class:`controls__time`},gr=[`aria-label`],_r={class:`controls__fs-wrap`},vr=[`aria-label`];var yr=Q(u({__name:`ControlsPopup`,setup(t){let n=Z(Y),s=Z(X),u=Z(gt),d=vt(f(ht),n),{isCustom:p,customAction:m}=yt(f(mt),n,u),g=C(!1),x=C(!1),S=C(null);function w(e){return!S.value||S.value.contains(e)?!1:(s.closeControls(),!0)}function T(e){w(e.target)}function D(e){w(e.target)&&e.preventDefault()}y(()=>{n.fire(`controlsopen`,{element:S.value}),document.addEventListener(`click`,T,!0),document.addEventListener(`touchend`,D,!0)}),v(()=>{g.value=!1,x.value=!1,n.fire(`controlsclose`,{element:S.value}),document.removeEventListener(`click`,T,!0),document.removeEventListener(`touchend`,D,!0)});function k(e){s.suppressMouseLeave(),Jn(S,`controls-popup`,e)}function A(){if(M()){n.toggleMute();return}k(()=>{g.value=!0})}function N(){k(()=>{x.value=!0})}let{displaySeek:P,onSeekInput:F,onSeekChange:ee}=qn(n);function te(){n.isFullscreen||n.markFullscreenPending(),n.toggleFullscreen()}return(t,f)=>(b(),a(`div`,{ref_key:`popupEl`,ref:S,class:h([`controls`,{"controls--fs":O(n).isFullscreen,"controls--compact":O(d)}]),onMousemove:f[11]||=j((...e)=>O(s).keepOpen&&O(s).keepOpen(...e),[`stop`])},[g.value?(b(),r(er,{key:0,onBack:f[0]||=e=>k(()=>g.value=!1)})):x.value?(b(),r(ur,{key:1,"is-custom":O(p),"custom-action":O(m),onBack:f[1]||=e=>k(()=>x.value=!1)},null,8,[`is-custom`,`custom-action`])):(b(),a(e,{key:2},[O(n).isLive?i(`v-if`,!0):(b(),a(`input`,{key:0,type:`range`,min:`0`,max:`100`,value:O(P),class:`controls__seek`,style:_({"--p":O(P)+`%`,"--b":O(n).bufferedDisplay+`%`}),onInput:f[2]||=(...e)=>O(F)&&O(F)(...e),onChange:f[3]||=(...e)=>O(ee)&&O(ee)(...e),onMousedown:f[4]||=e=>O(s).pauseHide(),onMouseup:f[5]||=e=>O(s).scheduleHide(),onTouchstartPassive:f[6]||=e=>O(s).pauseHide(),onTouchend:f[7]||=e=>O(s).scheduleHide()},null,44,dr)),o(`div`,fr,[o(`div`,pr,[O(n).isBuffering?(b(),r(Rn,{key:0})):(b(),r(In,{key:1,"is-playing":O(n).isPlaying,"has-ended":O(n).hasEnded,size:`sm`,onTogglePlay:f[8]||=e=>O(n).togglePlay()},null,8,[`is-playing`,`has-ended`]))]),O(n).isLive?(b(),a(`span`,mr,[...f[12]||=[o(`span`,{class:`controls__live-dot`},null,-1),c(`Live`,-1)]])):(b(),a(`span`,hr,E(O(n).fmt(O(n).current))+` / `+E(O(n).fmt(O(n).total)),1)),O(u).hasNext?(b(),a(`button`,{key:2,class:`controls__btn`,"aria-label":`Play next`,onClick:f[9]||=e=>O(u).playNext()},[l(O(En))])):i(`v-if`,!0),o(`button`,{class:`controls__btn`,"aria-label":`Volume`,onClick:A},[l(Ln)]),o(`button`,{class:h([`controls__btn controls__btn--more`,{"controls__btn--active":O(n).isLooping||O(n).playbackRate!==1||O(u).autoAdvance}]),"aria-label":`More`,onClick:N},[l(O(tn))],2),O(n).supportsPip?(b(),a(`button`,{key:3,class:h([`controls__btn controls__btn--pip`,{"controls__btn--active":O(n).isPipActive}]),"aria-label":O(n).isPipActive?`Exit picture-in-picture`:`Picture-in-picture`,onClick:f[10]||=e=>O(n).togglePip()},[l(O(un))],10,gr)):i(`v-if`,!0),o(`div`,_r,[O(n).isFullscreenPending?(b(),r(Rn,{key:0})):(b(),a(`button`,{key:1,class:`controls__btn`,"aria-label":O(n).isFullscreen?`Exit fullscreen`:`Fullscreen`,onClick:te},[O(n).isFullscreen?(b(),r(O(qt),{key:0})):(b(),r(O(Ut),{key:1}))],8,vr))])])],64))],34))}}),[[`__scopeId`,`data-v-5712aad4`]]);const br={class:`ad-overlay`},xr={class:`ad-overlay__bar`},Sr={class:`ad-overlay__badge`},Cr={key:0,class:`ad-overlay__countdown`},wr=[`aria-label`],Tr=[`aria-label`];var Er=Q(u({__name:`AdOverlay`,setup(e){let t=Z(Y),s=n(()=>t.adRemainingTime>0?t.fmt(t.adRemainingTime):``);return(e,n)=>(b(),a(`div`,br,[o(`div`,xr,[o(`div`,Sr,[n[2]||=o(`span`,null,`Ad`,-1),s.value?(b(),a(`span`,Cr,E(s.value),1)):i(`v-if`,!0)]),o(`button`,{class:`ad-overlay__btn`,"aria-label":O(t).isAdPaused?`Resume ad`:`Pause ad`,onClick:n[0]||=e=>O(t).togglePlay()},[O(t).isAdPaused?(b(),r(O(mn),{key:0})):(b(),r(O(on),{key:1}))],8,wr),o(`button`,{class:`ad-overlay__btn`,"aria-label":O(t).isAdMuted?`Unmute ad`:`Mute ad`,onClick:n[1]||=e=>O(t).toggleAdMute()},[O(t).isAdMuted?(b(),r(O(An),{key:0})):(b(),r(O(Pn),{key:1}))],8,Tr)])]))}}),[[`__scopeId`,`data-v-23efcc8b`]]);const Dr={key:0,class:`overlay__spinner`},Or={key:0,class:`overlay__error`};var kr=Q(u({__name:`PlayerOverlay`,props:{disableTapCapture:{type:Boolean,required:!1,default:!1}},setup(n){let s=Z(Y),c=Z(X),{hudVisible:u,popupVisible:d}=_t(s,c);function f(){c.onVideoTap()}return(c,p)=>(b(),a(e,null,[i(` Never rendered during any ad state (playing or paused) — pausing/resuming an ad goes
2
+ through AdOverlay's own dedicated button now, not a tap-anywhere gesture over the whole ad
3
+ creative, so there's no reason for this layer to cover the ad break at all. `),!n.disableTapCapture&&O(s).hasStarted&&!O(s).isAdPlaying?(b(),a(`div`,{key:0,class:`overlay__tap-capture`,onClick:f,onTouchend:j(f,[`prevent`,`stop`])},null,32)):i(`v-if`,!0),O(s).isAdPlaying?(b(),r(Er,{key:1})):i(`v-if`,!0),l(t,{name:`fade`},{default:A(()=>[!O(s).isReady&&!O(s).isError?(b(),a(`div`,Dr,[l(Rn,{size:40,"border-width":3})])):i(`v-if`,!0)]),_:1}),l(t,{name:`fade`},{default:A(()=>[O(s).isError?(b(),a(`div`,Or,[o(`p`,null,E(O(s).errorMessage||`This video could not be played.`),1),o(`button`,{class:`overlay__retry`,onClick:p[0]||=j((...e)=>O(s).retry&&O(s).retry(...e),[`stop`])},`Retry`)])):i(`v-if`,!0)]),_:1}),o(`div`,{class:h([`overlay__hud`,{"overlay__hud--visible":O(u)}])},[l(Kn)],2),l(t,{name:`popup`},{default:A(()=>[O(d)?(b(),a(`div`,{key:0,class:h([`overlay__popup`,{"overlay__popup--fs":O(s).isFullscreen}])},[l(yr)],2)):i(`v-if`,!0)]),_:1})],64))}}),[[`__scopeId`,`data-v-f3307b98`]]);const Ar={class:`player`},jr={"data-mvp-player":``},Mr=[`poster`],Nr=[`src`,`kind`,`srclang`,`label`,`default`],Pr={key:1,class:`player__native-play`};var Fr=Q(u({__name:`VideoPlayer`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1,default:``},poster:{type:String,required:!1,default:``},aspectRatio:{type:String,required:!1,default:ie},adTagUrl:{type:String,required:!1,default:``},adTagParams:{type:Object,required:!1},headerBidding:{type:Object,required:!1},tracks:{type:Array,required:!1,default:()=>[]},autoplay:{type:Boolean,required:!1,default:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1,default:!1},autoStage:{type:Boolean,required:!1,default:!1},lazy:{type:Boolean,required:!1,default:!1},payload:{type:Object,required:!1,default:()=>({})},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1,default:!1},hasPlaylist:{type:Boolean,required:!1,default:!1},hasNext:{type:Boolean,required:!1,default:!1},hasPrevious:{type:Boolean,required:!1,default:!1},autoAdvance:{type:Boolean,required:!1,default:!1}},emits:[`state-change`,`play-next`,`play-previous`,`toggle-auto-advance`],setup(t,{expose:s,emit:c}){let u=t,d=c,f=C(null),p=S(ft(f,u,d)),m=S(pt(D(p,`isPlaying`)));x(Y,p),x(X,m),x(mt,D(u,`action`)),x(gt,S({hasPlaylist:n(()=>u.hasPlaylist),hasNext:n(()=>u.hasNext),hasPrevious:n(()=>u.hasPrevious),autoAdvance:n(()=>u.autoAdvance),playNext:()=>d(`play-next`),playPrevious:()=>d(`play-previous`),toggleAutoAdvance:()=>d(`toggle-auto-advance`)}));let g=n(()=>F(u.aspectRatio)),v=n(()=>g.value.isPortrait),y=n(()=>g.value.cssRatio),T=n(()=>!u.poster&&!p.isReady);return s(p),(t,n)=>(b(),a(`div`,Ar,[o(`div`,{class:h([`player__shell`,{"player__shell--portrait":v.value}]),style:_({aspectRatio:y.value}),onMousemove:n[0]||=e=>m.onMouseMove(),onContextmenuCapture:n[1]||=j(()=>{},[`prevent`]),onMouseleave:n[2]||=e=>m.onMouseLeave()},[o(`div`,jr,[o(`video`,{ref_key:`videoEl`,ref:f,class:h([`mvp-video`,{"mvp-video--hidden":T.value}]),poster:u.poster,playsinline:``},[(b(!0),a(e,null,w(u.tracks,(e,t)=>(b(),a(`track`,{key:`${e.src}-${t}`,src:e.src,kind:e.kind??`captions`,srclang:e.srclang,label:e.label,default:e.default},null,8,Nr))),128))],10,Mr),p.nativeUi?i(`v-if`,!0):(b(),r(kr,{key:0,"disable-tap-capture":u.disableTapCapture},null,8,[`disable-tap-capture`])),p.nativeUi&&!p.hasStarted?(b(),a(`div`,Pr,[l(In,{"is-playing":!1,size:`lg`,onTogglePlay:p.togglePlay},null,8,[`onTogglePlay`])])):i(`v-if`,!0)])],38)]))}}),[[`__scopeId`,`data-v-4ab3cf75`]]);const Ir=C(0),Lr=n(()=>Ir.value>0);function Rr(){Ir.value++}function zr(){Ir.value--}function Br(e,t){window.dispatchEvent(new CustomEvent(e,{detail:t}))}function Vr(e,t){let n=e=>t(e.detail);y(()=>window.addEventListener(e,n)),v(()=>window.removeEventListener(e,n))}function Hr(e,t){let r=n(()=>!e.value||!t.value?-1:e.value.findIndex(e=>e.videoUrl===t.value?.videoUrl)),i=n(()=>r.value===-1||!e.value?null:e.value[r.value+1]??null),a=n(()=>r.value<=0||!e.value?null:e.value[r.value-1]??null);return{hasNext:n(()=>i.value!==null),hasPrevious:n(()=>a.value!==null),nextEntry:i,previousEntry:a}}function Ur(){return localStorage.getItem(B)===`true`}function Wr(e){localStorage.setItem(B,String(e))}const Gr=[`src`],Kr={class:`stage__idle-body`},qr={class:`stage__idle-btn`},Jr={class:`stage__idle-title`},Yr={key:1,class:`stage__idle-empty`};var Xr=Q(u({__name:`VideoStage`,props:{pinPosition:{type:String,required:!1,default:`bottom-right`},playlist:{type:Array,required:!1}},emits:[`state-change`],setup(t,{expose:s,emit:c}){let u=t,d=c,f=C(Ur());k(f,Wr);let m=n(()=>!!u.playlist?.length),g=C(null),S=C(null),w=C(!1),T=C(!1),A=C(null),M=C(null),N=C(!1);x(ht,N);let{hasNext:P,hasPrevious:ee,nextEntry:te,previousEntry:I}=Hr(D(u,`playlist`),S),L=n(()=>N.value&&!!S.value&&w.value),re=n(()=>F(S.value?.aspectRatio||`16:9`).cssRatio),z=C(null),B=C(null);k(L,e=>{z.value=e&&M.value?{height:M.value.offsetHeight,width:M.value.offsetWidth}:null});let V=n(()=>{if(!z.value)return{};let{height:e,width:t}=z.value,n=B.value&&t?B.value/t:1;return{height:`${Math.round(e*n)}px`}}),H=null,U=null;function W(){H?.disconnect(),U?.disconnect(),A.value&&(H=new IntersectionObserver(([e])=>{N.value=!e.isIntersecting},{threshold:1}),H.observe(A.value),U=new ResizeObserver(([e])=>{B.value=e.contentRect.width}),U.observe(A.value))}k(A,W);function G(){S.value&&(S.value={...S.value,autoplay:!0},w.value=!0)}function ie(){A.value?.scrollIntoView({behavior:`smooth`,block:`center`})}function K(){S.value=null,w.value=!1,T.value=!1,z.value=null,ae()}function ae(){Br(ne,{currentVideoUrl:S.value?.videoUrl??null,isPlaying:T.value})}function q(e){if(S.value?.videoUrl===e.videoUrl&&w.value){g.value?.togglePlay();return}S.value=e,w.value=!1,T.value=!1,ae(),w.value=!0}function J(e){if(!(!S.value||e.videoUrl!==S.value.videoUrl)){if(!w.value){S.value={...S.value,autoplay:!0},w.value=!0;return}g.value?.togglePlay()}}function oe(e){return{...e,muted:e.muted??g.value?.isMuted,autoplay:!0}}function se(){te.value&&q(oe(te.value))}function ce(){I.value&&q(oe(I.value))}function le(e){e.type===`play`&&(T.value=!0),(e.type===`pause`||e.type===`ended`)&&(T.value=!1),e.type===`ended`&&f.value&&se(),ae(),d(`state-change`,e)}return Vr(R,q),Vr(`video-toggle`,J),y(Rr),v(()=>{zr(),H?.disconnect(),U?.disconnect()}),s({playNext:se,playPrevious:ce,hasNext:P,hasPrevious:ee}),(n,s)=>(b(),a(`div`,{ref_key:`wrapperEl`,ref:A,class:`stage-wrapper`,style:_(V.value)},[o(`div`,{ref_key:`stageEl`,ref:M,class:h([`stage`,{"stage--minified":L.value,[`stage--pin-${t.pinPosition}`]:L.value}])},[L.value?(b(),a(`button`,{key:0,class:`stage__scroll-to`,"aria-label":`Scroll to player`,onClick:j(ie,[`stop`])},[l(O(zt))])):i(`v-if`,!0),L.value?(b(),a(`button`,{key:1,class:`stage__dismiss`,"aria-label":`Close`,onClick:j(K,[`stop`])},[l(O(jt))])):i(`v-if`,!0),S.value&&w.value?(b(),r(Fr,p({ref_key:`playerRef`,ref:g,key:S.value.videoUrl},S.value,{"has-playlist":m.value,"has-next":O(P),"has-previous":O(ee),"auto-advance":f.value,onStateChange:le,onPlayNext:se,onPlayPrevious:ce,onToggleAutoAdvance:s[0]||=e=>f.value=!f.value}),null,16,[`has-playlist`,`has-next`,`has-previous`,`auto-advance`])):(b(),a(`div`,{key:3,class:`stage__idle`,style:_({aspectRatio:re.value}),onClick:G},[S.value?.poster?(b(),a(`img`,{key:0,src:S.value.poster,class:`stage__idle-poster`},null,8,Gr)):i(`v-if`,!0),s[1]||=o(`div`,{class:`stage__idle-scrim`},null,-1),o(`div`,Kr,[S.value?(b(),a(e,{key:0},[o(`div`,qr,[l(O(mn))]),o(`p`,Jr,E(S.value.title),1)],64)):(b(),a(`p`,Yr,`Select a video to play`))])],4))],2)],4))}}),[[`__scopeId`,`data-v-fb8c86cf`]]);const Zr={class:`placeholder`},Qr=[`src`,`alt`],$r={class:`placeholder__btn-wrap`},ei={key:1,class:`placeholder__footer`},ti={class:`placeholder__title`};var ni=Q(u({__name:`VideoPlaceholder`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1,default:``},poster:{type:String,required:!1,default:``},aspectRatio:{type:String,required:!1,default:ie},adTagUrl:{type:String,required:!1,default:``},adTagParams:{type:Object,required:!1},headerBidding:{type:Object,required:!1},tracks:{type:Array,required:!1},autoplay:{type:Boolean,required:!1,default:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1,default:!1},autoStage:{type:Boolean,required:!1,default:!1},lazy:{type:Boolean,required:!1},payload:{type:Object,required:!1,default:()=>({})},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1}},setup(e){let t=e,r=n(()=>F(t.aspectRatio)),s=n(()=>r.value.isPortrait),c=n(()=>r.value.cssRatio),u=C(!1),d=C(!1);Vr(ne,e=>{u.value=e.currentVideoUrl===t.videoUrl,d.value=u.value&&e.isPlaying});function f(e){Br(R,{...t,...e!==void 0&&{autoplay:e}})}function p(){f(!0)}return y(()=>{t.autoStage&&f()}),(t,n)=>(b(),a(`div`,Zr,[o(`div`,{class:h([`placeholder__shell`,{"placeholder__shell--portrait":s.value,"placeholder__shell--active":u.value}]),style:_({aspectRatio:c.value}),onClick:p},[e.poster?(b(),a(`img`,{key:0,class:`placeholder__poster`,src:e.poster,alt:e.title},null,8,Qr)):i(`v-if`,!0),n[0]||=o(`div`,{class:`placeholder__scrim`},null,-1),o(`div`,$r,[l(In,{"is-playing":u.value&&d.value,size:`lg`,onTogglePlay:p},null,8,[`is-playing`])]),e.title?(b(),a(`div`,ei,[o(`p`,ti,E(e.title),1)])):i(`v-if`,!0)],6)]))}}),[[`__scopeId`,`data-v-dbcb4f82`]]),ri=u({__name:`VideoItem`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1},poster:{type:String,required:!1},aspectRatio:{type:String,required:!1},adTagUrl:{type:String,required:!1},adTagParams:{type:Object,required:!1},headerBidding:{type:Object,required:!1},tracks:{type:Array,required:!1},autoplay:{type:Boolean,required:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1},autoStage:{type:Boolean,required:!1},lazy:{type:Boolean,required:!1,default:!0},payload:{type:Object,required:!1},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1}},emits:[`state-change`],setup(t,{emit:n}){let i=t,o=n,s=C(!1);return(t,n)=>O(Lr)?(b(),r(ni,g(p({key:0},i)),null,16)):(b(),a(e,{key:1},[i.lazy&&!s.value&&!i.autoplay?(b(),r(ni,p({key:0},i,{onClickCapture:n[0]||=e=>s.value=!0}),null,16)):(b(),r(Fr,p({key:1},i,{autoplay:s.value||i.autoplay,onStateChange:n[1]||=e=>o(`state-change`,e)}),null,16,[`autoplay`]))],64))}});if(typeof document<`u`){let e=new URL(`./style.css`,import.meta.url).href;if(!document.querySelector(`link[href="${e}"]`)){let t=document.createElement(`link`);t.rel=`stylesheet`,t.href=e,document.head.appendChild(t)}}const ii=d(Fr,{shadowRoot:!1}),ai=d(Xr,{shadowRoot:!1}),oi=d(ni,{shadowRoot:!1}),si=d(ri,{shadowRoot:!1});customElements.define(`video-player`,ii),customElements.define(`video-stage`,ai),customElements.define(`video-placeholder`,oi),customElements.define(`video-item`,si);export{si as VideoItemElement,oi as VideoPlaceholderElement,ii as VideoPlayerElement,ai as VideoStageElement};
package/dist/index.d.mts CHANGED
@@ -1,4 +1,17 @@
1
1
  import { ComputedRef, InjectionKey, Plugin, Ref, UnwrapNestedRefs } from "vue";
2
+ //#region src/types/playback.d.ts
3
+ interface CaptionTrackInfo {
4
+ index: number;
5
+ label: string;
6
+ language: string;
7
+ }
8
+ interface QualityLevelInfo {
9
+ index: number;
10
+ height: number;
11
+ bitrate: number;
12
+ label: string;
13
+ }
14
+ //#endregion
2
15
  //#region src/types.d.ts
3
16
  type BuiltinAction = 'mute' | 'loop' | 'autoplay';
4
17
  interface CustomAction {
@@ -7,7 +20,7 @@ interface CustomAction {
7
20
  onClick: () => void;
8
21
  }
9
22
  type PlayerAction = BuiltinAction | CustomAction;
10
- type StateChangeType = 'play' | 'pause' | 'ended' | 'seeked' | 'error' | 'adstart' | 'adend' | 'volumechange' | 'ratechange' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'controlsopen' | 'controlsclose';
23
+ type StateChangeType = 'play' | 'pause' | 'ended' | 'seeked' | 'error' | 'adstart' | 'adend' | 'volumechange' | 'ratechange' | 'captionchange' | 'qualitychange' | 'pipchange' | 'loopchange' | 'firstQuartile' | 'midpoint' | 'thirdQuartile' | 'controlsopen' | 'controlsclose';
11
24
  interface StateChangeEvent {
12
25
  type: StateChangeType;
13
26
  currentTime: number;
@@ -19,9 +32,35 @@ interface StateChangeEvent {
19
32
  } | null;
20
33
  isMuted?: boolean;
21
34
  playbackRate?: number;
35
+ captionIndex?: number | null;
36
+ qualityIndex?: number | null;
37
+ isPipActive?: boolean;
38
+ isLooping?: boolean;
22
39
  element?: HTMLElement | null;
23
40
  payload?: Record<string, unknown>;
24
41
  }
42
+ interface HeaderBiddingAdUnit {
43
+ code: string;
44
+ mediaTypes: {
45
+ video: Record<string, unknown>;
46
+ };
47
+ bids: Array<{
48
+ bidder: string;
49
+ params?: Record<string, unknown>;
50
+ }>;
51
+ }
52
+ interface HeaderBiddingConfig {
53
+ adUnit: HeaderBiddingAdUnit;
54
+ params?: Record<string, string>;
55
+ timeoutMs?: number;
56
+ }
57
+ interface CaptionTrackDef {
58
+ src: string;
59
+ kind?: 'captions' | 'subtitles';
60
+ srclang?: string;
61
+ label?: string;
62
+ default?: boolean;
63
+ }
25
64
  interface PlayerProps {
26
65
  videoUrl: string;
27
66
  title?: string;
@@ -29,6 +68,8 @@ interface PlayerProps {
29
68
  aspectRatio?: string;
30
69
  adTagUrl?: string;
31
70
  adTagParams?: Record<string, string>;
71
+ headerBidding?: HeaderBiddingConfig;
72
+ tracks?: CaptionTrackDef[];
32
73
  autoplay?: boolean;
33
74
  muted?: boolean;
34
75
  playbackRate?: number;
@@ -92,6 +133,18 @@ declare const __VLS_export$3: import("vue").DefineComponent<__VLS_Props$1, {
92
133
  toggleAdMute: () => void;
93
134
  setPlaybackRate: (rate: number) => void;
94
135
  supportsPlaybackRate: boolean;
136
+ supportsCaptions: boolean;
137
+ captionTracks: CaptionTrackInfo[];
138
+ activeCaptionIndex: number | null;
139
+ setCaptionTrack: (index: number | null) => void;
140
+ supportsQuality: boolean;
141
+ qualityLevels: QualityLevelInfo[];
142
+ currentQualityIndex: number | null;
143
+ isAutoQuality: boolean;
144
+ setQuality: (index: number | null) => void;
145
+ supportsPip: boolean;
146
+ isPipActive: boolean;
147
+ togglePip: () => void;
95
148
  nativeUi: boolean;
96
149
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
97
150
  "state-change": (event: StateChangeEvent) => any;
@@ -110,6 +163,7 @@ declare const __VLS_export$3: import("vue").DefineComponent<__VLS_Props$1, {
110
163
  poster: string;
111
164
  aspectRatio: string;
112
165
  adTagUrl: string;
166
+ tracks: CaptionTrackDef[];
113
167
  muted: boolean;
114
168
  autoStage: boolean;
115
169
  lazy: boolean;
@@ -211,6 +265,18 @@ interface UsePlayerReturn {
211
265
  toggleAdMute: () => void;
212
266
  setPlaybackRate: (rate: number) => void;
213
267
  supportsPlaybackRate: Ref<boolean>;
268
+ supportsCaptions: Ref<boolean>;
269
+ captionTracks: Ref<CaptionTrackInfo[]>;
270
+ activeCaptionIndex: Ref<number | null>;
271
+ setCaptionTrack: (index: number | null) => void;
272
+ supportsQuality: Ref<boolean>;
273
+ qualityLevels: Ref<QualityLevelInfo[]>;
274
+ currentQualityIndex: Ref<number | null>;
275
+ isAutoQuality: Ref<boolean>;
276
+ setQuality: (index: number | null) => void;
277
+ supportsPip: Ref<boolean>;
278
+ isPipActive: Ref<boolean>;
279
+ togglePip: () => void;
214
280
  nativeUi: Ref<boolean>;
215
281
  }
216
282
  //#endregion
@@ -251,4 +317,4 @@ declare function injectStrict<T>(key: InjectionKey<T>): T;
251
317
  //#region src/index.d.ts
252
318
  declare const VideoPlayerPlugin: Plugin;
253
319
  //#endregion
254
- export { ActionKey, BuiltinAction, CompactKey, CustomAction, HudContext, HudKey, PlayerAction, PlayerContext, PlayerKey, PlayerProps, PlaylistContext, PlaylistKey, StateChangeEvent, StateChangeType, VideoEntry, _default as VideoItem, _default$1 as VideoPlaceholder, _default$2 as VideoPlayer, VideoPlayerPlugin, VideoPlayerPlugin as default, VideoSelectDetail, _default$3 as VideoStage, VideoStateDetail, VideoToggleDetail, getPlatform, injectStrict };
320
+ export { ActionKey, BuiltinAction, CaptionTrackDef, CompactKey, CustomAction, HeaderBiddingAdUnit, HeaderBiddingConfig, HudContext, HudKey, PlayerAction, PlayerContext, PlayerKey, PlayerProps, PlaylistContext, PlaylistKey, StateChangeEvent, StateChangeType, VideoEntry, _default as VideoItem, _default$1 as VideoPlaceholder, _default$2 as VideoPlayer, VideoPlayerPlugin, VideoPlayerPlugin as default, VideoSelectDetail, _default$3 as VideoStage, VideoStateDetail, VideoToggleDetail, getPlatform, injectStrict };
package/dist/index.mjs CHANGED
@@ -1 +1,3 @@
1
- import{Fragment as e,Transition as t,computed as n,createBlock as r,createCommentVNode as i,createElementBlock as a,createElementVNode as o,createStaticVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,inject as d,mergeProps as f,nextTick as p,normalizeClass as m,normalizeProps as h,normalizeStyle as g,onBeforeUnmount as _,onMounted as v,openBlock as y,provide as b,reactive as x,ref as S,toDisplayString as C,toRef as w,unref as T,watch as E,withCtx as D,withModifiers as O}from"vue";function k(){return/iPad|iPhone|iPod/.test(navigator.userAgent)||/Mac/.test(navigator.userAgent)&&navigator.maxTouchPoints>1}function A(e){(e.requestFullscreen||e.webkitRequestFullscreen)?.call(e)}function j(){(document.exitFullscreen||document.webkitExitFullscreen)?.call(document)}function M(e){let[t,n]=e.split(`:`).map(Number);return{isPortrait:n>t,cssRatio:`${t}/${n}`}}function N(e,t){if(!t||!Object.keys(t).length)return e;let n;try{n=new URL(e)}catch{return e}for(let[e,r]of Object.entries(t))r!=null&&r!==``&&n.searchParams.set(e,r);return n.toString()}function P(e){return!e||isNaN(e)?`0:00`:`${Math.floor(e/60)}:${String(Math.floor(e%60)).padStart(2,`0`)}`}function F(e,t=(...e)=>String(e[0])){let n={};return async(...r)=>{let i=t(...r);if(n[i])return n[i];let a=await e(...r);return n[i]=a,a}}function I(e){return e.filter(e=>e.src&&(e.type===`application/x-mpegURL`||e.type===`video/mp4`)).sort((e,t)=>e.type===`application/x-mpegURL`?-1:1)}const L=`video-select`,R=`video-state`,z=`fullscreen-pending`,B=`fullscreen-pending-done`,V=`player:autoAdvance`,ee=`mvp-youtube`,H=`mvp-vimeo`,U=`mvp-dailymotion`,W=`mvp-ad-playing`,G=`mvp-ad-paused`,K=`16:9`,te=[.5,.75,1,1.25,1.5,2],ne=[[.25,`firstQuartile`],[.5,`midpoint`],[.75,`thirdQuartile`]];function re(e){return e.match(/cdn\.jwplayer\.com\/videos\/([^-]+)/)?.[1]??e.match(/cdn\.jwplayer\.com\/manifests\/([^.]+)/)?.[1]??e.match(/^jwplayer:\/\/([^/]+)$/)?.[1]??null}function ie(e){let t=e?.advertising?.schedule;return Array.isArray(t)&&t.length?t[0].tag??null:e?.advertising?.tag??null}const ae=F(async e=>{let t=await fetch(`https://cdn.jwplayer.com/v2/media/${e}`);if(!t.ok)throw Error(`JW Platform API error: ${t.status}`);let n=(await t.json()).playlist?.[0];if(!n)throw Error(`JW Platform: empty playlist`);let r=I((n.sources??[]).map(e=>({src:e.file,type:e.type})));if(!r.length)throw Error(`JW Platform: no playable sources found`);return{src:r[0].src,type:r[0].type,poster:n.image??null,adTagUrl:ie(n)}});async function oe(e){let t=re(e);if(!t)throw Error(`JW Platform: unrecognised source URL: ${e}`);let n=await ae(t);if(e.startsWith(`jwplayer://`))return n;let r=/\.mp4(\?|#|$)/.test(e)?`video/mp4`:`application/x-mpegURL`;return{...n,src:e,type:r}}function se(e){let t;try{t=new URL(e)}catch{return null}if(t.hostname!==`players.brightcove.net`)return null;let[,n,r]=t.pathname.split(`/`),i=t.searchParams.get(`videoId`),a=r?.indexOf(`_`)??-1;return!n||a===-1||!i?null:{accountId:n,playerId:r.slice(0,a),embed:r.slice(a+1),videoId:i}}function ce(e){return(e?.plugins??[]).find(e=>e.name===`ima3`)?.options?.serverUrl??null}const le=F(async(e,t,n,r)=>{let i=await fetch(`https://players.brightcove.net/${e}/${t}_${n}/config.json`);if(!i.ok)throw Error(`Brightcove: could not load player config (${i.status})`);let a=await i.json(),o=r??a?.video_cloud?.policy_key;if(!o)throw Error(`Brightcove: policy_key not found in player config`);return{policyKey:o,adTagUrl:ce(a)}},(e,t,n)=>`${e}/${t}_${n}`);async function ue(e,t,n){let r=await fetch(`https://edge.api.brightcove.com/playback/v1/accounts/${e}/videos/${t}`,{headers:{Accept:`application/json;pk=${n}`}});if(!r.ok)throw Error(`Brightcove Playback API error: ${r.status}`);let i=await r.json(),a=I(i.sources||[]);if(!a.length)throw Error(`Brightcove: no playable sources found`);return{sources:a.map(e=>({src:e.src,type:e.type})),poster:i.poster??i.thumbnail??null}}async function de(e,t){let n=se(e);if(!n)throw Error(`Brightcove: invalid src — expected a Brightcove embed URL, e.g. "https://players.brightcove.net/{accountId}/{playerId}_{embed}/index.html?videoId={videoId}"`);let{accountId:r,playerId:i,embed:a,videoId:o}=n,{policyKey:s,adTagUrl:c}=await le(r,i,a,t),{sources:l,poster:u}=await ue(r,o,s);return{...l[0],poster:u,adTagUrl:c}}function fe(){let e=new Map;function t(t,n){for(let r of Array.isArray(t)?t:[t])e.has(r)||e.set(r,new Set),e.get(r)?.add(n)}function n(t,n){e.get(t)?.delete(n)}function r(t,...n){e.get(t)?.forEach(e=>e(...n))}function i(){e.clear()}return{on:t,off:n,trigger:r,dispose:i}}const pe={};function me(e,t=e){return pe[t]||(pe[t]=new Promise((t,n)=>{let r=document.createElement(`script`);r.src=e,r.onload=()=>t(),r.onerror=()=>n(Error(`Failed to load script: ${e}`)),document.head.appendChild(r)})),pe[t]}let he=0;function ge(e,t){e.parentElement?.classList.add(t);let n=`${t}-${++he}`,r=document.createElement(`div`);r.id=n,r.className=`mvp-tech`,r.style.cssText=`width:100%;height:100%;top:0;left:0;position:absolute`;let i=document.createElement(`div`);return i.style.cssText=`width:100%;height:100%;position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity 0.2s`,i.appendChild(r),e.parentElement?.insertBefore(i,e),{techId:n,wrapper:i,innerDiv:r}}function _e(e,t){e.style.display=`none`,t.style.opacity=`1`,t.style.pointerEvents=``}function ve(e,t,n){t.remove(),e.parentElement?.classList.remove(n),e.style.display=``}function ye(e){return e.closest(`.player__shell`)}function be(e){e.trigger(z);let t=document.createElement(`div`);t.style.cssText=`position:fixed;inset:0;z-index:99999;opacity:0;pointer-events:none`,document.body.appendChild(t);let n=!1;function r(){n||(e.trigger(B),t.style.opacity=`1`,t.style.pointerEvents=`auto`)}function i(r){n||(n=!0,e.trigger(B),t.remove(),r?.())}return{overlay:t,reveal:r,finish:i}}function xe(e,t){return t===e.PlayerState.PLAYING||t===e.PlayerState.BUFFERING}function Se(e){let t={videoId:null,listId:null},n=e.match(/^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|shorts\/|&v=)([^#&?]*).*/);n?.[2]?.length===11&&(t.videoId=n[2]);let r=e.match(/[?&]list=([^#&?]+)/);return r?.[1]&&(t.listId=r[1]),t}let Ce=!1,we=!1;const q=[];function Te(){we||(we=!0,me(`https://www.youtube.com/iframe_api`).then(()=>{window.YT?.ready(()=>{Ce=!0,q.forEach(e=>e()),q.length=0})}))}function Ee(e,t){Te();let n=fe(),{techId:r,wrapper:i}=ge(e,ee),a=Se(t.src),o=null,s=a.videoId,c=!1,l=!1,u=!1,d=null,f=!1,p=null,m=!1,h=new Set,g=null,_={active:!1,wasPaused:!1,timeBefore:0,catchUpInterval:null};function v(e,t=0){let n=setTimeout(()=>{h.delete(n),e()},t);h.add(n)}function y(){try{let e=o?.getPlayerResponse()?.adPlacements;return Array.isArray(e)&&e.length>0}catch{return!1}}function b(e){o?.loadVideoById({videoId:e})}function x(e){o?.cueVideoById({videoId:e})}function S(){a.videoId&&(_.wasPaused=!1,c?s===a.videoId?o?.playVideo():(b(a.videoId),s=a.videoId):(n.trigger(`waiting`),l=!0))}function C(){_.catchUpInterval&&clearInterval(_.catchUpInterval),_.active=!1,_.wasPaused&&o?.pauseVideo(),n.trigger(`seeked`)}function w(){m=(o?.getAvailablePlaybackRates()??[]).length>1,c=!0,t.muted&&o?.mute(),l?S():u&&a.videoId&&(x(a.videoId),s=a.videoId)}function T(e){if(e===d||p!==null)return;d=e;let t=y();t!==f&&(f=t,n.trigger(t?`adstart`:`adend`));let r=window.YT;if(r){switch(e){case-1:n.trigger(`loadstart`),n.trigger(`loadedmetadata`),n.trigger(`durationchange`),n.trigger(`ratechange`);break;case r.PlayerState.ENDED:n.trigger(`ended`);break;case r.PlayerState.PLAYING:n.trigger(`timeupdate`),n.trigger(`durationchange`),n.trigger(`playing`),n.trigger(`play`),_.active&&C();break;case r.PlayerState.PAUSED:n.trigger(`canplay`),_.active||n.trigger(`pause`);break;case r.PlayerState.BUFFERING:n.trigger(`waiting`);break;case r.PlayerState.CUED:n.trigger(`canplay`);break}g&&=(clearInterval(g),null),e===r.PlayerState.PLAYING&&(g=setInterval(()=>n.trigger(`timeupdate`),250))}}function E(){let e={controls:+!!t.nativeUi,modestbranding:1,rel:0,showinfo:0,mute:+!!t.muted,origin:window.location.origin,allowfullscreen:1,fullscreen:1,fs:1,playsinline:1,...t.customVars};s=a.videoId,o=new window.YT.Player(r,{videoId:s??void 0,playerVars:e,events:{onReady:w,onStateChange:e=>T(e.data),onPlaybackRateChange:()=>n.trigger(`ratechange`),onVolumeChange:()=>n.trigger(`volumechange`),onError:e=>{p=e.data,n.trigger(`error`),v(()=>{p=null})}}})}Ce?E():q.push(E),t.autoplay?c?S():l=!0:a.videoId&&(u=!0);function D(){if(!o)return;let e=o.getCurrentTime(),{video_id:t}=o.getVideoData();o.pauseVideo();let{overlay:r,reveal:i,finish:a}=be(n),s=document.createElement(`div`);s.id=`yt-fs-${Math.random().toString(36).slice(2)}`,r.appendChild(s);let c=null,l=()=>{a(()=>{let t=c?.getCurrentTime()??e;try{c?.destroy()}catch{}o?.seekTo(t,!0),n.trigger(`timeupdate`)})};c=new window.YT.Player(s.id,{videoId:t,playerVars:{playsinline:0,autoplay:1,controls:1,modestbranding:1,rel:0,start:Math.floor(e)},events:{onReady:t=>{i(),t.target.seekTo(e,!0),t.target.playVideo()},onStateChange:e=>{let t=window.YT;t&&(e.data===t.PlayerState.PAUSED||e.data===t.PlayerState.ENDED)&&l()}}})}function O(){if(k()&&o){D();return}let t=ye(e);t&&A(t)}function M(){j()}return{el:i,play:S,pause:()=>o?.pauseVideo(),paused:()=>{if(!o)return!0;let e=window.YT;return!e||!xe(e,d)},currentTime:()=>o?.getCurrentTime()??0,setCurrentTime:e=>{if(!o)return;let t=window.YT;t&&d===t.PlayerState.PAUSED&&(_.timeBefore=o.getCurrentTime()),_.active||(_.wasPaused=!t||!xe(t,d)),o.seekTo(e,!0),n.trigger(`timeupdate`),n.trigger(`seeking`),_.active=!0,t&&d===t.PlayerState.PAUSED&&_.timeBefore!==e&&(_.catchUpInterval&&clearInterval(_.catchUpInterval),_.catchUpInterval=setInterval(()=>{d!==t.PlayerState.PAUSED||!_.active?_.catchUpInterval&&clearInterval(_.catchUpInterval):o&&o.getCurrentTime()!==_.timeBefore&&(n.trigger(`timeupdate`),C())},250))},duration:()=>o?.getDuration()??0,volume:()=>o?o.getVolume()/100:1,setVolume:e=>o?.setVolume(e*100),muted:()=>o?.isMuted()??!1,setMuted:e=>{o&&(e?o.mute():o.unMute(),v(()=>n.trigger(`volumechange`),50))},playbackRate:()=>o?.getPlaybackRate()??1,setPlaybackRate:e=>o?.setPlaybackRate(e),bufferedEnd:()=>o?.getVideoLoadedFraction?o.getVideoLoadedFraction()*o.getDuration():0,error:()=>p===null?null:{code:p,message:`This video could not be played.`},setSrc:e=>{let t=Se(e);a.videoId=t.videoId,a.listId=t.listId,a.videoId&&(c?(b(a.videoId),s=a.videoId):u=!0)},featuresPlaybackRate:()=>m,enterFullscreen:O,exitFullscreen:M,on:n.on,off:n.off,dispose:()=>{if(h.forEach(clearTimeout),h.clear(),g&&clearInterval(g),_.catchUpInterval&&clearInterval(_.catchUpInterval),o)try{o.stopVideo(),o.destroy()}catch{}else{let e=q.indexOf(E);e!==-1&&q.splice(e,1)}o=null,ve(e,i,ee),n.dispose()}}}function De(e){return e.match(/(?:vimeo\.com\/(?:video\/|channels\/[^/]+\/|groups\/[^/]+\/videos\/)?|player\.vimeo\.com\/video\/)(\d+)/)?.[1]??null}function Oe(e,t){let n=fe(),{techId:r,wrapper:i}=ge(e,H),a=De(t.src),o=null,s=0,c=0,l=1,u=!1,d=!0,f=1,p=!1,m=!1,h=!1,g=null,_=new Set;function v(e,t=0){let n=setTimeout(()=>{_.delete(n),e()},t);_.add(n)}function y(){if(!o){m=!0;return}o.play().catch(()=>{})}function b(){t.muted&&o?.setMuted(!0).catch(()=>{}),m&&y()}async function x(e){if(await me(`https://player.vimeo.com/api/player.js`,`vimeo`),h||!window.Vimeo)return;let i={id:Number(e),byline:!1,portrait:!1,title:!1,transparent:!0,controls:!!t.nativeUi,autopause:!1,...t.autoplay!==void 0&&{autoplay:t.autoplay},...t.muted!==void 0&&{muted:t.muted}};o=new window.Vimeo.Player(r,i),t.autoplay&&(m=!0),o.ready().then(b).catch(e=>{g={code:4,message:e?.message||`This video is unavailable or cannot be embedded here.`},n.trigger(`error`)}),o.on(`play`,()=>{d=!1,n.trigger(`play`),n.trigger(`playing`)}),o.on(`pause`,()=>{d=!0,n.trigger(`pause`)}),o.on(`ended`,()=>{d=!0,n.trigger(`ended`)}),o.on(`timeupdate`,e=>{let{seconds:t,duration:r}=e;s=t,c=r,n.trigger(`timeupdate`),r&&!p&&(p=!0,n.trigger(`durationchange`))}),o.on(`loaded`,()=>{p=!1,n.trigger(`loadedmetadata`),n.trigger(`durationchange`)}),o.on(`seeking`,e=>{s=e.seconds,n.trigger(`seeking`)}),o.on(`seeked`,e=>{s=e.seconds,n.trigger(`seeked`),n.trigger(`timeupdate`)}),o.on(`bufferstart`,()=>n.trigger(`waiting`)),o.on(`bufferend`,()=>n.trigger(`canplay`)),o.on(`volumechange`,e=>{l=e.volume,n.trigger(`volumechange`)}),o.on(`error`,()=>n.trigger(`error`))}a&&x(a);function S(){if(!k()){let t=ye(e);t&&A(t);return}o?.requestFullscreen().catch(()=>{})}function C(){j()}return{el:i,play:y,pause:()=>o?.pause().catch(()=>{}),paused:()=>d,currentTime:()=>s,setCurrentTime:e=>{o?.setCurrentTime(e).catch(()=>{}),n.trigger(`timeupdate`),n.trigger(`seeking`)},duration:()=>c,volume:()=>l,setVolume:e=>{l=e,o?.setVolume(e).catch(()=>{})},muted:()=>u,setMuted:e=>{u=e,o?.setMuted(e).then(()=>v(()=>n.trigger(`volumechange`),50)).catch(()=>{})},playbackRate:()=>f,setPlaybackRate:e=>{f=e,o?.setPlaybackRate(e).catch(()=>{}),n.trigger(`ratechange`)},bufferedEnd:()=>s,error:()=>g,setSrc:()=>{},featuresPlaybackRate:()=>!1,enterFullscreen:S,exitFullscreen:C,on:n.on,off:n.off,dispose:()=>{h=!0,_.forEach(clearTimeout),_.clear(),o?.destroy().catch(()=>{}),o=null,ve(e,i,H),n.dispose()}}}function ke(e){let t=e.match(/[?&]video=([a-zA-Z0-9]+)/);return t?t[1]:e.match(/(?:dailymotion\.com\/(?:embed\/)?video\/|dai\.ly\/)([a-zA-Z0-9]+)/)?.[1]??null}function Ae(e,t){let n=fe(),{techId:r,wrapper:i}=ge(e,U),a=ye(e),o=ke(t.src),s=typeof t.customVars?.playerId==`string`?t.customVars.playerId:void 0,c=null,l=0,u=0,d=1,f=!1,p=!0,m=!1,h=!1,g=null;async function _(){if(!o){g={code:4,message:`Could not parse video ID from source URL`},n.trigger(`error`);return}try{let e=await me(s?`https://geo.dailymotion.com/libs/player/${s}.js`:`https://geo.dailymotion.com/libs/player.js`,s||`dailymotion-sdk`).then(()=>window.dailymotion);if(!e)return;let i=await e.createPlayer(r,{...s&&{player:s},video:o,params:{autoplay:!!t.autoplay,mute:!!t.muted}});c=i;let a=e.events;m&&i.play(),i.on(a.PLAYER_CRITICALPATHREADY,e=>{let t=e.videoThumbnails;if(!t)return;let r=Object.keys(t).map(Number).sort((e,t)=>t-e)[0],i=r===void 0?void 0:t[r];i&&n.trigger(`posterchange`,i)}),i.on(a.VIDEO_PLAY,()=>{p=!1,n.trigger(`play`),n.trigger(`playing`),!t.autoplay&&!h&&(h=!0,i.pause())}),i.on(a.VIDEO_PLAYING,()=>{p=!1,n.trigger(`play`),n.trigger(`playing`)}),i.on(a.VIDEO_PAUSE,()=>{p=!0,n.trigger(`pause`)}),a.VIDEO_BUFFERING&&i.on(a.VIDEO_BUFFERING,()=>n.trigger(`waiting`)),i.on(a.VIDEO_END,()=>{p=!0,n.trigger(`ended`)}),i.on(a.VIDEO_TIMECHANGE,e=>{l=e.videoTime??l,u=e.videoDuration??u,n.trigger(`timeupdate`)}),i.on(a.VIDEO_DURATIONCHANGE,e=>{u=e.videoDuration??u,n.trigger(`durationchange`)}),i.on(a.VIDEO_SEEKSTART,()=>n.trigger(`seeking`)),i.on(a.VIDEO_SEEKEND,e=>{l=e.videoTime??l,n.trigger(`seeked`)}),i.on(a.PLAYER_VOLUMECHANGE,e=>{d=e.playerVolume??d,f=e.playerIsMuted??f,n.trigger(`volumechange`)}),i.on(a.PLAYER_ERROR,()=>n.trigger(`error`)),a.AD_START&&i.on(a.AD_START,()=>{p=!1,n.trigger(`play`),n.trigger(`adstart`)}),a.AD_END&&i.on(a.AD_END,()=>n.trigger(`adend`))}catch(e){g={code:4,message:e instanceof Error?e.message:`This video could not be played.`},n.trigger(`error`)}}_();function v(){c?c.play():m=!0}function y(){if(k()){c?.setFullscreen(!0);return}a&&A(a)}function b(){if(k()){c?.setFullscreen(!1);return}j()}return{el:i,play:v,pause:()=>c?.pause(),paused:()=>p,currentTime:()=>l,setCurrentTime:e=>{l=e,c?.seek(e),n.trigger(`seeking`)},duration:()=>u,volume:()=>d,setVolume:e=>{d=e,c?.setVolume(e)},muted:()=>f,setMuted:e=>{f=e,c?.setMute(e)},playbackRate:()=>1,setPlaybackRate:()=>{},bufferedEnd:()=>l,error:()=>g,setSrc:()=>{},featuresPlaybackRate:()=>!1,enterFullscreen:y,exitFullscreen:b,on:n.on,off:n.off,dispose:()=>{c?.destroy?.(),c=null,ve(e,i,U),n.dispose()}}}const je=[{test:e=>/youtu\.be|youtube\.com/.test(e),key:`youtube`,embed:!0},{test:e=>/vimeo\.com|player\.vimeo\.com/.test(e),key:`vimeo`,embed:!0},{test:e=>/dailymotion\.com|dai\.ly/.test(e),key:`dailymotion`,embed:!0},{test:e=>/cdn\.jwplayer\.com/.test(e)||e.startsWith(`jwplayer://`),key:`jwplayer`,embed:!1},{test:e=>/players\.brightcove\.net/.test(e),key:`brightcove`,embed:!1}];function Me(e){return je.find(t=>t.test(e))?.key??`html5`}function Ne(e){if(/\.m3u8(\?|#|$)/.test(e))return`application/x-mpegURL`;if(/\.mp4(\?|#|$)/.test(e))return`video/mp4`}function Pe(e){return je.find(t=>t.test(e))?.embed??!1}const Fe={youtube:Ee,vimeo:Oe,dailymotion:Ae};function Ie(e,t,n){let r=Fe[Me(e)];return r?r(t,n):null}async function Le(e){let t=Me(e);return t===`jwplayer`?oe(e):t===`brightcove`?de(e):{src:e,type:Ne(e)}}const Re=`application/x-mpegURL`,ze=[`play`,`pause`,`ended`,`error`,`timeupdate`,`durationchange`,`progress`,`volumechange`,`ratechange`,`seeking`,`seeked`,`waiting`,`playing`,`canplay`];function Be(e,t){let n=fe(),r=null,i=!1,a=null;async function o(t){let{default:o}=await import(`hls.js`);if(i||a!==t)return;if(typeof o?.isSupported!=`function`||!o.isSupported()){e.src=t;return}r=new o({liveDurationInfinity:!0}),r.loadSource(t),r.attachMedia(e);let s=o.Events,c=o.ErrorTypes;r.on(s.ERROR,(e,o)=>{if(!(!o.fatal||i||a!==t))switch(o.type){case c.NETWORK_ERROR:r?.startLoad();break;case c.MEDIA_ERROR:r?.recoverMediaError();break;default:r?.destroy(),r=null,n.trigger(`error`);break}})}function s(){return e.canPlayType(`application/vnd.apple.mpegurl`)!==``||e.canPlayType(Re)!==``}function c(t,n){if(r?.destroy(),r=null,a=null,n===Re&&!s()){a=t,o(t);return}e.src=t}let l=e=>()=>n.trigger(e),u=ze.map(e=>[e,l(e)]);for(let[t,n]of u)e.addEventListener(t,n);let d=[[`webkitbeginfullscreen`,l(`nativefullscreenenter`)],[`webkitendfullscreen`,l(`nativefullscreenexit`)]];for(let[t,n]of d)e.addEventListener(t,n);e.poster=t.poster??``,e.muted=t.muted??t.autoplay??!1,e.playbackRate=t.playbackRate??1,e.playsInline=!0,c(t.src,t.type),t.autoplay&&e.play();function f(){let t=e;if(typeof t.webkitEnterFullscreen==`function`){t.webkitEnterFullscreen();return}let n=e.closest(`.player__shell`);n instanceof HTMLElement&&A(n)}function p(){let t=e;if(typeof t.webkitExitFullscreen==`function`){t.webkitExitFullscreen();return}j()}return{el:e,play:()=>e.play(),pause:()=>e.pause(),paused:()=>e.paused,currentTime:()=>e.currentTime,setCurrentTime:t=>{e.currentTime=t},duration:()=>e.duration,volume:()=>e.volume,setVolume:t=>{e.volume=t},muted:()=>e.muted,setMuted:t=>{e.muted=t},playbackRate:()=>e.playbackRate,setPlaybackRate:t=>{e.playbackRate=t},bufferedEnd:()=>{let{buffered:t,duration:n}=e;if(!t.length)return 0;let r=t.end(t.length-1);return n&&r>n?n:r},error:()=>{let t=e.error;return t?{code:t.code,message:t.message||`This video could not be played.`}:null},setSrc:c,featuresPlaybackRate:()=>!0,enterFullscreen:f,exitFullscreen:p,on:n.on,off:n.off,dispose:()=>{i=!0,r?.destroy();for(let[t,n]of u)e.removeEventListener(t,n);for(let[t,n]of d)e.removeEventListener(t,n);n.dispose()}}}function Ve(){return window.google?.ima?Promise.resolve():new Promise((e,t)=>{let n=document.createElement(`script`);n.src=`https://imasdk.googleapis.com/js/sdkloader/ima3.js`,n.onload=()=>e(),n.onerror=()=>t(Error(`Failed to load Google IMA SDK`)),document.head.appendChild(n)})}function He(e,t,n,r){let i=document.createElement(`div`);i.className=`ima-ad-container`,e.appendChild(i);let a=null,o=null,s=null,c=!1,l=!1,u=!1,d=!1,f=!1,p=!1,m=1,h=new ResizeObserver(([e])=>{let t=window.google?.ima;if(!s||!t)return;let{width:n,height:r}=e.contentRect;s.resize(n,r,t.ViewMode.NORMAL)});h.observe(t);function g(){o?.contentComplete()}function _(t){d=t,e.classList.toggle(W,t),t||(f=!1,e.classList.remove(G))}function v(){if(c||!l||!u||!a||!o)return;c=!0;let e=window.google?.ima;if(!e)return;a.initialize();let t=new e.AdsRequest;t.adTagUrl=n,o.requestAds(t)}Ve().then(()=>{if(p)return;let n=window.google?.ima;n&&(a=new n.AdDisplayContainer(i,t),o=new n.AdsLoader(a),l=!0,o.addEventListener(n.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,i=>{if(p)return;let a=new n.AdsRenderingSettings;a.restoreCustomPlaybackStateOnAdBreakComplete=!0,s=i.getAdsManager(t,a),t.addEventListener(`ended`,g),s.addEventListener(n.AdEvent.Type.CONTENT_PAUSE_REQUESTED,()=>{t.removeEventListener(`ended`,g),t.pause(),_(!0),r.onAdStart();let e=s?.getVolume()??1;e>0&&(m=e),r.onAdMuteChange(e===0)}),s.addEventListener(n.AdEvent.Type.CONTENT_RESUME_REQUESTED,()=>{t.addEventListener(`ended`,g),_(!1),r.onAdEnd(),t.ended||t.play()}),s.addEventListener(n.AdEvent.Type.PAUSED,()=>{f=!0,e.classList.add(G),r.onAdPauseChange(!0)}),s.addEventListener(n.AdEvent.Type.RESUMED,()=>{f=!1,e.classList.remove(G),r.onAdPauseChange(!1)}),s.addEventListener(n.AdEvent.Type.AD_PROGRESS,()=>{r.onAdProgress(s?.getRemainingTime()??0)}),s.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{_(!1),r.onError(e.getError().getMessage()),t.play()});try{s.init(t.clientWidth,t.clientHeight,n.ViewMode.NORMAL),s.start()}catch(e){r.onError(e instanceof Error?e.message:`Ad playback failed to start.`)}}),o.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{r.onError(e.getError().getMessage())}),v())}).catch(e=>r.onError(e.message));function y(){u=!0,v()}function b(){if(!s)return;let e=s.getVolume();e>0?(m=e,s.setVolume(0)):s.setVolume(m||1),r.onAdMuteChange(s.getVolume()===0)}return{isAdPlaying:()=>d,isAdPaused:()=>f,requestAdsOnFirstPlay:y,pauseAd:()=>s?.pause(),resumeAd:()=>s?.resume(),toggleAdMute:b,dispose:()=>{p=!0,h.disconnect(),t.removeEventListener(`ended`,g),s?.destroy(),o?.destroy(),i.remove(),e.classList.remove(W,G)}}}const Ue=new Set;function We(e){return Ue.add(e),()=>Ue.delete(e)}function Ge(e){Ue.forEach(t=>{if(t!==e)try{t()}catch{}})}function Ke(e){let t=S(!1),n=S(!1);function r(){let e=document;t.value=!!(document.fullscreenElement||e.webkitFullscreenElement),n.value=!1}function i(){let n=e();if(n){if(t.value){n.exitFullscreen();return}n.enterFullscreen()}}function a(){n.value=!0}function o(e){e.on(z,()=>{n.value=!0}),e.on(B,()=>{n.value=!1}),e.on(`nativefullscreenenter`,()=>{t.value=!0,n.value=!1}),e.on(`nativefullscreenexit`,()=>{t.value=!1,n.value=!1})}return v(()=>{document.addEventListener(`fullscreenchange`,r),document.addEventListener(`webkitfullscreenchange`,r)}),_(()=>{document.removeEventListener(`fullscreenchange`,r),document.removeEventListener(`webkitfullscreenchange`,r)}),{isFullscreen:t,isFullscreenPending:n,toggleFullscreen:i,markFullscreenPending:a,attachPlayerEvents:o}}function qe(){let e=S(!1),t=null;function n(){clearTimeout(t??void 0),e.value=!1}function r(r){r.on(`waiting`,()=>{clearTimeout(t??void 0),t=setTimeout(()=>{e.value=!0},500)}),r.on(`playing`,n),r.on(`canplay`,n)}return _(()=>clearTimeout(t??void 0)),{isBuffering:e,attachPlayerEvents:r,reset:n}}function Je(e,t,n){let r=new Set;function i(){if(!t.value)return;let i=e.value/t.value;for(let[e,t]of ne)!r.has(e)&&i>=e&&(r.add(e),n(t))}function a(){r.clear()}return{checkQuartiles:i,reset:a}}function Ye(){try{return JSON.parse(localStorage.getItem(`player:positions`)??`[]`)}catch{return[]}}function Xe(e){localStorage.setItem(`player:positions`,JSON.stringify(e))}function Ze(e,t){if(t<5)return;let n=Ye().filter(t=>t.url!==e);n.unshift({url:e,time:t}),Xe(n.slice(0,5))}function Qe(e){return Ye().find(t=>t.url===e)?.time??null}function $e(e){Xe(Ye().filter(t=>t.url!==e))}function et(e,t,n){let r=!1;function i(t){if(r)return;let n=Qe(e);n&&t.setCurrentTime(n),r=!0}function a(t){!t||n.value||Ze(e,t.currentTime()??0)}function o(){$e(e)}function s(){document.visibilityState===`hidden`&&a(t())}return v(()=>document.addEventListener(`visibilitychange`,s)),_(()=>{a(t()),document.removeEventListener(`visibilitychange`,s)}),{restoreOnce:i,save:a,clear:o}}function tt(e,t,n,r){let i=null;v(()=>{let a=e.value?.closest(`.player__shell`);a&&(i=new IntersectionObserver(([e])=>{let i=t();!e.isIntersecting&&i&&!i.paused()&&!n.value&&!r.value&&i.pause()},{threshold:.1}),i.observe(a))}),_(()=>i?.disconnect())}function nt(e,t,n,r,i,a){function o(){let n=e();if(!(!n||!t.value)){if(!a.value){n.play();return}n.pause()}}function s(t){e()?.setCurrentTime(n.value*(t/100))}function c(){let t=e();t?.setMuted(!t.muted())}function l(t){let n=e();n&&(n.setVolume(t),n.setMuted(t===0))}function u(){r.value=!r.value}function d(t){let n=e();n&&(n.setPlaybackRate(t),i.value=t)}return{togglePlay:o,seek:s,toggleMute:c,setVolume:l,toggleLoop:u,setPlaybackRate:d}}function rt(e,t){let{isPlaying:n,hasEnded:r,isReady:i,isAdPlaying:a,isLive:o,current:s,total:c,buffered:l,vol:u,isMuted:d,isLooping:f,playbackRate:p,supportsPlaybackRate:m,hasStarted:h,isError:g,errorMessage:_}=e,{fire:v,pauseThisPlayer:y,positionMemory:b,quartiles:x,buffering:S,fullscreen:C}=t;function w(e){i.value=!0,m.value=e.featuresPlaybackRate();let t=()=>{let t=e.duration();if(t===1/0){o.value=!0;return}o.value=!1,t&&t>0&&isFinite(t)&&(c.value=t)};e.on(`adstart`,()=>{Ge(y),a.value=!0,v(`adstart`)}),e.on(`adend`,()=>{a.value=!1,v(`adend`)}),e.on(`play`,()=>{Ge(y),h.value=!0,n.value=!0,r.value=!1,o.value||b.restoreOnce(e),v(`play`)}),e.on(`pause`,()=>{n.value=!1,o.value||b.save(e),v(`pause`)}),e.on(`ended`,()=>{if(n.value=!1,x.reset(),S.reset(),f.value){e.setCurrentTime(0),e.play();return}c.value&&(s.value=c.value),r.value=!0,b.clear(),v(`ended`)}),e.on(`seeked`,()=>{v(`seeked`)}),e.on(`error`,()=>{let t=e.error();_.value=t?.message||`This video could not be played.`,g.value=!0,i.value=!0,v(`error`,{error:t})}),e.on(`timeupdate`,()=>{r.value||(s.value=e.currentTime()??0,c.value||t(),m.value||=e.featuresPlaybackRate(),o.value||x.checkQuartiles())}),e.on(`durationchange`,t),e.on(`progress`,()=>{let t=e.duration();l.value=t?e.bufferedEnd()/t*100:0}),e.on(`volumechange`,()=>{let t=e.muted();u.value=e.volume()??1,d.value=t??!1,h.value&&v(`volumechange`,{isMuted:t})}),e.on(`ratechange`,()=>{let t=e.playbackRate()??1;p.value=t,h.value&&v(`ratechange`,{playbackRate:t})}),S.attachPlayerEvents(e),C.attachPlayerEvents(e)}return{attachPlayerEvents:w}}function it(e,t,r){let i=null,a=null,o=null,s=null,c=S(!1),l=S(!1),u=S(!1),d=S(!1),f=S(!1),p=S(!1),m=S(0),h=S(!1),g=S(0),y=S(0),b=S(0),x=S(1),C=S(t.muted??t.autoplay??!1),w=S(!1),T=S(t.playbackRate??1),D=S(!1),O=S(!1),k=S(!1),A=S(``),j=S(!1),M=n(()=>y.value?g.value/y.value*100:0),F=n(()=>Math.max(b.value,M.value)),I=()=>i,L=Ke(I),R=qe(),z=et(t.videoUrl,I,l);function B(e,n={}){r(`state-change`,{type:e,currentTime:g.value,duration:y.value,src:t.videoUrl,...n,payload:t.payload})}let V=Je(g,y,B);function ee(){!i||!s||(k.value=!1,A.value=``,i.setSrc(s.src,s.type))}function H(){a?.toggleAdMute()}function U(){if(a?.isAdPlaying()){a.pauseAd();return}i?.pause()}function W(){if(a?.isAdPlaying()){a.isAdPaused()?a.resumeAd():a.pauseAd();return}G.togglePlay()}let G=nt(I,u,y,w,T,c),{attachPlayerEvents:K}=rt({isPlaying:c,hasEnded:l,isReady:u,isAdPlaying:d,isLive:h,current:g,total:y,buffered:b,vol:x,isMuted:C,isLooping:w,playbackRate:T,supportsPlaybackRate:D,hasStarted:O,isError:k,errorMessage:A},{fire:B,pauseThisPlayer:U,positionMemory:z,quartiles:V,buffering:R,fullscreen:L});return E(()=>t.muted,e=>{!i||e===void 0||i.setMuted(e)}),E(()=>t.playbackRate,e=>{!i||e===void 0||i.setPlaybackRate(e)}),tt(e,I,L.isFullscreen,L.isFullscreenPending),E(O,t=>{!t||!e.value||!i||i.el===e.value||_e(e.value,i.el)}),v(async()=>{if(Pe(t.videoUrl)){if(!e.value)return;let n=Ie(t.videoUrl,e.value,{src:t.videoUrl,poster:t.poster,autoplay:t.autoplay,muted:t.muted??t.autoplay,nativeUi:t.nativeUi});if(!n){k.value=!0,u.value=!0,A.value=`This platform is not yet supported.`;return}j.value=!!t.nativeUi,i=n,s={src:t.videoUrl},o=We(U),K(i);return}let n=await Le(t.videoUrl).catch(()=>({src:t.videoUrl}));if(!e.value)return;s={src:n.src,type:n.type},i=Be(e.value,{src:n.src,type:n.type,poster:n.poster||t.poster||``,autoplay:t.autoplay,muted:t.muted??t.autoplay,playbackRate:T.value});let r=N(t.adTagUrl||n.adTagUrl||``,t.adTagParams);r&&e.value.parentElement&&(a=He(e.value.parentElement,e.value,r,{onAdStart:()=>{d.value=!0,f.value=!1,B(`adstart`)},onAdEnd:()=>{d.value=!1,f.value=!1,m.value=0,B(`adend`)},onAdPauseChange:e=>{f.value=e,e||Ge(U)},onAdMuteChange:e=>{p.value=e},onAdProgress:e=>{m.value=e},onError:e=>{d.value=!1,f.value=!1,m.value=0,console.error(`Ad playback error for ${r}:`,e)}}),i.on(`play`,()=>a?.requestAdsOnFirstPlay())),o=We(U),K(i)}),_(()=>{o?.(),a?.dispose(),a=null,i?.dispose(),i=null}),{isPlaying:c,hasEnded:l,isReady:u,isAdPlaying:d,isAdPaused:f,isAdMuted:p,adRemainingTime:m,isLive:h,isBuffering:R.isBuffering,current:g,total:y,vol:x,isMuted:C,isLooping:w,playbackRate:T,hasStarted:O,isError:k,errorMessage:A,progress:M,bufferedDisplay:F,isFullscreen:L.isFullscreen,isFullscreenPending:L.isFullscreenPending,fmt:P,fire:B,retry:ee,togglePlay:W,seek:G.seek,toggleMute:G.toggleMute,setVolume:G.setVolume,toggleFullscreen:L.toggleFullscreen,markFullscreenPending:L.markFullscreenPending,toggleLoop:G.toggleLoop,toggleAdMute:H,setPlaybackRate:G.setPlaybackRate,supportsPlaybackRate:D,nativeUi:j}}function at(e){let t=S(!0),n=S(!1),r=null,i=0;function a(e=400){i=Date.now()+e}function o(e=3500){clearTimeout(r??void 0),r=setTimeout(()=>{t.value=!1,n.value=!1},e)}function s(){clearTimeout(r??void 0)}function c(){n.value=!0,t.value=!0,o()}function l(){n.value=!1,e.value&&o()}function u(){e.value&&o()}function d(){t.value=!0,e.value&&o()}function f(){t.value=!0,o()}function p(){Date.now()<i||e.value&&o(600)}return E(e,e=>{if(!e){clearTimeout(r??void 0),t.value=!0;return}o()}),_(()=>clearTimeout(r??void 0)),{showHUD:t,isOpen:n,scheduleHide:o,pauseHide:s,onVideoTap:d,onMouseMove:f,onMouseLeave:p,openControls:c,closeControls:l,keepOpen:u,suppressMouseLeave:a}}const J=Symbol(`player`),Y=Symbol(`hud`),ot=Symbol(`action`),st=Symbol(`compact`),X=Symbol(`playlist`);function Z(e){let t=d(e);if(t===void 0)throw Error(`[video-player] missing "${String(e.description)}" context — this component must be rendered inside <VideoPlayer>`);return t}function ct(e,t){return{hudVisible:n(()=>!e.isReady||e.isError?!1:t.showHUD),popupVisible:n(()=>!e.isReady||e.isError?!1:e.isFullscreen?t.showHUD:t.isOpen)}}function lt(e,t){return n(()=>!(!e?.value||t.isFullscreen))}function ut(e,t,r){let i=n(()=>e?.value??null),a=n(()=>!!i.value&&typeof i.value==`object`),o=n(()=>a.value?i.value:null),s=n(()=>i.value===`mute`?t.isMuted?`Unmute`:`Mute`:i.value===`loop`?t.isLooping?`Disable loop`:`Loop`:i.value===`autoplay`?r.autoAdvance?`Disable autoplay next`:`Autoplay next`:``),c=n(()=>i.value===`mute`?t.isMuted:i.value===`loop`?t.isLooping:i.value===`autoplay`&&r.autoAdvance);function l(){i.value===`mute`?t.toggleMute():i.value===`loop`?t.toggleLoop():i.value===`autoplay`&&r.toggleAutoAdvance()}return{currentAction:i,isCustom:a,customAction:o,builtinLabel:s,builtinActive:c,onBuiltinClick:l}}var Q=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n};const dt={},ft={viewBox:`0 0 24 24`,fill:`currentColor`};function pt(e,t){return y(),a(`svg`,ft,[...t[0]||=[o(`path`,{d:`M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z`},null,-1)]])}var mt=Q(dt,[[`render`,pt]]);const ht={},gt={viewBox:`0 0 24 24`,fill:`currentColor`};function _t(e,t){return y(),a(`svg`,gt,[...t[0]||=[o(`path`,{d:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`},null,-1)]])}var vt=Q(ht,[[`render`,_t]]);const yt={},bt={viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function xt(e,t){return y(),a(`svg`,bt,[...t[0]||=[s(`<line x1="4" y1="6" x2="20" y2="6"></line><line x1="4" y1="12" x2="20" y2="12"></line><line x1="4" y1="18" x2="20" y2="18"></line><circle cx="9" cy="6" r="2.5" fill="currentColor" stroke="none"></circle><circle cx="15" cy="12" r="2.5" fill="currentColor" stroke="none"></circle><circle cx="9" cy="18" r="2.5" fill="currentColor" stroke="none"></circle>`,6)]])}var St=Q(yt,[[`render`,xt]]);const Ct={},wt={viewBox:`0 0 24 24`,fill:`currentColor`};function Tt(e,t){return y(),a(`svg`,wt,[...t[0]||=[o(`path`,{d:`M4 12l1.41 1.41L11 7.83V20h2V7.83l5.59 5.58L20 12l-8-8-8 8z`},null,-1)]])}var Et=Q(Ct,[[`render`,Tt]]);const Dt={},Ot={viewBox:`0 0 24 24`,fill:`currentColor`};function kt(e,t){return y(),a(`svg`,Ot,[...t[0]||=[o(`path`,{d:`M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z`},null,-1)]])}var At=Q(Dt,[[`render`,kt]]);const jt={},Mt={viewBox:`0 0 24 24`,fill:`currentColor`};function Nt(e,t){return y(),a(`svg`,Mt,[...t[0]||=[o(`path`,{d:`M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z`},null,-1)]])}var Pt=Q(jt,[[`render`,Nt]]);const Ft={},It={viewBox:`0 0 24 24`,fill:`currentColor`};function Lt(e,t){return y(),a(`svg`,It,[...t[0]||=[o(`path`,{d:`M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4z`},null,-1)]])}var Rt=Q(Ft,[[`render`,Lt]]);const zt={},Bt={viewBox:`0 0 24 24`,fill:`currentColor`};function Vt(e,t){return y(),a(`svg`,Bt,[...t[0]||=[o(`circle`,{cx:`5`,cy:`12`,r:`2`},null,-1),o(`circle`,{cx:`12`,cy:`12`,r:`2`},null,-1),o(`circle`,{cx:`19`,cy:`12`,r:`2`},null,-1)]])}var Ht=Q(zt,[[`render`,Vt]]);const Ut={},Wt={viewBox:`0 0 24 24`,fill:`currentColor`};function Gt(e,t){return y(),a(`svg`,Wt,[...t[0]||=[o(`path`,{d:`M6 19h4V5H6v14zm8-14v14h4V5h-4z`},null,-1)]])}var Kt=Q(Ut,[[`render`,Gt]]);const qt={},Jt={viewBox:`0 0 24 24`,fill:`currentColor`};function Yt(e,t){return y(),a(`svg`,Jt,[...t[0]||=[o(`path`,{d:`M8 5v14l11-7z`},null,-1)]])}var Xt=Q(qt,[[`render`,Yt]]);const Zt={},Qt={viewBox:`0 0 24 24`,fill:`currentColor`};function $t(e,t){return y(),a(`svg`,Qt,[...t[0]||=[o(`path`,{d:`M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z`},null,-1)]])}var en=Q(Zt,[[`render`,$t]]);const tn={},nn={viewBox:`0 0 24 24`,fill:`currentColor`};function rn(e,t){return y(),a(`svg`,nn,[...t[0]||=[o(`path`,{d:`M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z`},null,-1)]])}var an=Q(tn,[[`render`,rn]]);const on={},sn={viewBox:`0 0 24 24`,fill:`currentColor`};function cn(e,t){return y(),a(`svg`,sn,[...t[0]||=[o(`path`,{d:`M16.5 12A4.5 4.5 0 0 0 14 7.97v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51A8.796 8.796 0 0 0 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.06A8.99 8.99 0 0 0 17.73 18L19 19.27 20.27 18 5.27 3 4.27 3zM12 4L9.91 6.09 12 8.18V4z`},null,-1)]])}var ln=Q(on,[[`render`,cn]]);const un={},dn={viewBox:`0 0 24 24`,fill:`currentColor`};function fn(e,t){return y(),a(`svg`,dn,[...t[0]||=[o(`path`,{d:`M3 9v6h4l5 5V4L7 9H3zm13.5 3A4.5 4.5 0 0 0 14 7.97v8.05c1.48-.73 2.5-2.25 2.5-4.02z`},null,-1)]])}var pn=Q(un,[[`render`,fn]]);const mn=[`aria-label`];var $=Q(u({__name:`PlayPauseButton`,props:{isPlaying:{type:Boolean,required:!0},hasEnded:{type:Boolean,required:!1,default:!1},size:{type:String,required:!1,default:`sm`}},emits:[`toggle-play`],setup(e){let t=e,i=n(()=>t.isPlaying?`Pause`:t.hasEnded?`Replay`:`Play`);return(t,n)=>(y(),a(`button`,{class:m([`ppbtn`,`ppbtn--${e.size}`]),"aria-label":i.value,onClick:n[0]||=O(e=>t.$emit(`toggle-play`),[`stop`])},[e.isPlaying?(y(),r(T(Kt),{key:0})):e.hasEnded?(y(),r(T(en),{key:1})):(y(),r(T(Xt),{key:2}))],10,mn))}}),[[`__scopeId`,`data-v-85902525`]]),hn=u({__name:`VolumeIcon`,setup(e){let t=Z(J),i=n(()=>!t.isMuted&&t.vol>0);return(e,t)=>i.value?(y(),r(T(pn),{key:0})):(y(),r(T(ln),{key:1}))}}),gn=Q(u({__name:`Spinner`,props:{size:{type:Number,required:!1,default:14},borderWidth:{type:Number,required:!1,default:2}},setup(e){return(t,n)=>(y(),a(`div`,{class:`spinner`,style:g({width:`${e.size}px`,height:`${e.size}px`,borderWidth:`${e.borderWidth}px`})},null,4))}}),[[`__scopeId`,`data-v-259be2b2`]]);const _n={class:`hud`},vn=[`aria-label`],yn=[`aria-label`],bn=[`aria-label`],xn=[`aria-label`,`innerHTML`],Sn={key:4,class:`hud__spacer`},Cn={class:`hud__play-wrap`};var wn=Q(u({__name:`HudButtons`,setup(t){let n=Z(J),s=Z(Y),{currentAction:c,isCustom:u,customAction:f,builtinLabel:p,builtinActive:h,onBuiltinClick:g}=ut(d(ot),n,Z(X));return(t,d)=>(y(),a(`div`,_n,[!T(s).isOpen&&!T(n).isFullscreen?(y(),a(e,{key:0},[T(c)===`mute`?(y(),a(`button`,{key:0,class:m([`hud__btn`,{"hud__btn--active":T(h)}]),"aria-label":T(p),onClick:d[0]||=O((...e)=>T(g)&&T(g)(...e),[`stop`])},[l(hn)],10,vn)):T(c)===`loop`?(y(),a(`button`,{key:1,class:m([`hud__btn`,{"hud__btn--active":T(h)}]),"aria-label":T(p),onClick:d[1]||=O((...e)=>T(g)&&T(g)(...e),[`stop`])},[l(T(Rt))],10,yn)):T(c)===`autoplay`?(y(),a(`button`,{key:2,class:m([`hud__btn`,{"hud__btn--active":T(h)}]),"aria-label":T(p),onClick:d[2]||=O((...e)=>T(g)&&T(g)(...e),[`stop`])},[l(T(an))],10,bn)):T(u)&&T(f)?(y(),a(`button`,{key:3,class:`hud__btn`,"aria-label":T(f).label,onClick:d[3]||=O(e=>T(f).onClick(),[`stop`]),innerHTML:T(f).icon},null,8,xn)):(y(),a(`div`,Sn))],64)):i(`v-if`,!0),o(`div`,Cn,[l($,{"is-playing":T(n).isPlaying,"has-ended":T(n).hasEnded,size:`lg`,onTogglePlay:T(n).togglePlay},null,8,[`is-playing`,`has-ended`,`onTogglePlay`]),T(n).isBuffering?(y(),r(gn,{key:0,class:`hud__buf-spinner`})):i(`v-if`,!0)]),!T(s).isOpen&&!T(n).isFullscreen?(y(),a(`button`,{key:1,class:`hud__btn`,"aria-label":`Show controls`,onClick:d[4]||=O((...e)=>T(s).openControls&&T(s).openControls(...e),[`stop`])},[l(T(St))])):i(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-a6d118e7`]]);function Tn(e){let t=S(null),r=n(()=>t.value??e.progress),i=null;function a(){i&&clearTimeout(i),i=null,t.value=null}function o(e){i&&clearTimeout(i),i=null,t.value=Number(e.target.value)}function s(n){let r=Number(n.target.value);t.value=r,e.seek(r),i&&clearTimeout(i),i=setTimeout(a,3e3)}return E(()=>e.current,()=>{if(t.value===null||!e.total)return;let n=t.value/100*e.total;Math.abs(e.current-n)<1&&a()}),_(a),{displaySeek:r,onSeekInput:o,onSeekChange:s}}function En(e,t,n){if(!document.startViewTransition||!e.value){n();return}e.value.style.viewTransitionName=t,document.startViewTransition(async()=>{n(),await p()}).finished.finally(()=>{e.value&&(e.value.style.viewTransitionName=``)})}const Dn={class:`controls__vol-header`},On=[`aria-label`],kn={class:`controls__vol-body`},An=[`value`],jn={class:`controls__vol-pct`};var Mn=Q(u({__name:`VolumePanel`,emits:[`back`],setup(t){let r=Z(J),i=Z(Y),s=n(()=>r.isMuted?0:Math.round(r.vol*100));function c(e){r.setVolume(Number(e.target.value)/100)}return(t,n)=>(y(),a(e,null,[o(`div`,Dn,[o(`button`,{class:`controls__btn`,"aria-label":`Back`,onClick:n[0]||=e=>t.$emit(`back`)},[l(T(mt))]),n[6]||=o(`span`,{class:`controls__vol-label`},`Volume`,-1),o(`button`,{class:`controls__btn`,"aria-label":T(r).isMuted?`Unmute`:`Mute`,onClick:n[1]||=e=>T(r).toggleMute()},[l(hn)],8,On)]),o(`div`,kn,[o(`input`,{type:`range`,min:`0`,max:`100`,step:`1`,value:s.value,class:`controls__vol-slider`,style:g({"--v":s.value+`%`}),"aria-label":`Volume`,onInput:c,onMousedown:n[2]||=e=>T(i).pauseHide(),onMouseup:n[3]||=e=>T(i).scheduleHide(),onTouchstartPassive:n[4]||=e=>T(i).pauseHide(),onTouchend:n[5]||=e=>T(i).scheduleHide()},null,44,An),o(`span`,jn,C(s.value)+`%`,1)])],64))}}),[[`__scopeId`,`data-v-10b0ae67`]]);function Nn(e){function t(){let t=te.indexOf(e.playbackRate);e.setPlaybackRate(te[(t+1)%te.length])}function n(e){return`${e}×`}return{cycleRate:t,fmtRate:n}}const Pn={class:`controls__more-header`},Fn={class:`controls__more-body`},In={class:`controls__more-value`},Ln={class:`controls__more-row-label`},Rn={class:`controls__more-value`},zn={class:`controls__more-row-label`},Bn={class:`controls__more-value`},Vn=[`aria-label`],Hn={class:`controls__more-row-label`},Un=[`innerHTML`];var Wn=Q(u({__name:`MoreMenu`,props:{isCustom:{type:Boolean,required:!0},customAction:{type:[Object,null],required:!0}},emits:[`back`],setup(t){let n=Z(J),r=Z(X),{cycleRate:s,fmtRate:u}=Nn(n);return(d,f)=>(y(),a(e,null,[o(`div`,Pn,[o(`button`,{class:`controls__btn`,"aria-label":`Back`,onClick:f[0]||=e=>d.$emit(`back`)},[l(T(mt))]),f[5]||=o(`span`,{class:`controls__more-label`},`More`,-1)]),o(`div`,Fn,[T(n).supportsPlaybackRate?(y(),a(`button`,{key:0,class:`controls__more-row`,"aria-label":`Playback speed`,onClick:f[1]||=(...e)=>T(s)&&T(s)(...e)},[f[6]||=o(`span`,null,`Playback speed`,-1),o(`span`,In,C(T(u)(T(n).playbackRate)),1)])):i(`v-if`,!0),o(`button`,{class:m([`controls__more-row`,{"controls__more-row--active":T(n).isLooping}]),"aria-label":`Toggle loop`,onClick:f[2]||=e=>T(n).toggleLoop()},[o(`span`,Ln,[l(T(Rt),{class:`controls__more-row-icon`}),f[7]||=c(`Loop`,-1)]),o(`span`,Rn,C(T(n).isLooping?`On`:`Off`),1)],2),T(r).hasPlaylist?(y(),a(`button`,{key:1,class:m([`controls__more-row`,{"controls__more-row--active":T(r).autoAdvance}]),"aria-label":`Toggle autoplay next`,onClick:f[3]||=e=>T(r).toggleAutoAdvance()},[o(`span`,zn,[l(T(an),{class:`controls__more-row-icon`}),f[8]||=c(`Autoplay next`,-1)]),o(`span`,Bn,C(T(r).autoAdvance?`On`:`Off`),1)],2)):i(`v-if`,!0),t.isCustom&&t.customAction?(y(),a(`button`,{key:2,class:`controls__more-row`,"aria-label":t.customAction.label,onClick:f[4]||=e=>t.customAction.onClick()},[o(`span`,Hn,[o(`span`,{class:`controls__more-row-icon`,innerHTML:t.customAction.icon},null,8,Un),c(C(t.customAction.label),1)])],8,Vn)):i(`v-if`,!0)])],64))}}),[[`__scopeId`,`data-v-e89a8208`]]);const Gn=[`value`],Kn={class:`controls__row`},qn={class:`controls__play-wrap`},Jn={key:0,class:`controls__live`},Yn={key:1,class:`controls__time`},Xn={class:`controls__fs-wrap`},Zn=[`aria-label`];var Qn=Q(u({__name:`ControlsPopup`,setup(t){let n=Z(J),s=Z(Y),u=Z(X),f=lt(d(st),n),{isCustom:p,customAction:h}=ut(d(ot),n,u),b=S(!1),x=S(!1),w=S(null);function E(e){return!w.value||w.value.contains(e)?!1:(s.closeControls(),!0)}function D(e){E(e.target)}function A(e){E(e.target)&&e.preventDefault()}v(()=>{n.fire(`controlsopen`,{element:w.value}),document.addEventListener(`click`,D,!0),document.addEventListener(`touchend`,A,!0)}),_(()=>{b.value=!1,x.value=!1,n.fire(`controlsclose`,{element:w.value}),document.removeEventListener(`click`,D,!0),document.removeEventListener(`touchend`,A,!0)});function j(e){s.suppressMouseLeave(),En(w,`controls-popup`,e)}function M(){if(k()){n.toggleMute();return}j(()=>{b.value=!0})}function N(){j(()=>{x.value=!0})}let{displaySeek:P,onSeekInput:F,onSeekChange:I}=Tn(n);function L(){n.isFullscreen||n.markFullscreenPending(),n.toggleFullscreen()}return(t,d)=>(y(),a(`div`,{ref_key:`popupEl`,ref:w,class:m([`controls`,{"controls--fs":T(n).isFullscreen,"controls--compact":T(f)}]),onMousemove:d[10]||=O((...e)=>T(s).keepOpen&&T(s).keepOpen(...e),[`stop`])},[b.value?(y(),r(Mn,{key:0,onBack:d[0]||=e=>j(()=>b.value=!1)})):x.value?(y(),r(Wn,{key:1,"is-custom":T(p),"custom-action":T(h),onBack:d[1]||=e=>j(()=>x.value=!1)},null,8,[`is-custom`,`custom-action`])):(y(),a(e,{key:2},[T(n).isLive?i(`v-if`,!0):(y(),a(`input`,{key:0,type:`range`,min:`0`,max:`100`,value:T(P),class:`controls__seek`,style:g({"--p":T(P)+`%`,"--b":T(n).bufferedDisplay+`%`}),onInput:d[2]||=(...e)=>T(F)&&T(F)(...e),onChange:d[3]||=(...e)=>T(I)&&T(I)(...e),onMousedown:d[4]||=e=>T(s).pauseHide(),onMouseup:d[5]||=e=>T(s).scheduleHide(),onTouchstartPassive:d[6]||=e=>T(s).pauseHide(),onTouchend:d[7]||=e=>T(s).scheduleHide()},null,44,Gn)),o(`div`,Kn,[o(`div`,qn,[T(n).isBuffering?(y(),r(gn,{key:0})):(y(),r($,{key:1,"is-playing":T(n).isPlaying,"has-ended":T(n).hasEnded,size:`sm`,onTogglePlay:d[8]||=e=>T(n).togglePlay()},null,8,[`is-playing`,`has-ended`]))]),T(n).isLive?(y(),a(`span`,Jn,[...d[11]||=[o(`span`,{class:`controls__live-dot`},null,-1),c(`Live`,-1)]])):(y(),a(`span`,Yn,C(T(n).fmt(T(n).current))+` / `+C(T(n).fmt(T(n).total)),1)),T(u).hasNext?(y(),a(`button`,{key:2,class:`controls__btn`,"aria-label":`Play next`,onClick:d[9]||=e=>T(u).playNext()},[l(T(an))])):i(`v-if`,!0),o(`button`,{class:`controls__btn`,"aria-label":`Volume`,onClick:M},[l(hn)]),o(`button`,{class:m([`controls__btn controls__btn--more`,{"controls__btn--active":T(n).isLooping||T(n).playbackRate!==1||T(u).autoAdvance}]),"aria-label":`More`,onClick:N},[l(T(Ht))],2),o(`div`,Xn,[T(n).isFullscreenPending?(y(),r(gn,{key:0})):(y(),a(`button`,{key:1,class:`controls__btn`,"aria-label":T(n).isFullscreen?`Exit fullscreen`:`Fullscreen`,onClick:L},[T(n).isFullscreen?(y(),r(T(Pt),{key:0})):(y(),r(T(At),{key:1}))],8,Zn))])])],64))],34))}}),[[`__scopeId`,`data-v-5712aad4`]]);const $n={class:`ad-overlay`},er={class:`ad-overlay__bar`},tr={class:`ad-overlay__badge`},nr={key:0,class:`ad-overlay__countdown`},rr=[`aria-label`],ir={key:0,class:`ad-overlay__resume`};var ar=Q(u({__name:`AdOverlay`,setup(e){let t=Z(J),s=n(()=>t.adRemainingTime>0?t.fmt(t.adRemainingTime):``);return(e,n)=>(y(),a(`div`,$n,[o(`div`,er,[o(`div`,tr,[n[2]||=o(`span`,null,`Ad`,-1),s.value?(y(),a(`span`,nr,C(s.value),1)):i(`v-if`,!0)]),o(`button`,{class:`ad-overlay__mute`,"aria-label":T(t).isAdMuted?`Unmute ad`:`Mute ad`,onClick:n[0]||=e=>T(t).toggleAdMute()},[T(t).isAdMuted?(y(),r(T(ln),{key:0})):(y(),r(T(pn),{key:1}))],8,rr)]),T(t).isAdPaused?(y(),a(`div`,ir,[l($,{"is-playing":!1,size:`lg`,onTogglePlay:n[1]||=e=>T(t).togglePlay()})])):i(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-23efcc8b`]]);const or={key:0,class:`overlay__spinner`},sr={key:0,class:`overlay__error`};var cr=Q(u({__name:`PlayerOverlay`,props:{disableTapCapture:{type:Boolean,required:!1,default:!1}},setup(n){let s=Z(J),c=Z(Y),{hudVisible:u,popupVisible:d}=ct(s,c);function f(){if(s.isAdPlaying&&s.isAdPaused){s.togglePlay();return}c.onVideoTap()}return(c,p)=>(y(),a(e,null,[!n.disableTapCapture&&T(s).hasStarted&&!(T(s).isAdPlaying&&!T(s).isAdPaused)?(y(),a(`div`,{key:0,class:`overlay__tap-capture`,onClick:f,onTouchend:O(f,[`prevent`,`stop`])},null,32)):i(`v-if`,!0),T(s).isAdPlaying?(y(),r(ar,{key:1})):i(`v-if`,!0),l(t,{name:`fade`},{default:D(()=>[!T(s).isReady&&!T(s).isError?(y(),a(`div`,or,[l(gn,{size:40,"border-width":3})])):i(`v-if`,!0)]),_:1}),l(t,{name:`fade`},{default:D(()=>[T(s).isError?(y(),a(`div`,sr,[o(`p`,null,C(T(s).errorMessage||`This video could not be played.`),1),o(`button`,{class:`overlay__retry`,onClick:p[0]||=O((...e)=>T(s).retry&&T(s).retry(...e),[`stop`])},`Retry`)])):i(`v-if`,!0)]),_:1}),o(`div`,{class:m([`overlay__hud`,{"overlay__hud--visible":T(u)}])},[l(wn)],2),l(t,{name:`popup`},{default:D(()=>[T(d)?(y(),a(`div`,{key:0,class:m([`overlay__popup`,{"overlay__popup--fs":T(s).isFullscreen}])},[l(Qn)],2)):i(`v-if`,!0)]),_:1})],64))}}),[[`__scopeId`,`data-v-f3307b98`]]);const lr={class:`player`},ur={"data-mvp-player":``},dr=[`poster`],fr={key:1,class:`player__native-play`};var pr=Q(u({__name:`VideoPlayer`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1,default:``},poster:{type:String,required:!1,default:``},aspectRatio:{type:String,required:!1,default:K},adTagUrl:{type:String,required:!1,default:``},adTagParams:{type:Object,required:!1},autoplay:{type:Boolean,required:!1,default:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1,default:!1},autoStage:{type:Boolean,required:!1,default:!1},lazy:{type:Boolean,required:!1,default:!1},payload:{type:Object,required:!1,default:()=>({})},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1,default:!1},hasPlaylist:{type:Boolean,required:!1,default:!1},hasNext:{type:Boolean,required:!1,default:!1},hasPrevious:{type:Boolean,required:!1,default:!1},autoAdvance:{type:Boolean,required:!1,default:!1}},emits:[`state-change`,`play-next`,`play-previous`,`toggle-auto-advance`],setup(e,{expose:t,emit:s}){let c=e,u=s,d=S(null),f=x(it(d,c,u)),p=x(at(w(f,`isPlaying`)));b(J,f),b(Y,p),b(ot,w(c,`action`)),b(X,x({hasPlaylist:n(()=>c.hasPlaylist),hasNext:n(()=>c.hasNext),hasPrevious:n(()=>c.hasPrevious),autoAdvance:n(()=>c.autoAdvance),playNext:()=>u(`play-next`),playPrevious:()=>u(`play-previous`),toggleAutoAdvance:()=>u(`toggle-auto-advance`)}));let h=n(()=>M(c.aspectRatio)),_=n(()=>h.value.isPortrait),v=n(()=>h.value.cssRatio),C=n(()=>!c.poster&&!f.isReady);return t(f),(e,t)=>(y(),a(`div`,lr,[o(`div`,{class:m([`player__shell`,{"player__shell--portrait":_.value}]),style:g({aspectRatio:v.value}),onMousemove:t[0]||=e=>p.onMouseMove(),onContextmenuCapture:t[1]||=O(()=>{},[`prevent`]),onMouseleave:t[2]||=e=>p.onMouseLeave()},[o(`div`,ur,[o(`video`,{ref_key:`videoEl`,ref:d,class:m([`mvp-video`,{"mvp-video--hidden":C.value}]),poster:c.poster,playsinline:``},null,10,dr),f.nativeUi?i(`v-if`,!0):(y(),r(cr,{key:0,"disable-tap-capture":c.disableTapCapture},null,8,[`disable-tap-capture`])),f.nativeUi&&!f.hasStarted?(y(),a(`div`,fr,[l($,{"is-playing":!1,size:`lg`,onTogglePlay:f.togglePlay},null,8,[`onTogglePlay`])])):i(`v-if`,!0)])],38)]))}}),[[`__scopeId`,`data-v-4ab3cf75`]]);const mr=S(0),hr=n(()=>mr.value>0);function gr(){mr.value++}function _r(){mr.value--}function vr(e,t){window.dispatchEvent(new CustomEvent(e,{detail:t}))}function yr(e,t){let n=e=>t(e.detail);v(()=>window.addEventListener(e,n)),_(()=>window.removeEventListener(e,n))}function br(e,t){let r=n(()=>!e.value||!t.value?-1:e.value.findIndex(e=>e.videoUrl===t.value?.videoUrl)),i=n(()=>r.value===-1||!e.value?null:e.value[r.value+1]??null),a=n(()=>r.value<=0||!e.value?null:e.value[r.value-1]??null);return{hasNext:n(()=>i.value!==null),hasPrevious:n(()=>a.value!==null),nextEntry:i,previousEntry:a}}function xr(){return localStorage.getItem(V)===`true`}function Sr(e){localStorage.setItem(V,String(e))}const Cr=[`src`],wr={class:`stage__idle-body`},Tr={class:`stage__idle-btn`},Er={class:`stage__idle-title`},Dr={key:1,class:`stage__idle-empty`};var Or=Q(u({__name:`VideoStage`,props:{pinPosition:{type:String,required:!1,default:`bottom-right`},playlist:{type:Array,required:!1}},emits:[`state-change`],setup(t,{expose:s,emit:c}){let u=t,d=c,p=S(xr());E(p,Sr);let h=n(()=>!!u.playlist?.length),x=S(null),D=S(null),k=S(!1),A=S(!1),j=S(null),N=S(null),P=S(!1);b(st,P);let{hasNext:F,hasPrevious:I,nextEntry:z,previousEntry:B}=br(w(u,`playlist`),D),V=n(()=>P.value&&!!D.value&&k.value),ee=n(()=>M(D.value?.aspectRatio||`16:9`).cssRatio),H=S(null),U=S(null);E(P,e=>{H.value=e&&N.value?{height:N.value.offsetHeight,width:N.value.offsetWidth}:null});let W=n(()=>{if(!H.value)return{};let{height:e,width:t}=H.value,n=U.value&&t?U.value/t:1;return{height:`${Math.round(e*n)}px`}}),G=null,K=null;function te(){G?.disconnect(),K?.disconnect(),j.value&&(G=new IntersectionObserver(([e])=>{P.value=!e.isIntersecting},{threshold:1}),G.observe(j.value),K=new ResizeObserver(([e])=>{U.value=e.contentRect.width}),K.observe(j.value))}E(j,te);function ne(){D.value&&(D.value={...D.value,autoplay:!0},k.value=!0)}function re(){j.value?.scrollIntoView({behavior:`smooth`,block:`center`})}function ie(){D.value=null,k.value=!1,A.value=!1,P.value=!1,H.value=null,ae()}function ae(){vr(R,{currentVideoUrl:D.value?.videoUrl??null,isPlaying:A.value})}function oe(e){if(D.value?.videoUrl===e.videoUrl&&k.value){x.value?.togglePlay();return}D.value=e,k.value=!1,A.value=!1,ae(),k.value=!0}function se(e){if(!(!D.value||e.videoUrl!==D.value.videoUrl)){if(!k.value){D.value={...D.value,autoplay:!0},k.value=!0;return}x.value?.togglePlay()}}function ce(){z.value&&oe({...z.value,autoplay:!0})}function le(){B.value&&oe({...B.value,autoplay:!0})}function ue(e){e.type===`play`&&(A.value=!0),(e.type===`pause`||e.type===`ended`)&&(A.value=!1),e.type===`ended`&&p.value&&ce(),ae(),d(`state-change`,e)}return yr(L,oe),yr(`video-toggle`,se),v(gr),_(()=>{_r(),G?.disconnect(),K?.disconnect()}),s({playNext:ce,playPrevious:le,hasNext:F,hasPrevious:I}),(n,s)=>(y(),a(`div`,{ref_key:`wrapperEl`,ref:j,class:`stage-wrapper`,style:g(W.value)},[o(`div`,{ref_key:`stageEl`,ref:N,class:m([`stage`,{"stage--minified":V.value,[`stage--pin-${t.pinPosition}`]:V.value}])},[V.value?(y(),a(`button`,{key:0,class:`stage__scroll-to`,"aria-label":`Scroll to player`,onClick:O(re,[`stop`])},[l(T(Et))])):i(`v-if`,!0),V.value?(y(),a(`button`,{key:1,class:`stage__dismiss`,"aria-label":`Close`,onClick:O(ie,[`stop`])},[l(T(vt))])):i(`v-if`,!0),D.value&&k.value?(y(),r(pr,f({ref_key:`playerRef`,ref:x,key:D.value.videoUrl},D.value,{"has-playlist":h.value,"has-next":T(F),"has-previous":T(I),"auto-advance":p.value,onStateChange:ue,onPlayNext:ce,onPlayPrevious:le,onToggleAutoAdvance:s[0]||=e=>p.value=!p.value}),null,16,[`has-playlist`,`has-next`,`has-previous`,`auto-advance`])):(y(),a(`div`,{key:3,class:`stage__idle`,style:g({aspectRatio:ee.value}),onClick:ne},[D.value?.poster?(y(),a(`img`,{key:0,src:D.value.poster,class:`stage__idle-poster`},null,8,Cr)):i(`v-if`,!0),s[1]||=o(`div`,{class:`stage__idle-scrim`},null,-1),o(`div`,wr,[D.value?(y(),a(e,{key:0},[o(`div`,Tr,[l(T(Xt))]),o(`p`,Er,C(D.value.title),1)],64)):(y(),a(`p`,Dr,`Select a video to play`))])],4))],2)],4))}}),[[`__scopeId`,`data-v-fb8c86cf`]]);const kr={class:`placeholder`},Ar=[`src`,`alt`],jr={class:`placeholder__btn-wrap`},Mr={key:1,class:`placeholder__footer`},Nr={class:`placeholder__title`};var Pr=Q(u({__name:`VideoPlaceholder`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1,default:``},poster:{type:String,required:!1,default:``},aspectRatio:{type:String,required:!1,default:K},adTagUrl:{type:String,required:!1,default:``},adTagParams:{type:Object,required:!1},autoplay:{type:Boolean,required:!1,default:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1,default:!1},autoStage:{type:Boolean,required:!1,default:!1},lazy:{type:Boolean,required:!1},payload:{type:Object,required:!1,default:()=>({})},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1}},setup(e){let t=e,r=n(()=>M(t.aspectRatio)),s=n(()=>r.value.isPortrait),c=n(()=>r.value.cssRatio),u=S(!1),d=S(!1);yr(R,e=>{u.value=e.currentVideoUrl===t.videoUrl,d.value=u.value&&e.isPlaying});function f(e){vr(L,{...t,...e!==void 0&&{autoplay:e}})}function p(){f(!0)}return v(()=>{t.autoStage&&f()}),(t,n)=>(y(),a(`div`,kr,[o(`div`,{class:m([`placeholder__shell`,{"placeholder__shell--portrait":s.value,"placeholder__shell--active":u.value}]),style:g({aspectRatio:c.value}),onClick:p},[e.poster?(y(),a(`img`,{key:0,class:`placeholder__poster`,src:e.poster,alt:e.title},null,8,Ar)):i(`v-if`,!0),n[0]||=o(`div`,{class:`placeholder__scrim`},null,-1),o(`div`,jr,[l($,{"is-playing":u.value&&d.value,size:`lg`,onTogglePlay:p},null,8,[`is-playing`])]),e.title?(y(),a(`div`,Mr,[o(`p`,Nr,C(e.title),1)])):i(`v-if`,!0)],6)]))}}),[[`__scopeId`,`data-v-dbcb4f82`]]),Fr=u({__name:`VideoItem`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1},poster:{type:String,required:!1},aspectRatio:{type:String,required:!1},adTagUrl:{type:String,required:!1},adTagParams:{type:Object,required:!1},autoplay:{type:Boolean,required:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1},autoStage:{type:Boolean,required:!1},lazy:{type:Boolean,required:!1,default:!0},payload:{type:Object,required:!1},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1}},emits:[`state-change`],setup(t,{emit:n}){let i=t,o=n,s=S(!1);return(t,n)=>T(hr)?(y(),r(Pr,h(f({key:0},i)),null,16)):(y(),a(e,{key:1},[i.lazy&&!s.value&&!i.autoplay?(y(),r(Pr,f({key:0},i,{onClickCapture:n[0]||=e=>s.value=!0}),null,16)):(y(),r(pr,f({key:1},i,{autoplay:s.value||i.autoplay,onStateChange:n[1]||=e=>o(`state-change`,e)}),null,16,[`autoplay`]))],64))}});const Ir={install(e){e.component(`VideoPlayer`,pr),e.component(`VideoStage`,Or),e.component(`VideoPlaceholder`,Pr),e.component(`VideoItem`,Fr)}};export{ot as ActionKey,st as CompactKey,Y as HudKey,J as PlayerKey,X as PlaylistKey,Fr as VideoItem,Pr as VideoPlaceholder,pr as VideoPlayer,Ir as VideoPlayerPlugin,Ir as default,Or as VideoStage,Me as getPlatform,Z as injectStrict};
1
+ import{Fragment as e,Transition as t,computed as n,createBlock as r,createCommentVNode as i,createElementBlock as a,createElementVNode as o,createStaticVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,inject as d,mergeProps as f,nextTick as p,normalizeClass as m,normalizeProps as h,normalizeStyle as g,onBeforeUnmount as _,onMounted as v,openBlock as y,provide as b,reactive as x,ref as S,renderList as C,resolveDynamicComponent as w,toDisplayString as T,toRef as E,unref as D,watch as O,withCtx as k,withModifiers as A}from"vue";function j(){return/iPad|iPhone|iPod/.test(navigator.userAgent)||/Mac/.test(navigator.userAgent)&&navigator.maxTouchPoints>1}function M(e){(e.requestFullscreen||e.webkitRequestFullscreen)?.call(e)}function N(){(document.exitFullscreen||document.webkitExitFullscreen)?.call(document)}function P(e){let[t,n]=e.split(`:`).map(Number);return{isPortrait:n>t,cssRatio:`${t}/${n}`}}function F(e,t){if(!t||!Object.keys(t).length)return e;let n=e;for(let[e,r]of Object.entries(t))r!=null&&r!==``&&(n=n.split(`{${e}}`).join(encodeURIComponent(r)));return n}function ee(e){return!e||isNaN(e)?`0:00`:`${Math.floor(e/60)}:${String(Math.floor(e%60)).padStart(2,`0`)}`}function I(e,t=(...e)=>String(e[0])){let n={};return async(...r)=>{let i=t(...r);if(n[i])return n[i];let a=await e(...r);return n[i]=a,a}}function L(e){return e.filter(e=>e.src&&(e.type===`application/x-mpegURL`||e.type===`video/mp4`)).sort((e,t)=>e.type===`application/x-mpegURL`?-1:1)}const R=`video-select`,z=`video-state`,B=`fullscreen-pending`,V=`fullscreen-pending-done`,H=`player:autoAdvance`,U=`mvp-youtube`,W=`mvp-vimeo`,G=`mvp-dailymotion`,K=`mvp-ad-playing`,q=`mvp-ad-paused`,te=`16:9`,ne=[.5,.75,1,1.25,1.5,2],re=[[.25,`firstQuartile`],[.5,`midpoint`],[.75,`thirdQuartile`]];function ie(e){return e.match(/cdn\.jwplayer\.com\/videos\/([^-]+)/)?.[1]??e.match(/cdn\.jwplayer\.com\/manifests\/([^.]+)/)?.[1]??e.match(/^jwplayer:\/\/([^/]+)$/)?.[1]??null}function J(e){let t=e?.advertising?.schedule;return Array.isArray(t)&&t.length?t[0].tag??null:e?.advertising?.tag??null}const Y=I(async e=>{let t=await fetch(`https://cdn.jwplayer.com/v2/media/${e}`);if(!t.ok)throw Error(`JW Platform API error: ${t.status}`);let n=(await t.json()).playlist?.[0];if(!n)throw Error(`JW Platform: empty playlist`);let r=L((n.sources??[]).map(e=>({src:e.file,type:e.type})));if(!r.length)throw Error(`JW Platform: no playable sources found`);return{src:r[0].src,type:r[0].type,poster:n.image??null,adTagUrl:J(n)}});async function ae(e){let t=ie(e);if(!t)throw Error(`JW Platform: unrecognised source URL: ${e}`);let n=await Y(t);if(e.startsWith(`jwplayer://`))return n;let r=/\.mp4(\?|#|$)/.test(e)?`video/mp4`:`application/x-mpegURL`;return{...n,src:e,type:r}}function oe(e){let t;try{t=new URL(e)}catch{return null}if(t.hostname!==`players.brightcove.net`)return null;let[,n,r]=t.pathname.split(`/`),i=t.searchParams.get(`videoId`),a=r?.indexOf(`_`)??-1;return!n||a===-1||!i?null:{accountId:n,playerId:r.slice(0,a),embed:r.slice(a+1),videoId:i}}function se(e){for(let t of e?.plugins??[]){let e=t.options?.serverUrl??t.options?.imaOptions?.serverUrl;if(e)return e}return null}const ce=I(async(e,t,n,r)=>{let i=await fetch(`https://players.brightcove.net/${e}/${t}_${n}/config.json`);if(!i.ok)throw Error(`Brightcove: could not load player config (${i.status})`);let a=await i.json(),o=r??a?.video_cloud?.policy_key;if(!o)throw Error(`Brightcove: policy_key not found in player config`);return{policyKey:o,adTagUrl:se(a)}},(e,t,n)=>`${e}/${t}_${n}`);async function le(e,t,n){let r=await fetch(`https://edge.api.brightcove.com/playback/v1/accounts/${e}/videos/${t}`,{headers:{Accept:`application/json;pk=${n}`}});if(!r.ok)throw Error(`Brightcove Playback API error: ${r.status}`);let i=await r.json(),a=L(i.sources||[]);if(!a.length)throw Error(`Brightcove: no playable sources found`);return{sources:a.map(e=>({src:e.src,type:e.type})),poster:i.poster??i.thumbnail??null}}async function ue(e,t){let n=oe(e);if(!n)throw Error(`Brightcove: invalid src — expected a Brightcove embed URL, e.g. "https://players.brightcove.net/{accountId}/{playerId}_{embed}/index.html?videoId={videoId}"`);let{accountId:r,playerId:i,embed:a,videoId:o}=n,{policyKey:s,adTagUrl:c}=await ce(r,i,a,t),{sources:l,poster:u}=await le(r,o,s);return{...l[0],poster:u,adTagUrl:c}}function de(){let e=new Map;function t(t,n){for(let r of Array.isArray(t)?t:[t])e.has(r)||e.set(r,new Set),e.get(r)?.add(n)}function n(t,n){e.get(t)?.delete(n)}function r(t,...n){e.get(t)?.forEach(e=>e(...n))}function i(){e.clear()}return{on:t,off:n,trigger:r,dispose:i}}const fe={};function pe(e,t=e){return fe[t]||(fe[t]=new Promise((t,n)=>{let r=document.createElement(`script`);r.src=e,r.onload=()=>t(),r.onerror=()=>n(Error(`Failed to load script: ${e}`)),document.head.appendChild(r)})),fe[t]}let me=0;function he(e,t){e.parentElement?.classList.add(t);let n=`${t}-${++me}`,r=document.createElement(`div`);r.id=n,r.className=`mvp-tech`,r.style.cssText=`width:100%;height:100%;top:0;left:0;position:absolute`;let i=document.createElement(`div`);return i.style.cssText=`width:100%;height:100%;position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity 0.2s`,i.appendChild(r),e.parentElement?.insertBefore(i,e),{techId:n,wrapper:i,innerDiv:r}}function ge(e,t){e.style.display=`none`,t.style.opacity=`1`,t.style.pointerEvents=``}function _e(e,t,n){t.remove(),e.parentElement?.classList.remove(n),e.style.display=``}function ve(e){return e.closest(`.player__shell`)}function ye(e){e.trigger(B);let t=document.createElement(`div`);t.style.cssText=`position:fixed;inset:0;z-index:99999;opacity:0;pointer-events:none`,document.body.appendChild(t);let n=!1;function r(){n||e.trigger(V)}function i(r){n||(n=!0,e.trigger(V),t.remove(),r?.())}return{overlay:t,reveal:r,finish:i}}function be(e,t){return t===e.PlayerState.PLAYING||t===e.PlayerState.BUFFERING}function xe(e){let t={videoId:null,listId:null},n=e.match(/^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|shorts\/|&v=)([^#&?]*).*/);n?.[2]?.length===11&&(t.videoId=n[2]);let r=e.match(/[?&]list=([^#&?]+)/);return r?.[1]&&(t.listId=r[1]),t}let Se=!1,Ce=!1;const we=[];function Te(){Ce||(Ce=!0,pe(`https://www.youtube.com/iframe_api`).then(()=>{window.YT?.ready(()=>{Se=!0,we.forEach(e=>e()),we.length=0})}))}function Ee(e,t){Te();let n=de(),{techId:r,wrapper:i}=he(e,U),a=xe(t.src),o=null,s=a.videoId,c=!1,l=!1,u=!1,d=null,f=!1,p=null,m=!1,h=new Set,g=null,_={active:!1,wasPaused:!1,timeBefore:0,catchUpInterval:null};function v(e,t=0){let n=setTimeout(()=>{h.delete(n),e()},t);h.add(n)}function y(){try{let e=o?.getPlayerResponse()?.adPlacements;return Array.isArray(e)&&e.length>0}catch{return!1}}function b(e){o?.loadVideoById({videoId:e})}function x(e){o?.cueVideoById({videoId:e})}function S(){a.videoId&&(_.wasPaused=!1,c?s===a.videoId?o?.playVideo():(b(a.videoId),s=a.videoId):(n.trigger(`waiting`),l=!0))}function C(){_.catchUpInterval&&clearInterval(_.catchUpInterval),_.active=!1,_.wasPaused&&o?.pauseVideo(),n.trigger(`seeked`)}function w(){m=(o?.getAvailablePlaybackRates()??[]).length>1,c=!0,t.muted&&o?.mute(),l?S():u&&a.videoId&&(x(a.videoId),s=a.videoId)}function T(e){if(e===d||p!==null)return;d=e;let t=y();t!==f&&(f=t,n.trigger(t?`adstart`:`adend`));let r=window.YT;if(r){switch(e){case-1:n.trigger(`loadstart`),n.trigger(`loadedmetadata`),n.trigger(`durationchange`),n.trigger(`ratechange`);break;case r.PlayerState.ENDED:n.trigger(`ended`);break;case r.PlayerState.PLAYING:n.trigger(`timeupdate`),n.trigger(`durationchange`),n.trigger(`playing`),n.trigger(`play`),_.active&&C();break;case r.PlayerState.PAUSED:n.trigger(`canplay`),_.active||n.trigger(`pause`);break;case r.PlayerState.BUFFERING:n.trigger(`waiting`);break;case r.PlayerState.CUED:n.trigger(`canplay`);break}g&&=(clearInterval(g),null),e===r.PlayerState.PLAYING&&(g=setInterval(()=>n.trigger(`timeupdate`),250))}}function E(){let e={controls:+!!t.nativeUi,modestbranding:1,rel:0,showinfo:0,mute:+!!t.muted,origin:window.location.origin,allowfullscreen:1,fullscreen:1,fs:1,playsinline:1,...t.customVars};s=a.videoId,o=new window.YT.Player(r,{videoId:s??void 0,playerVars:e,events:{onReady:w,onStateChange:e=>T(e.data),onPlaybackRateChange:()=>n.trigger(`ratechange`),onVolumeChange:()=>n.trigger(`volumechange`),onError:e=>{p=e.data,n.trigger(`error`),v(()=>{p=null})}}})}Se?E():we.push(E),t.autoplay?c?S():l=!0:a.videoId&&(u=!0);function D(){if(!o)return;let e=o.getCurrentTime(),{video_id:t}=o.getVideoData();o.pauseVideo();let{overlay:r,reveal:i,finish:a}=ye(n),s=document.createElement(`div`);s.id=`yt-fs-${Math.random().toString(36).slice(2)}`,r.appendChild(s);let c=null,l=()=>{document.removeEventListener(`pointerdown`,u,!0),a(()=>{let t=c?.getCurrentTime()??e;try{c?.destroy()}catch{}o?.seekTo(t,!0),n.trigger(`timeupdate`)})};function u(){l()}c=new window.YT.Player(s.id,{videoId:t,playerVars:{playsinline:0,autoplay:1,controls:1,modestbranding:1,rel:0,start:Math.floor(e)},events:{onReady:t=>{i(),t.target.seekTo(e,!0),t.target.playVideo()},onStateChange:e=>{let t=window.YT;t&&(e.data===t.PlayerState.ENDED?l():e.data===t.PlayerState.PAUSED?(document.removeEventListener(`pointerdown`,u,!0),document.addEventListener(`pointerdown`,u,{capture:!0,once:!0})):(document.removeEventListener(`pointerdown`,u,!0),i()))}}})}function O(){if(j()&&o){D();return}let t=ve(e);t&&M(t)}function k(){N()}return{el:i,play:S,pause:()=>o?.pauseVideo(),paused:()=>{if(!o)return!0;let e=window.YT;return!e||!be(e,d)},currentTime:()=>o?.getCurrentTime()??0,setCurrentTime:e=>{if(!o)return;let t=window.YT;t&&d===t.PlayerState.PAUSED&&(_.timeBefore=o.getCurrentTime()),_.active||(_.wasPaused=!t||!be(t,d)),o.seekTo(e,!0),n.trigger(`timeupdate`),n.trigger(`seeking`),_.active=!0,t&&d===t.PlayerState.PAUSED&&_.timeBefore!==e&&(_.catchUpInterval&&clearInterval(_.catchUpInterval),_.catchUpInterval=setInterval(()=>{d!==t.PlayerState.PAUSED||!_.active?_.catchUpInterval&&clearInterval(_.catchUpInterval):o&&o.getCurrentTime()!==_.timeBefore&&(n.trigger(`timeupdate`),C())},250))},duration:()=>o?.getDuration()??0,volume:()=>o?o.getVolume()/100:1,setVolume:e=>o?.setVolume(e*100),muted:()=>o?.isMuted()??!1,setMuted:e=>{o&&(e?o.mute():o.unMute(),v(()=>n.trigger(`volumechange`),50))},playbackRate:()=>o?.getPlaybackRate()??1,setPlaybackRate:e=>o?.setPlaybackRate(e),bufferedEnd:()=>o?.getVideoLoadedFraction?o.getVideoLoadedFraction()*o.getDuration():0,error:()=>p===null?null:{code:p,message:`This video could not be played.`},setSrc:e=>{let t=xe(e);a.videoId=t.videoId,a.listId=t.listId,a.videoId&&(c?(b(a.videoId),s=a.videoId):u=!0)},featuresPlaybackRate:()=>m,featuresCaptions:()=>!1,getCaptionTracks:()=>[],setCaptionTrack:()=>{},getActiveCaptionTrack:()=>null,featuresQuality:()=>!1,getQualityLevels:()=>[],getCurrentQuality:()=>null,isAutoQuality:()=>!0,setQuality:()=>{},featuresPip:()=>!1,isPipActive:()=>!1,togglePip:()=>{},enterFullscreen:O,exitFullscreen:k,on:n.on,off:n.off,dispose:()=>{if(h.forEach(clearTimeout),h.clear(),g&&clearInterval(g),_.catchUpInterval&&clearInterval(_.catchUpInterval),o)try{o.stopVideo(),o.destroy()}catch{}else{let e=we.indexOf(E);e!==-1&&we.splice(e,1)}o=null,_e(e,i,U),n.dispose()}}}function De(e){return e.match(/(?:vimeo\.com\/(?:video\/|channels\/[^/]+\/|groups\/[^/]+\/videos\/)?|player\.vimeo\.com\/video\/)(\d+)/)?.[1]??null}function Oe(e,t){let n=de(),{techId:r,wrapper:i}=he(e,W),a=De(t.src),o=null,s=0,c=0,l=1,u=!1,d=!0,f=1,p=!1,m=!1,h=!1,g=null,_=new Set;function v(e,t=0){let n=setTimeout(()=>{_.delete(n),e()},t);_.add(n)}function y(){if(!o){m=!0;return}o.play().catch(()=>{})}function b(){t.muted&&o?.setMuted(!0).catch(()=>{}),m&&y()}async function x(e){if(await pe(`https://player.vimeo.com/api/player.js`,`vimeo`),h||!window.Vimeo)return;let i={id:Number(e),byline:!1,portrait:!1,title:!1,transparent:!0,controls:!!t.nativeUi,autopause:!1,...t.autoplay!==void 0&&{autoplay:t.autoplay},...t.muted!==void 0&&{muted:t.muted}};o=new window.Vimeo.Player(r,i),t.autoplay&&(m=!0),o.ready().then(b).catch(e=>{g={code:4,message:e?.message||`This video is unavailable or cannot be embedded here.`},n.trigger(`error`)}),o.on(`play`,()=>{d=!1,n.trigger(`play`),n.trigger(`playing`)}),o.on(`pause`,()=>{d=!0,n.trigger(`pause`)}),o.on(`ended`,()=>{d=!0,n.trigger(`ended`)}),o.on(`timeupdate`,e=>{let{seconds:t,duration:r}=e;s=t,c=r,n.trigger(`timeupdate`),r&&!p&&(p=!0,n.trigger(`durationchange`))}),o.on(`loaded`,()=>{p=!1,n.trigger(`loadedmetadata`),n.trigger(`durationchange`)}),o.on(`seeking`,e=>{s=e.seconds,n.trigger(`seeking`)}),o.on(`seeked`,e=>{s=e.seconds,n.trigger(`seeked`),n.trigger(`timeupdate`)}),o.on(`bufferstart`,()=>n.trigger(`waiting`)),o.on(`bufferend`,()=>n.trigger(`canplay`)),o.on(`volumechange`,e=>{l=e.volume,n.trigger(`volumechange`)}),o.on(`error`,()=>n.trigger(`error`))}a&&x(a);function S(){if(!j()){let t=ve(e);t&&M(t);return}o?.requestFullscreen().catch(()=>{})}function C(){N()}return{el:i,play:y,pause:()=>o?.pause().catch(()=>{}),paused:()=>d,currentTime:()=>s,setCurrentTime:e=>{o?.setCurrentTime(e).catch(()=>{}),n.trigger(`timeupdate`),n.trigger(`seeking`)},duration:()=>c,volume:()=>l,setVolume:e=>{l=e,o?.setVolume(e).catch(()=>{})},muted:()=>u,setMuted:e=>{u=e,o?.setMuted(e).then(()=>v(()=>n.trigger(`volumechange`),50)).catch(()=>{})},playbackRate:()=>f,setPlaybackRate:e=>{f=e,o?.setPlaybackRate(e).catch(()=>{}),n.trigger(`ratechange`)},bufferedEnd:()=>s,error:()=>g,setSrc:()=>{},featuresPlaybackRate:()=>!1,featuresCaptions:()=>!1,getCaptionTracks:()=>[],setCaptionTrack:()=>{},getActiveCaptionTrack:()=>null,featuresQuality:()=>!1,getQualityLevels:()=>[],getCurrentQuality:()=>null,isAutoQuality:()=>!0,setQuality:()=>{},featuresPip:()=>!1,isPipActive:()=>!1,togglePip:()=>{},enterFullscreen:S,exitFullscreen:C,on:n.on,off:n.off,dispose:()=>{h=!0,_.forEach(clearTimeout),_.clear(),o?.destroy().catch(()=>{}),o=null,_e(e,i,W),n.dispose()}}}function ke(e){let t=e.match(/[?&]video=([a-zA-Z0-9]+)/);return t?t[1]:e.match(/(?:dailymotion\.com\/(?:embed\/)?video\/|dai\.ly\/)([a-zA-Z0-9]+)/)?.[1]??null}function Ae(e,t){let n=de(),{techId:r,wrapper:i}=he(e,G),a=ve(e),o=ke(t.src),s=typeof t.customVars?.playerId==`string`?t.customVars.playerId:void 0,c=null,l=0,u=0,d=1,f=!1,p=!0,m=!1,h=!1,g=null;async function _(){if(!o){g={code:4,message:`Could not parse video ID from source URL`},n.trigger(`error`);return}try{let e=await pe(s?`https://geo.dailymotion.com/libs/player/${s}.js`:`https://geo.dailymotion.com/libs/player.js`,s||`dailymotion-sdk`).then(()=>window.dailymotion);if(!e)return;let i=await e.createPlayer(r,{...s&&{player:s},video:o,params:{autoplay:!!t.autoplay,mute:!!t.muted}});c=i;let a=e.events;m&&i.play(),i.on(a.PLAYER_CRITICALPATHREADY,e=>{let t=e.videoThumbnails;if(!t)return;let r=Object.keys(t).map(Number).sort((e,t)=>t-e)[0],i=r===void 0?void 0:t[r];i&&n.trigger(`posterchange`,i)}),i.on(a.VIDEO_PLAY,()=>{p=!1,n.trigger(`play`),n.trigger(`playing`),!t.autoplay&&!h&&(h=!0,i.pause())}),i.on(a.VIDEO_PLAYING,()=>{p=!1,n.trigger(`play`),n.trigger(`playing`)}),i.on(a.VIDEO_PAUSE,()=>{p=!0,n.trigger(`pause`)}),a.VIDEO_BUFFERING&&i.on(a.VIDEO_BUFFERING,()=>n.trigger(`waiting`)),i.on(a.VIDEO_END,()=>{p=!0,n.trigger(`ended`)}),i.on(a.VIDEO_TIMECHANGE,e=>{l=e.videoTime??l,u=e.videoDuration??u,n.trigger(`timeupdate`)}),i.on(a.VIDEO_DURATIONCHANGE,e=>{u=e.videoDuration??u,n.trigger(`durationchange`)}),i.on(a.VIDEO_SEEKSTART,()=>n.trigger(`seeking`)),i.on(a.VIDEO_SEEKEND,e=>{l=e.videoTime??l,n.trigger(`seeked`)}),i.on(a.PLAYER_VOLUMECHANGE,e=>{d=e.playerVolume??d,f=e.playerIsMuted??f,n.trigger(`volumechange`)}),i.on(a.PLAYER_ERROR,()=>n.trigger(`error`)),a.AD_START&&i.on(a.AD_START,()=>{p=!1,n.trigger(`play`),n.trigger(`adstart`)}),a.AD_END&&i.on(a.AD_END,()=>n.trigger(`adend`))}catch(e){g={code:4,message:e instanceof Error?e.message:`This video could not be played.`},n.trigger(`error`)}}_();function v(){c?c.play():m=!0}function y(){if(j()){c?.setFullscreen(!0);return}a&&M(a)}function b(){if(j()){c?.setFullscreen(!1);return}N()}return{el:i,play:v,pause:()=>c?.pause(),paused:()=>p,currentTime:()=>l,setCurrentTime:e=>{l=e,c?.seek(e),n.trigger(`seeking`)},duration:()=>u,volume:()=>d,setVolume:e=>{d=e,c?.setVolume(e)},muted:()=>f,setMuted:e=>{f=e,c?.setMute(e)},playbackRate:()=>1,setPlaybackRate:()=>{},bufferedEnd:()=>l,error:()=>g,setSrc:()=>{},featuresPlaybackRate:()=>!1,featuresCaptions:()=>!1,getCaptionTracks:()=>[],setCaptionTrack:()=>{},getActiveCaptionTrack:()=>null,featuresQuality:()=>!1,getQualityLevels:()=>[],getCurrentQuality:()=>null,isAutoQuality:()=>!0,setQuality:()=>{},featuresPip:()=>!1,isPipActive:()=>!1,togglePip:()=>{},enterFullscreen:y,exitFullscreen:b,on:n.on,off:n.off,dispose:()=>{c?.destroy?.(),c=null,_e(e,i,G),n.dispose()}}}const je=[{test:e=>/youtu\.be|youtube\.com/.test(e),key:`youtube`,embed:!0},{test:e=>/vimeo\.com|player\.vimeo\.com/.test(e),key:`vimeo`,embed:!0},{test:e=>/dailymotion\.com|dai\.ly/.test(e),key:`dailymotion`,embed:!0},{test:e=>/cdn\.jwplayer\.com/.test(e)||e.startsWith(`jwplayer://`),key:`jwplayer`,embed:!1},{test:e=>/players\.brightcove\.net/.test(e),key:`brightcove`,embed:!1}];function Me(e){return je.find(t=>t.test(e))?.key??`html5`}function Ne(e){if(/\.m3u8(\?|#|$)/.test(e))return`application/x-mpegURL`;if(/\.mp4(\?|#|$)/.test(e))return`video/mp4`}function Pe(e){return je.find(t=>t.test(e))?.embed??!1}const Fe={youtube:Ee,vimeo:Oe,dailymotion:Ae};function Ie(e,t,n){let r=Fe[Me(e)];return r?r(t,n):null}async function Le(e){let t=Me(e);return t===`jwplayer`?ae(e):t===`brightcove`?ue(e):{src:e,type:Ne(e)}}function Re(e){return e.kind===`captions`||e.kind===`subtitles`}function ze(e,t){e.textTracks.addEventListener(`addtrack`,t),e.textTracks.addEventListener(`removetrack`,t);function n(){let t=[];for(let n=0;n<e.textTracks.length;n++){let r=e.textTracks[n];Re(r)&&t.push({index:n,label:r.label||r.language||`Track ${n+1}`,language:r.language})}return t}function r(t){for(let n=0;n<e.textTracks.length;n++){let r=e.textTracks[n];Re(r)&&(r.mode=n===t?`showing`:`hidden`)}}function i(){for(let t=0;t<e.textTracks.length;t++){let n=e.textTracks[t];if(Re(n)&&n.mode===`showing`)return t}return null}return{featuresCaptions:()=>n().length>0,getCaptionTracks:n,setCaptionTrack:r,getActiveCaptionTrack:i,dispose:()=>{e.textTracks.removeEventListener(`addtrack`,t),e.textTracks.removeEventListener(`removetrack`,t)}}}function Be(e){function t(){return(e()?.levels??[]).map((e,t)=>({index:t,height:e.height,bitrate:e.bitrate,label:`${e.height}p`}))}function n(){return e()?.autoLevelEnabled??!0}function r(){let t=e();return t?n()?null:t.currentLevel:null}function i(t){let n=e();n&&(n.currentLevel=t??-1)}return{featuresQuality:()=>t().length>0,getQualityLevels:t,getCurrentQuality:r,isAutoQuality:n,setQuality:i}}function Ve(e,t,n){let r=[[`webkitbeginfullscreen`,t],[`webkitendfullscreen`,n]];for(let[t,n]of r)e.addEventListener(t,n);function i(){let t=e;if(typeof t.webkitEnterFullscreen==`function`){t.webkitEnterFullscreen();return}let n=e.closest(`.player__shell`);n instanceof HTMLElement&&M(n)}function a(){let t=e;if(typeof t.webkitExitFullscreen==`function`){t.webkitExitFullscreen();return}N()}return{enterFullscreen:i,exitFullscreen:a,dispose:()=>{for(let[t,n]of r)e.removeEventListener(t,n)}}}function He(e,t){let n=[[`enterpictureinpicture`,t],[`leavepictureinpicture`,t]];for(let[t,r]of n)e.addEventListener(t,r);function r(){return typeof document<`u`&&!!document.pictureInPictureEnabled&&!e.disablePictureInPicture}function i(){return document.pictureInPictureElement===e}function a(){i()?document.exitPictureInPicture():r()&&e.requestPictureInPicture()}return{featuresPip:r,isPipActive:i,togglePip:a,dispose:()=>{for(let[t,r]of n)e.removeEventListener(t,r)}}}const Ue=`application/x-mpegURL`,We=[`play`,`pause`,`ended`,`error`,`timeupdate`,`durationchange`,`progress`,`volumechange`,`ratechange`,`seeking`,`seeked`,`waiting`,`playing`,`canplay`];function Ge(e,t){let n=de(),r=null,i=!1,a=null;async function o(o){let{default:s}=await import(`hls.js`);if(i||a!==o)return;if(typeof s?.isSupported!=`function`||!s.isSupported()){e.src=o,t.autoplay&&e.play();return}r=new s({liveDurationInfinity:!0}),r.loadSource(o),r.attachMedia(e),t.autoplay&&e.play();let c=s.Events,u=s.ErrorTypes;r.on(c.MANIFEST_PARSED,l(`qualitychange`)),r.on(c.LEVEL_SWITCHED,l(`qualitychange`)),r.on(c.ERROR,(e,t)=>{if(!(!t.fatal||i||a!==o))switch(t.type){case u.NETWORK_ERROR:r?.startLoad();break;case u.MEDIA_ERROR:r?.recoverMediaError();break;default:r?.destroy(),r=null,n.trigger(`error`);break}})}function s(){return/Apple/.test(navigator.vendor)&&!/CriOS|FxiOS|OPiOS|EdgiOS|Chrome|Chromium|Android/.test(navigator.userAgent)&&(e.canPlayType(`application/vnd.apple.mpegurl`)!==``||e.canPlayType(Ue)!==``)}function c(n,i){if(r?.destroy(),r=null,a=null,i===Ue&&!s()){a=n,o(n);return}e.src=n,t.autoplay&&e.play()}let l=e=>()=>n.trigger(e),u=We.map(e=>[e,l(e)]);for(let[t,n]of u)e.addEventListener(t,n);let d=ze(e,l(`captionschange`)),f=Be(()=>r),p=Ve(e,l(`nativefullscreenenter`),l(`nativefullscreenexit`)),m=He(e,l(`pipchange`));return e.poster=t.poster??``,e.muted=t.muted??t.autoplay??!1,e.playbackRate=t.playbackRate??1,e.playsInline=!0,c(t.src,t.type),{el:e,play:()=>e.play(),pause:()=>e.pause(),paused:()=>e.paused,currentTime:()=>e.currentTime,setCurrentTime:t=>{e.currentTime=t},duration:()=>e.duration,volume:()=>e.volume,setVolume:t=>{e.volume=t},muted:()=>e.muted,setMuted:t=>{e.muted=t},playbackRate:()=>e.playbackRate,setPlaybackRate:t=>{e.playbackRate=t},bufferedEnd:()=>{let{buffered:t,duration:n}=e;if(!t.length)return 0;let r=t.end(t.length-1);return n&&r>n?n:r},error:()=>{let t=e.error;return t?{code:t.code,message:t.message||`This video could not be played.`}:null},setSrc:c,featuresPlaybackRate:()=>!0,featuresCaptions:d.featuresCaptions,getCaptionTracks:d.getCaptionTracks,setCaptionTrack:d.setCaptionTrack,getActiveCaptionTrack:d.getActiveCaptionTrack,featuresQuality:f.featuresQuality,getQualityLevels:f.getQualityLevels,getCurrentQuality:f.getCurrentQuality,isAutoQuality:f.isAutoQuality,setQuality:f.setQuality,featuresPip:m.featuresPip,isPipActive:m.isPipActive,togglePip:m.togglePip,enterFullscreen:p.enterFullscreen,exitFullscreen:p.exitFullscreen,on:n.on,off:n.off,dispose:()=>{i=!0,r?.destroy();for(let[t,n]of u)e.removeEventListener(t,n);d.dispose(),p.dispose(),m.dispose(),n.dispose()}}}const Ke=new Set;function qe(e){return Ke.add(e),()=>Ke.delete(e)}function Je(e){Ke.forEach(t=>{if(t!==e)try{t()}catch{}})}function Ye(e){let t=S(!1),n=S(!1);function r(){let e=document;t.value=!!(document.fullscreenElement||e.webkitFullscreenElement),n.value=!1}function i(){let n=e();if(n){if(t.value){n.exitFullscreen();return}n.enterFullscreen()}}function a(){n.value=!0}function o(e){e.on(B,()=>{n.value=!0}),e.on(V,()=>{n.value=!1}),e.on(`nativefullscreenenter`,()=>{t.value=!0,n.value=!1}),e.on(`nativefullscreenexit`,()=>{t.value=!1,n.value=!1})}return v(()=>{document.addEventListener(`fullscreenchange`,r),document.addEventListener(`webkitfullscreenchange`,r)}),_(()=>{document.removeEventListener(`fullscreenchange`,r),document.removeEventListener(`webkitfullscreenchange`,r)}),{isFullscreen:t,isFullscreenPending:n,toggleFullscreen:i,markFullscreenPending:a,attachPlayerEvents:o}}function Xe(){let e=S(!1),t=null;function n(){clearTimeout(t??void 0),e.value=!1}function r(r){r.on(`waiting`,()=>{clearTimeout(t??void 0),t=setTimeout(()=>{e.value=!0},500)}),r.on(`playing`,n),r.on(`canplay`,n)}return _(()=>clearTimeout(t??void 0)),{isBuffering:e,attachPlayerEvents:r,reset:n}}function Ze(e,t,n){let r=new Set;function i(){if(!t.value)return;let i=e.value/t.value;for(let[e,t]of re)!r.has(e)&&i>=e&&(r.add(e),n(t))}function a(){r.clear()}return{checkQuartiles:i,reset:a}}function Qe(){try{return JSON.parse(localStorage.getItem(`player:positions`)??`[]`)}catch{return[]}}function $e(e){localStorage.setItem(`player:positions`,JSON.stringify(e))}function et(e){return Qe().find(t=>t.url===e)?.time??null}function tt(e){$e(Qe().filter(t=>t.url!==e))}function nt(e,t,n){let r=!1;function i(t){if(r)return;let n=et(e);n&&t.setCurrentTime(n),r=!0}function a(e){!e||n.value}function o(){tt(e)}function s(){document.visibilityState===`hidden`&&a(t())}return v(()=>document.addEventListener(`visibilitychange`,s)),_(()=>{a(t()),document.removeEventListener(`visibilitychange`,s)}),{restoreOnce:i,save:a,clear:o}}function rt(e,t,n,r){let i=null;v(()=>{let a=e.value?.closest(`.player__shell`);a&&(i=new IntersectionObserver(([e])=>{let i=t();!e.isIntersecting&&i&&!i.paused()&&!n.value&&!r.value&&i.pause()},{threshold:.1}),i.observe(a))}),_(()=>i?.disconnect())}function it(e,t,n,r,i,a){function o(){let n=e();if(!(!n||!t.value)){if(!a.value){n.play();return}n.pause()}}function s(t){e()?.setCurrentTime(n.value*(t/100))}function c(){let t=e();t?.setMuted(!t.muted())}function l(t){let n=e();n&&(n.setVolume(t),n.setMuted(t===0))}function u(){r.value=!r.value}function d(t){let n=e();n&&(n.setPlaybackRate(t),i.value=t)}return{togglePlay:o,seek:s,toggleMute:c,setVolume:l,toggleLoop:u,setPlaybackRate:d}}function at(e,t){let{isPlaying:n,hasEnded:r,isReady:i,isAdPlaying:a,isLive:o,current:s,total:c,buffered:l,vol:u,isMuted:d,isLooping:f,playbackRate:p,supportsPlaybackRate:m,supportsCaptions:h,captionTracks:g,activeCaptionIndex:_,supportsQuality:v,qualityLevels:y,currentQualityIndex:b,isAutoQuality:x,supportsPip:S,isPipActive:C,hasStarted:w,isError:T,errorMessage:E}=e,{fire:D,pauseThisPlayer:O,positionMemory:k,quartiles:A,buffering:j,fullscreen:M}=t;function N(e){i.value=!0,m.value=e.featuresPlaybackRate();function t(){g.value=e.getCaptionTracks(),h.value=e.featuresCaptions();let t=e.getActiveCaptionTrack();t!==_.value&&(_.value=t,w.value&&D(`captionchange`,{captionIndex:t}))}t(),e.on(`captionschange`,t);function N(){y.value=e.getQualityLevels(),v.value=e.featuresQuality();let t=e.getCurrentQuality(),n=e.isAutoQuality(),r=t!==b.value||n!==x.value;b.value=t,x.value=n,r&&w.value&&D(`qualitychange`,{qualityIndex:n?null:t})}N(),e.on(`qualitychange`,N);function P(){S.value=e.featuresPip();let t=e.isPipActive();t!==C.value&&(C.value=t,w.value&&D(`pipchange`,{isPipActive:t}))}P(),e.on(`pipchange`,P);let F=()=>{let t=e.duration();if(t===1/0){o.value=!0;return}o.value=!1,t&&t>0&&isFinite(t)&&(c.value=t)};e.on(`adstart`,()=>{Je(O),a.value=!0,D(`adstart`)}),e.on(`adend`,()=>{a.value=!1,D(`adend`)}),e.on(`play`,()=>{Je(O),w.value=!0,n.value=!0,r.value=!1,o.value||k.restoreOnce(e),D(`play`)}),e.on(`pause`,()=>{n.value=!1,o.value||k.save(e),D(`pause`)}),e.on(`ended`,()=>{if(n.value=!1,A.reset(),j.reset(),f.value){e.setCurrentTime(0),e.play();return}c.value&&(s.value=c.value),r.value=!0,k.clear(),D(`ended`)}),e.on(`seeked`,()=>{D(`seeked`)}),e.on(`error`,()=>{let t=e.error();E.value=t?.message||`This video could not be played.`,T.value=!0,i.value=!0,D(`error`,{error:t})}),e.on(`timeupdate`,()=>{if(r.value)return;s.value=e.currentTime()??0,c.value||F(),m.value||=e.featuresPlaybackRate();let t=e.getActiveCaptionTrack();_.value!==t&&(_.value=t,w.value&&D(`captionchange`,{captionIndex:t})),o.value||A.checkQuartiles()}),e.on(`durationchange`,F),e.on(`progress`,()=>{let t=e.duration();l.value=t?e.bufferedEnd()/t*100:0}),e.on(`volumechange`,()=>{let t=e.muted();u.value=e.volume()??1,d.value=t??!1,w.value&&D(`volumechange`,{isMuted:t})}),e.on(`ratechange`,()=>{let t=e.playbackRate()??1;p.value=t,w.value&&D(`ratechange`,{playbackRate:t})}),j.attachPlayerEvents(e),M.attachPlayerEvents(e)}return{attachPlayerEvents:N}}function ot(){return window.google?.ima?Promise.resolve():new Promise((e,t)=>{let n=document.createElement(`script`);n.src=`https://imasdk.googleapis.com/js/sdkloader/ima3.js`,n.onload=()=>e(),n.onerror=()=>t(Error(`Failed to load Google IMA SDK`)),document.head.appendChild(n)})}function st(e,t,n,r){let i=document.createElement(`div`);i.className=`ima-ad-container`,e.appendChild(i);let a=n,o=null,s=null,c=null,l=!1,u=!1,d=!1,f=!1,p=!1,m=!1,h=1,g=new ResizeObserver(([e])=>{let t=window.google?.ima;if(!c||!t)return;let{width:n,height:r}=e.contentRect;c.resize(n,r,t.ViewMode.NORMAL)});g.observe(t);function _(){s?.contentComplete()}function v(t){f=t,e.classList.toggle(K,t),t||(p=!1,e.classList.remove(q))}function y(){if(l||!u||!d||!o||!s||!a)return;l=!0;let e=window.google?.ima;if(!e)return;o.initialize();let t=new e.AdsRequest;t.adTagUrl=a,s.requestAds(t)}function b(e){a=e,y()}ot().then(()=>{if(m)return;let n=window.google?.ima;n&&(o=new n.AdDisplayContainer(i,t),s=new n.AdsLoader(o),u=!0,s.addEventListener(n.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,i=>{if(m)return;let a=new n.AdsRenderingSettings;a.restoreCustomPlaybackStateOnAdBreakComplete=!0,c=i.getAdsManager(t,a),t.addEventListener(`ended`,_),c.addEventListener(n.AdEvent.Type.CONTENT_PAUSE_REQUESTED,()=>{t.removeEventListener(`ended`,_),t.pause(),v(!0),r.onAdStart();let e=c?.getVolume()??1;e>0&&(h=e),r.onAdMuteChange(e===0)}),c.addEventListener(n.AdEvent.Type.CONTENT_RESUME_REQUESTED,()=>{t.addEventListener(`ended`,_),v(!1),r.onAdEnd(),t.ended||t.play()}),c.addEventListener(n.AdEvent.Type.PAUSED,()=>{p=!0,e.classList.add(q),r.onAdPauseChange(!0)}),c.addEventListener(n.AdEvent.Type.RESUMED,()=>{p=!1,e.classList.remove(q),r.onAdPauseChange(!1)}),c.addEventListener(n.AdEvent.Type.AD_PROGRESS,()=>{r.onAdProgress(c?.getRemainingTime()??0)}),c.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{v(!1),r.onError(e.getError().getMessage()),t.play()});try{c.init(t.clientWidth,t.clientHeight,n.ViewMode.NORMAL),c.start()}catch(e){r.onError(e instanceof Error?e.message:`Ad playback failed to start.`)}}),s.addEventListener(n.AdErrorEvent.Type.AD_ERROR,e=>{r.onError(e.getError().getMessage())}),y())}).catch(e=>r.onError(e.message));function x(){d=!0,y()}function S(){if(!c)return;let e=c.getVolume();e>0?(h=e,c.setVolume(0)):c.setVolume(h||1),r.onAdMuteChange(c.getVolume()===0)}return{isAdPlaying:()=>f,isAdPaused:()=>p,requestAdsOnFirstPlay:x,setAdTagUrl:b,pauseAd:()=>c?.pause(),resumeAd:()=>c?.resume(),toggleAdMute:S,dispose:()=>{m=!0,g.disconnect(),t.removeEventListener(`ended`,_),c?.destroy(),s?.destroy(),i.remove(),e.classList.remove(K,q)}}}function ct(e,t){let n=window.pbjs;if(!n)return Promise.resolve(t);let r=e.timeoutMs??1e3;return new Promise(i=>{let a=!1;function o(e){a||(a=!0,i(e||t))}let s=setTimeout(()=>o(t),r);n.que.push(()=>{try{n.addAdUnits(e.adUnit),n.requestBids({adUnitCodes:[e.adUnit.code],timeout:r,bidsBackHandler:()=>{clearTimeout(s);try{o(n.adServers?.gam?.buildVideoUrl({adUnit:e.adUnit,params:e.params}))}catch{o(t)}}})}catch{clearTimeout(s),o(t)}})})}function lt(e,t){let{isAdPlaying:n,isAdPaused:r,isAdMuted:i,adRemainingTime:a}=e,{fire:o,pauseThisPlayer:s}=t,c=null,l=null;function u(e,t,u,d){if(!(u||d)||!e.parentElement)return;d&&ct(d,u).catch(()=>u).then(e=>c?.setAdTagUrl(e));function f(){!j()&&t.isPipActive()&&document.exitPictureInPicture()}function p(){!j()&&(document.hidden||!document.hasFocus())&&c?.isAdPlaying()&&c.pauseAd()}document.addEventListener(`visibilitychange`,p),window.addEventListener(`blur`,p);let m=()=>{t.isPipActive()||p()};t.on(`pipchange`,m),l=()=>{document.removeEventListener(`visibilitychange`,p),window.removeEventListener(`blur`,p),t.off(`pipchange`,m)},c=st(e.parentElement,e,u,{onAdStart:()=>{n.value=!0,r.value=!1,o(`adstart`),f(),p()},onAdEnd:()=>{n.value=!1,r.value=!1,a.value=0,o(`adend`)},onAdPauseChange:e=>{r.value=e,e||Je(s)},onAdMuteChange:e=>{i.value=e},onAdProgress:e=>{a.value=e},onError:e=>{n.value=!1,r.value=!1,a.value=0,console.error(`Ad playback error:`,e)}}),t.on(`play`,()=>c?.requestAdsOnFirstPlay())}return{attach:u,isAdPlaying:()=>c?.isAdPlaying()??!1,isAdPaused:()=>c?.isAdPaused()??!1,pauseAd:()=>c?.pauseAd(),resumeAd:()=>c?.resumeAd(),toggleAdMute:()=>c?.toggleAdMute(),dispose:()=>{c?.dispose(),c=null,l?.(),l=null}}}function ut(e,t,r){let i=null,a=null,o=null,s=S(!1),c=S(!1),l=S(!1),u=S(!1),d=S(!1),f=S(!1),p=S(0),m=S(!1),h=S(0),g=S(0),y=S(0),b=S(1),x=S(t.muted??t.autoplay??!1),C=S(!1),w=S(t.playbackRate??1),T=S(!1),E=S(!1),D=S([]),k=S(null),A=S(!1),j=S([]),M=S(null),N=S(!0),P=S(!1),I=S(!1),L=S(!1),R=S(!1),z=S(``),B=S(!1),V=n(()=>g.value?h.value/g.value*100:0),H=n(()=>Math.max(y.value,V.value)),U=()=>i,W=Ye(U),G=Xe(),K=nt(t.videoUrl,U,c);function q(e,n={}){r(`state-change`,{type:e,currentTime:h.value,duration:g.value,src:t.videoUrl,...n,payload:t.payload})}let te=Ze(h,g,q);function ne(){!i||!o||(R.value=!1,z.value=``,i.setSrc(o.src,o.type))}function re(){if(J.isAdPlaying()){J.pauseAd();return}i?.pause()}function ie(){if(J.isAdPlaying()){J.isAdPaused()?J.resumeAd():J.pauseAd();return}Y.togglePlay()}let J=lt({isAdPlaying:u,isAdPaused:d,isAdMuted:f,adRemainingTime:p},{fire:q,pauseThisPlayer:re}),Y=it(U,l,g,C,w,s),{attachPlayerEvents:ae}=at({isPlaying:s,hasEnded:c,isReady:l,isAdPlaying:u,isLive:m,current:h,total:g,buffered:y,vol:b,isMuted:x,isLooping:C,playbackRate:w,supportsPlaybackRate:T,supportsCaptions:E,captionTracks:D,activeCaptionIndex:k,supportsQuality:A,qualityLevels:j,currentQualityIndex:M,isAutoQuality:N,supportsPip:P,isPipActive:I,hasStarted:L,isError:R,errorMessage:z},{fire:q,pauseThisPlayer:re,positionMemory:K,quartiles:te,buffering:G,fullscreen:W});function oe(e){i?.setCaptionTrack(e),k.value=e,L.value&&q(`captionchange`,{captionIndex:e})}function se(e){i?.setQuality(e),M.value=e,N.value=e===null,L.value&&q(`qualitychange`,{qualityIndex:e})}function ce(){i?.togglePip()}function le(){Y.toggleLoop(),L.value&&q(`loopchange`,{isLooping:C.value})}return O(()=>t.muted,e=>{!i||e===void 0||i.setMuted(e)}),O(()=>t.playbackRate,e=>{!i||e===void 0||i.setPlaybackRate(e)}),rt(e,U,W.isFullscreen,W.isFullscreenPending),O(L,t=>{!t||!e.value||!i||i.el===e.value||ge(e.value,i.el)}),v(async()=>{if(Pe(t.videoUrl)){if(!e.value)return;let n=Ie(t.videoUrl,e.value,{src:t.videoUrl,poster:t.poster,autoplay:t.autoplay,muted:t.muted??t.autoplay,nativeUi:t.nativeUi});if(!n){R.value=!0,l.value=!0,z.value=`This platform is not yet supported.`;return}B.value=!!t.nativeUi,i=n,o={src:t.videoUrl},a=qe(re),ae(i);return}let n=await Le(t.videoUrl).catch(()=>({src:t.videoUrl}));if(!e.value)return;o={src:n.src,type:n.type},i=Ge(e.value,{src:n.src,type:n.type,poster:n.poster||t.poster||``,autoplay:t.autoplay,muted:t.muted??t.autoplay,playbackRate:w.value});let r=F(t.adTagUrl||n.adTagUrl||``,t.adTagParams);J.attach(e.value,i,r,t.headerBidding),a=qe(re),ae(i)}),_(()=>{a?.(),J.dispose(),i?.dispose(),i=null}),{isPlaying:s,hasEnded:c,isReady:l,isAdPlaying:u,isAdPaused:d,isAdMuted:f,adRemainingTime:p,isLive:m,isBuffering:G.isBuffering,current:h,total:g,vol:b,isMuted:x,isLooping:C,playbackRate:w,hasStarted:L,isError:R,errorMessage:z,progress:V,bufferedDisplay:H,isFullscreen:W.isFullscreen,isFullscreenPending:W.isFullscreenPending,fmt:ee,fire:q,retry:ne,togglePlay:ie,seek:Y.seek,toggleMute:Y.toggleMute,setVolume:Y.setVolume,toggleFullscreen:W.toggleFullscreen,markFullscreenPending:W.markFullscreenPending,toggleLoop:le,toggleAdMute:J.toggleAdMute,setPlaybackRate:Y.setPlaybackRate,supportsPlaybackRate:T,supportsCaptions:E,captionTracks:D,activeCaptionIndex:k,setCaptionTrack:oe,supportsQuality:A,qualityLevels:j,currentQualityIndex:M,isAutoQuality:N,setQuality:se,supportsPip:P,isPipActive:I,togglePip:ce,nativeUi:B}}function dt(e){let t=S(!0),n=S(!1),r=null,i=0;function a(e=400){i=Date.now()+e}function o(e=3500){clearTimeout(r??void 0),r=setTimeout(()=>{t.value=!1,n.value=!1},e)}function s(){clearTimeout(r??void 0)}function c(){n.value=!0,t.value=!0,o()}function l(){n.value=!1,e.value&&o()}function u(){e.value&&o()}function d(){t.value=!0,e.value&&o()}function f(){t.value=!0,o()}function p(){Date.now()<i||e.value&&o(600)}return O(e,e=>{if(!e){clearTimeout(r??void 0),t.value=!0;return}o()}),_(()=>clearTimeout(r??void 0)),{showHUD:t,isOpen:n,scheduleHide:o,pauseHide:s,onVideoTap:d,onMouseMove:f,onMouseLeave:p,openControls:c,closeControls:l,keepOpen:u,suppressMouseLeave:a}}const X=Symbol(`player`),Z=Symbol(`hud`),ft=Symbol(`action`),pt=Symbol(`compact`),mt=Symbol(`playlist`);function Q(e){let t=d(e);if(t===void 0)throw Error(`[video-player] missing "${String(e.description)}" context — this component must be rendered inside <VideoPlayer>`);return t}function ht(e,t){return{hudVisible:n(()=>!e.isReady||e.isError?!1:t.showHUD),popupVisible:n(()=>!e.isReady||e.isError?!1:e.isFullscreen?t.showHUD:t.isOpen)}}function gt(e,t){return n(()=>!(!e?.value||t.isFullscreen))}function _t(e,t,r){let i=n(()=>e?.value??null),a=n(()=>!!i.value&&typeof i.value==`object`),o=n(()=>a.value?i.value:null),s=n(()=>i.value===`mute`?t.isMuted?`Unmute`:`Mute`:i.value===`loop`?t.isLooping?`Disable loop`:`Loop`:i.value===`autoplay`?r.autoAdvance?`Disable autoplay next`:`Autoplay next`:``),c=n(()=>i.value===`mute`?t.isMuted:i.value===`loop`?t.isLooping:i.value===`autoplay`&&r.autoAdvance);function l(){i.value===`mute`?t.toggleMute():i.value===`loop`?t.toggleLoop():i.value===`autoplay`&&r.toggleAutoAdvance()}return{currentAction:i,isCustom:a,customAction:o,builtinLabel:s,builtinActive:c,onBuiltinClick:l}}var $=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n};const vt={},yt={viewBox:`0 0 24 24`,fill:`currentColor`};function bt(e,t){return y(),a(`svg`,yt,[...t[0]||=[o(`path`,{d:`M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z`},null,-1)]])}var xt=$(vt,[[`render`,bt]]);const St={},Ct={viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function wt(e,t){return y(),a(`svg`,Ct,[...t[0]||=[o(`rect`,{x:`2`,y:`5`,width:`20`,height:`14`,rx:`2`},null,-1),o(`path`,{d:`M9.5 10.5a2 2 0 0 0-3.5 1.3v.4a2 2 0 0 0 3.5 1.3`},null,-1),o(`path`,{d:`M17.5 10.5a2 2 0 0 0-3.5 1.3v.4a2 2 0 0 0 3.5 1.3`},null,-1)]])}var Tt=$(St,[[`render`,wt]]);const Et={},Dt={viewBox:`0 0 24 24`,fill:`currentColor`};function Ot(e,t){return y(),a(`svg`,Dt,[...t[0]||=[o(`path`,{d:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`},null,-1)]])}var kt=$(Et,[[`render`,Ot]]);const At={},jt={viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function Mt(e,t){return y(),a(`svg`,jt,[...t[0]||=[s(`<line x1="4" y1="6" x2="20" y2="6"></line><line x1="4" y1="12" x2="20" y2="12"></line><line x1="4" y1="18" x2="20" y2="18"></line><circle cx="9" cy="6" r="2.5" fill="currentColor" stroke="none"></circle><circle cx="15" cy="12" r="2.5" fill="currentColor" stroke="none"></circle><circle cx="9" cy="18" r="2.5" fill="currentColor" stroke="none"></circle>`,6)]])}var Nt=$(At,[[`render`,Mt]]);const Pt={},Ft={viewBox:`0 0 24 24`,fill:`currentColor`};function It(e,t){return y(),a(`svg`,Ft,[...t[0]||=[o(`path`,{d:`M4 12l1.41 1.41L11 7.83V20h2V7.83l5.59 5.58L20 12l-8-8-8 8z`},null,-1)]])}var Lt=$(Pt,[[`render`,It]]);const Rt={},zt={viewBox:`0 0 24 24`,fill:`currentColor`};function Bt(e,t){return y(),a(`svg`,zt,[...t[0]||=[o(`path`,{d:`M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z`},null,-1)]])}var Vt=$(Rt,[[`render`,Bt]]);const Ht={},Ut={viewBox:`0 0 24 24`,fill:`currentColor`};function Wt(e,t){return y(),a(`svg`,Ut,[...t[0]||=[o(`path`,{d:`M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z`},null,-1)]])}var Gt=$(Ht,[[`render`,Wt]]);const Kt={},qt={viewBox:`0 0 24 24`,fill:`currentColor`};function Jt(e,t){return y(),a(`svg`,qt,[...t[0]||=[o(`path`,{d:`M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4z`},null,-1)]])}var Yt=$(Kt,[[`render`,Jt]]);const Xt={},Zt={viewBox:`0 0 24 24`,fill:`currentColor`};function Qt(e,t){return y(),a(`svg`,Zt,[...t[0]||=[o(`circle`,{cx:`5`,cy:`12`,r:`2`},null,-1),o(`circle`,{cx:`12`,cy:`12`,r:`2`},null,-1),o(`circle`,{cx:`19`,cy:`12`,r:`2`},null,-1)]])}var $t=$(Xt,[[`render`,Qt]]);const en={},tn={viewBox:`0 0 24 24`,fill:`currentColor`};function nn(e,t){return y(),a(`svg`,tn,[...t[0]||=[o(`path`,{d:`M6 19h4V5H6v14zm8-14v14h4V5h-4z`},null,-1)]])}var rn=$(en,[[`render`,nn]]);const an={},on={viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function sn(e,t){return y(),a(`svg`,on,[...t[0]||=[o(`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`},null,-1),o(`rect`,{x:`12`,y:`11`,width:`8`,height:`6`,rx:`1`,fill:`currentColor`,stroke:`none`},null,-1)]])}var cn=$(an,[[`render`,sn]]);const ln={},un={viewBox:`0 0 24 24`,fill:`currentColor`};function dn(e,t){return y(),a(`svg`,un,[...t[0]||=[o(`path`,{d:`M8 5v14l11-7z`},null,-1)]])}var fn=$(ln,[[`render`,dn]]);const pn={},mn={viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function hn(e,t){return y(),a(`svg`,mn,[...t[0]||=[o(`rect`,{x:`2`,y:`6`,width:`20`,height:`12`,rx:`2`},null,-1),o(`path`,{d:`M7 14v-4M12 14V8M17 14v-2`},null,-1)]])}var gn=$(pn,[[`render`,hn]]);const _n={},vn={viewBox:`0 0 24 24`,fill:`currentColor`};function yn(e,t){return y(),a(`svg`,vn,[...t[0]||=[o(`path`,{d:`M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z`},null,-1)]])}var bn=$(_n,[[`render`,yn]]);const xn={},Sn={viewBox:`0 0 24 24`,fill:`currentColor`};function Cn(e,t){return y(),a(`svg`,Sn,[...t[0]||=[o(`path`,{d:`M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z`},null,-1)]])}var wn=$(xn,[[`render`,Cn]]);const Tn={},En={viewBox:`0 0 24 24`,fill:`currentColor`};function Dn(e,t){return y(),a(`svg`,En,[...t[0]||=[o(`path`,{d:`M16.5 12A4.5 4.5 0 0 0 14 7.97v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51A8.796 8.796 0 0 0 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.06A8.99 8.99 0 0 0 17.73 18L19 19.27 20.27 18 5.27 3 4.27 3zM12 4L9.91 6.09 12 8.18V4z`},null,-1)]])}var On=$(Tn,[[`render`,Dn]]);const kn={},An={viewBox:`0 0 24 24`,fill:`currentColor`};function jn(e,t){return y(),a(`svg`,An,[...t[0]||=[o(`path`,{d:`M3 9v6h4l5 5V4L7 9H3zm13.5 3A4.5 4.5 0 0 0 14 7.97v8.05c1.48-.73 2.5-2.25 2.5-4.02z`},null,-1)]])}var Mn=$(kn,[[`render`,jn]]);const Nn=[`aria-label`];var Pn=$(u({__name:`PlayPauseButton`,props:{isPlaying:{type:Boolean,required:!0},hasEnded:{type:Boolean,required:!1,default:!1},size:{type:String,required:!1,default:`sm`}},emits:[`toggle-play`],setup(e){let t=e,i=n(()=>t.isPlaying?`Pause`:t.hasEnded?`Replay`:`Play`);return(t,n)=>(y(),a(`button`,{class:m([`ppbtn`,`ppbtn--${e.size}`]),"aria-label":i.value,onClick:n[0]||=A(e=>t.$emit(`toggle-play`),[`stop`])},[e.isPlaying?(y(),r(D(rn),{key:0})):e.hasEnded?(y(),r(D(bn),{key:1})):(y(),r(D(fn),{key:2}))],10,Nn))}}),[[`__scopeId`,`data-v-85902525`]]),Fn=u({__name:`VolumeIcon`,setup(e){let t=Q(X),i=n(()=>!t.isMuted&&t.vol>0);return(e,t)=>i.value?(y(),r(D(Mn),{key:0})):(y(),r(D(On),{key:1}))}}),In=$(u({__name:`Spinner`,props:{size:{type:Number,required:!1,default:14},borderWidth:{type:Number,required:!1,default:2}},setup(e){return(t,n)=>(y(),a(`div`,{class:`spinner`,style:g({width:`${e.size}px`,height:`${e.size}px`,borderWidth:`${e.borderWidth}px`})},null,4))}}),[[`__scopeId`,`data-v-259be2b2`]]);const Ln={class:`hud`},Rn=[`aria-label`],zn=[`aria-label`],Bn=[`aria-label`],Vn=[`aria-label`,`innerHTML`],Hn={key:4,class:`hud__spacer`},Un={class:`hud__play-wrap`};var Wn=$(u({__name:`HudButtons`,setup(t){let n=Q(X),s=Q(Z),{currentAction:c,isCustom:u,customAction:f,builtinLabel:p,builtinActive:h,onBuiltinClick:g}=_t(d(ft),n,Q(mt));return(t,d)=>(y(),a(`div`,Ln,[!D(s).isOpen&&!D(n).isFullscreen?(y(),a(e,{key:0},[D(c)===`mute`?(y(),a(`button`,{key:0,class:m([`hud__btn`,{"hud__btn--active":D(h)}]),"aria-label":D(p),onClick:d[0]||=A((...e)=>D(g)&&D(g)(...e),[`stop`])},[l(Fn)],10,Rn)):D(c)===`loop`?(y(),a(`button`,{key:1,class:m([`hud__btn`,{"hud__btn--active":D(h)}]),"aria-label":D(p),onClick:d[1]||=A((...e)=>D(g)&&D(g)(...e),[`stop`])},[l(D(Yt))],10,zn)):D(c)===`autoplay`?(y(),a(`button`,{key:2,class:m([`hud__btn`,{"hud__btn--active":D(h)}]),"aria-label":D(p),onClick:d[2]||=A((...e)=>D(g)&&D(g)(...e),[`stop`])},[l(D(wn))],10,Bn)):D(u)&&D(f)?(y(),a(`button`,{key:3,class:`hud__btn`,"aria-label":D(f).label,onClick:d[3]||=A(e=>D(f).onClick(),[`stop`]),innerHTML:D(f).icon},null,8,Vn)):(y(),a(`div`,Hn))],64)):i(`v-if`,!0),o(`div`,Un,[l(Pn,{"is-playing":D(n).isPlaying,"has-ended":D(n).hasEnded,size:`lg`,onTogglePlay:D(n).togglePlay},null,8,[`is-playing`,`has-ended`,`onTogglePlay`]),D(n).isBuffering?(y(),r(In,{key:0,class:`hud__buf-spinner`})):i(`v-if`,!0)]),!D(s).isOpen&&!D(n).isFullscreen?(y(),a(`button`,{key:1,class:`hud__btn`,"aria-label":`Show controls`,onClick:d[4]||=A((...e)=>D(s).openControls&&D(s).openControls(...e),[`stop`])},[l(D(Nt))])):i(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-a6d118e7`]]);function Gn(e){let t=S(null),r=n(()=>t.value??e.progress),i=null;function a(){i&&clearTimeout(i),i=null,t.value=null}function o(e){i&&clearTimeout(i),i=null,t.value=Number(e.target.value)}function s(n){let r=Number(n.target.value);t.value=r,e.seek(r),i&&clearTimeout(i),i=setTimeout(a,3e3)}return O(()=>e.current,()=>{if(t.value===null||!e.total)return;let n=t.value/100*e.total;Math.abs(e.current-n)<1&&a()}),_(a),{displaySeek:r,onSeekInput:o,onSeekChange:s}}function Kn(e,t,n){if(!document.startViewTransition||!e.value){n();return}e.value.style.viewTransitionName=t,document.startViewTransition(async()=>{n(),await p()}).finished.finally(()=>{e.value&&(e.value.style.viewTransitionName=``)})}const qn={class:`controls__vol-header`},Jn=[`aria-label`],Yn={class:`controls__vol-body`},Xn=[`value`],Zn={class:`controls__vol-pct`};var Qn=$(u({__name:`VolumePanel`,emits:[`back`],setup(t){let r=Q(X),i=Q(Z),s=n(()=>r.isMuted?0:Math.round(r.vol*100));function c(e){r.setVolume(Number(e.target.value)/100)}return(t,n)=>(y(),a(e,null,[o(`div`,qn,[o(`button`,{class:`controls__btn`,"aria-label":`Back`,onClick:n[0]||=e=>t.$emit(`back`)},[l(D(xt))]),n[6]||=o(`span`,{class:`controls__vol-label`},`Volume`,-1),o(`button`,{class:`controls__btn`,"aria-label":D(r).isMuted?`Unmute`:`Mute`,onClick:n[1]||=e=>D(r).toggleMute()},[l(Fn)],8,Jn)]),o(`div`,Yn,[o(`input`,{type:`range`,min:`0`,max:`100`,step:`1`,value:s.value,class:`controls__vol-slider`,style:g({"--v":s.value+`%`}),"aria-label":`Volume`,onInput:c,onMousedown:n[2]||=e=>D(i).pauseHide(),onMouseup:n[3]||=e=>D(i).scheduleHide(),onTouchstartPassive:n[4]||=e=>D(i).pauseHide(),onTouchend:n[5]||=e=>D(i).scheduleHide()},null,44,Xn),o(`span`,Zn,T(s.value)+`%`,1)])],64))}}),[[`__scopeId`,`data-v-10b0ae67`]]);function $n(e){function t(){let t=ne.indexOf(e.playbackRate);e.setPlaybackRate(ne[(t+1)%ne.length])}function n(e){return`${e}×`}return{cycleRate:t,fmtRate:n}}function er(e){function t(){let t=e.captionTracks;if(!t.length)return;let n=t[t.findIndex(t=>t.index===e.activeCaptionIndex)+1];e.setCaptionTrack(n?n.index:null)}function n(){return e.captionTracks.find(t=>t.index===e.activeCaptionIndex)?.label??`Off`}return{cycleCaptionTrack:t,currentCaptionLabel:n}}function tr(e){function t(){let t=e.qualityLevels;if(!t.length)return;if(e.isAutoQuality){e.setQuality(t[t.length-1].index);return}let n=t.findIndex(t=>t.index===e.currentQualityIndex);e.setQuality(n<=0?null:t[n-1].index)}function n(){return e.isAutoQuality?`Auto`:e.qualityLevels.find(t=>t.index===e.currentQualityIndex)?.label??`Auto`}return{cycleQuality:t,currentQualityLabel:n}}const nr=[`aria-label`],rr={key:0,class:`controls__more-row-label`},ir=[`innerHTML`],ar={key:1},or={key:2,class:`controls__more-value`};var sr=$(u({__name:`MoreMenuRow`,props:{label:{type:String,required:!0},ariaLabel:{type:String,required:!1,default:``},icon:{type:null,required:!1},iconHtml:{type:String,required:!1},active:{type:Boolean,required:!1,default:!1},value:{type:String,required:!1}},emits:[`click`],setup(e){return(t,n)=>(y(),a(`button`,{class:m([`controls__more-row`,{"controls__more-row--active":e.active}]),"aria-label":e.ariaLabel||e.label,onClick:n[0]||=e=>t.$emit(`click`)},[e.icon||e.iconHtml?(y(),a(`span`,rr,[e.icon?(y(),r(w(e.icon),{key:0,class:`controls__more-row-icon`})):(y(),a(`span`,{key:1,class:`controls__more-row-icon`,innerHTML:e.iconHtml},null,8,ir)),c(` `+T(e.label),1)])):(y(),a(`span`,ar,T(e.label),1)),e.value===void 0?i(`v-if`,!0):(y(),a(`span`,or,T(e.value),1))],10,nr))}}),[[`__scopeId`,`data-v-47ca5bfc`]]);const cr={class:`controls__more-header`};var lr=$(u({__name:`MoreMenu`,props:{isCustom:{type:Boolean,required:!0},customAction:{type:[Object,null],required:!0}},emits:[`back`],setup(t){let n=Q(X),s=Q(Z),c=Q(mt),{cycleRate:u,fmtRate:d}=$n(n),{cycleCaptionTrack:f,currentCaptionLabel:p}=er(n),{cycleQuality:m,currentQualityLabel:h}=tr(n);return(g,_)=>(y(),a(e,null,[o(`div`,cr,[o(`button`,{class:`controls__btn`,"aria-label":`Back`,onClick:_[0]||=e=>g.$emit(`back`)},[l(D(xt))]),_[5]||=o(`span`,{class:`controls__more-label`},`More`,-1)]),o(`div`,{class:`controls__more-body`,onTouchstartPassive:_[4]||=e=>D(s).keepOpen()},[D(n).supportsPlaybackRate?(y(),r(sr,{key:0,label:`Playback speed`,value:D(d)(D(n).playbackRate),onClick:D(u)},null,8,[`value`,`onClick`])):i(`v-if`,!0),l(sr,{label:`Loop`,"aria-label":`Toggle loop`,icon:D(Yt),active:D(n).isLooping,value:D(n).isLooping?`On`:`Off`,onClick:_[1]||=e=>D(n).toggleLoop()},null,8,[`icon`,`active`,`value`]),D(n).supportsCaptions?(y(),r(sr,{key:1,label:`Captions`,icon:D(Tt),active:D(n).activeCaptionIndex!==null,value:D(p)(),onClick:D(f)},null,8,[`icon`,`active`,`value`,`onClick`])):i(`v-if`,!0),D(n).supportsQuality?(y(),r(sr,{key:2,label:`Quality`,icon:D(gn),active:!D(n).isAutoQuality,value:D(h)(),onClick:D(m)},null,8,[`icon`,`active`,`value`,`onClick`])):i(`v-if`,!0),D(c).hasPlaylist?(y(),r(sr,{key:3,label:`Autoplay next`,"aria-label":`Toggle autoplay next`,icon:D(wn),active:D(c).autoAdvance,value:D(c).autoAdvance?`On`:`Off`,onClick:_[2]||=e=>D(c).toggleAutoAdvance()},null,8,[`icon`,`active`,`value`])):i(`v-if`,!0),t.isCustom&&t.customAction?(y(),r(sr,{key:4,label:t.customAction.label,"icon-html":t.customAction.icon,onClick:_[3]||=e=>t.customAction.onClick()},null,8,[`label`,`icon-html`])):i(`v-if`,!0)],32)],64))}}),[[`__scopeId`,`data-v-e89a8208`]]);const ur=[`value`],dr={class:`controls__row`},fr={class:`controls__play-wrap`},pr={key:0,class:`controls__live`},mr={key:1,class:`controls__time`},hr=[`aria-label`],gr={class:`controls__fs-wrap`},_r=[`aria-label`];var vr=$(u({__name:`ControlsPopup`,setup(t){let n=Q(X),s=Q(Z),u=Q(mt),f=gt(d(pt),n),{isCustom:p,customAction:h}=_t(d(ft),n,u),b=S(!1),x=S(!1),C=S(null);function w(e){return!C.value||C.value.contains(e)?!1:(s.closeControls(),!0)}function E(e){w(e.target)}function O(e){w(e.target)&&e.preventDefault()}v(()=>{n.fire(`controlsopen`,{element:C.value}),document.addEventListener(`click`,E,!0),document.addEventListener(`touchend`,O,!0)}),_(()=>{b.value=!1,x.value=!1,n.fire(`controlsclose`,{element:C.value}),document.removeEventListener(`click`,E,!0),document.removeEventListener(`touchend`,O,!0)});function k(e){s.suppressMouseLeave(),Kn(C,`controls-popup`,e)}function M(){if(j()){n.toggleMute();return}k(()=>{b.value=!0})}function N(){k(()=>{x.value=!0})}let{displaySeek:P,onSeekInput:F,onSeekChange:ee}=Gn(n);function I(){n.isFullscreen||n.markFullscreenPending(),n.toggleFullscreen()}return(t,d)=>(y(),a(`div`,{ref_key:`popupEl`,ref:C,class:m([`controls`,{"controls--fs":D(n).isFullscreen,"controls--compact":D(f)}]),onMousemove:d[11]||=A((...e)=>D(s).keepOpen&&D(s).keepOpen(...e),[`stop`])},[b.value?(y(),r(Qn,{key:0,onBack:d[0]||=e=>k(()=>b.value=!1)})):x.value?(y(),r(lr,{key:1,"is-custom":D(p),"custom-action":D(h),onBack:d[1]||=e=>k(()=>x.value=!1)},null,8,[`is-custom`,`custom-action`])):(y(),a(e,{key:2},[D(n).isLive?i(`v-if`,!0):(y(),a(`input`,{key:0,type:`range`,min:`0`,max:`100`,value:D(P),class:`controls__seek`,style:g({"--p":D(P)+`%`,"--b":D(n).bufferedDisplay+`%`}),onInput:d[2]||=(...e)=>D(F)&&D(F)(...e),onChange:d[3]||=(...e)=>D(ee)&&D(ee)(...e),onMousedown:d[4]||=e=>D(s).pauseHide(),onMouseup:d[5]||=e=>D(s).scheduleHide(),onTouchstartPassive:d[6]||=e=>D(s).pauseHide(),onTouchend:d[7]||=e=>D(s).scheduleHide()},null,44,ur)),o(`div`,dr,[o(`div`,fr,[D(n).isBuffering?(y(),r(In,{key:0})):(y(),r(Pn,{key:1,"is-playing":D(n).isPlaying,"has-ended":D(n).hasEnded,size:`sm`,onTogglePlay:d[8]||=e=>D(n).togglePlay()},null,8,[`is-playing`,`has-ended`]))]),D(n).isLive?(y(),a(`span`,pr,[...d[12]||=[o(`span`,{class:`controls__live-dot`},null,-1),c(`Live`,-1)]])):(y(),a(`span`,mr,T(D(n).fmt(D(n).current))+` / `+T(D(n).fmt(D(n).total)),1)),D(u).hasNext?(y(),a(`button`,{key:2,class:`controls__btn`,"aria-label":`Play next`,onClick:d[9]||=e=>D(u).playNext()},[l(D(wn))])):i(`v-if`,!0),o(`button`,{class:`controls__btn`,"aria-label":`Volume`,onClick:M},[l(Fn)]),o(`button`,{class:m([`controls__btn controls__btn--more`,{"controls__btn--active":D(n).isLooping||D(n).playbackRate!==1||D(u).autoAdvance}]),"aria-label":`More`,onClick:N},[l(D($t))],2),D(n).supportsPip?(y(),a(`button`,{key:3,class:m([`controls__btn controls__btn--pip`,{"controls__btn--active":D(n).isPipActive}]),"aria-label":D(n).isPipActive?`Exit picture-in-picture`:`Picture-in-picture`,onClick:d[10]||=e=>D(n).togglePip()},[l(D(cn))],10,hr)):i(`v-if`,!0),o(`div`,gr,[D(n).isFullscreenPending?(y(),r(In,{key:0})):(y(),a(`button`,{key:1,class:`controls__btn`,"aria-label":D(n).isFullscreen?`Exit fullscreen`:`Fullscreen`,onClick:I},[D(n).isFullscreen?(y(),r(D(Gt),{key:0})):(y(),r(D(Vt),{key:1}))],8,_r))])])],64))],34))}}),[[`__scopeId`,`data-v-5712aad4`]]);const yr={class:`ad-overlay`},br={class:`ad-overlay__bar`},xr={class:`ad-overlay__badge`},Sr={key:0,class:`ad-overlay__countdown`},Cr=[`aria-label`],wr=[`aria-label`];var Tr=$(u({__name:`AdOverlay`,setup(e){let t=Q(X),s=n(()=>t.adRemainingTime>0?t.fmt(t.adRemainingTime):``);return(e,n)=>(y(),a(`div`,yr,[o(`div`,br,[o(`div`,xr,[n[2]||=o(`span`,null,`Ad`,-1),s.value?(y(),a(`span`,Sr,T(s.value),1)):i(`v-if`,!0)]),o(`button`,{class:`ad-overlay__btn`,"aria-label":D(t).isAdPaused?`Resume ad`:`Pause ad`,onClick:n[0]||=e=>D(t).togglePlay()},[D(t).isAdPaused?(y(),r(D(fn),{key:0})):(y(),r(D(rn),{key:1}))],8,Cr),o(`button`,{class:`ad-overlay__btn`,"aria-label":D(t).isAdMuted?`Unmute ad`:`Mute ad`,onClick:n[1]||=e=>D(t).toggleAdMute()},[D(t).isAdMuted?(y(),r(D(On),{key:0})):(y(),r(D(Mn),{key:1}))],8,wr)])]))}}),[[`__scopeId`,`data-v-23efcc8b`]]);const Er={key:0,class:`overlay__spinner`},Dr={key:0,class:`overlay__error`};var Or=$(u({__name:`PlayerOverlay`,props:{disableTapCapture:{type:Boolean,required:!1,default:!1}},setup(n){let s=Q(X),c=Q(Z),{hudVisible:u,popupVisible:d}=ht(s,c);function f(){c.onVideoTap()}return(c,p)=>(y(),a(e,null,[i(` Never rendered during any ad state (playing or paused) — pausing/resuming an ad goes
2
+ through AdOverlay's own dedicated button now, not a tap-anywhere gesture over the whole ad
3
+ creative, so there's no reason for this layer to cover the ad break at all. `),!n.disableTapCapture&&D(s).hasStarted&&!D(s).isAdPlaying?(y(),a(`div`,{key:0,class:`overlay__tap-capture`,onClick:f,onTouchend:A(f,[`prevent`,`stop`])},null,32)):i(`v-if`,!0),D(s).isAdPlaying?(y(),r(Tr,{key:1})):i(`v-if`,!0),l(t,{name:`fade`},{default:k(()=>[!D(s).isReady&&!D(s).isError?(y(),a(`div`,Er,[l(In,{size:40,"border-width":3})])):i(`v-if`,!0)]),_:1}),l(t,{name:`fade`},{default:k(()=>[D(s).isError?(y(),a(`div`,Dr,[o(`p`,null,T(D(s).errorMessage||`This video could not be played.`),1),o(`button`,{class:`overlay__retry`,onClick:p[0]||=A((...e)=>D(s).retry&&D(s).retry(...e),[`stop`])},`Retry`)])):i(`v-if`,!0)]),_:1}),o(`div`,{class:m([`overlay__hud`,{"overlay__hud--visible":D(u)}])},[l(Wn)],2),l(t,{name:`popup`},{default:k(()=>[D(d)?(y(),a(`div`,{key:0,class:m([`overlay__popup`,{"overlay__popup--fs":D(s).isFullscreen}])},[l(vr)],2)):i(`v-if`,!0)]),_:1})],64))}}),[[`__scopeId`,`data-v-f3307b98`]]);const kr={class:`player`},Ar={"data-mvp-player":``},jr=[`poster`],Mr=[`src`,`kind`,`srclang`,`label`,`default`],Nr={key:1,class:`player__native-play`};var Pr=$(u({__name:`VideoPlayer`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1,default:``},poster:{type:String,required:!1,default:``},aspectRatio:{type:String,required:!1,default:te},adTagUrl:{type:String,required:!1,default:``},adTagParams:{type:Object,required:!1},headerBidding:{type:Object,required:!1},tracks:{type:Array,required:!1,default:()=>[]},autoplay:{type:Boolean,required:!1,default:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1,default:!1},autoStage:{type:Boolean,required:!1,default:!1},lazy:{type:Boolean,required:!1,default:!1},payload:{type:Object,required:!1,default:()=>({})},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1,default:!1},hasPlaylist:{type:Boolean,required:!1,default:!1},hasNext:{type:Boolean,required:!1,default:!1},hasPrevious:{type:Boolean,required:!1,default:!1},autoAdvance:{type:Boolean,required:!1,default:!1}},emits:[`state-change`,`play-next`,`play-previous`,`toggle-auto-advance`],setup(t,{expose:s,emit:c}){let u=t,d=c,f=S(null),p=x(ut(f,u,d)),h=x(dt(E(p,`isPlaying`)));b(X,p),b(Z,h),b(ft,E(u,`action`)),b(mt,x({hasPlaylist:n(()=>u.hasPlaylist),hasNext:n(()=>u.hasNext),hasPrevious:n(()=>u.hasPrevious),autoAdvance:n(()=>u.autoAdvance),playNext:()=>d(`play-next`),playPrevious:()=>d(`play-previous`),toggleAutoAdvance:()=>d(`toggle-auto-advance`)}));let _=n(()=>P(u.aspectRatio)),v=n(()=>_.value.isPortrait),w=n(()=>_.value.cssRatio),T=n(()=>!u.poster&&!p.isReady);return s(p),(t,n)=>(y(),a(`div`,kr,[o(`div`,{class:m([`player__shell`,{"player__shell--portrait":v.value}]),style:g({aspectRatio:w.value}),onMousemove:n[0]||=e=>h.onMouseMove(),onContextmenuCapture:n[1]||=A(()=>{},[`prevent`]),onMouseleave:n[2]||=e=>h.onMouseLeave()},[o(`div`,Ar,[o(`video`,{ref_key:`videoEl`,ref:f,class:m([`mvp-video`,{"mvp-video--hidden":T.value}]),poster:u.poster,playsinline:``},[(y(!0),a(e,null,C(u.tracks,(e,t)=>(y(),a(`track`,{key:`${e.src}-${t}`,src:e.src,kind:e.kind??`captions`,srclang:e.srclang,label:e.label,default:e.default},null,8,Mr))),128))],10,jr),p.nativeUi?i(`v-if`,!0):(y(),r(Or,{key:0,"disable-tap-capture":u.disableTapCapture},null,8,[`disable-tap-capture`])),p.nativeUi&&!p.hasStarted?(y(),a(`div`,Nr,[l(Pn,{"is-playing":!1,size:`lg`,onTogglePlay:p.togglePlay},null,8,[`onTogglePlay`])])):i(`v-if`,!0)])],38)]))}}),[[`__scopeId`,`data-v-4ab3cf75`]]);const Fr=S(0),Ir=n(()=>Fr.value>0);function Lr(){Fr.value++}function Rr(){Fr.value--}function zr(e,t){window.dispatchEvent(new CustomEvent(e,{detail:t}))}function Br(e,t){let n=e=>t(e.detail);v(()=>window.addEventListener(e,n)),_(()=>window.removeEventListener(e,n))}function Vr(e,t){let r=n(()=>!e.value||!t.value?-1:e.value.findIndex(e=>e.videoUrl===t.value?.videoUrl)),i=n(()=>r.value===-1||!e.value?null:e.value[r.value+1]??null),a=n(()=>r.value<=0||!e.value?null:e.value[r.value-1]??null);return{hasNext:n(()=>i.value!==null),hasPrevious:n(()=>a.value!==null),nextEntry:i,previousEntry:a}}function Hr(){return localStorage.getItem(H)===`true`}function Ur(e){localStorage.setItem(H,String(e))}const Wr=[`src`],Gr={class:`stage__idle-body`},Kr={class:`stage__idle-btn`},qr={class:`stage__idle-title`},Jr={key:1,class:`stage__idle-empty`};var Yr=$(u({__name:`VideoStage`,props:{pinPosition:{type:String,required:!1,default:`bottom-right`},playlist:{type:Array,required:!1}},emits:[`state-change`],setup(t,{expose:s,emit:c}){let u=t,d=c,p=S(Hr());O(p,Ur);let h=n(()=>!!u.playlist?.length),x=S(null),C=S(null),w=S(!1),k=S(!1),j=S(null),M=S(null),N=S(!1);b(pt,N);let{hasNext:F,hasPrevious:ee,nextEntry:I,previousEntry:L}=Vr(E(u,`playlist`),C),B=n(()=>N.value&&!!C.value&&w.value),V=n(()=>P(C.value?.aspectRatio||`16:9`).cssRatio),H=S(null),U=S(null);O(B,e=>{H.value=e&&M.value?{height:M.value.offsetHeight,width:M.value.offsetWidth}:null});let W=n(()=>{if(!H.value)return{};let{height:e,width:t}=H.value,n=U.value&&t?U.value/t:1;return{height:`${Math.round(e*n)}px`}}),G=null,K=null;function q(){G?.disconnect(),K?.disconnect(),j.value&&(G=new IntersectionObserver(([e])=>{N.value=!e.isIntersecting},{threshold:1}),G.observe(j.value),K=new ResizeObserver(([e])=>{U.value=e.contentRect.width}),K.observe(j.value))}O(j,q);function te(){C.value&&(C.value={...C.value,autoplay:!0},w.value=!0)}function ne(){j.value?.scrollIntoView({behavior:`smooth`,block:`center`})}function re(){C.value=null,w.value=!1,k.value=!1,H.value=null,ie()}function ie(){zr(z,{currentVideoUrl:C.value?.videoUrl??null,isPlaying:k.value})}function J(e){if(C.value?.videoUrl===e.videoUrl&&w.value){x.value?.togglePlay();return}C.value=e,w.value=!1,k.value=!1,ie(),w.value=!0}function Y(e){if(!(!C.value||e.videoUrl!==C.value.videoUrl)){if(!w.value){C.value={...C.value,autoplay:!0},w.value=!0;return}x.value?.togglePlay()}}function ae(e){return{...e,muted:e.muted??x.value?.isMuted,autoplay:!0}}function oe(){I.value&&J(ae(I.value))}function se(){L.value&&J(ae(L.value))}function ce(e){e.type===`play`&&(k.value=!0),(e.type===`pause`||e.type===`ended`)&&(k.value=!1),e.type===`ended`&&p.value&&oe(),ie(),d(`state-change`,e)}return Br(R,J),Br(`video-toggle`,Y),v(Lr),_(()=>{Rr(),G?.disconnect(),K?.disconnect()}),s({playNext:oe,playPrevious:se,hasNext:F,hasPrevious:ee}),(n,s)=>(y(),a(`div`,{ref_key:`wrapperEl`,ref:j,class:`stage-wrapper`,style:g(W.value)},[o(`div`,{ref_key:`stageEl`,ref:M,class:m([`stage`,{"stage--minified":B.value,[`stage--pin-${t.pinPosition}`]:B.value}])},[B.value?(y(),a(`button`,{key:0,class:`stage__scroll-to`,"aria-label":`Scroll to player`,onClick:A(ne,[`stop`])},[l(D(Lt))])):i(`v-if`,!0),B.value?(y(),a(`button`,{key:1,class:`stage__dismiss`,"aria-label":`Close`,onClick:A(re,[`stop`])},[l(D(kt))])):i(`v-if`,!0),C.value&&w.value?(y(),r(Pr,f({ref_key:`playerRef`,ref:x,key:C.value.videoUrl},C.value,{"has-playlist":h.value,"has-next":D(F),"has-previous":D(ee),"auto-advance":p.value,onStateChange:ce,onPlayNext:oe,onPlayPrevious:se,onToggleAutoAdvance:s[0]||=e=>p.value=!p.value}),null,16,[`has-playlist`,`has-next`,`has-previous`,`auto-advance`])):(y(),a(`div`,{key:3,class:`stage__idle`,style:g({aspectRatio:V.value}),onClick:te},[C.value?.poster?(y(),a(`img`,{key:0,src:C.value.poster,class:`stage__idle-poster`},null,8,Wr)):i(`v-if`,!0),s[1]||=o(`div`,{class:`stage__idle-scrim`},null,-1),o(`div`,Gr,[C.value?(y(),a(e,{key:0},[o(`div`,Kr,[l(D(fn))]),o(`p`,qr,T(C.value.title),1)],64)):(y(),a(`p`,Jr,`Select a video to play`))])],4))],2)],4))}}),[[`__scopeId`,`data-v-fb8c86cf`]]);const Xr={class:`placeholder`},Zr=[`src`,`alt`],Qr={class:`placeholder__btn-wrap`},$r={key:1,class:`placeholder__footer`},ei={class:`placeholder__title`};var ti=$(u({__name:`VideoPlaceholder`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1,default:``},poster:{type:String,required:!1,default:``},aspectRatio:{type:String,required:!1,default:te},adTagUrl:{type:String,required:!1,default:``},adTagParams:{type:Object,required:!1},headerBidding:{type:Object,required:!1},tracks:{type:Array,required:!1},autoplay:{type:Boolean,required:!1,default:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1,default:!1},autoStage:{type:Boolean,required:!1,default:!1},lazy:{type:Boolean,required:!1},payload:{type:Object,required:!1,default:()=>({})},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1}},setup(e){let t=e,r=n(()=>P(t.aspectRatio)),s=n(()=>r.value.isPortrait),c=n(()=>r.value.cssRatio),u=S(!1),d=S(!1);Br(z,e=>{u.value=e.currentVideoUrl===t.videoUrl,d.value=u.value&&e.isPlaying});function f(e){zr(R,{...t,...e!==void 0&&{autoplay:e}})}function p(){f(!0)}return v(()=>{t.autoStage&&f()}),(t,n)=>(y(),a(`div`,Xr,[o(`div`,{class:m([`placeholder__shell`,{"placeholder__shell--portrait":s.value,"placeholder__shell--active":u.value}]),style:g({aspectRatio:c.value}),onClick:p},[e.poster?(y(),a(`img`,{key:0,class:`placeholder__poster`,src:e.poster,alt:e.title},null,8,Zr)):i(`v-if`,!0),n[0]||=o(`div`,{class:`placeholder__scrim`},null,-1),o(`div`,Qr,[l(Pn,{"is-playing":u.value&&d.value,size:`lg`,onTogglePlay:p},null,8,[`is-playing`])]),e.title?(y(),a(`div`,$r,[o(`p`,ei,T(e.title),1)])):i(`v-if`,!0)],6)]))}}),[[`__scopeId`,`data-v-dbcb4f82`]]),ni=u({__name:`VideoItem`,props:{videoUrl:{type:String,required:!0},title:{type:String,required:!1},poster:{type:String,required:!1},aspectRatio:{type:String,required:!1},adTagUrl:{type:String,required:!1},adTagParams:{type:Object,required:!1},headerBidding:{type:Object,required:!1},tracks:{type:Array,required:!1},autoplay:{type:Boolean,required:!1},muted:{type:Boolean,required:!1,default:void 0},playbackRate:{type:Number,required:!1},nativeUi:{type:Boolean,required:!1},autoStage:{type:Boolean,required:!1},lazy:{type:Boolean,required:!1,default:!0},payload:{type:Object,required:!1},action:{type:[String,Object,null],required:!1,default:null},disableTapCapture:{type:Boolean,required:!1}},emits:[`state-change`],setup(t,{emit:n}){let i=t,o=n,s=S(!1);return(t,n)=>D(Ir)?(y(),r(ti,h(f({key:0},i)),null,16)):(y(),a(e,{key:1},[i.lazy&&!s.value&&!i.autoplay?(y(),r(ti,f({key:0},i,{onClickCapture:n[0]||=e=>s.value=!0}),null,16)):(y(),r(Pr,f({key:1},i,{autoplay:s.value||i.autoplay,onStateChange:n[1]||=e=>o(`state-change`,e)}),null,16,[`autoplay`]))],64))}});const ri={install(e){e.component(`VideoPlayer`,Pr),e.component(`VideoStage`,Yr),e.component(`VideoPlaceholder`,ti),e.component(`VideoItem`,ni)}};export{ft as ActionKey,pt as CompactKey,Z as HudKey,X as PlayerKey,mt as PlaylistKey,ni as VideoItem,ti as VideoPlaceholder,Pr as VideoPlayer,ri as VideoPlayerPlugin,ri as default,Yr as VideoStage,Me as getPlatform,Q as injectStrict};
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .ppbtn[data-v-85902525]{backdrop-filter:blur(12px);will-change:backdrop-filter;color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #ffffff2e;border-radius:50%;justify-content:center;align-items:center;transition:background .2s,transform .15s;display:flex}.ppbtn[data-v-85902525]:hover{background:#fff3;transform:scale(1.08)}.ppbtn--lg[data-v-85902525]{background:var(--mvp-btn-bg,#ffffff1a);width:clamp(48px,20cqw,64px);height:clamp(48px,20cqw,64px);color:var(--mvp-btn-color,#fff)}.ppbtn--lg svg[data-v-85902525]{width:clamp(20px,9cqw,28px);height:clamp(20px,9cqw,28px)}.ppbtn--lg[data-v-85902525]:hover{background:var(--mvp-btn-bg,#fff3);filter:brightness(1.12)}.ppbtn--sm[data-v-85902525]{color:#ffffffbf;background:0 0;border:none;border-radius:8px;width:30px;height:30px}.ppbtn--sm svg[data-v-85902525]{width:16px;height:16px}.ppbtn--sm[data-v-85902525]:hover{color:#fff;background:#ffffff1a;transform:none}@keyframes spin-259be2b2{to{transform:rotate(360deg)}}.spinner[data-v-259be2b2]{border-style:solid;border-color:#fffc #ffffff26 #ffffff26;border-radius:50%;animation:.75s linear infinite spin-259be2b2}.hud[data-v-a6d118e7]{align-items:center;gap:clamp(12px,5cqw,20px);display:flex}.hud__play-wrap[data-v-a6d118e7]{display:flex;position:relative}.hud__buf-spinner[data-v-a6d118e7]{margin-top:8px;position:absolute;top:100%;left:calc(50% - 7px)}.hud__spacer[data-v-a6d118e7]{flex-shrink:0;width:clamp(36px,14cqw,44px);height:clamp(36px,14cqw,44px)}.hud__btn[data-v-a6d118e7]{background:var(--mvp-btn-bg,#ffffff1a);backdrop-filter:blur(12px);will-change:backdrop-filter;width:clamp(36px,14cqw,44px);height:clamp(36px,14cqw,44px);color:var(--mvp-btn-color,#fff);cursor:pointer;border:1px solid #ffffff2e;border-radius:50%;justify-content:center;align-items:center;transition:background .2s,transform .15s;display:flex}.hud__btn svg[data-v-a6d118e7]{width:clamp(16px,6cqw,18px);height:clamp(16px,6cqw,18px)}.hud__btn[data-v-a6d118e7]:hover{background:var(--mvp-btn-bg,#fff3);filter:brightness(1.12);transform:scale(1.08)}.hud__btn--active[data-v-a6d118e7]{border-color:var(--mvp-accent,#3b82f6);background:color-mix(in srgb, var(--mvp-accent,#3b82f6) 30%, var(--mvp-btn-bg,#ffffff1a));color:var(--mvp-btn-color,#fff)}.hud__btn--active[data-v-a6d118e7]:hover{background:color-mix(in srgb, var(--mvp-accent,#3b82f6) 45%, var(--mvp-btn-bg,#fff3))}.controls__vol-header[data-v-10b0ae67]{align-items:center;gap:4px;display:flex}.controls__vol-label[data-v-10b0ae67]{color:#ffffffe6;flex:1;padding:0 4px;font-size:.8rem;font-weight:600}.controls__vol-body[data-v-10b0ae67]{align-items:center;gap:12px;padding:6px 0 4px;display:flex}.controls__vol-pct[data-v-10b0ae67]{font-variant-numeric:tabular-nums;color:#fff9;text-align:right;min-width:32px;font-size:.75rem;font-weight:600}.controls__vol-slider[data-v-10b0ae67]{-webkit-appearance:none;appearance:none;cursor:pointer;background:linear-gradient(to right, #fff 0%, #fff var(--v), #ffffff26 var(--v), #ffffff26 100%);outline:none;flex:1;height:5px;transition:height .15s}.controls__vol-slider[data-v-10b0ae67]:hover{height:7px}.controls__vol-slider[data-v-10b0ae67]::-webkit-slider-runnable-track{background:0 0;height:5px}.controls__vol-slider[data-v-10b0ae67]::-webkit-slider-thumb{-webkit-appearance:none;cursor:pointer;background:#fff;border-radius:50%;width:16px;height:16px;margin-top:-5.5px;transition:transform .15s;box-shadow:0 0 0 3px #fff3}.controls__vol-slider[data-v-10b0ae67]:hover::-webkit-slider-thumb{transform:scale(1.2)}.controls__vol-slider[data-v-10b0ae67]::-moz-range-track{background:#ffffff26;height:5px}.controls__vol-slider[data-v-10b0ae67]::-moz-range-progress{background:#fff;height:5px}.controls__vol-slider[data-v-10b0ae67]::-moz-range-thumb{cursor:pointer;background:#fff;border:none;border-radius:50%;width:16px;height:16px;box-shadow:0 0 0 3px #fff3}.controls__more-header[data-v-e89a8208]{align-items:center;gap:4px;display:flex}.controls__more-label[data-v-e89a8208]{color:#ffffffe6;flex:1;padding:0 4px;font-size:.8rem;font-weight:600}.controls__more-body[data-v-e89a8208]{flex-direction:column;padding:2px 0;display:flex}.controls__more-row[data-v-e89a8208]{color:#ffffffd9;cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:space-between;align-items:center;width:100%;padding:8px 4px;font-size:.8rem;font-weight:500;transition:background .15s;display:flex}.controls__more-row[data-v-e89a8208]:hover{background:#ffffff14}.controls__more-row-label[data-v-e89a8208]{align-items:center;gap:8px;display:flex}.controls__more-row-icon[data-v-e89a8208]{flex-shrink:0;width:16px;height:16px}.controls__more-value[data-v-e89a8208]{font-variant-numeric:tabular-nums;color:#ffffff80;font-size:.7rem;font-weight:600}.controls__more-row--active .controls__more-value[data-v-e89a8208]{color:var(--mvp-accent,#3b82f6)}::view-transition-old(controls-popup),::view-transition-new(controls-popup){animation-duration:.22s;animation-timing-function:ease-in-out}.controls__btn{color:#ffffffbf;cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;transition:background .15s,color .15s;display:flex}.controls__btn svg{width:16px;height:16px}.controls__btn:hover{color:#fff;background:#ffffff1a}.controls[data-v-5712aad4]{-webkit-backdrop-filter:blur(20px);background:#0a0a0e;border:1px solid #ffffff1a;border-radius:18px;flex-direction:column;gap:10px;width:min(340px,100% - 32px);padding:14px 16px 12px;display:flex;box-shadow:0 8px 32px #00000080}.controls--fs[data-v-5712aad4]{width:100%}.controls--compact .controls__seek[data-v-5712aad4],.controls--compact .controls__btn--more[data-v-5712aad4],.controls--compact .controls__fs-wrap[data-v-5712aad4]{display:none}@container player-shell (width<=300px){.controls__seek[data-v-5712aad4],.controls__btn--more[data-v-5712aad4],.controls__fs-wrap[data-v-5712aad4]{display:none}}.controls__seek[data-v-5712aad4]{-webkit-appearance:none;appearance:none;cursor:pointer;box-sizing:border-box;background:padding-box content-box;background-image:linear-gradient(to right, var(--mvp-accent,#3b82f6) 0%, var(--mvp-accent,#3b82f6) var(--p), #ffffff4d var(--p), #ffffff4d var(--b), #ffffff1a var(--b), #ffffff1a 100%);outline:none;width:100%;height:20px;padding:8px 0}.controls__seek[data-v-5712aad4]::-webkit-slider-runnable-track{background:0 0;height:4px}.controls__seek[data-v-5712aad4]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--mvp-accent,#3b82f6);width:14px;height:14px;box-shadow:0 0 0 3px color-mix(in srgb, var(--mvp-accent,#3b82f6) 30%, transparent);cursor:pointer;border-radius:50%;margin-top:-5px;transition:transform .15s}.controls__seek[data-v-5712aad4]:hover::-webkit-slider-thumb{transform:scale(1.25)}.controls__seek[data-v-5712aad4]::-moz-range-track{background:#ffffff1a;height:4px}.controls__seek[data-v-5712aad4]::-moz-range-progress{background:var(--mvp-accent,#3b82f6);height:4px}.controls__seek[data-v-5712aad4]::-moz-range-thumb{background:var(--mvp-accent,#3b82f6);width:14px;height:14px;box-shadow:0 0 0 3px color-mix(in srgb, var(--mvp-accent,#3b82f6) 30%, transparent);cursor:pointer;border:none;border-radius:50%}.controls__row[data-v-5712aad4]{align-items:center;gap:4px;display:flex}.controls__time[data-v-5712aad4]{font-variant-numeric:tabular-nums;color:#fff9;letter-spacing:.02em;flex:1;padding:0 4px;font-size:.7rem;font-weight:500}.controls__live[data-v-5712aad4]{letter-spacing:.04em;text-transform:uppercase;color:#f87171;flex:1;align-items:center;gap:5px;padding:0 4px;font-size:.7rem;font-weight:700;display:flex}.controls__live-dot[data-v-5712aad4]{background:#f87171;border-radius:50%;width:6px;height:6px}.controls__play-wrap[data-v-5712aad4]{flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;display:flex}.controls__btn--active[data-v-5712aad4]{color:var(--mvp-accent,#3b82f6)}.controls__btn--active[data-v-5712aad4]:hover{color:var(--mvp-accent,#60a5fa)}.controls__fs-wrap[data-v-5712aad4]{flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;display:flex}.ad-overlay[data-v-23efcc8b]{z-index:21;pointer-events:none;position:absolute;inset:0}.ad-overlay__bar[data-v-23efcc8b]{align-items:center;gap:6px;display:flex;position:absolute;bottom:10px;left:10px}.ad-overlay__badge[data-v-23efcc8b]{color:#fff;text-transform:uppercase;letter-spacing:.06em;background:#0009;border-radius:4px;align-items:center;gap:6px;padding:3px 8px;font-size:.65rem;font-weight:700;display:flex}.ad-overlay__countdown[data-v-23efcc8b]{font-variant-numeric:tabular-nums;text-transform:none;letter-spacing:.02em;opacity:.8;font-weight:500}.ad-overlay__mute[data-v-23efcc8b]{color:#fff;cursor:pointer;pointer-events:auto;background:#0009;border:none;border-radius:4px;justify-content:center;align-items:center;padding:3px;transition:background .15s;display:flex}.ad-overlay__mute[data-v-23efcc8b]:hover{background:#000c}.ad-overlay__mute svg[data-v-23efcc8b]{width:11px;height:11px}.ad-overlay__resume[data-v-23efcc8b]{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.ad-overlay__resume[data-v-23efcc8b]>*{pointer-events:auto}.overlay__tap-capture[data-v-f3307b98]{z-index:2;position:absolute;inset:0}.overlay__spinner[data-v-f3307b98]{z-index:5;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.fade-enter-active[data-v-f3307b98],.fade-leave-active[data-v-f3307b98]{transition:opacity .25s}.fade-enter-from[data-v-f3307b98],.fade-leave-to[data-v-f3307b98]{opacity:0}.overlay__error[data-v-f3307b98]{z-index:6;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding:1.5rem;display:flex;position:absolute;inset:0}.overlay__error p[data-v-f3307b98]{color:#ffffffb3;text-align:center;max-width:260px;font-size:.875rem;line-height:1.5}.overlay__retry[data-v-f3307b98]{pointer-events:auto;color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #ffffff40;border-radius:8px;padding:.4rem 1rem;font-size:.8rem;font-weight:600;transition:background .15s}.overlay__retry[data-v-f3307b98]:hover{background:#fff3}.overlay__hud[data-v-f3307b98]{z-index:4;opacity:0;pointer-events:none;justify-content:center;align-items:center;transition:opacity .3s;display:flex;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.overlay__hud--visible[data-v-f3307b98]{opacity:1;pointer-events:all}.overlay__popup[data-v-f3307b98]{z-index:5;align-items:var(--mvp-popup-align,center);pointer-events:none;justify-content:center;padding:16px;display:flex;position:absolute;inset:0}.overlay__popup[data-v-f3307b98] .controls{pointer-events:auto}.overlay__popup--fs[data-v-f3307b98]{align-items:flex-end}.popup-enter-active[data-v-f3307b98],.popup-leave-active[data-v-f3307b98]{transition:opacity .2s,transform .2s}.popup-enter-from[data-v-f3307b98],.popup-leave-to[data-v-f3307b98]{opacity:0;transform:scale(.95)}.player[data-v-4ab3cf75]{user-select:none;-webkit-tap-highlight-color:transparent;width:100%;max-width:800px;margin:0 auto}[data-mvp-player][data-v-4ab3cf75]{position:absolute;inset:0}.player__shell[data-v-4ab3cf75]{border-radius:var(--mvp-radius,12px);cursor:pointer;background:#000;position:relative;overflow:hidden;container:player-shell/inline-size}.mvp-video--hidden[data-v-4ab3cf75]{opacity:0}.player__shell--portrait[data-v-4ab3cf75]{width:auto;max-width:100%;max-height:75dvh;margin:0 auto}.player__native-play[data-v-4ab3cf75]{z-index:3;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.player__native-play[data-v-4ab3cf75]>*{pointer-events:auto}.player__shell[data-v-4ab3cf75]:fullscreen{border-radius:0;width:100vw;height:100dvh}.player__shell:fullscreen .mvp-video[data-v-4ab3cf75],.player__shell:fullscreen [data-mvp-player][data-v-4ab3cf75]{width:100%!important;height:100%!important}.mvp-video{border-radius:var(--mvp-radius,12px);object-fit:cover;background:#000;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.mvp-dailymotion .mvp-tech>*,.mvp-dailymotion .dailymotion-player-root,.mvp-dailymotion iframe{width:100%!important;height:100%!important;position:absolute!important;inset:0!important}.mvp-vimeo .mvp-tech>div{width:100%!important;height:100%!important;padding:0!important;position:absolute!important;top:0!important;left:0!important}.mvp-vimeo iframe{width:100%!important;height:100%!important;position:absolute!important;top:0!important;left:0!important}[data-mvp-player] .ima-ad-container{pointer-events:none;z-index:20!important;width:100%!important;height:100%!important;position:absolute!important;top:0!important;left:0!important}.mvp-ad-playing .ima-ad-container{pointer-events:auto}.mvp-ad-paused .ima-ad-container{pointer-events:none}.mvp-ad-playing .overlay__hud,.mvp-ad-playing .overlay__spinner{display:none!important}.stage-wrapper[data-v-fb8c86cf]{width:100%;max-width:800px;margin:0 auto}.stage[data-v-fb8c86cf]{width:100%}.stage__dismiss[data-v-fb8c86cf],.stage__scroll-to[data-v-fb8c86cf]{z-index:10;backdrop-filter:blur(6px);color:#fff;cursor:pointer;background:#0009;border:none;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;transition:all .15s;display:flex;position:absolute;top:.4rem}.stage__dismiss[data-v-fb8c86cf]:hover,.stage__scroll-to[data-v-fb8c86cf]:hover{background:#000000d9}.stage__dismiss svg[data-v-fb8c86cf],.stage__scroll-to svg[data-v-fb8c86cf]{width:14px;height:14px}.stage__dismiss[data-v-fb8c86cf]{right:.4rem}.stage__scroll-to[data-v-fb8c86cf]{left:.4rem}.stage--minified[data-v-fb8c86cf]{z-index:100;margin:0;position:fixed;overflow:hidden;box-shadow:0 8px 32px #0009}.stage--pin-bottom-right[data-v-fb8c86cf],.stage--pin-bottom-left[data-v-fb8c86cf],.stage--pin-top-right[data-v-fb8c86cf],.stage--pin-top-left[data-v-fb8c86cf]{border-radius:var(--mvp-radius,12px);width:360px;max-width:360px;@media (width<=740px){max-width:300px}}.stage--pin-bottom-right[data-v-fb8c86cf]{bottom:1.25rem;right:1.25rem}.stage--pin-bottom-left[data-v-fb8c86cf]{bottom:1.25rem;left:1.25rem}.stage--pin-top-right[data-v-fb8c86cf]{top:1.25rem;right:1.25rem}.stage--pin-top-left[data-v-fb8c86cf]{top:1.25rem;left:1.25rem}.stage--pin-full-width[data-v-fb8c86cf]{width:100%;max-width:100%;box-shadow:none;border-radius:0;top:0;left:0;right:0}.stage__idle[data-v-fb8c86cf]{border-radius:var(--mvp-radius,12px);cursor:pointer;background:#111;justify-content:center;align-items:center;width:100%;display:flex;position:relative;overflow:hidden}.stage__idle-poster[data-v-fb8c86cf]{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.stage__idle-scrim[data-v-fb8c86cf]{background:#00000073;transition:background .15s;position:absolute;inset:0}.stage__idle:hover .stage__idle-scrim[data-v-fb8c86cf]{background:#0000004d}.stage__idle-body[data-v-fb8c86cf]{text-align:center;flex-direction:column;align-items:center;gap:.75rem;padding:1rem;display:flex;position:relative}.stage__idle-btn[data-v-fb8c86cf]{backdrop-filter:blur(4px);color:#fff;background:#0009;border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;transition:transform .15s,background .15s;display:flex}.stage__idle:hover .stage__idle-btn[data-v-fb8c86cf]{background:#000c;transform:scale(1.1)}.stage__idle-btn svg[data-v-fb8c86cf]{width:32px;height:32px}.stage__idle-title[data-v-fb8c86cf]{color:#f1f5f9;text-shadow:0 1px 4px #000c;font-size:1rem;font-weight:600}.stage__idle-empty[data-v-fb8c86cf]{color:#64748b;font-size:.95rem}.placeholder[data-v-dbcb4f82]{width:100%}.placeholder__shell[data-v-dbcb4f82]{border-radius:var(--mvp-radius,12px);cursor:pointer;background:#111;position:relative;overflow:hidden}.placeholder__shell--portrait[data-v-dbcb4f82]{width:auto;max-height:75dvh;margin:0 auto}.placeholder__poster[data-v-dbcb4f82]{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.placeholder__scrim[data-v-dbcb4f82]{background:#00000059;transition:background .15s;position:absolute;inset:0}.placeholder__shell:hover .placeholder__scrim[data-v-dbcb4f82]{background:#00000026}.placeholder__btn-wrap[data-v-dbcb4f82]{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.placeholder__btn-wrap[data-v-dbcb4f82]>*{pointer-events:auto}.placeholder__footer[data-v-dbcb4f82]{pointer-events:none;background:linear-gradient(#0000 0%,#000c 100%);padding:1.5rem .75rem .6rem;position:absolute;bottom:0;left:0;right:0}.placeholder__title[data-v-dbcb4f82]{color:#f1f5f9;white-space:nowrap;text-overflow:ellipsis;text-shadow:0 1px 3px #0009;font-size:.8rem;font-weight:600;overflow:hidden}
1
+ .ppbtn[data-v-85902525]{backdrop-filter:blur(12px);will-change:backdrop-filter;color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #ffffff2e;border-radius:50%;justify-content:center;align-items:center;transition:background .2s,transform .15s;display:flex}.ppbtn[data-v-85902525]:hover{background:#fff3;transform:scale(1.08)}.ppbtn--lg[data-v-85902525]{background:var(--mvp-btn-bg,#ffffff1a);width:clamp(48px,20cqw,64px);height:clamp(48px,20cqw,64px);color:var(--mvp-btn-color,#fff)}.ppbtn--lg svg[data-v-85902525]{width:clamp(20px,9cqw,28px);height:clamp(20px,9cqw,28px)}.ppbtn--lg[data-v-85902525]:hover{background:var(--mvp-btn-bg,#fff3);filter:brightness(1.12)}.ppbtn--sm[data-v-85902525]{color:#ffffffbf;background:0 0;border:none;border-radius:8px;width:30px;height:30px}.ppbtn--sm svg[data-v-85902525]{width:16px;height:16px}.ppbtn--sm[data-v-85902525]:hover{color:#fff;background:#ffffff1a;transform:none}@keyframes spin-259be2b2{to{transform:rotate(360deg)}}.spinner[data-v-259be2b2]{border-style:solid;border-color:#fffc #ffffff26 #ffffff26;border-radius:50%;animation:.75s linear infinite spin-259be2b2}.hud[data-v-a6d118e7]{align-items:center;gap:clamp(12px,5cqw,20px);display:flex}.hud__play-wrap[data-v-a6d118e7]{display:flex;position:relative}.hud__buf-spinner[data-v-a6d118e7]{margin-top:8px;position:absolute;top:100%;left:calc(50% - 7px)}.hud__spacer[data-v-a6d118e7]{flex-shrink:0;width:clamp(36px,14cqw,44px);height:clamp(36px,14cqw,44px)}.hud__btn[data-v-a6d118e7]{background:var(--mvp-btn-bg,#ffffff1a);backdrop-filter:blur(12px);will-change:backdrop-filter;width:clamp(36px,14cqw,44px);height:clamp(36px,14cqw,44px);color:var(--mvp-btn-color,#fff);cursor:pointer;border:1px solid #ffffff2e;border-radius:50%;justify-content:center;align-items:center;transition:background .2s,transform .15s;display:flex}.hud__btn svg[data-v-a6d118e7]{width:clamp(16px,6cqw,18px);height:clamp(16px,6cqw,18px)}.hud__btn[data-v-a6d118e7]:hover{background:var(--mvp-btn-bg,#fff3);filter:brightness(1.12);transform:scale(1.08)}.hud__btn--active[data-v-a6d118e7]{border-color:var(--mvp-accent,#3b82f6);background:color-mix(in srgb, var(--mvp-accent,#3b82f6) 30%, var(--mvp-btn-bg,#ffffff1a));color:var(--mvp-btn-color,#fff)}.hud__btn--active[data-v-a6d118e7]:hover{background:color-mix(in srgb, var(--mvp-accent,#3b82f6) 45%, var(--mvp-btn-bg,#fff3))}.controls__vol-header[data-v-10b0ae67]{align-items:center;gap:4px;display:flex}.controls__vol-label[data-v-10b0ae67]{color:#ffffffe6;flex:1;padding:0 4px;font-size:.8rem;font-weight:600}.controls__vol-body[data-v-10b0ae67]{align-items:center;gap:12px;padding:6px 0 4px;display:flex}.controls__vol-pct[data-v-10b0ae67]{font-variant-numeric:tabular-nums;color:#fff9;text-align:right;min-width:32px;font-size:.75rem;font-weight:600}.controls__vol-slider[data-v-10b0ae67]{-webkit-appearance:none;appearance:none;cursor:pointer;background:linear-gradient(to right, #fff 0%, #fff var(--v), #ffffff26 var(--v), #ffffff26 100%);outline:none;flex:1;height:5px;transition:height .15s}.controls__vol-slider[data-v-10b0ae67]:hover{height:7px}.controls__vol-slider[data-v-10b0ae67]::-webkit-slider-runnable-track{background:0 0;height:5px}.controls__vol-slider[data-v-10b0ae67]::-webkit-slider-thumb{-webkit-appearance:none;cursor:pointer;background:#fff;border-radius:50%;width:16px;height:16px;margin-top:-5.5px;transition:transform .15s;box-shadow:0 0 0 3px #fff3}.controls__vol-slider[data-v-10b0ae67]:hover::-webkit-slider-thumb{transform:scale(1.2)}.controls__vol-slider[data-v-10b0ae67]::-moz-range-track{background:#ffffff26;height:5px}.controls__vol-slider[data-v-10b0ae67]::-moz-range-progress{background:#fff;height:5px}.controls__vol-slider[data-v-10b0ae67]::-moz-range-thumb{cursor:pointer;background:#fff;border:none;border-radius:50%;width:16px;height:16px;box-shadow:0 0 0 3px #fff3}.controls__more-row[data-v-47ca5bfc]{color:#ffffffd9;cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:space-between;align-items:center;width:100%;padding:8px 4px;font-size:.8rem;font-weight:500;transition:background .15s;display:flex}.controls__more-row[data-v-47ca5bfc]:hover{background:#ffffff14}.controls__more-row-label[data-v-47ca5bfc]{align-items:center;gap:8px;display:flex}.controls__more-row-icon[data-v-47ca5bfc]{flex-shrink:0;width:16px;height:16px}.controls__more-value[data-v-47ca5bfc]{font-variant-numeric:tabular-nums;color:#ffffff80;font-size:.7rem;font-weight:600}.controls__more-row--active .controls__more-value[data-v-47ca5bfc]{color:var(--mvp-accent,#3b82f6)}.controls__more-header[data-v-e89a8208]{flex-shrink:0;align-items:center;gap:4px;display:flex}.controls__more-label[data-v-e89a8208]{color:#ffffffe6;flex:1;padding:0 4px;font-size:.8rem;font-weight:600}.controls__more-body[data-v-e89a8208]{flex-direction:column;min-height:0;padding:2px 0;display:flex;overflow-y:auto}::view-transition-old(controls-popup),::view-transition-new(controls-popup){animation-duration:.22s;animation-timing-function:ease-in-out}.controls__btn{color:#ffffffbf;cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;transition:background .15s,color .15s;display:flex}.controls__btn svg{width:16px;height:16px}.controls__btn:hover{color:#fff;background:#ffffff1a}.controls[data-v-5712aad4]{-webkit-backdrop-filter:blur(20px);background:#0a0a0e;border:1px solid #ffffff1a;border-radius:18px;flex-direction:column;gap:10px;width:min(340px,100% - 32px);max-height:100%;padding:14px 16px 12px;display:flex;overflow:hidden;box-shadow:0 8px 32px #00000080}.controls--fs[data-v-5712aad4]{width:100%}.controls--compact .controls__seek[data-v-5712aad4],.controls--compact .controls__btn--more[data-v-5712aad4],.controls--compact .controls__btn--pip[data-v-5712aad4],.controls--compact .controls__fs-wrap[data-v-5712aad4]{display:none}@container player-shell (width<=300px){.controls__seek[data-v-5712aad4],.controls__btn--more[data-v-5712aad4],.controls__btn--pip[data-v-5712aad4],.controls__fs-wrap[data-v-5712aad4]{display:none}}.controls__seek[data-v-5712aad4]{-webkit-appearance:none;appearance:none;cursor:pointer;box-sizing:border-box;background:padding-box content-box;background-image:linear-gradient(to right, var(--mvp-accent,#3b82f6) 0%, var(--mvp-accent,#3b82f6) var(--p), #ffffff4d var(--p), #ffffff4d var(--b), #ffffff1a var(--b), #ffffff1a 100%);outline:none;width:100%;height:20px;padding:8px 0}.controls__seek[data-v-5712aad4]::-webkit-slider-runnable-track{background:0 0;height:4px}.controls__seek[data-v-5712aad4]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--mvp-accent,#3b82f6);width:14px;height:14px;box-shadow:0 0 0 3px color-mix(in srgb, var(--mvp-accent,#3b82f6) 30%, transparent);cursor:pointer;border-radius:50%;margin-top:-5px;transition:transform .15s}.controls__seek[data-v-5712aad4]:hover::-webkit-slider-thumb{transform:scale(1.25)}.controls__seek[data-v-5712aad4]::-moz-range-track{background:#ffffff1a;height:4px}.controls__seek[data-v-5712aad4]::-moz-range-progress{background:var(--mvp-accent,#3b82f6);height:4px}.controls__seek[data-v-5712aad4]::-moz-range-thumb{background:var(--mvp-accent,#3b82f6);width:14px;height:14px;box-shadow:0 0 0 3px color-mix(in srgb, var(--mvp-accent,#3b82f6) 30%, transparent);cursor:pointer;border:none;border-radius:50%}.controls__row[data-v-5712aad4]{align-items:center;gap:4px;display:flex}.controls__time[data-v-5712aad4]{font-variant-numeric:tabular-nums;color:#fff9;letter-spacing:.02em;flex:1;padding:0 4px;font-size:.7rem;font-weight:500}.controls__live[data-v-5712aad4]{letter-spacing:.04em;text-transform:uppercase;color:#f87171;flex:1;align-items:center;gap:5px;padding:0 4px;font-size:.7rem;font-weight:700;display:flex}.controls__live-dot[data-v-5712aad4]{background:#f87171;border-radius:50%;width:6px;height:6px}.controls__play-wrap[data-v-5712aad4]{flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;display:flex}.controls__btn--active[data-v-5712aad4]{color:var(--mvp-accent,#3b82f6)}.controls__btn--active[data-v-5712aad4]:hover{color:var(--mvp-accent,#60a5fa)}.controls__fs-wrap[data-v-5712aad4]{flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;display:flex}.ad-overlay[data-v-23efcc8b]{z-index:21;pointer-events:none;position:absolute;inset:0}.ad-overlay__bar[data-v-23efcc8b]{align-items:center;gap:6px;display:flex;position:absolute;bottom:10px;left:10px}.ad-overlay__badge[data-v-23efcc8b]{color:#fff;text-transform:uppercase;letter-spacing:.06em;background:#0009;border-radius:4px;align-items:center;gap:6px;padding:3px 8px;font-size:.65rem;font-weight:700;display:flex}.ad-overlay__countdown[data-v-23efcc8b]{font-variant-numeric:tabular-nums;text-transform:none;letter-spacing:.02em;opacity:.8;font-weight:500}.ad-overlay__btn[data-v-23efcc8b]{color:#fff;cursor:pointer;pointer-events:auto;background:#0009;border:none;border-radius:4px;justify-content:center;align-items:center;padding:3px;transition:background .15s;display:flex}.ad-overlay__btn[data-v-23efcc8b]:hover{background:#000c}.ad-overlay__btn svg[data-v-23efcc8b]{width:11px;height:11px}.overlay__tap-capture[data-v-f3307b98]{z-index:2;position:absolute;inset:0}.overlay__spinner[data-v-f3307b98]{z-index:5;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.fade-enter-active[data-v-f3307b98],.fade-leave-active[data-v-f3307b98]{transition:opacity .25s}.fade-enter-from[data-v-f3307b98],.fade-leave-to[data-v-f3307b98]{opacity:0}.overlay__error[data-v-f3307b98]{z-index:6;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding:1.5rem;display:flex;position:absolute;inset:0}.overlay__error p[data-v-f3307b98]{color:#ffffffb3;text-align:center;max-width:260px;font-size:.875rem;line-height:1.5}.overlay__retry[data-v-f3307b98]{pointer-events:auto;color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #ffffff40;border-radius:8px;padding:.4rem 1rem;font-size:.8rem;font-weight:600;transition:background .15s}.overlay__retry[data-v-f3307b98]:hover{background:#fff3}.overlay__hud[data-v-f3307b98]{z-index:4;opacity:0;pointer-events:none;justify-content:center;align-items:center;transition:opacity .3s;display:flex;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.overlay__hud--visible[data-v-f3307b98]{opacity:1;pointer-events:all}.overlay__popup[data-v-f3307b98]{z-index:5;align-items:var(--mvp-popup-align,center);pointer-events:none;justify-content:center;padding:16px;display:flex;position:absolute;inset:0}.overlay__popup[data-v-f3307b98] .controls{pointer-events:auto}.overlay__popup--fs[data-v-f3307b98]{align-items:flex-end}.popup-enter-active[data-v-f3307b98],.popup-leave-active[data-v-f3307b98]{transition:opacity .2s,transform .2s}.popup-enter-from[data-v-f3307b98],.popup-leave-to[data-v-f3307b98]{opacity:0;transform:scale(.95)}.player[data-v-4ab3cf75]{user-select:none;-webkit-tap-highlight-color:transparent;width:100%;max-width:800px;margin:0 auto}[data-mvp-player][data-v-4ab3cf75]{position:absolute;inset:0}.player__shell[data-v-4ab3cf75]{border-radius:var(--mvp-radius,12px);cursor:pointer;background:#000;position:relative;overflow:hidden;container:player-shell/inline-size}.mvp-video--hidden[data-v-4ab3cf75]{opacity:0}.player__shell--portrait[data-v-4ab3cf75]{width:auto;max-width:100%;max-height:75dvh;margin:0 auto}.player__native-play[data-v-4ab3cf75]{z-index:3;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.player__native-play[data-v-4ab3cf75]>*{pointer-events:auto}.player__shell[data-v-4ab3cf75]:fullscreen{border-radius:0;width:100vw;height:100dvh}.player__shell:fullscreen .mvp-video[data-v-4ab3cf75],.player__shell:fullscreen [data-mvp-player][data-v-4ab3cf75]{width:100%!important;height:100%!important}.mvp-video{border-radius:var(--mvp-radius,12px);object-fit:cover;background:#000;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.mvp-dailymotion .mvp-tech>*,.mvp-dailymotion .dailymotion-player-root,.mvp-dailymotion iframe{width:100%!important;height:100%!important;position:absolute!important;inset:0!important}.mvp-vimeo .mvp-tech>div{width:100%!important;height:100%!important;padding:0!important;position:absolute!important;top:0!important;left:0!important}.mvp-vimeo iframe{width:100%!important;height:100%!important;position:absolute!important;top:0!important;left:0!important}[data-mvp-player] .ima-ad-container{pointer-events:none;z-index:20!important;width:100%!important;height:100%!important;position:absolute!important;top:0!important;left:0!important}.mvp-ad-playing .ima-ad-container{pointer-events:auto}.mvp-ad-playing .overlay__hud,.mvp-ad-playing .overlay__spinner{display:none!important}.stage-wrapper[data-v-fb8c86cf]{width:100%;max-width:800px;margin:0 auto}.stage[data-v-fb8c86cf]{width:100%}.stage__dismiss[data-v-fb8c86cf],.stage__scroll-to[data-v-fb8c86cf]{z-index:10;backdrop-filter:blur(6px);color:#fff;cursor:pointer;background:#0009;border:none;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;transition:all .15s;display:flex;position:absolute;top:.4rem}.stage__dismiss[data-v-fb8c86cf]:hover,.stage__scroll-to[data-v-fb8c86cf]:hover{background:#000000d9}.stage__dismiss svg[data-v-fb8c86cf],.stage__scroll-to svg[data-v-fb8c86cf]{width:14px;height:14px}.stage__dismiss[data-v-fb8c86cf]{right:.4rem}.stage__scroll-to[data-v-fb8c86cf]{left:.4rem}.stage--minified[data-v-fb8c86cf]{z-index:100;margin:0;position:fixed;overflow:hidden;box-shadow:0 8px 32px #0009}.stage--pin-bottom-right[data-v-fb8c86cf],.stage--pin-bottom-left[data-v-fb8c86cf],.stage--pin-top-right[data-v-fb8c86cf],.stage--pin-top-left[data-v-fb8c86cf]{border-radius:var(--mvp-radius,12px);width:360px;max-width:360px;@media (width<=740px){max-width:300px}}.stage--pin-bottom-right[data-v-fb8c86cf]{bottom:1.25rem;right:1.25rem}.stage--pin-bottom-left[data-v-fb8c86cf]{bottom:1.25rem;left:1.25rem}.stage--pin-top-right[data-v-fb8c86cf]{top:1.25rem;right:1.25rem}.stage--pin-top-left[data-v-fb8c86cf]{top:1.25rem;left:1.25rem}.stage--pin-full-width[data-v-fb8c86cf]{width:100%;max-width:100%;box-shadow:none;border-radius:0;top:0;left:0;right:0}.stage__idle[data-v-fb8c86cf]{border-radius:var(--mvp-radius,12px);cursor:pointer;background:#111;justify-content:center;align-items:center;width:100%;display:flex;position:relative;overflow:hidden}.stage__idle-poster[data-v-fb8c86cf]{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.stage__idle-scrim[data-v-fb8c86cf]{background:#00000073;transition:background .15s;position:absolute;inset:0}.stage__idle:hover .stage__idle-scrim[data-v-fb8c86cf]{background:#0000004d}.stage__idle-body[data-v-fb8c86cf]{text-align:center;flex-direction:column;align-items:center;gap:.75rem;padding:1rem;display:flex;position:relative}.stage__idle-btn[data-v-fb8c86cf]{backdrop-filter:blur(4px);color:#fff;background:#0009;border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;transition:transform .15s,background .15s;display:flex}.stage__idle:hover .stage__idle-btn[data-v-fb8c86cf]{background:#000c;transform:scale(1.1)}.stage__idle-btn svg[data-v-fb8c86cf]{width:32px;height:32px}.stage__idle-title[data-v-fb8c86cf]{color:#f1f5f9;text-shadow:0 1px 4px #000c;font-size:1rem;font-weight:600}.stage__idle-empty[data-v-fb8c86cf]{color:#64748b;font-size:.95rem}.placeholder[data-v-dbcb4f82]{width:100%}.placeholder__shell[data-v-dbcb4f82]{border-radius:var(--mvp-radius,12px);cursor:pointer;background:#111;position:relative;overflow:hidden}.placeholder__shell--portrait[data-v-dbcb4f82]{width:auto;max-height:75dvh;margin:0 auto}.placeholder__poster[data-v-dbcb4f82]{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.placeholder__scrim[data-v-dbcb4f82]{background:#00000059;transition:background .15s;position:absolute;inset:0}.placeholder__shell:hover .placeholder__scrim[data-v-dbcb4f82]{background:#00000026}.placeholder__btn-wrap[data-v-dbcb4f82]{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.placeholder__btn-wrap[data-v-dbcb4f82]>*{pointer-events:auto}.placeholder__footer[data-v-dbcb4f82]{pointer-events:none;background:linear-gradient(#0000 0%,#000c 100%);padding:1.5rem .75rem .6rem;position:absolute;bottom:0;left:0;right:0}.placeholder__title[data-v-dbcb4f82]{color:#f1f5f9;white-space:nowrap;text-overflow:ellipsis;text-shadow:0 1px 3px #0009;font-size:.8rem;font-weight:600;overflow:hidden}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@munsonlabs/video-player",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "dist"