@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
package/README.md
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# embed-kit
|
|
2
|
+
|
|
3
|
+
Normalized API across different embed sources (YouTube, Twitch, TikTok, and others). Includes custom elements per provider and a React wrapper (`ReactEmbedKit`).
|
|
4
|
+
|
|
5
|
+
## Install (GitHub Packages)
|
|
6
|
+
|
|
7
|
+
The package is published to GitHub Package Registry. Use the scoped name `@reacttv/embed-kit`.
|
|
8
|
+
|
|
9
|
+
1. **Authenticate** with GitHub Packages (one-time). Create a [Personal Access Token](https://github.com/settings/tokens) with `read:packages` (and `write:packages` if you will publish). Then:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm login --scope=@reacttv --registry=https://npm.pkg.github.com
|
|
13
|
+
# Username: your GitHub username
|
|
14
|
+
# Password: your PAT (not your GitHub password)
|
|
15
|
+
# Email: your email
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Or add to your project or home `~/.npmrc` (never commit a real token):
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
@reacttv:registry=https://npm.pkg.github.com
|
|
22
|
+
//npm.pkg.github.com/:_authToken=YOUR_GITHUB_PAT
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
2. **Install** the package:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm install @reacttv/embed-kit
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Setup (developing this package)
|
|
32
|
+
|
|
33
|
+
When **developing** this package locally:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npm install
|
|
37
|
+
npm run build
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
The `prepare` script runs on install and builds `dist/` so consumers get a working build.
|
|
41
|
+
|
|
42
|
+
## Publishing (GitHub Packages)
|
|
43
|
+
|
|
44
|
+
- **From CI**: Push a tag (e.g. `v0.1.0`) or create a GitHub Release; the workflow in `.github/workflows/publish.yml` builds and runs `npm publish` to GitHub Package Registry.
|
|
45
|
+
- **Manually**: Ensure you’re logged in to the registry (`npm login --scope=@reacttv --registry=https://npm.pkg.github.com`), then run `npm run build` and `npm publish`.
|
|
46
|
+
|
|
47
|
+
## Scripts
|
|
48
|
+
|
|
49
|
+
- **`npm run build`** — Compile TypeScript to `dist/`
|
|
50
|
+
- **`prepare`** — Runs on `npm install`; builds the package so consumers get a working `dist/`
|
|
51
|
+
- **`npm run clean`** — Remove `dist/`
|
|
52
|
+
|
|
53
|
+
## Development
|
|
54
|
+
|
|
55
|
+
Source lives in `src/`. The build outputs to `dist/` with the same structure.
|
|
56
|
+
|
|
57
|
+
## Test pages
|
|
58
|
+
|
|
59
|
+
Each provider has its own test page in its package: `src/youtube/test.html`, `src/twitch/test.html`, etc. To run the test server (builds then serves):
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
npm run test
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Open the URL shown (e.g. `http://localhost:3000/test/` for the index, or `http://localhost:3000/src/youtube/test.html` for YouTube).
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { TDispatchedEventPayloads } from "./player.types.js";
|
|
2
|
+
export type TEmbedVideoElementOptions = {
|
|
3
|
+
autoplay: boolean;
|
|
4
|
+
progressInterval: number;
|
|
5
|
+
controls: boolean;
|
|
6
|
+
captions: boolean;
|
|
7
|
+
annotations: boolean;
|
|
8
|
+
relatedVideos: boolean;
|
|
9
|
+
config: {
|
|
10
|
+
youtube: Record<string, number | string | undefined>;
|
|
11
|
+
vimeo: Record<string, number | string | undefined>;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Class-based mimic of HTMLVideoElement. Providers can either (1) extend this
|
|
16
|
+
* class and override play(), pause(), seek(), getters, etc., or (2) construct
|
|
17
|
+
* it and call setPlayer(inner) when the inner player is ready.
|
|
18
|
+
*/
|
|
19
|
+
export declare class EmbedVideoElement extends HTMLElement {
|
|
20
|
+
readonly src: string;
|
|
21
|
+
iframe: HTMLIFrameElement | null;
|
|
22
|
+
handleMessage: (event: MessageEvent) => void;
|
|
23
|
+
protected embedContainer: HTMLDivElement | null;
|
|
24
|
+
constructor();
|
|
25
|
+
protected getEmbedContainer(): HTMLDivElement;
|
|
26
|
+
static observedAttributes: string[];
|
|
27
|
+
protected options: TEmbedVideoElementOptions;
|
|
28
|
+
protected playerState: {
|
|
29
|
+
currentTime: number;
|
|
30
|
+
duration: number;
|
|
31
|
+
isPaused: boolean;
|
|
32
|
+
muted: boolean;
|
|
33
|
+
error: MediaError | null;
|
|
34
|
+
volume: number;
|
|
35
|
+
playbackRate: number;
|
|
36
|
+
playbackQuality: string;
|
|
37
|
+
};
|
|
38
|
+
loadInitialOptions(): void;
|
|
39
|
+
load(): void;
|
|
40
|
+
destroy(): void | Promise<void>;
|
|
41
|
+
mute(): void | Promise<void>;
|
|
42
|
+
play(): Promise<void>;
|
|
43
|
+
pause(): Promise<void>;
|
|
44
|
+
seek(_seconds: number): void | Promise<void>;
|
|
45
|
+
unmute(): void | Promise<void>;
|
|
46
|
+
get annotations(): boolean;
|
|
47
|
+
set annotations(_value: boolean);
|
|
48
|
+
get autoplay(): boolean;
|
|
49
|
+
set autoplay(_value: boolean);
|
|
50
|
+
get captions(): boolean;
|
|
51
|
+
set captions(_value: boolean);
|
|
52
|
+
get controls(): boolean;
|
|
53
|
+
set controls(_value: boolean);
|
|
54
|
+
get currentTime(): number;
|
|
55
|
+
set currentTime(_seconds: number);
|
|
56
|
+
get duration(): number;
|
|
57
|
+
get error(): MediaError | null;
|
|
58
|
+
set error(_value: MediaError | null);
|
|
59
|
+
get muted(): boolean;
|
|
60
|
+
set muted(_value: boolean);
|
|
61
|
+
get paused(): boolean;
|
|
62
|
+
get playing(): boolean;
|
|
63
|
+
set playing(_value: boolean);
|
|
64
|
+
get relatedVideos(): boolean;
|
|
65
|
+
set relatedVideos(_value: boolean);
|
|
66
|
+
get volume(): number;
|
|
67
|
+
set volume(_value: number);
|
|
68
|
+
dispatchReadyEvent(): void;
|
|
69
|
+
dispatchErrorEvent(error: MediaError): void;
|
|
70
|
+
dispatchPlayEvent(): void;
|
|
71
|
+
dispatchPauseEvent(): void;
|
|
72
|
+
dispatchBufferingEvent(): void;
|
|
73
|
+
dispatchEndedEvent(): void;
|
|
74
|
+
dispatchCuedEvent(): void;
|
|
75
|
+
dispatchVolumeChangeEvent(volume: TDispatchedEventPayloads["onVolumeChange"]): void;
|
|
76
|
+
dispatchMuteChangeEvent(muted: TDispatchedEventPayloads["onMuteChange"]): void;
|
|
77
|
+
dispatchPlaybackRateChangeEvent(playbackRate: TDispatchedEventPayloads["onPlaybackRateChange"]): void;
|
|
78
|
+
dispatchPlaybackQualityChangeEvent(playbackQuality: TDispatchedEventPayloads["onPlaybackQualityChange"]): void;
|
|
79
|
+
dispatchDurationChangeEvent(duration: TDispatchedEventPayloads["onDurationChange"]): void;
|
|
80
|
+
dispatchProgressEvent(progress: TDispatchedEventPayloads["onProgress"]): void;
|
|
81
|
+
attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
|
|
82
|
+
protected getAttributes: () => Record<string, string>;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=EmbedVideoElement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmbedVideoElement.d.ts","sourceRoot":"","sources":["../../../src/elements/_base/EmbedVideoElement.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { DISPATCHED_EVENTS } from "./player.types.js";
|
|
2
|
+
const generateDefaultOptions = () => ({
|
|
3
|
+
autoplay: false,
|
|
4
|
+
progressInterval: 50,
|
|
5
|
+
controls: true,
|
|
6
|
+
captions: false,
|
|
7
|
+
annotations: false,
|
|
8
|
+
relatedVideos: false,
|
|
9
|
+
config: {
|
|
10
|
+
youtube: {},
|
|
11
|
+
vimeo: {},
|
|
12
|
+
},
|
|
13
|
+
});
|
|
14
|
+
/**
|
|
15
|
+
* Class-based mimic of HTMLVideoElement. Providers can either (1) extend this
|
|
16
|
+
* class and override play(), pause(), seek(), getters, etc., or (2) construct
|
|
17
|
+
* it and call setPlayer(inner) when the inner player is ready.
|
|
18
|
+
*/
|
|
19
|
+
export class EmbedVideoElement extends HTMLElement {
|
|
20
|
+
src = "";
|
|
21
|
+
iframe = null;
|
|
22
|
+
handleMessage = () => { };
|
|
23
|
+
embedContainer = null;
|
|
24
|
+
constructor() {
|
|
25
|
+
super();
|
|
26
|
+
const root = this.attachShadow({ mode: "open" });
|
|
27
|
+
const container = document.createElement("div");
|
|
28
|
+
container.style.cssText = "width:100%;height:100%;display:block;position:relative;";
|
|
29
|
+
root.appendChild(container);
|
|
30
|
+
this.embedContainer = container;
|
|
31
|
+
}
|
|
32
|
+
getEmbedContainer() {
|
|
33
|
+
if (!this.embedContainer)
|
|
34
|
+
throw new Error("EmbedVideoElement: embedContainer not initialized");
|
|
35
|
+
return this.embedContainer;
|
|
36
|
+
}
|
|
37
|
+
static observedAttributes = [
|
|
38
|
+
"src",
|
|
39
|
+
"muted",
|
|
40
|
+
"playing",
|
|
41
|
+
"autoplay",
|
|
42
|
+
"controls",
|
|
43
|
+
"captions",
|
|
44
|
+
"annotations",
|
|
45
|
+
"relatedVideos",
|
|
46
|
+
"volume",
|
|
47
|
+
];
|
|
48
|
+
options = generateDefaultOptions();
|
|
49
|
+
playerState = {
|
|
50
|
+
currentTime: 0,
|
|
51
|
+
duration: 0,
|
|
52
|
+
isPaused: true,
|
|
53
|
+
muted: false,
|
|
54
|
+
error: null,
|
|
55
|
+
volume: 0.2,
|
|
56
|
+
playbackRate: 1,
|
|
57
|
+
playbackQuality: "small",
|
|
58
|
+
};
|
|
59
|
+
loadInitialOptions() {
|
|
60
|
+
const attributes = this.getAttributes();
|
|
61
|
+
this.options = {
|
|
62
|
+
autoplay: attributes.autoplay === "true",
|
|
63
|
+
progressInterval: attributes.progressInterval
|
|
64
|
+
? parseInt(attributes.progressInterval, 10)
|
|
65
|
+
: 50,
|
|
66
|
+
controls: attributes.controls === "true",
|
|
67
|
+
captions: attributes.captions === "true",
|
|
68
|
+
annotations: attributes.annotations === "true",
|
|
69
|
+
relatedVideos: attributes.relatedVideos === "true",
|
|
70
|
+
config: {
|
|
71
|
+
youtube: attributes.youtube ? JSON.parse(attributes.youtube) : {},
|
|
72
|
+
vimeo: attributes.vimeo ? JSON.parse(attributes.vimeo) : {},
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
load() { }
|
|
77
|
+
destroy() {
|
|
78
|
+
return Promise.resolve();
|
|
79
|
+
}
|
|
80
|
+
mute() {
|
|
81
|
+
return Promise.resolve();
|
|
82
|
+
}
|
|
83
|
+
play() {
|
|
84
|
+
return Promise.resolve();
|
|
85
|
+
}
|
|
86
|
+
pause() {
|
|
87
|
+
return Promise.resolve();
|
|
88
|
+
}
|
|
89
|
+
seek(_seconds) {
|
|
90
|
+
return Promise.resolve();
|
|
91
|
+
}
|
|
92
|
+
unmute() {
|
|
93
|
+
return Promise.resolve();
|
|
94
|
+
}
|
|
95
|
+
get annotations() {
|
|
96
|
+
return this.options.annotations;
|
|
97
|
+
}
|
|
98
|
+
set annotations(_value) {
|
|
99
|
+
this.options.annotations = _value;
|
|
100
|
+
}
|
|
101
|
+
get autoplay() {
|
|
102
|
+
return this.options.autoplay;
|
|
103
|
+
}
|
|
104
|
+
set autoplay(_value) {
|
|
105
|
+
this.options.autoplay = _value;
|
|
106
|
+
}
|
|
107
|
+
get captions() {
|
|
108
|
+
return this.options.captions;
|
|
109
|
+
}
|
|
110
|
+
set captions(_value) {
|
|
111
|
+
this.options.captions = _value;
|
|
112
|
+
}
|
|
113
|
+
get controls() {
|
|
114
|
+
return this.options.controls;
|
|
115
|
+
}
|
|
116
|
+
set controls(_value) {
|
|
117
|
+
this.options.controls = _value;
|
|
118
|
+
}
|
|
119
|
+
get currentTime() {
|
|
120
|
+
return this.playerState.currentTime;
|
|
121
|
+
}
|
|
122
|
+
set currentTime(_seconds) {
|
|
123
|
+
//
|
|
124
|
+
}
|
|
125
|
+
get duration() {
|
|
126
|
+
return this.playerState.duration;
|
|
127
|
+
}
|
|
128
|
+
get error() {
|
|
129
|
+
return this.playerState.error;
|
|
130
|
+
}
|
|
131
|
+
set error(_value) {
|
|
132
|
+
//
|
|
133
|
+
}
|
|
134
|
+
get muted() {
|
|
135
|
+
return this.playerState.muted;
|
|
136
|
+
}
|
|
137
|
+
set muted(_value) {
|
|
138
|
+
//
|
|
139
|
+
}
|
|
140
|
+
get paused() {
|
|
141
|
+
return this.playerState.isPaused;
|
|
142
|
+
}
|
|
143
|
+
get playing() {
|
|
144
|
+
return !this.playerState.isPaused;
|
|
145
|
+
}
|
|
146
|
+
set playing(_value) {
|
|
147
|
+
//
|
|
148
|
+
}
|
|
149
|
+
get relatedVideos() {
|
|
150
|
+
return this.options.relatedVideos;
|
|
151
|
+
}
|
|
152
|
+
set relatedVideos(_value) {
|
|
153
|
+
this.options.relatedVideos = _value;
|
|
154
|
+
}
|
|
155
|
+
get volume() {
|
|
156
|
+
return this.playerState.volume;
|
|
157
|
+
}
|
|
158
|
+
set volume(_value) {
|
|
159
|
+
//
|
|
160
|
+
}
|
|
161
|
+
dispatchReadyEvent() {
|
|
162
|
+
this.dispatchEvent(new CustomEvent(DISPATCHED_EVENTS.ready));
|
|
163
|
+
}
|
|
164
|
+
dispatchErrorEvent(error) {
|
|
165
|
+
this.dispatchEvent(new CustomEvent(DISPATCHED_EVENTS.error, {
|
|
166
|
+
detail: error,
|
|
167
|
+
}));
|
|
168
|
+
}
|
|
169
|
+
dispatchPlayEvent() {
|
|
170
|
+
this.dispatchEvent(new CustomEvent(DISPATCHED_EVENTS.play));
|
|
171
|
+
}
|
|
172
|
+
dispatchPauseEvent() {
|
|
173
|
+
this.dispatchEvent(new CustomEvent(DISPATCHED_EVENTS.pause));
|
|
174
|
+
}
|
|
175
|
+
dispatchBufferingEvent() {
|
|
176
|
+
this.dispatchEvent(new CustomEvent(DISPATCHED_EVENTS.buffering));
|
|
177
|
+
}
|
|
178
|
+
dispatchEndedEvent() {
|
|
179
|
+
this.dispatchEvent(new CustomEvent(DISPATCHED_EVENTS.ended));
|
|
180
|
+
}
|
|
181
|
+
dispatchCuedEvent() {
|
|
182
|
+
this.dispatchEvent(new CustomEvent(DISPATCHED_EVENTS.cued));
|
|
183
|
+
}
|
|
184
|
+
dispatchVolumeChangeEvent(volume) {
|
|
185
|
+
this.dispatchEvent(new CustomEvent(DISPATCHED_EVENTS.volume, {
|
|
186
|
+
detail: volume,
|
|
187
|
+
}));
|
|
188
|
+
}
|
|
189
|
+
dispatchMuteChangeEvent(muted) {
|
|
190
|
+
this.dispatchEvent(new CustomEvent(DISPATCHED_EVENTS.mute, {
|
|
191
|
+
detail: muted,
|
|
192
|
+
}));
|
|
193
|
+
}
|
|
194
|
+
dispatchPlaybackRateChangeEvent(playbackRate) {
|
|
195
|
+
this.dispatchEvent(new CustomEvent(DISPATCHED_EVENTS.playbackRateChange, { detail: playbackRate }));
|
|
196
|
+
}
|
|
197
|
+
dispatchPlaybackQualityChangeEvent(playbackQuality) {
|
|
198
|
+
this.dispatchEvent(new CustomEvent(DISPATCHED_EVENTS.playbackQualityChange, { detail: playbackQuality }));
|
|
199
|
+
}
|
|
200
|
+
dispatchDurationChangeEvent(duration) {
|
|
201
|
+
this.dispatchEvent(new CustomEvent(DISPATCHED_EVENTS.durationchange, {
|
|
202
|
+
detail: duration,
|
|
203
|
+
}));
|
|
204
|
+
}
|
|
205
|
+
dispatchProgressEvent(progress) {
|
|
206
|
+
this.dispatchEvent(new CustomEvent(DISPATCHED_EVENTS.progress, {
|
|
207
|
+
detail: progress,
|
|
208
|
+
}));
|
|
209
|
+
}
|
|
210
|
+
attributeChangedCallback(name, oldValue, newValue) {
|
|
211
|
+
if (oldValue === newValue)
|
|
212
|
+
return;
|
|
213
|
+
if (name === "src") {
|
|
214
|
+
this.load();
|
|
215
|
+
}
|
|
216
|
+
if (name === "muted") {
|
|
217
|
+
this.muted = newValue === "true";
|
|
218
|
+
}
|
|
219
|
+
if (name === "playing") {
|
|
220
|
+
this.playing = newValue === "true";
|
|
221
|
+
}
|
|
222
|
+
if (name === "volume") {
|
|
223
|
+
this.volume = parseFloat(newValue);
|
|
224
|
+
}
|
|
225
|
+
if (name === "autoplay") {
|
|
226
|
+
this.autoplay = newValue === "true";
|
|
227
|
+
}
|
|
228
|
+
if (name === "controls") {
|
|
229
|
+
this.controls = newValue === "true";
|
|
230
|
+
}
|
|
231
|
+
if (name === "captions") {
|
|
232
|
+
this.captions = newValue === "true";
|
|
233
|
+
}
|
|
234
|
+
if (name === "annotations") {
|
|
235
|
+
this.annotations = newValue === "true";
|
|
236
|
+
}
|
|
237
|
+
if (name === "relatedVideos") {
|
|
238
|
+
this.relatedVideos = newValue === "true";
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
getAttributes = () => Array.from(this.attributes).reduce((acc, attr) => {
|
|
242
|
+
acc[attr.name] = attr.value;
|
|
243
|
+
return acc;
|
|
244
|
+
}, {});
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=EmbedVideoElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmbedVideoElement.js","sourceRoot":"","sources":["../../../src/elements/_base/EmbedVideoElement.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create an iframe element from normalized props. Use this when you need a live
|
|
3
|
+
* HTMLIFrameElement (e.g. for Vimeo.Player(iframe) or postMessage). Uses
|
|
4
|
+
* renderEmbedIframe and parses the result so attribute logic lives in one place.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createIframe(src: string): HTMLIFrameElement;
|
|
7
|
+
//# sourceMappingURL=createIframe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createIframe.d.ts","sourceRoot":"","sources":["../../../src/elements/_base/createIframe.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAO3D"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create an iframe element from normalized props. Use this when you need a live
|
|
3
|
+
* HTMLIFrameElement (e.g. for Vimeo.Player(iframe) or postMessage). Uses
|
|
4
|
+
* renderEmbedIframe and parses the result so attribute logic lives in one place.
|
|
5
|
+
*/
|
|
6
|
+
export function createIframe(src) {
|
|
7
|
+
const iframe = document.createElement("iframe");
|
|
8
|
+
iframe.src = src;
|
|
9
|
+
iframe.style.width = "100%";
|
|
10
|
+
iframe.style.height = "100%";
|
|
11
|
+
iframe.style.overflow = "hidden";
|
|
12
|
+
return iframe;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=createIframe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createIframe.js","sourceRoot":"","sources":["../../../src/elements/_base/createIframe.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;IAC5B,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IAC7B,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACjC,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/_base/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/elements/_base/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface LoadScriptOptions {
|
|
2
|
+
/**
|
|
3
|
+
* If provided and returns true, skip loading and resolve immediately.
|
|
4
|
+
*/
|
|
5
|
+
isLoaded?: () => boolean;
|
|
6
|
+
/**
|
|
7
|
+
* If provided, resolve when this promise resolves instead of on script onload.
|
|
8
|
+
* Use for SDKs that signal readiness via a global callback (e.g. YouTube's onYouTubeIframeAPIReady).
|
|
9
|
+
* The script is still appended; rejection on script error still applies.
|
|
10
|
+
*/
|
|
11
|
+
ready?: () => Promise<void>;
|
|
12
|
+
/** Error message when script fails to load. */
|
|
13
|
+
errorMessage?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Load a script by URL. Resolves when the script has loaded (script.onload),
|
|
17
|
+
* or when options.ready() resolves if provided. Rejects on script load error.
|
|
18
|
+
* If options.isLoaded() returns true, resolves immediately without loading.
|
|
19
|
+
*/
|
|
20
|
+
export declare function loadScript(url: string, options?: LoadScriptOptions): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=loadScript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadScript.d.ts","sourceRoot":"","sources":["../../../src/elements/_base/loadScript.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC;IACzB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBtF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load a script by URL. Resolves when the script has loaded (script.onload),
|
|
3
|
+
* or when options.ready() resolves if provided. Rejects on script load error.
|
|
4
|
+
* If options.isLoaded() returns true, resolves immediately without loading.
|
|
5
|
+
*/
|
|
6
|
+
export function loadScript(url, options = {}) {
|
|
7
|
+
const { isLoaded, ready, errorMessage = "Failed to load script" } = options;
|
|
8
|
+
if (isLoaded?.())
|
|
9
|
+
return Promise.resolve();
|
|
10
|
+
return new Promise((resolve, reject) => {
|
|
11
|
+
const script = document.createElement("script");
|
|
12
|
+
script.src = url;
|
|
13
|
+
script.async = true;
|
|
14
|
+
script.onerror = () => reject(new Error(errorMessage));
|
|
15
|
+
if (ready) {
|
|
16
|
+
ready().then(resolve, reject);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
script.onload = () => resolve();
|
|
20
|
+
}
|
|
21
|
+
document.head.appendChild(script);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=loadScript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadScript.js","sourceRoot":"","sources":["../../../src/elements/_base/loadScript.ts"],"names":[],"mappings":"AAeA;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,UAA6B,EAAE;IACrE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,GAAG,uBAAuB,EAAE,GAAG,OAAO,CAAC;IAE5E,IAAI,QAAQ,EAAE,EAAE;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAE3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;QACjB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;QAEvD,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAClC,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export interface IEmbedProgressEvent {
|
|
2
|
+
target: {
|
|
3
|
+
currentTime: number;
|
|
4
|
+
};
|
|
5
|
+
detail: number;
|
|
6
|
+
}
|
|
7
|
+
export declare const DISPATCHED_EVENTS: {
|
|
8
|
+
ready: string;
|
|
9
|
+
play: string;
|
|
10
|
+
pause: string;
|
|
11
|
+
buffering: string;
|
|
12
|
+
ended: string;
|
|
13
|
+
error: string;
|
|
14
|
+
progress: string;
|
|
15
|
+
durationchange: string;
|
|
16
|
+
mute: string;
|
|
17
|
+
volume: string;
|
|
18
|
+
playbackRateChange: string;
|
|
19
|
+
playbackQualityChange: string;
|
|
20
|
+
cued: string;
|
|
21
|
+
};
|
|
22
|
+
export type TDispatchedEventPayloads = {
|
|
23
|
+
onReady: void;
|
|
24
|
+
onPlay: void;
|
|
25
|
+
onPause: void;
|
|
26
|
+
onBuffering: void;
|
|
27
|
+
onEnded: void;
|
|
28
|
+
onCued: void;
|
|
29
|
+
onProgress: number;
|
|
30
|
+
onError: MediaError;
|
|
31
|
+
onDurationChange: number;
|
|
32
|
+
onMuteChange: boolean;
|
|
33
|
+
onVolumeChange: number;
|
|
34
|
+
onPlaybackRateChange: number;
|
|
35
|
+
onPlaybackQualityChange: string;
|
|
36
|
+
};
|
|
37
|
+
/** Detail type for each dispatched event. Use `undefined` for events with no payload. */
|
|
38
|
+
export interface IDispatchedEventCallbacks {
|
|
39
|
+
onReady?: () => void;
|
|
40
|
+
onPlay?: () => void;
|
|
41
|
+
onPause?: () => void;
|
|
42
|
+
onBuffering?: () => void;
|
|
43
|
+
onEnded?: () => void;
|
|
44
|
+
onError?: (error: TDispatchedEventPayloads["onError"]) => void;
|
|
45
|
+
onProgress?: (progress: TDispatchedEventPayloads["onProgress"]) => void;
|
|
46
|
+
onDurationChange?: (duration: TDispatchedEventPayloads["onDurationChange"]) => void;
|
|
47
|
+
onMuteChange?: (mute: TDispatchedEventPayloads["onMuteChange"]) => void;
|
|
48
|
+
onVolumeChange?: (volume: TDispatchedEventPayloads["onVolumeChange"]) => void;
|
|
49
|
+
onPlaybackRateChange?: (playbackRate: TDispatchedEventPayloads["onPlaybackRateChange"]) => void;
|
|
50
|
+
onPlaybackQualityChange?: (playbackQuality: TDispatchedEventPayloads["onPlaybackQualityChange"]) => void;
|
|
51
|
+
onCued?: () => void;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Public ref type for embed players. Typed as HTMLVideoElement so consuming apps
|
|
55
|
+
* can use the ref like a native video element (play, pause, currentTime, etc.),
|
|
56
|
+
* matching react-player and media-elements behavior.
|
|
57
|
+
*/
|
|
58
|
+
export type EmbedPlayerRef = HTMLVideoElement | null;
|
|
59
|
+
//# sourceMappingURL=player.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"player.types.d.ts","sourceRoot":"","sources":["../../../src/elements/_base/player.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;CAc7B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,IAAI,CAAC;IACd,WAAW,EAAE,IAAI,CAAC;IAClB,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,IAAI,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,UAAU,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,yFAAyF;AACzF,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,wBAAwB,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IAC/D,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,wBAAwB,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IACxE,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,wBAAwB,CAAC,kBAAkB,CAAC,KAAK,IAAI,CAAC;IACpF,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,wBAAwB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IACxE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,wBAAwB,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC9E,oBAAoB,CAAC,EAAE,CAAC,YAAY,EAAE,wBAAwB,CAAC,sBAAsB,CAAC,KAAK,IAAI,CAAC;IAChG,uBAAuB,CAAC,EAAE,CACxB,eAAe,EAAE,wBAAwB,CAAC,yBAAyB,CAAC,KACjE,IAAI,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,IAAI,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export const DISPATCHED_EVENTS = {
|
|
2
|
+
ready: "onReady",
|
|
3
|
+
play: "onPlay",
|
|
4
|
+
pause: "onPause",
|
|
5
|
+
buffering: "onBuffering",
|
|
6
|
+
ended: "onEnded",
|
|
7
|
+
error: "onError",
|
|
8
|
+
progress: "onProgress",
|
|
9
|
+
durationchange: "onDurationChange",
|
|
10
|
+
mute: "onMuteChange",
|
|
11
|
+
volume: "onVolumeChange",
|
|
12
|
+
playbackRateChange: "onPlaybackRateChange",
|
|
13
|
+
playbackQualityChange: "onPlaybackQualityChange",
|
|
14
|
+
cued: "onCued",
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=player.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"player.types.js","sourceRoot":"","sources":["../../../src/elements/_base/player.types.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,SAAS;IAChB,SAAS,EAAE,aAAa;IACxB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,YAAY;IACtB,cAAc,EAAE,kBAAkB;IAClC,IAAI,EAAE,cAAc;IACpB,MAAM,EAAE,gBAAgB;IACxB,kBAAkB,EAAE,sBAAsB;IAC1C,qBAAqB,EAAE,yBAAyB;IAChD,IAAI,EAAE,QAAQ;CACf,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider constants: test URLs and IDs for Dailymotion.
|
|
3
|
+
* Use these in tests and test pages so videos stay valid in one place.
|
|
4
|
+
*/
|
|
5
|
+
/** Regex to match dailymotion.com/video/{id} URLs. */
|
|
6
|
+
export declare const REGEX_VIDEO: RegExp;
|
|
7
|
+
/** Regex to match dai.ly/{id} short URLs. */
|
|
8
|
+
export declare const REGEX_SHORT: RegExp;
|
|
9
|
+
/** Regex to match dailymotion.com/embed/video/{id} URLs. */
|
|
10
|
+
export declare const REGEX_EMBED: RegExp;
|
|
11
|
+
/** Video ID for createPlayer and video-id attribute. */
|
|
12
|
+
export declare const VIDEO_ID = "xcs52i";
|
|
13
|
+
/** Full URL for src attribute. */
|
|
14
|
+
export declare const SOURCE_URL = "https://www.dailymotion.com/video/xcs52i";
|
|
15
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/elements/dailymotion/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,sDAAsD;AACtD,eAAO,MAAM,WAAW,QAA4C,CAAC;AAErE,6CAA6C;AAC7C,eAAO,MAAM,WAAW,QAA4B,CAAC;AAErD,4DAA4D;AAC5D,eAAO,MAAM,WAAW,QAAmD,CAAC;AAE5E,wDAAwD;AACxD,eAAO,MAAM,QAAQ,WAAW,CAAC;AAEjC,kCAAkC;AAClC,eAAO,MAAM,UAAU,6CAAkD,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider constants: test URLs and IDs for Dailymotion.
|
|
3
|
+
* Use these in tests and test pages so videos stay valid in one place.
|
|
4
|
+
*/
|
|
5
|
+
/** Regex to match dailymotion.com/video/{id} URLs. */
|
|
6
|
+
export const REGEX_VIDEO = /dailymotion\.com\/video\/([a-zA-Z0-9]+)/;
|
|
7
|
+
/** Regex to match dai.ly/{id} short URLs. */
|
|
8
|
+
export const REGEX_SHORT = /dai\.ly\/([a-zA-Z0-9]+)/;
|
|
9
|
+
/** Regex to match dailymotion.com/embed/video/{id} URLs. */
|
|
10
|
+
export const REGEX_EMBED = /dailymotion\.com\/embed\/video\/([a-zA-Z0-9]+)/;
|
|
11
|
+
/** Video ID for createPlayer and video-id attribute. */
|
|
12
|
+
export const VIDEO_ID = "xcs52i";
|
|
13
|
+
/** Full URL for src attribute. */
|
|
14
|
+
export const SOURCE_URL = `https://www.dailymotion.com/video/${VIDEO_ID}`;
|
|
15
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/elements/dailymotion/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,sDAAsD;AACtD,MAAM,CAAC,MAAM,WAAW,GAAG,yCAAyC,CAAC;AAErE,6CAA6C;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAG,yBAAyB,CAAC;AAErD,4DAA4D;AAC5D,MAAM,CAAC,MAAM,WAAW,GAAG,gDAAgD,CAAC;AAE5E,wDAAwD;AACxD,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAEjC,kCAAkC;AAClC,MAAM,CAAC,MAAM,UAAU,GAAG,qCAAqC,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"player.d.ts","sourceRoot":"","sources":["../../../src/elements/dailymotion/player.ts"],"names":[],"mappings":""}
|