import React from 'react'; import * as d3 from '../d3Modules'; import { Class_ApplicationData } from './ApplicationData'; import { FType_InitializeAdditionalMenus } from '../Modules'; import { ValueOptionType } from '../Elements/LinkValues'; import { Class_NodeBase } from '../Elements/NodeBase'; import { Class_LinkElement } from '../Elements/Link'; import { Class_BaseShape } from '../Elements/Element'; import { getNameLabelValues, NameLabelAttributeTypes } from '../Elements/ElementsAttributesConfig'; import type { Type_RatioFluxConstraint, Type_RatioStockFluxConstraint } from './Sankey'; export declare const default_file_name = "Diagramme de Sankey"; export declare const default_toast_duration: number; export declare const default_toast_waiting_delay: number; export declare const toast_bypass: boolean; import { const_default_position_x, const_default_position_y, default_style_id, randomId } from './elementBasics'; export { const_default_position_x, const_default_position_y, default_style_id, randomId, }; export type { Type_BaseElementPosition } from './elementBasics'; export type Type_Position = 'absolute' | 'relative' | 'parametric' | 'proportional' | 'scale_adapted'; /** * Mode d'écart vertical des enfants lors d'une opération structurelle * (désagrégation locale/globale, expansion latérale, englobement). * - 'fill' : remplir exactement le slot [haut, bas] du parent, écart égal * (comportement historique #1231 ; défaut, ne pousse aucun voisin). * - 'keep' : garder le Y courant des enfants (le x suit toujours la colonne du parent). * - 'children_dy' : empiler depuis le haut du parent, écart = shape_position_dy de chaque enfant. * - 'constant' : empiler depuis le haut du parent, écart constant donné par l'utilisateur * (DrawingArea.disaggregation_gap_value, défaut = default_style.shape_position_dy). */ export type Type_DisaggregationGap = 'fill' | 'keep' | 'children_dy' | 'constant'; /** * Define type properties for Sankey structure * @type Type_Structure */ export type Type_Structure = 'structure' | 'data' | 'data_label' | 'reconciled' | 'free_value' | 'free_interval'; export type Type_DataSource = 'structure' | 'data' | 'data_label' | 'reconciled'; export type Type_IntervalDisplay = 'structure' | 'free_value' | 'free_interval'; export type Type_MacroTagGroup = 'node_taggs' | 'flux_taggs' | 'data_taggs' | 'level_taggs' | 'view_taggs'; /** * Define type properties for Sankey JSON Saving format * @type Type_JSON */ export type Type_JSON = { [_: string]: boolean | number | string | string[] | Type_JSON; }; /** * Type d'entrée permissif pour les Viewers (cast safe vers Type_JSON en interne). * Accepte n'importe quel objet JSON conforme à la grammaire standard, * y compris arrays de nombres, null, structures imbriquées arbitraires. */ export type Type_AnyJSON = { [_: string]: unknown; }; export declare const default_main_sankey_id = "sankey_maitre"; export declare const default_style_name = "Style par d\u00E9faut"; export type Dict_templates_type = { [y: string]: { data: string[]; image: string[]; }; }; export type Templates_builder_type = { [y: string]: Dict_templates_type; }; export declare function makeId(name: string): string; export declare function getBooleanFromJSON(json_object: Type_JSON, key: string, fallback_value: boolean): boolean; export declare function getBooleanOrUndefinedFromJSON(json_object: Type_JSON, key: string): boolean | undefined; export declare function getNumberFromJSON(json_object: Type_JSON, key: string, fallback_value: number): number; export declare function getNumberOrUndefinedFromJSON(json_object: Type_JSON, key: string): number | undefined; export declare function getNumberOrNullFromJSON(json_object: Type_JSON, key: string): number | null; export declare function getStringFromJSON(json_object: Type_JSON, key: string, fallback_value: string): string; export declare function getStringOrUndefinedFromJSON(json_object: Type_JSON, key: string): string | undefined; export declare function getStringOrNullFromJSON(json_object: Type_JSON, key: string): string | null; export declare function getStringListFromJSON(json_object: Type_JSON, key: string, fallback_value: string[]): string[]; export declare function getStringListOrUndefinedFromJSON(json_object: Type_JSON, key: string): string[] | undefined; export declare function getJSONFromJSON(json_object: Type_JSON, key: string, fallback_value: Type_JSON): Type_JSON; export declare function getJSONOrUndefinedFromJSON(json_object: Type_JSON, key: string): Type_JSON | undefined; export declare const CutName: (t: string, n: number) => string; export declare const GetRandomInt: (max: number) => number; export declare const list_palette_color: (typeof d3.interpolateBlues)[]; export declare const parseLocaleNumber: (stringNumber: string, locale?: string) => number; export declare const WrapperInitializeAdditionalMenus: ({ new_data, initializeAdditionalMenus }: { new_data: Class_ApplicationData; initializeAdditionalMenus: FType_InitializeAdditionalMenus; }) => React.JSX.Element; /** * Function that check if url has an url variable & return it (null if there isn't one) * * @export * @return {*} */ export declare function checkForUrlToJSON(): string | null; export declare const formatValueWithOption: (element: Class_BaseShape, value: number | string, option: ValueOptionType, prefix: "name_label" | "value_label" | "stock_label") => string; /** * Contrainte de ratio dont le flux (source→destination) est le terme principal, * dans `sankey.ratio_flux_constraints` (#116). null s'il n'y en a pas. * Le data_tag de la contrainte (s'il est défini) doit matcher le tag courant du flux ; * la contrainte référence le data_tag par son nom (résolution par nom côté SEP) alors * que le flux porte un Class_DataTag, d'où le match sur le nom (ou l'id par robustesse). */ export declare const link_ratio_constraint: (link: Class_LinkElement) => Type_RatioFluxConstraint | null; /** * Contrainte « ratio stock flux » (#156) dont le flux (source→destination) est le terme * principal : `flux = coef × stock`, dans `sankey.ratio_stock_flux_constraints`. null * s'il n'y en a pas. Même logique de match que `link_ratio_constraint` (nom des nœuds + * data_tag par nom/id). */ export declare const link_ratio_stock_flux_constraint: (link: Class_LinkElement) => Type_RatioStockFluxConstraint | null; /** * Pourcentage formaté d'une contrainte : « 30% » (coef), « ≥30% »/« ≤50% », « 30–50% ». * `label_values` (réglages du label de valeur) gouverne les chiffres après la virgule. */ export declare const ratio_flux_coef_text: (c: { coef: number | null; min: number | null; max: number | null; }, label_values?: ReturnType) => string | null; /** * Libellé « coefficient » d'un flux contraint (#116) — le % prescrit de la contrainte. * NB : distinct de l'unit_type %IS/%OS de format_value, qui calcule la part RÉELLE des * données ; ici on lit le coefficient PRESCRIT. */ export declare const link_ratio_coef_label: (link: Class_LinkElement, label_values?: ReturnType) => string | null; /** * Traduction lisible par défaut d'une contrainte de ratio (#116), utilisée quand le * champ `traduction` est absent (au chargement, dans le tooltip et le tableur). * Ex : « Blé → Meunerie = 50% de Exploitation agricole → Blé », ou pour un agrégat * « Blé → Meunerie = 50% des sorties de Blé ». */ export declare const ratio_flux_constraint_traduction: (c: Type_RatioFluxConstraint) => string; export declare const link_data_label: (type_data: Type_Structure, link: Class_LinkElement, prefix: "name_label" | "value_label", opts?: { overrides?: Partial; with_coef?: boolean; }) => string; /** * OS#1314 — texte d'un label de flux construit par GABARIT à jetons * (`name_label_text_source === 'template'`). Les jetons sont interpolés à chaque * dessin ; un jeton inconnu est laissé tel quel. * * Convention de formatage : les jetons numériques utilisent les réglages du * label de VALEUR du flux (décimales, notation, unité) — c'est là que * l'utilisateur les règle — mais en forçant `is_visible` (le gabarit décide * seul de ce qu'il affiche) et en retirant l'unité, portée par `{Unit}`. */ export declare const link_template_label: (link: Class_LinkElement) => string; export declare const format_value: (data_type: Type_Structure, data_value: number | undefined | null, element: Class_LinkElement | Class_NodeBase, unit_name: string, prefix: "name_label" | "value_label" | "stock_label", overrides?: Partial) => string;