@kaushal-satani-aipxperts/player-angular 0.4.1 → 0.4.2

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { EventEmitter, ElementRef, AfterViewInit, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';
2
+ import type { UvpQualityOption, UvpSourceItem, UvpScaleMode, UvpState } from '@kaushal-satani-aipxperts/player-core';
3
+ import * as i0 from "@angular/core";
4
+ export declare class UvpAngularPlayerComponent implements AfterViewInit, OnChanges, OnDestroy {
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
+ onReady: EventEmitter<CustomEvent<any>>;
24
+ onPlay: EventEmitter<CustomEvent<any>>;
25
+ onPause: EventEmitter<CustomEvent<any>>;
26
+ onEnded: EventEmitter<CustomEvent<any>>;
27
+ onQualityChange: EventEmitter<CustomEvent<any>>;
28
+ onError: EventEmitter<CustomEvent<any>>;
29
+ onStateChange: EventEmitter<UvpState>;
30
+ playerElement: ElementRef;
31
+ private eventListeners;
32
+ get qualitiesJson(): string | null;
33
+ get playlistJson(): string | null;
34
+ ngOnChanges(changes: SimpleChanges): void;
35
+ ngAfterViewInit(): void;
36
+ ngOnDestroy(): void;
37
+ play(): Promise<void>;
38
+ pause(): void;
39
+ seek(seconds: number): void;
40
+ next(): void;
41
+ previous(): void;
42
+ getPlayerState(): UvpState;
43
+ static ɵfac: i0.ɵɵFactoryDeclaration<UvpAngularPlayerComponent, never>;
44
+ static ɵcmp: i0.ɵɵComponentDeclaration<UvpAngularPlayerComponent, "uvp-angular-player", never, { "sourceUrl": { "alias": "sourceUrl"; "required": false; }; "sourceType": { "alias": "sourceType"; "required": false; }; "qualities": { "alias": "qualities"; "required": false; }; "autoplay": { "alias": "autoplay"; "required": false; }; "muted": { "alias": "muted"; "required": false; }; "autoNext": { "alias": "autoNext"; "required": false; }; "loop": { "alias": "loop"; "required": false; }; "playbackRate": { "alias": "playbackRate"; "required": false; }; "volume": { "alias": "volume"; "required": false; }; "customControls": { "alias": "customControls"; "required": false; }; "poster": { "alias": "poster"; "required": false; }; "controls": { "alias": "controls"; "required": false; }; "playlist": { "alias": "playlist"; "required": false; }; "scaleMode": { "alias": "scaleMode"; "required": false; }; "hideSettings": { "alias": "hideSettings"; "required": false; }; "hideFullscreen": { "alias": "hideFullscreen"; "required": false; }; "hidePlaylist": { "alias": "hidePlaylist"; "required": false; }; "hideVolume": { "alias": "hideVolume"; "required": false; }; }, { "onReady": "ready"; "onPlay": "play"; "onPause": "pause"; "onEnded": "ended"; "onQualityChange": "qualitychange"; "onError": "error"; "onStateChange": "statechange"; }, never, ["*"], true, never>;
45
+ }
46
+ //# sourceMappingURL=uvp-player.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uvp-player.component.d.ts","sourceRoot":"","sources":["../src/uvp-player.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EACZ,UAAU,EAEV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EAEV,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,QAAQ,EACT,MAAM,uCAAuC,CAAC;;AAI/C,qBAyCa,yBAA0B,YAAW,aAAa,EAAE,SAAS,EAAE,SAAS;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAC5C,SAAS,EAAE,gBAAgB,EAAE,CAAM;IACnC,QAAQ,UAAS;IACjB,KAAK,UAAS;IACd,QAAQ,UAAS;IACjB,IAAI,UAAS;IACb,YAAY,SAAO;IACnB,MAAM,SAAO;IACb,cAAc,UAAS;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,UAAQ;IAChB,QAAQ,EAAE,aAAa,EAAE,CAAM;IAC/B,SAAS,CAAC,EAAE,YAAY,CAAC;IAGzB,YAAY,UAAS;IACrB,cAAc,UAAS;IACvB,YAAY,UAAS;IACrB,UAAU,UAAS;IAEX,OAAO,iCAAmC;IAC3C,MAAM,iCAAmC;IACxC,OAAO,iCAAmC;IAC1C,OAAO,iCAAmC;IAClC,eAAe,iCAAmC;IAC1D,OAAO,iCAAmC;IACpC,aAAa,yBAAgC;IAEtB,aAAa,EAAG,UAAU,CAAC;IAEzE,OAAO,CAAC,cAAc,CAA6C;IAEnE,IAAI,aAAa,IAAI,MAAM,GAAG,IAAI,CAEjC;IAED,IAAI,YAAY,IAAI,MAAM,GAAG,IAAI,CAEhC;IAED,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAIzC,eAAe,IAAI,IAAI;IA0BvB,WAAW,IAAI,IAAI;IAUnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,KAAK,IAAI,IAAI;IAIb,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,IAAI,IAAI,IAAI;IAIZ,QAAQ,IAAI,IAAI;IAIhB,cAAc,IAAI,QAAQ;yCAtGf,yBAAyB;2CAAzB,yBAAyB;CAyGrC"}
@@ -0,0 +1,201 @@
1
+ import { Component, Input, Output, EventEmitter, ElementRef, ViewChild, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
2
+ import { defineUvpPlayerElement } from '@kaushal-satani-aipxperts/player-web-component';
3
+ import * as i0 from "@angular/core";
4
+ const _c0 = ["playerElement"];
5
+ const _c1 = ["*"];
6
+ defineUvpPlayerElement();
7
+ export class UvpAngularPlayerComponent {
8
+ sourceUrl;
9
+ sourceType;
10
+ qualities = [];
11
+ autoplay = false;
12
+ muted = false;
13
+ autoNext = false;
14
+ loop = false;
15
+ playbackRate = 1.0;
16
+ volume = 1.0;
17
+ customControls = false;
18
+ poster;
19
+ controls = true;
20
+ playlist = [];
21
+ scaleMode;
22
+ // Feature Flags
23
+ hideSettings = false;
24
+ hideFullscreen = false;
25
+ hidePlaylist = false;
26
+ hideVolume = false;
27
+ onReady = new EventEmitter();
28
+ onPlay = new EventEmitter();
29
+ onPause = new EventEmitter();
30
+ onEnded = new EventEmitter();
31
+ onQualityChange = new EventEmitter();
32
+ onError = new EventEmitter();
33
+ onStateChange = new EventEmitter();
34
+ playerElement;
35
+ eventListeners = {};
36
+ get qualitiesJson() {
37
+ return this.qualities && this.qualities.length > 0 ? JSON.stringify(this.qualities) : null;
38
+ }
39
+ get playlistJson() {
40
+ return this.playlist && this.playlist.length > 0 ? JSON.stringify(this.playlist) : null;
41
+ }
42
+ ngOnChanges(changes) {
43
+ // Attributes and properties are handled by template binding
44
+ }
45
+ ngAfterViewInit() {
46
+ const el = this.playerElement.nativeElement;
47
+ const eventMap = {
48
+ 'ready': this.onReady,
49
+ 'play': this.onPlay,
50
+ 'pause': this.onPause,
51
+ 'ended': this.onEnded,
52
+ 'qualitychange': this.onQualityChange,
53
+ 'error': this.onError,
54
+ 'uvp-state-change': this.onStateChange
55
+ };
56
+ Object.entries(eventMap).forEach(([eventName, emitter]) => {
57
+ const handler = (e) => {
58
+ if (eventName === 'uvp-state-change') {
59
+ emitter.emit(e.detail);
60
+ }
61
+ else {
62
+ emitter.emit(e);
63
+ }
64
+ };
65
+ this.eventListeners[eventName] = handler;
66
+ el.addEventListener(eventName, handler);
67
+ });
68
+ }
69
+ ngOnDestroy() {
70
+ const el = this.playerElement?.nativeElement;
71
+ if (el) {
72
+ Object.entries(this.eventListeners).forEach(([eventName, handler]) => {
73
+ el.removeEventListener(eventName, handler);
74
+ });
75
+ }
76
+ }
77
+ // Imperative API
78
+ play() {
79
+ return this.playerElement.nativeElement.play();
80
+ }
81
+ pause() {
82
+ this.playerElement.nativeElement.pause();
83
+ }
84
+ seek(seconds) {
85
+ this.playerElement.nativeElement.seek(seconds);
86
+ }
87
+ next() {
88
+ this.playerElement.nativeElement.next();
89
+ }
90
+ previous() {
91
+ this.playerElement.nativeElement.previous();
92
+ }
93
+ getPlayerState() {
94
+ return this.playerElement.nativeElement.getPlayerState();
95
+ }
96
+ static ɵfac = function UvpAngularPlayerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || UvpAngularPlayerComponent)(); };
97
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UvpAngularPlayerComponent, selectors: [["uvp-angular-player"]], viewQuery: function UvpAngularPlayerComponent_Query(rf, ctx) { if (rf & 1) {
98
+ i0.ɵɵviewQuery(_c0, 7);
99
+ } if (rf & 2) {
100
+ let _t;
101
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.playerElement = _t.first);
102
+ } }, inputs: { sourceUrl: "sourceUrl", sourceType: "sourceType", qualities: "qualities", autoplay: "autoplay", muted: "muted", autoNext: "autoNext", loop: "loop", playbackRate: "playbackRate", volume: "volume", customControls: "customControls", poster: "poster", controls: "controls", playlist: "playlist", scaleMode: "scaleMode", hideSettings: "hideSettings", hideFullscreen: "hideFullscreen", hidePlaylist: "hidePlaylist", hideVolume: "hideVolume" }, outputs: { onReady: "ready", onPlay: "play", onPause: "pause", onEnded: "ended", onQualityChange: "qualitychange", onError: "error", onStateChange: "statechange" }, standalone: true, features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature], ngContentSelectors: _c1, decls: 3, vars: 18, consts: [["playerElement", ""], [3, "muted", "loop", "playbackRate", "volume"]], template: function UvpAngularPlayerComponent_Template(rf, ctx) { if (rf & 1) {
103
+ i0.ɵɵprojectionDef();
104
+ i0.ɵɵelementStart(0, "uvp-player", 1, 0);
105
+ i0.ɵɵprojection(2);
106
+ i0.ɵɵelementEnd();
107
+ } if (rf & 2) {
108
+ i0.ɵɵproperty("muted", ctx.muted)("loop", ctx.loop)("playbackRate", ctx.playbackRate)("volume", ctx.volume);
109
+ i0.ɵɵattribute("source-url", ctx.sourceUrl)("source-type", ctx.sourceType)("source-qualities", ctx.qualitiesJson)("playlist", ctx.playlistJson)("poster", ctx.poster)("autoplay", ctx.autoplay ? "" : null)("controls", ctx.controls === false ? "false" : null)("auto-next", ctx.autoNext ? "true" : null)("custom-controls", ctx.customControls ? "true" : null)("scale-mode", ctx.scaleMode)("hide-settings", ctx.hideSettings ? "" : null)("hide-fullscreen", ctx.hideFullscreen ? "" : null)("hide-playlist", ctx.hidePlaylist ? "" : null)("hide-volume", ctx.hideVolume ? "" : null);
110
+ } }, styles: ["[_nghost-%COMP%] {\n display: block;\n width: 100%;\n height: 100%;\n }\n uvp-player[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n }"] });
111
+ }
112
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UvpAngularPlayerComponent, [{
113
+ type: Component,
114
+ args: [{ selector: 'uvp-angular-player', standalone: true, template: `
115
+ <uvp-player
116
+ #playerElement
117
+ [attr.source-url]="sourceUrl"
118
+ [attr.source-type]="sourceType"
119
+ [attr.source-qualities]="qualitiesJson"
120
+ [attr.playlist]="playlistJson"
121
+ [attr.poster]="poster"
122
+ [attr.autoplay]="autoplay ? '' : null"
123
+ [muted]="muted"
124
+ [attr.controls]="controls === false ? 'false' : null"
125
+ [attr.auto-next]="autoNext ? 'true' : null"
126
+ [loop]="loop"
127
+ [playbackRate]="playbackRate"
128
+ [volume]="volume"
129
+ [attr.custom-controls]="customControls ? 'true' : null"
130
+ [attr.scale-mode]="scaleMode"
131
+ [attr.hide-settings]="hideSettings ? '' : null"
132
+ [attr.hide-fullscreen]="hideFullscreen ? '' : null"
133
+ [attr.hide-playlist]="hidePlaylist ? '' : null"
134
+ [attr.hide-volume]="hideVolume ? '' : null"
135
+ >
136
+ <ng-content></ng-content>
137
+ </uvp-player>
138
+ `, schemas: [CUSTOM_ELEMENTS_SCHEMA], styles: ["\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n uvp-player {\n width: 100%;\n height: 100%;\n }\n "] }]
139
+ }], null, { sourceUrl: [{
140
+ type: Input
141
+ }], sourceType: [{
142
+ type: Input
143
+ }], qualities: [{
144
+ type: Input
145
+ }], autoplay: [{
146
+ type: Input
147
+ }], muted: [{
148
+ type: Input
149
+ }], autoNext: [{
150
+ type: Input
151
+ }], loop: [{
152
+ type: Input
153
+ }], playbackRate: [{
154
+ type: Input
155
+ }], volume: [{
156
+ type: Input
157
+ }], customControls: [{
158
+ type: Input
159
+ }], poster: [{
160
+ type: Input
161
+ }], controls: [{
162
+ type: Input
163
+ }], playlist: [{
164
+ type: Input
165
+ }], scaleMode: [{
166
+ type: Input
167
+ }], hideSettings: [{
168
+ type: Input
169
+ }], hideFullscreen: [{
170
+ type: Input
171
+ }], hidePlaylist: [{
172
+ type: Input
173
+ }], hideVolume: [{
174
+ type: Input
175
+ }], onReady: [{
176
+ type: Output,
177
+ args: ['ready']
178
+ }], onPlay: [{
179
+ type: Output,
180
+ args: ['play']
181
+ }], onPause: [{
182
+ type: Output,
183
+ args: ['pause']
184
+ }], onEnded: [{
185
+ type: Output,
186
+ args: ['ended']
187
+ }], onQualityChange: [{
188
+ type: Output,
189
+ args: ['qualitychange']
190
+ }], onError: [{
191
+ type: Output,
192
+ args: ['error']
193
+ }], onStateChange: [{
194
+ type: Output,
195
+ args: ['statechange']
196
+ }], playerElement: [{
197
+ type: ViewChild,
198
+ args: ['playerElement', { static: true }]
199
+ }] }); })();
200
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UvpAngularPlayerComponent, { className: "UvpAngularPlayerComponent" }); })();
201
+ //# sourceMappingURL=uvp-player.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uvp-player.component.js","sourceRoot":"","sources":["../src/uvp-player.component.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaushal-satani-aipxperts/player-angular",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "Angular wrapper for universal video player",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -16,12 +16,12 @@
16
16
  "dist"
17
17
  ],
18
18
  "scripts": {
19
- "build": "tsc -p tsconfig.json",
19
+ "build": "ngc -p tsconfig.json",
20
20
  "lint": "tsc --noEmit",
21
21
  "typecheck": "tsc --noEmit"
22
22
  },
23
23
  "dependencies": {
24
- "@kaushal-satani-aipxperts/player-web-component": "0.4.1"
24
+ "@kaushal-satani-aipxperts/player-web-component": "0.4.2"
25
25
  },
26
26
  "peerDependencies": {
27
27
  "@angular/common": ">=14",
@@ -29,10 +29,11 @@
29
29
  },
30
30
  "devDependencies": {
31
31
  "@angular/common": "^18.0.0",
32
- "@angular/core": "^18.0.0",
33
32
  "@angular/compiler": "^18.0.0",
34
33
  "@angular/compiler-cli": "^18.0.0",
34
+ "@angular/core": "^18.0.0",
35
35
  "rxjs": "^7.8.1",
36
+ "tsup": "^8.5.1",
36
37
  "typescript": "~5.5.4",
37
38
  "zone.js": "^0.14.7"
38
39
  },
@@ -52,4 +53,4 @@
52
53
  "player",
53
54
  "angular"
54
55
  ]
55
- }
56
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -1,40 +0,0 @@
1
- import { EventEmitter, ElementRef, AfterViewInit, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';
2
- import type { UvpQualityOption, UvpSourceItem } from '@kaushal-satani-aipxperts/player-core';
3
- export declare class UvpAngularPlayerComponent implements AfterViewInit, OnChanges, OnDestroy {
4
- sourceUrl?: string;
5
- sourceType?: 'mp4' | 'mov' | 'hls' | 'dash';
6
- qualities: UvpQualityOption[];
7
- autoplay: boolean;
8
- muted: boolean;
9
- autoNext: boolean;
10
- loop: boolean;
11
- playbackRate: number;
12
- volume: number;
13
- customControls: boolean;
14
- poster?: string;
15
- controls: boolean;
16
- playlist: UvpSourceItem[];
17
- scaleMode?: 'fit' | 'fill' | 'zoom';
18
- ready: EventEmitter<CustomEvent<any>>;
19
- play: EventEmitter<CustomEvent<any>>;
20
- pause: EventEmitter<CustomEvent<any>>;
21
- ended: EventEmitter<CustomEvent<any>>;
22
- qualitychange: EventEmitter<CustomEvent<any>>;
23
- error: EventEmitter<CustomEvent<any>>;
24
- playerElement: ElementRef;
25
- private eventListeners;
26
- get qualitiesJson(): string | null;
27
- get playlistJson(): string | null;
28
- ngOnChanges(changes: SimpleChanges): void;
29
- ngAfterViewInit(): void;
30
- ngOnDestroy(): void;
31
- playVideo(): Promise<void>;
32
- pauseVideo(): void;
33
- seek(seconds: number): void;
34
- next(): void;
35
- previous(): void;
36
- setPlaybackRate(rate: number): void;
37
- setVolume(vol: number): void;
38
- setSelectedQuality(qualityId: string | null): void;
39
- }
40
- //# sourceMappingURL=uvp-player.component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uvp-player.component.d.ts","sourceRoot":"","sources":["../../../src/uvp-player.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EACZ,UAAU,EAEV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EAEV,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAI7F,qBAmCa,yBAA0B,YAAW,aAAa,EAAE,SAAS,EAAE,SAAS;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAC5C,SAAS,EAAE,gBAAgB,EAAE,CAAM;IACnC,QAAQ,UAAS;IACjB,KAAK,UAAS;IACd,QAAQ,UAAS;IACjB,IAAI,UAAS;IACb,YAAY,SAAO;IACnB,MAAM,SAAO;IACb,cAAc,UAAS;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,UAAQ;IAChB,QAAQ,EAAE,aAAa,EAAE,CAAM;IAC/B,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAEnC,KAAK,iCAAmC;IACxC,IAAI,iCAAmC;IACvC,KAAK,iCAAmC;IACxC,KAAK,iCAAmC;IACxC,aAAa,iCAAmC;IAChD,KAAK,iCAAmC;IAEJ,aAAa,EAAG,UAAU,CAAC;IAEzE,OAAO,CAAC,cAAc,CAA6C;IAEnE,IAAI,aAAa,IAAI,MAAM,GAAG,IAAI,CAEjC;IAED,IAAI,YAAY,IAAI,MAAM,GAAG,IAAI,CAEhC;IAED,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAIzC,eAAe,IAAI,IAAI;IAavB,WAAW,IAAI,IAAI;IAUnB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1B,UAAU,IAAI,IAAI;IAIlB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,IAAI,IAAI,IAAI;IAIZ,QAAQ,IAAI,IAAI;IAIhB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAInC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI5B,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;CAGnD"}
@@ -1,209 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import { Component, Input, Output, EventEmitter, ElementRef, ViewChild, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
11
- import { defineUvpPlayerElement } from '@kaushal-satani-aipxperts/player-web-component';
12
- defineUvpPlayerElement();
13
- let UvpAngularPlayerComponent = class UvpAngularPlayerComponent {
14
- constructor() {
15
- this.qualities = [];
16
- this.autoplay = false;
17
- this.muted = false;
18
- this.autoNext = false;
19
- this.loop = false;
20
- this.playbackRate = 1.0;
21
- this.volume = 1.0;
22
- this.customControls = false;
23
- this.controls = true;
24
- this.playlist = [];
25
- this.ready = new EventEmitter();
26
- this.play = new EventEmitter();
27
- this.pause = new EventEmitter();
28
- this.ended = new EventEmitter();
29
- this.qualitychange = new EventEmitter();
30
- this.error = new EventEmitter();
31
- this.eventListeners = {};
32
- }
33
- get qualitiesJson() {
34
- return this.qualities && this.qualities.length > 0 ? JSON.stringify(this.qualities) : null;
35
- }
36
- get playlistJson() {
37
- return this.playlist && this.playlist.length > 0 ? JSON.stringify(this.playlist) : null;
38
- }
39
- ngOnChanges(changes) {
40
- // Attributes are handled by template binding
41
- }
42
- ngAfterViewInit() {
43
- const el = this.playerElement.nativeElement;
44
- const events = ['ready', 'play', 'pause', 'ended', 'qualitychange', 'error'];
45
- events.forEach(eventName => {
46
- const handler = (e) => {
47
- this[eventName].emit(e);
48
- };
49
- this.eventListeners[eventName] = handler;
50
- el.addEventListener(eventName, handler);
51
- });
52
- }
53
- ngOnDestroy() {
54
- const el = this.playerElement?.nativeElement;
55
- if (el) {
56
- Object.entries(this.eventListeners).forEach(([eventName, handler]) => {
57
- el.removeEventListener(eventName, handler);
58
- });
59
- }
60
- }
61
- // Imperative API
62
- playVideo() {
63
- return this.playerElement.nativeElement.play();
64
- }
65
- pauseVideo() {
66
- this.playerElement.nativeElement.pause();
67
- }
68
- seek(seconds) {
69
- this.playerElement.nativeElement.seek(seconds);
70
- }
71
- next() {
72
- this.playerElement.nativeElement.next();
73
- }
74
- previous() {
75
- this.playerElement.nativeElement.previous();
76
- }
77
- setPlaybackRate(rate) {
78
- this.playerElement.nativeElement.setPlaybackRate(rate);
79
- }
80
- setVolume(vol) {
81
- this.playerElement.nativeElement.setVolume(vol);
82
- }
83
- setSelectedQuality(qualityId) {
84
- this.playerElement.nativeElement.getApi?.().setSelectedQuality(qualityId);
85
- }
86
- };
87
- __decorate([
88
- Input(),
89
- __metadata("design:type", String)
90
- ], UvpAngularPlayerComponent.prototype, "sourceUrl", void 0);
91
- __decorate([
92
- Input(),
93
- __metadata("design:type", String)
94
- ], UvpAngularPlayerComponent.prototype, "sourceType", void 0);
95
- __decorate([
96
- Input(),
97
- __metadata("design:type", Array)
98
- ], UvpAngularPlayerComponent.prototype, "qualities", void 0);
99
- __decorate([
100
- Input(),
101
- __metadata("design:type", Object)
102
- ], UvpAngularPlayerComponent.prototype, "autoplay", void 0);
103
- __decorate([
104
- Input(),
105
- __metadata("design:type", Object)
106
- ], UvpAngularPlayerComponent.prototype, "muted", void 0);
107
- __decorate([
108
- Input(),
109
- __metadata("design:type", Object)
110
- ], UvpAngularPlayerComponent.prototype, "autoNext", void 0);
111
- __decorate([
112
- Input(),
113
- __metadata("design:type", Object)
114
- ], UvpAngularPlayerComponent.prototype, "loop", void 0);
115
- __decorate([
116
- Input(),
117
- __metadata("design:type", Object)
118
- ], UvpAngularPlayerComponent.prototype, "playbackRate", void 0);
119
- __decorate([
120
- Input(),
121
- __metadata("design:type", Object)
122
- ], UvpAngularPlayerComponent.prototype, "volume", void 0);
123
- __decorate([
124
- Input(),
125
- __metadata("design:type", Object)
126
- ], UvpAngularPlayerComponent.prototype, "customControls", void 0);
127
- __decorate([
128
- Input(),
129
- __metadata("design:type", String)
130
- ], UvpAngularPlayerComponent.prototype, "poster", void 0);
131
- __decorate([
132
- Input(),
133
- __metadata("design:type", Object)
134
- ], UvpAngularPlayerComponent.prototype, "controls", void 0);
135
- __decorate([
136
- Input(),
137
- __metadata("design:type", Array)
138
- ], UvpAngularPlayerComponent.prototype, "playlist", void 0);
139
- __decorate([
140
- Input(),
141
- __metadata("design:type", String)
142
- ], UvpAngularPlayerComponent.prototype, "scaleMode", void 0);
143
- __decorate([
144
- Output(),
145
- __metadata("design:type", Object)
146
- ], UvpAngularPlayerComponent.prototype, "ready", void 0);
147
- __decorate([
148
- Output(),
149
- __metadata("design:type", Object)
150
- ], UvpAngularPlayerComponent.prototype, "play", void 0);
151
- __decorate([
152
- Output(),
153
- __metadata("design:type", Object)
154
- ], UvpAngularPlayerComponent.prototype, "pause", void 0);
155
- __decorate([
156
- Output(),
157
- __metadata("design:type", Object)
158
- ], UvpAngularPlayerComponent.prototype, "ended", void 0);
159
- __decorate([
160
- Output(),
161
- __metadata("design:type", Object)
162
- ], UvpAngularPlayerComponent.prototype, "qualitychange", void 0);
163
- __decorate([
164
- Output(),
165
- __metadata("design:type", Object)
166
- ], UvpAngularPlayerComponent.prototype, "error", void 0);
167
- __decorate([
168
- ViewChild('playerElement', { static: true }),
169
- __metadata("design:type", ElementRef)
170
- ], UvpAngularPlayerComponent.prototype, "playerElement", void 0);
171
- UvpAngularPlayerComponent = __decorate([
172
- Component({
173
- selector: 'uvp-angular-player',
174
- standalone: true,
175
- template: `
176
- <uvp-player
177
- #playerElement
178
- [attr.source-url]="sourceUrl"
179
- [attr.source-type]="sourceType"
180
- [attr.source-qualities]="qualitiesJson"
181
- [attr.playlist]="playlistJson"
182
- [attr.poster]="poster"
183
- [attr.autoplay]="autoplay ? '' : null"
184
- [attr.muted]="muted ? '' : null"
185
- [attr.controls]="controls ? 'true' : 'false'"
186
- [attr.auto-next]="autoNext ? 'true' : null"
187
- [attr.loop]="loop ? 'true' : null"
188
- [attr.playback-rate]="playbackRate"
189
- [attr.volume]="volume"
190
- [attr.custom-controls]="customControls ? 'true' : null"
191
- [attr.scale-mode]="scaleMode"
192
- ></uvp-player>
193
- `,
194
- styles: [`
195
- :host {
196
- display: block;
197
- width: 100%;
198
- height: 100%;
199
- }
200
- uvp-player {
201
- width: 100%;
202
- height: 100%;
203
- }
204
- `],
205
- schemas: [CUSTOM_ELEMENTS_SCHEMA]
206
- })
207
- ], UvpAngularPlayerComponent);
208
- export { UvpAngularPlayerComponent };
209
- //# sourceMappingURL=uvp-player.component.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uvp-player.component.js","sourceRoot":"","sources":["../../../src/uvp-player.component.ts"],"names":[],"mappings":"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"}