vidply 1.2.0 → 1.2.1
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 +946 -946
- package/dist/dev/{vidply.AudioDescriptionManager-R47Q4YR4.js → vidply.AudioDescriptionManager-6RFVF27Z.js} +275 -19
- package/dist/dev/vidply.AudioDescriptionManager-6RFVF27Z.js.map +7 -0
- package/dist/dev/{vidply.CaptionStyleMenu-7XHRBWUM.js → vidply.CaptionStyleMenu-R2SCQ6VP.js} +4 -4
- package/dist/dev/{vidply.DASHRenderer-PWEMC3BT.js → vidply.DASHRenderer-EOVEW73H.js} +3 -3
- package/dist/dev/vidply.DASHRenderer-EOVEW73H.js.map +7 -0
- package/dist/dev/{vidply.FloatingPlayerManager-PKNNNAS2.js → vidply.FloatingPlayerManager-V5XQWS75.js} +5 -5
- package/dist/dev/vidply.FloatingPlayerManager-V5XQWS75.js.map +7 -0
- package/dist/dev/{vidply.HLSRenderer-E7RQ74HI.js → vidply.HLSRenderer-ZBEFVH5W.js} +4 -4
- package/dist/dev/vidply.HLSRenderer-ZBEFVH5W.js.map +7 -0
- package/dist/dev/vidply.HTML5Renderer-P7ICKYU4.js +12 -0
- package/dist/dev/{vidply.SignLanguageManager-FET5FQZ7.js → vidply.SignLanguageManager-7IAJOVF6.js} +8 -8
- package/dist/dev/vidply.SignLanguageManager-7IAJOVF6.js.map +7 -0
- package/dist/dev/{vidply.SoundCloudRenderer-RVSJZODO.js → vidply.SoundCloudRenderer-OA7QQYGN.js} +3 -3
- package/dist/dev/vidply.SoundCloudRenderer-OA7QQYGN.js.map +7 -0
- package/dist/dev/{vidply.TranscriptManager-5GXOQCLX.js → vidply.TranscriptManager-BPM3T23L.js} +10 -10
- package/dist/dev/vidply.TranscriptManager-BPM3T23L.js.map +7 -0
- package/dist/dev/{vidply.VimeoRenderer-ER2LSBBW.js → vidply.VimeoRenderer-BRHFYPNJ.js} +3 -3
- package/dist/dev/vidply.VimeoRenderer-BRHFYPNJ.js.map +7 -0
- package/dist/dev/{vidply.YouTubeRenderer-NFTOWJAB.js → vidply.YouTubeRenderer-HRTN4EJ5.js} +3 -3
- package/dist/dev/vidply.YouTubeRenderer-HRTN4EJ5.js.map +7 -0
- package/dist/dev/{vidply.chunk-6RQA4ROD.js → vidply.chunk-5IK3IC5V.js} +2 -2
- package/dist/dev/{vidply.chunk-JJ47NO24.js → vidply.chunk-C55OBT5H.js} +2 -2
- package/dist/dev/vidply.chunk-C55OBT5H.js.map +7 -0
- package/dist/dev/{vidply.chunk-DZSDO3B7.js → vidply.chunk-HOYEMJSD.js} +2 -2
- package/dist/dev/{vidply.chunk-VMSQAZM7.js → vidply.chunk-JAKZNGOR.js} +2 -2
- package/dist/dev/{vidply.chunk-64WXMTGL.js → vidply.chunk-LDVFAFGC.js} +5 -5
- package/dist/dev/vidply.chunk-LDVFAFGC.js.map +7 -0
- package/dist/dev/{vidply.chunk-RZWZGDV7.js → vidply.chunk-NSMAZCMB.js} +6 -6
- package/dist/dev/vidply.chunk-NSMAZCMB.js.map +7 -0
- package/dist/dev/{vidply.chunk-KI7C3QVL.js → vidply.chunk-RQG3MA7W.js} +2 -2
- package/dist/dev/vidply.chunk-RQG3MA7W.js.map +7 -0
- package/dist/dev/{vidply.chunk-BNFIUL2Z.js → vidply.chunk-UHMVDBDB.js} +3 -3
- package/dist/dev/vidply.chunk-UHMVDBDB.js.map +7 -0
- package/dist/dev/{vidply.chunk-NQPURMQY.js → vidply.chunk-W5BR65JY.js} +6 -6
- package/dist/dev/vidply.chunk-W5BR65JY.js.map +7 -0
- package/dist/dev/{vidply.chunk-W25HUCHS.js → vidply.chunk-XAK3DPTO.js} +2 -2
- package/dist/dev/vidply.chunk-XAK3DPTO.js.map +7 -0
- package/dist/dev/{vidply.chunk-SK4V2DAU.js → vidply.chunk-YVCYQZJI.js} +3 -3
- package/dist/dev/{vidply.de-4YAT7FFM.js → vidply.de-5W5LBFSJ.js} +2 -2
- package/dist/dev/vidply.de-5W5LBFSJ.js.map +7 -0
- package/dist/dev/{vidply.es-LEWIRUBH.js → vidply.es-SHDAT6L6.js} +2 -2
- package/dist/dev/vidply.es-SHDAT6L6.js.map +7 -0
- package/dist/dev/vidply.esm.js +73 -34
- package/dist/dev/vidply.esm.js.map +2 -2
- package/dist/dev/{vidply.fr-Q4GV2NOE.js → vidply.fr-2JANOMNB.js} +2 -2
- package/dist/dev/vidply.fr-2JANOMNB.js.map +7 -0
- package/dist/dev/{vidply.ja-S6ITA6WU.js → vidply.ja-WWMSTEJH.js} +2 -2
- package/dist/dev/vidply.ja-WWMSTEJH.js.map +7 -0
- package/dist/legacy/vidply.js +345 -32
- package/dist/legacy/vidply.js.map +3 -3
- package/dist/legacy/vidply.min.js +2 -2
- package/dist/legacy/vidply.min.meta.json +66 -47
- package/dist/prod/vidply.AudioDescriptionManager-YTDVDQBO.min.js +6 -0
- package/dist/prod/{vidply.CaptionStyleMenu-M3KVQWB5.min.js → vidply.CaptionStyleMenu-2AFF3HF2.min.js} +2 -2
- package/dist/prod/{vidply.DASHRenderer-DN3S27AV.min.js → vidply.DASHRenderer-URDOTOKS.min.js} +2 -2
- package/dist/prod/{vidply.FloatingPlayerManager-SKAZ4J43.min.js → vidply.FloatingPlayerManager-QUBFK7CQ.min.js} +2 -2
- package/dist/prod/{vidply.HLSRenderer-62HH4YTK.min.js → vidply.HLSRenderer-46KNUVAB.min.js} +2 -2
- package/dist/prod/vidply.HTML5Renderer-7TQDMIGY.min.js +6 -0
- package/dist/prod/{vidply.SignLanguageManager-V3OBTSSF.min.js → vidply.SignLanguageManager-H4C36EVL.min.js} +2 -2
- package/dist/prod/{vidply.SoundCloudRenderer-CXRVZIAJ.min.js → vidply.SoundCloudRenderer-OYSWMW7D.min.js} +2 -2
- package/dist/prod/{vidply.TranscriptManager-SYM3DFUY.min.js → vidply.TranscriptManager-BA3DAS63.min.js} +2 -2
- package/dist/prod/{vidply.VimeoRenderer-72TWRYFQ.min.js → vidply.VimeoRenderer-NF3COTHU.min.js} +2 -2
- package/dist/prod/{vidply.YouTubeRenderer-UMHEV3KD.min.js → vidply.YouTubeRenderer-UCQKYIJ4.min.js} +2 -2
- package/dist/prod/{vidply.chunk-Z3YDSA7O.min.js → vidply.chunk-2HNCP64N.min.js} +1 -1
- package/dist/prod/{vidply.chunk-EKEYJWMG.min.js → vidply.chunk-6ECBIYVI.min.js} +2 -2
- package/dist/prod/{vidply.chunk-YEENJS3Q.min.js → vidply.chunk-7S5AFTST.min.js} +2 -2
- package/dist/prod/{vidply.chunk-P4UXOHWA.min.js → vidply.chunk-EUOA2DJK.min.js} +1 -1
- package/dist/prod/{vidply.chunk-2TB6MUHO.min.js → vidply.chunk-G6KGXNEW.min.js} +1 -1
- package/dist/prod/{vidply.chunk-ABPXVDLZ.min.js → vidply.chunk-JPMAK3NS.min.js} +1 -1
- package/dist/prod/{vidply.chunk-P3PQBY7N.min.js → vidply.chunk-L4O44K63.min.js} +1 -1
- package/dist/prod/{vidply.chunk-WX3MVEAL.min.js → vidply.chunk-M76ABMKB.min.js} +1 -1
- package/dist/prod/{vidply.chunk-TM6AXJVD.min.js → vidply.chunk-WRVDVD33.min.js} +2 -2
- package/dist/prod/{vidply.chunk-RI3X7WHK.min.js → vidply.chunk-X2FQEQYR.min.js} +2 -2
- package/dist/prod/{vidply.chunk-UK7YGOB5.min.js → vidply.chunk-XXUH7ADU.min.js} +2 -2
- package/dist/prod/{vidply.de-BCHXRQ53.min.js → vidply.de-JMCATTKZ.min.js} +1 -1
- package/dist/prod/{vidply.es-PICAKMZD.min.js → vidply.es-YVG37V7Z.min.js} +1 -1
- package/dist/prod/vidply.esm.min.js +2 -2
- package/dist/prod/{vidply.fr-ZILI7CDR.min.js → vidply.fr-OGKGN2R4.min.js} +1 -1
- package/dist/prod/{vidply.ja-5WQ4OK4J.min.js → vidply.ja-Z6DS7QLS.min.js} +1 -1
- package/dist/vidply.css +5796 -5796
- package/dist/vidply.esm.min.meta.json +148 -135
- package/package.json +7 -7
- package/src/controls/CaptionManager.ts +598 -598
- package/src/controls/ControlBar.ts +4159 -4159
- package/src/controls/KeyboardManager.ts +383 -383
- package/src/controls/SettingsDialog.ts +488 -488
- package/src/controls/TranscriptManager.ts +2426 -2426
- package/src/core/AudioDescriptionManager.ts +863 -774
- package/src/core/DescriptionSpeechManager.ts +232 -0
- package/src/core/FloatingPlayerManager.ts +674 -674
- package/src/core/LazyInit.ts +80 -80
- package/src/core/MetadataAlertsManager.ts +514 -514
- package/src/core/Player.ts +2915 -2872
- package/src/core/PosterManager.ts +169 -169
- package/src/core/PseudoFullscreen.ts +179 -179
- package/src/core/ResponsiveManager.ts +231 -231
- package/src/core/ResumeManager.ts +236 -236
- package/src/core/SignLanguageManager.ts +1308 -1308
- package/src/core/ThemeManager.ts +157 -157
- package/src/features/PlaylistManager.ts +1838 -1827
- package/src/i18n/i18n.ts +223 -223
- package/src/i18n/languages/de.ts +217 -217
- package/src/i18n/languages/en.ts +218 -218
- package/src/i18n/languages/es.ts +214 -214
- package/src/i18n/languages/fr.ts +214 -214
- package/src/i18n/languages/ja.ts +214 -214
- package/src/icons/Icons.ts +167 -167
- package/src/index.ts +196 -193
- package/src/renderers/DASHRenderer.ts +1077 -1077
- package/src/renderers/HLSRenderer.ts +944 -944
- package/src/renderers/HTML5Renderer.ts +389 -389
- package/src/renderers/SoundCloudRenderer.ts +437 -437
- package/src/renderers/VimeoRenderer.ts +298 -298
- package/src/renderers/YouTubeRenderer.ts +290 -290
- package/src/styles/vidply.css +5796 -5796
- package/src/types/events.ts +124 -122
- package/src/types/globals.d.ts +313 -313
- package/src/types/options.ts +185 -182
- package/src/types/renderer.ts +58 -58
- package/src/utils/DOMUtils.ts +281 -281
- package/src/utils/DownloadInfo.ts +171 -171
- package/src/utils/DraggablePanel.ts +539 -539
- package/src/utils/DraggablePanelMenu.ts +195 -195
- package/src/utils/DraggableResizable.ts +997 -997
- package/src/utils/EventEmitter.ts +59 -59
- package/src/utils/FormUtils.ts +95 -95
- package/src/utils/MenuFactory.ts +483 -483
- package/src/utils/Sanitize.ts +70 -70
- package/src/utils/SettingsMenuFactory.ts +289 -289
- package/src/utils/StorageManager.ts +287 -287
- package/src/utils/TrackLabelUtils.ts +52 -52
- package/src/utils/UrlSafe.ts +69 -69
- package/src/utils/VideoFrameCapture.ts +114 -114
- package/src/utils/WindowComponents.ts +250 -250
- package/dist/dev/vidply.AudioDescriptionManager-R47Q4YR4.js.map +0 -7
- package/dist/dev/vidply.DASHRenderer-PWEMC3BT.js.map +0 -7
- package/dist/dev/vidply.FloatingPlayerManager-PKNNNAS2.js.map +0 -7
- package/dist/dev/vidply.HLSRenderer-E7RQ74HI.js.map +0 -7
- package/dist/dev/vidply.HTML5Renderer-BU4QJJJY.js +0 -12
- package/dist/dev/vidply.SignLanguageManager-FET5FQZ7.js.map +0 -7
- package/dist/dev/vidply.SoundCloudRenderer-RVSJZODO.js.map +0 -7
- package/dist/dev/vidply.TranscriptManager-5GXOQCLX.js.map +0 -7
- package/dist/dev/vidply.VimeoRenderer-ER2LSBBW.js.map +0 -7
- package/dist/dev/vidply.YouTubeRenderer-NFTOWJAB.js.map +0 -7
- package/dist/dev/vidply.chunk-64WXMTGL.js.map +0 -7
- package/dist/dev/vidply.chunk-BNFIUL2Z.js.map +0 -7
- package/dist/dev/vidply.chunk-JJ47NO24.js.map +0 -7
- package/dist/dev/vidply.chunk-KI7C3QVL.js.map +0 -7
- package/dist/dev/vidply.chunk-NQPURMQY.js.map +0 -7
- package/dist/dev/vidply.chunk-RZWZGDV7.js.map +0 -7
- package/dist/dev/vidply.chunk-W25HUCHS.js.map +0 -7
- package/dist/dev/vidply.de-4YAT7FFM.js.map +0 -7
- package/dist/dev/vidply.es-LEWIRUBH.js.map +0 -7
- package/dist/dev/vidply.fr-Q4GV2NOE.js.map +0 -7
- package/dist/dev/vidply.ja-S6ITA6WU.js.map +0 -7
- package/dist/prod/vidply.AudioDescriptionManager-RHLIJW5C.min.js +0 -6
- package/dist/prod/vidply.HTML5Renderer-IU5T3WEW.min.js +0 -6
- /package/dist/dev/{vidply.CaptionStyleMenu-7XHRBWUM.js.map → vidply.CaptionStyleMenu-R2SCQ6VP.js.map} +0 -0
- /package/dist/dev/{vidply.HTML5Renderer-BU4QJJJY.js.map → vidply.HTML5Renderer-P7ICKYU4.js.map} +0 -0
- /package/dist/dev/{vidply.chunk-6RQA4ROD.js.map → vidply.chunk-5IK3IC5V.js.map} +0 -0
- /package/dist/dev/{vidply.chunk-DZSDO3B7.js.map → vidply.chunk-HOYEMJSD.js.map} +0 -0
- /package/dist/dev/{vidply.chunk-VMSQAZM7.js.map → vidply.chunk-JAKZNGOR.js.map} +0 -0
- /package/dist/dev/{vidply.chunk-SK4V2DAU.js.map → vidply.chunk-YVCYQZJI.js.map} +0 -0
package/src/core/LazyInit.ts
CHANGED
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Lazy instantiation helpers for {@link Player}.
|
|
3
|
-
*
|
|
4
|
-
* Extracted from `index.ts` so that:
|
|
5
|
-
*
|
|
6
|
-
* 1. The `Player.observeLazy` public API is a real static method on the
|
|
7
|
-
* Player class rather than a side-effectful assignment done from
|
|
8
|
-
* `index.ts` at module load time.
|
|
9
|
-
* 2. Consumers that want the lazy-init API without the auto-init
|
|
10
|
-
* entry point can import this module explicitly.
|
|
11
|
-
* 3. Both the auto-init flow (`initializePlayers`) and the manual flow
|
|
12
|
-
* (`Player.observeLazy`) share the same `IntersectionObserver`
|
|
13
|
-
* bookkeeping, so cancellation and rect-based eager fallbacks stay
|
|
14
|
-
* consistent.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
export type LazyHandle = { cancel: () => void } | null;
|
|
18
|
-
|
|
19
|
-
export interface LazyInitEntry<TOptions> {
|
|
20
|
-
observer: IntersectionObserver;
|
|
21
|
-
options: TOptions;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/** Factory the observer invokes once an element is ready to promote. */
|
|
25
|
-
export type LazyPlayerFactory<TOptions> = (
|
|
26
|
-
element: HTMLElement,
|
|
27
|
-
options: TOptions
|
|
28
|
-
) => void;
|
|
29
|
-
|
|
30
|
-
const pendingByElement = new WeakMap<HTMLElement, LazyInitEntry<unknown>>();
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Begin observing `element` and construct a player when it scrolls into
|
|
34
|
-
* view (or immediately if its rect is too small to be a meaningful
|
|
35
|
-
* intersection target). Safe to call multiple times — a duplicate call
|
|
36
|
-
* cancels the previous observer first.
|
|
37
|
-
*/
|
|
38
|
-
export function observeForLazyInit<TOptions>(
|
|
39
|
-
element: HTMLElement,
|
|
40
|
-
options: TOptions,
|
|
41
|
-
margin: string,
|
|
42
|
-
factory: LazyPlayerFactory<TOptions>
|
|
43
|
-
): void {
|
|
44
|
-
const existing = pendingByElement.get(element);
|
|
45
|
-
if (existing) {
|
|
46
|
-
existing.observer.unobserve(element);
|
|
47
|
-
pendingByElement.delete(element);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const rect = element.getBoundingClientRect();
|
|
51
|
-
if (rect.height < 20) {
|
|
52
|
-
factory(element, options);
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
const observer = new IntersectionObserver(
|
|
57
|
-
(entries) => {
|
|
58
|
-
entries.forEach((entry) => {
|
|
59
|
-
if (entry.isIntersecting) {
|
|
60
|
-
observer.unobserve(entry.target);
|
|
61
|
-
pendingByElement.delete(entry.target as HTMLElement);
|
|
62
|
-
factory(entry.target as HTMLElement, options);
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
},
|
|
66
|
-
{ rootMargin: margin, threshold: 0 }
|
|
67
|
-
);
|
|
68
|
-
|
|
69
|
-
observer.observe(element);
|
|
70
|
-
pendingByElement.set(element, { observer, options } as LazyInitEntry<unknown>);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/** Cancel a scheduled lazy init for `element`, if any. */
|
|
74
|
-
export function cancelLazyInit(element: HTMLElement): void {
|
|
75
|
-
const pending = pendingByElement.get(element);
|
|
76
|
-
if (pending) {
|
|
77
|
-
pending.observer.unobserve(element);
|
|
78
|
-
pendingByElement.delete(element);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Lazy instantiation helpers for {@link Player}.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from `index.ts` so that:
|
|
5
|
+
*
|
|
6
|
+
* 1. The `Player.observeLazy` public API is a real static method on the
|
|
7
|
+
* Player class rather than a side-effectful assignment done from
|
|
8
|
+
* `index.ts` at module load time.
|
|
9
|
+
* 2. Consumers that want the lazy-init API without the auto-init
|
|
10
|
+
* entry point can import this module explicitly.
|
|
11
|
+
* 3. Both the auto-init flow (`initializePlayers`) and the manual flow
|
|
12
|
+
* (`Player.observeLazy`) share the same `IntersectionObserver`
|
|
13
|
+
* bookkeeping, so cancellation and rect-based eager fallbacks stay
|
|
14
|
+
* consistent.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
export type LazyHandle = { cancel: () => void } | null;
|
|
18
|
+
|
|
19
|
+
export interface LazyInitEntry<TOptions> {
|
|
20
|
+
observer: IntersectionObserver;
|
|
21
|
+
options: TOptions;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** Factory the observer invokes once an element is ready to promote. */
|
|
25
|
+
export type LazyPlayerFactory<TOptions> = (
|
|
26
|
+
element: HTMLElement,
|
|
27
|
+
options: TOptions
|
|
28
|
+
) => void;
|
|
29
|
+
|
|
30
|
+
const pendingByElement = new WeakMap<HTMLElement, LazyInitEntry<unknown>>();
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Begin observing `element` and construct a player when it scrolls into
|
|
34
|
+
* view (or immediately if its rect is too small to be a meaningful
|
|
35
|
+
* intersection target). Safe to call multiple times — a duplicate call
|
|
36
|
+
* cancels the previous observer first.
|
|
37
|
+
*/
|
|
38
|
+
export function observeForLazyInit<TOptions>(
|
|
39
|
+
element: HTMLElement,
|
|
40
|
+
options: TOptions,
|
|
41
|
+
margin: string,
|
|
42
|
+
factory: LazyPlayerFactory<TOptions>
|
|
43
|
+
): void {
|
|
44
|
+
const existing = pendingByElement.get(element);
|
|
45
|
+
if (existing) {
|
|
46
|
+
existing.observer.unobserve(element);
|
|
47
|
+
pendingByElement.delete(element);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const rect = element.getBoundingClientRect();
|
|
51
|
+
if (rect.height < 20) {
|
|
52
|
+
factory(element, options);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const observer = new IntersectionObserver(
|
|
57
|
+
(entries) => {
|
|
58
|
+
entries.forEach((entry) => {
|
|
59
|
+
if (entry.isIntersecting) {
|
|
60
|
+
observer.unobserve(entry.target);
|
|
61
|
+
pendingByElement.delete(entry.target as HTMLElement);
|
|
62
|
+
factory(entry.target as HTMLElement, options);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
},
|
|
66
|
+
{ rootMargin: margin, threshold: 0 }
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
observer.observe(element);
|
|
70
|
+
pendingByElement.set(element, { observer, options } as LazyInitEntry<unknown>);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/** Cancel a scheduled lazy init for `element`, if any. */
|
|
74
|
+
export function cancelLazyInit(element: HTMLElement): void {
|
|
75
|
+
const pending = pendingByElement.get(element);
|
|
76
|
+
if (pending) {
|
|
77
|
+
pending.observer.unobserve(element);
|
|
78
|
+
pendingByElement.delete(element);
|
|
79
|
+
}
|
|
80
|
+
}
|