@reacttv/embed-kit 0.4.6
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 +65 -0
- package/dist/elements/_base/EmbedVideoElement.d.ts +84 -0
- package/dist/elements/_base/EmbedVideoElement.d.ts.map +1 -0
- package/dist/elements/_base/EmbedVideoElement.js +246 -0
- package/dist/elements/_base/EmbedVideoElement.js.map +1 -0
- package/dist/elements/_base/createIframe.d.ts +7 -0
- package/dist/elements/_base/createIframe.d.ts.map +1 -0
- package/dist/elements/_base/createIframe.js +14 -0
- package/dist/elements/_base/createIframe.js.map +1 -0
- package/dist/elements/_base/index.d.ts +5 -0
- package/dist/elements/_base/index.d.ts.map +1 -0
- package/dist/elements/_base/index.js +5 -0
- package/dist/elements/_base/index.js.map +1 -0
- package/dist/elements/_base/loadScript.d.ts +21 -0
- package/dist/elements/_base/loadScript.d.ts.map +1 -0
- package/dist/elements/_base/loadScript.js +24 -0
- package/dist/elements/_base/loadScript.js.map +1 -0
- package/dist/elements/_base/player.types.d.ts +59 -0
- package/dist/elements/_base/player.types.d.ts.map +1 -0
- package/dist/elements/_base/player.types.js +16 -0
- package/dist/elements/_base/player.types.js.map +1 -0
- package/dist/elements/dailymotion/constants.d.ts +15 -0
- package/dist/elements/dailymotion/constants.d.ts.map +1 -0
- package/dist/elements/dailymotion/constants.js +15 -0
- package/dist/elements/dailymotion/constants.js.map +1 -0
- package/dist/elements/dailymotion/player.d.ts +2 -0
- package/dist/elements/dailymotion/player.d.ts.map +1 -0
- package/dist/elements/dailymotion/player.js +268 -0
- package/dist/elements/dailymotion/player.js.map +1 -0
- package/dist/elements/dailymotion/player.types.d.ts +144 -0
- package/dist/elements/dailymotion/player.types.d.ts.map +1 -0
- package/dist/elements/dailymotion/player.types.js +4 -0
- package/dist/elements/dailymotion/player.types.js.map +1 -0
- package/dist/elements/tiktok/constants.d.ts +19 -0
- package/dist/elements/tiktok/constants.d.ts.map +1 -0
- package/dist/elements/tiktok/constants.js +19 -0
- package/dist/elements/tiktok/constants.js.map +1 -0
- package/dist/elements/tiktok/player.d.ts +2 -0
- package/dist/elements/tiktok/player.d.ts.map +1 -0
- package/dist/elements/tiktok/player.js +224 -0
- package/dist/elements/tiktok/player.js.map +1 -0
- package/dist/elements/twitch/constants.d.ts +61 -0
- package/dist/elements/twitch/constants.d.ts.map +1 -0
- package/dist/elements/twitch/constants.js +61 -0
- package/dist/elements/twitch/constants.js.map +1 -0
- package/dist/elements/twitch/player.d.ts +2 -0
- package/dist/elements/twitch/player.d.ts.map +1 -0
- package/dist/elements/twitch/player.js +262 -0
- package/dist/elements/twitch/player.js.map +1 -0
- package/dist/elements/twitch/player.types.d.ts +76 -0
- package/dist/elements/twitch/player.types.d.ts.map +1 -0
- package/dist/elements/twitch/player.types.js +7 -0
- package/dist/elements/twitch/player.types.js.map +1 -0
- package/dist/elements/vimeo/constants.d.ts +27 -0
- package/dist/elements/vimeo/constants.d.ts.map +1 -0
- package/dist/elements/vimeo/constants.js +29 -0
- package/dist/elements/vimeo/constants.js.map +1 -0
- package/dist/elements/vimeo/player.d.ts +9 -0
- package/dist/elements/vimeo/player.d.ts.map +1 -0
- package/dist/elements/vimeo/player.js +217 -0
- package/dist/elements/vimeo/player.js.map +1 -0
- package/dist/elements/vimeo/player.types.d.ts +38 -0
- package/dist/elements/vimeo/player.types.d.ts.map +1 -0
- package/dist/elements/vimeo/player.types.js +6 -0
- package/dist/elements/vimeo/player.types.js.map +1 -0
- package/dist/elements/youtube/constants.d.ts +15 -0
- package/dist/elements/youtube/constants.d.ts.map +1 -0
- package/dist/elements/youtube/constants.js +15 -0
- package/dist/elements/youtube/constants.js.map +1 -0
- package/dist/elements/youtube/helpers/parseYouTubeUrl.d.ts +4 -0
- package/dist/elements/youtube/helpers/parseYouTubeUrl.d.ts.map +1 -0
- package/dist/elements/youtube/helpers/parseYouTubeUrl.js +10 -0
- package/dist/elements/youtube/helpers/parseYouTubeUrl.js.map +1 -0
- package/dist/elements/youtube/player.d.ts +2 -0
- package/dist/elements/youtube/player.d.ts.map +1 -0
- package/dist/elements/youtube/player.js +213 -0
- package/dist/elements/youtube/player.js.map +1 -0
- package/dist/elements/youtube/player.types.d.ts +79 -0
- package/dist/elements/youtube/player.types.d.ts.map +1 -0
- package/dist/elements/youtube/player.types.js +8 -0
- package/dist/elements/youtube/player.types.js.map +1 -0
- package/dist/react-embed-kit/HtmlPlayer.d.ts +23 -0
- package/dist/react-embed-kit/HtmlPlayer.d.ts.map +1 -0
- package/dist/react-embed-kit/HtmlPlayer.js +61 -0
- package/dist/react-embed-kit/HtmlPlayer.js.map +1 -0
- package/dist/react-embed-kit/ReactEmbedKit.d.ts +28 -0
- package/dist/react-embed-kit/ReactEmbedKit.d.ts.map +1 -0
- package/dist/react-embed-kit/ReactEmbedKit.js +114 -0
- package/dist/react-embed-kit/ReactEmbedKit.js.map +1 -0
- package/dist/react-embed-kit/constants.d.ts +3 -0
- package/dist/react-embed-kit/constants.d.ts.map +1 -0
- package/dist/react-embed-kit/constants.js +3 -0
- package/dist/react-embed-kit/constants.js.map +1 -0
- package/dist/react-embed-kit/embed-elements.d.ts +64 -0
- package/dist/react-embed-kit/embed-elements.d.ts.map +1 -0
- package/dist/react-embed-kit/embed-elements.js +2 -0
- package/dist/react-embed-kit/embed-elements.js.map +1 -0
- package/dist/react-embed-kit/index.d.ts +6 -0
- package/dist/react-embed-kit/index.d.ts.map +1 -0
- package/dist/react-embed-kit/index.js +4 -0
- package/dist/react-embed-kit/index.js.map +1 -0
- package/dist/react-embed-kit/providers.d.ts +22 -0
- package/dist/react-embed-kit/providers.d.ts.map +1 -0
- package/dist/react-embed-kit/providers.js +72 -0
- package/dist/react-embed-kit/providers.js.map +1 -0
- package/dist/react-embed-kit/registerEmbedElements.d.ts +11 -0
- package/dist/react-embed-kit/registerEmbedElements.d.ts.map +1 -0
- package/dist/react-embed-kit/registerEmbedElements.js +11 -0
- package/dist/react-embed-kit/registerEmbedElements.js.map +1 -0
- package/dist/react-embed-kit/test/ReactEmbedKitTestPage.d.ts +8 -0
- package/dist/react-embed-kit/test/ReactEmbedKitTestPage.d.ts.map +1 -0
- package/dist/react-embed-kit/test/ReactEmbedKitTestPage.js +126 -0
- package/dist/react-embed-kit/test/ReactEmbedKitTestPage.js.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
declare module "react" {
|
|
3
|
+
namespace JSX {
|
|
4
|
+
interface IntrinsicElements {
|
|
5
|
+
"youtube-video": React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement> & {
|
|
6
|
+
src?: string;
|
|
7
|
+
muted?: boolean | undefined;
|
|
8
|
+
width?: number | undefined;
|
|
9
|
+
height?: number | undefined;
|
|
10
|
+
controls?: string | undefined;
|
|
11
|
+
captions?: string | undefined;
|
|
12
|
+
annotations?: string | undefined;
|
|
13
|
+
playing?: string | undefined;
|
|
14
|
+
volume?: number | undefined;
|
|
15
|
+
}, HTMLElement>;
|
|
16
|
+
"vimeo-video": React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement> & {
|
|
17
|
+
src?: string;
|
|
18
|
+
muted?: boolean | undefined;
|
|
19
|
+
playing?: string | undefined;
|
|
20
|
+
width?: number | undefined;
|
|
21
|
+
height?: number | undefined;
|
|
22
|
+
controls?: string | undefined;
|
|
23
|
+
captions?: string | undefined;
|
|
24
|
+
annotations?: string | undefined;
|
|
25
|
+
volume?: number | undefined;
|
|
26
|
+
}, HTMLElement>;
|
|
27
|
+
"twitch-video": React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement> & {
|
|
28
|
+
src?: string;
|
|
29
|
+
muted?: boolean | undefined;
|
|
30
|
+
playing?: string | undefined;
|
|
31
|
+
width?: number | undefined;
|
|
32
|
+
height?: number | undefined;
|
|
33
|
+
controls?: string | undefined;
|
|
34
|
+
captions?: string | undefined;
|
|
35
|
+
annotations?: string | undefined;
|
|
36
|
+
volume?: number | undefined;
|
|
37
|
+
}, HTMLElement>;
|
|
38
|
+
"tiktok-video": React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement> & {
|
|
39
|
+
src?: string;
|
|
40
|
+
muted?: boolean | undefined;
|
|
41
|
+
playing?: string | undefined;
|
|
42
|
+
width?: number | undefined;
|
|
43
|
+
height?: number | undefined;
|
|
44
|
+
controls?: string | undefined;
|
|
45
|
+
captions?: string | undefined;
|
|
46
|
+
annotations?: string | undefined;
|
|
47
|
+
volume?: number | undefined;
|
|
48
|
+
}, HTMLElement>;
|
|
49
|
+
"dailymotion-video": React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement> & {
|
|
50
|
+
src?: string;
|
|
51
|
+
muted?: boolean | undefined;
|
|
52
|
+
playing?: string | undefined;
|
|
53
|
+
width?: number | undefined;
|
|
54
|
+
height?: number | undefined;
|
|
55
|
+
controls?: string | undefined;
|
|
56
|
+
captions?: string | undefined;
|
|
57
|
+
annotations?: string | undefined;
|
|
58
|
+
volume?: number | undefined;
|
|
59
|
+
}, HTMLElement>;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export {};
|
|
64
|
+
//# sourceMappingURL=embed-elements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embed-elements.d.ts","sourceRoot":"","sources":["../../src/react-embed-kit/embed-elements.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embed-elements.js","sourceRoot":"","sources":["../../src/react-embed-kit/embed-elements.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { ReactEmbedKit } from "./ReactEmbedKit.js";
|
|
2
|
+
export type { ReactEmbedKitProps } from "./ReactEmbedKit.js";
|
|
3
|
+
export { ReactEmbedKitTestPage } from "./test/ReactEmbedKitTestPage.js";
|
|
4
|
+
export { getProviderForUrl, loadPlayerModule, EMBED_TAG } from "./providers.js";
|
|
5
|
+
export type { ResolvedEmbed, EmbedTagName } from "./providers.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react-embed-kit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChF,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react-embed-kit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare const EMBED_TAG: {
|
|
2
|
+
readonly YOUTUBE: "youtube-video";
|
|
3
|
+
readonly TWITCH: "twitch-video";
|
|
4
|
+
readonly TIKTOK: "tiktok-video";
|
|
5
|
+
readonly DAILYMOTION: "dailymotion-video";
|
|
6
|
+
readonly VIMEO: "vimeo-video";
|
|
7
|
+
};
|
|
8
|
+
export type EmbedTagName = (typeof EMBED_TAG)[keyof typeof EMBED_TAG];
|
|
9
|
+
export interface ResolvedEmbed {
|
|
10
|
+
tagName: EmbedTagName;
|
|
11
|
+
url: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Parses a URL and returns the matching embed tag name and the URL to use as src.
|
|
15
|
+
* Tries each built-in provider (YouTube, Twitch, TikTok, Dailymotion, Vimeo) in order.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getProviderForUrl(url: string): ResolvedEmbed | null;
|
|
18
|
+
/**
|
|
19
|
+
* Ensures the custom element for the given tag is defined by loading its player module.
|
|
20
|
+
*/
|
|
21
|
+
export declare function loadPlayerModule(tagName: EmbedTagName): Promise<void>;
|
|
22
|
+
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/react-embed-kit/providers.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,SAAS;;;;;;CAMZ,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAEtE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,YAAY,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAoCnE;AAYD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAOrE"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { REGEX_WATCH, REGEX_SHORT, REGEX_EMBED } from "../elements/youtube/constants.js";
|
|
2
|
+
import { REGEX_VIDEO as TWITCH_VIDEO, REGEX_CLIPS_HOST, REGEX_CLIP, REGEX_CHANNEL } from "../elements/twitch/constants.js";
|
|
3
|
+
import { REGEX_PLAYER as TIKTOK_PLAYER, REGEX_VM, REGEX_VIDEO as TIKTOK_VIDEO, REGEX_EMBED as TIKTOK_EMBED, REGEX_SHARE as TIKTOK_SHARE } from "../elements/tiktok/constants.js";
|
|
4
|
+
import { REGEX_VIDEO as DM_VIDEO, REGEX_SHORT as DM_SHORT, REGEX_EMBED as DM_EMBED } from "../elements/dailymotion/constants.js";
|
|
5
|
+
import { REGEX_PLAYER as VIMEO_PLAYER, REGEX_DIRECT, REGEX_CHANNELS, REGEX_GROUPS, } from "../elements/vimeo/constants.js";
|
|
6
|
+
export const EMBED_TAG = {
|
|
7
|
+
YOUTUBE: "youtube-video",
|
|
8
|
+
TWITCH: "twitch-video",
|
|
9
|
+
TIKTOK: "tiktok-video",
|
|
10
|
+
DAILYMOTION: "dailymotion-video",
|
|
11
|
+
VIMEO: "vimeo-video",
|
|
12
|
+
};
|
|
13
|
+
function match(url, regex) {
|
|
14
|
+
return regex.test(url.trim());
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Parses a URL and returns the matching embed tag name and the URL to use as src.
|
|
18
|
+
* Tries each built-in provider (YouTube, Twitch, TikTok, Dailymotion, Vimeo) in order.
|
|
19
|
+
*/
|
|
20
|
+
export function getProviderForUrl(url) {
|
|
21
|
+
const trimmed = url?.trim();
|
|
22
|
+
if (!trimmed)
|
|
23
|
+
return null;
|
|
24
|
+
if (match(trimmed, REGEX_WATCH) || match(trimmed, REGEX_SHORT) || match(trimmed, REGEX_EMBED)) {
|
|
25
|
+
return { tagName: EMBED_TAG.YOUTUBE, url: trimmed };
|
|
26
|
+
}
|
|
27
|
+
if (match(trimmed, TWITCH_VIDEO) ||
|
|
28
|
+
match(trimmed, REGEX_CLIPS_HOST) ||
|
|
29
|
+
match(trimmed, REGEX_CLIP) ||
|
|
30
|
+
match(trimmed, REGEX_CHANNEL)) {
|
|
31
|
+
return { tagName: EMBED_TAG.TWITCH, url: trimmed };
|
|
32
|
+
}
|
|
33
|
+
if (match(trimmed, TIKTOK_PLAYER) ||
|
|
34
|
+
match(trimmed, REGEX_VM) ||
|
|
35
|
+
match(trimmed, TIKTOK_VIDEO) ||
|
|
36
|
+
match(trimmed, TIKTOK_EMBED) ||
|
|
37
|
+
match(trimmed, TIKTOK_SHARE)) {
|
|
38
|
+
return { tagName: EMBED_TAG.TIKTOK, url: trimmed };
|
|
39
|
+
}
|
|
40
|
+
if (match(trimmed, DM_VIDEO) || match(trimmed, DM_SHORT) || match(trimmed, DM_EMBED)) {
|
|
41
|
+
return { tagName: EMBED_TAG.DAILYMOTION, url: trimmed };
|
|
42
|
+
}
|
|
43
|
+
if (match(trimmed, VIMEO_PLAYER) ||
|
|
44
|
+
match(trimmed, REGEX_DIRECT) ||
|
|
45
|
+
match(trimmed, REGEX_CHANNELS) ||
|
|
46
|
+
match(trimmed, REGEX_GROUPS)) {
|
|
47
|
+
return { tagName: EMBED_TAG.VIMEO, url: trimmed };
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
const PLAYER_MODULE_PATHS = {
|
|
52
|
+
[EMBED_TAG.YOUTUBE]: () => import("../elements/youtube/player.js"),
|
|
53
|
+
[EMBED_TAG.TWITCH]: () => import("../elements/twitch/player.js"),
|
|
54
|
+
[EMBED_TAG.TIKTOK]: () => import("../elements/tiktok/player.js"),
|
|
55
|
+
[EMBED_TAG.DAILYMOTION]: () => import("../elements/dailymotion/player.js"),
|
|
56
|
+
[EMBED_TAG.VIMEO]: () => import("../elements/vimeo/player.js"),
|
|
57
|
+
};
|
|
58
|
+
const loadedTags = new Set();
|
|
59
|
+
/**
|
|
60
|
+
* Ensures the custom element for the given tag is defined by loading its player module.
|
|
61
|
+
*/
|
|
62
|
+
export function loadPlayerModule(tagName) {
|
|
63
|
+
if (loadedTags.has(tagName))
|
|
64
|
+
return Promise.resolve();
|
|
65
|
+
const loader = PLAYER_MODULE_PATHS[tagName];
|
|
66
|
+
if (!loader)
|
|
67
|
+
return Promise.resolve();
|
|
68
|
+
return loader().then(() => {
|
|
69
|
+
loadedTags.add(tagName);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/react-embed-kit/providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Side-effect only: imports all embed player modules so their custom elements
|
|
3
|
+
* are defined. Dynamic-import this only in the browser so that code extending
|
|
4
|
+
* HTMLElement never runs on the server.
|
|
5
|
+
*/
|
|
6
|
+
import "../elements/youtube/player.js";
|
|
7
|
+
import "../elements/twitch/player.js";
|
|
8
|
+
import "../elements/vimeo/player.js";
|
|
9
|
+
import "../elements/tiktok/player.js";
|
|
10
|
+
import "../elements/dailymotion/player.js";
|
|
11
|
+
//# sourceMappingURL=registerEmbedElements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerEmbedElements.d.ts","sourceRoot":"","sources":["../../src/react-embed-kit/registerEmbedElements.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,6BAA6B,CAAC;AACrC,OAAO,8BAA8B,CAAC;AACtC,OAAO,mCAAmC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Side-effect only: imports all embed player modules so their custom elements
|
|
3
|
+
* are defined. Dynamic-import this only in the browser so that code extending
|
|
4
|
+
* HTMLElement never runs on the server.
|
|
5
|
+
*/
|
|
6
|
+
import "../elements/youtube/player.js";
|
|
7
|
+
import "../elements/twitch/player.js";
|
|
8
|
+
import "../elements/vimeo/player.js";
|
|
9
|
+
import "../elements/tiktok/player.js";
|
|
10
|
+
import "../elements/dailymotion/player.js";
|
|
11
|
+
//# sourceMappingURL=registerEmbedElements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerEmbedElements.js","sourceRoot":"","sources":["../../src/react-embed-kit/registerEmbedElements.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,6BAA6B,CAAC;AACrC,OAAO,8BAA8B,CAAC;AACtC,OAAO,mCAAmC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Test page component for ReactEmbedKit: URL input, embed, play/pause/seek/mute
|
|
4
|
+
* controls, and a data panel showing currentTime, duration, paused, muted,
|
|
5
|
+
* isBuffering, isSeeking.
|
|
6
|
+
*/
|
|
7
|
+
export declare function ReactEmbedKitTestPage(): React.ReactElement;
|
|
8
|
+
//# sourceMappingURL=ReactEmbedKitTestPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReactEmbedKitTestPage.d.ts","sourceRoot":"","sources":["../../../src/react-embed-kit/test/ReactEmbedKitTestPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAoC5D;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,KAAK,CAAC,YAAY,CA0O1D"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useState, useEffect, useMemo } from "react";
|
|
3
|
+
import { ReactEmbedKit } from "../ReactEmbedKit.js";
|
|
4
|
+
import { SOURCE_URL as YOUTUBE_SOURCE_URL, VIDEO_ID as YOUTUBE_VIDEO_ID, } from "../../elements/youtube/constants.js";
|
|
5
|
+
import { SOURCE_URL as VIMEO_SOURCE_URL } from "../../elements/vimeo/constants.js";
|
|
6
|
+
import { VIDEO_SOURCE_URL as TWITCH_VIDEO_SOURCE_URL } from "../../elements/twitch/constants.js";
|
|
7
|
+
import { SOURCE_URL as TIKTOK_SOURCE_URL } from "../../elements/tiktok/constants.js";
|
|
8
|
+
import { SOURCE_URL as DAILYMOTION_SOURCE_URL } from "../../elements/dailymotion/constants.js";
|
|
9
|
+
const PRESETS = [
|
|
10
|
+
{ label: "YouTube", url: YOUTUBE_SOURCE_URL },
|
|
11
|
+
{ label: "youtu.be", url: `https://youtu.be/${YOUTUBE_VIDEO_ID}` },
|
|
12
|
+
{ label: "Vimeo", url: VIMEO_SOURCE_URL },
|
|
13
|
+
{ label: "Twitch (video)", url: TWITCH_VIDEO_SOURCE_URL },
|
|
14
|
+
{ label: "TikTok", url: TIKTOK_SOURCE_URL },
|
|
15
|
+
{ label: "Dailymotion", url: DAILYMOTION_SOURCE_URL },
|
|
16
|
+
];
|
|
17
|
+
function formatTime(seconds) {
|
|
18
|
+
if (seconds == null || Number.isNaN(seconds))
|
|
19
|
+
return "—";
|
|
20
|
+
const m = Math.floor(seconds / 60);
|
|
21
|
+
const s = Math.floor(seconds % 60);
|
|
22
|
+
return `${m}:${String(s).padStart(2, "0")}`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Test page component for ReactEmbedKit: URL input, embed, play/pause/seek/mute
|
|
26
|
+
* controls, and a data panel showing currentTime, duration, paused, muted,
|
|
27
|
+
* isBuffering, isSeeking.
|
|
28
|
+
*/
|
|
29
|
+
export function ReactEmbedKitTestPage() {
|
|
30
|
+
const [muted, setMuted] = useState(false);
|
|
31
|
+
const [playing, setPlaying] = useState(false);
|
|
32
|
+
const [volume, setVolume] = useState(50);
|
|
33
|
+
const [url, setUrl] = useState(PRESETS[0]?.url ?? "");
|
|
34
|
+
const [player, setPlayer] = useState(null);
|
|
35
|
+
const [buffering, setBuffering] = useState(false);
|
|
36
|
+
const [controls, setControls] = useState(true);
|
|
37
|
+
const [captions, setCaptions] = useState(false);
|
|
38
|
+
const [annotations, setAnnotations] = useState(false);
|
|
39
|
+
const [data, setData] = useState({
|
|
40
|
+
currentTime: null,
|
|
41
|
+
duration: null,
|
|
42
|
+
paused: null,
|
|
43
|
+
muted: null,
|
|
44
|
+
volume: null,
|
|
45
|
+
});
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
setPlayer(null);
|
|
48
|
+
setBuffering(false);
|
|
49
|
+
}, [url]);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
if (!player) {
|
|
52
|
+
setData({ currentTime: null, duration: null, paused: null, muted: null, volume: null });
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
let cancelled = false;
|
|
56
|
+
const poll = () => {
|
|
57
|
+
if (cancelled)
|
|
58
|
+
return;
|
|
59
|
+
try {
|
|
60
|
+
const currentTime = player.currentTime;
|
|
61
|
+
const duration = player.duration;
|
|
62
|
+
const paused = player.paused;
|
|
63
|
+
const mutedVal = player.muted;
|
|
64
|
+
const volumeVal = player.volume;
|
|
65
|
+
if (!cancelled) {
|
|
66
|
+
setData({
|
|
67
|
+
currentTime: typeof currentTime === "number" ? currentTime : null,
|
|
68
|
+
duration: typeof duration === "number" ? duration : null,
|
|
69
|
+
paused: typeof paused === "boolean" ? paused : null,
|
|
70
|
+
muted: typeof mutedVal === "boolean" ? mutedVal : null,
|
|
71
|
+
volume: typeof volumeVal === "number" ? volumeVal : null,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// ignore
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
poll();
|
|
80
|
+
const id = setInterval(poll, 500);
|
|
81
|
+
return () => {
|
|
82
|
+
cancelled = true;
|
|
83
|
+
clearInterval(id);
|
|
84
|
+
};
|
|
85
|
+
}, [player]);
|
|
86
|
+
const dataRows = player
|
|
87
|
+
? [
|
|
88
|
+
["currentTime", formatTime(data.currentTime)],
|
|
89
|
+
["duration", formatTime(data.duration)],
|
|
90
|
+
["paused", String(data.paused)],
|
|
91
|
+
["muted", String(data.muted)],
|
|
92
|
+
["volume", data.volume != null ? `${Math.round(data.volume)}%` : "—"],
|
|
93
|
+
["isBuffering", String(buffering)],
|
|
94
|
+
]
|
|
95
|
+
: [];
|
|
96
|
+
const selectedPreset = PRESETS.find((p) => p.url === url)?.url ?? "";
|
|
97
|
+
const embedConfig = useMemo(() => ({
|
|
98
|
+
youtube: {
|
|
99
|
+
origin: typeof window !== "undefined" ? window.location.origin : undefined,
|
|
100
|
+
},
|
|
101
|
+
}), []);
|
|
102
|
+
return (_jsxs("div", { className: "section", children: [_jsx("label", { htmlFor: "provider", children: "Provider" }), _jsxs("select", { id: "provider", value: selectedPreset, onChange: (e) => {
|
|
103
|
+
const value = e.target.value;
|
|
104
|
+
if (value)
|
|
105
|
+
setUrl(value);
|
|
106
|
+
}, "aria-label": "Choose a provider to autofill URL", children: [_jsx("option", { value: "", children: "Custom / paste URL below" }), PRESETS.map((p) => (_jsx("option", { value: p.url, children: p.label }, p.url)))] }), _jsx("label", { htmlFor: "url", children: "Video URL" }), _jsx("input", { id: "url", type: "url", value: url, onChange: (e) => setUrl(e.target.value), placeholder: "https://www.youtube.com/watch?v=..." }), _jsx("p", { className: "hint", children: "Try: YouTube, youtu.be, Vimeo, Twitch videos/clips/channel, TikTok, Dailymotion" }), _jsxs("div", { className: "player-options", style: { marginBottom: "0.75rem" }, children: [_jsxs("label", { style: { display: "flex", alignItems: "center", gap: "0.5rem", marginRight: "1rem" }, children: [_jsx("input", { type: "checkbox", checked: controls, onChange: (e) => setControls(e.target.checked) }), "Show native controls"] }), _jsxs("label", { style: { display: "flex", alignItems: "center", gap: "0.5rem", marginRight: "1rem" }, children: [_jsx("input", { type: "checkbox", checked: captions, onChange: (e) => setCaptions(e.target.checked) }), "Enable captions"] }), _jsxs("label", { style: { display: "flex", alignItems: "center", gap: "0.5rem" }, children: [_jsx("input", { type: "checkbox", checked: annotations, onChange: (e) => setAnnotations(e.target.checked) }), "Show annotations"] })] }), _jsx("div", { className: "player-wrap", children: _jsx(ReactEmbedKit, { playerRef: setPlayer, muted: muted, playing: playing, volume: volume, src: url, width: 560, height: 315, controls: controls, captions: captions, annotations: annotations, config: embedConfig, onReady: () => { }, onBuffering: () => setBuffering(true), onPlay: () => {
|
|
107
|
+
setBuffering(false);
|
|
108
|
+
setPlaying(true);
|
|
109
|
+
}, onPause: () => setPlaying(false), onError: (d) => console.warn("Embed error:", d), onProgress: () => { }, onVolumeChange: (v) => setVolume(v), onMuteChange: (m) => setMuted(m), onUnsupportedUrl: (u) => {
|
|
110
|
+
setPlayer(null);
|
|
111
|
+
console.warn("Unsupported URL:", u);
|
|
112
|
+
} }) }), _jsxs("div", { className: "controls", children: [_jsx("button", { type: "button", disabled: !player, onClick: () => setPlaying(!playing), children: playing ? "Pause" : "Play" }), _jsx("button", { type: "button", disabled: !player, onClick: () => {
|
|
113
|
+
if (player)
|
|
114
|
+
player.currentTime = 0;
|
|
115
|
+
}, children: "Seek to 0:00" }), _jsx("button", { type: "button", disabled: !player, onClick: () => {
|
|
116
|
+
if (player)
|
|
117
|
+
player.currentTime = 30;
|
|
118
|
+
}, children: "Seek to 0:30" }), _jsxs("button", { type: "button", onClick: () => setMuted(!muted), children: ["[", muted ? "Muted" : "Unmuted", "]"] }), _jsxs("label", { style: {
|
|
119
|
+
display: "flex",
|
|
120
|
+
alignItems: "center",
|
|
121
|
+
gap: "0.5rem",
|
|
122
|
+
marginLeft: "1rem",
|
|
123
|
+
minWidth: "140px",
|
|
124
|
+
}, children: [_jsx("span", { style: { whiteSpace: "nowrap", fontSize: "0.9rem" }, children: "Volume" }), _jsx("input", { type: "range", min: 0, max: 100, step: 1, value: volume, disabled: !player, onChange: (e) => setVolume(Number(e.target.value)), style: { flex: 1, minWidth: 0 }, "aria-label": "Volume" })] })] }), _jsx("div", { className: "data-panel", children: dataRows.length > 0 ? (_jsx("dl", { children: dataRows.map(([label, value]) => (_jsxs(React.Fragment, { children: [_jsx("dt", { children: label }), _jsx("dd", { children: value })] }, label))) })) : (_jsx("p", { className: "no-player", children: "Load a supported URL to see live data." })) })] }));
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=ReactEmbedKitTestPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReactEmbedKitTestPage.js","sourceRoot":"","sources":["../../../src/react-embed-kit/test/ReactEmbedKitTestPage.tsx"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@reacttv/embed-kit",
|
|
3
|
+
"version": "0.4.6",
|
|
4
|
+
"description": "Normalized API across YouTube, Twitch, TikTok, and other embed sources",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
"./base": {
|
|
8
|
+
"types": "./dist/elements/_base/index.d.ts",
|
|
9
|
+
"import": "./dist/elements/_base/index.js",
|
|
10
|
+
"default": "./dist/elements/_base/index.js"
|
|
11
|
+
},
|
|
12
|
+
"./react-embed-kit": {
|
|
13
|
+
"types": "./dist/react-embed-kit/index.d.ts",
|
|
14
|
+
"import": "./dist/react-embed-kit/index.js",
|
|
15
|
+
"default": "./dist/react-embed-kit/index.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "https://github.com/ReactTV/embed-kit.git"
|
|
21
|
+
},
|
|
22
|
+
"publishConfig": {
|
|
23
|
+
"registry": "https://registry.npmjs.org/"
|
|
24
|
+
},
|
|
25
|
+
"globals": {
|
|
26
|
+
"globalThis": "writable"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@lit/react": "^1.0.0",
|
|
30
|
+
"react-merge-refs": "^3.0.2"
|
|
31
|
+
},
|
|
32
|
+
"peerDependencies": {
|
|
33
|
+
"react": ">=18.0.0",
|
|
34
|
+
"react-dom": ">=18.0.0"
|
|
35
|
+
},
|
|
36
|
+
"peerDependenciesMeta": {
|
|
37
|
+
"react": {
|
|
38
|
+
"optional": true
|
|
39
|
+
},
|
|
40
|
+
"react-dom": {
|
|
41
|
+
"optional": true
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"files": [
|
|
45
|
+
"dist",
|
|
46
|
+
"README.md"
|
|
47
|
+
],
|
|
48
|
+
"scripts": {
|
|
49
|
+
"lint": "eslint src/",
|
|
50
|
+
"format": "prettier --write \"src/**/*.{ts,tsx,js,json}\"",
|
|
51
|
+
"format:check": "prettier --check \"src/**/*.{ts,tsx,js,json}\"",
|
|
52
|
+
"build": "tsc",
|
|
53
|
+
"build:watch": "tsc --watch",
|
|
54
|
+
"clean": "rm -rf dist",
|
|
55
|
+
"prepare": "npm run build",
|
|
56
|
+
"prepublishOnly": "npm run clean && npm run build",
|
|
57
|
+
"test": "npm run build && concurrently \"npm run build:watch\" \"npx serve . --listen 3333\""
|
|
58
|
+
},
|
|
59
|
+
"devDependencies": {
|
|
60
|
+
"@types/react": "^19.2.14",
|
|
61
|
+
"@types/react-dom": "^19.2.3",
|
|
62
|
+
"@typescript-eslint/eslint-plugin": "^8.56.1",
|
|
63
|
+
"@typescript-eslint/parser": "^8.56.1",
|
|
64
|
+
"concurrently": "^9.1.0",
|
|
65
|
+
"eslint": "^8.57.1",
|
|
66
|
+
"eslint-config-airbnb-base": "^15.0.0",
|
|
67
|
+
"eslint-config-prettier": "^10.1.8",
|
|
68
|
+
"eslint-import-resolver-typescript": "^4.4.4",
|
|
69
|
+
"eslint-plugin-import": "^2.32.0",
|
|
70
|
+
"prettier": "^3.8.1",
|
|
71
|
+
"react": "^19.2.4",
|
|
72
|
+
"react-dom": "^19.2.4",
|
|
73
|
+
"typescript": "^5.7.2"
|
|
74
|
+
},
|
|
75
|
+
"engines": {
|
|
76
|
+
"node": ">=18"
|
|
77
|
+
},
|
|
78
|
+
"keywords": [
|
|
79
|
+
"embed",
|
|
80
|
+
"youtube",
|
|
81
|
+
"twitch",
|
|
82
|
+
"tiktok",
|
|
83
|
+
"vimeo",
|
|
84
|
+
"iframe",
|
|
85
|
+
"player"
|
|
86
|
+
],
|
|
87
|
+
"license": "MIT"
|
|
88
|
+
}
|