@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 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
+ ```
@@ -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
+ }