@videts/vide 0.8.0 → 0.9.3
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 +11 -11
- package/dist/chunk-2OVLZ27V.mjs +1 -0
- package/dist/chunk-3RDTWUHH.mjs +1 -0
- package/dist/chunk-6DWWYSH4.mjs +1 -0
- package/dist/chunk-G74QBLVV.mjs +1 -0
- package/dist/chunk-JRU2FKRB.mjs +2 -0
- package/dist/chunk-LPSJOF2I.mjs +2 -0
- package/dist/chunk-NA4C7W64.mjs +2 -0
- package/dist/chunk-UY5CGRNN.mjs +1 -0
- package/dist/chunk-VPH4JIJV.mjs +1 -0
- package/dist/chunk-WINCDUN5.mjs +1 -0
- package/dist/dash/index.d.ts +3 -9
- package/dist/dash/index.js +1 -0
- package/dist/dash/index.mjs +1 -2
- package/dist/drm/index.d.ts +4 -31
- package/dist/drm/index.js +1 -0
- package/dist/drm/index.mjs +1 -1
- package/dist/hls/index.d.ts +3 -9
- package/dist/hls/index.js +1 -0
- package/dist/hls/index.mjs +1 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -0
- package/dist/index.mjs +1 -1
- package/dist/omid/index.d.ts +2 -2
- package/dist/omid/index.js +2 -0
- package/dist/react/index.d.ts +240 -0
- package/dist/react/index.js +2 -0
- package/dist/react/index.mjs +2 -0
- package/dist/simid/index.d.ts +2 -2
- package/dist/simid/index.js +1 -0
- package/dist/ssai/index.d.ts +4 -40
- package/dist/ssai/index.js +1 -0
- package/dist/ssai/index.mjs +1 -1
- package/dist/svelte/DashPlugin.svelte +23 -0
- package/dist/svelte/DashPlugin.svelte.d.ts +4 -0
- package/dist/svelte/DrmPlugin.svelte +20 -0
- package/dist/svelte/DrmPlugin.svelte.d.ts +4 -0
- package/dist/svelte/HlsPlugin.svelte +23 -0
- package/dist/svelte/HlsPlugin.svelte.d.ts +4 -0
- package/dist/svelte/SsaiPlugin.svelte +23 -0
- package/dist/svelte/SsaiPlugin.svelte.d.ts +4 -0
- package/dist/svelte/VastPlugin.svelte +20 -0
- package/dist/svelte/VastPlugin.svelte.d.ts +4 -0
- package/dist/svelte/VideControls.svelte +22 -0
- package/dist/svelte/VideControls.svelte.d.ts +8 -0
- package/dist/svelte/VideUI.svelte +49 -0
- package/dist/svelte/VideUI.svelte.d.ts +9 -0
- package/dist/svelte/Video.svelte +31 -0
- package/dist/svelte/Video.svelte.d.ts +10 -0
- package/dist/svelte/VmapPlugin.svelte +20 -0
- package/dist/svelte/VmapPlugin.svelte.d.ts +4 -0
- package/dist/svelte/components/AdCountdown.svelte +37 -0
- package/dist/svelte/components/AdCountdown.svelte.d.ts +7 -0
- package/dist/svelte/components/AdLabel.svelte +26 -0
- package/dist/svelte/components/AdLabel.svelte.d.ts +8 -0
- package/dist/svelte/components/AdLearnMore.svelte +42 -0
- package/dist/svelte/components/AdLearnMore.svelte.d.ts +9 -0
- package/dist/svelte/components/AdOverlay.svelte +46 -0
- package/dist/svelte/components/AdOverlay.svelte.d.ts +8 -0
- package/dist/svelte/components/AdSkip.svelte +67 -0
- package/dist/svelte/components/AdSkip.svelte.d.ts +8 -0
- package/dist/svelte/components/BigPlayButton.svelte +46 -0
- package/dist/svelte/components/BigPlayButton.svelte.d.ts +8 -0
- package/dist/svelte/components/ClickPlay.svelte +76 -0
- package/dist/svelte/components/ClickPlay.svelte.d.ts +7 -0
- package/dist/svelte/components/ErrorDisplay.svelte +27 -0
- package/dist/svelte/components/ErrorDisplay.svelte.d.ts +6 -0
- package/dist/svelte/components/FullscreenButton.svelte +65 -0
- package/dist/svelte/components/FullscreenButton.svelte.d.ts +9 -0
- package/dist/svelte/components/Loader.svelte +11 -0
- package/dist/svelte/components/Loader.svelte.d.ts +6 -0
- package/dist/svelte/components/MuteButton.svelte +57 -0
- package/dist/svelte/components/MuteButton.svelte.d.ts +8 -0
- package/dist/svelte/components/PlayButton.svelte +63 -0
- package/dist/svelte/components/PlayButton.svelte.d.ts +8 -0
- package/dist/svelte/components/Poster.svelte +13 -0
- package/dist/svelte/components/Poster.svelte.d.ts +8 -0
- package/dist/svelte/components/Progress.svelte +101 -0
- package/dist/svelte/components/Progress.svelte.d.ts +6 -0
- package/dist/svelte/components/TimeDisplay.svelte +33 -0
- package/dist/svelte/components/TimeDisplay.svelte.d.ts +7 -0
- package/dist/svelte/components/Volume.svelte +117 -0
- package/dist/svelte/components/Volume.svelte.d.ts +8 -0
- package/dist/svelte/context.d.ts +6 -0
- package/dist/svelte/context.js +10 -0
- package/dist/svelte/create-vide-player.svelte.d.ts +2 -0
- package/dist/svelte/create-vide-player.svelte.js +22 -0
- package/dist/svelte/helpers.d.ts +17 -0
- package/dist/svelte/helpers.js +31 -0
- package/dist/svelte/icons/IconFullscreenEnter.svelte +3 -0
- package/dist/svelte/icons/IconFullscreenEnter.svelte.d.ts +26 -0
- package/dist/svelte/icons/IconFullscreenExit.svelte +3 -0
- package/dist/svelte/icons/IconFullscreenExit.svelte.d.ts +26 -0
- package/dist/svelte/icons/IconPause.svelte +3 -0
- package/dist/svelte/icons/IconPause.svelte.d.ts +26 -0
- package/dist/svelte/icons/IconPlay.svelte +3 -0
- package/dist/svelte/icons/IconPlay.svelte.d.ts +26 -0
- package/dist/svelte/icons/IconVolumeHigh.svelte +3 -0
- package/dist/svelte/icons/IconVolumeHigh.svelte.d.ts +26 -0
- package/dist/svelte/icons/IconVolumeLow.svelte +3 -0
- package/dist/svelte/icons/IconVolumeLow.svelte.d.ts +26 -0
- package/dist/svelte/icons/IconVolumeMute.svelte +3 -0
- package/dist/svelte/icons/IconVolumeMute.svelte.d.ts +26 -0
- package/dist/svelte/index.d.ts +42 -0
- package/dist/svelte/index.js +39 -0
- package/dist/svelte/use-ad-state.svelte.d.ts +7 -0
- package/dist/svelte/use-ad-state.svelte.js +40 -0
- package/dist/svelte/use-autohide.svelte.d.ts +2 -0
- package/dist/svelte/use-autohide.svelte.js +68 -0
- package/dist/svelte/use-keyboard.svelte.d.ts +7 -0
- package/dist/svelte/use-keyboard.svelte.js +96 -0
- package/dist/svelte/use-plugin.svelte.d.ts +15 -0
- package/dist/svelte/use-plugin.svelte.js +40 -0
- package/dist/svelte/use-vide-event.svelte.d.ts +3 -0
- package/dist/svelte/use-vide-event.svelte.js +9 -0
- package/dist/{types-vxIcXgJz.d.ts → types-BsEF8iWC.d.ts} +106 -1
- package/dist/types-C1_eVsFF.d.ts +49 -0
- package/dist/types-C6XFF6w_.d.ts +30 -0
- package/dist/types-COeag8fU.d.ts +173 -0
- package/dist/types-CwjR99DL.d.ts +10 -0
- package/dist/types-DsixuzNX.d.ts +52 -0
- package/dist/types-DzY1cmXC.d.ts +10 -0
- package/dist/types-SuT99_Z3.d.ts +40 -0
- package/dist/ui/index.d.ts +7 -37
- package/dist/ui/index.js +1 -0
- package/dist/ui/index.mjs +1 -2
- package/dist/ui/theme.css +138 -46
- package/dist/vast/index.d.ts +188 -4
- package/dist/vast/index.js +1 -0
- package/dist/vast/index.mjs +1 -1
- package/dist/vide.core.global.js +1 -1
- package/dist/vide.global.js +2 -2
- package/dist/vide.ssai.global.js +1 -1
- package/dist/vide.ui.css +138 -46
- package/dist/vide.ui.global.js +1 -1
- package/dist/vide.vast.global.js +1 -1
- package/dist/vide.vmap.global.js +1 -1
- package/dist/vmap/index.d.ts +5 -49
- package/dist/vmap/index.js +1 -0
- package/dist/vmap/index.mjs +1 -1
- package/dist/vue/index.d.ts +354 -0
- package/dist/vue/index.js +2 -0
- package/dist/vue/index.mjs +2 -0
- package/package.json +47 -6
- package/dist/chunk-726XNUGZ.mjs +0 -1
- package/dist/chunk-G4Q7R3SH.mjs +0 -1
- package/dist/types-CAJmacV6.d.ts +0 -98
package/dist/ui/theme.css
CHANGED
|
@@ -62,10 +62,10 @@
|
|
|
62
62
|
--vide-ad-overlay-gap: 12px;
|
|
63
63
|
|
|
64
64
|
/* ── Skip ── */
|
|
65
|
-
--vide-skip-bg: rgba(24, 24, 28, 0.
|
|
65
|
+
--vide-skip-bg: rgba(24, 24, 28, 0.5);
|
|
66
66
|
--vide-skip-border: rgba(255, 255, 255, 0.22);
|
|
67
67
|
--vide-skip-color: #fff;
|
|
68
|
-
--vide-skip-padding-y:
|
|
68
|
+
--vide-skip-padding-y: 7px;
|
|
69
69
|
--vide-skip-padding-x: 16px;
|
|
70
70
|
--vide-skip-font-size: 14px;
|
|
71
71
|
--vide-skip-gap: 6px;
|
|
@@ -91,6 +91,14 @@
|
|
|
91
91
|
outline: none;
|
|
92
92
|
overflow: hidden;
|
|
93
93
|
box-sizing: border-box;
|
|
94
|
+
container-type: inline-size;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.vide-ui:fullscreen {
|
|
98
|
+
display: flex;
|
|
99
|
+
flex-direction: column;
|
|
100
|
+
justify-content: center;
|
|
101
|
+
background: #000;
|
|
94
102
|
}
|
|
95
103
|
|
|
96
104
|
.vide-ui *,
|
|
@@ -99,6 +107,36 @@
|
|
|
99
107
|
box-sizing: border-box;
|
|
100
108
|
}
|
|
101
109
|
|
|
110
|
+
/* ── Mini progress bar (always visible at bottom) ── */
|
|
111
|
+
|
|
112
|
+
.vide-ui::after {
|
|
113
|
+
content: "";
|
|
114
|
+
position: absolute;
|
|
115
|
+
bottom: 0;
|
|
116
|
+
left: 0;
|
|
117
|
+
right: 0;
|
|
118
|
+
height: 2px;
|
|
119
|
+
background: var(--vide-accent);
|
|
120
|
+
transform: scaleX(var(--vide-progress, 0));
|
|
121
|
+
transform-origin: left;
|
|
122
|
+
z-index: 3;
|
|
123
|
+
opacity: 0;
|
|
124
|
+
transition: opacity 0.3s var(--vide-ease);
|
|
125
|
+
pointer-events: none;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.vide-ui--autohide::after,
|
|
129
|
+
.vide-ui--playing:not(:hover)::after,
|
|
130
|
+
.vide-ui--ad-playing:not(:hover)::after {
|
|
131
|
+
opacity: 1;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.vide-ui--ad-loading::after,
|
|
135
|
+
.vide-ui--ad-playing::after,
|
|
136
|
+
.vide-ui--ad-paused::after {
|
|
137
|
+
background: var(--vide-accent-ad);
|
|
138
|
+
}
|
|
139
|
+
|
|
102
140
|
/* ═══════════════════════════════════════════
|
|
103
141
|
AUTOHIDE (mouse-idle during playback)
|
|
104
142
|
═══════════════════════════════════════════ */
|
|
@@ -116,6 +154,18 @@
|
|
|
116
154
|
display: none;
|
|
117
155
|
}
|
|
118
156
|
|
|
157
|
+
/* Slide ad elements down when controls fade out */
|
|
158
|
+
.vide-ui--autohide .vide-skip,
|
|
159
|
+
.vide-ui--autohide .vide-ad-cta,
|
|
160
|
+
.vide-ui--autohide .vide-ad-label,
|
|
161
|
+
.vide-ui--autohide .vide-ad-countdown,
|
|
162
|
+
.vide-ui--ad-playing:not(:hover) .vide-skip,
|
|
163
|
+
.vide-ui--ad-playing:not(:hover) .vide-ad-cta,
|
|
164
|
+
.vide-ui--ad-playing:not(:hover) .vide-ad-label,
|
|
165
|
+
.vide-ui--ad-playing:not(:hover) .vide-ad-countdown {
|
|
166
|
+
transform: translateY(calc(var(--vide-controls-height) - 12px));
|
|
167
|
+
}
|
|
168
|
+
|
|
119
169
|
/* ═══════════════════════════════════════════
|
|
120
170
|
CONTROLS BAR
|
|
121
171
|
═══════════════════════════════════════════ */
|
|
@@ -146,7 +196,8 @@
|
|
|
146
196
|
.vide-ui:hover .vide-controls,
|
|
147
197
|
.vide-ui--paused .vide-controls,
|
|
148
198
|
.vide-ui--ready .vide-controls,
|
|
149
|
-
.vide-ui--ended .vide-controls
|
|
199
|
+
.vide-ui--ended .vide-controls,
|
|
200
|
+
.vide-ui--ad-paused .vide-controls {
|
|
150
201
|
opacity: 1;
|
|
151
202
|
pointer-events: auto;
|
|
152
203
|
}
|
|
@@ -476,7 +527,7 @@
|
|
|
476
527
|
.vide-ui--ad-loading .vide-clickplay,
|
|
477
528
|
.vide-ui--ad-playing .vide-clickplay,
|
|
478
529
|
.vide-ui--ad-paused .vide-clickplay {
|
|
479
|
-
|
|
530
|
+
z-index: 2;
|
|
480
531
|
}
|
|
481
532
|
|
|
482
533
|
/* ═══════════════════════════════════════════
|
|
@@ -612,73 +663,53 @@
|
|
|
612
663
|
|
|
613
664
|
.vide-ad-label {
|
|
614
665
|
position: absolute;
|
|
615
|
-
|
|
666
|
+
bottom: calc(var(--vide-controls-height) + var(--vide-ad-overlay-gap) + 52px);
|
|
616
667
|
left: var(--vide-ad-overlay-gap);
|
|
617
668
|
z-index: 4;
|
|
618
669
|
|
|
619
670
|
display: inline-flex;
|
|
620
|
-
align-items:
|
|
621
|
-
overflow: hidden;
|
|
671
|
+
align-items: center;
|
|
622
672
|
margin: 0;
|
|
623
673
|
|
|
624
|
-
background: var(--vide-chip);
|
|
625
|
-
border-radius: var(--vide-radius-sm);
|
|
626
|
-
padding: var(--vide-ad-label-pad-y) var(--vide-ad-label-pad-x)
|
|
627
|
-
var(--vide-ad-label-pad-y) 0;
|
|
628
|
-
|
|
629
674
|
font-family: var(--vide-font);
|
|
630
|
-
font-size: var(--vide-font-size-
|
|
631
|
-
font-weight:
|
|
675
|
+
font-size: var(--vide-font-size-xs);
|
|
676
|
+
font-weight: 500;
|
|
632
677
|
letter-spacing: 0.03em;
|
|
633
678
|
line-height: var(--vide-line-height);
|
|
634
|
-
color: var(--vide-text);
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
/* Yellow left stripe */
|
|
639
|
-
.vide-ad-label::before {
|
|
640
|
-
content: "";
|
|
641
|
-
display: block;
|
|
642
|
-
width: var(--vide-ad-label-stripe);
|
|
643
|
-
min-height: 100%;
|
|
644
|
-
margin: 0;
|
|
645
|
-
padding: 0;
|
|
646
|
-
background: var(--vide-accent-ad);
|
|
647
|
-
flex-shrink: 0;
|
|
679
|
+
color: var(--vide-text-dim);
|
|
680
|
+
text-shadow: 0 0 3px rgba(0, 0, 0, 0.6);
|
|
681
|
+
transition: transform 0.25s var(--vide-ease);
|
|
648
682
|
}
|
|
649
683
|
|
|
650
684
|
/* ─────────────────────────────────────────
|
|
651
685
|
Ad Countdown
|
|
652
|
-
|
|
686
|
+
Inline next to label with separator.
|
|
653
687
|
───────────────────────────────────────── */
|
|
654
688
|
|
|
655
689
|
.vide-ad-countdown {
|
|
656
690
|
position: absolute;
|
|
657
|
-
|
|
658
|
-
left: var(--vide-ad-overlay-gap);
|
|
691
|
+
bottom: calc(var(--vide-controls-height) + var(--vide-ad-overlay-gap) + 52px);
|
|
692
|
+
left: calc(var(--vide-ad-overlay-gap) + 28px);
|
|
659
693
|
z-index: 4;
|
|
660
694
|
|
|
661
695
|
display: inline-flex;
|
|
662
696
|
align-items: center;
|
|
663
|
-
gap: 4px;
|
|
664
697
|
margin: 0;
|
|
665
698
|
|
|
666
|
-
background: var(--vide-chip-light);
|
|
667
|
-
border-radius: var(--vide-radius-sm);
|
|
668
|
-
padding: 5px 9px;
|
|
669
|
-
|
|
670
699
|
font-family: var(--vide-font-mono);
|
|
671
|
-
font-size: var(--vide-font-size-
|
|
700
|
+
font-size: var(--vide-font-size-xs);
|
|
672
701
|
font-weight: 400;
|
|
673
702
|
line-height: var(--vide-line-height);
|
|
674
703
|
color: var(--vide-text-dim);
|
|
704
|
+
text-shadow: 0 0 3px rgba(0, 0, 0, 0.6);
|
|
675
705
|
font-variant-numeric: tabular-nums;
|
|
676
706
|
white-space: nowrap;
|
|
707
|
+
transition: transform 0.25s var(--vide-ease);
|
|
677
708
|
}
|
|
678
709
|
|
|
679
|
-
.vide-ad-countdown
|
|
680
|
-
|
|
681
|
-
|
|
710
|
+
.vide-ad-countdown::before {
|
|
711
|
+
content: "\00b7";
|
|
712
|
+
margin-right: 5px;
|
|
682
713
|
}
|
|
683
714
|
|
|
684
715
|
/* ─────────────────────────────────────────
|
|
@@ -699,10 +730,10 @@
|
|
|
699
730
|
border: 1px solid var(--vide-skip-border);
|
|
700
731
|
background: var(--vide-skip-bg);
|
|
701
732
|
color: var(--vide-skip-color);
|
|
702
|
-
border-radius:
|
|
733
|
+
border-radius: 999px;
|
|
703
734
|
|
|
704
735
|
padding: var(--vide-skip-padding-y) var(--vide-skip-padding-x);
|
|
705
|
-
min-height:
|
|
736
|
+
min-height: 36px;
|
|
706
737
|
min-width: 0;
|
|
707
738
|
|
|
708
739
|
font-family: var(--vide-font);
|
|
@@ -718,7 +749,7 @@
|
|
|
718
749
|
gap: var(--vide-skip-gap);
|
|
719
750
|
|
|
720
751
|
transition: background var(--vide-duration-fast), border-color
|
|
721
|
-
var(--vide-duration-fast);
|
|
752
|
+
var(--vide-duration-fast), transform 0.25s var(--vide-ease);
|
|
722
753
|
}
|
|
723
754
|
|
|
724
755
|
.vide-skip svg {
|
|
@@ -733,7 +764,7 @@
|
|
|
733
764
|
}
|
|
734
765
|
|
|
735
766
|
.vide-skip:hover {
|
|
736
|
-
background: rgba(
|
|
767
|
+
background: rgba(40, 40, 46, 0.8);
|
|
737
768
|
border-color: rgba(255, 255, 255, 0.48);
|
|
738
769
|
}
|
|
739
770
|
|
|
@@ -769,7 +800,7 @@
|
|
|
769
800
|
gap: 8px;
|
|
770
801
|
margin: 0;
|
|
771
802
|
|
|
772
|
-
background:
|
|
803
|
+
background: rgba(0, 0, 0, 0.7);
|
|
773
804
|
border: 1px solid rgba(255, 255, 255, 0.06);
|
|
774
805
|
border-radius: var(--vide-radius);
|
|
775
806
|
padding: 8px 12px;
|
|
@@ -779,10 +810,12 @@
|
|
|
779
810
|
text-decoration: none;
|
|
780
811
|
color: var(--vide-text);
|
|
781
812
|
|
|
782
|
-
transition:
|
|
813
|
+
transition: background var(--vide-duration-fast), border-color
|
|
814
|
+
var(--vide-duration-fast), transform 0.25s var(--vide-ease);
|
|
783
815
|
}
|
|
784
816
|
|
|
785
817
|
.vide-ad-cta:hover {
|
|
818
|
+
background: rgba(0, 0, 0, 0.85);
|
|
786
819
|
border-color: rgba(255, 255, 255, 0.14);
|
|
787
820
|
}
|
|
788
821
|
|
|
@@ -815,6 +848,9 @@
|
|
|
815
848
|
gap: 2px;
|
|
816
849
|
margin: 0;
|
|
817
850
|
padding: 0;
|
|
851
|
+
text-align: left;
|
|
852
|
+
min-width: 0;
|
|
853
|
+
overflow: hidden;
|
|
818
854
|
}
|
|
819
855
|
|
|
820
856
|
.vide-ad-cta__title {
|
|
@@ -825,6 +861,9 @@
|
|
|
825
861
|
font-weight: 500;
|
|
826
862
|
line-height: 1.3;
|
|
827
863
|
color: var(--vide-text);
|
|
864
|
+
overflow: hidden;
|
|
865
|
+
text-overflow: ellipsis;
|
|
866
|
+
white-space: nowrap;
|
|
828
867
|
}
|
|
829
868
|
|
|
830
869
|
.vide-ad-cta__url {
|
|
@@ -835,6 +874,9 @@
|
|
|
835
874
|
font-weight: 400;
|
|
836
875
|
line-height: 1.2;
|
|
837
876
|
color: var(--vide-text-dim);
|
|
877
|
+
overflow: hidden;
|
|
878
|
+
text-overflow: ellipsis;
|
|
879
|
+
white-space: nowrap;
|
|
838
880
|
}
|
|
839
881
|
|
|
840
882
|
/* ── Ad progress accent ── */
|
|
@@ -862,3 +904,53 @@
|
|
|
862
904
|
.vide-ui--ad-paused .vide-progress__buffered {
|
|
863
905
|
opacity: 0.25;
|
|
864
906
|
}
|
|
907
|
+
|
|
908
|
+
/* ═══════════════════════════════════════════
|
|
909
|
+
RESPONSIVE — small player (<480px)
|
|
910
|
+
═══════════════════════════════════════════ */
|
|
911
|
+
|
|
912
|
+
@container (max-width: 480px) {
|
|
913
|
+
/* Learn More → top-left */
|
|
914
|
+
.vide-ad-cta {
|
|
915
|
+
top: var(--vide-ad-overlay-gap);
|
|
916
|
+
bottom: auto;
|
|
917
|
+
left: var(--vide-ad-overlay-gap);
|
|
918
|
+
max-width: 60%;
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
/* Label/countdown → bottom-left (above controls) */
|
|
922
|
+
.vide-ad-label {
|
|
923
|
+
bottom: calc(var(--vide-controls-height) + var(--vide-ad-overlay-gap));
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
.vide-ad-countdown {
|
|
927
|
+
bottom: calc(var(--vide-controls-height) + var(--vide-ad-overlay-gap));
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
/* Skip → stays bottom-right, smaller */
|
|
931
|
+
.vide-skip {
|
|
932
|
+
padding: 5px 12px;
|
|
933
|
+
min-height: 32px;
|
|
934
|
+
font-size: 12px;
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
.vide-skip svg {
|
|
938
|
+
width: 14px;
|
|
939
|
+
height: 14px;
|
|
940
|
+
min-width: 14px;
|
|
941
|
+
min-height: 14px;
|
|
942
|
+
}
|
|
943
|
+
|
|
944
|
+
/* Disable slide-down for top-positioned CTA */
|
|
945
|
+
.vide-ui--ad-playing:not(:hover) .vide-ad-cta {
|
|
946
|
+
transform: none;
|
|
947
|
+
}
|
|
948
|
+
}
|
|
949
|
+
|
|
950
|
+
/* Non-fullscreen: slightly smaller skip */
|
|
951
|
+
@container (max-width: 800px) {
|
|
952
|
+
.vide-skip {
|
|
953
|
+
padding: var(--vide-skip-padding-y) 14px;
|
|
954
|
+
font-size: 13px;
|
|
955
|
+
}
|
|
956
|
+
}
|
package/dist/vast/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { V as VastResponse, R as ResolveOptions, a as VastPluginOptions } from '../types-
|
|
3
|
-
export {
|
|
1
|
+
import { P as Player, f as Plugin } from '../types-BsEF8iWC.js';
|
|
2
|
+
import { V as VastResponse, R as ResolveOptions, a as VastCompanionAd, b as VastNonLinearAds, c as VastAd, d as VastLinear, A as AdPlugin, e as VastPluginOptions } from '../types-COeag8fU.js';
|
|
3
|
+
export { f as AdCategory, g as AdVerification, C as CompanionHTMLResource, h as CompanionIFrameResource, i as CompanionRenderingMode, j as CompanionRequired, k as CompanionResource, l as CompanionStaticResource, m as CompanionTrackingEvents, N as NonLinearAd, n as VastCompanionAds, o as VastExtension, p as VastProgressEvent, q as VastViewableImpression } from '../types-COeag8fU.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Parse a VAST XML string into a VastResponse object.
|
|
@@ -17,13 +17,197 @@ declare function fetchVast(tagUrl: string, options?: {
|
|
|
17
17
|
*/
|
|
18
18
|
declare function resolveVast(tagUrl: string, options?: ResolveOptions | undefined): Promise<VastResponse>;
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Fire error tracking URLs, replacing the [ERRORCODE] macro with the given code.
|
|
22
|
+
* Per VAST 4.2 Section 2.3.6.
|
|
23
|
+
*/
|
|
24
|
+
declare function trackError(urls: string[], errorCode: number): void;
|
|
20
25
|
/** Fire-and-forget tracking. Response is ignored. */
|
|
21
26
|
declare function track(urls: string[]): void;
|
|
22
27
|
type QuartileEvent = "start" | "firstQuartile" | "midpoint" | "thirdQuartile" | "complete";
|
|
23
28
|
/** Determine which quartile the current playback position represents. */
|
|
24
29
|
declare function getQuartile(currentTime: number, duration: number): QuartileEvent | null;
|
|
30
|
+
/** Fire creativeView tracking beacons for a companion ad.
|
|
31
|
+
* Call when the companion is actually displayed to the user. */
|
|
32
|
+
declare function trackCompanionView(companion: VastCompanionAd): void;
|
|
33
|
+
/** Fire a tracking event for a NonLinear ad container.
|
|
34
|
+
* Looks up the event name in the container-level trackingEvents. */
|
|
35
|
+
declare function trackNonLinear(nonLinearAds: VastNonLinearAds, event: string): void;
|
|
36
|
+
|
|
37
|
+
/** Select the best media file: prefer mp4, then highest bitrate. */
|
|
38
|
+
declare function selectMediaFile(files: {
|
|
39
|
+
url: string;
|
|
40
|
+
mimeType: string;
|
|
41
|
+
bitrate?: number | undefined;
|
|
42
|
+
}[]): {
|
|
43
|
+
url: string;
|
|
44
|
+
mimeType: string;
|
|
45
|
+
} | null;
|
|
46
|
+
|
|
47
|
+
interface PlaySingleAdOptions {
|
|
48
|
+
player: Player;
|
|
49
|
+
ad: VastAd;
|
|
50
|
+
linear: VastLinear;
|
|
51
|
+
source: "vast" | "vmap";
|
|
52
|
+
adPlugins?: ((ad: VastAd) => AdPlugin[]) | undefined;
|
|
53
|
+
/** Called synchronously when the ad finishes, before the Promise resolves. */
|
|
54
|
+
onFinish?: ((result: SingleAdResult) => void) | undefined;
|
|
55
|
+
}
|
|
56
|
+
interface SingleAdResult {
|
|
57
|
+
outcome: "completed" | "skipped" | "error";
|
|
58
|
+
errorPhase?: "load" | "playback";
|
|
59
|
+
adId: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Play a single ad creative. Returns a Promise that resolves when the ad
|
|
63
|
+
* finishes (completed, skipped, or error), plus an abort function.
|
|
64
|
+
*
|
|
65
|
+
* Does NOT call setState("playing") on completion — caller's responsibility.
|
|
66
|
+
* Does NOT save/restore content src — caller's responsibility.
|
|
67
|
+
*/
|
|
68
|
+
declare function playSingleAd(options: PlaySingleAdOptions): {
|
|
69
|
+
promise: Promise<SingleAdResult>;
|
|
70
|
+
abort: () => void;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
/** A playable ad: the VastAd plus its first linear creative. */
|
|
74
|
+
interface PlayableAd {
|
|
75
|
+
ad: VastAd;
|
|
76
|
+
linear: VastLinear;
|
|
77
|
+
}
|
|
78
|
+
interface ClassifiedAds {
|
|
79
|
+
type: "single" | "pod" | "waterfall";
|
|
80
|
+
ads: PlayableAd[];
|
|
81
|
+
/**
|
|
82
|
+
* Stand-alone ads (no sequence) available for substitution when a pod ad fails.
|
|
83
|
+
* Per VAST 3.3.1: "Should an ad in the Pod fail to play, the media player
|
|
84
|
+
* should substitute an un-played stand-alone ad from the response."
|
|
85
|
+
* Only populated when type is "pod" and unsequenced ads exist.
|
|
86
|
+
*/
|
|
87
|
+
standalonePool: PlayableAd[];
|
|
88
|
+
}
|
|
89
|
+
interface PodResult {
|
|
90
|
+
completed: number;
|
|
91
|
+
skipped: number;
|
|
92
|
+
failed: number;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Classify ads from a VAST response into single, pod, or waterfall.
|
|
96
|
+
* Pure function — no side effects.
|
|
97
|
+
*
|
|
98
|
+
* - All have sequence → pod (sorted by sequence)
|
|
99
|
+
* - None have sequence + multiple → waterfall (original order)
|
|
100
|
+
* - Mixed → pod from sequenced only
|
|
101
|
+
* - 0 or 1 playable → single
|
|
102
|
+
*/
|
|
103
|
+
declare function classifyAds(vastAds: VastAd[]): ClassifiedAds;
|
|
104
|
+
/**
|
|
105
|
+
* Play all ads in a pod sequentially.
|
|
106
|
+
* Individual failures or skips advance to the next ad.
|
|
107
|
+
*
|
|
108
|
+
* Per VAST 3.3.1: when a pod ad fails, a stand-alone ad from
|
|
109
|
+
* `standalonePool` is substituted before moving to the next pod ad.
|
|
110
|
+
*/
|
|
111
|
+
declare function playPod(player: Player, ads: PlayableAd[], options: {
|
|
112
|
+
source: "vast" | "vmap";
|
|
113
|
+
adPlugins?: ((ad: VastAd) => AdPlugin[]) | undefined;
|
|
114
|
+
/** Called synchronously when the last ad in the pod finishes. */
|
|
115
|
+
onFinish?: ((result: SingleAdResult) => void) | undefined;
|
|
116
|
+
/**
|
|
117
|
+
* Stand-alone ads available for substitution when a pod ad fails.
|
|
118
|
+
* Each ad is used at most once.
|
|
119
|
+
*/
|
|
120
|
+
standalonePool?: PlayableAd[] | undefined;
|
|
121
|
+
}): Promise<PodResult>;
|
|
122
|
+
/**
|
|
123
|
+
* Try ads in waterfall order. Play the first one that loads successfully.
|
|
124
|
+
* Returns the result of the first successful ad, or null if all fail.
|
|
125
|
+
*/
|
|
126
|
+
declare function playWaterfall(player: Player, ads: PlayableAd[], options: {
|
|
127
|
+
source: "vast" | "vmap";
|
|
128
|
+
adPlugins?: ((ad: VastAd) => AdPlugin[]) | undefined;
|
|
129
|
+
/** Called synchronously when the winning ad finishes (or last failure). */
|
|
130
|
+
onFinish?: ((result: SingleAdResult) => void) | undefined;
|
|
131
|
+
}): Promise<SingleAdResult | null>;
|
|
132
|
+
|
|
133
|
+
/** 100: XML parsing error. */
|
|
134
|
+
declare const VAST_XML_PARSE_ERROR = 100;
|
|
135
|
+
/** 101: VAST schema validation error. */
|
|
136
|
+
declare const VAST_SCHEMA_ERROR = 101;
|
|
137
|
+
/** 102: VAST version of response not supported. */
|
|
138
|
+
declare const VAST_VERSION_UNSUPPORTED = 102;
|
|
139
|
+
/** 200: Trafficking error. Media player received an Ad type it was not expecting and/or cannot play. */
|
|
140
|
+
declare const VAST_TRAFFICKING_ERROR = 200;
|
|
141
|
+
/** 201: Media player expecting different linearity. */
|
|
142
|
+
declare const VAST_LINEARITY_ERROR = 201;
|
|
143
|
+
/** 202: Media player expecting different duration. */
|
|
144
|
+
declare const VAST_DURATION_ERROR = 202;
|
|
145
|
+
/** 203: Media player expecting different size. */
|
|
146
|
+
declare const VAST_SIZE_ERROR = 203;
|
|
147
|
+
/** 204: Ad category was required but not provided. */
|
|
148
|
+
declare const VAST_CATEGORY_REQUIRED = 204;
|
|
149
|
+
/** 205: InLine Category violates Wrapper BlockedAdCategories. */
|
|
150
|
+
declare const VAST_CATEGORY_BLOCKED = 205;
|
|
151
|
+
/** 206: Ad Break shortened. Ad was not served. */
|
|
152
|
+
declare const VAST_BREAK_SHORTENED = 206;
|
|
153
|
+
/** 300: General Wrapper error. */
|
|
154
|
+
declare const VAST_WRAPPER_ERROR = 300;
|
|
155
|
+
/** 301: Timeout of VAST URI provided in Wrapper element. */
|
|
156
|
+
declare const VAST_WRAPPER_TIMEOUT = 301;
|
|
157
|
+
/** 302: Wrapper limit reached, too many Wrapper responses with no InLine response. */
|
|
158
|
+
declare const VAST_WRAPPER_LIMIT = 302;
|
|
159
|
+
/** 303: No VAST response after one or more Wrappers. */
|
|
160
|
+
declare const VAST_NO_ADS = 303;
|
|
161
|
+
/** 304: InLine response returned ad unit that failed to result in ad display within defined time limit. */
|
|
162
|
+
declare const VAST_INLINE_TIMEOUT = 304;
|
|
163
|
+
/** 400: General Linear error. Media player is unable to display the Linear Ad. */
|
|
164
|
+
declare const VAST_LINEAR_ERROR = 400;
|
|
165
|
+
/** 401: File not found. Unable to find Linear/MediaFile from URI. */
|
|
166
|
+
declare const VAST_MEDIA_NOT_FOUND = 401;
|
|
167
|
+
/** 402: Timeout of MediaFile URI. */
|
|
168
|
+
declare const VAST_MEDIA_TIMEOUT = 402;
|
|
169
|
+
/** 403: Couldn't find MediaFile that is supported by this media player. */
|
|
170
|
+
declare const VAST_MEDIA_UNSUPPORTED = 403;
|
|
171
|
+
/** 405: Problem displaying MediaFile. MediaFile may include unsupported codecs, different MIME type, etc. */
|
|
172
|
+
declare const VAST_MEDIA_DISPLAY_ERROR = 405;
|
|
173
|
+
/** 406: Mezzanine was required but not provided. Ad not served. */
|
|
174
|
+
declare const VAST_MEZZANINE_REQUIRED = 406;
|
|
175
|
+
/** 407: Mezzanine is in the process of being downloaded. Ad will not be served until mezzanine is transcoded. */
|
|
176
|
+
declare const VAST_MEZZANINE_DOWNLOADING = 407;
|
|
177
|
+
/** 408: Conditional ad rejected (deprecated along with conditionalAd). */
|
|
178
|
+
declare const VAST_CONDITIONAL_REJECTED = 408;
|
|
179
|
+
/** 409: Interactive unit in the InteractiveCreativeFile node was not executed. */
|
|
180
|
+
declare const VAST_INTERACTIVE_NOT_EXECUTED = 409;
|
|
181
|
+
/** 410: Verification unit in the Verification node was not executed. */
|
|
182
|
+
declare const VAST_VERIFICATION_NOT_EXECUTED = 410;
|
|
183
|
+
/** 411: Mezzanine was provided but did not meet required specification. Ad not served. */
|
|
184
|
+
declare const VAST_MEZZANINE_INVALID = 411;
|
|
185
|
+
/** 500: General NonLinearAds error. */
|
|
186
|
+
declare const VAST_NONLINEAR_ERROR = 500;
|
|
187
|
+
/** 501: Unable to display NonLinearAd because creative dimensions do not align with creative display area. */
|
|
188
|
+
declare const VAST_NONLINEAR_SIZE_ERROR = 501;
|
|
189
|
+
/** 502: Unable to fetch NonLinearAds/NonLinear resource. */
|
|
190
|
+
declare const VAST_NONLINEAR_FETCH_ERROR = 502;
|
|
191
|
+
/** 503: Couldn't find NonLinear resource with supported type. */
|
|
192
|
+
declare const VAST_NONLINEAR_UNSUPPORTED = 503;
|
|
193
|
+
/** 600: General CompanionAds error. */
|
|
194
|
+
declare const VAST_COMPANION_ERROR = 600;
|
|
195
|
+
/** 601: Unable to display Companion because creative dimensions do not fit within Companion display area. */
|
|
196
|
+
declare const VAST_COMPANION_SIZE_ERROR = 601;
|
|
197
|
+
/** 602: Unable to display required Companion. */
|
|
198
|
+
declare const VAST_COMPANION_REQUIRED_ERROR = 602;
|
|
199
|
+
/** 603: Unable to fetch CompanionAds/Companion resource. */
|
|
200
|
+
declare const VAST_COMPANION_FETCH_ERROR = 603;
|
|
201
|
+
/** 604: Couldn't find Companion resource with supported type. */
|
|
202
|
+
declare const VAST_COMPANION_UNSUPPORTED = 604;
|
|
203
|
+
/** 900: Undefined Error. */
|
|
204
|
+
declare const VAST_UNDEFINED_ERROR = 900;
|
|
205
|
+
/** 901: General VPAID error. */
|
|
206
|
+
declare const VAST_VPAID_ERROR = 901;
|
|
207
|
+
/** 902: General InteractiveCreativeFile error. */
|
|
208
|
+
declare const VAST_INTERACTIVE_ERROR = 902;
|
|
25
209
|
|
|
26
210
|
/** Create a VAST ad plugin for vide. */
|
|
27
211
|
declare function vast(options: VastPluginOptions): Plugin;
|
|
28
212
|
|
|
29
|
-
export { ResolveOptions, VastPluginOptions, fetchVast, getQuartile, parseVast, resolveVast, track, vast };
|
|
213
|
+
export { AdPlugin, type ClassifiedAds, type PlaySingleAdOptions, type PlayableAd, type PodResult, ResolveOptions, type SingleAdResult, VAST_BREAK_SHORTENED, VAST_CATEGORY_BLOCKED, VAST_CATEGORY_REQUIRED, VAST_COMPANION_ERROR, VAST_COMPANION_FETCH_ERROR, VAST_COMPANION_REQUIRED_ERROR, VAST_COMPANION_SIZE_ERROR, VAST_COMPANION_UNSUPPORTED, VAST_CONDITIONAL_REJECTED, VAST_DURATION_ERROR, VAST_INLINE_TIMEOUT, VAST_INTERACTIVE_ERROR, VAST_INTERACTIVE_NOT_EXECUTED, VAST_LINEARITY_ERROR, VAST_LINEAR_ERROR, VAST_MEDIA_DISPLAY_ERROR, VAST_MEDIA_NOT_FOUND, VAST_MEDIA_TIMEOUT, VAST_MEDIA_UNSUPPORTED, VAST_MEZZANINE_DOWNLOADING, VAST_MEZZANINE_INVALID, VAST_MEZZANINE_REQUIRED, VAST_NONLINEAR_ERROR, VAST_NONLINEAR_FETCH_ERROR, VAST_NONLINEAR_SIZE_ERROR, VAST_NONLINEAR_UNSUPPORTED, VAST_NO_ADS, VAST_SCHEMA_ERROR, VAST_SIZE_ERROR, VAST_TRAFFICKING_ERROR, VAST_UNDEFINED_ERROR, VAST_VERIFICATION_NOT_EXECUTED, VAST_VERSION_UNSUPPORTED, VAST_VPAID_ERROR, VAST_WRAPPER_ERROR, VAST_WRAPPER_LIMIT, VAST_WRAPPER_TIMEOUT, VAST_XML_PARSE_ERROR, VastCompanionAd, VastNonLinearAds, VastPluginOptions, classifyAds, fetchVast, getQuartile, parseVast, playPod, playSingleAd, playWaterfall, resolveVast, selectMediaFile, track, trackCompanionView, trackError, trackNonLinear, vast };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as vast}from'../chunk-3RDTWUHH.mjs';export{j as VAST_BREAK_SHORTENED,i as VAST_CATEGORY_BLOCKED,h as VAST_CATEGORY_REQUIRED,E as VAST_COMPANION_ERROR,H as VAST_COMPANION_FETCH_ERROR,G as VAST_COMPANION_REQUIRED_ERROR,F as VAST_COMPANION_SIZE_ERROR,I as VAST_COMPANION_UNSUPPORTED,w as VAST_CONDITIONAL_REJECTED,f as VAST_DURATION_ERROR,o as VAST_INLINE_TIMEOUT,L as VAST_INTERACTIVE_ERROR,x as VAST_INTERACTIVE_NOT_EXECUTED,e as VAST_LINEARITY_ERROR,p as VAST_LINEAR_ERROR,t as VAST_MEDIA_DISPLAY_ERROR,q as VAST_MEDIA_NOT_FOUND,r as VAST_MEDIA_TIMEOUT,s as VAST_MEDIA_UNSUPPORTED,v as VAST_MEZZANINE_DOWNLOADING,z as VAST_MEZZANINE_INVALID,u as VAST_MEZZANINE_REQUIRED,A as VAST_NONLINEAR_ERROR,C as VAST_NONLINEAR_FETCH_ERROR,B as VAST_NONLINEAR_SIZE_ERROR,D as VAST_NONLINEAR_UNSUPPORTED,n as VAST_NO_ADS,b as VAST_SCHEMA_ERROR,g as VAST_SIZE_ERROR,d as VAST_TRAFFICKING_ERROR,J as VAST_UNDEFINED_ERROR,y as VAST_VERIFICATION_NOT_EXECUTED,c as VAST_VERSION_UNSUPPORTED,K as VAST_VPAID_ERROR,k as VAST_WRAPPER_ERROR,m as VAST_WRAPPER_LIMIT,l as VAST_WRAPPER_TIMEOUT,a as VAST_XML_PARSE_ERROR,R as classifyAds,N as fetchVast,M as parseVast,S as playPod,Q as playSingleAd,T as playWaterfall,O as resolveVast,P as selectMediaFile}from'../chunk-G74QBLVV.mjs';export{c as getQuartile,b as track,e as trackCompanionView,a as trackError,f as trackNonLinear}from'../chunk-UY5CGRNN.mjs';
|
package/dist/vast/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export{a as vast}from'../chunk-3RDTWUHH.mjs';export{j as VAST_BREAK_SHORTENED,i as VAST_CATEGORY_BLOCKED,h as VAST_CATEGORY_REQUIRED,E as VAST_COMPANION_ERROR,H as VAST_COMPANION_FETCH_ERROR,G as VAST_COMPANION_REQUIRED_ERROR,F as VAST_COMPANION_SIZE_ERROR,I as VAST_COMPANION_UNSUPPORTED,w as VAST_CONDITIONAL_REJECTED,f as VAST_DURATION_ERROR,o as VAST_INLINE_TIMEOUT,L as VAST_INTERACTIVE_ERROR,x as VAST_INTERACTIVE_NOT_EXECUTED,e as VAST_LINEARITY_ERROR,p as VAST_LINEAR_ERROR,t as VAST_MEDIA_DISPLAY_ERROR,q as VAST_MEDIA_NOT_FOUND,r as VAST_MEDIA_TIMEOUT,s as VAST_MEDIA_UNSUPPORTED,v as VAST_MEZZANINE_DOWNLOADING,z as VAST_MEZZANINE_INVALID,u as VAST_MEZZANINE_REQUIRED,A as VAST_NONLINEAR_ERROR,C as VAST_NONLINEAR_FETCH_ERROR,B as VAST_NONLINEAR_SIZE_ERROR,D as VAST_NONLINEAR_UNSUPPORTED,n as VAST_NO_ADS,b as VAST_SCHEMA_ERROR,g as VAST_SIZE_ERROR,d as VAST_TRAFFICKING_ERROR,J as VAST_UNDEFINED_ERROR,y as VAST_VERIFICATION_NOT_EXECUTED,c as VAST_VERSION_UNSUPPORTED,K as VAST_VPAID_ERROR,k as VAST_WRAPPER_ERROR,m as VAST_WRAPPER_LIMIT,l as VAST_WRAPPER_TIMEOUT,a as VAST_XML_PARSE_ERROR,R as classifyAds,N as fetchVast,M as parseVast,S as playPod,Q as playSingleAd,T as playWaterfall,O as resolveVast,P as selectMediaFile}from'../chunk-G74QBLVV.mjs';export{c as getQuartile,b as track,e as trackCompanionView,a as trackError,f as trackNonLinear}from'../chunk-UY5CGRNN.mjs';
|
package/dist/vide.core.global.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var Vide=(function(exports){'use strict';var F=1e3,B=2e3,$=2001,z=2002,G=3e3,J=3001,X=4e3,Z=4001,ee=4002,te=4003;var ne={idle:["loading","playing","error"],loading:["ready","playing","error"],ready:["playing","loading","ad:loading","error"],playing:["paused","buffering","loading","ad:loading","ended","error"],paused:["playing","loading","ad:loading","ended","error"],buffering:["playing","loading","error"],"ad:loading":["ad:playing","playing","error"],"ad:playing":["ad:paused","playing","error"],"ad:paused":["ad:playing","playing","error"],ended:["idle","loading","error"],error:["idle","loading"]};function re(t,a){return ne[t].includes(a)}function ae(t){return t.readyState>=3?t.paused?"ready":"playing":t.readyState>=1?"loading":"idle"}function ie(t){let a=ae(t),g=t instanceof HTMLAudioElement,E=new Map,y=[],c=false,k=[],d=null,m=t.getAttribute("src")??"",L=false,o=new Map,b=t.duration===Number.POSITIVE_INFINITY,R=null;function x(e){let n=E.get(e);return n||(n=new Set,E.set(e,n)),n}function i(e,n){let r=E.get(e);if(r)for(let u of r)try{u(n);}catch(p){console.error("[vide] Event handler error:",p);}}function s(e){if(e===a)return;if(!re(a,e)){console.warn(`[vide] Invalid transition: ${a} \u2192 ${e}`);return}let n=a;a=e,i("statechange",{from:n,to:e});}function v(){return a==="ad:loading"||a==="ad:playing"||a==="ad:paused"}function h(){!v()&&t.paused&&s("loading");}function S(){a==="loading"&&s("ready");}function P(){v()||s("playing"),i("play",void 0);}function _(){v()||s("paused"),i("pause",void 0);}function I(){a==="playing"&&s("buffering");}function H(){(a==="buffering"||a==="ready")&&s("playing");}function M(){v()||s("ended"),i("ended",void 0);}function A(){i("timeupdate",{currentTime:t.currentTime,duration:t.duration});}function C(){let e=t.error;v()||s("error"),i("error",{code:e?.code??1e3,message:e?.message??"Unknown error",source:"core"});}function w(){let e=t.duration===Number.POSITIVE_INFINITY;e!==b&&(b=e,i("livestatechange",{isLive:e}));}t.addEventListener("durationchange",w),t.addEventListener("loadstart",h),t.addEventListener("canplay",S),t.addEventListener("play",P),t.addEventListener("pause",_),t.addEventListener("waiting",I),t.addEventListener("playing",H),t.addEventListener("ended",M),t.addEventListener("timeupdate",A),t.addEventListener("error",C);function T(e,n){return {id:n,label:e.label,language:e.language,kind:e.kind,active:e.mode==="showing"}}function D(e){if(!e)return [];let n=[];for(let r=0;r<e.length;r++){let u=e[r];n.push({startTime:u.startTime,endTime:u.endTime,text:u.text??""});}return n}let l=new Map;function O(e){if(l.has(e))return;let n=()=>{e.mode==="showing"&&i("cuechange",{cues:D(e.activeCues)});};l.set(e,n),e.addEventListener("cuechange",n);}function K(e){let n=l.get(e);n&&(e.removeEventListener("cuechange",n),l.delete(e));}function V(){let e=[];for(let n=0;n<t.textTracks.length;n++)e.push(T(t.textTracks[n],n));i("texttracksavailable",{tracks:e});}function N(){for(let e=0;e<t.textTracks.length;e++)O(t.textTracks[e]);V();}function Q(e){e.track&&K(e.track),V();}let q=typeof t.textTracks.addEventListener=="function";if(q){t.textTracks.addEventListener("addtrack",N),t.textTracks.addEventListener("removetrack",Q);for(let e=0;e<t.textTracks.length;e++)O(t.textTracks[e]);}let U=new Set(["statechange","play","pause","ended","timeupdate","livestatechange","error","ad:start","ad:end","ad:skip","ad:click","ad:error","ad:impression","ad:loaded","ad:quartile","ad:mute","ad:unmute","ad:volumeChange","ad:fullscreen","ad:breakStart","ad:breakEnd","qualitiesavailable","qualitychange","texttrackchange","texttracksavailable","cuechange","destroy"]);function Y(){if(t.removeEventListener("durationchange",w),t.removeEventListener("loadstart",h),t.removeEventListener("canplay",S),t.removeEventListener("play",P),t.removeEventListener("pause",_),t.removeEventListener("waiting",I),t.removeEventListener("playing",H),t.removeEventListener("ended",M),t.removeEventListener("timeupdate",A),t.removeEventListener("error",C),q){t.textTracks.removeEventListener("addtrack",N),t.textTracks.removeEventListener("removetrack",Q);for(let[e,n]of l)e.removeEventListener("cuechange",n);l.clear();}}function j(){if(d||L)return;let e=t.querySelectorAll("source");for(let n of e){let r=n.getAttribute("src"),u=n.getAttribute("type")??void 0;if(r){for(let p of k)if(p.canHandle(r,u)){d=p,m=r,s("loading"),p.load(r,t);for(let W of e)W.remove();return}}}}let f={get el(){return t},get state(){return a},on(e,n){U.has(e)?x(e).add(n):t.addEventListener(e,n);},off(e,n){U.has(e)?x(e).delete(n):t.removeEventListener(e,n);},emit:i,once(e,n){let r=u=>{f.off(e,r),n(u);};f.on(e,r);},play(){return t.play()},pause(){t.pause();},get currentTime(){return t.currentTime},set currentTime(e){t.currentTime=e;},get duration(){return t.duration},set duration(e){},get volume(){return t.volume},set volume(e){t.volume=e;},get muted(){return t.muted},set muted(e){t.muted=e;},get playbackRate(){return t.playbackRate},set playbackRate(e){t.playbackRate=e;},get paused(){return t.paused},get ended(){return t.ended},get readyState(){return t.readyState},get buffered(){return t.buffered},get seekable(){return t.seekable},get seeking(){return t.seeking},get isLive(){return c?false:t.duration===Number.POSITIVE_INFINITY},get seekableRange(){return c||t.seekable.length===0?null:{start:t.seekable.start(0),end:t.seekable.end(0)}},get qualities(){return o.get("qualities")??[]},get currentQuality(){return o.get("currentQuality")??null},get isAutoQuality(){return o.get("autoQuality")??true},get isAudio(){return g},setQuality(e){let n=o.get("qualitySetter");n&&n(e);},get textTracks(){return t.textTracks},getTextTracks(){let e=[];for(let n=0;n<t.textTracks.length;n++)e.push(T(t.textTracks[n],n));return e},getActiveTextTrack(){for(let e=0;e<t.textTracks.length;e++)if(t.textTracks[e].mode==="showing")return T(t.textTracks[e],e);return null},get activeCues(){for(let e=0;e<t.textTracks.length;e++)if(t.textTracks[e].mode==="showing")return D(t.textTracks[e].activeCues);return []},setTextTrack(e){for(let r=0;r<t.textTracks.length;r++)t.textTracks[r].mode=r===e?"showing":"disabled";let n=e>=0&&e<t.textTracks.length?T(t.textTracks[e],e):null;i("texttrackchange",{track:n});},addTextTrack(e){let n=document.createElement("track");n.src=e.src,n.label=e.label,n.srclang=e.language,n.kind=e.kind??"subtitles",e.default&&(n.default=true),t.appendChild(n);},get videoWidth(){return g?0:t.videoWidth},get videoHeight(){return g?0:t.videoHeight},get networkState(){return t.networkState},get loop(){return t.loop},set loop(e){t.loop=e;},get autoplay(){return t.autoplay},set autoplay(e){t.autoplay=e;},get poster(){return g?"":t.poster},set poster(e){g||(t.poster=e);},get preload(){return t.preload},set preload(e){t.preload=e;},get defaultPlaybackRate(){return t.defaultPlaybackRate},set defaultPlaybackRate(e){t.defaultPlaybackRate=e;},get defaultMuted(){return t.defaultMuted},set defaultMuted(e){t.defaultMuted=e;},get crossOrigin(){return t.crossOrigin},set crossOrigin(e){t.crossOrigin=e;},get controls(){return t.controls},set controls(e){t.controls=e;},get src(){return m},set src(e){if(d&&(d.unload(t),d=null),o.delete("qualities"),o.delete("currentQuality"),o.delete("autoQuality"),o.delete("qualitySetter"),R=null,L=true,m=e,!e){t.removeAttribute("src");return}for(let n of k)if(n.canHandle(e)){d=n,s("loading"),n.load(e,t);return}t.src=e;},registerSourceHandler(e){if(c){console.warn("[vide] Cannot register source handler after destroy");return}k.push(e),!L&&!d&&j();},addEventListener(e,n,r){t.addEventListener(e,n,r);},removeEventListener(e,n,r){t.removeEventListener(e,n,r);},use(e){if(c){console.warn("[vide] Cannot use plugin after destroy");return}let n=e.setup(f);n&&y.push(n);},setPluginData(e,n){if(o.set(e,n),e==="qualities")i("qualitiesavailable",{qualities:n});else if(e==="currentQuality"){let r=n;i("qualitychange",{from:R,to:r}),R=r;}},getPluginData(e){return o.get(e)},destroy(){if(!c){c=true,d&&(d.unload(t),d=null);for(let e of y)try{e();}catch(n){console.error("[vide] Plugin cleanup error:",n);}y.length=0,i("destroy",void 0),Y(),E.clear(),o.clear();}}};return f._setState=s,f}exports.ERR_DASH_IMPORT=G;exports.ERR_DASH_PLAYBACK=J;exports.ERR_DRM_CERTIFICATE=te;exports.ERR_DRM_DETECTION=Z;exports.ERR_DRM_LICENSE=ee;exports.ERR_DRM_UNSUPPORTED=X;exports.ERR_HLS_FATAL=z;exports.ERR_HLS_IMPORT=$;exports.ERR_HLS_UNSUPPORTED=B;exports.ERR_MEDIA=F;exports.createPlayer=ie;return exports;})({});
|
|
1
|
+
var Vide=(function(exports){'use strict';var F=1e3,B=2e3,$=2001,z=2002,G=3e3,J=3001,X=4e3,Z=4001,ee=4002,te=4003;var ne={idle:["loading","playing","error"],loading:["ready","playing","error"],ready:["playing","loading","ad:loading","error"],playing:["paused","buffering","loading","ad:loading","ended","error"],paused:["playing","loading","ad:loading","ended","error"],buffering:["playing","loading","error"],"ad:loading":["ad:playing","playing","error"],"ad:playing":["ad:paused","ad:loading","playing","error"],"ad:paused":["ad:playing","ad:loading","playing","error"],ended:["idle","loading","error"],error:["idle","loading"]};function re(t,a){return ne[t].includes(a)}function ae(t){return t.readyState>=3?t.paused?"ready":"playing":t.readyState>=1?"loading":"idle"}function ie(t){let a=ae(t),g=t instanceof HTMLAudioElement,E=new Map,y=[],c=false,k=[],d=null,m=t.getAttribute("src")??"",L=false,o=new Map,b=t.duration===Number.POSITIVE_INFINITY,R=null;function x(e){let n=E.get(e);return n||(n=new Set,E.set(e,n)),n}function i(e,n){let r=E.get(e);if(r)for(let u of r)try{u(n);}catch(p){console.error("[vide] Event handler error:",p);}}function s(e){if(e===a)return;if(!re(a,e)){console.warn(`[vide] Invalid transition: ${a} \u2192 ${e}`);return}let n=a;a=e,i("statechange",{from:n,to:e});}function v(){return a==="ad:loading"||a==="ad:playing"||a==="ad:paused"}function h(){!v()&&t.paused&&s("loading");}function S(){a==="loading"&&s("ready");}function P(){v()||s("playing"),i("play",void 0);}function _(){v()||s("paused"),i("pause",void 0);}function I(){a==="playing"&&s("buffering");}function H(){(a==="buffering"||a==="ready")&&s("playing");}function M(){v()||s("ended"),i("ended",void 0);}function A(){i("timeupdate",{currentTime:t.currentTime,duration:t.duration});}function C(){let e=t.error;v()||s("error"),i("error",{code:e?.code??1e3,message:e?.message??"Unknown error",source:"core"});}function w(){let e=t.duration===Number.POSITIVE_INFINITY;e!==b&&(b=e,i("livestatechange",{isLive:e}));}t.addEventListener("durationchange",w),t.addEventListener("loadstart",h),t.addEventListener("canplay",S),t.addEventListener("play",P),t.addEventListener("pause",_),t.addEventListener("waiting",I),t.addEventListener("playing",H),t.addEventListener("ended",M),t.addEventListener("timeupdate",A),t.addEventListener("error",C);function T(e,n){return {id:n,label:e.label,language:e.language,kind:e.kind,active:e.mode==="showing"}}function D(e){if(!e)return [];let n=[];for(let r=0;r<e.length;r++){let u=e[r];n.push({startTime:u.startTime,endTime:u.endTime,text:u.text??""});}return n}let l=new Map;function O(e){if(l.has(e))return;let n=()=>{e.mode==="showing"&&i("cuechange",{cues:D(e.activeCues)});};l.set(e,n),e.addEventListener("cuechange",n);}function K(e){let n=l.get(e);n&&(e.removeEventListener("cuechange",n),l.delete(e));}function V(){let e=[];for(let n=0;n<t.textTracks.length;n++)e.push(T(t.textTracks[n],n));i("texttracksavailable",{tracks:e});}function N(){for(let e=0;e<t.textTracks.length;e++)O(t.textTracks[e]);V();}function Q(e){e.track&&K(e.track),V();}let q=typeof t.textTracks.addEventListener=="function";if(q){t.textTracks.addEventListener("addtrack",N),t.textTracks.addEventListener("removetrack",Q);for(let e=0;e<t.textTracks.length;e++)O(t.textTracks[e]);}let U=new Set(["statechange","play","pause","ended","timeupdate","livestatechange","error","ad:companions","ad:nonlinears","ad:start","ad:end","ad:skip","ad:click","ad:error","ad:impression","ad:loaded","ad:quartile","ad:mute","ad:unmute","ad:volumeChange","ad:fullscreen","ad:breakStart","ad:breakEnd","ad:pod:start","ad:pod:end","ad:pod:adstart","ad:pod:adend","qualitiesavailable","qualitychange","texttrackchange","texttracksavailable","cuechange","destroy"]);function Y(){if(t.removeEventListener("durationchange",w),t.removeEventListener("loadstart",h),t.removeEventListener("canplay",S),t.removeEventListener("play",P),t.removeEventListener("pause",_),t.removeEventListener("waiting",I),t.removeEventListener("playing",H),t.removeEventListener("ended",M),t.removeEventListener("timeupdate",A),t.removeEventListener("error",C),q){t.textTracks.removeEventListener("addtrack",N),t.textTracks.removeEventListener("removetrack",Q);for(let[e,n]of l)e.removeEventListener("cuechange",n);l.clear();}}function j(){if(d||L)return;let e=t.querySelectorAll("source");for(let n of e){let r=n.getAttribute("src"),u=n.getAttribute("type")??void 0;if(r){for(let p of k)if(p.canHandle(r,u)){d=p,m=r,s("loading"),p.load(r,t);for(let W of e)W.remove();return}}}}let f={get el(){return t},get state(){return a},on(e,n){U.has(e)?x(e).add(n):t.addEventListener(e,n);},off(e,n){U.has(e)?x(e).delete(n):t.removeEventListener(e,n);},emit:i,once(e,n){let r=u=>{f.off(e,r),n(u);};f.on(e,r);},play(){return t.play()},pause(){t.pause();},get currentTime(){return t.currentTime},set currentTime(e){t.currentTime=e;},get duration(){return t.duration},set duration(e){},get volume(){return t.volume},set volume(e){t.volume=e;},get muted(){return t.muted},set muted(e){t.muted=e;},get playbackRate(){return t.playbackRate},set playbackRate(e){t.playbackRate=e;},get paused(){return t.paused},get ended(){return t.ended},get readyState(){return t.readyState},get buffered(){return t.buffered},get seekable(){return t.seekable},get seeking(){return t.seeking},get isLive(){return c?false:t.duration===Number.POSITIVE_INFINITY},get seekableRange(){return c||t.seekable.length===0?null:{start:t.seekable.start(0),end:t.seekable.end(0)}},get qualities(){return o.get("qualities")??[]},get currentQuality(){return o.get("currentQuality")??null},get isAutoQuality(){return o.get("autoQuality")??true},get isAudio(){return g},setQuality(e){let n=o.get("qualitySetter");n&&n(e);},get textTracks(){return t.textTracks},getTextTracks(){let e=[];for(let n=0;n<t.textTracks.length;n++)e.push(T(t.textTracks[n],n));return e},getActiveTextTrack(){for(let e=0;e<t.textTracks.length;e++)if(t.textTracks[e].mode==="showing")return T(t.textTracks[e],e);return null},get activeCues(){for(let e=0;e<t.textTracks.length;e++)if(t.textTracks[e].mode==="showing")return D(t.textTracks[e].activeCues);return []},setTextTrack(e){for(let r=0;r<t.textTracks.length;r++)t.textTracks[r].mode=r===e?"showing":"disabled";let n=e>=0&&e<t.textTracks.length?T(t.textTracks[e],e):null;i("texttrackchange",{track:n});},addTextTrack(e){let n=document.createElement("track");n.src=e.src,n.label=e.label,n.srclang=e.language,n.kind=e.kind??"subtitles",e.default&&(n.default=true),t.appendChild(n);},get videoWidth(){return g?0:t.videoWidth},get videoHeight(){return g?0:t.videoHeight},get networkState(){return t.networkState},get loop(){return t.loop},set loop(e){t.loop=e;},get autoplay(){return t.autoplay},set autoplay(e){t.autoplay=e;},get poster(){return g?"":t.poster},set poster(e){g||(t.poster=e);},get preload(){return t.preload},set preload(e){t.preload=e;},get defaultPlaybackRate(){return t.defaultPlaybackRate},set defaultPlaybackRate(e){t.defaultPlaybackRate=e;},get defaultMuted(){return t.defaultMuted},set defaultMuted(e){t.defaultMuted=e;},get crossOrigin(){return t.crossOrigin},set crossOrigin(e){t.crossOrigin=e;},get controls(){return t.controls},set controls(e){t.controls=e;},get src(){return m},set src(e){if(d&&(d.unload(t),d=null),o.delete("qualities"),o.delete("currentQuality"),o.delete("autoQuality"),o.delete("qualitySetter"),R=null,L=true,m=e,!e){t.removeAttribute("src");return}for(let n of k)if(n.canHandle(e)){d=n,s("loading"),n.load(e,t);return}t.src=e;},registerSourceHandler(e){if(c){console.warn("[vide] Cannot register source handler after destroy");return}k.push(e),!L&&!d&&j();},addEventListener(e,n,r){t.addEventListener(e,n,r);},removeEventListener(e,n,r){t.removeEventListener(e,n,r);},use(e){if(c){console.warn("[vide] Cannot use plugin after destroy");return}let n=e.setup(f);n&&y.push(n);},setPluginData(e,n){if(o.set(e,n),e==="qualities")i("qualitiesavailable",{qualities:n});else if(e==="currentQuality"){let r=n;i("qualitychange",{from:R,to:r}),R=r;}},getPluginData(e){return o.get(e)},destroy(){if(!c){c=true,d&&(d.unload(t),d=null);for(let e of y)try{e();}catch(n){console.error("[vide] Plugin cleanup error:",n);}y.length=0,i("destroy",void 0),Y(),E.clear(),o.clear();}}};return f._setState=s,f}exports.ERR_DASH_IMPORT=G;exports.ERR_DASH_PLAYBACK=J;exports.ERR_DRM_CERTIFICATE=te;exports.ERR_DRM_DETECTION=Z;exports.ERR_DRM_LICENSE=ee;exports.ERR_DRM_UNSUPPORTED=X;exports.ERR_HLS_FATAL=z;exports.ERR_HLS_IMPORT=$;exports.ERR_HLS_UNSUPPORTED=B;exports.ERR_MEDIA=F;exports.createPlayer=ie;return exports;})({});
|