@universal-web-video-player/player-solid 0.5.0
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 +24 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.js +97 -0
- package/package.json +51 -0
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# @universal-web-video-player/player-solid
|
|
2
|
+
|
|
3
|
+
SolidJS wrapper for the Universal Video Player.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @universal-web-video-player/player-solid @universal-web-video-player/player-web-component
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
import { UvpPlayer } from '@universal-web-video-player/player-solid';
|
|
15
|
+
|
|
16
|
+
function App() {
|
|
17
|
+
return (
|
|
18
|
+
<UvpPlayer
|
|
19
|
+
sourceUrl="https://example.com/video.mp4"
|
|
20
|
+
autoplay={true}
|
|
21
|
+
/>
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
```
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { UvpQualityOption, UvpSourceItem, UvpScaleMode, UvpState } from '@universal-web-video-player/player-core';
|
|
2
|
+
import { Component, JSX } from 'solid-js';
|
|
3
|
+
|
|
4
|
+
interface UvpSolidPlayerProps {
|
|
5
|
+
sourceUrl?: string;
|
|
6
|
+
sourceType?: "mp4" | "mov" | "hls" | "dash";
|
|
7
|
+
qualities?: UvpQualityOption[];
|
|
8
|
+
autoplay?: boolean;
|
|
9
|
+
muted?: boolean;
|
|
10
|
+
autoNext?: boolean;
|
|
11
|
+
loop?: boolean;
|
|
12
|
+
playbackRate?: number;
|
|
13
|
+
volume?: number;
|
|
14
|
+
customControls?: boolean;
|
|
15
|
+
poster?: string;
|
|
16
|
+
controls?: boolean;
|
|
17
|
+
playlist?: UvpSourceItem[];
|
|
18
|
+
scaleMode?: UvpScaleMode;
|
|
19
|
+
hideSettings?: boolean;
|
|
20
|
+
hideFullscreen?: boolean;
|
|
21
|
+
hidePlaylist?: boolean;
|
|
22
|
+
hideVolume?: boolean;
|
|
23
|
+
class?: string;
|
|
24
|
+
ref?: (el: any) => void;
|
|
25
|
+
onReady?: (event: CustomEvent) => void;
|
|
26
|
+
onPlay?: (event: CustomEvent) => void;
|
|
27
|
+
onPause?: (event: CustomEvent) => void;
|
|
28
|
+
onEnded?: (event: CustomEvent) => void;
|
|
29
|
+
onQualityChange?: (event: CustomEvent) => void;
|
|
30
|
+
onError?: (event: CustomEvent) => void;
|
|
31
|
+
onStateChange?: (state: UvpState) => void;
|
|
32
|
+
children?: JSX.Element;
|
|
33
|
+
}
|
|
34
|
+
declare const UvpSolidPlayer: Component<UvpSolidPlayerProps>;
|
|
35
|
+
declare module "solid-js" {
|
|
36
|
+
namespace JSX {
|
|
37
|
+
interface IntrinsicElements {
|
|
38
|
+
"uvp-player": any;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export { UvpSolidPlayer, type UvpSolidPlayerProps };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// src/index.tsx
|
|
2
|
+
import { template as _$template } from "solid-js/web";
|
|
3
|
+
import { setAttribute as _$setAttribute } from "solid-js/web";
|
|
4
|
+
import { className as _$className } from "solid-js/web";
|
|
5
|
+
import { effect as _$effect } from "solid-js/web";
|
|
6
|
+
import { insert as _$insert } from "solid-js/web";
|
|
7
|
+
import { getOwner as _$getOwner } from "solid-js/web";
|
|
8
|
+
import { use as _$use } from "solid-js/web";
|
|
9
|
+
import { defineUvpPlayerElement } from "@universal-web-video-player/player-web-component";
|
|
10
|
+
import { onMount, onCleanup, mergeProps, createMemo, createEffect } from "solid-js";
|
|
11
|
+
var _tmpl$ = /* @__PURE__ */ _$template(`<uvp-player>`, true, false, false);
|
|
12
|
+
defineUvpPlayerElement();
|
|
13
|
+
var UvpSolidPlayer = (props) => {
|
|
14
|
+
const merged = mergeProps({
|
|
15
|
+
controls: true,
|
|
16
|
+
playbackRate: 1,
|
|
17
|
+
volume: 1
|
|
18
|
+
}, props);
|
|
19
|
+
let playerElement;
|
|
20
|
+
const qualitiesJson = createMemo(() => merged.qualities && merged.qualities.length > 0 ? JSON.stringify(merged.qualities) : void 0);
|
|
21
|
+
const playlistJson = createMemo(() => merged.playlist && merged.playlist.length > 0 ? JSON.stringify(merged.playlist) : void 0);
|
|
22
|
+
createEffect(() => {
|
|
23
|
+
if (playerElement) {
|
|
24
|
+
if (merged.volume !== void 0) playerElement.volume = merged.volume;
|
|
25
|
+
if (merged.playbackRate !== void 0) playerElement.playbackRate = merged.playbackRate;
|
|
26
|
+
if (merged.loop !== void 0) playerElement.loop = merged.loop;
|
|
27
|
+
if (merged.muted !== void 0) playerElement.muted = merged.muted;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
onMount(() => {
|
|
31
|
+
if (props.ref) props.ref(playerElement);
|
|
32
|
+
const eventHandlers = {
|
|
33
|
+
ready: (e) => props.onReady?.(e),
|
|
34
|
+
play: (e) => props.onPlay?.(e),
|
|
35
|
+
pause: (e) => props.onPause?.(e),
|
|
36
|
+
ended: (e) => props.onEnded?.(e),
|
|
37
|
+
qualitychange: (e) => props.onQualityChange?.(e),
|
|
38
|
+
error: (e) => props.onError?.(e),
|
|
39
|
+
"uvp-state-change": (e) => props.onStateChange?.(e.detail)
|
|
40
|
+
};
|
|
41
|
+
Object.entries(eventHandlers).forEach(([name, handler]) => {
|
|
42
|
+
if (handler) playerElement.addEventListener(name, handler);
|
|
43
|
+
});
|
|
44
|
+
onCleanup(() => {
|
|
45
|
+
Object.entries(eventHandlers).forEach(([name, handler]) => {
|
|
46
|
+
if (handler) playerElement.removeEventListener(name, handler);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
return (() => {
|
|
51
|
+
var _el$ = _tmpl$();
|
|
52
|
+
_$use((el) => playerElement = el, _el$);
|
|
53
|
+
_el$._$owner = _$getOwner();
|
|
54
|
+
_$insert(_el$, () => props.children);
|
|
55
|
+
_$effect((_p$) => {
|
|
56
|
+
var _v$ = merged.class, _v$2 = merged.sourceUrl, _v$3 = merged.sourceType, _v$4 = qualitiesJson(), _v$5 = playlistJson(), _v$6 = merged.poster, _v$7 = merged.autoplay ? "" : void 0, _v$8 = merged.muted ? "" : void 0, _v$9 = merged.controls === false ? "false" : void 0, _v$0 = merged.autoNext ? "true" : void 0, _v$1 = merged.customControls ? "true" : void 0, _v$10 = merged.scaleMode, _v$11 = merged.hideSettings ? "" : void 0, _v$12 = merged.hideFullscreen ? "" : void 0, _v$13 = merged.hidePlaylist ? "" : void 0, _v$14 = merged.hideVolume ? "" : void 0;
|
|
57
|
+
_v$ !== _p$.e && _$className(_el$, _p$.e = _v$);
|
|
58
|
+
_v$2 !== _p$.t && _$setAttribute(_el$, "source-url", _p$.t = _v$2);
|
|
59
|
+
_v$3 !== _p$.a && _$setAttribute(_el$, "source-type", _p$.a = _v$3);
|
|
60
|
+
_v$4 !== _p$.o && _$setAttribute(_el$, "source-qualities", _p$.o = _v$4);
|
|
61
|
+
_v$5 !== _p$.i && _$setAttribute(_el$, "playlist", _p$.i = _v$5);
|
|
62
|
+
_v$6 !== _p$.n && _$setAttribute(_el$, "poster", _p$.n = _v$6);
|
|
63
|
+
_v$7 !== _p$.s && _$setAttribute(_el$, "autoplay", _p$.s = _v$7);
|
|
64
|
+
_v$8 !== _p$.h && _$setAttribute(_el$, "muted", _p$.h = _v$8);
|
|
65
|
+
_v$9 !== _p$.r && _$setAttribute(_el$, "controls", _p$.r = _v$9);
|
|
66
|
+
_v$0 !== _p$.d && _$setAttribute(_el$, "auto-next", _p$.d = _v$0);
|
|
67
|
+
_v$1 !== _p$.l && _$setAttribute(_el$, "custom-controls", _p$.l = _v$1);
|
|
68
|
+
_v$10 !== _p$.u && _$setAttribute(_el$, "scale-mode", _p$.u = _v$10);
|
|
69
|
+
_v$11 !== _p$.c && _$setAttribute(_el$, "hide-settings", _p$.c = _v$11);
|
|
70
|
+
_v$12 !== _p$.w && _$setAttribute(_el$, "hide-fullscreen", _p$.w = _v$12);
|
|
71
|
+
_v$13 !== _p$.m && _$setAttribute(_el$, "hide-playlist", _p$.m = _v$13);
|
|
72
|
+
_v$14 !== _p$.f && _$setAttribute(_el$, "hide-volume", _p$.f = _v$14);
|
|
73
|
+
return _p$;
|
|
74
|
+
}, {
|
|
75
|
+
e: void 0,
|
|
76
|
+
t: void 0,
|
|
77
|
+
a: void 0,
|
|
78
|
+
o: void 0,
|
|
79
|
+
i: void 0,
|
|
80
|
+
n: void 0,
|
|
81
|
+
s: void 0,
|
|
82
|
+
h: void 0,
|
|
83
|
+
r: void 0,
|
|
84
|
+
d: void 0,
|
|
85
|
+
l: void 0,
|
|
86
|
+
u: void 0,
|
|
87
|
+
c: void 0,
|
|
88
|
+
w: void 0,
|
|
89
|
+
m: void 0,
|
|
90
|
+
f: void 0
|
|
91
|
+
});
|
|
92
|
+
return _el$;
|
|
93
|
+
})();
|
|
94
|
+
};
|
|
95
|
+
export {
|
|
96
|
+
UvpSolidPlayer
|
|
97
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@universal-web-video-player/player-solid",
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "SolidJS wrapper for universal video player",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"module": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsup src/index.tsx --dts --format esm --clean",
|
|
20
|
+
"lint": "tsc --noEmit",
|
|
21
|
+
"typecheck": "tsc --noEmit"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@universal-web-video-player/player-web-component": "0.5.0"
|
|
25
|
+
},
|
|
26
|
+
"peerDependencies": {
|
|
27
|
+
"solid-js": ">=1"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"esbuild-plugin-solid": "^0.6.0",
|
|
31
|
+
"solid-js": "^1.8.15",
|
|
32
|
+
"tsup": "^8.1.0",
|
|
33
|
+
"typescript": "~5.5.4"
|
|
34
|
+
},
|
|
35
|
+
"license": "MIT",
|
|
36
|
+
"author": "AIPXPERTS",
|
|
37
|
+
"repository": {
|
|
38
|
+
"type": "git",
|
|
39
|
+
"url": "https://github.com/aipxperts/aipxperts-video-player.git",
|
|
40
|
+
"directory": "packages/solid"
|
|
41
|
+
},
|
|
42
|
+
"bugs": {
|
|
43
|
+
"url": "https://github.com/aipxperts/aipxperts-video-player/issues"
|
|
44
|
+
},
|
|
45
|
+
"homepage": "https://github.com/aipxperts/aipxperts-video-player#readme",
|
|
46
|
+
"keywords": [
|
|
47
|
+
"video",
|
|
48
|
+
"player",
|
|
49
|
+
"solid"
|
|
50
|
+
]
|
|
51
|
+
}
|