mirror of
https://github.com/zoriya/v10.git
synced 2026-08-16 02:45:09 +00:00
feat(site): add util reference pipeline (#537)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
c11395ece1
commit
78112fbefd
Vendored
+36
@@ -0,0 +1,36 @@
|
||||
interface MediaState {
|
||||
playing: boolean;
|
||||
volume: number;
|
||||
currentTime: number;
|
||||
duration: number;
|
||||
buffered: number;
|
||||
fullscreen: boolean;
|
||||
}
|
||||
|
||||
interface PlaybackState {
|
||||
playing: boolean;
|
||||
}
|
||||
|
||||
interface VolumeState {
|
||||
volume: number;
|
||||
}
|
||||
|
||||
interface TimeState {
|
||||
currentTime: number;
|
||||
duration: number;
|
||||
}
|
||||
|
||||
/** Select playback state from media state. */
|
||||
export function selectPlayback(state: MediaState): PlaybackState {
|
||||
return { playing: state.playing };
|
||||
}
|
||||
|
||||
/** Select volume state from media state. */
|
||||
export function selectVolume(state: MediaState): VolumeState {
|
||||
return { volume: state.volume };
|
||||
}
|
||||
|
||||
/** Select time state from media state. */
|
||||
export function selectTime(state: MediaState): TimeState {
|
||||
return { currentTime: state.currentTime, duration: state.duration };
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
export { playerContext } from './player/context';
|
||||
export { createPlayer } from './player/create-player';
|
||||
export { PlayerController } from './player/player-controller';
|
||||
export { createContainerMixin } from './store/container-mixin';
|
||||
Vendored
+9
@@ -0,0 +1,9 @@
|
||||
interface PlayerContext {
|
||||
readonly player: unknown;
|
||||
}
|
||||
|
||||
/**
|
||||
* The player context for dependency injection.
|
||||
* @public
|
||||
*/
|
||||
export const playerContext: PlayerContext = { player: null };
|
||||
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
interface HtmlPlayerInstance {
|
||||
play(): void;
|
||||
destroy(): void;
|
||||
}
|
||||
|
||||
interface HtmlPlayerOptions {
|
||||
element: HTMLElement;
|
||||
}
|
||||
|
||||
/** Create an HTML player instance. */
|
||||
export function createPlayer(options: HtmlPlayerOptions): HtmlPlayerInstance {
|
||||
return {} as HtmlPlayerInstance;
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
interface ReactiveControllerHost {
|
||||
addController(controller: ReactiveController): void;
|
||||
requestUpdate(): void;
|
||||
}
|
||||
|
||||
interface ReactiveController {
|
||||
hostConnected?(): void;
|
||||
hostDisconnected?(): void;
|
||||
}
|
||||
|
||||
/** Manages the video player lifecycle. */
|
||||
export class PlayerController implements ReactiveController {
|
||||
#host: ReactiveControllerHost;
|
||||
|
||||
constructor(host: ReactiveControllerHost) {
|
||||
this.#host = host;
|
||||
}
|
||||
|
||||
/** Whether the player is ready. */
|
||||
get ready(): boolean {
|
||||
return false;
|
||||
}
|
||||
|
||||
hostConnected(): void {}
|
||||
hostDisconnected(): void {}
|
||||
}
|
||||
site/scripts/api-docs-builder/src/tests/fixtures/monorepo/packages/html/src/store/container-mixin.ts
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
type Constructor<T = object> = new (...args: any[]) => T;
|
||||
|
||||
interface ContainerHost {
|
||||
connectedCallback(): void;
|
||||
}
|
||||
|
||||
/** Create a mixin that provides store container behavior. */
|
||||
export function createContainerMixin<T extends Constructor<ContainerHost>>(Base: T): T {
|
||||
return Base;
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
export { usePlayer } from './player/context';
|
||||
export { createPlayer } from './player/create-player';
|
||||
export { mergeProps } from './utils/merge-props';
|
||||
export { useFormat } from './utils/use-format';
|
||||
Vendored
+16
@@ -0,0 +1,16 @@
|
||||
interface PlayerStore {
|
||||
playing: boolean;
|
||||
volume: number;
|
||||
}
|
||||
|
||||
interface StoreState {
|
||||
playing: boolean;
|
||||
volume: number;
|
||||
}
|
||||
|
||||
/** Access the player store or select state from it. */
|
||||
export function usePlayer(): PlayerStore;
|
||||
export function usePlayer<R>(selector: (state: StoreState) => R): R;
|
||||
export function usePlayer<R>(selector?: (state: StoreState) => R): PlayerStore | R {
|
||||
return {} as PlayerStore | R;
|
||||
}
|
||||
site/scripts/api-docs-builder/src/tests/fixtures/monorepo/packages/react/src/player/create-player.ts
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
interface PlayerInstance {
|
||||
play(): void;
|
||||
pause(): void;
|
||||
}
|
||||
|
||||
interface PlayerOptions {
|
||||
autoplay?: boolean;
|
||||
}
|
||||
|
||||
/** Create a React player instance. */
|
||||
export function createPlayer(options?: PlayerOptions): PlayerInstance {
|
||||
return {} as PlayerInstance;
|
||||
}
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
/** @public Merge multiple prop objects into one. */
|
||||
export function mergeProps<T extends Record<string, unknown>>(...args: T[]): T {
|
||||
return Object.assign({}, ...args) as T;
|
||||
}
|
||||
Vendored
+9
@@ -0,0 +1,9 @@
|
||||
/** Format a value for display. */
|
||||
|
||||
/** @label Number */
|
||||
export function useFormat(value: number): string;
|
||||
/** @label String */
|
||||
export function useFormat(value: string): string;
|
||||
export function useFormat(value: number | string): string {
|
||||
return String(value);
|
||||
}
|
||||
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
interface Store<S> {
|
||||
getState(): S;
|
||||
}
|
||||
|
||||
type SelectorFn<S, R> = (state: S) => R;
|
||||
|
||||
/** Create a memoized selector function. */
|
||||
export function createSelector<S, R>(fn: SelectorFn<S, R>): SelectorFn<S, R> {
|
||||
return fn;
|
||||
}
|
||||
+1
@@ -0,0 +1 @@
|
||||
export { SnapshotController } from './snapshot-controller';
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
interface ReactiveControllerHost {
|
||||
addController(controller: ReactiveController): void;
|
||||
requestUpdate(): void;
|
||||
}
|
||||
|
||||
interface ReactiveController {
|
||||
hostConnected?(): void;
|
||||
hostDisconnected?(): void;
|
||||
}
|
||||
|
||||
interface Store<S> {
|
||||
getState(): S;
|
||||
}
|
||||
|
||||
/** Takes a snapshot of store state. */
|
||||
export class SnapshotController<S, R = S> implements ReactiveController {
|
||||
#host: ReactiveControllerHost;
|
||||
|
||||
/**
|
||||
* @param host - The host element.
|
||||
* @param state - The store to snapshot.
|
||||
* @param selector - Derives a value from state.
|
||||
*/
|
||||
constructor(host: ReactiveControllerHost, state: Store<S>, selector: (state: S) => R);
|
||||
/**
|
||||
* @param host - The host element.
|
||||
* @param state - The store to snapshot.
|
||||
*/
|
||||
constructor(host: ReactiveControllerHost, state: Store<S>);
|
||||
constructor(host: ReactiveControllerHost, state: Store<S>, selector?: (state: S) => R) {
|
||||
this.#host = host;
|
||||
}
|
||||
|
||||
/** The current snapshot value. */
|
||||
get value(): R {
|
||||
return {} as R;
|
||||
}
|
||||
|
||||
/** Track state changes. */
|
||||
track(): void {}
|
||||
|
||||
hostConnected(): void {}
|
||||
hostDisconnected(): void {}
|
||||
}
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
export { useStore } from './use-store';
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
interface Store<S> {
|
||||
getState(): S;
|
||||
}
|
||||
|
||||
/** Subscribe to a store. */
|
||||
export function useStore<S>(store: Store<S>): S;
|
||||
export function useStore<S, R>(store: Store<S>, selector: (state: S) => R): R;
|
||||
export function useStore<S, R>(store: Store<S>, selector?: (state: S) => R): S | R {
|
||||
return {} as S | R;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "ES2022",
|
||||
"lib": ["ES2022"],
|
||||
"module": "ESNext",
|
||||
"moduleResolution": "bundler",
|
||||
"strict": true,
|
||||
"declaration": true,
|
||||
"skipLibCheck": true,
|
||||
"isolatedModules": true,
|
||||
"verbatimModuleSyntax": true
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user