@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.
Files changed (114) hide show
  1. package/README.md +65 -0
  2. package/dist/elements/_base/EmbedVideoElement.d.ts +84 -0
  3. package/dist/elements/_base/EmbedVideoElement.d.ts.map +1 -0
  4. package/dist/elements/_base/EmbedVideoElement.js +246 -0
  5. package/dist/elements/_base/EmbedVideoElement.js.map +1 -0
  6. package/dist/elements/_base/createIframe.d.ts +7 -0
  7. package/dist/elements/_base/createIframe.d.ts.map +1 -0
  8. package/dist/elements/_base/createIframe.js +14 -0
  9. package/dist/elements/_base/createIframe.js.map +1 -0
  10. package/dist/elements/_base/index.d.ts +5 -0
  11. package/dist/elements/_base/index.d.ts.map +1 -0
  12. package/dist/elements/_base/index.js +5 -0
  13. package/dist/elements/_base/index.js.map +1 -0
  14. package/dist/elements/_base/loadScript.d.ts +21 -0
  15. package/dist/elements/_base/loadScript.d.ts.map +1 -0
  16. package/dist/elements/_base/loadScript.js +24 -0
  17. package/dist/elements/_base/loadScript.js.map +1 -0
  18. package/dist/elements/_base/player.types.d.ts +59 -0
  19. package/dist/elements/_base/player.types.d.ts.map +1 -0
  20. package/dist/elements/_base/player.types.js +16 -0
  21. package/dist/elements/_base/player.types.js.map +1 -0
  22. package/dist/elements/dailymotion/constants.d.ts +15 -0
  23. package/dist/elements/dailymotion/constants.d.ts.map +1 -0
  24. package/dist/elements/dailymotion/constants.js +15 -0
  25. package/dist/elements/dailymotion/constants.js.map +1 -0
  26. package/dist/elements/dailymotion/player.d.ts +2 -0
  27. package/dist/elements/dailymotion/player.d.ts.map +1 -0
  28. package/dist/elements/dailymotion/player.js +268 -0
  29. package/dist/elements/dailymotion/player.js.map +1 -0
  30. package/dist/elements/dailymotion/player.types.d.ts +144 -0
  31. package/dist/elements/dailymotion/player.types.d.ts.map +1 -0
  32. package/dist/elements/dailymotion/player.types.js +4 -0
  33. package/dist/elements/dailymotion/player.types.js.map +1 -0
  34. package/dist/elements/tiktok/constants.d.ts +19 -0
  35. package/dist/elements/tiktok/constants.d.ts.map +1 -0
  36. package/dist/elements/tiktok/constants.js +19 -0
  37. package/dist/elements/tiktok/constants.js.map +1 -0
  38. package/dist/elements/tiktok/player.d.ts +2 -0
  39. package/dist/elements/tiktok/player.d.ts.map +1 -0
  40. package/dist/elements/tiktok/player.js +224 -0
  41. package/dist/elements/tiktok/player.js.map +1 -0
  42. package/dist/elements/twitch/constants.d.ts +61 -0
  43. package/dist/elements/twitch/constants.d.ts.map +1 -0
  44. package/dist/elements/twitch/constants.js +61 -0
  45. package/dist/elements/twitch/constants.js.map +1 -0
  46. package/dist/elements/twitch/player.d.ts +2 -0
  47. package/dist/elements/twitch/player.d.ts.map +1 -0
  48. package/dist/elements/twitch/player.js +262 -0
  49. package/dist/elements/twitch/player.js.map +1 -0
  50. package/dist/elements/twitch/player.types.d.ts +76 -0
  51. package/dist/elements/twitch/player.types.d.ts.map +1 -0
  52. package/dist/elements/twitch/player.types.js +7 -0
  53. package/dist/elements/twitch/player.types.js.map +1 -0
  54. package/dist/elements/vimeo/constants.d.ts +27 -0
  55. package/dist/elements/vimeo/constants.d.ts.map +1 -0
  56. package/dist/elements/vimeo/constants.js +29 -0
  57. package/dist/elements/vimeo/constants.js.map +1 -0
  58. package/dist/elements/vimeo/player.d.ts +9 -0
  59. package/dist/elements/vimeo/player.d.ts.map +1 -0
  60. package/dist/elements/vimeo/player.js +217 -0
  61. package/dist/elements/vimeo/player.js.map +1 -0
  62. package/dist/elements/vimeo/player.types.d.ts +38 -0
  63. package/dist/elements/vimeo/player.types.d.ts.map +1 -0
  64. package/dist/elements/vimeo/player.types.js +6 -0
  65. package/dist/elements/vimeo/player.types.js.map +1 -0
  66. package/dist/elements/youtube/constants.d.ts +15 -0
  67. package/dist/elements/youtube/constants.d.ts.map +1 -0
  68. package/dist/elements/youtube/constants.js +15 -0
  69. package/dist/elements/youtube/constants.js.map +1 -0
  70. package/dist/elements/youtube/helpers/parseYouTubeUrl.d.ts +4 -0
  71. package/dist/elements/youtube/helpers/parseYouTubeUrl.d.ts.map +1 -0
  72. package/dist/elements/youtube/helpers/parseYouTubeUrl.js +10 -0
  73. package/dist/elements/youtube/helpers/parseYouTubeUrl.js.map +1 -0
  74. package/dist/elements/youtube/player.d.ts +2 -0
  75. package/dist/elements/youtube/player.d.ts.map +1 -0
  76. package/dist/elements/youtube/player.js +213 -0
  77. package/dist/elements/youtube/player.js.map +1 -0
  78. package/dist/elements/youtube/player.types.d.ts +79 -0
  79. package/dist/elements/youtube/player.types.d.ts.map +1 -0
  80. package/dist/elements/youtube/player.types.js +8 -0
  81. package/dist/elements/youtube/player.types.js.map +1 -0
  82. package/dist/react-embed-kit/HtmlPlayer.d.ts +23 -0
  83. package/dist/react-embed-kit/HtmlPlayer.d.ts.map +1 -0
  84. package/dist/react-embed-kit/HtmlPlayer.js +61 -0
  85. package/dist/react-embed-kit/HtmlPlayer.js.map +1 -0
  86. package/dist/react-embed-kit/ReactEmbedKit.d.ts +28 -0
  87. package/dist/react-embed-kit/ReactEmbedKit.d.ts.map +1 -0
  88. package/dist/react-embed-kit/ReactEmbedKit.js +114 -0
  89. package/dist/react-embed-kit/ReactEmbedKit.js.map +1 -0
  90. package/dist/react-embed-kit/constants.d.ts +3 -0
  91. package/dist/react-embed-kit/constants.d.ts.map +1 -0
  92. package/dist/react-embed-kit/constants.js +3 -0
  93. package/dist/react-embed-kit/constants.js.map +1 -0
  94. package/dist/react-embed-kit/embed-elements.d.ts +64 -0
  95. package/dist/react-embed-kit/embed-elements.d.ts.map +1 -0
  96. package/dist/react-embed-kit/embed-elements.js +2 -0
  97. package/dist/react-embed-kit/embed-elements.js.map +1 -0
  98. package/dist/react-embed-kit/index.d.ts +6 -0
  99. package/dist/react-embed-kit/index.d.ts.map +1 -0
  100. package/dist/react-embed-kit/index.js +4 -0
  101. package/dist/react-embed-kit/index.js.map +1 -0
  102. package/dist/react-embed-kit/providers.d.ts +22 -0
  103. package/dist/react-embed-kit/providers.d.ts.map +1 -0
  104. package/dist/react-embed-kit/providers.js +72 -0
  105. package/dist/react-embed-kit/providers.js.map +1 -0
  106. package/dist/react-embed-kit/registerEmbedElements.d.ts +11 -0
  107. package/dist/react-embed-kit/registerEmbedElements.d.ts.map +1 -0
  108. package/dist/react-embed-kit/registerEmbedElements.js +11 -0
  109. package/dist/react-embed-kit/registerEmbedElements.js.map +1 -0
  110. package/dist/react-embed-kit/test/ReactEmbedKitTestPage.d.ts +8 -0
  111. package/dist/react-embed-kit/test/ReactEmbedKitTestPage.d.ts.map +1 -0
  112. package/dist/react-embed-kit/test/ReactEmbedKitTestPage.js +126 -0
  113. package/dist/react-embed-kit/test/ReactEmbedKitTestPage.js.map +1 -0
  114. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=embed-elements.js.map
@@ -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,4 @@
1
+ export { ReactEmbedKit } from "./ReactEmbedKit.js";
2
+ export { ReactEmbedKitTestPage } from "./test/ReactEmbedKitTestPage.js";
3
+ export { getProviderForUrl, loadPlayerModule, EMBED_TAG } from "./providers.js";
4
+ //# sourceMappingURL=index.js.map
@@ -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
+ }