import { CwaResourceTypes } from '#cwa/resources/resource-utils'; import type { Resources } from '#cwa/resources/resources'; import type { ComponentUi, ManagerTab } from '#cwa/types'; import type { App, ComputedRef, Ref } from 'vue'; import type { AdminStore } from '../storage/stores/admin/admin-store.js'; import type { ResourcesStore } from '../storage/stores/resources/resources-store.js'; import type { ManageableResourceOps, StyleOptions } from './manageable-resource.js'; interface _ResourceStackItem { iri: string; domElements: Ref; displayName?: string; managerTabs?: ManagerTab[]; ui?: ComponentUi[]; childIris: Ref; styles?: ComputedRef; resourceOps?: ManageableResourceOps; } export type ResourceStackItem = _ResourceStackItem; interface AddToStackWindowEvent { clickTarget: EventTarget | null; } interface AddToStackEvent extends _ResourceStackItem, AddToStackWindowEvent { } export interface AddResourceEvent { addAfter: boolean | null; targetIri: string; closest: { position?: string; group?: string; }; pageDataProperty?: string; } export default class ResourceStackManager { private adminStoreDefinition; private readonly resourcesStoreDefinition; private readonly resources; private readonly vueApp; readonly forcePublishedVersion: Ref; readonly showManager: Ref; private readonly isLayoutStack; private readonly _isEditingLayout; private readonly currentClickTarget; private readonly currentResourceStack; private readonly previousResourceStack; private readonly lastContextTarget; private readonly contextResourceStack; private readonly cachedCurrentStackItem; private readonly resourceManagerState; private readonly yOffset; private focusComponent; private focusWrapper; private focusProxy; private focusGeneration; private isModuleSelect; private focusDomElements; private _currentStackItem; private _currentIri; private readonly _adminStore; private readonly _resourcesStore; constructor(adminStoreDefinition: AdminStore, resourcesStoreDefinition: ResourcesStore, resources: Resources, vueApp: App); private handleCurrentStackItemChange; get isEditingLayout(): Ref; getState(prop: string): any; setState(prop: string, value: any): void; get contextStack(): ComputedRef<_ResourceStackItem[]>; get resourceStack(): ComputedRef<_ResourceStackItem[]>; get isPopulating(): ComputedRef; get isContextPopulating(): ComputedRef; get currentStackItem(): ComputedRef<_ResourceStackItem | undefined>; get currentIri(): ComputedRef; resetStack(clearContextStack?: boolean): void; getClosestStackItemByType(type: CwaResourceTypes): string | undefined; restorePreviousStack(): void; private confirmStackChange; selectStackIndex(index: number, fromContext: boolean): Promise; private getCurrentTarget; private hasActiveTextSelection; completeStack(event: AddToStackWindowEvent, isContext?: boolean, type?: undefined | 'page' | 'layout'): void; addToStack(event: AddToStackEvent, isContext?: boolean, resourceOps?: ManageableResourceOps): void; selectFromModule(dispatchClick: () => void): void; private _addToStack; private finishStack; isComponentGroupDisabled(iri: string, location?: string): boolean; private filterDisabledStackItems; private getCurrentStack; private insertResourceStackItem; redrawFocus(): void; refreshFocusForIri(iri: string, domElements: Ref): void; private createFocusComponent; private removeFocusComponent; private scrollIntoView; private isElementOutsideViewport; private listenEditModeChange; private listenCurrentIri; private resetResourceManagerVars; private isResourceInStack; private get isEditing(); private get adminStore(); private get resourcesStore(); } export {};