mirror of
https://github.com/zoriya/v10.git
synced 2026-08-16 02:45:09 +00:00
refactor(packages): move feature presets to subpath exports (#633)
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
import { features } from '@videojs/core/dom';
|
||||
import { audioFeatures } from '@videojs/core/dom';
|
||||
import { createPlayer } from '../../player/create-player';
|
||||
import { MediaElement } from '../../ui/media-element';
|
||||
import '../media/container';
|
||||
|
||||
const { ProviderMixin } = createPlayer({
|
||||
features: features.audio,
|
||||
features: audioFeatures,
|
||||
});
|
||||
|
||||
export class AudioPlayerElement extends ProviderMixin(MediaElement) {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { features } from '@videojs/core/dom';
|
||||
import { backgroundFeatures } from '@videojs/core/dom';
|
||||
import { createPlayer } from '../../player/create-player';
|
||||
import { MediaElement } from '../../ui/media-element';
|
||||
import '../media/container';
|
||||
|
||||
const { ProviderMixin } = createPlayer({
|
||||
features: features.background,
|
||||
features: backgroundFeatures,
|
||||
});
|
||||
|
||||
export class BackgroundVideoPlayerElement extends ProviderMixin(MediaElement) {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { features } from '@videojs/core/dom';
|
||||
import { videoFeatures } from '@videojs/core/dom';
|
||||
import { createPlayer } from '../../player/create-player';
|
||||
import { MediaElement } from '../../ui/media-element';
|
||||
import '../media/container';
|
||||
|
||||
const { ProviderMixin } = createPlayer({
|
||||
features: features.video,
|
||||
features: videoFeatures,
|
||||
});
|
||||
|
||||
export class VideoPlayerElement extends ProviderMixin(MediaElement) {
|
||||
|
||||
@@ -40,11 +40,11 @@ export interface CreatePlayerResult<Store extends PlayerStore> {
|
||||
*
|
||||
* @example
|
||||
* ```ts
|
||||
* import { features } from '@videojs/core/dom';
|
||||
* import { createPlayer, MediaElement } from '@videojs/html';
|
||||
* import { videoFeatures } from '@videojs/html/video';
|
||||
*
|
||||
* const { ProviderMixin, ContainerMixin, PlayerController, context } = createPlayer({
|
||||
* features: features.video,
|
||||
* features: videoFeatures,
|
||||
* });
|
||||
*
|
||||
* // Provider element: owns the store, provides context to descendants
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { AudioPlayerStore, PlayerStore, PlayerTarget, VideoPlayerStore } from '@videojs/core/dom';
|
||||
import { definePlayerFeature, features } from '@videojs/core/dom';
|
||||
import { audioFeatures, backgroundFeatures, definePlayerFeature, videoFeatures } from '@videojs/core/dom';
|
||||
import type { Slice } from '@videojs/store';
|
||||
import { assertType, describe, it } from 'vitest';
|
||||
|
||||
@@ -7,19 +7,19 @@ import { type CreatePlayerResult, createPlayer } from '../create-player';
|
||||
|
||||
describe('createPlayer', () => {
|
||||
it('resolves video features to VideoPlayerStore', () => {
|
||||
const result = createPlayer({ features: features.video });
|
||||
const result = createPlayer({ features: videoFeatures });
|
||||
|
||||
assertType<CreatePlayerResult<VideoPlayerStore>>(result);
|
||||
});
|
||||
|
||||
it('resolves audio features to AudioPlayerStore', () => {
|
||||
const result = createPlayer({ features: features.audio });
|
||||
const result = createPlayer({ features: audioFeatures });
|
||||
|
||||
assertType<CreatePlayerResult<AudioPlayerStore>>(result);
|
||||
});
|
||||
|
||||
it('resolves spread video features to VideoPlayerStore', () => {
|
||||
const result = createPlayer({ features: [...features.video] });
|
||||
const result = createPlayer({ features: videoFeatures });
|
||||
|
||||
assertType<CreatePlayerResult<VideoPlayerStore>>(result);
|
||||
});
|
||||
@@ -48,11 +48,11 @@ describe('createPlayer', () => {
|
||||
});
|
||||
|
||||
const result = createPlayer({
|
||||
features: [...features.video, analyticsFeature],
|
||||
features: [...videoFeatures, analyticsFeature],
|
||||
});
|
||||
|
||||
// Extended features fall through to the generic overload
|
||||
assertType<CreatePlayerResult<PlayerStore<[...typeof features.video, typeof analyticsFeature]>>>(result);
|
||||
assertType<CreatePlayerResult<PlayerStore<[...typeof videoFeatures, typeof analyticsFeature]>>>(result);
|
||||
|
||||
// The store has both video and analytics state
|
||||
const store = result.create();
|
||||
@@ -63,7 +63,7 @@ describe('createPlayer', () => {
|
||||
});
|
||||
|
||||
it('resolves background features to generic PlayerStore', () => {
|
||||
const result = createPlayer({ features: features.background });
|
||||
const result = createPlayer({ features: backgroundFeatures });
|
||||
|
||||
assertType<CreatePlayerResult<PlayerStore<[]>>>(result);
|
||||
});
|
||||
@@ -78,7 +78,7 @@ describe('createPlayer', () => {
|
||||
});
|
||||
|
||||
const result = createPlayer({
|
||||
features: [...features.audio, analyticsFeature],
|
||||
features: [...audioFeatures, analyticsFeature],
|
||||
});
|
||||
|
||||
const store = result.create();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { features } from '@videojs/core/dom';
|
||||
import { audioFeatures, backgroundFeatures, videoFeatures } from '@videojs/core/dom';
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
import { MediaElement } from '../../ui/media-element';
|
||||
@@ -6,7 +6,7 @@ import { createPlayer } from '../create-player';
|
||||
|
||||
describe('createPlayer', () => {
|
||||
it('returns expected exports', () => {
|
||||
const result = createPlayer({ features: features.video });
|
||||
const result = createPlayer({ features: videoFeatures });
|
||||
|
||||
expect(result.context).toBeDefined();
|
||||
expect(result.create).toBeInstanceOf(Function);
|
||||
@@ -16,7 +16,7 @@ describe('createPlayer', () => {
|
||||
});
|
||||
|
||||
it('create() returns a store instance', () => {
|
||||
const { create } = createPlayer({ features: features.video });
|
||||
const { create } = createPlayer({ features: videoFeatures });
|
||||
const store = create();
|
||||
|
||||
expect(store.attach).toBeInstanceOf(Function);
|
||||
@@ -25,7 +25,7 @@ describe('createPlayer', () => {
|
||||
});
|
||||
|
||||
it('ProviderMixin produces a valid custom element class', () => {
|
||||
const { ProviderMixin } = createPlayer({ features: features.video });
|
||||
const { ProviderMixin } = createPlayer({ features: videoFeatures });
|
||||
const ProviderElement = ProviderMixin(MediaElement);
|
||||
|
||||
expect(typeof ProviderElement).toBe('function');
|
||||
@@ -33,7 +33,7 @@ describe('createPlayer', () => {
|
||||
});
|
||||
|
||||
it('ContainerMixin produces a valid custom element class', () => {
|
||||
const { ContainerMixin } = createPlayer({ features: features.video });
|
||||
const { ContainerMixin } = createPlayer({ features: videoFeatures });
|
||||
const ContainerElement = ContainerMixin(MediaElement);
|
||||
|
||||
expect(typeof ContainerElement).toBe('function');
|
||||
@@ -41,7 +41,7 @@ describe('createPlayer', () => {
|
||||
});
|
||||
|
||||
it('creates audio player with expected exports', () => {
|
||||
const result = createPlayer({ features: features.audio });
|
||||
const result = createPlayer({ features: audioFeatures });
|
||||
|
||||
expect(result.context).toBeDefined();
|
||||
expect(result.create).toBeInstanceOf(Function);
|
||||
@@ -51,7 +51,7 @@ describe('createPlayer', () => {
|
||||
});
|
||||
|
||||
it('creates background player with expected exports', () => {
|
||||
const result = createPlayer({ features: features.background });
|
||||
const result = createPlayer({ features: backgroundFeatures });
|
||||
|
||||
expect(result.context).toBeDefined();
|
||||
expect(result.create).toBeInstanceOf(Function);
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
export { audioFeatures } from '@videojs/core/dom';
|
||||
@@ -0,0 +1 @@
|
||||
export { backgroundFeatures } from '@videojs/core/dom';
|
||||
@@ -0,0 +1 @@
|
||||
export { videoFeatures } from '@videojs/core/dom';
|
||||
Reference in New Issue
Block a user