@esfaenza/flow-builder 20.3.4 → 20.3.6
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/README.md +29 -11
- package/fesm2022/esfaenza-flow-builder.mjs +788 -258
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +533 -194
- package/package.json +1 -1
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
|
|
|
@@ -1637,140 +1637,33 @@ declare function stageStepOutputReferenced(reference: string | undefined, steps:
|
|
|
1637
1637
|
*/
|
|
1638
1638
|
declare const ORCHESTRATION_CONDITION_OUTPUT = "isOrchestrationConditionMet";
|
|
1639
1639
|
|
|
1640
|
-
/**
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
}
|
|
1668
|
-
/** Documento minimo per un flow nuovo (§11, "Creare un flow"). */
|
|
1669
|
-
declare function emptyFlowDefinition(fullName: string, label: string, processType: string): FlowDefinition;
|
|
1670
|
-
declare class FlowDocumentStore {
|
|
1671
|
-
private readonly _document;
|
|
1672
|
-
private readonly _isDirty;
|
|
1673
|
-
private readonly _undoStack;
|
|
1674
|
-
private readonly _redoStack;
|
|
1675
|
-
/** Il documento in lavorazione. Sola lettura: si modifica con i metodi di questo store. */
|
|
1676
|
-
readonly document: _angular_core.Signal<FlowDefinition>;
|
|
1677
|
-
readonly isDirty: _angular_core.Signal<boolean>;
|
|
1678
|
-
readonly canUndo: _angular_core.Signal<boolean>;
|
|
1679
|
-
readonly canRedo: _angular_core.Signal<boolean>;
|
|
1680
|
-
/** §3.4 — l'elemento Start: array di uno, usa sempre il primo. */
|
|
1681
|
-
readonly start: _angular_core.Signal<FlowStart>;
|
|
1682
|
-
/** §3.1 — tutte le collection appiattite in un'unica lista di node. */
|
|
1683
|
-
readonly nodes: _angular_core.Signal<FlowNodeRef[]>;
|
|
1684
|
-
readonly nodeByName: _angular_core.Signal<Map<string, FlowNodeRef>>;
|
|
1685
|
-
readonly resources: _angular_core.Signal<FlowResourceRef[]>;
|
|
1686
|
-
/**
|
|
1687
|
-
* §3.3 — l'insieme dei nomi già usati: node, risorse **e** step di orchestrazione, un unico
|
|
1688
|
-
* spazio di nomi. Il controllo di unicita' che guarda solo le variabili lascia passare una
|
|
1689
|
-
* variabile omonima di un node (§13.5); quello che dimentica gli step lascia passare uno
|
|
1690
|
-
* step omonimo di una variabile, che e' `NAME_DUPLICATED` allo stesso modo (§5.13).
|
|
1691
|
-
*/
|
|
1692
|
-
readonly usedNames: _angular_core.Signal<string[]>;
|
|
1693
|
-
/** Gli archi derivati dal documento, Start incluso. */
|
|
1694
|
-
readonly edges: _angular_core.Signal<FlowEdge[]>;
|
|
1695
|
-
/**
|
|
1696
|
-
* Raggiungibilita' calcolata localmente, per un feedback immediato mentre si disegna.
|
|
1697
|
-
* La fonte autoritativa resta `isReachable` di `POST /flows/outline` (§6.4): questa e'
|
|
1698
|
-
* un'anticipazione, non un sostituto.
|
|
1699
|
-
*/
|
|
1700
|
-
readonly reachableNames: _angular_core.Signal<ReadonlySet<string>>;
|
|
1701
|
-
/** Carica un documento dal backend: azzera storico e flag di modifica. */
|
|
1702
|
-
load(definition: FlowDefinition): void;
|
|
1703
|
-
/** Dopo un salvataggio riuscito: il documento resta, la modifica non e' piu' pendente. */
|
|
1704
|
-
markSaved(): void;
|
|
1705
|
-
/**
|
|
1706
|
-
* Applica una modifica al documento.
|
|
1707
|
-
* Il mutatore riceve una **copia** e la modifica liberamente; lo store si occupa di
|
|
1708
|
-
* storico e di sostituire il riferimento (nuovo oggetto → i signal derivati ricalcolano).
|
|
1709
|
-
*/
|
|
1710
|
-
update(mutate: (draft: FlowDefinition) => void, options?: {
|
|
1711
|
-
silent?: boolean;
|
|
1712
|
-
}): void;
|
|
1713
|
-
private pushHistory;
|
|
1714
|
-
undo(): void;
|
|
1715
|
-
redo(): void;
|
|
1716
|
-
/** Inserisce un node nella collection indicata dal dizionario (`metadataProperty`). */
|
|
1717
|
-
addNode(collection: FlowNodeCollection, node: FlowAnyNode): void;
|
|
1718
|
-
/** Modifica un node per nome. Il mutatore riceve la copia di lavoro. */
|
|
1719
|
-
updateNode(name: string, mutate: (node: FlowAnyNode) => void, options?: {
|
|
1720
|
-
silent?: boolean;
|
|
1721
|
-
}): void;
|
|
1722
|
-
/** Modifica lo Start. */
|
|
1723
|
-
updateStart(mutate: (start: FlowStart) => void, options?: {
|
|
1724
|
-
silent?: boolean;
|
|
1725
|
-
}): void;
|
|
1726
|
-
/**
|
|
1727
|
-
* Sposta un node sul canvas. `silent` per non riempire lo storico durante il drag:
|
|
1728
|
-
* il chiamante registra un solo passo alla fine del gesto.
|
|
1729
|
-
*/
|
|
1730
|
-
moveNode(name: string, x: number, y: number, options?: {
|
|
1731
|
-
silent?: boolean;
|
|
1732
|
-
}): void;
|
|
1733
|
-
/**
|
|
1734
|
-
* Rimuove un node **e** ogni connector che lo referenzia: un `targetReference` orfano
|
|
1735
|
-
* e' `CONNECTOR_TARGET_UNKNOWN`, cioe' un errore che blocca l'attivazione (§7).
|
|
1736
|
-
*/
|
|
1737
|
-
removeNode(name: string): void;
|
|
1738
|
-
/** Azzera i connector che puntano a un node scomparso, Start compreso. */
|
|
1739
|
-
private static clearReferencesTo;
|
|
1740
|
-
/**
|
|
1741
|
-
* Rinomina un node riscrivendo **tutti** i riferimenti che lo raggiungono.
|
|
1742
|
-
* Nessuna primitiva del backend lo fa (§13.8): se l'editor offre la rinomina, la
|
|
1743
|
-
* riscrittura la deve fare lui. Copre `targetReference`, i riferimenti a risorsa e i
|
|
1744
|
-
* riferimenti a output automatico (`Vecchio.Campo` → `Nuovo.Campo`).
|
|
1745
|
-
*/
|
|
1746
|
-
renameNode(oldName: string, newName: string): void;
|
|
1747
|
-
/** Rinomina una risorsa, riscrivendo i riferimenti che la usano. */
|
|
1748
|
-
renameResource(collection: FlowResourceCollection, index: number, newName: string): void;
|
|
1749
|
-
/**
|
|
1750
|
-
* Riscrive ogni occorrenza di un nome nei campi che contengono riferimenti.
|
|
1751
|
-
* Cammina l'intero documento: e' l'unico modo per non dimenticare un campo, dato che
|
|
1752
|
-
* i riferimenti compaiono in una ventina di posti diversi (§4).
|
|
1753
|
-
*/
|
|
1754
|
-
private static rewriteReferences;
|
|
1755
|
-
/** Duplica un node con un nome nuovo, senza copiarne le uscite. */
|
|
1756
|
-
duplicateNode(name: string, newName: string, offset?: {
|
|
1757
|
-
x: number;
|
|
1758
|
-
y: number;
|
|
1759
|
-
}): void;
|
|
1760
|
-
/** Scrive la destinazione di un'uscita. `target` assente → il ramo resta incompleto. */
|
|
1761
|
-
setConnector(fromName: string, outletKey: string, target: string | undefined, isGoTo?: boolean): void;
|
|
1762
|
-
/** Rimuove un arco: il percorso finisce lì, che e' legittimo (§3.5). */
|
|
1763
|
-
removeConnector(fromName: string, outletKey: string): void;
|
|
1764
|
-
addResource(collection: FlowResourceCollection, resource: Record<string, unknown>): void;
|
|
1765
|
-
updateResource(collection: FlowResourceCollection, index: number, mutate: (resource: Record<string, unknown>) => void): void;
|
|
1766
|
-
removeResource(collection: FlowResourceCollection, index: number): void;
|
|
1767
|
-
/** Modifica i campi del documento radice (label, description, processType, …). */
|
|
1768
|
-
updateHeader(mutate: (definition: FlowDefinition) => void, options?: {
|
|
1769
|
-
silent?: boolean;
|
|
1770
|
-
}): void;
|
|
1771
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlowDocumentStore, never>;
|
|
1772
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FlowDocumentStore>;
|
|
1773
|
-
}
|
|
1640
|
+
/**
|
|
1641
|
+
* La gravita' di un rilievo, ridotta a tre secchi — FRONTEND.md §7.
|
|
1642
|
+
*
|
|
1643
|
+
* Perche' esiste: `FlowIssueSeverity` e' un tipo **aperto** (`'Error' | 'Warning' | 'Info' |
|
|
1644
|
+
* string`) perche' il backend puo' aggiungere livelli senza toccare il frontend (§13.11). La
|
|
1645
|
+
* conseguenza e' che confrontare la stringa cosi' com'e' e' un fallimento silenzioso: un
|
|
1646
|
+
* `error` minuscolo, un `WARN`, un `Log` non corrispondono a niente, e allora il filtro del
|
|
1647
|
+
* pannello non seleziona nulla, il conteggio resta a zero e il node sul canvas non si colora —
|
|
1648
|
+
* senza un errore da nessuna parte. Era il difetto dei filtri della §7.
|
|
1649
|
+
*
|
|
1650
|
+
* Da qui in avanti si confronta il **secchio**, non la stringa. I livelli che non conosciamo
|
|
1651
|
+
* cadono in `Info`: sono note, non problemi, e restano visibili invece di sparire.
|
|
1652
|
+
*/
|
|
1653
|
+
/** Le tre gravita' su cui l'interfaccia decide: colore, icona, filtro, attivazione. */
|
|
1654
|
+
type FlowSeverityBucket = 'Error' | 'Warning' | 'Info';
|
|
1655
|
+
/** Un livello sconosciuto e' una nota: si mostra, non si nasconde. */
|
|
1656
|
+
declare function severityBucket(severity: string | null | undefined): FlowSeverityBucket;
|
|
1657
|
+
/** L'ordine in cui si presentano: prima cio' che blocca l'attivazione. */
|
|
1658
|
+
declare const SEVERITY_BUCKETS: readonly FlowSeverityBucket[];
|
|
1659
|
+
declare const SEVERITY_LABEL: Record<FlowSeverityBucket, string>;
|
|
1660
|
+
/**
|
|
1661
|
+
* Caratteri Unicode, non icone: la libreria non porta asset e non dipende dal font di icone
|
|
1662
|
+
* dell'applicazione ospite — la stessa scelta di `element-icons.ts`. Sono glifi che rendono
|
|
1663
|
+
* bene dentro un pastiglia colorata a 14px e non hanno un fallback emoji che cambia forma da
|
|
1664
|
+
* un sistema all'altro.
|
|
1665
|
+
*/
|
|
1666
|
+
declare const SEVERITY_ICON: Record<FlowSeverityBucket, string>;
|
|
1774
1667
|
|
|
1775
1668
|
declare class FlowDictionaryStore {
|
|
1776
1669
|
private readonly api;
|
|
@@ -1960,6 +1853,313 @@ declare class FlowCatalogStore {
|
|
|
1960
1853
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FlowCatalogStore>;
|
|
1961
1854
|
}
|
|
1962
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
|
+
|
|
1963
2163
|
declare class FlowValidationStore {
|
|
1964
2164
|
private readonly api;
|
|
1965
2165
|
private readonly destroyRef;
|
|
@@ -1975,7 +2175,16 @@ declare class FlowValidationStore {
|
|
|
1975
2175
|
readonly issues: _angular_core.Signal<FlowValidationIssue[]>;
|
|
1976
2176
|
readonly errorCount: _angular_core.Signal<number>;
|
|
1977
2177
|
readonly warningCount: _angular_core.Signal<number>;
|
|
1978
|
-
|
|
2178
|
+
/**
|
|
2179
|
+
* I conteggi per gravita' **ricavati dai rilievi**, non quelli del risultato.
|
|
2180
|
+
*
|
|
2181
|
+
* Servono a etichettare i filtri del pannello, e un'etichetta di filtro deve contare
|
|
2182
|
+
* esattamente cio' che il filtro mostrera': `errorCount` del backend e' l'unica verita' per
|
|
2183
|
+
* l'attivazione (§8.3) ma non e' allineato ai secchi, quindi usarlo sul chip produrrebbe un
|
|
2184
|
+
* «Errori 3» che apre una lista di due. Il livello si normalizza (`severityBucket`) perche'
|
|
2185
|
+
* la stringa e' aperta.
|
|
2186
|
+
*/
|
|
2187
|
+
readonly issueCounts: _angular_core.Signal<Record<FlowSeverityBucket, number>>;
|
|
1979
2188
|
/**
|
|
1980
2189
|
* `false` finche' non e' arrivata una validazione: non presentare l'assenza di rilievi
|
|
1981
2190
|
* come garanzia di correttezza (§7, ultimo capoverso).
|
|
@@ -1989,7 +2198,7 @@ declare class FlowValidationStore {
|
|
|
1989
2198
|
readonly documentIssues: _angular_core.Signal<FlowValidationIssue[]>;
|
|
1990
2199
|
constructor();
|
|
1991
2200
|
/** La gravita' peggiore su un elemento, per decidere il colore del node sul canvas. */
|
|
1992
|
-
severityOf(elementName: string):
|
|
2201
|
+
severityOf(elementName: string): FlowSeverityBucket | null;
|
|
1993
2202
|
/**
|
|
1994
2203
|
* I rilievi che riguardano un campo dentro un elemento.
|
|
1995
2204
|
* `path` e' del tipo `rules[Approvato].connector.targetReference`: il confronto e' per
|
|
@@ -2203,8 +2412,12 @@ interface FlowCanvasNode {
|
|
|
2203
2412
|
showsOutletLabels: boolean;
|
|
2204
2413
|
/** `false` → nessun percorso lo raggiunge dallo Start: va reso "scollegato" (§6.4). */
|
|
2205
2414
|
isReachable: boolean;
|
|
2206
|
-
/**
|
|
2207
|
-
|
|
2415
|
+
/**
|
|
2416
|
+
* La gravita' peggiore dei rilievi sull'elemento (§7), **normalizzata**: il template
|
|
2417
|
+
* confronta `=== 'Error'`, e `FlowIssueSeverity` e' un tipo aperto in cui un `error`
|
|
2418
|
+
* minuscolo non colorerebbe niente.
|
|
2419
|
+
*/
|
|
2420
|
+
severity: FlowSeverityBucket | null;
|
|
2208
2421
|
/** Numero di rilievi, per il badge. */
|
|
2209
2422
|
issueCount: number;
|
|
2210
2423
|
/** L'elemento espone il proprio risultato sotto il proprio nome (§4.5). */
|
|
@@ -2258,6 +2471,12 @@ declare class FlowCanvasComponent {
|
|
|
2258
2471
|
* Assente → si usa il calcolo locale.
|
|
2259
2472
|
*/
|
|
2260
2473
|
readonly outline: _angular_core.InputSignal<FlowOutline | null>;
|
|
2474
|
+
/**
|
|
2475
|
+
* Lo decide il backend, non il client (§8): su una versione non modificabile i comandi che
|
|
2476
|
+
* mutano il documento non si offrono. Arriva come input invece di leggere la sessione,
|
|
2477
|
+
* perche' il canvas resti montabile da solo.
|
|
2478
|
+
*/
|
|
2479
|
+
readonly isEditable: _angular_core.InputSignal<boolean>;
|
|
2261
2480
|
readonly selectionChange: _angular_core.OutputEmitterRef<string | null>;
|
|
2262
2481
|
readonly nodeOpened: _angular_core.OutputEmitterRef<string>;
|
|
2263
2482
|
readonly nodeRemoveRequested: _angular_core.OutputEmitterRef<string>;
|
|
@@ -2270,6 +2489,28 @@ declare class FlowCanvasComponent {
|
|
|
2270
2489
|
x: number;
|
|
2271
2490
|
y: number;
|
|
2272
2491
|
}>;
|
|
2492
|
+
private readonly canvas;
|
|
2493
|
+
private readonly _hasMovedViewport;
|
|
2494
|
+
/** L'utente ha zoomato o spostato la vista: il comando per rimetterla a posto ha senso. */
|
|
2495
|
+
readonly hasMovedViewport: _angular_core.Signal<boolean>;
|
|
2496
|
+
/** Il primo `fNodesRendered` inquadra, i successivi no: rifarlo combatterebbe con l'utente. */
|
|
2497
|
+
private hasFramedOnce;
|
|
2498
|
+
/**
|
|
2499
|
+
* `fitToScreen` va chiamato **dopo** che i node sono stati renderizzati: prima, la libreria
|
|
2500
|
+
* non conosce ancora le loro dimensioni e inquadra la vista sbagliata (FF1009).
|
|
2501
|
+
*
|
|
2502
|
+
* Con un solo node (un flow appena creato ha solo lo Start) non si inquadra niente: la
|
|
2503
|
+
* vista si spalancherebbe su una card sola.
|
|
2504
|
+
*/
|
|
2505
|
+
onNodesRendered(): void;
|
|
2506
|
+
/**
|
|
2507
|
+
* Qualunque zoom o panoramica accende il pulsante. `frameFlow` passa
|
|
2508
|
+
* `emitCanvasChange: false`, quindi il ritorno alla vista iniziale non rientra da qui e il
|
|
2509
|
+
* pulsante si spegne invece di restare acceso per sempre.
|
|
2510
|
+
*/
|
|
2511
|
+
onCanvasChange(): void;
|
|
2512
|
+
resetViewport(): void;
|
|
2513
|
+
private frameFlow;
|
|
2273
2514
|
/** Raggiungibilita': backend se c'e', locale altrimenti. */
|
|
2274
2515
|
private readonly reachability;
|
|
2275
2516
|
readonly nodes: _angular_core.Signal<FlowCanvasNode[]>;
|
|
@@ -2336,6 +2577,12 @@ declare class FlowCanvasComponent {
|
|
|
2336
2577
|
* dell'area sottostante.
|
|
2337
2578
|
*/
|
|
2338
2579
|
onEditClick(event: Event, name: string): void;
|
|
2580
|
+
/**
|
|
2581
|
+
* `stopPropagation` come per ✎: senza, il clic arriva anche al node e la selezione cambia
|
|
2582
|
+
* mentre l'elemento sta sparendo. La rimozione la esegue il documento, non il canvas:
|
|
2583
|
+
* `removeNode` toglie anche i connector che lo puntavano.
|
|
2584
|
+
*/
|
|
2585
|
+
onRemoveClick(event: Event, name: string): void;
|
|
2339
2586
|
connectorIdOf(node: FlowCanvasNode, outletKey: string): string;
|
|
2340
2587
|
targetIdOf(node: FlowCanvasNode): string;
|
|
2341
2588
|
isSelected(node: FlowCanvasNode): boolean;
|
|
@@ -2344,7 +2591,7 @@ declare class FlowCanvasComponent {
|
|
|
2344
2591
|
/** Classe della fascia colorata, per categoria del dizionario. */
|
|
2345
2592
|
categoryClass(node: FlowCanvasNode): string;
|
|
2346
2593
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlowCanvasComponent, never>;
|
|
2347
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlowCanvasComponent, "fb-flow-canvas", never, { "selectedName": { "alias": "selectedName"; "required": false; "isSignal": true; }; "outline": { "alias": "outline"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "nodeOpened": "nodeOpened"; "nodeRemoveRequested": "nodeRemoveRequested"; "nodeDuplicateRequested": "nodeDuplicateRequested"; "elementDropped": "elementDropped"; }, never, never, true, never>;
|
|
2594
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlowCanvasComponent, "fb-flow-canvas", never, { "selectedName": { "alias": "selectedName"; "required": false; "isSignal": true; }; "outline": { "alias": "outline"; "required": false; "isSignal": true; }; "isEditable": { "alias": "isEditable"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "nodeOpened": "nodeOpened"; "nodeRemoveRequested": "nodeRemoveRequested"; "nodeDuplicateRequested": "nodeDuplicateRequested"; "elementDropped": "elementDropped"; }, never, never, true, never>;
|
|
2348
2595
|
}
|
|
2349
2596
|
|
|
2350
2597
|
/** Il gesto scelto sulla palette: un tipo e, dove esiste, la sua variante (§5.5). */
|
|
@@ -2436,13 +2683,26 @@ declare class ReferencePickerComponent {
|
|
|
2436
2683
|
readonly query: _angular_core.WritableSignal<string>;
|
|
2437
2684
|
constructor();
|
|
2438
2685
|
/**
|
|
2439
|
-
*
|
|
2440
|
-
*
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
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;
|
|
2446
2706
|
readonly options: _angular_core.Signal<FlowReference[]>;
|
|
2447
2707
|
/** Le opzioni raggruppate per `kind`, così gli output automatici si distinguono. */
|
|
2448
2708
|
readonly groups: _angular_core.Signal<{
|
|
@@ -2454,20 +2714,23 @@ declare class ReferencePickerComponent {
|
|
|
2454
2714
|
/**
|
|
2455
2715
|
* Stato del valore corrente rispetto all'elenco.
|
|
2456
2716
|
* - `known`: presente nell'elenco;
|
|
2457
|
-
* - `navigated`: la radice e' nota ma
|
|
2458
|
-
*
|
|
2459
|
-
* 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;
|
|
2460
2719
|
* - `host`: scope del sistema ospite che **non dichiara percorsi**: non verificabile (§4.1);
|
|
2461
|
-
* - `member`:
|
|
2462
|
-
* - `memberUnknown`:
|
|
2463
|
-
* `
|
|
2464
|
-
* - `memberNotWritable`: il
|
|
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
|
|
2465
2724
|
* destinazione: `TARGET_NOT_WRITABLE`;
|
|
2725
|
+
* - `pathUnverified`: la catena si interrompe (`PATH_NOT_VERIFIABLE`): avviso, non errore;
|
|
2466
2726
|
* - `unknown`: nessuna corrispondenza: si avvisa, senza bloccare. Ci finisce anche il
|
|
2467
2727
|
* percorso inesistente di uno scope che i percorsi li dichiara, perche' lì il backend
|
|
2468
2728
|
* risponderebbe `GLOBAL_UNKNOWN`.
|
|
2469
2729
|
*/
|
|
2470
|
-
readonly valueState: _angular_core.Signal<"empty" | "known" | "navigated" | "host" | "member" | "memberUnknown" | "memberNotWritable" | "
|
|
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;
|
|
2471
2734
|
readonly hint: _angular_core.Signal<string | null>;
|
|
2472
2735
|
/** I due stati che sono errori e non avvisi: il colore deve dirlo. */
|
|
2473
2736
|
readonly isHintError: _angular_core.Signal<boolean>;
|
|
@@ -2477,7 +2740,15 @@ declare class ReferencePickerComponent {
|
|
|
2477
2740
|
toggle(): void;
|
|
2478
2741
|
onQuery(value: string): void;
|
|
2479
2742
|
choose(reference: FlowReference): void;
|
|
2480
|
-
/**
|
|
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. */
|
|
2481
2752
|
onManualInput(value: string): void;
|
|
2482
2753
|
clear(): void;
|
|
2483
2754
|
describe(reference: FlowReference): string;
|
|
@@ -2535,29 +2806,55 @@ declare class FieldPickerComponent {
|
|
|
2535
2806
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
2536
2807
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
2537
2808
|
readonly valueChange: _angular_core.OutputEmitterRef<string | undefined>;
|
|
2538
|
-
private readonly fields;
|
|
2539
|
-
private readonly loadFailed;
|
|
2540
2809
|
readonly isOpen: _angular_core.WritableSignal<boolean>;
|
|
2541
2810
|
/** Il testo digitato mentre il pannello e' aperto: filtra l'elenco. */
|
|
2542
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;
|
|
2543
2818
|
constructor();
|
|
2544
2819
|
readonly text: _angular_core.Signal<string>;
|
|
2545
|
-
|
|
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). */
|
|
2546
2826
|
readonly hasCatalog: _angular_core.Signal<boolean>;
|
|
2547
|
-
/**
|
|
2548
|
-
readonly
|
|
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>;
|
|
2549
2831
|
readonly isUnknown: _angular_core.Signal<boolean>;
|
|
2550
|
-
/**
|
|
2551
|
-
readonly
|
|
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>;
|
|
2552
2840
|
readonly describeValue: _angular_core.Signal<string | null>;
|
|
2841
|
+
/** Catalogo non raggiungibile sulla **radice**: il campo resta scrivibile a mano, non bloccato. */
|
|
2553
2842
|
readonly loadErrored: _angular_core.Signal<boolean>;
|
|
2554
2843
|
open(): void;
|
|
2555
2844
|
close(): void;
|
|
2556
2845
|
toggle(): void;
|
|
2557
2846
|
onInput(text: string): void;
|
|
2558
|
-
choose(
|
|
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;
|
|
2559
2856
|
clear(): void;
|
|
2560
|
-
describe(
|
|
2857
|
+
describe(entry: PathEntry): string;
|
|
2561
2858
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FieldPickerComponent, never>;
|
|
2562
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>;
|
|
2563
2860
|
}
|
|
@@ -2631,55 +2928,76 @@ declare class StructureMemberPickerComponent {
|
|
|
2631
2928
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
2632
2929
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
2633
2930
|
readonly valueChange: _angular_core.OutputEmitterRef<string | undefined>;
|
|
2634
|
-
/**
|
|
2635
|
-
* §4.7.1 — non basta l'elenco: serve l'**esito**. Elenco vuoto perche' i membri non sono
|
|
2636
|
-
* dichiarati (si digita a mano) e classe non registrata (non c'e' niente da digitare) hanno
|
|
2637
|
-
* la stessa lista e messaggi opposti.
|
|
2638
|
-
*/
|
|
2639
|
-
private readonly result;
|
|
2640
|
-
private readonly members;
|
|
2641
2931
|
readonly isOpen: _angular_core.WritableSignal<boolean>;
|
|
2642
2932
|
/** Il testo digitato mentre il pannello e' aperto: filtra l'elenco. */
|
|
2643
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;
|
|
2644
2940
|
constructor();
|
|
2645
2941
|
readonly text: _angular_core.Signal<string>;
|
|
2646
|
-
/**
|
|
2647
|
-
readonly
|
|
2648
|
-
|
|
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>;
|
|
2649
2946
|
/**
|
|
2650
|
-
*
|
|
2651
|
-
*
|
|
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'.
|
|
2652
2956
|
*/
|
|
2653
2957
|
readonly classLabel: _angular_core.Signal<string>;
|
|
2654
|
-
/**
|
|
2958
|
+
/** `true` se la tappa in cui si scrive ha un elenco **autorevole** (§4.7.1). */
|
|
2655
2959
|
readonly hasCatalog: _angular_core.Signal<boolean>;
|
|
2656
|
-
/**
|
|
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. */
|
|
2657
2964
|
readonly isClassUnknown: _angular_core.Signal<boolean>;
|
|
2658
2965
|
/** Classe valida, membri non dichiarati: si digita, e non si segnala niente. */
|
|
2659
2966
|
readonly isUndeclared: _angular_core.Signal<boolean>;
|
|
2660
|
-
/**
|
|
2661
|
-
|
|
2662
|
-
/** `true` se il valore naviga dentro un membro: oltre il primo segmento non si verifica. */
|
|
2663
|
-
readonly isNestedPath: _angular_core.Signal<boolean>;
|
|
2664
|
-
private readonly declared;
|
|
2967
|
+
/** Catalogo assente per un motivo che non riguarda la classe: "non lo so". */
|
|
2968
|
+
readonly loadErrored: _angular_core.Signal<boolean>;
|
|
2665
2969
|
readonly isUnknown: _angular_core.Signal<boolean>;
|
|
2666
|
-
/**
|
|
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
|
+
*/
|
|
2667
2977
|
readonly unknownMessage: _angular_core.Signal<string>;
|
|
2978
|
+
readonly notVerifiableMessage: _angular_core.Signal<string>;
|
|
2668
2979
|
/**
|
|
2669
|
-
* Un
|
|
2670
|
-
* 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).
|
|
2671
2983
|
*/
|
|
2672
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.">;
|
|
2673
2986
|
readonly describeValue: _angular_core.Signal<string | null>;
|
|
2674
|
-
/** Catalogo assente per un motivo che non riguarda la classe: "non lo so". */
|
|
2675
|
-
readonly loadErrored: _angular_core.Signal<boolean>;
|
|
2676
2987
|
open(): void;
|
|
2677
2988
|
close(): void;
|
|
2678
2989
|
toggle(): void;
|
|
2679
2990
|
onInput(text: string): void;
|
|
2680
|
-
choose(
|
|
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;
|
|
2681
2999
|
clear(): void;
|
|
2682
|
-
describe(
|
|
3000
|
+
describe(entry: PathEntry): string;
|
|
2683
3001
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StructureMemberPickerComponent, never>;
|
|
2684
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>;
|
|
2685
3003
|
}
|
|
@@ -3305,7 +3623,7 @@ declare class ResourcePanelComponent {
|
|
|
3305
3623
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ResourcePanelComponent, "fb-resource-panel", never, {}, { "closed": "closed"; }, never, never, true, never>;
|
|
3306
3624
|
}
|
|
3307
3625
|
|
|
3308
|
-
type SeverityFilter = 'all' |
|
|
3626
|
+
type SeverityFilter = 'all' | FlowSeverityBucket;
|
|
3309
3627
|
declare class ProblemsPanelComponent {
|
|
3310
3628
|
private readonly validation;
|
|
3311
3629
|
/** Chiede di selezionare l'elemento: `$start` per i rilievi sul documento. */
|
|
@@ -3315,12 +3633,25 @@ declare class ProblemsPanelComponent {
|
|
|
3315
3633
|
readonly isRunning: _angular_core.Signal<boolean>;
|
|
3316
3634
|
readonly hasResult: _angular_core.Signal<boolean>;
|
|
3317
3635
|
readonly lastError: _angular_core.Signal<string | null>;
|
|
3636
|
+
/**
|
|
3637
|
+
* I conteggi dei chip vengono dai rilievi, non dal risultato: il numero sul filtro deve
|
|
3638
|
+
* essere quello che il filtro apre (vedi `FlowValidationStore.issueCounts`).
|
|
3639
|
+
*/
|
|
3640
|
+
private readonly counts;
|
|
3318
3641
|
readonly errorCount: _angular_core.Signal<number>;
|
|
3319
3642
|
readonly warningCount: _angular_core.Signal<number>;
|
|
3320
3643
|
readonly infoCount: _angular_core.Signal<number>;
|
|
3644
|
+
readonly totalCount: _angular_core.Signal<number>;
|
|
3321
3645
|
readonly issues: _angular_core.Signal<FlowValidationIssue[]>;
|
|
3322
3646
|
readonly isClean: _angular_core.Signal<boolean>;
|
|
3647
|
+
/** Ci sono rilievi, ma il filtro attivo non ne mostra nessuno: va detto, non lasciato in bianco. */
|
|
3648
|
+
readonly isFilteredEmpty: _angular_core.Signal<boolean>;
|
|
3649
|
+
readonly activeFilterLabel: _angular_core.Signal<string>;
|
|
3650
|
+
/** Un secondo clic sul filtro attivo torna a «Tutti»: e' l'unico modo per uscirne col mouse dov'e'. */
|
|
3323
3651
|
setFilter(filter: SeverityFilter): void;
|
|
3652
|
+
bucketOf(issue: FlowValidationIssue): FlowSeverityBucket;
|
|
3653
|
+
iconText(bucket: FlowSeverityBucket): string;
|
|
3654
|
+
labelText(bucket: FlowSeverityBucket): string;
|
|
3324
3655
|
focus(issue: FlowValidationIssue): void;
|
|
3325
3656
|
close(): void;
|
|
3326
3657
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProblemsPanelComponent, never>;
|
|
@@ -3524,6 +3855,14 @@ declare class FlowBuilderComponent {
|
|
|
3524
3855
|
setInterviewLabel(value: string): void;
|
|
3525
3856
|
setProcessType(value: string): void;
|
|
3526
3857
|
readonly processTypes: _angular_core.Signal<_esfaenza_flow_builder.FlowDictionaryEntry[]>;
|
|
3858
|
+
/**
|
|
3859
|
+
* Il `processType` del documento non e' fra quelli del dizionario. Non e' un caso di scuola:
|
|
3860
|
+
* basta che il dizionario arrivi senza `processTypes`, o che il backend salvi una scrittura
|
|
3861
|
+
* diversa da quella che elenca, e la select — che non ha un'opzione corrispondente — si
|
|
3862
|
+
* presenta bianca su un flow che invece ha il suo tipo. Il template aggiunge l'opzione
|
|
3863
|
+
* mancante; qui si decide solo se serve.
|
|
3864
|
+
*/
|
|
3865
|
+
readonly isProcessTypeOutOfCatalog: _angular_core.Signal<boolean>;
|
|
3527
3866
|
/** `AutoLaunched` + screen e' un errore di validazione: si segnala subito (§13.6). */
|
|
3528
3867
|
readonly hasScreensInAutoLaunched: _angular_core.Signal<boolean>;
|
|
3529
3868
|
/** Un flow `Screen` senza screen e' `SCREEN_FLOW_WITHOUT_SCREENS`. */
|
|
@@ -3606,5 +3945,5 @@ declare class SelectValueDirective implements AfterViewChecked {
|
|
|
3606
3945
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectValueDirective, "select[fbValue]", never, { "fbValue": { "alias": "fbValue"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3607
3946
|
}
|
|
3608
3947
|
|
|
3609
|
-
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, 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, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, uniqueFlowName, variantFieldOf, variantOf, variantPresetOf };
|
|
3610
|
-
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, 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 };
|