mirror of
https://github.com/zoriya/v10.git
synced 2026-08-16 02:45:09 +00:00
34 lines
1.3 KiB
TypeScript
34 lines
1.3 KiB
TypeScript
import { AnyStore } from "../core/store.js";
|
|
import { Context } from "@videojs/element/context";
|
|
import { ReactiveController, ReactiveControllerHost } from "@videojs/element";
|
|
//#region src/html/store-accessor.d.ts
|
|
type StoreSource<Store extends AnyStore> = Store | Context<unknown, Store>;
|
|
type StoreAccessorHost = ReactiveControllerHost & HTMLElement;
|
|
/**
|
|
* Resolves a store from either a direct instance or context.
|
|
*
|
|
* When given a direct store, provides immediate access.
|
|
* When given a context, sets up a ContextConsumer to receive the store.
|
|
*
|
|
* @example Direct store
|
|
* ```ts
|
|
* const accessor = new StoreAccessor(host, store, (s) => console.log('available', s));
|
|
* accessor.value; // Store (immediately available)
|
|
* ```
|
|
*
|
|
* @example Context source
|
|
* ```ts
|
|
* const accessor = new StoreAccessor(host, context, (s) => console.log('available', s));
|
|
* accessor.value; // null until context provides store
|
|
* ```
|
|
*/
|
|
declare class StoreAccessor<Store extends AnyStore> implements ReactiveController {
|
|
#private;
|
|
constructor(host: StoreAccessorHost, source: StoreSource<Store>, onAvailable?: (store: Store) => void);
|
|
/** Returns the store, or null if not yet available from context. */
|
|
get value(): Store | null;
|
|
hostConnected(): void;
|
|
}
|
|
//#endregion
|
|
export { StoreAccessor, StoreAccessorHost, StoreSource };
|
|
//# sourceMappingURL=store-accessor.d.ts.map
|