import type { NodePositioning } from './NodePositioning'; export declare class NodePositioningAutoSankey { private readonly np; constructor(np: NodePositioning); /** Raccourci pour que les corps deplaces gardent `this.drawingArea` tel quel. */ private get drawingArea(); /** * Version améliorée de computeAutoSankey qui corrige le positionnement * en gardant la logique existante */ computeAutoSankey(launched_from_process: boolean, optimize_crossing: boolean, h_spacing?: number, v_spacing?: number, sources_mode?: 'before_neighbor' | 'left_extremity', sinks_mode?: 'after_neighbor' | 'right_extremity', skip_horizontal?: boolean, skip_vertical?: boolean, apply_target_fonts?: boolean): void; /** Le mode papier n'impose une cible de placement que si un format est choisi. */ private isPaperMode; /** * Page de REFERENCE sur laquelle l'auto-layout repartit colonnes et lignes, en mode papier. * * Deliberement INDEPENDANTE du contenu : `drawing_area.width/height` derive desormais de la * bbox du diagramme (applyPaperDimensions = guide au ratio), donc s'en servir comme cible * ferait dependre le placement du placement precedent — relancer la disposition automatique * deux fois ne convergeait pas. * * Seul le RATIO du format compte, a surface A4 constante : A3/A4/A5 partagent 1:V2 et donnent * donc le meme placement. Seule l'ORIENTATION le change. Les vrais millimetres restent * l'affaire de l'export (getPaperDimensionsMm). */ private paperLayoutTarget; computeScale(): void; /** * Calcul des positions finales (extrait de la logique existante) */ private computeFinalPositions; /** * Adjust positioning for nodes that have no input links * @private */ private adjustNodesWithoutInputs; /** * Compact horizontal indexes to start from 0 and remove gaps * @private */ private compactHorizontalIndexes; /** * Position nodes based on computed horizontal indexes * @private */ private positionNodesFromIndexes; /** * Compute margins for node labels * @private */ private computeMargins; /** * Positionne le label des nœuds en fonction de leur connectivité, via les * styles d'extrémité (NodeLeftExtremityStyle / NodeRightExtremityStyle). * Les nœuds centraux et lone ne reçoivent aucun style ni mutation d'attribut. * Si l'utilisateur a déjà personnalisé name_label_horiz / name_label_vert * localement, le style n'est pas (ré)appliqué pour préserver l'override. * @private */ private setNodeLabelPositioning; /** * Version simplifiée de updateNodesPositions sans la logique de croisements */ private updateNodesPositionsY; /** * Auto-compute sankey with waiting toast */ computeAutoSankeyWithToast(launched_from_process: boolean, optimize_crossing: boolean, h_spacing?: number, v_spacing?: number, sources_mode?: 'before_neighbor' | 'left_extremity', sinks_mode?: 'after_neighbor' | 'right_extremity', skip_horizontal?: boolean, skip_vertical?: boolean, apply_target_fonts?: boolean): void; /** * Calcule automatiquement la valeur de shape_middle_recycling pour que le flux * de recyclage passe sous les nœuds à gauche du nœud source (mais pas ceux qui * sont dessous et non connectés) */ private computeRecyclingMiddleShape; }