@glimmer/interfaces
Version:
Common interfaces shared among all @glimmer/\* projects
49 lines (40 loc) • 1.57 kB
TypeScript
import type { Arguments } from '../runtime.js';
import type { Capabilities } from './capabilities.js';
export interface ComponentCapabilitiesVersions {
'3.4': {
asyncLifecycleCallbacks?: boolean;
destructor?: boolean;
};
'3.13': {
asyncLifecycleCallbacks?: boolean;
destructor?: boolean;
updateHook?: boolean;
};
}
export interface ComponentCapabilities extends Capabilities {
asyncLifeCycleCallbacks: boolean;
destructor: boolean;
updateHook: boolean;
}
export interface ComponentManager<ComponentStateBucket> {
capabilities: ComponentCapabilities;
createComponent(factory: object, args: Arguments): ComponentStateBucket;
getContext(instance: ComponentStateBucket): unknown;
}
export interface ComponentManagerWithAsyncLifeCycleCallbacks<ComponentStateBucket>
extends ComponentManager<ComponentStateBucket> {
didCreateComponent(instance: ComponentStateBucket): void;
}
export interface ComponentManagerWithUpdateHook<ComponentStateBucket>
extends ComponentManager<ComponentStateBucket> {
updateComponent(instance: ComponentStateBucket, args: Arguments): void;
}
export interface ComponentManagerWithAsyncUpdateHook<ComponentStateBucket>
extends ComponentManagerWithAsyncLifeCycleCallbacks<ComponentStateBucket>,
ComponentManagerWithUpdateHook<ComponentStateBucket> {
didUpdateComponent(instance: ComponentStateBucket): void;
}
export interface ComponentManagerWithDestructors<ComponentStateBucket>
extends ComponentManager<ComponentStateBucket> {
destroyComponent(instance: ComponentStateBucket): void;
}