@esfaenza/flow-builder 20.3.43 → 20.3.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -234,7 +234,7 @@ interface FlowScreen extends FlowNodeBase {
234
234
  * `screenFieldTypes`, che porta anche i flag (`storesValue`, `isContainer`, …) con cui
235
235
  * l'editor decide quali campi mostrare: qui il tipo e' aperto proprio per quello.
236
236
  */
237
- type FlowScreenFieldType = 'DisplayText' | 'InputField' | 'LargeTextArea' | 'PasswordField' | 'RadioButtons' | 'DropdownBox' | 'MultiSelectCheckboxes' | 'MultiSelectPicklist' | 'ComponentInstance' | 'Region' | 'RegionContainer' | 'ObjectProvided' | string;
237
+ type FlowScreenFieldType = 'DisplayText' | 'InputField' | 'LargeTextArea' | 'PasswordField' | 'RadioButtons' | 'DropdownBox' | 'MultiSelectCheckboxes' | 'MultiSelectPicklist' | 'ComponentInstance' | 'Region' | 'RegionContainer' | 'RepeatingSection' | 'ObjectProvided' | string;
238
238
  /** §5.2 — la sezione con o senza intestazione. */
239
239
  type FlowRegionContainerType = 'SectionWithHeader' | 'SectionWithoutHeader' | string;
240
240
  /** §5.2 — cosa succede ai valori quando si torna sulla schermata. */
@@ -253,6 +253,12 @@ interface FlowScreenValidationRule {
253
253
  * di node e risorse (§3.3), e un Assignment che ci scrive e' `TARGET_NOT_WRITABLE`;
254
254
  * - `fields` esiste solo sui contenitori (`Region`, `RegionContainer`) e l'annidamento previsto
255
255
  * e' **sezione → colonne → campi**: piu' profondo di così e' un avviso.
256
+ *
257
+ * L'unica eccezione alla prima e' un campo dentro una `RepeatingSection`: esiste in una riga per ogni
258
+ * elemento della collection, quindi il suo nome non individua alcun valore. Non e' una risorsa, non si
259
+ * propone fra i riferimenti, e nominarlo e' `SCREEN_FIELD_IN_REPEATER`. Il nome resta comunque **unico**
260
+ * — e' l'indirizzo con cui il frontend rende il campo — quindi un omonimo di una variabile resta
261
+ * `NAME_DUPLICATED`.
256
262
  */
257
263
  interface FlowScreenField {
258
264
  name?: string;
@@ -282,9 +288,49 @@ interface FlowScreenField {
282
288
  maxLength?: number;
283
289
  /** 1..12 nella griglia della schermata: il frontend puo' ignorarla. */
284
290
  width?: number;
285
- /** Solo sui contenitori: sezione → colonne → campi. */
291
+ /**
292
+ * Solo sui contenitori: sezione → colonne → campi. Su una `RepeatingSection` e' il **modello di una
293
+ * riga**: la schermata ne rende una copia per ogni elemento di `collectionReference`.
294
+ */
286
295
  fields?: FlowScreenField[];
287
296
  regionContainerType?: FlowRegionContainerType;
297
+ /**
298
+ * §5.2 — `RepeatingSection`: **dove vivono le righe**, una variabile collection di tipo `Structure`.
299
+ * E' quella che il resto del flow attraversa con un Loop, ed e' il motivo per cui la sezione non
300
+ * introduce un posto nuovo in cui i dati stanno. **Obbligatoria**: senza,
301
+ * `REPEATING_SECTION_INVALID`.
302
+ */
303
+ collectionReference?: string;
304
+ /**
305
+ * §5.2 — `RepeatingSection`: il **cursore**, una variabile `Structure` non collection dello stesso
306
+ * `objectType` di {@link collectionReference}, su cui il runtime appoggia la riga corrente. Ha lo
307
+ * stesso ruolo di `assignNextValueToReference` in un Loop, ed e' cio' che si nomina dentro una riga:
308
+ * `PuntoCorrente.PodId`, mai `Luce_POD`. **Obbligatorio**.
309
+ */
310
+ itemReference?: string;
311
+ /**
312
+ * §5.2 — sui campi **dentro** una `RepeatingSection`: il membro della riga che il campo raccoglie.
313
+ * Senza, vale il nome del campo. Il membro deve esistere sulla classe delle righe e non essere di
314
+ * sola lettura: `STRUCTURE_MEMBER_UNKNOWN` e `TARGET_NOT_WRITABLE`.
315
+ */
316
+ memberName?: string;
317
+ /** §5.2 — `RepeatingSection`: righe minime. */
318
+ minInstances?: number;
319
+ /** §5.2 — `RepeatingSection`: righe massime. Assente e' l'avviso `REPEATING_SECTION_WITHOUT_LIMIT`. */
320
+ maxInstances?: number;
321
+ /** §5.2 — `RepeatingSection`: default `true`. */
322
+ allowAdd?: boolean;
323
+ /** §5.2 — `RepeatingSection`: default `true`. */
324
+ allowRemove?: boolean;
325
+ /** §5.2 — `RepeatingSection`: la scritta del comando che aggiunge una riga. */
326
+ addButtonLabel?: string;
327
+ /** §5.2 — `RepeatingSection`: la scritta del comando che toglie una riga. */
328
+ removeButtonLabel?: string;
329
+ /**
330
+ * §5.2 — `RepeatingSection`: l'intestazione della **singola riga**. Supporta i merge field e viene
331
+ * risolta sulla riga, quindi ci si nomina il cursore: `Punto {!PuntoCorrente.PodId}`.
332
+ */
333
+ itemLabel?: string;
288
334
  /** `ComponentInstance`: il componente del frontend, dal catalogo dei form. */
289
335
  extensionName?: string;
290
336
  inputParameters?: FlowInputParameter[];
@@ -866,6 +912,13 @@ interface FlowScreenFieldTypeEntry extends FlowDictionaryEntry {
866
912
  acceptsChoices?: boolean;
867
913
  /** Il campo contiene altri campi (`Region`, `RegionContainer`). */
868
914
  isContainer?: boolean;
915
+ /**
916
+ * §5.2 — sezione **ripetibile**, ed e' distinto da {@link isContainer} di proposito: contiene campi
917
+ * ma quelli che contiene sono il *modello di una riga*, non i campi della schermata. Un editor che le
918
+ * trattasse allo stesso modo proporrebbe quei nomi fra i riferimenti, che e' esattamente cio' che la
919
+ * validazione rifiuta (`SCREEN_FIELD_IN_REPEATER`).
920
+ */
921
+ isRepeatingSection?: boolean;
869
922
  /** `dataType` obbligatorio: senza, `DATA_TYPE_MISSING`. */
870
923
  requiresDataType?: boolean;
871
924
  }
@@ -2272,6 +2325,12 @@ declare const ORCHESTRATION_CONDITION_OUTPUT = "isOrchestrationConditionMet";
2272
2325
  * del flow** (§5.2). I loro nomi vivono nello stesso spazio dei nomi di node e risorse (§3.3),
2273
2326
  * quindi `usedNames` dello store deve comprenderli — un campo omonimo di una variabile e'
2274
2327
  * `NAME_DUPLICATED`, non una stranezza tollerata.
2328
+ *
2329
+ * L'unica eccezione a quest'ultima e' la `RepeatingSection`, e le due meta' vanno tenute distinte perche'
2330
+ * e' facile appiattirle: i campi **dentro** una riga non sono risorse (il loro nome non individua alcun
2331
+ * valore, perche' la riga esiste una volta per elemento della collection) ma un nome unico ce l'hanno
2332
+ * comunque. Quindi `screenFieldNames` li comprende — `NAME_DUPLICATED` vale — mentre
2333
+ * {@link resourceFieldsOf} no: proporli fra i riferimenti e' `SCREEN_FIELD_IN_REPEATER`.
2275
2334
  */
2276
2335
 
2277
2336
  /** Il percorso di un campo nell'albero: indici dalla radice alla foglia. */
@@ -2299,7 +2358,9 @@ declare function allFieldsOf(screen: FlowDynamicScreen | undefined): FlowScreenF
2299
2358
  *
2300
2359
  * Contenitori compresi: un `Region` non e' una risorsa — non raccoglie un valore — ma il suo
2301
2360
  * nome resta un nome, e due campi omonimi nella stessa schermata sono comunque un problema.
2302
- * Chi vuole i **soli** riferimenti proponibili usa `isFieldResource`.
2361
+ * Ci sono anche i campi **dentro una riga** di una sezione ripetibile, che risorse non sono ma un nome
2362
+ * ce l'hanno lo stesso: e' l'indirizzo con cui il frontend rende il campo, e due omonimi lo renderebbero
2363
+ * ambiguo (§5.2). Chi vuole i **soli** riferimenti proponibili usa {@link resourceFieldsOf}.
2303
2364
  */
2304
2365
  declare function screenFieldNames(definition: FlowDefinition | undefined): string[];
2305
2366
  /**
@@ -2322,8 +2383,40 @@ declare function screenActionNames(definition: FlowDefinition | undefined): stri
2322
2383
  * i suoi output. Il flag `storesValue` arriva dal dizionario, che e' l'unica fonte autoritativa:
2323
2384
  * senza la voce del dizionario si risponde `false`, cioe' "non lo so" — proporre un riferimento
2324
2385
  * che il backend non conosce e' peggio che non proporlo.
2386
+ *
2387
+ * Guarda il **solo campo**, e non basta: un campo dentro una `RepeatingSection` raccoglie un valore ma
2388
+ * non e' una risorsa, perche' esiste in una riga per ogni elemento della collection. Quella domanda ha
2389
+ * bisogno del contesto, e la risponde {@link resourceFieldsOf}.
2325
2390
  */
2326
2391
  declare function isFieldResource(field: FlowScreenField | undefined, entry: FlowScreenFieldTypeEntry | undefined): boolean;
2392
+ /** Come si riconosce una voce del dizionario a partire dal campo: il flag e' del dizionario, non del codice. */
2393
+ type FlowScreenFieldTypeResolver = (field: FlowScreenField) => FlowScreenFieldTypeEntry | undefined;
2394
+ /**
2395
+ * §5.2 — i campi dichiarati dentro una `RepeatingSection` sono il **modello di una riga**, e la riga
2396
+ * esiste una volta per elemento della collection: il loro nome non individua alcun valore.
2397
+ *
2398
+ * Da qui discende tutto cio' che l'editor fa di diverso lì dentro. Non sono risorse del flow, non si
2399
+ * propongono fra i riferimenti, non innescano screen action e non sono destinazioni: nominarli e'
2400
+ * `SCREEN_FIELD_IN_REPEATER`. Dentro una riga si nomina il **cursore** (`itemReference`), che e' una
2401
+ * variabile vera — `PuntoCorrente.PodId`, mai `Luce_POD`.
2402
+ *
2403
+ * Cio' che invece **non** cambia: il nome resta unico, perche' e' l'indirizzo con cui il frontend rende
2404
+ * il campo, quindi un omonimo di una variabile e' `NAME_DUPLICATED` come sempre e `screenFieldNames` li
2405
+ * comprende tutti.
2406
+ */
2407
+ declare function repeatedFieldNames(definition: FlowDefinition | undefined, typeOf: FlowScreenFieldTypeResolver): Set<string>;
2408
+ /**
2409
+ * I campi di una schermata che sono **risorse del flow**: raccolgono un valore e non stanno dentro una
2410
+ * riga. Sono gli unici da proporre come riferimento, come innesco di una screen action e come
2411
+ * destinazione dei suoi output.
2412
+ */
2413
+ declare function resourceFieldsOf(screen: FlowDynamicScreen | undefined, typeOf: FlowScreenFieldTypeResolver): FlowScreenField[];
2414
+ /**
2415
+ * La sezione ripetibile che **contiene** il campo a un percorso, se c'e'. Un antenato stretto: la
2416
+ * sezione stessa non sta dentro se stessa, ed e' la differenza fra «configuro la sezione» e «configuro
2417
+ * un campo di una riga», che sono due pannelli diversi.
2418
+ */
2419
+ declare function repeatingSectionOf(screen: FlowDynamicScreen | undefined, path: FlowScreenFieldPath | null, typeOf: FlowScreenFieldTypeResolver): FlowScreenField | undefined;
2327
2420
  /** Inserisce un campo dentro `parentPath` alla posizione indicata (in fondo se assente). */
2328
2421
  declare function insertField(screen: FlowDynamicScreen, parentPath: FlowScreenFieldPath, field: FlowScreenField, index?: number): FlowScreenFieldPath | undefined;
2329
2422
  /** Rimuove il campo a un percorso, e con esso tutto cio' che conteneva. */
@@ -2504,6 +2597,13 @@ declare class FlowDictionaryStore {
2504
2597
  screenFieldStoresValue(value: string | undefined | null): boolean;
2505
2598
  /** §5.2 — il campo contiene altri campi: `Region`, `RegionContainer`. */
2506
2599
  screenFieldIsContainer(value: string | undefined | null): boolean;
2600
+ /**
2601
+ * §5.2 — sezione **ripetibile**. Distinto da {@link screenFieldIsContainer} di proposito: contiene
2602
+ * campi, ma quelli che contiene sono il modello di una riga e i loro nomi **non** sono riferimenti
2603
+ * proponibili (`SCREEN_FIELD_IN_REPEATER`). E' il flag su cui si accende tutto cio' che l'editor fa di
2604
+ * diverso dentro una riga.
2605
+ */
2606
+ screenFieldIsRepeatingSection(value: string | undefined | null): boolean;
2507
2607
  /** §5.2 — il campo si configura con `choiceReferences`. */
2508
2608
  screenFieldAcceptsChoices(value: string | undefined | null): boolean;
2509
2609
  /** §5.2 — `dataType` obbligatorio: senza, `DATA_TYPE_MISSING`. */
@@ -3389,11 +3489,21 @@ declare class FlowDocumentStore {
3389
3489
  */
3390
3490
  declare const FLOW_REFERENCE_FIELDS: ReadonlySet<string>;
3391
3491
  /**
3392
- * Riscrive ogni occorrenza di un nome nei campi che contengono riferimenti.
3492
+ * Riscrive ogni occorrenza di un nome nei campi che contengono riferimenti **e nei merge field**.
3393
3493
  *
3394
3494
  * Cammina tutto cio' che gli si passa — un documento intero per la rinomina, il solo frammento
3395
3495
  * copiato per l'incolla — perche' i riferimenti compaiono in una ventina di posti diversi (§4)
3396
3496
  * e l'elenco dei posti sarebbe la cosa che si dimentica di aggiornare.
3497
+ *
3498
+ * I **merge field** ci sono entrati insieme al loro conteggio, e non e' un caso: mostrare «5 usi»
3499
+ * contando i testi e poi riscriverne solo tre significa lasciare due messaggi rotti proprio a chi
3500
+ * ha letto il numero per fidarsi della rinomina. Il testo intorno all'isola non si tocca — lì la
3501
+ * stessa parola e' una parola — e la regola sta in `flow-merge-text.ts`.
3502
+ *
3503
+ * Restano fuori le **formule**: la loro sintassi e' del motore (§6.3), e sostituire un
3504
+ * identificatore in un'espressione che non si interpreta vuol dire indovinare. Chi mostra il
3505
+ * conteggio lo dice, invece di far scoprire dopo che una formula punta a un nome che non c'e'
3506
+ * piu' (`describeNameUses` le tiene contate a parte proprio per questo).
3397
3507
  */
3398
3508
  declare function rewriteReferences(root: unknown, oldName: string, newName: string): void;
3399
3509
  /**
@@ -4532,6 +4642,16 @@ declare class ReferencePickerComponent {
4532
4642
  * verrebbe accusato di non esistere.
4533
4643
  */
4534
4644
  readonly extraReferences: _angular_core.InputSignal<FlowReference[]>;
4645
+ /**
4646
+ * Le radici da proporre **per prime**. Oggi c'e' un chiamante solo: dentro una riga di sezione
4647
+ * ripetibile la strada normale e' il **cursore** (`PuntoCorrente.PodId`), e i campi della riga —
4648
+ * che sono cio' che uno cerca istintivamente — non sono nemmeno riferimenti validi (§5.2).
4649
+ *
4650
+ * Non aggiunge e non toglie niente: riordina. L'elenco resta quello della primitiva, e un
4651
+ * riferimento preferito che non c'e' semplicemente non compare — proporre un nome che il backend
4652
+ * non conosce sarebbe peggio che non metterlo in cima.
4653
+ */
4654
+ readonly preferredRoots: _angular_core.InputSignal<string[]>;
4535
4655
  readonly valueChange: _angular_core.OutputEmitterRef<string | undefined>;
4536
4656
  /**
4537
4657
  * L'elenco come arriva dalla primitiva, **senza** il filtro di tipo.
@@ -4627,6 +4747,12 @@ declare class ReferencePickerComponent {
4627
4747
  /** `true` → questa riga apre il percorso e non e' un valore valido per il campo. */
4628
4748
  isContainerOnly(reference: FlowReference): boolean;
4629
4749
  readonly options: _angular_core.Signal<FlowReference[]>;
4750
+ /**
4751
+ * Porta in testa le radici preferite, **senza** cambiare l'ordine relativo del resto. I gruppi si
4752
+ * costruiscono per ordine di prima apparizione, quindi bastano questi due passaggi perche' il
4753
+ * gruppo giusto risulti il primo della tendina.
4754
+ */
4755
+ private preferFirst;
4630
4756
  /** Le opzioni raggruppate per `kind`, così gli output automatici si distinguono. */
4631
4757
  readonly groups: _angular_core.Signal<{
4632
4758
  kind: string;
@@ -4655,7 +4781,7 @@ declare class ReferencePickerComponent {
4655
4781
  * percorso inesistente di uno scope che i percorsi li dichiara, perche' lì il backend
4656
4782
  * risponderebbe `GLOBAL_UNKNOWN`.
4657
4783
  */
4658
- readonly valueState: _angular_core.Signal<"empty" | "unknown" | "member" | "known" | "navigated" | "host" | "containerRoot" | "memberUnknown" | "memberNotWritable" | "pathUnverified" | "globalPathUntyped" | "globalPathInvalid">;
4784
+ readonly valueState: _angular_core.Signal<"empty" | "known" | "navigated" | "host" | "member" | "containerRoot" | "memberUnknown" | "memberNotWritable" | "pathUnverified" | "globalPathUntyped" | "globalPathInvalid" | "unknown">;
4659
4785
  /** Le parole cambiano con la tappa: un campo di un'entita' non e' un membro di una classe. */
4660
4786
  private readonly tailIsObject;
4661
4787
  private readonly tailContainer;
@@ -4693,7 +4819,7 @@ declare class ReferencePickerComponent {
4693
4819
  clear(): void;
4694
4820
  describe(reference: FlowReference): string;
4695
4821
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ReferencePickerComponent, never>;
4696
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ReferencePickerComponent, "fb-reference-picker", never, { "value": { "alias": "value"; "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; }; "dataType": { "alias": "dataType"; "required": false; "isSignal": true; }; "isCollection": { "alias": "isCollection"; "required": false; "isSignal": true; }; "objectType": { "alias": "objectType"; "required": false; "isSignal": true; }; "writableOnly": { "alias": "writableOnly"; "required": false; "isSignal": true; }; "elementsOnly": { "alias": "elementsOnly"; "required": false; "isSignal": true; }; "extraReferences": { "alias": "extraReferences"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
4822
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ReferencePickerComponent, "fb-reference-picker", never, { "value": { "alias": "value"; "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; }; "dataType": { "alias": "dataType"; "required": false; "isSignal": true; }; "isCollection": { "alias": "isCollection"; "required": false; "isSignal": true; }; "objectType": { "alias": "objectType"; "required": false; "isSignal": true; }; "writableOnly": { "alias": "writableOnly"; "required": false; "isSignal": true; }; "elementsOnly": { "alias": "elementsOnly"; "required": false; "isSignal": true; }; "extraReferences": { "alias": "extraReferences"; "required": false; "isSignal": true; }; "preferredRoots": { "alias": "preferredRoots"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
4697
4823
  }
4698
4824
 
4699
4825
  declare class ObjectPickerComponent {
@@ -4817,7 +4943,7 @@ declare class NamePickerComponent {
4817
4943
  * **errori** che bloccano l'attivazione (`ACTION_UNKNOWN`, `FORM_UNKNOWN`), mentre un flow
4818
4944
  * senza versione attiva e' un avviso. Mostrarli con lo stesso colore direbbe il falso.
4819
4945
  */
4820
- readonly unknownSeverity: _angular_core.InputSignal<"warn" | "error">;
4946
+ readonly unknownSeverity: _angular_core.InputSignal<"error" | "warn">;
4821
4947
  /**
4822
4948
  * Nomi che **esistono** ma non sono utilizzabili qui. Il caso vero e' il catalogo dei form,
4823
4949
  * dove una schermata intera e un componente vivono nello stesso elenco e si distinguono per
@@ -5031,6 +5157,12 @@ declare class FormulaEditorComponent {
5031
5157
  readonly ariaLabel: _angular_core.InputSignal<string>;
5032
5158
  readonly disabled: _angular_core.InputSignal<boolean>;
5033
5159
  readonly rows: _angular_core.InputSignal<number>;
5160
+ /**
5161
+ * I nomi da suggerire **per primi** (§5.2). Lo passa un chiamante solo: la regola di validazione
5162
+ * di un campo dentro una riga di sezione ripetibile, dove la strada normale e' il cursore. Non
5163
+ * aggiunge nomi all'elenco di `POST /flows/references`: riordina i suggerimenti.
5164
+ */
5165
+ readonly preferredRoots: _angular_core.InputSignal<string[]>;
5034
5166
  /**
5035
5167
  * Quando propagare al documento. `input` a ogni tasto, `change` all'uscita dal campo: la
5036
5168
  * seconda serve dove mutare il documento ridisegna mezza schermata — l'anteprima dello screen
@@ -5152,7 +5284,7 @@ declare class FormulaEditorComponent {
5152
5284
  private run;
5153
5285
  private cancel;
5154
5286
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormulaEditorComponent, never>;
5155
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormulaEditorComponent, "fb-formula-editor", never, { "expression": { "alias": "expression"; "required": false; "isSignal": true; }; "usage": { "alias": "usage"; "required": false; "isSignal": true; }; "expectedDataType": { "alias": "expectedDataType"; "required": false; "isSignal": true; }; "scale": { "alias": "scale"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "commitOn": { "alias": "commitOn"; "required": false; "isSignal": true; }; }, { "expressionChange": "expressionChange"; }, never, ["*"], true, never>;
5287
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormulaEditorComponent, "fb-formula-editor", never, { "expression": { "alias": "expression"; "required": false; "isSignal": true; }; "usage": { "alias": "usage"; "required": false; "isSignal": true; }; "expectedDataType": { "alias": "expectedDataType"; "required": false; "isSignal": true; }; "scale": { "alias": "scale"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "preferredRoots": { "alias": "preferredRoots"; "required": false; "isSignal": true; }; "commitOn": { "alias": "commitOn"; "required": false; "isSignal": true; }; }, { "expressionChange": "expressionChange"; }, never, ["*"], true, never>;
5156
5288
  }
5157
5289
 
5158
5290
  /** Le modalita' offerte: una per campo del modello. */
@@ -5174,6 +5306,12 @@ declare class ValueEditorComponent {
5174
5306
  readonly disabled: _angular_core.InputSignal<boolean>;
5175
5307
  /** Nasconde la modalita' formula dove il modello non la prevede. */
5176
5308
  readonly allowFormula: _angular_core.InputSignal<boolean>;
5309
+ /**
5310
+ * Le radici da proporre **per prime** nel reference picker (§5.2). Oggi lo passa un chiamante
5311
+ * solo: dentro una riga di sezione ripetibile la strada normale e' il **cursore**, e i campi
5312
+ * della riga non sono nemmeno riferimenti validi. Non aggiunge niente all'elenco: riordina.
5313
+ */
5314
+ readonly preferredRoots: _angular_core.InputSignal<string[]>;
5177
5315
  readonly valueChange: _angular_core.OutputEmitterRef<FlowValue | undefined>;
5178
5316
  /** La modalita' dedotta dal campo effettivamente valorizzato. */
5179
5317
  readonly mode: _angular_core.Signal<ValueMode>;
@@ -5248,7 +5386,7 @@ declare class ValueEditorComponent {
5248
5386
  private emit;
5249
5387
  readonly dataTypeOptions: _angular_core.Signal<_esfaenza_flow_builder.FlowDataTypeEntry[]>;
5250
5388
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ValueEditorComponent, never>;
5251
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ValueEditorComponent, "fb-value-editor", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "dataType": { "alias": "dataType"; "required": false; "isSignal": true; }; "objectType": { "alias": "objectType"; "required": false; "isSignal": true; }; "isCollection": { "alias": "isCollection"; "required": false; "isSignal": true; }; "valueSet": { "alias": "valueSet"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "allowFormula": { "alias": "allowFormula"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
5389
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ValueEditorComponent, "fb-value-editor", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "dataType": { "alias": "dataType"; "required": false; "isSignal": true; }; "objectType": { "alias": "objectType"; "required": false; "isSignal": true; }; "isCollection": { "alias": "isCollection"; "required": false; "isSignal": true; }; "valueSet": { "alias": "valueSet"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "allowFormula": { "alias": "allowFormula"; "required": false; "isSignal": true; }; "preferredRoots": { "alias": "preferredRoots"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
5252
5390
  }
5253
5391
 
5254
5392
  declare class ConditionEditorComponent {
@@ -5261,6 +5399,12 @@ declare class ConditionEditorComponent {
5261
5399
  readonly title: _angular_core.InputSignal<string>;
5262
5400
  /** `false` dove il modello non prevede la modalita' formula sull'elemento. */
5263
5401
  readonly allowFormula: _angular_core.InputSignal<boolean>;
5402
+ /**
5403
+ * Le radici da proporre **per prime** nel reference picker (§5.2). Oggi lo passa un chiamante
5404
+ * solo: dentro una riga di sezione ripetibile la strada normale e' il **cursore**, e i campi
5405
+ * della riga non sono nemmeno riferimenti validi. Non aggiunge niente all'elenco: riordina.
5406
+ */
5407
+ readonly preferredRoots: _angular_core.InputSignal<string[]>;
5264
5408
  /**
5265
5409
  * `false` dove il modello porta **solo** la lista di condizioni, senza un campo per la
5266
5410
  * logica: gli `entryConditions` / `exitConditions` di uno step di orchestrazione (§5.14).
@@ -5345,7 +5489,7 @@ declare class ConditionEditorComponent {
5345
5489
  setRightValue(index: number, value: FlowValue | undefined): void;
5346
5490
  setUnaryExpectation(index: number, expectation: boolean): void;
5347
5491
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConditionEditorComponent, never>;
5348
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConditionEditorComponent, "fb-condition-editor", never, { "holder": { "alias": "holder"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "allowFormula": { "alias": "allowFormula"; "required": false; "isSignal": true; }; "allowLogic": { "alias": "allowLogic"; "required": false; "isSignal": true; }; "issuePath": { "alias": "issuePath"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
5492
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConditionEditorComponent, "fb-condition-editor", never, { "holder": { "alias": "holder"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "allowFormula": { "alias": "allowFormula"; "required": false; "isSignal": true; }; "preferredRoots": { "alias": "preferredRoots"; "required": false; "isSignal": true; }; "allowLogic": { "alias": "allowLogic"; "required": false; "isSignal": true; }; "issuePath": { "alias": "issuePath"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
5349
5493
  }
5350
5494
 
5351
5495
  /**
@@ -5386,7 +5530,7 @@ declare class RecordFilterEditorComponent {
5386
5530
  * (§5.8, §13.10).
5387
5531
  */
5388
5532
  readonly emptyWarning: _angular_core.InputSignal<string | null>;
5389
- readonly emptyWarningSeverity: _angular_core.InputSignal<"warn" | "error">;
5533
+ readonly emptyWarningSeverity: _angular_core.InputSignal<"error" | "warn">;
5390
5534
  readonly changed: _angular_core.OutputEmitterRef<(holder: FilterHolder) => void>;
5391
5535
  /** Tutti i campi, filtrabili o no: serve solo a riconoscere le chiavi composte (§5.8). */
5392
5536
  private readonly allFields;
@@ -5489,6 +5633,12 @@ declare class ParameterEditorComponent {
5489
5633
  * quei campi sono una destinazione, e per questo non e' un default ma un parametro del chiamante.
5490
5634
  */
5491
5635
  readonly extraTargets: _angular_core.InputSignal<FlowReference[]>;
5636
+ /**
5637
+ * Le radici da proporre **per prime**, in ingresso e in uscita (§5.2). Dentro una riga di sezione
5638
+ * ripetibile e' il cursore: e' lì che vanno letti gli input di un componente e assegnati i suoi
5639
+ * output, perche' una riga ha un cursore e i campi della riga non sono riferimenti.
5640
+ */
5641
+ readonly preferredRoots: _angular_core.InputSignal<string[]>;
5492
5642
  readonly changed: _angular_core.OutputEmitterRef<(holder: ParameterHolder) => void>;
5493
5643
  readonly inputs: _angular_core.Signal<FlowInputParameter[]>;
5494
5644
  readonly outputs: _angular_core.Signal<FlowOutputParameter[]>;
@@ -5527,7 +5677,7 @@ declare class ParameterEditorComponent {
5527
5677
  setOutputName(index: number, name: string): void;
5528
5678
  setOutputTarget(index: number, reference: string | undefined): void;
5529
5679
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ParameterEditorComponent, never>;
5530
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ParameterEditorComponent, "fb-parameter-editor", never, { "holder": { "alias": "holder"; "required": true; "isSignal": true; }; "catalogParameters": { "alias": "catalogParameters"; "required": false; "isSignal": true; }; "inputTitle": { "alias": "inputTitle"; "required": false; "isSignal": true; }; "outputTitle": { "alias": "outputTitle"; "required": false; "isSignal": true; }; "showInputs": { "alias": "showInputs"; "required": false; "isSignal": true; }; "showOutputs": { "alias": "showOutputs"; "required": false; "isSignal": true; }; "outputsDisabledReason": { "alias": "outputsDisabledReason"; "required": false; "isSignal": true; }; "extraTargets": { "alias": "extraTargets"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
5680
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ParameterEditorComponent, "fb-parameter-editor", never, { "holder": { "alias": "holder"; "required": true; "isSignal": true; }; "catalogParameters": { "alias": "catalogParameters"; "required": false; "isSignal": true; }; "inputTitle": { "alias": "inputTitle"; "required": false; "isSignal": true; }; "outputTitle": { "alias": "outputTitle"; "required": false; "isSignal": true; }; "showInputs": { "alias": "showInputs"; "required": false; "isSignal": true; }; "showOutputs": { "alias": "showOutputs"; "required": false; "isSignal": true; }; "outputsDisabledReason": { "alias": "outputsDisabledReason"; "required": false; "isSignal": true; }; "extraTargets": { "alias": "extraTargets"; "required": false; "isSignal": true; }; "preferredRoots": { "alias": "preferredRoots"; "required": false; "isSignal": true; }; }, { "changed": "changed"; }, never, never, true, never>;
5531
5681
  }
5532
5682
 
5533
5683
  interface FieldAssignmentHolder {
@@ -5817,7 +5967,22 @@ declare class ElementInspectorComponent {
5817
5967
  * Quanti riferimenti verrebbero riscritti dalla rinomina. Serve a rendere visibile che
5818
5968
  * l'operazione tocca il resto del documento, non solo questo elemento.
5819
5969
  */
5970
+ /**
5971
+ * Gli usi del nome, con la stessa funzione del pannello risorse: e' la stessa domanda, e due
5972
+ * numeri diversi per la stessa domanda sono un difetto — questo era una regex sul JSON
5973
+ * serializzato, che contava le stringhe uguali al nome in **qualunque** campo (anche dove non
5974
+ * sono riferimenti) e non vedeva ne' le formule ne' i merge field, cioe' sovrastimava e
5975
+ * sottostimava insieme.
5976
+ */
5977
+ private readonly nameUses;
5978
+ /** Le occorrenze che la rinomina **riscrive**: riferimenti piu' merge field nei testi. */
5820
5979
  readonly referenceCount: _angular_core.Signal<number>;
5980
+ /**
5981
+ * Le occorrenze che restano indietro: le espressioni delle formule, che l'editor non riscrive
5982
+ * perche' la loro sintassi e' del motore (§6.3). Dirlo qui e' l'unico modo di non farlo
5983
+ * scoprire dopo, quando la formula punta a un nome che non esiste piu'.
5984
+ */
5985
+ readonly formulaUseCount: _angular_core.Signal<number>;
5821
5986
  readonly canRename: _angular_core.Signal<boolean>;
5822
5987
  startRename(): void;
5823
5988
  onPendingNameInput(value: string): void;
@@ -6154,6 +6319,14 @@ declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
6154
6319
  readonly stageOptions: _angular_core.Signal<NamePickerOption[]>;
6155
6320
  isSelected(path: FlowScreenFieldPath): boolean;
6156
6321
  isContainer(field: FlowScreenField | undefined): boolean;
6322
+ isRepeatingSection(field: FlowScreenField | undefined): boolean;
6323
+ /**
6324
+ * §5.2 — il campo ha dei `fields` dentro, quale che sia il loro significato: e' la domanda che
6325
+ * serve al rilascio e al comando «aggiungi qui». I due flag restano distinti — cio' che sta in una
6326
+ * sezione ripetibile e' il **modello di una riga**, non campi della schermata — ma per decidere
6327
+ * *dove* finisce un campo trascinato la differenza non conta.
6328
+ */
6329
+ holdsFields(field: FlowScreenField | undefined): boolean;
6157
6330
  /** `true` sulla sezione, che dispone i figli **in riga**: le colonne stanno una accanto all'altra. */
6158
6331
  isSection(field: FlowScreenField | undefined): boolean;
6159
6332
  childPath(parent: FlowScreenFieldPath, index: number): FlowScreenFieldPath;
@@ -6258,6 +6431,10 @@ declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
6258
6431
  */
6259
6432
  private clickTarget;
6260
6433
  addComponentAtSelection(type: string): void;
6434
+ /** Se il tipo puo' finire dove il clic lo metterebbe: e' cio' che disabilita il chip della palette. */
6435
+ canAddAtSelection(type: string): boolean;
6436
+ /** §5.2 — l'unico divieto di collocazione: una sezione ripetibile dentro un'altra. */
6437
+ private canPlaceAt;
6261
6438
  addObjectFieldAtSelection(field: FlowFieldDescription): void;
6262
6439
  /**
6263
6440
  * Un componente nuovo. Una sezione nasce **con una colonna dentro**: una sezione vuota e'
@@ -6322,6 +6499,57 @@ declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
6322
6499
  /** L'oggetto di un `ObjectProvided`, cioe' la parte prima del punto (§5.2). */
6323
6500
  readonly providedObject: _angular_core.Signal<string>;
6324
6501
  readonly providedField: _angular_core.Signal<string>;
6502
+ /** Come si legge la voce di dizionario di un campo: il flag e' del dizionario, non del codice. */
6503
+ private readonly typeOfField;
6504
+ readonly selectedIsRepeatingSection: _angular_core.Signal<boolean>;
6505
+ /**
6506
+ * La sezione ripetibile che **contiene** il campo selezionato, se c'e'. Antenato stretto: sulla
6507
+ * sezione stessa e' `undefined`, perche' configurare la sezione e configurare un campo di una riga
6508
+ * sono due pannelli diversi.
6509
+ */
6510
+ readonly selectedRepeater: _angular_core.Signal<FlowScreenField | undefined>;
6511
+ readonly isInsideRepeater: _angular_core.Signal<boolean>;
6512
+ /**
6513
+ * Il **cursore** della riga in cui si sta: e' cio' che si nomina lì dentro (§5.2). Scrivere il nome
6514
+ * del campo — `Luce_POD` — e' `SCREEN_FIELD_IN_REPEATER`, perche' quel campo esiste in una riga per
6515
+ * elemento della collection e il riferimento non ne individua nessuna.
6516
+ */
6517
+ readonly rowCursor: _angular_core.Signal<string>;
6518
+ /**
6519
+ * Cosa proporre **per primo** nei selettori di riferimento del campo selezionato. Dentro una riga
6520
+ * e' il cursore: e' la strada normale, e i campi della riga — che sono cio' che uno cerca per
6521
+ * istinto — non compaiono affatto, perche' non sono riferimenti validi. Fuori e' vuoto, cioe'
6522
+ * l'ordine di sempre.
6523
+ */
6524
+ readonly preferredRoots: _angular_core.Signal<string[]>;
6525
+ /**
6526
+ * I tipi proponibili per il campo selezionato. Dentro una riga manca la sezione ripetibile: **non si
6527
+ * annidano** — il cursore e' una variabile sola per sezione, e due sezioni annidate ne vorrebbero due
6528
+ * vive contemporaneamente. La validazione lo rifiuta comunque, ma un editor che lascia comporre e poi
6529
+ * accusa fa perdere tempo due volte.
6530
+ */
6531
+ readonly fieldTypeOptions: _angular_core.Signal<FlowScreenFieldTypeEntry[]>;
6532
+ /**
6533
+ * La classe delle righe: l'`objectType` della **variabile** in `collectionReference` (§5.2). Si
6534
+ * legge dal documento e non da `getReferences` perche' i due riferimenti di una sezione sono
6535
+ * variabili per forza — ci scrive il runtime — e la risposta serve sincrona, dentro il template.
6536
+ */
6537
+ rowClassOf(section: FlowScreenField | undefined): string | undefined;
6538
+ /** La classe con cui si popolano le tendine dei membri: quella della sezione, dentro o fuori. */
6539
+ readonly rowClass: _angular_core.Signal<string | undefined>;
6540
+ /**
6541
+ * §5.2 — le incoerenze dei due riferimenti sono tutte `REPEATING_SECTION_INVALID`, e si dicono qui
6542
+ * invece di aspettare la validazione: riferimento mancante, costante al posto di una variabile,
6543
+ * collection scambiata col cursore, due classi diverse.
6544
+ */
6545
+ readonly repeaterIssue: _angular_core.Signal<string | null>;
6546
+ /** §5.2 — il massimo mancante e' un **avviso**: senza, l'utente puo' aggiungere righe all'infinito. */
6547
+ readonly repeaterHasNoLimit: _angular_core.Signal<boolean>;
6548
+ /**
6549
+ * La variabile del documento con quel nome, se e' una variabile. Non un riferimento qualunque: una
6550
+ * costante o una formula qui e' `REPEATING_SECTION_INVALID`, e distinguerle e' il punto.
6551
+ */
6552
+ private variableTypeOf;
6325
6553
  /** Scrive una proprieta' del campo selezionato; valore vuoto → chiave omessa (§2). */
6326
6554
  private patchField;
6327
6555
  setFieldProperty(property: keyof FlowScreenField, value: unknown): void;
@@ -6337,7 +6565,12 @@ declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
6337
6565
  */
6338
6566
  setFieldType(type: string): void;
6339
6567
  setDefaultValue(value: FlowValue | undefined): void;
6340
- setNumberProperty(property: 'scale' | 'maxLength' | 'width', raw: string): void;
6568
+ setNumberProperty(property: 'scale' | 'maxLength' | 'width' | 'minInstances' | 'maxInstances', raw: string): void;
6569
+ /**
6570
+ * §5.2 — `allowAdd` e `allowRemove` hanno default `true`: si scrive solo il `false`, che e' la
6571
+ * scelta significativa. È la stessa regola dei flag del node (§2), non quella di un `FlowValue`.
6572
+ */
6573
+ setRepeaterFlag(property: 'allowAdd' | 'allowRemove', value: boolean): void;
6341
6574
  /** `isRequired` si scrive solo quando e' vero: il default e' facoltativo. */
6342
6575
  setRequired(value: boolean): void;
6343
6576
  /** `isEditable` ha default `true`: si scrive solo il `false`, che e' la scelta significativa. */
@@ -6380,7 +6613,15 @@ declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
6380
6613
  * scrive resta `TARGET_NOT_WRITABLE`. Quindi l'allargamento e' qui, non nel picker.
6381
6614
  */
6382
6615
  readonly screenFieldTargets: _angular_core.Signal<FlowReference[]>;
6383
- /** I campi che raccolgono un valore: gli unici che un'action possa riempire, e gli unici che innescano. */
6616
+ /**
6617
+ * I campi che raccolgono un valore: gli unici che un'action possa riempire, e gli unici che
6618
+ * innescano.
6619
+ *
6620
+ * **Senza quelli dentro una riga**, che raccolgono un valore ma non sono risorse: un trigger nomina
6621
+ * un campo, e il campo di una riga non ne ha uno solo — sarebbe da dichiarare *quale* riga osserva.
6622
+ * Un `triggerFieldName` che punta lì e' `SCREEN_FIELD_IN_REPEATER`, e lo stesso vale per
6623
+ * l'`assignToReference` di un output (§5.2).
6624
+ */
6384
6625
  private valueFieldsOfScreen;
6385
6626
  /**
6386
6627
  * I campi proponibili come innesco. Sono **i campi di questa schermata**, non i riferimenti in
@@ -6456,6 +6697,17 @@ declare class DynamicScreenInspectorComponent extends NodeInspectorBase {
6456
6697
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DynamicScreenInspectorComponent, "fb-dynamic-screen-inspector", never, { "initialSelection": { "alias": "initialSelection"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
6457
6698
  }
6458
6699
 
6700
+ /** Gli usi di un nome, divisi per come sono scritti nel documento. */
6701
+ interface FlowNameUses {
6702
+ /** Campi di riferimento: `targetReference`, `leftValueReference`, `choiceReferences`, … */
6703
+ references: number;
6704
+ /** Espressioni del motore di regole: **non** vengono riscritte dalla rinomina. */
6705
+ formulas: number;
6706
+ /** Isole `{!...}` nei campi di testo che il contratto dichiara con merge field (§5.12). */
6707
+ mergeFields: number;
6708
+ total: number;
6709
+ }
6710
+
6459
6711
  /** La risorsa aperta in modifica: collection piu' indice, la sola chiave del documento. */
6460
6712
  interface FlowResourceEdit {
6461
6713
  collection: FlowResourceCollection;
@@ -6621,6 +6873,17 @@ declare class ResourcePanelComponent {
6621
6873
  * senza, tre formule che leggono una variabile la direbbero «non usata».
6622
6874
  */
6623
6875
  usesOf(reference: FlowResourceRef): number;
6876
+ /**
6877
+ * Il dettaglio degli usi: quanti riferimenti, quante formule, quanti merge field.
6878
+ *
6879
+ * Serve al `title` della riga, e non e' un vezzo: `{!Cliente.Nome}` in un messaggio e' un uso
6880
+ * che non si vede da nessuna parte nel documento, quindi «13 usi» senza dire **dove** manda a
6881
+ * cercarli nei posti sbagliati. E le tre categorie non si comportano allo stesso modo davanti a
6882
+ * una rinomina, che e' l'altra cosa che si fa con questo numero.
6883
+ */
6884
+ usesDetailOf(reference: FlowResourceRef): FlowNameUses;
6885
+ /** La riga del `title`: si scrivono le sole categorie presenti, altrimenti sono sempre tre. */
6886
+ usesDetailLabel(reference: FlowResourceRef): string;
6624
6887
  /**
6625
6888
  * Il conteggio di **tutte** le risorse, calcolato una volta per documento.
6626
6889
  *
@@ -6628,10 +6891,10 @@ declare class ResourcePanelComponent {
6628
6891
  * chiede per ogni risorsa di ogni collection — i numeri delle schede, il chip «non usate» —
6629
6892
  * chiamarlo dal template significherebbe cinquanta walk per giro di change detection.
6630
6893
  *
6631
- * La chiave e' il nome **esatto** e non quello minuscolo: `countNameUses` confronta le
6632
- * stringhe come sono, quindi due nomi che differiscono solo per il case — che sono un
6633
- * `NAME_DUPLICATED`, non un caso da normalizzare qui — hanno due conteggi diversi, ed e'
6634
- * quello che il pannello mostrava anche prima della memoizzazione.
6894
+ * La chiave e' il nome **esatto** e non quello minuscolo: il conteggio confronta le stringhe
6895
+ * come sono, quindi due nomi che differiscono solo per il case — che sono un `NAME_DUPLICATED`,
6896
+ * non un caso da normalizzare qui — hanno due conteggi diversi, ed e' quello che il pannello
6897
+ * mostrava anche prima della memoizzazione.
6635
6898
  */
6636
6899
  private readonly useCounts;
6637
6900
  private keyOf;
@@ -6708,6 +6971,14 @@ declare class ResourceFormComponent {
6708
6971
  ignoredChoiceSetFilters(): string | null;
6709
6972
  /** La ripulitura e' un comando, non un effetto dell'apertura del form. */
6710
6973
  clearIgnoredChoiceSetFilters(): void;
6974
+ /**
6975
+ * Quante volte il nome di questa risorsa compare dentro un'**espressione**.
6976
+ *
6977
+ * E' l'unica delle tre categorie che la rinomina non tocca (§6.3: la sintassi e' del motore), e
6978
+ * va detta dove si rinomina: il conteggio della riga lo dice già nel suo `title`, ma chi sta
6979
+ * cambiando il nome sta guardando questo campo.
6980
+ */
6981
+ readonly formulaUseCount: _angular_core.Signal<number>;
6711
6982
  /** Su un choice set da enum il tipo e' `enumType`: il campo generico sarebbe un doppione. */
6712
6983
  hidesObjectType(): boolean;
6713
6984
  isChoiceSetSource(source: ChoiceSetSource): boolean;
@@ -6836,21 +7107,82 @@ declare class ProblemsPanelComponent {
6836
7107
  }>;
6837
7108
  readonly closed: _angular_core.OutputEmitterRef<void>;
6838
7109
  readonly filter: _angular_core.WritableSignal<SeverityFilter>;
7110
+ /** Il testo del filtro: cerca in cio' che la riga mostra. */
7111
+ readonly query: _angular_core.WritableSignal<string>;
7112
+ /**
7113
+ * I codici selezionati. Vuoto significa «tutti», non «nessuno»: e' l'unico modo di far
7114
+ * coincidere lo stato iniziale con l'assenza di filtro.
7115
+ */
7116
+ readonly selectedCodes: _angular_core.WritableSignal<ReadonlySet<string>>;
7117
+ readonly isCodeMenuOpen: _angular_core.WritableSignal<boolean>;
7118
+ /** Il confine della tendina: il controllo, non il pannello. Vedi il commento nel costruttore. */
7119
+ private readonly codesRef;
7120
+ constructor();
6839
7121
  readonly isRunning: _angular_core.Signal<boolean>;
6840
7122
  readonly hasResult: _angular_core.Signal<boolean>;
6841
7123
  readonly lastError: _angular_core.Signal<string | null>;
7124
+ /**
7125
+ * Il testo su cui la casella confronta, **una stringa per rilievo** e allineata per indice a
7126
+ * `validation.issues()`.
7127
+ *
7128
+ * Ci sta anche il percorso **tradotto per nome** (`pathLabel`), che e' quello che la riga
7129
+ * mostra: su uno screen dinamico il path arriva a indici, e cercare il nome del campo che si
7130
+ * legge sullo schermo non troverebbe niente. Si calcola una volta per risultato invece che a
7131
+ * ogni battuta, perche' tradurre un path significa camminare l'albero della schermata.
7132
+ */
7133
+ private readonly haystacks;
7134
+ private readonly needle;
7135
+ /** Testo e codici: i due filtri che non sono la gravita'. */
7136
+ private matchesText;
7137
+ private matchesCode;
6842
7138
  /**
6843
7139
  * I conteggi dei chip vengono dai rilievi, non dal risultato: il numero sul filtro deve
6844
- * essere quello che il filtro apre (vedi `FlowValidationStore.issueCounts`).
7140
+ * essere quello che il filtro apre (vedi `FlowValidationStore.issueCounts`). E' anche il
7141
+ * motivo per cui **non** si leggono piu' da `issueCounts` quando gli altri filtri sono attivi:
7142
+ * «Errori 47» accanto a una casella che ne lascia passare tre e' un numero che promette
7143
+ * quarantaquattro righe che non compariranno.
6845
7144
  */
6846
7145
  private readonly counts;
6847
7146
  readonly errorCount: _angular_core.Signal<number>;
6848
7147
  readonly warningCount: _angular_core.Signal<number>;
6849
7148
  readonly infoCount: _angular_core.Signal<number>;
7149
+ /** Quante righe aprirebbe «Tutti»: il totale **dopo** testo e codici. */
6850
7150
  readonly totalCount: _angular_core.Signal<number>;
7151
+ /**
7152
+ * Il totale assoluto, che non guarda nessun filtro. Serve a due cose diverse dai chip: dire
7153
+ * che il flow **non** e' senza rilievi quando i filtri li nascondono tutti, e tenere in fondo
7154
+ * la nota sugli errori che bloccano l'attivazione — filtrando per «Note» quella nota spariva
7155
+ * pur essendoci quarantasette errori, cioe' proprio quando serve.
7156
+ */
7157
+ readonly absoluteCount: _angular_core.Signal<number>;
7158
+ readonly hasErrors: _angular_core.Signal<boolean>;
6851
7159
  readonly issues: _angular_core.Signal<FlowValidationIssue[]>;
7160
+ /**
7161
+ * I codici della tendina: quelli **presenti** dopo gravita' e testo, col loro conteggio.
7162
+ *
7163
+ * Piu' quelli **selezionati** anche se non compaiono piu', a zero: una selezione che sparisce
7164
+ * dall'elenco quando si cambia gravita' e' una selezione che continua a filtrare senza che si
7165
+ * possa vedere ne' togliere. Ordinati per frequenza e poi per nome, perche' su sessanta righe
7166
+ * il codice che conta e' quello che si ripete.
7167
+ */
7168
+ readonly codeFacets: _angular_core.Signal<{
7169
+ code: string;
7170
+ count: number;
7171
+ selected: boolean;
7172
+ }[]>;
7173
+ readonly selectedCodeCount: _angular_core.Signal<number>;
7174
+ /** `true` se c'e' un filtro **oltre** la gravita': decide il messaggio dell'elenco vuoto. */
7175
+ readonly hasTextOrCodeFilter: _angular_core.Signal<boolean>;
7176
+ readonly hasAnyFilter: _angular_core.Signal<boolean>;
7177
+ onQuery(value: string): void;
7178
+ toggleCodeMenu(): void;
7179
+ /** La selezione e' un insieme nuovo a ogni gesto: un `Set` mutato non fa scattare il signal. */
7180
+ toggleCode(code: string): void;
7181
+ clearCodes(): void;
7182
+ resetFilters(): void;
7183
+ /** Nessun rilievo **nel flow**: e' un'altra cosa dal «nessuno che passi i filtri». */
6852
7184
  readonly isClean: _angular_core.Signal<boolean>;
6853
- /** Ci sono rilievi, ma il filtro attivo non ne mostra nessuno: va detto, non lasciato in bianco. */
7185
+ /** Ci sono rilievi, ma i filtri attivi non ne mostrano nessuno: va detto, non lasciato in bianco. */
6854
7186
  readonly isFilteredEmpty: _angular_core.Signal<boolean>;
6855
7187
  readonly activeFilterLabel: _angular_core.Signal<string>;
6856
7188
  /** Un secondo clic sul filtro attivo torna a «Tutti»: e' l'unico modo per uscirne col mouse dov'e'. */
@@ -7070,7 +7402,7 @@ declare class FlowBuilderComponent {
7070
7402
  * troppo. `panel` tiene il form nel pannello laterale, che e' piu' comodo quando si
7071
7403
  * modificano molti elementi di fila perche' non c'e' niente da aprire e chiudere.
7072
7404
  */
7073
- readonly inspectorMode: _angular_core.InputSignal<"dialog" | "panel">;
7405
+ readonly inspectorMode: _angular_core.InputSignal<"panel" | "dialog">;
7074
7406
  /**
7075
7407
  * L'esito dell'ultima esecuzione, se l'ospite ne ha uno da mostrare.
7076
7408
  *
@@ -7472,5 +7804,5 @@ declare class SelectValueDirective implements AfterViewChecked {
7472
7804
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectValueDirective, "select[fbValue]", never, { "fbValue": { "alias": "fbValue"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
7473
7805
  }
7474
7806
 
7475
- export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, DynamicScreenInspectorComponent, ENUM_CHOICE_SET_DEFAULT_DISPLAY_FIELD, ENUM_CHOICE_SET_DEFAULT_VALUE_FIELD, ENUM_CHOICE_SET_FIELDS, 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_FOLD_HEIGHT, FLOW_FOLD_WIDTH, FLOW_GROUP_COLORS, 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, FieldValuePickerComponent, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowClipboardService, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, FormulaEditorComponent, FormulaValidationService, GROUP_HEADER_HEIGHT, GROUP_MIN_HEIGHT, GROUP_MIN_WIDTH, GROUP_PADDING, GroupPanelComponent, HttpFlowBuilderApi, MergeTextEditorComponent, NamePickerComponent, NodeInspectorBase, ORCHESTRATION_CONDITION_OUTPUT, ObjectPickerComponent, OrchestratedStageInspectorComponent, ParameterEditorComponent, PasteDialogComponent, ProblemsPanelComponent, RecordFilterEditorComponent, ReferencePickerComponent, ResourceDialogComponent, ResourceFormComponent, ResourcePanelComponent, RunDialogComponent, 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, boundsAround, buildClipboardPayload, canvasFoldId, canvasGroupId, canvasNodeId, checkConditionLogic, checkFlowName, choiceSetSourceOf, declaredChoiceSetSources, describeFieldPath, describePathEntry, duplicateField, elementIcon, emptyFlowDefinition, enumChoiceSetFieldType, fieldAt, filterReferences, flattenFields, flowNodeWidth, flowNodeWidthClass, foldSourceConnectorId, foldTargetConnectorId, groupColorClass, groupRect, hasAutoSize, innerNamesOf, insertField, isClipboardPayload, isCustomConditionLogic, isEmptyReferenceFilter, isFieldResource, isFoldReference, isGlobalReference, isNumericType, isPathInside, isTypeCheckedOperator, isUnknownEnumChoiceSetField, isValidFlowName, isValued, loadPathLevel, matchesReferenceFilter, membersInside, moveCondition, moveField, navigatePath, otherSourceFieldsOf, outletByKey, outletsOf, parseCanvasFoldId, parseCanvasGroupId, parseCanvasNodeId, parseFieldPath, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, pathAvailableNames, pathContainerLabel, pathKey, pathNotVerifiableMessage, planPaste, recomputeMembers, referenceRoot, referencedRootsOf, remapConditionLogic, removeCondition, removeField, resolvePath, rewriteReferences, sameMembers, samePath, screenActionNames, screenFieldNames, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, typeOfCollection, uniqueFlowName, valuedFieldOf, valuedFieldsOf, variantFieldOf, variantOf, variantPresetOf };
7476
- export type { ChoiceSetSource, FieldAssignmentHolder, FilterFieldOption, FilterHolder, FlowActionCall, FlowAnyNode, FlowAssignment, FlowAssignmentItem, FlowAssignmentOperator, FlowAssignmentOperatorEntry, FlowBuilderHttpConfig, FlowCanvasEdge, FlowCanvasFold, FlowCanvasGroup, 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, FlowFormulaFunction, FlowFormulaFunctionParameter, FlowFormulaIssue, FlowFormulaUsage, FlowFormulaValidationRequest, FlowFormulaValidationResult, FlowGlobalVariableEntry, FlowGroup, FlowGroupRef, FlowGroupTarget, FlowInputFieldAssignment, FlowInputParameter, FlowInterviewResult, FlowInterviewStatus, FlowIssueSeverity, FlowLayoutDirection, FlowLayoutNodeInput, FlowLayoutOptions, FlowLayoutResult, FlowListQuery, FlowLoop, FlowNameCheck, FlowNameProblem, FlowNewVersionRequest, FlowNodeBase, FlowNodeCollection, FlowNodeRef, FlowObjectDescription, FlowObjectSummary, FlowOffsetUnit, FlowOrchestratedStage, FlowOutlet, FlowOutline, FlowOutlineConnection, FlowOutlineGroup, FlowOutlineNode, FlowOutputFieldAssignment, FlowOutputParameter, FlowPalettePick, FlowPastePlan, FlowPasteRename, FlowPasteResource, FlowPendingScreen, FlowProcessType, FlowRecordCreate, FlowRecordDelete, FlowRecordFilter, FlowRecordFilterOperator, FlowRecordLookup, FlowRecordRollback, FlowRecordTriggerType, FlowRecordUpdate, FlowRecordValue, FlowRect, FlowReference, FlowReferenceFilter, FlowReferenceKind, FlowRegionContainerType, FlowResourceCollection, FlowResourceEdit, FlowResourceKindEntry, FlowResourceRef, FlowResourceTarget, FlowResumeRequest, FlowRunOutcome, FlowRunRequest, 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, PathValueSet, StructureMemberUsage, ValueMode };
7807
+ export { ConditionEditorComponent, ConnectorEditorComponent, DebugPanelComponent, DynamicScreenInspectorComponent, ENUM_CHOICE_SET_DEFAULT_DISPLAY_FIELD, ENUM_CHOICE_SET_DEFAULT_VALUE_FIELD, ENUM_CHOICE_SET_FIELDS, 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_FOLD_HEIGHT, FLOW_FOLD_WIDTH, FLOW_GROUP_COLORS, 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, FieldValuePickerComponent, FlowApiError, FlowBuilderApi, FlowBuilderComponent, FlowCanvasComponent, FlowCatalogStore, FlowClipboardService, FlowDictionaryStore, FlowDocumentStore, FlowEditorSession, FlowLayoutService, FlowValidationStore, FormulaEditorComponent, FormulaValidationService, GROUP_HEADER_HEIGHT, GROUP_MIN_HEIGHT, GROUP_MIN_WIDTH, GROUP_PADDING, GroupPanelComponent, HttpFlowBuilderApi, MergeTextEditorComponent, NamePickerComponent, NodeInspectorBase, ORCHESTRATION_CONDITION_OUTPUT, ObjectPickerComponent, OrchestratedStageInspectorComponent, ParameterEditorComponent, PasteDialogComponent, ProblemsPanelComponent, RecordFilterEditorComponent, ReferencePickerComponent, ResourceDialogComponent, ResourceFormComponent, ResourcePanelComponent, RunDialogComponent, 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, boundsAround, buildClipboardPayload, canvasFoldId, canvasGroupId, canvasNodeId, checkConditionLogic, checkFlowName, choiceSetSourceOf, declaredChoiceSetSources, describeFieldPath, describePathEntry, duplicateField, elementIcon, emptyFlowDefinition, enumChoiceSetFieldType, fieldAt, filterReferences, flattenFields, flowNodeWidth, flowNodeWidthClass, foldSourceConnectorId, foldTargetConnectorId, groupColorClass, groupRect, hasAutoSize, innerNamesOf, insertField, isClipboardPayload, isCustomConditionLogic, isEmptyReferenceFilter, isFieldResource, isFoldReference, isGlobalReference, isNumericType, isPathInside, isTypeCheckedOperator, isUnknownEnumChoiceSetField, isValidFlowName, isValued, loadPathLevel, matchesReferenceFilter, membersInside, moveCondition, moveField, navigatePath, otherSourceFieldsOf, outletByKey, outletsOf, parseCanvasFoldId, parseCanvasGroupId, parseCanvasNodeId, parseFieldPath, parseInvariantNumber, parseSourceConnectorId, parseTargetConnectorId, pathAvailableNames, pathContainerLabel, pathKey, pathNotVerifiableMessage, planPaste, recomputeMembers, referenceRoot, referencedRootsOf, remapConditionLogic, removeCondition, removeField, repeatedFieldNames, repeatingSectionOf, resolvePath, resourceFieldsOf, rewriteReferences, sameMembers, samePath, screenActionNames, screenFieldNames, severityBucket, slugifyFlowName, sourceConnectorId, stageStepNames, stageStepOutputReferenced, stepsOf, targetConnectorId, typeOfCollection, uniqueFlowName, valuedFieldOf, valuedFieldsOf, variantFieldOf, variantOf, variantPresetOf };
7808
+ export type { ChoiceSetSource, FieldAssignmentHolder, FilterFieldOption, FilterHolder, FlowActionCall, FlowAnyNode, FlowAssignment, FlowAssignmentItem, FlowAssignmentOperator, FlowAssignmentOperatorEntry, FlowBuilderHttpConfig, FlowCanvasEdge, FlowCanvasFold, FlowCanvasGroup, 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, FlowFormulaFunction, FlowFormulaFunctionParameter, FlowFormulaIssue, FlowFormulaUsage, FlowFormulaValidationRequest, FlowFormulaValidationResult, FlowGlobalVariableEntry, FlowGroup, FlowGroupRef, FlowGroupTarget, FlowInputFieldAssignment, FlowInputParameter, FlowInterviewResult, FlowInterviewStatus, FlowIssueSeverity, FlowLayoutDirection, FlowLayoutNodeInput, FlowLayoutOptions, FlowLayoutResult, FlowListQuery, FlowLoop, FlowNameCheck, FlowNameProblem, FlowNewVersionRequest, FlowNodeBase, FlowNodeCollection, FlowNodeRef, FlowObjectDescription, FlowObjectSummary, FlowOffsetUnit, FlowOrchestratedStage, FlowOutlet, FlowOutline, FlowOutlineConnection, FlowOutlineGroup, FlowOutlineNode, FlowOutputFieldAssignment, FlowOutputParameter, FlowPalettePick, FlowPastePlan, FlowPasteRename, FlowPasteResource, FlowPendingScreen, FlowProcessType, FlowRecordCreate, FlowRecordDelete, FlowRecordFilter, FlowRecordFilterOperator, FlowRecordLookup, FlowRecordRollback, FlowRecordTriggerType, FlowRecordUpdate, FlowRecordValue, FlowRect, FlowReference, FlowReferenceFilter, FlowReferenceKind, FlowRegionContainerType, FlowResourceCollection, FlowResourceEdit, FlowResourceKindEntry, FlowResourceRef, FlowResourceTarget, FlowResumeRequest, FlowRunOutcome, FlowRunRequest, FlowSaveRequest, FlowSaveResult, FlowSchedule, FlowScheduledPath, FlowScreen, FlowScreenAction, FlowScreenField, FlowScreenFieldInputsRevisited, FlowScreenFieldNode, FlowScreenFieldPath, FlowScreenFieldType, FlowScreenFieldTypeEntry, FlowScreenFieldTypeResolver, 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, PathValueSet, StructureMemberUsage, ValueMode };