@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 CHANGED
@@ -191,6 +191,32 @@ l'attributo `style` del node a ogni spostamento e uno `[style.width]` verrebbe c
191
191
  tabella delle larghezze e' la stessa che il comando «Riordina» passa a dagre: se divergessero,
192
192
  i node larghi resterebbero sovrapposti.
193
193
 
194
+ **Copia, incolla, duplica.** `Ctrl`+`C` copia gli elementi selezionati — la selezione del canvas
195
+ puo' contenerne piu' d'uno (rettangolo, `Ctrl`+`A`) — `Ctrl`+`V` li incolla, `Ctrl`+`D` li duplica in
196
+ loco; gli stessi comandi stanno nella top bar («⧉» e «⎘») e sul node selezionato («⧉»). I tasti
197
+ ascoltano sull'host del builder e si ignorano quando il fuoco e' in un campo di testo, dove
198
+ `Ctrl`+`C` deve copiare il testo.
199
+
200
+ Cosa viaggia con il blocco: la configurazione intera dell'elemento, i **collegamenti interni** al
201
+ blocco (quelli verso l'esterno no — sarebbero `CONNECTOR_TARGET_UNKNOWN`) e le **risorse
202
+ referenziate**, che e' cio' che rende il gesto utile su un elemento complesso. Gli appunti stanno in
203
+ `localStorage`, quindi valgono anche fra flow diversi e fra schede: non e' la clipboard di sistema,
204
+ che per essere **letta** chiede un permesso che in un iframe puo' non arrivare mai.
205
+
206
+ L'incolla passa da una conferma perche' non e' mai una copia identica, e le tre cose che cambiano le
207
+ decide il contratto:
208
+
209
+ - i nomi già usati vengono **rinominati**, e non solo quello dell'elemento: uno spazio di nomi unico
210
+ (§3.3) comprende gli step di orchestrazione, i campi di uno screen dinamico e le screen action, e
211
+ duplicare uno screen dinamico senza rinominare i campi produceva un `NAME_DUPLICATED` per campo;
212
+ - i **riferimenti interni** al blocco seguono i nomi nuovi (§13.8: nessuna primitiva lo fa), condizioni,
213
+ `visibilityRule`, trigger e output automatici compresi;
214
+ - le risorse che nella destinazione non esistono si creano (con una casella per non farlo), quelle
215
+ omonime si **riusano**, e cio' che resta irrisolvibile — un elemento rimasto nel flow di origine —
216
+ viene elencato invece di sparire in un `REFERENCE_UNKNOWN` da scoprire dopo.
217
+
218
+ Tutto l'incolla e' **un solo passo di annulla**.
219
+
194
220
  **Dettaglio dell'elemento.** Con `inspectorMode="dialog"` (predefinito) il form si apre in una
195
221
  finestra sopra il canvas: doppio click sul node, bottone «✎» sul node, comando «Dettaglio»
196
222
  nella top bar, click su un rilievo nel pannello dei problemi, o creazione di un elemento dalla
@@ -507,6 +533,10 @@ src/lib/
507
533
  "questo ambiente la primitiva non ce l'ha"
508
534
  flow-editor-session.ts versioni, salvataggio, concorrenza ottimistica
509
535
  flow-layout.service.ts auto-layout con dagre
536
+ flow-clipboard.ts copia/incolla: l'elenco unico dei campi-riferimento, la riscrittura
537
+ dei nomi, il piano dell'incolla (che nomi cambiano, che risorse
538
+ mancano, cosa resta irrisolto)
539
+ flow-clipboard.service.ts gli appunti condivisi fra istanze e schede (localStorage)
510
540
  flow-name.util.ts nomi: regexp, namespace unico, slug dalla label
511
541
  condition-logic.util.ts riscrittura di conditionLogic su cancella / riordina
512
542
  condition-types.util.ts quali tipi si confrontano, e i numeri in cultura invariante