/** Mesure la largeur rendue d'une chaîne, dans la même unité que `box_width`. */ export type Type_TextMeasure = (text: string) => number; export type Type_LabelFitPlan = { /** true = le libellé peut être dessiné (au regard du seul critère de place). */ name: boolean; /** true = la valeur peut être dessinée (au regard du seul critère de place). */ value: boolean; }; /** * Nombre de lignes qu'occupera un texte une fois replié dans une boîte de largeur `box_width`. * Repli glouton par mots — même stratégie que d3-textwrap, qui pose le rendu réel. * * Cas particuliers volontaires : * - texte vide => 0 ligne (rien à dessiner, donc rien à réserver) ; * - `box_width` <= 0 (pas de contrainte de largeur) => 1 ligne ; * - mot unique plus large que la boîte et `break_long_words` faux => 1 ligne qui déborde * latéralement (c'est le rendu actuel : sans espace, d3-textwrap ne replie pas). */ export declare function countWrappedLines(text: string, box_width: number, measure: Type_TextMeasure, break_long_words?: boolean): number; /** Une étiquette vue par la règle : la hauteur qu'elle prendrait, et son opt-in à l'élagage. */ export type Type_LabelFitCandidate = { /** hauteur qu'occuperait l'étiquette si elle était dessinée (0 = rien à dessiner) */ required: number; /** attribut `prune_if_unfitting` de CETTE étiquette : false => jamais élaguée */ prune: boolean; }; /** * Décide, pour UN élément, ce qui tient dans sa hauteur : le libellé d'abord, la valeur ensuite. * * @param available_height hauteur rendue de l'élément (repère local du diagramme) * @param name libellé de l'élément * @param value valeur de l'élément * * L'opt-in est PAR ÉTIQUETTE (attribut `prune_if_unfitting`), ce qui donne trois nuances : * - une étiquette dont l'attribut est décoché n'est jamais élaguée — mais si elle est dessinée, * elle occupe quand même sa hauteur, donc elle prive l'autre de la place correspondante ; * - une hauteur requise nulle vaut « rien à placer » : réponse `true`, aucune contrainte * ajoutée (les autres portes d'affichage tranchent déjà le cas) ; * - un libellé qui est élagué faute de place emporte la valeur avec lui (point 3 de la règle) — * afficher un nombre seul à la place du nom d'un élément n'aiderait pas à lire le diagramme. * Sauf si la valeur, elle, a explicitement renoncé à l'élagage : son affichage est alors un * choix assumé de l'utilisateur, que la règle ne défait pas. */ export declare function computeLabelFitPlan(available_height: number, name: Type_LabelFitCandidate, value: Type_LabelFitCandidate): Type_LabelFitPlan;