@esfaenza/flow-builder 20.3.5 → 20.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { InjectionToken, AfterViewChecked } from '@angular/core';
2
+ import { InjectionToken, Signal, AfterViewChecked } from '@angular/core';
3
3
  import * as _esfaenza_flow_builder from '@esfaenza/flow-builder';
4
4
  import { EFMarkerType, EFConnectableSide } from '@foblex/flow';
5
5
 
@@ -1665,141 +1665,6 @@ declare const SEVERITY_LABEL: Record<FlowSeverityBucket, string>;
1665
1665
  */
1666
1666
  declare const SEVERITY_ICON: Record<FlowSeverityBucket, string>;
1667
1667
 
1668
- /** Un node come lo vede l'editor: il node piu' da dove viene. */
1669
- interface FlowNodeRef {
1670
- name: string;
1671
- type: FlowElementType;
1672
- collection: FlowNodeCollection;
1673
- index: number;
1674
- node: FlowAnyNode;
1675
- }
1676
- /** Un arco derivato dal documento, con la sua origine precisa. */
1677
- interface FlowEdge {
1678
- /** Id stabile: `<sorgente>|<chiave uscita>`. */
1679
- id: string;
1680
- /** `$start` per gli archi uscenti dallo Start. */
1681
- from: string;
1682
- /** `undefined` → il connector esiste ma non ha destinazione: ramo incompleto (§6.4). */
1683
- to?: string;
1684
- outletKey: string;
1685
- kind: FlowConnectionKind;
1686
- label?: string | null;
1687
- isGoTo?: boolean;
1688
- }
1689
- /** Una risorsa come la vede l'editor. */
1690
- interface FlowResourceRef {
1691
- name: string;
1692
- collection: FlowResourceCollection;
1693
- index: number;
1694
- resource: Record<string, unknown>;
1695
- }
1696
- /** Documento minimo per un flow nuovo (§11, "Creare un flow"). */
1697
- declare function emptyFlowDefinition(fullName: string, label: string, processType: string): FlowDefinition;
1698
- declare class FlowDocumentStore {
1699
- private readonly _document;
1700
- private readonly _isDirty;
1701
- private readonly _undoStack;
1702
- private readonly _redoStack;
1703
- /** Il documento in lavorazione. Sola lettura: si modifica con i metodi di questo store. */
1704
- readonly document: _angular_core.Signal<FlowDefinition>;
1705
- readonly isDirty: _angular_core.Signal<boolean>;
1706
- readonly canUndo: _angular_core.Signal<boolean>;
1707
- readonly canRedo: _angular_core.Signal<boolean>;
1708
- /** §3.4 — l'elemento Start: array di uno, usa sempre il primo. */
1709
- readonly start: _angular_core.Signal<FlowStart>;
1710
- /** §3.1 — tutte le collection appiattite in un'unica lista di node. */
1711
- readonly nodes: _angular_core.Signal<FlowNodeRef[]>;
1712
- readonly nodeByName: _angular_core.Signal<Map<string, FlowNodeRef>>;
1713
- readonly resources: _angular_core.Signal<FlowResourceRef[]>;
1714
- /**
1715
- * §3.3 — l'insieme dei nomi già usati: node, risorse **e** step di orchestrazione, un unico
1716
- * spazio di nomi. Il controllo di unicita' che guarda solo le variabili lascia passare una
1717
- * variabile omonima di un node (§13.5); quello che dimentica gli step lascia passare uno
1718
- * step omonimo di una variabile, che e' `NAME_DUPLICATED` allo stesso modo (§5.13).
1719
- */
1720
- readonly usedNames: _angular_core.Signal<string[]>;
1721
- /** Gli archi derivati dal documento, Start incluso. */
1722
- readonly edges: _angular_core.Signal<FlowEdge[]>;
1723
- /**
1724
- * Raggiungibilita' calcolata localmente, per un feedback immediato mentre si disegna.
1725
- * La fonte autoritativa resta `isReachable` di `POST /flows/outline` (§6.4): questa e'
1726
- * un'anticipazione, non un sostituto.
1727
- */
1728
- readonly reachableNames: _angular_core.Signal<ReadonlySet<string>>;
1729
- /** Carica un documento dal backend: azzera storico e flag di modifica. */
1730
- load(definition: FlowDefinition): void;
1731
- /** Dopo un salvataggio riuscito: il documento resta, la modifica non e' piu' pendente. */
1732
- markSaved(): void;
1733
- /**
1734
- * Applica una modifica al documento.
1735
- * Il mutatore riceve una **copia** e la modifica liberamente; lo store si occupa di
1736
- * storico e di sostituire il riferimento (nuovo oggetto → i signal derivati ricalcolano).
1737
- */
1738
- update(mutate: (draft: FlowDefinition) => void, options?: {
1739
- silent?: boolean;
1740
- }): void;
1741
- private pushHistory;
1742
- undo(): void;
1743
- redo(): void;
1744
- /** Inserisce un node nella collection indicata dal dizionario (`metadataProperty`). */
1745
- addNode(collection: FlowNodeCollection, node: FlowAnyNode): void;
1746
- /** Modifica un node per nome. Il mutatore riceve la copia di lavoro. */
1747
- updateNode(name: string, mutate: (node: FlowAnyNode) => void, options?: {
1748
- silent?: boolean;
1749
- }): void;
1750
- /** Modifica lo Start. */
1751
- updateStart(mutate: (start: FlowStart) => void, options?: {
1752
- silent?: boolean;
1753
- }): void;
1754
- /**
1755
- * Sposta un node sul canvas. `silent` per non riempire lo storico durante il drag:
1756
- * il chiamante registra un solo passo alla fine del gesto.
1757
- */
1758
- moveNode(name: string, x: number, y: number, options?: {
1759
- silent?: boolean;
1760
- }): void;
1761
- /**
1762
- * Rimuove un node **e** ogni connector che lo referenzia: un `targetReference` orfano
1763
- * e' `CONNECTOR_TARGET_UNKNOWN`, cioe' un errore che blocca l'attivazione (§7).
1764
- */
1765
- removeNode(name: string): void;
1766
- /** Azzera i connector che puntano a un node scomparso, Start compreso. */
1767
- private static clearReferencesTo;
1768
- /**
1769
- * Rinomina un node riscrivendo **tutti** i riferimenti che lo raggiungono.
1770
- * Nessuna primitiva del backend lo fa (§13.8): se l'editor offre la rinomina, la
1771
- * riscrittura la deve fare lui. Copre `targetReference`, i riferimenti a risorsa e i
1772
- * riferimenti a output automatico (`Vecchio.Campo` → `Nuovo.Campo`).
1773
- */
1774
- renameNode(oldName: string, newName: string): void;
1775
- /** Rinomina una risorsa, riscrivendo i riferimenti che la usano. */
1776
- renameResource(collection: FlowResourceCollection, index: number, newName: string): void;
1777
- /**
1778
- * Riscrive ogni occorrenza di un nome nei campi che contengono riferimenti.
1779
- * Cammina l'intero documento: e' l'unico modo per non dimenticare un campo, dato che
1780
- * i riferimenti compaiono in una ventina di posti diversi (§4).
1781
- */
1782
- private static rewriteReferences;
1783
- /** Duplica un node con un nome nuovo, senza copiarne le uscite. */
1784
- duplicateNode(name: string, newName: string, offset?: {
1785
- x: number;
1786
- y: number;
1787
- }): void;
1788
- /** Scrive la destinazione di un'uscita. `target` assente → il ramo resta incompleto. */
1789
- setConnector(fromName: string, outletKey: string, target: string | undefined, isGoTo?: boolean): void;
1790
- /** Rimuove un arco: il percorso finisce lì, che e' legittimo (§3.5). */
1791
- removeConnector(fromName: string, outletKey: string): void;
1792
- addResource(collection: FlowResourceCollection, resource: Record<string, unknown>): void;
1793
- updateResource(collection: FlowResourceCollection, index: number, mutate: (resource: Record<string, unknown>) => void): void;
1794
- removeResource(collection: FlowResourceCollection, index: number): void;
1795
- /** Modifica i campi del documento radice (label, description, processType, …). */
1796
- updateHeader(mutate: (definition: FlowDefinition) => void, options?: {
1797
- silent?: boolean;
1798
- }): void;
1799
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlowDocumentStore, never>;
1800
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<FlowDocumentStore>;
1801
- }
1802
-
1803
1668
  declare class FlowDictionaryStore {
1804
1669
  private readonly api;
1805
1670
  private readonly _dictionaries;
@@ -1988,6 +1853,313 @@ declare class FlowCatalogStore {
1988
1853
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<FlowCatalogStore>;
1989
1854
  }
1990
1855
 
1856
+ /**
1857
+ * Navigazione dei percorsi puntati — FRONTEND.md §4.4, §4.7, §4.7.1, §5.2, §5.7.
1858
+ *
1859
+ * La specifica e' cambiata su questo punto: i percorsi con il punto **si verificano**. Un percorso
1860
+ * di relazione (`Cliente.Citta`) si naviga un segmento alla volta e l'ultimo si verifica come un
1861
+ * campo semplice; dentro un'istanza di classe i membri annidati (`Richiesta.Cliente.Nome`) si
1862
+ * verificano **fino in fondo**, seguendo `objectType` di classe in classe e passando ai campi
1863
+ * dello schema quando il membro porta un record. Dove la catena si interrompe il rilievo e'
1864
+ * l'avviso `PATH_NOT_VERIFIABLE`, che significa "non lo so" e non "sbagliato".
1865
+ *
1866
+ * Perche' sta qui e non in tre pickers: la catena e' la stessa per campi e membri — cambiano solo
1867
+ * la primitiva che descrive la tappa (`listFields` contro `describeStructure`) e le parole
1868
+ * dell'avviso. Tenerla in un posto solo e' anche il modo di non far divergere l'editor dal
1869
+ * validatore, che naviga la stessa catena.
1870
+ *
1871
+ * Le due cose da non confondere:
1872
+ *
1873
+ * - **`objectType` di un membro** porta il nome di una classe se il membro e' `Structure`, il nome
1874
+ * di un'**entita' dello schema** se il membro e' `Object` — e da lì in poi si continua con i
1875
+ * campi, non con i membri (§4.7.1). Un `Enum` non e' un contenitore: `objectType` lì e' un tipo
1876
+ * di enumerazione e il percorso finisce.
1877
+ * - **scrivibile** non vuol dire la stessa cosa nei due mondi: un membro porta il proprio
1878
+ * `isWritable`, un campo no — fuori da un Create o da un Update il contesto non c'e', quindi
1879
+ * basta che sia `isCreateable` **oppure** `isUpdateable`, e un campo che non e' ne' l'uno ne'
1880
+ * l'altro e' `TARGET_NOT_WRITABLE` in qualunque contesto (§5.7).
1881
+ */
1882
+
1883
+ /** Una tappa navigabile: un'entita' dello schema, oppure una classe (§4.7). */
1884
+ type PathContainerKind = 'object' | 'structure';
1885
+ interface PathContainer {
1886
+ kind: PathContainerKind;
1887
+ /** Nome dell'entita' o della classe. */
1888
+ name: string;
1889
+ }
1890
+ /**
1891
+ * Un segmento proponibile in una tappa — campo o membro ridotti al minimo comune, perche' chi
1892
+ * naviga non deve sapere quale dei due sta guardando.
1893
+ */
1894
+ interface PathEntry {
1895
+ name: string;
1896
+ label?: string | null;
1897
+ description?: string | null;
1898
+ dataType?: FlowDataType;
1899
+ objectType?: string | null;
1900
+ isCollection?: boolean;
1901
+ /** Scrivibile come destinazione: `isWritable` per un membro, `createable || updateable` per un campo. */
1902
+ isWritable: boolean;
1903
+ /** Dove il percorso continua dopo questo segmento; assente = qui finisce cio' che si sa. */
1904
+ next?: PathContainer;
1905
+ }
1906
+ /**
1907
+ * Esito della descrizione di una tappa. Sono quattro come per le classi (§4.7.1) e vanno tenuti
1908
+ * distinti: solo `declared` autorizza a dire che un segmento non esiste.
1909
+ */
1910
+ type PathLevelStatus = 'declared' | 'undeclared' | 'unknown-container' | 'unknown-catalog';
1911
+ interface PathLevel {
1912
+ container: PathContainer;
1913
+ status: PathLevelStatus;
1914
+ entries: PathEntry[];
1915
+ /** L'etichetta della tappa, quando la descrizione la porta (l'involucro della §4.7.1). */
1916
+ label?: string | null;
1917
+ }
1918
+ /**
1919
+ * Cio' che serve per navigare: le due primitive di catalogo. {@link FlowCatalogStore} la soddisfa
1920
+ * per forma, e prenderla come parametro tiene questo modulo verificabile senza un'iniezione.
1921
+ */
1922
+ interface PathCatalog {
1923
+ listFields(object: string, usage?: FlowFieldUsage): Promise<FlowFieldDescription[]>;
1924
+ describeStructure(className: string): Promise<FlowStructureDescribed>;
1925
+ }
1926
+ /**
1927
+ * Perche' la navigazione si e' fermata. `unknown-segment` e' l'unico che accusa qualcuno: gli altri
1928
+ * sono `PATH_NOT_VERIFIABLE`, cioe' "non lo so".
1929
+ */
1930
+ type PathStopReason = 'unknown-segment'
1931
+ /** Il segmento non dichiara dove continuare: nessun `objectType`, o un tipo che non e' un contenitore. */
1932
+ | 'no-object-type'
1933
+ /** Dentro una collection non si naviga: il percorso designa l'insieme, non un elemento. */
1934
+ | 'collection'
1935
+ /** Tappa valida di cui campi o membri non sono dichiarati: si digita, non si accusa. */
1936
+ | 'undeclared'
1937
+ /** Classe non registrata (404): l'errore sta sulla classe, non sul percorso. */
1938
+ | 'unknown-container'
1939
+ /** Catalogo assente o richiesta fallita: non dice niente sulla tappa. */
1940
+ | 'unknown-catalog';
1941
+ interface PathResolution {
1942
+ root: PathContainer;
1943
+ /** Il percorso come e' stato scritto, ripulito dagli spazi. */
1944
+ path: string;
1945
+ segments: string[];
1946
+ /** Le tappe attraversate, nell'ordine. L'ultima e' quella dove la navigazione si e' fermata. */
1947
+ levels: PathLevel[];
1948
+ /** I segmenti risolti, uno per tappa attraversata. */
1949
+ resolved: PathEntry[];
1950
+ /**
1951
+ * - `empty`: non c'e' ancora un ultimo segmento da verificare (percorso vuoto, o appena aperto
1952
+ * con il punto): niente da segnalare, ma c'e' da proporre;
1953
+ * - `resolved`: ogni segmento verificato, {@link last} e' cio' che il percorso designa;
1954
+ * - `unknown`: un segmento non esiste nella sua tappa, che era autorevole;
1955
+ * - `unverifiable`: la catena si interrompe — `PATH_NOT_VERIFIABLE`.
1956
+ */
1957
+ status: 'empty' | 'resolved' | 'unknown' | 'unverifiable';
1958
+ reason?: PathStopReason;
1959
+ /** Dove si e' fermata: indice nel percorso e testo del segmento. */
1960
+ stoppedAt?: {
1961
+ index: number;
1962
+ segment: string;
1963
+ };
1964
+ /** Il segmento finale, solo con `resolved`: e' il campo o il membro che il percorso designa. */
1965
+ last?: PathEntry;
1966
+ /**
1967
+ * La tappa dell'**ultimo** segmento, quando la navigazione ci e' arrivata: e' cio' che l'editor
1968
+ * propone, con `prefix` da premettere al nome scelto. Assente se la catena si e' interrotta
1969
+ * prima: lì non c'e' niente da proporre.
1970
+ */
1971
+ tail?: {
1972
+ level: PathLevel;
1973
+ prefix: string;
1974
+ segment: string;
1975
+ };
1976
+ }
1977
+ /**
1978
+ * Descrive una tappa. `usage` vale solo per le entita' e solo dove serve: i segmenti **intermedi**
1979
+ * si chiedono sempre con `any`, perche' l'uso riguarda l'ultimo — un filtro su `Cliente.Citta`
1980
+ * esige che `Citta` sia filtrabile, non che lo sia la relazione (§4.4).
1981
+ */
1982
+ declare function loadPathLevel(catalog: PathCatalog, container: PathContainer, usage?: FlowFieldUsage): Promise<PathLevel>;
1983
+ /**
1984
+ * Naviga `path` a partire da `root`, un segmento alla volta. Non rifiuta mai: un catalogo assente
1985
+ * e' un esito (`unverifiable`), non un errore da gestire in ogni chiamante.
1986
+ */
1987
+ declare function resolvePath(catalog: PathCatalog, root: PathContainer, path: string | undefined, options?: {
1988
+ usage?: FlowFieldUsage;
1989
+ }): Promise<PathResolution>;
1990
+ /** Come chiamare una tappa in un messaggio: la classe ha una label, l'entita' il proprio nome. */
1991
+ declare function pathContainerLabel(level: PathLevel | undefined): string;
1992
+ /**
1993
+ * Il testo dell'avviso `PATH_NOT_VERIFIABLE`, con il **motivo**: "non verificabile" senza dire
1994
+ * perche' e' indistinguibile da un difetto dell'editor.
1995
+ */
1996
+ declare function pathNotVerifiableMessage(resolution: PathResolution): string;
1997
+ /** I nomi proponibili nella tappa dove un segmento non e' stato trovato: il messaggio li elenca. */
1998
+ declare function pathAvailableNames(resolution: PathResolution): string[];
1999
+ /**
2000
+ * La riga di descrizione di un segmento proponibile. `showWritability` la chiede chi sta
2001
+ * compilando una **destinazione**: in un filtro "sola lettura" sarebbe rumore, in un campo di
2002
+ * destinazione e' l'informazione che evita `TARGET_NOT_WRITABLE`.
2003
+ */
2004
+ declare function describePathEntry(entry: PathEntry, options?: {
2005
+ showWritability?: boolean;
2006
+ }): string;
2007
+ interface PathNavigationRequest {
2008
+ /** `null` = niente da navigare: nessuna radice scelta, o radice non navigabile. */
2009
+ root: PathContainer | null;
2010
+ path: string | undefined;
2011
+ /** L'uso con cui chiedere i campi dell'**ultimo** segmento (§6.4). */
2012
+ usage?: FlowFieldUsage;
2013
+ }
2014
+ interface PathNavigation {
2015
+ /** `null` finche' non c'e' una radice o la prima risposta non e' arrivata. */
2016
+ resolution: Signal<PathResolution | null>;
2017
+ isPending: Signal<boolean>;
2018
+ }
2019
+ /**
2020
+ * La navigazione come coppia di signal, per i pickers. Da chiamare in un **contesto di
2021
+ * iniezione** (il costruttore del componente), perche' dentro crea un `effect`.
2022
+ *
2023
+ * Il token di sequenza non e' cosmetico: le tappe si caricano una alla volta e una risposta
2024
+ * superata che arriva dopo mostrerebbe l'avviso di un percorso che l'utente ha già cambiato.
2025
+ */
2026
+ declare function navigatePath(catalog: PathCatalog, request: () => PathNavigationRequest | null): PathNavigation;
2027
+
2028
+ /** Un node come lo vede l'editor: il node piu' da dove viene. */
2029
+ interface FlowNodeRef {
2030
+ name: string;
2031
+ type: FlowElementType;
2032
+ collection: FlowNodeCollection;
2033
+ index: number;
2034
+ node: FlowAnyNode;
2035
+ }
2036
+ /** Un arco derivato dal documento, con la sua origine precisa. */
2037
+ interface FlowEdge {
2038
+ /** Id stabile: `<sorgente>|<chiave uscita>`. */
2039
+ id: string;
2040
+ /** `$start` per gli archi uscenti dallo Start. */
2041
+ from: string;
2042
+ /** `undefined` → il connector esiste ma non ha destinazione: ramo incompleto (§6.4). */
2043
+ to?: string;
2044
+ outletKey: string;
2045
+ kind: FlowConnectionKind;
2046
+ label?: string | null;
2047
+ isGoTo?: boolean;
2048
+ }
2049
+ /** Una risorsa come la vede l'editor. */
2050
+ interface FlowResourceRef {
2051
+ name: string;
2052
+ collection: FlowResourceCollection;
2053
+ index: number;
2054
+ resource: Record<string, unknown>;
2055
+ }
2056
+ /** Documento minimo per un flow nuovo (§11, "Creare un flow"). */
2057
+ declare function emptyFlowDefinition(fullName: string, label: string, processType: string): FlowDefinition;
2058
+ declare class FlowDocumentStore {
2059
+ private readonly _document;
2060
+ private readonly _isDirty;
2061
+ private readonly _undoStack;
2062
+ private readonly _redoStack;
2063
+ /** Il documento in lavorazione. Sola lettura: si modifica con i metodi di questo store. */
2064
+ readonly document: _angular_core.Signal<FlowDefinition>;
2065
+ readonly isDirty: _angular_core.Signal<boolean>;
2066
+ readonly canUndo: _angular_core.Signal<boolean>;
2067
+ readonly canRedo: _angular_core.Signal<boolean>;
2068
+ /** §3.4 — l'elemento Start: array di uno, usa sempre il primo. */
2069
+ readonly start: _angular_core.Signal<FlowStart>;
2070
+ /** §3.1 — tutte le collection appiattite in un'unica lista di node. */
2071
+ readonly nodes: _angular_core.Signal<FlowNodeRef[]>;
2072
+ readonly nodeByName: _angular_core.Signal<Map<string, FlowNodeRef>>;
2073
+ readonly resources: _angular_core.Signal<FlowResourceRef[]>;
2074
+ /**
2075
+ * §3.3 — l'insieme dei nomi già usati: node, risorse **e** step di orchestrazione, un unico
2076
+ * spazio di nomi. Il controllo di unicita' che guarda solo le variabili lascia passare una
2077
+ * variabile omonima di un node (§13.5); quello che dimentica gli step lascia passare uno
2078
+ * step omonimo di una variabile, che e' `NAME_DUPLICATED` allo stesso modo (§5.13).
2079
+ */
2080
+ readonly usedNames: _angular_core.Signal<string[]>;
2081
+ /** Gli archi derivati dal documento, Start incluso. */
2082
+ readonly edges: _angular_core.Signal<FlowEdge[]>;
2083
+ /**
2084
+ * Raggiungibilita' calcolata localmente, per un feedback immediato mentre si disegna.
2085
+ * La fonte autoritativa resta `isReachable` di `POST /flows/outline` (§6.4): questa e'
2086
+ * un'anticipazione, non un sostituto.
2087
+ */
2088
+ readonly reachableNames: _angular_core.Signal<ReadonlySet<string>>;
2089
+ /** Carica un documento dal backend: azzera storico e flag di modifica. */
2090
+ load(definition: FlowDefinition): void;
2091
+ /** Dopo un salvataggio riuscito: il documento resta, la modifica non e' piu' pendente. */
2092
+ markSaved(): void;
2093
+ /**
2094
+ * Applica una modifica al documento.
2095
+ * Il mutatore riceve una **copia** e la modifica liberamente; lo store si occupa di
2096
+ * storico e di sostituire il riferimento (nuovo oggetto → i signal derivati ricalcolano).
2097
+ */
2098
+ update(mutate: (draft: FlowDefinition) => void, options?: {
2099
+ silent?: boolean;
2100
+ }): void;
2101
+ private pushHistory;
2102
+ undo(): void;
2103
+ redo(): void;
2104
+ /** Inserisce un node nella collection indicata dal dizionario (`metadataProperty`). */
2105
+ addNode(collection: FlowNodeCollection, node: FlowAnyNode): void;
2106
+ /** Modifica un node per nome. Il mutatore riceve la copia di lavoro. */
2107
+ updateNode(name: string, mutate: (node: FlowAnyNode) => void, options?: {
2108
+ silent?: boolean;
2109
+ }): void;
2110
+ /** Modifica lo Start. */
2111
+ updateStart(mutate: (start: FlowStart) => void, options?: {
2112
+ silent?: boolean;
2113
+ }): void;
2114
+ /**
2115
+ * Sposta un node sul canvas. `silent` per non riempire lo storico durante il drag:
2116
+ * il chiamante registra un solo passo alla fine del gesto.
2117
+ */
2118
+ moveNode(name: string, x: number, y: number, options?: {
2119
+ silent?: boolean;
2120
+ }): void;
2121
+ /**
2122
+ * Rimuove un node **e** ogni connector che lo referenzia: un `targetReference` orfano
2123
+ * e' `CONNECTOR_TARGET_UNKNOWN`, cioe' un errore che blocca l'attivazione (§7).
2124
+ */
2125
+ removeNode(name: string): void;
2126
+ /** Azzera i connector che puntano a un node scomparso, Start compreso. */
2127
+ private static clearReferencesTo;
2128
+ /**
2129
+ * Rinomina un node riscrivendo **tutti** i riferimenti che lo raggiungono.
2130
+ * Nessuna primitiva del backend lo fa (§13.8): se l'editor offre la rinomina, la
2131
+ * riscrittura la deve fare lui. Copre `targetReference`, i riferimenti a risorsa e i
2132
+ * riferimenti a output automatico (`Vecchio.Campo` → `Nuovo.Campo`).
2133
+ */
2134
+ renameNode(oldName: string, newName: string): void;
2135
+ /** Rinomina una risorsa, riscrivendo i riferimenti che la usano. */
2136
+ renameResource(collection: FlowResourceCollection, index: number, newName: string): void;
2137
+ /**
2138
+ * Riscrive ogni occorrenza di un nome nei campi che contengono riferimenti.
2139
+ * Cammina l'intero documento: e' l'unico modo per non dimenticare un campo, dato che
2140
+ * i riferimenti compaiono in una ventina di posti diversi (§4).
2141
+ */
2142
+ private static rewriteReferences;
2143
+ /** Duplica un node con un nome nuovo, senza copiarne le uscite. */
2144
+ duplicateNode(name: string, newName: string, offset?: {
2145
+ x: number;
2146
+ y: number;
2147
+ }): void;
2148
+ /** Scrive la destinazione di un'uscita. `target` assente → il ramo resta incompleto. */
2149
+ setConnector(fromName: string, outletKey: string, target: string | undefined, isGoTo?: boolean): void;
2150
+ /** Rimuove un arco: il percorso finisce lì, che e' legittimo (§3.5). */
2151
+ removeConnector(fromName: string, outletKey: string): void;
2152
+ addResource(collection: FlowResourceCollection, resource: Record<string, unknown>): void;
2153
+ updateResource(collection: FlowResourceCollection, index: number, mutate: (resource: Record<string, unknown>) => void): void;
2154
+ removeResource(collection: FlowResourceCollection, index: number): void;
2155
+ /** Modifica i campi del documento radice (label, description, processType, …). */
2156
+ updateHeader(mutate: (definition: FlowDefinition) => void, options?: {
2157
+ silent?: boolean;
2158
+ }): void;
2159
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlowDocumentStore, never>;
2160
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<FlowDocumentStore>;
2161
+ }
2162
+
1991
2163
  declare class FlowValidationStore {
1992
2164
  private readonly api;
1993
2165
  private readonly destroyRef;
@@ -2511,13 +2683,26 @@ declare class ReferencePickerComponent {
2511
2683
  readonly query: _angular_core.WritableSignal<string>;
2512
2684
  constructor();
2513
2685
  /**
2514
- * §4.7 — la risorsa `Structure` da cui il valore corrente sta navigando, se c'e'. È quella
2515
- * che rende i membri proponibili: senza classe non c'e' catalogo da interrogare.
2516
- */
2517
- readonly structureRoot: _angular_core.Signal<FlowReference | undefined>;
2518
- private readonly members;
2519
- /** I membri come riferimenti navigati: `Richiesta.Ragione`, col tipo del membro. */
2520
- private readonly memberReferences;
2686
+ * La risorsa da cui il valore corrente sta navigando, quando la sua forma e' **dichiarata**: una
2687
+ * `Structure` con la classe, un record con l'entita'. È cio' che rende il percorso verificabile.
2688
+ *
2689
+ * Un output automatico e' escluso di proposito: la primitiva ne dichiara il tipo, ma la
2690
+ * specifica tiene i percorsi che ne partono fuori dalla validazione (§7, ultimo capoverso), e
2691
+ * l'editor non deve accusare cio' che il backend non verifica.
2692
+ */
2693
+ private readonly navigableRoot;
2694
+ /** Il percorso dopo la radice: `Cliente.Email` di `Richiesta.Cliente.Email`. */
2695
+ private readonly navigatedPath;
2696
+ private readonly navigation;
2697
+ private readonly resolution;
2698
+ /** La tappa in cui si sta scrivendo: da qui vengono le proposte dei segmenti. */
2699
+ private readonly tail;
2700
+ /**
2701
+ * I segmenti come riferimenti navigati: `Richiesta.Cliente.Email`, col tipo del segmento. Un
2702
+ * segmento di sola lettura non si propone in un campo di destinazione, a meno che da lì il
2703
+ * percorso continui: `Richiesta.Cliente` non si assegna, ma `Richiesta.Cliente.Email` sì (§5.7).
2704
+ */
2705
+ private readonly pathReferences;
2521
2706
  readonly options: _angular_core.Signal<FlowReference[]>;
2522
2707
  /** Le opzioni raggruppate per `kind`, così gli output automatici si distinguono. */
2523
2708
  readonly groups: _angular_core.Signal<{
@@ -2529,20 +2714,23 @@ declare class ReferencePickerComponent {
2529
2714
  /**
2530
2715
  * Stato del valore corrente rispetto all'elenco.
2531
2716
  * - `known`: presente nell'elenco;
2532
- * - `navigated`: la radice e' nota ma c'e' un percorso dopo il punto (campo di record,
2533
- * output automatico navigato): la validazione non verifica i percorsi con il punto,
2534
- * quindi si accetta senza segnalare;
2717
+ * - `navigated`: la radice e' nota ma la sua forma non e' dichiarata (output automatico di un
2718
+ * elemento): il percorso resta fuori dalla validazione, quindi si accetta senza segnalare;
2535
2719
  * - `host`: scope del sistema ospite che **non dichiara percorsi**: non verificabile (§4.1);
2536
- * - `member`: membro di una classe, esistente: qui il percorso **e'** verificato (§4.7);
2537
- * - `memberUnknown`: la radice e' una `Structure` ma il membro non c'e': e'
2538
- * `STRUCTURE_MEMBER_UNKNOWN`, e a differenza di un campo di record si sa per certo;
2539
- * - `memberNotWritable`: il membro esiste, e' calcolato, e questo campo vuole una
2720
+ * - `member`: percorso dentro una forma dichiarata, verificato fino in fondo (§4.4, §4.7.1);
2721
+ * - `memberUnknown`: un segmento non esiste nella sua tappa: `STRUCTURE_MEMBER_UNKNOWN` su una
2722
+ * classe, `FIELD_UNKNOWN` su un'entita', e a differenza di prima si sa per certo;
2723
+ * - `memberNotWritable`: il segmento esiste, non e' scrivibile, e questo campo vuole una
2540
2724
  * destinazione: `TARGET_NOT_WRITABLE`;
2725
+ * - `pathUnverified`: la catena si interrompe (`PATH_NOT_VERIFIABLE`): avviso, non errore;
2541
2726
  * - `unknown`: nessuna corrispondenza: si avvisa, senza bloccare. Ci finisce anche il
2542
2727
  * percorso inesistente di uno scope che i percorsi li dichiara, perche' lì il backend
2543
2728
  * risponderebbe `GLOBAL_UNKNOWN`.
2544
2729
  */
2545
- readonly valueState: _angular_core.Signal<"empty" | "known" | "navigated" | "host" | "member" | "memberUnknown" | "memberNotWritable" | "unknown">;
2730
+ readonly valueState: _angular_core.Signal<"empty" | "unknown" | "known" | "navigated" | "host" | "member" | "memberUnknown" | "memberNotWritable" | "pathUnverified">;
2731
+ /** Le parole cambiano con la tappa: un campo di un'entita' non e' un membro di una classe. */
2732
+ private readonly tailIsObject;
2733
+ private readonly tailContainer;
2546
2734
  readonly hint: _angular_core.Signal<string | null>;
2547
2735
  /** I due stati che sono errori e non avvisi: il colore deve dirlo. */
2548
2736
  readonly isHintError: _angular_core.Signal<boolean>;
@@ -2552,7 +2740,15 @@ declare class ReferencePickerComponent {
2552
2740
  toggle(): void;
2553
2741
  onQuery(value: string): void;
2554
2742
  choose(reference: FlowReference): void;
2555
- /** Scrittura libera: indispensabile per i campi di un record e per gli scope dell'host. */
2743
+ /**
2744
+ * Scende di un livello dentro un percorso proponibile invece di scegliere il segmento: scrive il
2745
+ * punto, e l'elenco diventa quello della tappa successiva. Serve perche' `Richiesta.Cliente` puo'
2746
+ * essere il riferimento che si vuole **oppure** la tappa da cui continuare.
2747
+ */
2748
+ descend(reference: FlowReference): void;
2749
+ /** `true` se da questo riferimento il percorso continua: la sua forma e' dichiarata. */
2750
+ canDescend(reference: FlowReference): boolean;
2751
+ /** Scrittura libera: indispensabile per gli scope dell'host e per i percorsi non enumerabili. */
2556
2752
  onManualInput(value: string): void;
2557
2753
  clear(): void;
2558
2754
  describe(reference: FlowReference): string;
@@ -2610,29 +2806,55 @@ declare class FieldPickerComponent {
2610
2806
  readonly placeholder: _angular_core.InputSignal<string>;
2611
2807
  readonly disabled: _angular_core.InputSignal<boolean>;
2612
2808
  readonly valueChange: _angular_core.OutputEmitterRef<string | undefined>;
2613
- private readonly fields;
2614
- private readonly loadFailed;
2615
2809
  readonly isOpen: _angular_core.WritableSignal<boolean>;
2616
2810
  /** Il testo digitato mentre il pannello e' aperto: filtra l'elenco. */
2617
2811
  private readonly query;
2812
+ /**
2813
+ * La navigazione del percorso corrente. Il testo digitato conta quanto il valore: mentre si
2814
+ * scrive `Cliente.Cit` l'elenco deve già essere quello dei campi di `Cliente`.
2815
+ */
2816
+ private readonly navigation;
2817
+ private readonly resolution;
2618
2818
  constructor();
2619
2819
  readonly text: _angular_core.Signal<string>;
2620
- readonly options: _angular_core.Signal<FlowFieldDescription[]>;
2820
+ /** La tappa in cui si sta scrivendo: da qui vengono le proposte, non dalla radice. */
2821
+ private readonly tail;
2822
+ /** Cio' che si premette al nome scelto: `''` sul primo segmento, `Cliente.` sul secondo. */
2823
+ readonly prefix: _angular_core.Signal<string>;
2824
+ readonly options: _angular_core.Signal<PathEntry[]>;
2825
+ /** `true` se la tappa in cui si scrive ha un elenco **autorevole** (§4.7.1). */
2621
2826
  readonly hasCatalog: _angular_core.Signal<boolean>;
2622
- /** `true` se il valore e' un percorso di relazione: non enumerabile, non verificato (§4.4). */
2623
- readonly isRelationPath: _angular_core.Signal<boolean>;
2827
+ /** L'etichetta della tappa: serve nell'intestazione dell'elenco quando non e' la radice. */
2828
+ readonly levelLabel: _angular_core.Signal<string>;
2829
+ /** `true` se il valore e' un percorso navigato: cambia il testo dei messaggi, non la severita'. */
2830
+ readonly isPath: _angular_core.Signal<boolean>;
2624
2831
  readonly isUnknown: _angular_core.Signal<boolean>;
2625
- /** L'avviso dipende dall'uso: un campo puo' esistere e non essere filtrabile. */
2626
- readonly unknownMessage: _angular_core.Signal<"Questo campo non e’ fra quelli filtrabili dell’oggetto." | "Questo campo non e’ fra quelli su cui si puo’ ordinare." | "Questo campo non e’ fra quelli aggiornabili dell’oggetto." | "Questo campo non e’ fra quelli valorizzabili alla creazione." | "Questo campo non e’ fra quelli dell’oggetto.">;
2832
+ /** §4.4 la catena si e' interrotta: avviso, non errore. Il percorso puo' essere giusto. */
2833
+ readonly isNotVerifiable: _angular_core.Signal<boolean>;
2834
+ /**
2835
+ * L'avviso dipende dall'uso — un campo puo' esistere e non essere filtrabile — e dalla **tappa**:
2836
+ * su `Cliente.Citta` il campo che non esiste e' di `Cliente`, non dell'oggetto di partenza.
2837
+ */
2838
+ readonly unknownMessage: _angular_core.Signal<string>;
2839
+ readonly notVerifiableMessage: _angular_core.Signal<string>;
2627
2840
  readonly describeValue: _angular_core.Signal<string | null>;
2841
+ /** Catalogo non raggiungibile sulla **radice**: il campo resta scrivibile a mano, non bloccato. */
2628
2842
  readonly loadErrored: _angular_core.Signal<boolean>;
2629
2843
  open(): void;
2630
2844
  close(): void;
2631
2845
  toggle(): void;
2632
2846
  onInput(text: string): void;
2633
- choose(field: FlowFieldDescription): void;
2847
+ choose(entry: PathEntry): void;
2848
+ /**
2849
+ * Scende dentro una relazione invece di scegliere il campo: il pannello resta aperto e l'elenco
2850
+ * diventa quello dell'oggetto referenziato. È l'equivalente di scrivere il punto, e infatti
2851
+ * scrive il punto: il valore intermedio e' quello che si vedrebbe digitando.
2852
+ */
2853
+ descend(entry: PathEntry): void;
2854
+ /** `true` se da questo campo il percorso continua: e' una relazione con l'oggetto dichiarato. */
2855
+ canDescend(entry: PathEntry): boolean;
2634
2856
  clear(): void;
2635
- describe(field: FlowFieldDescription): string;
2857
+ describe(entry: PathEntry): string;
2636
2858
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FieldPickerComponent, never>;
2637
2859
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<FieldPickerComponent, "fb-field-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "object": { "alias": "object"; "required": false; "isSignal": true; }; "usage": { "alias": "usage"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
2638
2860
  }
@@ -2706,55 +2928,76 @@ declare class StructureMemberPickerComponent {
2706
2928
  readonly placeholder: _angular_core.InputSignal<string>;
2707
2929
  readonly disabled: _angular_core.InputSignal<boolean>;
2708
2930
  readonly valueChange: _angular_core.OutputEmitterRef<string | undefined>;
2709
- /**
2710
- * §4.7.1 — non basta l'elenco: serve l'**esito**. Elenco vuoto perche' i membri non sono
2711
- * dichiarati (si digita a mano) e classe non registrata (non c'e' niente da digitare) hanno
2712
- * la stessa lista e messaggi opposti.
2713
- */
2714
- private readonly result;
2715
- private readonly members;
2716
2931
  readonly isOpen: _angular_core.WritableSignal<boolean>;
2717
2932
  /** Il testo digitato mentre il pannello e' aperto: filtra l'elenco. */
2718
2933
  private readonly query;
2934
+ /**
2935
+ * La navigazione del percorso corrente, dalla classe in giu'. Il testo digitato conta quanto il
2936
+ * valore: mentre si scrive `Cliente.No` l'elenco deve già essere quello dei campi di `Cliente`.
2937
+ */
2938
+ private readonly navigation;
2939
+ private readonly resolution;
2719
2940
  constructor();
2720
2941
  readonly text: _angular_core.Signal<string>;
2721
- /** Con `usage="writable"` i membri di sola lettura non si propongono affatto. */
2722
- readonly available: _angular_core.Signal<FlowStructureMember[]>;
2723
- readonly options: _angular_core.Signal<FlowStructureMember[]>;
2942
+ /** La tappa in cui si sta scrivendo: la classe di partenza, o quella in cui si e' entrati. */
2943
+ private readonly tail;
2944
+ /** Cio' che si premette al nome scelto: `''` sul primo segmento, `Cliente.` sul secondo. */
2945
+ readonly prefix: _angular_core.Signal<string>;
2724
2946
  /**
2725
- * Come chiamare la classe: la `label` la porta l'involucro della descrizione, ed e' il motivo
2726
- * per cui l'involucro esiste (§4.7.1). Assente, si mostra il nome della classe.
2947
+ * Con `usage="writable"` i segmenti di sola lettura non si propongono affatto con
2948
+ * un'eccezione: quelli **navigabili** restano, perche' un membro record che non si sostituisce
2949
+ * puo' avere campi aggiornabili, e nasconderlo chiuderebbe la strada a `Richiesta.Cliente.Email`.
2950
+ */
2951
+ readonly available: _angular_core.Signal<PathEntry[]>;
2952
+ readonly options: _angular_core.Signal<PathEntry[]>;
2953
+ /**
2954
+ * Come chiamare la tappa: la `label` la porta l'involucro della descrizione, ed e' il motivo per
2955
+ * cui l'involucro esiste (§4.7.1). Assente, si mostra il nome della classe o dell'entita'.
2727
2956
  */
2728
2957
  readonly classLabel: _angular_core.Signal<string>;
2729
- /** Elenco autorevole: solo qui un membro fuori elenco e' un errore (§4.7.1). */
2958
+ /** `true` se la tappa in cui si scrive ha un elenco **autorevole** (§4.7.1). */
2730
2959
  readonly hasCatalog: _angular_core.Signal<boolean>;
2731
- /** 404: la classe non e' registrata. Il nome del membro non c'e' modo di indovinarlo. */
2960
+ /** Nell'elenco dei campi di un'entita' il titolo lo dice: non sono membri di una classe. */
2961
+ readonly isObjectLevel: _angular_core.Signal<boolean>;
2962
+ private readonly rootStatus;
2963
+ /** 404 sulla classe di partenza: il nome del membro non c'e' modo di indovinarlo. */
2732
2964
  readonly isClassUnknown: _angular_core.Signal<boolean>;
2733
2965
  /** Classe valida, membri non dichiarati: si digita, e non si segnala niente. */
2734
2966
  readonly isUndeclared: _angular_core.Signal<boolean>;
2735
- /** Il primo segmento: e' l'unico che si puo' verificare (§4.7). */
2736
- private readonly firstSegment;
2737
- /** `true` se il valore naviga dentro un membro: oltre il primo segmento non si verifica. */
2738
- readonly isNestedPath: _angular_core.Signal<boolean>;
2739
- private readonly declared;
2967
+ /** Catalogo assente per un motivo che non riguarda la classe: "non lo so". */
2968
+ readonly loadErrored: _angular_core.Signal<boolean>;
2740
2969
  readonly isUnknown: _angular_core.Signal<boolean>;
2741
- /** Il messaggio elenca i disponibili: dire solo "non esiste" non aiuta a correggere. */
2970
+ /** §4.4, §4.7.1 la catena si e' interrotta: avviso, non errore. */
2971
+ readonly isNotVerifiable: _angular_core.Signal<boolean>;
2972
+ /**
2973
+ * Il messaggio elenca i disponibili: dire solo "non esiste" non aiuta a correggere. Su un
2974
+ * percorso annidato il segmento che manca e' di **quella** tappa, e le parole cambiano con essa —
2975
+ * un campo di un'entita' non e' un membro di una classe.
2976
+ */
2742
2977
  readonly unknownMessage: _angular_core.Signal<string>;
2978
+ readonly notVerifiableMessage: _angular_core.Signal<string>;
2743
2979
  /**
2744
- * Un membro che esiste ma non e' scrivibile, scelto dove serve una destinazione: capita su un
2745
- * documento scritto altrove, e va detto qui invece di lasciarlo scoprire dall'attivazione.
2980
+ * Un segmento che esiste ma non e' scrivibile, scelto dove serve una destinazione: capita su un
2981
+ * documento scritto altrove, e va detto qui invece di lasciarlo scoprire dall'attivazione. Su un
2982
+ * campo di record "scrivibile" vuol dire `createable` **oppure** `updateable` (§5.7).
2746
2983
  */
2747
2984
  readonly isNotWritable: _angular_core.Signal<boolean>;
2985
+ readonly notWritableMessage: _angular_core.Signal<"Questo campo non si scrive ne’ creando ne’ aggiornando un record: assegnarlo e’ TARGET_NOT_WRITABLE." | "Questo membro e’ calcolato: si legge, ma assegnarlo e’ TARGET_NOT_WRITABLE.">;
2748
2986
  readonly describeValue: _angular_core.Signal<string | null>;
2749
- /** Catalogo assente per un motivo che non riguarda la classe: "non lo so". */
2750
- readonly loadErrored: _angular_core.Signal<boolean>;
2751
2987
  open(): void;
2752
2988
  close(): void;
2753
2989
  toggle(): void;
2754
2990
  onInput(text: string): void;
2755
- choose(member: FlowStructureMember): void;
2991
+ choose(entry: PathEntry): void;
2992
+ /**
2993
+ * Scende dentro un membro composto invece di sceglierlo: e' l'equivalente di scrivere il punto, e
2994
+ * infatti scrive il punto. Serve perche' `Richiesta.Cliente` puo' essere la destinazione che si
2995
+ * vuole **oppure** la tappa da cui continuare.
2996
+ */
2997
+ descend(entry: PathEntry): void;
2998
+ canDescend(entry: PathEntry): boolean;
2756
2999
  clear(): void;
2757
- describe(member: FlowStructureMember): string;
3000
+ describe(entry: PathEntry): string;
2758
3001
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StructureMemberPickerComponent, never>;
2759
3002
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StructureMemberPickerComponent, "fb-structure-member-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "usage": { "alias": "usage"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
2760
3003
  }
@@ -3570,7 +3813,7 @@ declare class FlowBuilderComponent {
3570
3813
  * troppo. `panel` tiene il form nel pannello laterale, che e' piu' comodo quando si
3571
3814
  * modificano molti elementi di fila perche' non c'e' niente da aprire e chiudere.
3572
3815
  */
3573
- readonly inspectorMode: _angular_core.InputSignal<"dialog" | "panel">;
3816
+ readonly inspectorMode: _angular_core.InputSignal<"panel" | "dialog">;
3574
3817
  readonly saved: _angular_core.OutputEmitterRef<FlowSaveResult>;
3575
3818
  readonly activated: _angular_core.OutputEmitterRef<FlowSaveResult>;
3576
3819
  readonly closeRequested: _angular_core.OutputEmitterRef<void>;
@@ -3702,5 +3945,5 @@ declare class SelectValueDirective implements AfterViewChecked {
3702
3945
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectValueDirective, "select[fbValue]", never, { "fbValue": { "alias": "fbValue"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3703
3946
  }
3704
3947
 
3705
- export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, ElementDialogComponent, ElementInspectorComponent, ElementPaletteComponent, FALLBACK_COLLECTION_BY_TYPE, FALLBACK_TYPE_LABEL, FLOW_BUILDER_HTTP_CONFIG, FLOW_ELEMENT_ICONS, FLOW_ELEMENT_VARIANT_FIELDS, FLOW_ELEMENT_VARIANT_ICONS, FLOW_ERROR_FALLBACK_MESSAGE, FLOW_ERROR_HTTP_STATUS, FLOW_NAME_PATTERN, FLOW_NODE_COLLECTIONS, FLOW_NODE_HEIGHT, FLOW_NODE_WIDTH, FLOW_RESOURCE_COLLECTIONS, FieldAssignmentEditorComponent, FieldPickerComponent, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, HttpFlowBuilderApi, NamePickerComponent, NodeInspectorBase, ORCHESTRATION_CONDITION_OUTPUT, ObjectPickerComponent, OrchestratedStageInspectorComponent, ParameterEditorComponent, ProblemsPanelComponent, RecordFilterEditorComponent, ReferencePickerComponent, ResourcePanelComponent, SEVERITY_BUCKETS, SEVERITY_ICON, SEVERITY_LABEL, START_NODE_NAME, SelectValueDirective, StartInspectorComponent, StructureMemberPickerComponent, StructurePickerComponent, TYPES_WITH_AUTOMATIC_OUTPUT, TYPE_BY_COLLECTION, UNSUPPORTED_TYPES, ValueEditorComponent, VersionPanelComponent, areTypesComparable, canvasNodeId, checkConditionLogic, checkFlowName, elementIcon, emptyFlowDefinition, flowNodeWidth, flowNodeWidthClass, isCustomConditionLogic, isGlobalReference, isNumericType, isTypeCheckedOperator, isValidFlowName, moveCondition, outletByKey, outletsOf, parseCanvasNodeId, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, referenceRoot, remapConditionLogic, removeCondition, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, uniqueFlowName, variantFieldOf, variantOf, variantPresetOf };
3706
- export type { FieldAssignmentHolder, FilterHolder, FlowActionCall, FlowAnyNode, FlowAssignment, FlowAssignmentItem, FlowAssignmentOperator, FlowAssignmentOperatorEntry, FlowBuilderHttpConfig, FlowCanvasEdge, FlowCanvasNode, FlowCatalogEntry, FlowCatalogParameter, FlowChoice, FlowCloneRequest, FlowCollectionProcessor, FlowCollectionProcessorType, FlowComparisonOperator, FlowComparisonOperatorEntry, FlowCondition, FlowConditionHolder, FlowConditionLogic, FlowConflictState, FlowConnectionKind, FlowConnector, FlowConnectorTarget, FlowConstant, FlowCreateRequest, FlowCustomError, FlowCustomErrorMessage, FlowCustomProperty, FlowDataType, FlowDataTypeEntry, FlowDecision, FlowDecisionRule, FlowDefinition, FlowDictionaries, FlowDictionaryEntry, FlowDynamicChoiceSet, FlowEdge, FlowElementType, FlowElementTypeEntry, FlowErrorCategory, FlowExportQuery, FlowFieldDescription, FlowFieldUsage, FlowFieldValue, FlowFormula, FlowGlobalVariableEntry, FlowInputFieldAssignment, FlowInputParameter, FlowInterviewResult, FlowInterviewStatus, FlowIssueSeverity, FlowLayoutDirection, FlowLayoutNodeInput, FlowLayoutOptions, FlowLayoutResult, FlowListQuery, FlowLoop, FlowNameCheck, FlowNameProblem, FlowNewVersionRequest, FlowNodeBase, FlowNodeCollection, FlowNodeRef, FlowObjectDescription, FlowObjectSummary, FlowOffsetUnit, FlowOrchestratedStage, FlowOutlet, FlowOutline, FlowOutlineConnection, FlowOutlineNode, FlowOutputFieldAssignment, FlowOutputParameter, FlowPalettePick, FlowPendingScreen, FlowProcessType, FlowRecordCreate, FlowRecordDelete, FlowRecordFilter, FlowRecordFilterOperator, FlowRecordLookup, FlowRecordRollback, FlowRecordTriggerType, FlowRecordUpdate, FlowRecordValue, FlowReference, FlowReferenceKind, FlowReferenceQuery, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, FlowResumeRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenNavigation, FlowScreenResponseRequest, FlowScriptPluginCall, FlowSeverityBucket, FlowSortOption, FlowSortOrder, FlowStage, FlowStageStep, FlowStageStepActionType, FlowStageStepAssignee, FlowStageStepConditionActionType, FlowStageStepRequest, FlowStageStepState, FlowStageStepStatus, FlowStageStepTypeEntry, FlowStart, FlowStartInterviewRequest, FlowStructureDescribed, FlowStructureDescription, FlowStructureInstance, FlowStructureMember, FlowSubflow, FlowSubflowInputAssignment, FlowSubflowOutputAssignment, FlowSummary, FlowTextTemplate, FlowTraceEntry, FlowTransactionModel, FlowTransform, FlowTransformType, FlowTransformValue, FlowTransformValueAction, FlowTriggerType, FlowTypedValue, FlowUnsupportedNode, FlowValidationIssue, FlowValidationResult, FlowValue, FlowVariable, FlowVersionStatus, FlowVersionSummary, FlowWait, FlowWaitEvent, NamePickerOption, PaletteGroup, PaletteItem, ParameterHolder, StructureMemberUsage, ValueMode };
3948
+ export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, ElementDialogComponent, ElementInspectorComponent, ElementPaletteComponent, FALLBACK_COLLECTION_BY_TYPE, FALLBACK_TYPE_LABEL, FLOW_BUILDER_HTTP_CONFIG, FLOW_ELEMENT_ICONS, FLOW_ELEMENT_VARIANT_FIELDS, FLOW_ELEMENT_VARIANT_ICONS, FLOW_ERROR_FALLBACK_MESSAGE, FLOW_ERROR_HTTP_STATUS, FLOW_NAME_PATTERN, FLOW_NODE_COLLECTIONS, FLOW_NODE_HEIGHT, FLOW_NODE_WIDTH, FLOW_RESOURCE_COLLECTIONS, FieldAssignmentEditorComponent, FieldPickerComponent, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, HttpFlowBuilderApi, NamePickerComponent, NodeInspectorBase, ORCHESTRATION_CONDITION_OUTPUT, ObjectPickerComponent, OrchestratedStageInspectorComponent, ParameterEditorComponent, ProblemsPanelComponent, RecordFilterEditorComponent, ReferencePickerComponent, ResourcePanelComponent, SEVERITY_BUCKETS, SEVERITY_ICON, SEVERITY_LABEL, START_NODE_NAME, SelectValueDirective, StartInspectorComponent, StructureMemberPickerComponent, StructurePickerComponent, TYPES_WITH_AUTOMATIC_OUTPUT, TYPE_BY_COLLECTION, UNSUPPORTED_TYPES, ValueEditorComponent, VersionPanelComponent, areTypesComparable, canvasNodeId, checkConditionLogic, checkFlowName, describePathEntry, elementIcon, emptyFlowDefinition, flowNodeWidth, flowNodeWidthClass, isCustomConditionLogic, isGlobalReference, isNumericType, isTypeCheckedOperator, isValidFlowName, loadPathLevel, moveCondition, navigatePath, outletByKey, outletsOf, parseCanvasNodeId, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, pathAvailableNames, pathContainerLabel, pathNotVerifiableMessage, referenceRoot, remapConditionLogic, removeCondition, resolvePath, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, uniqueFlowName, variantFieldOf, variantOf, variantPresetOf };
3949
+ export type { FieldAssignmentHolder, FilterHolder, FlowActionCall, FlowAnyNode, FlowAssignment, FlowAssignmentItem, FlowAssignmentOperator, FlowAssignmentOperatorEntry, FlowBuilderHttpConfig, FlowCanvasEdge, FlowCanvasNode, FlowCatalogEntry, FlowCatalogParameter, FlowChoice, FlowCloneRequest, FlowCollectionProcessor, FlowCollectionProcessorType, FlowComparisonOperator, FlowComparisonOperatorEntry, FlowCondition, FlowConditionHolder, FlowConditionLogic, FlowConflictState, FlowConnectionKind, FlowConnector, FlowConnectorTarget, FlowConstant, FlowCreateRequest, FlowCustomError, FlowCustomErrorMessage, FlowCustomProperty, FlowDataType, FlowDataTypeEntry, FlowDecision, FlowDecisionRule, FlowDefinition, FlowDictionaries, FlowDictionaryEntry, FlowDynamicChoiceSet, FlowEdge, FlowElementType, FlowElementTypeEntry, FlowErrorCategory, FlowExportQuery, FlowFieldDescription, FlowFieldUsage, FlowFieldValue, FlowFormula, FlowGlobalVariableEntry, FlowInputFieldAssignment, FlowInputParameter, FlowInterviewResult, FlowInterviewStatus, FlowIssueSeverity, FlowLayoutDirection, FlowLayoutNodeInput, FlowLayoutOptions, FlowLayoutResult, FlowListQuery, FlowLoop, FlowNameCheck, FlowNameProblem, FlowNewVersionRequest, FlowNodeBase, FlowNodeCollection, FlowNodeRef, FlowObjectDescription, FlowObjectSummary, FlowOffsetUnit, FlowOrchestratedStage, FlowOutlet, FlowOutline, FlowOutlineConnection, FlowOutlineNode, FlowOutputFieldAssignment, FlowOutputParameter, FlowPalettePick, FlowPendingScreen, FlowProcessType, FlowRecordCreate, FlowRecordDelete, FlowRecordFilter, FlowRecordFilterOperator, FlowRecordLookup, FlowRecordRollback, FlowRecordTriggerType, FlowRecordUpdate, FlowRecordValue, FlowReference, FlowReferenceKind, FlowReferenceQuery, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, FlowResumeRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenNavigation, FlowScreenResponseRequest, FlowScriptPluginCall, FlowSeverityBucket, FlowSortOption, FlowSortOrder, FlowStage, FlowStageStep, FlowStageStepActionType, FlowStageStepAssignee, FlowStageStepConditionActionType, FlowStageStepRequest, FlowStageStepState, FlowStageStepStatus, FlowStageStepTypeEntry, FlowStart, FlowStartInterviewRequest, FlowStructureDescribed, FlowStructureDescription, FlowStructureInstance, FlowStructureMember, FlowSubflow, FlowSubflowInputAssignment, FlowSubflowOutputAssignment, FlowSummary, FlowTextTemplate, FlowTraceEntry, FlowTransactionModel, FlowTransform, FlowTransformType, FlowTransformValue, FlowTransformValueAction, FlowTriggerType, FlowTypedValue, FlowUnsupportedNode, FlowValidationIssue, FlowValidationResult, FlowValue, FlowVariable, FlowVersionStatus, FlowVersionSummary, FlowWait, FlowWaitEvent, NamePickerOption, PaletteGroup, PaletteItem, ParameterHolder, PathCatalog, PathContainer, PathContainerKind, PathEntry, PathLevel, PathLevelStatus, PathNavigation, PathNavigationRequest, PathResolution, PathStopReason, StructureMemberUsage, ValueMode };