Files
v10/dist/dev/html/store-accessor.d.ts
T

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