@glitchlab/vue-video-player 1.4.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +228 -21
  2. package/dist/HLSPlayer.vue.d.ts +6 -0
  3. package/dist/HLSPlayer.vue.d.ts.map +1 -1
  4. package/dist/VideoPlayer.vue.d.ts +30 -1
  5. package/dist/VideoPlayer.vue.d.ts.map +1 -1
  6. package/dist/components/ControlBar.vue.d.ts +58 -0
  7. package/dist/components/ControlBar.vue.d.ts.map +1 -1
  8. package/dist/components/{IconQuality.vue.d.ts → IconAlert.vue.d.ts} +1 -1
  9. package/dist/components/IconAlert.vue.d.ts.map +1 -0
  10. package/dist/components/IconCheck.vue.d.ts +16 -0
  11. package/dist/components/IconCheck.vue.d.ts.map +1 -0
  12. package/dist/components/IconChevronRight.vue.d.ts +16 -0
  13. package/dist/components/IconChevronRight.vue.d.ts.map +1 -0
  14. package/dist/components/IconGear.vue.d.ts +16 -0
  15. package/dist/components/IconGear.vue.d.ts.map +1 -0
  16. package/dist/components/IconNext.vue.d.ts +16 -0
  17. package/dist/components/IconNext.vue.d.ts.map +1 -0
  18. package/dist/components/IconPrev.vue.d.ts +16 -0
  19. package/dist/components/IconPrev.vue.d.ts.map +1 -0
  20. package/dist/components/IconRefresh.vue.d.ts +16 -0
  21. package/dist/components/{IconQuality.vue.d.ts.map → IconRefresh.vue.d.ts.map} +1 -1
  22. package/dist/components/SettingsMenu.vue.d.ts +61 -0
  23. package/dist/components/SettingsMenu.vue.d.ts.map +1 -0
  24. package/dist/index.cjs +3 -1
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.d.ts +4 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.mjs +1869 -1058
  29. package/dist/index.mjs.map +1 -1
  30. package/dist/style.css +1 -1
  31. package/dist/utils/caption-style.d.ts +17 -0
  32. package/dist/utils/caption-style.d.ts.map +1 -0
  33. package/dist/utils/chapters.d.ts +33 -0
  34. package/dist/utils/chapters.d.ts.map +1 -0
  35. package/dist/utils/preferences.d.ts +26 -0
  36. package/dist/utils/preferences.d.ts.map +1 -0
  37. package/dist/utils/theme.d.ts +15 -0
  38. package/dist/utils/theme.d.ts.map +1 -0
  39. package/dist/utils/thumbnails.d.ts +37 -0
  40. package/dist/utils/thumbnails.d.ts.map +1 -0
  41. package/dist/utils/types.d.ts +95 -1
  42. package/dist/utils/types.d.ts.map +1 -1
  43. package/package.json +1 -1
package/README.md CHANGED
@@ -15,16 +15,28 @@ A lightweight, HLS-capable Vue 3 video player with a polished overlay UI, device
15
15
 
16
16
  - **HLS streaming** via `hls.js` with automatic native fallback (Safari)
17
17
  - **YouTube support** — pass a YouTube URL and it embeds automatically, no extra config
18
- - **Custom control bar** (default) — play/seek/time/speed/quality/captions/volume/PiP/fullscreen, consistent across every browser and OS. Or use `"native"` controls, or none.
18
+ - **Custom control bar** (default) — a clean YouTube-style layout: full-width seek bar, playback controls on the left, utilities on the right. Or use `"native"` controls, or none.
19
+ - **Settings menu** — one gear button with a two-level menu for speed, quality, subtitles and audio track
20
+ - **Thumbnail seek preview** — hover the seek bar to see a frame preview from a WebVTT storyboard sprite
21
+ - **Chapters** — named timeline segments with tick marks on the seek bar, from a WebVTT file or an inline array
22
+ - **Playlist** — play a list of videos in sequence with auto-advance and prev/next buttons
19
23
  - **Quality selector** — `Auto` + per-resolution switching for multi-rendition HLS streams
20
24
  - **Audio-track switcher** — pick between multiple audio tracks (e.g. languages) when the stream provides them
21
- - **Captions** — `<track>` subtitles/captions with an in-bar menu
22
- - **Keyboard shortcuts** — space, arrows, `M`, `F`, `P`
25
+ - **Captions** — `<track>` subtitles/captions, with optional cue styling (font size, colors, background)
26
+ - **Live stream UX** — a LIVE badge for live HLS, with click-to-jump-to-edge
27
+ - **Mini-player** — floats to a viewport corner when scrolled out of view while playing
28
+ - **Ambient mode** — an optional soft, blurred color glow behind the player
29
+ - **Loading & error states** — a buffering spinner and a styled error overlay with a retry button
30
+ - **Event emits** — `play`, `pause`, `ended`, `time-update`, `seeked`, `volume-change`, `milestone`, `error`
31
+ - **Persisted preferences** — opt-in volume, speed and resume-position memory via `localStorage`
32
+ - **Theming** — rebrand with a `theme` prop (accent color, radius) or `--gvp-*` CSS variables
33
+ - **Keyboard shortcuts** + double-click to toggle fullscreen
34
+ - **Accessible** — focus rings, ARIA on every control, screen-reader announcements, `prefers-reduced-motion`
23
35
  - **Nuxt 3 module** — `modules: ["@glitchlab/vue-video-player/nuxt"]` and you're done
24
36
  - **Scoped CSS, no preflight** — all styles live under `.gvp-root`. No `*` resets, no theme tokens leaked into your design system
25
37
  - **Device-mode toggle** — flip between desktop (16:9) and mobile (9:16) presets
26
38
  - **Hover-to-play** with safe play/pause race handling
27
- - Lightweight: ~2 KB CSS + ~13 KB JS gzipped (hls.js is a peer dependency, loaded once)
39
+ - Lightweight: ~3.5 KB CSS + ~19 KB JS gzipped (hls.js is a peer dependency, loaded once)
28
40
  - Fully typed; SSR-safe
29
41
 
30
42
  ---
@@ -95,8 +107,13 @@ Then use the component anywhere — no manual import required:
95
107
 
96
108
  | Prop | Type | Default | Description |
97
109
  |---------------------|---------------------------------------------------|-----------------------------------------|------------------------------------------------------------------------------------------|
98
- | `src` | `string` | — | **Required.** Video URL. `.m3u8` is routed through HLS automatically. |
110
+ | `src` | `string` | — | Video URL. `.m3u8` is routed through HLS automatically. Optional when `playlist` is set. |
99
111
  | `poster` | `string` | — | Poster image shown before playback starts. |
112
+ | `playlist` | `PlaylistItem[]` | — | A list of videos to play in sequence. Auto-advances on end; prev/next buttons appear. Takes precedence over `src`. See [Playlist](#playlist). |
113
+ | `defaultIndex` | `number` | `0` | Index of the playlist item to start on. |
114
+ | `autoAdvance` | `boolean` | `true` | Auto-advance to the next playlist item when one ends. |
115
+ | `thumbnails` | `string` | — | URL of a WebVTT storyboard for seek-bar thumbnail previews. See [Thumbnails](#thumbnail-seek-preview). |
116
+ | `chapters` | `string \| Chapter[]` | — | WebVTT chapters URL, or an inline array of `{ start, title }`. See [Chapters](#chapters). |
100
117
  | `showDeviceToggle` | `boolean` | `true` | Show the desktop/mobile toggle pill in the top-left. |
101
118
  | `defaultDevice` | `"desktop" \| "mobile"` | `"desktop"` | Initial device mode. |
102
119
  | `hoverPlay` | `boolean` | `false` | Start playback on mouse-enter, pause on mouse-leave. |
@@ -111,14 +128,27 @@ Then use the component anywhere — no manual import required:
111
128
  | `aspectRatio` | `{ desktop?: AspectRatio; mobile?: AspectRatio }` | `{ desktop: "16/9", mobile: "9/16" }` | Aspect ratio per device mode. `AspectRatio` is `` `${number}/${number}` ``. |
112
129
  | `hlsConfig` | `Hls.HlsConfig` | — | Optional hls.js config. Use a stable reference (e.g. `shallowRef`) to avoid HLS rebuilds.|
113
130
  | `isHls` | `boolean` | `false` | Force HLS routing even when the URL doesn't end in `.m3u8`. |
131
+ | `theme` | `PlayerTheme` | — | `{ accent?, radius? }` — rebrand via CSS variables. See [Theming](#theming). |
132
+ | `captionStyle` | `CaptionStyle` | — | `{ fontSize?, textColor?, backgroundColor?, backgroundOpacity? }` — style caption cues. |
133
+ | `miniPlayer` | `boolean` | `false` | Float to a viewport corner when scrolled out of view while playing. See [Mini-player](#mini-player). |
134
+ | `miniPlayerPosition`| `"bottom-right" \| "bottom-left" \| "top-right" \| "top-left"` | `"bottom-right"` | Corner the mini-player docks to. |
135
+ | `ambientMode` | `boolean` | `false` | Show a soft, blurred color glow behind the player. See [Ambient mode](#ambient-mode). |
136
+ | `persistKey` | `string` | — | When set, persists volume, speed and resume position to `localStorage` under this key. |
114
137
 
115
138
  ## Events
116
139
 
117
- | Event | Payload | Description |
118
- |---------|---------|----------------------------------------------------------------------|
119
- | `close` | — | Emitted when the close button is clicked. Requires `closable=true`. |
120
- | `play` | — | Emitted when playback starts. |
121
- | `pause` | — | Emitted when playback pauses. |
140
+ | Event | Payload | Description |
141
+ |-------------------|-------------------------------|----------------------------------------------------------------------|
142
+ | `close` | — | Emitted when the close button is clicked. Requires `closable=true`. |
143
+ | `play` | — | Emitted when playback starts or resumes. |
144
+ | `pause` | — | Emitted when playback pauses. |
145
+ | `ended` | — | Emitted when the current video reaches its end. |
146
+ | `time-update` | `(currentTime, duration)` | Emitted on every `timeupdate` (~4×/sec); times in seconds. |
147
+ | `seeked` | `(currentTime)` | Emitted after a seek completes, with the new time in seconds. |
148
+ | `volume-change` | `(volume, muted)` | Emitted when volume or mute state changes. |
149
+ | `milestone` | `(percent)` | Emitted once when watch progress crosses 25%, 50%, 75% and 100%. |
150
+ | `error` | — | Emitted when the underlying media element reports an error. |
151
+ | `playlist-change` | `(index, item)` | Emitted when the active playlist item changes. |
122
152
 
123
153
  ## Slots
124
154
 
@@ -146,19 +176,14 @@ The branded control bar is **on by default** — it looks and behaves the same a
146
176
  <VueVideoPlayer src="/videos/movie.m3u8" :controls="false" />
147
177
  ```
148
178
 
149
- The bar includes, left to right:
179
+ The bar uses a YouTube-style layout — a **full-width seek bar** on top, then a button row:
150
180
 
151
- - **Play / pause**
152
- - **Seek bar** with a buffered indicator (live scrub — the video previews as you drag)
153
- - **Time** — `current / duration`
154
- - **Playback speed** — `0.5×` to `2×` menu
155
- - **Quality** — resolution selector (`Auto` + each height) — appears only for HLS streams with more than one quality level
156
- - **Captions** — appears only when the source has `<track>` subtitle/caption tracks
157
- - **Volume** — mute toggle + slider (slider expands on hover)
158
- - **Picture-in-Picture** — appears only where the browser supports it
159
- - **Fullscreen**
181
+ - **Left group** — play/pause, prev/next (when a playlist is active), volume (mute toggle + slider that expands on hover), and the time / LIVE badge
182
+ - **Right group** — the settings gear, Picture-in-Picture, and fullscreen
160
183
 
161
- It **auto-hides 3 seconds** after the last interaction during playback and reappears on mouse move; it stays visible while paused. Clicking anywhere on the video toggles play/pause.
184
+ The **settings gear** opens a two-level menu grouping **playback speed**, **quality** (resolution), **subtitles** and **audio track**. Rows for unavailable settings (e.g. no extra audio tracks) are hidden, so the menu never shows a dead option.
185
+
186
+ It **auto-hides 3 seconds** after the last interaction during playback and reappears on mouse move; it stays visible while paused. **Single-click** the video toggles play/pause; **double-click** toggles fullscreen.
162
187
 
163
188
  ### Keyboard shortcuts
164
189
 
@@ -173,6 +198,8 @@ When the player has focus (`controls="custom"`):
173
198
  | `F` | Fullscreen toggle |
174
199
  | `P` | Picture-in-Picture |
175
200
 
201
+ Double-clicking the video surface also toggles fullscreen.
202
+
176
203
  ### Platform notes
177
204
 
178
205
  The bar degrades gracefully where a platform can't support a control:
@@ -194,6 +221,186 @@ Every part has a `.gvp-*` class hook — override what you need:
194
221
 
195
222
  ---
196
223
 
224
+ ## Thumbnail seek preview
225
+
226
+ Hover the seek bar to see a frame preview. Pass `thumbnails` a URL to a **WebVTT storyboard** file — the format YouTube and Vimeo use. Each cue maps a time range to a region of a sprite image:
227
+
228
+ ```
229
+ WEBVTT
230
+
231
+ 00:00:00.000 --> 00:00:05.000
232
+ storyboard.jpg#xywh=0,0,160,90
233
+
234
+ 00:00:05.000 --> 00:00:10.000
235
+ storyboard.jpg#xywh=160,0,160,90
236
+ ```
237
+
238
+ ```vue
239
+ <VueVideoPlayer src="/videos/movie.m3u8" thumbnails="/videos/storyboard.vtt" />
240
+ ```
241
+
242
+ The `#xywh=x,y,w,h` fragment crops a tile out of the sprite; relative image paths resolve against the VTT's own URL. A cue with no `#xywh` uses the whole image. You can generate a storyboard from a video with `ffmpeg`:
243
+
244
+ ```bash
245
+ ffmpeg -i video.mp4 -vf "fps=1/5,scale=160:90,tile=5x100" storyboard.jpg
246
+ ```
247
+
248
+ Only used with the custom control bar.
249
+
250
+ ---
251
+
252
+ ## Chapters
253
+
254
+ Segment the timeline into named chapters. They add tick marks to the seek bar and show the chapter title in the hover preview. Pass either a WebVTT chapters URL or an inline array:
255
+
256
+ ```vue
257
+ <!-- Inline -->
258
+ <VueVideoPlayer
259
+ src="/videos/tutorial.m3u8"
260
+ :chapters="[
261
+ { start: 0, title: 'Introduction' },
262
+ { start: 150, title: 'Getting started' },
263
+ { start: 600, title: 'Advanced topics' },
264
+ ]"
265
+ />
266
+
267
+ <!-- From a WebVTT chapters file -->
268
+ <VueVideoPlayer src="/videos/tutorial.m3u8" chapters="/videos/chapters.vtt" />
269
+ ```
270
+
271
+ Inline items may omit `end` — it's filled from the next chapter's `start` (or the video duration). Only used with the custom control bar.
272
+
273
+ ---
274
+
275
+ ## Playlist
276
+
277
+ Pass `playlist` an array of items to play videos in sequence. The player auto-advances when one ends and shows prev/next buttons in the control bar. Each item can carry its own `poster`, `thumbnails` and `chapters`:
278
+
279
+ ```vue
280
+ <VueVideoPlayer
281
+ :playlist="[
282
+ { src: '/videos/ep1.m3u8', title: 'Episode 1', thumbnails: '/videos/ep1.vtt' },
283
+ { src: '/videos/ep2.m3u8', title: 'Episode 2' },
284
+ { src: '/videos/ep3.m3u8', title: 'Episode 3' },
285
+ ]"
286
+ :default-index="0"
287
+ auto-advance
288
+ @playlist-change="(index, item) => console.log('Now playing', item.title)"
289
+ />
290
+ ```
291
+
292
+ `playlist` takes precedence over `src`. Set `:auto-advance="false"` to require a manual next click. `PlaylistItem` is exported for typing.
293
+
294
+ ---
295
+
296
+ ## Event emits
297
+
298
+ Wire the player's playback events into your own analytics or UI without a separate timer:
299
+
300
+ ```vue
301
+ <VueVideoPlayer
302
+ src="/videos/movie.m3u8"
303
+ @play="track('video_play')"
304
+ @pause="track('video_pause')"
305
+ @ended="track('video_complete')"
306
+ @time-update="(time, duration) => (progress = time / duration)"
307
+ @seeked="(time) => track('video_seek', { time })"
308
+ @volume-change="(volume, muted) => console.log(volume, muted)"
309
+ @milestone="(percent) => track(`watched_${percent}`)"
310
+ @error="showRetry()"
311
+ />
312
+ ```
313
+
314
+ `milestone` fires exactly once each as watch progress crosses 25%, 50%, 75% and 100% — handy for completion analytics. Milestone tracking resets per source (including playlist advances).
315
+
316
+ ---
317
+
318
+ ## Theming
319
+
320
+ Rebrand the player without overriding component classes. Pass a `theme` prop — it maps to CSS custom properties on the player root:
321
+
322
+ ```vue
323
+ <VueVideoPlayer
324
+ src="/videos/movie.m3u8"
325
+ :theme="{ accent: '#e11d48', radius: '0.5rem' }"
326
+ />
327
+ ```
328
+
329
+ | Field | Maps to | Description |
330
+ |----------|--------------------|------------------------------------------------------|
331
+ | `accent` | `--gvp-accent` | Seek progress, play button, active states. Any CSS color. |
332
+ | `radius` | `--gvp-radius` | Corner radius of the player frame. |
333
+
334
+ For deeper control, set the `--gvp-*` variables (or override `.gvp-*` classes) directly in your own CSS:
335
+
336
+ ```css
337
+ .gvp-root { --gvp-accent-rgb: 225 29 72; --gvp-radius: 0.5rem; }
338
+ ```
339
+
340
+ ---
341
+
342
+ ## Mini-player
343
+
344
+ Set `miniPlayer` and the player floats to a corner of the viewport when it scrolls out of view **while playing** — so viewers keep watching as they read the rest of the page. It returns when scrolled back; a close button dismisses it.
345
+
346
+ ```vue
347
+ <VueVideoPlayer
348
+ src="/videos/movie.m3u8"
349
+ miniPlayer
350
+ miniPlayerPosition="bottom-right"
351
+ />
352
+ ```
353
+
354
+ ---
355
+
356
+ ## Ambient mode
357
+
358
+ `ambientMode` adds a soft, blurred color glow behind the player that samples the current video frame (YouTube's "ambient mode"). Give the player some surrounding padding so the glow is visible.
359
+
360
+ ```vue
361
+ <VueVideoPlayer src="/videos/movie.m3u8" ambientMode />
362
+ ```
363
+
364
+ ---
365
+
366
+ ## Live streams
367
+
368
+ Live HLS streams are detected automatically (via hls.js's live flag). The control bar shows a **LIVE badge** instead of a duration — red and pulsing at the live edge, dimmed when behind. Clicking the badge jumps back to the live edge. No prop needed.
369
+
370
+ ---
371
+
372
+ ## Persisted preferences
373
+
374
+ Pass a `persistKey` and the player remembers volume, mute, playback speed and the **resume position** across reloads and revisits, via `localStorage`:
375
+
376
+ ```vue
377
+ <VueVideoPlayer src="/videos/course-1.m3u8" persistKey="my-course" />
378
+ ```
379
+
380
+ Resume position is tracked per source URL, so one key can resume many videos independently. Omit `persistKey` to disable persistence entirely.
381
+
382
+ ---
383
+
384
+ ## Caption styling
385
+
386
+ Style subtitle/caption cue text with `captionStyle` — applied via the `::cue` pseudo-element:
387
+
388
+ ```vue
389
+ <VueVideoPlayer
390
+ src="/videos/talk.m3u8"
391
+ :caption-style="{
392
+ fontSize: '1.4em',
393
+ textColor: '#fde047',
394
+ backgroundColor: '#000000',
395
+ backgroundOpacity: 0.75,
396
+ }"
397
+ >
398
+ <track kind="subtitles" src="/subs/en.vtt" srclang="en" label="English" default />
399
+ </VueVideoPlayer>
400
+ ```
401
+
402
+ ---
403
+
197
404
  ## YouTube URLs
198
405
 
199
406
  Pass any common YouTube URL as `src` and the player swaps the `<video>` element for a privacy-enhanced (`youtube-nocookie.com`) embed inside the same styled frame — no extra prop needed:
@@ -35,6 +35,9 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
35
35
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
36
36
  play: () => void;
37
37
  pause: () => void;
38
+ ended: () => void;
39
+ "fatal-error": () => void;
40
+ "live-change": (isLive: boolean) => void;
38
41
  "audio-tracks": (tracks: AudioTrackInfo[]) => void;
39
42
  "quality-levels": (levels: QualityLevelInfo[]) => void;
40
43
  "current-level": (index: number) => void;
@@ -66,6 +69,9 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
66
69
  }>>> & Readonly<{
67
70
  onPlay?: (() => any) | undefined;
68
71
  onPause?: (() => any) | undefined;
72
+ onEnded?: (() => any) | undefined;
73
+ "onFatal-error"?: (() => any) | undefined;
74
+ "onLive-change"?: ((isLive: boolean) => any) | undefined;
69
75
  "onAudio-tracks"?: ((tracks: AudioTrackInfo[]) => any) | undefined;
70
76
  "onQuality-levels"?: ((levels: QualityLevelInfo[]) => any) | undefined;
71
77
  "onCurrent-level"?: ((index: number) => any) | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"HLSPlayer.vue.d.ts","sourceRoot":"","sources":["../src/HLSPlayer.vue"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAqOlF,iBAAS,cAAc;qBAoDO,GAAG;EAGhC;AA2BD,QAAA,MAAM,eAAe;SAOZ,MAAM;gBACC,SAAS;YACb,OAAO;YACP,OAAO;WACR,OAAO;eACH,OAAO;eACP,OAAO;kBACJ,OAAO;cACX,MAAM;aACP,MAAM;YACP,MAAM;IACd,kFAAkF;sBAChE,MAAM;IACxB,oEAAoE;wBAChD,MAAM;;;;;;;;;;;;;;;;;;;SAdrB,MAAM;gBACC,SAAS;YACb,OAAO;YACP,OAAO;WACR,OAAO;eACH,OAAO;eACP,OAAO;kBACJ,OAAO;cACX,MAAM;aACP,MAAM;YACP,MAAM;IACd,kFAAkF;sBAChE,MAAM;IACxB,oEAAoE;wBAChD,MAAM;;;;;;;;;;;;;;;;;WAXlB,OAAO;UACR,OAAO;cACH,OAAO;cACP,OAAO;iBACJ,OAAO;aACX,MAAM;qBAIE,MAAM;uBAEJ,MAAM;4EAG5B,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAAvG,wBAAwG;AACxG,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC;AAC9M,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAE1B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACxE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KACb,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AACN,KAAK,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC;AACxD,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAAE,QAAO;QAClD,MAAM,EAAE,CAAC,CAAC;KACT,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"HLSPlayer.vue.d.ts","sourceRoot":"","sources":["../src/HLSPlayer.vue"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAyPlF,iBAAS,cAAc;qBA2DO,GAAG;EAGhC;AA2BD,QAAA,MAAM,eAAe;SAOZ,MAAM;gBACC,SAAS;YACb,OAAO;YACP,OAAO;WACR,OAAO;eACH,OAAO;eACP,OAAO;kBACJ,OAAO;cACX,MAAM;aACP,MAAM;YACP,MAAM;IACd,kFAAkF;sBAChE,MAAM;IACxB,oEAAoE;wBAChD,MAAM;;;;;;;;;;;;;;;;;;;;;;SAdrB,MAAM;gBACC,SAAS;YACb,OAAO;YACP,OAAO;WACR,OAAO;eACH,OAAO;eACP,OAAO;kBACJ,OAAO;cACX,MAAM;aACP,MAAM;YACP,MAAM;IACd,kFAAkF;sBAChE,MAAM;IACxB,oEAAoE;wBAChD,MAAM;;;;;;;;;;;;;;;;;;;;WAXlB,OAAO;UACR,OAAO;cACH,OAAO;cACP,OAAO;iBACJ,OAAO;aACX,MAAM;qBAIE,MAAM;uBAEJ,MAAM;4EAG5B,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAAvG,wBAAwG;AACxG,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC;AAC9M,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAE1B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACxE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KACb,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AACN,KAAK,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC;AACxD,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAAE,QAAO;QAClD,MAAM,EAAE,CAAC,CAAC;KACT,CAAA;CAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- import { DeviceMode, VideoPlayerProps } from './utils/types';
1
+ import { DeviceMode, PlaylistItem, VideoPlayerProps } from './utils/types';
2
2
 
3
3
  declare function __VLS_template(): {
4
4
  default?(_: {}): any;
@@ -15,11 +15,23 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
15
15
  controls: boolean;
16
16
  autoPlay: boolean;
17
17
  closable: boolean;
18
+ defaultIndex: number;
19
+ autoAdvance: boolean;
20
+ miniPlayer: boolean;
21
+ miniPlayerPosition: string;
22
+ ambientMode: boolean;
18
23
  class: string;
19
24
  }>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
20
25
  play: () => void;
21
26
  pause: () => void;
27
+ ended: () => void;
22
28
  close: () => void;
29
+ error: () => void;
30
+ seeked: (currentTime: number) => void;
31
+ "time-update": (currentTime: number, duration: number) => void;
32
+ "volume-change": (volume: number, muted: boolean) => void;
33
+ milestone: (percent: 100 | 25 | 50 | 75) => void;
34
+ "playlist-change": (index: number, item: PlaylistItem) => void;
23
35
  }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<VideoPlayerProps & {
24
36
  class?: string;
25
37
  closable?: boolean;
@@ -32,20 +44,37 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
32
44
  controls: boolean;
33
45
  autoPlay: boolean;
34
46
  closable: boolean;
47
+ defaultIndex: number;
48
+ autoAdvance: boolean;
49
+ miniPlayer: boolean;
50
+ miniPlayerPosition: string;
51
+ ambientMode: boolean;
35
52
  class: string;
36
53
  }>>> & Readonly<{
37
54
  onPlay?: (() => any) | undefined;
38
55
  onPause?: (() => any) | undefined;
56
+ onEnded?: (() => any) | undefined;
39
57
  onClose?: (() => any) | undefined;
58
+ onError?: (() => any) | undefined;
59
+ onSeeked?: ((currentTime: number) => any) | undefined;
60
+ "onTime-update"?: ((currentTime: number, duration: number) => any) | undefined;
61
+ "onVolume-change"?: ((volume: number, muted: boolean) => any) | undefined;
62
+ onMilestone?: ((percent: 100 | 25 | 50 | 75) => any) | undefined;
63
+ "onPlaylist-change"?: ((index: number, item: PlaylistItem) => any) | undefined;
40
64
  }>, {
41
65
  muted: boolean;
42
66
  loop: boolean;
43
67
  controls: boolean | "custom" | "native";
44
68
  autoPlay: boolean;
45
69
  class: string;
70
+ defaultIndex: number;
71
+ autoAdvance: boolean;
46
72
  showDeviceToggle: boolean;
47
73
  defaultDevice: DeviceMode;
48
74
  hoverPlay: boolean;
75
+ miniPlayer: boolean;
76
+ miniPlayerPosition: "bottom-right" | "bottom-left" | "top-right" | "top-left";
77
+ ambientMode: boolean;
49
78
  closable: boolean;
50
79
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
51
80
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
@@ -1 +1 @@
1
- {"version":3,"file":"VideoPlayer.vue.d.ts","sourceRoot":"","sources":["../src/VideoPlayer.vue"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA4PlE,iBAAS,cAAc;qBAqcO,GAAG;EAGhC;AAkDD,QAAA,MAAM,eAAe;YAKsE,MAAM;eAAa,OAAO;;;;;;;;;;;;;;;;YAA1B,MAAM;eAAa,OAAO;;;;;;;;;;;;;;;;;;;;WAA1B,MAAM;;;;cAAa,OAAO;4EAEnH,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAAvG,wBAAwG;AACxG,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC;AAC9M,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAE1B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACxE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KACb,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AACN,KAAK,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC;AACxD,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAAE,QAAO;QAClD,MAAM,EAAE,CAAC,CAAC;KACT,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"VideoPlayer.vue.d.ts","sourceRoot":"","sources":["../src/VideoPlayer.vue"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAilBhF,iBAAS,cAAc;qBAgrBO,GAAG;EAGhC;AA4ED,QAAA,MAAM,eAAe;YAKsE,MAAM;eAAa,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAA1B,MAAM;eAAa,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAA1B,MAAM;;;;;;;;;cAAa,OAAO;4EAEnH,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAAvG,wBAAwG;AACxG,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC;AAC9M,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAE1B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACxE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KACb,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AACN,KAAK,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC;AACxD,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAAE,QAAO;QAClD,MAAM,EAAE,CAAC,CAAC;KACT,CAAA;CAAE,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { QualityLevelInfo } from '../utils/quality-levels';
2
+ import { AudioTrackInfo } from '../utils/audio-tracks';
2
3
 
3
4
  declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
4
5
  video: HTMLVideoElement | null;
@@ -11,12 +12,38 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
11
12
  currentLevel?: number;
12
13
  /** Selected level: -1 = Auto, >=0 pins a level. */
13
14
  selectedLevel?: number;
15
+ /** URL of a WebVTT storyboard for seek-bar thumbnail previews. */
16
+ thumbnails?: string;
17
+ /** Timeline chapters: a WebVTT chapters URL or an inline array. */
18
+ chapters?: string | Array<{
19
+ start: number;
20
+ end?: number;
21
+ title: string;
22
+ }>;
23
+ /** Whether a previous playlist item exists. Shows the prev button. */
24
+ hasPrev?: boolean;
25
+ /** Whether a next playlist item exists. Shows the next button. */
26
+ hasNext?: boolean;
27
+ /** Whether the source is a live stream (from hls.js's live flag). */
28
+ isLive?: boolean;
29
+ /** Available audio tracks (empty / single hides the audio submenu). */
30
+ audioTracks?: AudioTrackInfo[];
31
+ /** Index of the active audio track, or -1 for the source default. */
32
+ audioTrackIndex?: number;
14
33
  }>, {
15
34
  qualityLevels: () => never[];
16
35
  currentLevel: number;
17
36
  selectedLevel: number;
37
+ hasPrev: boolean;
38
+ hasNext: boolean;
39
+ isLive: boolean;
40
+ audioTracks: () => never[];
41
+ audioTrackIndex: number;
18
42
  }>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
19
43
  "select-level": (index: number) => void;
44
+ "select-audio-track": (index: number) => void;
45
+ prev: () => void;
46
+ next: () => void;
20
47
  }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
21
48
  video: HTMLVideoElement | null;
22
49
  isPlaying: boolean;
@@ -28,16 +55,47 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
28
55
  currentLevel?: number;
29
56
  /** Selected level: -1 = Auto, >=0 pins a level. */
30
57
  selectedLevel?: number;
58
+ /** URL of a WebVTT storyboard for seek-bar thumbnail previews. */
59
+ thumbnails?: string;
60
+ /** Timeline chapters: a WebVTT chapters URL or an inline array. */
61
+ chapters?: string | Array<{
62
+ start: number;
63
+ end?: number;
64
+ title: string;
65
+ }>;
66
+ /** Whether a previous playlist item exists. Shows the prev button. */
67
+ hasPrev?: boolean;
68
+ /** Whether a next playlist item exists. Shows the next button. */
69
+ hasNext?: boolean;
70
+ /** Whether the source is a live stream (from hls.js's live flag). */
71
+ isLive?: boolean;
72
+ /** Available audio tracks (empty / single hides the audio submenu). */
73
+ audioTracks?: AudioTrackInfo[];
74
+ /** Index of the active audio track, or -1 for the source default. */
75
+ audioTrackIndex?: number;
31
76
  }>, {
32
77
  qualityLevels: () => never[];
33
78
  currentLevel: number;
34
79
  selectedLevel: number;
80
+ hasPrev: boolean;
81
+ hasNext: boolean;
82
+ isLive: boolean;
83
+ audioTracks: () => never[];
84
+ audioTrackIndex: number;
35
85
  }>>> & Readonly<{
36
86
  "onSelect-level"?: ((index: number) => any) | undefined;
87
+ "onSelect-audio-track"?: ((index: number) => any) | undefined;
88
+ onPrev?: (() => any) | undefined;
89
+ onNext?: (() => any) | undefined;
37
90
  }>, {
91
+ audioTrackIndex: number;
38
92
  currentLevel: number;
93
+ audioTracks: AudioTrackInfo[];
39
94
  qualityLevels: QualityLevelInfo[];
40
95
  selectedLevel: number;
96
+ hasPrev: boolean;
97
+ hasNext: boolean;
98
+ isLive: boolean;
41
99
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
42
100
  export default _default;
43
101
  type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
@@ -1 +1 @@
1
- {"version":3,"file":"ControlBar.vue.d.ts","sourceRoot":"","sources":["../../src/components/ControlBar.vue"],"names":[],"mappings":"AAeA,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;;WA6iCnE,gBAAgB,GAAG,IAAI;eACnB,OAAO;eACP,WAAW,GAAG,IAAI;kBACf,MAAM,IAAI;IACxB,sDAAsD;oBACtC,gBAAgB,EAAE;IAClC,uEAAuE;mBACxD,MAAM;IACrB,mDAAmD;oBACnC,MAAM;;;;;;;;WATf,gBAAgB,GAAG,IAAI;eACnB,OAAO;eACP,WAAW,GAAG,IAAI;kBACf,MAAM,IAAI;IACxB,sDAAsD;oBACtC,gBAAgB,EAAE;IAClC,uEAAuE;mBACxD,MAAM;IACrB,mDAAmD;oBACnC,MAAM;;;;;;;;kBAFP,MAAM;mBAFL,gBAAgB,EAAE;mBAIlB,MAAM;;AAf1B,wBAkBG;AACH,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC;AAC9M,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAE1B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACxE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KACb,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AACN,KAAK,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"ControlBar.vue.d.ts","sourceRoot":"","sources":["../../src/components/ControlBar.vue"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;;WAs/BjD,gBAAgB,GAAG,IAAI;eACnB,OAAO;eACP,WAAW,GAAG,IAAI;kBACf,MAAM,IAAI;IACxB,sDAAsD;oBACtC,gBAAgB,EAAE;IAClC,uEAAuE;mBACxD,MAAM;IACrB,mDAAmD;oBACnC,MAAM;IACtB,kEAAkE;iBACrD,MAAM;IACnB,mEAAmE;eACxD,MAAM,GAAG,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACzE,sEAAsE;cAC5D,OAAO;IACjB,kEAAkE;cACxD,OAAO;IACjB,qEAAqE;aAC5D,OAAO;IAChB,uEAAuE;kBACzD,cAAc,EAAE;IAC9B,qEAAqE;sBACnD,MAAM;;;;;;;;;;;;;;;;WAvBjB,gBAAgB,GAAG,IAAI;eACnB,OAAO;eACP,WAAW,GAAG,IAAI;kBACf,MAAM,IAAI;IACxB,sDAAsD;oBACtC,gBAAgB,EAAE;IAClC,uEAAuE;mBACxD,MAAM;IACrB,mDAAmD;oBACnC,MAAM;IACtB,kEAAkE;iBACrD,MAAM;IACnB,mEAAmE;eACxD,MAAM,GAAG,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACzE,sEAAsE;cAC5D,OAAO;IACjB,kEAAkE;cACxD,OAAO;IACjB,qEAAqE;aAC5D,OAAO;IAChB,uEAAuE;kBACzD,cAAc,EAAE;IAC9B,qEAAqE;sBACnD,MAAM;;;;;;;;;;;;;;;;qBAAN,MAAM;kBAhBT,MAAM;iBAcP,cAAc,EAAE;mBAhBd,gBAAgB,EAAE;mBAIlB,MAAM;aAMZ,OAAO;aAEP,OAAO;YAER,OAAO;;AAzBpB,wBAgCG;AACH,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC;AAC9M,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAE1B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACxE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KACb,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AACN,KAAK,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
@@ -13,4 +13,4 @@ type __VLS_TypePropsToRuntimeProps<T> = {
13
13
  required: true;
14
14
  };
15
15
  };
16
- //# sourceMappingURL=IconQuality.vue.d.ts.map
16
+ //# sourceMappingURL=IconAlert.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconAlert.vue.d.ts","sourceRoot":"","sources":["../../src/components/IconAlert.vue"],"names":[],"mappings":";YA+DqD,MAAM;;YAAN,MAAM;;AA3D3D,wBA6DI;AAAA,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACrE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
2
+ class?: string;
3
+ }>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
4
+ class?: string;
5
+ }>>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
6
+ export default _default;
7
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
8
+ type __VLS_TypePropsToRuntimeProps<T> = {
9
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
10
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
11
+ } : {
12
+ type: import('vue').PropType<T[K]>;
13
+ required: true;
14
+ };
15
+ };
16
+ //# sourceMappingURL=IconCheck.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconCheck.vue.d.ts","sourceRoot":"","sources":["../../src/components/IconCheck.vue"],"names":[],"mappings":";YA+DqD,MAAM;;YAAN,MAAM;;AA3D3D,wBA6DI;AAAA,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACrE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
2
+ class?: string;
3
+ }>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
4
+ class?: string;
5
+ }>>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
6
+ export default _default;
7
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
8
+ type __VLS_TypePropsToRuntimeProps<T> = {
9
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
10
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
11
+ } : {
12
+ type: import('vue').PropType<T[K]>;
13
+ required: true;
14
+ };
15
+ };
16
+ //# sourceMappingURL=IconChevronRight.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconChevronRight.vue.d.ts","sourceRoot":"","sources":["../../src/components/IconChevronRight.vue"],"names":[],"mappings":";YA+DqD,MAAM;;YAAN,MAAM;;AA3D3D,wBA6DI;AAAA,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACrE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
2
+ class?: string;
3
+ }>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
4
+ class?: string;
5
+ }>>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
6
+ export default _default;
7
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
8
+ type __VLS_TypePropsToRuntimeProps<T> = {
9
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
10
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
11
+ } : {
12
+ type: import('vue').PropType<T[K]>;
13
+ required: true;
14
+ };
15
+ };
16
+ //# sourceMappingURL=IconGear.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconGear.vue.d.ts","sourceRoot":"","sources":["../../src/components/IconGear.vue"],"names":[],"mappings":";YAuEqD,MAAM;;YAAN,MAAM;;AAnE3D,wBAqEI;AAAA,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACrE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
2
+ class?: string;
3
+ }>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
4
+ class?: string;
5
+ }>>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
6
+ export default _default;
7
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
8
+ type __VLS_TypePropsToRuntimeProps<T> = {
9
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
10
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
11
+ } : {
12
+ type: import('vue').PropType<T[K]>;
13
+ required: true;
14
+ };
15
+ };
16
+ //# sourceMappingURL=IconNext.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconNext.vue.d.ts","sourceRoot":"","sources":["../../src/components/IconNext.vue"],"names":[],"mappings":";YAuEqD,MAAM;;YAAN,MAAM;;AAnE3D,wBAqEI;AAAA,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACrE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
2
+ class?: string;
3
+ }>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
4
+ class?: string;
5
+ }>>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
6
+ export default _default;
7
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
8
+ type __VLS_TypePropsToRuntimeProps<T> = {
9
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
10
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
11
+ } : {
12
+ type: import('vue').PropType<T[K]>;
13
+ required: true;
14
+ };
15
+ };
16
+ //# sourceMappingURL=IconPrev.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconPrev.vue.d.ts","sourceRoot":"","sources":["../../src/components/IconPrev.vue"],"names":[],"mappings":";YAuEqD,MAAM;;YAAN,MAAM;;AAnE3D,wBAqEI;AAAA,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACrE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC"}