import type { IStore } from "../../store"; import type { IPlayerControlsRef } from "../../types"; /** * Если смотреть по порядку расположения типов, то чем дальше тип, тем выше у него zIndex. * * over_video - слот будет находиться над видео; * over_controls - слот будет находиться над контролами, но под меню настроек. */ export type SlotOverlay = "over_video" | "over_controls"; export declare const SLOT_NAME = "annotation"; export type HideControlsWhenIntersectedOptions = { observedSlotElementId: string; controlsToObserve: (keyof IPlayerControlsRef)[]; }; type AddOptions = { id: string; overlay: SlotOverlay; hideAllControls?: boolean; controlsBehaviour?: HideControlsWhenIntersectedOptions; }; type AddReturnType = { success: true; } | { success: false; message: string; }; export declare class SlotsApi { private shadowRootContainer; private slots; private store; private disabledIds; constructor(disabledIds: string[]); init(shadowRootContainer: HTMLElement, store: IStore | undefined): void; add(elementParam: HTMLElement | (() => HTMLElement), options: AddOptions): AddReturnType; private setupSlotStyles; /** * Запускаем отслеживание пересечения между переданным элементом внутри слота и контролами. */ private runHidingControlsWhenIntersected; /** * Ищем внутри рутового элемента слота элемент, с которым хотим отслеживать пересечение контролов. * Приходится делать через mutationObserver, так как данный элемент в силу асинхронной работы внешнего * фреймворка может появиться позже. * @param slotRootElement Рутовый элемент слота. * @param slotElementId Идентификатор элемента внутри слота, с которым хотим отслеживать пересечение контролов. * @param slotId Идентификатор слота. */ private findSlotElement; remove(id: string): void; destroy(): void; haveSlots(): boolean; } export {};