@broadcastingplatforms/player 0.0.0-dev.3802fed → 0.0.0-dev.69b5249

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.
Files changed (37) hide show
  1. package/README.md +157 -0
  2. package/dist/bp-player.js +141 -138
  3. package/dist/bp-player.mjs +132 -129
  4. package/dist/bp-player.standalone.mjs +147 -144
  5. package/dist/bplive/service.d.ts +4 -2
  6. package/dist/components/bp-default-ui.d.ts +8 -3
  7. package/dist/components/bp-player.d.ts +7 -5
  8. package/dist/core/player-core.d.ts +4 -2
  9. package/dist/index.d.ts +1 -1
  10. package/dist/providers/contract.d.ts +9 -0
  11. package/dist/util/attribute.d.ts +0 -2
  12. package/package.json +5 -3
  13. package/dist/bp-player.js.map +0 -7
  14. package/dist/bp-player.mjs.map +0 -7
  15. package/dist/bp-player.standalone.mjs.map +0 -7
  16. package/dist/bplive/index.d.ts.map +0 -1
  17. package/dist/bplive/service.d.ts.map +0 -1
  18. package/dist/bplive/types.d.ts.map +0 -1
  19. package/dist/components/bp-default-ui.d.ts.map +0 -1
  20. package/dist/components/bp-error-display.d.ts.map +0 -1
  21. package/dist/components/bp-overlay.d.ts.map +0 -1
  22. package/dist/components/bp-player.d.ts.map +0 -1
  23. package/dist/components/index.d.ts.map +0 -1
  24. package/dist/core/index.d.ts.map +0 -1
  25. package/dist/core/player-core.d.ts.map +0 -1
  26. package/dist/core/state-receiver.d.ts.map +0 -1
  27. package/dist/core/state.d.ts.map +0 -1
  28. package/dist/elements/hls-video.d.ts.map +0 -1
  29. package/dist/elements/index.d.ts.map +0 -1
  30. package/dist/elements/livekit-video.d.ts.map +0 -1
  31. package/dist/elements/nano-video.d.ts.map +0 -1
  32. package/dist/index.d.ts.map +0 -1
  33. package/dist/providers/contract.d.ts.map +0 -1
  34. package/dist/providers/index.d.ts.map +0 -1
  35. package/dist/styles/index.d.ts.map +0 -1
  36. package/dist/util/attribute.d.ts.map +0 -1
  37. package/dist/util/index.d.ts.map +0 -1
@@ -5,8 +5,10 @@ export interface BPLiveResolvedResult {
5
5
  source: ResolvedPlayerSource;
6
6
  contentType: ContentType;
7
7
  poster?: string;
8
- /** Aspect ratio based on orientation (portrait: 9/16, landscape: 16/9) */
9
- aspectRatio?: string;
8
+ /** Video width from media metadata */
9
+ videoWidth?: number;
10
+ /** Video height from media metadata */
11
+ videoHeight?: number;
10
12
  }
11
13
  export declare class BPLiveError extends Error {
12
14
  code: string;
@@ -1,6 +1,6 @@
1
1
  import { LitElement, PropertyValues } from 'lit';
2
2
  import type { PlayerCore } from '../core/player-core';
3
- import type { ProviderConfig, PlayerSources } from '../providers/contract';
3
+ import type { ProviderConfig, SourceDescription } from '../providers/contract';
4
4
  import 'media-chrome';
5
5
  import 'media-chrome/menu';
6
6
  import './bp-player';
@@ -24,7 +24,7 @@ export declare class BPDefaultUI extends LitElement {
24
24
  protected createRenderRoot(): HTMLElement | DocumentFragment;
25
25
  connectedCallback(): void;
26
26
  disconnectedCallback(): void;
27
- sources?: PlayerSources;
27
+ source?: SourceDescription;
28
28
  autoplay: boolean;
29
29
  muted: boolean;
30
30
  loop: boolean;
@@ -56,7 +56,12 @@ export declare class BPDefaultUI extends LitElement {
56
56
  private detectMobile;
57
57
  protected firstUpdated(_changedProperties: PropertyValues): void;
58
58
  protected updated(_changedProperties: PropertyValues): void;
59
- private _setInitialAspectRatioFromSources;
59
+ /** Set initial video dimensions from preferredOrientation hint */
60
+ private _setInitialVideoDimensionsFromSources;
61
+ /** Update video dimension CSS variables */
62
+ private _updateVideoDimensions;
63
+ /** Clear video dimension CSS variables */
64
+ private _clearVideoDimensions;
60
65
  private _moveSlottedContent;
61
66
  private setupPlayer;
62
67
  private setupPlayerListeners;
@@ -1,7 +1,7 @@
1
1
  import { LitElement, type PropertyValues } from 'lit';
2
2
  import { type PlayerCore } from '../core/player-core';
3
3
  import type { PlayerState } from '../core/state';
4
- import type { ProviderType, ProviderConfig, PlayerSources } from '../providers/contract';
4
+ import type { ProviderType, ProviderConfig, SourceDescription } from '../providers/contract';
5
5
  import type { BPLiveService } from '../bplive/service';
6
6
  export type BPPlayerReadyEvent = CustomEvent<PlayerCore>;
7
7
  declare global {
@@ -37,7 +37,7 @@ declare class VideoRenditionList extends EventTarget {
37
37
  export declare class BPPlayer extends LitElement {
38
38
  protected createRenderRoot(): HTMLElement | DocumentFragment;
39
39
  connectedCallback(): void;
40
- sources?: PlayerSources;
40
+ source?: SourceDescription;
41
41
  autoplay: boolean;
42
42
  defaultMuted: boolean;
43
43
  loop: boolean;
@@ -93,12 +93,14 @@ export declare class BPPlayer extends LitElement {
93
93
  private initPlayer;
94
94
  private loadPlayableSource;
95
95
  private destroyPlayer;
96
- /** Set --bp-aspect-ratio CSS variable if not already defined by consumer */
97
- private setAspectRatioVariable;
96
+ /** Update video dimension CSS variables */
97
+ updateVideoDimensions(width: number, height: number): void;
98
+ /** Clear video dimension CSS variables */
99
+ private clearVideoDimensions;
98
100
  private getContainerClasses;
99
101
  private getPosterClasses;
100
102
  private getContainerStyle;
101
- private getEffectivePoster;
103
+ private getPoster;
102
104
  protected render(): import("lit").TemplateResult<1>;
103
105
  }
104
106
  export {};
@@ -94,7 +94,8 @@ export interface PlayerCore {
94
94
  removeEventListener<K extends PlayerCoreEventType>(type: K | K[], listener: EventListener<PlayerCoreEventMap[K]>): void;
95
95
  loadSource(source: string | PlayerSource, container: HTMLElement, config?: ProviderConfig): Promise<{
96
96
  poster?: string;
97
- aspectRatio?: string;
97
+ videoWidth?: number;
98
+ videoHeight?: number;
98
99
  } | void>;
99
100
  unloadSource(): void;
100
101
  play(): Promise<void>;
@@ -128,7 +129,8 @@ export declare class PlayerCoreImpl implements PlayerCore {
128
129
  private updateState;
129
130
  loadSource(source: string | PlayerSource, container: HTMLElement, config?: ProviderConfig): Promise<{
130
131
  poster?: string;
131
- aspectRatio?: string;
132
+ videoWidth?: number;
133
+ videoHeight?: number;
132
134
  } | void>;
133
135
  private createMediaElement;
134
136
  private attachMediaElementListeners;
package/dist/index.d.ts CHANGED
@@ -11,7 +11,7 @@ export { createInitialState, classifyNanoPlayerError, NANOPLAYER_NO_REPLAY_CODES
11
11
  export type { PlayerState, QualityLevel, PresentationMode, ConnectionState, StreamType, ContentType, PlayerError, ErrorCategory, } from './core/state';
12
12
  export { StateReceiverMixin, StateReceiverProps, isStateReceiverElement, forEachStateReceiverElement, propagateStateToReceiver, removeStateFromReceiver, } from './core/state-receiver';
13
13
  export type { StateReceiverElement, StateReceiverPropertyMap } from './core/state-receiver';
14
- export type { ProviderType, ProviderConfig, VideoProviderConfig, NanoProviderConfig, LiveKitProviderConfig, PlayerSource, ResolvedPlayerSource, VideoSource, NanoSource, LiveKitSource, PosterSource, PlayerSourceItem, PlayerSources, } from './providers/contract';
14
+ export type { ProviderType, ProviderConfig, VideoProviderConfig, NanoProviderConfig, LiveKitProviderConfig, PlayerSource, ResolvedPlayerSource, VideoSource, NanoSource, LiveKitSource, PosterSource, PlayerSourceItem, PlayerSources, SourceDescription, } from './providers/contract';
15
15
  export { BPLiveService, BPLiveError, type BPLiveResolvedResult } from './bplive/service';
16
16
  export { isBPLiveSource, isBPLiveStreamSource, isBPLiveClipSource, } from './bplive/types';
17
17
  export type { BPLiveConfig, BPLiveSource, BPLiveStreamSource, BPLiveClipSource, BPLiveStream, BPLiveStreamResponse, BPLiveClip, BPLiveClipResponse, BPLiveChannel, BPLiveActiveStream, BPLivePlayerSource, BPLiveLiveKitPlayerSource, BPLiveNanoPlayerSource, BPLiveClipMedia, } from './bplive/types';
@@ -51,6 +51,15 @@ export type PosterSource = {
51
51
  };
52
52
  export type PlayerSourceItem = PlayerSource | PosterSource;
53
53
  export type PlayerSources = PlayerSourceItem[];
54
+ /**
55
+ * Source description containing sources and optional metadata.
56
+ */
57
+ export interface SourceDescription {
58
+ /** Array of playable sources */
59
+ sources: PlayerSource[];
60
+ /** Poster image URL */
61
+ poster?: string;
62
+ }
54
63
  export interface ProviderConfig {
55
64
  libraryLocation?: string;
56
65
  video?: VideoProviderConfig;
@@ -1,7 +1,5 @@
1
1
  /**
2
2
  * Centralized HTML attributes used by BP Player components.
3
- *
4
- * Following theoplayer's pattern for consistent attribute naming.
5
3
  */
6
4
  export declare enum Attribute {
7
5
  CONFIGURATION = "configuration",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@broadcastingplatforms/player",
3
- "version": "0.0.0-dev.3802fed",
3
+ "version": "0.0.0-dev.69b5249",
4
4
  "description": "Universal video player web component built with Lit",
5
5
  "type": "module",
6
6
  "main": "dist/bp-player.js",
@@ -36,7 +36,8 @@
36
36
  "./package.json": "./package.json"
37
37
  },
38
38
  "files": [
39
- "dist/"
39
+ "dist/",
40
+ "!**/*.map"
40
41
  ],
41
42
  "dependencies": {
42
43
  "better-call": "^1.0.6",
@@ -49,6 +50,7 @@
49
50
  },
50
51
  "devDependencies": {
51
52
  "@types/node": "^22.10.2",
53
+ "concurrently": "^9.1.2",
52
54
  "esbuild": "^0.24.0",
53
55
  "typescript": "^5.7.2",
54
56
  "vite": "^6.0.5"
@@ -62,7 +64,7 @@
62
64
  "build:types": "tsc --emitDeclarationOnly",
63
65
  "build:bundle": "node build.mjs",
64
66
  "build:prod": "NODE_ENV=production pnpm build",
65
- "dev": "node build.mjs --watch",
67
+ "dev": "concurrently \"tsc --emitDeclarationOnly --watch --preserveWatchOutput\" \"node build.mjs --watch\"",
66
68
  "dev:demo": "vite"
67
69
  }
68
70
  }