Player
Direct Subclass:
A class that wraps around HTMLMediaElement
It sends to the Host all relevant media events (ie: play, pause, etc)
This class should be extended in order to give provider specific support. By default all getter and setters interact with the media element, this can be overwritten by extending this class so it gets and sets by interacting with the relevant places for each provider.
Test:
Constructor Summary
Public Constructor | ||
public |
constructor(page: Page, host: Host, element: HTMLMediaElement) Create a new instance of player |
Member Summary
Public Members | ||
public |
A URL with the media baseURI It's updated in refresh whenever metadata changes |
|
public |
element: HTMLMediaElement The media element |
|
public |
The Host to communicate with |
|
public |
The Page that holds the player |
Method Summary
Public Methods | ||
public |
getArtists(): Array<string> Get the artists of the player |
|
public |
Get the cover of the player. |
|
public |
Get the id of the player |
|
public |
Length is expected in microseconds by host |
|
public |
Get the current time of the media |
|
public |
Get the playback rate |
|
public |
Get the site domain (host) |
|
public |
Get the title of the player. |
|
public |
Get the elements url |
|
public |
If media is muted return 0 |
|
public |
Add listeners on this.element so we propagate all necessary events to the this.host |
|
public |
Check if element is visible to the user |
|
public |
Is the media looping? |
|
public |
Is the media muted? |
|
public |
Returns true if the media is paused. |
|
public |
Returns true if the media is not paused |
|
public |
Return true if the media is paused and current time is 0. |
|
public |
|
|
public |
pause() Pause media element |
|
public |
play(): * Play media element |
|
public |
If media is playing then pause else play it |
|
public |
refresh() Update this.URL so getter read the correct data. |
|
public |
seek by an offset to position |
|
public |
Should media loop when it reaches the end. |
|
public |
setPosition(position: number) Set the position of playback |
|
public |
Set the playback rate |
|
public |
Set the volume of the media |
|
public |
stop() Pause media and set position to 0 |
|
public |
Toogle the fullscreen state of the media. |
Public Constructors
Public Members
Public Methods
public getCover(): string source
Get the cover of the player.
Using logo.clearbit.com API seems to work quite nicely. The other alternative is to get the logo from the page's favicon ({@link this.page.getIcon()})
Test:
public initDefaultMediaListeners() source
Add listeners on this.element so we propagate all necessary events to the this.host
public refresh() source
Update this.URL so getter read the correct data. Also trigger a this.host.start event on the Host.
public seek(offset: number) source
seek by an offset to position
Params:
Name | Type | Attribute | Description |
offset | number | offset to currentTime in microseconds |
public setLoop(loop: boolean) source
Should media loop when it reaches the end.
Params:
Name | Type | Attribute | Description |
loop | boolean |
public setPosition(position: number) source
Set the position of playback
Params:
Name | Type | Attribute | Description |
position | number | new currentTime in microseconds |
public setRate(rate: number) source
Set the playback rate
Params:
Name | Type | Attribute | Description |
rate | number |