import type { Class_ApplicationData } from '../../../types/ApplicationData'; import type { Type_PopupGeometry } from '../../../types/PanelManager'; import { type Type_Composition } from '../../../types/PresentationComposition'; /** Composition par défaut d'un élément : l'équivalent de son info-bulle d'avant. */ export declare const defaultCompositionFor: (element: Type_Presentable) => Type_Composition; /** * Composition d'un élément pour l'INFO-BULLE : le patron imposé (blocs cochés dans * le sous-menu Info-bulle). Plus de composition libre — la pop-up, elle, a une * structure fixe (cf. PresentationPopup) et n'utilise pas cette liste. */ export declare const compositionOf: (element: Type_Presentable) => Type_Composition; export declare const MAX_PRESENTATION_POPUPS = 5; /** Vue structurelle minimale d'un élément présentable. */ export type Type_Presentable = { id: string; name?: string; getElementProperty: (k: string) => unknown; }; /** Id de panneau d'un élément, reconnaissable parmi les panneaux ouverts. */ export declare const presentationPanelId: (element_id: string) => string; /** Un id de panneau désigne-t-il une présentation d'élément ? */ export declare const isPresentationPanelId: (panel_id: string) => boolean; /** Id d'élément porté par un id de panneau de présentation. */ export declare const elementIdOfPanel: (panel_id: string) => string; /** * Le CLIC ouvre-t-il la présentation de l'élément cliqué ? * * LECTURE : oui — c'est le geste du lecteur, et la seule chose qu'il attende d'un * clic sur un élément. * * ÉDITION : NON. Le clic est le geste de TRAVAIL de l'auteur — sélectionner pour * régler, choisir avant de déplacer, cliquer pour poser le focus, enchaîner sur * plusieurs éléments : autant de raisons de cliquer sans vouloir qu'une pop-up * s'ouvre. L'auteur garde le chemin exact du lecteur par le SURVOL (déclencheur * réglé PAR ÉLÉMENT : survol nu, MAJ+survol par défaut, ou Alt+survol — * cf. matchesPresentationTrigger), qui, lui, ne coûte aucun geste d'édition. * * Politique isolée ici pour qu'elle se discute et se change en UN point, plutôt * qu'aux quatre coins des gestionnaires de clic (nœud, flux, stock, groupe). */ export declare const opensPresentationOnClick: (app_data: Class_ApplicationData) => boolean; /** * Ouvre la présentation d'un élément — geste de CLIC. Toujours en POP-UP * juxtaposée : la barre latérale est réservée aux menus (config/filtres/ * recherche), jamais aux éléments. La pop-up a une structure fixe, donc elle a * toujours de quoi s'afficher pour un élément réel — on l'ouvre sans condition. * * OS#321 — la pop-up obtenue est NON ÉPINGLÉE : elle se referme au prochain clic * posé ailleurs. Sélectionner les éléments un par un n'empile donc plus les * fenêtres, et l'épingle de l'en-tête reste là pour en garder une sous les yeux. * Renvoie `false` quand le clic n'a fait que REFERMER (bascule). */ export declare const openPresentationFor: (app_data: Class_ApplicationData, element: Type_Presentable, anchor?: { x: number; y: number; }) => boolean; /** * Pose une pop-up JUXTAPOSÉE au point d'ancrage (à sa droite), bornée dans la * fenêtre, puis décalée en escalier tant qu'elle recouvre une pop-up déjà * ouverte. Sans ancre, on retombe sur un placement centré. */ export declare const placePopupNear: (app_data: Class_ApplicationData, anchor: { x: number; y: number; } | undefined, except_id: string) => Type_PopupGeometry; /** Ferme la plus ANCIENNE pop-up de présentation quand le plafond est atteint. */ export declare const enforcePopupCap: (app_data: Class_ApplicationData, incoming_id: string) => void; /** L'événement de survol satisfait-il le déclencheur RÉGLÉ SUR L'ÉLÉMENT ? */ export declare const matchesPresentationTrigger: (element: Type_Presentable, event: { shiftKey?: boolean; altKey?: boolean; }) => boolean; /** L'élément a-t-il une présentation à montrer EN INFO-BULLE ? Permet de * retomber sur l'info-bulle historique quand l'auteur n'a rien composé. */ export declare const canPresentTooltip: (element: Type_Presentable) => boolean; /** * Au moins un bloc coché RENDRA-t-il quelque chose pour cet élément ? La * composition dit ce qui est coché ; chaque bloc, lui, rend `null` quand * l'élément n'a pas la donnée (texte libre vide, aucun flux, aucun tag). Une * zone de texte sans description n'a alors RIEN à montrer : ouvrir l'info-bulle * n'afficherait que le pis-aller « Rien à afficher pour cet élément » — autant * ne rien ouvrir du tout. */ export declare const tooltipWouldRenderSomething: (app_data: Class_ApplicationData, element: Type_Presentable) => boolean; /** Ouvre la présentation en INFO-BULLE — geste de SURVOL, seul contenant qu'il * ouvre (ajustement #4) — si elle a quelque chose à y montrer. */ export declare const openPresentationTooltip: (app_data: Class_ApplicationData, element: Type_Presentable, anchor: { x: number; y: number; }) => boolean; /** Survol d'un élément : programme l'ouverture après le délai PROPRE À L'ÉLÉMENT. */ export declare const schedulePresentationHover: (app_data: Class_ApplicationData, element: Type_Presentable, anchor: { x: number; y: number; }) => void; /** Le curseur quitte l'élément (ou l'info-bulle) : fermeture différée. */ export declare const schedulePresentationHoverClose: (app_data: Class_ApplicationData) => void; /** Le curseur revient (dans l'élément ou l'info-bulle) : on annule la fermeture. */ export declare const cancelPresentationHoverClose: () => void; /** Ferme IMMÉDIATEMENT l'info-bulle de présentation, s'il y en a une. Remplace * `TooltipEventManager.closeTooltip()` de l'ancien mécanisme (clic droit…). */ export declare const closePresentationTooltip: (app_data: Class_ApplicationData) => void; /** L'info-bulle est promue (épinglée) : elle cesse d'être transitoire. */ export declare const releasePresentationHover: () => void;