@aigamo/nostalgic-diva 0.0.1-alpha.66
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/LICENSE +22 -0
- package/README.md +171 -0
- package/dist/AudioPlayer-BMxdg9dp.js +35 -0
- package/dist/AudioPlayer-BMxdg9dp.js.map +1 -0
- package/dist/AudioPlayer-CgUxIJwa.cjs +2 -0
- package/dist/AudioPlayer-CgUxIJwa.cjs.map +1 -0
- package/dist/DailymotionPlayer-B4M9j0Lx.js +65 -0
- package/dist/DailymotionPlayer-B4M9j0Lx.js.map +1 -0
- package/dist/DailymotionPlayer-BdI4qcvJ.cjs +2 -0
- package/dist/DailymotionPlayer-BdI4qcvJ.cjs.map +1 -0
- package/dist/NiconicoPlayer-C1bgzaCT.cjs +2 -0
- package/dist/NiconicoPlayer-C1bgzaCT.cjs.map +1 -0
- package/dist/NiconicoPlayer-Cx3hGYsw.js +36 -0
- package/dist/NiconicoPlayer-Cx3hGYsw.js.map +1 -0
- package/dist/SoundCloudPlayer-BiFTnxn9.cjs +2 -0
- package/dist/SoundCloudPlayer-BiFTnxn9.cjs.map +1 -0
- package/dist/SoundCloudPlayer-C8QVPCXH.js +43 -0
- package/dist/SoundCloudPlayer-C8QVPCXH.js.map +1 -0
- package/dist/TwitchPlayer-C9D_eEaj.js +40 -0
- package/dist/TwitchPlayer-C9D_eEaj.js.map +1 -0
- package/dist/TwitchPlayer-DdhZD1Bh.cjs +2 -0
- package/dist/TwitchPlayer-DdhZD1Bh.cjs.map +1 -0
- package/dist/VimeoPlayer-DfBZwtd9.cjs +2 -0
- package/dist/VimeoPlayer-DfBZwtd9.cjs.map +1 -0
- package/dist/VimeoPlayer-UnKk2VAq.js +43 -0
- package/dist/VimeoPlayer-UnKk2VAq.js.map +1 -0
- package/dist/YouTubePlayer-CeTkdcOO.cjs +2 -0
- package/dist/YouTubePlayer-CeTkdcOO.cjs.map +1 -0
- package/dist/YouTubePlayer-bNmEJD02.js +39 -0
- package/dist/YouTubePlayer-bNmEJD02.js.map +1 -0
- package/dist/components/AudioPlayer.d.ts +4 -0
- package/dist/components/DailymotionPlayer.d.ts +4 -0
- package/dist/components/NiconicoPlayer.d.ts +4 -0
- package/dist/components/NostalgicDiva.d.ts +10 -0
- package/dist/components/NostalgicDivaProvider.d.ts +14 -0
- package/dist/components/PlayerContainer.d.ts +19 -0
- package/dist/components/SoundCloudPlayer.d.ts +4 -0
- package/dist/components/TwitchPlayer.d.ts +4 -0
- package/dist/components/VimeoPlayer.d.ts +4 -0
- package/dist/components/YouTubePlayer.d.ts +4 -0
- package/dist/components/defineNostalgicDiva.d.ts +27 -0
- package/dist/components/index.d.ts +4 -0
- package/dist/components/useFirstMountState.d.ts +1 -0
- package/dist/components/usePreviousDistinct.d.ts +2 -0
- package/dist/controllers/AudioPlayerController.d.ts +17 -0
- package/dist/controllers/DailymotionPlayerController.d.ts +18 -0
- package/dist/controllers/Logger.d.ts +50 -0
- package/dist/controllers/NiconicoPlayerController.d.ts +29 -0
- package/dist/controllers/NullPlayerController.d.ts +20 -0
- package/dist/controllers/PlayerController.d.ts +67 -0
- package/dist/controllers/PlayerControllerImpl.d.ts +23 -0
- package/dist/controllers/SoundCloudPlayerController.d.ts +21 -0
- package/dist/controllers/TwitchPlayerController.d.ts +22 -0
- package/dist/controllers/VimeoPlayerController.d.ts +17 -0
- package/dist/controllers/YouTubePlayerController.d.ts +27 -0
- package/dist/controllers/ensureScriptLoaded.d.ts +2 -0
- package/dist/controllers/getScript.d.ts +1 -0
- package/dist/controllers/index.d.ts +11 -0
- package/dist/ensureScriptLoaded-CkK_-Amf.cjs +2 -0
- package/dist/ensureScriptLoaded-CkK_-Amf.cjs.map +1 -0
- package/dist/ensureScriptLoaded-HHnKf-aZ.js +24 -0
- package/dist/ensureScriptLoaded-HHnKf-aZ.js.map +1 -0
- package/dist/index.cjs.js +2 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.es.js +1238 -0
- package/dist/index.es.js.map +1 -0
- package/dist/services/AudioVideoService.d.ts +6 -0
- package/dist/services/DailymotionVideoService.d.ts +6 -0
- package/dist/services/NiconicoVideoService.d.ts +6 -0
- package/dist/services/SoundCloudVideoService.d.ts +6 -0
- package/dist/services/TwitchVideoService.d.ts +6 -0
- package/dist/services/VideoService.d.ts +7 -0
- package/dist/services/VimeoVideoService.d.ts +6 -0
- package/dist/services/YouTubeVideoService.d.ts +6 -0
- package/dist/services/findVideoService.d.ts +3 -0
- package/dist/services/index.d.ts +2 -0
- package/package.json +83 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022 VocaDB Devgroup
|
|
4
|
+
Copyright (c) 2023 Aigamo
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software without restriction, including without limitation the rights
|
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# Nostalgic Diva
|
|
2
|
+
|
|
3
|
+
React function components for imperatively controlling embedded players (audio, [Dailymotion](https://www.dailymotion.com/), [Niconico](https://www.nicovideo.jp/), [SoundCloud](https://soundcloud.com/), [Twitch](https://www.twitch.tv/), [Vimeo](https://vimeo.com/) and [YouTube](https://www.youtube.com/)) using refs.
|
|
4
|
+
|
|
5
|
+
This was originally developed in [VocaDB/vocadb#1101](https://github.com/VocaDB/vocadb/pull/1101) as a part of VocaDB.
|
|
6
|
+
|
|
7
|
+
NOTE: This is an independent fork of VocaDB/nostalgic-diva.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
`yarn add @aigamo/nostalgic-diva` or `npm i @aigamo/nostalgic-diva`
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import {
|
|
17
|
+
NostalgicDiva,
|
|
18
|
+
NostalgicDivaProvider,
|
|
19
|
+
PlayerOptions,
|
|
20
|
+
} from '@aigamo/nostalgic-diva';
|
|
21
|
+
|
|
22
|
+
// Callbacks
|
|
23
|
+
const handleError = useCallback(() => {}, []);
|
|
24
|
+
const handlePlay = useCallback(() => {}, []);
|
|
25
|
+
const handlePause = useCallback(() => {}, []);
|
|
26
|
+
const handleEnded = useCallback(() => {}, []);
|
|
27
|
+
const handleTimeUpdate = useCallback(() => {}, []);
|
|
28
|
+
|
|
29
|
+
// Options
|
|
30
|
+
const options = useMemo(
|
|
31
|
+
(): PlayerOptions => ({
|
|
32
|
+
onError: handleError,
|
|
33
|
+
onPlay: handlePlay,
|
|
34
|
+
onPause: handlePause,
|
|
35
|
+
onEnded: handleEnded,
|
|
36
|
+
onTimeUpdate: handleTimeUpdate,
|
|
37
|
+
}),
|
|
38
|
+
[handleError, handlePlay, handlePause, handleEnded, handleTimeUpdate],
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
<NostalgicDivaProvider>
|
|
42
|
+
<NostalgicDiva
|
|
43
|
+
// Supported media types:
|
|
44
|
+
// - "Audio"
|
|
45
|
+
// - "Niconico"
|
|
46
|
+
// - "SoundCloud"
|
|
47
|
+
// - "Vimeo"
|
|
48
|
+
// - "YouTube"
|
|
49
|
+
src="https://www.youtube.com/watch?v=bGdtvUQ9OAs"
|
|
50
|
+
options={options}
|
|
51
|
+
/>
|
|
52
|
+
;
|
|
53
|
+
</NostalgicDivaProvider>;
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
```tsx
|
|
57
|
+
import { useNostalgicDiva } from '@aigamo/nostalgic-diva';
|
|
58
|
+
|
|
59
|
+
const diva = useNostalgicDiva();
|
|
60
|
+
|
|
61
|
+
// Play
|
|
62
|
+
await diva.play();
|
|
63
|
+
|
|
64
|
+
// Pause
|
|
65
|
+
await diva.pause();
|
|
66
|
+
|
|
67
|
+
// Mute
|
|
68
|
+
await diva.setMuted(true);
|
|
69
|
+
|
|
70
|
+
// Unmute
|
|
71
|
+
await diva.setMuted(false);
|
|
72
|
+
|
|
73
|
+
// Seek
|
|
74
|
+
await diva.setCurrentTime(seconds);
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
or by using a [Web Component](https://developer.mozilla.org/en-US/docs/Web/API/Web_Components)
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
import { defineNostalgicDiva } from '@aigamo/nostalgic-diva';
|
|
81
|
+
|
|
82
|
+
defineNostalgicDiva();
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
```html
|
|
86
|
+
<nostalgic-diva
|
|
87
|
+
src="https://www.youtube.com/watch?v=bGdtvUQ9OAs"
|
|
88
|
+
id="nostalgic-diva"
|
|
89
|
+
/>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
```ts
|
|
93
|
+
import { NostalgicDivaElement } from '@aigamo/nostalgic-diva';
|
|
94
|
+
|
|
95
|
+
const diva = document.querySelector<NostalgicDivaElement>('#nostalgic-diva');
|
|
96
|
+
|
|
97
|
+
// Event listeners
|
|
98
|
+
diva.addEventListener('error', (e) => {});
|
|
99
|
+
diva.addEventListener('play', (e) => {});
|
|
100
|
+
diva.addEventListener('pause', (e) => {});
|
|
101
|
+
diva.addEventListener('ended', (e) => {});
|
|
102
|
+
diva.addEventListener('timeupdate', (e) => {});
|
|
103
|
+
|
|
104
|
+
// Play
|
|
105
|
+
await diva.play();
|
|
106
|
+
|
|
107
|
+
// Pause
|
|
108
|
+
await diva.pause();
|
|
109
|
+
|
|
110
|
+
// Mute
|
|
111
|
+
await diva.setMuted(true);
|
|
112
|
+
|
|
113
|
+
// Unmute
|
|
114
|
+
await diva.setMuted(false);
|
|
115
|
+
|
|
116
|
+
// Seek
|
|
117
|
+
await diva.setCurrentTime(seconds);
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Imperative functions
|
|
121
|
+
|
|
122
|
+
| Function | Description |
|
|
123
|
+
| ------------------------------------------------ | ------------------------------------------------------------------- |
|
|
124
|
+
| `loadVideo(id: string): Promise<void>` | Loads a new video into an existing player. |
|
|
125
|
+
| `play(): Promise<void>` | Plays a video. |
|
|
126
|
+
| `pause(): Promise<void>` | Pauses the playback of a video. |
|
|
127
|
+
| `setCurrentTime(seconds: number): Promise<void>` | Sets the current playback position in seconds. |
|
|
128
|
+
| `setVolume(volume: number): Promise<void>` | Sets the volume level of the player on a scale from 0 to 1. |
|
|
129
|
+
| `setMuted(muted: boolean): Promise<void>` | Sets the muted state of the player. |
|
|
130
|
+
| `getDuration(): Promise<number \| undefined>` | Gets the duration of the video in seconds. |
|
|
131
|
+
| `getCurrentTime(): Promise<number \| undefined>` | Gets the current playback position of a video, measured in seconds. |
|
|
132
|
+
|
|
133
|
+
## Events
|
|
134
|
+
|
|
135
|
+
| Event | Description |
|
|
136
|
+
| -------------------------------------- | ------------------------------------------------------ |
|
|
137
|
+
| `onError(event: any): void` | Fired when the player experiences some sort of error. |
|
|
138
|
+
| `onPlay(): void` | Fired when the video plays. |
|
|
139
|
+
| `onPause(): void` | Fired when the video is paused. |
|
|
140
|
+
| `onEnded(): void` | Fired when playback reaches the end of a video. |
|
|
141
|
+
| `onTimeUpdate(event: TimeEvent): void` | Fired when the playback position of the video changes. |
|
|
142
|
+
|
|
143
|
+
## Lifecycle
|
|
144
|
+
|
|
145
|
+
1. [PlayerController.attach](https://github.com/ycanardeau/nostalgic-diva/blob/f027a7f8b43523d89cf19d37e8450666d800799d/src/controllers/PlayerController.ts#L95)
|
|
146
|
+
1. [IPlayerController.loadVideo](https://github.com/ycanardeau/nostalgic-diva/blob/f027a7f8b43523d89cf19d37e8450666d800799d/src/controllers/PlayerController.ts#L38)
|
|
147
|
+
1. [PlayerOptions.onLoaded](https://github.com/ycanardeau/nostalgic-diva/blob/f027a7f8b43523d89cf19d37e8450666d800799d/src/controllers/PlayerController.ts#L30)
|
|
148
|
+
1. [IPlayerController.play](https://github.com/ycanardeau/nostalgic-diva/blob/f027a7f8b43523d89cf19d37e8450666d800799d/src/controllers/PlayerController.ts#L39)
|
|
149
|
+
1. [PlayerOptions.onPlay](https://github.com/ycanardeau/nostalgic-diva/blob/f027a7f8b43523d89cf19d37e8450666d800799d/src/controllers/PlayerController.ts#L31)
|
|
150
|
+
1. [PlayerOptions.onTimeUpdate](https://github.com/ycanardeau/nostalgic-diva/blob/f027a7f8b43523d89cf19d37e8450666d800799d/src/controllers/PlayerController.ts#L34)
|
|
151
|
+
1. [IPlayerController.pause](https://github.com/ycanardeau/nostalgic-diva/blob/f027a7f8b43523d89cf19d37e8450666d800799d/src/controllers/PlayerController.ts#L40)
|
|
152
|
+
1. [PlayerOptions.onPause](https://github.com/ycanardeau/nostalgic-diva/blob/f027a7f8b43523d89cf19d37e8450666d800799d/src/controllers/PlayerController.ts#L32)
|
|
153
|
+
1. [PlayerOptions.onEnded](https://github.com/ycanardeau/nostalgic-diva/blob/f027a7f8b43523d89cf19d37e8450666d800799d/src/controllers/PlayerController.ts#L33)
|
|
154
|
+
1. [PlayerController.detach](https://github.com/ycanardeau/nostalgic-diva/blob/f027a7f8b43523d89cf19d37e8450666d800799d/src/controllers/PlayerController.ts#L120)
|
|
155
|
+
|
|
156
|
+
The `attach` function is called when switching from another player (Audio, Niconico, SoundCloud and YouTube), and the `detach` function is called when switching to another player. After the `detach` function is called, you cannot use any imperative functions like `loadVideo`, `play`, `pause` and etc.
|
|
157
|
+
|
|
158
|
+
## References
|
|
159
|
+
|
|
160
|
+
- [vocadb/VocaDbWeb/Scripts/ViewModels/PVs/](https://github.com/VocaDB/vocadb/tree/5304e764cf423f07b424e94266e415db40d11f28/VocaDbWeb/Scripts/ViewModels/PVs)
|
|
161
|
+
- [React Player](https://github.com/cookpete/react-player)
|
|
162
|
+
- [ニコニコ動画の HTML5 外部プレイヤーを JavaScript で操作する](https://blog.hayu.io/web/create/nicovideo-embed-player-api/)
|
|
163
|
+
- [Widget API - SoundCloud Developers](https://developers.soundcloud.com/docs/api/html5-widget)
|
|
164
|
+
- [Player SDK: Reference - Vimeo Developer](https://developer.vimeo.com/player/sdk/reference)
|
|
165
|
+
- [YouTube Player API Reference for iframe Embeds | YouTube IFrame Player API | Google Developers](https://developers.google.com/youtube/iframe_api_reference)
|
|
166
|
+
- [How to support Reusable State in Effects · Discussion #18 · reactwg/react-18](https://github.com/reactwg/react-18/discussions/18)
|
|
167
|
+
- [Synchronizing with Effects](https://beta.reactjs.org/learn/synchronizing-with-effects#how-to-handle-the-effect-firing-twice-in-development)
|
|
168
|
+
- [dailymotion/dailymotion-sdk-js: Dailymotion JavaScript client API](https://github.com/dailymotion/dailymotion-sdk-js)
|
|
169
|
+
- [Video & Clips | Twitch Developers](https://dev.twitch.tv/docs/embed/video-and-clips/)
|
|
170
|
+
- [bitovi/react-to-web-component: Convert react components to native Web Components. Works with Preact too!](https://github.com/bitovi/react-to-web-component)
|
|
171
|
+
- [Using custom elements - Web APIs | MDN](https://developer.mozilla.org/en-US/docs/Web/API/Web_Components/Using_custom_elements)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { LogLevel as i, PlayerContainer as u, AudioPlayerController as c } from "./index.es.js";
|
|
3
|
+
import { memo as n, useCallback as d } from "react";
|
|
4
|
+
const g = n(({ ...r }) => {
|
|
5
|
+
const { logger: t } = r;
|
|
6
|
+
t.log(i.Debug, "AudioPlayer");
|
|
7
|
+
const l = d(
|
|
8
|
+
(o) => Promise.resolve(o),
|
|
9
|
+
[]
|
|
10
|
+
);
|
|
11
|
+
return /* @__PURE__ */ e(
|
|
12
|
+
u,
|
|
13
|
+
{
|
|
14
|
+
...r,
|
|
15
|
+
loadScript: void 0,
|
|
16
|
+
playerFactory: l,
|
|
17
|
+
controllerFactory: c,
|
|
18
|
+
children: (o, a) => /* @__PURE__ */ e(
|
|
19
|
+
"audio",
|
|
20
|
+
{
|
|
21
|
+
ref: o,
|
|
22
|
+
src: a,
|
|
23
|
+
style: { width: "100%", height: "100%" },
|
|
24
|
+
preload: "auto",
|
|
25
|
+
autoPlay: !0,
|
|
26
|
+
controls: !0
|
|
27
|
+
}
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
});
|
|
32
|
+
export {
|
|
33
|
+
g as default
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=AudioPlayer-BMxdg9dp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioPlayer-BMxdg9dp.js","sources":["../src/components/AudioPlayer.tsx"],"sourcesContent":["import {\n\tPlayerContainer,\n\ttype PlayerProps,\n} from '@/components/PlayerContainer';\nimport { AudioPlayerController } from '@/controllers/AudioPlayerController';\nimport { LogLevel } from '@/controllers/Logger';\nimport { type ReactElement, memo, useCallback } from 'react';\n\nconst AudioPlayer = memo(({ ...props }: PlayerProps): ReactElement => {\n\tconst { logger } = props;\n\n\tlogger.log(LogLevel.Debug, 'AudioPlayer');\n\n\tconst playerFactory = useCallback(\n\t\t(element: HTMLAudioElement): Promise<HTMLAudioElement> => {\n\t\t\treturn Promise.resolve(element);\n\t\t},\n\t\t[],\n\t);\n\n\treturn (\n\t\t<PlayerContainer\n\t\t\t{...props}\n\t\t\tloadScript={undefined}\n\t\t\tplayerFactory={playerFactory}\n\t\t\tcontrollerFactory={AudioPlayerController}\n\t\t>\n\t\t\t{(elementRef, videoId): ReactElement => (\n\t\t\t\t<audio\n\t\t\t\t\tref={elementRef}\n\t\t\t\t\tsrc={videoId}\n\t\t\t\t\tstyle={{ width: '100%', height: '100%' }}\n\t\t\t\t\tpreload=\"auto\"\n\t\t\t\t\tautoPlay\n\t\t\t\t\tcontrols\n\t\t\t\t/>\n\t\t\t)}\n\t\t</PlayerContainer>\n\t);\n});\n\nexport default AudioPlayer;\n"],"names":["AudioPlayer","memo","props","logger","LogLevel","playerFactory","useCallback","element","jsx","PlayerContainer","AudioPlayerController","elementRef","videoId"],"mappings":";;;AAQA,MAAMA,IAAcC,EAAK,CAAC,EAAE,GAAGC,QAAuC;AACrE,QAAM,EAAE,QAAAC,MAAWD;AAEnB,EAAAC,EAAO,IAAIC,EAAS,OAAO,aAAa;AAExC,QAAMC,IAAgBC;AAAA,IACrB,CAACC,MACO,QAAQ,QAAQA,CAAO;AAAA,IAE/B,CAAA;AAAA,EAAC;AAGF,SACC,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,GAAGP;AAAA,MACJ,YAAY;AAAA,MACZ,eAAAG;AAAA,MACA,mBAAmBK;AAAA,MAElB,UAAA,CAACC,GAAYC,MACb,gBAAAJ;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,KAAKG;AAAA,UACL,KAAKC;AAAA,UACL,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAA;AAAA,UAChC,SAAQ;AAAA,UACR,UAAQ;AAAA,UACR,UAAQ;AAAA,QAAA;AAAA,MAAA;AAAA,IACT;AAAA,EAAA;AAIJ,CAAC;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),r=require("./index.cjs.js"),l=require("react"),n=l.memo(({...o})=>{const{logger:a}=o;a.log(r.LogLevel.Debug,"AudioPlayer");const u=l.useCallback(e=>Promise.resolve(e),[]);return t.jsx(r.PlayerContainer,{...o,loadScript:void 0,playerFactory:u,controllerFactory:r.AudioPlayerController,children:(e,i)=>t.jsx("audio",{ref:e,src:i,style:{width:"100%",height:"100%"},preload:"auto",autoPlay:!0,controls:!0})})});exports.default=n;
|
|
2
|
+
//# sourceMappingURL=AudioPlayer-CgUxIJwa.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioPlayer-CgUxIJwa.cjs","sources":["../src/components/AudioPlayer.tsx"],"sourcesContent":["import {\n\tPlayerContainer,\n\ttype PlayerProps,\n} from '@/components/PlayerContainer';\nimport { AudioPlayerController } from '@/controllers/AudioPlayerController';\nimport { LogLevel } from '@/controllers/Logger';\nimport { type ReactElement, memo, useCallback } from 'react';\n\nconst AudioPlayer = memo(({ ...props }: PlayerProps): ReactElement => {\n\tconst { logger } = props;\n\n\tlogger.log(LogLevel.Debug, 'AudioPlayer');\n\n\tconst playerFactory = useCallback(\n\t\t(element: HTMLAudioElement): Promise<HTMLAudioElement> => {\n\t\t\treturn Promise.resolve(element);\n\t\t},\n\t\t[],\n\t);\n\n\treturn (\n\t\t<PlayerContainer\n\t\t\t{...props}\n\t\t\tloadScript={undefined}\n\t\t\tplayerFactory={playerFactory}\n\t\t\tcontrollerFactory={AudioPlayerController}\n\t\t>\n\t\t\t{(elementRef, videoId): ReactElement => (\n\t\t\t\t<audio\n\t\t\t\t\tref={elementRef}\n\t\t\t\t\tsrc={videoId}\n\t\t\t\t\tstyle={{ width: '100%', height: '100%' }}\n\t\t\t\t\tpreload=\"auto\"\n\t\t\t\t\tautoPlay\n\t\t\t\t\tcontrols\n\t\t\t\t/>\n\t\t\t)}\n\t\t</PlayerContainer>\n\t);\n});\n\nexport default AudioPlayer;\n"],"names":["AudioPlayer","memo","props","logger","LogLevel","playerFactory","useCallback","element","jsx","PlayerContainer","AudioPlayerController","elementRef","videoId"],"mappings":"oKAQMA,EAAcC,EAAAA,KAAK,CAAC,CAAE,GAAGC,KAAuC,CACrE,KAAM,CAAE,OAAAC,GAAWD,EAEnBC,EAAO,IAAIC,WAAS,MAAO,aAAa,EAExC,MAAMC,EAAgBC,EAAAA,YACpBC,GACO,QAAQ,QAAQA,CAAO,EAE/B,CAAA,CAAC,EAGF,OACCC,EAAAA,IAACC,EAAAA,gBAAA,CACC,GAAGP,EACJ,WAAY,OACZ,cAAAG,EACA,kBAAmBK,EAAAA,sBAElB,SAAA,CAACC,EAAYC,IACbJ,EAAAA,IAAC,QAAA,CACA,IAAKG,EACL,IAAKC,EACL,MAAO,CAAE,MAAO,OAAQ,OAAQ,MAAA,EAChC,QAAQ,OACR,SAAQ,GACR,SAAQ,EAAA,CAAA,CACT,CAAA,CAIJ,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { LogLevel as m, PlayerContainer as y, DailymotionPlayerController as s } from "./index.es.js";
|
|
3
|
+
import { e as g } from "./ensureScriptLoaded-HHnKf-aZ.js";
|
|
4
|
+
import { memo as h, useCallback as l } from "react";
|
|
5
|
+
const v = h(
|
|
6
|
+
({ options: e, ...t }) => {
|
|
7
|
+
const { logger: r } = t;
|
|
8
|
+
r.log(m.Debug, "DailymotionPlayer");
|
|
9
|
+
const i = l(async () => {
|
|
10
|
+
await g("https://api.dmcdn.net/all.js", r);
|
|
11
|
+
}, [r]), d = l(
|
|
12
|
+
(a, n) => Promise.resolve(
|
|
13
|
+
new DM.player(a, {
|
|
14
|
+
video: n,
|
|
15
|
+
width: "100%",
|
|
16
|
+
height: "100%",
|
|
17
|
+
events: {
|
|
18
|
+
apiready: () => {
|
|
19
|
+
e?.onLoaded?.({ id: n });
|
|
20
|
+
},
|
|
21
|
+
seeked: () => {
|
|
22
|
+
e?.onTimeUpdate?.({
|
|
23
|
+
duration: 0,
|
|
24
|
+
percent: 0,
|
|
25
|
+
seconds: 0
|
|
26
|
+
});
|
|
27
|
+
},
|
|
28
|
+
video_end: () => {
|
|
29
|
+
e?.onEnded?.();
|
|
30
|
+
},
|
|
31
|
+
durationchange: () => {
|
|
32
|
+
},
|
|
33
|
+
pause: () => {
|
|
34
|
+
e?.onPause?.();
|
|
35
|
+
},
|
|
36
|
+
playing: () => {
|
|
37
|
+
e?.onPlay?.();
|
|
38
|
+
},
|
|
39
|
+
waiting: () => {
|
|
40
|
+
},
|
|
41
|
+
error: (c) => {
|
|
42
|
+
e?.onError?.(c);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
})
|
|
46
|
+
),
|
|
47
|
+
[e]
|
|
48
|
+
);
|
|
49
|
+
return /* @__PURE__ */ o(
|
|
50
|
+
y,
|
|
51
|
+
{
|
|
52
|
+
...t,
|
|
53
|
+
options: e,
|
|
54
|
+
loadScript: i,
|
|
55
|
+
playerFactory: d,
|
|
56
|
+
controllerFactory: s,
|
|
57
|
+
children: (a) => /* @__PURE__ */ o("div", { style: { width: "100%", height: "100%" }, children: /* @__PURE__ */ o("div", { ref: a }) })
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
export {
|
|
63
|
+
v as default
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=DailymotionPlayer-B4M9j0Lx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DailymotionPlayer-B4M9j0Lx.js","sources":["../src/components/DailymotionPlayer.tsx"],"sourcesContent":["import {\n\tPlayerContainer,\n\ttype PlayerProps,\n} from '@/components/PlayerContainer';\nimport { DailymotionPlayerController } from '@/controllers/DailymotionPlayerController';\nimport { LogLevel } from '@/controllers/Logger';\nimport { ensureScriptLoaded } from '@/controllers/ensureScriptLoaded';\nimport { type ReactElement, memo, useCallback } from 'react';\n\nconst DailymotionPlayer = memo(\n\t({ options, ...props }: PlayerProps): ReactElement => {\n\t\tconst { logger } = props;\n\n\t\tlogger.log(LogLevel.Debug, 'DailymotionPlayer');\n\n\t\tconst loadScript = useCallback(async () => {\n\t\t\tawait ensureScriptLoaded('https://api.dmcdn.net/all.js', logger);\n\t\t}, [logger]);\n\n\t\tconst playerFactory = useCallback(\n\t\t\t(element: HTMLDivElement, videoId: string): Promise<DM.player> => {\n\t\t\t\treturn Promise.resolve(\n\t\t\t\t\tnew DM.player(element, {\n\t\t\t\t\t\tvideo: videoId,\n\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\tevents: {\n\t\t\t\t\t\t\tapiready: (): void => {\n\t\t\t\t\t\t\t\toptions?.onLoaded?.({ id: videoId });\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tseeked: (): void => {\n\t\t\t\t\t\t\t\toptions?.onTimeUpdate?.({\n\t\t\t\t\t\t\t\t\tduration: 0,\n\t\t\t\t\t\t\t\t\tpercent: 0,\n\t\t\t\t\t\t\t\t\tseconds: 0,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tvideo_end: (): void => {\n\t\t\t\t\t\t\t\toptions?.onEnded?.();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdurationchange: (): void => {},\n\t\t\t\t\t\t\tpause: (): void => {\n\t\t\t\t\t\t\t\toptions?.onPause?.();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tplaying: (): void => {\n\t\t\t\t\t\t\t\toptions?.onPlay?.();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\twaiting: (): void => {},\n\t\t\t\t\t\t\terror: (error): void => {\n\t\t\t\t\t\t\t\toptions?.onError?.(error);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t},\n\t\t\t[options],\n\t\t);\n\n\t\treturn (\n\t\t\t<PlayerContainer\n\t\t\t\t{...props}\n\t\t\t\toptions={options}\n\t\t\t\tloadScript={loadScript}\n\t\t\t\tplayerFactory={playerFactory}\n\t\t\t\tcontrollerFactory={DailymotionPlayerController}\n\t\t\t>\n\t\t\t\t{(elementRef): ReactElement => (\n\t\t\t\t\t<div style={{ width: '100%', height: '100%' }}>\n\t\t\t\t\t\t<div ref={elementRef} />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</PlayerContainer>\n\t\t);\n\t},\n);\n\nexport default DailymotionPlayer;\n"],"names":["DailymotionPlayer","memo","options","props","logger","LogLevel","loadScript","useCallback","ensureScriptLoaded","playerFactory","element","videoId","error","jsx","PlayerContainer","DailymotionPlayerController","elementRef"],"mappings":";;;;AASA,MAAMA,IAAoBC;AAAA,EACzB,CAAC,EAAE,SAAAC,GAAS,GAAGC,QAAuC;AACrD,UAAM,EAAE,QAAAC,MAAWD;AAEnB,IAAAC,EAAO,IAAIC,EAAS,OAAO,mBAAmB;AAE9C,UAAMC,IAAaC,EAAY,YAAY;AAC1C,YAAMC,EAAmB,gCAAgCJ,CAAM;AAAA,IAChE,GAAG,CAACA,CAAM,CAAC,GAELK,IAAgBF;AAAA,MACrB,CAACG,GAAyBC,MAClB,QAAQ;AAAA,QACd,IAAI,GAAG,OAAOD,GAAS;AAAA,UACtB,OAAOC;AAAA,UACP,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,YACP,UAAU,MAAY;AACrB,cAAAT,GAAS,WAAW,EAAE,IAAIS,EAAA,CAAS;AAAA,YACpC;AAAA,YACA,QAAQ,MAAY;AACnB,cAAAT,GAAS,eAAe;AAAA,gBACvB,UAAU;AAAA,gBACV,SAAS;AAAA,gBACT,SAAS;AAAA,cAAA,CACT;AAAA,YACF;AAAA,YACA,WAAW,MAAY;AACtB,cAAAA,GAAS,UAAA;AAAA,YACV;AAAA,YACA,gBAAgB,MAAY;AAAA,YAAC;AAAA,YAC7B,OAAO,MAAY;AAClB,cAAAA,GAAS,UAAA;AAAA,YACV;AAAA,YACA,SAAS,MAAY;AACpB,cAAAA,GAAS,SAAA;AAAA,YACV;AAAA,YACA,SAAS,MAAY;AAAA,YAAC;AAAA,YACtB,OAAO,CAACU,MAAgB;AACvB,cAAAV,GAAS,UAAUU,CAAK;AAAA,YACzB;AAAA,UAAA;AAAA,QACD,CACA;AAAA,MAAA;AAAA,MAGH,CAACV,CAAO;AAAA,IAAA;AAGT,WACC,gBAAAW;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,GAAGX;AAAA,QACJ,SAAAD;AAAA,QACA,YAAAI;AAAA,QACA,eAAAG;AAAA,QACA,mBAAmBM;AAAA,QAElB,UAAA,CAACC,MACD,gBAAAH,EAAC,OAAA,EAAI,OAAO,EAAE,OAAO,QAAQ,QAAQ,UACpC,UAAA,gBAAAA,EAAC,OAAA,EAAI,KAAKG,GAAY,EAAA,CACvB;AAAA,MAAA;AAAA,IAAA;AAAA,EAIJ;AACD;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),t=require("./index.cjs.js"),u=require("./ensureScriptLoaded-CkK_-Amf.cjs"),l=require("react"),y=l.memo(({options:e,...i})=>{const{logger:r}=i;r.log(t.LogLevel.Debug,"DailymotionPlayer");const d=l.useCallback(async()=>{await u.ensureScriptLoaded("https://api.dmcdn.net/all.js",r)},[r]),c=l.useCallback((a,o)=>Promise.resolve(new DM.player(a,{video:o,width:"100%",height:"100%",events:{apiready:()=>{e?.onLoaded?.({id:o})},seeked:()=>{e?.onTimeUpdate?.({duration:0,percent:0,seconds:0})},video_end:()=>{e?.onEnded?.()},durationchange:()=>{},pause:()=>{e?.onPause?.()},playing:()=>{e?.onPlay?.()},waiting:()=>{},error:s=>{e?.onError?.(s)}}})),[e]);return n.jsx(t.PlayerContainer,{...i,options:e,loadScript:d,playerFactory:c,controllerFactory:t.DailymotionPlayerController,children:a=>n.jsx("div",{style:{width:"100%",height:"100%"},children:n.jsx("div",{ref:a})})})});exports.default=y;
|
|
2
|
+
//# sourceMappingURL=DailymotionPlayer-BdI4qcvJ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DailymotionPlayer-BdI4qcvJ.cjs","sources":["../src/components/DailymotionPlayer.tsx"],"sourcesContent":["import {\n\tPlayerContainer,\n\ttype PlayerProps,\n} from '@/components/PlayerContainer';\nimport { DailymotionPlayerController } from '@/controllers/DailymotionPlayerController';\nimport { LogLevel } from '@/controllers/Logger';\nimport { ensureScriptLoaded } from '@/controllers/ensureScriptLoaded';\nimport { type ReactElement, memo, useCallback } from 'react';\n\nconst DailymotionPlayer = memo(\n\t({ options, ...props }: PlayerProps): ReactElement => {\n\t\tconst { logger } = props;\n\n\t\tlogger.log(LogLevel.Debug, 'DailymotionPlayer');\n\n\t\tconst loadScript = useCallback(async () => {\n\t\t\tawait ensureScriptLoaded('https://api.dmcdn.net/all.js', logger);\n\t\t}, [logger]);\n\n\t\tconst playerFactory = useCallback(\n\t\t\t(element: HTMLDivElement, videoId: string): Promise<DM.player> => {\n\t\t\t\treturn Promise.resolve(\n\t\t\t\t\tnew DM.player(element, {\n\t\t\t\t\t\tvideo: videoId,\n\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\tevents: {\n\t\t\t\t\t\t\tapiready: (): void => {\n\t\t\t\t\t\t\t\toptions?.onLoaded?.({ id: videoId });\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tseeked: (): void => {\n\t\t\t\t\t\t\t\toptions?.onTimeUpdate?.({\n\t\t\t\t\t\t\t\t\tduration: 0,\n\t\t\t\t\t\t\t\t\tpercent: 0,\n\t\t\t\t\t\t\t\t\tseconds: 0,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tvideo_end: (): void => {\n\t\t\t\t\t\t\t\toptions?.onEnded?.();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdurationchange: (): void => {},\n\t\t\t\t\t\t\tpause: (): void => {\n\t\t\t\t\t\t\t\toptions?.onPause?.();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tplaying: (): void => {\n\t\t\t\t\t\t\t\toptions?.onPlay?.();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\twaiting: (): void => {},\n\t\t\t\t\t\t\terror: (error): void => {\n\t\t\t\t\t\t\t\toptions?.onError?.(error);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t},\n\t\t\t[options],\n\t\t);\n\n\t\treturn (\n\t\t\t<PlayerContainer\n\t\t\t\t{...props}\n\t\t\t\toptions={options}\n\t\t\t\tloadScript={loadScript}\n\t\t\t\tplayerFactory={playerFactory}\n\t\t\t\tcontrollerFactory={DailymotionPlayerController}\n\t\t\t>\n\t\t\t\t{(elementRef): ReactElement => (\n\t\t\t\t\t<div style={{ width: '100%', height: '100%' }}>\n\t\t\t\t\t\t<div ref={elementRef} />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</PlayerContainer>\n\t\t);\n\t},\n);\n\nexport default DailymotionPlayer;\n"],"names":["DailymotionPlayer","memo","options","props","logger","LogLevel","loadScript","useCallback","ensureScriptLoaded","playerFactory","element","videoId","error","jsx","PlayerContainer","DailymotionPlayerController","elementRef"],"mappings":"mNASMA,EAAoBC,EAAAA,KACzB,CAAC,CAAE,QAAAC,EAAS,GAAGC,KAAuC,CACrD,KAAM,CAAE,OAAAC,GAAWD,EAEnBC,EAAO,IAAIC,WAAS,MAAO,mBAAmB,EAE9C,MAAMC,EAAaC,EAAAA,YAAY,SAAY,CAC1C,MAAMC,EAAAA,mBAAmB,+BAAgCJ,CAAM,CAChE,EAAG,CAACA,CAAM,CAAC,EAELK,EAAgBF,EAAAA,YACrB,CAACG,EAAyBC,IAClB,QAAQ,QACd,IAAI,GAAG,OAAOD,EAAS,CACtB,MAAOC,EACP,MAAO,OACP,OAAQ,OACR,OAAQ,CACP,SAAU,IAAY,CACrBT,GAAS,WAAW,CAAE,GAAIS,CAAA,CAAS,CACpC,EACA,OAAQ,IAAY,CACnBT,GAAS,eAAe,CACvB,SAAU,EACV,QAAS,EACT,QAAS,CAAA,CACT,CACF,EACA,UAAW,IAAY,CACtBA,GAAS,UAAA,CACV,EACA,eAAgB,IAAY,CAAC,EAC7B,MAAO,IAAY,CAClBA,GAAS,UAAA,CACV,EACA,QAAS,IAAY,CACpBA,GAAS,SAAA,CACV,EACA,QAAS,IAAY,CAAC,EACtB,MAAQU,GAAgB,CACvBV,GAAS,UAAUU,CAAK,CACzB,CAAA,CACD,CACA,CAAA,EAGH,CAACV,CAAO,CAAA,EAGT,OACCW,EAAAA,IAACC,EAAAA,gBAAA,CACC,GAAGX,EACJ,QAAAD,EACA,WAAAI,EACA,cAAAG,EACA,kBAAmBM,EAAAA,4BAElB,SAACC,GACDH,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,MAAO,OAAQ,OAAQ,QACpC,SAAAA,EAAAA,IAAC,MAAA,CAAI,IAAKG,EAAY,CAAA,CACvB,CAAA,CAAA,CAIJ,CACD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),o=require("./index.cjs.js"),t=require("react"),a=t.memo(({...l})=>{const{logger:i}=l;i.log(o.LogLevel.Debug,"NiconicoPlayer");const c=t.useCallback(e=>Promise.resolve(e),[]);return r.jsx(o.PlayerContainer,{...l,loadScript:void 0,playerFactory:c,controllerFactory:o.NiconicoPlayerController,children:(e,n)=>r.jsx("div",{style:{width:"100%",height:"100%"},children:r.jsx("iframe",{ref:e,src:`https://embed.nicovideo.jp/watch/${n}?jsapi=1&playerId=1`,width:"100%",height:"100%",allowFullScreen:!0,style:{border:"none"},allow:"autoplay; fullscreen"})})})});exports.default=a;
|
|
2
|
+
//# sourceMappingURL=NiconicoPlayer-C1bgzaCT.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NiconicoPlayer-C1bgzaCT.cjs","sources":["../src/components/NiconicoPlayer.tsx"],"sourcesContent":["import {\n\tPlayerContainer,\n\ttype PlayerProps,\n} from '@/components/PlayerContainer';\nimport { LogLevel } from '@/controllers/Logger';\nimport { NiconicoPlayerController } from '@/controllers/NiconicoPlayerController';\nimport { type ReactElement, memo, useCallback } from 'react';\n\nconst NiconicoPlayer = memo(({ ...props }: PlayerProps): ReactElement => {\n\tconst { logger } = props;\n\n\tlogger.log(LogLevel.Debug, 'NiconicoPlayer');\n\n\tconst playerFactory = useCallback(\n\t\t(element: HTMLIFrameElement): Promise<HTMLIFrameElement> => {\n\t\t\treturn Promise.resolve(element);\n\t\t},\n\t\t[],\n\t);\n\n\treturn (\n\t\t<PlayerContainer\n\t\t\t{...props}\n\t\t\tloadScript={undefined}\n\t\t\tplayerFactory={playerFactory}\n\t\t\tcontrollerFactory={NiconicoPlayerController}\n\t\t>\n\t\t\t{(elementRef, videoId): ReactElement => (\n\t\t\t\t<div style={{ width: '100%', height: '100%' }}>\n\t\t\t\t\t{/* eslint-disable-next-line jsx-a11y/iframe-has-title */}\n\t\t\t\t\t<iframe\n\t\t\t\t\t\tref={elementRef}\n\t\t\t\t\t\tsrc={`https://embed.nicovideo.jp/watch/${videoId}?jsapi=1&playerId=1`}\n\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\theight=\"100%\"\n\t\t\t\t\t\tallowFullScreen\n\t\t\t\t\t\tstyle={{ border: 'none' }}\n\t\t\t\t\t\t// The player has to have the allow=\"autoplay\" attribute.\n\t\t\t\t\t\t// Otherwise it throws a NotAllowedError: \"play() failed because the user didn't interact with the document first\".\n\t\t\t\t\t\t// See also: https://github.com/vimeo/player.js/issues/389.\n\t\t\t\t\t\t// NOTE: An iframe element created by `PVPlayerNiconico.playerFactory.create` doesn't have the allow=\"autoplay\" attribute,\n\t\t\t\t\t\t// which causes the above issue when trying to autoplay a video.\n\t\t\t\t\t\tallow=\"autoplay; fullscreen\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</PlayerContainer>\n\t);\n});\n\nexport default NiconicoPlayer;\n"],"names":["NiconicoPlayer","memo","props","logger","LogLevel","playerFactory","useCallback","element","jsx","PlayerContainer","NiconicoPlayerController","elementRef","videoId"],"mappings":"oKAQMA,EAAiBC,EAAAA,KAAK,CAAC,CAAE,GAAGC,KAAuC,CACxE,KAAM,CAAE,OAAAC,GAAWD,EAEnBC,EAAO,IAAIC,WAAS,MAAO,gBAAgB,EAE3C,MAAMC,EAAgBC,EAAAA,YACpBC,GACO,QAAQ,QAAQA,CAAO,EAE/B,CAAA,CAAC,EAGF,OACCC,EAAAA,IAACC,EAAAA,gBAAA,CACC,GAAGP,EACJ,WAAY,OACZ,cAAAG,EACA,kBAAmBK,EAAAA,yBAElB,SAAA,CAACC,EAAYC,IACbJ,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,MAAO,OAAQ,OAAQ,MAAA,EAEpC,SAAAA,EAAAA,IAAC,SAAA,CACA,IAAKG,EACL,IAAK,oCAAoCC,CAAO,sBAChD,MAAM,OACN,OAAO,OACP,gBAAe,GACf,MAAO,CAAE,OAAQ,MAAA,EAMjB,MAAM,sBAAA,CAAA,CACP,CACD,CAAA,CAAA,CAIJ,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { LogLevel as a, PlayerContainer as c, NiconicoPlayerController as n } from "./index.es.js";
|
|
3
|
+
import { memo as s, useCallback as d } from "react";
|
|
4
|
+
const p = s(({ ...r }) => {
|
|
5
|
+
const { logger: l } = r;
|
|
6
|
+
l.log(a.Debug, "NiconicoPlayer");
|
|
7
|
+
const t = d(
|
|
8
|
+
(e) => Promise.resolve(e),
|
|
9
|
+
[]
|
|
10
|
+
);
|
|
11
|
+
return /* @__PURE__ */ o(
|
|
12
|
+
c,
|
|
13
|
+
{
|
|
14
|
+
...r,
|
|
15
|
+
loadScript: void 0,
|
|
16
|
+
playerFactory: t,
|
|
17
|
+
controllerFactory: n,
|
|
18
|
+
children: (e, i) => /* @__PURE__ */ o("div", { style: { width: "100%", height: "100%" }, children: /* @__PURE__ */ o(
|
|
19
|
+
"iframe",
|
|
20
|
+
{
|
|
21
|
+
ref: e,
|
|
22
|
+
src: `https://embed.nicovideo.jp/watch/${i}?jsapi=1&playerId=1`,
|
|
23
|
+
width: "100%",
|
|
24
|
+
height: "100%",
|
|
25
|
+
allowFullScreen: !0,
|
|
26
|
+
style: { border: "none" },
|
|
27
|
+
allow: "autoplay; fullscreen"
|
|
28
|
+
}
|
|
29
|
+
) })
|
|
30
|
+
}
|
|
31
|
+
);
|
|
32
|
+
});
|
|
33
|
+
export {
|
|
34
|
+
p as default
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=NiconicoPlayer-Cx3hGYsw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NiconicoPlayer-Cx3hGYsw.js","sources":["../src/components/NiconicoPlayer.tsx"],"sourcesContent":["import {\n\tPlayerContainer,\n\ttype PlayerProps,\n} from '@/components/PlayerContainer';\nimport { LogLevel } from '@/controllers/Logger';\nimport { NiconicoPlayerController } from '@/controllers/NiconicoPlayerController';\nimport { type ReactElement, memo, useCallback } from 'react';\n\nconst NiconicoPlayer = memo(({ ...props }: PlayerProps): ReactElement => {\n\tconst { logger } = props;\n\n\tlogger.log(LogLevel.Debug, 'NiconicoPlayer');\n\n\tconst playerFactory = useCallback(\n\t\t(element: HTMLIFrameElement): Promise<HTMLIFrameElement> => {\n\t\t\treturn Promise.resolve(element);\n\t\t},\n\t\t[],\n\t);\n\n\treturn (\n\t\t<PlayerContainer\n\t\t\t{...props}\n\t\t\tloadScript={undefined}\n\t\t\tplayerFactory={playerFactory}\n\t\t\tcontrollerFactory={NiconicoPlayerController}\n\t\t>\n\t\t\t{(elementRef, videoId): ReactElement => (\n\t\t\t\t<div style={{ width: '100%', height: '100%' }}>\n\t\t\t\t\t{/* eslint-disable-next-line jsx-a11y/iframe-has-title */}\n\t\t\t\t\t<iframe\n\t\t\t\t\t\tref={elementRef}\n\t\t\t\t\t\tsrc={`https://embed.nicovideo.jp/watch/${videoId}?jsapi=1&playerId=1`}\n\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\theight=\"100%\"\n\t\t\t\t\t\tallowFullScreen\n\t\t\t\t\t\tstyle={{ border: 'none' }}\n\t\t\t\t\t\t// The player has to have the allow=\"autoplay\" attribute.\n\t\t\t\t\t\t// Otherwise it throws a NotAllowedError: \"play() failed because the user didn't interact with the document first\".\n\t\t\t\t\t\t// See also: https://github.com/vimeo/player.js/issues/389.\n\t\t\t\t\t\t// NOTE: An iframe element created by `PVPlayerNiconico.playerFactory.create` doesn't have the allow=\"autoplay\" attribute,\n\t\t\t\t\t\t// which causes the above issue when trying to autoplay a video.\n\t\t\t\t\t\tallow=\"autoplay; fullscreen\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</PlayerContainer>\n\t);\n});\n\nexport default NiconicoPlayer;\n"],"names":["NiconicoPlayer","memo","props","logger","LogLevel","playerFactory","useCallback","element","jsx","PlayerContainer","NiconicoPlayerController","elementRef","videoId"],"mappings":";;;AAQA,MAAMA,IAAiBC,EAAK,CAAC,EAAE,GAAGC,QAAuC;AACxE,QAAM,EAAE,QAAAC,MAAWD;AAEnB,EAAAC,EAAO,IAAIC,EAAS,OAAO,gBAAgB;AAE3C,QAAMC,IAAgBC;AAAA,IACrB,CAACC,MACO,QAAQ,QAAQA,CAAO;AAAA,IAE/B,CAAA;AAAA,EAAC;AAGF,SACC,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,GAAGP;AAAA,MACJ,YAAY;AAAA,MACZ,eAAAG;AAAA,MACA,mBAAmBK;AAAA,MAElB,UAAA,CAACC,GAAYC,MACb,gBAAAJ,EAAC,OAAA,EAAI,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAA,GAEpC,UAAA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,KAAKG;AAAA,UACL,KAAK,oCAAoCC,CAAO;AAAA,UAChD,OAAM;AAAA,UACN,QAAO;AAAA,UACP,iBAAe;AAAA,UACf,OAAO,EAAE,QAAQ,OAAA;AAAA,UAMjB,OAAM;AAAA,QAAA;AAAA,MAAA,EACP,CACD;AAAA,IAAA;AAAA,EAAA;AAIJ,CAAC;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),o=require("./index.cjs.js"),s=require("./ensureScriptLoaded-CkK_-Amf.cjs"),t=require("react"),d=t.memo(({...l})=>{const{logger:e}=l;e.log(o.LogLevel.Debug,"SoundCloudPlayer");const u=t.useCallback(async()=>{await s.ensureScriptLoaded("https://w.soundcloud.com/player/api.js",e)},[e]),n=t.useCallback(r=>Promise.resolve(SC.Widget(r)),[]);return a.jsx(o.PlayerContainer,{...l,loadScript:u,playerFactory:n,controllerFactory:o.SoundCloudPlayerController,children:(r,c)=>a.jsx("iframe",{ref:r,src:`https://w.soundcloud.com/player/?url=${c}`,frameBorder:0,allow:"autoplay",style:{width:"100%",height:"100%"}})})});exports.default=d;
|
|
2
|
+
//# sourceMappingURL=SoundCloudPlayer-BiFTnxn9.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SoundCloudPlayer-BiFTnxn9.cjs","sources":["../src/components/SoundCloudPlayer.tsx"],"sourcesContent":["import {\n\tPlayerContainer,\n\ttype PlayerProps,\n} from '@/components/PlayerContainer';\nimport { LogLevel } from '@/controllers/Logger';\nimport { SoundCloudPlayerController } from '@/controllers/SoundCloudPlayerController';\nimport { ensureScriptLoaded } from '@/controllers/ensureScriptLoaded';\nimport { type ReactElement, memo, useCallback } from 'react';\n\nconst SoundCloudPlayer = memo(({ ...props }: PlayerProps): ReactElement => {\n\tconst { logger } = props;\n\n\tlogger.log(LogLevel.Debug, 'SoundCloudPlayer');\n\n\tconst loadScript = useCallback(async () => {\n\t\tawait ensureScriptLoaded(\n\t\t\t'https://w.soundcloud.com/player/api.js',\n\t\t\tlogger,\n\t\t);\n\t}, [logger]);\n\n\tconst playerFactory = useCallback(\n\t\t(element: HTMLIFrameElement): Promise<SC.SoundCloudWidget> => {\n\t\t\treturn Promise.resolve(SC.Widget(element));\n\t\t},\n\t\t[],\n\t);\n\n\treturn (\n\t\t<PlayerContainer\n\t\t\t{...props}\n\t\t\tloadScript={loadScript}\n\t\t\tplayerFactory={playerFactory}\n\t\t\tcontrollerFactory={SoundCloudPlayerController}\n\t\t>\n\t\t\t{(elementRef, videoId): ReactElement => (\n\t\t\t\t// eslint-disable-next-line jsx-a11y/iframe-has-title\n\t\t\t\t<iframe\n\t\t\t\t\tref={elementRef}\n\t\t\t\t\tsrc={`https://w.soundcloud.com/player/?url=${videoId}`}\n\t\t\t\t\tframeBorder={0}\n\t\t\t\t\tallow=\"autoplay\"\n\t\t\t\t\tstyle={{ width: '100%', height: '100%' }}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</PlayerContainer>\n\t);\n});\n\nexport default SoundCloudPlayer;\n"],"names":["SoundCloudPlayer","memo","props","logger","LogLevel","loadScript","useCallback","ensureScriptLoaded","playerFactory","element","jsx","PlayerContainer","SoundCloudPlayerController","elementRef","videoId"],"mappings":"mNASMA,EAAmBC,EAAAA,KAAK,CAAC,CAAE,GAAGC,KAAuC,CAC1E,KAAM,CAAE,OAAAC,GAAWD,EAEnBC,EAAO,IAAIC,WAAS,MAAO,kBAAkB,EAE7C,MAAMC,EAAaC,EAAAA,YAAY,SAAY,CAC1C,MAAMC,EAAAA,mBACL,yCACAJ,CAAA,CAEF,EAAG,CAACA,CAAM,CAAC,EAELK,EAAgBF,EAAAA,YACpBG,GACO,QAAQ,QAAQ,GAAG,OAAOA,CAAO,CAAC,EAE1C,CAAA,CAAC,EAGF,OACCC,EAAAA,IAACC,EAAAA,gBAAA,CACC,GAAGT,EACJ,WAAAG,EACA,cAAAG,EACA,kBAAmBI,EAAAA,2BAElB,UAACC,EAAYC,IAEbJ,EAAAA,IAAC,SAAA,CACA,IAAKG,EACL,IAAK,wCAAwCC,CAAO,GACpD,YAAa,EACb,MAAM,WACN,MAAO,CAAE,MAAO,OAAQ,OAAQ,MAAA,CAAO,CAAA,CACxC,CAAA,CAIJ,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx as l } from "react/jsx-runtime";
|
|
2
|
+
import { LogLevel as s, PlayerContainer as u, SoundCloudPlayerController as c } from "./index.es.js";
|
|
3
|
+
import { e as i } from "./ensureScriptLoaded-HHnKf-aZ.js";
|
|
4
|
+
import { memo as m, useCallback as t } from "react";
|
|
5
|
+
const C = m(({ ...e }) => {
|
|
6
|
+
const { logger: o } = e;
|
|
7
|
+
o.log(s.Debug, "SoundCloudPlayer");
|
|
8
|
+
const a = t(async () => {
|
|
9
|
+
await i(
|
|
10
|
+
"https://w.soundcloud.com/player/api.js",
|
|
11
|
+
o
|
|
12
|
+
);
|
|
13
|
+
}, [o]), d = t(
|
|
14
|
+
(r) => Promise.resolve(SC.Widget(r)),
|
|
15
|
+
[]
|
|
16
|
+
);
|
|
17
|
+
return /* @__PURE__ */ l(
|
|
18
|
+
u,
|
|
19
|
+
{
|
|
20
|
+
...e,
|
|
21
|
+
loadScript: a,
|
|
22
|
+
playerFactory: d,
|
|
23
|
+
controllerFactory: c,
|
|
24
|
+
children: (r, n) => (
|
|
25
|
+
// eslint-disable-next-line jsx-a11y/iframe-has-title
|
|
26
|
+
/* @__PURE__ */ l(
|
|
27
|
+
"iframe",
|
|
28
|
+
{
|
|
29
|
+
ref: r,
|
|
30
|
+
src: `https://w.soundcloud.com/player/?url=${n}`,
|
|
31
|
+
frameBorder: 0,
|
|
32
|
+
allow: "autoplay",
|
|
33
|
+
style: { width: "100%", height: "100%" }
|
|
34
|
+
}
|
|
35
|
+
)
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
);
|
|
39
|
+
});
|
|
40
|
+
export {
|
|
41
|
+
C as default
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=SoundCloudPlayer-C8QVPCXH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SoundCloudPlayer-C8QVPCXH.js","sources":["../src/components/SoundCloudPlayer.tsx"],"sourcesContent":["import {\n\tPlayerContainer,\n\ttype PlayerProps,\n} from '@/components/PlayerContainer';\nimport { LogLevel } from '@/controllers/Logger';\nimport { SoundCloudPlayerController } from '@/controllers/SoundCloudPlayerController';\nimport { ensureScriptLoaded } from '@/controllers/ensureScriptLoaded';\nimport { type ReactElement, memo, useCallback } from 'react';\n\nconst SoundCloudPlayer = memo(({ ...props }: PlayerProps): ReactElement => {\n\tconst { logger } = props;\n\n\tlogger.log(LogLevel.Debug, 'SoundCloudPlayer');\n\n\tconst loadScript = useCallback(async () => {\n\t\tawait ensureScriptLoaded(\n\t\t\t'https://w.soundcloud.com/player/api.js',\n\t\t\tlogger,\n\t\t);\n\t}, [logger]);\n\n\tconst playerFactory = useCallback(\n\t\t(element: HTMLIFrameElement): Promise<SC.SoundCloudWidget> => {\n\t\t\treturn Promise.resolve(SC.Widget(element));\n\t\t},\n\t\t[],\n\t);\n\n\treturn (\n\t\t<PlayerContainer\n\t\t\t{...props}\n\t\t\tloadScript={loadScript}\n\t\t\tplayerFactory={playerFactory}\n\t\t\tcontrollerFactory={SoundCloudPlayerController}\n\t\t>\n\t\t\t{(elementRef, videoId): ReactElement => (\n\t\t\t\t// eslint-disable-next-line jsx-a11y/iframe-has-title\n\t\t\t\t<iframe\n\t\t\t\t\tref={elementRef}\n\t\t\t\t\tsrc={`https://w.soundcloud.com/player/?url=${videoId}`}\n\t\t\t\t\tframeBorder={0}\n\t\t\t\t\tallow=\"autoplay\"\n\t\t\t\t\tstyle={{ width: '100%', height: '100%' }}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</PlayerContainer>\n\t);\n});\n\nexport default SoundCloudPlayer;\n"],"names":["SoundCloudPlayer","memo","props","logger","LogLevel","loadScript","useCallback","ensureScriptLoaded","playerFactory","element","jsx","PlayerContainer","SoundCloudPlayerController","elementRef","videoId"],"mappings":";;;;AASA,MAAMA,IAAmBC,EAAK,CAAC,EAAE,GAAGC,QAAuC;AAC1E,QAAM,EAAE,QAAAC,MAAWD;AAEnB,EAAAC,EAAO,IAAIC,EAAS,OAAO,kBAAkB;AAE7C,QAAMC,IAAaC,EAAY,YAAY;AAC1C,UAAMC;AAAA,MACL;AAAA,MACAJ;AAAA,IAAA;AAAA,EAEF,GAAG,CAACA,CAAM,CAAC,GAELK,IAAgBF;AAAA,IACrB,CAACG,MACO,QAAQ,QAAQ,GAAG,OAAOA,CAAO,CAAC;AAAA,IAE1C,CAAA;AAAA,EAAC;AAGF,SACC,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,GAAGT;AAAA,MACJ,YAAAG;AAAA,MACA,eAAAG;AAAA,MACA,mBAAmBI;AAAA,MAElB,WAACC,GAAYC;AAAA;AAAA,QAEb,gBAAAJ;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,KAAKG;AAAA,YACL,KAAK,wCAAwCC,CAAO;AAAA,YACpD,aAAa;AAAA,YACb,OAAM;AAAA,YACN,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAA;AAAA,UAAO;AAAA,QAAA;AAAA;AAAA,IACxC;AAAA,EAAA;AAIJ,CAAC;"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { LogLevel as n, PlayerContainer as s, TwitchPlayerController as h } from "./index.es.js";
|
|
3
|
+
import { e as m } from "./ensureScriptLoaded-HHnKf-aZ.js";
|
|
4
|
+
import { memo as d, useCallback as i } from "react";
|
|
5
|
+
const f = d(({ ...r }) => {
|
|
6
|
+
const { logger: e } = r;
|
|
7
|
+
e.log(n.Debug, "TwitchPlayer");
|
|
8
|
+
const a = i(async () => {
|
|
9
|
+
await m("https://embed.twitch.tv/embed/v1.js", e);
|
|
10
|
+
}, [e]), l = i(
|
|
11
|
+
async (t, c) => Promise.resolve(
|
|
12
|
+
new Twitch.Player(t, {
|
|
13
|
+
video: c,
|
|
14
|
+
width: "100%",
|
|
15
|
+
height: "100%"
|
|
16
|
+
})
|
|
17
|
+
),
|
|
18
|
+
[]
|
|
19
|
+
);
|
|
20
|
+
return /* @__PURE__ */ o(
|
|
21
|
+
s,
|
|
22
|
+
{
|
|
23
|
+
...r,
|
|
24
|
+
loadScript: a,
|
|
25
|
+
playerFactory: l,
|
|
26
|
+
controllerFactory: h,
|
|
27
|
+
children: (t) => /* @__PURE__ */ o(
|
|
28
|
+
"div",
|
|
29
|
+
{
|
|
30
|
+
ref: t,
|
|
31
|
+
style: { width: "100%", height: "100%" }
|
|
32
|
+
}
|
|
33
|
+
)
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
});
|
|
37
|
+
export {
|
|
38
|
+
f as default
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=TwitchPlayer-C9D_eEaj.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TwitchPlayer-C9D_eEaj.js","sources":["../src/components/TwitchPlayer.tsx"],"sourcesContent":["import {\n\tPlayerContainer,\n\ttype PlayerProps,\n} from '@/components/PlayerContainer';\nimport { LogLevel } from '@/controllers/Logger';\nimport { TwitchPlayerController } from '@/controllers/TwitchPlayerController';\nimport { ensureScriptLoaded } from '@/controllers/ensureScriptLoaded';\nimport { type ReactElement, memo, useCallback } from 'react';\n\nconst TwitchPlayer = memo(({ ...props }: PlayerProps): ReactElement => {\n\tconst { logger } = props;\n\n\tlogger.log(LogLevel.Debug, 'TwitchPlayer');\n\n\tconst loadScript = useCallback(async () => {\n\t\tawait ensureScriptLoaded('https://embed.twitch.tv/embed/v1.js', logger);\n\t}, [logger]);\n\n\tconst playerFactory = useCallback(\n\t\tasync (\n\t\t\telement: HTMLDivElement,\n\t\t\tvideoId: string,\n\t\t): Promise<Twitch.Player> => {\n\t\t\treturn Promise.resolve(\n\t\t\t\tnew Twitch.Player(element, {\n\t\t\t\t\tvideo: videoId,\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\theight: '100%',\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t\t[],\n\t);\n\n\treturn (\n\t\t<PlayerContainer\n\t\t\t{...props}\n\t\t\tloadScript={loadScript}\n\t\t\tplayerFactory={playerFactory}\n\t\t\tcontrollerFactory={TwitchPlayerController}\n\t\t>\n\t\t\t{(elementRef): ReactElement => (\n\t\t\t\t<div\n\t\t\t\t\tref={elementRef}\n\t\t\t\t\tstyle={{ width: '100%', height: '100%' }}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</PlayerContainer>\n\t);\n});\n\nexport default TwitchPlayer;\n"],"names":["TwitchPlayer","memo","props","logger","LogLevel","loadScript","useCallback","ensureScriptLoaded","playerFactory","element","videoId","jsx","PlayerContainer","TwitchPlayerController","elementRef"],"mappings":";;;;AASA,MAAMA,IAAeC,EAAK,CAAC,EAAE,GAAGC,QAAuC;AACtE,QAAM,EAAE,QAAAC,MAAWD;AAEnB,EAAAC,EAAO,IAAIC,EAAS,OAAO,cAAc;AAEzC,QAAMC,IAAaC,EAAY,YAAY;AAC1C,UAAMC,EAAmB,uCAAuCJ,CAAM;AAAA,EACvE,GAAG,CAACA,CAAM,CAAC,GAELK,IAAgBF;AAAA,IACrB,OACCG,GACAC,MAEO,QAAQ;AAAA,MACd,IAAI,OAAO,OAAOD,GAAS;AAAA,QAC1B,OAAOC;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,MAAA,CACR;AAAA,IAAA;AAAA,IAGH,CAAA;AAAA,EAAC;AAGF,SACC,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,GAAGV;AAAA,MACJ,YAAAG;AAAA,MACA,eAAAG;AAAA,MACA,mBAAmBK;AAAA,MAElB,WAACC,MACD,gBAAAH;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,KAAKG;AAAA,UACL,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAA;AAAA,QAAO;AAAA,MAAA;AAAA,IACxC;AAAA,EAAA;AAIJ,CAAC;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),r=require("./index.cjs.js"),s=require("./ensureScriptLoaded-CkK_-Amf.cjs"),o=require("react"),d=o.memo(({...c})=>{const{logger:e}=c;e.log(r.LogLevel.Debug,"TwitchPlayer");const l=o.useCallback(async()=>{await s.ensureScriptLoaded("https://embed.twitch.tv/embed/v1.js",e)},[e]),a=o.useCallback(async(t,n)=>Promise.resolve(new Twitch.Player(t,{video:n,width:"100%",height:"100%"})),[]);return i.jsx(r.PlayerContainer,{...c,loadScript:l,playerFactory:a,controllerFactory:r.TwitchPlayerController,children:t=>i.jsx("div",{ref:t,style:{width:"100%",height:"100%"}})})});exports.default=d;
|
|
2
|
+
//# sourceMappingURL=TwitchPlayer-DdhZD1Bh.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TwitchPlayer-DdhZD1Bh.cjs","sources":["../src/components/TwitchPlayer.tsx"],"sourcesContent":["import {\n\tPlayerContainer,\n\ttype PlayerProps,\n} from '@/components/PlayerContainer';\nimport { LogLevel } from '@/controllers/Logger';\nimport { TwitchPlayerController } from '@/controllers/TwitchPlayerController';\nimport { ensureScriptLoaded } from '@/controllers/ensureScriptLoaded';\nimport { type ReactElement, memo, useCallback } from 'react';\n\nconst TwitchPlayer = memo(({ ...props }: PlayerProps): ReactElement => {\n\tconst { logger } = props;\n\n\tlogger.log(LogLevel.Debug, 'TwitchPlayer');\n\n\tconst loadScript = useCallback(async () => {\n\t\tawait ensureScriptLoaded('https://embed.twitch.tv/embed/v1.js', logger);\n\t}, [logger]);\n\n\tconst playerFactory = useCallback(\n\t\tasync (\n\t\t\telement: HTMLDivElement,\n\t\t\tvideoId: string,\n\t\t): Promise<Twitch.Player> => {\n\t\t\treturn Promise.resolve(\n\t\t\t\tnew Twitch.Player(element, {\n\t\t\t\t\tvideo: videoId,\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\theight: '100%',\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t\t[],\n\t);\n\n\treturn (\n\t\t<PlayerContainer\n\t\t\t{...props}\n\t\t\tloadScript={loadScript}\n\t\t\tplayerFactory={playerFactory}\n\t\t\tcontrollerFactory={TwitchPlayerController}\n\t\t>\n\t\t\t{(elementRef): ReactElement => (\n\t\t\t\t<div\n\t\t\t\t\tref={elementRef}\n\t\t\t\t\tstyle={{ width: '100%', height: '100%' }}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</PlayerContainer>\n\t);\n});\n\nexport default TwitchPlayer;\n"],"names":["TwitchPlayer","memo","props","logger","LogLevel","loadScript","useCallback","ensureScriptLoaded","playerFactory","element","videoId","jsx","PlayerContainer","TwitchPlayerController","elementRef"],"mappings":"mNASMA,EAAeC,EAAAA,KAAK,CAAC,CAAE,GAAGC,KAAuC,CACtE,KAAM,CAAE,OAAAC,GAAWD,EAEnBC,EAAO,IAAIC,WAAS,MAAO,cAAc,EAEzC,MAAMC,EAAaC,EAAAA,YAAY,SAAY,CAC1C,MAAMC,EAAAA,mBAAmB,sCAAuCJ,CAAM,CACvE,EAAG,CAACA,CAAM,CAAC,EAELK,EAAgBF,EAAAA,YACrB,MACCG,EACAC,IAEO,QAAQ,QACd,IAAI,OAAO,OAAOD,EAAS,CAC1B,MAAOC,EACP,MAAO,OACP,OAAQ,MAAA,CACR,CAAA,EAGH,CAAA,CAAC,EAGF,OACCC,EAAAA,IAACC,EAAAA,gBAAA,CACC,GAAGV,EACJ,WAAAG,EACA,cAAAG,EACA,kBAAmBK,EAAAA,uBAElB,SAACC,GACDH,EAAAA,IAAC,MAAA,CACA,IAAKG,EACL,MAAO,CAAE,MAAO,OAAQ,OAAQ,MAAA,CAAO,CAAA,CACxC,CAAA,CAIJ,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),o=require("./index.cjs.js"),n=require("./ensureScriptLoaded-CkK_-Amf.cjs"),t=require("react"),u=t.memo(({...a})=>{const{logger:e}=a;e.log(o.LogLevel.Debug,"VimeoPlayer");const i=t.useCallback(async()=>{await n.ensureScriptLoaded("https://player.vimeo.com/api/player.js",e)},[e]),c=t.useCallback(r=>Promise.resolve(new Vimeo.Player(r)),[]);return l.jsx(o.PlayerContainer,{...a,loadScript:i,playerFactory:c,controllerFactory:o.VimeoPlayerController,children:(r,s)=>l.jsx("iframe",{ref:r,src:`https://player.vimeo.com/video/${s}`,frameBorder:0,allow:"autoplay",style:{width:"100%",height:"100%"}})})});exports.default=u;
|
|
2
|
+
//# sourceMappingURL=VimeoPlayer-DfBZwtd9.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VimeoPlayer-DfBZwtd9.cjs","sources":["../src/components/VimeoPlayer.tsx"],"sourcesContent":["import {\n\tPlayerContainer,\n\ttype PlayerProps,\n} from '@/components/PlayerContainer';\nimport { LogLevel } from '@/controllers/Logger';\nimport { VimeoPlayerController } from '@/controllers/VimeoPlayerController';\nimport { ensureScriptLoaded } from '@/controllers/ensureScriptLoaded';\nimport { type ReactElement, memo, useCallback } from 'react';\n\nconst VimeoPlayer = memo(({ ...props }: PlayerProps): ReactElement => {\n\tconst { logger } = props;\n\n\tlogger.log(LogLevel.Debug, 'VimeoPlayer');\n\n\tconst loadScript = useCallback(async () => {\n\t\tawait ensureScriptLoaded(\n\t\t\t'https://player.vimeo.com/api/player.js',\n\t\t\tlogger,\n\t\t);\n\t}, [logger]);\n\n\tconst playerFactory = useCallback(\n\t\t(element: HTMLIFrameElement): Promise<Vimeo.Player> => {\n\t\t\treturn Promise.resolve(new Vimeo.Player(element));\n\t\t},\n\t\t[],\n\t);\n\n\treturn (\n\t\t<PlayerContainer\n\t\t\t{...props}\n\t\t\tloadScript={loadScript}\n\t\t\tplayerFactory={playerFactory}\n\t\t\tcontrollerFactory={VimeoPlayerController}\n\t\t>\n\t\t\t{(elementRef, videoId): ReactElement => (\n\t\t\t\t// eslint-disable-next-line jsx-a11y/iframe-has-title\n\t\t\t\t<iframe\n\t\t\t\t\tref={elementRef}\n\t\t\t\t\tsrc={`https://player.vimeo.com/video/${videoId}`}\n\t\t\t\t\tframeBorder={0}\n\t\t\t\t\tallow=\"autoplay\"\n\t\t\t\t\tstyle={{ width: '100%', height: '100%' }}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</PlayerContainer>\n\t);\n});\n\nexport default VimeoPlayer;\n"],"names":["VimeoPlayer","memo","props","logger","LogLevel","loadScript","useCallback","ensureScriptLoaded","playerFactory","element","jsx","PlayerContainer","VimeoPlayerController","elementRef","videoId"],"mappings":"mNASMA,EAAcC,EAAAA,KAAK,CAAC,CAAE,GAAGC,KAAuC,CACrE,KAAM,CAAE,OAAAC,GAAWD,EAEnBC,EAAO,IAAIC,WAAS,MAAO,aAAa,EAExC,MAAMC,EAAaC,EAAAA,YAAY,SAAY,CAC1C,MAAMC,EAAAA,mBACL,yCACAJ,CAAA,CAEF,EAAG,CAACA,CAAM,CAAC,EAELK,EAAgBF,EAAAA,YACpBG,GACO,QAAQ,QAAQ,IAAI,MAAM,OAAOA,CAAO,CAAC,EAEjD,CAAA,CAAC,EAGF,OACCC,EAAAA,IAACC,EAAAA,gBAAA,CACC,GAAGT,EACJ,WAAAG,EACA,cAAAG,EACA,kBAAmBI,EAAAA,sBAElB,UAACC,EAAYC,IAEbJ,EAAAA,IAAC,SAAA,CACA,IAAKG,EACL,IAAK,kCAAkCC,CAAO,GAC9C,YAAa,EACb,MAAM,WACN,MAAO,CAAE,MAAO,OAAQ,OAAQ,MAAA,CAAO,CAAA,CACxC,CAAA,CAIJ,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { LogLevel as s, PlayerContainer as c, VimeoPlayerController as n } from "./index.es.js";
|
|
3
|
+
import { e as y } from "./ensureScriptLoaded-HHnKf-aZ.js";
|
|
4
|
+
import { memo as p, useCallback as t } from "react";
|
|
5
|
+
const h = p(({ ...o }) => {
|
|
6
|
+
const { logger: e } = o;
|
|
7
|
+
e.log(s.Debug, "VimeoPlayer");
|
|
8
|
+
const l = t(async () => {
|
|
9
|
+
await y(
|
|
10
|
+
"https://player.vimeo.com/api/player.js",
|
|
11
|
+
e
|
|
12
|
+
);
|
|
13
|
+
}, [e]), i = t(
|
|
14
|
+
(r) => Promise.resolve(new Vimeo.Player(r)),
|
|
15
|
+
[]
|
|
16
|
+
);
|
|
17
|
+
return /* @__PURE__ */ a(
|
|
18
|
+
c,
|
|
19
|
+
{
|
|
20
|
+
...o,
|
|
21
|
+
loadScript: l,
|
|
22
|
+
playerFactory: i,
|
|
23
|
+
controllerFactory: n,
|
|
24
|
+
children: (r, m) => (
|
|
25
|
+
// eslint-disable-next-line jsx-a11y/iframe-has-title
|
|
26
|
+
/* @__PURE__ */ a(
|
|
27
|
+
"iframe",
|
|
28
|
+
{
|
|
29
|
+
ref: r,
|
|
30
|
+
src: `https://player.vimeo.com/video/${m}`,
|
|
31
|
+
frameBorder: 0,
|
|
32
|
+
allow: "autoplay",
|
|
33
|
+
style: { width: "100%", height: "100%" }
|
|
34
|
+
}
|
|
35
|
+
)
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
);
|
|
39
|
+
});
|
|
40
|
+
export {
|
|
41
|
+
h as default
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=VimeoPlayer-UnKk2VAq.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VimeoPlayer-UnKk2VAq.js","sources":["../src/components/VimeoPlayer.tsx"],"sourcesContent":["import {\n\tPlayerContainer,\n\ttype PlayerProps,\n} from '@/components/PlayerContainer';\nimport { LogLevel } from '@/controllers/Logger';\nimport { VimeoPlayerController } from '@/controllers/VimeoPlayerController';\nimport { ensureScriptLoaded } from '@/controllers/ensureScriptLoaded';\nimport { type ReactElement, memo, useCallback } from 'react';\n\nconst VimeoPlayer = memo(({ ...props }: PlayerProps): ReactElement => {\n\tconst { logger } = props;\n\n\tlogger.log(LogLevel.Debug, 'VimeoPlayer');\n\n\tconst loadScript = useCallback(async () => {\n\t\tawait ensureScriptLoaded(\n\t\t\t'https://player.vimeo.com/api/player.js',\n\t\t\tlogger,\n\t\t);\n\t}, [logger]);\n\n\tconst playerFactory = useCallback(\n\t\t(element: HTMLIFrameElement): Promise<Vimeo.Player> => {\n\t\t\treturn Promise.resolve(new Vimeo.Player(element));\n\t\t},\n\t\t[],\n\t);\n\n\treturn (\n\t\t<PlayerContainer\n\t\t\t{...props}\n\t\t\tloadScript={loadScript}\n\t\t\tplayerFactory={playerFactory}\n\t\t\tcontrollerFactory={VimeoPlayerController}\n\t\t>\n\t\t\t{(elementRef, videoId): ReactElement => (\n\t\t\t\t// eslint-disable-next-line jsx-a11y/iframe-has-title\n\t\t\t\t<iframe\n\t\t\t\t\tref={elementRef}\n\t\t\t\t\tsrc={`https://player.vimeo.com/video/${videoId}`}\n\t\t\t\t\tframeBorder={0}\n\t\t\t\t\tallow=\"autoplay\"\n\t\t\t\t\tstyle={{ width: '100%', height: '100%' }}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</PlayerContainer>\n\t);\n});\n\nexport default VimeoPlayer;\n"],"names":["VimeoPlayer","memo","props","logger","LogLevel","loadScript","useCallback","ensureScriptLoaded","playerFactory","element","jsx","PlayerContainer","VimeoPlayerController","elementRef","videoId"],"mappings":";;;;AASA,MAAMA,IAAcC,EAAK,CAAC,EAAE,GAAGC,QAAuC;AACrE,QAAM,EAAE,QAAAC,MAAWD;AAEnB,EAAAC,EAAO,IAAIC,EAAS,OAAO,aAAa;AAExC,QAAMC,IAAaC,EAAY,YAAY;AAC1C,UAAMC;AAAA,MACL;AAAA,MACAJ;AAAA,IAAA;AAAA,EAEF,GAAG,CAACA,CAAM,CAAC,GAELK,IAAgBF;AAAA,IACrB,CAACG,MACO,QAAQ,QAAQ,IAAI,MAAM,OAAOA,CAAO,CAAC;AAAA,IAEjD,CAAA;AAAA,EAAC;AAGF,SACC,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,GAAGT;AAAA,MACJ,YAAAG;AAAA,MACA,eAAAG;AAAA,MACA,mBAAmBI;AAAA,MAElB,WAACC,GAAYC;AAAA;AAAA,QAEb,gBAAAJ;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,KAAKG;AAAA,YACL,KAAK,kCAAkCC,CAAO;AAAA,YAC9C,aAAa;AAAA,YACb,OAAM;AAAA,YACN,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAA;AAAA,UAAO;AAAA,QAAA;AAAA;AAAA,IACxC;AAAA,EAAA;AAIJ,CAAC;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),o=require("./index.cjs.js"),s=require("./ensureScriptLoaded-CkK_-Amf.cjs"),i=require("react"),c="https://www.youtube-nocookie.com",l=i.memo(({...n})=>{const{logger:r}=n;r.log(o.LogLevel.Debug,"YouTubePlayer");const u=i.useCallback(()=>new Promise(async(e,d)=>{await s.ensureScriptLoaded("https://www.youtube.com/iframe_api",r)?window.onYouTubeIframeAPIReady=()=>{r.log(o.LogLevel.Debug,"YouTube iframe API ready"),e()}:e()}),[r]),a=i.useCallback(e=>Promise.resolve(new YT.Player(e,{host:c,width:"100%",height:"100%"})),[]);return t.jsx(o.PlayerContainer,{...n,loadScript:u,playerFactory:a,controllerFactory:o.YouTubePlayerController,children:e=>t.jsx("div",{style:{width:"100%",height:"100%"},children:t.jsx("div",{ref:e})})})});exports.default=l;
|
|
2
|
+
//# sourceMappingURL=YouTubePlayer-CeTkdcOO.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"YouTubePlayer-CeTkdcOO.cjs","sources":["../src/components/YouTubePlayer.tsx"],"sourcesContent":["import {\n\tPlayerContainer,\n\ttype PlayerProps,\n} from '@/components/PlayerContainer';\nimport { LogLevel } from '@/controllers/Logger';\nimport { YouTubePlayerController } from '@/controllers/YouTubePlayerController';\nimport { ensureScriptLoaded } from '@/controllers/ensureScriptLoaded';\nimport { type ReactElement, memo, useCallback } from 'react';\n\nconst origin = 'https://www.youtube-nocookie.com';\n\nconst YouTubePlayer = memo(({ ...props }: PlayerProps): ReactElement => {\n\tconst { logger } = props;\n\n\tlogger.log(LogLevel.Debug, 'YouTubePlayer');\n\n\tconst loadScript = useCallback((): Promise<void> => {\n\t\treturn new Promise(async (resolve, _reject) => {\n\t\t\tconst first = await ensureScriptLoaded(\n\t\t\t\t'https://www.youtube.com/iframe_api',\n\t\t\t\tlogger,\n\t\t\t);\n\n\t\t\tif (first) {\n\t\t\t\t// https://stackoverflow.com/a/18154942.\n\t\t\t\twindow.onYouTubeIframeAPIReady = (): void => {\n\t\t\t\t\tlogger.log(LogLevel.Debug, 'YouTube iframe API ready');\n\t\t\t\t\tresolve();\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t}, [logger]);\n\n\tconst playerFactory = useCallback(\n\t\t(element: HTMLDivElement): Promise<YT.Player> => {\n\t\t\treturn Promise.resolve(\n\t\t\t\tnew YT.Player(element, {\n\t\t\t\t\thost: origin,\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\theight: '100%',\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t\t[],\n\t);\n\n\treturn (\n\t\t<PlayerContainer\n\t\t\t{...props}\n\t\t\tloadScript={loadScript}\n\t\t\tplayerFactory={playerFactory}\n\t\t\tcontrollerFactory={YouTubePlayerController}\n\t\t>\n\t\t\t{(elementRef): ReactElement => (\n\t\t\t\t<div style={{ width: '100%', height: '100%' }}>\n\t\t\t\t\t<div ref={elementRef} />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</PlayerContainer>\n\t);\n});\n\nexport default YouTubePlayer;\n"],"names":["origin","YouTubePlayer","memo","props","logger","LogLevel","loadScript","useCallback","resolve","_reject","ensureScriptLoaded","playerFactory","element","jsx","PlayerContainer","YouTubePlayerController","elementRef"],"mappings":"mNASMA,EAAS,mCAETC,EAAgBC,EAAAA,KAAK,CAAC,CAAE,GAAGC,KAAuC,CACvE,KAAM,CAAE,OAAAC,GAAWD,EAEnBC,EAAO,IAAIC,WAAS,MAAO,eAAe,EAE1C,MAAMC,EAAaC,EAAAA,YAAY,IACvB,IAAI,QAAQ,MAAOC,EAASC,IAAY,CAChC,MAAMC,EAAAA,mBACnB,qCACAN,CAAA,EAKA,OAAO,wBAA0B,IAAY,CAC5CA,EAAO,IAAIC,WAAS,MAAO,0BAA0B,EACrDG,EAAA,CACD,EAEAA,EAAA,CAEF,CAAC,EACC,CAACJ,CAAM,CAAC,EAELO,EAAgBJ,EAAAA,YACpBK,GACO,QAAQ,QACd,IAAI,GAAG,OAAOA,EAAS,CACtB,KAAMZ,EACN,MAAO,OACP,OAAQ,MAAA,CACR,CAAA,EAGH,CAAA,CAAC,EAGF,OACCa,EAAAA,IAACC,EAAAA,gBAAA,CACC,GAAGX,EACJ,WAAAG,EACA,cAAAK,EACA,kBAAmBI,EAAAA,wBAElB,SAACC,GACDH,EAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,MAAO,OAAQ,OAAQ,QACpC,SAAAA,EAAAA,IAAC,MAAA,CAAI,IAAKG,EAAY,CAAA,CACvB,CAAA,CAAA,CAIJ,CAAC"}
|