refactor(html): separate provider and container concerns in createPlayer (#635)

This commit is contained in:
rahim
2026-02-27 16:42:47 -08:00
committed by GitHub
parent 7bae887920
commit ed22730592
33 changed files with 348 additions and 315 deletions
+4 -2
View File
@@ -1,11 +1,13 @@
import { features } from '@videojs/core/dom';
import { createPlayer } from '../../player/create-player';
import { MediaElement } from '../../ui/media-element';
import '../media/container';
const { PlayerElement } = createPlayer({
const { ProviderMixin } = createPlayer({
features: features.audio,
});
export class AudioPlayerElement extends PlayerElement {
export class AudioPlayerElement extends ProviderMixin(MediaElement) {
static readonly tagName = 'audio-player';
}
@@ -1,11 +1,13 @@
import { features } from '@videojs/core/dom';
import { createPlayer } from '../../player/create-player';
import { MediaElement } from '../../ui/media-element';
import '../media/container';
const { PlayerElement } = createPlayer({
const { ProviderMixin } = createPlayer({
features: features.background,
});
export class BackgroundVideoPlayerElement extends PlayerElement {
export class BackgroundVideoPlayerElement extends ProviderMixin(MediaElement) {
static readonly tagName = 'background-video-player';
}
@@ -0,0 +1,17 @@
import { playerContext } from '../../player/context';
import { createContainerMixin } from '../../store/container-mixin';
import { MediaElement } from '../../ui/media-element';
const ContainerMixin = createContainerMixin(playerContext);
export class MediaContainerElement extends ContainerMixin(MediaElement) {
static readonly tagName = 'media-container';
}
customElements.define(MediaContainerElement.tagName, MediaContainerElement);
declare global {
interface HTMLElementTagNameMap {
[MediaContainerElement.tagName]: MediaContainerElement;
}
}
+4 -2
View File
@@ -1,11 +1,13 @@
import { features } from '@videojs/core/dom';
import { createPlayer } from '../../player/create-player';
import { MediaElement } from '../../ui/media-element';
import '../media/container';
const { PlayerElement } = createPlayer({
const { ProviderMixin } = createPlayer({
features: features.video,
});
export class VideoPlayerElement extends PlayerElement {
export class VideoPlayerElement extends ProviderMixin(MediaElement) {
static readonly tagName = 'video-player';
}