@difizen/mana-core
Version:
57 lines • 2.66 kB
TypeScript
import type { Newable } from '@difizen/mana-common';
import { Emitter } from '@difizen/mana-common';
import { Deferred } from '@difizen/mana-common';
import { Disposable } from '@difizen/mana-common';
import type { Contribution } from '@difizen/mana-syringe';
import { DebugService } from '../common/debug';
import { ViewManager } from './view-manager';
import type { View } from './view-protocol';
import type { SlotPreference, ViewOpenOption } from './view-protocol';
import { SlotPreferenceContribution, SlotView } from './view-protocol';
interface ViewAddArgs {
view?: View;
slot: string;
option?: ViewOpenOption;
}
interface SlotSetArgs {
view?: View;
slot: string;
}
export declare class SlotViewManager {
protected preferences: Map<string, SlotPreference>;
protected componentPreferences: Map<string, SlotPreference>;
protected slotRenderingDeferred: Map<string, Deferred<void>>;
protected onViewAddedEmitter: Emitter<ViewAddArgs>;
protected onSlotChangedEmitter: Emitter<SlotSetArgs>;
get onViewAdded(): import("@difizen/mana-common").Event<ViewAddArgs>;
get onSlotChanged(): import("@difizen/mana-common").Event<SlotSetArgs>;
/**
* slot -> slotview
*/
slotViewMap: Map<string, View>;
/**
* view -> child slotview
*/
slotChildrenMap: Map<View, string[]>;
protected readonly preferenceProvider: Contribution.Provider<SlotPreferenceContribution>;
protected readonly debugService: DebugService;
protected readonly viewManager: ViewManager;
constructor(preferenceProvider: Contribution.Provider<SlotPreferenceContribution>, debugService: DebugService, viewManager: ViewManager);
protected setPreferencesFromContribution(): void;
protected getPreferences(): Map<string, SlotPreference>;
setSlotPreference(slot: string, preference: SlotPreference): void;
setComponentSlotPreference(slot: string, preference: SlotPreference): void;
protected waitSlotRendering(slot: string): Promise<void>;
slotRendering(slot: string): void;
getOrCreateSlotView(slot: string, defaultSlotView?: Newable<View>): Promise<SlotView | View>;
getSlotView(slot: string): View | undefined;
setSlotView(slot: string, view: View): Disposable;
addView(view: View, slot: string, option?: ViewOpenOption): Promise<void>;
removeView(view: View, slot: string): Promise<void>;
hasSlot(slot: string): boolean;
getSlotChildren(view: View): string[] | undefined;
addSlotToView(slot: string, slotView: SlotView): void;
removeSlotFromView(slot: string, slotView: SlotView): void;
}
export {};
//# sourceMappingURL=slot-view-manager.d.ts.map