import Gtk from "gi://Gtk"; import type { PopoverConstraint, PositionType } from "../../../enums/gtk3-index"; import type { GjsContext } from "../../../reconciler/gjs-renderer"; import type { HostContext } from "../../../reconciler/host-context"; import { BaseElement, type GjsElement } from "../../gjs-element"; import { ElementLifecycleController } from "../../utils/element-extenders/element-lifecycle-controller"; import { EventHandlers } from "../../utils/element-extenders/event-handlers"; import type { DiffedProps } from "../../utils/element-extenders/map-properties"; import { PropertyMapper } from "../../utils/element-extenders/map-properties"; import type { AlignmentProps } from "../../utils/property-maps-factories/create-alignment-prop-mapper"; import type { ChildPropertiesProps } from "../../utils/property-maps-factories/create-child-props-mapper"; import type { ExpandProps } from "../../utils/property-maps-factories/create-expand-prop-mapper"; import type { MarginProps } from "../../utils/property-maps-factories/create-margin-prop-mapper"; import type { SizeRequestProps } from "../../utils/property-maps-factories/create-size-request-prop-mapper"; import type { StyleProps } from "../../utils/property-maps-factories/create-style-prop-mapper"; import { Bin } from "../../utils/widgets/bin"; import type { TextNode } from "../text-node"; import { PopoverContentElement } from "./popover-content"; import { PopoverTargetElement } from "./popover-target"; type PopoverPropsMixin = ChildPropertiesProps & SizeRequestProps & AlignmentProps & MarginProps & ExpandProps & StyleProps; export interface PopoverProps extends PopoverPropsMixin { isModal?: boolean; constraint?: PopoverConstraint; position?: PositionType; } export type PopoverInternalProps = { popoverWidget: Gtk.Popover; }; export declare class PopoverElement extends BaseElement implements GjsElement<"POPOVER", Bin> { static getContext(currentContext: HostContext): HostContext; readonly kind = "POPOVER"; protected widget: Bin; protected popover: Gtk.Popover; protected parent: GjsElement | null; readonly lifecycle: ElementLifecycleController; protected readonly handlers: EventHandlers; protected readonly propsMapper: PropertyMapper; protected hasContentChild: boolean; protected contentElement?: PopoverContentElement; protected hasTarget: boolean; protected targetElement?: PopoverTargetElement; constructor(props: DiffedProps); onContentChange(): void; onTargetChange(): void; updateProps(props: DiffedProps): void; appendChild(child: GjsElement | TextNode): void; insertBefore(newChild: GjsElement | TextNode): void; remove(parent: GjsElement): void; render(): void; notifyWillMountTo(parent: GjsElement): boolean; notifyMounted(): void; notifyChildWillUnmount(child: GjsElement): void; show(): void; hide(): void; getWidget(): Bin; getParentElement(): GjsElement | null; } export {};