@esfaenza/flow-builder 20.3.20 → 20.3.21
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 +30 -0
- package/fesm2022/esfaenza-flow-builder.mjs +828 -74
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +315 -11
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -2676,15 +2676,43 @@ declare class FlowDocumentStore {
|
|
|
2676
2676
|
renameResource(collection: FlowResourceCollection, index: number, newName: string): void;
|
|
2677
2677
|
/**
|
|
2678
2678
|
* Riscrive ogni occorrenza di un nome nei campi che contengono riferimenti.
|
|
2679
|
-
*
|
|
2680
|
-
*
|
|
2679
|
+
*
|
|
2680
|
+
* L'implementazione sta in `core/flow-clipboard.ts` perche' la usa anche l'incolla, sul solo
|
|
2681
|
+
* frammento invece che sul documento: l'elenco dei campi-riferimento deve essere **uno**.
|
|
2681
2682
|
*/
|
|
2682
2683
|
private static rewriteReferences;
|
|
2683
|
-
/**
|
|
2684
|
-
|
|
2684
|
+
/**
|
|
2685
|
+
* Duplica uno o piu' node, ritornando i nomi creati.
|
|
2686
|
+
*
|
|
2687
|
+
* E' un copia-e-incolla nello stesso documento, e passa dallo stesso motore: e' cio' che gli
|
|
2688
|
+
* fa rinominare **tutto** cio' che collide — non solo il node, ma anche i suoi step, i campi
|
|
2689
|
+
* di uno screen dinamico e le sue screen action, che stanno nello stesso spazio dei nomi
|
|
2690
|
+
* (§3.3) — e riscrivere i riferimenti interni al blocco di conseguenza. Duplicare uno screen
|
|
2691
|
+
* dinamico copiandolo e basta produceva un `NAME_DUPLICATED` per ogni campo.
|
|
2692
|
+
*
|
|
2693
|
+
* Le uscite **verso l'esterno** non si copiano (duplicherebbero rami che l'utente non ha
|
|
2694
|
+
* disegnato); quelle interne al blocco sì, ed e' cio' che rende utile duplicare due elementi
|
|
2695
|
+
* collegati invece che uno alla volta.
|
|
2696
|
+
*/
|
|
2697
|
+
duplicateNodes(names: readonly string[], offset?: {
|
|
2685
2698
|
x: number;
|
|
2686
2699
|
y: number;
|
|
2687
|
-
}):
|
|
2700
|
+
}): string[];
|
|
2701
|
+
/**
|
|
2702
|
+
* Incolla gli appunti seguendo il piano già mostrato all'utente, in **un solo** passo di
|
|
2703
|
+
* storico: un incolla che si annulla in sette volte — un elemento, una variabile, un altro
|
|
2704
|
+
* elemento — non e' il gesto che l'utente ha compiuto.
|
|
2705
|
+
*
|
|
2706
|
+
* Ritorna i nomi creati, che sono cio' che va selezionato dopo: senza, la selezione resterebbe
|
|
2707
|
+
* sull'elemento da cui si e' copiato e il blocco appena incollato non si saprebbe dov'e'.
|
|
2708
|
+
*/
|
|
2709
|
+
pasteClipboard(payload: FlowClipboardPayload, plan: FlowPastePlan, options: {
|
|
2710
|
+
createMissingResources: boolean;
|
|
2711
|
+
offset?: {
|
|
2712
|
+
x: number;
|
|
2713
|
+
y: number;
|
|
2714
|
+
};
|
|
2715
|
+
}): string[];
|
|
2688
2716
|
/** Scrive la destinazione di un'uscita. `target` assente → il ramo si stacca del tutto. */
|
|
2689
2717
|
setConnector(fromName: string, outletKey: string, target: string | undefined, isGoTo?: boolean): void;
|
|
2690
2718
|
/** Rimuove un arco: il percorso finisce lì, che e' legittimo (§3.5). */
|
|
@@ -2700,6 +2728,200 @@ declare class FlowDocumentStore {
|
|
|
2700
2728
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FlowDocumentStore>;
|
|
2701
2729
|
}
|
|
2702
2730
|
|
|
2731
|
+
/**
|
|
2732
|
+
* Copia e incolla di **elementi** — la logica pura, senza Angular e senza storage.
|
|
2733
|
+
*
|
|
2734
|
+
* Il gesto e' quello che ci si aspetta da un editor, ma il contratto lo rende meno banale di
|
|
2735
|
+
* un `JSON.parse(JSON.stringify(...))`, e le tre cose che lo complicano sono tutte della §3.3:
|
|
2736
|
+
*
|
|
2737
|
+
* 1. **lo spazio dei nomi e' unico e case-insensitive.** Un elemento incollato non porta solo
|
|
2738
|
+
* il proprio nome: porta anche quelli dei suoi step di orchestrazione, dei campi di uno
|
|
2739
|
+
* screen dinamico e delle sue screen action, che sono nomi come gli altri (§5.2, §5.14).
|
|
2740
|
+
* Un omonimo e' `NAME_DUPLICATED`, quindi tutto cio' che collide va rinominato **prima**
|
|
2741
|
+
* di entrare nel documento;
|
|
2742
|
+
* 2. **rinominare non aggiorna i riferimenti** e nessuna primitiva lo fa (§13.8). Se il nome
|
|
2743
|
+
* cambia all'ingresso, i riferimenti interni al blocco vanno riscritti qui: le condizioni
|
|
2744
|
+
* che guardano un campo, i target dei connector interni, gli output automatici
|
|
2745
|
+
* (`Leggi_Ordine.Numero`);
|
|
2746
|
+
* 3. **un elemento non e' autosufficiente.** Referenzia risorse — variabili, formule, choice —
|
|
2747
|
+
* che nel flow di destinazione possono non esistere. Portarsele dietro e' il senso di
|
|
2748
|
+
* «copiare senza riconfigurare»; inventarle in silenzio no, ed e' per questo che
|
|
2749
|
+
* {@link planPaste} produce un **piano** che l'interfaccia mostra prima di applicarlo.
|
|
2750
|
+
*
|
|
2751
|
+
* Cio' che di proposito **non** si copia: le uscite che escono dal blocco. Un connector che
|
|
2752
|
+
* punta a un elemento rimasto nell'altro flow sarebbe `CONNECTOR_TARGET_UNKNOWN`, cioe' un
|
|
2753
|
+
* errore che blocca l'attivazione; quelle **interne** al blocco si conservano e si rimappano,
|
|
2754
|
+
* ed e' cio' che rende utile copiare due elementi insieme invece che uno alla volta.
|
|
2755
|
+
*/
|
|
2756
|
+
|
|
2757
|
+
/**
|
|
2758
|
+
* I campi il cui valore e' un riferimento a un node o a una risorsa.
|
|
2759
|
+
*
|
|
2760
|
+
* Elenco unico, condiviso con la rinomina: due elenchi che devono restare uguali diventano due
|
|
2761
|
+
* elenchi diversi al primo campo aggiunto, e il campo dimenticato non da' nessun errore —
|
|
2762
|
+
* lascia un riferimento al nome vecchio che si scopre solo alla validazione (§13.8).
|
|
2763
|
+
*/
|
|
2764
|
+
declare const FLOW_REFERENCE_FIELDS: ReadonlySet<string>;
|
|
2765
|
+
/**
|
|
2766
|
+
* Riscrive ogni occorrenza di un nome nei campi che contengono riferimenti.
|
|
2767
|
+
*
|
|
2768
|
+
* Cammina tutto cio' che gli si passa — un documento intero per la rinomina, il solo frammento
|
|
2769
|
+
* copiato per l'incolla — perche' i riferimenti compaiono in una ventina di posti diversi (§4)
|
|
2770
|
+
* e l'elenco dei posti sarebbe la cosa che si dimentica di aggiornare.
|
|
2771
|
+
*/
|
|
2772
|
+
declare function rewriteReferences(root: unknown, oldName: string, newName: string): void;
|
|
2773
|
+
/**
|
|
2774
|
+
* Marcatore del formato. Sta scritto dentro il payload perche' gli appunti viaggiano anche
|
|
2775
|
+
* fuori dall'editor (storage del browser, incolla di un JSON a mano): leggere qualcosa che non
|
|
2776
|
+
* e' nostro deve fallire con un messaggio, non con un documento rovinato.
|
|
2777
|
+
*/
|
|
2778
|
+
declare const FLOW_CLIPBOARD_KIND = "flow-builder/elements";
|
|
2779
|
+
declare const FLOW_CLIPBOARD_VERSION = 1;
|
|
2780
|
+
interface FlowClipboardNode {
|
|
2781
|
+
collection: FlowNodeCollection;
|
|
2782
|
+
node: FlowAnyNode;
|
|
2783
|
+
}
|
|
2784
|
+
interface FlowClipboardResource {
|
|
2785
|
+
collection: FlowResourceCollection;
|
|
2786
|
+
resource: Record<string, unknown>;
|
|
2787
|
+
}
|
|
2788
|
+
interface FlowClipboardPayload {
|
|
2789
|
+
kind: typeof FLOW_CLIPBOARD_KIND;
|
|
2790
|
+
version: number;
|
|
2791
|
+
/** Da dove viene: serve solo a dirlo nella finestra dell'incolla. */
|
|
2792
|
+
flowName?: string;
|
|
2793
|
+
/**
|
|
2794
|
+
* Il `processType` di origine. Non blocca niente: serve ad avvisare quando si incolla in un
|
|
2795
|
+
* flow di tipo diverso, dove le globali disponibili cambiano — `$Record` non esiste in uno
|
|
2796
|
+
* screen flow (§4.1).
|
|
2797
|
+
*/
|
|
2798
|
+
processType?: string;
|
|
2799
|
+
nodes: FlowClipboardNode[];
|
|
2800
|
+
/** Le risorse referenziate dal blocco, copiate per intero. */
|
|
2801
|
+
resources: FlowClipboardResource[];
|
|
2802
|
+
/**
|
|
2803
|
+
* Le radici referenziate dal blocco che non sono ne' fra i node ne' fra le risorse copiate:
|
|
2804
|
+
* globali (`$Flow`, `$Record`), elementi rimasti nel flow di origine, campi di uno screen non
|
|
2805
|
+
* copiato. Sono cio' che l'incolla non puo' portarsi dietro, e quindi cio' che va detto.
|
|
2806
|
+
*/
|
|
2807
|
+
externalReferences: string[];
|
|
2808
|
+
}
|
|
2809
|
+
declare function isClipboardPayload(value: unknown): value is FlowClipboardPayload;
|
|
2810
|
+
/**
|
|
2811
|
+
* I nomi **dichiarati** dentro un node, oltre al suo: step di orchestrazione, campi di screen
|
|
2812
|
+
* dinamico (contenitori compresi) e screen action. Stanno tutti nello stesso spazio dei nomi
|
|
2813
|
+
* del node (§3.3), quindi collidono come lui e vanno rinominati come lui.
|
|
2814
|
+
*
|
|
2815
|
+
* Si cammina la struttura sapendo **dove** stanno, invece di cercare ogni `name` nell'albero:
|
|
2816
|
+
* `inputParameters[].name` e' il nome di un parametro dell'action, non una risorsa del flow, e
|
|
2817
|
+
* rinominarlo perche' per caso coincide con un campo copiato romperebbe la chiamata.
|
|
2818
|
+
*/
|
|
2819
|
+
declare function innerNamesOf(node: FlowAnyNode): string[];
|
|
2820
|
+
/**
|
|
2821
|
+
* Le **radici** dei riferimenti presenti in un frammento: di `Leggi_Ordine.Numero` la radice e'
|
|
2822
|
+
* `Leggi_Ordine`, ed e' quella che deve esistere nella destinazione (§6.4 — l'elenco dei
|
|
2823
|
+
* riferimenti porta le radici, non i percorsi).
|
|
2824
|
+
*
|
|
2825
|
+
* I `targetReference` restano fuori: sono i connector, e quelli li tratta il taglio delle
|
|
2826
|
+
* uscite. Contarli come riferimenti farebbe comparire fra le dipendenze l'elemento a valle,
|
|
2827
|
+
* che e' esattamente cio' che copiare un blocco non si porta dietro.
|
|
2828
|
+
*/
|
|
2829
|
+
declare function referencedRootsOf(fragment: unknown): string[];
|
|
2830
|
+
/**
|
|
2831
|
+
* Costruisce gli appunti a partire dalla selezione.
|
|
2832
|
+
*
|
|
2833
|
+
* Le uscite si tengono **solo** se restano dentro il blocco; le altre si tolgono del tutto e
|
|
2834
|
+
* non si azzerano: un connector dichiarato senza destinazione e' `CONNECTOR_TARGET_MISSING`,
|
|
2835
|
+
* un avviso che l'utente non ha nessun modo di far sparire se non riaprendo il ramo, mentre un
|
|
2836
|
+
* ramo senza connector e' «il percorso finisce qui», che e' cio' che e' davvero successo (§3.5).
|
|
2837
|
+
*/
|
|
2838
|
+
declare function buildClipboardPayload(input: {
|
|
2839
|
+
nodes: FlowNodeRef[];
|
|
2840
|
+
resources: FlowResourceRef[];
|
|
2841
|
+
/** I nomi selezionati. Lo Start non si copia: e' uno per flow (§3.4). */
|
|
2842
|
+
names: readonly string[];
|
|
2843
|
+
flowName?: string;
|
|
2844
|
+
processType?: string;
|
|
2845
|
+
}): FlowClipboardPayload | null;
|
|
2846
|
+
interface FlowPasteRename {
|
|
2847
|
+
/** Cosa e' il nome: serve a raccontarlo («l’elemento», «il campo»). */
|
|
2848
|
+
kind: 'node' | 'inner' | 'resource';
|
|
2849
|
+
from: string;
|
|
2850
|
+
to: string;
|
|
2851
|
+
}
|
|
2852
|
+
interface FlowPasteResource {
|
|
2853
|
+
collection: FlowResourceCollection;
|
|
2854
|
+
name: string;
|
|
2855
|
+
/** `reused`: nella destinazione esiste già un nome uguale, e si usa quello. */
|
|
2856
|
+
status: 'new' | 'reused';
|
|
2857
|
+
}
|
|
2858
|
+
interface FlowPastePlan {
|
|
2859
|
+
nodeCount: number;
|
|
2860
|
+
renames: FlowPasteRename[];
|
|
2861
|
+
resources: FlowPasteResource[];
|
|
2862
|
+
/**
|
|
2863
|
+
* Riferimenti che nella destinazione non esistono e che l'incolla non puo' creare: globali di
|
|
2864
|
+
* un altro `processType`, elementi rimasti nel flow di origine. Diventeranno i normali
|
|
2865
|
+
* `REFERENCE_UNKNOWN` del pannello dei problemi.
|
|
2866
|
+
*/
|
|
2867
|
+
unresolved: string[];
|
|
2868
|
+
/** Il flow di origine aveva un altro `processType`: le globali disponibili sono altre (§4.1). */
|
|
2869
|
+
processTypeMismatch: string | null;
|
|
2870
|
+
}
|
|
2871
|
+
/**
|
|
2872
|
+
* Decide **prima** di toccare il documento cosa cambierebbe: quali nomi vanno rinominati, quali
|
|
2873
|
+
* risorse nascono e quali si riusano, cosa resta irrisolto. La finestra dell'incolla mostra
|
|
2874
|
+
* questo, e `applyPaste` lo esegue senza deciderne piu' niente.
|
|
2875
|
+
*
|
|
2876
|
+
* Una risorsa il cui nome esiste già nella destinazione si **riusa**: e' quasi sempre la stessa
|
|
2877
|
+
* variabile di prima (stesso flow, altra versione), e crearne una omonima sarebbe comunque
|
|
2878
|
+
* `NAME_DUPLICATED`. Rinominarla d'ufficio sarebbe peggio: i riferimenti del blocco
|
|
2879
|
+
* continuerebbero a puntare a quella esistente pur avendone appena creata una identica.
|
|
2880
|
+
*/
|
|
2881
|
+
declare function planPaste(payload: FlowClipboardPayload, target: {
|
|
2882
|
+
usedNames: readonly string[];
|
|
2883
|
+
processType?: string;
|
|
2884
|
+
}): FlowPastePlan;
|
|
2885
|
+
/**
|
|
2886
|
+
* Applica gli appunti a un documento di lavoro, seguendo il piano.
|
|
2887
|
+
*
|
|
2888
|
+
* L'ordine conta: **prima** si rinomina dentro il frammento — nomi dichiarati e riferimenti —
|
|
2889
|
+
* e **poi** si innesta. Riscrivere dopo l'innesto significherebbe camminare tutto il documento
|
|
2890
|
+
* per ogni nome, e riscrivere anche i riferimenti degli elementi che c'erano già: un elemento
|
|
2891
|
+
* di destinazione che citava `Priorita` finirebbe a citare `Priorita_copia`.
|
|
2892
|
+
*/
|
|
2893
|
+
declare function applyPaste(draft: FlowDefinition, payload: FlowClipboardPayload, plan: FlowPastePlan, options: {
|
|
2894
|
+
createMissingResources: boolean;
|
|
2895
|
+
offset?: {
|
|
2896
|
+
x: number;
|
|
2897
|
+
y: number;
|
|
2898
|
+
};
|
|
2899
|
+
}): string[];
|
|
2900
|
+
/** Il tipo dell'elemento a partire dalla collection: serve solo a raccontare il blocco. */
|
|
2901
|
+
declare function typeOfCollection(collection: FlowNodeCollection): string;
|
|
2902
|
+
|
|
2903
|
+
declare class FlowClipboardService {
|
|
2904
|
+
/** La copia in memoria: fonte di verita' quando lo storage non c'e' o rifiuta. */
|
|
2905
|
+
private memory;
|
|
2906
|
+
private readonly _revision;
|
|
2907
|
+
constructor();
|
|
2908
|
+
private storage;
|
|
2909
|
+
write(payload: FlowClipboardPayload): void;
|
|
2910
|
+
read(): FlowClipboardPayload | null;
|
|
2911
|
+
/**
|
|
2912
|
+
* C'e' qualcosa da incollare. E' un signal e non un booleano calcolato al momento perche' il
|
|
2913
|
+
* comando «Incolla» sta in una toolbar `OnPush`: senza un segnale che cambia, il pulsante
|
|
2914
|
+
* resterebbe spento fino al successivo giro di change detection.
|
|
2915
|
+
*/
|
|
2916
|
+
readonly hasContent: _angular_core.WritableSignal<boolean>;
|
|
2917
|
+
/** Da chiamare dove serve il valore aggiornato: rilegge lo storage e aggiorna il signal. */
|
|
2918
|
+
refresh(): boolean;
|
|
2919
|
+
/** Cambia a ogni scrittura, anche da un'altra scheda: chi vuole reagire osservi questo. */
|
|
2920
|
+
readonly revision: _angular_core.Signal<number>;
|
|
2921
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlowClipboardService, never>;
|
|
2922
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FlowClipboardService>;
|
|
2923
|
+
}
|
|
2924
|
+
|
|
2703
2925
|
declare class FlowValidationStore {
|
|
2704
2926
|
private readonly api;
|
|
2705
2927
|
private readonly destroyRef;
|
|
@@ -3084,6 +3306,13 @@ declare class FlowCanvasComponent {
|
|
|
3084
3306
|
readonly sides: typeof EFConnectableSide;
|
|
3085
3307
|
/** Il nome dell'elemento selezionato, `$start` per lo Start. */
|
|
3086
3308
|
readonly selectedName: _angular_core.InputSignal<string | null>;
|
|
3309
|
+
/**
|
|
3310
|
+
* La selezione **intera**, quando ne fa parte piu' di un elemento: la libreria sa selezionare
|
|
3311
|
+
* a rettangolo e con `Ctrl`+`A`, e i comandi che agiscono su un blocco (copia, duplica,
|
|
3312
|
+
* elimina) devono vederli tutti. `selectedName` resta l'elemento «corrente», quello di cui si
|
|
3313
|
+
* apre il form: un inspector che mostrasse cinque elementi insieme non saprebbe cosa mostrare.
|
|
3314
|
+
*/
|
|
3315
|
+
readonly selectedNames: _angular_core.InputSignal<readonly string[]>;
|
|
3087
3316
|
/**
|
|
3088
3317
|
* L'outline del backend, quando disponibile: da' la raggiungibilita' autoritativa (§6.4).
|
|
3089
3318
|
* Assente → si usa il calcolo locale.
|
|
@@ -3095,7 +3324,11 @@ declare class FlowCanvasComponent {
|
|
|
3095
3324
|
* perche' il canvas resti montabile da solo.
|
|
3096
3325
|
*/
|
|
3097
3326
|
readonly isEditable: _angular_core.InputSignal<boolean>;
|
|
3098
|
-
|
|
3327
|
+
/**
|
|
3328
|
+
* La selezione dopo il gesto: vuota se si e' cliccato nel vuoto. Il primo nome e' quello
|
|
3329
|
+
* «corrente» — chi ascolta ne fa la selezione singola.
|
|
3330
|
+
*/
|
|
3331
|
+
readonly selectionChange: _angular_core.OutputEmitterRef<string[]>;
|
|
3099
3332
|
readonly nodeOpened: _angular_core.OutputEmitterRef<string>;
|
|
3100
3333
|
readonly nodeRemoveRequested: _angular_core.OutputEmitterRef<string>;
|
|
3101
3334
|
readonly nodeDuplicateRequested: _angular_core.OutputEmitterRef<string>;
|
|
@@ -3202,15 +3435,22 @@ declare class FlowCanvasComponent {
|
|
|
3202
3435
|
* `removeNode` toglie anche i connector che lo puntavano.
|
|
3203
3436
|
*/
|
|
3204
3437
|
onRemoveClick(event: Event, name: string): void;
|
|
3438
|
+
/** Come ✎ e ×: `stopPropagation` perche' il clic non valga anche come selezione. */
|
|
3439
|
+
onDuplicateClick(event: Event, name: string): void;
|
|
3205
3440
|
connectorIdOf(node: FlowCanvasNode, outletKey: string): string;
|
|
3206
3441
|
targetIdOf(node: FlowCanvasNode): string;
|
|
3442
|
+
/**
|
|
3443
|
+
* Selezionato = corrente **oppure** parte del blocco selezionato. Senza il secondo caso, un
|
|
3444
|
+
* rettangolo che prende cinque elementi ne evidenziava uno, e i comandi che agiscono su tutti
|
|
3445
|
+
* e cinque sembravano agire su quello.
|
|
3446
|
+
*/
|
|
3207
3447
|
isSelected(node: FlowCanvasNode): boolean;
|
|
3208
3448
|
/** Etichette dei rami dichiarati senza destinazione, per il tooltip del badge. */
|
|
3209
3449
|
danglingLabels(node: FlowCanvasNode): string;
|
|
3210
3450
|
/** Classe della fascia colorata, per categoria del dizionario. */
|
|
3211
3451
|
categoryClass(node: FlowCanvasNode): string;
|
|
3212
3452
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FlowCanvasComponent, never>;
|
|
3213
|
-
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>;
|
|
3453
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FlowCanvasComponent, "fb-flow-canvas", never, { "selectedName": { "alias": "selectedName"; "required": false; "isSignal": true; }; "selectedNames": { "alias": "selectedNames"; "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>;
|
|
3214
3454
|
}
|
|
3215
3455
|
|
|
3216
3456
|
/** Il gesto scelto sulla palette: un tipo e, dove esiste, la sua variante (§5.6). */
|
|
@@ -3776,7 +4016,7 @@ declare class FormulaEditorComponent {
|
|
|
3776
4016
|
* dinamico — e riscriverla a ogni tasto costa. La **verifica** parte comunque durante la
|
|
3777
4017
|
* digitazione: usa la bozza locale, non cio' che e' arrivato al documento.
|
|
3778
4018
|
*/
|
|
3779
|
-
readonly commitOn: _angular_core.InputSignal<"
|
|
4019
|
+
readonly commitOn: _angular_core.InputSignal<"change" | "input">;
|
|
3780
4020
|
readonly expressionChange: _angular_core.OutputEmitterRef<string>;
|
|
3781
4021
|
private readonly area;
|
|
3782
4022
|
/**
|
|
@@ -4336,6 +4576,30 @@ declare class ElementDialogComponent {
|
|
|
4336
4576
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ElementDialogComponent, "fb-element-dialog", never, { "selectedName": { "alias": "selectedName"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "removeRequested": "removeRequested"; "duplicateRequested": "duplicateRequested"; "renamed": "renamed"; }, never, never, true, never>;
|
|
4337
4577
|
}
|
|
4338
4578
|
|
|
4579
|
+
declare class PasteDialogComponent {
|
|
4580
|
+
readonly payload: _angular_core.InputSignal<FlowClipboardPayload>;
|
|
4581
|
+
readonly plan: _angular_core.InputSignal<FlowPastePlan>;
|
|
4582
|
+
readonly confirmed: _angular_core.OutputEmitterRef<{
|
|
4583
|
+
createMissingResources: boolean;
|
|
4584
|
+
}>;
|
|
4585
|
+
readonly cancelled: _angular_core.OutputEmitterRef<void>;
|
|
4586
|
+
/** Predefinito acceso: e' il motivo per cui si copia un elemento invece di rifarlo. */
|
|
4587
|
+
readonly createMissingResources: _angular_core.WritableSignal<boolean>;
|
|
4588
|
+
readonly elementLabel: _angular_core.Signal<string>;
|
|
4589
|
+
readonly newResources: _angular_core.Signal<_esfaenza_flow_builder.FlowPasteResource[]>;
|
|
4590
|
+
readonly reusedResources: _angular_core.Signal<_esfaenza_flow_builder.FlowPasteResource[]>;
|
|
4591
|
+
/** I nomi degli elementi che cambiano: si distinguono da quelli interni perche' il rimedio e' diverso. */
|
|
4592
|
+
readonly nodeRenames: _angular_core.Signal<_esfaenza_flow_builder.FlowPasteRename[]>;
|
|
4593
|
+
readonly innerRenames: _angular_core.Signal<_esfaenza_flow_builder.FlowPasteRename[]>;
|
|
4594
|
+
/** Fuori mappa si mostra il nome tecnico: meglio una parola strana che nessuna parola. */
|
|
4595
|
+
resourceLabel(collection: FlowResourceCollection): string;
|
|
4596
|
+
setCreateMissingResources(value: boolean): void;
|
|
4597
|
+
confirm(): void;
|
|
4598
|
+
cancel(): void;
|
|
4599
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PasteDialogComponent, never>;
|
|
4600
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PasteDialogComponent, "fb-paste-dialog", never, { "payload": { "alias": "payload"; "required": true; "isSignal": true; }; "plan": { "alias": "plan"; "required": true; "isSignal": true; }; }, { "confirmed": "confirmed"; "cancelled": "cancelled"; }, never, never, true, never>;
|
|
4601
|
+
}
|
|
4602
|
+
|
|
4339
4603
|
declare class StartInspectorComponent {
|
|
4340
4604
|
private readonly store;
|
|
4341
4605
|
private readonly dictionaries;
|
|
@@ -5082,6 +5346,7 @@ interface Notice {
|
|
|
5082
5346
|
}
|
|
5083
5347
|
declare class FlowBuilderComponent {
|
|
5084
5348
|
private readonly api;
|
|
5349
|
+
private readonly clipboard;
|
|
5085
5350
|
private readonly destroyRef;
|
|
5086
5351
|
/** Serve a `afterNextRender` chiamato fuori dal costruttore. */
|
|
5087
5352
|
private readonly injector;
|
|
@@ -5176,7 +5441,7 @@ declare class FlowBuilderComponent {
|
|
|
5176
5441
|
* capita anche solo per spostare un node, e una finestra che si apre a ogni click sarebbe
|
|
5177
5442
|
* insopportabile. Nel pannello laterale, invece, mostrare subito il form non costa nulla.
|
|
5178
5443
|
*/
|
|
5179
|
-
onSelectionChange(
|
|
5444
|
+
onSelectionChange(names: string[]): void;
|
|
5180
5445
|
/** Doppio click o bottone «✎» sul node: qui il dettaglio si apre. */
|
|
5181
5446
|
onNodeOpened(name: string): void;
|
|
5182
5447
|
/** Porta l'utente sull'elemento **e** ne apre il form: e' l'ancora dei problemi (§7). */
|
|
@@ -5209,6 +5474,45 @@ declare class FlowBuilderComponent {
|
|
|
5209
5474
|
*/
|
|
5210
5475
|
onNodeRenamed(newName: string): void;
|
|
5211
5476
|
onDuplicateNode(name: string): void;
|
|
5477
|
+
/** La selezione del canvas per intero; `selectedName` resta l'elemento «corrente». */
|
|
5478
|
+
readonly selectedNames: _angular_core.WritableSignal<string[]>;
|
|
5479
|
+
/** L'anteprima dell'incolla, mentre la finestra e' aperta. */
|
|
5480
|
+
readonly pastePreview: _angular_core.WritableSignal<{
|
|
5481
|
+
payload: FlowClipboardPayload;
|
|
5482
|
+
plan: FlowPastePlan;
|
|
5483
|
+
} | null>;
|
|
5484
|
+
/**
|
|
5485
|
+
* I nomi copiabili: la selezione meno lo Start (§3.4) e meno cio' che nel documento non c'e'
|
|
5486
|
+
* piu'. Il secondo filtro non e' teorico: dopo un annulla la selezione resta sul nome di un
|
|
5487
|
+
* elemento appena tolto, e senza il controllo il comando risultava attivo su niente.
|
|
5488
|
+
*/
|
|
5489
|
+
private copyableNames;
|
|
5490
|
+
readonly canCopy: _angular_core.Signal<boolean>;
|
|
5491
|
+
/** Il comando «Incolla» si accende quando negli appunti c'e' qualcosa, anche di un altro flow. */
|
|
5492
|
+
readonly canPaste: _angular_core.Signal<boolean>;
|
|
5493
|
+
copySelection(): void;
|
|
5494
|
+
/**
|
|
5495
|
+
* Prepara l'incolla: calcola il piano e apre la finestra. Non tocca il documento — cosa
|
|
5496
|
+
* cambierebbe si vede prima, ed e' l'unico momento in cui la scelta sulle risorse mancanti ha
|
|
5497
|
+
* ancora senso.
|
|
5498
|
+
*/
|
|
5499
|
+
startPaste(): void;
|
|
5500
|
+
cancelPaste(): void;
|
|
5501
|
+
confirmPaste(options: {
|
|
5502
|
+
createMissingResources: boolean;
|
|
5503
|
+
}): void;
|
|
5504
|
+
/** Duplica in loco, senza passare dagli appunti: stesso motore, nessuna domanda da fare. */
|
|
5505
|
+
duplicateSelection(): void;
|
|
5506
|
+
private duplicateNames;
|
|
5507
|
+
/** Porta la selezione sul blocco appena creato: senza, resterebbe su cio' da cui e' nato. */
|
|
5508
|
+
private selectNames;
|
|
5509
|
+
/**
|
|
5510
|
+
* Le scorciatoie. L'ascoltatore sta sull'**host** del builder e non sul documento: la libreria
|
|
5511
|
+
* si innesta in una pagina che non e' nostra, e `Ctrl`+`C` catturato globalmente ruberebbe la
|
|
5512
|
+
* copia all'applicazione ospite. Per la stessa ragione il gesto si ignora quando il fuoco e'
|
|
5513
|
+
* dentro un campo: lì `Ctrl`+`C` copia il testo, che e' cio' che l'utente si aspetta.
|
|
5514
|
+
*/
|
|
5515
|
+
onKeyDown(event: KeyboardEvent): void;
|
|
5212
5516
|
/** Riordina il grafo e **scrive** le coordinate nel documento (§3.5). */
|
|
5213
5517
|
autoLayout(): void;
|
|
5214
5518
|
undo(): void;
|
|
@@ -5278,5 +5582,5 @@ declare class SelectValueDirective implements AfterViewChecked {
|
|
|
5278
5582
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectValueDirective, "select[fbValue]", never, { "fbValue": { "alias": "fbValue"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5279
5583
|
}
|
|
5280
5584
|
|
|
5281
|
-
export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, DynamicScreenInspectorComponent, ElementDialogComponent, ElementInspectorComponent, ElementPaletteComponent, EnumValuePickerComponent, 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, FLOW_VALUE_FIELDS, FLOW_VALUE_LITERAL_FIELDS, FieldAssignmentEditorComponent, FieldPickerComponent, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, FormulaEditorComponent, FormulaValidationService, 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, allFieldsOf, areTypesComparable, canvasNodeId, checkConditionLogic, checkFlowName, describePathEntry, duplicateField, elementIcon, emptyFlowDefinition, fieldAt, filterReferences, flattenFields, flowNodeWidth, flowNodeWidthClass, insertField, isCustomConditionLogic, isEmptyReferenceFilter, isFieldResource, isGlobalReference, isNumericType, isPathInside, isTypeCheckedOperator, isValidFlowName, isValued, loadPathLevel, matchesReferenceFilter, moveCondition, moveField, navigatePath, outletByKey, outletsOf, parseCanvasNodeId, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, pathAvailableNames, pathContainerLabel, pathKey, pathNotVerifiableMessage, referenceRoot, remapConditionLogic, removeCondition, removeField, resolvePath, samePath, screenActionNames, screenFieldNames, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, uniqueFlowName, valuedFieldOf, valuedFieldsOf, variantFieldOf, variantOf, variantPresetOf };
|
|
5282
|
-
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, FlowDynamicScreen, FlowEdge, FlowElementType, FlowElementTypeEntry, FlowEnumValue, FlowErrorCategory, FlowExportQuery, FlowFieldDescription, FlowFieldUsage, FlowFieldValue, FlowFormKind, FlowFormula, FlowFormulaIssue, FlowFormulaUsage, FlowFormulaValidationRequest, FlowFormulaValidationResult, 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, FlowReferenceFilter, FlowReferenceKind, FlowRegionContainerType, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, FlowResumeRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenAction, FlowScreenField, FlowScreenFieldInputsRevisited, FlowScreenFieldNode, FlowScreenFieldPath, FlowScreenFieldType, FlowScreenFieldTypeEntry, FlowScreenNavigation, FlowScreenResponseRequest, FlowScreenTrigger, FlowScreenTriggerInitBehavior, FlowScreenValidationRule, 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, FlowTypedEntry, 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 };
|
|
5585
|
+
export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, DynamicScreenInspectorComponent, ElementDialogComponent, ElementInspectorComponent, ElementPaletteComponent, EnumValuePickerComponent, FALLBACK_COLLECTION_BY_TYPE, FALLBACK_TYPE_LABEL, FLOW_BUILDER_HTTP_CONFIG, FLOW_CLIPBOARD_KIND, FLOW_CLIPBOARD_VERSION, 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_REFERENCE_FIELDS, FLOW_RESOURCE_COLLECTIONS, FLOW_VALUE_FIELDS, FLOW_VALUE_LITERAL_FIELDS, FieldAssignmentEditorComponent, FieldPickerComponent, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowClipboardService, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, FormulaEditorComponent, FormulaValidationService, HttpFlowBuilderApi, NamePickerComponent, NodeInspectorBase, ORCHESTRATION_CONDITION_OUTPUT, ObjectPickerComponent, OrchestratedStageInspectorComponent, ParameterEditorComponent, PasteDialogComponent, 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, allFieldsOf, applyPaste, areTypesComparable, buildClipboardPayload, canvasNodeId, checkConditionLogic, checkFlowName, describePathEntry, duplicateField, elementIcon, emptyFlowDefinition, fieldAt, filterReferences, flattenFields, flowNodeWidth, flowNodeWidthClass, innerNamesOf, insertField, isClipboardPayload, isCustomConditionLogic, isEmptyReferenceFilter, isFieldResource, isGlobalReference, isNumericType, isPathInside, isTypeCheckedOperator, isValidFlowName, isValued, loadPathLevel, matchesReferenceFilter, moveCondition, moveField, navigatePath, outletByKey, outletsOf, parseCanvasNodeId, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, pathAvailableNames, pathContainerLabel, pathKey, pathNotVerifiableMessage, planPaste, referenceRoot, referencedRootsOf, remapConditionLogic, removeCondition, removeField, resolvePath, rewriteReferences, samePath, screenActionNames, screenFieldNames, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, typeOfCollection, uniqueFlowName, valuedFieldOf, valuedFieldsOf, variantFieldOf, variantOf, variantPresetOf };
|
|
5586
|
+
export type { FieldAssignmentHolder, FilterHolder, FlowActionCall, FlowAnyNode, FlowAssignment, FlowAssignmentItem, FlowAssignmentOperator, FlowAssignmentOperatorEntry, FlowBuilderHttpConfig, FlowCanvasEdge, FlowCanvasNode, FlowCatalogEntry, FlowCatalogParameter, FlowChoice, FlowClipboardNode, FlowClipboardPayload, FlowClipboardResource, 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, FlowDynamicScreen, FlowEdge, FlowElementType, FlowElementTypeEntry, FlowEnumValue, FlowErrorCategory, FlowExportQuery, FlowFieldDescription, FlowFieldUsage, FlowFieldValue, FlowFormKind, FlowFormula, FlowFormulaIssue, FlowFormulaUsage, FlowFormulaValidationRequest, FlowFormulaValidationResult, 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, FlowPastePlan, FlowPasteRename, FlowPasteResource, FlowPendingScreen, FlowProcessType, FlowRecordCreate, FlowRecordDelete, FlowRecordFilter, FlowRecordFilterOperator, FlowRecordLookup, FlowRecordRollback, FlowRecordTriggerType, FlowRecordUpdate, FlowRecordValue, FlowReference, FlowReferenceFilter, FlowReferenceKind, FlowRegionContainerType, FlowResourceCollection, FlowResourceKindEntry, FlowResourceRef, FlowResumeRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenAction, FlowScreenField, FlowScreenFieldInputsRevisited, FlowScreenFieldNode, FlowScreenFieldPath, FlowScreenFieldType, FlowScreenFieldTypeEntry, FlowScreenNavigation, FlowScreenResponseRequest, FlowScreenTrigger, FlowScreenTriggerInitBehavior, FlowScreenValidationRule, 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, FlowTypedEntry, 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 };
|