@esfaenza/flow-builder 20.3.32 → 20.3.33
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 +100 -7
- package/fesm2022/esfaenza-flow-builder.mjs +1323 -147
- package/fesm2022/esfaenza-flow-builder.mjs.map +1 -1
- package/index.d.ts +906 -19
- package/package.json +1 -1
- package/styles/flow-builder.css +19 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";import{HttpClient as ft,HttpErrorResponse as bt,HttpParams as mt}from"@angular/common/http";import*as a from"@angular/core";import{InjectionToken as gt,inject as b,signal as u,effect as w,Injectable as ae,computed as i,DestroyRef as bn,input as d,output as v,viewChild as Ye,ChangeDetectionStrategy as h,Component as _,untracked as H,ElementRef as vt,Directive as Yn,Injector as ht,afterNextRender as _t}from"@angular/core";import{firstValueFrom as je}from"rxjs";import Zn from"dagre";import*as A from"@foblex/flow";import{EFMarkerType as yt,EFConnectableSide as xt,FCanvasComponent as mn,FFlowModule as Ze,provideFFlow as Jn,withA11y as Xn}from"@foblex/flow";import{CdkDrag as er,CdkDragHandle as nr}from"@angular/cdk/drag-drop";import{DOCUMENT as kt,NgTemplateOutlet as rr}from"@angular/common";const gn=["screens","dynamicScreens","assignments","decisions","loops","collectionProcessors","recordLookups","recordCreates","recordUpdates","recordDeletes","recordRollbacks","actionCalls","scriptPluginCalls","subflows","transforms","waits","customErrors","orchestratedStages","steps","experiments"],tr=["variables","constants","formulas","textTemplates","choices","dynamicChoiceSets","stages"];class T extends Error{category;validation;conflictingAuthor;details;constructor(e,n,r,t,s){super(n),this.category=e,this.validation=r,this.conflictingAuthor=t,this.details=s,this.name="FlowApiError"}static is(e){return e instanceof T}}const Nt={InvalidRequest:400,InvalidDefinition:400,ValidationFailed:422,FlowNotFound:404,VersionNotFound:404,InterviewNotFound:404,StructureNotFound:404,AlreadyExists:409,NotEditable:409,VersionConflict:409,InvalidToken:400,MissingService:501},ar={InvalidRequest:"La richiesta non e\u2019 valida.",InvalidDefinition:"Il documento non e\u2019 leggibile come definizione di flow.",ValidationFailed:"La definizione contiene errori che impediscono l\u2019attivazione.",FlowNotFound:"Il flow non esiste piu\u2019.",VersionNotFound:"La versione richiesta non esiste.",AlreadyExists:"Esiste gi\xE0 un flow con questo nome.",NotEditable:"Questa versione non e\u2019 modificabile: creane una nuova.",VersionConflict:"Qualcun altro ha salvato questa versione nel frattempo.",MissingService:"Funzione non configurata su questo ambiente.",StructureNotFound:"La classe non e\u2019 fra quelle utilizzabili come Structure.",InvalidToken:"La sessione di prova non e\u2019 piu\u2019 valida: riavvia l\u2019esecuzione.",InterviewNotFound:"L\u2019esecuzione sospesa non esiste piu\u2019.",Unknown:"Errore inatteso."};function I(o){return Promise.reject(new T("MissingService",`Primitiva non disponibile su questo ambiente: ${o}.`))}class L{exportFlow(e,n){return I("exportFlow")}parseFlow(e){return I("parseFlow")}cloneFlow(e,n){return I("cloneFlow")}deleteVersion(e,n){return I("deleteVersion")}deleteFlow(e){return I("deleteFlow")}validateVersion(e,n){return I("validateVersion")}validateFormula(e){return I("validateFormula")}describeObject(e){return I("describeObject")}listFieldValues(e,n){return I("listFieldValues")}listFormulaFunctions(e){return I("listFormulaFunctions")}listEnumValues(e){return I("listEnumValues")}listStructures(){return I("listStructures")}describeStructure(e){return I("describeStructure")}runFlow(e){return I("runFlow")}debugFlow(e){return I("debugFlow")}startInterview(e){return I("startInterview")}respondToScreen(e){return I("respondToScreen")}resumeInterview(e){return I("resumeInterview")}completeStageStep(e){return I("completeStageStep")}inspectInterview(e){return I("inspectInterview")}abandonInterview(e){return I("abandonInterview")}}const ir=new gt("FLOW_BUILDER_HTTP_CONFIG",{factory:()=>({baseUrl:"/api"})});function wt(o){switch(o){case 400:return"InvalidRequest";case 404:return"FlowNotFound";case 409:return"VersionConflict";case 422:return"ValidationFailed";case 501:return"MissingService";default:return"Unknown"}}class k extends L{http=b(ft);config=b(ir);url(e){return`${this.config.baseUrl??""}${e}`}async request(e){try{return await e}catch(n){throw this.toApiError(n)}}toApiError(e){if(T.is(e))return e;if(e instanceof bt){const r=e.error??{},t=r.category??wt(e.status),s=r.message??ar[t]??e.message;return new T(t,s,r.validation,r.conflictingAuthor??r.updatedBy,e.error)}const n=e instanceof Error?e.message:String(e);return new T("Unknown",n,void 0,void 0,e)}get(e,n){return this.request(je(this.http.get(this.url(e),{params:n})))}post(e,n,r){return this.request(je(this.http.post(this.url(e),n??{},{params:r})))}put(e,n){return this.request(je(this.http.put(this.url(e),n??{})))}del(e){return this.request(je(this.http.delete(this.url(e))))}static params(e){let n=new mt;for(const[r,t]of Object.entries(e))t!=null&&t!==""&&(n=n.set(r,String(t)));return n}static segment(e){return encodeURIComponent(e)}listFlows(e){return this.get("/flows/editor/list",k.params({...e}))}listVersions(e){return this.get(`/flows/editor/${k.segment(e)}/versions`)}loadFlow(e,n){return this.get(`/flows/editor/${k.segment(e)}`,k.params({version:n}))}exportFlow(e,n){return this.request(je(this.http.get(this.url(`/flows/editor/${k.segment(e)}/export`),{params:k.params({...n}),responseType:"text"})))}parseFlow(e){return this.post("/flows/editor/parse",e)}createFlow(e){return this.post("/flows/editor/create",e)}saveFlow(e,n){return this.post("/flows/editor/save",n)}createVersion(e,n){return this.post(`/flows/editor/${k.segment(e)}/new-version`,{author:n?.author},k.params({from:n?.from}))}cloneFlow(e,n){return this.post(`/flows/editor/${k.segment(e)}/clone`,n)}activateVersion(e,n){return this.put(`/flows/editor/${k.segment(e)}/activate/${n}`)}deactivateFlow(e){return this.put(`/flows/editor/${k.segment(e)}/deactivate`)}deleteVersion(e,n){return this.del(`/flows/editor/${k.segment(e)}/versions/${n}`)}deleteFlow(e){return this.del(`/flows/editor/${k.segment(e)}`)}validateDefinition(e){return this.post("/flows/editor/validate",e)}validateFormula(e){return this.post("/flows/editor/validate-formula",e)}validateVersion(e,n){return this.get(`/flows/editor/${k.segment(e)}/validate`,k.params({version:n}))}getDictionaries(e){return this.get("/flows/editor/dictionaries",k.params({processType:e}))}getReferences(e){return this.post("/flows/editor/references",e)}getWritableReferences(e){return this.post("/flows/editor/writable-references",e)}getConnectorTargets(e,n){return this.post("/flows/editor/connector-targets",e,k.params({excluding:n}))}getOutline(e){return this.post("/flows/editor/outline",e)}listObjects(){return this.get("/flows/objects")}describeObject(e){return this.get(`/flows/objects/${k.segment(e)}`)}listFields(e,n){return this.get(`/flows/objects/${k.segment(e)}/fields`,k.params({usage:n}))}listFieldValues(e,n){return this.get(`/flows/objects/${k.segment(e)}/fields/${k.segment(n)}/picklist`)}listActionTypes(){return this.get("/flows/action-types")}listActions(e){return this.get("/flows/actions",k.params({type:e}))}listActionParameters(e,n){return this.get(`/flows/actions/${k.segment(e)}/${k.segment(n)}/parameters`)}listScripts(){return this.get("/flows/editor/scripts")}listScriptParameters(e){return this.get(`/flows/editor/scripts/${k.segment(e)}/parameters`)}listForms(e){return this.get("/flows/editor/forms",k.params({kind:e}))}listFormParameters(e){return this.get(`/flows/editor/forms/${k.segment(e)}/parameters`)}listFormulaFunctions(e){return this.get("/flows/editor/formula-functions",k.params({usage:e}))}listEnumTypes(){return this.get("/flows/editor/enum-types")}listEnumValues(e){return this.get(`/flows/editor/enum-types/${k.segment(e)}/values`)}listStructures(){return this.get("/flows/editor/structures")}describeStructure(e){return this.get(`/flows/editor/structures/${k.segment(e)}`).catch(n=>{throw T.is(n)&&n.category==="FlowNotFound"?new T("StructureNotFound",`La classe \xAB${e}\xBB non e\u2019 registrata.`,void 0,void 0,n.details):n})}listEvents(){return this.get("/flows/editor/events")}listSubflowCandidates(e){return this.get("/flows/editor/subflows",k.params({excluding:e}))}startInterview(e){return this.post("/flows/start",e)}respondToScreen(e){return this.post("/flows/submit-screen",e)}resumeInterview(e){return this.post("/flows/resume-wait",e)}completeStageStep(e){let n={stepName:e.stepName,status:e.status,stepOutputs:e.stepOutputs,debug:e.debug};return this.post(`/flows/${k.segment(e.interviewKey)}/resume-stage-step`,n)}inspectInterview(e){return this.get(`/flows/${k.segment(e)}`)}abandonInterview(e){return this.del(`/flows/${k.segment(e)}`)}}const z="$start";function j(o,e,n,r,t){return{key:o,kind:e,label:n,read:s=>s[r],write:(s,l)=>{l?s[r]=l:delete s[r]},...t}}function vn(o,e,n,r,t,s){return{key:o,kind:e,label:n,branchLabel:s,read:l=>l[r]?.[t]?.connector,write:(l,c)=>{const g=l[r]?.[t];g&&(c?g.connector=c:delete g.connector)}}}function Ct(){return{key:"next",kind:"Next",label:"Successivo",read:o=>o.connector?.[0],write:(o,e)=>{const n=o;e?n.connector=[e]:delete n.connector}}}function K(o,e){switch(o){case"Start":{const n=e,r=[j("next","Start","Inizio","connector",{isStructural:!0})];return(n.scheduledPaths??[]).forEach((t,s)=>{r.push(vn(`scheduledPath:${s}`,"ScheduledPath",t.label||t.name||`Percorso differito ${s+1}`,"scheduledPaths",s,t.label??t.name??null))}),r}case"Decision":{const n=e,r=(n.rules??[]).map((t,s)=>vn(`rule:${s}`,"Rule",t.label||t.name||`Regola ${s+1}`,"rules",s,t.label??t.name??null));return r.push(j("default","Default",n.defaultConnectorLabel||"Nessuna regola vera","defaultConnector",{branchLabel:n.defaultConnectorLabel??null})),r}case"Loop":return[j("loopNext","LoopNext","Per ogni valore","nextValueConnector",{isStructural:!0}),j("loopEnd","LoopEnd","Nessun valore rimasto","noMoreValuesConnector")];case"Wait":{const n=e,r=(n.waitEvents??[]).map((t,s)=>vn(`waitEvent:${s}`,"WaitEvent",t.label||t.name||`Evento ${s+1}`,"waitEvents",s,t.label??t.name??null));return r.push(j("default","Default",n.defaultConnectorLabel||"Nessun evento verificato","defaultConnector",{branchLabel:n.defaultConnectorLabel??null})),r.push(j("fault","Fault","Errore","faultConnector",{isFaultRecovery:!0})),r}case"ActionCall":{const n=[j("next","Next","Successivo","connector"),j("fault","Fault","Errore","faultConnector",{isFaultRecovery:!0})];return(e.timeoutPathUsage==="EnableTimeoutPath"||e.timeoutConnector)&&n.push(j("timeout","Timeout","Timeout","timeoutConnector")),n}case"OrchestratedStage":return[j("next","Next","Stage concluso","connector"),j("fault","Fault","Step rifiutato","faultConnector")];case"ScriptCall":case"RecordLookup":case"RecordCreate":case"RecordUpdate":case"RecordDelete":return[j("next","Next","Successivo","connector"),j("fault","Fault","Errore","faultConnector",{isFaultRecovery:!0})];case"Transform":return[Ct()];case"CustomError":return[];case"Screen":case"DynamicScreen":case"Assignment":case"CollectionProcessor":case"RecordRollback":case"Subflow":return[j("next","Next","Successivo","connector")];default:return e.connector?[j("next","Next","Successivo","connector")]:[]}}function Tt(o,e,n){return K(o,e).find(r=>r.key===n)}const hn={Screen:"screens",DynamicScreen:"dynamicScreens",Assignment:"assignments",Decision:"decisions",Loop:"loops",CollectionProcessor:"collectionProcessors",CustomError:"customErrors",Wait:"waits",RecordLookup:"recordLookups",RecordCreate:"recordCreates",RecordUpdate:"recordUpdates",RecordDelete:"recordDeletes",RecordRollback:"recordRollbacks",ActionCall:"actionCalls",ScriptCall:"scriptPluginCalls",Subflow:"subflows",Transform:"transforms",Step:"steps",Experiment:"experiments",OrchestratedStage:"orchestratedStages"},Je=Object.fromEntries(Object.entries(hn).map(([o,e])=>[e,o])),or={Screen:"Screen",DynamicScreen:"Screen dinamico",Assignment:"Assegnazione",Decision:"Decisione",Loop:"Ciclo",CollectionProcessor:"Ordina o filtra",CustomError:"Errore custom",Wait:"Attesa",RecordLookup:"Get Records",RecordCreate:"Create Records",RecordUpdate:"Update Records",RecordDelete:"Delete Records",RecordRollback:"Roll Back Records",ActionCall:"Action",ScriptCall:"Script",Subflow:"Subflow",Transform:"Trasformazione",Step:"Segnaposto",Experiment:"Esperimento",OrchestratedStage:"Stage di orchestrazione"},_n=new Set(["Step","Experiment"]),St=new Set(["RecordLookup","RecordCreate","CollectionProcessor","Transform","ActionCall","Subflow"]),sr={Start:"\u25B6",Screen:"\u25A4",DynamicScreen:"\u25A6",Decision:"\u25C6",Assignment:"=",Loop:"\u21BB",CollectionProcessor:"\u21C5",RecordLookup:"\u2315",RecordCreate:"+",RecordUpdate:"\u270E",RecordDelete:"\xD7",RecordRollback:"\u21BA",ActionCall:"\u26A1",ScriptCall:"\u27E8\u27E9",Subflow:"\u2935",Transform:"\u21C4",Wait:"\u25F7",CustomError:"!",OrchestratedStage:"\u2630"},lr={"CollectionProcessor:Sort":"\u21C5","CollectionProcessor:Filter":"\u25BD"};function yn(o,e,n){const r=(n?lr[`${o}:${n}`]:void 0)??sr[o];return r||(e||o)?.trim().charAt(0).toUpperCase()||"\u2022"}const cr={CollectionProcessor:"collectionProcessorType"};function Xe(o){return cr[o]}function dr(o,e){const n=Xe(o),r=n?e[n]:void 0;return typeof r=="string"&&r?r:void 0}function ur(o,e){const n=Xe(o);return!n||!e?{}:{[n]:e}}const xn=/^[A-Za-z][A-Za-z0-9_]*$/;function pr(o){return!!o&&xn.test(o)}function Ce(o,e,n){const r=(o??"")?.trim();if(!r)return{isValid:!1,problem:"empty",message:"Il nome tecnico e\u2019 obbligatorio."};if(!xn.test(r))return{isValid:!1,problem:"pattern",message:"Deve iniziare con una lettera e contenere solo lettere, cifre e underscore."};const t=r.toLowerCase(),s=n?.trim().toLowerCase();for(const l of e){const c=l.toLowerCase();if(c===t&&c!==s)return{isValid:!1,problem:"duplicate",message:"Questo nome e\u2019 gi\xE0 usato da un altro elemento o da una risorsa."}}return{isValid:!0}}function le(o){const e=(o??"")?.trim();if(!e)return"";let r=e.normalize("NFD").replace(/\p{Diacritic}/gu,"").split(/[^A-Za-z0-9]+/).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join("_");return r?(/^[A-Za-z]/.test(r)||(r=`X_${r}`),r):""}function W(o,e){const n=new Set(Array.from(e,s=>s.toLowerCase())),r=le(o)||"Elemento";if(!n.has(r.toLowerCase()))return r;let t=1;for(;n.has(`${r}_${t}`.toLowerCase());)t+=1;return`${r}_${t}`}function Be(o){const e=(o??"")?.trim(),n=e.indexOf(".");return n<0?e:e.slice(0,n)}function en(o){return(o??"").trimStart().startsWith("$")}function Ue(o){if(!o)return!1;const e=o?.trim().toLowerCase();return e!=="and"&&e!=="or"&&e!=="formula"}function kn(o,e){let n=!1;return{logic:o.replace(/\d+/g,t=>{const s=Number(t)-1,l=e[s];return l===void 0||l<0?(n=!0,"?"):String(l+1)}),hasDroppedTerms:n}}function fr(o,e){const n=o.conditions??[];if(e<0||e>=n.length)return{hasDroppedTerms:!1};if(n.splice(e,1),!Ue(o.conditionLogic))return{hasDroppedTerms:!1};const r=[];for(let s=0;s<=n.length;s+=1)s<e?r.push(s):s===e?r.push(-1):r.push(s-1);const t=kn(o.conditionLogic,r);return o.conditionLogic=t.logic,{hasDroppedTerms:t.hasDroppedTerms}}function br(o,e,n){const r=o.conditions??[];if(e===n||e<0||n<0||e>=r.length||n>=r.length)return;const[t]=r.splice(e,1);if(r.splice(n,0,t),!Ue(o.conditionLogic))return;const s=[];for(let g=0;g<r.length;g+=1)s.push(g);const l=s.slice(),[c]=l.splice(n,1);l.splice(e,0,c);const f=[];l.forEach((g,p)=>{f[p]=g}),o.conditionLogic=kn(o.conditionLogic,f).logic}function mr(o,e){const n=o?.trim();if(!n||!Ue(n))return null;const r=n.replace(/\b(AND|OR|NOT)\b/gi," ").replace(/[()\s]/g,"");if(/[^0-9]/.test(r))return"Ammessi solo indici, AND, OR, NOT e parentesi.";let t=0;for(const l of n)if(l==="(")t+=1;else if(l===")"&&(t-=1,t<0))return"Parentesi non bilanciate.";if(t!==0)return"Parentesi non bilanciate.";const s=n.match(/\d+/g)??[];if(s.length===0)return"L\u2019espressione non referenzia nessuna condizione.";for(const l of s){const c=Number(l);if(c<1||c>e)return`La condizione ${c} non esiste: sono definite ${e} condizioni.`}return null}const Dt=new Set(["Contains","StartsWith","EndsWith","In","NotIn","None"]),Ot=new Set(["Integer","Number"]);function gr(o,e){return!o||e?!1:!Dt.has(o)}function Nn(o){return!!o&&Ot.has(o)}function vr(o,e){return!o||!e?!0:!(Nn(o)&&e==="String"||o==="String"&&Nn(e))}function wn(o){const e=o?.trim();if(!e)return;const n=!e.includes(".")&&(e.match(/,/g)??[]).length===1?e.replace(",","."):e;if(!/^[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?$/.test(n))return;const r=Number(n);return Number.isFinite(r)?r:void 0}const hr=["formulaExpression","elementReference","stringValue","integerValue","numberValue","dateValue","booleanValue","enumValue"],Cn=["stringValue","integerValue","numberValue","dateValue","booleanValue","enumValue"];function X(o){return o!=null}function Tn(o){return o?hr.filter(e=>X(o[e])):[]}function _r(o){return Tn(o)[0]}function yr(o){const e=[];for(const n of o.orchestratedStages??[])for(const r of n.stageSteps??[])r.name&&e.push(r.name);return e}function xr(o){return o?.stageSteps??[]}function Sn(o,e){if(!o)return;const n=Be(o?.trim());return e.find(r=>!!r.name&&r.name===n)?.name}const kr="isOrchestrationConditionMet";function nn(o,e){return!o||!e||o.length!==e.length?!1:o.every((n,r)=>n===e[r])}function rn(o,e){return o.length<=e.length&&o.every((n,r)=>n===e[r])}function $t(o){return o.join(".")}function Z(o,e){let n=o,r;for(const t of e){if(r=n?.[t],!r)return;n=r.fields}return r}function Nr(o,e,n){if(e.length===0)return n&&(o.fields??=[]),o.fields;const r=Z(o.fields,e);if(r)return n&&(r.fields??=[]),r.fields}function Dn(o,e=[]){const n=[];return(o??[]).forEach((r,t)=>{const s=[...e,t];n.push({field:r,path:s,depth:e.length}),r.fields?.length&&n.push(...Dn(r.fields,s))}),n}function On(o){return Dn(o?.fields).map(e=>e.field)}function wr(o){const e=[];for(const n of o?.dynamicScreens??[])for(const r of On(n))r.name&&e.push(r.name);return e}function Cr(o){const e=[];for(const n of o?.dynamicScreens??[])for(const r of n.actions??[])r.name&&e.push(r.name);return e}function Tr(o,e){return!!o?.name&&e?.storesValue===!0}function We(o,e,n,r){const t=Nr(o,e,!0);if(!t)return;const s=r===void 0||r>t.length?t.length:Math.max(0,r);return t.splice(s,0,n),[...e,s]}function $n(o,e){if(e.length===0)return;const n=e.slice(0,-1),r=Nr(o,n,!1),t=e[e.length-1];r?.splice(t,1),r&&r.length===0&&(n.length===0?delete o.fields:delete Z(o.fields,n)?.fields)}function Sr(o,e,n,r){if(e.length===0||rn(e,n))return;const t=Z(o.fields,e);if(t)return $n(o,e),We(o,Mt(e,n),t,r)}function Mt(o,e){const n=o.slice(0,-1),r=o[o.length-1];if(e.length<=n.length||!nn(n,e.slice(0,n.length)))return e;const t=[...e];return t[n.length]>r&&(t[n.length]-=1),t}function Dr(o,e,n){const r=Z(o.fields,e);if(!r)return;const t=JSON.parse(JSON.stringify(r));return t.name=n,delete t.fields,We(o,e.slice(0,-1),t,e[e.length-1]+1)}const Or=[{source:"collection",field:"collectionReference"},{source:"object",field:"object"},{source:"enum",field:"enumType"}];function Mn(o){return Or.filter(({field:e})=>{const n=o[e];return typeof n=="string"&&n.trim()!==""}).map(({source:e})=>e)}function $r(o){return Mn(o)[0]??null}function Mr(o){return Or.filter(e=>e.source!==o).map(e=>e.field)}const tn=[{name:"Name",label:"Nome",dataType:"String"},{name:"Label",label:"Etichetta",dataType:"String"},{name:"NumericValue",label:"Valore numerico",dataType:"Integer"}],Fr="Label",Rr="Name";function Ir(o){return tn.find(e=>e.name===o)?.dataType}function Er(o){return!!o&&!tn.some(e=>e.name===o)}const Ft=new Map([["error","Error"],["errore","Error"],["errors","Error"],["fatal","Error"],["critical","Error"],["severe","Error"],["blocker","Error"],["warning","Warning"],["warn","Warning"],["warnings","Warning"],["avviso","Warning"],["caution","Warning"],["info","Info"],["information","Info"],["informational","Info"],["note","Info"],["nota","Info"],["hint","Info"],["log","Info"],["debug","Info"],["trace","Info"],["verbose","Info"]]),Rt=["Info","Warning","Error"],zr=new Set;function ce(o){return Ar(o)??"Info"}function Ar(o,e=0){if(o==null)return null;if(typeof o=="string"){const n=o?.trim()?.toLowerCase();return n?Ft.get(n)??qr(Number(n)):null}if(typeof o=="number"||typeof o=="bigint")return qr(Number(o))??Pr(o,`number:${o}`);if(typeof o=="object"&&e===0){const n=o;for(const r of["name","severity","level","label","code","value"]){const t=Ar(n[r],e+1);if(t)return t}}return Pr(o,`${typeof o}`)}function qr(o){return Number.isInteger(o)?Rt[o]??null:null}function Pr(o,e){return zr.has(e)||(zr.add(e),console.warn("[flow-builder] gravita\u2019 di rilievo non riconosciuta, trattata come nota:",o)),null}const Vr=["Error","Warning","Info"],Fn={Error:"Errore",Warning:"Avviso",Info:"Nota"},Lr={Error:"\u2715",Warning:"!",Info:"i"};function jr(o,e,n){if(!(n||!e)){if(o==="Structure")return{kind:"structure",name:e};if(o==="Object")return{kind:"object",name:e}}}function It(o,e){return{name:o.name,label:o.label??null,dataType:o.dataType,objectType:o.objectType??null,isWritable:o.isCreateable!==!1||o.isUpdateable!==!1,next:jr(o.dataType,o.objectType,!1),description:o.isRequired?"obbligatorio":null,valueSet:o.hasClosedValueSet?{object:e,field:o.name}:void 0}}function Et(o){return{name:o.name,label:o.label??null,description:o.description??null,dataType:o.dataType,objectType:o.objectType??null,isCollection:o.isCollection??!1,isWritable:o.isWritable!==!1,next:jr(o.dataType,o.objectType,o.isCollection)}}async function Br(o,e,n="any"){if(!e.name)return{container:e,status:"unknown-catalog",entries:[]};if(e.kind==="structure"){const r=await o.describeStructure(e.name);return{container:e,label:r.label??null,status:r.status==="unknown-class"?"unknown-container":r.status,entries:r.members.map(Et)}}try{const r=await o.listFields(e.name,n)??[];return{container:e,status:r.length?"declared":"undeclared",entries:r.map(t=>It(t,e.name))}}catch{return{container:e,status:"unknown-catalog",entries:[]}}}function Ur(o){return o==="declared"?"unknown-segment":o}async function Rn(o,e,n,r){const t=(n??"")?.trim(),s=t.split(".").map(p=>p?.trim()),l=[],c=[],f={root:e,path:t,segments:s,levels:l,resolved:c};let g=e;for(let p=0;p<s.length;p+=1){const m=s[p],y=p===s.length-1,M=s.slice(0,p).join("."),F=await Br(o,g,y?r?.usage??"any":"any");if(l.push(F),y){const we={level:F,prefix:M,segment:m};if(!m)return{...f,status:"empty",tail:we};if(F.status!=="declared")return{...f,status:"unverifiable",reason:Ur(F.status),stoppedAt:{index:p,segment:m},tail:we};const fn=F.entries.find(pt=>pt.name===m);return fn?(c.push(fn),{...f,status:"resolved",last:fn,tail:we}):{...f,status:"unknown",reason:"unknown-segment",stoppedAt:{index:p,segment:m},tail:we}}if(!m)return{...f,status:"empty"};if(F.status!=="declared")return{...f,status:"unverifiable",reason:Ur(F.status),stoppedAt:{index:p,segment:m}};const Le=F.entries.find(we=>we.name===m);if(!Le)return{...f,status:"unknown",reason:"unknown-segment",stoppedAt:{index:p,segment:m}};c.push(Le);const Kn=Le.isCollection?void 0:Le.next;if(!Kn)return{...f,status:"unverifiable",reason:Le.isCollection?"collection":"no-object-type",stoppedAt:{index:p+1,segment:s[p+1]}};g=Kn}return{...f,status:"empty"}}function an(o){return o?o.label||o.container.name:""}function on(o){const e=o.levels[o.levels.length-1],n=o.stoppedAt?.segment,r=o.resolved[o.resolved.length-1]?.name,t=n?`\xAB${n}\xBB`:"il resto del percorso";switch(o.reason){case"collection":return`\xAB${r}\xBB e\u2019 una collection: dentro una collection il percorso non si verifica, ${t} resta non verificato (PATH_NOT_VERIFIABLE).`;case"no-object-type":return`\xAB${r}\xBB non dichiara dove il percorso continua: ${t} resta non verificato (PATH_NOT_VERIFIABLE).`;case"unknown-container":return`La classe ${e?.container.name} non e\u2019 registrata: correggi la classe, non il percorso (STRUCTURE_TYPE_UNKNOWN).`;case"undeclared":return e?.container.kind==="structure"?`${an(e)} non dichiara i suoi membri: ${t} non e\u2019 verificabile (PATH_NOT_VERIFIABLE).`:`Il catalogo dei campi di ${an(e)} non e\u2019 popolato: ${t} non e\u2019 verificabile (PATH_NOT_VERIFIABLE).`;case"unknown-catalog":return`Catalogo non disponibile: ${t} non e\u2019 verificabile (PATH_NOT_VERIFIABLE).`;default:return`${t} non e\u2019 verificabile (PATH_NOT_VERIFIABLE).`}}function sn(o){return(o.levels[o.levels.length-1]?.entries??[]).map(n=>n.name)}function Ge(o,e){const n=[];if(o.label&&o.label!==o.name&&n.push(o.label),o.dataType){const r=o.isCollection?`${o.dataType}[]`:o.dataType;n.push(o.objectType?`${r} \xB7 ${o.objectType}`:r)}return e?.showWritability&&!o.isWritable&&n.push("sola lettura"),o.description&&n.push(o.description),n.join(" \xB7 ")}function ln(o,e){const n=u(null,...ngDevMode?[{debugName:"resolution"}]:[]),r=u(!1,...ngDevMode?[{debugName:"isPending"}]:[]);let t=0;return w(()=>{const s=e(),l=++t;if(!s?.root?.name){n.set(null),r.set(!1);return}r.set(!0),Rn(o,s.root,s.path,{usage:s.usage}).then(c=>{l===t&&(n.set(c),r.set(!1))})}),{resolution:n.asReadonly(),isPending:r.asReadonly()}}function Wr(o){return!o||!o.dataType&&o.isCollection==null&&!o.objectType}function In(o,e){return!(e.dataType&&o.dataType&&o.dataType!==e.dataType||e.isCollection!=null&&o.isCollection!=null&&!!o.isCollection!==e.isCollection||e.objectType&&o.objectType&&o.objectType!==e.objectType)}function Gr(o,e){return Wr(e)?[...o]:o.filter(n=>In(n,e))}const En=new Set(["targetReference","elementReference","assignToReference","leftValueReference","collectionReference","assignNextValueToReference","outputReference","inputReference","assignRecordIdToReference","stageReference","choiceReferences","defaultSelectedChoiceReference","screenActionName","triggerFieldName"]);function zn(o,e,n){if(!e||!n||e===n)return;const r=s=>s===e?n:s.startsWith(`${e}.`)?`${n}${s.slice(e.length)}`:s,t=s=>{if(Array.isArray(s)){s.forEach(t);return}if(!s||typeof s!="object")return;const l=s;for(const[c,f]of Object.entries(l)){if(!En.has(c)){t(f);continue}typeof f=="string"?l[c]=r(f):Array.isArray(f)&&f.every(g=>typeof g=="string")?l[c]=f.map(r):t(f)}};t(o)}const An="flow-builder/elements",Qr=1;function Hr(o){const e=o;return!!e&&typeof e=="object"&&e.kind===An&&Array.isArray(e.nodes)&&e.nodes.length>0}function qn(o){const e=[],n=r=>{for(const t of r??[])typeof t.name=="string"&&t.name&&e.push(t.name),n(t.fields)};n(o.fields);for(const r of o.actions??[])typeof r.name=="string"&&r.name&&e.push(r.name);for(const r of o.stageSteps??[])typeof r.name=="string"&&r.name&&e.push(r.name);return e}function zt(o,e,n){const r=t=>{for(const s of t??[])s.name===e&&(s.name=n),r(s.fields)};r(o.fields);for(const t of o.actions??[])t.name===e&&(t.name=n);for(const t of o.stageSteps??[])t.name===e&&(t.name=n)}function Kr(o){const e=new Set,n=r=>{if(Array.isArray(r)){r.forEach(n);return}if(!(!r||typeof r!="object"))for(const[t,s]of Object.entries(r)){if(t==="targetReference"||!En.has(t)){n(s);continue}const l=typeof s=="string"?[s]:Array.isArray(s)?s:[];let c=!1;for(const f of l){if(typeof f!="string")continue;c=!0;const g=f.split(".")[0];g&&e.add(g)}c||n(s)}};return n(o),[...e]}function cn(o){return JSON.parse(JSON.stringify(o))}function Pn(o){const e=new Set(o.names),n=o.nodes.filter(p=>e.has(p.name));if(!n.length)return null;const r=new Set(n.map(p=>p.name)),t=new Set([...r,...n.flatMap(p=>qn(p.node))]),s=n.map(p=>{const m=cn(p.node);for(const y of K(p.type,m)){const M=y.read(m),F=M?.targetReference;(!M||!F||!r.has(F))&&y.write(m,void 0)}return{collection:p.collection,node:m}}),l=Kr(s.map(p=>p.node)),c=new Map(o.resources.map(p=>[p.name.toLowerCase(),p])),f=[],g=[];for(const p of l){if(t.has(p))continue;const m=c.get(p.toLowerCase());m?f.push({collection:m.collection,resource:cn(m.resource)}):g.push(p)}return{kind:An,version:Qr,flowName:o.flowName,processType:o.processType,nodes:s,resources:f,externalReferences:g}}function Vn(o,e){const n=[...e.usedNames],r=new Set(n.map(p=>p.toLowerCase())),t=[],s=(p,m)=>{if(!r.has(p.toLowerCase()))return r.add(p.toLowerCase()),n.push(p),p;const y=W(`${p}_copia`,n);return r.add(y.toLowerCase()),n.push(y),t.push({kind:m,from:p,to:y}),y};for(const p of o.nodes){const m=p.node.name??"";m&&s(m,"node");for(const y of qn(p.node))s(y,"inner")}const l=[],c=new Set;for(const p of o.resources){const m=p.resource.name??"";if(!m)continue;c.add(m.toLowerCase());const y=e.usedNames.some(M=>M.toLowerCase()===m.toLowerCase());l.push({collection:p.collection,name:m,status:y?"reused":"new"})}const f=new Set([...e.usedNames.map(p=>p.toLowerCase()),...c]),g=o.externalReferences.filter(p=>p.startsWith("$")?!1:!f.has(p.toLowerCase()));return{nodeCount:o.nodes.length,renames:t,resources:l,unresolved:g,processTypeMismatch:o.processType&&e.processType&&o.processType!==e.processType?o.processType:null}}function Yr(o,e,n,r){const t=r.offset??{x:40,y:40},s=cn(e.nodes);for(const c of n.renames){for(const f of s)c.kind==="node"?f.node.name===c.from&&(f.node.name=c.to):zt(f.node,c.from,c.to);zn(s,c.from,c.to)}if(r.createMissingResources)for(const c of e.resources){const f=c.resource.name??"",g=n.resources.find(m=>m.name===f);if(!f||g?.status!=="new")continue;const p=o[c.collection]??[];p.push(cn(c.resource)),o[c.collection]=p}const l=[];for(const c of s){c.node.locationX=(c.node.locationX??0)+t.x,c.node.locationY=(c.node.locationY??0)+t.y;const f=o[c.collection]??[];f.push(c.node),o[c.collection]=f,c.node.name&&l.push(c.node.name)}return l}function At(o){return Je[o]??o}const Ln="fb.clipboard.elements";class Te{memory=null;_revision=u(0,...ngDevMode?[{debugName:"_revision"}]:[]);constructor(){typeof window<"u"&&window.addEventListener("storage",e=>{e.key===Ln&&this._revision.update(n=>n+1)})}storage(){try{return typeof localStorage>"u"?null:localStorage}catch{return null}}write(e){this.memory=e;try{this.storage()?.setItem(Ln,JSON.stringify(e))}catch{}this._revision.update(n=>n+1)}read(){const e=(()=>{try{return this.storage()?.getItem(Ln)??null}catch{return null}})();if(e)try{const n=JSON.parse(e);if(Hr(n))return n}catch{}return this.memory}hasContent=u(!1,...ngDevMode?[{debugName:"hasContent"}]:[]);refresh(){const e=!!this.read();return this.hasContent.set(e),e}revision=this._revision.asReadonly();static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Te,deps:[],target:a.\u0275\u0275FactoryTarget.Injectable});static \u0275prov=a.\u0275\u0275ngDeclareInjectable({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Te,providedIn:"root"})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Te,decorators:[{type:ae,args:[{providedIn:"root"}]}],ctorParameters:()=>[]});function jn(o,e,n){return{fullName:o,label:e,processType:n,start:[{locationX:60,locationY:60}]}}function Zr(o){return JSON.parse(JSON.stringify(o))}const qt=100;class ${_document=u(jn("","","Screen"),...ngDevMode?[{debugName:"_document"}]:[]);_isDirty=u(!1,...ngDevMode?[{debugName:"_isDirty"}]:[]);_undoStack=u([],...ngDevMode?[{debugName:"_undoStack"}]:[]);_redoStack=u([],...ngDevMode?[{debugName:"_redoStack"}]:[]);document=this._document.asReadonly();isDirty=this._isDirty.asReadonly();canUndo=i(()=>this._undoStack().length>0,...ngDevMode?[{debugName:"canUndo"}]:[]);canRedo=i(()=>this._redoStack().length>0,...ngDevMode?[{debugName:"canRedo"}]:[]);start=i(()=>this._document().start?.[0]??{},...ngDevMode?[{debugName:"start"}]:[]);nodes=i(()=>{const e=this._document(),n=[];for(const r of gn)e[r]?.forEach((s,l)=>{n.push({name:s.name??"",type:Je[r]??r,collection:r,index:l,node:s})});return n},...ngDevMode?[{debugName:"nodes"}]:[]);nodeByName=i(()=>new Map(this.nodes().map(e=>[e.name,e])),...ngDevMode?[{debugName:"nodeByName"}]:[]);resources=i(()=>{const e=this._document(),n=[];for(const r of tr)e[r]?.forEach((s,l)=>{n.push({name:s.name??"",collection:r,index:l,resource:s})});return n},...ngDevMode?[{debugName:"resources"}]:[]);usedNames=i(()=>[...this.nodes().map(e=>e.name),...this.resources().map(e=>e.name),...yr(this._document()),...wr(this._document()),...Cr(this._document())],...ngDevMode?[{debugName:"usedNames"}]:[]);edges=i(()=>{const e=[],n=(t,s,l)=>{const c=l.read(s);c&&e.push({id:`${t}|${l.key}`,from:t,to:c.targetReference||void 0,outletKey:l.key,kind:l.kind,label:l.branchLabel??null,isGoTo:c.isGoTo})},r=this.start();for(const t of K("Start",r))n(z,r,t);for(const t of this.nodes())for(const s of K(t.type,t.node))n(t.name,t.node,s);return e},...ngDevMode?[{debugName:"edges"}]:[]);reachableNames=i(()=>{const e=new Map;for(const t of this.edges()){if(!t.to)continue;const s=e.get(t.from)??[];s.push(t.to),e.set(t.from,s)}const n=new Set,r=[z];for(;r.length;){const t=r.shift();for(const s of e.get(t)??[])n.has(s)||(n.add(s),r.push(s))}return n},...ngDevMode?[{debugName:"reachableNames"}]:[]);load(e){this._document.set(Zr(e)),this._undoStack.set([]),this._redoStack.set([]),this._isDirty.set(!1)}markSaved(){this._isDirty.set(!1)}update(e,n){const r=this._document();n?.silent||this.pushHistory(r);const t=Zr(r);e(t),this._document.set(t),this._isDirty.set(!0)}pushHistory(e){const n=JSON.stringify(e),r=[...this._undoStack(),n];r.length>qt&&r.shift(),this._undoStack.set(r),this._redoStack.set([])}undo(){const e=[...this._undoStack()],n=e.pop();n&&(this._redoStack.set([...this._redoStack(),JSON.stringify(this._document())]),this._undoStack.set(e),this._document.set(JSON.parse(n)),this._isDirty.set(!0))}redo(){const e=[...this._redoStack()],n=e.pop();n&&(this._undoStack.set([...this._undoStack(),JSON.stringify(this._document())]),this._redoStack.set(e),this._document.set(JSON.parse(n)),this._isDirty.set(!0))}addNode(e,n){this.update(r=>{const t=r[e]??[];t.push(n),r[e]=t})}updateNode(e,n,r){const t=this.nodeByName().get(e);t&&this.update(s=>{const c=s[t.collection]?.[t.index];c&&n(c)},r)}updateStart(e,n){this.update(r=>{const t=r.start??[{}];e(t[0]),r.start=t},n)}moveNode(e,n,r,t){const s={x:Math.round(n),y:Math.round(r)};if(e===z){this.updateStart(l=>{l.locationX=s.x,l.locationY=s.y},t);return}this.updateNode(e,l=>{l.locationX=s.x,l.locationY=s.y},t)}removeNode(e){const n=this.nodeByName().get(e);n&&this.update(r=>{const t=r[n.collection];t?.splice(n.index,1),t&&t.length===0&&delete r[n.collection],$.clearReferencesTo(r,e)})}static clearReferencesTo(e,n){const r=(s,l)=>{for(const c of K(s,l))c.read(l)?.targetReference===n&&c.write(l,void 0)},t=e.start?.[0];t&&r("Start",t);for(const s of gn){const l=e[s],c=Je[s]??s;l?.forEach(f=>r(c,f))}}renameNode(e,n){!e||!n||e===n||this.update(r=>{const t=this.nodeByName().get(e);if(t){const l=r[t.collection]?.[t.index];l&&(l.name=n)}$.rewriteReferences(r,e,n)})}renameScreenField(e,n,r){const t=this.nodeByName().get(e);!t||!r||this.update(s=>{const c=s[t.collection]?.[t.index],f=Z(c?.fields,n);if(!f||f.name===r)return;const g=f.name;f.name=r,g&&$.rewriteReferences(s,g,r)})}renameResource(e,n,r){this.update(t=>{const l=t[e]?.[n];if(!l)return;const c=l.name;l.name=r,c&&$.rewriteReferences(t,c,r)})}static rewriteReferences(e,n,r){zn(e,n,r)}duplicateNodes(e,n={x:40,y:40}){const r=Pn({nodes:this.nodes(),resources:this.resources(),names:e,flowName:this._document().fullName,processType:this._document().processType});if(!r)return[];const t=Vn(r,{usedNames:this.usedNames(),processType:this._document().processType});return this.pasteClipboard(r,t,{createMissingResources:!1,offset:n})}pasteClipboard(e,n,r){let t=[];return this.update(s=>{t=Yr(s,e,n,r)}),t}setConnector(e,n,r,t){const s=(l,c)=>{const f=K(l,c).find(m=>m.key===n);if(!f)return;if(!r){f.write(c,void 0);return}const p={...f.read(c)??{},targetReference:r};t!==void 0&&(p.isGoTo=t),f.write(c,p)};if(e===z){this.updateStart(l=>s("Start",l));return}this.updateNode(e,l=>{const c=this.nodeByName().get(e);s(c?.type??"",l)})}removeConnector(e,n){this.setConnector(e,n,void 0)}addResource(e,n){this.update(r=>{const t=r[e]??[];t.push(n),r[e]=t})}updateResource(e,n,r){this.update(t=>{const l=t[e]?.[n];l&&r(l)})}removeResource(e,n){this.update(r=>{const t=r[e];t?.splice(n,1),t&&t.length===0&&delete r[e]})}updateHeader(e,n){this.update(e,n)}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:$,deps:[],target:a.\u0275\u0275FactoryTarget.Injectable});static \u0275prov=a.\u0275\u0275ngDeclareInjectable({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:$})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:$,decorators:[{type:ae}]});class R{api=b(L);_dictionaries=u({},...ngDevMode?[{debugName:"_dictionaries"}]:[]);_isLoaded=u(!1,...ngDevMode?[{debugName:"_isLoaded"}]:[]);_processType=u(void 0,...ngDevMode?[{debugName:"_processType"}]:[]);cache=new Map;sequence=0;dictionaries=this._dictionaries.asReadonly();isLoaded=this._isLoaded.asReadonly();processType=this._processType.asReadonly();async load(e){if(this._isLoaded()&&e===this._processType())return;const n=e??"",r=++this.sequence;let t=this.cache.get(n);t||(t=this.api.getDictionaries(e).then(l=>l??{}),t.catch(()=>this.cache.delete(n)),this.cache.set(n,t));const s=await t;r===this.sequence&&(this._dictionaries.set(s),this._processType.set(e),this._isLoaded.set(!0))}dataTypes=i(()=>this._dictionaries().dataTypes??[],...ngDevMode?[{debugName:"dataTypes"}]:[]);comparisonOperators=i(()=>this._dictionaries().comparisonOperators??[],...ngDevMode?[{debugName:"comparisonOperators"}]:[]);assignmentOperators=i(()=>this._dictionaries().assignmentOperators??[],...ngDevMode?[{debugName:"assignmentOperators"}]:[]);recordFilterOperators=i(()=>this._dictionaries().recordFilterOperators??[],...ngDevMode?[{debugName:"recordFilterOperators"}]:[]);resourceKinds=i(()=>this._dictionaries().resourceKinds??[],...ngDevMode?[{debugName:"resourceKinds"}]:[]);globalVariables=i(()=>this._dictionaries().globalVariables??[],...ngDevMode?[{debugName:"globalVariables"}]:[]);processTypes=i(()=>this._dictionaries().processTypes??[],...ngDevMode?[{debugName:"processTypes"}]:[]);triggerTypes=i(()=>this._dictionaries().triggerTypes??[],...ngDevMode?[{debugName:"triggerTypes"}]:[]);recordTriggerTypes=i(()=>this._dictionaries().recordTriggerTypes??[],...ngDevMode?[{debugName:"recordTriggerTypes"}]:[]);startFrequencies=i(()=>this._dictionaries().startFrequencies??[],...ngDevMode?[{debugName:"startFrequencies"}]:[]);offsetUnits=i(()=>this._dictionaries().offsetUnits??[],...ngDevMode?[{debugName:"offsetUnits"}]:[]);sortOrders=i(()=>this._dictionaries().sortOrders??[],...ngDevMode?[{debugName:"sortOrders"}]:[]);collectionProcessorTypes=i(()=>this._dictionaries().collectionProcessorTypes??[],...ngDevMode?[{debugName:"collectionProcessorTypes"}]:[]);transformTypes=i(()=>this._dictionaries().transformTypes??[],...ngDevMode?[{debugName:"transformTypes"}]:[]);transactionModels=i(()=>this._dictionaries().transactionModels??[],...ngDevMode?[{debugName:"transactionModels"}]:[]);waitEventTypes=i(()=>this._dictionaries().waitEventTypes??[],...ngDevMode?[{debugName:"waitEventTypes"}]:[]);stageStepTypes=i(()=>this._dictionaries().stageStepTypes??[],...ngDevMode?[{debugName:"stageStepTypes"}]:[]);assigneeTypes=i(()=>this._dictionaries().assigneeTypes??[],...ngDevMode?[{debugName:"assigneeTypes"}]:[]);conditionLogicModes=i(()=>this._dictionaries().conditionLogicModes??[],...ngDevMode?[{debugName:"conditionLogicModes"}]:[]);regionContainerTypes=i(()=>this._dictionaries().regionContainerTypes??[],...ngDevMode?[{debugName:"regionContainerTypes"}]:[]);screenFieldInputsRevisited=i(()=>this._dictionaries().screenFieldInputsRevisited??[],...ngDevMode?[{debugName:"screenFieldInputsRevisited"}]:[]);enumChoiceSetFields=i(()=>this._dictionaries().enumChoiceSetFields??[],...ngDevMode?[{debugName:"enumChoiceSetFields"}]:[]);screenFieldTypes=i(()=>this._dictionaries().screenFieldTypes??[],...ngDevMode?[{debugName:"screenFieldTypes"}]:[]);screenFieldType(e){if(e)return this.screenFieldTypes().find(n=>n.value===e)}screenFieldStoresValue(e){return this.screenFieldType(e)?.storesValue??!1}screenFieldIsContainer(e){return this.screenFieldType(e)?.isContainer??!1}screenFieldAcceptsChoices(e){return this.screenFieldType(e)?.acceptsChoices??!1}screenFieldRequiresDataType(e){return this.screenFieldType(e)?.requiresDataType??!1}screenFieldIsCollection(e){return this.screenFieldType(e)?.isCollection??!1}elementTypes=i(()=>this._dictionaries().elementTypes??[],...ngDevMode?[{debugName:"elementTypes"}]:[]);paletteTypes=i(()=>this.elementTypes().filter(e=>!(e.isSupported===!1||e.isSupported===void 0&&_n.has(e.value))),...ngDevMode?[{debugName:"paletteTypes"}]:[]);paletteCategories=i(()=>{const e=[];for(const n of this.paletteTypes()){const r=n.category??"Altro";e.includes(r)||e.push(r)}return e},...ngDevMode?[{debugName:"paletteCategories"}]:[]);elementType(e){return this.elementTypes().find(n=>n.value===e)}variantsOf(e){return Xe(e)==="collectionProcessorType"?this.collectionProcessorTypes():[]}variantLabelOf(e,n){return R.labelIn(this.variantsOf(e),n)}collectionOf(e){return this.elementType(e)?.metadataProperty??hn[e]}labelOf(e){return this.elementType(e)?.label??or[e]??e}hasFaultConnector(e){return this.elementType(e)?.hasFaultConnector??!1}hasAutomaticOutput(e){return this.elementType(e)?.hasAutomaticOutput??!1}static labelIn(e,n){return n?e.find(r=>r.value===n)?.label??n:""}operator(e){if(e)return this.comparisonOperators().find(n=>n.value===e)}isUnaryOperator(e){return this.operator(e)?.isUnary??!1}operatorAppliesToElements(e){return this.operator(e)?.appliesToElements??!1}assignmentExpectsCollection(e){return this.assignmentOperators().find(n=>n.value===e)?.expectsCollection??!1}operatorsFor(e){const n=this.comparisonOperators();return e?n.filter(r=>!r.appliesTo||r.appliesTo.length===0||r.appliesTo.includes(e)):n}globalScope(e){if(e)return this.globalVariables().find(n=>n.scope===e||n.value===e)}isGlobalScopeVerifiable(e){return(this.globalScope(e)?.paths?.length??0)>0}globalPathsOf(e){const n=this.globalScope(e);if(!n)return[];const r=n.scope??n.value;return(n.paths??[]).map(t=>`${r}.${t}`)}stageStepType(e){if(e)return this.stageStepTypes().find(n=>n.value===e)}stageStepRequiresActionName(e){return this.stageStepType(e)?.requiresActionName??e==="stepBackground"}stageStepRequiresAssignees(e){const n=this.stageStepType(e);return n?.requiresAssignees!==void 0?n.requiresAssignees:e==="stepInteractive"||e==="stepApproval"}dataType(e){return this.dataTypes().find(n=>n.value===e)}requiresObjectType(e){const n=this.dataType(e);return n?.requiresObjectType!==void 0?n.requiresObjectType:e==="Object"||e==="Enum"||this.isStructure(e)}isStructure(e){const n=this.dataType(e);return n?.isStructure!==void 0?n.isStructure:e==="Structure"}objectTypeIsError(e){return this.isStructure(e)}supportsScale(e){const n=this.dataType(e);return n?.supportsScale!==void 0?n.supportsScale:e==="Number"||e==="Integer"}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:R,deps:[],target:a.\u0275\u0275FactoryTarget.Injectable});static \u0275prov=a.\u0275\u0275ngDeclareInjectable({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:R})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:R,decorators:[{type:ae}]});class ie{entries=new Map;get(e,n){let r=this.entries.get(e);return r||(r=n().catch(t=>{throw this.entries.delete(e),t}),this.entries.set(e,r)),r}clear(){this.entries.clear()}}class S{api=b(L);objectsCache=new ie;fieldsCache=new ie;fieldValuesCache=new ie;enumValuesCache=new ie;entriesCache=new ie;parametersCache=new ie;membersCache=new ie;formulaFunctionsCache=new ie;listObjects(){return this.objectsCache.get("objects",()=>this.api.listObjects().then(e=>e??[]))}listFields(e,n="any"){return e?this.fieldsCache.get(`${e}|${n}`,()=>this.api.listFields(e,n).then(r=>r??[])):Promise.resolve([])}listFieldValues(e,n){return!e||!n?Promise.resolve([]):this.fieldValuesCache.get(`${e}|${n}`,()=>this.api.listFieldValues(e,n).catch(()=>[]))}listActionTypes(){return this.entriesCache.get("action-types",()=>this.api.listActionTypes().then(e=>e??[]))}listActions(e){return this.entriesCache.get(`actions|${e??""}`,()=>this.api.listActions(e).then(n=>n??[]))}listActionParameters(e,n){return!e||!n?Promise.resolve([]):this.parametersCache.get(`action|${e}|${n}`,()=>this.api.listActionParameters(e,n).catch(()=>[]))}listScripts(){return this.entriesCache.get("scripts",()=>this.api.listScripts().then(e=>e??[]))}listScriptParameters(e){return e?this.parametersCache.get(`script|${e}`,()=>this.api.listScriptParameters(e).catch(()=>[])):Promise.resolve([])}listForms(e){return this.entriesCache.get(`forms|${e??"Any"}`,()=>this.api.listForms(e).then(n=>n??[]))}listFormParameters(e){return e?this.parametersCache.get(`form|${e}`,()=>this.api.listFormParameters(e).catch(()=>[])):Promise.resolve([])}listFormulaFunctions(e){return this.formulaFunctionsCache.get(e??"",()=>this.api.listFormulaFunctions(e).then(n=>n??[]).catch(()=>[]))}listEnumTypes(){return this.entriesCache.get("enum-types",()=>this.api.listEnumTypes().then(e=>e??[]))}listEnumValues(e){return e?this.enumValuesCache.get(e,()=>this.api.listEnumValues(e).catch(()=>[])):Promise.resolve([])}listStructures(){return this.entriesCache.get("structures",()=>this.api.listStructures().then(e=>e??[]))}describeStructure(e){return e?this.membersCache.get(e,()=>this.api.describeStructure(e).then(n=>({label:n?.label??null,status:n?.members?.length?"declared":"undeclared",members:n?.members??[]}),n=>{if(T.is(n)&&n.category==="StructureNotFound")return{status:"unknown-class",members:[]};throw n})).catch(()=>({status:"unknown-catalog",members:[]})):Promise.resolve({status:"unknown-catalog",members:[]})}listStructureMembers(e){return this.describeStructure(e).then(n=>n.members)}listEvents(){return this.entriesCache.get("events",()=>this.api.listEvents().then(e=>e??[]))}clear(){this.objectsCache.clear(),this.fieldsCache.clear(),this.fieldValuesCache.clear(),this.enumValuesCache.clear(),this.entriesCache.clear(),this.parametersCache.clear(),this.membersCache.clear(),this.formulaFunctionsCache.clear()}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:S,deps:[],target:a.\u0275\u0275FactoryTarget.Injectable});static \u0275prov=a.\u0275\u0275ngDeclareInjectable({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:S})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:S,decorators:[{type:ae}]});const Pt=400;class G{api=b(L);destroyRef=b(bn);_result=u(null,...ngDevMode?[{debugName:"_result"}]:[]);_isRunning=u(!1,...ngDevMode?[{debugName:"_isRunning"}]:[]);_lastError=u(null,...ngDevMode?[{debugName:"_lastError"}]:[]);timer;sequence=0;result=this._result.asReadonly();isRunning=this._isRunning.asReadonly();lastError=this._lastError.asReadonly();issues=i(()=>this._result()?.issues??[],...ngDevMode?[{debugName:"issues"}]:[]);errorCount=i(()=>this._result()?.errorCount??0,...ngDevMode?[{debugName:"errorCount"}]:[]);warningCount=i(()=>this._result()?.warningCount??0,...ngDevMode?[{debugName:"warningCount"}]:[]);issueCounts=i(()=>{const e={Error:0,Warning:0,Info:0};for(const n of this.issues())e[ce(n.severity)]+=1;return e},...ngDevMode?[{debugName:"issueCounts"}]:[]);hasResult=i(()=>this._result()!==null,...ngDevMode?[{debugName:"hasResult"}]:[]);canActivate=i(()=>this.hasResult()&&this.errorCount()===0,...ngDevMode?[{debugName:"canActivate"}]:[]);issuesByElement=i(()=>{const e=new Map;for(const n of this.issues()){const r=n.elementName??"",t=e.get(r)??[];t.push(n),e.set(r,t)}return e},...ngDevMode?[{debugName:"issuesByElement"}]:[]);documentIssues=i(()=>this.issuesByElement().get("")??[],...ngDevMode?[{debugName:"documentIssues"}]:[]);constructor(){this.destroyRef.onDestroy(()=>this.cancel())}severityOf(e){const n=this.issuesByElement().get(e);if(!n?.length)return null;const r=new Set(n.map(t=>ce(t.severity)));return Vr.find(t=>r.has(t))??"Info"}issuesAt(e,n){return(this.issuesByElement().get(e??"")??[]).filter(t=>t.path?.startsWith(n))}schedule(e){this.cancel(),this.timer=setTimeout(()=>{this.timer=void 0,this.run(e)},Pt)}async run(e){const n=++this.sequence;this._isRunning.set(!0),this._lastError.set(null);try{const r=await this.api.validateDefinition(e);return n!==this.sequence?null:(this._result.set(r),r)}catch(r){if(n!==this.sequence)return null;const t=T.is(r)?r.message:String(r);return this._lastError.set(t),null}finally{n===this.sequence&&this._isRunning.set(!1)}}adopt(e){e&&(this.sequence+=1,this._result.set(e),this._isRunning.set(!1))}clear(){this.cancel(),this.sequence+=1,this._result.set(null),this._lastError.set(null),this._isRunning.set(!1)}cancel(){this.timer&&(clearTimeout(this.timer),this.timer=void 0)}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:G,deps:[],target:a.\u0275\u0275FactoryTarget.Injectable});static \u0275prov=a.\u0275\u0275ngDeclareInjectable({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:G})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:G,decorators:[{type:ae}],ctorParameters:()=>[]});class oe{api=b(L);_isSupported=u(!0,...ngDevMode?[{debugName:"_isSupported"}]:[]);_lastError=u(null,...ngDevMode?[{debugName:"_lastError"}]:[]);isSupported=this._isSupported.asReadonly();lastError=this._lastError.asReadonly();canValidate=i(()=>this._isSupported(),...ngDevMode?[{debugName:"canValidate"}]:[]);async validate(e){if(!this._isSupported())return null;try{const n=await this.api.validateFormula(e);return this._lastError.set(null),n}catch(n){return T.is(n)&&n.category==="MissingService"?(this._isSupported.set(!1),this._lastError.set(null),null):(this._lastError.set(T.is(n)?n.message:String(n)),null)}}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:oe,deps:[],target:a.\u0275\u0275FactoryTarget.Injectable});static \u0275prov=a.\u0275\u0275ngDeclareInjectable({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:oe})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:oe,decorators:[{type:ae}]});class re{layout(e,n,r){const t=r?.direction??"TB",s=r?.origin??{x:60,y:60},l=new Zn.graphlib.Graph({multigraph:!0,compound:!1});l.setGraph({rankdir:t,ranksep:r?.rankSeparation??90,nodesep:r?.nodeSeparation??60,marginx:0,marginy:0}),l.setDefaultEdgeLabel(()=>({}));const c=new Set;for(const m of e)l.setNode(m.name,{width:m.width,height:m.height}),c.add(m.name);for(const m of n)!m.to||!c.has(m.from)||!c.has(m.to)||m.isGoTo||l.setEdge(m.from,m.to,{weight:re.weightOf(m)},m.id);Zn.layout(l);const f=new Map;let g=Number.POSITIVE_INFINITY,p=Number.POSITIVE_INFINITY;for(const m of e){const y=l.node(m.name);if(!y||y.x===void 0||y.y===void 0)continue;const M=y.x-m.width/2,F=y.y-m.height/2;f.set(m.name,{x:M,y:F}),g=Math.min(g,M),p=Math.min(p,F)}if(Number.isFinite(g)&&Number.isFinite(p)){const m=s.x-g,y=s.y-p;for(const[M,F]of f)f.set(M,{x:Math.round(F.x+m),y:Math.round(F.y+y)})}return{positions:f}}static weightOf(e){switch(e.kind){case"Start":case"Next":case"LoopNext":return 10;case"Rule":case"WaitEvent":case"LoopEnd":case"Default":return 4;case"Fault":case"Timeout":case"ScheduledPath":return 1;default:return 3}}static isStart(e){return e===z}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:re,deps:[],target:a.\u0275\u0275FactoryTarget.Injectable});static \u0275prov=a.\u0275\u0275ngDeclareInjectable({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:re})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:re,decorators:[{type:ae}]});class Q{api=b(L);documentStore=b($);validation=b(G);_flowName=u(null,...ngDevMode?[{debugName:"_flowName"}]:[]);_version=u(null,...ngDevMode?[{debugName:"_version"}]:[]);_versions=u([],...ngDevMode?[{debugName:"_versions"}]:[]);_expectedUpdatedAt=u(void 0,...ngDevMode?[{debugName:"_expectedUpdatedAt"}]:[]);_isBusy=u(!1,...ngDevMode?[{debugName:"_isBusy"}]:[]);_lastSaveResult=u(null,...ngDevMode?[{debugName:"_lastSaveResult"}]:[]);_conflict=u(null,...ngDevMode?[{debugName:"_conflict"}]:[]);_author=u(void 0,...ngDevMode?[{debugName:"_author"}]:[]);flowName=this._flowName.asReadonly();version=this._version.asReadonly();versions=this._versions.asReadonly();isBusy=this._isBusy.asReadonly();lastSaveResult=this._lastSaveResult.asReadonly();conflict=this._conflict.asReadonly();expectedUpdatedAt=this._expectedUpdatedAt.asReadonly();isNew=i(()=>this._version()==null,...ngDevMode?[{debugName:"isNew"}]:[]);currentVersionSummary=i(()=>{const e=this._version();return e==null?void 0:this._versions().find(n=>n.version===e)},...ngDevMode?[{debugName:"currentVersionSummary"}]:[]);isEditable=i(()=>this.isNew()?!0:this.currentVersionSummary()?.isEditable??!1,...ngDevMode?[{debugName:"isEditable"}]:[]);primaryCommand=i(()=>this.isNew()?"create":this.isEditable()?"save":"newVersion",...ngDevMode?[{debugName:"primaryCommand"}]:[]);isActiveVersion=i(()=>this.currentVersionSummary()?.isActive??!1,...ngDevMode?[{debugName:"isActiveVersion"}]:[]);canActivate=i(()=>!this.isNew()&&!this.isActiveVersion()&&this.validation.canActivate(),...ngDevMode?[{debugName:"canActivate"}]:[]);setAuthor(e){this._author.set(e)}startNew(e,n,r){this.documentStore.load(jn(e,n,r)),this._flowName.set(e||null),this._version.set(null),this._versions.set([]),this._expectedUpdatedAt.set(void 0),this._lastSaveResult.set(null),this._conflict.set(null),this.validation.clear()}async open(e,n){this._isBusy.set(!0),this._conflict.set(null);try{const[r,t]=await Promise.all([this.api.loadFlow(e,n),this.api.listVersions(e).catch(()=>[])]);this.documentStore.load(r),this._flowName.set(e),this._versions.set(t);const s=n??Q.pickVersion(t);this._version.set(s??null),this._expectedUpdatedAt.set(t.find(l=>l.version===s)?.updatedAt),this._lastSaveResult.set(null),this.validation.clear(),await this.validation.run(this.documentStore.document())}finally{this._isBusy.set(!1)}}static pickVersion(e){const n=e.find(r=>r.isActive);return n?n.version:e[0]?.version}async refreshVersions(e){const n=this._flowName();if(!n)return;const r=await this.api.listVersions(n);this._versions.set(r),e?.adoptVersion&&this._version()==null&&this._version.set(Q.pickVersion(r)??null);const t=this._version();t!=null&&this._expectedUpdatedAt.set(r.find(s=>s.version===t)?.updatedAt)}async save(e){const n=this.documentStore.document(),r=e?.flowName??this._flowName()??n.fullName??"";if(!r)throw new T("InvalidRequest","Il flow non ha un nome tecnico.");this._isBusy.set(!0),this._conflict.set(null);try{const t=this.isNew()?await this.api.createFlow({definition:n,flowName:r,author:this._author()}):await this.api.saveFlow(this._flowName(),{definition:n,flowName:e?.flowName,version:this._version()??void 0,expectedUpdatedAt:this._expectedUpdatedAt(),author:this._author(),activate:e?.activate}),s=this.normalizeResult(t,{flowName:r});return this.applySaveResult(s),s}catch(t){throw T.is(t)&&t.category==="VersionConflict"&&this._conflict.set({message:t.message,conflictingAuthor:t.conflictingAuthor}),T.is(t)&&t.validation&&this.validation.adopt(t.validation),t}finally{this._isBusy.set(!1)}}normalizeResult(e,n){const r=e??{},t=r.flowName??n.flowName??this._flowName()??"",s=r.version??n.version??this._version()??void 0;return(r.flowName===void 0||r.version===void 0)&&Q.warnOnce("La risposta di una primitiva di scrittura non porta flowName/version (\xA76.2): l\u2019editor usa i valori con cui ha chiamato. Il caso piu\u2019 frequente e\u2019 una serializzazione in PascalCase invece di camelCase."),{...r,flowName:t,version:s}}static warned=new Set;static warnOnce(e){Q.warned.has(e)||(Q.warned.add(e),console.warn(`[flow-builder] ${e}`))}applySaveResult(e){this._flowName.set(e.flowName||this._flowName()),this._version.set(e.version??null),this._expectedUpdatedAt.set(e.updatedAt),this._lastSaveResult.set(e),this.documentStore.updateHeader(n=>{n.fullName=e.flowName||n.fullName,n.status=e.status??n.status},{silent:!0}),this.documentStore.markSaved(),this.validation.adopt(e.validation),this.refreshVersions({adoptVersion:!0})}async saveAs(e,n){const r=(e??"").trim();if(!r)throw new T("InvalidRequest","La copia ha bisogno di un nome tecnico.");const t=this._flowName();if(t&&t.toLowerCase()===r.toLowerCase())throw new T("InvalidRequest","La copia deve avere un nome diverso dall\u2019originale.");this._isBusy.set(!0),this._conflict.set(null);try{const s=!!t&&!this.isNew()&&!this.documentStore.isDirty();let l;if(s)try{l=this.normalizeResult(await this.api.cloneFlow(t,{targetFlowName:r,label:n?.label,fromVersion:this._version()??void 0,author:this._author()}),{flowName:r,version:1})}catch(c){if(!T.is(c)||c.category!=="MissingService")throw c;l=await this.createCopy(r,n?.label)}else l=await this.createCopy(r,n?.label);return this._versions.set([]),this._flowName.set(r),n?.label&&this.documentStore.updateHeader(c=>{c.label=n.label},{silent:!0}),this.applySaveResult(l),l}catch(s){throw T.is(s)&&s.validation&&this.validation.adopt(s.validation),s}finally{this._isBusy.set(!1)}}async createCopy(e,n){const r={...this.documentStore.document(),fullName:e};n&&(r.label=n);const t=await this.api.createFlow({definition:r,flowName:e,author:this._author()});return this.normalizeResult(t,{flowName:e,version:1})}async createNewVersion(){const e=this._flowName();if(!e)throw new T("InvalidRequest","Nessun flow aperto.");this._isBusy.set(!0);try{const n=await this.api.createVersion(e,{from:this._version()??void 0,author:this._author()}),r=this.normalizeResult(n,{flowName:e,version:null});return await this.open(e,n?.version),r}finally{this._isBusy.set(!1)}}async activate(){const e=this._flowName(),n=this._version();if(!e||n==null)throw new T("InvalidRequest","Salva il flow prima di attivarlo.");const r=await this.validation.run(this.documentStore.document());if(r&&r.errorCount>0)throw new T("ValidationFailed","La definizione contiene errori: correggili prima di attivare.",r);this._isBusy.set(!0);try{const t=this.normalizeResult(await this.api.activateVersion(e,n),{flowName:e,version:n});return this.applySaveResult(t),t}catch(t){throw T.is(t)&&t.validation&&this.validation.adopt(t.validation),t}finally{this._isBusy.set(!1)}}async deactivate(){const e=this._flowName();if(e){this._isBusy.set(!0);try{await this.api.deactivateFlow(e),await this.refreshVersions()}finally{this._isBusy.set(!1)}}}async deleteVersion(e){const n=this._flowName();if(n){this._isBusy.set(!0);try{if(await this.api.deleteVersion(n,e),await this.refreshVersions(),this._version()===e){const r=this._versions()[0]?.version;r!==void 0?await this.open(n,r):this._version.set(null)}}finally{this._isBusy.set(!1)}}}async reloadAfterConflict(){const e=this._flowName(),n=this._version();e&&(this._conflict.set(null),await this.open(e,n??void 0))}async saveAsNewVersionAfterConflict(){const e=this._flowName();if(!e)throw new T("InvalidRequest","Nessun flow aperto.");this._isBusy.set(!0),this._conflict.set(null);try{const n=await this.api.createVersion(e,{author:this._author()}),r=await this.api.saveFlow(e,{definition:this.documentStore.document(),version:n.version,expectedUpdatedAt:n.updatedAt,author:this._author()});return this.applySaveResult(r),r}finally{this._isBusy.set(!1)}}dismissConflict(){this._conflict.set(null)}get validationResult(){return this.validation.result()}get definition(){return this.documentStore.document()}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Q,deps:[],target:a.\u0275\u0275FactoryTarget.Injectable});static \u0275prov=a.\u0275\u0275ngDeclareInjectable({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Q})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Q,decorators:[{type:ae}]});function Bn(o){return`in:${o}`}function Un(o,e){return`out:${o}:${e}`}function dn(o){if(!o.startsWith("out:"))return null;const e=o.slice(4),n=e.indexOf(":");return n<0?null:{nodeName:e.slice(0,n),outletKey:e.slice(n+1)}}function un(o){return o.startsWith("in:")?o.slice(3):null}function Jr(o){return`node:${o}`}function pn(o){return o.startsWith("node:")?o.slice(5):null}const Vt=240,Wn=116,Xr=[240,240,240,304,380,456,520],Lt={x:120,y:120},jt=Xr.length-1;function et(o){return Math.min(Math.max(o,0),jt)}function Gn(o){return Xr[et(o)]}function nt(o){return`fb-node--outlets-${et(o)}`}class de{store=b($);dictionaries=b(R);validation=b(G);markerEnd=yt.END_ALL_STATES;sides=xt;selectedName=d(null,...ngDevMode?[{debugName:"selectedName"}]:[]);selectedNames=d([],...ngDevMode?[{debugName:"selectedNames"}]:[]);outline=d(null,...ngDevMode?[{debugName:"outline"}]:[]);isEditable=d(!0,...ngDevMode?[{debugName:"isEditable"}]:[]);selectionChange=v();nodeOpened=v();nodeRemoveRequested=v();nodeDuplicateRequested=v();elementDropped=v();canvas=Ye.required(mn);_hasMovedViewport=u(!1,...ngDevMode?[{debugName:"_hasMovedViewport"}]:[]);hasMovedViewport=this._hasMovedViewport.asReadonly();hasFramedOnce=!1;onNodesRendered(){this.hasFramedOnce||this.nodes().length<2||(this.hasFramedOnce=!0,this.frameFlow(!1))}onCanvasChange(){this._hasMovedViewport.set(!0)}resetViewport(){this.frameFlow(!0),this._hasMovedViewport.set(!1)}frameFlow(e){this.canvas().fitToScreen(Lt,e,!1)}reachability=i(()=>{const e=this.outline();if(e?.nodes?.length){const n=new Set(e.nodes.filter(t=>t.isReachable===!1).map(t=>t.name)),r=new Set(this.store.nodes().map(t=>t.name));for(const t of n)r.delete(t);return r}return this.store.reachableNames()},...ngDevMode?[{debugName:"reachability"}]:[]);nodes=i(()=>{const e=[],n=this.reachability(),r=this.store.start();e.push(this.toCanvasNode({name:z,type:"Start",node:r,label:"Start",typeLabel:"Avvio",category:"Avvio",isStart:!0,isReachable:!0,subtitle:this.startSubtitle()}));for(const t of this.store.nodes())e.push(this.toCanvasNode({name:t.name,type:t.type,node:t.node,label:t.node.label||t.name,typeLabel:this.dictionaries.labelOf(t.type),category:this.dictionaries.elementType(t.type)?.category??null,isStart:!1,isReachable:n.has(t.name),subtitle:this.subtitleOf(t.type,t.node)}));return e},...ngDevMode?[{debugName:"nodes"}]:[]);toCanvasNode(e){const n=K(e.type,e.node),r=this.validation.issuesByElement().get(e.isStart?"":e.name)??[];return{icon:yn(e.type,e.typeLabel,dr(e.type,e.node)),widthClass:nt(n.length),showsOutletLabels:n.length>1,name:e.name,id:Jr(e.name),type:e.type,typeLabel:e.typeLabel,label:e.label,description:e.node.description??null,position:{x:e.node.locationX??0,y:e.node.locationY??0},outlets:n,isStart:e.isStart,category:e.category,isReachable:e.isReachable,severity:e.isStart?null:this.validation.severityOf(e.name),issueCount:e.isStart?0:r.length,hasAutomaticOutput:!e.isStart&&this.dictionaries.hasAutomaticOutput(e.type),subtitle:e.subtitle,danglingOutlets:n.filter(t=>{const s=t.read(e.node);return!!s&&!s.targetReference})}}edges=i(()=>{const e=new Set(this.nodes().map(n=>n.name));return this.store.edges().filter(n=>!!n.to&&e.has(n.to)).map(n=>({id:n.id,sourceId:Un(n.from,n.outletKey),targetId:Bn(n.to),kind:n.kind,label:n.label,isGoTo:!!n.isGoTo}))},...ngDevMode?[{debugName:"edges"}]:[]);subtitleOf(e,n){switch(e){case"Screen":return n.formName||null;case"RecordLookup":case"RecordCreate":case"RecordUpdate":case"RecordDelete":return n.object||n.inputReference||null;case"Loop":return n.collectionReference||null;case"CollectionProcessor":{const r=n.collectionProcessorType,t=n.collectionReference;return[r,t].filter(Boolean).join(" \xB7 ")||null}case"Decision":{const r=n.rules?.length??0;return r?`${r} ${r===1?"regola":"regole"}`:null}case"Assignment":{const r=n.assignmentItems?.length??0;return r?`${r} ${r===1?"operazione":"operazioni"}`:null}case"ActionCall":{const r=n.actionType,t=n.actionName;return[r,t].filter(Boolean).join(" \xB7 ")||null}case"ScriptCall":return n.scriptName||null;case"Subflow":return n.flowName||null;case"Wait":{const r=n.waitEvents?.length??0;return r?`${r} ${r===1?"evento":"eventi"}`:null}case"Transform":return n.objectType||null;case"OrchestratedStage":{const r=n.stageSteps?.length??0;return r?`${r} step`:null}case"CustomError":{const r=n.customErrorMessages?.length??0;return r?`${r} ${r===1?"messaggio":"messaggi"}`:null}default:return null}}startSubtitle(){const e=this.store.start(),n=e.triggerType??"None",r=R.labelIn(this.dictionaries.triggerTypes(),n);return n==="None"?r||"Su richiesta":[r,e.object].filter(Boolean).join(" \xB7 ")}onCreateConnection(e){const n=dn(e.sourceId);if(!n)return;const r=e.targetId?un(e.targetId):null;r!==n.nodeName&&this.store.setConnector(n.nodeName,n.outletKey,r??void 0)}onReassignConnection(e){const n=dn(e.previousSourceId);if(!n)return;if(e.endpoint==="target"){const s=e.nextTargetId?un(e.nextTargetId):null;this.store.setConnector(n.nodeName,n.outletKey,s??void 0);return}const r=e.nextSourceId?dn(e.nextSourceId):null,t=un(e.previousTargetId);!r||!t||(this.store.removeConnector(n.nodeName,n.outletKey),this.store.setConnector(r.nodeName,r.outletKey,t))}onMoveNodes(e){const n=e.nodes.map(r=>({name:pn(r.id),position:r.position})).filter(r=>!!r.name);n.length&&n.forEach((r,t)=>{this.store.moveNode(r.name,r.position.x,r.position.y,{silent:t>0})})}onSelectionChange(e){const n=e.nodeIds.map(r=>pn(r)).filter(r=>!!r);this.selectionChange.emit(n)}onDeleteSelected(e){if(this.isEditable())for(const n of e.nodeIds){const r=pn(n);r&&r!==z&&this.nodeRemoveRequested.emit(r)}}onCreateNode(e){const n=e.data,r=typeof n=="string"?n:n?.type;r&&this.elementDropped.emit({type:r,variant:typeof n=="string"?void 0:n?.variant,x:Math.round(e.externalItemRect.x),y:Math.round(e.externalItemRect.y)})}onNodeDoubleClick(e){this.nodeOpened.emit(e)}onEditClick(e,n){e.stopPropagation(),this.nodeOpened.emit(n)}onRemoveClick(e,n){e.stopPropagation(),this.nodeRemoveRequested.emit(n)}onDuplicateClick(e,n){e.stopPropagation(),this.nodeDuplicateRequested.emit(n)}connectorIdOf(e,n){return Un(e.name,n)}targetIdOf(e){return Bn(e.name)}isSelected(e){return this.selectedName()===e.name||this.selectedNames().includes(e.name)}danglingLabels(e){return e.danglingOutlets.map(n=>n.label).join(", ")}categoryClass(e){const n=(e.category??"").toLowerCase();return e.isStart?"cat-start":n.startsWith("inter")?"cat-screen":n.startsWith("log")?"cat-logic":n.startsWith("dat")?"cat-data":n.startsWith("az")?"cat-action":n.startsWith("flow")?"cat-flow":"cat-other"}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:de,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:de,isStandalone:!0,selector:"fb-flow-canvas",inputs:{selectedName:{classPropertyName:"selectedName",publicName:"selectedName",isSignal:!0,isRequired:!1,transformFunction:null},selectedNames:{classPropertyName:"selectedNames",publicName:"selectedNames",isSignal:!0,isRequired:!1,transformFunction:null},outline:{classPropertyName:"outline",publicName:"outline",isSignal:!0,isRequired:!1,transformFunction:null},isEditable:{classPropertyName:"isEditable",publicName:"isEditable",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{selectionChange:"selectionChange",nodeOpened:"nodeOpened",nodeRemoveRequested:"nodeRemoveRequested",nodeDuplicateRequested:"nodeDuplicateRequested",elementDropped:"elementDropped"},providers:[Jn(Xn())],viewQueries:[{propertyName:"canvas",first:!0,predicate:mn,descendants:!0,isSignal:!0}],ngImport:a,template:`<!--\r
|
|
1
|
+
"use strict";import{HttpClient as Gt,HttpErrorResponse as Wt,HttpParams as Ht}from"@angular/common/http";import*as a from"@angular/core";import{InjectionToken as Qt,inject as b,signal as u,effect as w,Injectable as se,computed as s,DestroyRef as Qe,ElementRef as En,input as d,output as v,viewChild as ne,ChangeDetectionStrategy as _,Component as y,untracked as K,Directive as hr,Injector as vr,afterNextRender as _r}from"@angular/core";import{firstValueFrom as Ke}from"rxjs";import yr from"dagre";import*as A from"@foblex/flow";import{FControlSchemeController as Kt,EFMarkerType as Yt,EFConnectableSide as Zt,EFResizeHandleType as Jt,FCanvasComponent as zn,F_DRAG_SELECT_CONTROL_SCHEME as Xt,F_DEFAULT_CONTROL_SCHEME as An,FFlowModule as un,provideFFlow as xr,withA11y as kr,withControlScheme as wr}from"@foblex/flow";import{DOCUMENT as Nr,NgTemplateOutlet as Cr}from"@angular/common";import{CdkDrag as pn,CdkDragHandle as fn}from"@angular/cdk/drag-drop";const Me=["screens","dynamicScreens","assignments","decisions","loops","collectionProcessors","recordLookups","recordCreates","recordUpdates","recordDeletes","recordRollbacks","actionCalls","scriptPluginCalls","subflows","transforms","waits","customErrors","orchestratedStages","steps","experiments"],Tr=["variables","constants","formulas","textTemplates","choices","dynamicChoiceSets","stages"];class D extends Error{category;validation;conflictingAuthor;details;constructor(e,n,r,t,i){super(n),this.category=e,this.validation=r,this.conflictingAuthor=t,this.details=i,this.name="FlowApiError"}static is(e){return e instanceof D}}const ea={InvalidRequest:400,InvalidDefinition:400,ValidationFailed:422,FlowNotFound:404,VersionNotFound:404,InterviewNotFound:404,StructureNotFound:404,AlreadyExists:409,NotEditable:409,VersionConflict:409,InvalidToken:400,MissingService:501},Sr={InvalidRequest:"La richiesta non e\u2019 valida.",InvalidDefinition:"Il documento non e\u2019 leggibile come definizione di flow.",ValidationFailed:"La definizione contiene errori che impediscono l\u2019attivazione.",FlowNotFound:"Il flow non esiste piu\u2019.",VersionNotFound:"La versione richiesta non esiste.",AlreadyExists:"Esiste gi\xE0 un flow con questo nome.",NotEditable:"Questa versione non e\u2019 modificabile: creane una nuova.",VersionConflict:"Qualcun altro ha salvato questa versione nel frattempo.",MissingService:"Funzione non configurata su questo ambiente.",StructureNotFound:"La classe non e\u2019 fra quelle utilizzabili come Structure.",InvalidToken:"La sessione di prova non e\u2019 piu\u2019 valida: riavvia l\u2019esecuzione.",InterviewNotFound:"L\u2019esecuzione sospesa non esiste piu\u2019.",Unknown:"Errore inatteso."};function E(o){return Promise.reject(new D("MissingService",`Primitiva non disponibile su questo ambiente: ${o}.`))}class B{exportFlow(e,n){return E("exportFlow")}parseFlow(e){return E("parseFlow")}cloneFlow(e,n){return E("cloneFlow")}deleteVersion(e,n){return E("deleteVersion")}deleteFlow(e){return E("deleteFlow")}validateVersion(e,n){return E("validateVersion")}validateFormula(e){return E("validateFormula")}describeObject(e){return E("describeObject")}listFieldValues(e,n){return E("listFieldValues")}listFormulaFunctions(e){return E("listFormulaFunctions")}listEnumValues(e){return E("listEnumValues")}listStructures(){return E("listStructures")}describeStructure(e){return E("describeStructure")}runFlow(e){return E("runFlow")}debugFlow(e){return E("debugFlow")}startInterview(e){return E("startInterview")}respondToScreen(e){return E("respondToScreen")}resumeInterview(e){return E("resumeInterview")}completeStageStep(e){return E("completeStageStep")}inspectInterview(e){return E("inspectInterview")}abandonInterview(e){return E("abandonInterview")}}const Dr=new Qt("FLOW_BUILDER_HTTP_CONFIG",{factory:()=>({baseUrl:"/api"})});function na(o){switch(o){case 400:return"InvalidRequest";case 404:return"FlowNotFound";case 409:return"VersionConflict";case 422:return"ValidationFailed";case 501:return"MissingService";default:return"Unknown"}}class N extends B{http=b(Gt);config=b(Dr);url(e){return`${this.config.baseUrl??""}${e}`}async request(e){try{return await e}catch(n){throw this.toApiError(n)}}toApiError(e){if(D.is(e))return e;if(e instanceof Wt){const r=e.error??{},t=r.category??na(e.status),i=r.message??Sr[t]??e.message;return new D(t,i,r.validation,r.conflictingAuthor??r.updatedBy,e.error)}const n=e instanceof Error?e.message:String(e);return new D("Unknown",n,void 0,void 0,e)}get(e,n){return this.request(Ke(this.http.get(this.url(e),{params:n})))}post(e,n,r){return this.request(Ke(this.http.post(this.url(e),n??{},{params:r})))}put(e,n){return this.request(Ke(this.http.put(this.url(e),n??{})))}del(e){return this.request(Ke(this.http.delete(this.url(e))))}static params(e){let n=new Ht;for(const[r,t]of Object.entries(e))t!=null&&t!==""&&(n=n.set(r,String(t)));return n}static segment(e){return encodeURIComponent(e)}listFlows(e){return this.get("/flows/editor/list",N.params({...e}))}listVersions(e){return this.get(`/flows/editor/${N.segment(e)}/versions`)}loadFlow(e,n){return this.get(`/flows/editor/${N.segment(e)}`,N.params({version:n}))}exportFlow(e,n){return this.request(Ke(this.http.get(this.url(`/flows/editor/${N.segment(e)}/export`),{params:N.params({...n}),responseType:"text"})))}parseFlow(e){return this.post("/flows/editor/parse",e)}createFlow(e){return this.post("/flows/editor/create",e)}saveFlow(e,n){return this.post("/flows/editor/save",n)}createVersion(e,n){return this.post(`/flows/editor/${N.segment(e)}/new-version`,{author:n?.author},N.params({from:n?.from}))}cloneFlow(e,n){return this.post(`/flows/editor/${N.segment(e)}/clone`,n)}activateVersion(e,n){return this.put(`/flows/editor/${N.segment(e)}/activate/${n}`)}deactivateFlow(e){return this.put(`/flows/editor/${N.segment(e)}/deactivate`)}deleteVersion(e,n){return this.del(`/flows/editor/${N.segment(e)}/versions/${n}`)}deleteFlow(e){return this.del(`/flows/editor/${N.segment(e)}`)}validateDefinition(e){return this.post("/flows/editor/validate",e)}validateFormula(e){return this.post("/flows/editor/validate-formula",e)}validateVersion(e,n){return this.get(`/flows/editor/${N.segment(e)}/validate`,N.params({version:n}))}getDictionaries(e){return this.get("/flows/editor/dictionaries",N.params({processType:e}))}getReferences(e){return this.post("/flows/editor/references",e)}getWritableReferences(e){return this.post("/flows/editor/writable-references",e)}getConnectorTargets(e,n){return this.post("/flows/editor/connector-targets",e,N.params({excluding:n}))}getOutline(e){return this.post("/flows/editor/outline",e)}listObjects(){return this.get("/flows/objects")}describeObject(e){return this.get(`/flows/objects/${N.segment(e)}`)}listFields(e,n){return this.get(`/flows/objects/${N.segment(e)}/fields`,N.params({usage:n}))}listFieldValues(e,n){return this.get(`/flows/objects/${N.segment(e)}/fields/${N.segment(n)}/picklist`)}listActionTypes(){return this.get("/flows/action-types")}listActions(e){return this.get("/flows/actions",N.params({type:e}))}listActionParameters(e,n){return this.get(`/flows/actions/${N.segment(e)}/${N.segment(n)}/parameters`)}listScripts(){return this.get("/flows/editor/scripts")}listScriptParameters(e){return this.get(`/flows/editor/scripts/${N.segment(e)}/parameters`)}listForms(e){return this.get("/flows/editor/forms",N.params({kind:e}))}listFormParameters(e){return this.get(`/flows/editor/forms/${N.segment(e)}/parameters`)}listFormulaFunctions(e){return this.get("/flows/editor/formula-functions",N.params({usage:e}))}listEnumTypes(){return this.get("/flows/editor/enum-types")}listEnumValues(e){return this.get(`/flows/editor/enum-types/${N.segment(e)}/values`)}listStructures(){return this.get("/flows/editor/structures")}describeStructure(e){return this.get(`/flows/editor/structures/${N.segment(e)}`).catch(n=>{throw D.is(n)&&n.category==="FlowNotFound"?new D("StructureNotFound",`La classe \xAB${e}\xBB non e\u2019 registrata.`,void 0,void 0,n.details):n})}listEvents(){return this.get("/flows/editor/events")}listSubflowCandidates(e){return this.get("/flows/editor/subflows",N.params({excluding:e}))}startInterview(e){return this.post("/flows/start",e)}respondToScreen(e){return this.post("/flows/submit-screen",e)}resumeInterview(e){return this.post("/flows/resume-wait",e)}completeStageStep(e){let n={stepName:e.stepName,status:e.status,stepOutputs:e.stepOutputs,debug:e.debug};return this.post(`/flows/${N.segment(e.interviewKey)}/resume-stage-step`,n)}inspectInterview(e){return this.get(`/flows/${N.segment(e)}`)}abandonInterview(e){return this.del(`/flows/${N.segment(e)}`)}}const R="$start";function j(o,e,n,r,t){return{key:o,kind:e,label:n,read:i=>i[r],write:(i,l)=>{l?i[r]=l:delete i[r]},...t}}function qn(o,e,n,r,t,i){return{key:o,kind:e,label:n,branchLabel:i,read:l=>l[r]?.[t]?.connector,write:(l,c)=>{const g=l[r]?.[t];g&&(c?g.connector=c:delete g.connector)}}}function ra(){return{key:"next",kind:"Next",label:"Successivo",read:o=>o.connector?.[0],write:(o,e)=>{const n=o;e?n.connector=[e]:delete n.connector}}}function L(o,e){switch(o){case"Start":{const n=e,r=[j("next","Start","Inizio","connector",{isStructural:!0})];return(n.scheduledPaths??[]).forEach((t,i)=>{r.push(qn(`scheduledPath:${i}`,"ScheduledPath",t.label||t.name||`Percorso differito ${i+1}`,"scheduledPaths",i,t.label??t.name??null))}),r}case"Decision":{const n=e,r=(n.rules??[]).map((t,i)=>qn(`rule:${i}`,"Rule",t.label||t.name||`Regola ${i+1}`,"rules",i,t.label??t.name??null));return r.push(j("default","Default",n.defaultConnectorLabel||"Nessuna regola vera","defaultConnector",{branchLabel:n.defaultConnectorLabel??null})),r}case"Loop":return[j("loopNext","LoopNext","Per ogni valore","nextValueConnector",{isStructural:!0}),j("loopEnd","LoopEnd","Nessun valore rimasto","noMoreValuesConnector")];case"Wait":{const n=e,r=(n.waitEvents??[]).map((t,i)=>qn(`waitEvent:${i}`,"WaitEvent",t.label||t.name||`Evento ${i+1}`,"waitEvents",i,t.label??t.name??null));return r.push(j("default","Default",n.defaultConnectorLabel||"Nessun evento verificato","defaultConnector",{branchLabel:n.defaultConnectorLabel??null})),r.push(j("fault","Fault","Errore","faultConnector",{isFaultRecovery:!0})),r}case"ActionCall":{const n=[j("next","Next","Successivo","connector"),j("fault","Fault","Errore","faultConnector",{isFaultRecovery:!0})];return(e.timeoutPathUsage==="EnableTimeoutPath"||e.timeoutConnector)&&n.push(j("timeout","Timeout","Timeout","timeoutConnector")),n}case"OrchestratedStage":return[j("next","Next","Stage concluso","connector"),j("fault","Fault","Step rifiutato","faultConnector")];case"ScriptCall":case"RecordLookup":case"RecordCreate":case"RecordUpdate":case"RecordDelete":return[j("next","Next","Successivo","connector"),j("fault","Fault","Errore","faultConnector",{isFaultRecovery:!0})];case"Transform":return[ra()];case"CustomError":return[];case"Screen":case"DynamicScreen":case"Assignment":case"CollectionProcessor":case"RecordRollback":case"Subflow":return[j("next","Next","Successivo","connector")];default:return e.connector?[j("next","Next","Successivo","connector")]:[]}}function ta(o,e,n){return L(o,e).find(r=>r.key===n)}const Pn={Screen:"screens",DynamicScreen:"dynamicScreens",Assignment:"assignments",Decision:"decisions",Loop:"loops",CollectionProcessor:"collectionProcessors",CustomError:"customErrors",Wait:"waits",RecordLookup:"recordLookups",RecordCreate:"recordCreates",RecordUpdate:"recordUpdates",RecordDelete:"recordDeletes",RecordRollback:"recordRollbacks",ActionCall:"actionCalls",ScriptCall:"scriptPluginCalls",Subflow:"subflows",Transform:"transforms",Step:"steps",Experiment:"experiments",OrchestratedStage:"orchestratedStages"},Ye=Object.fromEntries(Object.entries(Pn).map(([o,e])=>[e,o])),Or={Screen:"Screen",DynamicScreen:"Screen dinamico",Assignment:"Assegnazione",Decision:"Decisione",Loop:"Ciclo",CollectionProcessor:"Ordina o filtra",CustomError:"Errore custom",Wait:"Attesa",RecordLookup:"Get Records",RecordCreate:"Create Records",RecordUpdate:"Update Records",RecordDelete:"Delete Records",RecordRollback:"Roll Back Records",ActionCall:"Action",ScriptCall:"Script",Subflow:"Subflow",Transform:"Trasformazione",Step:"Segnaposto",Experiment:"Esperimento",OrchestratedStage:"Stage di orchestrazione"},Vn=new Set(["Step","Experiment"]),aa=new Set(["RecordLookup","RecordCreate","CollectionProcessor","Transform","ActionCall","Subflow"]),Mr={Start:"\u25B6",Screen:"\u25A4",DynamicScreen:"\u25A6",Decision:"\u25C6",Assignment:"=",Loop:"\u21BB",CollectionProcessor:"\u21C5",RecordLookup:"\u2315",RecordCreate:"+",RecordUpdate:"\u270E",RecordDelete:"\xD7",RecordRollback:"\u21BA",ActionCall:"\u26A1",ScriptCall:"\u27E8\u27E9",Subflow:"\u2935",Transform:"\u21C4",Wait:"\u25F7",CustomError:"!",OrchestratedStage:"\u2630"},$r={"CollectionProcessor:Sort":"\u21C5","CollectionProcessor:Filter":"\u25BD"};function Ln(o,e,n){const r=(n?$r[`${o}:${n}`]:void 0)??Mr[o];return r||(e||o)?.trim().charAt(0).toUpperCase()||"\u2022"}const Rr={CollectionProcessor:"collectionProcessorType"};function bn(o){return Rr[o]}function Fr(o,e){const n=bn(o),r=n?e[n]:void 0;return typeof r=="string"&&r?r:void 0}function Ir(o,e){const n=bn(o);return!n||!e?{}:{[n]:e}}const mn=/^[A-Za-z][A-Za-z0-9_]*$/;function Er(o){return!!o&&mn.test(o)}function $e(o,e,n){const r=(o??"")?.trim();if(!r)return{isValid:!1,problem:"empty",message:"Il nome tecnico e\u2019 obbligatorio."};if(!mn.test(r))return{isValid:!1,problem:"pattern",message:"Deve iniziare con una lettera e contenere solo lettere, cifre e underscore."};const t=r.toLowerCase(),i=n?.trim().toLowerCase();for(const l of e){const c=l.toLowerCase();if(c===t&&c!==i)return{isValid:!1,problem:"duplicate",message:"Questo nome e\u2019 gi\xE0 usato da un altro elemento o da una risorsa."}}return{isValid:!0}}function fe(o){const e=(o??"")?.trim();if(!e)return"";let r=e.normalize("NFD").replace(/\p{Diacritic}/gu,"").split(/[^A-Za-z0-9]+/).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join("_");return r?(/^[A-Za-z]/.test(r)||(r=`X_${r}`),r):""}function U(o,e){const n=new Set(Array.from(e,i=>i.toLowerCase())),r=fe(o)||"Elemento";if(!n.has(r.toLowerCase()))return r;let t=1;for(;n.has(`${r}_${t}`.toLowerCase());)t+=1;return`${r}_${t}`}function Ze(o){const e=(o??"")?.trim(),n=e.indexOf(".");return n<0?e:e.slice(0,n)}function gn(o){return(o??"").trimStart().startsWith("$")}function Je(o){if(!o)return!1;const e=o?.trim().toLowerCase();return e!=="and"&&e!=="or"&&e!=="formula"}function Bn(o,e){let n=!1;return{logic:o.replace(/\d+/g,t=>{const i=Number(t)-1,l=e[i];return l===void 0||l<0?(n=!0,"?"):String(l+1)}),hasDroppedTerms:n}}function zr(o,e){const n=o.conditions??[];if(e<0||e>=n.length)return{hasDroppedTerms:!1};if(n.splice(e,1),!Je(o.conditionLogic))return{hasDroppedTerms:!1};const r=[];for(let i=0;i<=n.length;i+=1)i<e?r.push(i):i===e?r.push(-1):r.push(i-1);const t=Bn(o.conditionLogic,r);return o.conditionLogic=t.logic,{hasDroppedTerms:t.hasDroppedTerms}}function Ar(o,e,n){const r=o.conditions??[];if(e===n||e<0||n<0||e>=r.length||n>=r.length)return;const[t]=r.splice(e,1);if(r.splice(n,0,t),!Je(o.conditionLogic))return;const i=[];for(let g=0;g<r.length;g+=1)i.push(g);const l=i.slice(),[c]=l.splice(n,1);l.splice(e,0,c);const p=[];l.forEach((g,f)=>{p[f]=g}),o.conditionLogic=Bn(o.conditionLogic,p).logic}function qr(o,e){const n=o?.trim();if(!n||!Je(n))return null;const r=n.replace(/\b(AND|OR|NOT)\b/gi," ").replace(/[()\s]/g,"");if(/[^0-9]/.test(r))return"Ammessi solo indici, AND, OR, NOT e parentesi.";let t=0;for(const l of n)if(l==="(")t+=1;else if(l===")"&&(t-=1,t<0))return"Parentesi non bilanciate.";if(t!==0)return"Parentesi non bilanciate.";const i=n.match(/\d+/g)??[];if(i.length===0)return"L\u2019espressione non referenzia nessuna condizione.";for(const l of i){const c=Number(l);if(c<1||c>e)return`La condizione ${c} non esiste: sono definite ${e} condizioni.`}return null}const ia=new Set(["Contains","StartsWith","EndsWith","In","NotIn","None"]),oa=new Set(["Integer","Number"]);function Pr(o,e){return!o||e?!1:!ia.has(o)}function jn(o){return!!o&&oa.has(o)}function Vr(o,e){return!o||!e?!0:!(jn(o)&&e==="String"||o==="String"&&jn(e))}function Un(o){const e=o?.trim();if(!e)return;const n=!e.includes(".")&&(e.match(/,/g)??[]).length===1?e.replace(",","."):e;if(!/^[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?$/.test(n))return;const r=Number(n);return Number.isFinite(r)?r:void 0}const Lr=["formulaExpression","elementReference","stringValue","integerValue","numberValue","dateValue","booleanValue","enumValue"],Gn=["stringValue","integerValue","numberValue","dateValue","booleanValue","enumValue"];function re(o){return o!=null}function Wn(o){return o?Lr.filter(e=>re(o[e])):[]}function Br(o){return Wn(o)[0]}function jr(o){const e=[];for(const n of o.orchestratedStages??[])for(const r of n.stageSteps??[])r.name&&e.push(r.name);return e}function Ur(o){return o?.stageSteps??[]}function Hn(o,e){if(!o)return;const n=Ze(o?.trim());return e.find(r=>!!r.name&&r.name===n)?.name}const Gr="isOrchestrationConditionMet";function hn(o,e){return!o||!e||o.length!==e.length?!1:o.every((n,r)=>n===e[r])}function vn(o,e){return o.length<=e.length&&o.every((n,r)=>n===e[r])}function sa(o){return o.join(".")}function Z(o,e){let n=o,r;for(const t of e){if(r=n?.[t],!r)return;n=r.fields}return r}function Wr(o,e,n){if(e.length===0)return n&&(o.fields??=[]),o.fields;const r=Z(o.fields,e);if(r)return n&&(r.fields??=[]),r.fields}function _n(o,e=[]){const n=[];return(o??[]).forEach((r,t)=>{const i=[...e,t];n.push({field:r,path:i,depth:e.length}),r.fields?.length&&n.push(..._n(r.fields,i))}),n}function Qn(o){return _n(o?.fields).map(e=>e.field)}function Hr(o){const e=[];for(const n of o?.dynamicScreens??[])for(const r of Qn(n))r.name&&e.push(r.name);return e}function Qr(o){const e=[];for(const n of o?.dynamicScreens??[])for(const r of n.actions??[])r.name&&e.push(r.name);return e}function Kr(o,e){return!!o?.name&&e?.storesValue===!0}function Xe(o,e,n,r){const t=Wr(o,e,!0);if(!t)return;const i=r===void 0||r>t.length?t.length:Math.max(0,r);return t.splice(i,0,n),[...e,i]}function Kn(o,e){if(e.length===0)return;const n=e.slice(0,-1),r=Wr(o,n,!1),t=e[e.length-1];r?.splice(t,1),r&&r.length===0&&(n.length===0?delete o.fields:delete Z(o.fields,n)?.fields)}function Yr(o,e,n,r){if(e.length===0||vn(e,n))return;const t=Z(o.fields,e);if(t)return Kn(o,e),Xe(o,la(e,n),t,r)}function la(o,e){const n=o.slice(0,-1),r=o[o.length-1];if(e.length<=n.length||!hn(n,e.slice(0,n.length)))return e;const t=[...e];return t[n.length]>r&&(t[n.length]-=1),t}function Zr(o,e,n){const r=Z(o.fields,e);if(!r)return;const t=JSON.parse(JSON.stringify(r));return t.name=n,delete t.fields,Xe(o,e.slice(0,-1),t,e[e.length-1]+1)}function Yn(o,e){if(!o||!e)return null;const n=[];let r=o.fields;const t=/fields\[([^\]]+)\]/g;let i=t.exec(e);for(;i;){if(!r?.length)return null;const l=i[1].trim(),c=/^\d+$/.test(l)?Number(l):r.findIndex(p=>p.name===l);if(c<0||c>=r.length)return null;n.push(c),r=r[c].fields,i=t.exec(e)}return n.length?n:null}function Jr(o,e){if(!o||!e?.length)return"";const n=[];for(let r=1;r<=e.length;r++){const t=Z(o.fields,e.slice(0,r));if(!t)break;n.push(t.fieldText||t.name||`campo ${e[r-1]+1}`)}return n.join(" \u203A ")}const Xr=[{source:"collection",field:"collectionReference"},{source:"object",field:"object"},{source:"enum",field:"enumType"}];function Zn(o){return Xr.filter(({field:e})=>{const n=o[e];return typeof n=="string"&&n.trim()!==""}).map(({source:e})=>e)}function et(o){return Zn(o)[0]??null}function nt(o){return Xr.filter(e=>e.source!==o).map(e=>e.field)}const yn=[{name:"Name",label:"Nome",dataType:"String"},{name:"Label",label:"Etichetta",dataType:"String"},{name:"NumericValue",label:"Valore numerico",dataType:"Integer"}],rt="Label",tt="Name";function at(o){return yn.find(e=>e.name===o)?.dataType}function it(o){return!!o&&!yn.some(e=>e.name===o)}const ca=new Map([["error","Error"],["errore","Error"],["errors","Error"],["fatal","Error"],["critical","Error"],["severe","Error"],["blocker","Error"],["warning","Warning"],["warn","Warning"],["warnings","Warning"],["avviso","Warning"],["caution","Warning"],["info","Info"],["information","Info"],["informational","Info"],["note","Info"],["nota","Info"],["hint","Info"],["log","Info"],["debug","Info"],["trace","Info"],["verbose","Info"]]),da=["Info","Warning","Error"],ot=new Set;function be(o){return st(o)??"Info"}function st(o,e=0){if(o==null)return null;if(typeof o=="string"){const n=o?.trim()?.toLowerCase();return n?ca.get(n)??lt(Number(n)):null}if(typeof o=="number"||typeof o=="bigint")return lt(Number(o))??ct(o,`number:${o}`);if(typeof o=="object"&&e===0){const n=o;for(const r of["name","severity","level","label","code","value"]){const t=st(n[r],e+1);if(t)return t}}return ct(o,`${typeof o}`)}function lt(o){return Number.isInteger(o)?da[o]??null:null}function ct(o,e){return ot.has(e)||(ot.add(e),console.warn("[flow-builder] gravita\u2019 di rilievo non riconosciuta, trattata come nota:",o)),null}const dt=["Error","Warning","Info"],Jn={Error:"Errore",Warning:"Avviso",Info:"Nota"},ut={Error:"\u2715",Warning:"!",Info:"i"};function pt(o,e,n){if(!(n||!e)){if(o==="Structure")return{kind:"structure",name:e};if(o==="Object")return{kind:"object",name:e}}}function ua(o,e){return{name:o.name,label:o.label??null,dataType:o.dataType,objectType:o.objectType??null,isWritable:o.isCreateable!==!1||o.isUpdateable!==!1,next:pt(o.dataType,o.objectType,!1),description:o.isRequired?"obbligatorio":null,valueSet:o.hasClosedValueSet?{object:e,field:o.name}:void 0}}function pa(o){return{name:o.name,label:o.label??null,description:o.description??null,dataType:o.dataType,objectType:o.objectType??null,isCollection:o.isCollection??!1,isWritable:o.isWritable!==!1,next:pt(o.dataType,o.objectType,o.isCollection)}}async function ft(o,e,n="any"){if(!e.name)return{container:e,status:"unknown-catalog",entries:[]};if(e.kind==="structure"){const r=await o.describeStructure(e.name);return{container:e,label:r.label??null,status:r.status==="unknown-class"?"unknown-container":r.status,entries:r.members.map(pa)}}try{const r=await o.listFields(e.name,n)??[];return{container:e,status:r.length?"declared":"undeclared",entries:r.map(t=>ua(t,e.name))}}catch{return{container:e,status:"unknown-catalog",entries:[]}}}function bt(o){return o==="declared"?"unknown-segment":o}async function Xn(o,e,n,r){const t=(n??"")?.trim(),i=t.split(".").map(f=>f?.trim()),l=[],c=[],p={root:e,path:t,segments:i,levels:l,resolved:c};let g=e;for(let f=0;f<i.length;f+=1){const m=i[f],h=f===i.length-1,O=i.slice(0,f).join("."),x=await ft(o,g,h?r?.usage??"any":"any");if(l.push(x),h){const Oe={level:x,prefix:O,segment:m};if(!m)return{...p,status:"empty",tail:Oe};if(x.status!=="declared")return{...p,status:"unverifiable",reason:bt(x.status),stoppedAt:{index:f,segment:m},tail:Oe};const In=x.entries.find(Ut=>Ut.name===m);return In?(c.push(In),{...p,status:"resolved",last:In,tail:Oe}):{...p,status:"unknown",reason:"unknown-segment",stoppedAt:{index:f,segment:m},tail:Oe}}if(!m)return{...p,status:"empty"};if(x.status!=="declared")return{...p,status:"unverifiable",reason:bt(x.status),stoppedAt:{index:f,segment:m}};const pe=x.entries.find(Oe=>Oe.name===m);if(!pe)return{...p,status:"unknown",reason:"unknown-segment",stoppedAt:{index:f,segment:m}};c.push(pe);const gr=pe.isCollection?void 0:pe.next;if(!gr)return{...p,status:"unverifiable",reason:pe.isCollection?"collection":"no-object-type",stoppedAt:{index:f+1,segment:i[f+1]}};g=gr}return{...p,status:"empty"}}function xn(o){return o?o.label||o.container.name:""}function kn(o){const e=o.levels[o.levels.length-1],n=o.stoppedAt?.segment,r=o.resolved[o.resolved.length-1]?.name,t=n?`\xAB${n}\xBB`:"il resto del percorso";switch(o.reason){case"collection":return`\xAB${r}\xBB e\u2019 una collection: dentro una collection il percorso non si verifica, ${t} resta non verificato (PATH_NOT_VERIFIABLE).`;case"no-object-type":return`\xAB${r}\xBB non dichiara dove il percorso continua: ${t} resta non verificato (PATH_NOT_VERIFIABLE).`;case"unknown-container":return`La classe ${e?.container.name} non e\u2019 registrata: correggi la classe, non il percorso (STRUCTURE_TYPE_UNKNOWN).`;case"undeclared":return e?.container.kind==="structure"?`${xn(e)} non dichiara i suoi membri: ${t} non e\u2019 verificabile (PATH_NOT_VERIFIABLE).`:`Il catalogo dei campi di ${xn(e)} non e\u2019 popolato: ${t} non e\u2019 verificabile (PATH_NOT_VERIFIABLE).`;case"unknown-catalog":return`Catalogo non disponibile: ${t} non e\u2019 verificabile (PATH_NOT_VERIFIABLE).`;default:return`${t} non e\u2019 verificabile (PATH_NOT_VERIFIABLE).`}}function wn(o){return(o.levels[o.levels.length-1]?.entries??[]).map(n=>n.name)}function en(o,e){const n=[];if(o.label&&o.label!==o.name&&n.push(o.label),o.dataType){const r=o.isCollection?`${o.dataType}[]`:o.dataType;n.push(o.objectType?`${r} \xB7 ${o.objectType}`:r)}return e?.showWritability&&!o.isWritable&&n.push("sola lettura"),o.description&&n.push(o.description),n.join(" \xB7 ")}function Nn(o,e){const n=u(null,...ngDevMode?[{debugName:"resolution"}]:[]),r=u(!1,...ngDevMode?[{debugName:"isPending"}]:[]);let t=0;return w(()=>{const i=e(),l=++t;if(!i?.root?.name){n.set(null),r.set(!1);return}r.set(!0),Xn(o,i.root,i.path,{usage:i.usage}).then(c=>{l===t&&(n.set(c),r.set(!1))})}),{resolution:n.asReadonly(),isPending:r.asReadonly()}}function mt(o){return!o||!o.dataType&&o.isCollection==null&&!o.objectType}function er(o,e){return!(e.dataType&&o.dataType&&o.dataType!==e.dataType||e.isCollection!=null&&o.isCollection!=null&&!!o.isCollection!==e.isCollection||e.objectType&&o.objectType&&o.objectType!==e.objectType)}function gt(o,e){return mt(e)?[...o]:o.filter(n=>er(n,e))}const Cn=30,nn=28,Tn=160,Sn=90,rn=[{value:"giallo",label:"Giallo"},{value:"verde",label:"Verde"},{value:"blu",label:"Blu"},{value:"viola",label:"Viola"},{value:"rosso",label:"Rosso"},{value:"grigio",label:"Grigio"}];function ht(o){return rn.some(n=>n.value===o)?`fb-group--${o}`:"fb-group--neutro"}function nr(o){if(!o.length)return null;let e=Number.POSITIVE_INFINITY,n=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,t=Number.NEGATIVE_INFINITY;for(const i of o)e=Math.min(e,i.x),n=Math.min(n,i.y),r=Math.max(r,i.x+i.width),t=Math.max(t,i.y+i.height);return{x:Math.round(e-nn),y:Math.round(n-nn-Cn),width:Math.round(Math.max(Tn,r-e+nn*2)),height:Math.round(Math.max(Sn,t-n+nn*2+Cn))}}function rr(o,e){const n=Math.round(o.locationX??0),r=Math.round(o.locationY??0),t=Math.round(o.width??0),i=Math.round(o.height??0);if(t>0&&i>0)return{x:n,y:r,width:Math.max(Tn,t),height:Math.max(Sn,i)};const l=nr(e);return l||{x:n,y:r,width:Tn,height:Sn}}function Dn(o){return!(o.width&&o.width>0&&o.height&&o.height>0)}function vt(o,e){return e.filter(({rect:n})=>{const r=n.x+n.width/2,t=n.y+n.height/2;return r>=o.x&&r<=o.x+o.width&&t>=o.y&&t<=o.y+o.height}).map(({name:n})=>n)}function _t(o,e,n){const r=new Set(e),t=(o??[]).filter(l=>!n(l)||r.has(l)),i=new Set(t);return[...t,...e.filter(l=>!i.has(l))]}function yt(o,e){const n=o??[];return n.length===e.length&&n.every((r,t)=>r===e[t])}const tn=new Set(["targetReference","elementReference","assignToReference","leftValueReference","collectionReference","assignNextValueToReference","outputReference","inputReference","assignRecordIdToReference","stageReference","choiceReferences","defaultSelectedChoiceReference","screenActionName","triggerFieldName"]);function tr(o,e,n){if(!e||!n||e===n)return;const r=i=>i===e?n:i.startsWith(`${e}.`)?`${n}${i.slice(e.length)}`:i,t=i=>{if(Array.isArray(i)){i.forEach(t);return}if(!i||typeof i!="object")return;const l=i;for(const[c,p]of Object.entries(l)){if(!tn.has(c)){t(p);continue}typeof p=="string"?l[c]=r(p):Array.isArray(p)&&p.every(g=>typeof g=="string")?l[c]=p.map(r):t(p)}};t(o)}const ar="flow-builder/elements",xt=1;function kt(o){const e=o;return!!e&&typeof e=="object"&&e.kind===ar&&Array.isArray(e.nodes)&&e.nodes.length>0}function ir(o){const e=[],n=r=>{for(const t of r??[])typeof t.name=="string"&&t.name&&e.push(t.name),n(t.fields)};n(o.fields);for(const r of o.actions??[])typeof r.name=="string"&&r.name&&e.push(r.name);for(const r of o.stageSteps??[])typeof r.name=="string"&&r.name&&e.push(r.name);return e}function fa(o,e,n){const r=t=>{for(const i of t??[])i.name===e&&(i.name=n),r(i.fields)};r(o.fields);for(const t of o.actions??[])t.name===e&&(t.name=n);for(const t of o.stageSteps??[])t.name===e&&(t.name=n)}function wt(o){const e=new Set,n=r=>{if(Array.isArray(r)){r.forEach(n);return}if(!(!r||typeof r!="object"))for(const[t,i]of Object.entries(r)){if(t==="targetReference"||!tn.has(t)){n(i);continue}const l=typeof i=="string"?[i]:Array.isArray(i)?i:[];let c=!1;for(const p of l){if(typeof p!="string")continue;c=!0;const g=p.split(".")[0];g&&e.add(g)}c||n(i)}};return n(o),[...e]}function On(o){return JSON.parse(JSON.stringify(o))}function or(o){const e=new Set(o.names),n=o.nodes.filter(f=>e.has(f.name));if(!n.length)return null;const r=new Set(n.map(f=>f.name)),t=new Set([...r,...n.flatMap(f=>ir(f.node))]),i=n.map(f=>{const m=On(f.node);for(const h of L(f.type,m)){const O=h.read(m),x=O?.targetReference;(!O||!x||!r.has(x))&&h.write(m,void 0)}return{collection:f.collection,node:m}}),l=wt(i.map(f=>f.node)),c=new Map(o.resources.map(f=>[f.name.toLowerCase(),f])),p=[],g=[];for(const f of l){if(t.has(f))continue;const m=c.get(f.toLowerCase());m?p.push({collection:m.collection,resource:On(m.resource)}):g.push(f)}return{kind:ar,version:xt,flowName:o.flowName,processType:o.processType,nodes:i,resources:p,externalReferences:g}}function sr(o,e){const n=[...e.usedNames],r=new Set(n.map(f=>f.toLowerCase())),t=[],i=(f,m)=>{if(!r.has(f.toLowerCase()))return r.add(f.toLowerCase()),n.push(f),f;const h=U(`${f}_copia`,n);return r.add(h.toLowerCase()),n.push(h),t.push({kind:m,from:f,to:h}),h};for(const f of o.nodes){const m=f.node.name??"";m&&i(m,"node");for(const h of ir(f.node))i(h,"inner")}const l=[],c=new Set;for(const f of o.resources){const m=f.resource.name??"";if(!m)continue;c.add(m.toLowerCase());const h=e.usedNames.some(O=>O.toLowerCase()===m.toLowerCase());l.push({collection:f.collection,name:m,status:h?"reused":"new"})}const p=new Set([...e.usedNames.map(f=>f.toLowerCase()),...c]),g=o.externalReferences.filter(f=>f.startsWith("$")?!1:!p.has(f.toLowerCase()));return{nodeCount:o.nodes.length,renames:t,resources:l,unresolved:g,processTypeMismatch:o.processType&&e.processType&&o.processType!==e.processType?o.processType:null}}function Nt(o,e,n,r){const t=r.offset??{x:40,y:40},i=On(e.nodes);for(const c of n.renames){for(const p of i)c.kind==="node"?p.node.name===c.from&&(p.node.name=c.to):fa(p.node,c.from,c.to);tr(i,c.from,c.to)}if(r.createMissingResources)for(const c of e.resources){const p=c.resource.name??"",g=n.resources.find(m=>m.name===p);if(!p||g?.status!=="new")continue;const f=o[c.collection]??[];f.push(On(c.resource)),o[c.collection]=f}const l=[];for(const c of i){c.node.locationX=(c.node.locationX??0)+t.x,c.node.locationY=(c.node.locationY??0)+t.y;const p=o[c.collection]??[];p.push(c.node),o[c.collection]=p,c.node.name&&l.push(c.node.name)}return l}function ba(o){return Ye[o]??o}const lr="fb.clipboard.elements";class Fe{memory=null;_revision=u(0,...ngDevMode?[{debugName:"_revision"}]:[]);constructor(){typeof window<"u"&&window.addEventListener("storage",e=>{e.key===lr&&this._revision.update(n=>n+1)})}storage(){try{return typeof localStorage>"u"?null:localStorage}catch{return null}}write(e){this.memory=e;try{this.storage()?.setItem(lr,JSON.stringify(e))}catch{}this._revision.update(n=>n+1)}read(){const e=(()=>{try{return this.storage()?.getItem(lr)??null}catch{return null}})();if(e)try{const n=JSON.parse(e);if(kt(n))return n}catch{}return this.memory}hasContent=u(!1,...ngDevMode?[{debugName:"hasContent"}]:[]);refresh(){const e=!!this.read();return this.hasContent.set(e),e}revision=this._revision.asReadonly();static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Fe,deps:[],target:a.\u0275\u0275FactoryTarget.Injectable});static \u0275prov=a.\u0275\u0275ngDeclareInjectable({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Fe,providedIn:"root"})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Fe,decorators:[{type:se,args:[{providedIn:"root"}]}],ctorParameters:()=>[]});function cr(o,e,n){return{fullName:o,label:e,processType:n,start:[{locationX:60,locationY:60}]}}function Ct(o){return JSON.parse(JSON.stringify(o))}const ma=100;class T{_document=u(cr("","","Screen"),...ngDevMode?[{debugName:"_document"}]:[]);_isDirty=u(!1,...ngDevMode?[{debugName:"_isDirty"}]:[]);_undoStack=u([],...ngDevMode?[{debugName:"_undoStack"}]:[]);_redoStack=u([],...ngDevMode?[{debugName:"_redoStack"}]:[]);document=this._document.asReadonly();isDirty=this._isDirty.asReadonly();canUndo=s(()=>this._undoStack().length>0,...ngDevMode?[{debugName:"canUndo"}]:[]);canRedo=s(()=>this._redoStack().length>0,...ngDevMode?[{debugName:"canRedo"}]:[]);start=s(()=>this._document().start?.[0]??{},...ngDevMode?[{debugName:"start"}]:[]);nodes=s(()=>{const e=this._document(),n=[];for(const r of Me)e[r]?.forEach((i,l)=>{n.push({name:i.name??"",type:Ye[r]??r,collection:r,index:l,node:i})});return n},...ngDevMode?[{debugName:"nodes"}]:[]);nodeByName=s(()=>new Map(this.nodes().map(e=>[e.name,e])),...ngDevMode?[{debugName:"nodeByName"}]:[]);resources=s(()=>{const e=this._document(),n=[];for(const r of Tr)e[r]?.forEach((i,l)=>{n.push({name:i.name??"",collection:r,index:l,resource:i})});return n},...ngDevMode?[{debugName:"resources"}]:[]);groups=s(()=>(this._document().groups??[]).map((e,n)=>({name:e.name??"",index:n,group:e})),...ngDevMode?[{debugName:"groups"}]:[]);groupNames=s(()=>this.groups().map(e=>e.name),...ngDevMode?[{debugName:"groupNames"}]:[]);usedNames=s(()=>[...this.nodes().map(e=>e.name),...this.resources().map(e=>e.name),...jr(this._document()),...Hr(this._document()),...Qr(this._document())],...ngDevMode?[{debugName:"usedNames"}]:[]);edges=s(()=>{const e=[],n=(t,i,l)=>{const c=l.read(i);c&&e.push({id:`${t}|${l.key}`,from:t,to:c.targetReference||void 0,outletKey:l.key,kind:l.kind,label:l.branchLabel??null,isGoTo:c.isGoTo})},r=this.start();for(const t of L("Start",r))n(R,r,t);for(const t of this.nodes())for(const i of L(t.type,t.node))n(t.name,t.node,i);return e},...ngDevMode?[{debugName:"edges"}]:[]);reachableNames=s(()=>{const e=new Map;for(const t of this.edges()){if(!t.to)continue;const i=e.get(t.from)??[];i.push(t.to),e.set(t.from,i)}const n=new Set,r=[R];for(;r.length;){const t=r.shift();for(const i of e.get(t)??[])n.has(i)||(n.add(i),r.push(i))}return n},...ngDevMode?[{debugName:"reachableNames"}]:[]);load(e){this._document.set(Ct(e)),this._undoStack.set([]),this._redoStack.set([]),this._isDirty.set(!1)}markSaved(){this._isDirty.set(!1)}update(e,n){const r=this._document();n?.silent||this.pushHistory(r);const t=Ct(r);e(t),this._document.set(t),this._isDirty.set(!0)}pushHistory(e){const n=JSON.stringify(e),r=[...this._undoStack(),n];r.length>ma&&r.shift(),this._undoStack.set(r),this._redoStack.set([])}undo(){const e=[...this._undoStack()],n=e.pop();n&&(this._redoStack.set([...this._redoStack(),JSON.stringify(this._document())]),this._undoStack.set(e),this._document.set(JSON.parse(n)),this._isDirty.set(!0))}redo(){const e=[...this._redoStack()],n=e.pop();n&&(this._undoStack.set([...this._undoStack(),JSON.stringify(this._document())]),this._redoStack.set(e),this._document.set(JSON.parse(n)),this._isDirty.set(!0))}addNode(e,n){this.update(r=>{const t=r[e]??[];t.push(n),r[e]=t})}insertNodeOnEdge(e,n,r,t){const i=Ye[e]??e,l=r.from===R?"Start":this.nodeByName().get(r.from)?.type;l&&this.update(c=>{const p=c[e]??[];p.push(n),c[e]=p;const g=r.from===R?c.start?.[0]:T.nodeIn(c,r.from);if(g&&T.writeConnector(g,l,r.outletKey,n.name),t&&T.writeConnector(n,i,t,r.to),!r.shift)return;const f=new Set(r.shift.names),m=h=>{h&&(h.locationY=(h.locationY??0)+r.shift.deltaY)};f.has(R)&&m(c.start?.[0]);for(const h of Me)c[h]?.forEach(x=>{x!==n&&x.name&&f.has(x.name)&&m(x)})})}static nodeIn(e,n){for(const r of Me){const i=e[r]?.find(l=>l.name===n);if(i)return i}}static writeConnector(e,n,r,t,i){const l=L(n,e).find(g=>g.key===r);if(!l)return;if(!t){l.write(e,void 0);return}const p={...l.read(e)??{},targetReference:t};i!==void 0&&(p.isGoTo=i),l.write(e,p)}updateNode(e,n,r){const t=this.nodeByName().get(e);t&&this.update(i=>{const c=i[t.collection]?.[t.index];c&&n(c)},r)}updateStart(e,n){this.update(r=>{const t=r.start??[{}];e(t[0]),r.start=t},n)}moveNode(e,n,r,t){const i={x:Math.round(n),y:Math.round(r)};if(e===R){this.updateStart(l=>{l.locationX=i.x,l.locationY=i.y},t);return}this.updateNode(e,l=>{l.locationX=i.x,l.locationY=i.y},t)}removeNode(e){const n=this.nodeByName().get(e);n&&this.update(r=>{const t=r[n.collection];t?.splice(n.index,1),t&&t.length===0&&delete r[n.collection],T.clearReferencesTo(r,e),T.forgetMember(r,e)})}static forgetMember(e,n){for(const r of e.groups??[]){if(!r.members?.includes(n))continue;const t=r.members.filter(i=>i!==n);t.length?r.members=t:delete r.members}}static clearReferencesTo(e,n){const r=(i,l)=>{for(const c of L(i,l))c.read(l)?.targetReference===n&&c.write(l,void 0)},t=e.start?.[0];t&&r("Start",t);for(const i of Me){const l=e[i],c=Ye[i]??i;l?.forEach(p=>r(c,p))}}renameNode(e,n){!e||!n||e===n||this.update(r=>{const t=this.nodeByName().get(e);if(t){const l=r[t.collection]?.[t.index];l&&(l.name=n)}T.rewriteReferences(r,e,n);for(const i of r.groups??[])i.members?.includes(e)&&(i.members=i.members.map(l=>l===e?n:l))})}renameScreenField(e,n,r){const t=this.nodeByName().get(e);!t||!r||this.update(i=>{const c=i[t.collection]?.[t.index],p=Z(c?.fields,n);if(!p||p.name===r)return;const g=p.name;p.name=r,g&&T.rewriteReferences(i,g,r)})}renameResource(e,n,r){this.update(t=>{const l=t[e]?.[n];if(!l)return;const c=l.name;l.name=r,c&&T.rewriteReferences(t,c,r)})}static rewriteReferences(e,n,r){tr(e,n,r)}duplicateNodes(e,n={x:40,y:40}){const r=or({nodes:this.nodes(),resources:this.resources(),names:e,flowName:this._document().fullName,processType:this._document().processType});if(!r)return[];const t=sr(r,{usedNames:this.usedNames(),processType:this._document().processType});return this.pasteClipboard(r,t,{createMissingResources:!1,offset:n})}pasteClipboard(e,n,r){let t=[];return this.update(i=>{t=Nt(i,e,n,r)}),t}setConnector(e,n,r,t){const i=(l,c)=>{T.writeConnector(c,l,n,r,t)};if(e===R){this.updateStart(l=>i("Start",l));return}this.updateNode(e,l=>{const c=this.nodeByName().get(e);i(c?.type??"",l)})}removeConnector(e,n){this.setConnector(e,n,void 0)}addGroup(e){this.update(n=>{const r=n.groups??[];r.push(e),n.groups=r})}updateGroup(e,n,r){this.update(t=>{const i=t.groups?.[e];i&&n(i)},r)}removeGroup(e){this.update(n=>{n.groups?.splice(e,1),n.groups&&n.groups.length===0&&delete n.groups})}moveGroup(e,n,r,t){const i=this.groups().find(f=>f.name===e);if(!i)return;const l={x:Math.round(n),y:Math.round(r)},c=l.x-Math.round(i.group.locationX??0),p=l.y-Math.round(i.group.locationY??0),g=new Set(i.group.members??[]);this.update(f=>{const m=f.groups?.[i.index];if(m&&(m.locationX=l.x,m.locationY=l.y,!(!c&&!p)))for(const h of Me)f[h]?.forEach(x=>{x.name&&g.has(x.name)&&(x.locationX=Math.round((x.locationX??0)+c),x.locationY=Math.round((x.locationY??0)+p))})},t)}resizeGroup(e,n){const r=this.groups().find(t=>t.name===e);r&&this.updateGroup(r.index,t=>{t.locationX=Math.round(n.x),t.locationY=Math.round(n.y),t.width=Math.round(n.width),t.height=Math.round(n.height)})}setGroupMembers(e,n,r){const t=this.groups().find(i=>i.name===e);return!t||yt(t.group.members,n)?!1:(this.updateGroup(t.index,i=>{n.length?i.members=[...n]:delete i.members},r),!0)}addResource(e,n){this.update(r=>{const t=r[e]??[];t.push(n),r[e]=t})}updateResource(e,n,r){this.update(t=>{const l=t[e]?.[n];l&&r(l)})}removeResource(e,n){this.update(r=>{const t=r[e];t?.splice(n,1),t&&t.length===0&&delete r[e]})}updateHeader(e,n){this.update(e,n)}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:T,deps:[],target:a.\u0275\u0275FactoryTarget.Injectable});static \u0275prov=a.\u0275\u0275ngDeclareInjectable({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:T})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:T,decorators:[{type:se}]});class I{api=b(B);_dictionaries=u({},...ngDevMode?[{debugName:"_dictionaries"}]:[]);_isLoaded=u(!1,...ngDevMode?[{debugName:"_isLoaded"}]:[]);_processType=u(void 0,...ngDevMode?[{debugName:"_processType"}]:[]);cache=new Map;sequence=0;dictionaries=this._dictionaries.asReadonly();isLoaded=this._isLoaded.asReadonly();processType=this._processType.asReadonly();async load(e){if(this._isLoaded()&&e===this._processType())return;const n=e??"",r=++this.sequence;let t=this.cache.get(n);t||(t=this.api.getDictionaries(e).then(l=>l??{}),t.catch(()=>this.cache.delete(n)),this.cache.set(n,t));const i=await t;r===this.sequence&&(this._dictionaries.set(i),this._processType.set(e),this._isLoaded.set(!0))}dataTypes=s(()=>this._dictionaries().dataTypes??[],...ngDevMode?[{debugName:"dataTypes"}]:[]);comparisonOperators=s(()=>this._dictionaries().comparisonOperators??[],...ngDevMode?[{debugName:"comparisonOperators"}]:[]);assignmentOperators=s(()=>this._dictionaries().assignmentOperators??[],...ngDevMode?[{debugName:"assignmentOperators"}]:[]);recordFilterOperators=s(()=>this._dictionaries().recordFilterOperators??[],...ngDevMode?[{debugName:"recordFilterOperators"}]:[]);resourceKinds=s(()=>this._dictionaries().resourceKinds??[],...ngDevMode?[{debugName:"resourceKinds"}]:[]);globalVariables=s(()=>this._dictionaries().globalVariables??[],...ngDevMode?[{debugName:"globalVariables"}]:[]);processTypes=s(()=>this._dictionaries().processTypes??[],...ngDevMode?[{debugName:"processTypes"}]:[]);triggerTypes=s(()=>this._dictionaries().triggerTypes??[],...ngDevMode?[{debugName:"triggerTypes"}]:[]);recordTriggerTypes=s(()=>this._dictionaries().recordTriggerTypes??[],...ngDevMode?[{debugName:"recordTriggerTypes"}]:[]);startFrequencies=s(()=>this._dictionaries().startFrequencies??[],...ngDevMode?[{debugName:"startFrequencies"}]:[]);offsetUnits=s(()=>this._dictionaries().offsetUnits??[],...ngDevMode?[{debugName:"offsetUnits"}]:[]);sortOrders=s(()=>this._dictionaries().sortOrders??[],...ngDevMode?[{debugName:"sortOrders"}]:[]);collectionProcessorTypes=s(()=>this._dictionaries().collectionProcessorTypes??[],...ngDevMode?[{debugName:"collectionProcessorTypes"}]:[]);transformTypes=s(()=>this._dictionaries().transformTypes??[],...ngDevMode?[{debugName:"transformTypes"}]:[]);transactionModels=s(()=>this._dictionaries().transactionModels??[],...ngDevMode?[{debugName:"transactionModels"}]:[]);waitEventTypes=s(()=>this._dictionaries().waitEventTypes??[],...ngDevMode?[{debugName:"waitEventTypes"}]:[]);stageStepTypes=s(()=>this._dictionaries().stageStepTypes??[],...ngDevMode?[{debugName:"stageStepTypes"}]:[]);assigneeTypes=s(()=>this._dictionaries().assigneeTypes??[],...ngDevMode?[{debugName:"assigneeTypes"}]:[]);conditionLogicModes=s(()=>this._dictionaries().conditionLogicModes??[],...ngDevMode?[{debugName:"conditionLogicModes"}]:[]);regionContainerTypes=s(()=>this._dictionaries().regionContainerTypes??[],...ngDevMode?[{debugName:"regionContainerTypes"}]:[]);screenFieldInputsRevisited=s(()=>this._dictionaries().screenFieldInputsRevisited??[],...ngDevMode?[{debugName:"screenFieldInputsRevisited"}]:[]);enumChoiceSetFields=s(()=>this._dictionaries().enumChoiceSetFields??[],...ngDevMode?[{debugName:"enumChoiceSetFields"}]:[]);screenFieldTypes=s(()=>this._dictionaries().screenFieldTypes??[],...ngDevMode?[{debugName:"screenFieldTypes"}]:[]);screenFieldType(e){if(e)return this.screenFieldTypes().find(n=>n.value===e)}screenFieldStoresValue(e){return this.screenFieldType(e)?.storesValue??!1}screenFieldIsContainer(e){return this.screenFieldType(e)?.isContainer??!1}screenFieldAcceptsChoices(e){return this.screenFieldType(e)?.acceptsChoices??!1}screenFieldRequiresDataType(e){return this.screenFieldType(e)?.requiresDataType??!1}screenFieldIsCollection(e){return this.screenFieldType(e)?.isCollection??!1}elementTypes=s(()=>this._dictionaries().elementTypes??[],...ngDevMode?[{debugName:"elementTypes"}]:[]);paletteTypes=s(()=>this.elementTypes().filter(e=>!(e.isSupported===!1||e.isSupported===void 0&&Vn.has(e.value))),...ngDevMode?[{debugName:"paletteTypes"}]:[]);paletteCategories=s(()=>{const e=[];for(const n of this.paletteTypes()){const r=n.category??"Altro";e.includes(r)||e.push(r)}return e},...ngDevMode?[{debugName:"paletteCategories"}]:[]);elementType(e){return this.elementTypes().find(n=>n.value===e)}variantsOf(e){return bn(e)==="collectionProcessorType"?this.collectionProcessorTypes():[]}variantLabelOf(e,n){return I.labelIn(this.variantsOf(e),n)}collectionOf(e){return this.elementType(e)?.metadataProperty??Pn[e]}labelOf(e){return this.elementType(e)?.label??Or[e]??e}hasFaultConnector(e){return this.elementType(e)?.hasFaultConnector??!1}hasAutomaticOutput(e){return this.elementType(e)?.hasAutomaticOutput??!1}static labelIn(e,n){return n?e.find(r=>r.value===n)?.label??n:""}operator(e){if(e)return this.comparisonOperators().find(n=>n.value===e)}isUnaryOperator(e){return this.operator(e)?.isUnary??!1}operatorAppliesToElements(e){return this.operator(e)?.appliesToElements??!1}assignmentExpectsCollection(e){return this.assignmentOperators().find(n=>n.value===e)?.expectsCollection??!1}operatorsFor(e){const n=this.comparisonOperators();return e?n.filter(r=>!r.appliesTo||r.appliesTo.length===0||r.appliesTo.includes(e)):n}globalScope(e){if(e)return this.globalVariables().find(n=>n.scope===e||n.value===e)}isGlobalScopeVerifiable(e){return(this.globalScope(e)?.paths?.length??0)>0}globalPathsOf(e){const n=this.globalScope(e);if(!n)return[];const r=n.scope??n.value;return(n.paths??[]).map(t=>`${r}.${t}`)}stageStepType(e){if(e)return this.stageStepTypes().find(n=>n.value===e)}stageStepRequiresActionName(e){return this.stageStepType(e)?.requiresActionName??e==="stepBackground"}stageStepRequiresAssignees(e){const n=this.stageStepType(e);return n?.requiresAssignees!==void 0?n.requiresAssignees:e==="stepInteractive"||e==="stepApproval"}dataType(e){return this.dataTypes().find(n=>n.value===e)}requiresObjectType(e){const n=this.dataType(e);return n?.requiresObjectType!==void 0?n.requiresObjectType:e==="Object"||e==="Enum"||this.isStructure(e)}isStructure(e){const n=this.dataType(e);return n?.isStructure!==void 0?n.isStructure:e==="Structure"}objectTypeIsError(e){return this.isStructure(e)}supportsScale(e){const n=this.dataType(e);return n?.supportsScale!==void 0?n.supportsScale:e==="Number"||e==="Integer"}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:I,deps:[],target:a.\u0275\u0275FactoryTarget.Injectable});static \u0275prov=a.\u0275\u0275ngDeclareInjectable({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:I})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:I,decorators:[{type:se}]});class le{entries=new Map;get(e,n){let r=this.entries.get(e);return r||(r=n().catch(t=>{throw this.entries.delete(e),t}),this.entries.set(e,r)),r}clear(){this.entries.clear()}}class M{api=b(B);objectsCache=new le;fieldsCache=new le;fieldValuesCache=new le;enumValuesCache=new le;entriesCache=new le;parametersCache=new le;membersCache=new le;formulaFunctionsCache=new le;listObjects(){return this.objectsCache.get("objects",()=>this.api.listObjects().then(e=>e??[]))}listFields(e,n="any"){return e?this.fieldsCache.get(`${e}|${n}`,()=>this.api.listFields(e,n).then(r=>r??[])):Promise.resolve([])}listFieldValues(e,n){return!e||!n?Promise.resolve([]):this.fieldValuesCache.get(`${e}|${n}`,()=>this.api.listFieldValues(e,n).catch(()=>[]))}listActionTypes(){return this.entriesCache.get("action-types",()=>this.api.listActionTypes().then(e=>e??[]))}listActions(e){return this.entriesCache.get(`actions|${e??""}`,()=>this.api.listActions(e).then(n=>n??[]))}listActionParameters(e,n){return!e||!n?Promise.resolve([]):this.parametersCache.get(`action|${e}|${n}`,()=>this.api.listActionParameters(e,n).catch(()=>[]))}listScripts(){return this.entriesCache.get("scripts",()=>this.api.listScripts().then(e=>e??[]))}listScriptParameters(e){return e?this.parametersCache.get(`script|${e}`,()=>this.api.listScriptParameters(e).catch(()=>[])):Promise.resolve([])}listForms(e){return this.entriesCache.get(`forms|${e??"Any"}`,()=>this.api.listForms(e).then(n=>n??[]))}listFormParameters(e){return e?this.parametersCache.get(`form|${e}`,()=>this.api.listFormParameters(e).catch(()=>[])):Promise.resolve([])}listFormulaFunctions(e){return this.formulaFunctionsCache.get(e??"",()=>this.api.listFormulaFunctions(e).then(n=>n??[]).catch(()=>[]))}listEnumTypes(){return this.entriesCache.get("enum-types",()=>this.api.listEnumTypes().then(e=>e??[]))}listEnumValues(e){return e?this.enumValuesCache.get(e,()=>this.api.listEnumValues(e).catch(()=>[])):Promise.resolve([])}listStructures(){return this.entriesCache.get("structures",()=>this.api.listStructures().then(e=>e??[]))}describeStructure(e){return e?this.membersCache.get(e,()=>this.api.describeStructure(e).then(n=>({label:n?.label??null,status:n?.members?.length?"declared":"undeclared",members:n?.members??[]}),n=>{if(D.is(n)&&n.category==="StructureNotFound")return{status:"unknown-class",members:[]};throw n})).catch(()=>({status:"unknown-catalog",members:[]})):Promise.resolve({status:"unknown-catalog",members:[]})}listStructureMembers(e){return this.describeStructure(e).then(n=>n.members)}listEvents(){return this.entriesCache.get("events",()=>this.api.listEvents().then(e=>e??[]))}clear(){this.objectsCache.clear(),this.fieldsCache.clear(),this.fieldValuesCache.clear(),this.enumValuesCache.clear(),this.entriesCache.clear(),this.parametersCache.clear(),this.membersCache.clear(),this.formulaFunctionsCache.clear()}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:M,deps:[],target:a.\u0275\u0275FactoryTarget.Injectable});static \u0275prov=a.\u0275\u0275ngDeclareInjectable({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:M})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:M,decorators:[{type:se}]});const ga=400;class H{api=b(B);destroyRef=b(Qe);_result=u(null,...ngDevMode?[{debugName:"_result"}]:[]);_isRunning=u(!1,...ngDevMode?[{debugName:"_isRunning"}]:[]);_lastError=u(null,...ngDevMode?[{debugName:"_lastError"}]:[]);timer;sequence=0;result=this._result.asReadonly();isRunning=this._isRunning.asReadonly();lastError=this._lastError.asReadonly();issues=s(()=>this._result()?.issues??[],...ngDevMode?[{debugName:"issues"}]:[]);errorCount=s(()=>this._result()?.errorCount??0,...ngDevMode?[{debugName:"errorCount"}]:[]);warningCount=s(()=>this._result()?.warningCount??0,...ngDevMode?[{debugName:"warningCount"}]:[]);issueCounts=s(()=>{const e={Error:0,Warning:0,Info:0};for(const n of this.issues())e[be(n.severity)]+=1;return e},...ngDevMode?[{debugName:"issueCounts"}]:[]);hasResult=s(()=>this._result()!==null,...ngDevMode?[{debugName:"hasResult"}]:[]);canActivate=s(()=>this.hasResult()&&this.errorCount()===0,...ngDevMode?[{debugName:"canActivate"}]:[]);issuesByElement=s(()=>{const e=new Map;for(const n of this.issues()){const r=n.elementName??"",t=e.get(r)??[];t.push(n),e.set(r,t)}return e},...ngDevMode?[{debugName:"issuesByElement"}]:[]);documentIssues=s(()=>this.issuesByElement().get("")??[],...ngDevMode?[{debugName:"documentIssues"}]:[]);constructor(){this.destroyRef.onDestroy(()=>this.cancel())}severityOf(e){const n=this.issuesByElement().get(e);if(!n?.length)return null;const r=new Set(n.map(t=>be(t.severity)));return dt.find(t=>r.has(t))??"Info"}issuesAt(e,n){return(this.issuesByElement().get(e??"")??[]).filter(t=>t.path?.startsWith(n))}schedule(e){this.cancel(),this.timer=setTimeout(()=>{this.timer=void 0,this.run(e)},ga)}async run(e){const n=++this.sequence;this._isRunning.set(!0),this._lastError.set(null);try{const r=await this.api.validateDefinition(e);return n!==this.sequence?null:(this._result.set(r),r)}catch(r){if(n!==this.sequence)return null;const t=D.is(r)?r.message:String(r);return this._lastError.set(t),null}finally{n===this.sequence&&this._isRunning.set(!1)}}adopt(e){e&&(this.sequence+=1,this._result.set(e),this._isRunning.set(!1))}clear(){this.cancel(),this.sequence+=1,this._result.set(null),this._lastError.set(null),this._isRunning.set(!1)}cancel(){this.timer&&(clearTimeout(this.timer),this.timer=void 0)}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:H,deps:[],target:a.\u0275\u0275FactoryTarget.Injectable});static \u0275prov=a.\u0275\u0275ngDeclareInjectable({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:H})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:H,decorators:[{type:se}],ctorParameters:()=>[]});class ce{api=b(B);_isSupported=u(!0,...ngDevMode?[{debugName:"_isSupported"}]:[]);_lastError=u(null,...ngDevMode?[{debugName:"_lastError"}]:[]);isSupported=this._isSupported.asReadonly();lastError=this._lastError.asReadonly();canValidate=s(()=>this._isSupported(),...ngDevMode?[{debugName:"canValidate"}]:[]);async validate(e){if(!this._isSupported())return null;try{const n=await this.api.validateFormula(e);return this._lastError.set(null),n}catch(n){return D.is(n)&&n.category==="MissingService"?(this._isSupported.set(!1),this._lastError.set(null),null):(this._lastError.set(D.is(n)?n.message:String(n)),null)}}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ce,deps:[],target:a.\u0275\u0275FactoryTarget.Injectable});static \u0275prov=a.\u0275\u0275ngDeclareInjectable({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ce})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ce,decorators:[{type:se}]});class ie{layout(e,n,r){const t=r?.direction??"TB",i=r?.origin??{x:60,y:60},l=new yr.graphlib.Graph({multigraph:!0,compound:!1});l.setGraph({rankdir:t,ranksep:r?.rankSeparation??90,nodesep:r?.nodeSeparation??60,marginx:0,marginy:0}),l.setDefaultEdgeLabel(()=>({}));const c=new Set;for(const m of e)l.setNode(m.name,{width:m.width,height:m.height}),c.add(m.name);for(const m of n)!m.to||!c.has(m.from)||!c.has(m.to)||m.isGoTo||l.setEdge(m.from,m.to,{weight:ie.weightOf(m)},m.id);yr.layout(l);const p=new Map;let g=Number.POSITIVE_INFINITY,f=Number.POSITIVE_INFINITY;for(const m of e){const h=l.node(m.name);if(!h||h.x===void 0||h.y===void 0)continue;const O=h.x-m.width/2,x=h.y-m.height/2;p.set(m.name,{x:O,y:x}),g=Math.min(g,O),f=Math.min(f,x)}if(Number.isFinite(g)&&Number.isFinite(f)){const m=i.x-g,h=i.y-f;for(const[O,x]of p)p.set(O,{x:Math.round(x.x+m),y:Math.round(x.y+h)})}return{positions:p}}static weightOf(e){switch(e.kind){case"Start":case"Next":case"LoopNext":return 10;case"Rule":case"WaitEvent":case"LoopEnd":case"Default":return 4;case"Fault":case"Timeout":case"ScheduledPath":return 1;default:return 3}}static isStart(e){return e===R}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ie,deps:[],target:a.\u0275\u0275FactoryTarget.Injectable});static \u0275prov=a.\u0275\u0275ngDeclareInjectable({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ie})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ie,decorators:[{type:se}]});class Q{api=b(B);documentStore=b(T);validation=b(H);_flowName=u(null,...ngDevMode?[{debugName:"_flowName"}]:[]);_version=u(null,...ngDevMode?[{debugName:"_version"}]:[]);_versions=u([],...ngDevMode?[{debugName:"_versions"}]:[]);_expectedUpdatedAt=u(void 0,...ngDevMode?[{debugName:"_expectedUpdatedAt"}]:[]);_isBusy=u(!1,...ngDevMode?[{debugName:"_isBusy"}]:[]);_lastSaveResult=u(null,...ngDevMode?[{debugName:"_lastSaveResult"}]:[]);_conflict=u(null,...ngDevMode?[{debugName:"_conflict"}]:[]);_author=u(void 0,...ngDevMode?[{debugName:"_author"}]:[]);flowName=this._flowName.asReadonly();version=this._version.asReadonly();versions=this._versions.asReadonly();isBusy=this._isBusy.asReadonly();lastSaveResult=this._lastSaveResult.asReadonly();conflict=this._conflict.asReadonly();expectedUpdatedAt=this._expectedUpdatedAt.asReadonly();isNew=s(()=>this._version()==null,...ngDevMode?[{debugName:"isNew"}]:[]);currentVersionSummary=s(()=>{const e=this._version();return e==null?void 0:this._versions().find(n=>n.version===e)},...ngDevMode?[{debugName:"currentVersionSummary"}]:[]);isEditable=s(()=>this.isNew()?!0:this.currentVersionSummary()?.isEditable??!1,...ngDevMode?[{debugName:"isEditable"}]:[]);primaryCommand=s(()=>this.isNew()?"create":this.isEditable()?"save":"newVersion",...ngDevMode?[{debugName:"primaryCommand"}]:[]);isActiveVersion=s(()=>this.currentVersionSummary()?.isActive??!1,...ngDevMode?[{debugName:"isActiveVersion"}]:[]);canActivate=s(()=>!this.isNew()&&!this.isActiveVersion()&&this.validation.canActivate(),...ngDevMode?[{debugName:"canActivate"}]:[]);setAuthor(e){this._author.set(e)}startNew(e,n,r){this.documentStore.load(cr(e,n,r)),this._flowName.set(e||null),this._version.set(null),this._versions.set([]),this._expectedUpdatedAt.set(void 0),this._lastSaveResult.set(null),this._conflict.set(null),this.validation.clear()}async open(e,n){this._isBusy.set(!0),this._conflict.set(null);try{const[r,t]=await Promise.all([this.api.loadFlow(e,n),this.api.listVersions(e).catch(()=>[])]);this.documentStore.load(r),this._flowName.set(e),this._versions.set(t);const i=n??Q.pickVersion(t);this._version.set(i??null),this._expectedUpdatedAt.set(t.find(l=>l.version===i)?.updatedAt),this._lastSaveResult.set(null),this.validation.clear(),await this.validation.run(this.documentStore.document())}finally{this._isBusy.set(!1)}}static pickVersion(e){const n=e.find(r=>r.isActive);return n?n.version:e[0]?.version}async refreshVersions(e){const n=this._flowName();if(!n)return;const r=await this.api.listVersions(n);this._versions.set(r),e?.adoptVersion&&this._version()==null&&this._version.set(Q.pickVersion(r)??null);const t=this._version();t!=null&&this._expectedUpdatedAt.set(r.find(i=>i.version===t)?.updatedAt)}async save(e){const n=this.documentStore.document(),r=e?.flowName??this._flowName()??n.fullName??"";if(!r)throw new D("InvalidRequest","Il flow non ha un nome tecnico.");this._isBusy.set(!0),this._conflict.set(null);try{const t=this.isNew()?await this.api.createFlow({definition:n,flowName:r,author:this._author()}):await this.api.saveFlow(this._flowName(),{definition:n,flowName:e?.flowName,version:this._version()??void 0,expectedUpdatedAt:this._expectedUpdatedAt(),author:this._author(),activate:e?.activate}),i=this.normalizeResult(t,{flowName:r});return this.applySaveResult(i),i}catch(t){throw D.is(t)&&t.category==="VersionConflict"&&this._conflict.set({message:t.message,conflictingAuthor:t.conflictingAuthor}),D.is(t)&&t.validation&&this.validation.adopt(t.validation),t}finally{this._isBusy.set(!1)}}normalizeResult(e,n){const r=e??{},t=r.flowName??n.flowName??this._flowName()??"",i=r.version??n.version??this._version()??void 0;return(r.flowName===void 0||r.version===void 0)&&Q.warnOnce("La risposta di una primitiva di scrittura non porta flowName/version (\xA76.2): l\u2019editor usa i valori con cui ha chiamato. Il caso piu\u2019 frequente e\u2019 una serializzazione in PascalCase invece di camelCase."),{...r,flowName:t,version:i}}static warned=new Set;static warnOnce(e){Q.warned.has(e)||(Q.warned.add(e),console.warn(`[flow-builder] ${e}`))}applySaveResult(e){this._flowName.set(e.flowName||this._flowName()),this._version.set(e.version??null),this._expectedUpdatedAt.set(e.updatedAt),this._lastSaveResult.set(e),this.documentStore.updateHeader(n=>{n.fullName=e.flowName||n.fullName,n.status=e.status??n.status},{silent:!0}),this.documentStore.markSaved(),this.validation.adopt(e.validation),this.refreshVersions({adoptVersion:!0})}async saveAs(e,n){const r=(e??"").trim();if(!r)throw new D("InvalidRequest","La copia ha bisogno di un nome tecnico.");const t=this._flowName();if(t&&t.toLowerCase()===r.toLowerCase())throw new D("InvalidRequest","La copia deve avere un nome diverso dall\u2019originale.");this._isBusy.set(!0),this._conflict.set(null);try{const i=!!t&&!this.isNew()&&!this.documentStore.isDirty();let l;if(i)try{l=this.normalizeResult(await this.api.cloneFlow(t,{targetFlowName:r,label:n?.label,fromVersion:this._version()??void 0,author:this._author()}),{flowName:r,version:1})}catch(c){if(!D.is(c)||c.category!=="MissingService")throw c;l=await this.createCopy(r,n?.label)}else l=await this.createCopy(r,n?.label);return this._versions.set([]),this._flowName.set(r),n?.label&&this.documentStore.updateHeader(c=>{c.label=n.label},{silent:!0}),this.applySaveResult(l),l}catch(i){throw D.is(i)&&i.validation&&this.validation.adopt(i.validation),i}finally{this._isBusy.set(!1)}}async createCopy(e,n){const r={...this.documentStore.document(),fullName:e};n&&(r.label=n);const t=await this.api.createFlow({definition:r,flowName:e,author:this._author()});return this.normalizeResult(t,{flowName:e,version:1})}async createNewVersion(){const e=this._flowName();if(!e)throw new D("InvalidRequest","Nessun flow aperto.");this._isBusy.set(!0);try{const n=await this.api.createVersion(e,{from:this._version()??void 0,author:this._author()}),r=this.normalizeResult(n,{flowName:e,version:null});return await this.open(e,n?.version),r}finally{this._isBusy.set(!1)}}async activate(){const e=this._flowName(),n=this._version();if(!e||n==null)throw new D("InvalidRequest","Salva il flow prima di attivarlo.");const r=await this.validation.run(this.documentStore.document());if(r&&r.errorCount>0)throw new D("ValidationFailed","La definizione contiene errori: correggili prima di attivare.",r);this._isBusy.set(!0);try{const t=this.normalizeResult(await this.api.activateVersion(e,n),{flowName:e,version:n});return this.applySaveResult(t),t}catch(t){throw D.is(t)&&t.validation&&this.validation.adopt(t.validation),t}finally{this._isBusy.set(!1)}}async deactivate(){const e=this._flowName();if(e){this._isBusy.set(!0);try{await this.api.deactivateFlow(e),await this.refreshVersions()}finally{this._isBusy.set(!1)}}}async deleteVersion(e){const n=this._flowName();if(n){this._isBusy.set(!0);try{if(await this.api.deleteVersion(n,e),await this.refreshVersions(),this._version()===e){const r=this._versions()[0]?.version;r!==void 0?await this.open(n,r):this._version.set(null)}}finally{this._isBusy.set(!1)}}}async reloadAfterConflict(){const e=this._flowName(),n=this._version();e&&(this._conflict.set(null),await this.open(e,n??void 0))}async saveAsNewVersionAfterConflict(){const e=this._flowName();if(!e)throw new D("InvalidRequest","Nessun flow aperto.");this._isBusy.set(!0),this._conflict.set(null);try{const n=await this.api.createVersion(e,{author:this._author()}),r=await this.api.saveFlow(e,{definition:this.documentStore.document(),version:n.version,expectedUpdatedAt:n.updatedAt,author:this._author()});return this.applySaveResult(r),r}finally{this._isBusy.set(!1)}}dismissConflict(){this._conflict.set(null)}get validationResult(){return this.validation.result()}get definition(){return this.documentStore.document()}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Q,deps:[],target:a.\u0275\u0275FactoryTarget.Injectable});static \u0275prov=a.\u0275\u0275ngDeclareInjectable({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Q})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Q,decorators:[{type:se}]});function dr(o){return`in:${o}`}function ur(o,e){return`out:${o}:${e}`}function Mn(o){if(!o.startsWith("out:"))return null;const e=o.slice(4),n=e.indexOf(":");return n<0?null:{nodeName:e.slice(0,n),outletKey:e.slice(n+1)}}function $n(o){return o.startsWith("in:")?o.slice(3):null}function an(o){return`node:${o}`}function Rn(o){return o.startsWith("node:")?o.slice(5):null}function pr(o){return`group:${o}`}function Fn(o){return o.startsWith("group:")?o.slice(6):null}const Tt=240,me=116,St=[240,240,240,304,380,456,520],fr={x:120,y:120},on=.6,Dt=1.25,ha=.05,va=3,ja=90,_a=St.length-1;function Ot(o){return Math.min(Math.max(o,0),_a)}function Re(o){return St[Ot(o)]}function Mt(o){return`fb-node--outlets-${Ot(o)}`}class X{store=b(T);dictionaries=b(I);validation=b(H);host=b(En);destroyRef=b(Qe);gestures=b(Kt);markerEnd=Yt.END_ALL_STATES;sides=Zt;resizeHandles=Jt;selectedName=d(null,...ngDevMode?[{debugName:"selectedName"}]:[]);selectedGroupName=d(null,...ngDevMode?[{debugName:"selectedGroupName"}]:[]);selectedNames=d([],...ngDevMode?[{debugName:"selectedNames"}]:[]);outline=d(null,...ngDevMode?[{debugName:"outline"}]:[]);isEditable=d(!0,...ngDevMode?[{debugName:"isEditable"}]:[]);selectionChange=v();nodeOpened=v();nodeRemoveRequested=v();nodeDuplicateRequested=v();groupSelected=v();groupRemoveRequested=v();elementDropped=v();canvas=ne.required(zn);_hasMovedViewport=u(!1,...ngDevMode?[{debugName:"_hasMovedViewport"}]:[]);hasMovedViewport=this._hasMovedViewport.asReadonly();_zoomPercent=u(100,...ngDevMode?[{debugName:"_zoomPercent"}]:[]);zoomPercent=this._zoomPercent.asReadonly();hasFramedOnce=!1;onNodesRendered(){this.hasFramedOnce||this.nodes().length<2||(this.hasFramedOnce=!0,this.frameFlow(!1))}bringIntoView(e){const n=this.nodes().some(t=>t.name===e)?an(e):this.groups().some(t=>t.name===e)?pr(e):null;if(!n)return;const r=this.canvas();r.getScale()<on&&(r.setScale(on),r.redraw()),r.centerGroupOrNode(n,!0,!1),this._hasMovedViewport.set(!0),this.syncZoom()}zoomIn(){this.applyScale(this.canvas().getScale()*Dt)}zoomOut(){this.applyScale(this.canvas().getScale()/Dt)}zoomToActual(){const e=this.selectedName(),n=e&&this.nodes().some(r=>r.name===e)?e:R;this.canvas().resetScaleAndCenterGroupOrNode(an(n),!0,!1),this._hasMovedViewport.set(!0),this.syncZoom()}applyScale(e){const n=Math.min(va,Math.max(ha,e));this.canvas().setScale(n),this.canvas().redraw(),this._hasMovedViewport.set(!0),this.syncZoom()}syncZoom(){this._zoomPercent.set(Math.round((this.canvas().getScale()||1)*100))}onCanvasChange(){this._hasMovedViewport.set(!0),this.syncZoom()}_isSelecting=u(!1,...ngDevMode?[{debugName:"_isSelecting"}]:[]);isSelecting=this._isSelecting.asReadonly();toggleSelectionMode(){const e=!this._isSelecting();this._isSelecting.set(e),this.gestures.setScheme(e?Xt:An)}selectionCount=s(()=>this.selectedNames().length,...ngDevMode?[{debugName:"selectionCount"}]:[]);resetViewport(){this.frameFlow(!0),this._hasMovedViewport.set(!1)}frameFlow(e){const n=this.canvas(),r=this.fittingScale();if(r>=on){n.fitToScreen(fr,e,!1),this._zoomPercent.set(Math.round(r*100));return}n.setScale(on),n.redraw(),n.centerGroupOrNode(an(R),e,!1),this._zoomPercent.set(Math.round(on*100))}fittingScale(){const e=this.nodes(),n=this.host.nativeElement;if(e.length<2||!n.clientWidth||!n.clientHeight)return 1;let r=Number.POSITIVE_INFINITY,t=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,l=Number.NEGATIVE_INFINITY;for(const g of e)r=Math.min(r,g.position.x),t=Math.min(t,g.position.y),i=Math.max(i,g.position.x+Re(g.outlets.length)),l=Math.max(l,g.position.y+me);const c=i-r,p=l-t;return c<=0||p<=0?1:Math.min(1,(n.clientWidth-fr.x*2)/c,(n.clientHeight-fr.y*2)/p)}reachability=s(()=>{const e=this.outline();if(e?.nodes?.length){const n=new Set(e.nodes.filter(t=>t.isReachable===!1).map(t=>t.name)),r=new Set(this.store.nodes().map(t=>t.name));for(const t of n)r.delete(t);return r}return this.store.reachableNames()},...ngDevMode?[{debugName:"reachability"}]:[]);nodes=s(()=>{const e=[],n=this.reachability(),r=this.store.start();e.push(this.toCanvasNode({name:R,type:"Start",node:r,label:"Start",typeLabel:"Avvio",category:"Avvio",isStart:!0,isReachable:!0,subtitle:this.startSubtitle()}));for(const t of this.store.nodes())e.push(this.toCanvasNode({name:t.name,type:t.type,node:t.node,label:t.node.label||t.name,typeLabel:this.dictionaries.labelOf(t.type),category:this.dictionaries.elementType(t.type)?.category??null,isStart:!1,isReachable:n.has(t.name),subtitle:this.subtitleOf(t.type,t.node)}));return e},...ngDevMode?[{debugName:"nodes"}]:[]);toCanvasNode(e){const n=L(e.type,e.node),r=this.validation.issuesByElement().get(e.isStart?"":e.name)??[];return{icon:Ln(e.type,e.typeLabel,Fr(e.type,e.node)),widthClass:Mt(n.length),showsOutletLabels:n.length>1,name:e.name,id:an(e.name),type:e.type,typeLabel:e.typeLabel,label:e.label,description:e.node.description??null,position:{x:e.node.locationX??0,y:e.node.locationY??0},outlets:n,isStart:e.isStart,category:e.category,isReachable:e.isReachable,severity:e.isStart?null:this.validation.severityOf(e.name),issueCount:e.isStart?0:r.length,hasAutomaticOutput:!e.isStart&&this.dictionaries.hasAutomaticOutput(e.type),subtitle:e.subtitle,danglingOutlets:n.filter(t=>{const i=t.read(e.node);return!!i&&!i.targetReference})}}edges=s(()=>{const e=new Set(this.nodes().map(n=>n.name));return this.store.edges().filter(n=>!!n.to&&e.has(n.to)).map(n=>({id:n.id,sourceId:ur(n.from,n.outletKey),targetId:dr(n.to),kind:n.kind,label:n.label,isGoTo:!!n.isGoTo}))},...ngDevMode?[{debugName:"edges"}]:[]);nodeRects=s(()=>this.store.nodes().map(e=>({name:e.name,rect:{x:e.node.locationX??0,y:e.node.locationY??0,width:Re(L(e.type,e.node).length),height:me}})),...ngDevMode?[{debugName:"nodeRects"}]:[]);rectsOf(e){const n=new Map(this.nodeRects().map(r=>[r.name,r.rect]));return(e??[]).map(r=>n.get(r)).filter(r=>!!r)}groups=s(()=>{const e=new Set(this.nodeRects().map(n=>n.name));return this.store.groups().map(n=>{const r=n.group,t=rr(r,this.rectsOf(r.members)),i=r.members??[];return{name:n.name,id:pr(n.name),label:r.label||n.name||"Riquadro",description:r.description??null,position:{x:t.x,y:t.y},size:{width:t.width,height:r.isCollapsed?Cn:t.height},colorClass:ht(r.color),isCollapsed:!!r.isCollapsed,memberCount:i.filter(l=>e.has(l)).length,unknownMembers:i.filter(l=>!e.has(l)),isAutoSized:Dn(r)}})},...ngDevMode?[{debugName:"groups"}]:[]);syncGroupMembers(e=[]){const n=this.nodeRects(),r=new Set(n.map(i=>i.name)),t=new Set(e);for(const i of this.store.groups()){const l=Dn(i.group),c=(i.group.members??[]).filter(f=>!(l&&t.has(f))),p=rr(i.group,this.rectsOf(c)),g=_t(i.group.members,vt(p,n),f=>r.has(f));this.store.setGroupMembers(i.name,g,{silent:!0})}}toggleGroupCollapsed(e,n){e.stopPropagation();const r=this.store.groups().find(t=>t.name===n);r&&this.store.updateGroup(r.index,t=>{t.isCollapsed=t.isCollapsed?void 0:!0})}onGroupClick(e,n){e.stopPropagation(),this.groupSelected.emit(n)}onGroupRemoveClick(e,n){e.stopPropagation(),this.groupRemoveRequested.emit(n)}onGroupResized(e,n){this.isEditable()&&(this.store.resizeGroup(e,n),this.syncGroupMembers())}isGroupSelected(e){return this.selectedGroupName()===e.name}subtitleOf(e,n){switch(e){case"Screen":return n.formName||null;case"RecordLookup":case"RecordCreate":case"RecordUpdate":case"RecordDelete":return n.object||n.inputReference||null;case"Loop":return n.collectionReference||null;case"CollectionProcessor":{const r=n.collectionProcessorType,t=n.collectionReference;return[r,t].filter(Boolean).join(" \xB7 ")||null}case"Decision":{const r=n.rules?.length??0;return r?`${r} ${r===1?"regola":"regole"}`:null}case"Assignment":{const r=n.assignmentItems?.length??0;return r?`${r} ${r===1?"operazione":"operazioni"}`:null}case"ActionCall":{const r=n.actionType,t=n.actionName;return[r,t].filter(Boolean).join(" \xB7 ")||null}case"ScriptCall":return n.scriptName||null;case"Subflow":return n.flowName||null;case"Wait":{const r=n.waitEvents?.length??0;return r?`${r} ${r===1?"evento":"eventi"}`:null}case"Transform":return n.objectType||null;case"OrchestratedStage":{const r=n.stageSteps?.length??0;return r?`${r} step`:null}case"CustomError":{const r=n.customErrorMessages?.length??0;return r?`${r} ${r===1?"messaggio":"messaggi"}`:null}default:return null}}startSubtitle(){const e=this.store.start(),n=e.triggerType??"None",r=I.labelIn(this.dictionaries.triggerTypes(),n);return n==="None"?r||"Su richiesta":[r,e.object].filter(Boolean).join(" \xB7 ")}_insertionEdgeId=u(null,...ngDevMode?[{debugName:"_insertionEdgeId"}]:[]);insertionEdgeId=this._insertionEdgeId.asReadonly();edgeIds=s(()=>new Set(this.edges().map(e=>e.id)),...ngDevMode?[{debugName:"edgeIds"}]:[]);pointerListener=null;onDragStarted(e){!(e.kind??e.fEventType??"").includes("external-item")||!this.isEditable()||(this.pointerListener=r=>{const t=this.edgeIdAt(r.clientX,r.clientY);t!==this._insertionEdgeId()&&this._insertionEdgeId.set(t)},this.host.nativeElement.ownerDocument.addEventListener("pointermove",this.pointerListener,{passive:!0}),this.destroyRef.onDestroy(()=>this.onDragEnded()))}onDragEnded(){this.pointerListener&&(this.host.nativeElement.ownerDocument.removeEventListener("pointermove",this.pointerListener),this.pointerListener=null),this._insertionEdgeId.set(null)}edgeIdAt(e,n){const r=this.edgeIds(),t=this.host.nativeElement.ownerDocument.elementsFromPoint(e,n);for(const i of t){const l=i.closest?.("f-connection")?.getAttribute("id");if(l&&r.has(l))return l}return null}toClientPoint(e){const n=this.host.nativeElement.querySelector("f-canvas");if(!n)return null;const r=n.getBoundingClientRect(),t=this.canvas().getScale()||1;return{x:r.left+e.x*t,y:r.top+e.y*t}}edgeById(e){const n=this.store.edges().find(r=>r.id===e);return n?.to?{from:n.from,outletKey:n.outletKey,to:n.to}:null}onCreateConnection(e){const n=Mn(e.sourceId);if(!n)return;const r=e.targetId?$n(e.targetId):null;r!==n.nodeName&&this.store.setConnector(n.nodeName,n.outletKey,r??void 0)}onReassignConnection(e){const n=Mn(e.previousSourceId);if(!n)return;if(e.endpoint==="target"){const i=e.nextTargetId?$n(e.nextTargetId):null;this.store.setConnector(n.nodeName,n.outletKey,i??void 0);return}const r=e.nextSourceId?Mn(e.nextSourceId):null,t=$n(e.previousTargetId);!r||!t||(this.store.removeConnector(n.nodeName,n.outletKey),this.store.setConnector(r.nodeName,r.outletKey,t))}onMoveNodes(e){const n=[];for(const t of e.nodes){const i=Rn(t.id);if(i){n.push({name:i,position:t.position,isGroup:!1});continue}const l=Fn(t.id);l&&n.push({name:l,position:t.position,isGroup:!0})}if(!n.length)return;n.forEach((t,i)=>{const l={silent:i>0};t.isGroup?this.store.moveGroup(t.name,t.position.x,t.position.y,l):this.store.moveNode(t.name,t.position.x,t.position.y,l)});const r=n.filter(t=>!t.isGroup).map(t=>t.name);r.length&&this.syncGroupMembers(r)}onSelectionChange(e){const n=e.nodeIds.map(t=>Rn(t)).filter(t=>!!t);this.selectionChange.emit(n);const r=e.nodeIds.map(t=>Fn(t)).filter(t=>!!t);r.length===1&&!n.length&&this.groupSelected.emit(r[0])}onDeleteSelected(e){if(this.isEditable())for(const n of e.nodeIds){const r=Rn(n);if(r&&r!==R){this.nodeRemoveRequested.emit(r);continue}const t=Fn(n);t&&this.groupRemoveRequested.emit(t)}}onCreateNode(e){const n=e.data,r=typeof n=="string"?n:n?.type,t=this._insertionEdgeId();if(this.onDragEnded(),!r)return;const i=e.dropPosition?this.toClientPoint(e.dropPosition):null,l=i?this.edgeIdAt(i.x,i.y):t;this.elementDropped.emit({type:r,variant:typeof n=="string"?void 0:n?.variant,x:Math.round(e.externalItemRect.x),y:Math.round(e.externalItemRect.y),edge:l?this.edgeById(l)??void 0:void 0})}onNodeDoubleClick(e){this.nodeOpened.emit(e)}onEditClick(e,n){e.stopPropagation(),this.nodeOpened.emit(n)}onRemoveClick(e,n){e.stopPropagation(),this.nodeRemoveRequested.emit(n)}onDuplicateClick(e,n){e.stopPropagation(),this.nodeDuplicateRequested.emit(n)}connectorIdOf(e,n){return ur(e.name,n)}targetIdOf(e){return dr(e.name)}isSelected(e){return this.selectedName()===e.name||this.selectedNames().includes(e.name)}danglingLabels(e){return e.danglingOutlets.map(n=>n.label).join(", ")}categoryClass(e){const n=(e.category??"").toLowerCase();return e.isStart?"cat-start":n.startsWith("inter")?"cat-screen":n.startsWith("log")?"cat-logic":n.startsWith("dat")?"cat-data":n.startsWith("az")?"cat-action":n.startsWith("flow")?"cat-flow":"cat-other"}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:X,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:X,isStandalone:!0,selector:"fb-flow-canvas",inputs:{selectedName:{classPropertyName:"selectedName",publicName:"selectedName",isSignal:!0,isRequired:!1,transformFunction:null},selectedGroupName:{classPropertyName:"selectedGroupName",publicName:"selectedGroupName",isSignal:!0,isRequired:!1,transformFunction:null},selectedNames:{classPropertyName:"selectedNames",publicName:"selectedNames",isSignal:!0,isRequired:!1,transformFunction:null},outline:{classPropertyName:"outline",publicName:"outline",isSignal:!0,isRequired:!1,transformFunction:null},isEditable:{classPropertyName:"isEditable",publicName:"isEditable",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{selectionChange:"selectionChange",nodeOpened:"nodeOpened",nodeRemoveRequested:"nodeRemoveRequested",nodeDuplicateRequested:"nodeDuplicateRequested",groupSelected:"groupSelected",groupRemoveRequested:"groupRemoveRequested",elementDropped:"elementDropped"},providers:[xr(kr(),wr(An))],viewQueries:[{propertyName:"canvas",first:!0,predicate:zn,descendants:!0,isSignal:!0}],ngImport:a,template:`<!--\r
|
|
2
2
|
Gerarchia obbligatoria: f-flow > f-canvas > fNode / f-connection.\r
|
|
3
3
|
I \`@for\` sono direttamente dentro <f-canvas>: nessun wrapper, quindi non serve\r
|
|
4
4
|
\`ngProjectAs\` (che sarebbe indispensabile con blocchi annidati).\r
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
(fDeleteSelected)="onDeleteSelected($event)"\r
|
|
13
13
|
(fCreateNode)="onCreateNode($event)"\r
|
|
14
14
|
(fNodesRendered)="onNodesRendered()"\r
|
|
15
|
+
(fDragStarted)="onDragStarted($event)"\r
|
|
16
|
+
(fDragEnded)="onDragEnded()"\r
|
|
15
17
|
>\r
|
|
16
18
|
<!--\r
|
|
17
19
|
\`#canvas\` + \`(fCanvasChange)\`: il primo serve per chiamare \`fitToScreen()\`, il secondo per\r
|
|
@@ -22,6 +24,103 @@
|
|
|
22
24
|
<f-background>\r
|
|
23
25
|
<f-circle-pattern />\r
|
|
24
26
|
</f-background>\r
|
|
27
|
+
\r
|
|
28
|
+
<!--\r
|
|
29
|
+
\xA73.6 \u2014 i riquadri di raggruppamento. Vanno **sotto** i node, e non c'e' niente da fare per\r
|
|
30
|
+
ottenerlo: \`[fGroup]\` viene proiettato nel layer dei gruppi, che nell'ordine della libreria\r
|
|
31
|
+
sta sotto connessioni e node.\r
|
|
32
|
+
\r
|
|
33
|
+
Sono commenti: nessun connettore, nessun arco, nessuna raggiungibilita'. Il corpo del\r
|
|
34
|
+
riquadro ha \`pointer-events: none\` (nel CSS) e solo la barra del titolo risponde: senza,\r
|
|
35
|
+
una cornice grande quanto mezzo canvas si mangerebbe i click destinati alla panoramica e\r
|
|
36
|
+
alla selezione a rettangolo, e i node dentro non si potrebbero piu' prendere.\r
|
|
37
|
+
-->\r
|
|
38
|
+
@for (group of groups(); track group.name) {\r
|
|
39
|
+
<div\r
|
|
40
|
+
fGroup\r
|
|
41
|
+
[fGroupId]="group.id"\r
|
|
42
|
+
[fGroupPosition]="group.position"\r
|
|
43
|
+
[fGroupSize]="group.size"\r
|
|
44
|
+
[fGroupDraggingDisabled]="!isEditable()"\r
|
|
45
|
+
[class]="'fb-group ' + group.colorClass"\r
|
|
46
|
+
[class.fb-group--collapsed]="group.isCollapsed"\r
|
|
47
|
+
[class.fb-group--selected]="isGroupSelected(group)"\r
|
|
48
|
+
(fGroupSizeChange)="onGroupResized(group.name, $event)"\r
|
|
49
|
+
>\r
|
|
50
|
+
<!--\r
|
|
51
|
+
\`fDragHandle\` sulla sola barra: il riquadro si sposta dal titolo, come una finestra.\r
|
|
52
|
+
Trascinandolo da dentro si sposterebbe la cornice ogni volta che si prova a prendere\r
|
|
53
|
+
un node che le sta sopra.\r
|
|
54
|
+
-->\r
|
|
55
|
+
<div\r
|
|
56
|
+
class="fb-group__bar"\r
|
|
57
|
+
fDragHandle\r
|
|
58
|
+
[title]="group.description || group.label"\r
|
|
59
|
+
(click)="onGroupClick($event, group.name)"\r
|
|
60
|
+
>\r
|
|
61
|
+
<button\r
|
|
62
|
+
type="button"\r
|
|
63
|
+
fDragBlocker\r
|
|
64
|
+
class="fb-group__fold"\r
|
|
65
|
+
[attr.aria-label]="group.isCollapsed ? 'Apri il riquadro' : 'Chiudi il riquadro'"\r
|
|
66
|
+
[title]="\r
|
|
67
|
+
group.isCollapsed\r
|
|
68
|
+
? 'Apri il riquadro'\r
|
|
69
|
+
: 'Chiudi il riquadro: resta la barra del titolo, gli elementi restano dove sono'\r
|
|
70
|
+
"\r
|
|
71
|
+
(click)="toggleGroupCollapsed($event, group.name)"\r
|
|
72
|
+
>\r
|
|
73
|
+
{{ group.isCollapsed ? '\u25B8' : '\u25BE' }}\r
|
|
74
|
+
</button>\r
|
|
75
|
+
<span class="fb-group__title">{{ group.label }}</span>\r
|
|
76
|
+
<span class="fb-group__count" [title]="group.memberCount + ' elementi nel riquadro'">\r
|
|
77
|
+
{{ group.memberCount }}\r
|
|
78
|
+
</span>\r
|
|
79
|
+
@if (group.unknownMembers.length > 0) {\r
|
|
80
|
+
<!--\r
|
|
81
|
+
Membri che nominano un elemento che non c'e' piu'. Non e' un difetto (\xA73.6): e' cio'\r
|
|
82
|
+
che resta dopo una cancellazione, ed e' un avviso \u2014 l'attivazione non si blocca.\r
|
|
83
|
+
-->\r
|
|
84
|
+
<span\r
|
|
85
|
+
class="fb-group__stale"\r
|
|
86
|
+
[title]="'Elementi non piu\u2019 esistenti: ' + group.unknownMembers.join(', ')"\r
|
|
87
|
+
>\r
|
|
88
|
+
{{ group.unknownMembers.length }} da ripulire\r
|
|
89
|
+
</span>\r
|
|
90
|
+
}\r
|
|
91
|
+
@if (isEditable()) {\r
|
|
92
|
+
<button\r
|
|
93
|
+
type="button"\r
|
|
94
|
+
fDragBlocker\r
|
|
95
|
+
class="fb-group__remove"\r
|
|
96
|
+
[attr.aria-label]="'Elimina il riquadro ' + group.label"\r
|
|
97
|
+
title="Elimina il riquadro: gli elementi che contiene restano"\r
|
|
98
|
+
(click)="onGroupRemoveClick($event, group.name)"\r
|
|
99
|
+
>\r
|
|
100
|
+
\xD7\r
|
|
101
|
+
</button>\r
|
|
102
|
+
}\r
|
|
103
|
+
</div>\r
|
|
104
|
+
\r
|
|
105
|
+
@if (!group.isCollapsed && group.description) {\r
|
|
106
|
+
<p class="fb-group__note">{{ group.description }}</p>\r
|
|
107
|
+
}\r
|
|
108
|
+
\r
|
|
109
|
+
@if (isEditable() && !group.isCollapsed) {\r
|
|
110
|
+
<!--\r
|
|
111
|
+
Una sola maniglia, in basso a destra: quattro bersagli su una cornice che sta sotto\r
|
|
112
|
+
i node si prendono per sbaglio. Ridimensionare **dichiara** la geometria, che e' il\r
|
|
113
|
+
modo di uscire dal \xABcalcolala sui membri\xBB (\xA73.6).\r
|
|
114
|
+
-->\r
|
|
115
|
+
<div\r
|
|
116
|
+
fResizeHandle\r
|
|
117
|
+
[fResizeHandleType]="resizeHandles.RIGHT_BOTTOM"\r
|
|
118
|
+
class="fb-group__resize"\r
|
|
119
|
+
title="Ridimensiona il riquadro"\r
|
|
120
|
+
></div>\r
|
|
121
|
+
}\r
|
|
122
|
+
</div>\r
|
|
123
|
+
}\r
|
|
25
124
|
\r
|
|
26
125
|
@for (edge of edges(); track edge.id) {\r
|
|
27
126
|
<f-connection\r
|
|
@@ -31,6 +130,7 @@
|
|
|
31
130
|
fBehavior="floating"\r
|
|
32
131
|
[fType]="edge.isGoTo ? 'segment' : 'bezier'"\r
|
|
33
132
|
[class]="'fb-edge fb-edge--' + edge.kind + (edge.isGoTo ? ' fb-edge--goto' : '')"\r
|
|
133
|
+
[class.fb-edge--insert]="edge.id === insertionEdgeId()"\r
|
|
34
134
|
>\r
|
|
35
135
|
<f-connection-marker-arrow [type]="markerEnd" />\r
|
|
36
136
|
@if (edge.label) {\r
|
|
@@ -213,22 +313,88 @@
|
|
|
213
313
|
un blocco di controllo e' una complicazione gratuita, e \`visibility: hidden\` lo toglie\r
|
|
214
314
|
anche dall'ordine di tabulazione. Il costo e' un bottone in piu' nel DOM, non un rischio.\r
|
|
215
315
|
-->\r
|
|
216
|
-
<
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
(click)="
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
316
|
+
<div class="fb-viewport" fDragBlocker role="group" aria-label="Vista">\r
|
|
317
|
+
<!--\r
|
|
318
|
+
Lo zoom ha bisogno di **comandi e di un numero**: con la sola rotella si finisce all'8% su\r
|
|
319
|
+
un flow grande e sembra che il canvas si sia svuotato, senza un modo evidente di tornare.\r
|
|
320
|
+
Il numero e' un bottone: riporta al 100% sull'elemento corrente.\r
|
|
321
|
+
-->\r
|
|
322
|
+
<button type="button" class="fb-btn fb-viewport__btn" title="Riduci (rotella indietro)" (click)="zoomOut()">\r
|
|
323
|
+
\u2212\r
|
|
324
|
+
</button>\r
|
|
325
|
+
<button\r
|
|
326
|
+
type="button"\r
|
|
327
|
+
class="fb-btn fb-viewport__level"\r
|
|
328
|
+
title="Torna al 100% sull\u2019elemento selezionato"\r
|
|
329
|
+
(click)="zoomToActual()"\r
|
|
330
|
+
>\r
|
|
331
|
+
{{ zoomPercent() }}%\r
|
|
332
|
+
</button>\r
|
|
333
|
+
<button type="button" class="fb-btn fb-viewport__btn" title="Ingrandisci (rotella avanti)" (click)="zoomIn()">\r
|
|
334
|
+
+\r
|
|
335
|
+
</button>\r
|
|
336
|
+
<!--\r
|
|
337
|
+
La modalita\u2019 selezione. Esiste perche\u2019 i due gesti che la libreria offre di serie \u2014\r
|
|
338
|
+
\`Ctrl\`+clic per aggiungere, \`Shift\`+trascina per il rettangolo \u2014 non si vedono: senza un\r
|
|
339
|
+
interruttore, su un flow grande si finisce a spostare un elemento alla volta. Accesa, il\r
|
|
340
|
+
trascinamento sul canvas vuoto **seleziona** e la vista si sposta col tasto centrale.\r
|
|
341
|
+
-->\r
|
|
342
|
+
<button\r
|
|
343
|
+
type="button"\r
|
|
344
|
+
class="fb-btn fb-viewport__select"\r
|
|
345
|
+
[class.fb-viewport__select--on]="isSelecting()"\r
|
|
346
|
+
[attr.aria-pressed]="isSelecting()"\r
|
|
347
|
+
[title]="\r
|
|
348
|
+
isSelecting()\r
|
|
349
|
+
? 'Modalita\u2019 selezione attiva: trascina sul canvas per selezionare piu\u2019 elementi. La vista si sposta col tasto centrale del mouse'\r
|
|
350
|
+
: 'Attiva la selezione a rettangolo: trascinando sul canvas selezioni piu\u2019 elementi invece di spostare la vista (Shift+trascina fa lo stesso, sempre)'\r
|
|
351
|
+
"\r
|
|
352
|
+
(click)="toggleSelectionMode()"\r
|
|
353
|
+
>\r
|
|
354
|
+
<span class="fb-viewport__icon" aria-hidden="true">\u25A4</span>\r
|
|
355
|
+
Seleziona\r
|
|
356
|
+
</button>\r
|
|
357
|
+
<!--\r
|
|
358
|
+
Sempre nel DOM, nascosto con una classe e non con \`@if\`: dentro una proiezione di contenuto\r
|
|
359
|
+
un blocco di controllo e' una complicazione gratuita, e \`visibility: hidden\` lo toglie\r
|
|
360
|
+
anche dall'ordine di tabulazione. Il costo e' un bottone in piu' nel DOM, non un rischio.\r
|
|
361
|
+
-->\r
|
|
362
|
+
<button\r
|
|
363
|
+
type="button"\r
|
|
364
|
+
class="fb-btn fb-viewport__fit"\r
|
|
365
|
+
[class.fb-viewport__fit--hidden]="!hasMovedViewport()"\r
|
|
366
|
+
title="Rimetti il flow in vista. Su un flow molto grande inquadra l\u2019inizio, perche\u2019 l\u2019intero non sarebbe leggibile"\r
|
|
367
|
+
(click)="resetViewport()"\r
|
|
368
|
+
>\r
|
|
369
|
+
<span class="fb-viewport__icon" aria-hidden="true">\u2922</span>\r
|
|
370
|
+
Inquadra\r
|
|
371
|
+
</button>\r
|
|
372
|
+
</div>\r
|
|
373
|
+
\r
|
|
374
|
+
@if (selectionCount() > 1) {\r
|
|
375
|
+
<!--\r
|
|
376
|
+
Il dato che rende utile la selezione: che si spostano **insieme**. Senza dirlo, dopo aver\r
|
|
377
|
+
selezionato cinque elementi si continua a trascinarne uno per volta.\r
|
|
378
|
+
-->\r
|
|
379
|
+
<p class="fb-select-hint" role="status">\r
|
|
380
|
+
{{ selectionCount() }} elementi selezionati: trascinane uno per spostarli tutti \xB7 Ctrl+clic\r
|
|
381
|
+
aggiunge o toglie \xB7 Canc li elimina\r
|
|
382
|
+
</p>\r
|
|
383
|
+
} @else if (isSelecting()) {\r
|
|
384
|
+
<p class="fb-select-hint" role="status">\r
|
|
385
|
+
Trascina sul canvas per selezionare \xB7 la vista si sposta col tasto centrale\r
|
|
386
|
+
</p>\r
|
|
387
|
+
}\r
|
|
388
|
+
\r
|
|
389
|
+
@if (insertionEdgeId()) {\r
|
|
390
|
+
<!-- Il rilascio su un arco non e' un gesto che si indovina: mentre e' possibile, si dice. -->\r
|
|
391
|
+
<p class="fb-insert-hint" role="status">Rilascia qui per inserire l\u2019elemento in questo percorso</p>\r
|
|
392
|
+
}\r
|
|
227
393
|
\r
|
|
228
394
|
<f-minimap [fMinSize]="1200" class="fb-minimap" />\r
|
|
229
395
|
</f-flow>\r
|
|
230
|
-
`,styles:[`:host{display:block;position:relative;width:100%;height:100%;overflow:hidden;background:var(--fb-canvas-bg, #f4f5f7)}f-flow{display:block;width:100%;height:100%}.fb-minimap{position:absolute;right:14px;bottom:14px;width:190px;height:130px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius, 10px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 10%));overflow:hidden}.fb-viewport-reset{position:absolute;right:14px;bottom:152px;z-index:1;border-radius:var(--fb-radius-xs, 6px);box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 10%));font-size:11px;transition:opacity .15s ease,visibility .15s ease}.fb-viewport-reset--hidden{opacity:0;visibility:hidden}.fb-viewport-reset__icon{font-size:13px;line-height:1;color:var(--fb-text-muted, #667085)}.fb-node{position:absolute;display:flex;flex-direction:column;box-sizing:border-box;width:240px;padding:0;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-lg, 12px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-sm, 0 1px 2px rgb(16 24 40 / 6%));font:inherit;cursor:grab;-webkit-user-select:none;user-select:none;transition:box-shadow .12s ease,border-color .12s ease}.fb-node--outlets-3{width:304px}.fb-node--outlets-4{width:380px}.fb-node--outlets-5{width:456px}.fb-node--outlets-6{width:520px}.fb-node:hover{box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 10%))}.fb-node--selected{border-color:var(--fb-accent, #4f6ef7);box-shadow:0 0 0 3px color-mix(in srgb,var(--fb-accent, #4f6ef7) 22%,transparent)}.fb-node--unreachable{border-style:dashed;opacity:.8}.fb-node--error{border-color:var(--fb-error, #c9372c)}.fb-node--warning{border-color:var(--fb-warning, #b7791f)}.fb-node__head{display:flex;align-items:center;gap:8px;padding:10px 10px 6px 12px}.fb-node__icon{display:grid;place-items:center;flex:0 0 auto;width:28px;height:28px;border-radius:var(--fb-radius-sm, 8px);background:var(--fb-node-accent, #667085);color:#fff;font-size:14px;line-height:1}.cat-start{--fb-node-accent: #22a06b}.cat-screen{--fb-node-accent: #3b82f6}.cat-logic{--fb-node-accent: #8b5cf6}.cat-data{--fb-node-accent: #06b6d4}.cat-action{--fb-node-accent: #f59e0b}.cat-flow{--fb-node-accent: #14b8a6}.cat-other{--fb-node-accent: #667085}.fb-node__text{flex:1;min-width:0}.fb-node__title{display:block;font-size:13px;font-weight:600;line-height:17px;color:var(--fb-text, #1a1c23);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-node__sub{display:block;margin-top:1px;font-size:11px;line-height:14px;color:var(--fb-text-muted, #6b7086);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-node__sub-dot{margin:0 4px;color:var(--fb-text-subtle, #98a2b3)}.fb-node__auto{flex:0 0 auto;font-size:12px;font-weight:700;color:var(--fb-accent, #4f6ef7);cursor:help}.fb-node__edit{display:grid;place-items:center;flex:0 0 auto;width:22px;height:22px;padding:0;border:0;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:var(--fb-text-subtle, #98a2b3);font:inherit;font-size:12px;cursor:pointer;opacity:0;transition:opacity .12s ease,background .12s ease}.fb-node:hover .fb-node__edit,.fb-node--selected .fb-node__edit,.fb-node__edit:focus-visible{opacity:1}.fb-node__edit:hover{background:var(--fb-surface-alt, #f7f8fa);color:var(--fb-text, #1a1c23)}.fb-node__duplicate,.fb-node__remove{display:grid;place-items:center;flex:0 0 auto;width:22px;height:22px;padding:0;border:0;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:var(--fb-text-subtle, #98a2b3);font:inherit;font-size:15px;line-height:1;cursor:pointer;opacity:0;transition:opacity .12s ease,background .12s ease,color .12s ease}.fb-node--selected .fb-node__duplicate,.fb-node--selected .fb-node__remove,.fb-node__duplicate:focus-visible,.fb-node__remove:focus-visible{opacity:1}.fb-node__remove:hover{background:color-mix(in srgb,var(--fb-error, #c9372c) 12%,transparent);color:var(--fb-error, #c9372c)}.fb-node__duplicate:hover{background:color-mix(in srgb,var(--fb-accent, #3b6ef2) 12%,transparent);color:var(--fb-accent, #3b6ef2)}.fb-node__meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-height:14px;padding:0 12px 6px}.fb-node__name{flex:0 1 auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;color:var(--fb-text-subtle, #98a2b3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-badge{padding:1px 6px;border-radius:10px;background:var(--fb-badge-bg, #eef0f4);font-size:10px;font-weight:600;color:var(--fb-text-muted, #6b7086);white-space:nowrap;cursor:help}.fb-badge--error{background:color-mix(in srgb,var(--fb-error, #c9372c) 14%,transparent);color:var(--fb-error, #c9372c)}.fb-badge--warning{background:color-mix(in srgb,var(--fb-warning, #b7791f) 16%,transparent);color:var(--fb-warning, #b7791f)}.fb-badge--info{background:color-mix(in srgb,var(--fb-accent, #4f6ef7) 12%,transparent);color:var(--fb-accent, #4f6ef7)}.fb-badge--unreachable,.fb-badge--dangling{background:color-mix(in srgb,var(--fb-warning, #b7791f) 12%,transparent);color:var(--fb-warning, #b7791f)}.fb-node__outlets{display:flex;align-items:flex-end;justify-content:space-evenly;gap:4px;padding:0 8px 4px}.fb-node__outlets--labelled{padding-top:5px;border-top:1px solid var(--fb-border-subtle, #eef0f4)}.fb-outlet{display:flex;flex:1 1 0;flex-direction:column;align-items:center;gap:2px;min-width:0}.fb-outlet__label{max-width:100%;font-size:10px;line-height:13px;color:var(--fb-text-muted, #6b7086);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-connector{box-sizing:border-box;width:12px;height:12px;flex:0 0 auto;border:2px solid var(--fb-surface, #fff);border-radius:50%;background:var(--fb-connector, #98a2b3);cursor:crosshair;transition:transform .12s ease,box-shadow .12s ease}f-flow .fb-connector--out{position:relative;inset:auto;margin-bottom:-12px}.fb-connector--out:hover{transform:scale(1.2)}f-flow .fb-connector--in{position:absolute;inset:-2px auto auto 50%;width:24px;height:4px;border:0;border-radius:2px;transform:translate(-50%);background:var(--fb-border-strong, #cfd4de)}.fb-connector--out{--ff-connector-connected-color: var(--fb-connector, #98a2b3)}.fb-connector--Next,.fb-connector--Start,.fb-connector--LoopNext{--fb-connector: var(--fb-edge-next, #98a2b3)}.fb-connector--Rule,.fb-connector--WaitEvent{--fb-connector: var(--fb-edge-rule, #8b5cf6)}.fb-connector--Default,.fb-connector--LoopEnd{--fb-connector: var(--fb-edge-default, #06b6d4)}.fb-connector--Fault{--fb-connector: var(--fb-edge-fault, #dc2626)}.fb-connector--Timeout,.fb-connector--ScheduledPath{--fb-connector: var(--fb-edge-timeout, #f59e0b)}.fb-connector.f-connector-connectable{box-shadow:0 0 0 4px color-mix(in srgb,var(--fb-accent, #4f6ef7) 28%,transparent)}
|
|
231
|
-
`],dependencies:[{kind:"ngmodule",type:
|
|
396
|
+
`,styles:[`:host{display:block;position:relative;width:100%;height:100%;overflow:hidden;background:var(--fb-canvas-bg, #f4f5f7)}f-flow{display:block;width:100%;height:100%}.fb-minimap{position:absolute;right:14px;bottom:14px;width:150px;height:300px;max-height:40%;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius, 10px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 10%));overflow:hidden}.fb-viewport{position:absolute;right:14px;bottom:322px;z-index:1;display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end;max-width:200px}.fb-viewport__btn,.fb-viewport__level,.fb-viewport__fit{border-radius:var(--fb-radius-xs, 6px);box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 10%));font-size:11px}.fb-viewport__btn{width:24px;padding:2px 0;font-size:14px;line-height:1}.fb-viewport__level{min-width:52px;font-variant-numeric:tabular-nums}.fb-viewport__fit--hidden{opacity:0;visibility:hidden}.fb-viewport__fit{transition:opacity .15s ease,visibility .15s ease}.fb-viewport__icon{font-size:13px;line-height:1;color:var(--fb-text-muted, #667085)}.fb-insert-hint{position:absolute;bottom:18px;left:50%;transform:translate(-50%);z-index:1;margin:0;padding:6px 12px;border-radius:999px;background:var(--fb-accent, #2f6feb);box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 10%));color:#fff;font-size:11px;font-weight:600;pointer-events:none}.fb-select-hint{position:absolute;bottom:18px;left:50%;transform:translate(-50%);z-index:1;margin:0;padding:6px 12px;border-radius:999px;border:1px solid var(--fb-border, #e2e5eb);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 10%));color:var(--fb-text-muted, #667085);font-size:11px;font-weight:600;pointer-events:none}.fb-viewport__select{border-radius:var(--fb-radius-xs, 6px);box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 10%));font-size:11px}.fb-viewport__select--on{border-color:var(--fb-accent, #2f6feb);background:var(--fb-accent, #2f6feb);color:#fff}.fb-node{position:absolute;display:flex;flex-direction:column;box-sizing:border-box;width:240px;padding:0;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-lg, 12px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-sm, 0 1px 2px rgb(16 24 40 / 6%));font:inherit;cursor:grab;-webkit-user-select:none;user-select:none;transition:box-shadow .12s ease,border-color .12s ease}.fb-node--outlets-3{width:304px}.fb-node--outlets-4{width:380px}.fb-node--outlets-5{width:456px}.fb-node--outlets-6{width:520px}.fb-node:hover{box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 10%))}.fb-node--selected{border-color:var(--fb-accent, #4f6ef7);box-shadow:0 0 0 3px color-mix(in srgb,var(--fb-accent, #4f6ef7) 22%,transparent)}.fb-node--unreachable{border-style:dashed;opacity:.8}.fb-node--error{border-color:var(--fb-error, #c9372c)}.fb-node--warning{border-color:var(--fb-warning, #b7791f)}.fb-node__head{display:flex;align-items:center;gap:8px;padding:10px 10px 6px 12px}.fb-node__icon{display:grid;place-items:center;flex:0 0 auto;width:28px;height:28px;border-radius:var(--fb-radius-sm, 8px);background:var(--fb-node-accent, #667085);color:#fff;font-size:14px;line-height:1}.cat-start{--fb-node-accent: #22a06b}.cat-screen{--fb-node-accent: #3b82f6}.cat-logic{--fb-node-accent: #8b5cf6}.cat-data{--fb-node-accent: #06b6d4}.cat-action{--fb-node-accent: #f59e0b}.cat-flow{--fb-node-accent: #14b8a6}.cat-other{--fb-node-accent: #667085}.fb-node__text{flex:1;min-width:0}.fb-node__title{display:block;font-size:13px;font-weight:600;line-height:17px;color:var(--fb-text, #1a1c23);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-node__sub{display:block;margin-top:1px;font-size:11px;line-height:14px;color:var(--fb-text-muted, #6b7086);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-node__sub-dot{margin:0 4px;color:var(--fb-text-subtle, #98a2b3)}.fb-node__auto{flex:0 0 auto;font-size:12px;font-weight:700;color:var(--fb-accent, #4f6ef7);cursor:help}.fb-node__edit{display:grid;place-items:center;flex:0 0 auto;width:22px;height:22px;padding:0;border:0;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:var(--fb-text-subtle, #98a2b3);font:inherit;font-size:12px;cursor:pointer;opacity:0;transition:opacity .12s ease,background .12s ease}.fb-node:hover .fb-node__edit,.fb-node--selected .fb-node__edit,.fb-node__edit:focus-visible{opacity:1}.fb-node__edit:hover{background:var(--fb-surface-alt, #f7f8fa);color:var(--fb-text, #1a1c23)}.fb-node__duplicate,.fb-node__remove{display:grid;place-items:center;flex:0 0 auto;width:22px;height:22px;padding:0;border:0;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:var(--fb-text-subtle, #98a2b3);font:inherit;font-size:15px;line-height:1;cursor:pointer;opacity:0;transition:opacity .12s ease,background .12s ease,color .12s ease}.fb-node--selected .fb-node__duplicate,.fb-node--selected .fb-node__remove,.fb-node__duplicate:focus-visible,.fb-node__remove:focus-visible{opacity:1}.fb-node__remove:hover{background:color-mix(in srgb,var(--fb-error, #c9372c) 12%,transparent);color:var(--fb-error, #c9372c)}.fb-node__duplicate:hover{background:color-mix(in srgb,var(--fb-accent, #3b6ef2) 12%,transparent);color:var(--fb-accent, #3b6ef2)}.fb-node__meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-height:14px;padding:0 12px 6px}.fb-node__name{flex:0 1 auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;color:var(--fb-text-subtle, #98a2b3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-badge{padding:1px 6px;border-radius:10px;background:var(--fb-badge-bg, #eef0f4);font-size:10px;font-weight:600;color:var(--fb-text-muted, #6b7086);white-space:nowrap;cursor:help}.fb-badge--error{background:color-mix(in srgb,var(--fb-error, #c9372c) 14%,transparent);color:var(--fb-error, #c9372c)}.fb-badge--warning{background:color-mix(in srgb,var(--fb-warning, #b7791f) 16%,transparent);color:var(--fb-warning, #b7791f)}.fb-badge--info{background:color-mix(in srgb,var(--fb-accent, #4f6ef7) 12%,transparent);color:var(--fb-accent, #4f6ef7)}.fb-badge--unreachable,.fb-badge--dangling{background:color-mix(in srgb,var(--fb-warning, #b7791f) 12%,transparent);color:var(--fb-warning, #b7791f)}.fb-node__outlets{display:flex;align-items:flex-end;justify-content:space-evenly;gap:4px;padding:0 8px 4px}.fb-node__outlets--labelled{padding-top:5px;border-top:1px solid var(--fb-border-subtle, #eef0f4)}.fb-outlet{display:flex;flex:1 1 0;flex-direction:column;align-items:center;gap:2px;min-width:0}.fb-outlet__label{max-width:100%;font-size:10px;line-height:13px;color:var(--fb-text-muted, #6b7086);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-connector{box-sizing:border-box;width:12px;height:12px;flex:0 0 auto;border:2px solid var(--fb-surface, #fff);border-radius:50%;background:var(--fb-connector, #98a2b3);cursor:crosshair;transition:transform .12s ease,box-shadow .12s ease}f-flow .fb-connector--out{position:relative;inset:auto;margin-bottom:-12px}.fb-connector--out:hover{transform:scale(1.2)}f-flow .fb-connector--in{position:absolute;inset:-2px auto auto 50%;width:24px;height:4px;border:0;border-radius:2px;transform:translate(-50%);background:var(--fb-border-strong, #cfd4de)}.fb-connector--out{--ff-connector-connected-color: var(--fb-connector, #98a2b3)}.fb-connector--Next,.fb-connector--Start,.fb-connector--LoopNext{--fb-connector: var(--fb-edge-next, #98a2b3)}.fb-connector--Rule,.fb-connector--WaitEvent{--fb-connector: var(--fb-edge-rule, #8b5cf6)}.fb-connector--Default,.fb-connector--LoopEnd{--fb-connector: var(--fb-edge-default, #06b6d4)}.fb-connector--Fault{--fb-connector: var(--fb-edge-fault, #dc2626)}.fb-connector--Timeout,.fb-connector--ScheduledPath{--fb-connector: var(--fb-edge-timeout, #f59e0b)}.fb-connector.f-connector-connectable{box-shadow:0 0 0 4px color-mix(in srgb,var(--fb-accent, #4f6ef7) 28%,transparent)}.fb-group{position:absolute;box-sizing:border-box;border:1px solid var(--fb-group-border, #d6dae1);border-radius:var(--fb-radius, 10px);background:var(--fb-group-fill, rgb(148 163 184 / 10%));pointer-events:none;overflow:hidden}.fb-group--selected{border-color:var(--fb-accent, #2f6feb);box-shadow:0 0 0 2px color-mix(in srgb,var(--fb-accent, #2f6feb) 25%,transparent)}.fb-group__bar{display:flex;align-items:center;gap:6px;height:30px;padding:0 6px;border-bottom:1px solid var(--fb-group-border, #d6dae1);background:var(--fb-group-bar, rgb(148 163 184 / 22%));color:var(--fb-text, #1d2939);font-size:12px;font-weight:600;pointer-events:auto;cursor:move;-webkit-user-select:none;user-select:none}.fb-group--collapsed .fb-group__bar{border-bottom:none}.fb-group__fold,.fb-group__remove{flex:none;width:18px;height:18px;padding:0;border:none;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:inherit;font:inherit;font-size:12px;line-height:1;cursor:pointer}.fb-group__fold:hover,.fb-group__remove:hover{background:#10182814}.fb-group__remove{margin-left:auto;font-size:14px}.fb-group__title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.fb-group__count{flex:none;padding:0 5px;border-radius:8px;background:#10182814;font-size:10px;font-weight:600;font-variant-numeric:tabular-nums}.fb-group__stale{flex:none;padding:0 5px;border-radius:8px;background:color-mix(in srgb,var(--fb-warning, #b7791f) 14%,transparent);color:var(--fb-warning, #b7791f);font-size:10px;font-weight:600}.fb-group__note{margin:6px 8px 0;color:var(--fb-text-muted, #667085);font-size:11px;line-height:1.35;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.fb-group__resize{position:absolute;right:0;bottom:0;width:14px;height:14px;border-right:2px solid var(--fb-group-border, #d6dae1);border-bottom:2px solid var(--fb-group-border, #d6dae1);border-bottom-right-radius:var(--fb-radius, 10px);pointer-events:auto;cursor:nwse-resize}.fb-group--giallo{--fb-group-border: #e0c26a;--fb-group-fill: rgb(234 179 8 / 10%);--fb-group-bar: rgb(234 179 8 / 24%)}.fb-group--verde{--fb-group-border: #86c79b;--fb-group-fill: rgb(34 160 89 / 10%);--fb-group-bar: rgb(34 160 89 / 22%)}.fb-group--blu{--fb-group-border: #93b4ea;--fb-group-fill: rgb(47 111 235 / 9%);--fb-group-bar: rgb(47 111 235 / 20%)}.fb-group--viola{--fb-group-border: #bda6e6;--fb-group-fill: rgb(139 92 246 / 10%);--fb-group-bar: rgb(139 92 246 / 22%)}.fb-group--rosso{--fb-group-border: #e6a3a3;--fb-group-fill: rgb(214 69 69 / 9%);--fb-group-bar: rgb(214 69 69 / 20%)}.fb-group--grigio,.fb-group--neutro{--fb-group-border: #d6dae1;--fb-group-fill: rgb(148 163 184 / 10%);--fb-group-bar: rgb(148 163 184 / 22%)}
|
|
397
|
+
`],dependencies:[{kind:"ngmodule",type:un},{kind:"component",type:A.FFlowComponent,selector:"f-flow",inputs:["fFlowId","fCache"],outputs:["fNodesRendered","fFullRendered","fLoaded"]},{kind:"component",type:A.FCanvasComponent,selector:"f-canvas",inputs:["position","scale","debounceTime","fLayers"],outputs:["fCanvasChange"]},{kind:"component",type:A.FBackgroundComponent,selector:"f-background"},{kind:"component",type:A.FCirclePatternComponent,selector:"f-circle-pattern",inputs:["id","color","radius"]},{kind:"directive",type:A.FZoomDirective,selector:"f-canvas[fZoom]",inputs:["fZoom","fWheelTrigger","fDblClickTrigger","fZoomMinimum","fZoomMaximum","fZoomStep","fPinchStep","fZoomDblClickStep"]},{kind:"component",type:A.FSelectionArea,selector:"f-selection-area",inputs:["fTrigger"]},{kind:"directive",type:A.FConnectionContent,selector:"[fConnectionContent]",inputs:["position","offset","align"]},{kind:"component",type:A.FConnectionMarkerArrow,selector:"f-connection-marker-arrow",inputs:["type"]},{kind:"component",type:A.FConnectionComponent,selector:"f-connection",inputs:["fConnectionId","fSourceId","fTargetId","fOutputId","fInputId","fRadius","fOffset","fBehavior","fType","fSelectionDisabled","fReassignableStart","fReassignDisabled","fSourceSide","fTargetSide","fInputSide","fOutputSide"],exportAs:["fComponent"]},{kind:"component",type:A.FConnectionForCreateComponent,selector:"f-connection-for-create",inputs:["fRadius","fOffset","fBehavior","fType","fInputSide","fOutputSide"]},{kind:"directive",type:A.FConnectorDirective,selector:"[fConnector]",inputs:["fConnectorId","fConnectorType","fConnectorDisabled","fConnectorMultiple","fConnectorCategory","fConnectorConnectableSide","fConnectorSelfConnectable","fCanBeConnectedTo","fConnectionFromOutlet"],exportAs:["fConnector"]},{kind:"component",type:A.FMinimapComponent,selector:"f-minimap",inputs:["fMinSize","fNodeRenderLimit"],exportAs:["fComponent"]},{kind:"directive",type:A.FGroupDirective,selector:"[fGroup]",inputs:["fGroupId","fGroupParentId","fGroupPosition","fGroupSize","fGroupRotate","fConnectOnNode","fMinimapClass","fGroupDraggingDisabled","fGroupSelectionDisabled","fIncludePadding","fAutoExpandOnChildHit","fAutoSizeToFitChildren"],outputs:["fGroupPositionChange","fGroupSizeChange","fGroupRotateChange"],exportAs:["fComponent"]},{kind:"directive",type:A.FNodeDirective,selector:"[fNode]",inputs:["fNodeId","fNodeParentId","fNodePosition","fNodeSize","fNodeRotate","fConnectOnNode","fMinimapClass","fNodeDraggingDisabled","fNodeSelectionDisabled","fIncludePadding","fAutoExpandOnChildHit","fAutoSizeToFitChildren"],outputs:["fNodePositionChange","fNodeSizeChange","fNodeRotateChange"],exportAs:["fComponent"]},{kind:"directive",type:A.FDragHandleDirective,selector:"[fDragHandle]"},{kind:"directive",type:A.FResizeHandleDirective,selector:"[fResizeHandle]",inputs:["fResizeHandleType"]},{kind:"directive",type:A.FDragBlockerDirective,selector:"[fDragBlocker]"},{kind:"directive",type:A.FDraggableDirective,selector:"f-flow[fDraggable]",inputs:["fDraggableDisabled","fDropToGroup","fMultiSelectTrigger","fReassignConnectionTrigger","fCreateConnectionTrigger","fConnectionWaypointsTrigger","fMoveControlPointTrigger","fNodeResizeTrigger","fNodeRotateTrigger","fNodeMoveTrigger","fCanvasMoveTrigger","fExternalItemTrigger","fEmitOnNodeIntersect","vCellSize","hCellSize","fCellSizeWhileDragging"],outputs:["fSelectionChange","fDeleteSelected","fNodeIntersectedWithConnections","fNodeConnectionsIntersection","fCreateNode","fMoveNodes","fReassignConnection","fCreateConnection","fConnectionWaypointsChanged","fDropToGroup","fDragStarted","fDragEnded"],exportAs:["fDraggable"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:X,decorators:[{type:y,args:[{selector:"fb-flow-canvas",standalone:!0,imports:[un],changeDetection:_.OnPush,providers:[xr(kr(),wr(An))],template:`<!--\r
|
|
232
398
|
Gerarchia obbligatoria: f-flow > f-canvas > fNode / f-connection.\r
|
|
233
399
|
I \`@for\` sono direttamente dentro <f-canvas>: nessun wrapper, quindi non serve\r
|
|
234
400
|
\`ngProjectAs\` (che sarebbe indispensabile con blocchi annidati).\r
|
|
@@ -242,6 +408,8 @@
|
|
|
242
408
|
(fDeleteSelected)="onDeleteSelected($event)"\r
|
|
243
409
|
(fCreateNode)="onCreateNode($event)"\r
|
|
244
410
|
(fNodesRendered)="onNodesRendered()"\r
|
|
411
|
+
(fDragStarted)="onDragStarted($event)"\r
|
|
412
|
+
(fDragEnded)="onDragEnded()"\r
|
|
245
413
|
>\r
|
|
246
414
|
<!--\r
|
|
247
415
|
\`#canvas\` + \`(fCanvasChange)\`: il primo serve per chiamare \`fitToScreen()\`, il secondo per\r
|
|
@@ -252,6 +420,103 @@
|
|
|
252
420
|
<f-background>\r
|
|
253
421
|
<f-circle-pattern />\r
|
|
254
422
|
</f-background>\r
|
|
423
|
+
\r
|
|
424
|
+
<!--\r
|
|
425
|
+
\xA73.6 \u2014 i riquadri di raggruppamento. Vanno **sotto** i node, e non c'e' niente da fare per\r
|
|
426
|
+
ottenerlo: \`[fGroup]\` viene proiettato nel layer dei gruppi, che nell'ordine della libreria\r
|
|
427
|
+
sta sotto connessioni e node.\r
|
|
428
|
+
\r
|
|
429
|
+
Sono commenti: nessun connettore, nessun arco, nessuna raggiungibilita'. Il corpo del\r
|
|
430
|
+
riquadro ha \`pointer-events: none\` (nel CSS) e solo la barra del titolo risponde: senza,\r
|
|
431
|
+
una cornice grande quanto mezzo canvas si mangerebbe i click destinati alla panoramica e\r
|
|
432
|
+
alla selezione a rettangolo, e i node dentro non si potrebbero piu' prendere.\r
|
|
433
|
+
-->\r
|
|
434
|
+
@for (group of groups(); track group.name) {\r
|
|
435
|
+
<div\r
|
|
436
|
+
fGroup\r
|
|
437
|
+
[fGroupId]="group.id"\r
|
|
438
|
+
[fGroupPosition]="group.position"\r
|
|
439
|
+
[fGroupSize]="group.size"\r
|
|
440
|
+
[fGroupDraggingDisabled]="!isEditable()"\r
|
|
441
|
+
[class]="'fb-group ' + group.colorClass"\r
|
|
442
|
+
[class.fb-group--collapsed]="group.isCollapsed"\r
|
|
443
|
+
[class.fb-group--selected]="isGroupSelected(group)"\r
|
|
444
|
+
(fGroupSizeChange)="onGroupResized(group.name, $event)"\r
|
|
445
|
+
>\r
|
|
446
|
+
<!--\r
|
|
447
|
+
\`fDragHandle\` sulla sola barra: il riquadro si sposta dal titolo, come una finestra.\r
|
|
448
|
+
Trascinandolo da dentro si sposterebbe la cornice ogni volta che si prova a prendere\r
|
|
449
|
+
un node che le sta sopra.\r
|
|
450
|
+
-->\r
|
|
451
|
+
<div\r
|
|
452
|
+
class="fb-group__bar"\r
|
|
453
|
+
fDragHandle\r
|
|
454
|
+
[title]="group.description || group.label"\r
|
|
455
|
+
(click)="onGroupClick($event, group.name)"\r
|
|
456
|
+
>\r
|
|
457
|
+
<button\r
|
|
458
|
+
type="button"\r
|
|
459
|
+
fDragBlocker\r
|
|
460
|
+
class="fb-group__fold"\r
|
|
461
|
+
[attr.aria-label]="group.isCollapsed ? 'Apri il riquadro' : 'Chiudi il riquadro'"\r
|
|
462
|
+
[title]="\r
|
|
463
|
+
group.isCollapsed\r
|
|
464
|
+
? 'Apri il riquadro'\r
|
|
465
|
+
: 'Chiudi il riquadro: resta la barra del titolo, gli elementi restano dove sono'\r
|
|
466
|
+
"\r
|
|
467
|
+
(click)="toggleGroupCollapsed($event, group.name)"\r
|
|
468
|
+
>\r
|
|
469
|
+
{{ group.isCollapsed ? '\u25B8' : '\u25BE' }}\r
|
|
470
|
+
</button>\r
|
|
471
|
+
<span class="fb-group__title">{{ group.label }}</span>\r
|
|
472
|
+
<span class="fb-group__count" [title]="group.memberCount + ' elementi nel riquadro'">\r
|
|
473
|
+
{{ group.memberCount }}\r
|
|
474
|
+
</span>\r
|
|
475
|
+
@if (group.unknownMembers.length > 0) {\r
|
|
476
|
+
<!--\r
|
|
477
|
+
Membri che nominano un elemento che non c'e' piu'. Non e' un difetto (\xA73.6): e' cio'\r
|
|
478
|
+
che resta dopo una cancellazione, ed e' un avviso \u2014 l'attivazione non si blocca.\r
|
|
479
|
+
-->\r
|
|
480
|
+
<span\r
|
|
481
|
+
class="fb-group__stale"\r
|
|
482
|
+
[title]="'Elementi non piu\u2019 esistenti: ' + group.unknownMembers.join(', ')"\r
|
|
483
|
+
>\r
|
|
484
|
+
{{ group.unknownMembers.length }} da ripulire\r
|
|
485
|
+
</span>\r
|
|
486
|
+
}\r
|
|
487
|
+
@if (isEditable()) {\r
|
|
488
|
+
<button\r
|
|
489
|
+
type="button"\r
|
|
490
|
+
fDragBlocker\r
|
|
491
|
+
class="fb-group__remove"\r
|
|
492
|
+
[attr.aria-label]="'Elimina il riquadro ' + group.label"\r
|
|
493
|
+
title="Elimina il riquadro: gli elementi che contiene restano"\r
|
|
494
|
+
(click)="onGroupRemoveClick($event, group.name)"\r
|
|
495
|
+
>\r
|
|
496
|
+
\xD7\r
|
|
497
|
+
</button>\r
|
|
498
|
+
}\r
|
|
499
|
+
</div>\r
|
|
500
|
+
\r
|
|
501
|
+
@if (!group.isCollapsed && group.description) {\r
|
|
502
|
+
<p class="fb-group__note">{{ group.description }}</p>\r
|
|
503
|
+
}\r
|
|
504
|
+
\r
|
|
505
|
+
@if (isEditable() && !group.isCollapsed) {\r
|
|
506
|
+
<!--\r
|
|
507
|
+
Una sola maniglia, in basso a destra: quattro bersagli su una cornice che sta sotto\r
|
|
508
|
+
i node si prendono per sbaglio. Ridimensionare **dichiara** la geometria, che e' il\r
|
|
509
|
+
modo di uscire dal \xABcalcolala sui membri\xBB (\xA73.6).\r
|
|
510
|
+
-->\r
|
|
511
|
+
<div\r
|
|
512
|
+
fResizeHandle\r
|
|
513
|
+
[fResizeHandleType]="resizeHandles.RIGHT_BOTTOM"\r
|
|
514
|
+
class="fb-group__resize"\r
|
|
515
|
+
title="Ridimensiona il riquadro"\r
|
|
516
|
+
></div>\r
|
|
517
|
+
}\r
|
|
518
|
+
</div>\r
|
|
519
|
+
}\r
|
|
255
520
|
\r
|
|
256
521
|
@for (edge of edges(); track edge.id) {\r
|
|
257
522
|
<f-connection\r
|
|
@@ -261,6 +526,7 @@
|
|
|
261
526
|
fBehavior="floating"\r
|
|
262
527
|
[fType]="edge.isGoTo ? 'segment' : 'bezier'"\r
|
|
263
528
|
[class]="'fb-edge fb-edge--' + edge.kind + (edge.isGoTo ? ' fb-edge--goto' : '')"\r
|
|
529
|
+
[class.fb-edge--insert]="edge.id === insertionEdgeId()"\r
|
|
264
530
|
>\r
|
|
265
531
|
<f-connection-marker-arrow [type]="markerEnd" />\r
|
|
266
532
|
@if (edge.label) {\r
|
|
@@ -443,26 +709,93 @@
|
|
|
443
709
|
un blocco di controllo e' una complicazione gratuita, e \`visibility: hidden\` lo toglie\r
|
|
444
710
|
anche dall'ordine di tabulazione. Il costo e' un bottone in piu' nel DOM, non un rischio.\r
|
|
445
711
|
-->\r
|
|
446
|
-
<
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
(click)="
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
712
|
+
<div class="fb-viewport" fDragBlocker role="group" aria-label="Vista">\r
|
|
713
|
+
<!--\r
|
|
714
|
+
Lo zoom ha bisogno di **comandi e di un numero**: con la sola rotella si finisce all'8% su\r
|
|
715
|
+
un flow grande e sembra che il canvas si sia svuotato, senza un modo evidente di tornare.\r
|
|
716
|
+
Il numero e' un bottone: riporta al 100% sull'elemento corrente.\r
|
|
717
|
+
-->\r
|
|
718
|
+
<button type="button" class="fb-btn fb-viewport__btn" title="Riduci (rotella indietro)" (click)="zoomOut()">\r
|
|
719
|
+
\u2212\r
|
|
720
|
+
</button>\r
|
|
721
|
+
<button\r
|
|
722
|
+
type="button"\r
|
|
723
|
+
class="fb-btn fb-viewport__level"\r
|
|
724
|
+
title="Torna al 100% sull\u2019elemento selezionato"\r
|
|
725
|
+
(click)="zoomToActual()"\r
|
|
726
|
+
>\r
|
|
727
|
+
{{ zoomPercent() }}%\r
|
|
728
|
+
</button>\r
|
|
729
|
+
<button type="button" class="fb-btn fb-viewport__btn" title="Ingrandisci (rotella avanti)" (click)="zoomIn()">\r
|
|
730
|
+
+\r
|
|
731
|
+
</button>\r
|
|
732
|
+
<!--\r
|
|
733
|
+
La modalita\u2019 selezione. Esiste perche\u2019 i due gesti che la libreria offre di serie \u2014\r
|
|
734
|
+
\`Ctrl\`+clic per aggiungere, \`Shift\`+trascina per il rettangolo \u2014 non si vedono: senza un\r
|
|
735
|
+
interruttore, su un flow grande si finisce a spostare un elemento alla volta. Accesa, il\r
|
|
736
|
+
trascinamento sul canvas vuoto **seleziona** e la vista si sposta col tasto centrale.\r
|
|
737
|
+
-->\r
|
|
738
|
+
<button\r
|
|
739
|
+
type="button"\r
|
|
740
|
+
class="fb-btn fb-viewport__select"\r
|
|
741
|
+
[class.fb-viewport__select--on]="isSelecting()"\r
|
|
742
|
+
[attr.aria-pressed]="isSelecting()"\r
|
|
743
|
+
[title]="\r
|
|
744
|
+
isSelecting()\r
|
|
745
|
+
? 'Modalita\u2019 selezione attiva: trascina sul canvas per selezionare piu\u2019 elementi. La vista si sposta col tasto centrale del mouse'\r
|
|
746
|
+
: 'Attiva la selezione a rettangolo: trascinando sul canvas selezioni piu\u2019 elementi invece di spostare la vista (Shift+trascina fa lo stesso, sempre)'\r
|
|
747
|
+
"\r
|
|
748
|
+
(click)="toggleSelectionMode()"\r
|
|
749
|
+
>\r
|
|
750
|
+
<span class="fb-viewport__icon" aria-hidden="true">\u25A4</span>\r
|
|
751
|
+
Seleziona\r
|
|
752
|
+
</button>\r
|
|
753
|
+
<!--\r
|
|
754
|
+
Sempre nel DOM, nascosto con una classe e non con \`@if\`: dentro una proiezione di contenuto\r
|
|
755
|
+
un blocco di controllo e' una complicazione gratuita, e \`visibility: hidden\` lo toglie\r
|
|
756
|
+
anche dall'ordine di tabulazione. Il costo e' un bottone in piu' nel DOM, non un rischio.\r
|
|
757
|
+
-->\r
|
|
758
|
+
<button\r
|
|
759
|
+
type="button"\r
|
|
760
|
+
class="fb-btn fb-viewport__fit"\r
|
|
761
|
+
[class.fb-viewport__fit--hidden]="!hasMovedViewport()"\r
|
|
762
|
+
title="Rimetti il flow in vista. Su un flow molto grande inquadra l\u2019inizio, perche\u2019 l\u2019intero non sarebbe leggibile"\r
|
|
763
|
+
(click)="resetViewport()"\r
|
|
764
|
+
>\r
|
|
765
|
+
<span class="fb-viewport__icon" aria-hidden="true">\u2922</span>\r
|
|
766
|
+
Inquadra\r
|
|
767
|
+
</button>\r
|
|
768
|
+
</div>\r
|
|
769
|
+
\r
|
|
770
|
+
@if (selectionCount() > 1) {\r
|
|
771
|
+
<!--\r
|
|
772
|
+
Il dato che rende utile la selezione: che si spostano **insieme**. Senza dirlo, dopo aver\r
|
|
773
|
+
selezionato cinque elementi si continua a trascinarne uno per volta.\r
|
|
774
|
+
-->\r
|
|
775
|
+
<p class="fb-select-hint" role="status">\r
|
|
776
|
+
{{ selectionCount() }} elementi selezionati: trascinane uno per spostarli tutti \xB7 Ctrl+clic\r
|
|
777
|
+
aggiunge o toglie \xB7 Canc li elimina\r
|
|
778
|
+
</p>\r
|
|
779
|
+
} @else if (isSelecting()) {\r
|
|
780
|
+
<p class="fb-select-hint" role="status">\r
|
|
781
|
+
Trascina sul canvas per selezionare \xB7 la vista si sposta col tasto centrale\r
|
|
782
|
+
</p>\r
|
|
783
|
+
}\r
|
|
784
|
+
\r
|
|
785
|
+
@if (insertionEdgeId()) {\r
|
|
786
|
+
<!-- Il rilascio su un arco non e' un gesto che si indovina: mentre e' possibile, si dice. -->\r
|
|
787
|
+
<p class="fb-insert-hint" role="status">Rilascia qui per inserire l\u2019elemento in questo percorso</p>\r
|
|
788
|
+
}\r
|
|
457
789
|
\r
|
|
458
790
|
<f-minimap [fMinSize]="1200" class="fb-minimap" />\r
|
|
459
791
|
</f-flow>\r
|
|
460
|
-
`,styles:[`:host{display:block;position:relative;width:100%;height:100%;overflow:hidden;background:var(--fb-canvas-bg, #f4f5f7)}f-flow{display:block;width:100%;height:100%}.fb-minimap{position:absolute;right:14px;bottom:14px;width:190px;height:130px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius, 10px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 10%));overflow:hidden}.fb-viewport-reset{position:absolute;right:14px;bottom:152px;z-index:1;border-radius:var(--fb-radius-xs, 6px);box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 10%));font-size:11px;transition:opacity .15s ease,visibility .15s ease}.fb-viewport-reset--hidden{opacity:0;visibility:hidden}.fb-viewport-reset__icon{font-size:13px;line-height:1;color:var(--fb-text-muted, #667085)}.fb-node{position:absolute;display:flex;flex-direction:column;box-sizing:border-box;width:240px;padding:0;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-lg, 12px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-sm, 0 1px 2px rgb(16 24 40 / 6%));font:inherit;cursor:grab;-webkit-user-select:none;user-select:none;transition:box-shadow .12s ease,border-color .12s ease}.fb-node--outlets-3{width:304px}.fb-node--outlets-4{width:380px}.fb-node--outlets-5{width:456px}.fb-node--outlets-6{width:520px}.fb-node:hover{box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 10%))}.fb-node--selected{border-color:var(--fb-accent, #4f6ef7);box-shadow:0 0 0 3px color-mix(in srgb,var(--fb-accent, #4f6ef7) 22%,transparent)}.fb-node--unreachable{border-style:dashed;opacity:.8}.fb-node--error{border-color:var(--fb-error, #c9372c)}.fb-node--warning{border-color:var(--fb-warning, #b7791f)}.fb-node__head{display:flex;align-items:center;gap:8px;padding:10px 10px 6px 12px}.fb-node__icon{display:grid;place-items:center;flex:0 0 auto;width:28px;height:28px;border-radius:var(--fb-radius-sm, 8px);background:var(--fb-node-accent, #667085);color:#fff;font-size:14px;line-height:1}.cat-start{--fb-node-accent: #22a06b}.cat-screen{--fb-node-accent: #3b82f6}.cat-logic{--fb-node-accent: #8b5cf6}.cat-data{--fb-node-accent: #06b6d4}.cat-action{--fb-node-accent: #f59e0b}.cat-flow{--fb-node-accent: #14b8a6}.cat-other{--fb-node-accent: #667085}.fb-node__text{flex:1;min-width:0}.fb-node__title{display:block;font-size:13px;font-weight:600;line-height:17px;color:var(--fb-text, #1a1c23);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-node__sub{display:block;margin-top:1px;font-size:11px;line-height:14px;color:var(--fb-text-muted, #6b7086);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-node__sub-dot{margin:0 4px;color:var(--fb-text-subtle, #98a2b3)}.fb-node__auto{flex:0 0 auto;font-size:12px;font-weight:700;color:var(--fb-accent, #4f6ef7);cursor:help}.fb-node__edit{display:grid;place-items:center;flex:0 0 auto;width:22px;height:22px;padding:0;border:0;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:var(--fb-text-subtle, #98a2b3);font:inherit;font-size:12px;cursor:pointer;opacity:0;transition:opacity .12s ease,background .12s ease}.fb-node:hover .fb-node__edit,.fb-node--selected .fb-node__edit,.fb-node__edit:focus-visible{opacity:1}.fb-node__edit:hover{background:var(--fb-surface-alt, #f7f8fa);color:var(--fb-text, #1a1c23)}.fb-node__duplicate,.fb-node__remove{display:grid;place-items:center;flex:0 0 auto;width:22px;height:22px;padding:0;border:0;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:var(--fb-text-subtle, #98a2b3);font:inherit;font-size:15px;line-height:1;cursor:pointer;opacity:0;transition:opacity .12s ease,background .12s ease,color .12s ease}.fb-node--selected .fb-node__duplicate,.fb-node--selected .fb-node__remove,.fb-node__duplicate:focus-visible,.fb-node__remove:focus-visible{opacity:1}.fb-node__remove:hover{background:color-mix(in srgb,var(--fb-error, #c9372c) 12%,transparent);color:var(--fb-error, #c9372c)}.fb-node__duplicate:hover{background:color-mix(in srgb,var(--fb-accent, #3b6ef2) 12%,transparent);color:var(--fb-accent, #3b6ef2)}.fb-node__meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-height:14px;padding:0 12px 6px}.fb-node__name{flex:0 1 auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;color:var(--fb-text-subtle, #98a2b3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-badge{padding:1px 6px;border-radius:10px;background:var(--fb-badge-bg, #eef0f4);font-size:10px;font-weight:600;color:var(--fb-text-muted, #6b7086);white-space:nowrap;cursor:help}.fb-badge--error{background:color-mix(in srgb,var(--fb-error, #c9372c) 14%,transparent);color:var(--fb-error, #c9372c)}.fb-badge--warning{background:color-mix(in srgb,var(--fb-warning, #b7791f) 16%,transparent);color:var(--fb-warning, #b7791f)}.fb-badge--info{background:color-mix(in srgb,var(--fb-accent, #4f6ef7) 12%,transparent);color:var(--fb-accent, #4f6ef7)}.fb-badge--unreachable,.fb-badge--dangling{background:color-mix(in srgb,var(--fb-warning, #b7791f) 12%,transparent);color:var(--fb-warning, #b7791f)}.fb-node__outlets{display:flex;align-items:flex-end;justify-content:space-evenly;gap:4px;padding:0 8px 4px}.fb-node__outlets--labelled{padding-top:5px;border-top:1px solid var(--fb-border-subtle, #eef0f4)}.fb-outlet{display:flex;flex:1 1 0;flex-direction:column;align-items:center;gap:2px;min-width:0}.fb-outlet__label{max-width:100%;font-size:10px;line-height:13px;color:var(--fb-text-muted, #6b7086);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-connector{box-sizing:border-box;width:12px;height:12px;flex:0 0 auto;border:2px solid var(--fb-surface, #fff);border-radius:50%;background:var(--fb-connector, #98a2b3);cursor:crosshair;transition:transform .12s ease,box-shadow .12s ease}f-flow .fb-connector--out{position:relative;inset:auto;margin-bottom:-12px}.fb-connector--out:hover{transform:scale(1.2)}f-flow .fb-connector--in{position:absolute;inset:-2px auto auto 50%;width:24px;height:4px;border:0;border-radius:2px;transform:translate(-50%);background:var(--fb-border-strong, #cfd4de)}.fb-connector--out{--ff-connector-connected-color: var(--fb-connector, #98a2b3)}.fb-connector--Next,.fb-connector--Start,.fb-connector--LoopNext{--fb-connector: var(--fb-edge-next, #98a2b3)}.fb-connector--Rule,.fb-connector--WaitEvent{--fb-connector: var(--fb-edge-rule, #8b5cf6)}.fb-connector--Default,.fb-connector--LoopEnd{--fb-connector: var(--fb-edge-default, #06b6d4)}.fb-connector--Fault{--fb-connector: var(--fb-edge-fault, #dc2626)}.fb-connector--Timeout,.fb-connector--ScheduledPath{--fb-connector: var(--fb-edge-timeout, #f59e0b)}.fb-connector.f-connector-connectable{box-shadow:0 0 0 4px color-mix(in srgb,var(--fb-accent, #4f6ef7) 28%,transparent)}
|
|
461
|
-
`]}]}],propDecorators:{selectedName:[{type:a.Input,args:[{isSignal:!0,alias:"selectedName",required:!1}]}],selectedNames:[{type:a.Input,args:[{isSignal:!0,alias:"selectedNames",required:!1}]}],outline:[{type:a.Input,args:[{isSignal:!0,alias:"outline",required:!1}]}],isEditable:[{type:a.Input,args:[{isSignal:!0,alias:"isEditable",required:!1}]}],selectionChange:[{type:a.Output,args:["selectionChange"]}],nodeOpened:[{type:a.Output,args:["nodeOpened"]}],nodeRemoveRequested:[{type:a.Output,args:["nodeRemoveRequested"]}],nodeDuplicateRequested:[{type:a.Output,args:["nodeDuplicateRequested"]}],elementDropped:[{type:a.Output,args:["elementDropped"]}],canvas:[{type:a.ViewChild,args:[a.forwardRef(()=>
|
|
792
|
+
`,styles:[`:host{display:block;position:relative;width:100%;height:100%;overflow:hidden;background:var(--fb-canvas-bg, #f4f5f7)}f-flow{display:block;width:100%;height:100%}.fb-minimap{position:absolute;right:14px;bottom:14px;width:150px;height:300px;max-height:40%;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius, 10px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 10%));overflow:hidden}.fb-viewport{position:absolute;right:14px;bottom:322px;z-index:1;display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end;max-width:200px}.fb-viewport__btn,.fb-viewport__level,.fb-viewport__fit{border-radius:var(--fb-radius-xs, 6px);box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 10%));font-size:11px}.fb-viewport__btn{width:24px;padding:2px 0;font-size:14px;line-height:1}.fb-viewport__level{min-width:52px;font-variant-numeric:tabular-nums}.fb-viewport__fit--hidden{opacity:0;visibility:hidden}.fb-viewport__fit{transition:opacity .15s ease,visibility .15s ease}.fb-viewport__icon{font-size:13px;line-height:1;color:var(--fb-text-muted, #667085)}.fb-insert-hint{position:absolute;bottom:18px;left:50%;transform:translate(-50%);z-index:1;margin:0;padding:6px 12px;border-radius:999px;background:var(--fb-accent, #2f6feb);box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 10%));color:#fff;font-size:11px;font-weight:600;pointer-events:none}.fb-select-hint{position:absolute;bottom:18px;left:50%;transform:translate(-50%);z-index:1;margin:0;padding:6px 12px;border-radius:999px;border:1px solid var(--fb-border, #e2e5eb);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 10%));color:var(--fb-text-muted, #667085);font-size:11px;font-weight:600;pointer-events:none}.fb-viewport__select{border-radius:var(--fb-radius-xs, 6px);box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 10%));font-size:11px}.fb-viewport__select--on{border-color:var(--fb-accent, #2f6feb);background:var(--fb-accent, #2f6feb);color:#fff}.fb-node{position:absolute;display:flex;flex-direction:column;box-sizing:border-box;width:240px;padding:0;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-lg, 12px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-sm, 0 1px 2px rgb(16 24 40 / 6%));font:inherit;cursor:grab;-webkit-user-select:none;user-select:none;transition:box-shadow .12s ease,border-color .12s ease}.fb-node--outlets-3{width:304px}.fb-node--outlets-4{width:380px}.fb-node--outlets-5{width:456px}.fb-node--outlets-6{width:520px}.fb-node:hover{box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 10%))}.fb-node--selected{border-color:var(--fb-accent, #4f6ef7);box-shadow:0 0 0 3px color-mix(in srgb,var(--fb-accent, #4f6ef7) 22%,transparent)}.fb-node--unreachable{border-style:dashed;opacity:.8}.fb-node--error{border-color:var(--fb-error, #c9372c)}.fb-node--warning{border-color:var(--fb-warning, #b7791f)}.fb-node__head{display:flex;align-items:center;gap:8px;padding:10px 10px 6px 12px}.fb-node__icon{display:grid;place-items:center;flex:0 0 auto;width:28px;height:28px;border-radius:var(--fb-radius-sm, 8px);background:var(--fb-node-accent, #667085);color:#fff;font-size:14px;line-height:1}.cat-start{--fb-node-accent: #22a06b}.cat-screen{--fb-node-accent: #3b82f6}.cat-logic{--fb-node-accent: #8b5cf6}.cat-data{--fb-node-accent: #06b6d4}.cat-action{--fb-node-accent: #f59e0b}.cat-flow{--fb-node-accent: #14b8a6}.cat-other{--fb-node-accent: #667085}.fb-node__text{flex:1;min-width:0}.fb-node__title{display:block;font-size:13px;font-weight:600;line-height:17px;color:var(--fb-text, #1a1c23);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-node__sub{display:block;margin-top:1px;font-size:11px;line-height:14px;color:var(--fb-text-muted, #6b7086);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-node__sub-dot{margin:0 4px;color:var(--fb-text-subtle, #98a2b3)}.fb-node__auto{flex:0 0 auto;font-size:12px;font-weight:700;color:var(--fb-accent, #4f6ef7);cursor:help}.fb-node__edit{display:grid;place-items:center;flex:0 0 auto;width:22px;height:22px;padding:0;border:0;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:var(--fb-text-subtle, #98a2b3);font:inherit;font-size:12px;cursor:pointer;opacity:0;transition:opacity .12s ease,background .12s ease}.fb-node:hover .fb-node__edit,.fb-node--selected .fb-node__edit,.fb-node__edit:focus-visible{opacity:1}.fb-node__edit:hover{background:var(--fb-surface-alt, #f7f8fa);color:var(--fb-text, #1a1c23)}.fb-node__duplicate,.fb-node__remove{display:grid;place-items:center;flex:0 0 auto;width:22px;height:22px;padding:0;border:0;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:var(--fb-text-subtle, #98a2b3);font:inherit;font-size:15px;line-height:1;cursor:pointer;opacity:0;transition:opacity .12s ease,background .12s ease,color .12s ease}.fb-node--selected .fb-node__duplicate,.fb-node--selected .fb-node__remove,.fb-node__duplicate:focus-visible,.fb-node__remove:focus-visible{opacity:1}.fb-node__remove:hover{background:color-mix(in srgb,var(--fb-error, #c9372c) 12%,transparent);color:var(--fb-error, #c9372c)}.fb-node__duplicate:hover{background:color-mix(in srgb,var(--fb-accent, #3b6ef2) 12%,transparent);color:var(--fb-accent, #3b6ef2)}.fb-node__meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-height:14px;padding:0 12px 6px}.fb-node__name{flex:0 1 auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;color:var(--fb-text-subtle, #98a2b3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-badge{padding:1px 6px;border-radius:10px;background:var(--fb-badge-bg, #eef0f4);font-size:10px;font-weight:600;color:var(--fb-text-muted, #6b7086);white-space:nowrap;cursor:help}.fb-badge--error{background:color-mix(in srgb,var(--fb-error, #c9372c) 14%,transparent);color:var(--fb-error, #c9372c)}.fb-badge--warning{background:color-mix(in srgb,var(--fb-warning, #b7791f) 16%,transparent);color:var(--fb-warning, #b7791f)}.fb-badge--info{background:color-mix(in srgb,var(--fb-accent, #4f6ef7) 12%,transparent);color:var(--fb-accent, #4f6ef7)}.fb-badge--unreachable,.fb-badge--dangling{background:color-mix(in srgb,var(--fb-warning, #b7791f) 12%,transparent);color:var(--fb-warning, #b7791f)}.fb-node__outlets{display:flex;align-items:flex-end;justify-content:space-evenly;gap:4px;padding:0 8px 4px}.fb-node__outlets--labelled{padding-top:5px;border-top:1px solid var(--fb-border-subtle, #eef0f4)}.fb-outlet{display:flex;flex:1 1 0;flex-direction:column;align-items:center;gap:2px;min-width:0}.fb-outlet__label{max-width:100%;font-size:10px;line-height:13px;color:var(--fb-text-muted, #6b7086);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-connector{box-sizing:border-box;width:12px;height:12px;flex:0 0 auto;border:2px solid var(--fb-surface, #fff);border-radius:50%;background:var(--fb-connector, #98a2b3);cursor:crosshair;transition:transform .12s ease,box-shadow .12s ease}f-flow .fb-connector--out{position:relative;inset:auto;margin-bottom:-12px}.fb-connector--out:hover{transform:scale(1.2)}f-flow .fb-connector--in{position:absolute;inset:-2px auto auto 50%;width:24px;height:4px;border:0;border-radius:2px;transform:translate(-50%);background:var(--fb-border-strong, #cfd4de)}.fb-connector--out{--ff-connector-connected-color: var(--fb-connector, #98a2b3)}.fb-connector--Next,.fb-connector--Start,.fb-connector--LoopNext{--fb-connector: var(--fb-edge-next, #98a2b3)}.fb-connector--Rule,.fb-connector--WaitEvent{--fb-connector: var(--fb-edge-rule, #8b5cf6)}.fb-connector--Default,.fb-connector--LoopEnd{--fb-connector: var(--fb-edge-default, #06b6d4)}.fb-connector--Fault{--fb-connector: var(--fb-edge-fault, #dc2626)}.fb-connector--Timeout,.fb-connector--ScheduledPath{--fb-connector: var(--fb-edge-timeout, #f59e0b)}.fb-connector.f-connector-connectable{box-shadow:0 0 0 4px color-mix(in srgb,var(--fb-accent, #4f6ef7) 28%,transparent)}.fb-group{position:absolute;box-sizing:border-box;border:1px solid var(--fb-group-border, #d6dae1);border-radius:var(--fb-radius, 10px);background:var(--fb-group-fill, rgb(148 163 184 / 10%));pointer-events:none;overflow:hidden}.fb-group--selected{border-color:var(--fb-accent, #2f6feb);box-shadow:0 0 0 2px color-mix(in srgb,var(--fb-accent, #2f6feb) 25%,transparent)}.fb-group__bar{display:flex;align-items:center;gap:6px;height:30px;padding:0 6px;border-bottom:1px solid var(--fb-group-border, #d6dae1);background:var(--fb-group-bar, rgb(148 163 184 / 22%));color:var(--fb-text, #1d2939);font-size:12px;font-weight:600;pointer-events:auto;cursor:move;-webkit-user-select:none;user-select:none}.fb-group--collapsed .fb-group__bar{border-bottom:none}.fb-group__fold,.fb-group__remove{flex:none;width:18px;height:18px;padding:0;border:none;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:inherit;font:inherit;font-size:12px;line-height:1;cursor:pointer}.fb-group__fold:hover,.fb-group__remove:hover{background:#10182814}.fb-group__remove{margin-left:auto;font-size:14px}.fb-group__title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.fb-group__count{flex:none;padding:0 5px;border-radius:8px;background:#10182814;font-size:10px;font-weight:600;font-variant-numeric:tabular-nums}.fb-group__stale{flex:none;padding:0 5px;border-radius:8px;background:color-mix(in srgb,var(--fb-warning, #b7791f) 14%,transparent);color:var(--fb-warning, #b7791f);font-size:10px;font-weight:600}.fb-group__note{margin:6px 8px 0;color:var(--fb-text-muted, #667085);font-size:11px;line-height:1.35;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.fb-group__resize{position:absolute;right:0;bottom:0;width:14px;height:14px;border-right:2px solid var(--fb-group-border, #d6dae1);border-bottom:2px solid var(--fb-group-border, #d6dae1);border-bottom-right-radius:var(--fb-radius, 10px);pointer-events:auto;cursor:nwse-resize}.fb-group--giallo{--fb-group-border: #e0c26a;--fb-group-fill: rgb(234 179 8 / 10%);--fb-group-bar: rgb(234 179 8 / 24%)}.fb-group--verde{--fb-group-border: #86c79b;--fb-group-fill: rgb(34 160 89 / 10%);--fb-group-bar: rgb(34 160 89 / 22%)}.fb-group--blu{--fb-group-border: #93b4ea;--fb-group-fill: rgb(47 111 235 / 9%);--fb-group-bar: rgb(47 111 235 / 20%)}.fb-group--viola{--fb-group-border: #bda6e6;--fb-group-fill: rgb(139 92 246 / 10%);--fb-group-bar: rgb(139 92 246 / 22%)}.fb-group--rosso{--fb-group-border: #e6a3a3;--fb-group-fill: rgb(214 69 69 / 9%);--fb-group-bar: rgb(214 69 69 / 20%)}.fb-group--grigio,.fb-group--neutro{--fb-group-border: #d6dae1;--fb-group-fill: rgb(148 163 184 / 10%);--fb-group-bar: rgb(148 163 184 / 22%)}
|
|
793
|
+
`]}]}],propDecorators:{selectedName:[{type:a.Input,args:[{isSignal:!0,alias:"selectedName",required:!1}]}],selectedGroupName:[{type:a.Input,args:[{isSignal:!0,alias:"selectedGroupName",required:!1}]}],selectedNames:[{type:a.Input,args:[{isSignal:!0,alias:"selectedNames",required:!1}]}],outline:[{type:a.Input,args:[{isSignal:!0,alias:"outline",required:!1}]}],isEditable:[{type:a.Input,args:[{isSignal:!0,alias:"isEditable",required:!1}]}],selectionChange:[{type:a.Output,args:["selectionChange"]}],nodeOpened:[{type:a.Output,args:["nodeOpened"]}],nodeRemoveRequested:[{type:a.Output,args:["nodeRemoveRequested"]}],nodeDuplicateRequested:[{type:a.Output,args:["nodeDuplicateRequested"]}],groupSelected:[{type:a.Output,args:["groupSelected"]}],groupRemoveRequested:[{type:a.Output,args:["groupRemoveRequested"]}],elementDropped:[{type:a.Output,args:["elementDropped"]}],canvas:[{type:a.ViewChild,args:[a.forwardRef(()=>zn),{isSignal:!0}]}]}});class ge{dictionaries=b(I);processType=d(void 0,...ngDevMode?[{debugName:"processType"}]:[]);elementPicked=v();filter=u("",...ngDevMode?[{debugName:"filter"}]:[]);items=s(()=>{const e=[];for(const n of this.dictionaries.paletteTypes()){const r=this.dictionaries.variantsOf(n.value);if(r.length===0){e.push({key:n.value,entry:n,label:n.label,data:{type:n.value}});continue}for(const t of r)e.push({key:`${n.value}:${t.value}`,entry:n,variant:t.value,label:t.label||t.value,data:{type:n.value,variant:t.value}})}return e},...ngDevMode?[{debugName:"items"}]:[]);groups=s(()=>{const e=this.filter()?.trim().toLowerCase(),n=[];for(const r of this.items()){const t=`${r.label} ${r.entry.label} ${r.entry.value} ${r.variant??""}`;if(e&&!t.toLowerCase().includes(e))continue;const i=r.entry.category??"Altro";let l=n.find(c=>c.category===i);l||(l={category:i,items:[]},n.push(l)),l.items.push(r)}return n},...ngDevMode?[{debugName:"groups"}]:[]);isEmpty=s(()=>this.dictionaries.paletteTypes().length===0,...ngDevMode?[{debugName:"isEmpty"}]:[]);onFilter(e){this.filter.set(e)}pick(e){this.elementPicked.emit(e.data)}isIncompatible(e){return(e.entry.value==="Screen"||e.entry.value==="DynamicScreen")&&this.processType()==="AutoLaunched"}hintOf(e){if(this.isIncompatible(e))return"In un flow AutoLaunched non c\u2019e\u2019 nessuno a cui mostrare uno screen: sarebbe un errore di validazione.";const n=e.entry.description||null;return e.variant?n?`${e.entry.label} \xB7 ${n}`:e.entry.label:n??e.label}iconOf(e){return Ln(e.entry.value,e.label,e.variant)}faultLabel(e){if(!e.entry.hasFaultConnector)return null;const n=L(e.entry.value,{}).find(r=>r.kind==="Fault");return n?`ramo \xAB${n.label.toLowerCase()}\xBB`:"ramo di errore"}categoryClass(e){const n=e.toLowerCase();return n.startsWith("inter")?"cat-screen":n.startsWith("log")?"cat-logic":n.startsWith("dat")?"cat-data":n.startsWith("az")?"cat-action":n.startsWith("flow")?"cat-flow":"cat-other"}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ge,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:ge,isStandalone:!0,selector:"fb-element-palette",inputs:{processType:{classPropertyName:"processType",publicName:"processType",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{elementPicked:"elementPicked"},ngImport:a,template:`<div class="fb-palette__search">\r
|
|
462
794
|
<input\r
|
|
463
795
|
type="search"\r
|
|
464
|
-
placeholder="
|
|
465
|
-
aria-label="
|
|
796
|
+
placeholder="Filtra i tipi\u2026"\r
|
|
797
|
+
aria-label="Filtra i tipi di elemento della palette"\r
|
|
798
|
+
title="Filtra i tipi che si possono aggiungere. Per cercare un elemento del flow c\u2019e\u2019 la casella in alto"\r
|
|
466
799
|
(input)="onFilter($any($event.target).value)"\r
|
|
467
800
|
/>\r
|
|
468
801
|
</div>\r
|
|
@@ -519,11 +852,12 @@
|
|
|
519
852
|
}\r
|
|
520
853
|
</div>\r
|
|
521
854
|
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff);border-right:1px solid var(--fb-border, #d6dae1)}.fb-palette__search{padding:8px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-palette__search input{box-sizing:border-box;width:100%;padding:5px 8px;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);color:var(--fb-text, #1d2939);font:inherit;font-size:12px}.fb-palette__search input:focus-visible{outline:2px solid var(--fb-accent, #2f6feb);outline-offset:-1px}.fb-palette__groups{flex:1;min-height:0;overflow-y:auto;padding:4px 0 12px}.fb-palette__empty{margin:12px 10px;font-size:12px;color:var(--fb-text-muted, #667085)}.fb-palette__category{margin:10px 10px 4px;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--fb-text-subtle, #98a2b3)}.fb-palette__item{display:flex;align-items:center;gap:8px;box-sizing:border-box;width:calc(100% - 12px);margin:1px 6px;padding:5px 8px;border:0;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:var(--fb-text, #1a1c23);font:inherit;text-align:left;cursor:grab;transition:background .12s ease}.fb-palette__item:hover{background:var(--fb-surface-alt, #f7f8fa)}.fb-palette__item:focus-visible{outline:2px solid var(--fb-accent, #2f6feb);outline-offset:-2px}.fb-palette__icon{display:grid;place-items:center;flex:0 0 auto;width:24px;height:24px;border-radius:var(--fb-radius-xs, 6px);background:var(--fb-icon-bg, #98a2b3);color:#fff;font-size:11px;font-weight:700}.cat-screen{--fb-icon-bg: #3b82f6}.cat-logic{--fb-icon-bg: #8b5cf6}.cat-data{--fb-icon-bg: #06b6d4}.cat-action{--fb-icon-bg: #f59e0b}.cat-flow{--fb-icon-bg: #14b8a6}.fb-palette__text{display:flex;flex-direction:column;min-width:0}.fb-palette__label{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-palette__flag{font-size:9px;color:var(--fb-text-subtle, #98a2b3)}.fb-palette__item--warn .fb-palette__label{color:var(--fb-warning, #b7791f)}.fb-palette__warn{margin-left:auto;color:var(--fb-warning, #b7791f);font-weight:700}:host ::ng-deep .f-external-item-preview{padding:4px 8px;border:1px solid var(--fb-accent, #2f6feb);border-radius:6px;background:var(--fb-surface, #fff);box-shadow:0 4px 12px #1018282e;opacity:.95}
|
|
522
|
-
`],dependencies:[{kind:"ngmodule",type:
|
|
855
|
+
`],dependencies:[{kind:"ngmodule",type:un},{kind:"directive",type:A.FExternalItem,selector:"[fExternalItem]",inputs:["fExternalItemId","fData","fDisabled","fPreview","fPreviewMatchSize","fPlaceholder"],outputs:["fPreviewChange","fPlaceholderChange"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ge,decorators:[{type:y,args:[{selector:"fb-element-palette",standalone:!0,imports:[un],changeDetection:_.OnPush,template:`<div class="fb-palette__search">\r
|
|
523
856
|
<input\r
|
|
524
857
|
type="search"\r
|
|
525
|
-
placeholder="
|
|
526
|
-
aria-label="
|
|
858
|
+
placeholder="Filtra i tipi\u2026"\r
|
|
859
|
+
aria-label="Filtra i tipi di elemento della palette"\r
|
|
860
|
+
title="Filtra i tipi che si possono aggiungere. Per cercare un elemento del flow c\u2019e\u2019 la casella in alto"\r
|
|
527
861
|
(input)="onFilter($any($event.target).value)"\r
|
|
528
862
|
/>\r
|
|
529
863
|
</div>\r
|
|
@@ -580,7 +914,7 @@
|
|
|
580
914
|
}\r
|
|
581
915
|
</div>\r
|
|
582
916
|
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff);border-right:1px solid var(--fb-border, #d6dae1)}.fb-palette__search{padding:8px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-palette__search input{box-sizing:border-box;width:100%;padding:5px 8px;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);color:var(--fb-text, #1d2939);font:inherit;font-size:12px}.fb-palette__search input:focus-visible{outline:2px solid var(--fb-accent, #2f6feb);outline-offset:-1px}.fb-palette__groups{flex:1;min-height:0;overflow-y:auto;padding:4px 0 12px}.fb-palette__empty{margin:12px 10px;font-size:12px;color:var(--fb-text-muted, #667085)}.fb-palette__category{margin:10px 10px 4px;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--fb-text-subtle, #98a2b3)}.fb-palette__item{display:flex;align-items:center;gap:8px;box-sizing:border-box;width:calc(100% - 12px);margin:1px 6px;padding:5px 8px;border:0;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:var(--fb-text, #1a1c23);font:inherit;text-align:left;cursor:grab;transition:background .12s ease}.fb-palette__item:hover{background:var(--fb-surface-alt, #f7f8fa)}.fb-palette__item:focus-visible{outline:2px solid var(--fb-accent, #2f6feb);outline-offset:-2px}.fb-palette__icon{display:grid;place-items:center;flex:0 0 auto;width:24px;height:24px;border-radius:var(--fb-radius-xs, 6px);background:var(--fb-icon-bg, #98a2b3);color:#fff;font-size:11px;font-weight:700}.cat-screen{--fb-icon-bg: #3b82f6}.cat-logic{--fb-icon-bg: #8b5cf6}.cat-data{--fb-icon-bg: #06b6d4}.cat-action{--fb-icon-bg: #f59e0b}.cat-flow{--fb-icon-bg: #14b8a6}.fb-palette__text{display:flex;flex-direction:column;min-width:0}.fb-palette__label{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-palette__flag{font-size:9px;color:var(--fb-text-subtle, #98a2b3)}.fb-palette__item--warn .fb-palette__label{color:var(--fb-warning, #b7791f)}.fb-palette__warn{margin-left:auto;color:var(--fb-warning, #b7791f);font-weight:700}:host ::ng-deep .f-external-item-preview{padding:4px 8px;border:1px solid var(--fb-accent, #2f6feb);border-radius:6px;background:var(--fb-surface, #fff);box-shadow:0 4px 12px #1018282e;opacity:.95}
|
|
583
|
-
`]}]}],propDecorators:{processType:[{type:a.Input,args:[{isSignal:!0,alias:"processType",required:!1}]}],elementPicked:[{type:a.Output,args:["elementPicked"]}]}});function rt(o,e){const n=(e??"").trim();if(!n)return;let r;for(const t of o)!t.name||n!==t.name&&!n.startsWith(`${t.name}.`)||(!r||t.name.length>r.name.length)&&(r=t);return r}function Qn(o,e,n,r){const t=rt(o,e);if(!t||!t.objectType||t.isCollection||t.kind==="ElementOutput"&&!r?.proposeOnly)return;const s=(e??"").trim(),l=s.length>t.name.length?s.slice(t.name.length+1):"";return n(t.dataType)?{reference:t,container:{kind:"structure",name:t.objectType},path:l}:t.dataType==="Object"?{reference:t,container:{kind:"object",name:t.objectType},path:l}:void 0}function Bt(o){return{dataType:o.dataType,objectType:o.objectType??void 0,isCollection:o.isCollection,isWritable:o.isWritable,valueSet:o.valueSet,origin:"member"}}function Ut(o){return{dataType:o.dataType??void 0,objectType:o.objectType??void 0,isCollection:o.isCollection,isWritable:o.isWritable,origin:"resource"}}async function Wt(o,e,n,r,t){const s=(n??"").trim();if(!s)return null;const l=e.find(f=>f.name===s);if(l)return Ut(l);const c=Qn(e,s,r);return c?.path?tt(o,c.container,c.path,t):null}async function tt(o,e,n,r){const t=(n??"").trim();if(!t)return null;const s=await Rn(o,e,t,{usage:r});return s.status==="resolved"&&s.last?Bt(s.last):null}function Gt(o,e){return!o||!e?o===e:o.dataType===e.dataType&&o.objectType===e.objectType&&!!o.isCollection==!!e.isCollection&&o.isWritable===e.isWritable&&o.valueSet?.object===e.valueSet?.object&&o.valueSet?.field===e.valueSet?.field&&o.origin===e.origin}function at(o){const e=u(new Map,...ngDevMode?[{debugName:"types"}]:[]),n=u("",...ngDevMode?[{debugName:"scope"}]:[]),r=new Map,t=new Map;let s=0;w(()=>{const c=o();if(n.set(c?.scope??""),!!c)for(const f of new Set(c.values)){const g=(f??"").trim();if(!g)continue;const p=`${c.scope}\0${g}`;if(r.get(p)===c.version)continue;r.set(p,c.version);const m=++s;t.set(p,m),c.resolve(g).then(y=>{if(t.get(p)!==m)return;const M=e();if(M.has(p)&&Gt(M.get(p),y))return;const F=new Map(M);F.set(p,y),e.set(F)})}});const l=c=>{const f=(c??"").trim();if(f)return e().get(`${n()}\0${f}`)??void 0};return{typeOf:l,dataTypeOf:c=>l(c)?.dataType,objectTypeOf:c=>l(c)?.objectType,valueSetOf:c=>l(c)?.valueSet}}function it(o,e,n){return at(()=>{const r=n();if(!r)return null;const t=r.references,s=r.usage??"any";return{scope:`references|${s}`,version:t,values:r.values,resolve:l=>Wt(o,t,l,e,s)}})}function Qt(o,e){return at(()=>{const n=e(),r=n?.container;if(!n||!r?.name)return null;const t=n.usage??"any";return{scope:`${r.kind}:${r.name}|${t}`,version:"container",values:n.paths,resolve:s=>tt(o,r,s,t)}})}function ot(o,e){if(!e.length)return o;const n=new Set(o.map(r=>r.name.toLowerCase()));return[...o,...e.filter(r=>!n.has(r.name.toLowerCase()))]}class D{api=b(L);store=b($);dictionaries=b(R);catalog=b(S);value=d(void 0,...ngDevMode?[{debugName:"value"}]:[]);label=d("Riferimento",...ngDevMode?[{debugName:"label"}]:[]);placeholder=d("Scegli o scrivi un riferimento",...ngDevMode?[{debugName:"placeholder"}]:[]);disabled=d(!1,...ngDevMode?[{debugName:"disabled"}]:[]);dataType=d(void 0,...ngDevMode?[{debugName:"dataType"}]:[]);isCollection=d(void 0,...ngDevMode?[{debugName:"isCollection"}]:[]);objectType=d(void 0,...ngDevMode?[{debugName:"objectType"}]:[]);writableOnly=d(!1,...ngDevMode?[{debugName:"writableOnly"}]:[]);elementsOnly=d(!1,...ngDevMode?[{debugName:"elementsOnly"}]:[]);extraReferences=d([],...ngDevMode?[{debugName:"extraReferences"}]:[]);valueChange=v();unfiltered=u([],...ngDevMode?[{debugName:"unfiltered"}]:[]);available=u([],...ngDevMode?[{debugName:"available"}]:[]);references=i(()=>Gr(ot(this.available(),this.extraReferences()),{dataType:this.dataType()??void 0,isCollection:this.isCollection()??void 0,objectType:this.objectType()??void 0}),...ngDevMode?[{debugName:"references"}]:[]);roots=i(()=>ot(this.unfiltered(),this.extraReferences()),...ngDevMode?[{debugName:"roots"}]:[]);isLoading=u(!1,...ngDevMode?[{debugName:"isLoading"}]:[]);loadError=u(null,...ngDevMode?[{debugName:"loadError"}]:[]);isOpen=u(!1,...ngDevMode?[{debugName:"isOpen"}]:[]);query=u("",...ngDevMode?[{debugName:"query"}]:[]);constructor(){w(()=>{const e=this.store.document(),n=this.writableOnly();if(this.elementsOnly()){const r=this.store.nodes().map(t=>({name:t.name,label:t.node.label??null,kind:"ElementOutput",description:this.dictionaries.labelOf(t.type),isWritable:!1}));this.unfiltered.set(r),this.available.set(r);return}this.isLoading.set(!0),this.loadError.set(null),this.api.getReferences(e).then(r=>{this.unfiltered.set(r??[]),n||this.available.set(r??[])}).catch(r=>{this.loadError.set(r instanceof Error?r.message:String(r)),this.unfiltered.set([]),n||this.available.set([])}).finally(()=>{n||this.isLoading.set(!1)}),n&&this.api.getWritableReferences(e).then(r=>this.available.set(r??[])).catch(r=>{this.loadError.set(r instanceof Error?r.message:String(r)),this.available.set([])}).finally(()=>this.isLoading.set(!1))})}declaredPrefix=i(()=>rt(this.roots(),this.value()),...ngDevMode?[{debugName:"declaredPrefix"}]:[]);navigableRoot=i(()=>Qn(this.roots(),this.value(),e=>this.dictionaries.isStructure(e)),...ngDevMode?[{debugName:"navigableRoot"}]:[]);proposalRoot=i(()=>Qn(this.roots(),this.value(),e=>this.dictionaries.isStructure(e),{proposeOnly:!0}),...ngDevMode?[{debugName:"proposalRoot"}]:[]);navigatedPath=i(()=>this.proposalRoot()?.path??"",...ngDevMode?[{debugName:"navigatedPath"}]:[]);navigation=ln(this.catalog,()=>{const e=this.proposalRoot();return e?{root:e.container,path:this.navigatedPath()}:null});resolution=this.navigation.resolution;tail=i(()=>this.resolution()?.tail,...ngDevMode?[{debugName:"tail"}]:[]);isReadOnlyPath=i(()=>{const e=this.proposalRoot()?.reference;return e?e.kind==="ElementOutput"?!0:en(e.name)&&Be(e.name)!=="$Record":!1},...ngDevMode?[{debugName:"isReadOnlyPath"}]:[]);pathReferences=i(()=>{const e=this.proposalRoot(),n=this.tail();if(!e||!n)return[];const r=n.prefix?`${e.reference.name}.${n.prefix}`:e.reference.name,t=n.level.container.kind==="object"?"RecordField":"StructureMember";return n.level.entries.map(s=>this.isReadOnlyPath()?{...s,isWritable:!1}:s).filter(s=>!this.writableOnly()||s.isWritable||!!s.next).filter(s=>this.matchesTarget(s)).map(s=>({name:`${r}.${s.name}`,label:s.label??null,kind:t,dataType:s.dataType??null,isCollection:s.isCollection??!1,objectType:s.objectType??null,isWritable:s.isWritable,description:this.segmentDescription(s)}))},...ngDevMode?[{debugName:"pathReferences"}]:[]);segmentDescription(e){return this.proposalRoot()?.reference.kind==="ElementOutput"?"campo del record letto \xB7 percorso non verificato":e.isWritable?e.description??null:"sola lettura"}matchesTarget(e){return e.next?!0:In(e,{dataType:this.dataType()??void 0,isCollection:this.isCollection()??void 0,objectType:this.objectType()??void 0})}containerOptions=i(()=>{const e=new Set(this.references().map(n=>n.name));return this.unfiltered().filter(n=>e.has(n.name)||!this.canDescend(n)?!1:!(this.writableOnly()&&en(n.name)&&Be(n.name)!=="$Record"))},...ngDevMode?[{debugName:"containerOptions"}]:[]);isContainerOnly(e){return this.containerOptions().some(n=>n.name===e.name)}options=i(()=>{const e=this.query()?.trim().toLowerCase(),n=[...this.references(),...this.containerOptions(),...this.pathReferences()];return e?n.filter(r=>`${r.name} ${r.label??""} ${r.description??""}`.toLowerCase().includes(e)):n},...ngDevMode?[{debugName:"options"}]:[]);groups=i(()=>{const e=[];for(const n of this.options()){const r=n.kind??"Variable";let t=e.find(s=>s.kind===r);t||(t={kind:r,label:D.kindLabel(r),items:[]},e.push(t)),t.items.push(n)}return e},...ngDevMode?[{debugName:"groups"}]:[]);static kindLabel(e){switch(e){case"Variable":return"Variabili";case"Constant":return"Costanti";case"Formula":return"Formule";case"TextTemplate":return"Text template";case"Choice":return"Choice";case"DynamicChoiceSet":return"Dynamic choice set";case"Stage":return"Stage";case"ScreenField":return"Campi di schermata";case"ElementOutput":return"Output di elementi";case"StructureMember":return"Membri della classe";case"RecordField":return"Campi del record";case"Global":return"Variabili globali";default:return e}}valueState=i(()=>{const e=(this.value()??"")?.trim();if(!e)return"empty";const n=this.references();if(n.some(s=>s.name===e))return"known";const r=Be(e);if(this.dictionaries.globalScope(r)&&!this.dictionaries.isGlobalScopeVerifiable(r))return"host";if(this.navigableRoot()){if(!this.navigatedPath())return"containerRoot";const s=this.resolution();switch(s?.status){case"unknown":return"memberUnknown";case"unverifiable":return"pathUnverified";case"resolved":return this.writableOnly()&&(this.isReadOnlyPath()||!s.last?.isWritable)?"memberNotWritable":"member";default:return"empty"}}const t=this.declaredPrefix();return t&&t.name!==e&&en(t.name)?(this.dictionaries.isStructure(t.dataType)||t.dataType==="Object")&&!t.objectType&&!t.isCollection?"globalPathUntyped":"globalPathInvalid":this.roots().some(s=>s.name===r)?"navigated":n.length===0&&this.isLoading()?"empty":"unknown"},...ngDevMode?[{debugName:"valueState"}]:[]);tailIsObject=i(()=>{const e=this.resolution();return e?.levels[e.levels.length-1]?.container.kind==="object"},...ngDevMode?[{debugName:"tailIsObject"}]:[]);tailContainer=i(()=>{const e=this.resolution();return e?.levels[e.levels.length-1]?.container.name??""},...ngDevMode?[{debugName:"tailContainer"}]:[]);hint=i(()=>{const e=this.resolution();switch(this.valueState()){case"host":return"Scope risolto dal sistema ospite, che non dichiara i suoi percorsi: il backend non puo\u2019 verificarlo.";case"navigated":return"Percorso su un output automatico: la validazione non verifica i segmenti dopo il punto.";case"member":return`${this.tailIsObject()?"Campo":"Membro"} di ${this.tailContainer()}: il percorso e\u2019 verificato fino in fondo.`;case"containerRoot":return this.tailIsObject()?"Questo e\u2019 il record intero, e il campo vuole un altro tipo: scegli un suo campo.":"Questa e\u2019 l\u2019istanza di classe, e il campo vuole un altro tipo: scegli un suo membro.";case"memberUnknown":{if(!e)return null;const n=e.stoppedAt?.segment??"",r=sn(e).join(", "),t=this.tailIsObject()?`\xAB${n}\xBB non e\u2019 un campo di ${this.tailContainer()} (FIELD_UNKNOWN).`:`\xAB${n}\xBB non e\u2019 un membro di ${this.tailContainer()} (STRUCTURE_MEMBER_UNKNOWN).`;return r?`${t} Disponibili: ${r}.`:t}case"memberNotWritable":return this.isReadOnlyPath()?"Le variabili globali sono di sola lettura, membri compresi: assegnarlo e\u2019 TARGET_NOT_WRITABLE.":this.tailIsObject()?"Questo campo non si scrive ne\u2019 creando ne\u2019 aggiornando un record: assegnarlo e\u2019 TARGET_NOT_WRITABLE.":"Questo membro e\u2019 calcolato: si legge, ma assegnarlo e\u2019 TARGET_NOT_WRITABLE.";case"pathUnverified":return e?on(e):null;case"globalPathUntyped":return`\xAB${this.declaredPrefix()?.name}\xBB porta un contenitore, ma il catalogo non ne dichiara il tipo: il percorso non e\u2019 verificabile (PATH_NOT_VERIFIABLE).`;case"globalPathInvalid":return`\xAB${this.declaredPrefix()?.name}\xBB e\u2019 un valore, non un contenitore: dopo il punto non c\u2019e\u2019 niente da navigare (GLOBAL_UNKNOWN).`;case"unknown":return"Questo nome non e\u2019 fra i riferimenti disponibili: la validazione lo segnalerebbe.";default:return null}},...ngDevMode?[{debugName:"hint"}]:[]);isHintWarning=i(()=>["unknown","containerRoot","globalPathUntyped"].includes(this.valueState()),...ngDevMode?[{debugName:"isHintWarning"}]:[]);isHintError=i(()=>["memberUnknown","memberNotWritable","globalPathInvalid"].includes(this.valueState()),...ngDevMode?[{debugName:"isHintError"}]:[]);errorMessage=i(()=>this.loadError(),...ngDevMode?[{debugName:"errorMessage"}]:[]);open(){this.disabled()||this.isOpen.set(!0)}close(){this.isOpen.set(!1),this.query.set("")}toggle(){this.isOpen()?this.close():this.open()}onQuery(e){this.query.set(e)}choose(e){if(this.isContainerOnly(e)){this.descend(e);return}this.valueChange.emit(e.name),this.close()}descend(e){this.valueChange.emit(`${e.name}.`),this.query.set("")}canDescend(e){return e.isCollection||!e.objectType||this.writableOnly()&&e.kind==="ElementOutput"?!1:this.dictionaries.isStructure(e.dataType)||e.dataType==="Object"}onManualInput(e){this.valueChange.emit(e?.trim()?e?.trim():void 0)}clear(){this.valueChange.emit(void 0)}describe(e){const n=[];return e.dataType&&n.push(e.isCollection?`${e.dataType}[]`:e.dataType),e.objectType&&n.push(e.objectType),e.description&&n.push(e.description),this.isContainerOnly(e)&&n.push(e.dataType==="Object"?"entra e scegli un campo":"entra e scegli un membro"),n.join(" \xB7 ")}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:D,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:D,isStandalone:!0,selector:"fb-reference-picker",inputs:{value:{classPropertyName:"value",publicName:"value",isSignal:!0,isRequired:!1,transformFunction:null},label:{classPropertyName:"label",publicName:"label",isSignal:!0,isRequired:!1,transformFunction:null},placeholder:{classPropertyName:"placeholder",publicName:"placeholder",isSignal:!0,isRequired:!1,transformFunction:null},disabled:{classPropertyName:"disabled",publicName:"disabled",isSignal:!0,isRequired:!1,transformFunction:null},dataType:{classPropertyName:"dataType",publicName:"dataType",isSignal:!0,isRequired:!1,transformFunction:null},isCollection:{classPropertyName:"isCollection",publicName:"isCollection",isSignal:!0,isRequired:!1,transformFunction:null},objectType:{classPropertyName:"objectType",publicName:"objectType",isSignal:!0,isRequired:!1,transformFunction:null},writableOnly:{classPropertyName:"writableOnly",publicName:"writableOnly",isSignal:!0,isRequired:!1,transformFunction:null},elementsOnly:{classPropertyName:"elementsOnly",publicName:"elementsOnly",isSignal:!0,isRequired:!1,transformFunction:null},extraReferences:{classPropertyName:"extraReferences",publicName:"extraReferences",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{valueChange:"valueChange"},ngImport:a,template:`<div class="fb-ref" [class.fb-ref--open]="isOpen()">\r
|
|
917
|
+
`]}]}],propDecorators:{processType:[{type:a.Input,args:[{isSignal:!0,alias:"processType",required:!1}]}],elementPicked:[{type:a.Output,args:["elementPicked"]}]}});function $t(o,e){const n=(e??"").trim();if(!n)return;let r;for(const t of o)!t.name||n!==t.name&&!n.startsWith(`${t.name}.`)||(!r||t.name.length>r.name.length)&&(r=t);return r}function br(o,e,n,r){const t=$t(o,e);if(!t||!t.objectType||t.isCollection||t.kind==="ElementOutput"&&!r?.proposeOnly)return;const i=(e??"").trim(),l=i.length>t.name.length?i.slice(t.name.length+1):"";return n(t.dataType)?{reference:t,container:{kind:"structure",name:t.objectType},path:l}:t.dataType==="Object"?{reference:t,container:{kind:"object",name:t.objectType},path:l}:void 0}function ya(o){return{dataType:o.dataType,objectType:o.objectType??void 0,isCollection:o.isCollection,isWritable:o.isWritable,valueSet:o.valueSet,origin:"member"}}function xa(o){return{dataType:o.dataType??void 0,objectType:o.objectType??void 0,isCollection:o.isCollection,isWritable:o.isWritable,origin:"resource"}}async function ka(o,e,n,r,t){const i=(n??"").trim();if(!i)return null;const l=e.find(p=>p.name===i);if(l)return xa(l);const c=br(e,i,r);return c?.path?Rt(o,c.container,c.path,t):null}async function Rt(o,e,n,r){const t=(n??"").trim();if(!t)return null;const i=await Xn(o,e,t,{usage:r});return i.status==="resolved"&&i.last?ya(i.last):null}function wa(o,e){return!o||!e?o===e:o.dataType===e.dataType&&o.objectType===e.objectType&&!!o.isCollection==!!e.isCollection&&o.isWritable===e.isWritable&&o.valueSet?.object===e.valueSet?.object&&o.valueSet?.field===e.valueSet?.field&&o.origin===e.origin}function Ft(o){const e=u(new Map,...ngDevMode?[{debugName:"types"}]:[]),n=u("",...ngDevMode?[{debugName:"scope"}]:[]),r=new Map,t=new Map;let i=0;w(()=>{const c=o();if(n.set(c?.scope??""),!!c)for(const p of new Set(c.values)){const g=(p??"").trim();if(!g)continue;const f=`${c.scope}\0${g}`;if(r.get(f)===c.version)continue;r.set(f,c.version);const m=++i;t.set(f,m),c.resolve(g).then(h=>{if(t.get(f)!==m)return;const O=e();if(O.has(f)&&wa(O.get(f),h))return;const x=new Map(O);x.set(f,h),e.set(x)})}});const l=c=>{const p=(c??"").trim();if(p)return e().get(`${n()}\0${p}`)??void 0};return{typeOf:l,dataTypeOf:c=>l(c)?.dataType,objectTypeOf:c=>l(c)?.objectType,valueSetOf:c=>l(c)?.valueSet}}function It(o,e,n){return Ft(()=>{const r=n();if(!r)return null;const t=r.references,i=r.usage??"any";return{scope:`references|${i}`,version:t,values:r.values,resolve:l=>ka(o,t,l,e,i)}})}function Na(o,e){return Ft(()=>{const n=e(),r=n?.container;if(!n||!r?.name)return null;const t=n.usage??"any";return{scope:`${r.kind}:${r.name}|${t}`,version:"container",values:n.paths,resolve:i=>Rt(o,r,i,t)}})}function sn(o,e){const n=b(En).nativeElement,r=b(Nr),t=l=>{const c=l.target;!c||c instanceof Node&&!c.isConnected||o()&&!n.contains(c)&&e()},i=l=>{l.key!=="Escape"||!o()||!n.contains(l.target)||(l.stopPropagation(),e())};r.addEventListener("pointerdown",t,!0),r.addEventListener("keydown",i,!0),b(Qe).onDestroy(()=>{r.removeEventListener("pointerdown",t,!0),r.removeEventListener("keydown",i,!0)})}function Et(o,e){if(!e.length)return o;const n=new Set(o.map(r=>r.name.toLowerCase()));return[...o,...e.filter(r=>!n.has(r.name.toLowerCase()))]}class ${api=b(B);store=b(T);dictionaries=b(I);catalog=b(M);value=d(void 0,...ngDevMode?[{debugName:"value"}]:[]);label=d("Riferimento",...ngDevMode?[{debugName:"label"}]:[]);placeholder=d("Scegli o scrivi un riferimento",...ngDevMode?[{debugName:"placeholder"}]:[]);disabled=d(!1,...ngDevMode?[{debugName:"disabled"}]:[]);dataType=d(void 0,...ngDevMode?[{debugName:"dataType"}]:[]);isCollection=d(void 0,...ngDevMode?[{debugName:"isCollection"}]:[]);objectType=d(void 0,...ngDevMode?[{debugName:"objectType"}]:[]);writableOnly=d(!1,...ngDevMode?[{debugName:"writableOnly"}]:[]);elementsOnly=d(!1,...ngDevMode?[{debugName:"elementsOnly"}]:[]);extraReferences=d([],...ngDevMode?[{debugName:"extraReferences"}]:[]);valueChange=v();unfiltered=u([],...ngDevMode?[{debugName:"unfiltered"}]:[]);available=u([],...ngDevMode?[{debugName:"available"}]:[]);references=s(()=>gt(Et(this.available(),this.extraReferences()),{dataType:this.dataType()??void 0,isCollection:this.isCollection()??void 0,objectType:this.objectType()??void 0}),...ngDevMode?[{debugName:"references"}]:[]);roots=s(()=>Et(this.unfiltered(),this.extraReferences()),...ngDevMode?[{debugName:"roots"}]:[]);isLoading=u(!1,...ngDevMode?[{debugName:"isLoading"}]:[]);loadError=u(null,...ngDevMode?[{debugName:"loadError"}]:[]);isOpen=u(!1,...ngDevMode?[{debugName:"isOpen"}]:[]);query=u("",...ngDevMode?[{debugName:"query"}]:[]);panel=ne("panel",...ngDevMode?[{debugName:"panel"}]:[]);constructor(){sn(this.isOpen,()=>this.close()),w(()=>{const e=this.store.document(),n=this.writableOnly();if(this.elementsOnly()){const r=this.store.nodes().map(t=>({name:t.name,label:t.node.label??null,kind:"ElementOutput",description:this.dictionaries.labelOf(t.type),isWritable:!1}));this.unfiltered.set(r),this.available.set(r);return}this.isLoading.set(!0),this.loadError.set(null),this.api.getReferences(e).then(r=>{this.unfiltered.set(r??[]),n||this.available.set(r??[])}).catch(r=>{this.loadError.set(r instanceof Error?r.message:String(r)),this.unfiltered.set([]),n||this.available.set([])}).finally(()=>{n||this.isLoading.set(!1)}),n&&this.api.getWritableReferences(e).then(r=>this.available.set(r??[])).catch(r=>{this.loadError.set(r instanceof Error?r.message:String(r)),this.available.set([])}).finally(()=>this.isLoading.set(!1))})}declaredPrefix=s(()=>$t(this.roots(),this.value()),...ngDevMode?[{debugName:"declaredPrefix"}]:[]);navigableRoot=s(()=>br(this.roots(),this.value(),e=>this.dictionaries.isStructure(e)),...ngDevMode?[{debugName:"navigableRoot"}]:[]);proposalRoot=s(()=>br(this.roots(),this.value(),e=>this.dictionaries.isStructure(e),{proposeOnly:!0}),...ngDevMode?[{debugName:"proposalRoot"}]:[]);navigatedPath=s(()=>this.proposalRoot()?.path??"",...ngDevMode?[{debugName:"navigatedPath"}]:[]);navigation=Nn(this.catalog,()=>{const e=this.proposalRoot();return e?{root:e.container,path:this.navigatedPath()}:null});resolution=this.navigation.resolution;tail=s(()=>this.resolution()?.tail,...ngDevMode?[{debugName:"tail"}]:[]);isReadOnlyPath=s(()=>{const e=this.proposalRoot()?.reference;return e?e.kind==="ElementOutput"?!0:gn(e.name)&&Ze(e.name)!=="$Record":!1},...ngDevMode?[{debugName:"isReadOnlyPath"}]:[]);pathReferences=s(()=>{const e=this.proposalRoot(),n=this.tail();if(!e||!n)return[];const r=n.prefix?`${e.reference.name}.${n.prefix}`:e.reference.name,t=n.level.container.kind==="object"?"RecordField":"StructureMember";return n.level.entries.map(i=>this.isReadOnlyPath()?{...i,isWritable:!1}:i).filter(i=>!this.writableOnly()||i.isWritable||!!i.next).filter(i=>this.matchesTarget(i)).map(i=>({name:`${r}.${i.name}`,label:i.label??null,kind:t,dataType:i.dataType??null,isCollection:i.isCollection??!1,objectType:i.objectType??null,isWritable:i.isWritable,description:this.segmentDescription(i)}))},...ngDevMode?[{debugName:"pathReferences"}]:[]);segmentDescription(e){return this.proposalRoot()?.reference.kind==="ElementOutput"?"campo del record letto \xB7 percorso non verificato":e.isWritable?e.description??null:"sola lettura"}matchesTarget(e){return e.next?!0:er(e,{dataType:this.dataType()??void 0,isCollection:this.isCollection()??void 0,objectType:this.objectType()??void 0})}containerOptions=s(()=>{const e=new Set(this.references().map(n=>n.name));return this.unfiltered().filter(n=>e.has(n.name)||!this.canDescend(n)?!1:!(this.writableOnly()&&gn(n.name)&&Ze(n.name)!=="$Record"))},...ngDevMode?[{debugName:"containerOptions"}]:[]);isContainerOnly(e){return this.containerOptions().some(n=>n.name===e.name)}options=s(()=>{const e=this.query()?.trim().toLowerCase(),n=[...this.pathReferences(),...this.references(),...this.containerOptions()];return e?n.filter(r=>`${r.name} ${r.label??""} ${r.description??""}`.toLowerCase().includes(e)):n},...ngDevMode?[{debugName:"options"}]:[]);groups=s(()=>{const e=[];for(const n of this.options()){const r=n.kind??"Variable";let t=e.find(i=>i.kind===r);t||(t={kind:r,label:$.kindLabel(r),items:[]},e.push(t)),t.items.push(n)}return e},...ngDevMode?[{debugName:"groups"}]:[]);static kindLabel(e){switch(e){case"Variable":return"Variabili";case"Constant":return"Costanti";case"Formula":return"Formule";case"TextTemplate":return"Text template";case"Choice":return"Choice";case"DynamicChoiceSet":return"Dynamic choice set";case"Stage":return"Stage";case"ScreenField":return"Campi di schermata";case"ElementOutput":return"Output di elementi";case"StructureMember":return"Membri della classe";case"RecordField":return"Campi del record";case"Global":return"Variabili globali";default:return e}}valueState=s(()=>{const e=(this.value()??"")?.trim();if(!e)return"empty";const n=this.references();if(n.some(i=>i.name===e))return"known";const r=Ze(e);if(this.dictionaries.globalScope(r)&&!this.dictionaries.isGlobalScopeVerifiable(r))return"host";if(this.navigableRoot()){if(!this.navigatedPath())return"containerRoot";const i=this.resolution();switch(i?.status){case"unknown":return"memberUnknown";case"unverifiable":return"pathUnverified";case"resolved":return this.writableOnly()&&(this.isReadOnlyPath()||!i.last?.isWritable)?"memberNotWritable":"member";default:return"empty"}}const t=this.declaredPrefix();return t&&t.name!==e&&gn(t.name)?(this.dictionaries.isStructure(t.dataType)||t.dataType==="Object")&&!t.objectType&&!t.isCollection?"globalPathUntyped":"globalPathInvalid":this.roots().some(i=>i.name===r)?"navigated":n.length===0&&this.isLoading()?"empty":"unknown"},...ngDevMode?[{debugName:"valueState"}]:[]);tailIsObject=s(()=>{const e=this.resolution();return e?.levels[e.levels.length-1]?.container.kind==="object"},...ngDevMode?[{debugName:"tailIsObject"}]:[]);tailContainer=s(()=>{const e=this.resolution();return e?.levels[e.levels.length-1]?.container.name??""},...ngDevMode?[{debugName:"tailContainer"}]:[]);hint=s(()=>{const e=this.resolution();switch(this.valueState()){case"host":return"Scope risolto dal sistema ospite, che non dichiara i suoi percorsi: il backend non puo\u2019 verificarlo.";case"navigated":return"Percorso su un output automatico: la validazione non verifica i segmenti dopo il punto.";case"member":return`${this.tailIsObject()?"Campo":"Membro"} di ${this.tailContainer()}: il percorso e\u2019 verificato fino in fondo.`;case"containerRoot":return this.tailIsObject()?"Questo e\u2019 il record intero, e il campo vuole un altro tipo: scegli un suo campo.":"Questa e\u2019 l\u2019istanza di classe, e il campo vuole un altro tipo: scegli un suo membro.";case"memberUnknown":{if(!e)return null;const n=e.stoppedAt?.segment??"",r=wn(e).join(", "),t=this.tailIsObject()?`\xAB${n}\xBB non e\u2019 un campo di ${this.tailContainer()} (FIELD_UNKNOWN).`:`\xAB${n}\xBB non e\u2019 un membro di ${this.tailContainer()} (STRUCTURE_MEMBER_UNKNOWN).`;return r?`${t} Disponibili: ${r}.`:t}case"memberNotWritable":return this.isReadOnlyPath()?"Le variabili globali sono di sola lettura, membri compresi: assegnarlo e\u2019 TARGET_NOT_WRITABLE.":this.tailIsObject()?"Questo campo non si scrive ne\u2019 creando ne\u2019 aggiornando un record: assegnarlo e\u2019 TARGET_NOT_WRITABLE.":"Questo membro e\u2019 calcolato: si legge, ma assegnarlo e\u2019 TARGET_NOT_WRITABLE.";case"pathUnverified":return e?kn(e):null;case"globalPathUntyped":return`\xAB${this.declaredPrefix()?.name}\xBB porta un contenitore, ma il catalogo non ne dichiara il tipo: il percorso non e\u2019 verificabile (PATH_NOT_VERIFIABLE).`;case"globalPathInvalid":return`\xAB${this.declaredPrefix()?.name}\xBB e\u2019 un valore, non un contenitore: dopo il punto non c\u2019e\u2019 niente da navigare (GLOBAL_UNKNOWN).`;case"unknown":return"Questo nome non e\u2019 fra i riferimenti disponibili: la validazione lo segnalerebbe.";default:return null}},...ngDevMode?[{debugName:"hint"}]:[]);isHintWarning=s(()=>["unknown","containerRoot","globalPathUntyped"].includes(this.valueState()),...ngDevMode?[{debugName:"isHintWarning"}]:[]);isHintError=s(()=>["memberUnknown","memberNotWritable","globalPathInvalid"].includes(this.valueState()),...ngDevMode?[{debugName:"isHintError"}]:[]);errorMessage=s(()=>this.loadError(),...ngDevMode?[{debugName:"errorMessage"}]:[]);open(){this.disabled()||this.isOpen.set(!0)}close(){this.isOpen.set(!1),this.query.set("")}toggle(){this.isOpen()?this.close():this.open()}onQuery(e){this.query.set(e)}choose(e){if(this.isContainerOnly(e)){this.descend(e);return}this.valueChange.emit(e.name),this.close()}descend(e){this.valueChange.emit(`${e.name}.`),this.query.set("");const n=this.panel()?.nativeElement;n&&(n.scrollTop=0)}canDescend(e){return e.isCollection||!e.objectType||this.writableOnly()&&e.kind==="ElementOutput"?!1:this.dictionaries.isStructure(e.dataType)||e.dataType==="Object"}onManualInput(e){this.valueChange.emit(e?.trim()?e?.trim():void 0)}clear(){this.valueChange.emit(void 0)}describe(e){const n=[];return e.dataType&&n.push(e.isCollection?`${e.dataType}[]`:e.dataType),e.objectType&&n.push(e.objectType),e.description&&n.push(e.description),this.isContainerOnly(e)&&n.push(e.dataType==="Object"?"entra e scegli un campo":"entra e scegli un membro"),n.join(" \xB7 ")}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:$,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:$,isStandalone:!0,selector:"fb-reference-picker",inputs:{value:{classPropertyName:"value",publicName:"value",isSignal:!0,isRequired:!1,transformFunction:null},label:{classPropertyName:"label",publicName:"label",isSignal:!0,isRequired:!1,transformFunction:null},placeholder:{classPropertyName:"placeholder",publicName:"placeholder",isSignal:!0,isRequired:!1,transformFunction:null},disabled:{classPropertyName:"disabled",publicName:"disabled",isSignal:!0,isRequired:!1,transformFunction:null},dataType:{classPropertyName:"dataType",publicName:"dataType",isSignal:!0,isRequired:!1,transformFunction:null},isCollection:{classPropertyName:"isCollection",publicName:"isCollection",isSignal:!0,isRequired:!1,transformFunction:null},objectType:{classPropertyName:"objectType",publicName:"objectType",isSignal:!0,isRequired:!1,transformFunction:null},writableOnly:{classPropertyName:"writableOnly",publicName:"writableOnly",isSignal:!0,isRequired:!1,transformFunction:null},elementsOnly:{classPropertyName:"elementsOnly",publicName:"elementsOnly",isSignal:!0,isRequired:!1,transformFunction:null},extraReferences:{classPropertyName:"extraReferences",publicName:"extraReferences",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{valueChange:"valueChange"},viewQueries:[{propertyName:"panel",first:!0,predicate:["panel"],descendants:!0,isSignal:!0}],ngImport:a,template:`<div class="fb-ref" [class.fb-ref--open]="isOpen()">\r
|
|
584
918
|
<div class="fb-ref__control">\r
|
|
585
919
|
<input\r
|
|
586
920
|
class="fb-ref__input"\r
|
|
@@ -624,7 +958,7 @@
|
|
|
624
958
|
}\r
|
|
625
959
|
\r
|
|
626
960
|
@if (isOpen()) {\r
|
|
627
|
-
<div class="fb-ref__panel" role="listbox">\r
|
|
961
|
+
<div #panel class="fb-ref__panel" role="listbox">\r
|
|
628
962
|
<input\r
|
|
629
963
|
class="fb-ref__search"\r
|
|
630
964
|
type="search"\r
|
|
@@ -673,7 +1007,7 @@
|
|
|
673
1007
|
}\r
|
|
674
1008
|
</div>\r
|
|
675
1009
|
`,styles:[`:host{display:block}.fb-ref{position:relative}.fb-ref__control{display:flex;align-items:stretch;gap:0;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);overflow:hidden}.fb-ref--open .fb-ref__control{border-color:var(--fb-accent, #2f6feb)}.fb-ref__input{flex:1;min-width:0;padding:5px 7px;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fb-ref__input:focus-visible{outline:none}.fb-ref__toggle,.fb-ref__clear{flex:0 0 auto;padding:0 7px;border:0;border-left:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:12px;cursor:pointer}.fb-ref__toggle:hover,.fb-ref__clear:hover{background:var(--fb-surface-alt, #f8f9fb)}.fb-ref__hint{margin:3px 0 0;font-size:10px;line-height:1.35;color:var(--fb-text-subtle, #98a2b3)}.fb-ref__hint--warn{color:var(--fb-warning, #b7791f)}.fb-ref__hint--error{color:var(--fb-error, #c9372c)}.fb-ref__panel{position:absolute;z-index:30;top:calc(100% + 3px);left:0;right:0;max-height:260px;overflow-y:auto;padding:6px;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);box-shadow:0 6px 18px #10182829}.fb-ref__search{box-sizing:border-box;width:100%;margin-bottom:6px;padding:4px 6px;border:1px solid var(--fb-border, #d6dae1);border-radius:5px;font:inherit;font-size:12px}.fb-ref__group{margin-bottom:6px}.fb-ref__group-label{display:block;padding:2px 4px;font-size:9px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--fb-text-subtle, #98a2b3)}.fb-ref__row{display:flex;align-items:stretch;gap:2px}.fb-ref__into{flex:0 0 auto;padding:0 7px;border:0;border-radius:4px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:13px;cursor:pointer}.fb-ref__into:hover{background:var(--fb-surface-alt, #f8f9fb);color:var(--fb-accent, #2f6feb)}.fb-ref__option{display:flex;flex:1;flex-direction:column;min-width:0;width:100%;padding:4px 6px;border:0;border-radius:4px;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-ref__option:hover,.fb-ref__option[aria-selected=true]{background:var(--fb-surface-alt, #f8f9fb)}.fb-ref__name{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.fb-ref__meta{font-size:10px;color:var(--fb-text-muted, #667085)}.fb-ref__empty{margin:4px;font-size:11px;color:var(--fb-text-muted, #667085)}.fb-ref__close{width:100%;margin-top:4px;padding:4px;border:0;border-top:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}
|
|
676
|
-
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type
|
|
1010
|
+
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:$,decorators:[{type:y,args:[{selector:"fb-reference-picker",standalone:!0,changeDetection:_.OnPush,template:`<div class="fb-ref" [class.fb-ref--open]="isOpen()">\r
|
|
677
1011
|
<div class="fb-ref__control">\r
|
|
678
1012
|
<input\r
|
|
679
1013
|
class="fb-ref__input"\r
|
|
@@ -717,7 +1051,7 @@
|
|
|
717
1051
|
}\r
|
|
718
1052
|
\r
|
|
719
1053
|
@if (isOpen()) {\r
|
|
720
|
-
<div class="fb-ref__panel" role="listbox">\r
|
|
1054
|
+
<div #panel class="fb-ref__panel" role="listbox">\r
|
|
721
1055
|
<input\r
|
|
722
1056
|
class="fb-ref__search"\r
|
|
723
1057
|
type="search"\r
|
|
@@ -766,7 +1100,7 @@
|
|
|
766
1100
|
}\r
|
|
767
1101
|
</div>\r
|
|
768
1102
|
`,styles:[`:host{display:block}.fb-ref{position:relative}.fb-ref__control{display:flex;align-items:stretch;gap:0;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);overflow:hidden}.fb-ref--open .fb-ref__control{border-color:var(--fb-accent, #2f6feb)}.fb-ref__input{flex:1;min-width:0;padding:5px 7px;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fb-ref__input:focus-visible{outline:none}.fb-ref__toggle,.fb-ref__clear{flex:0 0 auto;padding:0 7px;border:0;border-left:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:12px;cursor:pointer}.fb-ref__toggle:hover,.fb-ref__clear:hover{background:var(--fb-surface-alt, #f8f9fb)}.fb-ref__hint{margin:3px 0 0;font-size:10px;line-height:1.35;color:var(--fb-text-subtle, #98a2b3)}.fb-ref__hint--warn{color:var(--fb-warning, #b7791f)}.fb-ref__hint--error{color:var(--fb-error, #c9372c)}.fb-ref__panel{position:absolute;z-index:30;top:calc(100% + 3px);left:0;right:0;max-height:260px;overflow-y:auto;padding:6px;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);box-shadow:0 6px 18px #10182829}.fb-ref__search{box-sizing:border-box;width:100%;margin-bottom:6px;padding:4px 6px;border:1px solid var(--fb-border, #d6dae1);border-radius:5px;font:inherit;font-size:12px}.fb-ref__group{margin-bottom:6px}.fb-ref__group-label{display:block;padding:2px 4px;font-size:9px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--fb-text-subtle, #98a2b3)}.fb-ref__row{display:flex;align-items:stretch;gap:2px}.fb-ref__into{flex:0 0 auto;padding:0 7px;border:0;border-radius:4px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:13px;cursor:pointer}.fb-ref__into:hover{background:var(--fb-surface-alt, #f8f9fb);color:var(--fb-accent, #2f6feb)}.fb-ref__option{display:flex;flex:1;flex-direction:column;min-width:0;width:100%;padding:4px 6px;border:0;border-radius:4px;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-ref__option:hover,.fb-ref__option[aria-selected=true]{background:var(--fb-surface-alt, #f8f9fb)}.fb-ref__name{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.fb-ref__meta{font-size:10px;color:var(--fb-text-muted, #667085)}.fb-ref__empty{margin:4px;font-size:11px;color:var(--fb-text-muted, #667085)}.fb-ref__close{width:100%;margin-top:4px;padding:4px;border:0;border-top:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}
|
|
769
|
-
`]}]}],ctorParameters:()=>[],propDecorators:{value:[{type:a.Input,args:[{isSignal:!0,alias:"value",required:!1}]}],label:[{type:a.Input,args:[{isSignal:!0,alias:"label",required:!1}]}],placeholder:[{type:a.Input,args:[{isSignal:!0,alias:"placeholder",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],dataType:[{type:a.Input,args:[{isSignal:!0,alias:"dataType",required:!1}]}],isCollection:[{type:a.Input,args:[{isSignal:!0,alias:"isCollection",required:!1}]}],objectType:[{type:a.Input,args:[{isSignal:!0,alias:"objectType",required:!1}]}],writableOnly:[{type:a.Input,args:[{isSignal:!0,alias:"writableOnly",required:!1}]}],elementsOnly:[{type:a.Input,args:[{isSignal:!0,alias:"elementsOnly",required:!1}]}],extraReferences:[{type:a.Input,args:[{isSignal:!0,alias:"extraReferences",required:!1}]}],valueChange:[{type:a.Output,args:["valueChange"]}]}});class q{catalog=b(
|
|
1103
|
+
`]}]}],ctorParameters:()=>[],propDecorators:{value:[{type:a.Input,args:[{isSignal:!0,alias:"value",required:!1}]}],label:[{type:a.Input,args:[{isSignal:!0,alias:"label",required:!1}]}],placeholder:[{type:a.Input,args:[{isSignal:!0,alias:"placeholder",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],dataType:[{type:a.Input,args:[{isSignal:!0,alias:"dataType",required:!1}]}],isCollection:[{type:a.Input,args:[{isSignal:!0,alias:"isCollection",required:!1}]}],objectType:[{type:a.Input,args:[{isSignal:!0,alias:"objectType",required:!1}]}],writableOnly:[{type:a.Input,args:[{isSignal:!0,alias:"writableOnly",required:!1}]}],elementsOnly:[{type:a.Input,args:[{isSignal:!0,alias:"elementsOnly",required:!1}]}],extraReferences:[{type:a.Input,args:[{isSignal:!0,alias:"extraReferences",required:!1}]}],valueChange:[{type:a.Output,args:["valueChange"]}],panel:[{type:a.ViewChild,args:["panel",{isSignal:!0}]}]}});class q{catalog=b(M);value=d(void 0,...ngDevMode?[{debugName:"value"}]:[]);label=d("Oggetto",...ngDevMode?[{debugName:"label"}]:[]);placeholder=d("Scrivi o scegli un oggetto",...ngDevMode?[{debugName:"placeholder"}]:[]);disabled=d(!1,...ngDevMode?[{debugName:"disabled"}]:[]);valueChange=v();objects=u([],...ngDevMode?[{debugName:"objects"}]:[]);loadFailed=u(!1,...ngDevMode?[{debugName:"loadFailed"}]:[]);isOpen=u(!1,...ngDevMode?[{debugName:"isOpen"}]:[]);query=u(null,...ngDevMode?[{debugName:"query"}]:[]);constructor(){sn(this.isOpen,()=>this.close()),this.catalog.listObjects().then(e=>this.objects.set(e??[])).catch(()=>this.loadFailed.set(!0)),w(()=>{(this.value()??"")?.trim()!==(K(this.query)??"")?.trim()&&this.query.set(null)})}text=s(()=>this.query()??this.value()??"",...ngDevMode?[{debugName:"text"}]:[]);options=s(()=>{const e=(this.query()??"")?.trim().toLowerCase(),n=this.objects();return e?n.filter(r=>`${r.name} ${r.label??""} ${r.description??""}`.toLowerCase().includes(e)):n},...ngDevMode?[{debugName:"options"}]:[]);hasCatalog=s(()=>this.objects().length>0,...ngDevMode?[{debugName:"hasCatalog"}]:[]);isUnknown=s(()=>{const e=(this.value()??"")?.trim();return!e||!this.hasCatalog()?!1:!this.objects().some(n=>n.name===e)},...ngDevMode?[{debugName:"isUnknown"}]:[]);labelOfValue=s(()=>{const e=(this.value()??"")?.trim(),n=this.objects().find(r=>r.name===e);return n?.label&&n.label!==n.name?n.label:null},...ngDevMode?[{debugName:"labelOfValue"}]:[]);loadErrored=s(()=>this.loadFailed(),...ngDevMode?[{debugName:"loadErrored"}]:[]);open(){this.disabled()||this.isOpen.set(!0)}close(){this.isOpen.set(!1),this.query.set(null)}toggle(){this.isOpen()?this.close():this.open()}onInput(e){this.query.set(e),this.open(),this.valueChange.emit(e?.trim()?e?.trim():void 0)}choose(e){this.valueChange.emit(e.name),this.close()}clear(){this.valueChange.emit(void 0),this.close()}describe(e){const n=[];return e.label&&e.label!==e.name&&n.push(e.label),e.description&&n.push(e.description),n.join(" \xB7 ")}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:q,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:q,isStandalone:!0,selector:"fb-object-picker",inputs:{value:{classPropertyName:"value",publicName:"value",isSignal:!0,isRequired:!1,transformFunction:null},label:{classPropertyName:"label",publicName:"label",isSignal:!0,isRequired:!1,transformFunction:null},placeholder:{classPropertyName:"placeholder",publicName:"placeholder",isSignal:!0,isRequired:!1,transformFunction:null},disabled:{classPropertyName:"disabled",publicName:"disabled",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{valueChange:"valueChange"},ngImport:a,template:`<div class="fb-pick" [class.fb-pick--open]="isOpen()">\r
|
|
770
1104
|
<div class="fb-pick__control">\r
|
|
771
1105
|
<input\r
|
|
772
1106
|
class="fb-pick__input"\r
|
|
@@ -835,7 +1169,7 @@
|
|
|
835
1169
|
}\r
|
|
836
1170
|
</div>\r
|
|
837
1171
|
`,styles:[`:host{display:block}.fb-pick{position:relative}.fb-pick__control{display:flex;align-items:stretch;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);overflow:hidden}.fb-pick--open .fb-pick__control{border-color:var(--fb-accent, #2f6feb)}.fb-pick__input{flex:1;min-width:0;padding:5px 7px;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;font-size:12px}.fb-pick__input:focus-visible{outline:none}.fb-pick__input--mono,.fb-pick__name--mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fb-pick__toggle,.fb-pick__clear{flex:0 0 auto;padding:0 7px;border:0;border-left:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:12px;cursor:pointer}.fb-pick__toggle:hover,.fb-pick__clear:hover{background:var(--fb-surface-alt, #f8f9fb)}.fb-pick__hint{margin:3px 0 0;font-size:10px;line-height:1.35;color:var(--fb-text-subtle, #98a2b3)}.fb-pick__hint--warn{color:var(--fb-warning, #b7791f)}.fb-pick__hint--error{color:var(--fb-error, #c9372c)}.fb-pick__panel{position:absolute;z-index:30;top:calc(100% + 3px);left:0;right:0;max-height:260px;overflow-y:auto;padding:6px;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);box-shadow:0 6px 18px #10182829}.fb-pick__option{display:flex;flex-direction:column;width:100%;padding:4px 6px;border:0;border-radius:4px;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-pick__option:hover,.fb-pick__option[aria-selected=true]{background:var(--fb-surface-alt, #f8f9fb)}.fb-pick__row{display:flex;align-items:stretch;gap:2px}.fb-pick__row .fb-pick__option{flex:1;min-width:0}.fb-pick__into{flex:0 0 auto;padding:0 7px;border:0;border-radius:4px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:13px;cursor:pointer}.fb-pick__into:hover{background:var(--fb-surface-alt, #f8f9fb);color:var(--fb-accent, #2f6feb)}.fb-pick__name{font-size:12px}.fb-pick__meta{font-size:10px;color:var(--fb-text-muted, #667085)}.fb-pick__group{margin:2px 4px 4px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #667085)}.fb-pick__empty{margin:4px;font-size:11px;color:var(--fb-text-muted, #667085)}.fb-pick__close{width:100%;margin-top:4px;padding:4px;border:0;border-top:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}
|
|
838
|
-
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:q,decorators:[{type:
|
|
1172
|
+
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:q,decorators:[{type:y,args:[{selector:"fb-object-picker",standalone:!0,changeDetection:_.OnPush,template:`<div class="fb-pick" [class.fb-pick--open]="isOpen()">\r
|
|
839
1173
|
<div class="fb-pick__control">\r
|
|
840
1174
|
<input\r
|
|
841
1175
|
class="fb-pick__input"\r
|
|
@@ -904,7 +1238,7 @@
|
|
|
904
1238
|
}\r
|
|
905
1239
|
</div>\r
|
|
906
1240
|
`,styles:[`:host{display:block}.fb-pick{position:relative}.fb-pick__control{display:flex;align-items:stretch;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);overflow:hidden}.fb-pick--open .fb-pick__control{border-color:var(--fb-accent, #2f6feb)}.fb-pick__input{flex:1;min-width:0;padding:5px 7px;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;font-size:12px}.fb-pick__input:focus-visible{outline:none}.fb-pick__input--mono,.fb-pick__name--mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fb-pick__toggle,.fb-pick__clear{flex:0 0 auto;padding:0 7px;border:0;border-left:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:12px;cursor:pointer}.fb-pick__toggle:hover,.fb-pick__clear:hover{background:var(--fb-surface-alt, #f8f9fb)}.fb-pick__hint{margin:3px 0 0;font-size:10px;line-height:1.35;color:var(--fb-text-subtle, #98a2b3)}.fb-pick__hint--warn{color:var(--fb-warning, #b7791f)}.fb-pick__hint--error{color:var(--fb-error, #c9372c)}.fb-pick__panel{position:absolute;z-index:30;top:calc(100% + 3px);left:0;right:0;max-height:260px;overflow-y:auto;padding:6px;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);box-shadow:0 6px 18px #10182829}.fb-pick__option{display:flex;flex-direction:column;width:100%;padding:4px 6px;border:0;border-radius:4px;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-pick__option:hover,.fb-pick__option[aria-selected=true]{background:var(--fb-surface-alt, #f8f9fb)}.fb-pick__row{display:flex;align-items:stretch;gap:2px}.fb-pick__row .fb-pick__option{flex:1;min-width:0}.fb-pick__into{flex:0 0 auto;padding:0 7px;border:0;border-radius:4px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:13px;cursor:pointer}.fb-pick__into:hover{background:var(--fb-surface-alt, #f8f9fb);color:var(--fb-accent, #2f6feb)}.fb-pick__name{font-size:12px}.fb-pick__meta{font-size:10px;color:var(--fb-text-muted, #667085)}.fb-pick__group{margin:2px 4px 4px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #667085)}.fb-pick__empty{margin:4px;font-size:11px;color:var(--fb-text-muted, #667085)}.fb-pick__close{width:100%;margin-top:4px;padding:4px;border:0;border-top:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}
|
|
907
|
-
`]}]}],ctorParameters:()=>[],propDecorators:{value:[{type:a.Input,args:[{isSignal:!0,alias:"value",required:!1}]}],label:[{type:a.Input,args:[{isSignal:!0,alias:"label",required:!1}]}],placeholder:[{type:a.Input,args:[{isSignal:!0,alias:"placeholder",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],valueChange:[{type:a.Output,args:["valueChange"]}]}});class P{catalog=b(
|
|
1241
|
+
`]}]}],ctorParameters:()=>[],propDecorators:{value:[{type:a.Input,args:[{isSignal:!0,alias:"value",required:!1}]}],label:[{type:a.Input,args:[{isSignal:!0,alias:"label",required:!1}]}],placeholder:[{type:a.Input,args:[{isSignal:!0,alias:"placeholder",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],valueChange:[{type:a.Output,args:["valueChange"]}]}});class P{catalog=b(M);value=d(void 0,...ngDevMode?[{debugName:"value"}]:[]);object=d(void 0,...ngDevMode?[{debugName:"object"}]:[]);usage=d("any",...ngDevMode?[{debugName:"usage"}]:[]);label=d("Campo",...ngDevMode?[{debugName:"label"}]:[]);placeholder=d("Scrivi o scegli un campo",...ngDevMode?[{debugName:"placeholder"}]:[]);disabled=d(!1,...ngDevMode?[{debugName:"disabled"}]:[]);valueChange=v();isOpen=u(!1,...ngDevMode?[{debugName:"isOpen"}]:[]);query=u(null,...ngDevMode?[{debugName:"query"}]:[]);navigation=Nn(this.catalog,()=>({root:this.object()?{kind:"object",name:this.object()}:null,path:this.query()??this.value()??"",usage:this.usage()}));resolution=this.navigation.resolution;constructor(){sn(this.isOpen,()=>this.close()),w(()=>{(this.value()??"")?.trim()!==(K(this.query)??"")?.trim()&&this.query.set(null)})}text=s(()=>this.query()??this.value()??"",...ngDevMode?[{debugName:"text"}]:[]);tail=s(()=>this.resolution()?.tail,...ngDevMode?[{debugName:"tail"}]:[]);prefix=s(()=>{const e=this.tail()?.prefix??"";return e?`${e}.`:""},...ngDevMode?[{debugName:"prefix"}]:[]);options=s(()=>{const e=this.tail();if(!e)return[];const n=e.segment?.trim().toLowerCase();return n?e.level.entries.filter(r=>`${r.name} ${r.label??""}`.toLowerCase().includes(n)):e.level.entries},...ngDevMode?[{debugName:"options"}]:[]);hasCatalog=s(()=>this.tail()?.level.status==="declared",...ngDevMode?[{debugName:"hasCatalog"}]:[]);levelLabel=s(()=>this.tail()?.level.container.name??"",...ngDevMode?[{debugName:"levelLabel"}]:[]);isPath=s(()=>(this.resolution()?.segments.length??1)>1,...ngDevMode?[{debugName:"isPath"}]:[]);isUnknown=s(()=>this.resolution()?.status==="unknown",...ngDevMode?[{debugName:"isUnknown"}]:[]);isNotVerifiable=s(()=>this.resolution()?.status==="unverifiable",...ngDevMode?[{debugName:"isNotVerifiable"}]:[]);unknownMessage=s(()=>{const e=this.resolution(),n=e?.stoppedAt?.segment??"",r=this.levelLabel(),t=e?wn(e).join(", "):"",i=`\xAB${n}\xBB`,l=this.isPath()?` di ${r}`:"",c=t?` Disponibili: ${t}.`:"";switch(this.usage()){case"filterable":return`${i} non e\u2019 fra i campi filtrabili${l}.${c}`;case"sortable":return`${i} non e\u2019 fra i campi su cui si puo\u2019 ordinare${l}.${c}`;case"updateable":return`${i} non e\u2019 fra i campi aggiornabili${l}.${c}`;case"createable":return`${i} non e\u2019 fra i campi valorizzabili alla creazione${l}.${c}`;default:return`${i} non e\u2019 un campo${l||" dell\u2019oggetto"}.${c}`}},...ngDevMode?[{debugName:"unknownMessage"}]:[]);notVerifiableMessage=s(()=>{const e=this.resolution();return e?kn(e):""},...ngDevMode?[{debugName:"notVerifiableMessage"}]:[]);describeValue=s(()=>{const e=this.resolution()?.last;return e&&en(e)||null},...ngDevMode?[{debugName:"describeValue"}]:[]);loadErrored=s(()=>this.resolution()?.levels[0]?.status==="unknown-catalog",...ngDevMode?[{debugName:"loadErrored"}]:[]);open(){this.disabled()||this.isOpen.set(!0)}close(){this.isOpen.set(!1),this.query.set(null)}toggle(){this.isOpen()?this.close():this.open()}onInput(e){this.query.set(e),this.open(),this.valueChange.emit(e?.trim()?e?.trim():void 0)}choose(e){this.valueChange.emit(`${this.prefix()}${e.name}`),this.close()}descend(e){const n=`${this.prefix()}${e.name}.`;this.query.set(n),this.valueChange.emit(n),this.open()}canDescend(e){return!!e.next}clear(){this.valueChange.emit(void 0),this.close()}describe(e){return en(e)}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:P,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:P,isStandalone:!0,selector:"fb-field-picker",inputs:{value:{classPropertyName:"value",publicName:"value",isSignal:!0,isRequired:!1,transformFunction:null},object:{classPropertyName:"object",publicName:"object",isSignal:!0,isRequired:!1,transformFunction:null},usage:{classPropertyName:"usage",publicName:"usage",isSignal:!0,isRequired:!1,transformFunction:null},label:{classPropertyName:"label",publicName:"label",isSignal:!0,isRequired:!1,transformFunction:null},placeholder:{classPropertyName:"placeholder",publicName:"placeholder",isSignal:!0,isRequired:!1,transformFunction:null},disabled:{classPropertyName:"disabled",publicName:"disabled",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{valueChange:"valueChange"},ngImport:a,template:`<div class="fb-pick" [class.fb-pick--open]="isOpen()">\r
|
|
908
1242
|
<div class="fb-pick__control">\r
|
|
909
1243
|
<input\r
|
|
910
1244
|
class="fb-pick__input"\r
|
|
@@ -993,7 +1327,7 @@
|
|
|
993
1327
|
}\r
|
|
994
1328
|
</div>\r
|
|
995
1329
|
`,styles:[`:host{display:block}.fb-pick{position:relative}.fb-pick__control{display:flex;align-items:stretch;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);overflow:hidden}.fb-pick--open .fb-pick__control{border-color:var(--fb-accent, #2f6feb)}.fb-pick__input{flex:1;min-width:0;padding:5px 7px;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;font-size:12px}.fb-pick__input:focus-visible{outline:none}.fb-pick__input--mono,.fb-pick__name--mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fb-pick__toggle,.fb-pick__clear{flex:0 0 auto;padding:0 7px;border:0;border-left:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:12px;cursor:pointer}.fb-pick__toggle:hover,.fb-pick__clear:hover{background:var(--fb-surface-alt, #f8f9fb)}.fb-pick__hint{margin:3px 0 0;font-size:10px;line-height:1.35;color:var(--fb-text-subtle, #98a2b3)}.fb-pick__hint--warn{color:var(--fb-warning, #b7791f)}.fb-pick__hint--error{color:var(--fb-error, #c9372c)}.fb-pick__panel{position:absolute;z-index:30;top:calc(100% + 3px);left:0;right:0;max-height:260px;overflow-y:auto;padding:6px;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);box-shadow:0 6px 18px #10182829}.fb-pick__option{display:flex;flex-direction:column;width:100%;padding:4px 6px;border:0;border-radius:4px;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-pick__option:hover,.fb-pick__option[aria-selected=true]{background:var(--fb-surface-alt, #f8f9fb)}.fb-pick__row{display:flex;align-items:stretch;gap:2px}.fb-pick__row .fb-pick__option{flex:1;min-width:0}.fb-pick__into{flex:0 0 auto;padding:0 7px;border:0;border-radius:4px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:13px;cursor:pointer}.fb-pick__into:hover{background:var(--fb-surface-alt, #f8f9fb);color:var(--fb-accent, #2f6feb)}.fb-pick__name{font-size:12px}.fb-pick__meta{font-size:10px;color:var(--fb-text-muted, #667085)}.fb-pick__group{margin:2px 4px 4px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #667085)}.fb-pick__empty{margin:4px;font-size:11px;color:var(--fb-text-muted, #667085)}.fb-pick__close{width:100%;margin-top:4px;padding:4px;border:0;border-top:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}
|
|
996
|
-
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:P,decorators:[{type:
|
|
1330
|
+
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:P,decorators:[{type:y,args:[{selector:"fb-field-picker",standalone:!0,changeDetection:_.OnPush,template:`<div class="fb-pick" [class.fb-pick--open]="isOpen()">\r
|
|
997
1331
|
<div class="fb-pick__control">\r
|
|
998
1332
|
<input\r
|
|
999
1333
|
class="fb-pick__input"\r
|
|
@@ -1082,7 +1416,7 @@
|
|
|
1082
1416
|
}\r
|
|
1083
1417
|
</div>\r
|
|
1084
1418
|
`,styles:[`:host{display:block}.fb-pick{position:relative}.fb-pick__control{display:flex;align-items:stretch;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);overflow:hidden}.fb-pick--open .fb-pick__control{border-color:var(--fb-accent, #2f6feb)}.fb-pick__input{flex:1;min-width:0;padding:5px 7px;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;font-size:12px}.fb-pick__input:focus-visible{outline:none}.fb-pick__input--mono,.fb-pick__name--mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fb-pick__toggle,.fb-pick__clear{flex:0 0 auto;padding:0 7px;border:0;border-left:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:12px;cursor:pointer}.fb-pick__toggle:hover,.fb-pick__clear:hover{background:var(--fb-surface-alt, #f8f9fb)}.fb-pick__hint{margin:3px 0 0;font-size:10px;line-height:1.35;color:var(--fb-text-subtle, #98a2b3)}.fb-pick__hint--warn{color:var(--fb-warning, #b7791f)}.fb-pick__hint--error{color:var(--fb-error, #c9372c)}.fb-pick__panel{position:absolute;z-index:30;top:calc(100% + 3px);left:0;right:0;max-height:260px;overflow-y:auto;padding:6px;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);box-shadow:0 6px 18px #10182829}.fb-pick__option{display:flex;flex-direction:column;width:100%;padding:4px 6px;border:0;border-radius:4px;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-pick__option:hover,.fb-pick__option[aria-selected=true]{background:var(--fb-surface-alt, #f8f9fb)}.fb-pick__row{display:flex;align-items:stretch;gap:2px}.fb-pick__row .fb-pick__option{flex:1;min-width:0}.fb-pick__into{flex:0 0 auto;padding:0 7px;border:0;border-radius:4px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:13px;cursor:pointer}.fb-pick__into:hover{background:var(--fb-surface-alt, #f8f9fb);color:var(--fb-accent, #2f6feb)}.fb-pick__name{font-size:12px}.fb-pick__meta{font-size:10px;color:var(--fb-text-muted, #667085)}.fb-pick__group{margin:2px 4px 4px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #667085)}.fb-pick__empty{margin:4px;font-size:11px;color:var(--fb-text-muted, #667085)}.fb-pick__close{width:100%;margin-top:4px;padding:4px;border:0;border-top:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}
|
|
1085
|
-
`]}]}],ctorParameters:()=>[],propDecorators:{value:[{type:a.Input,args:[{isSignal:!0,alias:"value",required:!1}]}],object:[{type:a.Input,args:[{isSignal:!0,alias:"object",required:!1}]}],usage:[{type:a.Input,args:[{isSignal:!0,alias:"usage",required:!1}]}],label:[{type:a.Input,args:[{isSignal:!0,alias:"label",required:!1}]}],placeholder:[{type:a.Input,args:[{isSignal:!0,alias:"placeholder",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],valueChange:[{type:a.Output,args:["valueChange"]}]}});class
|
|
1419
|
+
`]}]}],ctorParameters:()=>[],propDecorators:{value:[{type:a.Input,args:[{isSignal:!0,alias:"value",required:!1}]}],object:[{type:a.Input,args:[{isSignal:!0,alias:"object",required:!1}]}],usage:[{type:a.Input,args:[{isSignal:!0,alias:"usage",required:!1}]}],label:[{type:a.Input,args:[{isSignal:!0,alias:"label",required:!1}]}],placeholder:[{type:a.Input,args:[{isSignal:!0,alias:"placeholder",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],valueChange:[{type:a.Output,args:["valueChange"]}]}});class F{value=d(void 0,...ngDevMode?[{debugName:"value"}]:[]);options=d([],...ngDevMode?[{debugName:"options"}]:[]);label=d("Nome",...ngDevMode?[{debugName:"label"}]:[]);placeholder=d("Scrivi o scegli un nome",...ngDevMode?[{debugName:"placeholder"}]:[]);disabled=d(!1,...ngDevMode?[{debugName:"disabled"}]:[]);unknownMessage=d("Questo nome non e\u2019 fra quelli disponibili.",...ngDevMode?[{debugName:"unknownMessage"}]:[]);unknownSeverity=d("warn",...ngDevMode?[{debugName:"unknownSeverity"}]:[]);unusableOptions=d([],...ngDevMode?[{debugName:"unusableOptions"}]:[]);unusableMessage=d("Questo nome esiste ma non e\u2019 utilizzabile qui.",...ngDevMode?[{debugName:"unusableMessage"}]:[]);emptyMessage=d("Elenco non disponibile: puoi scrivere il nome a mano.",...ngDevMode?[{debugName:"emptyMessage"}]:[]);isMono=d(!0,...ngDevMode?[{debugName:"isMono"}]:[]);commitOn=d("input",...ngDevMode?[{debugName:"commitOn"}]:[]);valueChange=v();isOpen=u(!1,...ngDevMode?[{debugName:"isOpen"}]:[]);query=u(null,...ngDevMode?[{debugName:"query"}]:[]);constructor(){sn(this.isOpen,()=>this.close()),w(()=>{(this.value()??"")?.trim()!==(K(this.query)??"")?.trim()&&this.query.set(null)})}text=s(()=>this.query()??this.value()??"",...ngDevMode?[{debugName:"text"}]:[]);visibleOptions=s(()=>{const e=(this.query()??"")?.trim().toLowerCase(),n=this.options();return e?n.filter(r=>`${r.name} ${r.label??""} ${r.description??""}`.toLowerCase().includes(e)):n},...ngDevMode?[{debugName:"visibleOptions"}]:[]);hasOptions=s(()=>this.options().length>0,...ngDevMode?[{debugName:"hasOptions"}]:[]);isUnusable=s(()=>{const e=(this.value()??"")?.trim();return e?this.unusableOptions().some(n=>n.name===e):!1},...ngDevMode?[{debugName:"isUnusable"}]:[]);isUnknown=s(()=>{const e=(this.value()??"")?.trim();return!e||!this.hasOptions()||this.isUnusable()?!1:!this.options().some(n=>n.name===e)},...ngDevMode?[{debugName:"isUnknown"}]:[]);labelOfValue=s(()=>{const e=(this.value()??"")?.trim(),n=this.options().find(r=>r.name===e);return n&&this.describe(n)||null},...ngDevMode?[{debugName:"labelOfValue"}]:[]);open(){this.disabled()||this.isOpen.set(!0)}close(){this.isOpen.set(!1),this.query.set(null)}toggle(){this.isOpen()?this.close():this.open()}onInput(e){this.query.set(e),this.open(),this.commitOn()!=="enter"&&this.valueChange.emit(e?.trim()?e?.trim():void 0)}commit(){if(this.commitOn()!=="enter")return;const e=(this.query()??"")?.trim();e&&(this.valueChange.emit(e),this.close())}choose(e){this.valueChange.emit(e.name),this.close()}clear(){this.valueChange.emit(void 0),this.close()}describe(e){const n=[];return e.label&&e.label!==e.name&&n.push(e.label),e.description&&n.push(e.description),n.join(" \xB7 ")}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:F,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:F,isStandalone:!0,selector:"fb-name-picker",inputs:{value:{classPropertyName:"value",publicName:"value",isSignal:!0,isRequired:!1,transformFunction:null},options:{classPropertyName:"options",publicName:"options",isSignal:!0,isRequired:!1,transformFunction:null},label:{classPropertyName:"label",publicName:"label",isSignal:!0,isRequired:!1,transformFunction:null},placeholder:{classPropertyName:"placeholder",publicName:"placeholder",isSignal:!0,isRequired:!1,transformFunction:null},disabled:{classPropertyName:"disabled",publicName:"disabled",isSignal:!0,isRequired:!1,transformFunction:null},unknownMessage:{classPropertyName:"unknownMessage",publicName:"unknownMessage",isSignal:!0,isRequired:!1,transformFunction:null},unknownSeverity:{classPropertyName:"unknownSeverity",publicName:"unknownSeverity",isSignal:!0,isRequired:!1,transformFunction:null},unusableOptions:{classPropertyName:"unusableOptions",publicName:"unusableOptions",isSignal:!0,isRequired:!1,transformFunction:null},unusableMessage:{classPropertyName:"unusableMessage",publicName:"unusableMessage",isSignal:!0,isRequired:!1,transformFunction:null},emptyMessage:{classPropertyName:"emptyMessage",publicName:"emptyMessage",isSignal:!0,isRequired:!1,transformFunction:null},isMono:{classPropertyName:"isMono",publicName:"isMono",isSignal:!0,isRequired:!1,transformFunction:null},commitOn:{classPropertyName:"commitOn",publicName:"commitOn",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{valueChange:"valueChange"},ngImport:a,template:`<div class="fb-pick" [class.fb-pick--open]="isOpen()">\r
|
|
1086
1420
|
<div class="fb-pick__control">\r
|
|
1087
1421
|
<input\r
|
|
1088
1422
|
class="fb-pick__input"\r
|
|
@@ -1097,6 +1431,7 @@
|
|
|
1097
1431
|
[attr.aria-expanded]="isOpen()"\r
|
|
1098
1432
|
(input)="onInput($any($event.target).value)"\r
|
|
1099
1433
|
(focus)="open()"\r
|
|
1434
|
+
(keydown.enter)="commit()"\r
|
|
1100
1435
|
(keydown.escape)="close()"\r
|
|
1101
1436
|
/>\r
|
|
1102
1437
|
<button\r
|
|
@@ -1157,7 +1492,7 @@
|
|
|
1157
1492
|
}\r
|
|
1158
1493
|
</div>\r
|
|
1159
1494
|
`,styles:[`:host{display:block}.fb-pick{position:relative}.fb-pick__control{display:flex;align-items:stretch;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);overflow:hidden}.fb-pick--open .fb-pick__control{border-color:var(--fb-accent, #2f6feb)}.fb-pick__input{flex:1;min-width:0;padding:5px 7px;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;font-size:12px}.fb-pick__input:focus-visible{outline:none}.fb-pick__input--mono,.fb-pick__name--mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fb-pick__toggle,.fb-pick__clear{flex:0 0 auto;padding:0 7px;border:0;border-left:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:12px;cursor:pointer}.fb-pick__toggle:hover,.fb-pick__clear:hover{background:var(--fb-surface-alt, #f8f9fb)}.fb-pick__hint{margin:3px 0 0;font-size:10px;line-height:1.35;color:var(--fb-text-subtle, #98a2b3)}.fb-pick__hint--warn{color:var(--fb-warning, #b7791f)}.fb-pick__hint--error{color:var(--fb-error, #c9372c)}.fb-pick__panel{position:absolute;z-index:30;top:calc(100% + 3px);left:0;right:0;max-height:260px;overflow-y:auto;padding:6px;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);box-shadow:0 6px 18px #10182829}.fb-pick__option{display:flex;flex-direction:column;width:100%;padding:4px 6px;border:0;border-radius:4px;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-pick__option:hover,.fb-pick__option[aria-selected=true]{background:var(--fb-surface-alt, #f8f9fb)}.fb-pick__row{display:flex;align-items:stretch;gap:2px}.fb-pick__row .fb-pick__option{flex:1;min-width:0}.fb-pick__into{flex:0 0 auto;padding:0 7px;border:0;border-radius:4px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:13px;cursor:pointer}.fb-pick__into:hover{background:var(--fb-surface-alt, #f8f9fb);color:var(--fb-accent, #2f6feb)}.fb-pick__name{font-size:12px}.fb-pick__meta{font-size:10px;color:var(--fb-text-muted, #667085)}.fb-pick__group{margin:2px 4px 4px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #667085)}.fb-pick__empty{margin:4px;font-size:11px;color:var(--fb-text-muted, #667085)}.fb-pick__close{width:100%;margin-top:4px;padding:4px;border:0;border-top:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}
|
|
1160
|
-
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:
|
|
1495
|
+
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:F,decorators:[{type:y,args:[{selector:"fb-name-picker",standalone:!0,changeDetection:_.OnPush,template:`<div class="fb-pick" [class.fb-pick--open]="isOpen()">\r
|
|
1161
1496
|
<div class="fb-pick__control">\r
|
|
1162
1497
|
<input\r
|
|
1163
1498
|
class="fb-pick__input"\r
|
|
@@ -1172,6 +1507,7 @@
|
|
|
1172
1507
|
[attr.aria-expanded]="isOpen()"\r
|
|
1173
1508
|
(input)="onInput($any($event.target).value)"\r
|
|
1174
1509
|
(focus)="open()"\r
|
|
1510
|
+
(keydown.enter)="commit()"\r
|
|
1175
1511
|
(keydown.escape)="close()"\r
|
|
1176
1512
|
/>\r
|
|
1177
1513
|
<button\r
|
|
@@ -1232,7 +1568,7 @@
|
|
|
1232
1568
|
}\r
|
|
1233
1569
|
</div>\r
|
|
1234
1570
|
`,styles:[`:host{display:block}.fb-pick{position:relative}.fb-pick__control{display:flex;align-items:stretch;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);overflow:hidden}.fb-pick--open .fb-pick__control{border-color:var(--fb-accent, #2f6feb)}.fb-pick__input{flex:1;min-width:0;padding:5px 7px;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;font-size:12px}.fb-pick__input:focus-visible{outline:none}.fb-pick__input--mono,.fb-pick__name--mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fb-pick__toggle,.fb-pick__clear{flex:0 0 auto;padding:0 7px;border:0;border-left:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:12px;cursor:pointer}.fb-pick__toggle:hover,.fb-pick__clear:hover{background:var(--fb-surface-alt, #f8f9fb)}.fb-pick__hint{margin:3px 0 0;font-size:10px;line-height:1.35;color:var(--fb-text-subtle, #98a2b3)}.fb-pick__hint--warn{color:var(--fb-warning, #b7791f)}.fb-pick__hint--error{color:var(--fb-error, #c9372c)}.fb-pick__panel{position:absolute;z-index:30;top:calc(100% + 3px);left:0;right:0;max-height:260px;overflow-y:auto;padding:6px;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);box-shadow:0 6px 18px #10182829}.fb-pick__option{display:flex;flex-direction:column;width:100%;padding:4px 6px;border:0;border-radius:4px;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-pick__option:hover,.fb-pick__option[aria-selected=true]{background:var(--fb-surface-alt, #f8f9fb)}.fb-pick__row{display:flex;align-items:stretch;gap:2px}.fb-pick__row .fb-pick__option{flex:1;min-width:0}.fb-pick__into{flex:0 0 auto;padding:0 7px;border:0;border-radius:4px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:13px;cursor:pointer}.fb-pick__into:hover{background:var(--fb-surface-alt, #f8f9fb);color:var(--fb-accent, #2f6feb)}.fb-pick__name{font-size:12px}.fb-pick__meta{font-size:10px;color:var(--fb-text-muted, #667085)}.fb-pick__group{margin:2px 4px 4px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #667085)}.fb-pick__empty{margin:4px;font-size:11px;color:var(--fb-text-muted, #667085)}.fb-pick__close{width:100%;margin-top:4px;padding:4px;border:0;border-top:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}
|
|
1235
|
-
`]}]}],ctorParameters:()=>[],propDecorators:{value:[{type:a.Input,args:[{isSignal:!0,alias:"value",required:!1}]}],options:[{type:a.Input,args:[{isSignal:!0,alias:"options",required:!1}]}],label:[{type:a.Input,args:[{isSignal:!0,alias:"label",required:!1}]}],placeholder:[{type:a.Input,args:[{isSignal:!0,alias:"placeholder",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],unknownMessage:[{type:a.Input,args:[{isSignal:!0,alias:"unknownMessage",required:!1}]}],unknownSeverity:[{type:a.Input,args:[{isSignal:!0,alias:"unknownSeverity",required:!1}]}],unusableOptions:[{type:a.Input,args:[{isSignal:!0,alias:"unusableOptions",required:!1}]}],unusableMessage:[{type:a.Input,args:[{isSignal:!0,alias:"unusableMessage",required:!1}]}],emptyMessage:[{type:a.Input,args:[{isSignal:!0,alias:"emptyMessage",required:!1}]}],isMono:[{type:a.Input,args:[{isSignal:!0,alias:"isMono",required:!1}]}],valueChange:[{type:a.Output,args:["valueChange"]}]}});class J{catalog=b(
|
|
1571
|
+
`]}]}],ctorParameters:()=>[],propDecorators:{value:[{type:a.Input,args:[{isSignal:!0,alias:"value",required:!1}]}],options:[{type:a.Input,args:[{isSignal:!0,alias:"options",required:!1}]}],label:[{type:a.Input,args:[{isSignal:!0,alias:"label",required:!1}]}],placeholder:[{type:a.Input,args:[{isSignal:!0,alias:"placeholder",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],unknownMessage:[{type:a.Input,args:[{isSignal:!0,alias:"unknownMessage",required:!1}]}],unknownSeverity:[{type:a.Input,args:[{isSignal:!0,alias:"unknownSeverity",required:!1}]}],unusableOptions:[{type:a.Input,args:[{isSignal:!0,alias:"unusableOptions",required:!1}]}],unusableMessage:[{type:a.Input,args:[{isSignal:!0,alias:"unusableMessage",required:!1}]}],emptyMessage:[{type:a.Input,args:[{isSignal:!0,alias:"emptyMessage",required:!1}]}],isMono:[{type:a.Input,args:[{isSignal:!0,alias:"isMono",required:!1}]}],commitOn:[{type:a.Input,args:[{isSignal:!0,alias:"commitOn",required:!1}]}],valueChange:[{type:a.Output,args:["valueChange"]}]}});class J{catalog=b(M);value=d(void 0,...ngDevMode?[{debugName:"value"}]:[]);label=d("Classe",...ngDevMode?[{debugName:"label"}]:[]);placeholder=d("Scrivi o scegli una classe",...ngDevMode?[{debugName:"placeholder"}]:[]);disabled=d(!1,...ngDevMode?[{debugName:"disabled"}]:[]);valueChange=v();structures=u([],...ngDevMode?[{debugName:"structures"}]:[]);constructor(){this.catalog.listStructures().then(e=>this.structures.set(e??[])).catch(()=>this.structures.set([]))}options=s(()=>this.structures().map(e=>({name:e.name,label:e.label??null,description:e.description??null})),...ngDevMode?[{debugName:"options"}]:[]);static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:J,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.1.0",version:"20.3.28",type:J,isStandalone:!0,selector:"fb-structure-picker",inputs:{value:{classPropertyName:"value",publicName:"value",isSignal:!0,isRequired:!1,transformFunction:null},label:{classPropertyName:"label",publicName:"label",isSignal:!0,isRequired:!1,transformFunction:null},placeholder:{classPropertyName:"placeholder",publicName:"placeholder",isSignal:!0,isRequired:!1,transformFunction:null},disabled:{classPropertyName:"disabled",publicName:"disabled",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{valueChange:"valueChange"},ngImport:a,template:`
|
|
1236
1572
|
<fb-name-picker
|
|
1237
1573
|
[value]="value()"
|
|
1238
1574
|
[options]="options()"
|
|
@@ -1244,7 +1580,7 @@
|
|
|
1244
1580
|
emptyMessage="Elenco delle classi non disponibile: puoi scrivere il nome a mano."
|
|
1245
1581
|
(valueChange)="valueChange.emit($event)"
|
|
1246
1582
|
/>
|
|
1247
|
-
`,isInline:!0,dependencies:[{kind:"component",type:
|
|
1583
|
+
`,isInline:!0,dependencies:[{kind:"component",type:F,selector:"fb-name-picker",inputs:["value","options","label","placeholder","disabled","unknownMessage","unknownSeverity","unusableOptions","unusableMessage","emptyMessage","isMono","commitOn"],outputs:["valueChange"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:J,decorators:[{type:y,args:[{selector:"fb-structure-picker",standalone:!0,imports:[F],changeDetection:_.OnPush,template:`
|
|
1248
1584
|
<fb-name-picker
|
|
1249
1585
|
[value]="value()"
|
|
1250
1586
|
[options]="options()"
|
|
@@ -1256,7 +1592,7 @@
|
|
|
1256
1592
|
emptyMessage="Elenco delle classi non disponibile: puoi scrivere il nome a mano."
|
|
1257
1593
|
(valueChange)="valueChange.emit($event)"
|
|
1258
1594
|
/>
|
|
1259
|
-
`}]}],ctorParameters:()=>[],propDecorators:{value:[{type:a.Input,args:[{isSignal:!0,alias:"value",required:!1}]}],label:[{type:a.Input,args:[{isSignal:!0,alias:"label",required:!1}]}],placeholder:[{type:a.Input,args:[{isSignal:!0,alias:"placeholder",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],valueChange:[{type:a.Output,args:["valueChange"]}]}});class
|
|
1595
|
+
`}]}],ctorParameters:()=>[],propDecorators:{value:[{type:a.Input,args:[{isSignal:!0,alias:"value",required:!1}]}],label:[{type:a.Input,args:[{isSignal:!0,alias:"label",required:!1}]}],placeholder:[{type:a.Input,args:[{isSignal:!0,alias:"placeholder",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],valueChange:[{type:a.Output,args:["valueChange"]}]}});class he{catalog=b(M);value=d(void 0,...ngDevMode?[{debugName:"value"}]:[]);className=d(void 0,...ngDevMode?[{debugName:"className"}]:[]);usage=d("any",...ngDevMode?[{debugName:"usage"}]:[]);label=d("Membro",...ngDevMode?[{debugName:"label"}]:[]);placeholder=d("Scrivi o scegli un membro",...ngDevMode?[{debugName:"placeholder"}]:[]);disabled=d(!1,...ngDevMode?[{debugName:"disabled"}]:[]);valueChange=v();isOpen=u(!1,...ngDevMode?[{debugName:"isOpen"}]:[]);query=u(null,...ngDevMode?[{debugName:"query"}]:[]);navigation=Nn(this.catalog,()=>({root:this.className()?{kind:"structure",name:this.className()}:null,path:this.query()??this.value()??""}));resolution=this.navigation.resolution;constructor(){sn(this.isOpen,()=>this.close()),w(()=>{(this.value()??"")?.trim()!==(K(this.query)??"")?.trim()&&this.query.set(null)})}text=s(()=>this.query()??this.value()??"",...ngDevMode?[{debugName:"text"}]:[]);tail=s(()=>this.resolution()?.tail,...ngDevMode?[{debugName:"tail"}]:[]);prefix=s(()=>{const e=this.tail()?.prefix??"";return e?`${e}.`:""},...ngDevMode?[{debugName:"prefix"}]:[]);available=s(()=>{const e=this.tail()?.level.entries??[];return this.usage()!=="writable"?e:e.filter(n=>n.isWritable||!!n.next)},...ngDevMode?[{debugName:"available"}]:[]);options=s(()=>{const e=(this.tail()?.segment??"")?.trim().toLowerCase(),n=this.available();return e?n.filter(r=>`${r.name} ${r.label??""}`.toLowerCase().includes(e)):n},...ngDevMode?[{debugName:"options"}]:[]);classLabel=s(()=>xn(this.tail()?.level)||this.className()||"",...ngDevMode?[{debugName:"classLabel"}]:[]);hasCatalog=s(()=>this.tail()?.level.status==="declared",...ngDevMode?[{debugName:"hasCatalog"}]:[]);isObjectLevel=s(()=>this.tail()?.level.container.kind==="object",...ngDevMode?[{debugName:"isObjectLevel"}]:[]);rootStatus=s(()=>this.resolution()?.levels[0]?.status,...ngDevMode?[{debugName:"rootStatus"}]:[]);isClassUnknown=s(()=>this.rootStatus()==="unknown-container",...ngDevMode?[{debugName:"isClassUnknown"}]:[]);isUndeclared=s(()=>this.rootStatus()==="undeclared",...ngDevMode?[{debugName:"isUndeclared"}]:[]);loadErrored=s(()=>this.rootStatus()==="unknown-catalog"&&!!this.className(),...ngDevMode?[{debugName:"loadErrored"}]:[]);isUnknown=s(()=>this.resolution()?.status==="unknown",...ngDevMode?[{debugName:"isUnknown"}]:[]);isNotVerifiable=s(()=>this.resolution()?.status==="unverifiable"&&this.rootStatus()==="declared",...ngDevMode?[{debugName:"isNotVerifiable"}]:[]);unknownMessage=s(()=>{const e=this.resolution();if(!e)return"";const n=e.stoppedAt?.segment??"",r=wn(e).join(", "),t=e.levels[e.levels.length-1],i=t?.container.kind==="object"?`\xAB${n}\xBB non e\u2019 un campo di ${t.container.name} (FIELD_UNKNOWN).`:`\xAB${n}\xBB non e\u2019 un membro di ${t?.container.name} (STRUCTURE_MEMBER_UNKNOWN).`;return r?`${i} Disponibili: ${r}.`:i},...ngDevMode?[{debugName:"unknownMessage"}]:[]);notVerifiableMessage=s(()=>{const e=this.resolution();return e?kn(e):""},...ngDevMode?[{debugName:"notVerifiableMessage"}]:[]);isNotWritable=s(()=>{if(this.usage()!=="writable")return!1;const e=this.resolution()?.last;return!!e&&!e.isWritable},...ngDevMode?[{debugName:"isNotWritable"}]:[]);notWritableMessage=s(()=>{const e=this.resolution();return e?.levels[e.levels.length-1]?.container.kind==="object"?"Questo campo non si scrive ne\u2019 creando ne\u2019 aggiornando un record: assegnarlo e\u2019 TARGET_NOT_WRITABLE.":"Questo membro e\u2019 calcolato: si legge, ma assegnarlo e\u2019 TARGET_NOT_WRITABLE."},...ngDevMode?[{debugName:"notWritableMessage"}]:[]);describeValue=s(()=>{const e=this.resolution()?.last;return e&&en(e,{showWritability:this.usage()==="writable"})||null},...ngDevMode?[{debugName:"describeValue"}]:[]);open(){this.disabled()||this.isOpen.set(!0)}close(){this.isOpen.set(!1),this.query.set(null)}toggle(){this.isOpen()?this.close():this.open()}onInput(e){this.query.set(e),this.open(),this.valueChange.emit(e?.trim()?e?.trim():void 0)}choose(e){this.valueChange.emit(`${this.prefix()}${e.name}`),this.close()}descend(e){const n=`${this.prefix()}${e.name}.`;this.query.set(n),this.valueChange.emit(n),this.open()}canDescend(e){return!!e.next}clear(){this.valueChange.emit(void 0),this.close()}describe(e){return en(e,{showWritability:this.usage()==="writable"})}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:he,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:he,isStandalone:!0,selector:"fb-structure-member-picker",inputs:{value:{classPropertyName:"value",publicName:"value",isSignal:!0,isRequired:!1,transformFunction:null},className:{classPropertyName:"className",publicName:"className",isSignal:!0,isRequired:!1,transformFunction:null},usage:{classPropertyName:"usage",publicName:"usage",isSignal:!0,isRequired:!1,transformFunction:null},label:{classPropertyName:"label",publicName:"label",isSignal:!0,isRequired:!1,transformFunction:null},placeholder:{classPropertyName:"placeholder",publicName:"placeholder",isSignal:!0,isRequired:!1,transformFunction:null},disabled:{classPropertyName:"disabled",publicName:"disabled",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{valueChange:"valueChange"},ngImport:a,template:`<div class="fb-pick" [class.fb-pick--open]="isOpen()">\r
|
|
1260
1596
|
<div class="fb-pick__control">\r
|
|
1261
1597
|
<input\r
|
|
1262
1598
|
class="fb-pick__input"\r
|
|
@@ -1362,7 +1698,7 @@
|
|
|
1362
1698
|
}\r
|
|
1363
1699
|
</div>\r
|
|
1364
1700
|
`,styles:[`:host{display:block}.fb-pick{position:relative}.fb-pick__control{display:flex;align-items:stretch;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);overflow:hidden}.fb-pick--open .fb-pick__control{border-color:var(--fb-accent, #2f6feb)}.fb-pick__input{flex:1;min-width:0;padding:5px 7px;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;font-size:12px}.fb-pick__input:focus-visible{outline:none}.fb-pick__input--mono,.fb-pick__name--mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fb-pick__toggle,.fb-pick__clear{flex:0 0 auto;padding:0 7px;border:0;border-left:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:12px;cursor:pointer}.fb-pick__toggle:hover,.fb-pick__clear:hover{background:var(--fb-surface-alt, #f8f9fb)}.fb-pick__hint{margin:3px 0 0;font-size:10px;line-height:1.35;color:var(--fb-text-subtle, #98a2b3)}.fb-pick__hint--warn{color:var(--fb-warning, #b7791f)}.fb-pick__hint--error{color:var(--fb-error, #c9372c)}.fb-pick__panel{position:absolute;z-index:30;top:calc(100% + 3px);left:0;right:0;max-height:260px;overflow-y:auto;padding:6px;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);box-shadow:0 6px 18px #10182829}.fb-pick__option{display:flex;flex-direction:column;width:100%;padding:4px 6px;border:0;border-radius:4px;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-pick__option:hover,.fb-pick__option[aria-selected=true]{background:var(--fb-surface-alt, #f8f9fb)}.fb-pick__row{display:flex;align-items:stretch;gap:2px}.fb-pick__row .fb-pick__option{flex:1;min-width:0}.fb-pick__into{flex:0 0 auto;padding:0 7px;border:0;border-radius:4px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:13px;cursor:pointer}.fb-pick__into:hover{background:var(--fb-surface-alt, #f8f9fb);color:var(--fb-accent, #2f6feb)}.fb-pick__name{font-size:12px}.fb-pick__meta{font-size:10px;color:var(--fb-text-muted, #667085)}.fb-pick__group{margin:2px 4px 4px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #667085)}.fb-pick__empty{margin:4px;font-size:11px;color:var(--fb-text-muted, #667085)}.fb-pick__close{width:100%;margin-top:4px;padding:4px;border:0;border-top:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}
|
|
1365
|
-
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:
|
|
1701
|
+
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:he,decorators:[{type:y,args:[{selector:"fb-structure-member-picker",standalone:!0,changeDetection:_.OnPush,template:`<div class="fb-pick" [class.fb-pick--open]="isOpen()">\r
|
|
1366
1702
|
<div class="fb-pick__control">\r
|
|
1367
1703
|
<input\r
|
|
1368
1704
|
class="fb-pick__input"\r
|
|
@@ -1468,7 +1804,7 @@
|
|
|
1468
1804
|
}\r
|
|
1469
1805
|
</div>\r
|
|
1470
1806
|
`,styles:[`:host{display:block}.fb-pick{position:relative}.fb-pick__control{display:flex;align-items:stretch;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);overflow:hidden}.fb-pick--open .fb-pick__control{border-color:var(--fb-accent, #2f6feb)}.fb-pick__input{flex:1;min-width:0;padding:5px 7px;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;font-size:12px}.fb-pick__input:focus-visible{outline:none}.fb-pick__input--mono,.fb-pick__name--mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fb-pick__toggle,.fb-pick__clear{flex:0 0 auto;padding:0 7px;border:0;border-left:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:12px;cursor:pointer}.fb-pick__toggle:hover,.fb-pick__clear:hover{background:var(--fb-surface-alt, #f8f9fb)}.fb-pick__hint{margin:3px 0 0;font-size:10px;line-height:1.35;color:var(--fb-text-subtle, #98a2b3)}.fb-pick__hint--warn{color:var(--fb-warning, #b7791f)}.fb-pick__hint--error{color:var(--fb-error, #c9372c)}.fb-pick__panel{position:absolute;z-index:30;top:calc(100% + 3px);left:0;right:0;max-height:260px;overflow-y:auto;padding:6px;border:1px solid var(--fb-border, #d6dae1);border-radius:6px;background:var(--fb-surface, #fff);box-shadow:0 6px 18px #10182829}.fb-pick__option{display:flex;flex-direction:column;width:100%;padding:4px 6px;border:0;border-radius:4px;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-pick__option:hover,.fb-pick__option[aria-selected=true]{background:var(--fb-surface-alt, #f8f9fb)}.fb-pick__row{display:flex;align-items:stretch;gap:2px}.fb-pick__row .fb-pick__option{flex:1;min-width:0}.fb-pick__into{flex:0 0 auto;padding:0 7px;border:0;border-radius:4px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:13px;cursor:pointer}.fb-pick__into:hover{background:var(--fb-surface-alt, #f8f9fb);color:var(--fb-accent, #2f6feb)}.fb-pick__name{font-size:12px}.fb-pick__meta{font-size:10px;color:var(--fb-text-muted, #667085)}.fb-pick__group{margin:2px 4px 4px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #667085)}.fb-pick__empty{margin:4px;font-size:11px;color:var(--fb-text-muted, #667085)}.fb-pick__close{width:100%;margin-top:4px;padding:4px;border:0;border-top:1px solid var(--fb-border-subtle, #e6e9ee);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}
|
|
1471
|
-
`]}]}],ctorParameters:()=>[],propDecorators:{value:[{type:a.Input,args:[{isSignal:!0,alias:"value",required:!1}]}],className:[{type:a.Input,args:[{isSignal:!0,alias:"className",required:!1}]}],usage:[{type:a.Input,args:[{isSignal:!0,alias:"usage",required:!1}]}],label:[{type:a.Input,args:[{isSignal:!0,alias:"label",required:!1}]}],placeholder:[{type:a.Input,args:[{isSignal:!0,alias:"placeholder",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],valueChange:[{type:a.Output,args:["valueChange"]}]}});class
|
|
1807
|
+
`]}]}],ctorParameters:()=>[],propDecorators:{value:[{type:a.Input,args:[{isSignal:!0,alias:"value",required:!1}]}],className:[{type:a.Input,args:[{isSignal:!0,alias:"className",required:!1}]}],usage:[{type:a.Input,args:[{isSignal:!0,alias:"usage",required:!1}]}],label:[{type:a.Input,args:[{isSignal:!0,alias:"label",required:!1}]}],placeholder:[{type:a.Input,args:[{isSignal:!0,alias:"placeholder",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],valueChange:[{type:a.Output,args:["valueChange"]}]}});class ve{catalog=b(M);value=d(void 0,...ngDevMode?[{debugName:"value"}]:[]);enumType=d(void 0,...ngDevMode?[{debugName:"enumType"}]:[]);label=d("Valore",...ngDevMode?[{debugName:"label"}]:[]);placeholder=d("Scrivi o scegli un valore",...ngDevMode?[{debugName:"placeholder"}]:[]);disabled=d(!1,...ngDevMode?[{debugName:"disabled"}]:[]);valueChange=v();values=u([],...ngDevMode?[{debugName:"values"}]:[]);sequence=0;constructor(){w(()=>{const e=this.enumType()?.trim(),n=++this.sequence;if(!e){this.values.set([]);return}this.catalog.listEnumValues(e).then(r=>{n===this.sequence&&this.values.set(r??[])}).catch(()=>{n===this.sequence&&this.values.set([])})})}options=s(()=>this.values().map(e=>({name:e.name,label:e.label??null,description:e.numericValue===void 0||e.numericValue===null?null:`valore numerico ${e.numericValue}`})),...ngDevMode?[{debugName:"options"}]:[]);emptyMessage=s(()=>this.enumType()?.trim()?`Valori di \xAB${this.enumType().trim()}\xBB non disponibili: puoi scrivere il nome a mano.`:"Tipo di enumerazione non indicato: senza di quello i valori non si possono proporre.",...ngDevMode?[{debugName:"emptyMessage"}]:[]);unknownMessage=s(()=>{const e=this.values().map(r=>r.name).join(", "),n=`Questo valore non e\u2019 fra quelli di \xAB${this.enumType()?.trim()??""}\xBB: a runtime non verra\u2019 riconosciuto.`;return e?`${n} Disponibili: ${e}.`:n},...ngDevMode?[{debugName:"unknownMessage"}]:[]);static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ve,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.1.0",version:"20.3.28",type:ve,isStandalone:!0,selector:"fb-enum-value-picker",inputs:{value:{classPropertyName:"value",publicName:"value",isSignal:!0,isRequired:!1,transformFunction:null},enumType:{classPropertyName:"enumType",publicName:"enumType",isSignal:!0,isRequired:!1,transformFunction:null},label:{classPropertyName:"label",publicName:"label",isSignal:!0,isRequired:!1,transformFunction:null},placeholder:{classPropertyName:"placeholder",publicName:"placeholder",isSignal:!0,isRequired:!1,transformFunction:null},disabled:{classPropertyName:"disabled",publicName:"disabled",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{valueChange:"valueChange"},ngImport:a,template:`
|
|
1472
1808
|
<fb-name-picker
|
|
1473
1809
|
[value]="value()"
|
|
1474
1810
|
[options]="options()"
|
|
@@ -1480,7 +1816,7 @@
|
|
|
1480
1816
|
[emptyMessage]="emptyMessage()"
|
|
1481
1817
|
(valueChange)="valueChange.emit($event)"
|
|
1482
1818
|
/>
|
|
1483
|
-
`,isInline:!0,dependencies:[{kind:"component",type:
|
|
1819
|
+
`,isInline:!0,dependencies:[{kind:"component",type:F,selector:"fb-name-picker",inputs:["value","options","label","placeholder","disabled","unknownMessage","unknownSeverity","unusableOptions","unusableMessage","emptyMessage","isMono","commitOn"],outputs:["valueChange"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ve,decorators:[{type:y,args:[{selector:"fb-enum-value-picker",standalone:!0,imports:[F],changeDetection:_.OnPush,template:`
|
|
1484
1820
|
<fb-name-picker
|
|
1485
1821
|
[value]="value()"
|
|
1486
1822
|
[options]="options()"
|
|
@@ -1492,7 +1828,7 @@
|
|
|
1492
1828
|
[emptyMessage]="emptyMessage()"
|
|
1493
1829
|
(valueChange)="valueChange.emit($event)"
|
|
1494
1830
|
/>
|
|
1495
|
-
`}]}],ctorParameters:()=>[],propDecorators:{value:[{type:a.Input,args:[{isSignal:!0,alias:"value",required:!1}]}],enumType:[{type:a.Input,args:[{isSignal:!0,alias:"enumType",required:!1}]}],label:[{type:a.Input,args:[{isSignal:!0,alias:"label",required:!1}]}],placeholder:[{type:a.Input,args:[{isSignal:!0,alias:"placeholder",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],valueChange:[{type:a.Output,args:["valueChange"]}]}});class
|
|
1831
|
+
`}]}],ctorParameters:()=>[],propDecorators:{value:[{type:a.Input,args:[{isSignal:!0,alias:"value",required:!1}]}],enumType:[{type:a.Input,args:[{isSignal:!0,alias:"enumType",required:!1}]}],label:[{type:a.Input,args:[{isSignal:!0,alias:"label",required:!1}]}],placeholder:[{type:a.Input,args:[{isSignal:!0,alias:"placeholder",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],valueChange:[{type:a.Output,args:["valueChange"]}]}});class _e{catalog=b(M);value=d(void 0,...ngDevMode?[{debugName:"value"}]:[]);valueSet=d(void 0,...ngDevMode?[{debugName:"valueSet"}]:[]);label=d("Valore",...ngDevMode?[{debugName:"label"}]:[]);placeholder=d("Scrivi o scegli un valore",...ngDevMode?[{debugName:"placeholder"}]:[]);disabled=d(!1,...ngDevMode?[{debugName:"disabled"}]:[]);valueChange=v();values=u([],...ngDevMode?[{debugName:"values"}]:[]);sequence=0;constructor(){w(()=>{const e=this.valueSet(),n=++this.sequence;if(!e?.object||!e.field){this.values.set([]);return}this.catalog.listFieldValues(e.object,e.field).then(r=>{n===this.sequence&&this.values.set(r??[])}).catch(()=>{n===this.sequence&&this.values.set([])})})}options=s(()=>this.values().map(e=>({name:e.value,label:e.label??null})),...ngDevMode?[{debugName:"options"}]:[]);fieldLabel=s(()=>{const e=this.valueSet();return e?.object&&e.field?`${e.object}.${e.field}`:""},...ngDevMode?[{debugName:"fieldLabel"}]:[]);emptyMessage=s(()=>this.fieldLabel()?`Valori di \xAB${this.fieldLabel()}\xBB non disponibili: puoi scrivere il valore a mano.`:"Campo non indicato: senza di quello i valori non si possono proporre.",...ngDevMode?[{debugName:"emptyMessage"}]:[]);unknownMessage=s(()=>{const e=this.values().map(r=>r.value).join(", "),n=`Questo valore non e\u2019 fra quelli ammessi da \xAB${this.fieldLabel()}\xBB.`;return e?`${n} Disponibili: ${e}.`:n},...ngDevMode?[{debugName:"unknownMessage"}]:[]);static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:_e,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.1.0",version:"20.3.28",type:_e,isStandalone:!0,selector:"fb-field-value-picker",inputs:{value:{classPropertyName:"value",publicName:"value",isSignal:!0,isRequired:!1,transformFunction:null},valueSet:{classPropertyName:"valueSet",publicName:"valueSet",isSignal:!0,isRequired:!1,transformFunction:null},label:{classPropertyName:"label",publicName:"label",isSignal:!0,isRequired:!1,transformFunction:null},placeholder:{classPropertyName:"placeholder",publicName:"placeholder",isSignal:!0,isRequired:!1,transformFunction:null},disabled:{classPropertyName:"disabled",publicName:"disabled",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{valueChange:"valueChange"},ngImport:a,template:`
|
|
1496
1832
|
<fb-name-picker
|
|
1497
1833
|
[value]="value()"
|
|
1498
1834
|
[options]="options()"
|
|
@@ -1504,7 +1840,7 @@
|
|
|
1504
1840
|
[emptyMessage]="emptyMessage()"
|
|
1505
1841
|
(valueChange)="valueChange.emit($event)"
|
|
1506
1842
|
/>
|
|
1507
|
-
`,isInline:!0,dependencies:[{kind:"component",type:
|
|
1843
|
+
`,isInline:!0,dependencies:[{kind:"component",type:F,selector:"fb-name-picker",inputs:["value","options","label","placeholder","disabled","unknownMessage","unknownSeverity","unusableOptions","unusableMessage","emptyMessage","isMono","commitOn"],outputs:["valueChange"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:_e,decorators:[{type:y,args:[{selector:"fb-field-value-picker",standalone:!0,imports:[F],changeDetection:_.OnPush,template:`
|
|
1508
1844
|
<fb-name-picker
|
|
1509
1845
|
[value]="value()"
|
|
1510
1846
|
[options]="options()"
|
|
@@ -1516,7 +1852,7 @@
|
|
|
1516
1852
|
[emptyMessage]="emptyMessage()"
|
|
1517
1853
|
(valueChange)="valueChange.emit($event)"
|
|
1518
1854
|
/>
|
|
1519
|
-
`}]}],ctorParameters:()=>[],propDecorators:{value:[{type:a.Input,args:[{isSignal:!0,alias:"value",required:!1}]}],valueSet:[{type:a.Input,args:[{isSignal:!0,alias:"valueSet",required:!1}]}],label:[{type:a.Input,args:[{isSignal:!0,alias:"label",required:!1}]}],placeholder:[{type:a.Input,args:[{isSignal:!0,alias:"placeholder",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],valueChange:[{type:a.Output,args:["valueChange"]}]}});const
|
|
1855
|
+
`}]}],ctorParameters:()=>[],propDecorators:{value:[{type:a.Input,args:[{isSignal:!0,alias:"value",required:!1}]}],valueSet:[{type:a.Input,args:[{isSignal:!0,alias:"valueSet",required:!1}]}],label:[{type:a.Input,args:[{isSignal:!0,alias:"label",required:!1}]}],placeholder:[{type:a.Input,args:[{isSignal:!0,alias:"placeholder",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],valueChange:[{type:a.Output,args:["valueChange"]}]}});const Ca=400;class G{store=b(T);api=b(B);service=b(ce);catalog=b(M);destroyRef=b(Qe);expression=d("",...ngDevMode?[{debugName:"expression"}]:[]);usage=d("Value",...ngDevMode?[{debugName:"usage"}]:[]);expectedDataType=d(void 0,...ngDevMode?[{debugName:"expectedDataType"}]:[]);scale=d(void 0,...ngDevMode?[{debugName:"scale"}]:[]);placeholder=d("",...ngDevMode?[{debugName:"placeholder"}]:[]);ariaLabel=d("Espressione",...ngDevMode?[{debugName:"ariaLabel"}]:[]);disabled=d(!1,...ngDevMode?[{debugName:"disabled"}]:[]);rows=d(3,...ngDevMode?[{debugName:"rows"}]:[]);commitOn=d("input",...ngDevMode?[{debugName:"commitOn"}]:[]);expressionChange=v();area=ne("area",...ngDevMode?[{debugName:"area"}]:[]);draft=u("",...ngDevMode?[{debugName:"draft"}]:[]);_result=u(null,...ngDevMode?[{debugName:"_result"}]:[]);_isChecking=u(!1,...ngDevMode?[{debugName:"_isChecking"}]:[]);timer;sequence=0;result=this._result.asReadonly();isChecking=this._isChecking.asReadonly();isSupported=this.service.isSupported;references=u([],...ngDevMode?[{debugName:"references"}]:[]);loadedFor=null;token=u(null,...ngDevMode?[{debugName:"token"}]:[]);highlighted=u(0,...ngDevMode?[{debugName:"highlighted"}]:[]);suggestions=s(()=>{const e=this.token();if(!e)return[];const n=e.text.toLowerCase(),r=this.references().filter(t=>t.name.toLowerCase().startsWith(n));return r.length===1&&r[0].name.toLowerCase()===n?[]:r.slice(0,8)},...ngDevMode?[{debugName:"suggestions"}]:[]);functions=u([],...ngDevMode?[{debugName:"functions"}]:[]);isPaletteOpen=u(!1,...ngDevMode?[{debugName:"isPaletteOpen"}]:[]);paletteFilter=u("",...ngDevMode?[{debugName:"paletteFilter"}]:[]);hasPalette=s(()=>this.functions().length>0,...ngDevMode?[{debugName:"hasPalette"}]:[]);paletteGroups=s(()=>{const e=this.paletteFilter().trim().toLowerCase(),n=new Map;for(const r of this.functions()){if(e&&!this.matchesFilter(r,e))continue;const t=r.category?.trim()||"",i=n.get(t);i?i.push(r):n.set(t,[r])}return Array.from(n,([r,t])=>({category:r,items:t})).sort((r,t)=>(r.category?0:1)-(t.category?0:1)||r.category.localeCompare(t.category))},...ngDevMode?[{debugName:"paletteGroups"}]:[]);matchesFilter(e,n){return e.name.toLowerCase().includes(n)||(e.signature??"").toLowerCase().includes(n)||(e.description??"").toLowerCase().includes(n)}togglePalette(){this.isPaletteOpen.update(e=>!e)}signatureOf(e){return e.signature?.trim()||e.name}insertFunction(e){const n=this.area()?.nativeElement;if(!n||this.disabled())return;const r=e.snippet?.trim()||e.name,t=this.token(),i=t?t.start:n.selectionStart??n.value.length,l=t?t.end:n.selectionEnd??i,c=n.value.slice(0,i)+r+n.value.slice(l),p=r.indexOf("("),g=i+(p>=0?p+1:r.length);n.value=c,n.setSelectionRange(g,g),n.focus(),this.token.set(null),this.onInput(c),this.onCommit(c)}async loadFunctions(e){const n=await this.catalog.listFormulaFunctions(e);this.usage()===e&&this.functions.set(n)}issues=s(()=>this._result()?.issues??[],...ngDevMode?[{debugName:"issues"}]:[]);hasErrors=s(()=>this.issues().some(e=>be(e.severity)==="Error"),...ngDevMode?[{debugName:"hasErrors"}]:[]);isConfirmed=s(()=>{const e=this._result();return!!e&&e.isVerified&&e.isValid&&!this.issues().length},...ngDevMode?[{debugName:"isConfirmed"}]:[]);isUnverified=s(()=>{const e=this._result();return!!e&&!e.isVerified},...ngDevMode?[{debugName:"isUnverified"}]:[]);resultDataType=s(()=>this._result()?.resultDataType??null,...ngDevMode?[{debugName:"resultDataType"}]:[]);typeMismatch=s(()=>{const e=this.expectedDataType(),n=this.resultDataType();return!e||!n||e===n||this.issues().some(t=>t.code==="FORMULA_RESULT_TYPE_MISMATCH")?null:{expected:e,produced:n}},...ngDevMode?[{debugName:"typeMismatch"}]:[]);constructor(){w(()=>{const e=this.usage();K(()=>{this.loadFunctions(e)})}),w(()=>{const e=this.expression();this.usage(),this.expectedDataType(),this.scale(),K(()=>{this.draft.set(e),this.schedule(e)})}),this.destroyRef.onDestroy(()=>this.cancel())}onInput(e){this.draft.set(e),this.schedule(e),this.refreshToken(),this.commitOn()==="input"&&this.expressionChange.emit(e)}onCommit(e){this.commitOn()==="change"&&this.expressionChange.emit(e)}onFocus(){this.loadReferences(),this.refreshToken()}onCaretMove(){this.refreshToken()}onBlur(){this.token.set(null)}onKeyDown(e){const n=this.suggestions();if(n.length){if(e.key==="Escape"){this.token.set(null),e.stopPropagation();return}if(e.key==="ArrowDown"||e.key==="ArrowUp"){const r=e.key==="ArrowDown"?1:-1;this.highlighted.update(t=>(t+r+n.length)%n.length),e.preventDefault();return}(e.key==="Enter"||e.key==="Tab")&&(this.insert(n[this.highlighted()]?.name??""),e.preventDefault())}}insert(e){const n=this.area()?.nativeElement,r=this.token();if(!n||!e||!r)return;const t=n.value.slice(0,r.start)+e+n.value.slice(r.end);n.value=t;const i=r.start+e.length;n.setSelectionRange(i,i),n.focus(),this.token.set(null),this.onInput(t),this.onCommit(t)}async loadReferences(){const e=this.store.document();if(this.loadedFor!==e){this.loadedFor=e;try{this.references.set(await this.api.getReferences(e))}catch{this.references.set([])}}}refreshToken(){const e=this.area()?.nativeElement;if(!e)return;const n=e.selectionStart??0,r=e.value.slice(0,n),t=/[A-Za-z_$][A-Za-z0-9_.$]*$/.exec(r);if(!t){this.token.set(null);return}this.token.set({text:t[0],start:n-t[0].length,end:n}),this.highlighted.set(0)}severityOf(e){return be(e.severity)}hasPosition(e){return typeof e.position=="number"&&e.position>=0}excerptOf(e){if(!this.hasPosition(e))return"";const n=e.position,r=typeof e.length=="number"&&e.length>0?e.length:1;return this.draft().slice(n,n+r)}goToIssue(e){if(!this.hasPosition(e)||this.disabled())return;const n=this.area()?.nativeElement;if(!n)return;const r=e.position,t=typeof e.length=="number"&&e.length>0?e.length:1;n.focus(),n.setSelectionRange(Math.min(r,n.value.length),Math.min(r+t,n.value.length))}schedule(e){if(this.cancel(),!e.trim()||!this.service.isSupported()){this.sequence+=1,this._result.set(null),this._isChecking.set(!1);return}this._isChecking.set(!0),this.timer=setTimeout(()=>{this.timer=void 0,this.run(e)},Ca)}async run(e){const n=++this.sequence,r=await this.service.validate({flow:this.store.document(),expression:e,usage:this.usage(),expectedDataType:this.expectedDataType(),scale:this.scale()});n===this.sequence&&(this._result.set(r),this._isChecking.set(!1))}cancel(){this.timer&&(clearTimeout(this.timer),this.timer=void 0)}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:G,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:G,isStandalone:!0,selector:"fb-formula-editor",inputs:{expression:{classPropertyName:"expression",publicName:"expression",isSignal:!0,isRequired:!1,transformFunction:null},usage:{classPropertyName:"usage",publicName:"usage",isSignal:!0,isRequired:!1,transformFunction:null},expectedDataType:{classPropertyName:"expectedDataType",publicName:"expectedDataType",isSignal:!0,isRequired:!1,transformFunction:null},scale:{classPropertyName:"scale",publicName:"scale",isSignal:!0,isRequired:!1,transformFunction:null},placeholder:{classPropertyName:"placeholder",publicName:"placeholder",isSignal:!0,isRequired:!1,transformFunction:null},ariaLabel:{classPropertyName:"ariaLabel",publicName:"ariaLabel",isSignal:!0,isRequired:!1,transformFunction:null},disabled:{classPropertyName:"disabled",publicName:"disabled",isSignal:!0,isRequired:!1,transformFunction:null},rows:{classPropertyName:"rows",publicName:"rows",isSignal:!0,isRequired:!1,transformFunction:null},commitOn:{classPropertyName:"commitOn",publicName:"commitOn",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{expressionChange:"expressionChange"},viewQueries:[{propertyName:"area",first:!0,predicate:["area"],descendants:!0,isSignal:!0}],ngImport:a,template:`@if (hasPalette()) {\r
|
|
1520
1856
|
<!--\r
|
|
1521
1857
|
La palette compare **solo** se il motore dichiara delle funzioni (\xA76.3): elenco vuoto\r
|
|
1522
1858
|
significa \xABnon le dichiara\xBB, e un pannello vuoto farebbe credere che non ce ne siano.\r
|
|
@@ -1695,7 +2031,7 @@
|
|
|
1695
2031
|
\r
|
|
1696
2032
|
<ng-content />\r
|
|
1697
2033
|
`,styles:[`:host{display:flex;flex-direction:column;gap:4px}.fb-formula__issues{display:flex;flex-direction:column;gap:3px;margin:0;padding:0;list-style:none}.fb-formula__issue{display:flex;flex-wrap:wrap;gap:5px;align-items:baseline;padding:3px 6px;border-left:3px solid var(--fb-border, #d6dae1);border-radius:3px;background:var(--fb-surface-alt, #f8f9fb);font-size:10px;line-height:1.45}.fb-formula__issue--Error{border-left-color:var(--fb-error, #c9372c);color:var(--fb-error, #c9372c)}.fb-formula__issue--Warning{border-left-color:var(--fb-warning, #b7791f);color:var(--fb-warning, #b7791f)}.fb-formula__issue--Info{border-left-color:var(--fb-accent, #2f6feb);color:var(--fb-text-muted, #667085)}.fb-formula__message{flex:1 1 auto;min-width:0}.fb-formula__jump{padding:0 4px;border:1px solid currentcolor;border-radius:3px;background:transparent;color:inherit;font:inherit;font-size:10px;cursor:pointer}.fb-formula__jump:disabled{opacity:.5;cursor:not-allowed}.fb-formula__jump code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fb-formula__code{color:var(--fb-text-subtle, #98a2b3);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px}.fb-formula__ok{margin:0;font-size:10px;color:var(--fb-success, #22a06b)}.fb-formula__hints{display:flex;flex-direction:column;gap:1px;max-height:160px;margin:0;padding:2px;overflow-y:auto;border:1px solid var(--fb-border, #d6dae1);border-radius:4px;background:var(--fb-surface, #fff);list-style:none}.fb-formula__hint{display:flex;gap:6px;align-items:baseline;width:100%;padding:2px 5px;border:0;border-radius:3px;background:transparent;color:var(--fb-text, #1d2939);font:inherit;font-size:10px;text-align:left;cursor:pointer}.fb-formula__hint:hover,.fb-formula__hint--on{background:color-mix(in srgb,var(--fb-accent, #2f6feb) 10%,transparent)}.fb-formula__hint code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fb-formula__hint-type{margin-left:auto;color:var(--fb-text-subtle, #98a2b3)}.fb-formula__bar{display:flex;justify-content:flex-end}.fb-formula__toggle{padding:1px 6px;border:1px solid var(--fb-border, #d6dae1);border-radius:3px;background:var(--fb-surface, #fff);color:var(--fb-text-muted, #667085);font:inherit;font-size:10px;cursor:pointer}.fb-formula__toggle em{font-family:ui-serif,Georgia,serif}.fb-formula__toggle--on{border-color:var(--fb-accent, #2f6feb);color:var(--fb-accent, #2f6feb)}.fb-formula__toggle:disabled{opacity:.5;cursor:not-allowed}.fb-formula__palette{display:flex;flex-direction:column;gap:4px;max-height:220px;padding:4px;overflow-y:auto;border:1px solid var(--fb-border, #d6dae1);border-radius:4px;background:var(--fb-surface-alt, #f8f9fb)}.fb-formula__search{font-size:10px}.fb-formula__group{display:flex;flex-direction:column;gap:2px}.fb-formula__group-title{margin:2px 0 0;color:var(--fb-text-subtle, #98a2b3);font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.fb-formula__fn{display:grid;grid-template-columns:1fr auto;gap:0 6px;padding:3px 5px;border:0;border-radius:3px;background:var(--fb-surface, #fff);color:var(--fb-text, #1d2939);font:inherit;font-size:10px;text-align:left;cursor:pointer}.fb-formula__fn:hover{background:color-mix(in srgb,var(--fb-accent, #2f6feb) 10%,transparent)}.fb-formula__fn:disabled{opacity:.5;cursor:not-allowed}.fb-formula__fn-sig{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fb-formula__fn-type{color:var(--fb-text-subtle, #98a2b3)}.fb-formula__fn-desc,.fb-formula__fn-example{grid-column:1 / -1;color:var(--fb-text-muted, #667085);font-size:9px;line-height:1.4}.fb-formula__fn-example{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--fb-text-subtle, #98a2b3)}
|
|
1698
|
-
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:
|
|
2034
|
+
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:G,decorators:[{type:y,args:[{selector:"fb-formula-editor",standalone:!0,changeDetection:_.OnPush,template:`@if (hasPalette()) {\r
|
|
1699
2035
|
<!--\r
|
|
1700
2036
|
La palette compare **solo** se il motore dichiara delle funzioni (\xA76.3): elenco vuoto\r
|
|
1701
2037
|
significa \xABnon le dichiara\xBB, e un pannello vuoto farebbe credere che non ce ne siano.\r
|
|
@@ -1874,7 +2210,7 @@
|
|
|
1874
2210
|
\r
|
|
1875
2211
|
<ng-content />\r
|
|
1876
2212
|
`,styles:[`:host{display:flex;flex-direction:column;gap:4px}.fb-formula__issues{display:flex;flex-direction:column;gap:3px;margin:0;padding:0;list-style:none}.fb-formula__issue{display:flex;flex-wrap:wrap;gap:5px;align-items:baseline;padding:3px 6px;border-left:3px solid var(--fb-border, #d6dae1);border-radius:3px;background:var(--fb-surface-alt, #f8f9fb);font-size:10px;line-height:1.45}.fb-formula__issue--Error{border-left-color:var(--fb-error, #c9372c);color:var(--fb-error, #c9372c)}.fb-formula__issue--Warning{border-left-color:var(--fb-warning, #b7791f);color:var(--fb-warning, #b7791f)}.fb-formula__issue--Info{border-left-color:var(--fb-accent, #2f6feb);color:var(--fb-text-muted, #667085)}.fb-formula__message{flex:1 1 auto;min-width:0}.fb-formula__jump{padding:0 4px;border:1px solid currentcolor;border-radius:3px;background:transparent;color:inherit;font:inherit;font-size:10px;cursor:pointer}.fb-formula__jump:disabled{opacity:.5;cursor:not-allowed}.fb-formula__jump code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fb-formula__code{color:var(--fb-text-subtle, #98a2b3);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px}.fb-formula__ok{margin:0;font-size:10px;color:var(--fb-success, #22a06b)}.fb-formula__hints{display:flex;flex-direction:column;gap:1px;max-height:160px;margin:0;padding:2px;overflow-y:auto;border:1px solid var(--fb-border, #d6dae1);border-radius:4px;background:var(--fb-surface, #fff);list-style:none}.fb-formula__hint{display:flex;gap:6px;align-items:baseline;width:100%;padding:2px 5px;border:0;border-radius:3px;background:transparent;color:var(--fb-text, #1d2939);font:inherit;font-size:10px;text-align:left;cursor:pointer}.fb-formula__hint:hover,.fb-formula__hint--on{background:color-mix(in srgb,var(--fb-accent, #2f6feb) 10%,transparent)}.fb-formula__hint code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fb-formula__hint-type{margin-left:auto;color:var(--fb-text-subtle, #98a2b3)}.fb-formula__bar{display:flex;justify-content:flex-end}.fb-formula__toggle{padding:1px 6px;border:1px solid var(--fb-border, #d6dae1);border-radius:3px;background:var(--fb-surface, #fff);color:var(--fb-text-muted, #667085);font:inherit;font-size:10px;cursor:pointer}.fb-formula__toggle em{font-family:ui-serif,Georgia,serif}.fb-formula__toggle--on{border-color:var(--fb-accent, #2f6feb);color:var(--fb-accent, #2f6feb)}.fb-formula__toggle:disabled{opacity:.5;cursor:not-allowed}.fb-formula__palette{display:flex;flex-direction:column;gap:4px;max-height:220px;padding:4px;overflow-y:auto;border:1px solid var(--fb-border, #d6dae1);border-radius:4px;background:var(--fb-surface-alt, #f8f9fb)}.fb-formula__search{font-size:10px}.fb-formula__group{display:flex;flex-direction:column;gap:2px}.fb-formula__group-title{margin:2px 0 0;color:var(--fb-text-subtle, #98a2b3);font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.fb-formula__fn{display:grid;grid-template-columns:1fr auto;gap:0 6px;padding:3px 5px;border:0;border-radius:3px;background:var(--fb-surface, #fff);color:var(--fb-text, #1d2939);font:inherit;font-size:10px;text-align:left;cursor:pointer}.fb-formula__fn:hover{background:color-mix(in srgb,var(--fb-accent, #2f6feb) 10%,transparent)}.fb-formula__fn:disabled{opacity:.5;cursor:not-allowed}.fb-formula__fn-sig{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fb-formula__fn-type{color:var(--fb-text-subtle, #98a2b3)}.fb-formula__fn-desc,.fb-formula__fn-example{grid-column:1 / -1;color:var(--fb-text-muted, #667085);font-size:9px;line-height:1.4}.fb-formula__fn-example{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--fb-text-subtle, #98a2b3)}
|
|
1877
|
-
`]}]}],ctorParameters:()=>[],propDecorators:{expression:[{type:a.Input,args:[{isSignal:!0,alias:"expression",required:!1}]}],usage:[{type:a.Input,args:[{isSignal:!0,alias:"usage",required:!1}]}],expectedDataType:[{type:a.Input,args:[{isSignal:!0,alias:"expectedDataType",required:!1}]}],scale:[{type:a.Input,args:[{isSignal:!0,alias:"scale",required:!1}]}],placeholder:[{type:a.Input,args:[{isSignal:!0,alias:"placeholder",required:!1}]}],ariaLabel:[{type:a.Input,args:[{isSignal:!0,alias:"ariaLabel",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],rows:[{type:a.Input,args:[{isSignal:!0,alias:"rows",required:!1}]}],commitOn:[{type:a.Input,args:[{isSignal:!0,alias:"commitOn",required:!1}]}],expressionChange:[{type:a.Output,args:["expressionChange"]}],area:[{type:a.ViewChild,args:["area",{isSignal:!0}]}]}});class
|
|
2213
|
+
`]}]}],ctorParameters:()=>[],propDecorators:{expression:[{type:a.Input,args:[{isSignal:!0,alias:"expression",required:!1}]}],usage:[{type:a.Input,args:[{isSignal:!0,alias:"usage",required:!1}]}],expectedDataType:[{type:a.Input,args:[{isSignal:!0,alias:"expectedDataType",required:!1}]}],scale:[{type:a.Input,args:[{isSignal:!0,alias:"scale",required:!1}]}],placeholder:[{type:a.Input,args:[{isSignal:!0,alias:"placeholder",required:!1}]}],ariaLabel:[{type:a.Input,args:[{isSignal:!0,alias:"ariaLabel",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],rows:[{type:a.Input,args:[{isSignal:!0,alias:"rows",required:!1}]}],commitOn:[{type:a.Input,args:[{isSignal:!0,alias:"commitOn",required:!1}]}],expressionChange:[{type:a.Output,args:["expressionChange"]}],area:[{type:a.ViewChild,args:["area",{isSignal:!0}]}]}});class k{element=b(En);fbValue=d("",...ngDevMode?[{debugName:"fbValue"}]:[]);ngAfterViewChecked(){const e=this.element.nativeElement,n=this.fbValue(),r=n==null?"":String(n);e.value!==r&&(e.value=r)}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:k,deps:[],target:a.\u0275\u0275FactoryTarget.Directive});static \u0275dir=a.\u0275\u0275ngDeclareDirective({minVersion:"17.1.0",version:"20.3.28",type:k,isStandalone:!0,selector:"select[fbValue]",inputs:{fbValue:{classPropertyName:"fbValue",publicName:"fbValue",isSignal:!0,isRequired:!1,transformFunction:null}},ngImport:a})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:k,decorators:[{type:hr,args:[{selector:"select[fbValue]",standalone:!0}]}],propDecorators:{fbValue:[{type:a.Input,args:[{isSignal:!0,alias:"fbValue",required:!1}]}]}});class S{dictionaries=b(I);value=d(void 0,...ngDevMode?[{debugName:"value"}]:[]);label=d("Valore",...ngDevMode?[{debugName:"label"}]:[]);dataType=d(void 0,...ngDevMode?[{debugName:"dataType"}]:[]);objectType=d(void 0,...ngDevMode?[{debugName:"objectType"}]:[]);isCollection=d(void 0,...ngDevMode?[{debugName:"isCollection"}]:[]);valueSet=d(void 0,...ngDevMode?[{debugName:"valueSet"}]:[]);disabled=d(!1,...ngDevMode?[{debugName:"disabled"}]:[]);allowFormula=d(!0,...ngDevMode?[{debugName:"allowFormula"}]:[]);valueChange=v();mode=s(()=>{const e=this.value();return e?re(e.formulaExpression)?"formula":re(e.elementReference)?e.elementReference.startsWith("$GlobalConstant.")?"globalConstant":"reference":Gn.some(n=>re(e[n]))?"literal":"empty":this.dataType()&&this.literalAllowed()?"literal":"reference"},...ngDevMode?[{debugName:"mode"}]:[]);filledFieldCount=s(()=>Wn(this.value()).length,...ngDevMode?[{debugName:"filledFieldCount"}]:[]);isAmbiguous=s(()=>this.filledFieldCount()>1,...ngDevMode?[{debugName:"isAmbiguous"}]:[]);literalField=s(()=>{switch(this.dataType()){case"Integer":return"integerValue";case"Number":return"numberValue";case"Date":return"dateValue";case"Boolean":return"booleanValue";case"Enum":return"enumValue";case"String":return"stringValue";default:return"stringValue"}},...ngDevMode?[{debugName:"literalField"}]:[]);literalAllowed=s(()=>this.isCollection()?!1:this.dataType()!=="Object"&&!this.dictionaries.isStructure(this.dataType()),...ngDevMode?[{debugName:"literalAllowed"}]:[]);hasValueSet=s(()=>{const e=this.valueSet();return!!e?.object&&!!e.field&&this.dataType()!=="Boolean"&&this.dataType()!=="Enum"},...ngDevMode?[{debugName:"hasValueSet"}]:[]);isStructureTarget=s(()=>this.dictionaries.isStructure(this.dataType()),...ngDevMode?[{debugName:"isStructureTarget"}]:[]);literalInputType=s(()=>{switch(this.dataType()){case"Integer":case"Number":return"number";case"Date":return"datetime-local";default:return"text"}},...ngDevMode?[{debugName:"literalInputType"}]:[]);literalText=s(()=>{const e=this.value();if(!e)return"";const n=this.literalField();if(n==="dateValue"&&re(e.dateValue))return S.stripZone(e.dateValue);const r=e[n];if(r==null){const t=e.stringValue??e.integerValue??e.numberValue??e.dateValue??e.enumValue;return t==null?"":String(t)}return String(r)},...ngDevMode?[{debugName:"literalText"}]:[]);booleanValue=s(()=>this.value()?.booleanValue===!0,...ngDevMode?[{debugName:"booleanValue"}]:[]);dateIsUtc=s(()=>S.hasZone(this.value()?.dateValue),...ngDevMode?[{debugName:"dateIsUtc"}]:[]);static ZONE_PATTERN=/(Z|[+-]\d{2}:?\d{2})$/;static hasZone(e){return!!e&&S.ZONE_PATTERN.test(e)}static stripZone(e){return(e??"").replace(S.ZONE_PATTERN,"")}globalConstants=s(()=>(this.dictionaries.globalVariables().find(n=>n.scope==="$GlobalConstant"||n.value==="$GlobalConstant")?.paths??[]).map(n=>`$GlobalConstant.${n}`),...ngDevMode?[{debugName:"globalConstants"}]:[]);numericHint=s(()=>{switch(this.dataType()){case"Number":return"Separatore decimale: il punto. Usa Number per importi e quantita\u2019: Integer troncherebbe i decimali.";case"Integer":return"Numero intero, senza separatore delle migliaia.";default:return null}},...ngDevMode?[{debugName:"numericHint"}]:[]);setMode(e){switch(e){case"reference":this.emit({elementReference:""});break;case"literal":this.emit(this.dataType()==="Boolean"?{booleanValue:!1}:{[this.literalField()]:""});break;case"formula":this.emit({formulaExpression:"",formulaDataType:this.dataType()??"String"});break;case"globalConstant":this.emit({elementReference:this.globalConstants()[0]??"$GlobalConstant.Null"});break;case"empty":this.emit(void 0);break}}onReferenceChange(e){this.emit(e===void 0?void 0:{elementReference:e})}onLiteralChange(e){const n=this.literalField();if(e===""){this.emit(void 0);return}switch(n){case"integerValue":{const r=Un(e);this.emit(r===void 0?void 0:{integerValue:Math.trunc(r)});return}case"numberValue":{const r=Un(e);this.emit(r===void 0?void 0:{numberValue:r});return}case"dateValue":this.emit({dateValue:this.withDateZone(e.length===16?`${e}:00`:e)});return;case"enumValue":this.emit({enumValue:e});return;default:this.emit({stringValue:e})}}onClosedValueChange(e){this.onLiteralChange(e?.trim()??"")}onEnumChange(e){this.emit(e?.trim()?{enumValue:e.trim()}:void 0)}onBooleanChange(e){this.emit({booleanValue:e})}withDateZone(e,n=this.dateIsUtc()){return n?`${S.stripZone(e)}Z`:S.stripZone(e)}setDateZone(e){const n=this.value()?.dateValue;n&&this.emit({dateValue:this.withDateZone(n,e)})}onFormulaChange(e){this.emit({formulaExpression:e,formulaDataType:this.value()?.formulaDataType??this.dataType()??"String"})}onFormulaTypeChange(e){this.emit({formulaExpression:this.value()?.formulaExpression??"",formulaDataType:e})}onGlobalConstantChange(e){this.emit({elementReference:e})}normalize(){const e=this.value();if(e)switch(this.mode()){case"formula":this.emit({formulaExpression:e.formulaExpression,formulaDataType:e.formulaDataType??this.dataType()??"String"});return;case"reference":case"globalConstant":this.emit({elementReference:e.elementReference});return;default:{const n=this.literalField(),r=re(e[n])?n:Gn.find(t=>re(e[t]))??n;this.emit({[r]:e[r]})}}}emit(e){this.valueChange.emit(e)}dataTypeOptions=s(()=>this.dictionaries.dataTypes(),...ngDevMode?[{debugName:"dataTypeOptions"}]:[]);static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:S,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:S,isStandalone:!0,selector:"fb-value-editor",inputs:{value:{classPropertyName:"value",publicName:"value",isSignal:!0,isRequired:!1,transformFunction:null},label:{classPropertyName:"label",publicName:"label",isSignal:!0,isRequired:!1,transformFunction:null},dataType:{classPropertyName:"dataType",publicName:"dataType",isSignal:!0,isRequired:!1,transformFunction:null},objectType:{classPropertyName:"objectType",publicName:"objectType",isSignal:!0,isRequired:!1,transformFunction:null},isCollection:{classPropertyName:"isCollection",publicName:"isCollection",isSignal:!0,isRequired:!1,transformFunction:null},valueSet:{classPropertyName:"valueSet",publicName:"valueSet",isSignal:!0,isRequired:!1,transformFunction:null},disabled:{classPropertyName:"disabled",publicName:"disabled",isSignal:!0,isRequired:!1,transformFunction:null},allowFormula:{classPropertyName:"allowFormula",publicName:"allowFormula",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{valueChange:"valueChange"},ngImport:a,template:`<div class="fb-value">\r
|
|
1878
2214
|
<div class="fb-value__modes" role="group" [attr.aria-label]="label() + ': modalita\u2019'">\r
|
|
1879
2215
|
<button\r
|
|
1880
2216
|
type="button"\r
|
|
@@ -2106,7 +2442,7 @@
|
|
|
2106
2442
|
}\r
|
|
2107
2443
|
</div>\r
|
|
2108
2444
|
`,styles:[`:host{display:block}.fb-value{display:flex;flex-direction:column;gap:6px}
|
|
2109
|
-
`],dependencies:[{kind:"component",type:
|
|
2445
|
+
`],dependencies:[{kind:"component",type:ve,selector:"fb-enum-value-picker",inputs:["value","enumType","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:_e,selector:"fb-field-value-picker",inputs:["value","valueSet","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:G,selector:"fb-formula-editor",inputs:["expression","usage","expectedDataType","scale","placeholder","ariaLabel","disabled","rows","commitOn"],outputs:["expressionChange"]},{kind:"component",type:$,selector:"fb-reference-picker",inputs:["value","label","placeholder","disabled","dataType","isCollection","objectType","writableOnly","elementsOnly","extraReferences"],outputs:["valueChange"]},{kind:"directive",type:k,selector:"select[fbValue]",inputs:["fbValue"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:S,decorators:[{type:y,args:[{selector:"fb-value-editor",standalone:!0,imports:[ve,_e,G,$,k],changeDetection:_.OnPush,template:`<div class="fb-value">\r
|
|
2110
2446
|
<div class="fb-value__modes" role="group" [attr.aria-label]="label() + ': modalita\u2019'">\r
|
|
2111
2447
|
<button\r
|
|
2112
2448
|
type="button"\r
|
|
@@ -2338,7 +2674,7 @@
|
|
|
2338
2674
|
}\r
|
|
2339
2675
|
</div>\r
|
|
2340
2676
|
`,styles:[`:host{display:block}.fb-value{display:flex;flex-direction:column;gap:6px}
|
|
2341
|
-
`]}]}],propDecorators:{value:[{type:a.Input,args:[{isSignal:!0,alias:"value",required:!1}]}],label:[{type:a.Input,args:[{isSignal:!0,alias:"label",required:!1}]}],dataType:[{type:a.Input,args:[{isSignal:!0,alias:"dataType",required:!1}]}],objectType:[{type:a.Input,args:[{isSignal:!0,alias:"objectType",required:!1}]}],isCollection:[{type:a.Input,args:[{isSignal:!0,alias:"isCollection",required:!1}]}],valueSet:[{type:a.Input,args:[{isSignal:!0,alias:"valueSet",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],allowFormula:[{type:a.Input,args:[{isSignal:!0,alias:"allowFormula",required:!1}]}],valueChange:[{type:a.Output,args:["valueChange"]}]}});class
|
|
2677
|
+
`]}]}],propDecorators:{value:[{type:a.Input,args:[{isSignal:!0,alias:"value",required:!1}]}],label:[{type:a.Input,args:[{isSignal:!0,alias:"label",required:!1}]}],dataType:[{type:a.Input,args:[{isSignal:!0,alias:"dataType",required:!1}]}],objectType:[{type:a.Input,args:[{isSignal:!0,alias:"objectType",required:!1}]}],isCollection:[{type:a.Input,args:[{isSignal:!0,alias:"isCollection",required:!1}]}],valueSet:[{type:a.Input,args:[{isSignal:!0,alias:"valueSet",required:!1}]}],disabled:[{type:a.Input,args:[{isSignal:!0,alias:"disabled",required:!1}]}],allowFormula:[{type:a.Input,args:[{isSignal:!0,alias:"allowFormula",required:!1}]}],valueChange:[{type:a.Output,args:["valueChange"]}]}});class W{dictionaries=b(I);catalog=b(M);api=b(B);store=b(T);holder=d.required(...ngDevMode?[{debugName:"holder"}]:[]);title=d("Condizioni",...ngDevMode?[{debugName:"title"}]:[]);allowFormula=d(!0,...ngDevMode?[{debugName:"allowFormula"}]:[]);allowLogic=d(!0,...ngDevMode?[{debugName:"allowLogic"}]:[]);issuePath=d("",...ngDevMode?[{debugName:"issuePath"}]:[]);changed=v();conditions=s(()=>this.holder().conditions??[],...ngDevMode?[{debugName:"conditions"}]:[]);references=u([],...ngDevMode?[{debugName:"references"}]:[]);types=It(this.catalog,e=>this.dictionaries.isStructure(e),()=>({references:this.references(),values:this.conditions().flatMap(e=>[e.leftValueReference,e.rightValue?.elementReference])}));constructor(){w(()=>{const e=this.store.document();this.conditions().length&&this.api.getReferences(e).then(n=>this.references.set(n??[])).catch(()=>this.references.set([]))})}typeOfReference(e){return this.types.dataTypeOf(e)}leftDataType(e){return this.typeOfReference(e.leftValueReference)}leftObjectType(e){return this.types.objectTypeOf(e.leftValueReference)}rightDataType(e){const n=e.rightValue;if(n)switch(Br(n)){case"formulaExpression":return n.formulaDataType;case"elementReference":return this.typeOfReference(n.elementReference);case"stringValue":return"String";case"integerValue":return"Integer";case"numberValue":return"Number";case"dateValue":return"Date";case"booleanValue":return"Boolean";case"enumValue":return"Enum";default:return}}hasTypeMismatch(e){return Pr(e.operator,this.isUnary(e))?!Vr(this.leftDataType(e),this.rightDataType(e)):!1}typeMismatchMessage(e){const n=this.leftDataType(e)??"?",r=this.rightDataType(e)??"?";return`Un valore ${n} non si confronta con un valore ${r}: e\u2019 CONDITION_TYPE_MISMATCH e blocca l\u2019attivazione.`}logicMode=s(()=>{const e=this.holder().conditionLogic;if(!e)return"and";const n=e?.trim().toLowerCase();return n==="and"?"and":n==="or"?"or":n==="formula"?"formula":"custom"},...ngDevMode?[{debugName:"logicMode"}]:[]);customLogic=s(()=>Je(this.holder().conditionLogic)?this.holder().conditionLogic:"",...ngDevMode?[{debugName:"customLogic"}]:[]);customLogicError=s(()=>{const e=this.customLogic();return e?qr(e,this.conditions().length):null},...ngDevMode?[{debugName:"customLogicError"}]:[]);conditionsIgnored=s(()=>this.logicMode()==="formula",...ngDevMode?[{debugName:"conditionsIgnored"}]:[]);operatorsFor(e){const n=this.dictionaries.operatorsFor(this.leftDataType(e));if(!e.operator||n.some(t=>t.value===e.operator))return n;const r=this.dictionaries.operator(e.operator);return r?[...n,r]:n}isUnary(e){return this.dictionaries.isUnaryOperator(e.operator)}appliesToElements(e){return this.dictionaries.operatorAppliesToElements(e.operator)}unaryExpectation(e){return e.rightValue?.booleanValue!==!1}unarySummary(e){const n=this.operatorLabel(e.operator).toLowerCase(),r=e.leftValueReference||"\u2026";return this.unaryExpectation(e)?`${r} ${n}`:`${r} NON ${n}`}operatorLabel(e){return e?this.dictionaries.operator(e)?.label??e:""}operatorDescription(e){return this.dictionaries.operator(e)?.description??null}isPlaceholderOperator(e){return e.operator==="None"}incompleteCount=s(()=>this.conditions().filter(e=>e.operator==="None").length,...ngDevMode?[{debugName:"incompleteCount"}]:[]);addCondition(){this.changed.emit(e=>{e.conditions??=[],e.conditions.push({operator:"EqualTo"})})}removeCondition(e){this.changed.emit(n=>{zr(n,e)})}moveCondition(e,n){const r=e+n;r<0||r>=this.conditions().length||this.changed.emit(t=>Ar(t,e,r))}setLogicMode(e){this.changed.emit(n=>{switch(e){case"and":n.conditionLogic="and";break;case"or":n.conditionLogic="or";break;case"custom":{const r=n.conditions?.length??0;n.conditionLogic=r?Array.from({length:r},(t,i)=>i+1).join(" AND "):"1";break}case"formula":n.conditionLogic="Formula",n.formula??="";break}})}setCustomLogic(e){this.changed.emit(n=>{n.conditionLogic=e})}setFormula(e){this.changed.emit(n=>{n.formula=e})}setLeft(e,n){this.changed.emit(r=>{const t=r.conditions?.[e];t&&(t.leftValueReference=n)})}setOperator(e,n){const r=this.dictionaries.isUnaryOperator(n);this.changed.emit(t=>{const i=t.conditions?.[e];i&&(i.operator=n,r?i.rightValue={booleanValue:!0}:re(i.rightValue?.booleanValue)&&n!=="EqualTo"&&(i.rightValue=void 0))})}setRightValue(e,n){this.changed.emit(r=>{const t=r.conditions?.[e];t&&(t.rightValue=n)})}setUnaryExpectation(e,n){this.changed.emit(r=>{const t=r.conditions?.[e];t&&(t.rightValue={booleanValue:n})})}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:W,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:W,isStandalone:!0,selector:"fb-condition-editor",inputs:{holder:{classPropertyName:"holder",publicName:"holder",isSignal:!0,isRequired:!0,transformFunction:null},title:{classPropertyName:"title",publicName:"title",isSignal:!0,isRequired:!1,transformFunction:null},allowFormula:{classPropertyName:"allowFormula",publicName:"allowFormula",isSignal:!0,isRequired:!1,transformFunction:null},allowLogic:{classPropertyName:"allowLogic",publicName:"allowLogic",isSignal:!0,isRequired:!1,transformFunction:null},issuePath:{classPropertyName:"issuePath",publicName:"issuePath",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{changed:"changed"},ngImport:a,template:`<fieldset class="fb-section">\r
|
|
2342
2678
|
<legend class="fb-section__title">{{ title() }}</legend>\r
|
|
2343
2679
|
\r
|
|
2344
2680
|
@if (allowLogic()) {\r
|
|
@@ -2593,7 +2929,7 @@
|
|
|
2593
2929
|
<button type="button" class="fb-btn" (click)="addCondition()">Aggiungi condizione</button>\r
|
|
2594
2930
|
</fieldset>\r
|
|
2595
2931
|
`,styles:[`:host{display:block}.fb-cond__logic{margin-bottom:8px}.fb-cond__modes,.fb-cond__unary{margin-top:3px}.fb-cond__placeholder{padding:1px 6px;border-radius:8px;background:color-mix(in srgb,var(--fb-warning, #b7791f) 14%,transparent);font-size:10px;font-weight:600;color:var(--fb-warning, #b7791f)}
|
|
2596
|
-
`],dependencies:[{kind:"component",type:
|
|
2932
|
+
`],dependencies:[{kind:"component",type:G,selector:"fb-formula-editor",inputs:["expression","usage","expectedDataType","scale","placeholder","ariaLabel","disabled","rows","commitOn"],outputs:["expressionChange"]},{kind:"component",type:$,selector:"fb-reference-picker",inputs:["value","label","placeholder","disabled","dataType","isCollection","objectType","writableOnly","elementsOnly","extraReferences"],outputs:["valueChange"]},{kind:"component",type:S,selector:"fb-value-editor",inputs:["value","label","dataType","objectType","isCollection","valueSet","disabled","allowFormula"],outputs:["valueChange"]},{kind:"directive",type:k,selector:"select[fbValue]",inputs:["fbValue"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:W,decorators:[{type:y,args:[{selector:"fb-condition-editor",standalone:!0,imports:[G,$,S,k],changeDetection:_.OnPush,template:`<fieldset class="fb-section">\r
|
|
2597
2933
|
<legend class="fb-section__title">{{ title() }}</legend>\r
|
|
2598
2934
|
\r
|
|
2599
2935
|
@if (allowLogic()) {\r
|
|
@@ -2848,7 +3184,7 @@
|
|
|
2848
3184
|
<button type="button" class="fb-btn" (click)="addCondition()">Aggiungi condizione</button>\r
|
|
2849
3185
|
</fieldset>\r
|
|
2850
3186
|
`,styles:[`:host{display:block}.fb-cond__logic{margin-bottom:8px}.fb-cond__modes,.fb-cond__unary{margin-top:3px}.fb-cond__placeholder{padding:1px 6px;border-radius:8px;background:color-mix(in srgb,var(--fb-warning, #b7791f) 14%,transparent);font-size:10px;font-weight:600;color:var(--fb-warning, #b7791f)}
|
|
2851
|
-
`]}]}],ctorParameters:()=>[],propDecorators:{holder:[{type:a.Input,args:[{isSignal:!0,alias:"holder",required:!0}]}],title:[{type:a.Input,args:[{isSignal:!0,alias:"title",required:!1}]}],allowFormula:[{type:a.Input,args:[{isSignal:!0,alias:"allowFormula",required:!1}]}],allowLogic:[{type:a.Input,args:[{isSignal:!0,alias:"allowLogic",required:!1}]}],issuePath:[{type:a.Input,args:[{isSignal:!0,alias:"issuePath",required:!1}]}],changed:[{type:a.Output,args:["changed"]}]}});class Y{catalog=b(
|
|
3187
|
+
`]}]}],ctorParameters:()=>[],propDecorators:{holder:[{type:a.Input,args:[{isSignal:!0,alias:"holder",required:!0}]}],title:[{type:a.Input,args:[{isSignal:!0,alias:"title",required:!1}]}],allowFormula:[{type:a.Input,args:[{isSignal:!0,alias:"allowFormula",required:!1}]}],allowLogic:[{type:a.Input,args:[{isSignal:!0,alias:"allowLogic",required:!1}]}],issuePath:[{type:a.Input,args:[{isSignal:!0,alias:"issuePath",required:!1}]}],changed:[{type:a.Output,args:["changed"]}]}});class Y{catalog=b(M);dictionaries=b(I);holder=d.required(...ngDevMode?[{debugName:"holder"}]:[]);object=d(void 0,...ngDevMode?[{debugName:"object"}]:[]);title=d("Filtri",...ngDevMode?[{debugName:"title"}]:[]);usage=d("filterable",...ngDevMode?[{debugName:"usage"}]:[]);fieldOptions=d([],...ngDevMode?[{debugName:"fieldOptions"}]:[]);supportsLogic=d(!0,...ngDevMode?[{debugName:"supportsLogic"}]:[]);supportsFormula=d(!1,...ngDevMode?[{debugName:"supportsFormula"}]:[]);emptyWarning=d(null,...ngDevMode?[{debugName:"emptyWarning"}]:[]);emptyWarningSeverity=d("warn",...ngDevMode?[{debugName:"emptyWarningSeverity"}]:[]);changed=v();allFields=u([],...ngDevMode?[{debugName:"allFields"}]:[]);filters=s(()=>this.holder().filters??[],...ngDevMode?[{debugName:"filters"}]:[]);operators=s(()=>this.dictionaries.recordFilterOperators(),...ngDevMode?[{debugName:"operators"}]:[]);types=Na(this.catalog,()=>({container:this.object()?{kind:"object",name:this.object()}:null,paths:this.filters().map(e=>e.field),usage:this.usage()}));constructor(){w(()=>{const e=this.object();if(!e){this.allFields.set([]);return}this.catalog.listFields(e,"any").then(n=>this.allFields.set(n??[])).catch(()=>this.allFields.set([]))})}identifierNotFilterable=s(()=>this.usage()!=="filterable"?!1:this.allFields().some(e=>e.name==="Id"&&e.isFilterable===!1),...ngDevMode?[{debugName:"identifierNotFilterable"}]:[]);logicMode=s(()=>{const e=this.holder().filterLogic;if(!e)return"and";const n=e?.trim().toLowerCase();return n==="and"?"and":n==="or"?"or":n==="formula"?"formula":"custom"},...ngDevMode?[{debugName:"logicMode"}]:[]);customLogic=s(()=>this.logicMode()==="custom"?this.holder().filterLogic:"",...ngDevMode?[{debugName:"customLogic"}]:[]);showEmptyWarning=s(()=>!!this.emptyWarning()&&this.filters().length===0,...ngDevMode?[{debugName:"showEmptyWarning"}]:[]);addFilter(){this.changed.emit(e=>{e.filters??=[],e.filters.push({operator:"EqualTo"})})}removeFilter(e){this.changed.emit(n=>{n.filters?.splice(e,1),n.filters&&n.filters.length===0&&delete n.filters})}setField(e,n){this.changed.emit(r=>{const t=r.filters?.[e];t&&(t.field=n||void 0)})}setOperator(e,n){this.changed.emit(r=>{const t=r.filters?.[e];t&&(t.operator=n,n==="IsNull"&&(t.value={booleanValue:!0}))})}setValue(e,n){this.changed.emit(r=>{const t=r.filters?.[e];t&&(t.value=n)})}isNullOperator(e){return e.operator==="IsNull"}nullExpectation(e){return e.value?.booleanValue!==!1}setNullExpectation(e,n){this.changed.emit(r=>{const t=r.filters?.[e];t&&(t.value={booleanValue:n})})}setLogicMode(e){this.changed.emit(n=>{switch(e){case"and":n.filterLogic="and";break;case"or":n.filterLogic="or";break;case"custom":{const r=n.filters?.length??0;n.filterLogic=r?Array.from({length:r},(t,i)=>i+1).join(" AND "):"1";break}case"formula":n.filterLogic="Formula",n.filterFormula??="";break}})}setCustomLogic(e){this.changed.emit(n=>{n.filterLogic=e})}setFormula(e){this.changed.emit(n=>{n.filterFormula=e})}fieldDataType(e){const n=this.fieldOptions();return n.length?n.find(r=>r.value===e.field)?.dataType:this.types.dataTypeOf(e.field)}unknownFixedField(e){const n=this.fieldOptions();return n.length>0&&!!e.field&&!n.some(r=>r.value===e.field)}fieldObjectType(e){return this.types.objectTypeOf(e.field)}fieldValueSet(e){return this.types.valueSetOf(e.field)}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Y,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:Y,isStandalone:!0,selector:"fb-record-filter-editor",inputs:{holder:{classPropertyName:"holder",publicName:"holder",isSignal:!0,isRequired:!0,transformFunction:null},object:{classPropertyName:"object",publicName:"object",isSignal:!0,isRequired:!1,transformFunction:null},title:{classPropertyName:"title",publicName:"title",isSignal:!0,isRequired:!1,transformFunction:null},usage:{classPropertyName:"usage",publicName:"usage",isSignal:!0,isRequired:!1,transformFunction:null},fieldOptions:{classPropertyName:"fieldOptions",publicName:"fieldOptions",isSignal:!0,isRequired:!1,transformFunction:null},supportsLogic:{classPropertyName:"supportsLogic",publicName:"supportsLogic",isSignal:!0,isRequired:!1,transformFunction:null},supportsFormula:{classPropertyName:"supportsFormula",publicName:"supportsFormula",isSignal:!0,isRequired:!1,transformFunction:null},emptyWarning:{classPropertyName:"emptyWarning",publicName:"emptyWarning",isSignal:!0,isRequired:!1,transformFunction:null},emptyWarningSeverity:{classPropertyName:"emptyWarningSeverity",publicName:"emptyWarningSeverity",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{changed:"changed"},ngImport:a,template:`<fieldset class="fb-section">\r
|
|
2852
3188
|
<legend class="fb-section__title">{{ title() }}</legend>\r
|
|
2853
3189
|
\r
|
|
2854
3190
|
@if (!object() && !fieldOptions().length) {\r
|
|
@@ -3049,7 +3385,7 @@
|
|
|
3049
3385
|
<button type="button" class="fb-btn" (click)="addFilter()">Aggiungi filtro</button>\r
|
|
3050
3386
|
</fieldset>\r
|
|
3051
3387
|
`,styles:[`:host{display:block}.fb-filter__modes{margin-bottom:8px}.fb-field .fb-filter__modes{margin-bottom:0}
|
|
3052
|
-
`],dependencies:[{kind:"component",type:P,selector:"fb-field-picker",inputs:["value","object","usage","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:
|
|
3388
|
+
`],dependencies:[{kind:"component",type:P,selector:"fb-field-picker",inputs:["value","object","usage","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:G,selector:"fb-formula-editor",inputs:["expression","usage","expectedDataType","scale","placeholder","ariaLabel","disabled","rows","commitOn"],outputs:["expressionChange"]},{kind:"component",type:S,selector:"fb-value-editor",inputs:["value","label","dataType","objectType","isCollection","valueSet","disabled","allowFormula"],outputs:["valueChange"]},{kind:"directive",type:k,selector:"select[fbValue]",inputs:["fbValue"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Y,decorators:[{type:y,args:[{selector:"fb-record-filter-editor",standalone:!0,imports:[P,G,S,k],changeDetection:_.OnPush,template:`<fieldset class="fb-section">\r
|
|
3053
3389
|
<legend class="fb-section__title">{{ title() }}</legend>\r
|
|
3054
3390
|
\r
|
|
3055
3391
|
@if (!object() && !fieldOptions().length) {\r
|
|
@@ -3250,7 +3586,7 @@
|
|
|
3250
3586
|
<button type="button" class="fb-btn" (click)="addFilter()">Aggiungi filtro</button>\r
|
|
3251
3587
|
</fieldset>\r
|
|
3252
3588
|
`,styles:[`:host{display:block}.fb-filter__modes{margin-bottom:8px}.fb-field .fb-filter__modes{margin-bottom:0}
|
|
3253
|
-
`]}]}],ctorParameters:()=>[],propDecorators:{holder:[{type:a.Input,args:[{isSignal:!0,alias:"holder",required:!0}]}],object:[{type:a.Input,args:[{isSignal:!0,alias:"object",required:!1}]}],title:[{type:a.Input,args:[{isSignal:!0,alias:"title",required:!1}]}],usage:[{type:a.Input,args:[{isSignal:!0,alias:"usage",required:!1}]}],fieldOptions:[{type:a.Input,args:[{isSignal:!0,alias:"fieldOptions",required:!1}]}],supportsLogic:[{type:a.Input,args:[{isSignal:!0,alias:"supportsLogic",required:!1}]}],supportsFormula:[{type:a.Input,args:[{isSignal:!0,alias:"supportsFormula",required:!1}]}],emptyWarning:[{type:a.Input,args:[{isSignal:!0,alias:"emptyWarning",required:!1}]}],emptyWarningSeverity:[{type:a.Input,args:[{isSignal:!0,alias:"emptyWarningSeverity",required:!1}]}],changed:[{type:a.Output,args:["changed"]}]}});function
|
|
3589
|
+
`]}]}],ctorParameters:()=>[],propDecorators:{holder:[{type:a.Input,args:[{isSignal:!0,alias:"holder",required:!0}]}],object:[{type:a.Input,args:[{isSignal:!0,alias:"object",required:!1}]}],title:[{type:a.Input,args:[{isSignal:!0,alias:"title",required:!1}]}],usage:[{type:a.Input,args:[{isSignal:!0,alias:"usage",required:!1}]}],fieldOptions:[{type:a.Input,args:[{isSignal:!0,alias:"fieldOptions",required:!1}]}],supportsLogic:[{type:a.Input,args:[{isSignal:!0,alias:"supportsLogic",required:!1}]}],supportsFormula:[{type:a.Input,args:[{isSignal:!0,alias:"supportsFormula",required:!1}]}],emptyWarning:[{type:a.Input,args:[{isSignal:!0,alias:"emptyWarning",required:!1}]}],emptyWarningSeverity:[{type:a.Input,args:[{isSignal:!0,alias:"emptyWarningSeverity",required:!1}]}],changed:[{type:a.Output,args:["changed"]}]}});function zt(o){const e=[];if(o.dataType){const n=o.isCollection?`${o.dataType}[]`:o.dataType;e.push(o.objectType?`${n} \xB7 ${o.objectType}`:n)}return o.isRequired&&e.push("obbligatorio"),o.description&&e.push(o.description),{name:o.name,label:o.label,description:e.join(" \xB7 ")||null}}class V{holder=d.required(...ngDevMode?[{debugName:"holder"}]:[]);catalogParameters=d([],...ngDevMode?[{debugName:"catalogParameters"}]:[]);inputTitle=d("Parametri di ingresso",...ngDevMode?[{debugName:"inputTitle"}]:[]);outputTitle=d("Parametri di uscita",...ngDevMode?[{debugName:"outputTitle"}]:[]);showInputs=d(!0,...ngDevMode?[{debugName:"showInputs"}]:[]);showOutputs=d(!0,...ngDevMode?[{debugName:"showOutputs"}]:[]);outputsDisabledReason=d(null,...ngDevMode?[{debugName:"outputsDisabledReason"}]:[]);extraTargets=d([],...ngDevMode?[{debugName:"extraTargets"}]:[]);changed=v();inputs=s(()=>this.holder().inputParameters??[],...ngDevMode?[{debugName:"inputs"}]:[]);outputs=s(()=>this.holder().outputParameters??[],...ngDevMode?[{debugName:"outputs"}]:[]);hasCatalog=s(()=>this.catalogParameters().length>0,...ngDevMode?[{debugName:"hasCatalog"}]:[]);inputCatalog=s(()=>this.catalogParameters().filter(e=>e.isInput===!0||e.isInput===void 0&&e.isOutput!==!0),...ngDevMode?[{debugName:"inputCatalog"}]:[]);outputCatalog=s(()=>this.catalogParameters().filter(e=>e.isOutput===!0),...ngDevMode?[{debugName:"outputCatalog"}]:[]);inputOptions=s(()=>this.inputCatalog().map(zt),...ngDevMode?[{debugName:"inputOptions"}]:[]);outputOptions=s(()=>this.outputCatalog().map(zt),...ngDevMode?[{debugName:"outputOptions"}]:[]);missingRequired=s(()=>{if(!this.hasCatalog())return[];const e=new Set(this.inputs().map(n=>n.name));return this.inputCatalog().filter(n=>n.isRequired&&!e.has(n.name))},...ngDevMode?[{debugName:"missingRequired"}]:[]);describe(e){return this.catalogParameters().find(n=>n.name===e)}addInput(e){this.changed.emit(n=>{n.inputParameters??=[],n.inputParameters.push({name:e??""})})}addOutput(e){this.changed.emit(n=>{n.outputParameters??=[],n.outputParameters.push({name:e??""})})}removeInput(e){this.changed.emit(n=>{n.inputParameters?.splice(e,1),n.inputParameters?.length===0&&delete n.inputParameters})}removeOutput(e){this.changed.emit(n=>{n.outputParameters?.splice(e,1),n.outputParameters?.length===0&&delete n.outputParameters})}setInputName(e,n){this.changed.emit(r=>{const t=r.inputParameters?.[e];t&&(t.name=n)})}setInputValue(e,n){this.changed.emit(r=>{const t=r.inputParameters?.[e];t&&(t.value=n)})}setOutputName(e,n){this.changed.emit(r=>{const t=r.outputParameters?.[e];t&&(t.name=n)})}setOutputTarget(e,n){this.changed.emit(r=>{const t=r.outputParameters?.[e];t&&(t.assignToReference=n)})}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:V,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:V,isStandalone:!0,selector:"fb-parameter-editor",inputs:{holder:{classPropertyName:"holder",publicName:"holder",isSignal:!0,isRequired:!0,transformFunction:null},catalogParameters:{classPropertyName:"catalogParameters",publicName:"catalogParameters",isSignal:!0,isRequired:!1,transformFunction:null},inputTitle:{classPropertyName:"inputTitle",publicName:"inputTitle",isSignal:!0,isRequired:!1,transformFunction:null},outputTitle:{classPropertyName:"outputTitle",publicName:"outputTitle",isSignal:!0,isRequired:!1,transformFunction:null},showInputs:{classPropertyName:"showInputs",publicName:"showInputs",isSignal:!0,isRequired:!1,transformFunction:null},showOutputs:{classPropertyName:"showOutputs",publicName:"showOutputs",isSignal:!0,isRequired:!1,transformFunction:null},outputsDisabledReason:{classPropertyName:"outputsDisabledReason",publicName:"outputsDisabledReason",isSignal:!0,isRequired:!1,transformFunction:null},extraTargets:{classPropertyName:"extraTargets",publicName:"extraTargets",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{changed:"changed"},ngImport:a,template:`@if (showInputs()) {\r
|
|
3254
3590
|
<fieldset class="fb-section">\r
|
|
3255
3591
|
<legend class="fb-section__title">{{ inputTitle() }}</legend>\r
|
|
3256
3592
|
\r
|
|
@@ -3376,7 +3712,7 @@
|
|
|
3376
3712
|
</fieldset>\r
|
|
3377
3713
|
}\r
|
|
3378
3714
|
`,styles:[`:host{display:block}
|
|
3379
|
-
`],dependencies:[{kind:"component",type:
|
|
3715
|
+
`],dependencies:[{kind:"component",type:F,selector:"fb-name-picker",inputs:["value","options","label","placeholder","disabled","unknownMessage","unknownSeverity","unusableOptions","unusableMessage","emptyMessage","isMono","commitOn"],outputs:["valueChange"]},{kind:"component",type:$,selector:"fb-reference-picker",inputs:["value","label","placeholder","disabled","dataType","isCollection","objectType","writableOnly","elementsOnly","extraReferences"],outputs:["valueChange"]},{kind:"component",type:S,selector:"fb-value-editor",inputs:["value","label","dataType","objectType","isCollection","valueSet","disabled","allowFormula"],outputs:["valueChange"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:V,decorators:[{type:y,args:[{selector:"fb-parameter-editor",standalone:!0,imports:[F,$,S],changeDetection:_.OnPush,template:`@if (showInputs()) {\r
|
|
3380
3716
|
<fieldset class="fb-section">\r
|
|
3381
3717
|
<legend class="fb-section__title">{{ inputTitle() }}</legend>\r
|
|
3382
3718
|
\r
|
|
@@ -3502,7 +3838,7 @@
|
|
|
3502
3838
|
</fieldset>\r
|
|
3503
3839
|
}\r
|
|
3504
3840
|
`,styles:[`:host{display:block}
|
|
3505
|
-
`]}]}],propDecorators:{holder:[{type:a.Input,args:[{isSignal:!0,alias:"holder",required:!0}]}],catalogParameters:[{type:a.Input,args:[{isSignal:!0,alias:"catalogParameters",required:!1}]}],inputTitle:[{type:a.Input,args:[{isSignal:!0,alias:"inputTitle",required:!1}]}],outputTitle:[{type:a.Input,args:[{isSignal:!0,alias:"outputTitle",required:!1}]}],showInputs:[{type:a.Input,args:[{isSignal:!0,alias:"showInputs",required:!1}]}],showOutputs:[{type:a.Input,args:[{isSignal:!0,alias:"showOutputs",required:!1}]}],outputsDisabledReason:[{type:a.Input,args:[{isSignal:!0,alias:"outputsDisabledReason",required:!1}]}],extraTargets:[{type:a.Input,args:[{isSignal:!0,alias:"extraTargets",required:!1}]}],changed:[{type:a.Output,args:["changed"]}]}});class
|
|
3841
|
+
`]}]}],propDecorators:{holder:[{type:a.Input,args:[{isSignal:!0,alias:"holder",required:!0}]}],catalogParameters:[{type:a.Input,args:[{isSignal:!0,alias:"catalogParameters",required:!1}]}],inputTitle:[{type:a.Input,args:[{isSignal:!0,alias:"inputTitle",required:!1}]}],outputTitle:[{type:a.Input,args:[{isSignal:!0,alias:"outputTitle",required:!1}]}],showInputs:[{type:a.Input,args:[{isSignal:!0,alias:"showInputs",required:!1}]}],showOutputs:[{type:a.Input,args:[{isSignal:!0,alias:"showOutputs",required:!1}]}],outputsDisabledReason:[{type:a.Input,args:[{isSignal:!0,alias:"outputsDisabledReason",required:!1}]}],extraTargets:[{type:a.Input,args:[{isSignal:!0,alias:"extraTargets",required:!1}]}],changed:[{type:a.Output,args:["changed"]}]}});class ye{catalog=b(M);holder=d.required(...ngDevMode?[{debugName:"holder"}]:[]);object=d(void 0,...ngDevMode?[{debugName:"object"}]:[]);usage=d("updateable",...ngDevMode?[{debugName:"usage"}]:[]);title=d("Valori dei campi",...ngDevMode?[{debugName:"title"}]:[]);disabledReason=d(null,...ngDevMode?[{debugName:"disabledReason"}]:[]);changed=v();fields=u([],...ngDevMode?[{debugName:"fields"}]:[]);assignments=s(()=>this.holder().inputAssignments??[],...ngDevMode?[{debugName:"assignments"}]:[]);hasCatalog=s(()=>this.fields().length>0,...ngDevMode?[{debugName:"hasCatalog"}]:[]);missingRequired=s(()=>{if(!this.hasCatalog())return[];const e=new Set(this.assignments().map(n=>n.field));return this.fields().filter(n=>n.isRequired&&!e.has(n.name))},...ngDevMode?[{debugName:"missingRequired"}]:[]);constructor(){w(()=>{const e=this.object(),n=this.usage();if(!e){this.fields.set([]);return}this.catalog.listFields(e,n).then(r=>this.fields.set(r??[])).catch(()=>this.fields.set([]))})}add(e){this.changed.emit(n=>{n.inputAssignments??=[],n.inputAssignments.push({field:e??""})})}remove(e){this.changed.emit(n=>{n.inputAssignments?.splice(e,1),n.inputAssignments?.length===0&&delete n.inputAssignments})}setField(e,n){this.changed.emit(r=>{const t=r.inputAssignments?.[e];t&&(t.field=n||void 0)})}setValue(e,n){this.changed.emit(r=>{const t=r.inputAssignments?.[e];t&&(t.value=n)})}describe(e){return this.fields().find(n=>n.name===e)}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ye,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:ye,isStandalone:!0,selector:"fb-field-assignment-editor",inputs:{holder:{classPropertyName:"holder",publicName:"holder",isSignal:!0,isRequired:!0,transformFunction:null},object:{classPropertyName:"object",publicName:"object",isSignal:!0,isRequired:!1,transformFunction:null},usage:{classPropertyName:"usage",publicName:"usage",isSignal:!0,isRequired:!1,transformFunction:null},title:{classPropertyName:"title",publicName:"title",isSignal:!0,isRequired:!1,transformFunction:null},disabledReason:{classPropertyName:"disabledReason",publicName:"disabledReason",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{changed:"changed"},ngImport:a,template:`<fieldset class="fb-section">\r
|
|
3506
3842
|
<legend class="fb-section__title">{{ title() }}</legend>\r
|
|
3507
3843
|
\r
|
|
3508
3844
|
@if (disabledReason()) {\r
|
|
@@ -3567,7 +3903,7 @@
|
|
|
3567
3903
|
<button type="button" class="fb-btn" (click)="add()">Aggiungi campo</button>\r
|
|
3568
3904
|
</fieldset>\r
|
|
3569
3905
|
`,styles:[`:host{display:block}
|
|
3570
|
-
`],dependencies:[{kind:"component",type:P,selector:"fb-field-picker",inputs:["value","object","usage","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:
|
|
3906
|
+
`],dependencies:[{kind:"component",type:P,selector:"fb-field-picker",inputs:["value","object","usage","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:S,selector:"fb-value-editor",inputs:["value","label","dataType","objectType","isCollection","valueSet","disabled","allowFormula"],outputs:["valueChange"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ye,decorators:[{type:y,args:[{selector:"fb-field-assignment-editor",standalone:!0,imports:[P,S],changeDetection:_.OnPush,template:`<fieldset class="fb-section">\r
|
|
3571
3907
|
<legend class="fb-section__title">{{ title() }}</legend>\r
|
|
3572
3908
|
\r
|
|
3573
3909
|
@if (disabledReason()) {\r
|
|
@@ -3632,7 +3968,7 @@
|
|
|
3632
3968
|
<button type="button" class="fb-btn" (click)="add()">Aggiungi campo</button>\r
|
|
3633
3969
|
</fieldset>\r
|
|
3634
3970
|
`,styles:[`:host{display:block}
|
|
3635
|
-
`]}]}],ctorParameters:()=>[],propDecorators:{holder:[{type:a.Input,args:[{isSignal:!0,alias:"holder",required:!0}]}],object:[{type:a.Input,args:[{isSignal:!0,alias:"object",required:!1}]}],usage:[{type:a.Input,args:[{isSignal:!0,alias:"usage",required:!1}]}],title:[{type:a.Input,args:[{isSignal:!0,alias:"title",required:!1}]}],disabledReason:[{type:a.Input,args:[{isSignal:!0,alias:"disabledReason",required:!1}]}],changed:[{type:a.Output,args:["changed"]}]}});class
|
|
3971
|
+
`]}]}],ctorParameters:()=>[],propDecorators:{holder:[{type:a.Input,args:[{isSignal:!0,alias:"holder",required:!0}]}],object:[{type:a.Input,args:[{isSignal:!0,alias:"object",required:!1}]}],usage:[{type:a.Input,args:[{isSignal:!0,alias:"usage",required:!1}]}],title:[{type:a.Input,args:[{isSignal:!0,alias:"title",required:!1}]}],disabledReason:[{type:a.Input,args:[{isSignal:!0,alias:"disabledReason",required:!1}]}],changed:[{type:a.Output,args:["changed"]}]}});class C{api=b(B);store=b(T);nodeName=d.required(...ngDevMode?[{debugName:"nodeName"}]:[]);node=d.required(...ngDevMode?[{debugName:"node"}]:[]);outlets=d.required(...ngDevMode?[{debugName:"outlets"}]:[]);title=d("Uscite",...ngDevMode?[{debugName:"title"}]:[]);connectorChanged=v();targets=u([],...ngDevMode?[{debugName:"targets"}]:[]);constructor(){w(()=>{const e=this.store.document(),n=this.nodeName();this.api.getConnectorTargets(e,n).then(r=>this.targets.set(r??[])).catch(()=>{this.targets.set(this.store.nodes().filter(r=>r.name!==n).map(r=>({name:r.name,label:r.node.label??null})))})})}targetOptions=s(()=>this.targets(),...ngDevMode?[{debugName:"targetOptions"}]:[]);currentTarget(e){return e.read(this.node())?.targetReference??""}isGoTo(e){return e.read(this.node())?.isGoTo===!0}isDangling(e){const n=e.read(this.node());return!!n&&!n.targetReference}isTerminal(e){return!e.read(this.node())}hintFor(e){return this.isDangling(e)?"Ramo dichiarato senza destinazione: scegline una o rimuovi il ramo.":this.isTerminal(e)?e.isStructural?"Questo ramo e\u2019 strutturale: senza destinazione l\u2019elemento non funziona.":e.isFaultRecovery?"Nessuna gestione dell\u2019errore: se l\u2019elemento fallisce l\u2019interview termina con esito Failed e le modifiche gi\xE0 eseguite vengono annullate.":"Nessuna destinazione: il percorso finisce qui, e l\u2019esecuzione termina.":null}setTarget(e,n){this.connectorChanged.emit({outletKey:e.key,target:n||void 0})}setGoTo(e,n){this.connectorChanged.emit({outletKey:e.key,target:this.currentTarget(e)||void 0,isGoTo:n})}clear(e){this.connectorChanged.emit({outletKey:e.key,target:void 0,isGoTo:!1})}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:C,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:C,isStandalone:!0,selector:"fb-connector-editor",inputs:{nodeName:{classPropertyName:"nodeName",publicName:"nodeName",isSignal:!0,isRequired:!0,transformFunction:null},node:{classPropertyName:"node",publicName:"node",isSignal:!0,isRequired:!0,transformFunction:null},outlets:{classPropertyName:"outlets",publicName:"outlets",isSignal:!0,isRequired:!0,transformFunction:null},title:{classPropertyName:"title",publicName:"title",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{connectorChanged:"connectorChanged"},ngImport:a,template:`<fieldset class="fb-section">\r
|
|
3636
3972
|
<legend class="fb-section__title">{{ title() }}</legend>\r
|
|
3637
3973
|
\r
|
|
3638
3974
|
@for (outlet of outlets(); track outlet.key) {\r
|
|
@@ -3688,7 +4024,7 @@
|
|
|
3688
4024
|
}\r
|
|
3689
4025
|
</fieldset>\r
|
|
3690
4026
|
`,styles:[`:host{display:block}.fb-conn__kind{margin-left:5px;padding:0 5px;border-radius:8px;background:var(--fb-badge-bg, #eef1f5);font-size:9px;font-weight:600;text-transform:none;color:var(--fb-text-subtle, #98a2b3)}.fb-conn__kind[data-kind=Fault]{background:color-mix(in srgb,var(--fb-error, #c9372c) 14%,transparent);color:var(--fb-error, #c9372c)}.fb-conn__kind[data-kind=Timeout],.fb-conn__kind[data-kind=ScheduledPath]{background:color-mix(in srgb,var(--fb-warning, #b7791f) 14%,transparent);color:var(--fb-warning, #b7791f)}.fb-conn__kind[data-kind=Rule],.fb-conn__kind[data-kind=WaitEvent]{background:color-mix(in srgb,var(--fb-edge-rule, #7c5cd6) 14%,transparent);color:var(--fb-edge-rule, #7c5cd6)}.fb-field__row .fb-select{flex:1;min-width:0}
|
|
3691
|
-
`],dependencies:[{kind:"directive",type:
|
|
4027
|
+
`],dependencies:[{kind:"directive",type:k,selector:"select[fbValue]",inputs:["fbValue"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:C,decorators:[{type:y,args:[{selector:"fb-connector-editor",standalone:!0,imports:[k],changeDetection:_.OnPush,template:`<fieldset class="fb-section">\r
|
|
3692
4028
|
<legend class="fb-section__title">{{ title() }}</legend>\r
|
|
3693
4029
|
\r
|
|
3694
4030
|
@for (outlet of outlets(); track outlet.key) {\r
|
|
@@ -3744,7 +4080,7 @@
|
|
|
3744
4080
|
}\r
|
|
3745
4081
|
</fieldset>\r
|
|
3746
4082
|
`,styles:[`:host{display:block}.fb-conn__kind{margin-left:5px;padding:0 5px;border-radius:8px;background:var(--fb-badge-bg, #eef1f5);font-size:9px;font-weight:600;text-transform:none;color:var(--fb-text-subtle, #98a2b3)}.fb-conn__kind[data-kind=Fault]{background:color-mix(in srgb,var(--fb-error, #c9372c) 14%,transparent);color:var(--fb-error, #c9372c)}.fb-conn__kind[data-kind=Timeout],.fb-conn__kind[data-kind=ScheduledPath]{background:color-mix(in srgb,var(--fb-warning, #b7791f) 14%,transparent);color:var(--fb-warning, #b7791f)}.fb-conn__kind[data-kind=Rule],.fb-conn__kind[data-kind=WaitEvent]{background:color-mix(in srgb,var(--fb-edge-rule, #7c5cd6) 14%,transparent);color:var(--fb-edge-rule, #7c5cd6)}.fb-field__row .fb-select{flex:1;min-width:0}
|
|
3747
|
-
`]}]}],ctorParameters:()=>[],propDecorators:{nodeName:[{type:a.Input,args:[{isSignal:!0,alias:"nodeName",required:!0}]}],node:[{type:a.Input,args:[{isSignal:!0,alias:"node",required:!0}]}],outlets:[{type:a.Input,args:[{isSignal:!0,alias:"outlets",required:!0}]}],title:[{type:a.Input,args:[{isSignal:!0,alias:"title",required:!1}]}],connectorChanged:[{type:a.Output,args:["connectorChanged"]}]}});class
|
|
4083
|
+
`]}]}],ctorParameters:()=>[],propDecorators:{nodeName:[{type:a.Input,args:[{isSignal:!0,alias:"nodeName",required:!0}]}],node:[{type:a.Input,args:[{isSignal:!0,alias:"node",required:!0}]}],outlets:[{type:a.Input,args:[{isSignal:!0,alias:"outlets",required:!0}]}],title:[{type:a.Input,args:[{isSignal:!0,alias:"title",required:!1}]}],connectorChanged:[{type:a.Output,args:["connectorChanged"]}]}});class z{store=b(T);dictionaries=b(I);validation=b(H);name=d.required(...ngDevMode?[{debugName:"name"}]:[]);node=d.required(...ngDevMode?[{debugName:"node"}]:[]);outlets=s(()=>L(this.elementType,this.node()),...ngDevMode?[{debugName:"outlets"}]:[]);issues=s(()=>this.validation.issuesByElement().get(this.name())??[],...ngDevMode?[{debugName:"issues"}]:[]);issuesAt(e){return this.validation.issuesAt(this.name(),e)}hasIssueCode(e){return this.issues().some(n=>n.code===e)}patch(e){this.store.updateNode(this.name(),e)}setField(e,n){this.patch(r=>{n==null||n===""?delete r[e]:r[e]=n})}onConnectorChanged(e){this.store.setConnector(this.name(),e.outletKey,e.target,e.isGoTo)}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:z,deps:[],target:a.\u0275\u0275FactoryTarget.Directive});static \u0275dir=a.\u0275\u0275ngDeclareDirective({minVersion:"17.1.0",version:"20.3.28",type:z,isStandalone:!0,inputs:{name:{classPropertyName:"name",publicName:"name",isSignal:!0,isRequired:!0,transformFunction:null},node:{classPropertyName:"node",publicName:"node",isSignal:!0,isRequired:!0,transformFunction:null}},ngImport:a})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:z,decorators:[{type:hr}],propDecorators:{name:[{type:a.Input,args:[{isSignal:!0,alias:"name",required:!0}]}],node:[{type:a.Input,args:[{isSignal:!0,alias:"node",required:!0}]}]}});class Ie extends z{catalog=b(M);elementType="ActionCall";action=s(()=>this.node(),...ngDevMode?[{debugName:"action"}]:[]);transactionModels=s(()=>this.dictionaries.transactionModels(),...ngDevMode?[{debugName:"transactionModels"}]:[]);offsetUnits=s(()=>this.dictionaries.offsetUnits(),...ngDevMode?[{debugName:"offsetUnits"}]:[]);actionTypes=u([],...ngDevMode?[{debugName:"actionTypes"}]:[]);actions=u([],...ngDevMode?[{debugName:"actions"}]:[]);parameters=u([],...ngDevMode?[{debugName:"parameters"}]:[]);constructor(){super(),this.catalog.listActionTypes().then(e=>this.actionTypes.set(e??[])).catch(()=>this.actionTypes.set([])),w(()=>{const e=this.action().actionType;if(!e){this.actions.set([]);return}this.catalog.listActions(e).then(n=>this.applyActions(e,n??[])).catch(()=>this.applyActions(e,[]))}),w(()=>{const e=this.action();if(!e.actionType||!e.actionName){this.parameters.set([]);return}const n=`${e.actionType}/${e.actionName}`;this.catalog.listActionParameters(e.actionType,e.actionName).then(r=>this.applyParameters(n,r??[])).catch(()=>this.applyParameters(n,[]))})}applyActions(e,n){K(()=>this.action().actionType)===e&&this.actions.set(n)}applyParameters(e,n){const r=K(()=>this.action());`${r.actionType}/${r.actionName}`===e&&this.parameters.set(n)}actionTypeOptions=s(()=>this.actionTypes(),...ngDevMode?[{debugName:"actionTypeOptions"}]:[]);actionOptions=s(()=>this.actions(),...ngDevMode?[{debugName:"actionOptions"}]:[]);parameterCatalog=s(()=>this.parameters(),...ngDevMode?[{debugName:"parameterCatalog"}]:[]);timeoutEnabled=s(()=>this.action().timeoutPathUsage==="EnableTimeoutPath",...ngDevMode?[{debugName:"timeoutEnabled"}]:[]);timeoutMismatch=s(()=>!!this.action().timeoutConnector?.targetReference!==this.timeoutEnabled(),...ngDevMode?[{debugName:"timeoutMismatch"}]:[]);storeOutputAutomatically=s(()=>this.action().storeOutputAutomatically===!0,...ngDevMode?[{debugName:"storeOutputAutomatically"}]:[]);setActionType(e){this.patch(n=>{const r=n;r.actionType!==e&&(r.actionType=e||void 0,delete r.actionName,delete r.inputParameters,delete r.outputParameters)})}setActionName(e){this.patch(n=>{const r=n;r.actionName!==e&&(r.actionName=e||void 0,delete r.inputParameters,delete r.outputParameters)})}setTransactionModel(e){this.setField("flowTransactionModel",e)}setWaitUntilCompleted(e){this.patch(n=>{const r=n;e?r.isWaitUntilCompleted=!0:delete r.isWaitUntilCompleted})}setOffset(e){const n=Number.parseInt(e,10);this.setField("offset",Number.isNaN(n)?void 0:n)}setOffsetUnit(e){this.setField("offsetUnit",e)}setTimeoutEnabled(e){this.patch(n=>{const r=n;e?r.timeoutPathUsage="EnableTimeoutPath":(delete r.timeoutPathUsage,delete r.timeoutConnector)})}setStoreOutputAutomatically(e){this.patch(n=>{const r=n;e?(r.storeOutputAutomatically=!0,delete r.outputParameters):delete r.storeOutputAutomatically})}onParametersChanged(e){this.patch(n=>e(n))}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Ie,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:Ie,isStandalone:!0,selector:"fb-action-call-inspector",usesInheritance:!0,ngImport:a,template:`<div class="fb-field">\r
|
|
3748
4084
|
<label class="fb-field__label fb-field__label--required">Tipo di action</label>\r
|
|
3749
4085
|
<fb-name-picker\r
|
|
3750
4086
|
[value]="action().actionType"\r
|
|
@@ -3882,7 +4218,7 @@
|
|
|
3882
4218
|
title="Le tre uscite"\r
|
|
3883
4219
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
3884
4220
|
/>\r
|
|
3885
|
-
`,dependencies:[{kind:"component",type:
|
|
4221
|
+
`,dependencies:[{kind:"component",type:C,selector:"fb-connector-editor",inputs:["nodeName","node","outlets","title"],outputs:["connectorChanged"]},{kind:"component",type:F,selector:"fb-name-picker",inputs:["value","options","label","placeholder","disabled","unknownMessage","unknownSeverity","unusableOptions","unusableMessage","emptyMessage","isMono","commitOn"],outputs:["valueChange"]},{kind:"component",type:V,selector:"fb-parameter-editor",inputs:["holder","catalogParameters","inputTitle","outputTitle","showInputs","showOutputs","outputsDisabledReason","extraTargets"],outputs:["changed"]},{kind:"directive",type:k,selector:"select[fbValue]",inputs:["fbValue"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Ie,decorators:[{type:y,args:[{selector:"fb-action-call-inspector",standalone:!0,imports:[C,F,V,k],changeDetection:_.OnPush,template:`<div class="fb-field">\r
|
|
3886
4222
|
<label class="fb-field__label fb-field__label--required">Tipo di action</label>\r
|
|
3887
4223
|
<fb-name-picker\r
|
|
3888
4224
|
[value]="action().actionType"\r
|
|
@@ -4020,7 +4356,7 @@
|
|
|
4020
4356
|
title="Le tre uscite"\r
|
|
4021
4357
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
4022
4358
|
/>\r
|
|
4023
|
-
`}]}],ctorParameters:()=>[]});class
|
|
4359
|
+
`}]}],ctorParameters:()=>[]});class Ee extends z{elementType="Assignment";api=b(B);catalog=b(M);writableReferences=u([],...ngDevMode?[{debugName:"writableReferences"}]:[]);targetTypes=It(this.catalog,e=>this.dictionaries.isStructure(e),()=>({references:this.writableReferences(),values:this.items().map(e=>e.assignToReference)}));constructor(){super(),w(()=>{const e=this.store.document();this.items().length&&this.api.getWritableReferences(e).then(n=>this.writableReferences.set(n??[])).catch(()=>this.writableReferences.set([]))})}targetDataType(e){return this.targetTypes.dataTypeOf(e.assignToReference)}targetObjectType(e){return this.targetTypes.objectTypeOf(e.assignToReference)}assignment=s(()=>this.node(),...ngDevMode?[{debugName:"assignment"}]:[]);items=s(()=>this.assignment().assignmentItems??[],...ngDevMode?[{debugName:"items"}]:[]);operators=s(()=>this.dictionaries.assignmentOperators(),...ngDevMode?[{debugName:"operators"}]:[]);operatorLabel(e){return e?this.operators().find(n=>n.value===e)?.label??e:""}operatorDescription(e){return this.operators().find(n=>n.value===e)?.description??null}expectsCollection(e){return this.dictionaries.assignmentExpectsCollection(e.operator)}addSemanticsHint(e){return e.operator!=="Add"?null:"Su un numero somma, su una data aggiunge giorni, su un testo concatena, su una collection accoda."}addItem(){this.patch(e=>{const n=e;n.assignmentItems??=[],n.assignmentItems.push({operator:"Assign"})})}removeItem(e){this.patch(n=>{const r=n;r.assignmentItems?.splice(e,1),r.assignmentItems?.length===0&&delete r.assignmentItems})}moveItem(e,n){const r=e+n;r<0||r>=this.items().length||this.patch(t=>{const i=t.assignmentItems;if(!i)return;const[l]=i.splice(e,1);i.splice(r,0,l)})}setTarget(e,n){this.patch(r=>{const t=r.assignmentItems?.[e];t&&(t.assignToReference=n)})}setOperator(e,n){this.patch(r=>{const t=r.assignmentItems?.[e];t&&(t.operator=n)})}setValue(e,n){this.patch(r=>{const t=r.assignmentItems?.[e];t&&(t.value=n)})}needsValue(e){const n=e.operator??"";return!n.startsWith("Remove")||n==="RemovePosition"||n==="RemoveUncommon"}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Ee,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:Ee,isStandalone:!0,selector:"fb-assignment-inspector",usesInheritance:!0,ngImport:a,template:`<fieldset class="fb-section">\r
|
|
4024
4360
|
<legend class="fb-section__title">Operazioni</legend>\r
|
|
4025
4361
|
<p class="fb-section__note">\r
|
|
4026
4362
|
Le operazioni sono eseguite <strong>nell\u2019ordine in cui compaiono</strong>: spostarne una cambia il\r
|
|
@@ -4143,7 +4479,7 @@
|
|
|
4143
4479
|
[outlets]="outlets()"\r
|
|
4144
4480
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
4145
4481
|
/>\r
|
|
4146
|
-
`,dependencies:[{kind:"component",type:
|
|
4482
|
+
`,dependencies:[{kind:"component",type:C,selector:"fb-connector-editor",inputs:["nodeName","node","outlets","title"],outputs:["connectorChanged"]},{kind:"component",type:$,selector:"fb-reference-picker",inputs:["value","label","placeholder","disabled","dataType","isCollection","objectType","writableOnly","elementsOnly","extraReferences"],outputs:["valueChange"]},{kind:"component",type:S,selector:"fb-value-editor",inputs:["value","label","dataType","objectType","isCollection","valueSet","disabled","allowFormula"],outputs:["valueChange"]},{kind:"directive",type:k,selector:"select[fbValue]",inputs:["fbValue"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Ee,decorators:[{type:y,args:[{selector:"fb-assignment-inspector",standalone:!0,imports:[C,$,S,k],changeDetection:_.OnPush,template:`<fieldset class="fb-section">\r
|
|
4147
4483
|
<legend class="fb-section__title">Operazioni</legend>\r
|
|
4148
4484
|
<p class="fb-section__note">\r
|
|
4149
4485
|
Le operazioni sono eseguite <strong>nell\u2019ordine in cui compaiono</strong>: spostarne una cambia il\r
|
|
@@ -4266,7 +4602,7 @@
|
|
|
4266
4602
|
[outlets]="outlets()"\r
|
|
4267
4603
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
4268
4604
|
/>\r
|
|
4269
|
-
`}]}],ctorParameters:()=>[]});class
|
|
4605
|
+
`}]}],ctorParameters:()=>[]});class ze extends z{elementType="CollectionProcessor";processor=s(()=>this.node(),...ngDevMode?[{debugName:"processor"}]:[]);kinds=s(()=>this.dictionaries.collectionProcessorTypes(),...ngDevMode?[{debugName:"kinds"}]:[]);sortOrders=s(()=>this.dictionaries.sortOrders(),...ngDevMode?[{debugName:"sortOrders"}]:[]);isSort=s(()=>this.processor().collectionProcessorType==="Sort",...ngDevMode?[{debugName:"isSort"}]:[]);isFilter=s(()=>this.processor().collectionProcessorType==="Filter",...ngDevMode?[{debugName:"isFilter"}]:[]);hasKind=s(()=>!!this.processor().collectionProcessorType,...ngDevMode?[{debugName:"hasKind"}]:[]);sortOptions=s(()=>this.processor().sortOptions??[],...ngDevMode?[{debugName:"sortOptions"}]:[]);elementDataType=s(()=>{const e=this.processor().collectionReference;return this.store.document().variables?.find(n=>n.name===e)?.dataType},...ngDevMode?[{debugName:"elementDataType"}]:[]);elementObjectType=s(()=>{const e=this.processor().collectionReference;return this.store.document().variables?.find(n=>n.name===e)?.objectType},...ngDevMode?[{debugName:"elementObjectType"}]:[]);setKind(e){this.patch(n=>{const r=n;r.collectionProcessorType=e,e==="Sort"?(delete r.conditions,delete r.conditionLogic,delete r.formula,delete r.assignNextValueToReference):e==="Filter"&&delete r.sortOptions})}setCollection(e){this.setField("collectionReference",e)}setCurrentElementVariable(e){this.setField("assignNextValueToReference",e)}setLimit(e){const n=Number.parseInt(e,10);this.setField("limit",Number.isNaN(n)?void 0:n)}addSortOption(){this.patch(e=>{const n=e;n.sortOptions??=[],n.sortOptions.push({sortOrder:"Asc"})})}removeSortOption(e){this.patch(n=>{const r=n;r.sortOptions?.splice(e,1),r.sortOptions?.length===0&&delete r.sortOptions})}moveSortOption(e,n){const r=e+n;r<0||r>=this.sortOptions().length||this.patch(t=>{const i=t.sortOptions;if(!i)return;const[l]=i.splice(e,1);i.splice(r,0,l)})}setSortField(e,n){this.patch(r=>{const t=r.sortOptions?.[e];t&&(t.sortField=n||void 0)})}setSortOrder(e,n){this.patch(r=>{const t=r.sortOptions?.[e];t&&(t.sortOrder=n)})}setEmptyFirst(e,n){this.patch(r=>{const t=r.sortOptions?.[e];t&&(t.doesPutEmptyStringAndNullFirst=n)})}onConditionsChanged(e){this.patch(n=>e(n))}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ze,deps:null,target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:ze,isStandalone:!0,selector:"fb-collection-processor-inspector",usesInheritance:!0,ngImport:a,template:`<div class="fb-field">\r
|
|
4270
4606
|
<label class="fb-field__label fb-field__label--required">Cosa fa</label>\r
|
|
4271
4607
|
<select\r
|
|
4272
4608
|
class="fb-select"\r
|
|
@@ -4421,7 +4757,7 @@
|
|
|
4421
4757
|
[outlets]="outlets()"\r
|
|
4422
4758
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
4423
4759
|
/>\r
|
|
4424
|
-
`,dependencies:[{kind:"component",type:
|
|
4760
|
+
`,dependencies:[{kind:"component",type:W,selector:"fb-condition-editor",inputs:["holder","title","allowFormula","allowLogic","issuePath"],outputs:["changed"]},{kind:"component",type:C,selector:"fb-connector-editor",inputs:["nodeName","node","outlets","title"],outputs:["connectorChanged"]},{kind:"component",type:$,selector:"fb-reference-picker",inputs:["value","label","placeholder","disabled","dataType","isCollection","objectType","writableOnly","elementsOnly","extraReferences"],outputs:["valueChange"]},{kind:"directive",type:k,selector:"select[fbValue]",inputs:["fbValue"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ze,decorators:[{type:y,args:[{selector:"fb-collection-processor-inspector",standalone:!0,imports:[W,C,$,k],changeDetection:_.OnPush,template:`<div class="fb-field">\r
|
|
4425
4761
|
<label class="fb-field__label fb-field__label--required">Cosa fa</label>\r
|
|
4426
4762
|
<select\r
|
|
4427
4763
|
class="fb-select"\r
|
|
@@ -4576,7 +4912,7 @@
|
|
|
4576
4912
|
[outlets]="outlets()"\r
|
|
4577
4913
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
4578
4914
|
/>\r
|
|
4579
|
-
`}]}]});class
|
|
4915
|
+
`}]}]});class Ae extends z{elementType="CustomError";customError=s(()=>this.node(),...ngDevMode?[{debugName:"customError"}]:[]);messages=s(()=>this.customError().customErrorMessages??[],...ngDevMode?[{debugName:"messages"}]:[]);addMessage(){this.patch(e=>{const n=e;n.customErrorMessages??=[],n.customErrorMessages.push({errorMessage:""})})}removeMessage(e){this.patch(n=>{const r=n;r.customErrorMessages?.splice(e,1),r.customErrorMessages?.length===0&&delete r.customErrorMessages})}setMessage(e,n){this.patch(r=>{const t=r.customErrorMessages?.[e];t&&(t.errorMessage=n)})}setIsFieldError(e,n){this.patch(r=>{const t=r.customErrorMessages?.[e];t&&(n?t.isFieldError=!0:(delete t.isFieldError,delete t.fieldSelection))})}setFieldSelection(e,n){this.patch(r=>{const t=r.customErrorMessages?.[e];t&&(t.fieldSelection=n||void 0)})}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Ae,deps:null,target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:Ae,isStandalone:!0,selector:"fb-custom-error-inspector",usesInheritance:!0,ngImport:a,template:`<p class="fb-callout">\r
|
|
4580
4916
|
Questo elemento <strong>interrompe</strong> l\u2019esecuzione e restituisce i messaggi al chiamante. Non ha\r
|
|
4581
4917
|
uscite: quello che c\u2019e\u2019 dopo non verra\u2019 eseguito.\r
|
|
4582
4918
|
</p>\r
|
|
@@ -4637,7 +4973,7 @@
|
|
|
4637
4973
|
</div>\r
|
|
4638
4974
|
\r
|
|
4639
4975
|
<button type="button" class="fb-btn" (click)="addMessage()">Aggiungi messaggio</button>\r
|
|
4640
|
-
`,changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type
|
|
4976
|
+
`,changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Ae,decorators:[{type:y,args:[{selector:"fb-custom-error-inspector",standalone:!0,changeDetection:_.OnPush,template:`<p class="fb-callout">\r
|
|
4641
4977
|
Questo elemento <strong>interrompe</strong> l\u2019esecuzione e restituisce i messaggi al chiamante. Non ha\r
|
|
4642
4978
|
uscite: quello che c\u2019e\u2019 dopo non verra\u2019 eseguito.\r
|
|
4643
4979
|
</p>\r
|
|
@@ -4698,7 +5034,7 @@
|
|
|
4698
5034
|
</div>\r
|
|
4699
5035
|
\r
|
|
4700
5036
|
<button type="button" class="fb-btn" (click)="addMessage()">Aggiungi messaggio</button>\r
|
|
4701
|
-
`}]}]});class
|
|
5037
|
+
`}]}]});class qe extends z{elementType="Decision";decision=s(()=>this.node(),...ngDevMode?[{debugName:"decision"}]:[]);rules=s(()=>this.decision().rules??[],...ngDevMode?[{debugName:"rules"}]:[]);defaultLabel=s(()=>this.decision().defaultConnectorLabel??"",...ngDevMode?[{debugName:"defaultLabel"}]:[]);hasDefaultTarget=s(()=>!!this.decision().defaultConnector?.targetReference,...ngDevMode?[{debugName:"hasDefaultTarget"}]:[]);ruleNameError(e){const n=this.rules(),r=n[e];if(!r?.name)return"Il nome della regola e\u2019 obbligatorio.";const t=n.filter((l,c)=>c!==e).map(l=>l.name??""),i=$e(r.name,t);return i.isValid?null:i.message??"Nome non valido."}addRule(){this.patch(e=>{const n=e;n.rules??=[];const r=n.rules.map(i=>i.name??""),t=U("Regola",r);n.rules.push({name:t,label:`Regola ${n.rules.length+1}`,conditionLogic:"and",conditions:[{operator:"EqualTo"}]})})}removeRule(e){this.patch(n=>{const r=n;r.rules?.splice(e,1),r.rules?.length===0&&delete r.rules})}moveRule(e,n){const r=e+n;r<0||r>=this.rules().length||this.patch(t=>{const i=t.rules;if(!i)return;const[l]=i.splice(e,1);i.splice(r,0,l)})}setRuleLabel(e,n){this.patch(r=>{const t=r.rules?.[e];t&&(t.label=n||void 0,!t.name&&n&&(t.name=fe(n)))})}setRuleName(e,n){this.patch(r=>{const t=r.rules?.[e];t&&(t.name=n)})}onRuleConditionsChanged(e,n){this.patch(r=>{const t=r.rules?.[e];t&&n(t)})}setDefaultLabel(e){this.setField("defaultConnectorLabel",e)}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:qe,deps:null,target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:qe,isStandalone:!0,selector:"fb-decision-inspector",usesInheritance:!0,ngImport:a,template:`<p class="fb-callout">\r
|
|
4702
5038
|
Le regole sono valutate <strong>dall\u2019alto verso il basso</strong> e si ferma alla prima vera. L\u2019ordine e\u2019\r
|
|
4703
5039
|
parte del significato del flow: usa le frecce per cambiarlo.\r
|
|
4704
5040
|
</p>\r
|
|
@@ -4805,7 +5141,7 @@
|
|
|
4805
5141
|
title="Rami"\r
|
|
4806
5142
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
4807
5143
|
/>\r
|
|
4808
|
-
`,dependencies:[{kind:"component",type:
|
|
5144
|
+
`,dependencies:[{kind:"component",type:W,selector:"fb-condition-editor",inputs:["holder","title","allowFormula","allowLogic","issuePath"],outputs:["changed"]},{kind:"component",type:C,selector:"fb-connector-editor",inputs:["nodeName","node","outlets","title"],outputs:["connectorChanged"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:qe,decorators:[{type:y,args:[{selector:"fb-decision-inspector",standalone:!0,imports:[W,C],changeDetection:_.OnPush,template:`<p class="fb-callout">\r
|
|
4809
5145
|
Le regole sono valutate <strong>dall\u2019alto verso il basso</strong> e si ferma alla prima vera. L\u2019ordine e\u2019\r
|
|
4810
5146
|
parte del significato del flow: usa le frecce per cambiarlo.\r
|
|
4811
5147
|
</p>\r
|
|
@@ -4912,7 +5248,7 @@
|
|
|
4912
5248
|
title="Rami"\r
|
|
4913
5249
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
4914
5250
|
/>\r
|
|
4915
|
-
`}]}]});const ee=3,Kt={DisplayText:"\xB6",InputField:"\u25AD",LargeTextArea:"\u25A4",PasswordField:"\u2022\u2022\u2022",RadioButtons:"\u25C9",DropdownBox:"\u25BE",MultiSelectCheckboxes:"\u2611",MultiSelectPicklist:"\u2261",ComponentInstance:"\u2B21",Region:"\u25AF",RegionContainer:"\u25A3",ObjectProvided:"\u2317"};class se extends E{catalog=b(S);document=b(kt);dictionary=b(R);elementType="DynamicScreen";screen=i(()=>this.node(),...ngDevMode?[{debugName:"screen"}]:[]);selection=u(null,...ngDevMode?[{debugName:"selection"}]:[]);selectedPath=i(()=>{const e=this.selection();return e&&Z(this.screen().fields,e)?e:null},...ngDevMode?[{debugName:"selectedPath"}]:[]);selectedField=i(()=>{const e=this.selectedPath();return e?Z(this.screen().fields,e):void 0},...ngDevMode?[{debugName:"selectedField"}]:[]);selectedType=i(()=>this.dictionary.screenFieldType(this.selectedField()?.fieldType),...ngDevMode?[{debugName:"selectedType"}]:[]);paletteTab=u("components",...ngDevMode?[{debugName:"paletteTab"}]:[]);fieldsObject=u(void 0,...ngDevMode?[{debugName:"fieldsObject"}]:[]);objectFields=u([],...ngDevMode?[{debugName:"objectFields"}]:[]);fieldsOfObject=i(()=>this.objectFields(),...ngDevMode?[{debugName:"fieldsOfObject"}]:[]);iconOf(e){return e?Kt[e]??(this.dictionary.screenFieldType(e)?.label??e).charAt(0).toUpperCase():"\u2022"}setPaletteTab(e){this.paletteTab.set(e)}setFieldsObject(e){this.fieldsObject.set(e||void 0)}components=u([],...ngDevMode?[{debugName:"components"}]:[]);forms=u([],...ngDevMode?[{debugName:"forms"}]:[]);componentParameters=u([],...ngDevMode?[{debugName:"componentParameters"}]:[]);enumTypes=u([],...ngDevMode?[{debugName:"enumTypes"}]:[]);constructor(){super(),this.catalog.listForms("Component").then(e=>this.components.set(e??[])).catch(()=>this.components.set([])),this.catalog.listForms("Form").then(e=>this.forms.set(e??[])).catch(()=>this.forms.set([])),this.catalog.listEnumTypes().then(e=>this.enumTypes.set(e??[])).catch(()=>this.enumTypes.set([])),w(()=>{const e=this.selectedField()?.extensionName;if(!e){this.componentParameters.set([]);return}this.catalog.listFormParameters(e).then(n=>this.componentParameters.set(n??[])).catch(()=>this.componentParameters.set([]))}),this.catalog.listActionTypes().then(e=>this.actionTypes.set(e??[])).catch(()=>this.actionTypes.set([])),w(()=>{const e=this.selectedAction()?.actionType;if(!e){this.actionsOfType.set([]);return}this.catalog.listActions(e).then(n=>this.applyActions(e,n??[])).catch(()=>this.applyActions(e,[]))}),w(()=>{const e=this.selectedAction();if(!e?.actionType||!e.actionName){this.actionParameters.set([]);return}const n=`${e.actionType}/${e.actionName}`;this.catalog.listActionParameters(e.actionType,e.actionName).then(r=>this.applyActionParameters(n,r??[])).catch(()=>this.applyActionParameters(n,[]))}),w(()=>{const e=this.fieldsObject();if(!e){this.objectFields.set([]);return}this.catalog.listFields(e).then(n=>this.objectFields.set(n??[])).catch(()=>this.objectFields.set([]))})}applyActions(e,n){H(()=>this.selectedAction()?.actionType)===e&&this.actionsOfType.set(n)}applyActionParameters(e,n){const r=H(()=>this.selectedAction());`${r?.actionType}/${r?.actionName}`===e&&this.actionParameters.set(n)}componentOptions=i(()=>this.components(),...ngDevMode?[{debugName:"componentOptions"}]:[]);unusableComponents=i(()=>{const e=new Set(this.components().map(n=>n.name));return this.forms().filter(n=>!e.has(n.name))},...ngDevMode?[{debugName:"unusableComponents"}]:[]);enumOptions=i(()=>this.enumTypes(),...ngDevMode?[{debugName:"enumOptions"}]:[]);componentParameterList=i(()=>this.componentParameters(),...ngDevMode?[{debugName:"componentParameterList"}]:[]);choiceOptions=i(()=>{const e=this.store.document(),n=[];for(const r of e.choices??[])n.push({name:r.name??"",label:r.choiceText??null,description:"Choice"});for(const r of e.dynamicChoiceSets??[])n.push({name:r.name??"",label:r.object?`da ${r.object}`:null,description:"Dynamic choice set"});return n.filter(r=>r.name)},...ngDevMode?[{debugName:"choiceOptions"}]:[]);stageOptions=i(()=>(this.store.document().stages??[]).filter(e=>e.name).map(e=>({name:e.name,label:e.label??null})),...ngDevMode?[{debugName:"stageOptions"}]:[]);isSelected(e){return nn(this.selectedPath(),e)}isContainer(e){return this.dictionary.screenFieldIsContainer(e?.fieldType)}isSection(e){return e?.fieldType==="RegionContainer"}childPath(e,n){return[...e,n]}captionOf(e){return e.fieldText||e.name||"(senza etichetta)"}typeLabelOf(e){return this.dictionary.screenFieldType(e.fieldType)?.label??e.fieldType??"\u2014"}widthOf(e){return Math.min(12,Math.max(1,e.width??12))}isUnknownType(e){return!!e?.fieldType&&!this.dictionary.screenFieldType(e.fieldType)}choiceLabelsOf(e){const n=this.store.document();return(e.choiceReferences??[]).map(r=>{const t=(n.choices??[]).find(l=>l.name===r);if(t)return t.choiceText||t.name||r;const s=(n.dynamicChoiceSets??[]).find(l=>l.name===r);return s?`${s.name} (dinamiche)`:r})}placeholderOf(e){const n=e.defaultValue;if(!n)return"";if(n.elementReference)return`{!${n.elementReference}}`;if(n.formulaExpression)return`= ${n.formulaExpression}`;const r=n.stringValue??n.numberValue??n.integerValue??n.dateValue??n.enumValue??(n.booleanValue===void 0?void 0:String(n.booleanValue));return r===void 0?"":String(r)}dragging=u(null,...ngDevMode?[{debugName:"dragging"}]:[]);dropTarget=u(null,...ngDevMode?[{debugName:"dropTarget"}]:[]);isDragging(e){const n=this.dragging();return!!n&&rn(n,e)}dropMarker=i(()=>this.dropTarget()?.marker??null,...ngDevMode?[{debugName:"dropMarker"}]:[]);onFieldDragStarted(e){this.dragging.set([...e]),this.select(e)}onFieldDragMoved(e){this.dropTarget.set(this.hitTest(e.pointerPosition.x,e.pointerPosition.y))}onFieldDragEnded(e,n){const r=this.dropTarget();this.dragging.set(null),this.dropTarget.set(null),e.source.reset(),!(!r||rn(n,r.parent))&&this.afterDrag(()=>this.applyMove(n,r.parent,r.index,!0))}onPaletteDragMoved(e){this.dropTarget.set(this.hitTest(e.pointerPosition.x,e.pointerPosition.y))}onComponentDragEnded(e,n){const r=this.dropTarget();this.dropTarget.set(null),e.source.reset(),r&&this.afterDrag(()=>this.addComponent(n,r))}onObjectFieldDragEnded(e,n){const r=this.dropTarget();this.dropTarget.set(null),e.source.reset(),r&&this.afterDrag(()=>this.addObjectField(n,r))}afterDrag(e){setTimeout(e)}hitTest(e,n){const t=this.document.elementFromPoint(e,n)?.closest("[data-drop]");if(!t)return null;const s=se.parsePath(t.dataset.drop??""),l=t.dataset.axis==="row",c=Array.from(t.children).filter(p=>p instanceof HTMLElement&&p.dataset.item!==void 0);if(!l){const p=c.filter(m=>{const y=m.getBoundingClientRect();return n>=y.top&&n<=y.bottom});if(p.length){if(p.length===1&&this.fillsRow(t,p[0])){const y=p[0],M=y.getBoundingClientRect(),F=c.indexOf(y);return n<M.top+M.height/2?{parent:s,index:F,marker:this.barAbove(t,y)}:{parent:s,index:F+1,marker:this.barBelow(t,y)}}for(const y of p){const M=y.getBoundingClientRect();if(e<M.left+M.width/2)return{parent:s,index:c.indexOf(y),marker:this.barBefore(y)}}const m=p[p.length-1];return{parent:s,index:c.indexOf(m)+1,marker:this.barAfter(m)}}}if(!c.length)return{parent:s,index:0,marker:this.barInside(t)};const f=l?e:n;for(let p=0;p<c.length;p+=1){const m=c[p],y=m.getBoundingClientRect(),M=l?y.left+y.width/2:y.top+y.height/2;if(f<M)return{parent:s,index:p,marker:l?this.barBefore(m):this.barAbove(t,m)}}const g=c[c.length-1];return{parent:s,index:c.length,marker:l?this.barAfter(g):this.barBelow(t,g)}}barBefore(e){const n=e.getBoundingClientRect();return this.toFrame(e,n.left-ee/2,n.top,ee,n.height)}barAfter(e){const n=e.getBoundingClientRect();return this.toFrame(e,n.right-ee/2,n.top,ee,n.height)}barAbove(e,n){const r=n.getBoundingClientRect(),t=this.contentBand(e);return this.toFrame(e,t.left,r.top-ee,t.width,ee)}barBelow(e,n){const r=n.getBoundingClientRect(),t=this.contentBand(e);return this.toFrame(e,t.left,r.bottom,t.width,ee)}barInside(e){const n=e.getBoundingClientRect(),r=this.contentBand(e);return this.toFrame(e,r.left,n.top+n.height/2-ee/2,r.width,ee)}contentBand(e){const n=e.getBoundingClientRect(),r=getComputedStyle(e),t=parseFloat(r.paddingLeft)||0,s=parseFloat(r.paddingRight)||0;return{left:n.left+t,width:Math.max(n.width-t-s,0)}}fillsRow(e,n){return n.getBoundingClientRect().width>=this.contentBand(e).width-1}toFrame(e,n,r,t,s){const c=e.closest(".fb-scr__frame")?.getBoundingClientRect();return{left:n-(c?.left??0),top:r-(c?.top??0),width:t,height:s}}static parsePath(e){return e?e.split(".").map(n=>Number(n)):[]}dropId(e){return e.join(".")}clickTarget(){const e=this.selectedPath();return e?this.isContainer(this.selectedField())?{parent:e,index:Z(this.screen().fields,e)?.fields?.length??0}:{parent:e.slice(0,-1),index:e[e.length-1]+1}:{parent:[],index:this.screen().fields?.length??0}}addComponentAtSelection(e){this.addComponent(e,this.clickTarget())}addObjectFieldAtSelection(e){this.addObjectField(e,this.clickTarget())}addComponent(e,n){const r=this.dictionary.screenFieldType(e)?.label??e,t=[...this.store.usedNames()],s={name:W(r,t),fieldType:e};t.push(s.name),this.dictionary.screenFieldStoresValue(e)&&this.dictionary.screenFieldRequiresDataType(e)&&(s.dataType="String"),this.dictionary.screenFieldIsContainer(e)||(s.fieldText=r),e==="RegionContainer"&&(s.fields=[{name:W("Colonna",t),fieldType:"Region",width:12}]);let l;this.patch(c=>{l=We(c,n.parent,s,n.index)}),l&&this.selection.set(l)}addObjectField(e,n){const r=this.fieldsObject();if(!r)return;const t={name:W(e.name,this.store.usedNames()),fieldType:"ObjectProvided",objectFieldReference:`${r}.${e.name}`};let s;this.patch(l=>{s=We(l,n.parent,t,n.index)}),s&&this.selection.set(s)}select(e){this.selection.set([...e])}selectScreen(){this.selection.set(null)}removeSelected(){const e=this.selectedPath();e&&(this.patch(n=>$n(n,e)),this.selection.set(null))}duplicateSelected(){const e=this.selectedPath(),n=this.selectedField();if(!e||!n)return;const r=W(n.name||"Campo",this.store.usedNames());let t;this.patch(s=>{t=Dr(s,e,r)}),t&&this.selection.set(t)}moveSelected(e){const n=this.selectedPath();if(!n)return;const r=n.slice(0,-1),t=n[n.length-1],s=r.length?Z(this.screen().fields,r)?.fields??[]:this.screen().fields??[],l=t+e;l<0||l>=s.length||this.applyMove(n,r,l)}outdentSelected(){const e=this.selectedPath();if(!e||e.length<2)return;const n=e.slice(0,-2),r=e[e.length-2];this.applyMove(e,n,r+1)}canOutdent=i(()=>(this.selectedPath()?.length??0)>=2,...ngDevMode?[{debugName:"canOutdent"}]:[]);applyMove(e,n,r,t=!1){const s=e.slice(0,-1),l=t&&nn(s,n)&&e[e.length-1]<r?r-1:r;let c;this.patch(f=>{c=Sr(f,e,n,l)}),c&&this.selection.set(c)}selectedIsResource=i(()=>this.selectedType()?.storesValue===!0,...ngDevMode?[{debugName:"selectedIsResource"}]:[]);isEmpty=i(()=>!this.screen().fields?.length,...ngDevMode?[{debugName:"isEmpty"}]:[]);isDeadEnd=i(()=>{const e=this.screen();return!e.connector?.targetReference&&e.allowFinish===!1},...ngDevMode?[{debugName:"isDeadEnd"}]:[]);allowBack=i(()=>this.screen().allowBack!==!1,...ngDevMode?[{debugName:"allowBack"}]:[]);allowFinish=i(()=>this.screen().allowFinish!==!1,...ngDevMode?[{debugName:"allowFinish"}]:[]);allowPause=i(()=>this.screen().allowPause!==!1,...ngDevMode?[{debugName:"allowPause"}]:[]);showHeader=i(()=>this.screen().showHeader!==!1,...ngDevMode?[{debugName:"showHeader"}]:[]);showFooter=i(()=>this.screen().showFooter!==!1,...ngDevMode?[{debugName:"showFooter"}]:[]);selectedIsEditable=i(()=>this.selectedField()?.isEditable!==!1,...ngDevMode?[{debugName:"selectedIsEditable"}]:[]);selectedIsRequired=i(()=>this.selectedField()?.isRequired===!0,...ngDevMode?[{debugName:"selectedIsRequired"}]:[]);hasOutputConflict=i(()=>{const e=this.selectedField();return e?.storeOutputAutomatically===!0&&(e.outputParameters?.length??0)>0},...ngDevMode?[{debugName:"hasOutputConflict"}]:[]);defaultChoiceIsForeign=i(()=>{const e=this.selectedField(),n=e?.defaultSelectedChoiceReference;return!!n&&!(e?.choiceReferences??[]).includes(n)},...ngDevMode?[{debugName:"defaultChoiceIsForeign"}]:[]);scaleApplies=i(()=>this.dictionary.supportsScale(this.selectedField()?.dataType),...ngDevMode?[{debugName:"scaleApplies"}]:[]);requiresObjectType=i(()=>this.dictionary.requiresObjectType(this.selectedField()?.dataType),...ngDevMode?[{debugName:"requiresObjectType"}]:[]);objectTypeIsStructure=i(()=>this.dictionary.isStructure(this.selectedField()?.dataType),...ngDevMode?[{debugName:"objectTypeIsStructure"}]:[]);providedObject=i(()=>{const e=this.selectedField()?.objectFieldReference??"",n=e.indexOf(".");return n<0?e:e.slice(0,n)},...ngDevMode?[{debugName:"providedObject"}]:[]);providedField=i(()=>{const e=this.selectedField()?.objectFieldReference??"",n=e.indexOf(".");return n<0?"":e.slice(n+1)},...ngDevMode?[{debugName:"providedField"}]:[]);patchField(e){const n=this.selectedPath();n&&this.patch(r=>{const t=Z(r.fields,n);t&&e(t)})}setFieldProperty(e,n){this.patchField(r=>{n==null||n===""?delete r[e]:r[e]=n})}setFieldName(e){const n=this.selectedPath(),r=e.trim();!n||!r||r===this.selectedField()?.name||this.store.renameScreenField(this.name(),n,r)}setFieldType(e){const n=this.dictionary.screenFieldType(e);this.patchField(r=>{r.fieldType=e,n?.storesValue||(delete r.dataType,delete r.objectType,delete r.isRequired,delete r.isEditable,delete r.defaultValue,delete r.scale,delete r.maxLength,delete r.validationRule,delete r.inputsOnNextNavToAssocScrn),n?.acceptsChoices||(delete r.choiceReferences,delete r.defaultSelectedChoiceReference),n?.isContainer||(delete r.fields,delete r.regionContainerType),e!=="ComponentInstance"&&(delete r.extensionName,delete r.inputParameters,delete r.outputParameters,delete r.storeOutputAutomatically),e!=="ObjectProvided"&&delete r.objectFieldReference})}setDefaultValue(e){this.patchField(n=>{n.defaultValue=e})}setNumberProperty(e,n){const r=Number(n);this.setFieldProperty(e,n===""||Number.isNaN(r)?void 0:r)}setRequired(e){this.patchField(n=>{e?n.isRequired=!0:delete n.isRequired})}setEditable(e){this.patchField(n=>{e?delete n.isEditable:n.isEditable=!1})}addChoice(e){e&&this.patchField(n=>{n.choiceReferences??=[],n.choiceReferences.includes(e)||n.choiceReferences.push(e)})}removeChoice(e){this.patchField(n=>{n.choiceReferences?.splice(e,1),n.choiceReferences?.length||delete n.choiceReferences})}moveChoice(e,n){const r=e+n;this.patchField(t=>{const s=t.choiceReferences;if(!s||r<0||r>=s.length)return;const[l]=s.splice(e,1);s.splice(r,0,l)})}setValidationRule(e,n){this.patchField(r=>{const t={...r.validationRule??{},[e]:n||void 0};!t.formulaExpression&&!t.errorMessage?delete r.validationRule:r.validationRule=t})}onVisibilityChanged(e){this.patchField(n=>{n.visibilityRule??={},e(n.visibilityRule),!n.visibilityRule.conditions?.length&&!n.visibilityRule.formula&&delete n.visibilityRule})}visibilityRule=i(()=>this.selectedField()?.visibilityRule??{},...ngDevMode?[{debugName:"visibilityRule"}]:[]);onComponentParametersChanged(e){this.patchField(n=>e(n))}setStoreOutputAutomatically(e){this.patchField(n=>{e?(n.storeOutputAutomatically=!0,delete n.outputParameters):delete n.storeOutputAutomatically})}setProvidedObject(e){this.setFieldProperty("objectFieldReference",e?`${e}.${this.providedField()}`:void 0)}setProvidedField(e){const n=this.providedObject();this.setFieldProperty("objectFieldReference",n&&e?`${n}.${e}`:n||void 0)}screenActions=i(()=>this.screen().actions??[],...ngDevMode?[{debugName:"screenActions"}]:[]);screenTriggers=i(()=>this.screen().triggers??[],...ngDevMode?[{debugName:"screenTriggers"}]:[]);actionSelection=u(null,...ngDevMode?[{debugName:"actionSelection"}]:[]);selectedActionIndex=i(()=>{const e=this.actionSelection();return e!==null&&e<this.screenActions().length?e:null},...ngDevMode?[{debugName:"selectedActionIndex"}]:[]);selectedAction=i(()=>{const e=this.selectedActionIndex();return e===null?void 0:this.screenActions()[e]},...ngDevMode?[{debugName:"selectedAction"}]:[]);actionTypes=u([],...ngDevMode?[{debugName:"actionTypes"}]:[]);actionsOfType=u([],...ngDevMode?[{debugName:"actionsOfType"}]:[]);actionParameters=u([],...ngDevMode?[{debugName:"actionParameters"}]:[]);actionTypeOptions=i(()=>this.actionTypes(),...ngDevMode?[{debugName:"actionTypeOptions"}]:[]);actionOptions=i(()=>this.actionsOfType(),...ngDevMode?[{debugName:"actionOptions"}]:[]);actionParameterCatalog=i(()=>this.actionParameters(),...ngDevMode?[{debugName:"actionParameterCatalog"}]:[]);selectAction(e){this.actionSelection.set(e)}screenFieldTargets=i(()=>this.valueFieldsOfScreen().map(e=>({name:e.name,label:e.fieldText??null,kind:"ScreenField",dataType:e.dataType??null,objectType:e.objectType??null,isCollection:!1,isWritable:!0,description:"campo di questa schermata"})),...ngDevMode?[{debugName:"screenFieldTargets"}]:[]);valueFieldsOfScreen(){return On(this.screen()).filter(e=>Tr(e,this.dictionary.screenFieldType(e.fieldType)))}triggerFieldOptions=i(()=>this.valueFieldsOfScreen().map(e=>({name:e.name,label:e.fieldText??null,description:this.dictionary.screenFieldType(e.fieldType)?.label??e.fieldType??null})),...ngDevMode?[{debugName:"triggerFieldOptions"}]:[]);screenActionOptions=i(()=>this.screenActions().filter(e=>e.name).map(e=>({name:e.name,label:e.actionName??null,description:e.actionType??null})),...ngDevMode?[{debugName:"screenActionOptions"}]:[]);actionLosesResult(e){return e.storeOutputAutomatically!==!0&&!(e.outputParameters?.length??0)}actionHasNoTrigger(e){const n=e.name;return!!n&&!this.screenTriggers().some(r=>r.screenActionName===n)}triggerHasNoCause(e){return!e.triggerFieldName&&!e.initBehavior}triggerInitIsUnknown(e){return!!e.initBehavior&&e.initBehavior!=="runOnLoad"}actionNameError(e){const n=Ce(e.name,[],e.name);if(!n.isValid)return n.message??"Nome non valido.";const r=(e.name??"").toLowerCase();return this.store.usedNames().filter(s=>s.toLowerCase()===r).length>1?"Questo nome e\u2019 gi\xE0 usato da un elemento, una risorsa, un campo o un\u2019altra action (NAME_DUPLICATED).":null}triggerConditions(e){return e}addScreenAction(){const e=W("Cerca",this.store.usedNames());let n=0;this.patch(r=>{const t=r;t.actions??=[],t.actions.push({name:e}),n=t.actions.length-1}),this.actionSelection.set(n)}removeScreenAction(e){const n=this.screenActions()[e]?.name;this.patch(r=>{const t=r;t.actions?.splice(e,1),t.actions?.length||delete t.actions;for(const s of t.triggers??[])n&&s.screenActionName===n&&delete s.screenActionName}),this.actionSelection.set(null)}patchAction(e,n){this.patch(r=>{const t=r.actions?.[e];t&&n(t)})}setActionName(e,n){const r=n.trim(),t=this.screenActions()[e]?.name;this.patch(s=>{const l=s,c=l.actions?.[e];if(c){r?c.name=r:delete c.name;for(const f of l.triggers??[])t&&f.screenActionName===t&&(r?f.screenActionName=r:delete f.screenActionName)}})}setActionType(e,n){this.patchAction(e,r=>{r.actionType!==n&&(n?r.actionType=n:delete r.actionType,delete r.actionName,delete r.inputParameters,delete r.outputParameters)})}setActionTarget(e,n){this.patchAction(e,r=>{r.actionName!==n&&(n?r.actionName=n:delete r.actionName,delete r.inputParameters,delete r.outputParameters)})}setActionStoreOutput(e,n){this.patchAction(e,r=>{n?(r.storeOutputAutomatically=!0,delete r.outputParameters):delete r.storeOutputAutomatically})}onActionParametersChanged(e,n){this.patchAction(e,r=>n(r))}addScreenTrigger(){const e=this.selectedAction()?.name;this.patch(n=>{const r=n;r.triggers??=[],r.triggers.push(e?{screenActionName:e}:{})})}removeScreenTrigger(e){this.patch(n=>{const r=n;r.triggers?.splice(e,1),r.triggers?.length||delete r.triggers})}patchTrigger(e,n){this.patch(r=>{const t=r.triggers?.[e];t&&n(t)})}setTriggerProperty(e,n,r){this.patchTrigger(e,t=>{r?t[n]=r:delete t[n]})}onTriggerConditionsChanged(e,n){this.patchTrigger(e,r=>{n(r),r.conditions?.length||(delete r.conditions,delete r.conditionLogic)})}setScreenText(e,n){this.setField(e,n)}setScreenFlag(e,n){this.patch(r=>{n?delete r[e]:r[e]=!1})}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:se,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:se,isStandalone:!0,selector:"fb-dynamic-screen-inspector",usesInheritance:!0,ngImport:a,template:`<div class="fb-scr">\r
|
|
5251
|
+
`}]}]});const te=3,Ta={DisplayText:"\xB6",InputField:"\u25AD",LargeTextArea:"\u25A4",PasswordField:"\u2022\u2022\u2022",RadioButtons:"\u25C9",DropdownBox:"\u25BE",MultiSelectCheckboxes:"\u2611",MultiSelectPicklist:"\u2261",ComponentInstance:"\u2B21",Region:"\u25AF",RegionContainer:"\u25A3",ObjectProvided:"\u2317"};class de extends z{catalog=b(M);document=b(Nr);dictionary=b(I);elementType="DynamicScreen";screen=s(()=>this.node(),...ngDevMode?[{debugName:"screen"}]:[]);initialSelection=d(null,...ngDevMode?[{debugName:"initialSelection"}]:[]);composer=ne("composer",...ngDevMode?[{debugName:"composer"}]:[]);injector=b(vr);selection=u(null,...ngDevMode?[{debugName:"selection"}]:[]);selectedPath=s(()=>{const e=this.selection();return e&&Z(this.screen().fields,e)?e:null},...ngDevMode?[{debugName:"selectedPath"}]:[]);selectedField=s(()=>{const e=this.selectedPath();return e?Z(this.screen().fields,e):void 0},...ngDevMode?[{debugName:"selectedField"}]:[]);selectedType=s(()=>this.dictionary.screenFieldType(this.selectedField()?.fieldType),...ngDevMode?[{debugName:"selectedType"}]:[]);paletteTab=u("components",...ngDevMode?[{debugName:"paletteTab"}]:[]);fieldsObject=u(void 0,...ngDevMode?[{debugName:"fieldsObject"}]:[]);objectFields=u([],...ngDevMode?[{debugName:"objectFields"}]:[]);fieldsOfObject=s(()=>this.objectFields(),...ngDevMode?[{debugName:"fieldsOfObject"}]:[]);iconOf(e){return e?Ta[e]??(this.dictionary.screenFieldType(e)?.label??e).charAt(0).toUpperCase():"\u2022"}setPaletteTab(e){this.paletteTab.set(e)}setFieldsObject(e){this.fieldsObject.set(e||void 0)}components=u([],...ngDevMode?[{debugName:"components"}]:[]);forms=u([],...ngDevMode?[{debugName:"forms"}]:[]);componentParameters=u([],...ngDevMode?[{debugName:"componentParameters"}]:[]);enumTypes=u([],...ngDevMode?[{debugName:"enumTypes"}]:[]);constructor(){super(),w(()=>{const e=this.initialSelection();e?.length&&(this.selection.set([...e]),_r(()=>this.composer()?.nativeElement.scrollIntoView({block:"start"}),{injector:this.injector}))}),this.catalog.listForms("Component").then(e=>this.components.set(e??[])).catch(()=>this.components.set([])),this.catalog.listForms("Form").then(e=>this.forms.set(e??[])).catch(()=>this.forms.set([])),this.catalog.listEnumTypes().then(e=>this.enumTypes.set(e??[])).catch(()=>this.enumTypes.set([])),w(()=>{const e=this.selectedField()?.extensionName;if(!e){this.componentParameters.set([]);return}this.catalog.listFormParameters(e).then(n=>this.componentParameters.set(n??[])).catch(()=>this.componentParameters.set([]))}),this.catalog.listActionTypes().then(e=>this.actionTypes.set(e??[])).catch(()=>this.actionTypes.set([])),w(()=>{const e=this.selectedAction()?.actionType;if(!e){this.actionsOfType.set([]);return}this.catalog.listActions(e).then(n=>this.applyActions(e,n??[])).catch(()=>this.applyActions(e,[]))}),w(()=>{const e=this.selectedAction();if(!e?.actionType||!e.actionName){this.actionParameters.set([]);return}const n=`${e.actionType}/${e.actionName}`;this.catalog.listActionParameters(e.actionType,e.actionName).then(r=>this.applyActionParameters(n,r??[])).catch(()=>this.applyActionParameters(n,[]))}),w(()=>{const e=this.fieldsObject();if(!e){this.objectFields.set([]);return}this.catalog.listFields(e).then(n=>this.objectFields.set(n??[])).catch(()=>this.objectFields.set([]))})}applyActions(e,n){K(()=>this.selectedAction()?.actionType)===e&&this.actionsOfType.set(n)}applyActionParameters(e,n){const r=K(()=>this.selectedAction());`${r?.actionType}/${r?.actionName}`===e&&this.actionParameters.set(n)}componentOptions=s(()=>this.components(),...ngDevMode?[{debugName:"componentOptions"}]:[]);unusableComponents=s(()=>{const e=new Set(this.components().map(n=>n.name));return this.forms().filter(n=>!e.has(n.name))},...ngDevMode?[{debugName:"unusableComponents"}]:[]);enumOptions=s(()=>this.enumTypes(),...ngDevMode?[{debugName:"enumOptions"}]:[]);componentParameterList=s(()=>this.componentParameters(),...ngDevMode?[{debugName:"componentParameterList"}]:[]);choiceOptions=s(()=>{const e=this.store.document(),n=[];for(const r of e.choices??[])n.push({name:r.name??"",label:r.choiceText??null,description:"Choice"});for(const r of e.dynamicChoiceSets??[])n.push({name:r.name??"",label:r.object?`da ${r.object}`:null,description:"Dynamic choice set"});return n.filter(r=>r.name)},...ngDevMode?[{debugName:"choiceOptions"}]:[]);stageOptions=s(()=>(this.store.document().stages??[]).filter(e=>e.name).map(e=>({name:e.name,label:e.label??null})),...ngDevMode?[{debugName:"stageOptions"}]:[]);isSelected(e){return hn(this.selectedPath(),e)}isContainer(e){return this.dictionary.screenFieldIsContainer(e?.fieldType)}isSection(e){return e?.fieldType==="RegionContainer"}childPath(e,n){return[...e,n]}captionOf(e){return e.fieldText||e.name||"(senza etichetta)"}typeLabelOf(e){return this.dictionary.screenFieldType(e.fieldType)?.label??e.fieldType??"\u2014"}widthOf(e){return Math.min(12,Math.max(1,e.width??12))}isUnknownType(e){return!!e?.fieldType&&!this.dictionary.screenFieldType(e.fieldType)}choiceLabelsOf(e){const n=this.store.document();return(e.choiceReferences??[]).map(r=>{const t=(n.choices??[]).find(l=>l.name===r);if(t)return t.choiceText||t.name||r;const i=(n.dynamicChoiceSets??[]).find(l=>l.name===r);return i?`${i.name} (dinamiche)`:r})}placeholderOf(e){const n=e.defaultValue;if(!n)return"";if(n.elementReference)return`{!${n.elementReference}}`;if(n.formulaExpression)return`= ${n.formulaExpression}`;const r=n.stringValue??n.numberValue??n.integerValue??n.dateValue??n.enumValue??(n.booleanValue===void 0?void 0:String(n.booleanValue));return r===void 0?"":String(r)}dragging=u(null,...ngDevMode?[{debugName:"dragging"}]:[]);dropTarget=u(null,...ngDevMode?[{debugName:"dropTarget"}]:[]);isDragging(e){const n=this.dragging();return!!n&&vn(n,e)}dropMarker=s(()=>this.dropTarget()?.marker??null,...ngDevMode?[{debugName:"dropMarker"}]:[]);onFieldDragStarted(e){this.dragging.set([...e]),this.select(e)}onFieldDragMoved(e){this.dropTarget.set(this.hitTest(e.pointerPosition.x,e.pointerPosition.y))}onFieldDragEnded(e,n){const r=this.dropTarget();this.dragging.set(null),this.dropTarget.set(null),e.source.reset(),!(!r||vn(n,r.parent))&&this.afterDrag(()=>this.applyMove(n,r.parent,r.index,!0))}onPaletteDragMoved(e){this.dropTarget.set(this.hitTest(e.pointerPosition.x,e.pointerPosition.y))}onComponentDragEnded(e,n){const r=this.dropTarget();this.dropTarget.set(null),e.source.reset(),r&&this.afterDrag(()=>this.addComponent(n,r))}onObjectFieldDragEnded(e,n){const r=this.dropTarget();this.dropTarget.set(null),e.source.reset(),r&&this.afterDrag(()=>this.addObjectField(n,r))}afterDrag(e){setTimeout(e)}hitTest(e,n){const t=this.document.elementFromPoint(e,n)?.closest("[data-drop]");if(!t)return null;const i=de.parsePath(t.dataset.drop??""),l=t.dataset.axis==="row",c=Array.from(t.children).filter(f=>f instanceof HTMLElement&&f.dataset.item!==void 0);if(!l){const f=c.filter(m=>{const h=m.getBoundingClientRect();return n>=h.top&&n<=h.bottom});if(f.length){if(f.length===1&&this.fillsRow(t,f[0])){const h=f[0],O=h.getBoundingClientRect(),x=c.indexOf(h);return n<O.top+O.height/2?{parent:i,index:x,marker:this.barAbove(t,h)}:{parent:i,index:x+1,marker:this.barBelow(t,h)}}for(const h of f){const O=h.getBoundingClientRect();if(e<O.left+O.width/2)return{parent:i,index:c.indexOf(h),marker:this.barBefore(h)}}const m=f[f.length-1];return{parent:i,index:c.indexOf(m)+1,marker:this.barAfter(m)}}}if(!c.length)return{parent:i,index:0,marker:this.barInside(t)};const p=l?e:n;for(let f=0;f<c.length;f+=1){const m=c[f],h=m.getBoundingClientRect(),O=l?h.left+h.width/2:h.top+h.height/2;if(p<O)return{parent:i,index:f,marker:l?this.barBefore(m):this.barAbove(t,m)}}const g=c[c.length-1];return{parent:i,index:c.length,marker:l?this.barAfter(g):this.barBelow(t,g)}}barBefore(e){const n=e.getBoundingClientRect();return this.toFrame(e,n.left-te/2,n.top,te,n.height)}barAfter(e){const n=e.getBoundingClientRect();return this.toFrame(e,n.right-te/2,n.top,te,n.height)}barAbove(e,n){const r=n.getBoundingClientRect(),t=this.contentBand(e);return this.toFrame(e,t.left,r.top-te,t.width,te)}barBelow(e,n){const r=n.getBoundingClientRect(),t=this.contentBand(e);return this.toFrame(e,t.left,r.bottom,t.width,te)}barInside(e){const n=e.getBoundingClientRect(),r=this.contentBand(e);return this.toFrame(e,r.left,n.top+n.height/2-te/2,r.width,te)}contentBand(e){const n=e.getBoundingClientRect(),r=getComputedStyle(e),t=parseFloat(r.paddingLeft)||0,i=parseFloat(r.paddingRight)||0;return{left:n.left+t,width:Math.max(n.width-t-i,0)}}fillsRow(e,n){return n.getBoundingClientRect().width>=this.contentBand(e).width-1}toFrame(e,n,r,t,i){const c=e.closest(".fb-scr__frame")?.getBoundingClientRect();return{left:n-(c?.left??0),top:r-(c?.top??0),width:t,height:i}}static parsePath(e){return e?e.split(".").map(n=>Number(n)):[]}dropId(e){return e.join(".")}clickTarget(){const e=this.selectedPath();return e?this.isContainer(this.selectedField())?{parent:e,index:Z(this.screen().fields,e)?.fields?.length??0}:{parent:e.slice(0,-1),index:e[e.length-1]+1}:{parent:[],index:this.screen().fields?.length??0}}addComponentAtSelection(e){this.addComponent(e,this.clickTarget())}addObjectFieldAtSelection(e){this.addObjectField(e,this.clickTarget())}addComponent(e,n){const r=this.dictionary.screenFieldType(e)?.label??e,t=[...this.store.usedNames()],i={name:U(r,t),fieldType:e};t.push(i.name),this.dictionary.screenFieldStoresValue(e)&&this.dictionary.screenFieldRequiresDataType(e)&&(i.dataType="String"),this.dictionary.screenFieldIsContainer(e)||(i.fieldText=r),e==="RegionContainer"&&(i.fields=[{name:U("Colonna",t),fieldType:"Region",width:12}]);let l;this.patch(c=>{l=Xe(c,n.parent,i,n.index)}),l&&this.selection.set(l)}addObjectField(e,n){const r=this.fieldsObject();if(!r)return;const t={name:U(e.name,this.store.usedNames()),fieldType:"ObjectProvided",objectFieldReference:`${r}.${e.name}`};let i;this.patch(l=>{i=Xe(l,n.parent,t,n.index)}),i&&this.selection.set(i)}select(e){this.selection.set([...e])}selectScreen(){this.selection.set(null)}removeSelected(){const e=this.selectedPath();e&&(this.patch(n=>Kn(n,e)),this.selection.set(null))}duplicateSelected(){const e=this.selectedPath(),n=this.selectedField();if(!e||!n)return;const r=U(n.name||"Campo",this.store.usedNames());let t;this.patch(i=>{t=Zr(i,e,r)}),t&&this.selection.set(t)}moveSelected(e){const n=this.selectedPath();if(!n)return;const r=n.slice(0,-1),t=n[n.length-1],i=r.length?Z(this.screen().fields,r)?.fields??[]:this.screen().fields??[],l=t+e;l<0||l>=i.length||this.applyMove(n,r,l)}outdentSelected(){const e=this.selectedPath();if(!e||e.length<2)return;const n=e.slice(0,-2),r=e[e.length-2];this.applyMove(e,n,r+1)}canOutdent=s(()=>(this.selectedPath()?.length??0)>=2,...ngDevMode?[{debugName:"canOutdent"}]:[]);applyMove(e,n,r,t=!1){const i=e.slice(0,-1),l=t&&hn(i,n)&&e[e.length-1]<r?r-1:r;let c;this.patch(p=>{c=Yr(p,e,n,l)}),c&&this.selection.set(c)}selectedIsResource=s(()=>this.selectedType()?.storesValue===!0,...ngDevMode?[{debugName:"selectedIsResource"}]:[]);isEmpty=s(()=>!this.screen().fields?.length,...ngDevMode?[{debugName:"isEmpty"}]:[]);isDeadEnd=s(()=>{const e=this.screen();return!e.connector?.targetReference&&e.allowFinish===!1},...ngDevMode?[{debugName:"isDeadEnd"}]:[]);allowBack=s(()=>this.screen().allowBack!==!1,...ngDevMode?[{debugName:"allowBack"}]:[]);allowFinish=s(()=>this.screen().allowFinish!==!1,...ngDevMode?[{debugName:"allowFinish"}]:[]);allowPause=s(()=>this.screen().allowPause!==!1,...ngDevMode?[{debugName:"allowPause"}]:[]);showHeader=s(()=>this.screen().showHeader!==!1,...ngDevMode?[{debugName:"showHeader"}]:[]);showFooter=s(()=>this.screen().showFooter!==!1,...ngDevMode?[{debugName:"showFooter"}]:[]);selectedIsEditable=s(()=>this.selectedField()?.isEditable!==!1,...ngDevMode?[{debugName:"selectedIsEditable"}]:[]);selectedIsRequired=s(()=>this.selectedField()?.isRequired===!0,...ngDevMode?[{debugName:"selectedIsRequired"}]:[]);hasOutputConflict=s(()=>{const e=this.selectedField();return e?.storeOutputAutomatically===!0&&(e.outputParameters?.length??0)>0},...ngDevMode?[{debugName:"hasOutputConflict"}]:[]);defaultChoiceIsForeign=s(()=>{const e=this.selectedField(),n=e?.defaultSelectedChoiceReference;return!!n&&!(e?.choiceReferences??[]).includes(n)},...ngDevMode?[{debugName:"defaultChoiceIsForeign"}]:[]);scaleApplies=s(()=>this.dictionary.supportsScale(this.selectedField()?.dataType),...ngDevMode?[{debugName:"scaleApplies"}]:[]);requiresObjectType=s(()=>this.dictionary.requiresObjectType(this.selectedField()?.dataType),...ngDevMode?[{debugName:"requiresObjectType"}]:[]);objectTypeIsStructure=s(()=>this.dictionary.isStructure(this.selectedField()?.dataType),...ngDevMode?[{debugName:"objectTypeIsStructure"}]:[]);providedObject=s(()=>{const e=this.selectedField()?.objectFieldReference??"",n=e.indexOf(".");return n<0?e:e.slice(0,n)},...ngDevMode?[{debugName:"providedObject"}]:[]);providedField=s(()=>{const e=this.selectedField()?.objectFieldReference??"",n=e.indexOf(".");return n<0?"":e.slice(n+1)},...ngDevMode?[{debugName:"providedField"}]:[]);patchField(e){const n=this.selectedPath();n&&this.patch(r=>{const t=Z(r.fields,n);t&&e(t)})}setFieldProperty(e,n){this.patchField(r=>{n==null||n===""?delete r[e]:r[e]=n})}setFieldName(e){const n=this.selectedPath(),r=e.trim();!n||!r||r===this.selectedField()?.name||this.store.renameScreenField(this.name(),n,r)}setFieldType(e){const n=this.dictionary.screenFieldType(e);this.patchField(r=>{r.fieldType=e,n?.storesValue||(delete r.dataType,delete r.objectType,delete r.isRequired,delete r.isEditable,delete r.defaultValue,delete r.scale,delete r.maxLength,delete r.validationRule,delete r.inputsOnNextNavToAssocScrn),n?.acceptsChoices||(delete r.choiceReferences,delete r.defaultSelectedChoiceReference),n?.isContainer||(delete r.fields,delete r.regionContainerType),e!=="ComponentInstance"&&(delete r.extensionName,delete r.inputParameters,delete r.outputParameters,delete r.storeOutputAutomatically),e!=="ObjectProvided"&&delete r.objectFieldReference})}setDefaultValue(e){this.patchField(n=>{n.defaultValue=e})}setNumberProperty(e,n){const r=Number(n);this.setFieldProperty(e,n===""||Number.isNaN(r)?void 0:r)}setRequired(e){this.patchField(n=>{e?n.isRequired=!0:delete n.isRequired})}setEditable(e){this.patchField(n=>{e?delete n.isEditable:n.isEditable=!1})}addChoice(e){e&&this.patchField(n=>{n.choiceReferences??=[],n.choiceReferences.includes(e)||n.choiceReferences.push(e)})}removeChoice(e){this.patchField(n=>{n.choiceReferences?.splice(e,1),n.choiceReferences?.length||delete n.choiceReferences})}moveChoice(e,n){const r=e+n;this.patchField(t=>{const i=t.choiceReferences;if(!i||r<0||r>=i.length)return;const[l]=i.splice(e,1);i.splice(r,0,l)})}setValidationRule(e,n){this.patchField(r=>{const t={...r.validationRule??{},[e]:n||void 0};!t.formulaExpression&&!t.errorMessage?delete r.validationRule:r.validationRule=t})}onVisibilityChanged(e){this.patchField(n=>{n.visibilityRule??={},e(n.visibilityRule),!n.visibilityRule.conditions?.length&&!n.visibilityRule.formula&&delete n.visibilityRule})}visibilityRule=s(()=>this.selectedField()?.visibilityRule??{},...ngDevMode?[{debugName:"visibilityRule"}]:[]);onComponentParametersChanged(e){this.patchField(n=>e(n))}setStoreOutputAutomatically(e){this.patchField(n=>{e?(n.storeOutputAutomatically=!0,delete n.outputParameters):delete n.storeOutputAutomatically})}setProvidedObject(e){this.setFieldProperty("objectFieldReference",e?`${e}.${this.providedField()}`:void 0)}setProvidedField(e){const n=this.providedObject();this.setFieldProperty("objectFieldReference",n&&e?`${n}.${e}`:n||void 0)}screenActions=s(()=>this.screen().actions??[],...ngDevMode?[{debugName:"screenActions"}]:[]);screenTriggers=s(()=>this.screen().triggers??[],...ngDevMode?[{debugName:"screenTriggers"}]:[]);actionSelection=u(null,...ngDevMode?[{debugName:"actionSelection"}]:[]);selectedActionIndex=s(()=>{const e=this.actionSelection();return e!==null&&e<this.screenActions().length?e:null},...ngDevMode?[{debugName:"selectedActionIndex"}]:[]);selectedAction=s(()=>{const e=this.selectedActionIndex();return e===null?void 0:this.screenActions()[e]},...ngDevMode?[{debugName:"selectedAction"}]:[]);actionTypes=u([],...ngDevMode?[{debugName:"actionTypes"}]:[]);actionsOfType=u([],...ngDevMode?[{debugName:"actionsOfType"}]:[]);actionParameters=u([],...ngDevMode?[{debugName:"actionParameters"}]:[]);actionTypeOptions=s(()=>this.actionTypes(),...ngDevMode?[{debugName:"actionTypeOptions"}]:[]);actionOptions=s(()=>this.actionsOfType(),...ngDevMode?[{debugName:"actionOptions"}]:[]);actionParameterCatalog=s(()=>this.actionParameters(),...ngDevMode?[{debugName:"actionParameterCatalog"}]:[]);selectAction(e){this.actionSelection.set(e)}screenFieldTargets=s(()=>this.valueFieldsOfScreen().map(e=>({name:e.name,label:e.fieldText??null,kind:"ScreenField",dataType:e.dataType??null,objectType:e.objectType??null,isCollection:!1,isWritable:!0,description:"campo di questa schermata"})),...ngDevMode?[{debugName:"screenFieldTargets"}]:[]);valueFieldsOfScreen(){return Qn(this.screen()).filter(e=>Kr(e,this.dictionary.screenFieldType(e.fieldType)))}triggerFieldOptions=s(()=>this.valueFieldsOfScreen().map(e=>({name:e.name,label:e.fieldText??null,description:this.dictionary.screenFieldType(e.fieldType)?.label??e.fieldType??null})),...ngDevMode?[{debugName:"triggerFieldOptions"}]:[]);screenActionOptions=s(()=>this.screenActions().filter(e=>e.name).map(e=>({name:e.name,label:e.actionName??null,description:e.actionType??null})),...ngDevMode?[{debugName:"screenActionOptions"}]:[]);actionLosesResult(e){return e.storeOutputAutomatically!==!0&&!(e.outputParameters?.length??0)}actionHasNoTrigger(e){const n=e.name;return!!n&&!this.screenTriggers().some(r=>r.screenActionName===n)}triggerHasNoCause(e){return!e.triggerFieldName&&!e.initBehavior}triggerInitIsUnknown(e){return!!e.initBehavior&&e.initBehavior!=="runOnLoad"}actionNameError(e){const n=$e(e.name,[],e.name);if(!n.isValid)return n.message??"Nome non valido.";const r=(e.name??"").toLowerCase();return this.store.usedNames().filter(i=>i.toLowerCase()===r).length>1?"Questo nome e\u2019 gi\xE0 usato da un elemento, una risorsa, un campo o un\u2019altra action (NAME_DUPLICATED).":null}triggerConditions(e){return e}addScreenAction(){const e=U("Cerca",this.store.usedNames());let n=0;this.patch(r=>{const t=r;t.actions??=[],t.actions.push({name:e}),n=t.actions.length-1}),this.actionSelection.set(n)}removeScreenAction(e){const n=this.screenActions()[e]?.name;this.patch(r=>{const t=r;t.actions?.splice(e,1),t.actions?.length||delete t.actions;for(const i of t.triggers??[])n&&i.screenActionName===n&&delete i.screenActionName}),this.actionSelection.set(null)}patchAction(e,n){this.patch(r=>{const t=r.actions?.[e];t&&n(t)})}setActionName(e,n){const r=n.trim(),t=this.screenActions()[e]?.name;this.patch(i=>{const l=i,c=l.actions?.[e];if(c){r?c.name=r:delete c.name;for(const p of l.triggers??[])t&&p.screenActionName===t&&(r?p.screenActionName=r:delete p.screenActionName)}})}setActionType(e,n){this.patchAction(e,r=>{r.actionType!==n&&(n?r.actionType=n:delete r.actionType,delete r.actionName,delete r.inputParameters,delete r.outputParameters)})}setActionTarget(e,n){this.patchAction(e,r=>{r.actionName!==n&&(n?r.actionName=n:delete r.actionName,delete r.inputParameters,delete r.outputParameters)})}setActionStoreOutput(e,n){this.patchAction(e,r=>{n?(r.storeOutputAutomatically=!0,delete r.outputParameters):delete r.storeOutputAutomatically})}onActionParametersChanged(e,n){this.patchAction(e,r=>n(r))}addScreenTrigger(){const e=this.selectedAction()?.name;this.patch(n=>{const r=n;r.triggers??=[],r.triggers.push(e?{screenActionName:e}:{})})}removeScreenTrigger(e){this.patch(n=>{const r=n;r.triggers?.splice(e,1),r.triggers?.length||delete r.triggers})}patchTrigger(e,n){this.patch(r=>{const t=r.triggers?.[e];t&&n(t)})}setTriggerProperty(e,n,r){this.patchTrigger(e,t=>{r?t[n]=r:delete t[n]})}onTriggerConditionsChanged(e,n){this.patchTrigger(e,r=>{n(r),r.conditions?.length||(delete r.conditions,delete r.conditionLogic)})}setScreenText(e,n){this.setField(e,n)}setScreenFlag(e,n){this.patch(r=>{n?delete r[e]:r[e]=!1})}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:de,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:de,isStandalone:!0,selector:"fb-dynamic-screen-inspector",inputs:{initialSelection:{classPropertyName:"initialSelection",publicName:"initialSelection",isSignal:!0,isRequired:!1,transformFunction:null}},viewQueries:[{propertyName:"composer",first:!0,predicate:["composer"],descendants:!0,isSignal:!0}],usesInheritance:!0,ngImport:a,template:`<div class="fb-scr" #composer>\r
|
|
4916
5252
|
<!-- ============================================================ sinistra -->\r
|
|
4917
5253
|
<aside class="fb-scr__side" aria-label="Componenti e campi">\r
|
|
4918
5254
|
<div class="fb-scr__tabs" role="tablist">\r
|
|
@@ -5818,15 +6154,23 @@
|
|
|
5818
6154
|
\r
|
|
5819
6155
|
<div class="fb-field">\r
|
|
5820
6156
|
<label class="fb-field__label">Aggiungi un\u2019opzione</label>\r
|
|
6157
|
+
<!--\r
|
|
6158
|
+
\`commitOn="enter"\`: qui ogni emissione e\u2019 una riga in piu\u2019, non un campo che cambia\r
|
|
6159
|
+
valore \u2014 a tasto, scrivere \xABAlta\xBB aggiungeva \xABA\xBB, \xABAl\xBB, \xABAlt\xBB e \xABAlta\xBB.\r
|
|
6160
|
+
-->\r
|
|
5821
6161
|
<fb-name-picker\r
|
|
5822
6162
|
[options]="choiceOptions()"\r
|
|
5823
6163
|
label="Choice"\r
|
|
6164
|
+
commitOn="enter"\r
|
|
5824
6165
|
placeholder="Scegli una choice o un choice set"\r
|
|
5825
6166
|
unknownMessage="Questo nome non e\u2019 una choice ne\u2019 un choice set: e\u2019 SCREEN_FIELD_CHOICE_UNKNOWN."\r
|
|
5826
6167
|
unknownSeverity="error"\r
|
|
5827
6168
|
emptyMessage="Il flow non dichiara nessuna choice: creale nel pannello delle risorse."\r
|
|
5828
6169
|
(valueChange)="addChoice($event)"\r
|
|
5829
6170
|
/>\r
|
|
6171
|
+
<p class="fb-field__hint">\r
|
|
6172
|
+
Scegli dall\u2019elenco, oppure scrivi il nome e premi Invio.\r
|
|
6173
|
+
</p>\r
|
|
5830
6174
|
</div>\r
|
|
5831
6175
|
\r
|
|
5832
6176
|
<div class="fb-field">\r
|
|
@@ -6146,8 +6490,8 @@
|
|
|
6146
6490
|
}\r
|
|
6147
6491
|
</div>\r
|
|
6148
6492
|
</ng-template>\r
|
|
6149
|
-
`,styles:[`.fb-scr{display:grid;grid-template-columns:220px minmax(0,1fr) 340px;gap:12px;align-items:start;margin-bottom:14px}@media(max-width:1100px){.fb-scr{grid-template-columns:minmax(0,1fr)}}.fb-scr__side,.fb-scr__props{min-width:0;padding:10px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius, 10px);background:var(--fb-surface-alt, #f7f8fa)}.fb-scr__tabs{display:flex;gap:4px;margin-bottom:8px}.fb-scr__tab{flex:1;padding:5px 8px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface, #fff);color:var(--fb-text-muted, #6b7086);font:inherit;font-size:11px;font-weight:600;cursor:pointer}.fb-scr__tab--active{border-color:var(--fb-accent, #4f6ef7);background:color-mix(in srgb,var(--fb-accent, #4f6ef7) 10%,transparent);color:var(--fb-accent-strong, #3d59e0)}.fb-scr__side-hint,.fb-scr__side-empty{margin:6px 0;font-size:11px;color:var(--fb-text-muted, #6b7086)}.fb-scr__palette{display:flex;flex-direction:column;gap:4px;margin:8px 0 0;padding:0;max-height:320px;overflow-y:auto;overscroll-behavior:contain;list-style:none}.fb-scr__chip{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface, #fff);color:var(--fb-text, #1a1c23);font:inherit;font-size:12px;text-align:left;cursor:grab}.fb-scr__chip:hover{border-color:var(--fb-accent, #4f6ef7)}.fb-scr__chip-icon{flex:none;width:20px;text-align:center;color:var(--fb-text-muted, #6b7086)}.fb-scr__chip-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-scr__chip-label small{margin-left:4px;color:var(--fb-text-subtle, #98a2b3);font-size:10px}.fb-scr__canvas{min-width:0;padding:14px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius, 10px);background:var(--fb-canvas-bg, #f4f5f7)}.fb-scr__frame{position:relative;display:flex;flex-direction:column;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-sm, 8px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-sm, 0 1px 2px rgb(16 24 40 / 6%));overflow:hidden}.fb-scr__frame-head{display:flex;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid var(--fb-border-subtle, #eef0f4);font-size:13px;font-weight:600}.fb-scr__help{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;background:var(--fb-surface-sunken, #eef0f4);color:var(--fb-text-muted, #6b7086);font-size:10px}.fb-scr__body,.fb-scr__region-body{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-content:start;gap:8px 0;padding:12px;min-height:90px}.fb-scr__region-body{padding:8px;min-height:60px}.fb-scr__cols{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-items:stretch;gap:0;padding:8px;min-height:60px}.fb-scr__cols>.fb-scr__item{display:flex;align-self:stretch}.fb-scr__cols>.fb-scr__item>.fb-scr__region{flex:1;min-width:0}.fb-scr__drop-hint{grid-column:1 / -1;margin:0;padding:10px;border:1px dashed var(--fb-border-strong, #cfd4de);border-radius:var(--fb-radius-xs, 6px);color:var(--fb-text-subtle, #98a2b3);font-size:11px;text-align:center}.fb-scr__marker{position:absolute;z-index:2;border-radius:2px;background:var(--fb-accent, #4f6ef7);pointer-events:none}.fb-scr__item{position:relative;box-sizing:border-box;padding:6px 8px;border:1px solid transparent;border-radius:var(--fb-radius-xs, 6px);cursor:pointer}.fb-scr__item:hover{border-color:var(--fb-border-strong, #cfd4de);background:color-mix(in srgb,var(--fb-accent, #4f6ef7) 4%,transparent)}.fb-scr__item--selected{border-color:var(--fb-accent, #4f6ef7);box-shadow:inset 0 0 0 1px var(--fb-accent, #4f6ef7)}.fb-scr__item--dragging{opacity:.45;pointer-events:none}.fb-scr__grip{position:absolute;top:2px;left:-2px;padding:0 3px;color:var(--fb-text-subtle, #98a2b3);font-size:11px;line-height:1;opacity:0;cursor:grab}.fb-scr__item:hover>.fb-scr__grip,.fb-scr__item--selected>.fb-scr__grip{opacity:1}.fb-scr__flag{position:absolute;top:2px;right:4px;color:var(--fb-text-muted, #6b7086);font-size:11px}.fb-scr__label{display:block;margin-bottom:3px;font-size:11px;font-weight:600;color:var(--fb-text, #1a1c23)}.fb-scr__req{color:var(--fb-error, #dc2626)}.fb-scr__control{display:flex;align-items:center;justify-content:space-between;gap:6px;min-height:26px;padding:4px 8px;border:1px solid var(--fb-border-strong, #cfd4de);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface, #fff);color:var(--fb-text-subtle, #98a2b3);font-size:12px;pointer-events:none}.fb-scr__control--area{min-height:54px;align-items:flex-start}.fb-scr__display{margin:0;font-size:12px;color:var(--fb-text, #1a1c23)}.fb-scr__options{display:flex;flex-direction:column;gap:2px;pointer-events:none}.fb-scr__option{font-size:12px;color:var(--fb-text-muted, #6b7086)}.fb-scr__option--missing{color:var(--fb-warning, #b7791f)}.fb-scr__component{display:flex;align-items:center;gap:6px;padding:10px;border:1px dashed var(--fb-accent, #4f6ef7);border-radius:var(--fb-radius-xs, 6px);background:color-mix(in srgb,var(--fb-accent, #4f6ef7) 5%,transparent);font-size:12px;color:var(--fb-text-muted, #6b7086)}.fb-scr__tag{display:inline-block;margin-top:3px;font-size:10px;color:var(--fb-text-subtle, #98a2b3)}.fb-scr__tag--warn{color:var(--fb-warning, #b7791f)}.fb-scr__section{border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface-alt, #f7f8fa)}.fb-scr__section-head{padding:5px 10px;border-bottom:1px solid var(--fb-border-subtle, #eef0f4);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #6b7086)}.fb-scr__region{border:1px dashed var(--fb-border-strong, #cfd4de);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface, #fff)}.fb-scr__region-tag{display:block;padding:3px 6px 0;font-size:10px;color:var(--fb-text-subtle, #98a2b3)}.fb-scr__frame-foot{display:flex;align-items:center;gap:6px;padding:8px 12px;border-top:1px solid var(--fb-border-subtle, #eef0f4);background:var(--fb-surface-alt, #f7f8fa)}.fb-scr__spacer{flex:1}.fb-scr__btn{padding:3px 10px;border:1px solid var(--fb-border-strong, #cfd4de);border-radius:var(--fb-radius-xs, 6px);font-size:11px;color:var(--fb-text-muted, #6b7086)}.fb-scr__btn--primary{border-color:var(--fb-accent, #4f6ef7);background:var(--fb-accent, #4f6ef7);color:var(--fb-accent-contrast, #fff)}.fb-scr__canvas-note{margin-top:10px}.fb-scr__props{background:var(--fb-surface, #fff)}.fb-scr__props-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.fb-scr__props-title{flex:1;min-width:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #6b7086)}.fb-scr__props-actions{display:flex;flex-wrap:wrap;gap:3px}.fb-btn--sm{padding:3px 7px;font-size:11px}.fb-scr__width{display:flex;align-items:center;gap:8px}.fb-scr__width input[type=range]{flex:1;min-width:0}.fb-scr__width-value{font-size:11px;color:var(--fb-text-muted, #6b7086)}
|
|
6150
|
-
`],dependencies:[{kind:"directive",type:
|
|
6493
|
+
`,styles:[`.fb-scr{display:grid;grid-template-columns:220px minmax(0,1fr) 340px;gap:12px;align-items:start;margin-bottom:14px}@media(max-width:1100px){.fb-scr{grid-template-columns:minmax(0,1fr)}}.fb-scr__side,.fb-scr__props{min-width:0;padding:10px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius, 10px);background:var(--fb-surface-alt, #f7f8fa)}.fb-scr__tabs{display:flex;gap:4px;margin-bottom:8px}.fb-scr__tab{flex:1;padding:5px 8px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface, #fff);color:var(--fb-text-muted, #6b7086);font:inherit;font-size:11px;font-weight:600;cursor:pointer}.fb-scr__tab--active{border-color:var(--fb-accent, #4f6ef7);background:color-mix(in srgb,var(--fb-accent, #4f6ef7) 10%,transparent);color:var(--fb-accent-strong, #3d59e0)}.fb-scr__side-hint,.fb-scr__side-empty{margin:6px 0;font-size:11px;color:var(--fb-text-muted, #6b7086)}.fb-scr__palette{display:flex;flex-direction:column;gap:4px;margin:8px 0 0;padding:0;max-height:320px;overflow-y:auto;overscroll-behavior:contain;list-style:none}.fb-scr__chip{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface, #fff);color:var(--fb-text, #1a1c23);font:inherit;font-size:12px;text-align:left;cursor:grab}.fb-scr__chip:hover{border-color:var(--fb-accent, #4f6ef7)}.fb-scr__chip-icon{flex:none;width:20px;text-align:center;color:var(--fb-text-muted, #6b7086)}.fb-scr__chip-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-scr__chip-label small{margin-left:4px;color:var(--fb-text-subtle, #98a2b3);font-size:10px}.fb-scr__canvas{min-width:0;padding:14px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius, 10px);background:var(--fb-canvas-bg, #f4f5f7);max-height:60vh;overflow-y:auto}.fb-scr__frame{position:relative;display:flex;flex-direction:column;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-sm, 8px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-sm, 0 1px 2px rgb(16 24 40 / 6%));overflow:hidden}.fb-scr__frame-head{display:flex;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid var(--fb-border-subtle, #eef0f4);font-size:13px;font-weight:600}.fb-scr__help{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;background:var(--fb-surface-sunken, #eef0f4);color:var(--fb-text-muted, #6b7086);font-size:10px}.fb-scr__body,.fb-scr__region-body{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-content:start;gap:8px 0;padding:12px;min-height:90px}.fb-scr__region-body{padding:8px;min-height:60px}.fb-scr__cols{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-items:stretch;gap:0;padding:8px;min-height:60px}.fb-scr__cols>.fb-scr__item{display:flex;align-self:stretch}.fb-scr__cols>.fb-scr__item>.fb-scr__region{flex:1;min-width:0}.fb-scr__drop-hint{grid-column:1 / -1;margin:0;padding:10px;border:1px dashed var(--fb-border-strong, #cfd4de);border-radius:var(--fb-radius-xs, 6px);color:var(--fb-text-subtle, #98a2b3);font-size:11px;text-align:center}.fb-scr__marker{position:absolute;z-index:2;border-radius:2px;background:var(--fb-accent, #4f6ef7);pointer-events:none}.fb-scr__item{position:relative;box-sizing:border-box;padding:6px 8px;border:1px solid transparent;border-radius:var(--fb-radius-xs, 6px);cursor:pointer}.fb-scr__item:hover{border-color:var(--fb-border-strong, #cfd4de);background:color-mix(in srgb,var(--fb-accent, #4f6ef7) 4%,transparent)}.fb-scr__item--selected{border-color:var(--fb-accent, #4f6ef7);box-shadow:inset 0 0 0 1px var(--fb-accent, #4f6ef7)}.fb-scr__item--dragging{opacity:.45;pointer-events:none}.fb-scr__grip{position:absolute;top:2px;left:-2px;padding:0 3px;color:var(--fb-text-subtle, #98a2b3);font-size:11px;line-height:1;opacity:0;cursor:grab}.fb-scr__item:hover>.fb-scr__grip,.fb-scr__item--selected>.fb-scr__grip{opacity:1}.fb-scr__flag{position:absolute;top:2px;right:4px;color:var(--fb-text-muted, #6b7086);font-size:11px}.fb-scr__label{display:block;margin-bottom:3px;font-size:11px;font-weight:600;color:var(--fb-text, #1a1c23)}.fb-scr__req{color:var(--fb-error, #dc2626)}.fb-scr__control{display:flex;align-items:center;justify-content:space-between;gap:6px;min-height:26px;padding:4px 8px;border:1px solid var(--fb-border-strong, #cfd4de);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface, #fff);color:var(--fb-text-subtle, #98a2b3);font-size:12px;pointer-events:none}.fb-scr__control--area{min-height:54px;align-items:flex-start}.fb-scr__display{margin:0;font-size:12px;color:var(--fb-text, #1a1c23)}.fb-scr__options{display:flex;flex-direction:column;gap:2px;pointer-events:none}.fb-scr__option{font-size:12px;color:var(--fb-text-muted, #6b7086)}.fb-scr__option--missing{color:var(--fb-warning, #b7791f)}.fb-scr__component{display:flex;align-items:center;gap:6px;padding:10px;border:1px dashed var(--fb-accent, #4f6ef7);border-radius:var(--fb-radius-xs, 6px);background:color-mix(in srgb,var(--fb-accent, #4f6ef7) 5%,transparent);font-size:12px;color:var(--fb-text-muted, #6b7086)}.fb-scr__tag{display:inline-block;margin-top:3px;font-size:10px;color:var(--fb-text-subtle, #98a2b3)}.fb-scr__tag--warn{color:var(--fb-warning, #b7791f)}.fb-scr__section{border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface-alt, #f7f8fa)}.fb-scr__section-head{padding:5px 10px;border-bottom:1px solid var(--fb-border-subtle, #eef0f4);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #6b7086)}.fb-scr__region{border:1px dashed var(--fb-border-strong, #cfd4de);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface, #fff)}.fb-scr__region-tag{display:block;padding:3px 6px 0;font-size:10px;color:var(--fb-text-subtle, #98a2b3)}.fb-scr__frame-foot{display:flex;align-items:center;gap:6px;padding:8px 12px;border-top:1px solid var(--fb-border-subtle, #eef0f4);background:var(--fb-surface-alt, #f7f8fa)}.fb-scr__spacer{flex:1}.fb-scr__btn{padding:3px 10px;border:1px solid var(--fb-border-strong, #cfd4de);border-radius:var(--fb-radius-xs, 6px);font-size:11px;color:var(--fb-text-muted, #6b7086)}.fb-scr__btn--primary{border-color:var(--fb-accent, #4f6ef7);background:var(--fb-accent, #4f6ef7);color:var(--fb-accent-contrast, #fff)}.fb-scr__canvas-note{margin-top:10px}.fb-scr__props{background:var(--fb-surface, #fff)}.fb-scr__props-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.fb-scr__props-title{flex:1;min-width:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #6b7086)}.fb-scr__props-actions{display:flex;flex-wrap:wrap;gap:3px}.fb-btn--sm{padding:3px 7px;font-size:11px}.fb-scr__width{display:flex;align-items:center;gap:8px}.fb-scr__width input[type=range]{flex:1;min-width:0}.fb-scr__width-value{font-size:11px;color:var(--fb-text-muted, #6b7086)}
|
|
6494
|
+
`],dependencies:[{kind:"directive",type:pn,selector:"[cdkDrag]",inputs:["cdkDragData","cdkDragLockAxis","cdkDragRootElement","cdkDragBoundary","cdkDragStartDelay","cdkDragFreeDragPosition","cdkDragDisabled","cdkDragConstrainPosition","cdkDragPreviewClass","cdkDragPreviewContainer","cdkDragScale"],outputs:["cdkDragStarted","cdkDragReleased","cdkDragEnded","cdkDragEntered","cdkDragExited","cdkDragDropped","cdkDragMoved"],exportAs:["cdkDrag"]},{kind:"directive",type:fn,selector:"[cdkDragHandle]",inputs:["cdkDragHandleDisabled"]},{kind:"component",type:W,selector:"fb-condition-editor",inputs:["holder","title","allowFormula","allowLogic","issuePath"],outputs:["changed"]},{kind:"component",type:C,selector:"fb-connector-editor",inputs:["nodeName","node","outlets","title"],outputs:["connectorChanged"]},{kind:"component",type:P,selector:"fb-field-picker",inputs:["value","object","usage","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:G,selector:"fb-formula-editor",inputs:["expression","usage","expectedDataType","scale","placeholder","ariaLabel","disabled","rows","commitOn"],outputs:["expressionChange"]},{kind:"component",type:F,selector:"fb-name-picker",inputs:["value","options","label","placeholder","disabled","unknownMessage","unknownSeverity","unusableOptions","unusableMessage","emptyMessage","isMono","commitOn"],outputs:["valueChange"]},{kind:"directive",type:Cr,selector:"[ngTemplateOutlet]",inputs:["ngTemplateOutletContext","ngTemplateOutlet","ngTemplateOutletInjector"]},{kind:"component",type:q,selector:"fb-object-picker",inputs:["value","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:V,selector:"fb-parameter-editor",inputs:["holder","catalogParameters","inputTitle","outputTitle","showInputs","showOutputs","outputsDisabledReason","extraTargets"],outputs:["changed"]},{kind:"directive",type:k,selector:"select[fbValue]",inputs:["fbValue"]},{kind:"component",type:J,selector:"fb-structure-picker",inputs:["value","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:S,selector:"fb-value-editor",inputs:["value","label","dataType","objectType","isCollection","valueSet","disabled","allowFormula"],outputs:["valueChange"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:de,decorators:[{type:y,args:[{selector:"fb-dynamic-screen-inspector",standalone:!0,imports:[pn,fn,W,C,P,G,F,Cr,q,V,k,J,S],changeDetection:_.OnPush,template:`<div class="fb-scr" #composer>\r
|
|
6151
6495
|
<!-- ============================================================ sinistra -->\r
|
|
6152
6496
|
<aside class="fb-scr__side" aria-label="Componenti e campi">\r
|
|
6153
6497
|
<div class="fb-scr__tabs" role="tablist">\r
|
|
@@ -7053,15 +7397,23 @@
|
|
|
7053
7397
|
\r
|
|
7054
7398
|
<div class="fb-field">\r
|
|
7055
7399
|
<label class="fb-field__label">Aggiungi un\u2019opzione</label>\r
|
|
7400
|
+
<!--\r
|
|
7401
|
+
\`commitOn="enter"\`: qui ogni emissione e\u2019 una riga in piu\u2019, non un campo che cambia\r
|
|
7402
|
+
valore \u2014 a tasto, scrivere \xABAlta\xBB aggiungeva \xABA\xBB, \xABAl\xBB, \xABAlt\xBB e \xABAlta\xBB.\r
|
|
7403
|
+
-->\r
|
|
7056
7404
|
<fb-name-picker\r
|
|
7057
7405
|
[options]="choiceOptions()"\r
|
|
7058
7406
|
label="Choice"\r
|
|
7407
|
+
commitOn="enter"\r
|
|
7059
7408
|
placeholder="Scegli una choice o un choice set"\r
|
|
7060
7409
|
unknownMessage="Questo nome non e\u2019 una choice ne\u2019 un choice set: e\u2019 SCREEN_FIELD_CHOICE_UNKNOWN."\r
|
|
7061
7410
|
unknownSeverity="error"\r
|
|
7062
7411
|
emptyMessage="Il flow non dichiara nessuna choice: creale nel pannello delle risorse."\r
|
|
7063
7412
|
(valueChange)="addChoice($event)"\r
|
|
7064
7413
|
/>\r
|
|
7414
|
+
<p class="fb-field__hint">\r
|
|
7415
|
+
Scegli dall\u2019elenco, oppure scrivi il nome e premi Invio.\r
|
|
7416
|
+
</p>\r
|
|
7065
7417
|
</div>\r
|
|
7066
7418
|
\r
|
|
7067
7419
|
<div class="fb-field">\r
|
|
@@ -7381,8 +7733,8 @@
|
|
|
7381
7733
|
}\r
|
|
7382
7734
|
</div>\r
|
|
7383
7735
|
</ng-template>\r
|
|
7384
|
-
`,styles:[`.fb-scr{display:grid;grid-template-columns:220px minmax(0,1fr) 340px;gap:12px;align-items:start;margin-bottom:14px}@media(max-width:1100px){.fb-scr{grid-template-columns:minmax(0,1fr)}}.fb-scr__side,.fb-scr__props{min-width:0;padding:10px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius, 10px);background:var(--fb-surface-alt, #f7f8fa)}.fb-scr__tabs{display:flex;gap:4px;margin-bottom:8px}.fb-scr__tab{flex:1;padding:5px 8px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface, #fff);color:var(--fb-text-muted, #6b7086);font:inherit;font-size:11px;font-weight:600;cursor:pointer}.fb-scr__tab--active{border-color:var(--fb-accent, #4f6ef7);background:color-mix(in srgb,var(--fb-accent, #4f6ef7) 10%,transparent);color:var(--fb-accent-strong, #3d59e0)}.fb-scr__side-hint,.fb-scr__side-empty{margin:6px 0;font-size:11px;color:var(--fb-text-muted, #6b7086)}.fb-scr__palette{display:flex;flex-direction:column;gap:4px;margin:8px 0 0;padding:0;max-height:320px;overflow-y:auto;overscroll-behavior:contain;list-style:none}.fb-scr__chip{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface, #fff);color:var(--fb-text, #1a1c23);font:inherit;font-size:12px;text-align:left;cursor:grab}.fb-scr__chip:hover{border-color:var(--fb-accent, #4f6ef7)}.fb-scr__chip-icon{flex:none;width:20px;text-align:center;color:var(--fb-text-muted, #6b7086)}.fb-scr__chip-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-scr__chip-label small{margin-left:4px;color:var(--fb-text-subtle, #98a2b3);font-size:10px}.fb-scr__canvas{min-width:0;padding:14px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius, 10px);background:var(--fb-canvas-bg, #f4f5f7)}.fb-scr__frame{position:relative;display:flex;flex-direction:column;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-sm, 8px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-sm, 0 1px 2px rgb(16 24 40 / 6%));overflow:hidden}.fb-scr__frame-head{display:flex;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid var(--fb-border-subtle, #eef0f4);font-size:13px;font-weight:600}.fb-scr__help{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;background:var(--fb-surface-sunken, #eef0f4);color:var(--fb-text-muted, #6b7086);font-size:10px}.fb-scr__body,.fb-scr__region-body{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-content:start;gap:8px 0;padding:12px;min-height:90px}.fb-scr__region-body{padding:8px;min-height:60px}.fb-scr__cols{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-items:stretch;gap:0;padding:8px;min-height:60px}.fb-scr__cols>.fb-scr__item{display:flex;align-self:stretch}.fb-scr__cols>.fb-scr__item>.fb-scr__region{flex:1;min-width:0}.fb-scr__drop-hint{grid-column:1 / -1;margin:0;padding:10px;border:1px dashed var(--fb-border-strong, #cfd4de);border-radius:var(--fb-radius-xs, 6px);color:var(--fb-text-subtle, #98a2b3);font-size:11px;text-align:center}.fb-scr__marker{position:absolute;z-index:2;border-radius:2px;background:var(--fb-accent, #4f6ef7);pointer-events:none}.fb-scr__item{position:relative;box-sizing:border-box;padding:6px 8px;border:1px solid transparent;border-radius:var(--fb-radius-xs, 6px);cursor:pointer}.fb-scr__item:hover{border-color:var(--fb-border-strong, #cfd4de);background:color-mix(in srgb,var(--fb-accent, #4f6ef7) 4%,transparent)}.fb-scr__item--selected{border-color:var(--fb-accent, #4f6ef7);box-shadow:inset 0 0 0 1px var(--fb-accent, #4f6ef7)}.fb-scr__item--dragging{opacity:.45;pointer-events:none}.fb-scr__grip{position:absolute;top:2px;left:-2px;padding:0 3px;color:var(--fb-text-subtle, #98a2b3);font-size:11px;line-height:1;opacity:0;cursor:grab}.fb-scr__item:hover>.fb-scr__grip,.fb-scr__item--selected>.fb-scr__grip{opacity:1}.fb-scr__flag{position:absolute;top:2px;right:4px;color:var(--fb-text-muted, #6b7086);font-size:11px}.fb-scr__label{display:block;margin-bottom:3px;font-size:11px;font-weight:600;color:var(--fb-text, #1a1c23)}.fb-scr__req{color:var(--fb-error, #dc2626)}.fb-scr__control{display:flex;align-items:center;justify-content:space-between;gap:6px;min-height:26px;padding:4px 8px;border:1px solid var(--fb-border-strong, #cfd4de);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface, #fff);color:var(--fb-text-subtle, #98a2b3);font-size:12px;pointer-events:none}.fb-scr__control--area{min-height:54px;align-items:flex-start}.fb-scr__display{margin:0;font-size:12px;color:var(--fb-text, #1a1c23)}.fb-scr__options{display:flex;flex-direction:column;gap:2px;pointer-events:none}.fb-scr__option{font-size:12px;color:var(--fb-text-muted, #6b7086)}.fb-scr__option--missing{color:var(--fb-warning, #b7791f)}.fb-scr__component{display:flex;align-items:center;gap:6px;padding:10px;border:1px dashed var(--fb-accent, #4f6ef7);border-radius:var(--fb-radius-xs, 6px);background:color-mix(in srgb,var(--fb-accent, #4f6ef7) 5%,transparent);font-size:12px;color:var(--fb-text-muted, #6b7086)}.fb-scr__tag{display:inline-block;margin-top:3px;font-size:10px;color:var(--fb-text-subtle, #98a2b3)}.fb-scr__tag--warn{color:var(--fb-warning, #b7791f)}.fb-scr__section{border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface-alt, #f7f8fa)}.fb-scr__section-head{padding:5px 10px;border-bottom:1px solid var(--fb-border-subtle, #eef0f4);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #6b7086)}.fb-scr__region{border:1px dashed var(--fb-border-strong, #cfd4de);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface, #fff)}.fb-scr__region-tag{display:block;padding:3px 6px 0;font-size:10px;color:var(--fb-text-subtle, #98a2b3)}.fb-scr__frame-foot{display:flex;align-items:center;gap:6px;padding:8px 12px;border-top:1px solid var(--fb-border-subtle, #eef0f4);background:var(--fb-surface-alt, #f7f8fa)}.fb-scr__spacer{flex:1}.fb-scr__btn{padding:3px 10px;border:1px solid var(--fb-border-strong, #cfd4de);border-radius:var(--fb-radius-xs, 6px);font-size:11px;color:var(--fb-text-muted, #6b7086)}.fb-scr__btn--primary{border-color:var(--fb-accent, #4f6ef7);background:var(--fb-accent, #4f6ef7);color:var(--fb-accent-contrast, #fff)}.fb-scr__canvas-note{margin-top:10px}.fb-scr__props{background:var(--fb-surface, #fff)}.fb-scr__props-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.fb-scr__props-title{flex:1;min-width:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #6b7086)}.fb-scr__props-actions{display:flex;flex-wrap:wrap;gap:3px}.fb-btn--sm{padding:3px 7px;font-size:11px}.fb-scr__width{display:flex;align-items:center;gap:8px}.fb-scr__width input[type=range]{flex:1;min-width:0}.fb-scr__width-value{font-size:11px;color:var(--fb-text-muted, #6b7086)}
|
|
7385
|
-
`]}]}],ctorParameters:()=>[]});class
|
|
7736
|
+
`,styles:[`.fb-scr{display:grid;grid-template-columns:220px minmax(0,1fr) 340px;gap:12px;align-items:start;margin-bottom:14px}@media(max-width:1100px){.fb-scr{grid-template-columns:minmax(0,1fr)}}.fb-scr__side,.fb-scr__props{min-width:0;padding:10px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius, 10px);background:var(--fb-surface-alt, #f7f8fa)}.fb-scr__tabs{display:flex;gap:4px;margin-bottom:8px}.fb-scr__tab{flex:1;padding:5px 8px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface, #fff);color:var(--fb-text-muted, #6b7086);font:inherit;font-size:11px;font-weight:600;cursor:pointer}.fb-scr__tab--active{border-color:var(--fb-accent, #4f6ef7);background:color-mix(in srgb,var(--fb-accent, #4f6ef7) 10%,transparent);color:var(--fb-accent-strong, #3d59e0)}.fb-scr__side-hint,.fb-scr__side-empty{margin:6px 0;font-size:11px;color:var(--fb-text-muted, #6b7086)}.fb-scr__palette{display:flex;flex-direction:column;gap:4px;margin:8px 0 0;padding:0;max-height:320px;overflow-y:auto;overscroll-behavior:contain;list-style:none}.fb-scr__chip{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface, #fff);color:var(--fb-text, #1a1c23);font:inherit;font-size:12px;text-align:left;cursor:grab}.fb-scr__chip:hover{border-color:var(--fb-accent, #4f6ef7)}.fb-scr__chip-icon{flex:none;width:20px;text-align:center;color:var(--fb-text-muted, #6b7086)}.fb-scr__chip-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-scr__chip-label small{margin-left:4px;color:var(--fb-text-subtle, #98a2b3);font-size:10px}.fb-scr__canvas{min-width:0;padding:14px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius, 10px);background:var(--fb-canvas-bg, #f4f5f7);max-height:60vh;overflow-y:auto}.fb-scr__frame{position:relative;display:flex;flex-direction:column;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-sm, 8px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-sm, 0 1px 2px rgb(16 24 40 / 6%));overflow:hidden}.fb-scr__frame-head{display:flex;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid var(--fb-border-subtle, #eef0f4);font-size:13px;font-weight:600}.fb-scr__help{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;background:var(--fb-surface-sunken, #eef0f4);color:var(--fb-text-muted, #6b7086);font-size:10px}.fb-scr__body,.fb-scr__region-body{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-content:start;gap:8px 0;padding:12px;min-height:90px}.fb-scr__region-body{padding:8px;min-height:60px}.fb-scr__cols{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-items:stretch;gap:0;padding:8px;min-height:60px}.fb-scr__cols>.fb-scr__item{display:flex;align-self:stretch}.fb-scr__cols>.fb-scr__item>.fb-scr__region{flex:1;min-width:0}.fb-scr__drop-hint{grid-column:1 / -1;margin:0;padding:10px;border:1px dashed var(--fb-border-strong, #cfd4de);border-radius:var(--fb-radius-xs, 6px);color:var(--fb-text-subtle, #98a2b3);font-size:11px;text-align:center}.fb-scr__marker{position:absolute;z-index:2;border-radius:2px;background:var(--fb-accent, #4f6ef7);pointer-events:none}.fb-scr__item{position:relative;box-sizing:border-box;padding:6px 8px;border:1px solid transparent;border-radius:var(--fb-radius-xs, 6px);cursor:pointer}.fb-scr__item:hover{border-color:var(--fb-border-strong, #cfd4de);background:color-mix(in srgb,var(--fb-accent, #4f6ef7) 4%,transparent)}.fb-scr__item--selected{border-color:var(--fb-accent, #4f6ef7);box-shadow:inset 0 0 0 1px var(--fb-accent, #4f6ef7)}.fb-scr__item--dragging{opacity:.45;pointer-events:none}.fb-scr__grip{position:absolute;top:2px;left:-2px;padding:0 3px;color:var(--fb-text-subtle, #98a2b3);font-size:11px;line-height:1;opacity:0;cursor:grab}.fb-scr__item:hover>.fb-scr__grip,.fb-scr__item--selected>.fb-scr__grip{opacity:1}.fb-scr__flag{position:absolute;top:2px;right:4px;color:var(--fb-text-muted, #6b7086);font-size:11px}.fb-scr__label{display:block;margin-bottom:3px;font-size:11px;font-weight:600;color:var(--fb-text, #1a1c23)}.fb-scr__req{color:var(--fb-error, #dc2626)}.fb-scr__control{display:flex;align-items:center;justify-content:space-between;gap:6px;min-height:26px;padding:4px 8px;border:1px solid var(--fb-border-strong, #cfd4de);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface, #fff);color:var(--fb-text-subtle, #98a2b3);font-size:12px;pointer-events:none}.fb-scr__control--area{min-height:54px;align-items:flex-start}.fb-scr__display{margin:0;font-size:12px;color:var(--fb-text, #1a1c23)}.fb-scr__options{display:flex;flex-direction:column;gap:2px;pointer-events:none}.fb-scr__option{font-size:12px;color:var(--fb-text-muted, #6b7086)}.fb-scr__option--missing{color:var(--fb-warning, #b7791f)}.fb-scr__component{display:flex;align-items:center;gap:6px;padding:10px;border:1px dashed var(--fb-accent, #4f6ef7);border-radius:var(--fb-radius-xs, 6px);background:color-mix(in srgb,var(--fb-accent, #4f6ef7) 5%,transparent);font-size:12px;color:var(--fb-text-muted, #6b7086)}.fb-scr__tag{display:inline-block;margin-top:3px;font-size:10px;color:var(--fb-text-subtle, #98a2b3)}.fb-scr__tag--warn{color:var(--fb-warning, #b7791f)}.fb-scr__section{border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface-alt, #f7f8fa)}.fb-scr__section-head{padding:5px 10px;border-bottom:1px solid var(--fb-border-subtle, #eef0f4);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #6b7086)}.fb-scr__region{border:1px dashed var(--fb-border-strong, #cfd4de);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface, #fff)}.fb-scr__region-tag{display:block;padding:3px 6px 0;font-size:10px;color:var(--fb-text-subtle, #98a2b3)}.fb-scr__frame-foot{display:flex;align-items:center;gap:6px;padding:8px 12px;border-top:1px solid var(--fb-border-subtle, #eef0f4);background:var(--fb-surface-alt, #f7f8fa)}.fb-scr__spacer{flex:1}.fb-scr__btn{padding:3px 10px;border:1px solid var(--fb-border-strong, #cfd4de);border-radius:var(--fb-radius-xs, 6px);font-size:11px;color:var(--fb-text-muted, #6b7086)}.fb-scr__btn--primary{border-color:var(--fb-accent, #4f6ef7);background:var(--fb-accent, #4f6ef7);color:var(--fb-accent-contrast, #fff)}.fb-scr__canvas-note{margin-top:10px}.fb-scr__props{background:var(--fb-surface, #fff)}.fb-scr__props-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.fb-scr__props-title{flex:1;min-width:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #6b7086)}.fb-scr__props-actions{display:flex;flex-wrap:wrap;gap:3px}.fb-btn--sm{padding:3px 7px;font-size:11px}.fb-scr__width{display:flex;align-items:center;gap:8px}.fb-scr__width input[type=range]{flex:1;min-width:0}.fb-scr__width-value{font-size:11px;color:var(--fb-text-muted, #6b7086)}
|
|
7737
|
+
`]}]}],ctorParameters:()=>[],propDecorators:{initialSelection:[{type:a.Input,args:[{isSignal:!0,alias:"initialSelection",required:!1}]}],composer:[{type:a.ViewChild,args:["composer",{isSignal:!0}]}]}});class Pe extends z{elementType="Loop";loop=s(()=>this.node(),...ngDevMode?[{debugName:"loop"}]:[]);sortOrders=s(()=>this.dictionaries.sortOrders(),...ngDevMode?[{debugName:"sortOrders"}]:[]);collectionType=s(()=>{const e=this.loop().collectionReference;return e?this.store.document().variables?.find(r=>r.name===e)?.dataType:void 0},...ngDevMode?[{debugName:"collectionType"}]:[]);collectionObjectType=s(()=>{const e=this.loop().collectionReference;if(e)return this.store.document().variables?.find(n=>n.name===e)?.objectType},...ngDevMode?[{debugName:"collectionObjectType"}]:[]);bodyReturnsToLoop=s(()=>{const e=this.loop().nextValueConnector?.targetReference;if(!e)return!1;const n=this.store.edges(),r=new Set,t=[e];for(;t.length;){const i=t.shift();if(i===this.name())return!0;if(!r.has(i)){r.add(i);for(const l of n)l.from===i&&l.to&&t.push(l.to)}}return!1},...ngDevMode?[{debugName:"bodyReturnsToLoop"}]:[]);hasBody=s(()=>!!this.loop().nextValueConnector?.targetReference,...ngDevMode?[{debugName:"hasBody"}]:[]);setCollection(e){this.setField("collectionReference",e)}setCurrentValueVariable(e){this.setField("assignNextValueToReference",e)}setIterationOrder(e){this.setField("iterationOrder",e)}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Pe,deps:null,target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:Pe,isStandalone:!0,selector:"fb-loop-inspector",usesInheritance:!0,ngImport:a,template:`<div class="fb-field">\r
|
|
7386
7738
|
<label class="fb-field__label fb-field__label--required">Collection da iterare</label>\r
|
|
7387
7739
|
<!-- Solo collection: iterare una variabile singola e' un errore (LOOP_COLLECTION_MISSING). -->\r
|
|
7388
7740
|
<fb-reference-picker\r
|
|
@@ -7451,7 +7803,7 @@
|
|
|
7451
7803
|
<p class="fb-field__hint">\r
|
|
7452
7804
|
Il cursore si azzera all\u2019uscita: rientrare nello stesso Loop ricomincia da capo.\r
|
|
7453
7805
|
</p>\r
|
|
7454
|
-
`,dependencies:[{kind:"component",type:
|
|
7806
|
+
`,dependencies:[{kind:"component",type:C,selector:"fb-connector-editor",inputs:["nodeName","node","outlets","title"],outputs:["connectorChanged"]},{kind:"component",type:$,selector:"fb-reference-picker",inputs:["value","label","placeholder","disabled","dataType","isCollection","objectType","writableOnly","elementsOnly","extraReferences"],outputs:["valueChange"]},{kind:"directive",type:k,selector:"select[fbValue]",inputs:["fbValue"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Pe,decorators:[{type:y,args:[{selector:"fb-loop-inspector",standalone:!0,imports:[C,$,k],changeDetection:_.OnPush,template:`<div class="fb-field">\r
|
|
7455
7807
|
<label class="fb-field__label fb-field__label--required">Collection da iterare</label>\r
|
|
7456
7808
|
<!-- Solo collection: iterare una variabile singola e' un errore (LOOP_COLLECTION_MISSING). -->\r
|
|
7457
7809
|
<fb-reference-picker\r
|
|
@@ -7520,7 +7872,7 @@
|
|
|
7520
7872
|
<p class="fb-field__hint">\r
|
|
7521
7873
|
Il cursore si azzera all\u2019uscita: rientrare nello stesso Loop ricomincia da capo.\r
|
|
7522
7874
|
</p>\r
|
|
7523
|
-
`}]}]});class
|
|
7875
|
+
`}]}]});class xe extends z{api=b(B);elementType="OrchestratedStage";stage=s(()=>this.node(),...ngDevMode?[{debugName:"stage"}]:[]);steps=s(()=>Ur(this.stage()),...ngDevMode?[{debugName:"steps"}]:[]);stepTypes=s(()=>this.dictionaries.stageStepTypes(),...ngDevMode?[{debugName:"stepTypes"}]:[]);assigneeTypes=s(()=>this.dictionaries.assigneeTypes(),...ngDevMode?[{debugName:"assigneeTypes"}]:[]);conditionOutputName=Gr;flowCandidates=u([],...ngDevMode?[{debugName:"flowCandidates"}]:[]);constructor(){super(),this.api.listSubflowCandidates(this.store.document().fullName??void 0).then(e=>this.flowCandidates.set(e??[])).catch(()=>this.flowCandidates.set([]))}candidateOptions=s(()=>this.flowCandidates().map(e=>({name:e.flowName,label:e.label,description:e.description})),...ngDevMode?[{debugName:"candidateOptions"}]:[]);conditionHolders=s(()=>this.steps().map(e=>({entry:{conditions:e.entryConditions??[]},exit:{conditions:e.exitConditions??[]}})),...ngDevMode?[{debugName:"conditionHolders"}]:[]);requiresActionName(e){return this.dictionaries.stageStepRequiresActionName(e.actionType)}requiresAssignees(e){return this.dictionaries.stageStepRequiresAssignees(e.actionType)}supportsRejection(e){return this.dictionaries.stageStepType(e.actionType)?.supportsRejection??e.actionType==="stepApproval"}stepTypeDescription(e){return this.dictionaries.stageStepType(e.actionType)?.description??null}isUnknownStepType(e){return!e.actionType||!this.stepTypes().length?!1:!this.dictionaries.stageStepType(e.actionType)}stepNameError(e){const n=$e(e.name,[],e.name);if(!n.isValid)return n.message??"Nome non valido.";const r=(e.name??"").toLowerCase();return this.store.usedNames().filter(i=>i.toLowerCase()===r).length>1?"Questo nome e\u2019 gi\xE0 usato da un elemento, una risorsa o un altro step (NAME_DUPLICATED).":null}stepOutputInConditions(e){const n=[...e.entryConditions??[],...e.exitConditions??[]];for(const r of n){const t=Hn(r.leftValueReference,this.steps())??Hn(r.rightValue?.elementReference,this.steps());if(t)return t}}hasSimulatedOutputs(e){return e.debugSimulateStep===!0}addStep(){const e=U("Step",this.store.usedNames());this.patch(n=>{const r=n;r.stageSteps??=[],r.stageSteps.push({name:e,label:`Step ${r.stageSteps.length+1}`})})}removeStep(e){this.patch(n=>{const r=n;r.stageSteps?.splice(e,1),r.stageSteps?.length===0&&delete r.stageSteps})}moveStep(e,n){const r=e+n;r<0||r>=this.steps().length||this.patch(t=>{const i=t.stageSteps;if(!i)return;const[l]=i.splice(e,1);i.splice(r,0,l)})}patchStep(e,n){this.patch(r=>{const t=r.stageSteps?.[e];t&&n(t)})}setStepLabel(e,n){this.patchStep(e,r=>{r.label=n||void 0,!r.name&&n&&(r.name=fe(n))})}setStepName(e,n){this.patchStep(e,r=>{r.name=n||void 0})}setStepDescription(e,n){this.patchStep(e,r=>{r.description=n||void 0})}setStepType(e,n){const r=this.dictionaries.stageStepRequiresActionName(n),t=this.dictionaries.stageStepRequiresAssignees(n);this.patchStep(e,i=>{i.actionType=n||void 0,r||delete i.actionName,t?i.assignees??=[{}]:(delete i.assignees,delete i.requiresMultiMemberApproval)})}setStepActionName(e,n){this.patchStep(e,r=>{r.actionName=n||void 0})}setMultiMemberApproval(e,n){this.patchStep(e,r=>{r.requiresMultiMemberApproval=n?"1":"0"})}isMultiMemberApproval(e){return e.requiresMultiMemberApproval==="1"}setSimulateStep(e,n){this.patchStep(e,r=>{n?r.debugSimulateStep=!0:(delete r.debugSimulateStep,delete r.outputConfigParams)})}assigneesOf(e){return e.assignees??[]}addAssignee(e){this.patchStep(e,n=>{n.assignees??=[],n.assignees.push({})})}removeAssignee(e,n){this.patchStep(e,r=>{r.assignees?.splice(n,1),r.assignees?.length===0&&delete r.assignees})}setAssigneeType(e,n,r){this.patchStep(e,t=>{const i=t.assignees?.[n];i&&(i.assigneeType=r||void 0)})}setAssigneeValue(e,n,r){this.patchStep(e,t=>{const i=t.assignees?.[n];i&&(i.assignee=r)})}isAssigneeIncomplete(e){return!e.assigneeType||!e.assignee}onEntryConditionsChanged(e,n){this.applyConditions(e,"entryConditions",n)}onExitConditionsChanged(e,n){this.applyConditions(e,"exitConditions",n)}applyConditions(e,n,r){this.patchStep(e,t=>{const i={conditions:t[n]??[]};r(i);const l=i.conditions??[];l.length?t[n]=l:delete t[n]})}setEntryActionName(e,n){this.patchStep(e,r=>{n?(r.entryActionName=n,r.entryActionType="EvaluationFlow"):(delete r.entryActionName,delete r.entryActionType)})}setExitActionName(e,n){this.patchStep(e,r=>{n?(r.exitActionName=n,r.exitActionType="EvaluationFlow"):(delete r.exitActionName,delete r.exitActionType)})}onParametersChanged(e,n){this.patchStep(e,r=>n(r))}hasRejectionBranch=s(()=>!!this.stage().faultConnector,...ngDevMode?[{debugName:"hasRejectionBranch"}]:[]);hasApprovalStep=s(()=>this.steps().some(e=>this.supportsRejection(e)),...ngDevMode?[{debugName:"hasApprovalStep"}]:[]);static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:xe,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:xe,isStandalone:!0,selector:"fb-orchestrated-stage-inspector",usesInheritance:!0,ngImport:a,template:`<fieldset class="fb-section">\r
|
|
7524
7876
|
<legend class="fb-section__title">Step dello stage</legend>\r
|
|
7525
7877
|
<p class="fb-section__note">\r
|
|
7526
7878
|
Gli step <strong>non sono una sequenza</strong>: parte quello le cui condizioni d\u2019ingresso sono vere, e\r
|
|
@@ -7841,7 +8193,7 @@
|
|
|
7841
8193
|
title="Rami"\r
|
|
7842
8194
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
7843
8195
|
/>\r
|
|
7844
|
-
`,dependencies:[{kind:"component",type:
|
|
8196
|
+
`,dependencies:[{kind:"component",type:W,selector:"fb-condition-editor",inputs:["holder","title","allowFormula","allowLogic","issuePath"],outputs:["changed"]},{kind:"component",type:C,selector:"fb-connector-editor",inputs:["nodeName","node","outlets","title"],outputs:["connectorChanged"]},{kind:"component",type:F,selector:"fb-name-picker",inputs:["value","options","label","placeholder","disabled","unknownMessage","unknownSeverity","unusableOptions","unusableMessage","emptyMessage","isMono","commitOn"],outputs:["valueChange"]},{kind:"component",type:V,selector:"fb-parameter-editor",inputs:["holder","catalogParameters","inputTitle","outputTitle","showInputs","showOutputs","outputsDisabledReason","extraTargets"],outputs:["changed"]},{kind:"component",type:S,selector:"fb-value-editor",inputs:["value","label","dataType","objectType","isCollection","valueSet","disabled","allowFormula"],outputs:["valueChange"]},{kind:"directive",type:k,selector:"select[fbValue]",inputs:["fbValue"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:xe,decorators:[{type:y,args:[{selector:"fb-orchestrated-stage-inspector",standalone:!0,imports:[W,C,F,V,S,k],changeDetection:_.OnPush,template:`<fieldset class="fb-section">\r
|
|
7845
8197
|
<legend class="fb-section__title">Step dello stage</legend>\r
|
|
7846
8198
|
<p class="fb-section__note">\r
|
|
7847
8199
|
Gli step <strong>non sono una sequenza</strong>: parte quello le cui condizioni d\u2019ingresso sono vere, e\r
|
|
@@ -8162,7 +8514,7 @@
|
|
|
8162
8514
|
title="Rami"\r
|
|
8163
8515
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
8164
8516
|
/>\r
|
|
8165
|
-
`}]}],ctorParameters:()=>[]});class
|
|
8517
|
+
`}]}],ctorParameters:()=>[]});class Ve extends z{catalog=b(M);elementType="RecordLookup";lookup=s(()=>this.node(),...ngDevMode?[{debugName:"lookup"}]:[]);sortOrders=s(()=>this.dictionaries.sortOrders(),...ngDevMode?[{debugName:"sortOrders"}]:[]);allFields=u([],...ngDevMode?[{debugName:"allFields"}]:[]);constructor(){super(),w(()=>{const e=this.lookup().object;if(!e){this.allFields.set([]);return}this.catalog.listFields(e,"any").then(n=>this.allFields.set(n??[])).catch(()=>this.allFields.set([]))})}fieldOptions=s(()=>this.allFields(),...ngDevMode?[{debugName:"fieldOptions"}]:[]);queriedFields=s(()=>this.lookup().queriedFields??[],...ngDevMode?[{debugName:"queriedFields"}]:[]);outputMode=s(()=>{const e=this.lookup();return e.storeOutputAutomatically?"automatic":e.outputAssignments?.length?"assignments":e.outputReference?"variable":"discard"},...ngDevMode?[{debugName:"outputMode"}]:[]);hasOutputConflict=s(()=>{const e=this.lookup();return e.storeOutputAutomatically===!0&&(!!e.outputReference||(e.outputAssignments?.length??0)>0)},...ngDevMode?[{debugName:"hasOutputConflict"}]:[]);returnsCollection=s(()=>this.lookup().getFirstRecordOnly!==!0,...ngDevMode?[{debugName:"returnsCollection"}]:[]);outputAssignments=s(()=>this.lookup().outputAssignments??[],...ngDevMode?[{debugName:"outputAssignments"}]:[]);setObject(e){this.patch(n=>{const r=n;r.object!==e&&(r.object=e||void 0,delete r.queriedFields,delete r.filters,delete r.sortField,delete r.outputAssignments)})}setFirstOnly(e){this.patch(n=>{const r=n;e?r.getFirstRecordOnly=!0:delete r.getFirstRecordOnly})}setSortField(e){this.setField("sortField",e)}setSortOrder(e){this.setField("sortOrder",e)}setLimit(e){const n=Number.parseInt(e,10);this.setField("limit",Number.isNaN(n)?void 0:n)}toggleQueriedField(e,n){this.patch(r=>{const t=r,i=new Set(t.queriedFields??[]);n?i.add(e):i.delete(e),i.size?t.queriedFields=Array.from(i):delete t.queriedFields})}isQueried(e){return this.queriedFields().includes(e)}setOutputMode(e){this.patch(n=>{const r=n;switch(delete r.storeOutputAutomatically,delete r.outputReference,delete r.outputAssignments,e){case"automatic":r.storeOutputAutomatically=!0;break;case"variable":r.outputReference="";break;case"assignments":r.outputAssignments=[{}];break;case"discard":break}})}setOutputReference(e){this.setField("outputReference",e)}addOutputAssignment(){this.patch(e=>{const n=e;n.outputAssignments??=[],n.outputAssignments.push({})})}removeOutputAssignment(e){this.patch(n=>{const r=n;r.outputAssignments?.splice(e,1),r.outputAssignments?.length===0&&delete r.outputAssignments})}setOutputAssignmentField(e,n){this.patch(r=>{const t=r.outputAssignments?.[e];t&&(t.field=n||void 0)})}setOutputAssignmentTarget(e,n){this.patch(r=>{const t=r.outputAssignments?.[e];t&&(t.assignToReference=n)})}onFiltersChanged(e){this.patch(n=>e(n))}hasRelatedRecords=s(()=>(this.lookup().relatedRecords?.length??0)>0,...ngDevMode?[{debugName:"hasRelatedRecords"}]:[]);static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Ve,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:Ve,isStandalone:!0,selector:"fb-record-lookup-inspector",usesInheritance:!0,ngImport:a,template:`<div class="fb-field">\r
|
|
8166
8518
|
<label class="fb-field__label fb-field__label--required">Oggetto</label>\r
|
|
8167
8519
|
<fb-object-picker\r
|
|
8168
8520
|
[value]="lookup().object"\r
|
|
@@ -8388,7 +8740,7 @@
|
|
|
8388
8740
|
[outlets]="outlets()"\r
|
|
8389
8741
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
8390
8742
|
/>\r
|
|
8391
|
-
`,dependencies:[{kind:"component",type:
|
|
8743
|
+
`,dependencies:[{kind:"component",type:C,selector:"fb-connector-editor",inputs:["nodeName","node","outlets","title"],outputs:["connectorChanged"]},{kind:"component",type:P,selector:"fb-field-picker",inputs:["value","object","usage","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:q,selector:"fb-object-picker",inputs:["value","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:Y,selector:"fb-record-filter-editor",inputs:["holder","object","title","usage","fieldOptions","supportsLogic","supportsFormula","emptyWarning","emptyWarningSeverity"],outputs:["changed"]},{kind:"component",type:$,selector:"fb-reference-picker",inputs:["value","label","placeholder","disabled","dataType","isCollection","objectType","writableOnly","elementsOnly","extraReferences"],outputs:["valueChange"]},{kind:"directive",type:k,selector:"select[fbValue]",inputs:["fbValue"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Ve,decorators:[{type:y,args:[{selector:"fb-record-lookup-inspector",standalone:!0,imports:[C,P,q,Y,$,k],changeDetection:_.OnPush,template:`<div class="fb-field">\r
|
|
8392
8744
|
<label class="fb-field__label fb-field__label--required">Oggetto</label>\r
|
|
8393
8745
|
<fb-object-picker\r
|
|
8394
8746
|
[value]="lookup().object"\r
|
|
@@ -8614,7 +8966,7 @@
|
|
|
8614
8966
|
[outlets]="outlets()"\r
|
|
8615
8967
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
8616
8968
|
/>\r
|
|
8617
|
-
`}]}],ctorParameters:()=>[]});class
|
|
8969
|
+
`}]}],ctorParameters:()=>[]});class Le extends z{elementType="RecordRollback";isScreenFlow=s(()=>this.store.document().processType==="Screen",...ngDevMode?[{debugName:"isScreenFlow"}]:[]);static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Le,deps:null,target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:Le,isStandalone:!0,selector:"fb-record-rollback-inspector",usesInheritance:!0,ngImport:a,template:`<p class="fb-callout">\r
|
|
8618
8970
|
Annulla le modifiche ai record ancora pendenti. Non ha altri campi da configurare.\r
|
|
8619
8971
|
</p>\r
|
|
8620
8972
|
\r
|
|
@@ -8631,7 +8983,7 @@
|
|
|
8631
8983
|
[outlets]="outlets()"\r
|
|
8632
8984
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
8633
8985
|
/>\r
|
|
8634
|
-
`,dependencies:[{kind:"component",type:
|
|
8986
|
+
`,dependencies:[{kind:"component",type:C,selector:"fb-connector-editor",inputs:["nodeName","node","outlets","title"],outputs:["connectorChanged"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Le,decorators:[{type:y,args:[{selector:"fb-record-rollback-inspector",standalone:!0,imports:[C],changeDetection:_.OnPush,template:`<p class="fb-callout">\r
|
|
8635
8987
|
Annulla le modifiche ai record ancora pendenti. Non ha altri campi da configurare.\r
|
|
8636
8988
|
</p>\r
|
|
8637
8989
|
\r
|
|
@@ -8648,7 +9000,7 @@
|
|
|
8648
9000
|
[outlets]="outlets()"\r
|
|
8649
9001
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
8650
9002
|
/>\r
|
|
8651
|
-
`}]}]});class
|
|
9003
|
+
`}]}]});class Be extends z{type=d.required(...ngDevMode?[{debugName:"type"}]:[]);get elementType(){return this.type()}record=s(()=>this.node(),...ngDevMode?[{debugName:"record"}]:[]);chosenMode=u(null,...ngDevMode?[{debugName:"chosenMode"}]:[]);constructor(){super(),w(()=>{this.name(),this.chosenMode.set(null),this.bulkUpdateConfirmed.set(!1)})}isCreate=s(()=>this.type()==="RecordCreate",...ngDevMode?[{debugName:"isCreate"}]:[]);isUpdate=s(()=>this.type()==="RecordUpdate",...ngDevMode?[{debugName:"isUpdate"}]:[]);isDelete=s(()=>this.type()==="RecordDelete",...ngDevMode?[{debugName:"isDelete"}]:[]);mode=s(()=>this.record().inputReference?"reference":this.chosenMode()??"object",...ngDevMode?[{debugName:"mode"}]:[]);assignmentUsage=s(()=>this.isCreate()?"createable":"updateable",...ngDevMode?[{debugName:"assignmentUsage"}]:[]);supportsFilterLogic=s(()=>this.isCreate(),...ngDevMode?[{debugName:"supportsFilterLogic"}]:[]);needsFilters=s(()=>this.isUpdate()||this.isDelete(),...ngDevMode?[{debugName:"needsFilters"}]:[]);filterCount=s(()=>this.record().filters?.length??0,...ngDevMode?[{debugName:"filterCount"}]:[]);emptyFilterWarning=s(()=>this.mode()==="reference"||!this.needsFilters()?null:this.isDelete()?"Un Delete senza filtri cancellerebbe tutti i record dell\u2019oggetto: e\u2019 un errore e blocca l\u2019attivazione.":"Un Update senza filtri aggiornerebbe tutti i record dell\u2019oggetto. Se e\u2019 quello che vuoi, confermalo qui sotto.",...ngDevMode?[{debugName:"emptyFilterWarning"}]:[]);emptyFilterSeverity=s(()=>this.isDelete()?"error":"warn",...ngDevMode?[{debugName:"emptyFilterSeverity"}]:[]);bulkUpdateConfirmed=u(!1,...ngDevMode?[{debugName:"bulkUpdateConfirmed"}]:[]);showsBulkConfirm=s(()=>this.isUpdate()&&this.mode()==="object"&&this.filterCount()===0,...ngDevMode?[{debugName:"showsBulkConfirm"}]:[]);upsertMode=s(()=>{const e=this.record();return e.doesUpsert?e.upsertStandardIdField?"standard":"external":"none"},...ngDevMode?[{debugName:"upsertMode"}]:[]);hasUpsertConflict=s(()=>{const e=this.record();return!!e.upsertExternalIdField&&!!e.upsertStandardIdField},...ngDevMode?[{debugName:"hasUpsertConflict"}]:[]);title=s(()=>{switch(this.type()){case"RecordCreate":return"record da creare";case"RecordUpdate":return"record da aggiornare";default:return"record da cancellare"}},...ngDevMode?[{debugName:"title"}]:[]);setMode(e){this.chosenMode.set(e),this.patch(n=>{const r=n;e==="reference"?(delete r.object,delete r.inputAssignments,delete r.filters):delete r.inputReference})}setInputReference(e){this.setField("inputReference",e)}setObject(e){this.patch(n=>{const r=n;r.object!==e&&(r.object=e||void 0,delete r.inputAssignments,delete r.filters,delete r.upsertExternalIdField,delete r.upsertStandardIdField)})}setDoesUpsert(e){this.patch(n=>{const r=n;e?r.doesUpsert=!0:(delete r.doesUpsert,delete r.upsertExternalIdField,delete r.upsertStandardIdField)})}setUpsertMode(e){this.patch(n=>{const r=n;r.doesUpsert=!0,e==="external"?(delete r.upsertStandardIdField,r.upsertExternalIdField??=""):(delete r.upsertExternalIdField,r.upsertStandardIdField??="")})}setUpsertExternalField(e){this.setField("upsertExternalIdField",e)}setUpsertStandardField(e){this.setField("upsertStandardIdField",e)}setStoreOutputAutomatically(e){this.patch(n=>{const r=n;e?(r.storeOutputAutomatically=!0,delete r.assignRecordIdToReference):delete r.storeOutputAutomatically})}setAssignRecordId(e){this.patch(n=>{const r=n;r.assignRecordIdToReference=e,e&&delete r.storeOutputAutomatically})}confirmBulkUpdate(e){this.bulkUpdateConfirmed.set(e)}onFiltersChanged(e){this.patch(n=>e(n))}onAssignmentsChanged(e){this.patch(n=>e(n))}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Be,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:Be,isStandalone:!0,selector:"fb-record-write-inspector",inputs:{type:{classPropertyName:"type",publicName:"type",isSignal:!0,isRequired:!0,transformFunction:null}},usesInheritance:!0,ngImport:a,template:`<fieldset class="fb-section">\r
|
|
8652
9004
|
<legend class="fb-section__title">Come indicare i {{ title() }}</legend>\r
|
|
8653
9005
|
<label class="fb-check">\r
|
|
8654
9006
|
<input type="radio" name="write-mode" [checked]="mode() === 'object'" (change)="setMode('object')" />\r
|
|
@@ -8817,7 +9169,7 @@
|
|
|
8817
9169
|
[outlets]="outlets()"\r
|
|
8818
9170
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
8819
9171
|
/>\r
|
|
8820
|
-
`,dependencies:[{kind:"component",type:
|
|
9172
|
+
`,dependencies:[{kind:"component",type:C,selector:"fb-connector-editor",inputs:["nodeName","node","outlets","title"],outputs:["connectorChanged"]},{kind:"component",type:ye,selector:"fb-field-assignment-editor",inputs:["holder","object","usage","title","disabledReason"],outputs:["changed"]},{kind:"component",type:P,selector:"fb-field-picker",inputs:["value","object","usage","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:q,selector:"fb-object-picker",inputs:["value","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:Y,selector:"fb-record-filter-editor",inputs:["holder","object","title","usage","fieldOptions","supportsLogic","supportsFormula","emptyWarning","emptyWarningSeverity"],outputs:["changed"]},{kind:"component",type:$,selector:"fb-reference-picker",inputs:["value","label","placeholder","disabled","dataType","isCollection","objectType","writableOnly","elementsOnly","extraReferences"],outputs:["valueChange"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Be,decorators:[{type:y,args:[{selector:"fb-record-write-inspector",standalone:!0,imports:[C,ye,P,q,Y,$],changeDetection:_.OnPush,template:`<fieldset class="fb-section">\r
|
|
8821
9173
|
<legend class="fb-section__title">Come indicare i {{ title() }}</legend>\r
|
|
8822
9174
|
<label class="fb-check">\r
|
|
8823
9175
|
<input type="radio" name="write-mode" [checked]="mode() === 'object'" (change)="setMode('object')" />\r
|
|
@@ -8986,7 +9338,7 @@
|
|
|
8986
9338
|
[outlets]="outlets()"\r
|
|
8987
9339
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
8988
9340
|
/>\r
|
|
8989
|
-
`}]}],ctorParameters:()=>[],propDecorators:{type:[{type:a.Input,args:[{isSignal:!0,alias:"type",required:!0}]}]}});class
|
|
9341
|
+
`}]}],ctorParameters:()=>[],propDecorators:{type:[{type:a.Input,args:[{isSignal:!0,alias:"type",required:!0}]}]}});class je extends z{catalog=b(M);elementType="Screen";screen=s(()=>this.node(),...ngDevMode?[{debugName:"screen"}]:[]);forms=u([],...ngDevMode?[{debugName:"forms"}]:[]);components=u([],...ngDevMode?[{debugName:"components"}]:[]);formParameters=u([],...ngDevMode?[{debugName:"formParameters"}]:[]);constructor(){super(),this.catalog.listForms("Form").then(e=>this.forms.set(e??[])).catch(()=>this.forms.set([])),this.catalog.listForms("Component").then(e=>this.components.set(e??[])).catch(()=>this.components.set([])),w(()=>{const e=this.screen().formName;if(!e){this.formParameters.set([]);return}this.catalog.listFormParameters(e).then(n=>this.formParameters.set(n??[])).catch(()=>this.formParameters.set([]))})}formOptions=s(()=>this.forms(),...ngDevMode?[{debugName:"formOptions"}]:[]);unusableForms=s(()=>{const e=new Set(this.forms().map(n=>n.name));return this.components().filter(n=>!e.has(n.name))},...ngDevMode?[{debugName:"unusableForms"}]:[]);parameters=s(()=>this.formParameters(),...ngDevMode?[{debugName:"parameters"}]:[]);allowBack=s(()=>this.screen().allowBack!==!1,...ngDevMode?[{debugName:"allowBack"}]:[]);allowFinish=s(()=>this.screen().allowFinish!==!1,...ngDevMode?[{debugName:"allowFinish"}]:[]);allowPause=s(()=>this.screen().allowPause!==!1,...ngDevMode?[{debugName:"allowPause"}]:[]);isDeadEnd=s(()=>{const e=this.screen();return!e.connector?.targetReference&&e.allowFinish===!1},...ngDevMode?[{debugName:"isDeadEnd"}]:[]);setFormName(e){this.setField("formName",e)}setHelpText(e){this.setField("helpText",e)}setPausedText(e){this.setField("pausedText",e)}setFlag(e,n){this.patch(r=>{n?delete r[e]:r[e]=!1})}onParametersChanged(e){this.patch(n=>e(n))}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:je,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:je,isStandalone:!0,selector:"fb-screen-inspector",usesInheritance:!0,ngImport:a,template:`<p class="fb-callout">\r
|
|
8990
9342
|
Lo screen dichiara <strong>quale form</strong> mostrare, non i suoi campi: il form e\u2019 un componente del\r
|
|
8991
9343
|
frontend applicativo, e qui si definisce solo il contratto di dati.\r
|
|
8992
9344
|
</p>\r
|
|
@@ -9070,7 +9422,7 @@
|
|
|
9070
9422
|
[outlets]="outlets()"\r
|
|
9071
9423
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
9072
9424
|
/>\r
|
|
9073
|
-
`,dependencies:[{kind:"component",type:
|
|
9425
|
+
`,dependencies:[{kind:"component",type:C,selector:"fb-connector-editor",inputs:["nodeName","node","outlets","title"],outputs:["connectorChanged"]},{kind:"component",type:F,selector:"fb-name-picker",inputs:["value","options","label","placeholder","disabled","unknownMessage","unknownSeverity","unusableOptions","unusableMessage","emptyMessage","isMono","commitOn"],outputs:["valueChange"]},{kind:"component",type:V,selector:"fb-parameter-editor",inputs:["holder","catalogParameters","inputTitle","outputTitle","showInputs","showOutputs","outputsDisabledReason","extraTargets"],outputs:["changed"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:je,decorators:[{type:y,args:[{selector:"fb-screen-inspector",standalone:!0,imports:[C,F,V],changeDetection:_.OnPush,template:`<p class="fb-callout">\r
|
|
9074
9426
|
Lo screen dichiara <strong>quale form</strong> mostrare, non i suoi campi: il form e\u2019 un componente del\r
|
|
9075
9427
|
frontend applicativo, e qui si definisce solo il contratto di dati.\r
|
|
9076
9428
|
</p>\r
|
|
@@ -9154,7 +9506,7 @@
|
|
|
9154
9506
|
[outlets]="outlets()"\r
|
|
9155
9507
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
9156
9508
|
/>\r
|
|
9157
|
-
`}]}],ctorParameters:()=>[]});class
|
|
9509
|
+
`}]}],ctorParameters:()=>[]});class Ue extends z{catalog=b(M);elementType="ScriptCall";script=s(()=>this.node(),...ngDevMode?[{debugName:"script"}]:[]);scripts=u([],...ngDevMode?[{debugName:"scripts"}]:[]);parameters=u([],...ngDevMode?[{debugName:"parameters"}]:[]);constructor(){super(),this.catalog.listScripts().then(e=>this.scripts.set(e??[])).catch(()=>this.scripts.set([])),w(()=>{const e=this.script().scriptName;if(!e){this.parameters.set([]);return}this.catalog.listScriptParameters(e).then(n=>this.parameters.set(n??[])).catch(()=>this.parameters.set([]))})}scriptOptions=s(()=>this.scripts(),...ngDevMode?[{debugName:"scriptOptions"}]:[]);parameterCatalog=s(()=>this.parameters(),...ngDevMode?[{debugName:"parameterCatalog"}]:[]);storeOutputAutomatically=s(()=>this.script().storeOutputAutomatically===!0,...ngDevMode?[{debugName:"storeOutputAutomatically"}]:[]);setScriptName(e){this.patch(n=>{const r=n;r.scriptName!==e&&(r.scriptName=e||void 0,delete r.inputParameters,delete r.outputParameters)})}setStoreOutputAutomatically(e){this.patch(n=>{const r=n;e?(r.storeOutputAutomatically=!0,delete r.outputParameters):delete r.storeOutputAutomatically})}onParametersChanged(e){this.patch(n=>e(n))}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Ue,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"14.0.0",version:"20.3.28",type:Ue,isStandalone:!0,selector:"fb-script-call-inspector",usesInheritance:!0,ngImport:a,template:`<div class="fb-field">\r
|
|
9158
9510
|
<label class="fb-field__label fb-field__label--required">Script</label>\r
|
|
9159
9511
|
<fb-name-picker\r
|
|
9160
9512
|
[value]="script().scriptName"\r
|
|
@@ -9191,7 +9543,7 @@
|
|
|
9191
9543
|
[outlets]="outlets()"\r
|
|
9192
9544
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
9193
9545
|
/>\r
|
|
9194
|
-
`,dependencies:[{kind:"component",type:
|
|
9546
|
+
`,dependencies:[{kind:"component",type:C,selector:"fb-connector-editor",inputs:["nodeName","node","outlets","title"],outputs:["connectorChanged"]},{kind:"component",type:F,selector:"fb-name-picker",inputs:["value","options","label","placeholder","disabled","unknownMessage","unknownSeverity","unusableOptions","unusableMessage","emptyMessage","isMono","commitOn"],outputs:["valueChange"]},{kind:"component",type:V,selector:"fb-parameter-editor",inputs:["holder","catalogParameters","inputTitle","outputTitle","showInputs","showOutputs","outputsDisabledReason","extraTargets"],outputs:["changed"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Ue,decorators:[{type:y,args:[{selector:"fb-script-call-inspector",standalone:!0,imports:[C,F,V],changeDetection:_.OnPush,template:`<div class="fb-field">\r
|
|
9195
9547
|
<label class="fb-field__label fb-field__label--required">Script</label>\r
|
|
9196
9548
|
<fb-name-picker\r
|
|
9197
9549
|
[value]="script().scriptName"\r
|
|
@@ -9228,7 +9580,7 @@
|
|
|
9228
9580
|
[outlets]="outlets()"\r
|
|
9229
9581
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
9230
9582
|
/>\r
|
|
9231
|
-
`}]}],ctorParameters:()=>[]});const
|
|
9583
|
+
`}]}],ctorParameters:()=>[]});const At=new Set(["RecordBeforeSave","RecordAfterSave","RecordBeforeDelete"]);class ke{store=b(T);dictionaries=b(I);validation=b(H);start=s(()=>this.store.start(),...ngDevMode?[{debugName:"start"}]:[]);startNode=s(()=>this.start(),...ngDevMode?[{debugName:"startNode"}]:[]);outlets=s(()=>L("Start",this.startNode()),...ngDevMode?[{debugName:"outlets"}]:[]);triggerTypes=s(()=>this.dictionaries.triggerTypes(),...ngDevMode?[{debugName:"triggerTypes"}]:[]);recordTriggerTypes=s(()=>this.dictionaries.recordTriggerTypes(),...ngDevMode?[{debugName:"recordTriggerTypes"}]:[]);frequencies=s(()=>this.dictionaries.startFrequencies(),...ngDevMode?[{debugName:"frequencies"}]:[]);offsetUnits=s(()=>this.dictionaries.offsetUnits(),...ngDevMode?[{debugName:"offsetUnits"}]:[]);triggerType=s(()=>this.start().triggerType??"None",...ngDevMode?[{debugName:"triggerType"}]:[]);isRecordTrigger=s(()=>At.has(this.triggerType()),...ngDevMode?[{debugName:"isRecordTrigger"}]:[]);isScheduled=s(()=>this.triggerType()==="Scheduled",...ngDevMode?[{debugName:"isScheduled"}]:[]);isEvent=s(()=>this.triggerType()==="Event",...ngDevMode?[{debugName:"isEvent"}]:[]);hasEntryPoint=s(()=>!!this.start().connector?.targetReference,...ngDevMode?[{debugName:"hasEntryPoint"}]:[]);scheduledPaths=s(()=>this.start().scheduledPaths??[],...ngDevMode?[{debugName:"scheduledPaths"}]:[]);issues=s(()=>this.validation.documentIssues(),...ngDevMode?[{debugName:"issues"}]:[]);setTriggerType(e){this.store.updateStart(n=>{n.triggerType=e==="None"?void 0:e,At.has(e)||(delete n.object,delete n.recordTriggerType,delete n.filters,delete n.filterLogic,delete n.filterFormula,delete n.doesRequireRecordChangedToMeetCriteria),e!=="Scheduled"?(delete n.schedule,delete n.scheduledPaths):n.schedule??={frequency:this.frequencies()[0]?.value??"Once"}})}setObject(e){this.store.updateStart(n=>{n.object!==e&&(n.object=e||void 0,delete n.filters)})}setRecordTriggerType(e){this.store.updateStart(n=>{n.recordTriggerType=e||void 0})}setRequireChanged(e){this.store.updateStart(n=>{e?n.doesRequireRecordChangedToMeetCriteria=!0:delete n.doesRequireRecordChangedToMeetCriteria})}setFrequency(e){this.store.updateStart(n=>{n.schedule??={},n.schedule.frequency=e||void 0})}setStartDate(e){this.store.updateStart(n=>{n.schedule??={},n.schedule.startDate=e?`${e}T00:00:00`:void 0})}setStartTime(e){this.store.updateStart(n=>{n.schedule??={},n.schedule.startTime=e?e.length===5?`${e}:00`:e:void 0})}startDateValue=s(()=>(this.start().schedule?.startDate??"").slice(0,10),...ngDevMode?[{debugName:"startDateValue"}]:[]);startTimeValue=s(()=>(this.start().schedule?.startTime??"").slice(0,5),...ngDevMode?[{debugName:"startTimeValue"}]:[]);addScheduledPath(){this.store.updateStart(e=>{e.scheduledPaths??=[];const n=e.scheduledPaths.map(r=>r.name??"");e.scheduledPaths.push({name:U("Percorso",n),label:`Percorso differito ${e.scheduledPaths.length+1}`,offsetNumber:1,offsetUnit:"Days"})})}removeScheduledPath(e){this.store.updateStart(n=>{n.scheduledPaths?.splice(e,1),n.scheduledPaths?.length===0&&delete n.scheduledPaths})}setPathField(e,n,r){this.store.updateStart(t=>{const i=t.scheduledPaths?.[e];i&&(r==null||r===""?delete i[n]:i[n]=r)})}setPathOffsetNumber(e,n){const r=Number.parseInt(n,10);this.setPathField(e,"offsetNumber",Number.isNaN(r)?void 0:r)}onFiltersChanged(e){this.store.updateStart(n=>e(n))}onConnectorChanged(e){this.store.setConnector("$start",e.outletKey,e.target,e.isGoTo)}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ke,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:ke,isStandalone:!0,selector:"fb-start-inspector",ngImport:a,template:`@if (!hasEntryPoint()) {\r
|
|
9232
9584
|
<p class="fb-callout fb-callout--error">\r
|
|
9233
9585
|
Lo Start non punta a nessun elemento: il flow non ha un punto di ingresso e non e\u2019 eseguibile\r
|
|
9234
9586
|
(START_NO_ENTRY_POINT).\r
|
|
@@ -9443,7 +9795,7 @@
|
|
|
9443
9795
|
title="Da dove comincia"\r
|
|
9444
9796
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
9445
9797
|
/>\r
|
|
9446
|
-
`,dependencies:[{kind:"component",type:
|
|
9798
|
+
`,dependencies:[{kind:"component",type:C,selector:"fb-connector-editor",inputs:["nodeName","node","outlets","title"],outputs:["connectorChanged"]},{kind:"component",type:q,selector:"fb-object-picker",inputs:["value","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:Y,selector:"fb-record-filter-editor",inputs:["holder","object","title","usage","fieldOptions","supportsLogic","supportsFormula","emptyWarning","emptyWarningSeverity"],outputs:["changed"]},{kind:"directive",type:k,selector:"select[fbValue]",inputs:["fbValue"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ke,decorators:[{type:y,args:[{selector:"fb-start-inspector",standalone:!0,imports:[C,q,Y,k],changeDetection:_.OnPush,template:`@if (!hasEntryPoint()) {\r
|
|
9447
9799
|
<p class="fb-callout fb-callout--error">\r
|
|
9448
9800
|
Lo Start non punta a nessun elemento: il flow non ha un punto di ingresso e non e\u2019 eseguibile\r
|
|
9449
9801
|
(START_NO_ENTRY_POINT).\r
|
|
@@ -9658,7 +10010,7 @@
|
|
|
9658
10010
|
title="Da dove comincia"\r
|
|
9659
10011
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
9660
10012
|
/>\r
|
|
9661
|
-
`}]}]});function
|
|
10013
|
+
`}]}]});function qt(o){const e=o.dataType??"Sconosciuto",n=o.isCollection?`${e}[]`:e;return{name:o.name??"",description:o.objectType?`${n} \xB7 ${o.objectType}`:n}}class Ge extends z{api=b(B);elementType="Subflow";subflow=s(()=>this.node(),...ngDevMode?[{debugName:"subflow"}]:[]);flowCandidates=u([],...ngDevMode?[{debugName:"flowCandidates"}]:[]);targetVariables=u([],...ngDevMode?[{debugName:"targetVariables"}]:[]);targetLoadFailed=u(!1,...ngDevMode?[{debugName:"targetLoadFailed"}]:[]);constructor(){super(),w(()=>{const e=this.store.document().fullName;this.api.listSubflowCandidates(e).then(n=>this.flowCandidates.set(n??[])).catch(()=>this.flowCandidates.set([]))}),w(()=>{const e=this.subflow().flowName;if(!e){this.targetVariables.set([]),this.targetLoadFailed.set(!1);return}this.targetLoadFailed.set(!1),this.api.loadFlow(e).then(n=>this.targetVariables.set(n.variables??[])).catch(()=>{this.targetVariables.set([]),this.targetLoadFailed.set(!0)})})}candidates=s(()=>this.flowCandidates().map(e=>({name:e.flowName,label:e.label,description:e.description})),...ngDevMode?[{debugName:"candidates"}]:[]);hasCandidates=s(()=>this.flowCandidates().length>0,...ngDevMode?[{debugName:"hasCandidates"}]:[]);couldNotLoadTarget=s(()=>this.targetLoadFailed(),...ngDevMode?[{debugName:"couldNotLoadTarget"}]:[]);inputVariables=s(()=>this.targetVariables().filter(e=>e.isInput),...ngDevMode?[{debugName:"inputVariables"}]:[]);outputVariables=s(()=>this.targetVariables().filter(e=>e.isOutput),...ngDevMode?[{debugName:"outputVariables"}]:[]);inputOptions=s(()=>this.inputVariables().map(qt).filter(e=>!!e.name),...ngDevMode?[{debugName:"inputOptions"}]:[]);outputOptions=s(()=>this.outputVariables().map(qt).filter(e=>!!e.name),...ngDevMode?[{debugName:"outputOptions"}]:[]);inputAssignments=s(()=>this.subflow().inputAssignments??[],...ngDevMode?[{debugName:"inputAssignments"}]:[]);outputAssignments=s(()=>this.subflow().outputAssignments??[],...ngDevMode?[{debugName:"outputAssignments"}]:[]);isRecursive=s(()=>{const e=this.subflow().flowName;return!!e&&e===this.store.document().fullName},...ngDevMode?[{debugName:"isRecursive"}]:[]);storeOutputAutomatically=s(()=>this.subflow().storeOutputAutomatically===!0,...ngDevMode?[{debugName:"storeOutputAutomatically"}]:[]);variableOf(e){return this.targetVariables().find(n=>n.name===e)}setFlowName(e){this.patch(n=>{const r=n;r.flowName!==e&&(r.flowName=e||void 0,delete r.inputAssignments,delete r.outputAssignments)})}setStoreOutputAutomatically(e){this.patch(n=>{const r=n;e?(r.storeOutputAutomatically=!0,delete r.outputAssignments):delete r.storeOutputAutomatically})}addInput(e){this.patch(n=>{const r=n;r.inputAssignments??=[],r.inputAssignments.push({name:e??""})})}removeInput(e){this.patch(n=>{const r=n;r.inputAssignments?.splice(e,1),r.inputAssignments?.length===0&&delete r.inputAssignments})}setInputName(e,n){this.patch(r=>{const t=r.inputAssignments?.[e];t&&(t.name=n)})}setInputValue(e,n){this.patch(r=>{const t=r.inputAssignments?.[e];t&&(t.value=n)})}addOutput(e){this.patch(n=>{const r=n;r.outputAssignments??=[],r.outputAssignments.push({name:e??""})})}removeOutput(e){this.patch(n=>{const r=n;r.outputAssignments?.splice(e,1),r.outputAssignments?.length===0&&delete r.outputAssignments})}setOutputName(e,n){this.patch(r=>{const t=r.outputAssignments?.[e];t&&(t.name=n)})}setOutputTarget(e,n){this.patch(r=>{const t=r.outputAssignments?.[e];t&&(t.assignToReference=n)})}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Ge,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:Ge,isStandalone:!0,selector:"fb-subflow-inspector",usesInheritance:!0,ngImport:a,template:`<div class="fb-field">\r
|
|
9662
10014
|
<label class="fb-field__label fb-field__label--required">Flow da invocare</label>\r
|
|
9663
10015
|
<fb-name-picker\r
|
|
9664
10016
|
[value]="subflow().flowName"\r
|
|
@@ -9798,7 +10150,7 @@
|
|
|
9798
10150
|
[outlets]="outlets()"\r
|
|
9799
10151
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
9800
10152
|
/>\r
|
|
9801
|
-
`,dependencies:[{kind:"component",type:
|
|
10153
|
+
`,dependencies:[{kind:"component",type:C,selector:"fb-connector-editor",inputs:["nodeName","node","outlets","title"],outputs:["connectorChanged"]},{kind:"component",type:F,selector:"fb-name-picker",inputs:["value","options","label","placeholder","disabled","unknownMessage","unknownSeverity","unusableOptions","unusableMessage","emptyMessage","isMono","commitOn"],outputs:["valueChange"]},{kind:"component",type:$,selector:"fb-reference-picker",inputs:["value","label","placeholder","disabled","dataType","isCollection","objectType","writableOnly","elementsOnly","extraReferences"],outputs:["valueChange"]},{kind:"component",type:S,selector:"fb-value-editor",inputs:["value","label","dataType","objectType","isCollection","valueSet","disabled","allowFormula"],outputs:["valueChange"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Ge,decorators:[{type:y,args:[{selector:"fb-subflow-inspector",standalone:!0,imports:[C,F,$,S],changeDetection:_.OnPush,template:`<div class="fb-field">\r
|
|
9802
10154
|
<label class="fb-field__label fb-field__label--required">Flow da invocare</label>\r
|
|
9803
10155
|
<fb-name-picker\r
|
|
9804
10156
|
[value]="subflow().flowName"\r
|
|
@@ -9938,7 +10290,7 @@
|
|
|
9938
10290
|
[outlets]="outlets()"\r
|
|
9939
10291
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
9940
10292
|
/>\r
|
|
9941
|
-
`}]}],ctorParameters:()=>[]});const
|
|
10293
|
+
`}]}],ctorParameters:()=>[]});const ln="aggregationValues",cn="aggregationField";class We extends z{catalog=b(M);elementType="Transform";transform=s(()=>this.node(),...ngDevMode?[{debugName:"transform"}]:[]);transformTypes=s(()=>this.dictionaries.transformTypes(),...ngDevMode?[{debugName:"transformTypes"}]:[]);dataTypes=s(()=>this.dictionaries.dataTypes(),...ngDevMode?[{debugName:"dataTypes"}]:[]);enumTypes=u([],...ngDevMode?[{debugName:"enumTypes"}]:[]);members=u([],...ngDevMode?[{debugName:"members"}]:[]);constructor(){super(),this.catalog.listEnumTypes().then(e=>this.enumTypes.set(e??[])),w(()=>{const e=this.isStructureTarget()?this.transform().objectType:void 0;if(!e){K(this.members).length&&this.members.set([]);return}this.catalog.listStructureMembers(e).then(n=>this.members.set(n??[])).catch(()=>this.members.set([]))})}memberOf(e){const n=e.outputFieldApiName;return n?this.members().find(r=>r.name===n):void 0}mapDataType(e){return this.isStructureTarget()?this.memberOf(e)?.dataType??void 0:this.transform().dataType??void 0}mapObjectType(e){return this.isStructureTarget()?this.memberOf(e)?.objectType??void 0:this.transform().objectType??void 0}enumOptions=s(()=>this.enumTypes(),...ngDevMode?[{debugName:"enumOptions"}]:[]);requiresObjectType=s(()=>this.dictionaries.requiresObjectType(this.transform().dataType),...ngDevMode?[{debugName:"requiresObjectType"}]:[]);isStructureTarget=s(()=>this.dictionaries.isStructure(this.transform().dataType),...ngDevMode?[{debugName:"isStructureTarget"}]:[]);missingObjectType=s(()=>this.isStructureTarget()&&!this.transform().objectType,...ngDevMode?[{debugName:"missingObjectType"}]:[]);actions=s(()=>this.transform().transformValues?.[0]?.transformValueActions??[],...ngDevMode?[{debugName:"actions"}]:[]);setDataType(e){this.patch(n=>{const r=n;r.dataType=e||void 0,this.dictionaries.requiresObjectType(e)||delete r.objectType})}setObjectType(e){this.setField("objectType",e)}setIsCollection(e){this.patch(n=>{const r=n;e?r.isCollection=!0:delete r.isCollection})}addAction(){this.patch(e=>{const n=e;n.transformValues??=[{}];const r=n.transformValues[0];r.transformValueActions??=[],r.transformValueActions.push({transformType:"Map"})})}removeAction(e){this.patch(n=>{const r=n,t=r.transformValues?.[0]?.transformValueActions;t?.splice(e,1),t?.length===0&&delete r.transformValues})}mutateAction(e,n){this.patch(r=>{const t=r.transformValues?.[0]?.transformValueActions?.[e];t&&n(t)})}setActionType(e,n){this.mutateAction(e,r=>{r.transformType=n,n==="Map"?delete r.inputParameters:(delete r.value,r.inputParameters??=[{name:ln}],n==="Sum"&&!r.inputParameters.some(t=>t.name===cn)&&r.inputParameters.push({name:cn}),n==="Count"&&(r.inputParameters=r.inputParameters.filter(t=>t.name===ln)))})}setOutputField(e,n){this.mutateAction(e,r=>{r.outputFieldApiName=n||void 0})}setMapValue(e,n){this.mutateAction(e,r=>{r.value=n})}aggregationCollection(e){return e.inputParameters?.find(n=>n.name===ln)?.value?.elementReference}aggregationField(e){return e.inputParameters?.find(n=>n.name===cn)?.value?.stringValue??""}setAggregationCollection(e,n){this.mutateAction(e,r=>{r.inputParameters??=[];const t=r.inputParameters.find(i=>i.name===ln);t?t.value=n?{elementReference:n}:void 0:r.inputParameters.push({name:ln,value:n?{elementReference:n}:void 0})})}setAggregationField(e,n){this.mutateAction(e,r=>{r.inputParameters??=[];const t=r.inputParameters.find(i=>i.name===cn);t?t.value=n?{stringValue:n}:void 0:r.inputParameters.push({name:cn,value:n?{stringValue:n}:void 0})})}isMap(e){return(e.transformType??"Map")==="Map"}needsAggregationField(e){return e.transformType==="Sum"}needsAggregationValues(e){return e.transformType==="Sum"||e.transformType==="Count"}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:We,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:We,isStandalone:!0,selector:"fb-transform-inspector",usesInheritance:!0,ngImport:a,template:`<div class="fb-field">\r
|
|
9942
10294
|
<label class="fb-field__label fb-field__label--required">Tipo del risultato</label>\r
|
|
9943
10295
|
<select class="fb-select" [fbValue]="transform().dataType || ''" (change)="setDataType($any($event.target).value)">\r
|
|
9944
10296
|
<option value="">\u2014 scegli \u2014</option>\r
|
|
@@ -10123,7 +10475,7 @@
|
|
|
10123
10475
|
[outlets]="outlets()"\r
|
|
10124
10476
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
10125
10477
|
/>\r
|
|
10126
|
-
`,dependencies:[{kind:"component",type:
|
|
10478
|
+
`,dependencies:[{kind:"component",type:C,selector:"fb-connector-editor",inputs:["nodeName","node","outlets","title"],outputs:["connectorChanged"]},{kind:"component",type:q,selector:"fb-object-picker",inputs:["value","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:$,selector:"fb-reference-picker",inputs:["value","label","placeholder","disabled","dataType","isCollection","objectType","writableOnly","elementsOnly","extraReferences"],outputs:["valueChange"]},{kind:"component",type:he,selector:"fb-structure-member-picker",inputs:["value","className","usage","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:J,selector:"fb-structure-picker",inputs:["value","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:S,selector:"fb-value-editor",inputs:["value","label","dataType","objectType","isCollection","valueSet","disabled","allowFormula"],outputs:["valueChange"]},{kind:"directive",type:k,selector:"select[fbValue]",inputs:["fbValue"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:We,decorators:[{type:y,args:[{selector:"fb-transform-inspector",standalone:!0,imports:[C,q,$,he,J,S,k],changeDetection:_.OnPush,template:`<div class="fb-field">\r
|
|
10127
10479
|
<label class="fb-field__label fb-field__label--required">Tipo del risultato</label>\r
|
|
10128
10480
|
<select class="fb-select" [fbValue]="transform().dataType || ''" (change)="setDataType($any($event.target).value)">\r
|
|
10129
10481
|
<option value="">\u2014 scegli \u2014</option>\r
|
|
@@ -10308,7 +10660,7 @@
|
|
|
10308
10660
|
[outlets]="outlets()"\r
|
|
10309
10661
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
10310
10662
|
/>\r
|
|
10311
|
-
`}]}],ctorParameters:()=>[]});class
|
|
10663
|
+
`}]}],ctorParameters:()=>[]});class He extends z{catalog=b(M);elementType="Wait";wait=s(()=>this.node(),...ngDevMode?[{debugName:"wait"}]:[]);events=s(()=>this.wait().waitEvents??[],...ngDevMode?[{debugName:"events"}]:[]);eventTypes=s(()=>this.dictionaries.waitEventTypes(),...ngDevMode?[{debugName:"eventTypes"}]:[]);catalogEvents=u([],...ngDevMode?[{debugName:"catalogEvents"}]:[]);constructor(){super(),this.catalog.listEvents().then(e=>this.catalogEvents.set(e??[])).catch(()=>this.catalogEvents.set([]))}catalogEventOptions=s(()=>this.catalogEvents(),...ngDevMode?[{debugName:"catalogEventOptions"}]:[]);addEvent(){this.patch(e=>{const n=e;n.waitEvents??=[];const r=n.waitEvents.map(t=>t.name??"");n.waitEvents.push({name:U("Evento",r),label:`Evento ${n.waitEvents.length+1}`,eventType:this.eventTypes()[0]?.value})})}removeEvent(e){this.patch(n=>{const r=n;r.waitEvents?.splice(e,1),r.waitEvents?.length===0&&delete r.waitEvents})}moveEvent(e,n){const r=e+n;r<0||r>=this.events().length||this.patch(t=>{const i=t.waitEvents;if(!i)return;const[l]=i.splice(e,1);i.splice(r,0,l)})}setEventLabel(e,n){this.patch(r=>{const t=r.waitEvents?.[e];t&&(t.label=n||void 0,!t.name&&n&&(t.name=fe(n)))})}setEventName(e,n){this.patch(r=>{const t=r.waitEvents?.[e];t&&(t.name=n)})}setEventType(e,n){this.patch(r=>{const t=r.waitEvents?.[e];t&&(t.eventType=n||void 0)})}onEventConditionsChanged(e,n){this.patch(r=>{const t=r.waitEvents?.[e];t&&n(t)})}onEventParametersChanged(e,n){this.patch(r=>{const t=r.waitEvents?.[e];t&&n(t)})}setDefaultLabel(e){this.setField("defaultConnectorLabel",e)}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:He,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:He,isStandalone:!0,selector:"fb-wait-inspector",usesInheritance:!0,ngImport:a,template:`<div class="fb-list">\r
|
|
10312
10664
|
@for (event of events(); track $index) {\r
|
|
10313
10665
|
<div class="fb-list__item">\r
|
|
10314
10666
|
<div class="fb-list__header">\r
|
|
@@ -10426,7 +10778,7 @@
|
|
|
10426
10778
|
title="Rami"\r
|
|
10427
10779
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
10428
10780
|
/>\r
|
|
10429
|
-
`,dependencies:[{kind:"component",type:
|
|
10781
|
+
`,dependencies:[{kind:"component",type:W,selector:"fb-condition-editor",inputs:["holder","title","allowFormula","allowLogic","issuePath"],outputs:["changed"]},{kind:"component",type:C,selector:"fb-connector-editor",inputs:["nodeName","node","outlets","title"],outputs:["connectorChanged"]},{kind:"component",type:V,selector:"fb-parameter-editor",inputs:["holder","catalogParameters","inputTitle","outputTitle","showInputs","showOutputs","outputsDisabledReason","extraTargets"],outputs:["changed"]},{kind:"directive",type:k,selector:"select[fbValue]",inputs:["fbValue"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:He,decorators:[{type:y,args:[{selector:"fb-wait-inspector",standalone:!0,imports:[W,C,V,k],changeDetection:_.OnPush,template:`<div class="fb-list">\r
|
|
10430
10782
|
@for (event of events(); track $index) {\r
|
|
10431
10783
|
<div class="fb-list__item">\r
|
|
10432
10784
|
<div class="fb-list__header">\r
|
|
@@ -10544,7 +10896,7 @@
|
|
|
10544
10896
|
title="Rami"\r
|
|
10545
10897
|
(connectorChanged)="onConnectorChanged($event)"\r
|
|
10546
10898
|
/>\r
|
|
10547
|
-
`}]}],ctorParameters:()=>[]});class
|
|
10899
|
+
`}]}],ctorParameters:()=>[]});class ee{store=b(T);dictionaries=b(I);validation=b(H);selectedName=d(null,...ngDevMode?[{debugName:"selectedName"}]:[]);showHeader=d(!0,...ngDevMode?[{debugName:"showHeader"}]:[]);initialFieldPath=d(null,...ngDevMode?[{debugName:"initialFieldPath"}]:[]);closed=v();removeRequested=v();duplicateRequested=v();renamed=v();isStart=s(()=>this.selectedName()===R,...ngDevMode?[{debugName:"isStart"}]:[]);reference=s(()=>{const e=this.selectedName();return e&&e!==R?this.store.nodeByName().get(e):void 0},...ngDevMode?[{debugName:"reference"}]:[]);node=s(()=>this.reference()?.node,...ngDevMode?[{debugName:"node"}]:[]);type=s(()=>this.reference()?.type??"",...ngDevMode?[{debugName:"type"}]:[]);typeLabel=s(()=>this.isStart()?"Avvio":this.dictionaries.labelOf(this.type()),...ngDevMode?[{debugName:"typeLabel"}]:[]);isUnsupported=s(()=>{const e=this.type();if(!e)return!1;const n=this.dictionaries.elementType(e);return n?.isSupported===!1?!0:n?.isSupported===void 0&&Vn.has(e)},...ngDevMode?[{debugName:"isUnsupported"}]:[]);issues=s(()=>{const e=this.selectedName();return e?this.validation.issuesByElement().get(this.isStart()?"":e)??[]:[]},...ngDevMode?[{debugName:"issues"}]:[]);issuesExpanded=u(!1,...ngDevMode?[{debugName:"issuesExpanded"}]:[]);static ISSUE_PREVIEW=2;visibleIssues=s(()=>this.issuesExpanded()?this.issues():this.issues().slice(0,ee.ISSUE_PREVIEW),...ngDevMode?[{debugName:"visibleIssues"}]:[]);hiddenIssueCount=s(()=>this.issues().length-this.visibleIssues().length,...ngDevMode?[{debugName:"hiddenIssueCount"}]:[]);toggleIssues(){this.issuesExpanded.update(e=>!e)}pendingName=u(null,...ngDevMode?[{debugName:"pendingName"}]:[]);nameError=s(()=>{const e=this.pendingName();if(e===null)return null;const n=$e(e,this.store.usedNames(),this.selectedName());return n.isValid?null:n.message??"Nome non valido."},...ngDevMode?[{debugName:"nameError"}]:[]);referenceCount=s(()=>{const e=this.selectedName();if(!e||this.isStart())return 0;const n=JSON.stringify(this.store.document()),r=new RegExp(`"(${e})(\\.[A-Za-z0-9_.]+)?"`,"g");return(n.match(r)??[]).length},...ngDevMode?[{debugName:"referenceCount"}]:[]);canRename=s(()=>{const e=this.pendingName();return e!==null&&e!==this.selectedName()&&!this.nameError()},...ngDevMode?[{debugName:"canRename"}]:[]);startRename(){this.pendingName.set(this.selectedName())}onPendingNameInput(e){this.pendingName.set(e)}cancelRename(){this.pendingName.set(null)}applyRename(){const e=this.pendingName(),n=this.selectedName();!e||!n||!this.canRename()||(this.store.renameNode(n,e),this.pendingName.set(null),this.renamed.emit(e))}setLabel(e){const n=this.selectedName();!n||this.isStart()||this.store.updateNode(n,r=>{r.label=e||void 0})}setDescription(e){const n=this.selectedName();!n||this.isStart()||this.store.updateNode(n,r=>{r.description=e||void 0})}suggestNameFromLabel(){const e=this.node();e?.label&&this.pendingName.set(fe(e.label))}requestRemove(){const e=this.selectedName();e&&!this.isStart()&&this.removeRequested.emit(e)}requestDuplicate(){const e=this.selectedName();e&&!this.isStart()&&this.duplicateRequested.emit(e)}close(){this.closed.emit()}position=s(()=>{const e=this.isStart()?this.store.start():this.node();return{x:e?.locationX??0,y:e?.locationY??0}},...ngDevMode?[{debugName:"position"}]:[]);static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ee,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:ee,isStandalone:!0,selector:"fb-element-inspector",inputs:{selectedName:{classPropertyName:"selectedName",publicName:"selectedName",isSignal:!0,isRequired:!1,transformFunction:null},showHeader:{classPropertyName:"showHeader",publicName:"showHeader",isSignal:!0,isRequired:!1,transformFunction:null},initialFieldPath:{classPropertyName:"initialFieldPath",publicName:"initialFieldPath",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{closed:"closed",removeRequested:"removeRequested",duplicateRequested:"duplicateRequested",renamed:"renamed"},ngImport:a,template:`@if (!selectedName()) {\r
|
|
10548
10900
|
<p class="fb-inspector__empty">\r
|
|
10549
10901
|
Seleziona un elemento sul canvas per modificarlo, oppure trascina un elemento dalla palette.\r
|
|
10550
10902
|
</p>\r
|
|
@@ -10567,7 +10919,7 @@
|
|
|
10567
10919
|
@if (issues().length) {\r
|
|
10568
10920
|
<ul class="fb-inspector__issues">\r
|
|
10569
10921
|
<!-- \`$index\`: due rilievi con lo stesso codice e lo stesso path sono possibili. -->\r
|
|
10570
|
-
@for (issue of
|
|
10922
|
+
@for (issue of visibleIssues(); track $index) {\r
|
|
10571
10923
|
<li\r
|
|
10572
10924
|
class="fb-inspector__issue"\r
|
|
10573
10925
|
[class.fb-inspector__issue--error]="issue.severity === 'Error'"\r
|
|
@@ -10581,6 +10933,16 @@
|
|
|
10581
10933
|
</li>\r
|
|
10582
10934
|
}\r
|
|
10583
10935
|
</ul>\r
|
|
10936
|
+
@if (hiddenIssueCount() > 0 || issuesExpanded()) {\r
|
|
10937
|
+
<!-- Sei rilievi in cima riempivano la finestra prima del primo campo: si chiedono. -->\r
|
|
10938
|
+
<button type="button" class="fb-inspector__issues-more" (click)="toggleIssues()">\r
|
|
10939
|
+
@if (issuesExpanded()) {\r
|
|
10940
|
+
Mostra meno\r
|
|
10941
|
+
} @else {\r
|
|
10942
|
+
Altri {{ hiddenIssueCount() }} rilievi su questo elemento\r
|
|
10943
|
+
}\r
|
|
10944
|
+
</button>\r
|
|
10945
|
+
}\r
|
|
10584
10946
|
}\r
|
|
10585
10947
|
\r
|
|
10586
10948
|
@if (isUnsupported()) {\r
|
|
@@ -10664,7 +11026,11 @@
|
|
|
10664
11026
|
<fb-screen-inspector [name]="selectedName()!" [node]="node()!" />\r
|
|
10665
11027
|
}\r
|
|
10666
11028
|
@case ('DynamicScreen') {\r
|
|
10667
|
-
<fb-dynamic-screen-inspector
|
|
11029
|
+
<fb-dynamic-screen-inspector\r
|
|
11030
|
+
[name]="selectedName()!"\r
|
|
11031
|
+
[node]="node()!"\r
|
|
11032
|
+
[initialSelection]="initialFieldPath()"\r
|
|
11033
|
+
/>\r
|
|
10668
11034
|
}\r
|
|
10669
11035
|
@case ('Assignment') {\r
|
|
10670
11036
|
<fb-assignment-inspector [name]="selectedName()!" [node]="node()!" />\r
|
|
@@ -10731,8 +11097,8 @@
|
|
|
10731
11097
|
}\r
|
|
10732
11098
|
</div>\r
|
|
10733
11099
|
}\r
|
|
10734
|
-
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff)}.fb-inspector__empty{margin:16px 12px;font-size:12px;line-height:1.5;color:var(--fb-text-muted, #667085)}.fb-inspector__header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:10px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-inspector__type{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--fb-text-subtle, #98a2b3)}.fb-inspector__title{margin:2px 0 0;font-size:14px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-inspector__body{flex:1;min-height:0;overflow-y:auto;padding:14px}.fb-inspector__issues{margin:0 0 12px;padding:0;list-style:none}.fb-inspector__issue{margin-bottom:4px;padding:6px 8px;border-left:3px solid var(--fb-text-subtle, #98a2b3);border-radius:3px;background:var(--fb-surface-alt, #f8f9fb);font-size:11px;line-height:1.4;color:var(--fb-text, #1d2939)}.fb-inspector__issue--error{border-left-color:var(--fb-error, #c9372c)}.fb-inspector__issue--warning{border-left-color:var(--fb-warning, #b7791f)}.fb-inspector__issue-code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;color:var(--fb-text-subtle, #98a2b3)}.fb-inspector__issue-path{display:block;margin-top:2px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;color:var(--fb-text-muted, #667085)}.fb-inspector__position{margin:0;font-size:10px;color:var(--fb-text-subtle, #98a2b3)}.fb-inspector__divider{margin:12px 0;border:0;border-top:1px solid var(--fb-border-subtle, #e6e9ee)}
|
|
10735
|
-
`],dependencies:[{kind:"component",type:
|
|
11100
|
+
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff)}.fb-inspector__empty{margin:16px 12px;font-size:12px;line-height:1.5;color:var(--fb-text-muted, #667085)}.fb-inspector__header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:10px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-inspector__type{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--fb-text-subtle, #98a2b3)}.fb-inspector__title{margin:2px 0 0;font-size:14px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-inspector__body{flex:1;min-height:0;overflow-y:auto;padding:14px}.fb-inspector__issues{margin:0 0 12px;padding:0;list-style:none}.fb-inspector__issue{margin-bottom:4px;padding:6px 8px;border-left:3px solid var(--fb-text-subtle, #98a2b3);border-radius:3px;background:var(--fb-surface-alt, #f8f9fb);font-size:11px;line-height:1.4;color:var(--fb-text, #1d2939)}.fb-inspector__issue--error{border-left-color:var(--fb-error, #c9372c)}.fb-inspector__issue--warning{border-left-color:var(--fb-warning, #b7791f)}.fb-inspector__issue-code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;color:var(--fb-text-subtle, #98a2b3)}.fb-inspector__issue-path{display:block;margin-top:2px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;color:var(--fb-text-muted, #667085)}.fb-inspector__position{margin:0;font-size:10px;color:var(--fb-text-subtle, #98a2b3)}.fb-inspector__divider{margin:12px 0;border:0;border-top:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-inspector__issues-more{display:block;margin:-4px 0 10px;padding:2px 0;border:0;background:none;color:var(--fb-accent, #4f6ef7);font:inherit;font-size:11px;cursor:pointer}.fb-inspector__issues-more:hover{text-decoration:underline}
|
|
11101
|
+
`],dependencies:[{kind:"component",type:Ie,selector:"fb-action-call-inspector"},{kind:"component",type:Ee,selector:"fb-assignment-inspector"},{kind:"component",type:ze,selector:"fb-collection-processor-inspector"},{kind:"component",type:Ae,selector:"fb-custom-error-inspector"},{kind:"component",type:qe,selector:"fb-decision-inspector"},{kind:"component",type:de,selector:"fb-dynamic-screen-inspector",inputs:["initialSelection"]},{kind:"component",type:Pe,selector:"fb-loop-inspector"},{kind:"component",type:xe,selector:"fb-orchestrated-stage-inspector"},{kind:"component",type:Ve,selector:"fb-record-lookup-inspector"},{kind:"component",type:Le,selector:"fb-record-rollback-inspector"},{kind:"component",type:Be,selector:"fb-record-write-inspector",inputs:["type"]},{kind:"component",type:je,selector:"fb-screen-inspector"},{kind:"component",type:Ue,selector:"fb-script-call-inspector"},{kind:"component",type:ke,selector:"fb-start-inspector"},{kind:"component",type:Ge,selector:"fb-subflow-inspector"},{kind:"component",type:We,selector:"fb-transform-inspector"},{kind:"component",type:He,selector:"fb-wait-inspector"}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ee,decorators:[{type:y,args:[{selector:"fb-element-inspector",standalone:!0,imports:[Ie,Ee,ze,Ae,qe,de,Pe,xe,Ve,Le,Be,je,Ue,ke,Ge,We,He],changeDetection:_.OnPush,template:`@if (!selectedName()) {\r
|
|
10736
11102
|
<p class="fb-inspector__empty">\r
|
|
10737
11103
|
Seleziona un elemento sul canvas per modificarlo, oppure trascina un elemento dalla palette.\r
|
|
10738
11104
|
</p>\r
|
|
@@ -10755,7 +11121,7 @@
|
|
|
10755
11121
|
@if (issues().length) {\r
|
|
10756
11122
|
<ul class="fb-inspector__issues">\r
|
|
10757
11123
|
<!-- \`$index\`: due rilievi con lo stesso codice e lo stesso path sono possibili. -->\r
|
|
10758
|
-
@for (issue of
|
|
11124
|
+
@for (issue of visibleIssues(); track $index) {\r
|
|
10759
11125
|
<li\r
|
|
10760
11126
|
class="fb-inspector__issue"\r
|
|
10761
11127
|
[class.fb-inspector__issue--error]="issue.severity === 'Error'"\r
|
|
@@ -10769,6 +11135,16 @@
|
|
|
10769
11135
|
</li>\r
|
|
10770
11136
|
}\r
|
|
10771
11137
|
</ul>\r
|
|
11138
|
+
@if (hiddenIssueCount() > 0 || issuesExpanded()) {\r
|
|
11139
|
+
<!-- Sei rilievi in cima riempivano la finestra prima del primo campo: si chiedono. -->\r
|
|
11140
|
+
<button type="button" class="fb-inspector__issues-more" (click)="toggleIssues()">\r
|
|
11141
|
+
@if (issuesExpanded()) {\r
|
|
11142
|
+
Mostra meno\r
|
|
11143
|
+
} @else {\r
|
|
11144
|
+
Altri {{ hiddenIssueCount() }} rilievi su questo elemento\r
|
|
11145
|
+
}\r
|
|
11146
|
+
</button>\r
|
|
11147
|
+
}\r
|
|
10772
11148
|
}\r
|
|
10773
11149
|
\r
|
|
10774
11150
|
@if (isUnsupported()) {\r
|
|
@@ -10852,7 +11228,11 @@
|
|
|
10852
11228
|
<fb-screen-inspector [name]="selectedName()!" [node]="node()!" />\r
|
|
10853
11229
|
}\r
|
|
10854
11230
|
@case ('DynamicScreen') {\r
|
|
10855
|
-
<fb-dynamic-screen-inspector
|
|
11231
|
+
<fb-dynamic-screen-inspector\r
|
|
11232
|
+
[name]="selectedName()!"\r
|
|
11233
|
+
[node]="node()!"\r
|
|
11234
|
+
[initialSelection]="initialFieldPath()"\r
|
|
11235
|
+
/>\r
|
|
10856
11236
|
}\r
|
|
10857
11237
|
@case ('Assignment') {\r
|
|
10858
11238
|
<fb-assignment-inspector [name]="selectedName()!" [node]="node()!" />\r
|
|
@@ -10919,8 +11299,8 @@
|
|
|
10919
11299
|
}\r
|
|
10920
11300
|
</div>\r
|
|
10921
11301
|
}\r
|
|
10922
|
-
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff)}.fb-inspector__empty{margin:16px 12px;font-size:12px;line-height:1.5;color:var(--fb-text-muted, #667085)}.fb-inspector__header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:10px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-inspector__type{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--fb-text-subtle, #98a2b3)}.fb-inspector__title{margin:2px 0 0;font-size:14px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-inspector__body{flex:1;min-height:0;overflow-y:auto;padding:14px}.fb-inspector__issues{margin:0 0 12px;padding:0;list-style:none}.fb-inspector__issue{margin-bottom:4px;padding:6px 8px;border-left:3px solid var(--fb-text-subtle, #98a2b3);border-radius:3px;background:var(--fb-surface-alt, #f8f9fb);font-size:11px;line-height:1.4;color:var(--fb-text, #1d2939)}.fb-inspector__issue--error{border-left-color:var(--fb-error, #c9372c)}.fb-inspector__issue--warning{border-left-color:var(--fb-warning, #b7791f)}.fb-inspector__issue-code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;color:var(--fb-text-subtle, #98a2b3)}.fb-inspector__issue-path{display:block;margin-top:2px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;color:var(--fb-text-muted, #667085)}.fb-inspector__position{margin:0;font-size:10px;color:var(--fb-text-subtle, #98a2b3)}.fb-inspector__divider{margin:12px 0;border:0;border-top:1px solid var(--fb-border-subtle, #e6e9ee)}
|
|
10923
|
-
`]}]}],propDecorators:{selectedName:[{type:a.Input,args:[{isSignal:!0,alias:"selectedName",required:!1}]}],showHeader:[{type:a.Input,args:[{isSignal:!0,alias:"showHeader",required:!1}]}],closed:[{type:a.Output,args:["closed"]}],removeRequested:[{type:a.Output,args:["removeRequested"]}],duplicateRequested:[{type:a.Output,args:["duplicateRequested"]}],renamed:[{type:a.Output,args:["renamed"]}]}});class
|
|
11302
|
+
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff)}.fb-inspector__empty{margin:16px 12px;font-size:12px;line-height:1.5;color:var(--fb-text-muted, #667085)}.fb-inspector__header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:10px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-inspector__type{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--fb-text-subtle, #98a2b3)}.fb-inspector__title{margin:2px 0 0;font-size:14px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-inspector__body{flex:1;min-height:0;overflow-y:auto;padding:14px}.fb-inspector__issues{margin:0 0 12px;padding:0;list-style:none}.fb-inspector__issue{margin-bottom:4px;padding:6px 8px;border-left:3px solid var(--fb-text-subtle, #98a2b3);border-radius:3px;background:var(--fb-surface-alt, #f8f9fb);font-size:11px;line-height:1.4;color:var(--fb-text, #1d2939)}.fb-inspector__issue--error{border-left-color:var(--fb-error, #c9372c)}.fb-inspector__issue--warning{border-left-color:var(--fb-warning, #b7791f)}.fb-inspector__issue-code{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;color:var(--fb-text-subtle, #98a2b3)}.fb-inspector__issue-path{display:block;margin-top:2px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;color:var(--fb-text-muted, #667085)}.fb-inspector__position{margin:0;font-size:10px;color:var(--fb-text-subtle, #98a2b3)}.fb-inspector__divider{margin:12px 0;border:0;border-top:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-inspector__issues-more{display:block;margin:-4px 0 10px;padding:2px 0;border:0;background:none;color:var(--fb-accent, #4f6ef7);font:inherit;font-size:11px;cursor:pointer}.fb-inspector__issues-more:hover{text-decoration:underline}
|
|
11303
|
+
`]}]}],propDecorators:{selectedName:[{type:a.Input,args:[{isSignal:!0,alias:"selectedName",required:!1}]}],showHeader:[{type:a.Input,args:[{isSignal:!0,alias:"showHeader",required:!1}]}],initialFieldPath:[{type:a.Input,args:[{isSignal:!0,alias:"initialFieldPath",required:!1}]}],closed:[{type:a.Output,args:["closed"]}],removeRequested:[{type:a.Output,args:["removeRequested"]}],duplicateRequested:[{type:a.Output,args:["duplicateRequested"]}],renamed:[{type:a.Output,args:["renamed"]}]}});function Pt(o,e,n){return Math.max(e,Math.min(n,o))}class ue{store=b(T);dictionaries=b(I);selectedName=d(null,...ngDevMode?[{debugName:"selectedName"}]:[]);initialFieldPath=d(null,...ngDevMode?[{debugName:"initialFieldPath"}]:[]);closed=v();removeRequested=v();duplicateRequested=v();renamed=v();panel=ne("panel",...ngDevMode?[{debugName:"panel"}]:[]);isStart=s(()=>this.selectedName()===R,...ngDevMode?[{debugName:"isStart"}]:[]);reference=s(()=>{const e=this.selectedName();return e&&!this.isStart()?this.store.nodeByName().get(e):void 0},...ngDevMode?[{debugName:"reference"}]:[]);typeLabel=s(()=>this.isStart()?"Avvio del flow":this.dictionaries.labelOf(this.reference()?.type??""),...ngDevMode?[{debugName:"typeLabel"}]:[]);title=s(()=>this.isStart()?"Avvio del flow":this.reference()?.node?.label||this.selectedName()||"",...ngDevMode?[{debugName:"title"}]:[]);constructor(){w(()=>{const e=this.selectedName(),n=this.panel()?.nativeElement;e&&n&&n.focus({preventScroll:!0})})}constrainPosition=(e,n,r,t)=>{const i=this.builderBounds(),l=e.x-t.x-window.scrollX,c=e.y-t.y-window.scrollY;if(!i)return{x:l,y:c};const p=Math.min(180,r.width),g=Math.min(ue.HEAD_HEIGHT,r.height);return{x:Pt(l,i.left+p-r.width,i.right-p),y:Pt(c,i.top,i.bottom-g)}};static HEAD_HEIGHT=48;builderBounds(){return this.panel()?.nativeElement.closest(".fb-builder")?.getBoundingClientRect()??null}close(){this.closed.emit()}onRemoveRequested(e){this.removeRequested.emit(e)}onDuplicateRequested(e){this.duplicateRequested.emit(e)}onRenamed(e){this.renamed.emit(e)}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ue,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.2.0",version:"20.3.28",type:ue,isStandalone:!0,selector:"fb-element-dialog",inputs:{selectedName:{classPropertyName:"selectedName",publicName:"selectedName",isSignal:!0,isRequired:!1,transformFunction:null},initialFieldPath:{classPropertyName:"initialFieldPath",publicName:"initialFieldPath",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{closed:"closed",removeRequested:"removeRequested",duplicateRequested:"duplicateRequested",renamed:"renamed"},viewQueries:[{propertyName:"panel",first:!0,predicate:["panel"],descendants:!0,isSignal:!0}],ngImport:a,template:`<!--\r
|
|
10924
11304
|
Il backdrop chiude: e' il gesto che tutti si aspettano. Il pannello ferma la propagazione\r
|
|
10925
11305
|
del click, altrimenti configurare un campo chiuderebbe la dialog.\r
|
|
10926
11306
|
-->\r
|
|
@@ -10929,6 +11309,8 @@
|
|
|
10929
11309
|
<div\r
|
|
10930
11310
|
#panel\r
|
|
10931
11311
|
class="fb-dialog__panel"\r
|
|
11312
|
+
cdkDrag\r
|
|
11313
|
+
[cdkDragConstrainPosition]="constrainPosition"\r
|
|
10932
11314
|
role="dialog"\r
|
|
10933
11315
|
aria-modal="true"\r
|
|
10934
11316
|
[attr.aria-label]="typeLabel() + ': ' + title()"\r
|
|
@@ -10936,7 +11318,9 @@
|
|
|
10936
11318
|
(click)="$event.stopPropagation()"\r
|
|
10937
11319
|
(keydown.escape)="close()"\r
|
|
10938
11320
|
>\r
|
|
10939
|
-
|
|
11321
|
+
<!-- L\u2019intestazione e\u2019 la maniglia: dentro il corpo c\u2019e\u2019 un altro cdkDrag (i campi dello\r
|
|
11322
|
+
screen dinamico), e senza maniglia quel gesto trascinerebbe la finestra. -->\r
|
|
11323
|
+
<header class="fb-dialog__head" cdkDragHandle>\r
|
|
10940
11324
|
<div class="fb-dialog__identity">\r
|
|
10941
11325
|
<span class="fb-dialog__type">{{ typeLabel() }}</span>\r
|
|
10942
11326
|
<h2 class="fb-dialog__title">{{ title() }}</h2>\r
|
|
@@ -10948,6 +11332,7 @@
|
|
|
10948
11332
|
<!-- L'intestazione dell'inspector qui e' quella della dialog: non si ripete. -->\r
|
|
10949
11333
|
<fb-element-inspector\r
|
|
10950
11334
|
[selectedName]="selectedName()"\r
|
|
11335
|
+
[initialFieldPath]="initialFieldPath()"\r
|
|
10951
11336
|
[showHeader]="false"\r
|
|
10952
11337
|
(removeRequested)="onRemoveRequested($event)"\r
|
|
10953
11338
|
(duplicateRequested)="onDuplicateRequested($event)"\r
|
|
@@ -10963,8 +11348,8 @@
|
|
|
10963
11348
|
<button type="button" class="fb-btn fb-btn--primary" (click)="close()">Fatto</button>\r
|
|
10964
11349
|
</footer>\r
|
|
10965
11350
|
</div>\r
|
|
10966
|
-
`,styles:[`:host{position:absolute;inset:0;z-index:30;display:grid;place-items:center;padding:24px}.fb-dialog__backdrop{position:absolute;inset:0;background:#10182852;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.fb-dialog__panel{position:relative;display:flex;flex-direction:column;width:min(var(--fb-dialog-width, 1400px),100%);height:min(var(--fb-dialog-height, 860px),100%);border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-lg, 12px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-lg, 0 18px 44px rgb(16 24 40 / 18%));outline:none;overflow:hidden}.fb-dialog__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid var(--fb-border-subtle, #eef0f4)}.fb-dialog__identity{min-width:0}.fb-dialog__type{display:block;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--fb-text-subtle, #98a2b3)}.fb-dialog__title{margin:1px 0 0;font-size:15px;font-weight:600;color:var(--fb-text, #1a1c23);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-dialog__body{flex:1;min-height:0;overflow-y:auto;scrollbar-gutter:stable;overscroll-behavior:contain}.fb-dialog__foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-top:1px solid var(--fb-border-subtle, #eef0f4);background:var(--fb-surface-alt, #f7f8fa)}.fb-dialog__note{font-size:11px;color:var(--fb-text-muted, #6b7086)}@media(max-height:620px){:host{padding:10px}}
|
|
10967
|
-
`],dependencies:[{kind:"component",type:
|
|
11351
|
+
`,styles:[`:host{position:absolute;inset:0;z-index:30;display:grid;place-items:center;padding:24px}.fb-dialog__backdrop{position:absolute;inset:0;background:#10182852;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.fb-dialog__panel{position:relative;display:flex;flex-direction:column;width:min(var(--fb-dialog-width, 1400px),100%);height:min(var(--fb-dialog-height, 860px),100%);border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-lg, 12px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-lg, 0 18px 44px rgb(16 24 40 / 18%));outline:none;overflow:hidden}.fb-dialog__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid var(--fb-border-subtle, #eef0f4);cursor:move;-webkit-user-select:none;user-select:none}.fb-dialog__head .fb-btn{cursor:pointer}.fb-dialog__panel.cdk-drag-dragging{box-shadow:var(--fb-shadow-xl, 0 26px 60px rgb(16 24 40 / 28%))}.fb-dialog__identity{min-width:0}.fb-dialog__type{display:block;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--fb-text-subtle, #98a2b3)}.fb-dialog__title{margin:1px 0 0;font-size:15px;font-weight:600;color:var(--fb-text, #1a1c23);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-dialog__body{flex:1;min-height:0;overflow-y:auto;scrollbar-gutter:stable;overscroll-behavior:contain}.fb-dialog__foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-top:1px solid var(--fb-border-subtle, #eef0f4);background:var(--fb-surface-alt, #f7f8fa)}.fb-dialog__note{font-size:11px;color:var(--fb-text-muted, #6b7086)}@media(max-height:620px){:host{padding:10px}}
|
|
11352
|
+
`],dependencies:[{kind:"directive",type:pn,selector:"[cdkDrag]",inputs:["cdkDragData","cdkDragLockAxis","cdkDragRootElement","cdkDragBoundary","cdkDragStartDelay","cdkDragFreeDragPosition","cdkDragDisabled","cdkDragConstrainPosition","cdkDragPreviewClass","cdkDragPreviewContainer","cdkDragScale"],outputs:["cdkDragStarted","cdkDragReleased","cdkDragEnded","cdkDragEntered","cdkDragExited","cdkDragDropped","cdkDragMoved"],exportAs:["cdkDrag"]},{kind:"directive",type:fn,selector:"[cdkDragHandle]",inputs:["cdkDragHandleDisabled"]},{kind:"component",type:ee,selector:"fb-element-inspector",inputs:["selectedName","showHeader","initialFieldPath"],outputs:["closed","removeRequested","duplicateRequested","renamed"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ue,decorators:[{type:y,args:[{selector:"fb-element-dialog",standalone:!0,imports:[pn,fn,ee],changeDetection:_.OnPush,template:`<!--\r
|
|
10968
11353
|
Il backdrop chiude: e' il gesto che tutti si aspettano. Il pannello ferma la propagazione\r
|
|
10969
11354
|
del click, altrimenti configurare un campo chiuderebbe la dialog.\r
|
|
10970
11355
|
-->\r
|
|
@@ -10973,6 +11358,8 @@
|
|
|
10973
11358
|
<div\r
|
|
10974
11359
|
#panel\r
|
|
10975
11360
|
class="fb-dialog__panel"\r
|
|
11361
|
+
cdkDrag\r
|
|
11362
|
+
[cdkDragConstrainPosition]="constrainPosition"\r
|
|
10976
11363
|
role="dialog"\r
|
|
10977
11364
|
aria-modal="true"\r
|
|
10978
11365
|
[attr.aria-label]="typeLabel() + ': ' + title()"\r
|
|
@@ -10980,7 +11367,9 @@
|
|
|
10980
11367
|
(click)="$event.stopPropagation()"\r
|
|
10981
11368
|
(keydown.escape)="close()"\r
|
|
10982
11369
|
>\r
|
|
10983
|
-
|
|
11370
|
+
<!-- L\u2019intestazione e\u2019 la maniglia: dentro il corpo c\u2019e\u2019 un altro cdkDrag (i campi dello\r
|
|
11371
|
+
screen dinamico), e senza maniglia quel gesto trascinerebbe la finestra. -->\r
|
|
11372
|
+
<header class="fb-dialog__head" cdkDragHandle>\r
|
|
10984
11373
|
<div class="fb-dialog__identity">\r
|
|
10985
11374
|
<span class="fb-dialog__type">{{ typeLabel() }}</span>\r
|
|
10986
11375
|
<h2 class="fb-dialog__title">{{ title() }}</h2>\r
|
|
@@ -10992,6 +11381,7 @@
|
|
|
10992
11381
|
<!-- L'intestazione dell'inspector qui e' quella della dialog: non si ripete. -->\r
|
|
10993
11382
|
<fb-element-inspector\r
|
|
10994
11383
|
[selectedName]="selectedName()"\r
|
|
11384
|
+
[initialFieldPath]="initialFieldPath()"\r
|
|
10995
11385
|
[showHeader]="false"\r
|
|
10996
11386
|
(removeRequested)="onRemoveRequested($event)"\r
|
|
10997
11387
|
(duplicateRequested)="onDuplicateRequested($event)"\r
|
|
@@ -11007,8 +11397,8 @@
|
|
|
11007
11397
|
<button type="button" class="fb-btn fb-btn--primary" (click)="close()">Fatto</button>\r
|
|
11008
11398
|
</footer>\r
|
|
11009
11399
|
</div>\r
|
|
11010
|
-
`,styles:[`:host{position:absolute;inset:0;z-index:30;display:grid;place-items:center;padding:24px}.fb-dialog__backdrop{position:absolute;inset:0;background:#10182852;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.fb-dialog__panel{position:relative;display:flex;flex-direction:column;width:min(var(--fb-dialog-width, 1400px),100%);height:min(var(--fb-dialog-height, 860px),100%);border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-lg, 12px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-lg, 0 18px 44px rgb(16 24 40 / 18%));outline:none;overflow:hidden}.fb-dialog__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid var(--fb-border-subtle, #eef0f4)}.fb-dialog__identity{min-width:0}.fb-dialog__type{display:block;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--fb-text-subtle, #98a2b3)}.fb-dialog__title{margin:1px 0 0;font-size:15px;font-weight:600;color:var(--fb-text, #1a1c23);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-dialog__body{flex:1;min-height:0;overflow-y:auto;scrollbar-gutter:stable;overscroll-behavior:contain}.fb-dialog__foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-top:1px solid var(--fb-border-subtle, #eef0f4);background:var(--fb-surface-alt, #f7f8fa)}.fb-dialog__note{font-size:11px;color:var(--fb-text-muted, #6b7086)}@media(max-height:620px){:host{padding:10px}}
|
|
11011
|
-
`]}]}],ctorParameters:()=>[],propDecorators:{selectedName:[{type:a.Input,args:[{isSignal:!0,alias:"selectedName",required:!1}]}],closed:[{type:a.Output,args:["closed"]}],removeRequested:[{type:a.Output,args:["removeRequested"]}],duplicateRequested:[{type:a.Output,args:["duplicateRequested"]}],renamed:[{type:a.Output,args:["renamed"]}],panel:[{type:a.ViewChild,args:["panel",{isSignal:!0}]}]}});const
|
|
11400
|
+
`,styles:[`:host{position:absolute;inset:0;z-index:30;display:grid;place-items:center;padding:24px}.fb-dialog__backdrop{position:absolute;inset:0;background:#10182852;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.fb-dialog__panel{position:relative;display:flex;flex-direction:column;width:min(var(--fb-dialog-width, 1400px),100%);height:min(var(--fb-dialog-height, 860px),100%);border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-lg, 12px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-lg, 0 18px 44px rgb(16 24 40 / 18%));outline:none;overflow:hidden}.fb-dialog__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid var(--fb-border-subtle, #eef0f4);cursor:move;-webkit-user-select:none;user-select:none}.fb-dialog__head .fb-btn{cursor:pointer}.fb-dialog__panel.cdk-drag-dragging{box-shadow:var(--fb-shadow-xl, 0 26px 60px rgb(16 24 40 / 28%))}.fb-dialog__identity{min-width:0}.fb-dialog__type{display:block;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--fb-text-subtle, #98a2b3)}.fb-dialog__title{margin:1px 0 0;font-size:15px;font-weight:600;color:var(--fb-text, #1a1c23);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-dialog__body{flex:1;min-height:0;overflow-y:auto;scrollbar-gutter:stable;overscroll-behavior:contain}.fb-dialog__foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-top:1px solid var(--fb-border-subtle, #eef0f4);background:var(--fb-surface-alt, #f7f8fa)}.fb-dialog__note{font-size:11px;color:var(--fb-text-muted, #6b7086)}@media(max-height:620px){:host{padding:10px}}
|
|
11401
|
+
`]}]}],ctorParameters:()=>[],propDecorators:{selectedName:[{type:a.Input,args:[{isSignal:!0,alias:"selectedName",required:!1}]}],initialFieldPath:[{type:a.Input,args:[{isSignal:!0,alias:"initialFieldPath",required:!1}]}],closed:[{type:a.Output,args:["closed"]}],removeRequested:[{type:a.Output,args:["removeRequested"]}],duplicateRequested:[{type:a.Output,args:["duplicateRequested"]}],renamed:[{type:a.Output,args:["renamed"]}],panel:[{type:a.ViewChild,args:["panel",{isSignal:!0}]}]}});const Sa={variables:"variabile",constants:"costante",formulas:"formula",textTemplates:"text template",choices:"choice",dynamicChoiceSets:"dynamic choice set",stages:"stage"};class we{payload=d.required(...ngDevMode?[{debugName:"payload"}]:[]);plan=d.required(...ngDevMode?[{debugName:"plan"}]:[]);confirmed=v();cancelled=v();createMissingResources=u(!0,...ngDevMode?[{debugName:"createMissingResources"}]:[]);elementLabel=s(()=>{const e=this.plan().nodeCount;return`${e} ${e===1?"elemento":"elementi"}`},...ngDevMode?[{debugName:"elementLabel"}]:[]);newResources=s(()=>this.plan().resources.filter(e=>e.status==="new"),...ngDevMode?[{debugName:"newResources"}]:[]);reusedResources=s(()=>this.plan().resources.filter(e=>e.status==="reused"),...ngDevMode?[{debugName:"reusedResources"}]:[]);nodeRenames=s(()=>this.plan().renames.filter(e=>e.kind==="node"),...ngDevMode?[{debugName:"nodeRenames"}]:[]);innerRenames=s(()=>this.plan().renames.filter(e=>e.kind==="inner"),...ngDevMode?[{debugName:"innerRenames"}]:[]);resourceLabel(e){return Sa[e]??e}setCreateMissingResources(e){this.createMissingResources.set(e)}confirm(){this.confirmed.emit({createMissingResources:this.createMissingResources()})}cancel(){this.cancelled.emit()}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:we,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:we,isStandalone:!0,selector:"fb-paste-dialog",inputs:{payload:{classPropertyName:"payload",publicName:"payload",isSignal:!0,isRequired:!0,transformFunction:null},plan:{classPropertyName:"plan",publicName:"plan",isSignal:!0,isRequired:!0,transformFunction:null}},outputs:{confirmed:"confirmed",cancelled:"cancelled"},ngImport:a,template:`<div class="fb-dialog__backdrop" (click)="cancel()"></div>\r
|
|
11012
11402
|
\r
|
|
11013
11403
|
<div\r
|
|
11014
11404
|
class="fb-dialog__panel fb-paste"\r
|
|
@@ -11133,7 +11523,7 @@
|
|
|
11133
11523
|
</footer>\r
|
|
11134
11524
|
</div>\r
|
|
11135
11525
|
`,styles:[`:host{position:absolute;inset:0;z-index:40;display:grid;place-items:center;padding:24px}.fb-dialog__backdrop{position:absolute;inset:0;background:#10182852;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.fb-dialog__panel{position:relative;display:flex;flex-direction:column;width:min(560px,100%);max-height:min(720px,100%);border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-lg, 12px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-lg, 0 18px 44px rgb(16 24 40 / 18%));outline:none;overflow:hidden}.fb-dialog__head,.fb-dialog__foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px}.fb-dialog__head{border-bottom:1px solid var(--fb-border-subtle, #eef0f4)}.fb-dialog__foot{border-top:1px solid var(--fb-border-subtle, #eef0f4)}.fb-dialog__type{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #6b7086)}.fb-dialog__title{margin:0;font-size:15px;font-weight:600}.fb-dialog__note{color:var(--fb-text-muted, #6b7086);font-size:12px}.fb-dialog__body{display:flex;flex-direction:column;gap:14px;padding:14px;overflow:auto}.fb-paste__origin{margin:0;color:var(--fb-text-muted, #6b7086);font-size:12px}.fb-paste__elements,.fb-paste__list{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:4px;font-size:13px}.fb-paste__section{display:flex;flex-direction:column;gap:6px;padding-top:12px;border-top:1px solid var(--fb-border-subtle, #eef0f4)}.fb-paste__title{margin:0;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #6b7086)}.fb-paste__tech{color:var(--fb-text-muted, #6b7086);font-size:11px}.fb-paste__warn{margin:0;padding:8px 10px;border-radius:var(--fb-radius-sm, 8px);background:var(--fb-surface-alt, #f7f8fa);color:var(--fb-warning, #b7791f);font-size:12px}.fb-paste__actions{display:flex;gap:8px}
|
|
11136
|
-
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:
|
|
11526
|
+
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:we,decorators:[{type:y,args:[{selector:"fb-paste-dialog",standalone:!0,changeDetection:_.OnPush,template:`<div class="fb-dialog__backdrop" (click)="cancel()"></div>\r
|
|
11137
11527
|
\r
|
|
11138
11528
|
<div\r
|
|
11139
11529
|
class="fb-dialog__panel fb-paste"\r
|
|
@@ -11258,7 +11648,7 @@
|
|
|
11258
11648
|
</footer>\r
|
|
11259
11649
|
</div>\r
|
|
11260
11650
|
`,styles:[`:host{position:absolute;inset:0;z-index:40;display:grid;place-items:center;padding:24px}.fb-dialog__backdrop{position:absolute;inset:0;background:#10182852;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.fb-dialog__panel{position:relative;display:flex;flex-direction:column;width:min(560px,100%);max-height:min(720px,100%);border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-lg, 12px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-lg, 0 18px 44px rgb(16 24 40 / 18%));outline:none;overflow:hidden}.fb-dialog__head,.fb-dialog__foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px}.fb-dialog__head{border-bottom:1px solid var(--fb-border-subtle, #eef0f4)}.fb-dialog__foot{border-top:1px solid var(--fb-border-subtle, #eef0f4)}.fb-dialog__type{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #6b7086)}.fb-dialog__title{margin:0;font-size:15px;font-weight:600}.fb-dialog__note{color:var(--fb-text-muted, #6b7086);font-size:12px}.fb-dialog__body{display:flex;flex-direction:column;gap:14px;padding:14px;overflow:auto}.fb-paste__origin{margin:0;color:var(--fb-text-muted, #6b7086);font-size:12px}.fb-paste__elements,.fb-paste__list{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:4px;font-size:13px}.fb-paste__section{display:flex;flex-direction:column;gap:6px;padding-top:12px;border-top:1px solid var(--fb-border-subtle, #eef0f4)}.fb-paste__title{margin:0;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #6b7086)}.fb-paste__tech{color:var(--fb-text-muted, #6b7086);font-size:11px}.fb-paste__warn{margin:0;padding:8px 10px;border-radius:var(--fb-radius-sm, 8px);background:var(--fb-surface-alt, #f7f8fa);color:var(--fb-warning, #b7791f);font-size:12px}.fb-paste__actions{display:flex;gap:8px}
|
|
11261
|
-
`]}]}],propDecorators:{payload:[{type:a.Input,args:[{isSignal:!0,alias:"payload",required:!0}]}],plan:[{type:a.Input,args:[{isSignal:!0,alias:"plan",required:!0}]}],confirmed:[{type:a.Output,args:["confirmed"]}],cancelled:[{type:a.Output,args:["cancelled"]}]}});const
|
|
11651
|
+
`]}]}],propDecorators:{payload:[{type:a.Input,args:[{isSignal:!0,alias:"payload",required:!0}]}],plan:[{type:a.Input,args:[{isSignal:!0,alias:"plan",required:!0}]}],confirmed:[{type:a.Output,args:["confirmed"]}],cancelled:[{type:a.Output,args:["cancelled"]}]}});const Da=new Set(["expression","formulaExpression","filterFormula"]);function Vt(o,e){return o===e||o.startsWith(`${e}.`)}function Oa(o){return o.split(/[^A-Za-z0-9_.$]+/).filter(Boolean).map(e=>e.split(".")[0]).filter(Boolean)}function Ma(o,e){if(!e)return 0;let n=0;const r=t=>{if(Array.isArray(t)){t.forEach(r);return}if(!(!t||typeof t!="object"))for(const[i,l]of Object.entries(t)){if(typeof l=="string"){tn.has(i)?Vt(l,e)&&n++:Da.has(i)&&(n+=Oa(l).filter(c=>c===e).length);continue}if(tn.has(i)&&Array.isArray(l)&&l.every(c=>typeof c=="string")){n+=l.filter(c=>Vt(c,e)).length;continue}r(l)}};return r(o),n}const mr=[{collection:"variables",label:"Variabili",singular:"variabile",isWritable:!0,note:"Le sole risorse scrivibili: solo queste possono essere una destinazione."},{collection:"constants",label:"Costanti",singular:"costante",isWritable:!1,note:"Valore fisso: una costante non puo\u2019 referenziare altre risorse."},{collection:"formulas",label:"Formule",singular:"formula",isWritable:!1,note:"L\u2019espressione va al motore di regole, che la verifica mentre la scrivi."},{collection:"textTemplates",label:"Text template",singular:"text template",isWritable:!1,note:"Testo con segnaposto, es. \xABGentile {!Cliente.Nome},\xBB."},{collection:"choices",label:"Choice",singular:"choice",isWritable:!1,note:"Una singola scelta: testo mostrato piu\u2019 valore."},{collection:"dynamicChoiceSets",label:"Dynamic choice set",singular:"dynamic choice set",isWritable:!1,note:"Scelte generate da una collection, da una query o da un tipo enum. I filtri sono sempre in AND."},{collection:"stages",label:"Stage",singular:"stage",isWritable:!1,note:"Gli stage si fanno avanzare con un Assignment su $Flow.CurrentStage."}];class Ne{store=b(T);dictionaries=b(I);catalog=b(M);closed=v();target=d(null,...ngDevMode?[{debugName:"target"}]:[]);kinds=mr;dataTypes=s(()=>this.dictionaries.dataTypes(),...ngDevMode?[{debugName:"dataTypes"}]:[]);sortOrders=s(()=>this.dictionaries.sortOrders(),...ngDevMode?[{debugName:"sortOrders"}]:[]);enumTypes=u([],...ngDevMode?[{debugName:"enumTypes"}]:[]);activeCollection=u("variables",...ngDevMode?[{debugName:"activeCollection"}]:[]);editingIndex=u(null,...ngDevMode?[{debugName:"editingIndex"}]:[]);pendingRemoval=u(null,...ngDevMode?[{debugName:"pendingRemoval"}]:[]);constructor(){this.catalog.listEnumTypes().then(e=>this.enumTypes.set(e??[])),w(()=>{const e=this.target();e&&(this.activeCollection.set(e.collection),this.editingIndex.set(e.index))})}enumOptions=s(()=>this.enumTypes(),...ngDevMode?[{debugName:"enumOptions"}]:[]);activeKind=s(()=>mr.find(e=>e.collection===this.activeCollection())??mr[0],...ngDevMode?[{debugName:"activeKind"}]:[]);items=s(()=>this.store.resources().filter(e=>e.collection===this.activeCollection()),...ngDevMode?[{debugName:"items"}]:[]);countOf(e){return this.store.resources().filter(n=>n.collection===e).length}select(e){this.activeCollection.set(e),this.editingIndex.set(null)}toggleEdit(e){this.editingIndex.set(this.editingIndex()===e?null:e)}nameError(e){const n=$e(e.name,this.store.usedNames(),e.name);return n.isValid?this.store.usedNames().filter(t=>t.toLowerCase()===e.name.toLowerCase()).length>1?"Questo nome e\u2019 usato anche da un altro elemento o risorsa.":null:n.message??"Nome non valido."}add(){const e=this.activeKind(),n=U(e.singular.replace(/\s+/g,"_"),this.store.usedNames()),r={name:n};if(e.collection!=="textTemplates"&&e.collection!=="stages"&&(r.dataType="String"),e.collection==="stages"){const t=new Set(this.store.resources().filter(l=>l.collection==="stages").map(l=>l.resource.stageOrder));let i=1;for(;t.has(i);)i+=1;r.stageOrder=i,r.isActive=!0,r.label=n}this.store.addResource(e.collection,r),this.editingIndex.set(this.items().length)}usesOf(e){return Ma(this.store.document(),e.name)}keyOf(e){return`${e.collection}:${e.index}`}isPendingRemoval(e){return this.pendingRemoval()===this.keyOf(e)}requestRemove(e){if(this.usesOf(e)>0){this.pendingRemoval.set(this.keyOf(e));return}this.remove(e)}cancelRemove(){this.pendingRemoval.set(null)}remove(e){this.store.removeResource(e.collection,e.index),this.editingIndex.set(null),this.pendingRemoval.set(null)}rename(e,n){this.store.renameResource(e.collection,e.index,n)}setField(e,n,r){this.store.updateResource(e.collection,e.index,t=>{r==null||r===""?delete t[n]:t[n]=r})}setNumberField(e,n,r){const t=Number.parseInt(r,10);this.setField(e,n,Number.isNaN(t)?void 0:t)}setBooleanField(e,n,r){this.store.updateResource(e.collection,e.index,t=>{r?t[n]=!0:delete t[n]})}onFiltersChanged(e,n){this.store.updateResource(e.collection,e.index,r=>{n(r)})}pendingSource=u({},...ngDevMode?[{debugName:"pendingSource"}]:[]);choiceSetSource(e){const n=et(e.resource);return n||(this.pendingSource()[`${e.collection}:${e.index}`]??"object")}setChoiceSetSource(e,n){this.pendingSource.update(r=>({...r,[`${e.collection}:${e.index}`]:n})),this.store.updateResource(e.collection,e.index,r=>{for(const t of nt(n))delete r[t];delete r.displayField,delete r.valueField,delete r.sortField,delete r.filters,n==="enum"&&delete r.objectType})}hidesObjectType(e){return e.collection==="dynamicChoiceSets"&&this.choiceSetSource(e)==="enum"}isChoiceSetSource(e,n){return this.choiceSetSource(e)===n}ambiguousChoiceSetSource(e){return Zn(e.resource).length>1}enumChoiceSetFields=s(()=>{const e=this.dictionaries.enumChoiceSetFields();return e.length?e.map(n=>({value:n.value,label:n.label||n.value,dataType:at(n.value)})):yn.map(n=>({value:n.name,label:n.label,dataType:n.dataType}))},...ngDevMode?[{debugName:"enumChoiceSetFields"}]:[]);unknownEnumChoiceSetField(e,n){return it(this.string(e,n))}unknownEnumType(e){const n=this.string(e,"enumType");return!n||!this.enumOptions().length?!1:!this.enumOptions().some(r=>r.name===n)}defaultDisplayField=rt;defaultValueField=tt;setValue(e,n){this.store.updateResource(e.collection,e.index,r=>{n?r.value=n:delete r.value})}setDataType(e,n){this.store.updateResource(e.collection,e.index,r=>{r.dataType=n,this.dictionaries.requiresObjectType(n)||delete r.objectType,this.dictionaries.supportsScale(n)||delete r.scale,this.dictionaries.isStructure(n)&&delete r.value})}requiresObjectType(e){return this.dictionaries.requiresObjectType(e.resource.dataType)}supportsScale(e){return this.dictionaries.supportsScale(e.resource.dataType)}isEnum(e){return e.resource.dataType==="Enum"}isStructure(e){return this.dictionaries.isStructure(e.resource.dataType)}supportsInitialValue(e){return!this.isStructure(e)}missingObjectType(e){return this.isStructure(e)&&!this.string(e,"objectType")}constantReferencesResource(e){if(e.collection!=="constants")return!1;const n=e.resource.value;return!!n?.elementReference||!!n?.formulaExpression}duplicateStageOrder(e){if(e.collection!=="stages")return!1;const n=e.resource.stageOrder;return n===void 0?!1:this.store.resources().filter(r=>r.collection==="stages"&&r.resource.stageOrder===n).length>1}string(e,n){const r=e.resource[n];return r==null?"":String(r)}boolean(e,n){return e.resource[n]===!0}value(e){return e.resource.value}close(){this.closed.emit()}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Ne,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:Ne,isStandalone:!0,selector:"fb-resource-panel",inputs:{target:{classPropertyName:"target",publicName:"target",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{closed:"closed"},ngImport:a,template:`<header class="fb-res__header">\r
|
|
11262
11652
|
<h2 class="fb-res__title">Risorse</h2>\r
|
|
11263
11653
|
<button type="button" class="fb-btn fb-btn--ghost fb-btn--icon" aria-label="Chiudi" (click)="close()">\xD7</button>\r
|
|
11264
11654
|
</header>\r
|
|
@@ -11297,15 +11687,50 @@
|
|
|
11297
11687
|
</span>\r
|
|
11298
11688
|
</button>\r
|
|
11299
11689
|
<span class="fb-list__spacer"></span>\r
|
|
11690
|
+
<!--\r
|
|
11691
|
+
Il numero di usi sta accanto al nome perche\u2019 e\u2019 cio\u2019 che decide se si puo\u2019 togliere:\r
|
|
11692
|
+
\xABnon usata\xBB e\u2019 un invito a fare pulizia, \xABusata 15 volte\xBB e\u2019 un avvertimento.\r
|
|
11693
|
+
-->\r
|
|
11694
|
+
@let uses = usesOf(item);\r
|
|
11695
|
+
@if (uses === 0) {\r
|
|
11696
|
+
<span class="fb-res__uses fb-res__uses--none" title="Nessun riferimento la usa: si puo\u2019 togliere">\r
|
|
11697
|
+
non usata\r
|
|
11698
|
+
</span>\r
|
|
11699
|
+
} @else {\r
|
|
11700
|
+
<span\r
|
|
11701
|
+
class="fb-res__uses"\r
|
|
11702
|
+
[title]="'Referenziata ' + uses + ' volte nel documento, formule comprese'"\r
|
|
11703
|
+
>\r
|
|
11704
|
+
{{ uses }} usi\r
|
|
11705
|
+
</span>\r
|
|
11706
|
+
}\r
|
|
11300
11707
|
<button\r
|
|
11301
11708
|
type="button"\r
|
|
11302
11709
|
class="fb-btn fb-btn--ghost fb-btn--icon"\r
|
|
11303
11710
|
aria-label="Rimuovi la risorsa"\r
|
|
11304
|
-
|
|
11711
|
+
[title]="uses ? 'Rimuovi: e\u2019 usata ' + uses + ' volte, verra\u2019 chiesta conferma' : 'Rimuovi'"\r
|
|
11712
|
+
(click)="requestRemove(item)"\r
|
|
11305
11713
|
>\r
|
|
11306
11714
|
\xD7\r
|
|
11307
11715
|
</button>\r
|
|
11308
11716
|
</div>\r
|
|
11717
|
+
\r
|
|
11718
|
+
@if (isPendingRemoval(item)) {\r
|
|
11719
|
+
<!--\r
|
|
11720
|
+
La conferma sta qui e non in una finestra: la riga che si sta togliendo resta sotto\r
|
|
11721
|
+
gli occhi, e il numero di riferimenti che si rompono e\u2019 il dato della decisione.\r
|
|
11722
|
+
-->\r
|
|
11723
|
+
<p class="fb-callout fb-callout--warn fb-res__confirm">\r
|
|
11724
|
+
<span>\r
|
|
11725
|
+
\xAB{{ item.name }}\xBB e\u2019 usata {{ usesOf(item) }} volte: togliendola quei riferimenti\r
|
|
11726
|
+
restano orfani e la validazione li segnalera\u2019.\r
|
|
11727
|
+
</span>\r
|
|
11728
|
+
<button type="button" class="fb-btn fb-btn--icon" (click)="remove(item)">Rimuovi comunque</button>\r
|
|
11729
|
+
<button type="button" class="fb-btn fb-btn--ghost fb-btn--icon" (click)="cancelRemove()">\r
|
|
11730
|
+
Annulla\r
|
|
11731
|
+
</button>\r
|
|
11732
|
+
</p>\r
|
|
11733
|
+
}\r
|
|
11309
11734
|
\r
|
|
11310
11735
|
@if (nameError(item)) {\r
|
|
11311
11736
|
<p class="fb-field__error">{{ nameError(item) }}</p>\r
|
|
@@ -11401,6 +11826,21 @@
|
|
|
11401
11826
|
<option [value]="type.value">{{ type.label }}</option>\r
|
|
11402
11827
|
}\r
|
|
11403
11828
|
</select>\r
|
|
11829
|
+
@if (item.collection === 'dynamicChoiceSets') {\r
|
|
11830
|
+
<!--\r
|
|
11831
|
+
\xA75.2 \u2014 il valore di un'opzione **generata** non lo scrive l'autore del flow: lo produce\r
|
|
11832
|
+
la sorgente, nel tipo in cui il sistema ospite lo tiene, e \`dataType\` decide il tipo in\r
|
|
11833
|
+
cui viaggia. La regola e' generale \u2014 vale per tutte e tre le sorgenti \u2014 e si vede su un\r
|
|
11834
|
+
oggetto la cui chiave e' un enum, dove nella tendina serve di norma il numero.\r
|
|
11835
|
+
-->\r
|
|
11836
|
+
<p class="fb-field__hint">\r
|
|
11837
|
+
Decide il tipo in cui viaggia il valore dell\u2019opzione, con qualunque sorgente:\r
|
|
11838
|
+
<code>String</code> il nome come testo, <code>Integer</code> o <code>Number</code> il\r
|
|
11839
|
+
numero sottostante, <code>Enum</code> il valore tipizzato \u2014 che e\u2019 cio\u2019 che serve in un\r
|
|
11840
|
+
parametro o in un membro di classe <code>Enum</code>. Una conversione impossibile non fa\r
|
|
11841
|
+
fallire niente: resta il valore prodotto dalla sorgente.\r
|
|
11842
|
+
</p>\r
|
|
11843
|
+
}\r
|
|
11404
11844
|
</div>\r
|
|
11405
11845
|
\r
|
|
11406
11846
|
@if (requiresObjectType(item) && !hidesObjectType(item)) {\r
|
|
@@ -11679,8 +12119,8 @@
|
|
|
11679
12119
|
</div>\r
|
|
11680
12120
|
</div>\r
|
|
11681
12121
|
<p class="fb-field__hint">\r
|
|
11682
|
-
|
|
11683
|
-
|
|
12122
|
+
Dichiarare <code>Integer</code> come tipo della risorsa e\u2019 la stessa cosa che scegliere qui\r
|
|
12123
|
+
\xABValore numerico\xBB: il valore dell\u2019opzione e\u2019 il numero sottostante.\r
|
|
11684
12124
|
</p>\r
|
|
11685
12125
|
} @else {\r
|
|
11686
12126
|
<div class="fb-field">\r
|
|
@@ -11825,8 +12265,8 @@
|
|
|
11825
12265
|
Aggiungi {{ activeKind().singular }}\r
|
|
11826
12266
|
</button>\r
|
|
11827
12267
|
</div>\r
|
|
11828
|
-
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff)}.fb-res__header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-res__title{margin:0;font-size:14px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-res__tabs{display:flex;flex-wrap:wrap;gap:2px;padding:6px 8px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-res__tab{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border:1px solid var(--fb-border-subtle, #e6e9ee);border-radius:12px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}.fb-res__tab:hover{background:var(--fb-surface-alt, #f8f9fb)}.fb-res__tab--active{border-color:var(--fb-accent, #2f6feb);background:color-mix(in srgb,var(--fb-accent, #2f6feb) 10%,transparent);color:var(--fb-accent, #2f6feb);font-weight:600}.fb-res__count{padding:0 4px;border-radius:6px;background:var(--fb-border, #d6dae1);font-size:9px;color:var(--fb-text, #1d2939)}.fb-res__body{flex:1;min-height:0;overflow-y:auto;padding:10px 12px}.fb-res__name{flex:1;min-width:0;display:flex;flex-direction:column;padding:0;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-res__name-text{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-res__meta{font-size:10px;color:var(--fb-text-muted, #667085)}
|
|
11829
|
-
`],dependencies:[{kind:"component",type:P,selector:"fb-field-picker",inputs:["value","object","usage","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:
|
|
12268
|
+
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff)}.fb-res__header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-res__title{margin:0;font-size:14px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-res__tabs{display:flex;flex-wrap:wrap;gap:2px;padding:6px 8px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-res__tab{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border:1px solid var(--fb-border-subtle, #e6e9ee);border-radius:12px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}.fb-res__tab:hover{background:var(--fb-surface-alt, #f8f9fb)}.fb-res__tab--active{border-color:var(--fb-accent, #2f6feb);background:color-mix(in srgb,var(--fb-accent, #2f6feb) 10%,transparent);color:var(--fb-accent, #2f6feb);font-weight:600}.fb-res__count{padding:0 4px;border-radius:6px;background:var(--fb-border, #d6dae1);font-size:9px;color:var(--fb-text, #1d2939)}.fb-res__body{flex:1;min-height:0;overflow-y:auto;padding:10px 12px}.fb-res__name{flex:1;min-width:0;display:flex;flex-direction:column;padding:0;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-res__name-text{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-res__meta{font-size:10px;color:var(--fb-text-muted, #667085)}.fb-res__uses{flex:none;padding:1px 6px;border-radius:999px;background:var(--fb-surface-sunken, #eef0f4);color:var(--fb-text-muted, #6b7086);font-size:10px;font-variant-numeric:tabular-nums;white-space:nowrap}.fb-res__uses--none{background:color-mix(in srgb,var(--fb-warning, #b7791f) 12%,transparent);color:var(--fb-warning, #b7791f)}.fb-res__confirm{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
|
|
12269
|
+
`],dependencies:[{kind:"component",type:P,selector:"fb-field-picker",inputs:["value","object","usage","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:G,selector:"fb-formula-editor",inputs:["expression","usage","expectedDataType","scale","placeholder","ariaLabel","disabled","rows","commitOn"],outputs:["expressionChange"]},{kind:"component",type:q,selector:"fb-object-picker",inputs:["value","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:$,selector:"fb-reference-picker",inputs:["value","label","placeholder","disabled","dataType","isCollection","objectType","writableOnly","elementsOnly","extraReferences"],outputs:["valueChange"]},{kind:"component",type:Y,selector:"fb-record-filter-editor",inputs:["holder","object","title","usage","fieldOptions","supportsLogic","supportsFormula","emptyWarning","emptyWarningSeverity"],outputs:["changed"]},{kind:"component",type:J,selector:"fb-structure-picker",inputs:["value","label","placeholder","disabled"],outputs:["valueChange"]},{kind:"component",type:S,selector:"fb-value-editor",inputs:["value","label","dataType","objectType","isCollection","valueSet","disabled","allowFormula"],outputs:["valueChange"]},{kind:"directive",type:k,selector:"select[fbValue]",inputs:["fbValue"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Ne,decorators:[{type:y,args:[{selector:"fb-resource-panel",standalone:!0,imports:[P,G,q,$,Y,J,S,k],changeDetection:_.OnPush,template:`<header class="fb-res__header">\r
|
|
11830
12270
|
<h2 class="fb-res__title">Risorse</h2>\r
|
|
11831
12271
|
<button type="button" class="fb-btn fb-btn--ghost fb-btn--icon" aria-label="Chiudi" (click)="close()">\xD7</button>\r
|
|
11832
12272
|
</header>\r
|
|
@@ -11865,15 +12305,50 @@
|
|
|
11865
12305
|
</span>\r
|
|
11866
12306
|
</button>\r
|
|
11867
12307
|
<span class="fb-list__spacer"></span>\r
|
|
12308
|
+
<!--\r
|
|
12309
|
+
Il numero di usi sta accanto al nome perche\u2019 e\u2019 cio\u2019 che decide se si puo\u2019 togliere:\r
|
|
12310
|
+
\xABnon usata\xBB e\u2019 un invito a fare pulizia, \xABusata 15 volte\xBB e\u2019 un avvertimento.\r
|
|
12311
|
+
-->\r
|
|
12312
|
+
@let uses = usesOf(item);\r
|
|
12313
|
+
@if (uses === 0) {\r
|
|
12314
|
+
<span class="fb-res__uses fb-res__uses--none" title="Nessun riferimento la usa: si puo\u2019 togliere">\r
|
|
12315
|
+
non usata\r
|
|
12316
|
+
</span>\r
|
|
12317
|
+
} @else {\r
|
|
12318
|
+
<span\r
|
|
12319
|
+
class="fb-res__uses"\r
|
|
12320
|
+
[title]="'Referenziata ' + uses + ' volte nel documento, formule comprese'"\r
|
|
12321
|
+
>\r
|
|
12322
|
+
{{ uses }} usi\r
|
|
12323
|
+
</span>\r
|
|
12324
|
+
}\r
|
|
11868
12325
|
<button\r
|
|
11869
12326
|
type="button"\r
|
|
11870
12327
|
class="fb-btn fb-btn--ghost fb-btn--icon"\r
|
|
11871
12328
|
aria-label="Rimuovi la risorsa"\r
|
|
11872
|
-
|
|
12329
|
+
[title]="uses ? 'Rimuovi: e\u2019 usata ' + uses + ' volte, verra\u2019 chiesta conferma' : 'Rimuovi'"\r
|
|
12330
|
+
(click)="requestRemove(item)"\r
|
|
11873
12331
|
>\r
|
|
11874
12332
|
\xD7\r
|
|
11875
12333
|
</button>\r
|
|
11876
12334
|
</div>\r
|
|
12335
|
+
\r
|
|
12336
|
+
@if (isPendingRemoval(item)) {\r
|
|
12337
|
+
<!--\r
|
|
12338
|
+
La conferma sta qui e non in una finestra: la riga che si sta togliendo resta sotto\r
|
|
12339
|
+
gli occhi, e il numero di riferimenti che si rompono e\u2019 il dato della decisione.\r
|
|
12340
|
+
-->\r
|
|
12341
|
+
<p class="fb-callout fb-callout--warn fb-res__confirm">\r
|
|
12342
|
+
<span>\r
|
|
12343
|
+
\xAB{{ item.name }}\xBB e\u2019 usata {{ usesOf(item) }} volte: togliendola quei riferimenti\r
|
|
12344
|
+
restano orfani e la validazione li segnalera\u2019.\r
|
|
12345
|
+
</span>\r
|
|
12346
|
+
<button type="button" class="fb-btn fb-btn--icon" (click)="remove(item)">Rimuovi comunque</button>\r
|
|
12347
|
+
<button type="button" class="fb-btn fb-btn--ghost fb-btn--icon" (click)="cancelRemove()">\r
|
|
12348
|
+
Annulla\r
|
|
12349
|
+
</button>\r
|
|
12350
|
+
</p>\r
|
|
12351
|
+
}\r
|
|
11877
12352
|
\r
|
|
11878
12353
|
@if (nameError(item)) {\r
|
|
11879
12354
|
<p class="fb-field__error">{{ nameError(item) }}</p>\r
|
|
@@ -11969,6 +12444,21 @@
|
|
|
11969
12444
|
<option [value]="type.value">{{ type.label }}</option>\r
|
|
11970
12445
|
}\r
|
|
11971
12446
|
</select>\r
|
|
12447
|
+
@if (item.collection === 'dynamicChoiceSets') {\r
|
|
12448
|
+
<!--\r
|
|
12449
|
+
\xA75.2 \u2014 il valore di un'opzione **generata** non lo scrive l'autore del flow: lo produce\r
|
|
12450
|
+
la sorgente, nel tipo in cui il sistema ospite lo tiene, e \`dataType\` decide il tipo in\r
|
|
12451
|
+
cui viaggia. La regola e' generale \u2014 vale per tutte e tre le sorgenti \u2014 e si vede su un\r
|
|
12452
|
+
oggetto la cui chiave e' un enum, dove nella tendina serve di norma il numero.\r
|
|
12453
|
+
-->\r
|
|
12454
|
+
<p class="fb-field__hint">\r
|
|
12455
|
+
Decide il tipo in cui viaggia il valore dell\u2019opzione, con qualunque sorgente:\r
|
|
12456
|
+
<code>String</code> il nome come testo, <code>Integer</code> o <code>Number</code> il\r
|
|
12457
|
+
numero sottostante, <code>Enum</code> il valore tipizzato \u2014 che e\u2019 cio\u2019 che serve in un\r
|
|
12458
|
+
parametro o in un membro di classe <code>Enum</code>. Una conversione impossibile non fa\r
|
|
12459
|
+
fallire niente: resta il valore prodotto dalla sorgente.\r
|
|
12460
|
+
</p>\r
|
|
12461
|
+
}\r
|
|
11972
12462
|
</div>\r
|
|
11973
12463
|
\r
|
|
11974
12464
|
@if (requiresObjectType(item) && !hidesObjectType(item)) {\r
|
|
@@ -12247,8 +12737,8 @@
|
|
|
12247
12737
|
</div>\r
|
|
12248
12738
|
</div>\r
|
|
12249
12739
|
<p class="fb-field__hint">\r
|
|
12250
|
-
|
|
12251
|
-
|
|
12740
|
+
Dichiarare <code>Integer</code> come tipo della risorsa e\u2019 la stessa cosa che scegliere qui\r
|
|
12741
|
+
\xABValore numerico\xBB: il valore dell\u2019opzione e\u2019 il numero sottostante.\r
|
|
12252
12742
|
</p>\r
|
|
12253
12743
|
} @else {\r
|
|
12254
12744
|
<div class="fb-field">\r
|
|
@@ -12393,8 +12883,424 @@
|
|
|
12393
12883
|
Aggiungi {{ activeKind().singular }}\r
|
|
12394
12884
|
</button>\r
|
|
12395
12885
|
</div>\r
|
|
12396
|
-
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff)}.fb-res__header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-res__title{margin:0;font-size:14px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-res__tabs{display:flex;flex-wrap:wrap;gap:2px;padding:6px 8px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-res__tab{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border:1px solid var(--fb-border-subtle, #e6e9ee);border-radius:12px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}.fb-res__tab:hover{background:var(--fb-surface-alt, #f8f9fb)}.fb-res__tab--active{border-color:var(--fb-accent, #2f6feb);background:color-mix(in srgb,var(--fb-accent, #2f6feb) 10%,transparent);color:var(--fb-accent, #2f6feb);font-weight:600}.fb-res__count{padding:0 4px;border-radius:6px;background:var(--fb-border, #d6dae1);font-size:9px;color:var(--fb-text, #1d2939)}.fb-res__body{flex:1;min-height:0;overflow-y:auto;padding:10px 12px}.fb-res__name{flex:1;min-width:0;display:flex;flex-direction:column;padding:0;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-res__name-text{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-res__meta{font-size:10px;color:var(--fb-text-muted, #667085)}
|
|
12397
|
-
`]}]}],ctorParameters:()=>[],propDecorators:{closed:[{type:a.Output,args:["closed"]}]}});class
|
|
12886
|
+
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff)}.fb-res__header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-res__title{margin:0;font-size:14px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-res__tabs{display:flex;flex-wrap:wrap;gap:2px;padding:6px 8px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-res__tab{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border:1px solid var(--fb-border-subtle, #e6e9ee);border-radius:12px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}.fb-res__tab:hover{background:var(--fb-surface-alt, #f8f9fb)}.fb-res__tab--active{border-color:var(--fb-accent, #2f6feb);background:color-mix(in srgb,var(--fb-accent, #2f6feb) 10%,transparent);color:var(--fb-accent, #2f6feb);font-weight:600}.fb-res__count{padding:0 4px;border-radius:6px;background:var(--fb-border, #d6dae1);font-size:9px;color:var(--fb-text, #1d2939)}.fb-res__body{flex:1;min-height:0;overflow-y:auto;padding:10px 12px}.fb-res__name{flex:1;min-width:0;display:flex;flex-direction:column;padding:0;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-res__name-text{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-res__meta{font-size:10px;color:var(--fb-text-muted, #667085)}.fb-res__uses{flex:none;padding:1px 6px;border-radius:999px;background:var(--fb-surface-sunken, #eef0f4);color:var(--fb-text-muted, #6b7086);font-size:10px;font-variant-numeric:tabular-nums;white-space:nowrap}.fb-res__uses--none{background:color-mix(in srgb,var(--fb-warning, #b7791f) 12%,transparent);color:var(--fb-warning, #b7791f)}.fb-res__confirm{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
|
|
12887
|
+
`]}]}],ctorParameters:()=>[],propDecorators:{closed:[{type:a.Output,args:["closed"]}],target:[{type:a.Input,args:[{isSignal:!0,alias:"target",required:!1}]}]}});class Ce{store=b(T);isEditable=d(!0,...ngDevMode?[{debugName:"isEditable"}]:[]);selectedNodeNames=d([],...ngDevMode?[{debugName:"selectedNodeNames"}]:[]);target=d(null,...ngDevMode?[{debugName:"target"}]:[]);closed=v();createRequested=v();memberFocused=v();colors=rn;groups=s(()=>this.store.groups(),...ngDevMode?[{debugName:"groups"}]:[]);openName=u(null,...ngDevMode?[{debugName:"openName"}]:[]);constructor(){w(()=>{const e=this.target();e&&this.openName.set(e.name)})}toggleOpen(e){this.openName.update(n=>n===e?null:e)}isOpen(e){return this.openName()===e}knownNodes=s(()=>new Set(this.store.nodes().map(e=>e.name)),...ngDevMode?[{debugName:"knownNodes"}]:[]);isKnownMember(e){return this.knownNodes().has(e)}membersOf(e){return this.groups()[e]?.group.members??[]}staleMembersOf(e){return this.membersOf(e).filter(n=>!this.isKnownMember(n))}isAutoSized(e){const n=this.groups()[e]?.group;return!!n&&Dn(n)}nameProblem(e){const n=this.groups()[e];if(!n)return null;const r=(n.name??"").trim();if(!r)return"Il nome del riquadro e\u2019 obbligatorio (GROUP_NAME_INVALID).";if(!mn.test(r))return"Deve iniziare con una lettera e contenere solo lettere, cifre e underscore (GROUP_NAME_INVALID).";const t=r.toLowerCase();return this.groups().some(l=>l.index!==e&&(l.name??"").trim().toLowerCase()===t)?"Un altro riquadro ha gi\xE0 questo nome (GROUP_NAME_DUPLICATED).":null}setName(e,n){this.store.updateGroup(e,r=>{r.name=n||void 0}),this.openName.set(n||null)}setLabel(e,n){this.store.updateGroup(e,r=>{r.label=n||void 0})}setDescription(e,n){this.store.updateGroup(e,r=>{r.description=n||void 0})}setColor(e,n){this.store.updateGroup(e,r=>{r.color=n||void 0})}setCollapsed(e,n){this.store.updateGroup(e,r=>{r.isCollapsed=n||void 0})}addSelection(e){const n=this.groups()[e];if(!n)return;const r=new Set(n.group.members??[]);for(const t of this.selectedNodeNames())this.isKnownMember(t)&&r.add(t);this.store.setGroupMembers(n.name,[...r])}removeMember(e,n){const r=this.groups()[e];r&&this.store.setGroupMembers(r.name,(r.group.members??[]).filter(t=>t!==n))}cleanStale(e){const n=this.groups()[e];n&&this.store.setGroupMembers(n.name,(n.group.members??[]).filter(r=>this.isKnownMember(r)))}remove(e){this.store.removeGroup(e),this.openName.set(null)}canAddSelection(){return this.selectedNodeNames().length>0}isColorOutOfList(e){const n=this.groups()[e]?.group.color;return!!n&&!this.colors.some(r=>r.value===n)}colorOf(e){return this.groups()[e]?.group.color??""}close(){this.closed.emit()}create(){this.createRequested.emit()}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Ce,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:Ce,isStandalone:!0,selector:"fb-group-panel",inputs:{isEditable:{classPropertyName:"isEditable",publicName:"isEditable",isSignal:!0,isRequired:!1,transformFunction:null},selectedNodeNames:{classPropertyName:"selectedNodeNames",publicName:"selectedNodeNames",isSignal:!0,isRequired:!1,transformFunction:null},target:{classPropertyName:"target",publicName:"target",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{closed:"closed",createRequested:"createRequested",memberFocused:"memberFocused"},ngImport:a,template:`<header class="fb-grp__header">\r
|
|
12888
|
+
<h2 class="fb-grp__title">Riquadri</h2>\r
|
|
12889
|
+
<button\r
|
|
12890
|
+
type="button"\r
|
|
12891
|
+
class="fb-btn fb-btn--icon"\r
|
|
12892
|
+
[disabled]="!isEditable()"\r
|
|
12893
|
+
title="Crea un riquadro attorno agli elementi selezionati"\r
|
|
12894
|
+
(click)="create()"\r
|
|
12895
|
+
>\r
|
|
12896
|
+
Nuovo\r
|
|
12897
|
+
</button>\r
|
|
12898
|
+
<button type="button" class="fb-btn fb-btn--ghost fb-btn--icon" aria-label="Chiudi" (click)="close()">\xD7</button>\r
|
|
12899
|
+
</header>\r
|
|
12900
|
+
\r
|
|
12901
|
+
<div class="fb-grp__body">\r
|
|
12902
|
+
<p class="fb-section__note">\r
|
|
12903
|
+
Un riquadro documenta un pezzo di flow e non ne cambia il comportamento: il runtime non lo\r
|
|
12904
|
+
legge mai, non ha collegamenti e i suoi rilievi sono tutti avvisi. Il nome sta in uno spazio\r
|
|
12905
|
+
dei nomi a parte, quindi puo\u2019 coincidere con quello di una variabile.\r
|
|
12906
|
+
</p>\r
|
|
12907
|
+
\r
|
|
12908
|
+
@if (!groups().length) {\r
|
|
12909
|
+
<p class="fb-empty">\r
|
|
12910
|
+
Nessun riquadro. Seleziona gli elementi sul canvas e premi \xABNuovo\xBB: il riquadro nasce\r
|
|
12911
|
+
attorno a loro.\r
|
|
12912
|
+
</p>\r
|
|
12913
|
+
}\r
|
|
12914
|
+
\r
|
|
12915
|
+
<div class="fb-list">\r
|
|
12916
|
+
@for (item of groups(); track $index) {\r
|
|
12917
|
+
<div class="fb-list__item">\r
|
|
12918
|
+
<div class="fb-list__header">\r
|
|
12919
|
+
<button type="button" class="fb-grp__name" (click)="toggleOpen(item.name)">\r
|
|
12920
|
+
<span class="fb-list__title">{{ item.group.label || item.name || '(senza nome)' }}</span>\r
|
|
12921
|
+
<span class="fb-grp__meta">\r
|
|
12922
|
+
{{ membersOf($index).length }}\r
|
|
12923
|
+
{{ membersOf($index).length === 1 ? 'elemento' : 'elementi' }}\r
|
|
12924
|
+
@if (item.group.isCollapsed) {\r
|
|
12925
|
+
\xB7 chiuso\r
|
|
12926
|
+
}\r
|
|
12927
|
+
@if (isAutoSized($index)) {\r
|
|
12928
|
+
\xB7 misura sui membri\r
|
|
12929
|
+
}\r
|
|
12930
|
+
</span>\r
|
|
12931
|
+
</button>\r
|
|
12932
|
+
<span class="fb-list__spacer"></span>\r
|
|
12933
|
+
<button\r
|
|
12934
|
+
type="button"\r
|
|
12935
|
+
class="fb-btn fb-btn--ghost fb-btn--icon"\r
|
|
12936
|
+
[disabled]="!isEditable()"\r
|
|
12937
|
+
aria-label="Elimina il riquadro"\r
|
|
12938
|
+
title="Elimina il riquadro: gli elementi che contiene restano"\r
|
|
12939
|
+
(click)="remove($index)"\r
|
|
12940
|
+
>\r
|
|
12941
|
+
\xD7\r
|
|
12942
|
+
</button>\r
|
|
12943
|
+
</div>\r
|
|
12944
|
+
\r
|
|
12945
|
+
@if (nameProblem($index)) {\r
|
|
12946
|
+
<!-- Avviso, non errore: nessun rilievo su un riquadro blocca l\u2019attivazione (\xA73.6). -->\r
|
|
12947
|
+
<p class="fb-field__hint fb-field__hint--warn">{{ nameProblem($index) }}</p>\r
|
|
12948
|
+
}\r
|
|
12949
|
+
\r
|
|
12950
|
+
@if (isOpen(item.name)) {\r
|
|
12951
|
+
<div class="fb-fields-row">\r
|
|
12952
|
+
<label class="fb-field">\r
|
|
12953
|
+
<span class="fb-field__label">Intestazione</span>\r
|
|
12954
|
+
<input\r
|
|
12955
|
+
[value]="item.group.label || ''"\r
|
|
12956
|
+
placeholder="Preparazione dell\u2019ordine"\r
|
|
12957
|
+
[disabled]="!isEditable()"\r
|
|
12958
|
+
(input)="setLabel($index, $any($event.target).value)"\r
|
|
12959
|
+
/>\r
|
|
12960
|
+
</label>\r
|
|
12961
|
+
<label class="fb-field">\r
|
|
12962
|
+
<span class="fb-field__label">Nome tecnico</span>\r
|
|
12963
|
+
<input\r
|
|
12964
|
+
[value]="item.name"\r
|
|
12965
|
+
placeholder="Riquadro_Preparazione"\r
|
|
12966
|
+
[disabled]="!isEditable()"\r
|
|
12967
|
+
(input)="setName($index, $any($event.target).value)"\r
|
|
12968
|
+
/>\r
|
|
12969
|
+
</label>\r
|
|
12970
|
+
</div>\r
|
|
12971
|
+
\r
|
|
12972
|
+
<label class="fb-field">\r
|
|
12973
|
+
<span class="fb-field__label">Commento</span>\r
|
|
12974
|
+
<textarea\r
|
|
12975
|
+
rows="3"\r
|
|
12976
|
+
[value]="item.group.description || ''"\r
|
|
12977
|
+
placeholder="Cosa fa questo pezzo di flow, e perche\u2019."\r
|
|
12978
|
+
[disabled]="!isEditable()"\r
|
|
12979
|
+
(input)="setDescription($index, $any($event.target).value)"\r
|
|
12980
|
+
></textarea>\r
|
|
12981
|
+
<span class="fb-field__hint">\r
|
|
12982
|
+
Sul canvas ne compaiono le prime righe; per intero sta qui e nel titolo della barra.\r
|
|
12983
|
+
</span>\r
|
|
12984
|
+
</label>\r
|
|
12985
|
+
\r
|
|
12986
|
+
<div class="fb-fields-row">\r
|
|
12987
|
+
<label class="fb-field fb-field--compact">\r
|
|
12988
|
+
<span class="fb-field__label">Colore</span>\r
|
|
12989
|
+
<select\r
|
|
12990
|
+
[fbValue]="colorOf($index)"\r
|
|
12991
|
+
[disabled]="!isEditable()"\r
|
|
12992
|
+
(change)="setColor($index, $any($event.target).value)"\r
|
|
12993
|
+
>\r
|
|
12994
|
+
<option value="">(nessuno)</option>\r
|
|
12995
|
+
@for (color of colors; track color.value) {\r
|
|
12996
|
+
<option [value]="color.value">{{ color.label }}</option>\r
|
|
12997
|
+
}\r
|
|
12998
|
+
<!--\r
|
|
12999
|
+
\`color\` e\u2019 un token concordato fra editor e backend (\xA73.6): un valore che non\r
|
|
13000
|
+
proponiamo non e\u2019 sbagliato, e senza questa opzione la select resterebbe bianca\r
|
|
13001
|
+
su un riquadro scritto altrove.\r
|
|
13002
|
+
-->\r
|
|
13003
|
+
@if (isColorOutOfList($index)) {\r
|
|
13004
|
+
<option [value]="colorOf($index)">{{ colorOf($index) }} (fuori elenco)</option>\r
|
|
13005
|
+
}\r
|
|
13006
|
+
</select>\r
|
|
13007
|
+
</label>\r
|
|
13008
|
+
<label class="fb-field fb-field--compact fb-grp__check">\r
|
|
13009
|
+
<span class="fb-field__label">Chiuso</span>\r
|
|
13010
|
+
<input\r
|
|
13011
|
+
type="checkbox"\r
|
|
13012
|
+
[checked]="!!item.group.isCollapsed"\r
|
|
13013
|
+
[disabled]="!isEditable()"\r
|
|
13014
|
+
(change)="setCollapsed($index, $any($event.target).checked)"\r
|
|
13015
|
+
/>\r
|
|
13016
|
+
</label>\r
|
|
13017
|
+
</div>\r
|
|
13018
|
+
\r
|
|
13019
|
+
<div class="fb-grp__members">\r
|
|
13020
|
+
<div class="fb-list__header">\r
|
|
13021
|
+
<span class="fb-field__label">Elementi nel riquadro</span>\r
|
|
13022
|
+
<span class="fb-list__spacer"></span>\r
|
|
13023
|
+
<button\r
|
|
13024
|
+
type="button"\r
|
|
13025
|
+
class="fb-btn fb-btn--icon"\r
|
|
13026
|
+
[disabled]="!isEditable() || !canAddSelection()"\r
|
|
13027
|
+
[title]="\r
|
|
13028
|
+
canAddSelection()\r
|
|
13029
|
+
? 'Aggiungi gli elementi selezionati sul canvas'\r
|
|
13030
|
+
: 'Seleziona degli elementi sul canvas, poi aggiungili qui'\r
|
|
13031
|
+
"\r
|
|
13032
|
+
(click)="addSelection($index)"\r
|
|
13033
|
+
>\r
|
|
13034
|
+
Aggiungi la selezione\r
|
|
13035
|
+
</button>\r
|
|
13036
|
+
</div>\r
|
|
13037
|
+
\r
|
|
13038
|
+
@if (!membersOf($index).length) {\r
|
|
13039
|
+
<p class="fb-empty">\r
|
|
13040
|
+
Vuoto. Trascina un elemento dentro la cornice sul canvas, oppure selezionalo e usa\r
|
|
13041
|
+
\xABAggiungi la selezione\xBB.\r
|
|
13042
|
+
</p>\r
|
|
13043
|
+
}\r
|
|
13044
|
+
\r
|
|
13045
|
+
@for (member of membersOf($index); track $index) {\r
|
|
13046
|
+
<div class="fb-grp__member">\r
|
|
13047
|
+
<button\r
|
|
13048
|
+
type="button"\r
|
|
13049
|
+
class="fb-grp__member-name"\r
|
|
13050
|
+
[class.fb-grp__member-name--stale]="!isKnownMember(member)"\r
|
|
13051
|
+
[title]="isKnownMember(member) ? 'Porta la vista su questo elemento' : 'Questo elemento non esiste piu\u2019'"\r
|
|
13052
|
+
[disabled]="!isKnownMember(member)"\r
|
|
13053
|
+
(click)="memberFocused.emit(member)"\r
|
|
13054
|
+
>\r
|
|
13055
|
+
{{ member }}\r
|
|
13056
|
+
</button>\r
|
|
13057
|
+
<button\r
|
|
13058
|
+
type="button"\r
|
|
13059
|
+
class="fb-btn fb-btn--ghost fb-btn--icon"\r
|
|
13060
|
+
[disabled]="!isEditable()"\r
|
|
13061
|
+
aria-label="Togli dal riquadro"\r
|
|
13062
|
+
title="Togli dal riquadro: l\u2019elemento resta nel flow"\r
|
|
13063
|
+
(click)="removeMember($index, member)"\r
|
|
13064
|
+
>\r
|
|
13065
|
+
\xD7\r
|
|
13066
|
+
</button>\r
|
|
13067
|
+
</div>\r
|
|
13068
|
+
}\r
|
|
13069
|
+
\r
|
|
13070
|
+
@if (staleMembersOf($index).length) {\r
|
|
13071
|
+
<p class="fb-callout fb-callout--warn">\r
|
|
13072
|
+
<span>\r
|
|
13073
|
+
{{ staleMembersOf($index).length }}\r
|
|
13074
|
+
{{ staleMembersOf($index).length === 1 ? 'membro nomina un elemento' : 'membri nominano elementi' }}\r
|
|
13075
|
+
che non esiste piu\u2019 (GROUP_MEMBER_UNKNOWN). E\u2019 un avviso: non blocca\r
|
|
13076
|
+
l\u2019attivazione, e la ripulitura la fa l\u2019editor.\r
|
|
13077
|
+
</span>\r
|
|
13078
|
+
<button\r
|
|
13079
|
+
type="button"\r
|
|
13080
|
+
class="fb-btn fb-btn--icon"\r
|
|
13081
|
+
[disabled]="!isEditable()"\r
|
|
13082
|
+
(click)="cleanStale($index)"\r
|
|
13083
|
+
>\r
|
|
13084
|
+
Ripulisci\r
|
|
13085
|
+
</button>\r
|
|
13086
|
+
</p>\r
|
|
13087
|
+
}\r
|
|
13088
|
+
</div>\r
|
|
13089
|
+
}\r
|
|
13090
|
+
</div>\r
|
|
13091
|
+
}\r
|
|
13092
|
+
</div>\r
|
|
13093
|
+
</div>\r
|
|
13094
|
+
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff)}.fb-grp__header{display:flex;align-items:center;gap:6px;padding:10px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-grp__title{margin:0;flex:1;font-size:14px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-grp__body{flex:1;min-height:0;padding:10px 12px 16px;overflow-y:auto}.fb-grp__name{display:flex;flex-direction:column;gap:2px;padding:0;border:none;background:transparent;font:inherit;text-align:left;cursor:pointer}.fb-grp__meta{font-size:10px;color:var(--fb-text-muted, #667085)}.fb-grp__check{flex-direction:row;align-items:center;gap:6px}.fb-grp__members{margin-top:4px;padding-top:6px;border-top:1px dashed var(--fb-border, #d6dae1)}.fb-grp__member{display:flex;align-items:center;gap:4px}.fb-grp__member-name{flex:1;min-width:0;padding:3px 4px;border:none;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:var(--fb-text, #1d2939);font:inherit;font-size:12px;text-align:left;overflow-wrap:anywhere;cursor:pointer}.fb-grp__member-name:hover:not(:disabled){background:var(--fb-surface-alt, #f7f8fa)}.fb-grp__member-name--stale{color:var(--fb-warning, #b7791f);text-decoration:line-through;cursor:default}
|
|
13095
|
+
`],dependencies:[{kind:"directive",type:k,selector:"select[fbValue]",inputs:["fbValue"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Ce,decorators:[{type:y,args:[{selector:"fb-group-panel",standalone:!0,imports:[k],changeDetection:_.OnPush,template:`<header class="fb-grp__header">\r
|
|
13096
|
+
<h2 class="fb-grp__title">Riquadri</h2>\r
|
|
13097
|
+
<button\r
|
|
13098
|
+
type="button"\r
|
|
13099
|
+
class="fb-btn fb-btn--icon"\r
|
|
13100
|
+
[disabled]="!isEditable()"\r
|
|
13101
|
+
title="Crea un riquadro attorno agli elementi selezionati"\r
|
|
13102
|
+
(click)="create()"\r
|
|
13103
|
+
>\r
|
|
13104
|
+
Nuovo\r
|
|
13105
|
+
</button>\r
|
|
13106
|
+
<button type="button" class="fb-btn fb-btn--ghost fb-btn--icon" aria-label="Chiudi" (click)="close()">\xD7</button>\r
|
|
13107
|
+
</header>\r
|
|
13108
|
+
\r
|
|
13109
|
+
<div class="fb-grp__body">\r
|
|
13110
|
+
<p class="fb-section__note">\r
|
|
13111
|
+
Un riquadro documenta un pezzo di flow e non ne cambia il comportamento: il runtime non lo\r
|
|
13112
|
+
legge mai, non ha collegamenti e i suoi rilievi sono tutti avvisi. Il nome sta in uno spazio\r
|
|
13113
|
+
dei nomi a parte, quindi puo\u2019 coincidere con quello di una variabile.\r
|
|
13114
|
+
</p>\r
|
|
13115
|
+
\r
|
|
13116
|
+
@if (!groups().length) {\r
|
|
13117
|
+
<p class="fb-empty">\r
|
|
13118
|
+
Nessun riquadro. Seleziona gli elementi sul canvas e premi \xABNuovo\xBB: il riquadro nasce\r
|
|
13119
|
+
attorno a loro.\r
|
|
13120
|
+
</p>\r
|
|
13121
|
+
}\r
|
|
13122
|
+
\r
|
|
13123
|
+
<div class="fb-list">\r
|
|
13124
|
+
@for (item of groups(); track $index) {\r
|
|
13125
|
+
<div class="fb-list__item">\r
|
|
13126
|
+
<div class="fb-list__header">\r
|
|
13127
|
+
<button type="button" class="fb-grp__name" (click)="toggleOpen(item.name)">\r
|
|
13128
|
+
<span class="fb-list__title">{{ item.group.label || item.name || '(senza nome)' }}</span>\r
|
|
13129
|
+
<span class="fb-grp__meta">\r
|
|
13130
|
+
{{ membersOf($index).length }}\r
|
|
13131
|
+
{{ membersOf($index).length === 1 ? 'elemento' : 'elementi' }}\r
|
|
13132
|
+
@if (item.group.isCollapsed) {\r
|
|
13133
|
+
\xB7 chiuso\r
|
|
13134
|
+
}\r
|
|
13135
|
+
@if (isAutoSized($index)) {\r
|
|
13136
|
+
\xB7 misura sui membri\r
|
|
13137
|
+
}\r
|
|
13138
|
+
</span>\r
|
|
13139
|
+
</button>\r
|
|
13140
|
+
<span class="fb-list__spacer"></span>\r
|
|
13141
|
+
<button\r
|
|
13142
|
+
type="button"\r
|
|
13143
|
+
class="fb-btn fb-btn--ghost fb-btn--icon"\r
|
|
13144
|
+
[disabled]="!isEditable()"\r
|
|
13145
|
+
aria-label="Elimina il riquadro"\r
|
|
13146
|
+
title="Elimina il riquadro: gli elementi che contiene restano"\r
|
|
13147
|
+
(click)="remove($index)"\r
|
|
13148
|
+
>\r
|
|
13149
|
+
\xD7\r
|
|
13150
|
+
</button>\r
|
|
13151
|
+
</div>\r
|
|
13152
|
+
\r
|
|
13153
|
+
@if (nameProblem($index)) {\r
|
|
13154
|
+
<!-- Avviso, non errore: nessun rilievo su un riquadro blocca l\u2019attivazione (\xA73.6). -->\r
|
|
13155
|
+
<p class="fb-field__hint fb-field__hint--warn">{{ nameProblem($index) }}</p>\r
|
|
13156
|
+
}\r
|
|
13157
|
+
\r
|
|
13158
|
+
@if (isOpen(item.name)) {\r
|
|
13159
|
+
<div class="fb-fields-row">\r
|
|
13160
|
+
<label class="fb-field">\r
|
|
13161
|
+
<span class="fb-field__label">Intestazione</span>\r
|
|
13162
|
+
<input\r
|
|
13163
|
+
[value]="item.group.label || ''"\r
|
|
13164
|
+
placeholder="Preparazione dell\u2019ordine"\r
|
|
13165
|
+
[disabled]="!isEditable()"\r
|
|
13166
|
+
(input)="setLabel($index, $any($event.target).value)"\r
|
|
13167
|
+
/>\r
|
|
13168
|
+
</label>\r
|
|
13169
|
+
<label class="fb-field">\r
|
|
13170
|
+
<span class="fb-field__label">Nome tecnico</span>\r
|
|
13171
|
+
<input\r
|
|
13172
|
+
[value]="item.name"\r
|
|
13173
|
+
placeholder="Riquadro_Preparazione"\r
|
|
13174
|
+
[disabled]="!isEditable()"\r
|
|
13175
|
+
(input)="setName($index, $any($event.target).value)"\r
|
|
13176
|
+
/>\r
|
|
13177
|
+
</label>\r
|
|
13178
|
+
</div>\r
|
|
13179
|
+
\r
|
|
13180
|
+
<label class="fb-field">\r
|
|
13181
|
+
<span class="fb-field__label">Commento</span>\r
|
|
13182
|
+
<textarea\r
|
|
13183
|
+
rows="3"\r
|
|
13184
|
+
[value]="item.group.description || ''"\r
|
|
13185
|
+
placeholder="Cosa fa questo pezzo di flow, e perche\u2019."\r
|
|
13186
|
+
[disabled]="!isEditable()"\r
|
|
13187
|
+
(input)="setDescription($index, $any($event.target).value)"\r
|
|
13188
|
+
></textarea>\r
|
|
13189
|
+
<span class="fb-field__hint">\r
|
|
13190
|
+
Sul canvas ne compaiono le prime righe; per intero sta qui e nel titolo della barra.\r
|
|
13191
|
+
</span>\r
|
|
13192
|
+
</label>\r
|
|
13193
|
+
\r
|
|
13194
|
+
<div class="fb-fields-row">\r
|
|
13195
|
+
<label class="fb-field fb-field--compact">\r
|
|
13196
|
+
<span class="fb-field__label">Colore</span>\r
|
|
13197
|
+
<select\r
|
|
13198
|
+
[fbValue]="colorOf($index)"\r
|
|
13199
|
+
[disabled]="!isEditable()"\r
|
|
13200
|
+
(change)="setColor($index, $any($event.target).value)"\r
|
|
13201
|
+
>\r
|
|
13202
|
+
<option value="">(nessuno)</option>\r
|
|
13203
|
+
@for (color of colors; track color.value) {\r
|
|
13204
|
+
<option [value]="color.value">{{ color.label }}</option>\r
|
|
13205
|
+
}\r
|
|
13206
|
+
<!--\r
|
|
13207
|
+
\`color\` e\u2019 un token concordato fra editor e backend (\xA73.6): un valore che non\r
|
|
13208
|
+
proponiamo non e\u2019 sbagliato, e senza questa opzione la select resterebbe bianca\r
|
|
13209
|
+
su un riquadro scritto altrove.\r
|
|
13210
|
+
-->\r
|
|
13211
|
+
@if (isColorOutOfList($index)) {\r
|
|
13212
|
+
<option [value]="colorOf($index)">{{ colorOf($index) }} (fuori elenco)</option>\r
|
|
13213
|
+
}\r
|
|
13214
|
+
</select>\r
|
|
13215
|
+
</label>\r
|
|
13216
|
+
<label class="fb-field fb-field--compact fb-grp__check">\r
|
|
13217
|
+
<span class="fb-field__label">Chiuso</span>\r
|
|
13218
|
+
<input\r
|
|
13219
|
+
type="checkbox"\r
|
|
13220
|
+
[checked]="!!item.group.isCollapsed"\r
|
|
13221
|
+
[disabled]="!isEditable()"\r
|
|
13222
|
+
(change)="setCollapsed($index, $any($event.target).checked)"\r
|
|
13223
|
+
/>\r
|
|
13224
|
+
</label>\r
|
|
13225
|
+
</div>\r
|
|
13226
|
+
\r
|
|
13227
|
+
<div class="fb-grp__members">\r
|
|
13228
|
+
<div class="fb-list__header">\r
|
|
13229
|
+
<span class="fb-field__label">Elementi nel riquadro</span>\r
|
|
13230
|
+
<span class="fb-list__spacer"></span>\r
|
|
13231
|
+
<button\r
|
|
13232
|
+
type="button"\r
|
|
13233
|
+
class="fb-btn fb-btn--icon"\r
|
|
13234
|
+
[disabled]="!isEditable() || !canAddSelection()"\r
|
|
13235
|
+
[title]="\r
|
|
13236
|
+
canAddSelection()\r
|
|
13237
|
+
? 'Aggiungi gli elementi selezionati sul canvas'\r
|
|
13238
|
+
: 'Seleziona degli elementi sul canvas, poi aggiungili qui'\r
|
|
13239
|
+
"\r
|
|
13240
|
+
(click)="addSelection($index)"\r
|
|
13241
|
+
>\r
|
|
13242
|
+
Aggiungi la selezione\r
|
|
13243
|
+
</button>\r
|
|
13244
|
+
</div>\r
|
|
13245
|
+
\r
|
|
13246
|
+
@if (!membersOf($index).length) {\r
|
|
13247
|
+
<p class="fb-empty">\r
|
|
13248
|
+
Vuoto. Trascina un elemento dentro la cornice sul canvas, oppure selezionalo e usa\r
|
|
13249
|
+
\xABAggiungi la selezione\xBB.\r
|
|
13250
|
+
</p>\r
|
|
13251
|
+
}\r
|
|
13252
|
+
\r
|
|
13253
|
+
@for (member of membersOf($index); track $index) {\r
|
|
13254
|
+
<div class="fb-grp__member">\r
|
|
13255
|
+
<button\r
|
|
13256
|
+
type="button"\r
|
|
13257
|
+
class="fb-grp__member-name"\r
|
|
13258
|
+
[class.fb-grp__member-name--stale]="!isKnownMember(member)"\r
|
|
13259
|
+
[title]="isKnownMember(member) ? 'Porta la vista su questo elemento' : 'Questo elemento non esiste piu\u2019'"\r
|
|
13260
|
+
[disabled]="!isKnownMember(member)"\r
|
|
13261
|
+
(click)="memberFocused.emit(member)"\r
|
|
13262
|
+
>\r
|
|
13263
|
+
{{ member }}\r
|
|
13264
|
+
</button>\r
|
|
13265
|
+
<button\r
|
|
13266
|
+
type="button"\r
|
|
13267
|
+
class="fb-btn fb-btn--ghost fb-btn--icon"\r
|
|
13268
|
+
[disabled]="!isEditable()"\r
|
|
13269
|
+
aria-label="Togli dal riquadro"\r
|
|
13270
|
+
title="Togli dal riquadro: l\u2019elemento resta nel flow"\r
|
|
13271
|
+
(click)="removeMember($index, member)"\r
|
|
13272
|
+
>\r
|
|
13273
|
+
\xD7\r
|
|
13274
|
+
</button>\r
|
|
13275
|
+
</div>\r
|
|
13276
|
+
}\r
|
|
13277
|
+
\r
|
|
13278
|
+
@if (staleMembersOf($index).length) {\r
|
|
13279
|
+
<p class="fb-callout fb-callout--warn">\r
|
|
13280
|
+
<span>\r
|
|
13281
|
+
{{ staleMembersOf($index).length }}\r
|
|
13282
|
+
{{ staleMembersOf($index).length === 1 ? 'membro nomina un elemento' : 'membri nominano elementi' }}\r
|
|
13283
|
+
che non esiste piu\u2019 (GROUP_MEMBER_UNKNOWN). E\u2019 un avviso: non blocca\r
|
|
13284
|
+
l\u2019attivazione, e la ripulitura la fa l\u2019editor.\r
|
|
13285
|
+
</span>\r
|
|
13286
|
+
<button\r
|
|
13287
|
+
type="button"\r
|
|
13288
|
+
class="fb-btn fb-btn--icon"\r
|
|
13289
|
+
[disabled]="!isEditable()"\r
|
|
13290
|
+
(click)="cleanStale($index)"\r
|
|
13291
|
+
>\r
|
|
13292
|
+
Ripulisci\r
|
|
13293
|
+
</button>\r
|
|
13294
|
+
</p>\r
|
|
13295
|
+
}\r
|
|
13296
|
+
</div>\r
|
|
13297
|
+
}\r
|
|
13298
|
+
</div>\r
|
|
13299
|
+
}\r
|
|
13300
|
+
</div>\r
|
|
13301
|
+
</div>\r
|
|
13302
|
+
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff)}.fb-grp__header{display:flex;align-items:center;gap:6px;padding:10px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-grp__title{margin:0;flex:1;font-size:14px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-grp__body{flex:1;min-height:0;padding:10px 12px 16px;overflow-y:auto}.fb-grp__name{display:flex;flex-direction:column;gap:2px;padding:0;border:none;background:transparent;font:inherit;text-align:left;cursor:pointer}.fb-grp__meta{font-size:10px;color:var(--fb-text-muted, #667085)}.fb-grp__check{flex-direction:row;align-items:center;gap:6px}.fb-grp__members{margin-top:4px;padding-top:6px;border-top:1px dashed var(--fb-border, #d6dae1)}.fb-grp__member{display:flex;align-items:center;gap:4px}.fb-grp__member-name{flex:1;min-width:0;padding:3px 4px;border:none;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:var(--fb-text, #1d2939);font:inherit;font-size:12px;text-align:left;overflow-wrap:anywhere;cursor:pointer}.fb-grp__member-name:hover:not(:disabled){background:var(--fb-surface-alt, #f7f8fa)}.fb-grp__member-name--stale{color:var(--fb-warning, #b7791f);text-decoration:line-through;cursor:default}
|
|
13303
|
+
`]}]}],ctorParameters:()=>[],propDecorators:{isEditable:[{type:a.Input,args:[{isSignal:!0,alias:"isEditable",required:!1}]}],selectedNodeNames:[{type:a.Input,args:[{isSignal:!0,alias:"selectedNodeNames",required:!1}]}],target:[{type:a.Input,args:[{isSignal:!0,alias:"target",required:!1}]}],closed:[{type:a.Output,args:["closed"]}],createRequested:[{type:a.Output,args:["createRequested"]}],memberFocused:[{type:a.Output,args:["memberFocused"]}]}});class Te{validation=b(H);store=b(T);elementFocused=v();elementOpened=v();closed=v();filter=u("all",...ngDevMode?[{debugName:"filter"}]:[]);isRunning=s(()=>this.validation.isRunning(),...ngDevMode?[{debugName:"isRunning"}]:[]);hasResult=s(()=>this.validation.hasResult(),...ngDevMode?[{debugName:"hasResult"}]:[]);lastError=s(()=>this.validation.lastError(),...ngDevMode?[{debugName:"lastError"}]:[]);counts=s(()=>this.validation.issueCounts(),...ngDevMode?[{debugName:"counts"}]:[]);errorCount=s(()=>this.counts().Error,...ngDevMode?[{debugName:"errorCount"}]:[]);warningCount=s(()=>this.counts().Warning,...ngDevMode?[{debugName:"warningCount"}]:[]);infoCount=s(()=>this.counts().Info,...ngDevMode?[{debugName:"infoCount"}]:[]);totalCount=s(()=>this.validation.issues().length,...ngDevMode?[{debugName:"totalCount"}]:[]);issues=s(()=>{const e=this.filter(),n=this.validation.issues();return e==="all"?n:n.filter(r=>be(r.severity)===e)},...ngDevMode?[{debugName:"issues"}]:[]);isClean=s(()=>this.hasResult()&&this.totalCount()===0,...ngDevMode?[{debugName:"isClean"}]:[]);isFilteredEmpty=s(()=>this.totalCount()>0&&this.issues().length===0,...ngDevMode?[{debugName:"isFilteredEmpty"}]:[]);activeFilterLabel=s(()=>{const e=this.filter();return e==="all"?"":Jn[e]},...ngDevMode?[{debugName:"activeFilterLabel"}]:[]);setFilter(e){this.filter.set(this.filter()===e?"all":e)}bucketOf(e){return be(e.severity)}iconText(e){return ut[e]}labelText(e){return Jn[e]}focus(e){this.elementFocused.emit({name:e.elementName||R,path:e.path})}open(e,n){n?.stopPropagation(),this.elementOpened.emit({name:e.elementName||R,path:e.path})}pathLabel(e){if(!e.path||!e.elementName)return e.path??"";const n=this.store.nodeByName().get(e.elementName);if(n?.type!=="DynamicScreen")return e.path;const r=n.node;return Jr(r,Yn(r,e.path))||e.path}close(){this.closed.emit()}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Te,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:Te,isStandalone:!0,selector:"fb-problems-panel",outputs:{elementFocused:"elementFocused",elementOpened:"elementOpened",closed:"closed"},ngImport:a,template:`<header class="fb-prob__header">\r
|
|
12398
13304
|
<h2 class="fb-prob__title">\r
|
|
12399
13305
|
Problemi\r
|
|
12400
13306
|
@if (isRunning()) {\r
|
|
@@ -12484,7 +13390,16 @@
|
|
|
12484
13390
|
[class.fb-prob__item--warning]="bucket === 'Warning'"\r
|
|
12485
13391
|
[class.fb-prob__item--info]="bucket === 'Info'"\r
|
|
12486
13392
|
>\r
|
|
12487
|
-
|
|
13393
|
+
<!--\r
|
|
13394
|
+
Un clic **mostra** (seleziona e centra), il doppio clic apre: e\u2019 la stessa coppia di\r
|
|
13395
|
+
gesti del canvas, dove un clic seleziona il node e il doppio ne apre il dettaglio.\r
|
|
13396
|
+
-->\r
|
|
13397
|
+
<button\r
|
|
13398
|
+
type="button"\r
|
|
13399
|
+
class="fb-prob__link"\r
|
|
13400
|
+
(click)="focus(issue)"\r
|
|
13401
|
+
(dblclick)="open(issue, $event)"\r
|
|
13402
|
+
>\r
|
|
12488
13403
|
<!-- Il glifo porta il colore: \`role="img"\` + \`aria-label\` perche' la gravita\u2019 non\r
|
|
12489
13404
|
sia leggibile solo a vista. -->\r
|
|
12490
13405
|
<span\r
|
|
@@ -12504,10 +13419,25 @@
|
|
|
12504
13419
|
\xB7 {{ issue.elementName }}\r
|
|
12505
13420
|
}\r
|
|
12506
13421
|
@if (issue.path) {\r
|
|
12507
|
-
|
|
13422
|
+
<!-- Il path per nome, non a indici: vedi \`pathLabel\`. -->\r
|
|
13423
|
+
\xB7 {{ pathLabel(issue) }}\r
|
|
12508
13424
|
}\r
|
|
12509
13425
|
</span>\r
|
|
12510
13426
|
</button>\r
|
|
13427
|
+
<!--\r
|
|
13428
|
+
Il comando per aprire il form. Sta accanto alla riga e non **e\u2019** la riga: scorrere\r
|
|
13429
|
+
l\u2019elenco dei problemi e aprire il form di ognuno sono due intenzioni diverse, e finche\u2019\r
|
|
13430
|
+
erano lo stesso clic la seconda accadeva per forza.\r
|
|
13431
|
+
-->\r
|
|
13432
|
+
<button\r
|
|
13433
|
+
type="button"\r
|
|
13434
|
+
class="fb-prob__open"\r
|
|
13435
|
+
[attr.aria-label]="'Apri il dettaglio di ' + (issue.elementName || 'questo rilievo')"\r
|
|
13436
|
+
title="Apri il dettaglio (anche con un doppio clic sulla riga)"\r
|
|
13437
|
+
(click)="open(issue, $event)"\r
|
|
13438
|
+
>\r
|
|
13439
|
+
\u270E\r
|
|
13440
|
+
</button>\r
|
|
12511
13441
|
</li>\r
|
|
12512
13442
|
}\r
|
|
12513
13443
|
</ul>\r
|
|
@@ -12519,8 +13449,8 @@
|
|
|
12519
13449
|
</p>\r
|
|
12520
13450
|
}\r
|
|
12521
13451
|
</div>\r
|
|
12522
|
-
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff);border-top:1px solid var(--fb-border, #d6dae1)}.fb-prob__header{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-prob__title{display:flex;align-items:baseline;gap:8px;margin:0;font-size:13px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-prob__running{font-size:10px;font-weight:400;color:var(--fb-text-subtle, #98a2b3)}.fb-prob__filters{display:flex;gap:3px;padding:5px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-prob__filter{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border:1px solid var(--fb-border-subtle, #e6e9ee);border-radius:12px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}.fb-prob__filter--active{border-color:var(--fb-accent, #2f6feb);background:color-mix(in srgb,var(--fb-accent, #2f6feb) 10%,transparent);color:var(--fb-accent, #2f6feb);font-weight:600}.fb-prob__filter--error.fb-prob__filter--active{border-color:var(--fb-error, #c9372c);background:color-mix(in srgb,var(--fb-error, #c9372c) 10%,transparent);color:var(--fb-error, #c9372c)}.fb-prob__filter--warning.fb-prob__filter--active{border-color:var(--fb-warning, #b7791f);background:color-mix(in srgb,var(--fb-warning, #b7791f) 12%,transparent);color:var(--fb-warning, #b7791f)}.fb-prob__icon{display:inline-grid;place-items:center;flex:0 0 auto;width:13px;height:13px;border-radius:50%;background:var(--fb-text-subtle, #98a2b3);color:var(--fb-surface, #fff);font-size:9px;font-weight:700;line-height:1}.fb-prob__icon--error{background:var(--fb-error, #c9372c)}.fb-prob__icon--warning{background:var(--fb-warning, #b7791f)}.fb-prob__icon--info{background:var(--fb-accent, #2f6feb)}.fb-prob__count{padding:0 4px;border-radius:6px;background:var(--fb-border, #d6dae1);font-size:9px;color:var(--fb-text, #1d2939)}.fb-prob__body{flex:1;min-height:0;overflow-y:auto;padding:8px 12px}.fb-prob__list{margin:0;padding:0;list-style:none}.fb-prob__item{border-left:3px solid var(--fb-text-subtle, #98a2b3);margin-bottom:3px;border-radius:3px;background:var(--fb-surface-alt, #f8f9fb)}.fb-prob__item--error{border-left-color:var(--fb-error, #c9372c)}.fb-prob__item--warning{border-left-color:var(--fb-warning, #b7791f)}.fb-prob__item--info{border-left-color:var(--fb-accent, #2f6feb)}.fb-prob__link{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:7px;align-items:start;width:100%;padding:5px 8px;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-prob__link:hover{background:color-mix(in srgb,var(--fb-accent, #2f6feb) 6%,transparent)}.fb-prob__link>.fb-prob__icon{grid-column:1;grid-row:1 / span 2;margin-top:2px}.fb-prob__message{grid-column:2;grid-row:1;font-size:12px;line-height:1.4}.fb-prob__meta{grid-column:2;grid-row:2;font-size:10px;color:var(--fb-text-muted, #667085)}.fb-prob__inline-link{padding:0;border:0;background:transparent;color:var(--fb-accent, #2f6feb);font:inherit;text-decoration:underline;cursor:pointer}.fb-prob__note{margin:8px 0 0;font-size:10px;color:var(--fb-text-subtle, #98a2b3)}
|
|
12523
|
-
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:
|
|
13452
|
+
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff);border-top:1px solid var(--fb-border, #d6dae1)}.fb-prob__header{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-prob__title{display:flex;align-items:baseline;gap:8px;margin:0;font-size:13px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-prob__running{font-size:10px;font-weight:400;color:var(--fb-text-subtle, #98a2b3)}.fb-prob__filters{display:flex;gap:3px;padding:5px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-prob__filter{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border:1px solid var(--fb-border-subtle, #e6e9ee);border-radius:12px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}.fb-prob__filter--active{border-color:var(--fb-accent, #2f6feb);background:color-mix(in srgb,var(--fb-accent, #2f6feb) 10%,transparent);color:var(--fb-accent, #2f6feb);font-weight:600}.fb-prob__filter--error.fb-prob__filter--active{border-color:var(--fb-error, #c9372c);background:color-mix(in srgb,var(--fb-error, #c9372c) 10%,transparent);color:var(--fb-error, #c9372c)}.fb-prob__filter--warning.fb-prob__filter--active{border-color:var(--fb-warning, #b7791f);background:color-mix(in srgb,var(--fb-warning, #b7791f) 12%,transparent);color:var(--fb-warning, #b7791f)}.fb-prob__icon{display:inline-grid;place-items:center;flex:0 0 auto;width:13px;height:13px;border-radius:50%;background:var(--fb-text-subtle, #98a2b3);color:var(--fb-surface, #fff);font-size:9px;font-weight:700;line-height:1}.fb-prob__icon--error{background:var(--fb-error, #c9372c)}.fb-prob__icon--warning{background:var(--fb-warning, #b7791f)}.fb-prob__icon--info{background:var(--fb-accent, #2f6feb)}.fb-prob__count{padding:0 4px;border-radius:6px;background:var(--fb-border, #d6dae1);font-size:9px;color:var(--fb-text, #1d2939)}.fb-prob__body{flex:1;min-height:0;overflow-y:auto;padding:8px 12px}.fb-prob__list{margin:0;padding:0;list-style:none}.fb-prob__item{display:flex;align-items:stretch;border-left:3px solid var(--fb-text-subtle, #98a2b3);margin-bottom:3px;border-radius:3px;background:var(--fb-surface-alt, #f8f9fb)}.fb-prob__item--error{border-left-color:var(--fb-error, #c9372c)}.fb-prob__item--warning{border-left-color:var(--fb-warning, #b7791f)}.fb-prob__item--info{border-left-color:var(--fb-accent, #2f6feb)}.fb-prob__link{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:7px;align-items:start;width:100%;padding:5px 8px;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-prob__link:hover{background:color-mix(in srgb,var(--fb-accent, #2f6feb) 6%,transparent)}.fb-prob__link>.fb-prob__icon{grid-column:1;grid-row:1 / span 2;margin-top:2px}.fb-prob__message{grid-column:2;grid-row:1;font-size:12px;line-height:1.4}.fb-prob__meta{grid-column:2;grid-row:2;font-size:10px;color:var(--fb-text-muted, #667085)}.fb-prob__inline-link{padding:0;border:0;background:transparent;color:var(--fb-accent, #2f6feb);font:inherit;text-decoration:underline;cursor:pointer}.fb-prob__note{margin:8px 0 0;font-size:10px;color:var(--fb-text-subtle, #98a2b3)}.fb-prob__open{flex:none;align-self:flex-start;width:22px;height:22px;margin:2px 4px 0 0;padding:0;border:1px solid transparent;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:12px;line-height:1;cursor:pointer}.fb-prob__open:hover,.fb-prob__open:focus-visible{border-color:var(--fb-border, #d6dae1);background:var(--fb-surface, #fff);color:var(--fb-text, #1d2939)}
|
|
13453
|
+
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Te,decorators:[{type:y,args:[{selector:"fb-problems-panel",standalone:!0,changeDetection:_.OnPush,template:`<header class="fb-prob__header">\r
|
|
12524
13454
|
<h2 class="fb-prob__title">\r
|
|
12525
13455
|
Problemi\r
|
|
12526
13456
|
@if (isRunning()) {\r
|
|
@@ -12610,7 +13540,16 @@
|
|
|
12610
13540
|
[class.fb-prob__item--warning]="bucket === 'Warning'"\r
|
|
12611
13541
|
[class.fb-prob__item--info]="bucket === 'Info'"\r
|
|
12612
13542
|
>\r
|
|
12613
|
-
|
|
13543
|
+
<!--\r
|
|
13544
|
+
Un clic **mostra** (seleziona e centra), il doppio clic apre: e\u2019 la stessa coppia di\r
|
|
13545
|
+
gesti del canvas, dove un clic seleziona il node e il doppio ne apre il dettaglio.\r
|
|
13546
|
+
-->\r
|
|
13547
|
+
<button\r
|
|
13548
|
+
type="button"\r
|
|
13549
|
+
class="fb-prob__link"\r
|
|
13550
|
+
(click)="focus(issue)"\r
|
|
13551
|
+
(dblclick)="open(issue, $event)"\r
|
|
13552
|
+
>\r
|
|
12614
13553
|
<!-- Il glifo porta il colore: \`role="img"\` + \`aria-label\` perche' la gravita\u2019 non\r
|
|
12615
13554
|
sia leggibile solo a vista. -->\r
|
|
12616
13555
|
<span\r
|
|
@@ -12630,10 +13569,25 @@
|
|
|
12630
13569
|
\xB7 {{ issue.elementName }}\r
|
|
12631
13570
|
}\r
|
|
12632
13571
|
@if (issue.path) {\r
|
|
12633
|
-
|
|
13572
|
+
<!-- Il path per nome, non a indici: vedi \`pathLabel\`. -->\r
|
|
13573
|
+
\xB7 {{ pathLabel(issue) }}\r
|
|
12634
13574
|
}\r
|
|
12635
13575
|
</span>\r
|
|
12636
13576
|
</button>\r
|
|
13577
|
+
<!--\r
|
|
13578
|
+
Il comando per aprire il form. Sta accanto alla riga e non **e\u2019** la riga: scorrere\r
|
|
13579
|
+
l\u2019elenco dei problemi e aprire il form di ognuno sono due intenzioni diverse, e finche\u2019\r
|
|
13580
|
+
erano lo stesso clic la seconda accadeva per forza.\r
|
|
13581
|
+
-->\r
|
|
13582
|
+
<button\r
|
|
13583
|
+
type="button"\r
|
|
13584
|
+
class="fb-prob__open"\r
|
|
13585
|
+
[attr.aria-label]="'Apri il dettaglio di ' + (issue.elementName || 'questo rilievo')"\r
|
|
13586
|
+
title="Apri il dettaglio (anche con un doppio clic sulla riga)"\r
|
|
13587
|
+
(click)="open(issue, $event)"\r
|
|
13588
|
+
>\r
|
|
13589
|
+
\u270E\r
|
|
13590
|
+
</button>\r
|
|
12637
13591
|
</li>\r
|
|
12638
13592
|
}\r
|
|
12639
13593
|
</ul>\r
|
|
@@ -12645,8 +13599,8 @@
|
|
|
12645
13599
|
</p>\r
|
|
12646
13600
|
}\r
|
|
12647
13601
|
</div>\r
|
|
12648
|
-
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff);border-top:1px solid var(--fb-border, #d6dae1)}.fb-prob__header{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-prob__title{display:flex;align-items:baseline;gap:8px;margin:0;font-size:13px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-prob__running{font-size:10px;font-weight:400;color:var(--fb-text-subtle, #98a2b3)}.fb-prob__filters{display:flex;gap:3px;padding:5px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-prob__filter{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border:1px solid var(--fb-border-subtle, #e6e9ee);border-radius:12px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}.fb-prob__filter--active{border-color:var(--fb-accent, #2f6feb);background:color-mix(in srgb,var(--fb-accent, #2f6feb) 10%,transparent);color:var(--fb-accent, #2f6feb);font-weight:600}.fb-prob__filter--error.fb-prob__filter--active{border-color:var(--fb-error, #c9372c);background:color-mix(in srgb,var(--fb-error, #c9372c) 10%,transparent);color:var(--fb-error, #c9372c)}.fb-prob__filter--warning.fb-prob__filter--active{border-color:var(--fb-warning, #b7791f);background:color-mix(in srgb,var(--fb-warning, #b7791f) 12%,transparent);color:var(--fb-warning, #b7791f)}.fb-prob__icon{display:inline-grid;place-items:center;flex:0 0 auto;width:13px;height:13px;border-radius:50%;background:var(--fb-text-subtle, #98a2b3);color:var(--fb-surface, #fff);font-size:9px;font-weight:700;line-height:1}.fb-prob__icon--error{background:var(--fb-error, #c9372c)}.fb-prob__icon--warning{background:var(--fb-warning, #b7791f)}.fb-prob__icon--info{background:var(--fb-accent, #2f6feb)}.fb-prob__count{padding:0 4px;border-radius:6px;background:var(--fb-border, #d6dae1);font-size:9px;color:var(--fb-text, #1d2939)}.fb-prob__body{flex:1;min-height:0;overflow-y:auto;padding:8px 12px}.fb-prob__list{margin:0;padding:0;list-style:none}.fb-prob__item{border-left:3px solid var(--fb-text-subtle, #98a2b3);margin-bottom:3px;border-radius:3px;background:var(--fb-surface-alt, #f8f9fb)}.fb-prob__item--error{border-left-color:var(--fb-error, #c9372c)}.fb-prob__item--warning{border-left-color:var(--fb-warning, #b7791f)}.fb-prob__item--info{border-left-color:var(--fb-accent, #2f6feb)}.fb-prob__link{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:7px;align-items:start;width:100%;padding:5px 8px;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-prob__link:hover{background:color-mix(in srgb,var(--fb-accent, #2f6feb) 6%,transparent)}.fb-prob__link>.fb-prob__icon{grid-column:1;grid-row:1 / span 2;margin-top:2px}.fb-prob__message{grid-column:2;grid-row:1;font-size:12px;line-height:1.4}.fb-prob__meta{grid-column:2;grid-row:2;font-size:10px;color:var(--fb-text-muted, #667085)}.fb-prob__inline-link{padding:0;border:0;background:transparent;color:var(--fb-accent, #2f6feb);font:inherit;text-decoration:underline;cursor:pointer}.fb-prob__note{margin:8px 0 0;font-size:10px;color:var(--fb-text-subtle, #98a2b3)}
|
|
12649
|
-
`]}]}],propDecorators:{elementFocused:[{type:a.Output,args:["elementFocused"]}],closed:[{type:a.Output,args:["closed"]}]}});class
|
|
13602
|
+
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff);border-top:1px solid var(--fb-border, #d6dae1)}.fb-prob__header{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-prob__title{display:flex;align-items:baseline;gap:8px;margin:0;font-size:13px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-prob__running{font-size:10px;font-weight:400;color:var(--fb-text-subtle, #98a2b3)}.fb-prob__filters{display:flex;gap:3px;padding:5px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-prob__filter{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border:1px solid var(--fb-border-subtle, #e6e9ee);border-radius:12px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}.fb-prob__filter--active{border-color:var(--fb-accent, #2f6feb);background:color-mix(in srgb,var(--fb-accent, #2f6feb) 10%,transparent);color:var(--fb-accent, #2f6feb);font-weight:600}.fb-prob__filter--error.fb-prob__filter--active{border-color:var(--fb-error, #c9372c);background:color-mix(in srgb,var(--fb-error, #c9372c) 10%,transparent);color:var(--fb-error, #c9372c)}.fb-prob__filter--warning.fb-prob__filter--active{border-color:var(--fb-warning, #b7791f);background:color-mix(in srgb,var(--fb-warning, #b7791f) 12%,transparent);color:var(--fb-warning, #b7791f)}.fb-prob__icon{display:inline-grid;place-items:center;flex:0 0 auto;width:13px;height:13px;border-radius:50%;background:var(--fb-text-subtle, #98a2b3);color:var(--fb-surface, #fff);font-size:9px;font-weight:700;line-height:1}.fb-prob__icon--error{background:var(--fb-error, #c9372c)}.fb-prob__icon--warning{background:var(--fb-warning, #b7791f)}.fb-prob__icon--info{background:var(--fb-accent, #2f6feb)}.fb-prob__count{padding:0 4px;border-radius:6px;background:var(--fb-border, #d6dae1);font-size:9px;color:var(--fb-text, #1d2939)}.fb-prob__body{flex:1;min-height:0;overflow-y:auto;padding:8px 12px}.fb-prob__list{margin:0;padding:0;list-style:none}.fb-prob__item{display:flex;align-items:stretch;border-left:3px solid var(--fb-text-subtle, #98a2b3);margin-bottom:3px;border-radius:3px;background:var(--fb-surface-alt, #f8f9fb)}.fb-prob__item--error{border-left-color:var(--fb-error, #c9372c)}.fb-prob__item--warning{border-left-color:var(--fb-warning, #b7791f)}.fb-prob__item--info{border-left-color:var(--fb-accent, #2f6feb)}.fb-prob__link{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:7px;align-items:start;width:100%;padding:5px 8px;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-prob__link:hover{background:color-mix(in srgb,var(--fb-accent, #2f6feb) 6%,transparent)}.fb-prob__link>.fb-prob__icon{grid-column:1;grid-row:1 / span 2;margin-top:2px}.fb-prob__message{grid-column:2;grid-row:1;font-size:12px;line-height:1.4}.fb-prob__meta{grid-column:2;grid-row:2;font-size:10px;color:var(--fb-text-muted, #667085)}.fb-prob__inline-link{padding:0;border:0;background:transparent;color:var(--fb-accent, #2f6feb);font:inherit;text-decoration:underline;cursor:pointer}.fb-prob__note{margin:8px 0 0;font-size:10px;color:var(--fb-text-subtle, #98a2b3)}.fb-prob__open{flex:none;align-self:flex-start;width:22px;height:22px;margin:2px 4px 0 0;padding:0;border:1px solid transparent;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:12px;line-height:1;cursor:pointer}.fb-prob__open:hover,.fb-prob__open:focus-visible{border-color:var(--fb-border, #d6dae1);background:var(--fb-surface, #fff);color:var(--fb-text, #1d2939)}
|
|
13603
|
+
`]}]}],propDecorators:{elementFocused:[{type:a.Output,args:["elementFocused"]}],elementOpened:[{type:a.Output,args:["elementOpened"]}],closed:[{type:a.Output,args:["closed"]}]}});class Se{session=b(Q);closed=v();versionOpened=v();notice=v();versions=s(()=>this.session.versions(),...ngDevMode?[{debugName:"versions"}]:[]);currentVersion=s(()=>this.session.version(),...ngDevMode?[{debugName:"currentVersion"}]:[]);isBusy=s(()=>this.session.isBusy(),...ngDevMode?[{debugName:"isBusy"}]:[]);canActivate=s(()=>this.session.canActivate(),...ngDevMode?[{debugName:"canActivate"}]:[]);pendingDelete=u(null,...ngDevMode?[{debugName:"pendingDelete"}]:[]);isCurrent(e){return e.version===this.currentVersion()}statusLabel(e){switch(e.status){case"Draft":return"Bozza";case"InvalidDraft":return"Bozza con errori";case"UnderReview":return"In approvazione";case"Active":return"Attiva";case"Obsolete":return"Superata";default:return e.status??""}}open(e){this.versionOpened.emit(e.version)}async activate(e){if(e.version!==this.currentVersion()){this.versionOpened.emit(e.version);return}try{const n=await this.session.activate();this.notice.emit({kind:"info",message:`Versione ${n.version} attivata.`})}catch(n){this.notice.emit({kind:"error",message:n instanceof Error?n.message:"Attivazione non riuscita."})}}async deactivate(){try{await this.session.deactivate(),this.notice.emit({kind:"info",message:"Flow disattivato: non e\u2019 piu\u2019 eseguibile."})}catch(e){this.notice.emit({kind:"error",message:e instanceof Error?e.message:"Disattivazione non riuscita."})}}async createNewVersion(){try{const e=await this.session.createNewVersion();this.notice.emit({kind:"info",message:`Creata la versione ${e.version}.`})}catch(e){this.notice.emit({kind:"error",message:e instanceof Error?e.message:"Creazione della versione non riuscita."})}}requestDelete(e){this.pendingDelete.set(e.version)}cancelDelete(){this.pendingDelete.set(null)}async confirmDelete(e){this.pendingDelete.set(null);try{await this.session.deleteVersion(e),this.notice.emit({kind:"info",message:`Versione ${e} eliminata.`})}catch(n){this.notice.emit({kind:"error",message:n instanceof Error?n.message:"Eliminazione non riuscita."})}}hasActiveVersion=s(()=>this.versions().some(e=>e.isActive),...ngDevMode?[{debugName:"hasActiveVersion"}]:[]);close(){this.closed.emit()}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Se,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:Se,isStandalone:!0,selector:"fb-version-panel",outputs:{closed:"closed",versionOpened:"versionOpened",notice:"notice"},ngImport:a,template:`<header class="fb-ver__header">\r
|
|
12650
13604
|
<h2 class="fb-ver__title">Versioni</h2>\r
|
|
12651
13605
|
<button type="button" class="fb-btn fb-btn--ghost fb-btn--icon" aria-label="Chiudi" (click)="close()">\xD7</button>\r
|
|
12652
13606
|
</header>\r
|
|
@@ -12746,7 +13700,7 @@
|
|
|
12746
13700
|
</p>\r
|
|
12747
13701
|
</div>\r
|
|
12748
13702
|
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff)}.fb-ver__header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-ver__title{margin:0;font-size:14px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-ver__body{flex:1;min-height:0;overflow-y:auto;padding:10px 12px}.fb-ver__list{margin:12px 0 0;padding:0;list-style:none}.fb-ver__item{margin-bottom:6px;padding:8px;border:1px solid var(--fb-border-subtle, #e6e9ee);border-radius:6px;background:var(--fb-surface-alt, #f8f9fb)}.fb-ver__item--current{border-color:var(--fb-accent, #2f6feb);background:color-mix(in srgb,var(--fb-accent, #2f6feb) 5%,transparent)}.fb-ver__open{display:flex;align-items:center;gap:6px;width:100%;padding:0;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-ver__number{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;font-weight:700}.fb-ver__status{padding:1px 6px;border-radius:8px;background:var(--fb-border, #d6dae1);font-size:10px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-ver__status--active{background:color-mix(in srgb,var(--fb-success, #3f8f5f) 18%,transparent);color:var(--fb-success, #3f8f5f)}.fb-ver__status--invalid{background:color-mix(in srgb,var(--fb-warning, #b7791f) 16%,transparent);color:var(--fb-warning, #b7791f)}.fb-ver__badge{font-size:9px;color:var(--fb-accent, #2f6feb);text-transform:uppercase;letter-spacing:.05em}.fb-ver__meta{margin:3px 0 0;font-size:10px;color:var(--fb-text-muted, #667085)}.fb-ver__actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px}.fb-ver__hint{font-size:10px;color:var(--fb-text-subtle, #98a2b3)}.fb-ver__confirm{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:5px 7px;border-radius:5px;background:color-mix(in srgb,var(--fb-error, #c9372c) 8%,transparent);font-size:10px;color:var(--fb-error, #c9372c)}.fb-ver__note{margin:12px 0 0;font-size:10px;line-height:1.45;color:var(--fb-text-subtle, #98a2b3)}
|
|
12749
|
-
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:
|
|
13703
|
+
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Se,decorators:[{type:y,args:[{selector:"fb-version-panel",standalone:!0,changeDetection:_.OnPush,template:`<header class="fb-ver__header">\r
|
|
12750
13704
|
<h2 class="fb-ver__title">Versioni</h2>\r
|
|
12751
13705
|
<button type="button" class="fb-btn fb-btn--ghost fb-btn--icon" aria-label="Chiudi" (click)="close()">\xD7</button>\r
|
|
12752
13706
|
</header>\r
|
|
@@ -12846,7 +13800,7 @@
|
|
|
12846
13800
|
</p>\r
|
|
12847
13801
|
</div>\r
|
|
12848
13802
|
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff)}.fb-ver__header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-ver__title{margin:0;font-size:14px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-ver__body{flex:1;min-height:0;overflow-y:auto;padding:10px 12px}.fb-ver__list{margin:12px 0 0;padding:0;list-style:none}.fb-ver__item{margin-bottom:6px;padding:8px;border:1px solid var(--fb-border-subtle, #e6e9ee);border-radius:6px;background:var(--fb-surface-alt, #f8f9fb)}.fb-ver__item--current{border-color:var(--fb-accent, #2f6feb);background:color-mix(in srgb,var(--fb-accent, #2f6feb) 5%,transparent)}.fb-ver__open{display:flex;align-items:center;gap:6px;width:100%;padding:0;border:0;background:transparent;color:var(--fb-text, #1d2939);font:inherit;text-align:left;cursor:pointer}.fb-ver__number{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;font-weight:700}.fb-ver__status{padding:1px 6px;border-radius:8px;background:var(--fb-border, #d6dae1);font-size:10px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-ver__status--active{background:color-mix(in srgb,var(--fb-success, #3f8f5f) 18%,transparent);color:var(--fb-success, #3f8f5f)}.fb-ver__status--invalid{background:color-mix(in srgb,var(--fb-warning, #b7791f) 16%,transparent);color:var(--fb-warning, #b7791f)}.fb-ver__badge{font-size:9px;color:var(--fb-accent, #2f6feb);text-transform:uppercase;letter-spacing:.05em}.fb-ver__meta{margin:3px 0 0;font-size:10px;color:var(--fb-text-muted, #667085)}.fb-ver__actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px}.fb-ver__hint{font-size:10px;color:var(--fb-text-subtle, #98a2b3)}.fb-ver__confirm{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:5px 7px;border-radius:5px;background:color-mix(in srgb,var(--fb-error, #c9372c) 8%,transparent);font-size:10px;color:var(--fb-error, #c9372c)}.fb-ver__note{margin:12px 0 0;font-size:10px;line-height:1.45;color:var(--fb-text-subtle, #98a2b3)}
|
|
12849
|
-
`]}]}],propDecorators:{closed:[{type:a.Output,args:["closed"]}],versionOpened:[{type:a.Output,args:["versionOpened"]}],notice:[{type:a.Output,args:["notice"]}]}});class
|
|
13803
|
+
`]}]}],propDecorators:{closed:[{type:a.Output,args:["closed"]}],versionOpened:[{type:a.Output,args:["versionOpened"]}],notice:[{type:a.Output,args:["notice"]}]}});class oe{store=b(T);dictionaries=b(I);catalog=b(M);mode=d.required(...ngDevMode?[{debugName:"mode"}]:[]);flowName=d(null,...ngDevMode?[{debugName:"flowName"}]:[]);version=d(null,...ngDevMode?[{debugName:"version"}]:[]);isDirty=d(!1,...ngDevMode?[{debugName:"isDirty"}]:[]);isBusy=d(!1,...ngDevMode?[{debugName:"isBusy"}]:[]);confirmed=v();cancelled=v();isDebug=s(()=>this.mode()==="debug",...ngDevMode?[{debugName:"isDebug"}]:[]);rawValues=u({},...ngDevMode?[{debugName:"rawValues"}]:[]);inputVariables=s(()=>this.store.document().variables?.filter(e=>e.isInput)??[],...ngDevMode?[{debugName:"inputVariables"}]:[]);membersByClass=u({},...ngDevMode?[{debugName:"membersByClass"}]:[]);valuesByEnumType=u({},...ngDevMode?[{debugName:"valuesByEnumType"}]:[]);constructor(){w(()=>{const e=new Set(this.inputVariables().filter(n=>this.isStructureVariable(n)).map(n=>n.objectType).filter(n=>!!n));for(const n of e)K(this.membersByClass)[n]||this.catalog.listStructureMembers(n).then(r=>this.membersByClass.update(t=>({...t,[n]:r??[]}))).catch(()=>this.membersByClass.update(r=>({...r,[n]:[]})))}),w(()=>{const e=new Set([...this.inputVariables().map(n=>n.dataType==="Enum"?n.objectType:void 0),...this.inputVariables().filter(n=>this.isStructureVariable(n)).flatMap(n=>this.membersOf(n.objectType)).map(n=>n.dataType==="Enum"?n.objectType:void 0)].filter(n=>!!n));for(const n of e)K(this.valuesByEnumType)[n]||this.catalog.listEnumValues(n).then(r=>this.valuesByEnumType.update(t=>({...t,[n]:r??[]}))).catch(()=>this.valuesByEnumType.update(r=>({...r,[n]:[]})))})}membersOf(e){return e?(this.membersByClass()[e]??[]).filter(n=>n.isWritable!==!1):[]}enumValuesOf(e){return e?this.valuesByEnumType()[e]??[]:[]}isStructureVariable(e){return this.dictionaries.isStructure(e.dataType)}setValue(e,n){this.rawValues.update(r=>({...r,[e]:n}))}valueOf(e){return this.rawValues()[e]??""}static coerce(e,n){switch(n){case"Integer":{const r=Number.parseInt(e,10);return Number.isNaN(r)?void 0:r}case"Number":{const r=Number.parseFloat(e);return Number.isNaN(r)?void 0:r}case"Boolean":return e==="true";default:return e}}collectInputs(){const e=this.rawValues(),n={};for(const r of this.inputVariables()){const t=r.name;if(!t)continue;if(this.isStructureVariable(r)){const c=r.objectType;if(!c)continue;const p={};for(const g of this.membersOf(c)){const f=e[`${t}.${g.name}`];if(f===void 0||f==="")continue;const m=oe.coerce(f,g.dataType);m!==void 0&&(p[g.name]={type:g.dataType,value:m})}Object.keys(p).length&&(n[t]={type:"Structure",instance:{className:c,members:p}});continue}const i=e[t];if(i===void 0||i==="")continue;const l=oe.coerce(i,r.dataType);l!==void 0&&(n[t]=l)}return n}confirm(){this.confirmed.emit(this.collectInputs())}cancel(){this.cancelled.emit()}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:oe,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:oe,isStandalone:!0,selector:"fb-run-dialog",inputs:{mode:{classPropertyName:"mode",publicName:"mode",isSignal:!0,isRequired:!0,transformFunction:null},flowName:{classPropertyName:"flowName",publicName:"flowName",isSignal:!0,isRequired:!1,transformFunction:null},version:{classPropertyName:"version",publicName:"version",isSignal:!0,isRequired:!1,transformFunction:null},isDirty:{classPropertyName:"isDirty",publicName:"isDirty",isSignal:!0,isRequired:!1,transformFunction:null},isBusy:{classPropertyName:"isBusy",publicName:"isBusy",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{confirmed:"confirmed",cancelled:"cancelled"},ngImport:a,template:`<div class="fb-dialog__backdrop" (click)="cancel()"></div>\r
|
|
12850
13804
|
\r
|
|
12851
13805
|
<div\r
|
|
12852
13806
|
class="fb-dialog__panel fb-run"\r
|
|
@@ -13010,7 +13964,7 @@
|
|
|
13010
13964
|
</footer>\r
|
|
13011
13965
|
</div>\r
|
|
13012
13966
|
`,styles:[`:host{position:absolute;inset:0;z-index:40;display:grid;place-items:center;padding:24px}.fb-dialog__backdrop{position:absolute;inset:0;background:#10182852;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.fb-dialog__panel{position:relative;display:flex;flex-direction:column;width:min(520px,100%);max-height:min(720px,100%);border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-lg, 12px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-lg, 0 18px 44px rgb(16 24 40 / 18%));outline:none;overflow:hidden}.fb-dialog__head,.fb-dialog__foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px}.fb-dialog__head{border-bottom:1px solid var(--fb-border-subtle, #eef0f4)}.fb-dialog__foot{border-top:1px solid var(--fb-border-subtle, #eef0f4)}.fb-dialog__type{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #6b7086)}.fb-dialog__title{margin:0;font-size:15px;font-weight:600}.fb-dialog__note{color:var(--fb-text-muted, #6b7086);font-size:12px}.fb-dialog__foot .fb-dialog__note{flex:1 1 auto;min-width:0}.fb-dialog__body{display:flex;flex-direction:column;gap:14px;padding:14px;overflow:auto}.fb-run__version{margin-left:4px;color:var(--fb-text-muted, #6b7086);font-weight:500;font-size:12px}.fb-run__section{display:flex;flex-direction:column;gap:8px}.fb-run__title{margin:0;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #6b7086)}.fb-run__type{color:var(--fb-text-muted, #6b7086);font-size:11px;font-weight:400}.fb-run__member{padding-left:12px;border-left:2px solid var(--fb-border-subtle, #eef0f4)}.fb-run__warn{margin:0;padding:8px 10px;border-radius:var(--fb-radius-sm, 8px);background:var(--fb-surface-alt, #f7f8fa);color:var(--fb-warning, #b7791f);font-size:12px}.fb-run__actions{display:flex;flex:0 0 auto;gap:8px}.fb-run__actions .fb-btn{white-space:nowrap}
|
|
13013
|
-
`],dependencies:[{kind:"directive",type:
|
|
13967
|
+
`],dependencies:[{kind:"directive",type:k,selector:"select[fbValue]",inputs:["fbValue"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:oe,decorators:[{type:y,args:[{selector:"fb-run-dialog",standalone:!0,imports:[k],changeDetection:_.OnPush,template:`<div class="fb-dialog__backdrop" (click)="cancel()"></div>\r
|
|
13014
13968
|
\r
|
|
13015
13969
|
<div\r
|
|
13016
13970
|
class="fb-dialog__panel fb-run"\r
|
|
@@ -13174,7 +14128,7 @@
|
|
|
13174
14128
|
</footer>\r
|
|
13175
14129
|
</div>\r
|
|
13176
14130
|
`,styles:[`:host{position:absolute;inset:0;z-index:40;display:grid;place-items:center;padding:24px}.fb-dialog__backdrop{position:absolute;inset:0;background:#10182852;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.fb-dialog__panel{position:relative;display:flex;flex-direction:column;width:min(520px,100%);max-height:min(720px,100%);border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-lg, 12px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-lg, 0 18px 44px rgb(16 24 40 / 18%));outline:none;overflow:hidden}.fb-dialog__head,.fb-dialog__foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px}.fb-dialog__head{border-bottom:1px solid var(--fb-border-subtle, #eef0f4)}.fb-dialog__foot{border-top:1px solid var(--fb-border-subtle, #eef0f4)}.fb-dialog__type{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #6b7086)}.fb-dialog__title{margin:0;font-size:15px;font-weight:600}.fb-dialog__note{color:var(--fb-text-muted, #6b7086);font-size:12px}.fb-dialog__foot .fb-dialog__note{flex:1 1 auto;min-width:0}.fb-dialog__body{display:flex;flex-direction:column;gap:14px;padding:14px;overflow:auto}.fb-run__version{margin-left:4px;color:var(--fb-text-muted, #6b7086);font-weight:500;font-size:12px}.fb-run__section{display:flex;flex-direction:column;gap:8px}.fb-run__title{margin:0;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--fb-text-muted, #6b7086)}.fb-run__type{color:var(--fb-text-muted, #6b7086);font-size:11px;font-weight:400}.fb-run__member{padding-left:12px;border-left:2px solid var(--fb-border-subtle, #eef0f4)}.fb-run__warn{margin:0;padding:8px 10px;border-radius:var(--fb-radius-sm, 8px);background:var(--fb-surface-alt, #f7f8fa);color:var(--fb-warning, #b7791f);font-size:12px}.fb-run__actions{display:flex;flex:0 0 auto;gap:8px}.fb-run__actions .fb-btn{white-space:nowrap}
|
|
13177
|
-
`]}]}],ctorParameters:()=>[],propDecorators:{mode:[{type:a.Input,args:[{isSignal:!0,alias:"mode",required:!0}]}],flowName:[{type:a.Input,args:[{isSignal:!0,alias:"flowName",required:!1}]}],version:[{type:a.Input,args:[{isSignal:!0,alias:"version",required:!1}]}],isDirty:[{type:a.Input,args:[{isSignal:!0,alias:"isDirty",required:!1}]}],isBusy:[{type:a.Input,args:[{isSignal:!0,alias:"isBusy",required:!1}]}],confirmed:[{type:a.Output,args:["confirmed"]}],cancelled:[{type:a.Output,args:["cancelled"]}]}});class
|
|
14131
|
+
`]}]}],ctorParameters:()=>[],propDecorators:{mode:[{type:a.Input,args:[{isSignal:!0,alias:"mode",required:!0}]}],flowName:[{type:a.Input,args:[{isSignal:!0,alias:"flowName",required:!1}]}],version:[{type:a.Input,args:[{isSignal:!0,alias:"version",required:!1}]}],isDirty:[{type:a.Input,args:[{isSignal:!0,alias:"isDirty",required:!1}]}],isBusy:[{type:a.Input,args:[{isSignal:!0,alias:"isBusy",required:!1}]}],confirmed:[{type:a.Output,args:["confirmed"]}],cancelled:[{type:a.Output,args:["cancelled"]}]}});class De{outcome=d(null,...ngDevMode?[{debugName:"outcome"}]:[]);wasDebug=d(!1,...ngDevMode?[{debugName:"wasDebug"}]:[]);isRunning=d(!1,...ngDevMode?[{debugName:"isRunning"}]:[]);closed=v();elementFocused=v();cleared=v();status=s(()=>this.outcome()?.status??null,...ngDevMode?[{debugName:"status"}]:[]);trace=s(()=>this.outcome()?.trace??[],...ngDevMode?[{debugName:"trace"}]:[]);resourceRows=s(()=>Lt(this.outcome()?.resources).sort((e,n)=>e.name.localeCompare(n.name)),...ngDevMode?[{debugName:"resourceRows"}]:[]);outputRows=s(()=>Lt(this.outcome()?.outputs),...ngDevMode?[{debugName:"outputRows"}]:[]);isEmptyOutcome=s(()=>{const e=this.outcome();return e?!e.status&&!e.trace?.length&&!e.errors?.length&&!e.fault&&!this.resourceRows().length&&!this.outputRows().length:!1},...ngDevMode?[{debugName:"isEmptyOutcome"}]:[]);close(){this.closed.emit()}clear(){this.cleared.emit()}statusLabel(){switch(this.status()){case"Completed":return"Completata";case"WaitingForScreen":return"In attesa di un form";case"Paused":return"In pausa";case"Suspended":return"Sospesa";case"Failed":return"Fallita";case"NotStarted":return"Non avviata";default:return this.status()??""}}statusNote(){switch(this.status()){case"Failed":return"Il flow e\u2019 fallito: la chiamata e\u2019 andata a buon fine, l\u2019esecuzione no.";case"NotStarted":return"I criteri dello Start non erano soddisfatti: non e\u2019 un errore.";case"WaitingForScreen":return"L\u2019esecuzione e\u2019 ferma su una schermata: a mostrarla e\u2019 l\u2019applicazione, non l\u2019editor.";case"Paused":case"Suspended":return"L\u2019esecuzione non e\u2019 finita: puo\u2019 essere ripresa da chi la conduce.";default:return null}}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:De,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:De,isStandalone:!0,selector:"fb-debug-panel",inputs:{outcome:{classPropertyName:"outcome",publicName:"outcome",isSignal:!0,isRequired:!1,transformFunction:null},wasDebug:{classPropertyName:"wasDebug",publicName:"wasDebug",isSignal:!0,isRequired:!1,transformFunction:null},isRunning:{classPropertyName:"isRunning",publicName:"isRunning",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{closed:"closed",elementFocused:"elementFocused",cleared:"cleared"},ngImport:a,template:`<header class="fb-dbg__header">\r
|
|
13178
14132
|
<h2 class="fb-dbg__title">Debug</h2>\r
|
|
13179
14133
|
@if (outcome()) {\r
|
|
13180
14134
|
<button type="button" class="fb-btn fb-btn--ghost fb-btn--icon" title="Svuota" (click)="clear()">Svuota</button>\r
|
|
@@ -13309,7 +14263,7 @@
|
|
|
13309
14263
|
}\r
|
|
13310
14264
|
</div>\r
|
|
13311
14265
|
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff)}.fb-dbg__header{display:flex;align-items:center;gap:6px;padding:10px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-dbg__title{margin:0 auto 0 0;font-size:14px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-dbg__body{flex:1;min-height:0;overflow-y:auto;padding:10px 12px}.fb-dbg__status{display:flex;align-items:center;gap:8px;margin-bottom:10px}.fb-dbg__badge{padding:2px 8px;border-radius:10px;background:var(--fb-border, #d6dae1);font-size:11px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-dbg__badge--ok{background:color-mix(in srgb,var(--fb-success, #3f8f5f) 18%,transparent);color:var(--fb-success, #3f8f5f)}.fb-dbg__badge--fail{background:color-mix(in srgb,var(--fb-error, #c9372c) 14%,transparent);color:var(--fb-error, #c9372c)}.fb-dbg__badge--wait{background:color-mix(in srgb,var(--fb-accent, #2f6feb) 12%,transparent);color:var(--fb-accent, #2f6feb)}.fb-dbg__steps{font-size:10px;color:var(--fb-text-muted, #667085)}.fb-dbg__current{padding:0;border:0;background:transparent;color:var(--fb-accent, #2f6feb);font:inherit;font-size:10px;cursor:pointer;text-decoration:underline}.fb-dbg__type{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;color:var(--fb-text-subtle, #98a2b3)}.fb-dbg__table{width:100%;border-collapse:collapse;font-size:11px}.fb-dbg__table caption{padding-bottom:3px;font-size:10px;color:var(--fb-text-subtle, #98a2b3);text-align:left}.fb-dbg__table th,.fb-dbg__table td{padding:3px 5px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee);text-align:left;vertical-align:top}.fb-dbg__table th{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:600;color:var(--fb-text, #1d2939)}.fb-dbg__table td{color:var(--fb-text-muted, #667085);word-break:break-word}.fb-dbg__trace{margin:0;padding:0;list-style:none}.fb-dbg__trace-item{display:flex;gap:6px;padding:3px 0;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee);font-size:11px}.fb-dbg__trace-seq{flex:0 0 auto;width:18px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;color:var(--fb-text-subtle, #98a2b3);text-align:right}.fb-dbg__trace-el{flex:0 0 auto;padding:0;border:0;background:transparent;color:var(--fb-accent, #2f6feb);font:inherit;font-size:10px;cursor:pointer;text-decoration:underline}.fb-dbg__trace-msg{color:var(--fb-text-muted, #667085);line-height:1.35}
|
|
13312
|
-
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:
|
|
14266
|
+
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:De,decorators:[{type:y,args:[{selector:"fb-debug-panel",standalone:!0,changeDetection:_.OnPush,template:`<header class="fb-dbg__header">\r
|
|
13313
14267
|
<h2 class="fb-dbg__title">Debug</h2>\r
|
|
13314
14268
|
@if (outcome()) {\r
|
|
13315
14269
|
<button type="button" class="fb-btn fb-btn--ghost fb-btn--icon" title="Svuota" (click)="clear()">Svuota</button>\r
|
|
@@ -13444,7 +14398,117 @@
|
|
|
13444
14398
|
}\r
|
|
13445
14399
|
</div>\r
|
|
13446
14400
|
`,styles:[`:host{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--fb-surface, #fff)}.fb-dbg__header{display:flex;align-items:center;gap:6px;padding:10px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee)}.fb-dbg__title{margin:0 auto 0 0;font-size:14px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-dbg__body{flex:1;min-height:0;overflow-y:auto;padding:10px 12px}.fb-dbg__status{display:flex;align-items:center;gap:8px;margin-bottom:10px}.fb-dbg__badge{padding:2px 8px;border-radius:10px;background:var(--fb-border, #d6dae1);font-size:11px;font-weight:600;color:var(--fb-text, #1d2939)}.fb-dbg__badge--ok{background:color-mix(in srgb,var(--fb-success, #3f8f5f) 18%,transparent);color:var(--fb-success, #3f8f5f)}.fb-dbg__badge--fail{background:color-mix(in srgb,var(--fb-error, #c9372c) 14%,transparent);color:var(--fb-error, #c9372c)}.fb-dbg__badge--wait{background:color-mix(in srgb,var(--fb-accent, #2f6feb) 12%,transparent);color:var(--fb-accent, #2f6feb)}.fb-dbg__steps{font-size:10px;color:var(--fb-text-muted, #667085)}.fb-dbg__current{padding:0;border:0;background:transparent;color:var(--fb-accent, #2f6feb);font:inherit;font-size:10px;cursor:pointer;text-decoration:underline}.fb-dbg__type{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;color:var(--fb-text-subtle, #98a2b3)}.fb-dbg__table{width:100%;border-collapse:collapse;font-size:11px}.fb-dbg__table caption{padding-bottom:3px;font-size:10px;color:var(--fb-text-subtle, #98a2b3);text-align:left}.fb-dbg__table th,.fb-dbg__table td{padding:3px 5px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee);text-align:left;vertical-align:top}.fb-dbg__table th{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:600;color:var(--fb-text, #1d2939)}.fb-dbg__table td{color:var(--fb-text-muted, #667085);word-break:break-word}.fb-dbg__trace{margin:0;padding:0;list-style:none}.fb-dbg__trace-item{display:flex;gap:6px;padding:3px 0;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee);font-size:11px}.fb-dbg__trace-seq{flex:0 0 auto;width:18px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;color:var(--fb-text-subtle, #98a2b3);text-align:right}.fb-dbg__trace-el{flex:0 0 auto;padding:0;border:0;background:transparent;color:var(--fb-accent, #2f6feb);font:inherit;font-size:10px;cursor:pointer;text-decoration:underline}.fb-dbg__trace-msg{color:var(--fb-text-muted, #667085);line-height:1.35}
|
|
13447
|
-
`]}]}],propDecorators:{outcome:[{type:a.Input,args:[{isSignal:!0,alias:"outcome",required:!1}]}],wasDebug:[{type:a.Input,args:[{isSignal:!0,alias:"wasDebug",required:!1}]}],isRunning:[{type:a.Input,args:[{isSignal:!0,alias:"isRunning",required:!1}]}],closed:[{type:a.Output,args:["closed"]}],elementFocused:[{type:a.Output,args:["elementFocused"]}],cleared:[{type:a.Output,args:["cleared"]}]}});function dt(o){return Object.entries(o??{}).map(([e,n])=>({name:e,type:n?.type??"",value:ut(n)}))}function ut(o){if(!o)return"\u2014";if(o.instance){const e=Object.entries(o.instance.members??{}).map(([n,r])=>`${n}: ${ut(r)}`).join(", ");return`${o.instance.className??"istanza"} { ${e} }`}if(o.record){const e=Object.entries(o.record.fields??{}).map(([r,t])=>`${r}: ${t==null?"\u2014":String(t)}`).join(", ");return`${[o.record.objectType,o.record.id].filter(Boolean).join("#")||"record"} { ${e} }`}return o.value===void 0||o.value===null?"\u2014":typeof o.value=="object"?JSON.stringify(o.value):String(o.value)}class Ke{api=b(L);clipboard=b(Te);destroyRef=b(bn);injector=b(ht);store=b($);dictionaries=b(R);session=b(Q);validation=b(G);layout=b(re);flowName=d(null,...ngDevMode?[{debugName:"flowName"}]:[]);version=d(null,...ngDevMode?[{debugName:"version"}]:[]);author=d(void 0,...ngDevMode?[{debugName:"author"}]:[]);defaultProcessType=d("Screen",...ngDevMode?[{debugName:"defaultProcessType"}]:[]);inspectorMode=d("dialog",...ngDevMode?[{debugName:"inspectorMode"}]:[]);saved=v();activated=v();closeRequested=v();selectedName=u(z,...ngDevMode?[{debugName:"selectedName"}]:[]);activePanel=u("inspector",...ngDevMode?[{debugName:"activePanel"}]:[]);isDialogOpen=u(!1,...ngDevMode?[{debugName:"isDialogOpen"}]:[]);showProblems=u(!0,...ngDevMode?[{debugName:"showProblems"}]:[]);notice=u(null,...ngDevMode?[{debugName:"notice"}]:[]);outline=u(null,...ngDevMode?[{debugName:"outline"}]:[]);isLoading=u(!1,...ngDevMode?[{debugName:"isLoading"}]:[]);lastDocument;outlineTimer;isDialogMode=i(()=>this.inspectorMode()==="dialog",...ngDevMode?[{debugName:"isDialogMode"}]:[]);sidePanel=i(()=>{const e=this.activePanel();return this.isDialogMode()&&e==="inspector"?"resources":e},...ngDevMode?[{debugName:"sidePanel"}]:[]);document=i(()=>this.store.document(),...ngDevMode?[{debugName:"document"}]:[]);isDirty=i(()=>this.store.isDirty(),...ngDevMode?[{debugName:"isDirty"}]:[]);canUndo=i(()=>this.store.canUndo(),...ngDevMode?[{debugName:"canUndo"}]:[]);canRedo=i(()=>this.store.canRedo(),...ngDevMode?[{debugName:"canRedo"}]:[]);primaryCommand=i(()=>this.session.primaryCommand(),...ngDevMode?[{debugName:"primaryCommand"}]:[]);isEditable=i(()=>this.session.isEditable(),...ngDevMode?[{debugName:"isEditable"}]:[]);conflict=i(()=>this.session.conflict(),...ngDevMode?[{debugName:"conflict"}]:[]);errorCount=i(()=>this.validation.errorCount(),...ngDevMode?[{debugName:"errorCount"}]:[]);warningCount=i(()=>this.validation.warningCount(),...ngDevMode?[{debugName:"warningCount"}]:[]);canActivate=i(()=>this.session.canActivate(),...ngDevMode?[{debugName:"canActivate"}]:[]);isBusy=i(()=>this.session.isBusy()||this.isLoading(),...ngDevMode?[{debugName:"isBusy"}]:[]);statusLabel=i(()=>{const e=this.session.currentVersionSummary();if(!e)return"Nuovo";switch(e.status){case"Draft":return"Bozza";case"InvalidDraft":return"Bozza con errori";case"UnderReview":return"In approvazione";case"Active":return"Attiva";case"Obsolete":return"Superata";default:return e.status??""}},...ngDevMode?[{debugName:"statusLabel"}]:[]);constructor(){this.clipboard.refresh(),w(()=>{this.dictionaries.load(this.store.document().processType)}),w(()=>{this.session.setAuthor(this.author())}),w(()=>{const e=this.flowName(),n=this.version();this.openOrCreate(e,n)}),w(()=>{const e=this.store.document();e!==this.lastDocument&&(this.lastDocument=e,this.validation.schedule(e),this.scheduleOutline(e))}),this.destroyRef.onDestroy(()=>{this.outlineTimer&&clearTimeout(this.outlineTimer)})}async openOrCreate(e,n){if(!(e&&e===this.session.flowName()&&n!=null&&n===this.session.version())){this.isLoading.set(!0),this.notice.set(null),this.isDialogOpen.set(!1);try{e?await this.session.open(e,n??void 0):this.session.startNew("","",this.defaultProcessType()),this.selectedName.set(z)}catch(r){this.showError(r)}finally{this.isLoading.set(!1)}}}scheduleOutline(e){this.outlineTimer&&clearTimeout(this.outlineTimer),this.outlineTimer=setTimeout(()=>{this.outlineTimer=void 0,this.api.getOutline(e).then(n=>this.outline.set(n)).catch(()=>this.outline.set(null))},500)}setLabel(e){this.store.updateHeader(n=>{n.label=e||void 0})}setFullName(e){this.store.updateHeader(n=>{n.fullName=e||void 0})}setDescription(e){this.store.updateHeader(n=>{n.description=e||void 0})}setInterviewLabel(e){this.store.updateHeader(n=>{n.interviewLabel=e||void 0})}setProcessType(e){this.store.updateHeader(n=>{n.processType=e})}processTypes=i(()=>this.dictionaries.processTypes(),...ngDevMode?[{debugName:"processTypes"}]:[]);isProcessTypeOutOfCatalog=i(()=>{const e=this.store.document().processType;return!!e&&!this.processTypes().some(n=>n.value===e)},...ngDevMode?[{debugName:"isProcessTypeOutOfCatalog"}]:[]);screenCount=i(()=>{const e=this.store.document();return(e.screens?.length??0)+(e.dynamicScreens?.length??0)},...ngDevMode?[{debugName:"screenCount"}]:[]);hasScreensInAutoLaunched=i(()=>this.store.document().processType==="AutoLaunched"&&this.screenCount()>0,...ngDevMode?[{debugName:"hasScreensInAutoLaunched"}]:[]);hasNoScreensInScreenFlow=i(()=>this.store.document().processType==="Screen"&&this.screenCount()===0,...ngDevMode?[{debugName:"hasNoScreensInScreenFlow"}]:[]);isOrchestrationWithoutStages=i(()=>{const e=this.store.document();return e.processType==="Orchestration"&&(e.orchestratedStages?.length??0)===0},...ngDevMode?[{debugName:"isOrchestrationWithoutStages"}]:[]);onSelectionChange(e){this.selectedNames.set(e);const n=e[0]??null;this.selectedName.set(n),n&&!this.isDialogMode()&&this.activePanel.set("inspector")}onNodeOpened(e){this.openElement(e)}focusElement(e){this.openElement(e)}openElement(e){if(this.selectedName.set(e),this.isDialogMode()){this.isDialogOpen.set(!0);return}this.activePanel.set("inspector")}openSelectedElement(){const e=this.selectedName();e&&this.openElement(e)}closeDialog(){this.isDialogOpen.set(!1)}highlightElement(e){this.selectedName.set(e)}onElementDropped(e){this.createElement(e.type,e.variant,e.x,e.y)}onElementPicked(e){const r=this.store.nodes().reduce((t,s)=>Math.max(t,s.node.locationY??0),60);this.createElement(e.type,e.variant,60,r+120)}createElement(e,n,r,t){const s=this.dictionaries.collectionOf(e);if(!s){this.notice.set({kind:"error",message:`Tipo di elemento non riconosciuto: ${e}.`});return}const l=this.dictionaries.variantsOf(e),c=n??l[0]?.value,f=c?this.dictionaries.variantLabelOf(e,c)||this.dictionaries.labelOf(e):this.dictionaries.labelOf(e),g=W(f,this.store.usedNames()),p={name:g,label:f,locationX:Math.round(r),locationY:Math.round(t),...ur(e,c)};(e==="RecordLookup"||e==="RecordCreate")&&(p.storeOutputAutomatically=!0),e==="Decision"&&(p.rules=[{name:"Regola",label:"Regola 1",conditionLogic:"and",conditions:[{operator:"EqualTo"}]}]),e==="CustomError"&&(p.customErrorMessages=[{errorMessage:""}]),e==="Wait"&&(p.waitEvents=[{name:"Evento",label:"Evento 1"}]),e==="OrchestratedStage"&&(p.stageSteps=[{name:W("Step",[...this.store.usedNames(),g]),label:"Step 1"}]),this.store.addNode(s,p),this.openElement(g)}onRemoveNode(e){this.store.removeNode(e),this.selectedNames.update(n=>n.filter(r=>r!==e)),this.selectedName()===e&&(this.selectedName.set(z),this.isDialogOpen.set(!1))}onNodeRenamed(e){this.selectedName.set(e)}onDuplicateNode(e){this.duplicateNames([e])}selectedNames=u([],...ngDevMode?[{debugName:"selectedNames"}]:[]);pastePreview=u(null,...ngDevMode?[{debugName:"pastePreview"}]:[]);copyableNames(){const e=this.selectedNames().length?this.selectedNames():[this.selectedName()??""],n=this.store.nodeByName();return e.filter(r=>!!r&&r!==z&&n.has(r))}canCopy=i(()=>this.copyableNames().length>0,...ngDevMode?[{debugName:"canCopy"}]:[]);canPaste=i(()=>(this.clipboard.revision(),this.clipboard.hasContent()),...ngDevMode?[{debugName:"canPaste"}]:[]);copySelection(){const e=this.copyableNames();if(!e.length)return;const n=Pn({nodes:this.store.nodes(),resources:this.store.resources(),names:e,flowName:this.session.flowName()??this.store.document().fullName,processType:this.store.document().processType});if(!n)return;this.clipboard.write(n),this.clipboard.refresh();const r=n.nodes.length,t=n.resources.length;this.notice.set({kind:"info",message:t?`Copiati ${r} ${r===1?"elemento":"elementi"} e ${t} ${t===1?"risorsa referenziata":"risorse referenziate"}.`:`Copiati ${r} ${r===1?"elemento":"elementi"}.`})}startPaste(){if(!this.isEditable())return;const e=this.clipboard.read();if(!e){this.notice.set({kind:"info",message:"Non c\u2019e\u2019 niente da incollare."});return}const n=Vn(e,{usedNames:this.store.usedNames(),processType:this.store.document().processType});this.pastePreview.set({payload:e,plan:n})}cancelPaste(){this.pastePreview.set(null)}confirmPaste(e){const n=this.pastePreview();if(!n)return;const r=this.store.pasteClipboard(n.payload,n.plan,{createMissingResources:e.createMissingResources});this.pastePreview.set(null),this.selectNames(r);const t=r.length;this.notice.set({kind:"info",message:`Incollati ${t} ${t===1?"elemento":"elementi"}.`})}duplicateSelection(){this.duplicateNames(this.copyableNames())}duplicateNames(e){if(!this.isEditable()||!e.length)return;const n=this.store.duplicateNodes(e);this.selectNames(n)}selectNames(e){e.length&&(this.selectedNames.set(e),this.selectedName.set(e[0]))}onKeyDown(e){if(!(e.ctrlKey||e.metaKey)||e.altKey)return;const n=e.target,r=n?.tagName;if(!(r==="INPUT"||r==="TEXTAREA"||r==="SELECT"||n?.isContentEditable))switch(e.key.toLowerCase()){case"c":this.canCopy()&&(e.preventDefault(),this.copySelection());return;case"v":e.preventDefault(),this.startPaste();return;case"d":this.canCopy()&&(e.preventDefault(),this.duplicateSelection());return;default:return}}autoLayout(){const e=[{name:z,width:Gn(K("Start",this.store.start()).length),height:Wn},...this.store.nodes().map(t=>({name:t.name,width:Gn(K(t.type,t.node).length),height:Wn}))],n=this.layout.layout(e,this.store.edges(),{direction:"TB"});if(!n.positions.size)return;let r=!0;for(const[t,s]of n.positions)this.store.moveNode(t,s.x,s.y,{silent:!r}),r=!1}undo(){this.store.undo()}redo(){this.store.redo()}async save(){const e=this.store.document();if(!e.fullName){this.notice.set({kind:"error",message:"Dai un nome tecnico al flow prima di salvare."});return}try{const n=await this.session.save({flowName:e.fullName});this.saved.emit(n);const r=n.validation?.errorCount??0,t=this.session.version(),s=t!=null?`Salvato come versione ${t}`:"Salvato";this.notice.set({kind:"info",message:r?`${s}, con ${r} ${r===1?"errore":"errori"} da correggere.`:`${s}.`})}catch(n){this.showError(n)}}isCopyOpen=u(!1,...ngDevMode?[{debugName:"isCopyOpen"}]:[]);copyName=u("",...ngDevMode?[{debugName:"copyName"}]:[]);copyLabel=u("",...ngDevMode?[{debugName:"copyLabel"}]:[]);copyNameInput=Ye("copyNameInput",...ngDevMode?[{debugName:"copyNameInput"}]:[]);canDuplicate=i(()=>!this.session.isNew()&&!!this.session.flowName(),...ngDevMode?[{debugName:"canDuplicate"}]:[]);copyNameProblem=i(()=>{const e=this.copyName().trim();if(!e)return"Il nome tecnico della copia e\u2019 obbligatorio.";if(!pr(e))return"Deve iniziare con una lettera e contenere solo lettere, cifre e underscore.";const n=this.session.flowName();return n&&n.toLowerCase()===e.toLowerCase()?"La copia deve avere un nome diverso dall\u2019originale.":null},...ngDevMode?[{debugName:"copyNameProblem"}]:[]);copyHint=i(()=>this.isDirty()?"La copia comprende le modifiche non salvate; l\u2019originale resta come e\u2019 ora.":"La copia nasce come versione 1 di un flow nuovo.",...ngDevMode?[{debugName:"copyHint"}]:[]);startCopy(){const e=this.session.flowName()??this.store.document().fullName??"";this.copyName.set(le(`${e} Copia`)||"Copia");const n=this.store.document().label;this.copyLabel.set(n?`${n} (copia)`:""),this.isCopyOpen.set(!0),_t(()=>{const r=this.copyNameInput()?.nativeElement;r?.focus(),r?.select()},{injector:this.injector})}cancelCopy(){this.isCopyOpen.set(!1)}setCopyName(e){this.copyName.set(e)}setCopyLabel(e){this.copyLabel.set(e)}async confirmCopy(){if(this.copyNameProblem())return;const e=this.copyName().trim(),n=this.copyLabel().trim();try{const r=await this.session.saveAs(e,{label:n||void 0});this.isCopyOpen.set(!1),this.saved.emit(r);const t=this.session.version();this.notice.set({kind:"info",message:t!=null?`Creata la copia \xAB${r.flowName}\xBB v${t}: l\u2019editor lavora su di essa.`:`Creata la copia \xAB${r.flowName}\xBB: l\u2019editor lavora su di essa.`})}catch(r){this.showError(r)}}runMode=u(null,...ngDevMode?[{debugName:"runMode"}]:[]);isStartingRun=u(!1,...ngDevMode?[{debugName:"isStartingRun"}]:[]);runOutcome=u(null,...ngDevMode?[{debugName:"runOutcome"}]:[]);wasRunInDebug=u(!1,...ngDevMode?[{debugName:"wasRunInDebug"}]:[]);canRun=i(()=>!this.session.isNew()&&!!this.session.flowName(),...ngDevMode?[{debugName:"canRun"}]:[]);openRun(e){this.canRun()&&this.runMode.set(e)}closeRun(){this.runMode.set(null)}clearRunOutcome(){this.runOutcome.set(null)}async confirmRun(e){const n=this.runMode(),r=this.session.flowName();if(!n||!r)return;const t={flowName:r,version:this.session.version()??void 0,inputs:e,debug:n==="debug"};this.isStartingRun.set(!0),this.runOutcome.set(null),this.wasRunInDebug.set(n==="debug"),this.activePanel.set("debug"),this.runMode.set(null);try{const s=await(n==="debug"?this.api.debugFlow(t):this.api.runFlow(t));this.runOutcome.set(s??null),s||this.notice.set({kind:"info",message:n==="debug"?"Debug avviato.":"Esecuzione avviata."})}catch(s){if(T.is(s)&&s.category==="MissingService"){this.notice.set({kind:"error",message:n==="debug"?"Questo ambiente non espone il debug dei flow: manca l\u2019implementazione di debugFlow.":"Questo ambiente non espone l\u2019esecuzione dei flow: manca l\u2019implementazione di runFlow."});return}this.showError(s)}finally{this.isStartingRun.set(!1)}}async createNewVersion(){try{const n=(await this.session.createNewVersion()).version??this.session.version();this.notice.set({kind:"info",message:n!=null?`Creata la versione ${n}.`:"Creata una nuova versione."})}catch(e){this.showError(e)}}async activate(){try{const e=await this.session.activate();this.activated.emit(e),this.notice.set({kind:"info",message:`Versione ${e.version} attivata.`})}catch(e){T.is(e)&&e.category==="ValidationFailed"&&this.showProblems.set(!0),this.showError(e)}}async reloadAfterConflict(){try{await this.session.reloadAfterConflict(),this.notice.set({kind:"info",message:"Ricaricata la versione salvata da altri."})}catch(e){this.showError(e)}}async saveAsNewVersionAfterConflict(){try{const e=await this.session.saveAsNewVersionAfterConflict();this.notice.set({kind:"info",message:`Le tue modifiche sono nella nuova versione ${e.version}.`})}catch(e){this.showError(e)}}dismissConflict(){this.session.dismissConflict()}exportJson(){return JSON.stringify(this.store.document(),null,2)}async importJson(e){let n;try{n=JSON.parse(e)}catch{this.notice.set({kind:"error",message:"Il file non e\u2019 JSON valido."});return}try{const r=await this.api.parseFlow(n);this.store.load(r),this.notice.set({kind:"info",message:"Documento importato."})}catch(r){if(T.is(r)&&r.category==="MissingService"){this.store.load(n),this.notice.set({kind:"info",message:"Documento importato senza normalizzazione: il backend non espone la primitiva."});return}this.showError(r)}}onFileSelected(e){const n=e.target,r=n.files?.[0];r&&(r.text().then(t=>this.importJson(t)),n.value="")}async openVersion(e){const n=this.session.flowName();if(n){this.isLoading.set(!0),this.isDialogOpen.set(!1);try{await this.session.open(n,e),this.selectedName.set(z)}catch(r){this.showError(r)}finally{this.isLoading.set(!1)}}}async validateNow(){await this.validation.run(this.store.document()),this.showProblems.set(!0)}setPanel(e){this.activePanel.set(e)}toggleProblems(){this.showProblems.update(e=>!e)}showNotice(e){this.notice.set(e)}dismissNotice(){this.notice.set(null)}showError(e){if(T.is(e)){this.notice.set({kind:"error",message:e.message});return}this.notice.set({kind:"error",message:e instanceof Error?e.message:String(e)})}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:Ke,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:Ke,isStandalone:!0,selector:"fb-flow-builder",inputs:{flowName:{classPropertyName:"flowName",publicName:"flowName",isSignal:!0,isRequired:!1,transformFunction:null},version:{classPropertyName:"version",publicName:"version",isSignal:!0,isRequired:!1,transformFunction:null},author:{classPropertyName:"author",publicName:"author",isSignal:!0,isRequired:!1,transformFunction:null},defaultProcessType:{classPropertyName:"defaultProcessType",publicName:"defaultProcessType",isSignal:!0,isRequired:!1,transformFunction:null},inspectorMode:{classPropertyName:"inspectorMode",publicName:"inspectorMode",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{saved:"saved",activated:"activated",closeRequested:"closeRequested"},host:{listeners:{keydown:"onKeyDown($event)"}},providers:[$,R,S,G,oe,Q,re],viewQueries:[{propertyName:"copyNameInput",first:!0,predicate:["copyNameInput"],descendants:!0,isSignal:!0}],ngImport:a,template:`<div class="fb-builder" [attr.data-fb-theme]="null">\r
|
|
14401
|
+
`]}]}],propDecorators:{outcome:[{type:a.Input,args:[{isSignal:!0,alias:"outcome",required:!1}]}],wasDebug:[{type:a.Input,args:[{isSignal:!0,alias:"wasDebug",required:!1}]}],isRunning:[{type:a.Input,args:[{isSignal:!0,alias:"isRunning",required:!1}]}],closed:[{type:a.Output,args:["closed"]}],elementFocused:[{type:a.Output,args:["elementFocused"]}],cleared:[{type:a.Output,args:["cleared"]}]}});function Lt(o){return Object.entries(o??{}).map(([e,n])=>({name:e,type:n?.type??"",value:Bt(n)}))}function Bt(o){if(!o)return"\u2014";if(o.instance){const e=Object.entries(o.instance.members??{}).map(([n,r])=>`${n}: ${Bt(r)}`).join(", ");return`${o.instance.className??"istanza"} { ${e} }`}if(o.record){const e=Object.entries(o.record.fields??{}).map(([r,t])=>`${r}: ${t==null?"\u2014":String(t)}`).join(", ");return`${[o.record.objectType,o.record.id].filter(Boolean).join("#")||"record"} { ${e} }`}return o.value===void 0||o.value===null?"\u2014":typeof o.value=="object"?JSON.stringify(o.value):String(o.value)}function $a(o,e){const n=L(o,e);for(const r of["next","default","loopEnd"]){const t=n.find(i=>i.key===r);if(t)return t}return null}function Ra(o){const{from:e,outletKey:n,to:r,positions:t,nodeSize:i,gap:l}=o,c=t.get(e),p=t.get(r);if(!c||!p){const x=c??p;return{from:e,outletKey:n,to:r,position:x?{x:x.x,y:x.y+i.height+l}:{x:60,y:60},shift:null}}const g=c.y+i.height;if(p.y<=c.y)return{from:e,outletKey:n,to:r,position:{x:c.x+i.width+l,y:g+l},shift:null};const f=p.y-g,m=i.height+l*2;if(f>=m)return{from:e,outletKey:n,to:r,position:{x:p.x,y:Math.round(g+(f-i.height)/2)},shift:null};const h=m-f,O=[];for(const[x,pe]of t)x!==e&&pe.y>=p.y&&O.push(x);return{from:e,outletKey:n,to:r,position:{x:p.x,y:g+l},shift:{names:O,deltaY:h}}}function jt(o,e){const n=o.toLowerCase();if(n===e)return 0;if(n.startsWith(e))return 1;const r=n.indexOf(e);return r<0?Number.POSITIVE_INFINITY:2+r/100}function Fa(o){const e=[];e.push({kind:"node",name:R,label:"Start",detail:"Avvio del flow",elementName:R});for(const n of o.nodes){const r=n.node.label||n.name;e.push({kind:"node",name:n.name,label:r,detail:o.typeLabel(n.type),elementName:n.name});for(const t of n.node.stageSteps??[]){const i=t.name;i&&e.push({kind:"step",name:i,label:t.label||i,detail:`Step \xB7 ${r}`,elementName:n.name})}}for(const n of o.definition.dynamicScreens??[]){const r=n.name??"",t=n.label||r;for(const i of _n(n.fields))i.field.name&&e.push({kind:"field",name:i.field.name,label:i.field.fieldText||i.field.name,detail:`${i.field.fieldType??"Campo"} \xB7 ${t}`,elementName:r,fieldPath:i.path});for(const i of n.actions??[])i.name&&e.push({kind:"action",name:i.name,label:i.name,detail:`Screen action \xB7 ${t}`,elementName:r})}for(const n of o.resources)n.name&&e.push({kind:"resource",name:n.name,label:n.name,detail:[o.resourceLabel(n.collection),n.resource.dataType].filter(Boolean).join(" \xB7 "),resource:{collection:n.collection,index:n.index}});return e}function Ia(o,e,n=12){const r=e.trim().toLowerCase();return r?o.map(t=>({hit:t,score:Math.min(jt(t.name,r),jt(t.label,r)+.5)})).filter(t=>Number.isFinite(t.score)).sort((t,i)=>t.score-i.score||t.hit.name.localeCompare(i.hit.name)).slice(0,n).map(t=>t.hit):[]}const Ea={variables:"Variabile",constants:"Costante",formulas:"Formula",textTemplates:"Text template",choices:"Choice",dynamicChoiceSets:"Dynamic choice set",stages:"Stage"};class ae{store=b(T);dictionaries=b(I);picked=v();input=ne("box",...ngDevMode?[{debugName:"input"}]:[]);query=u("",...ngDevMode?[{debugName:"query"}]:[]);isOpen=u(!1,...ngDevMode?[{debugName:"isOpen"}]:[]);highlighted=u(0,...ngDevMode?[{debugName:"highlighted"}]:[]);results=s(()=>{if(!this.isOpen())return[];const e=Fa({definition:this.store.document(),nodes:this.store.nodes(),resources:this.store.resources(),typeLabel:n=>this.dictionaries.labelOf(n),resourceLabel:n=>Ea[n]??n});return Ia(e,this.query())},...ngDevMode?[{debugName:"results"}]:[]);isEmpty=s(()=>this.isOpen()&&!!this.query().trim()&&this.results().length===0,...ngDevMode?[{debugName:"isEmpty"}]:[]);iconOf(e){switch(e.kind){case"field":return"\u25AD";case"action":return"\u26A1";case"step":return"\u25EB";case"resource":return"{}";default:return"\u25C7"}}onInput(e){this.query.set(e),this.isOpen.set(!0),this.highlighted.set(0)}focus(){const e=this.input()?.nativeElement;e?.focus(),e?.select(),this.isOpen.set(!0)}onFocus(){this.isOpen.set(!0)}close(){this.isOpen.set(!1)}clear(){this.query.set(""),this.isOpen.set(!1)}onKeyDown(e){const n=this.results();switch(e.key){case"ArrowDown":e.preventDefault(),this.highlighted.update(r=>n.length?(r+1)%n.length:0);return;case"ArrowUp":e.preventDefault(),this.highlighted.update(r=>n.length?(r-1+n.length)%n.length:0);return;case"Enter":{const r=n[this.highlighted()];r&&(e.preventDefault(),this.pick(r));return}case"Escape":e.stopPropagation(),this.close();return;default:return}}pick(e){this.isOpen.set(!1),this.picked.emit(e)}onRowMouseDown(e){e.preventDefault()}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ae,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:ae,isStandalone:!0,selector:"fb-flow-search",outputs:{picked:"picked"},viewQueries:[{propertyName:"input",first:!0,predicate:["box"],descendants:!0,isSignal:!0}],ngImport:a,template:`<div class="fb-find">\r
|
|
14402
|
+
<input\r
|
|
14403
|
+
#box\r
|
|
14404
|
+
type="search"\r
|
|
14405
|
+
class="fb-find__input"\r
|
|
14406
|
+
[value]="query()"\r
|
|
14407
|
+
placeholder="Cerca nel flow\u2026"\r
|
|
14408
|
+
aria-label="Cerca un elemento, una risorsa o un campo del flow"\r
|
|
14409
|
+
title="Cerca fra elementi, risorse, campi di screen, screen action e step (Ctrl+F)"\r
|
|
14410
|
+
autocomplete="off"\r
|
|
14411
|
+
(input)="onInput($any($event.target).value)"\r
|
|
14412
|
+
(focus)="onFocus()"\r
|
|
14413
|
+
(blur)="close()"\r
|
|
14414
|
+
(keydown)="onKeyDown($event)"\r
|
|
14415
|
+
/>\r
|
|
14416
|
+
\r
|
|
14417
|
+
@if (isOpen() && results().length) {\r
|
|
14418
|
+
<ul class="fb-find__list" role="listbox">\r
|
|
14419
|
+
@for (hit of results(); track hit.kind + ':' + hit.name + ':' + $index) {\r
|
|
14420
|
+
<li>\r
|
|
14421
|
+
<!--\r
|
|
14422
|
+
\`mousedown\` fermato: il blur della casella arriva prima del click e chiuderebbe\r
|
|
14423
|
+
l\u2019elenco, quindi la riga non si potrebbe scegliere col mouse.\r
|
|
14424
|
+
-->\r
|
|
14425
|
+
<button\r
|
|
14426
|
+
type="button"\r
|
|
14427
|
+
class="fb-find__row"\r
|
|
14428
|
+
[class.fb-find__row--active]="$index === highlighted()"\r
|
|
14429
|
+
role="option"\r
|
|
14430
|
+
[attr.aria-selected]="$index === highlighted()"\r
|
|
14431
|
+
(mousedown)="onRowMouseDown($event)"\r
|
|
14432
|
+
(click)="pick(hit)"\r
|
|
14433
|
+
>\r
|
|
14434
|
+
<span class="fb-find__icon" aria-hidden="true">{{ iconOf(hit) }}</span>\r
|
|
14435
|
+
<span class="fb-find__text">\r
|
|
14436
|
+
<span class="fb-find__label">{{ hit.label }}</span>\r
|
|
14437
|
+
<span class="fb-find__detail">{{ hit.detail }}</span>\r
|
|
14438
|
+
</span>\r
|
|
14439
|
+
<!-- Il nome tecnico e\u2019 cio\u2019 che finisce nei riferimenti: si mostra sempre, anche\r
|
|
14440
|
+
quando l\u2019etichetta e\u2019 diversa. -->\r
|
|
14441
|
+
<code class="fb-find__name">{{ hit.name }}</code>\r
|
|
14442
|
+
</button>\r
|
|
14443
|
+
</li>\r
|
|
14444
|
+
}\r
|
|
14445
|
+
</ul>\r
|
|
14446
|
+
}\r
|
|
14447
|
+
\r
|
|
14448
|
+
@if (isEmpty()) {\r
|
|
14449
|
+
<p class="fb-find__empty">\r
|
|
14450
|
+
Nessun elemento, risorsa o campo con questo nome. La ricerca guarda i <strong>nomi</strong>,\r
|
|
14451
|
+
non il contenuto dei valori.\r
|
|
14452
|
+
</p>\r
|
|
14453
|
+
}\r
|
|
14454
|
+
</div>\r
|
|
14455
|
+
`,styles:[`.fb-find{position:relative;flex:0 1 260px;min-width:140px}.fb-find__input{width:100%;box-sizing:border-box;padding:5px 8px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface, #fff);color:var(--fb-text, #1d2939);font:inherit;font-size:12px}.fb-find__input:focus-visible{border-color:var(--fb-accent, #4f6ef7);outline:none}.fb-find__list,.fb-find__empty{position:absolute;top:calc(100% + 4px);left:0;min-width:420px;max-width:90vw;z-index:20;margin:0;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius, 10px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 12%))}.fb-find__list{padding:4px;max-height:320px;overflow-y:auto;list-style:none}.fb-find__empty{padding:8px 10px;color:var(--fb-text-muted, #6b7086);font-size:11px}.fb-find__row{display:flex;align-items:center;gap:8px;width:100%;padding:5px 7px;border:0;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.fb-find__row:hover,.fb-find__row--active{background:var(--fb-surface-sunken, #eef0f4)}.fb-find__icon{flex:none;width:18px;color:var(--fb-text-muted, #6b7086);font-size:12px;text-align:center}.fb-find__text{display:flex;flex-direction:column;min-width:0;flex:1}.fb-find__label{overflow:hidden;font-size:12px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.fb-find__detail{overflow:hidden;color:var(--fb-text-muted, #6b7086);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.fb-find__name{flex:none;max-width:45%;overflow:hidden;color:var(--fb-text-muted, #6b7086);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;text-overflow:ellipsis;white-space:nowrap}
|
|
14456
|
+
`],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:ae,decorators:[{type:y,args:[{selector:"fb-flow-search",standalone:!0,changeDetection:_.OnPush,template:`<div class="fb-find">\r
|
|
14457
|
+
<input\r
|
|
14458
|
+
#box\r
|
|
14459
|
+
type="search"\r
|
|
14460
|
+
class="fb-find__input"\r
|
|
14461
|
+
[value]="query()"\r
|
|
14462
|
+
placeholder="Cerca nel flow\u2026"\r
|
|
14463
|
+
aria-label="Cerca un elemento, una risorsa o un campo del flow"\r
|
|
14464
|
+
title="Cerca fra elementi, risorse, campi di screen, screen action e step (Ctrl+F)"\r
|
|
14465
|
+
autocomplete="off"\r
|
|
14466
|
+
(input)="onInput($any($event.target).value)"\r
|
|
14467
|
+
(focus)="onFocus()"\r
|
|
14468
|
+
(blur)="close()"\r
|
|
14469
|
+
(keydown)="onKeyDown($event)"\r
|
|
14470
|
+
/>\r
|
|
14471
|
+
\r
|
|
14472
|
+
@if (isOpen() && results().length) {\r
|
|
14473
|
+
<ul class="fb-find__list" role="listbox">\r
|
|
14474
|
+
@for (hit of results(); track hit.kind + ':' + hit.name + ':' + $index) {\r
|
|
14475
|
+
<li>\r
|
|
14476
|
+
<!--\r
|
|
14477
|
+
\`mousedown\` fermato: il blur della casella arriva prima del click e chiuderebbe\r
|
|
14478
|
+
l\u2019elenco, quindi la riga non si potrebbe scegliere col mouse.\r
|
|
14479
|
+
-->\r
|
|
14480
|
+
<button\r
|
|
14481
|
+
type="button"\r
|
|
14482
|
+
class="fb-find__row"\r
|
|
14483
|
+
[class.fb-find__row--active]="$index === highlighted()"\r
|
|
14484
|
+
role="option"\r
|
|
14485
|
+
[attr.aria-selected]="$index === highlighted()"\r
|
|
14486
|
+
(mousedown)="onRowMouseDown($event)"\r
|
|
14487
|
+
(click)="pick(hit)"\r
|
|
14488
|
+
>\r
|
|
14489
|
+
<span class="fb-find__icon" aria-hidden="true">{{ iconOf(hit) }}</span>\r
|
|
14490
|
+
<span class="fb-find__text">\r
|
|
14491
|
+
<span class="fb-find__label">{{ hit.label }}</span>\r
|
|
14492
|
+
<span class="fb-find__detail">{{ hit.detail }}</span>\r
|
|
14493
|
+
</span>\r
|
|
14494
|
+
<!-- Il nome tecnico e\u2019 cio\u2019 che finisce nei riferimenti: si mostra sempre, anche\r
|
|
14495
|
+
quando l\u2019etichetta e\u2019 diversa. -->\r
|
|
14496
|
+
<code class="fb-find__name">{{ hit.name }}</code>\r
|
|
14497
|
+
</button>\r
|
|
14498
|
+
</li>\r
|
|
14499
|
+
}\r
|
|
14500
|
+
</ul>\r
|
|
14501
|
+
}\r
|
|
14502
|
+
\r
|
|
14503
|
+
@if (isEmpty()) {\r
|
|
14504
|
+
<p class="fb-find__empty">\r
|
|
14505
|
+
Nessun elemento, risorsa o campo con questo nome. La ricerca guarda i <strong>nomi</strong>,\r
|
|
14506
|
+
non il contenuto dei valori.\r
|
|
14507
|
+
</p>\r
|
|
14508
|
+
}\r
|
|
14509
|
+
</div>\r
|
|
14510
|
+
`,styles:[`.fb-find{position:relative;flex:0 1 260px;min-width:140px}.fb-find__input{width:100%;box-sizing:border-box;padding:5px 8px;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius-xs, 6px);background:var(--fb-surface, #fff);color:var(--fb-text, #1d2939);font:inherit;font-size:12px}.fb-find__input:focus-visible{border-color:var(--fb-accent, #4f6ef7);outline:none}.fb-find__list,.fb-find__empty{position:absolute;top:calc(100% + 4px);left:0;min-width:420px;max-width:90vw;z-index:20;margin:0;border:1px solid var(--fb-border, #e2e5eb);border-radius:var(--fb-radius, 10px);background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-md, 0 6px 18px rgb(16 24 40 / 12%))}.fb-find__list{padding:4px;max-height:320px;overflow-y:auto;list-style:none}.fb-find__empty{padding:8px 10px;color:var(--fb-text-muted, #6b7086);font-size:11px}.fb-find__row{display:flex;align-items:center;gap:8px;width:100%;padding:5px 7px;border:0;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.fb-find__row:hover,.fb-find__row--active{background:var(--fb-surface-sunken, #eef0f4)}.fb-find__icon{flex:none;width:18px;color:var(--fb-text-muted, #6b7086);font-size:12px;text-align:center}.fb-find__text{display:flex;flex-direction:column;min-width:0;flex:1}.fb-find__label{overflow:hidden;font-size:12px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.fb-find__detail{overflow:hidden;color:var(--fb-text-muted, #6b7086);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.fb-find__name{flex:none;max-width:45%;overflow:hidden;color:var(--fb-text-muted, #6b7086);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;text-overflow:ellipsis;white-space:nowrap}
|
|
14511
|
+
`]}]}],propDecorators:{picked:[{type:a.Output,args:["picked"]}],input:[{type:a.ViewChild,args:["box",{isSignal:!0}]}]}});class dn{api=b(B);clipboard=b(Fe);destroyRef=b(Qe);injector=b(vr);store=b(T);dictionaries=b(I);session=b(Q);validation=b(H);layout=b(ie);flowName=d(null,...ngDevMode?[{debugName:"flowName"}]:[]);version=d(null,...ngDevMode?[{debugName:"version"}]:[]);author=d(void 0,...ngDevMode?[{debugName:"author"}]:[]);defaultProcessType=d("Screen",...ngDevMode?[{debugName:"defaultProcessType"}]:[]);inspectorMode=d("dialog",...ngDevMode?[{debugName:"inspectorMode"}]:[]);saved=v();activated=v();closeRequested=v();selectedName=u(R,...ngDevMode?[{debugName:"selectedName"}]:[]);activePanel=u("inspector",...ngDevMode?[{debugName:"activePanel"}]:[]);isDialogOpen=u(!1,...ngDevMode?[{debugName:"isDialogOpen"}]:[]);showProblems=u(!0,...ngDevMode?[{debugName:"showProblems"}]:[]);notice=u(null,...ngDevMode?[{debugName:"notice"}]:[]);outline=u(null,...ngDevMode?[{debugName:"outline"}]:[]);isLoading=u(!1,...ngDevMode?[{debugName:"isLoading"}]:[]);canvas=ne(X,...ngDevMode?[{debugName:"canvas"}]:[]);search=ne(ae,...ngDevMode?[{debugName:"search"}]:[]);pendingFieldPath=u(null,...ngDevMode?[{debugName:"pendingFieldPath"}]:[]);resourceTarget=u(null,...ngDevMode?[{debugName:"resourceTarget"}]:[]);resourceReveals=0;selectedGroupName=u(null,...ngDevMode?[{debugName:"selectedGroupName"}]:[]);groupTarget=u(null,...ngDevMode?[{debugName:"groupTarget"}]:[]);groupReveals=0;lastDocument;outlineTimer;isDialogMode=s(()=>this.inspectorMode()==="dialog",...ngDevMode?[{debugName:"isDialogMode"}]:[]);sidePanel=s(()=>{const e=this.activePanel();return this.isDialogMode()&&e==="inspector"?"resources":e},...ngDevMode?[{debugName:"sidePanel"}]:[]);document=s(()=>this.store.document(),...ngDevMode?[{debugName:"document"}]:[]);isDirty=s(()=>this.store.isDirty(),...ngDevMode?[{debugName:"isDirty"}]:[]);canUndo=s(()=>this.store.canUndo(),...ngDevMode?[{debugName:"canUndo"}]:[]);canRedo=s(()=>this.store.canRedo(),...ngDevMode?[{debugName:"canRedo"}]:[]);primaryCommand=s(()=>this.session.primaryCommand(),...ngDevMode?[{debugName:"primaryCommand"}]:[]);isEditable=s(()=>this.session.isEditable(),...ngDevMode?[{debugName:"isEditable"}]:[]);conflict=s(()=>this.session.conflict(),...ngDevMode?[{debugName:"conflict"}]:[]);errorCount=s(()=>this.validation.errorCount(),...ngDevMode?[{debugName:"errorCount"}]:[]);warningCount=s(()=>this.validation.warningCount(),...ngDevMode?[{debugName:"warningCount"}]:[]);canActivate=s(()=>this.session.canActivate(),...ngDevMode?[{debugName:"canActivate"}]:[]);isBusy=s(()=>this.session.isBusy()||this.isLoading(),...ngDevMode?[{debugName:"isBusy"}]:[]);statusLabel=s(()=>{const e=this.session.currentVersionSummary();if(!e)return"Nuovo";switch(e.status){case"Draft":return"Bozza";case"InvalidDraft":return"Bozza con errori";case"UnderReview":return"In approvazione";case"Active":return"Attiva";case"Obsolete":return"Superata";default:return e.status??""}},...ngDevMode?[{debugName:"statusLabel"}]:[]);constructor(){this.clipboard.refresh(),w(()=>{this.dictionaries.load(this.store.document().processType)}),w(()=>{this.session.setAuthor(this.author())}),w(()=>{const e=this.flowName(),n=this.version();this.openOrCreate(e,n)}),w(()=>{const e=this.store.document();e!==this.lastDocument&&(this.lastDocument=e,this.validation.schedule(e),this.scheduleOutline(e))}),this.destroyRef.onDestroy(()=>{this.outlineTimer&&clearTimeout(this.outlineTimer)})}async openOrCreate(e,n){if(!(e&&e===this.session.flowName()&&n!=null&&n===this.session.version())){this.isLoading.set(!0),this.notice.set(null),this.isDialogOpen.set(!1);try{e?await this.session.open(e,n??void 0):this.session.startNew("","",this.defaultProcessType()),this.selectedName.set(R)}catch(r){this.showError(r)}finally{this.isLoading.set(!1)}}}scheduleOutline(e){this.outlineTimer&&clearTimeout(this.outlineTimer),this.outlineTimer=setTimeout(()=>{this.outlineTimer=void 0,this.api.getOutline(e).then(n=>this.outline.set(n)).catch(()=>this.outline.set(null))},500)}setLabel(e){this.store.updateHeader(n=>{n.label=e||void 0})}setFullName(e){this.store.updateHeader(n=>{n.fullName=e||void 0})}setDescription(e){this.store.updateHeader(n=>{n.description=e||void 0})}setInterviewLabel(e){this.store.updateHeader(n=>{n.interviewLabel=e||void 0})}setProcessType(e){this.store.updateHeader(n=>{n.processType=e})}processTypes=s(()=>this.dictionaries.processTypes(),...ngDevMode?[{debugName:"processTypes"}]:[]);isProcessTypeOutOfCatalog=s(()=>{const e=this.store.document().processType;return!!e&&!this.processTypes().some(n=>n.value===e)},...ngDevMode?[{debugName:"isProcessTypeOutOfCatalog"}]:[]);screenCount=s(()=>{const e=this.store.document();return(e.screens?.length??0)+(e.dynamicScreens?.length??0)},...ngDevMode?[{debugName:"screenCount"}]:[]);hasScreensInAutoLaunched=s(()=>this.store.document().processType==="AutoLaunched"&&this.screenCount()>0,...ngDevMode?[{debugName:"hasScreensInAutoLaunched"}]:[]);hasNoScreensInScreenFlow=s(()=>this.store.document().processType==="Screen"&&this.screenCount()===0,...ngDevMode?[{debugName:"hasNoScreensInScreenFlow"}]:[]);isOrchestrationWithoutStages=s(()=>{const e=this.store.document();return e.processType==="Orchestration"&&(e.orchestratedStages?.length??0)===0},...ngDevMode?[{debugName:"isOrchestrationWithoutStages"}]:[]);onSelectionChange(e){this.selectedNames.set(e);const n=e[0]??null;this.selectedName.set(n),n&&!this.isDialogMode()&&this.activePanel.set("inspector")}onNodeOpened(e){this.openElement(e)}revealIssueElement(e){const n=typeof e=="string"?e:e.name;if(!this.store.nodeByName().has(n)&&this.store.groupNames().includes(n)){this.selectedGroupName.set(n),this.canvas()?.bringIntoView(n);return}this.selectedName.set(n),this.selectedNames.set([n]),this.canvas()?.bringIntoView(n)}openIssueElement(e){const n=typeof e=="string"?e:e.name,r=typeof e=="string"?null:e.path;if(!this.store.nodeByName().has(n)&&this.store.groupNames().includes(n)){this.revealGroup(n);return}const t=this.store.nodeByName().get(n),i=t?.type==="DynamicScreen"?Yn(t.node,r):null;this.openElement(n,i)}openElement(e,n=null){if(this.pendingFieldPath.set(n),this.selectedName.set(e),this.canvas()?.bringIntoView(e),this.isDialogMode()){this.isDialogOpen.set(!0);return}this.activePanel.set("inspector")}onSearchPicked(e){if(e.kind==="resource"&&e.resource){this.resourceReveals++,this.resourceTarget.set({collection:e.resource.collection,index:e.resource.index,token:this.resourceReveals}),this.activePanel.set("resources");return}e.elementName&&this.openElement(e.elementName,e.fieldPath??null)}openSelectedElement(){const e=this.selectedName();e&&this.openElement(e)}closeDialog(){this.isDialogOpen.set(!1)}highlightElement(e){this.selectedName.set(e),this.canvas()?.bringIntoView(e)}onElementDropped(e){this.createElement(e.type,e.variant,e.x,e.y,e.edge)}onElementPicked(e){const r=this.store.nodes().reduce((t,i)=>Math.max(t,i.node.locationY??0),60);this.createElement(e.type,e.variant,60,r+120)}createElement(e,n,r,t,i){const l=this.dictionaries.collectionOf(e);if(!l){this.notice.set({kind:"error",message:`Tipo di elemento non riconosciuto: ${e}.`});return}const c=this.dictionaries.variantsOf(e),p=n??c[0]?.value,g=p?this.dictionaries.variantLabelOf(e,p)||this.dictionaries.labelOf(e):this.dictionaries.labelOf(e),f=U(g,this.store.usedNames()),m={name:f,label:g,locationX:Math.round(r),locationY:Math.round(t),...Ir(e,p)};(e==="RecordLookup"||e==="RecordCreate")&&(m.storeOutputAutomatically=!0),e==="Decision"&&(m.rules=[{name:"Regola",label:"Regola 1",conditionLogic:"and",conditions:[{operator:"EqualTo"}]}]),e==="CustomError"&&(m.customErrorMessages=[{errorMessage:""}]),e==="Wait"&&(m.waitEvents=[{name:"Evento",label:"Evento 1"}]),e==="OrchestratedStage"&&(m.stageSteps=[{name:U("Step",[...this.store.usedNames(),f]),label:"Step 1"}]),i?this.insertOnEdge(l,m,e,i):this.store.addNode(l,m),this.openElement(f)}insertOnEdge(e,n,r,t){const i=new Map,l=this.store.start();i.set(R,{x:l.locationX??0,y:l.locationY??0});for(const g of this.store.nodes())i.set(g.name,{x:g.node.locationX??0,y:g.node.locationY??0});const c=Ra({from:t.from,outletKey:t.outletKey,to:t.to,positions:i,nodeSize:{width:Tt,height:me},gap:90});n.locationX=c.position.x,n.locationY=c.position.y;const p=$a(r,n);this.store.insertNodeOnEdge(e,n,c,p?.key??null),p||this.notice.set({kind:"info",message:`\xAB${n.label||n.name}\xBB interrompe l\u2019esecuzione e non ha uscite: il percorso verso \xAB${t.to}\xBB ora e\u2019 scollegato. Se non e\u2019 cio\u2019 che volevi, annulla con \u21B6.`})}onRemoveNode(e){this.store.removeNode(e),this.selectedNames.update(n=>n.filter(r=>r!==e)),this.selectedName()===e&&(this.selectedName.set(R),this.isDialogOpen.set(!1))}onNodeRenamed(e){this.selectedName.set(e)}onDuplicateNode(e){this.duplicateNames([e])}createGroup(){if(!this.isEditable())return;const e=this.copyableNames(),n=e.map(c=>this.store.nodeByName().get(c)).filter(c=>!!c).map(c=>({x:c.node.locationX??0,y:c.node.locationY??0,width:Re(L(c.type,c.node).length),height:me})),r=this.store.nodes().reduce((c,p)=>Math.max(c,p.node.locationY??0),60),t=nr(n)??{x:60,y:r+160,width:420,height:260},i=U("Riquadro",this.store.groupNames()),l=rn[this.store.groups().length%rn.length].value;this.store.addGroup({name:i,label:"Riquadro",locationX:t.x,locationY:t.y,width:t.width,height:t.height,color:l,...e.length?{members:e}:{}}),this.revealGroup(i),this.notice.set({kind:"info",message:e.length?`Riquadro creato attorno a ${e.length} ${e.length===1?"elemento":"elementi"}: dagli un\u2019intestazione e un commento nel pannello.`:"Riquadro vuoto creato sotto il flow: trascinaci dentro gli elementi, oppure selezionali e usa \xABAggiungi la selezione\xBB."})}revealGroup(e){this.groupReveals++,this.selectedGroupName.set(e),this.groupTarget.set({name:e,token:this.groupReveals}),this.activePanel.set("groups")}onGroupSelected(e){this.revealGroup(e)}onGroupRemoved(e){const n=this.store.groups().find(r=>r.name===e);n&&(this.store.removeGroup(n.index),this.selectedGroupName()===e&&this.selectedGroupName.set(null))}focusMember(e){this.selectedName.set(e),this.canvas()?.bringIntoView(e)}selectedNames=u([],...ngDevMode?[{debugName:"selectedNames"}]:[]);pastePreview=u(null,...ngDevMode?[{debugName:"pastePreview"}]:[]);copyableNames(){const e=this.selectedNames().length?this.selectedNames():[this.selectedName()??""],n=this.store.nodeByName();return e.filter(r=>!!r&&r!==R&&n.has(r))}canCopy=s(()=>this.copyableNames().length>0,...ngDevMode?[{debugName:"canCopy"}]:[]);canPaste=s(()=>(this.clipboard.revision(),this.clipboard.hasContent()),...ngDevMode?[{debugName:"canPaste"}]:[]);copySelection(){const e=this.copyableNames();if(!e.length)return;const n=or({nodes:this.store.nodes(),resources:this.store.resources(),names:e,flowName:this.session.flowName()??this.store.document().fullName,processType:this.store.document().processType});if(!n)return;this.clipboard.write(n),this.clipboard.refresh();const r=n.nodes.length,t=n.resources.length;this.notice.set({kind:"info",message:t?`Copiati ${r} ${r===1?"elemento":"elementi"} e ${t} ${t===1?"risorsa referenziata":"risorse referenziate"}.`:`Copiati ${r} ${r===1?"elemento":"elementi"}.`})}startPaste(){if(!this.isEditable())return;const e=this.clipboard.read();if(!e){this.notice.set({kind:"info",message:"Non c\u2019e\u2019 niente da incollare."});return}const n=sr(e,{usedNames:this.store.usedNames(),processType:this.store.document().processType});this.pastePreview.set({payload:e,plan:n})}cancelPaste(){this.pastePreview.set(null)}confirmPaste(e){const n=this.pastePreview();if(!n)return;const r=this.store.pasteClipboard(n.payload,n.plan,{createMissingResources:e.createMissingResources});this.pastePreview.set(null),this.selectNames(r);const t=r.length;this.notice.set({kind:"info",message:`Incollati ${t} ${t===1?"elemento":"elementi"}.`})}duplicateSelection(){this.duplicateNames(this.copyableNames())}duplicateNames(e){if(!this.isEditable()||!e.length)return;const n=this.store.duplicateNodes(e);this.selectNames(n)}selectNames(e){e.length&&(this.selectedNames.set(e),this.selectedName.set(e[0]))}onKeyDown(e){if(!(e.ctrlKey||e.metaKey)||e.altKey)return;const n=e.target,r=n?.tagName;if(!(r==="INPUT"||r==="TEXTAREA"||r==="SELECT"||n?.isContentEditable))switch(e.key.toLowerCase()){case"f":e.preventDefault(),this.search()?.focus();return;case"c":this.canCopy()&&(e.preventDefault(),this.copySelection());return;case"v":e.preventDefault(),this.startPaste();return;case"d":this.canCopy()&&(e.preventDefault(),this.duplicateSelection());return;default:return}}autoLayout(){const e=[{name:R,width:Re(L("Start",this.store.start()).length),height:me},...this.store.nodes().map(t=>({name:t.name,width:Re(L(t.type,t.node).length),height:me}))],n=this.layout.layout(e,this.store.edges(),{direction:"TB"});if(!n.positions.size)return;let r=!0;for(const[t,i]of n.positions)this.store.moveNode(t,i.x,i.y,{silent:!r}),r=!1}undo(){this.store.undo()}redo(){this.store.redo()}async save(){const e=this.store.document();if(!e.fullName){this.notice.set({kind:"error",message:"Dai un nome tecnico al flow prima di salvare."});return}try{const n=await this.session.save({flowName:e.fullName});this.saved.emit(n);const r=n.validation?.errorCount??0,t=this.session.version(),i=t!=null?`Salvato come versione ${t}`:"Salvato";this.notice.set({kind:"info",message:r?`${i}, con ${r} ${r===1?"errore":"errori"} da correggere.`:`${i}.`})}catch(n){this.showError(n)}}isCopyOpen=u(!1,...ngDevMode?[{debugName:"isCopyOpen"}]:[]);copyName=u("",...ngDevMode?[{debugName:"copyName"}]:[]);copyLabel=u("",...ngDevMode?[{debugName:"copyLabel"}]:[]);copyNameInput=ne("copyNameInput",...ngDevMode?[{debugName:"copyNameInput"}]:[]);canDuplicate=s(()=>!this.session.isNew()&&!!this.session.flowName(),...ngDevMode?[{debugName:"canDuplicate"}]:[]);copyNameProblem=s(()=>{const e=this.copyName().trim();if(!e)return"Il nome tecnico della copia e\u2019 obbligatorio.";if(!Er(e))return"Deve iniziare con una lettera e contenere solo lettere, cifre e underscore.";const n=this.session.flowName();return n&&n.toLowerCase()===e.toLowerCase()?"La copia deve avere un nome diverso dall\u2019originale.":null},...ngDevMode?[{debugName:"copyNameProblem"}]:[]);copyHint=s(()=>this.isDirty()?"La copia comprende le modifiche non salvate; l\u2019originale resta come e\u2019 ora.":"La copia nasce come versione 1 di un flow nuovo.",...ngDevMode?[{debugName:"copyHint"}]:[]);startCopy(){const e=this.session.flowName()??this.store.document().fullName??"";this.copyName.set(fe(`${e} Copia`)||"Copia");const n=this.store.document().label;this.copyLabel.set(n?`${n} (copia)`:""),this.isCopyOpen.set(!0),_r(()=>{const r=this.copyNameInput()?.nativeElement;r?.focus(),r?.select()},{injector:this.injector})}cancelCopy(){this.isCopyOpen.set(!1)}setCopyName(e){this.copyName.set(e)}setCopyLabel(e){this.copyLabel.set(e)}async confirmCopy(){if(this.copyNameProblem())return;const e=this.copyName().trim(),n=this.copyLabel().trim();try{const r=await this.session.saveAs(e,{label:n||void 0});this.isCopyOpen.set(!1),this.saved.emit(r);const t=this.session.version();this.notice.set({kind:"info",message:t!=null?`Creata la copia \xAB${r.flowName}\xBB v${t}: l\u2019editor lavora su di essa.`:`Creata la copia \xAB${r.flowName}\xBB: l\u2019editor lavora su di essa.`})}catch(r){this.showError(r)}}runMode=u(null,...ngDevMode?[{debugName:"runMode"}]:[]);isStartingRun=u(!1,...ngDevMode?[{debugName:"isStartingRun"}]:[]);runOutcome=u(null,...ngDevMode?[{debugName:"runOutcome"}]:[]);wasRunInDebug=u(!1,...ngDevMode?[{debugName:"wasRunInDebug"}]:[]);canRun=s(()=>!this.session.isNew()&&!!this.session.flowName(),...ngDevMode?[{debugName:"canRun"}]:[]);openRun(e){this.canRun()&&this.runMode.set(e)}closeRun(){this.runMode.set(null)}clearRunOutcome(){this.runOutcome.set(null)}async confirmRun(e){const n=this.runMode(),r=this.session.flowName();if(!n||!r)return;const t={flowName:r,version:this.session.version()??void 0,inputs:e,debug:n==="debug"};this.isStartingRun.set(!0),this.runOutcome.set(null),this.wasRunInDebug.set(n==="debug"),this.activePanel.set("debug"),this.runMode.set(null);try{const i=await(n==="debug"?this.api.debugFlow(t):this.api.runFlow(t));this.runOutcome.set(i??null),i||this.notice.set({kind:"info",message:n==="debug"?"Debug avviato.":"Esecuzione avviata."})}catch(i){if(D.is(i)&&i.category==="MissingService"){this.notice.set({kind:"error",message:n==="debug"?"Questo ambiente non espone il debug dei flow: manca l\u2019implementazione di debugFlow.":"Questo ambiente non espone l\u2019esecuzione dei flow: manca l\u2019implementazione di runFlow."});return}this.showError(i)}finally{this.isStartingRun.set(!1)}}async createNewVersion(){try{const n=(await this.session.createNewVersion()).version??this.session.version();this.notice.set({kind:"info",message:n!=null?`Creata la versione ${n}.`:"Creata una nuova versione."})}catch(e){this.showError(e)}}async activate(){try{const e=await this.session.activate();this.activated.emit(e),this.notice.set({kind:"info",message:`Versione ${e.version} attivata.`})}catch(e){D.is(e)&&e.category==="ValidationFailed"&&this.showProblems.set(!0),this.showError(e)}}async reloadAfterConflict(){try{await this.session.reloadAfterConflict(),this.notice.set({kind:"info",message:"Ricaricata la versione salvata da altri."})}catch(e){this.showError(e)}}async saveAsNewVersionAfterConflict(){try{const e=await this.session.saveAsNewVersionAfterConflict();this.notice.set({kind:"info",message:`Le tue modifiche sono nella nuova versione ${e.version}.`})}catch(e){this.showError(e)}}dismissConflict(){this.session.dismissConflict()}exportJson(){return JSON.stringify(this.store.document(),null,2)}async importJson(e){let n;try{n=JSON.parse(e)}catch{this.notice.set({kind:"error",message:"Il file non e\u2019 JSON valido."});return}try{const r=await this.api.parseFlow(n);this.store.load(r),this.notice.set({kind:"info",message:"Documento importato."})}catch(r){if(D.is(r)&&r.category==="MissingService"){this.store.load(n),this.notice.set({kind:"info",message:"Documento importato senza normalizzazione: il backend non espone la primitiva."});return}this.showError(r)}}onFileSelected(e){const n=e.target,r=n.files?.[0];r&&(r.text().then(t=>this.importJson(t)),n.value="")}async openVersion(e){const n=this.session.flowName();if(n){this.isLoading.set(!0),this.isDialogOpen.set(!1);try{await this.session.open(n,e),this.selectedName.set(R)}catch(r){this.showError(r)}finally{this.isLoading.set(!1)}}}async validateNow(){await this.validation.run(this.store.document()),this.showProblems.set(!0)}setPanel(e){this.activePanel.set(e)}toggleProblems(){this.showProblems.update(e=>!e)}showNotice(e){this.notice.set(e)}dismissNotice(){this.notice.set(null)}showError(e){if(D.is(e)){this.notice.set({kind:"error",message:e.message});return}this.notice.set({kind:"error",message:e instanceof Error?e.message:String(e)})}static \u0275fac=a.\u0275\u0275ngDeclareFactory({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:dn,deps:[],target:a.\u0275\u0275FactoryTarget.Component});static \u0275cmp=a.\u0275\u0275ngDeclareComponent({minVersion:"17.0.0",version:"20.3.28",type:dn,isStandalone:!0,selector:"fb-flow-builder",inputs:{flowName:{classPropertyName:"flowName",publicName:"flowName",isSignal:!0,isRequired:!1,transformFunction:null},version:{classPropertyName:"version",publicName:"version",isSignal:!0,isRequired:!1,transformFunction:null},author:{classPropertyName:"author",publicName:"author",isSignal:!0,isRequired:!1,transformFunction:null},defaultProcessType:{classPropertyName:"defaultProcessType",publicName:"defaultProcessType",isSignal:!0,isRequired:!1,transformFunction:null},inspectorMode:{classPropertyName:"inspectorMode",publicName:"inspectorMode",isSignal:!0,isRequired:!1,transformFunction:null}},outputs:{saved:"saved",activated:"activated",closeRequested:"closeRequested"},host:{listeners:{keydown:"onKeyDown($event)"}},providers:[T,I,M,H,ce,Q,ie],viewQueries:[{propertyName:"canvas",first:!0,predicate:X,descendants:!0,isSignal:!0},{propertyName:"search",first:!0,predicate:ae,descendants:!0,isSignal:!0},{propertyName:"copyNameInput",first:!0,predicate:["copyNameInput"],descendants:!0,isSignal:!0}],ngImport:a,template:`<div class="fb-builder" [attr.data-fb-theme]="null">\r
|
|
13448
14512
|
<header class="fb-top">\r
|
|
13449
14513
|
<div class="fb-top__identity">\r
|
|
13450
14514
|
<input\r
|
|
@@ -13503,11 +14567,36 @@
|
|
|
13503
14567
|
}\r
|
|
13504
14568
|
</div>\r
|
|
13505
14569
|
</div>\r
|
|
14570
|
+
\r
|
|
14571
|
+
<!--\r
|
|
14572
|
+
La ricerca **nel documento**: e\u2019 l\u2019unico modo di arrivare a un elemento su un flow che non\r
|
|
14573
|
+
sta in una schermata. Non e\u2019 la casella della palette, che filtra i tipi da aggiungere.\r
|
|
14574
|
+
-->\r
|
|
14575
|
+
<fb-flow-search (picked)="onSearchPicked($event)" />\r
|
|
13506
14576
|
\r
|
|
13507
14577
|
<div class="fb-top__actions">\r
|
|
13508
14578
|
<button type="button" class="fb-btn" [disabled]="!canUndo()" aria-label="Annulla" (click)="undo()">\u21B6</button>\r
|
|
13509
14579
|
<button type="button" class="fb-btn" [disabled]="!canRedo()" aria-label="Ripeti" (click)="redo()">\u21B7</button>\r
|
|
13510
14580
|
<button type="button" class="fb-btn" title="Ricalcola le posizioni" (click)="autoLayout()">Riordina</button>\r
|
|
14581
|
+
<!--\r
|
|
14582
|
+
Un riquadro e\u2019 un commento sul canvas (\xA73.6): non viene eseguito, quindi il comando sta\r
|
|
14583
|
+
qui accanto a \xABRiordina\xBB e non nella palette degli elementi. Nasce attorno a cio\u2019 che e\u2019\r
|
|
14584
|
+
selezionato, che e\u2019 il gesto per cui serve.\r
|
|
14585
|
+
-->\r
|
|
14586
|
+
<button\r
|
|
14587
|
+
type="button"\r
|
|
14588
|
+
class="fb-btn"\r
|
|
14589
|
+
[disabled]="!isEditable()"\r
|
|
14590
|
+
[title]="\r
|
|
14591
|
+
canCopy()\r
|
|
14592
|
+
? 'Racchiudi gli elementi selezionati in un riquadro di commento'\r
|
|
14593
|
+
: 'Crea un riquadro di commento vuoto: non cambia il comportamento del flow'\r
|
|
14594
|
+
"\r
|
|
14595
|
+
aria-label="Nuovo riquadro di raggruppamento"\r
|
|
14596
|
+
(click)="createGroup()"\r
|
|
14597
|
+
>\r
|
|
14598
|
+
\u2B1A\r
|
|
14599
|
+
</button>\r
|
|
13511
14600
|
\r
|
|
13512
14601
|
<!--\r
|
|
13513
14602
|
Copia e incolla stanno **anche** qui e non solo sui tasti: una scorciatoia che nessuno\r
|
|
@@ -13727,6 +14816,7 @@
|
|
|
13727
14816
|
class="fb-main__canvas"\r
|
|
13728
14817
|
[selectedName]="selectedName()"\r
|
|
13729
14818
|
[selectedNames]="selectedNames()"\r
|
|
14819
|
+
[selectedGroupName]="selectedGroupName()"\r
|
|
13730
14820
|
[outline]="outline()"\r
|
|
13731
14821
|
[isEditable]="isEditable()"\r
|
|
13732
14822
|
(selectionChange)="onSelectionChange($event)"\r
|
|
@@ -13734,12 +14824,15 @@
|
|
|
13734
14824
|
(nodeRemoveRequested)="onRemoveNode($event)"\r
|
|
13735
14825
|
(nodeDuplicateRequested)="onDuplicateNode($event)"\r
|
|
13736
14826
|
(elementDropped)="onElementDropped($event)"\r
|
|
14827
|
+
(groupSelected)="onGroupSelected($event)"\r
|
|
14828
|
+
(groupRemoveRequested)="onGroupRemoved($event)"\r
|
|
13737
14829
|
/>\r
|
|
13738
14830
|
\r
|
|
13739
14831
|
@if (showProblems()) {\r
|
|
13740
14832
|
<fb-problems-panel\r
|
|
13741
14833
|
class="fb-main__problems"\r
|
|
13742
|
-
(elementFocused)="
|
|
14834
|
+
(elementFocused)="revealIssueElement($event)"\r
|
|
14835
|
+
(elementOpened)="openIssueElement($event)"\r
|
|
13743
14836
|
(closed)="toggleProblems()"\r
|
|
13744
14837
|
/>\r
|
|
13745
14838
|
} @else {\r
|
|
@@ -13775,6 +14868,21 @@
|
|
|
13775
14868
|
>\r
|
|
13776
14869
|
Risorse\r
|
|
13777
14870
|
</button>\r
|
|
14871
|
+
<!--\r
|
|
14872
|
+
I riquadri (\xA73.6). Il tab porta il conteggio perche\u2019 e\u2019 l\u2019unico modo di sapere che un\r
|
|
14873
|
+
flow ne ha, quando sono chiusi o fuori dalla vista.\r
|
|
14874
|
+
-->\r
|
|
14875
|
+
<button\r
|
|
14876
|
+
type="button"\r
|
|
14877
|
+
class="fb-side__tab"\r
|
|
14878
|
+
[class.fb-side__tab--active]="sidePanel() === 'groups'"\r
|
|
14879
|
+
(click)="setPanel('groups')"\r
|
|
14880
|
+
>\r
|
|
14881
|
+
Riquadri\r
|
|
14882
|
+
@if (store.groups().length) {\r
|
|
14883
|
+
<span class="fb-main__count">{{ store.groups().length }}</span>\r
|
|
14884
|
+
}\r
|
|
14885
|
+
</button>\r
|
|
13778
14886
|
<button\r
|
|
13779
14887
|
type="button"\r
|
|
13780
14888
|
class="fb-side__tab"\r
|
|
@@ -13806,6 +14914,7 @@
|
|
|
13806
14914
|
@case ('inspector') {\r
|
|
13807
14915
|
<fb-element-inspector\r
|
|
13808
14916
|
[selectedName]="selectedName()"\r
|
|
14917
|
+
[initialFieldPath]="pendingFieldPath()"\r
|
|
13809
14918
|
(removeRequested)="onRemoveNode($event)"\r
|
|
13810
14919
|
(duplicateRequested)="onDuplicateNode($event)"\r
|
|
13811
14920
|
(renamed)="onNodeRenamed($event)"\r
|
|
@@ -13813,7 +14922,17 @@
|
|
|
13813
14922
|
/>\r
|
|
13814
14923
|
}\r
|
|
13815
14924
|
@case ('resources') {\r
|
|
13816
|
-
<fb-resource-panel (closed)="setPanel('inspector')" />\r
|
|
14925
|
+
<fb-resource-panel [target]="resourceTarget()" (closed)="setPanel('inspector')" />\r
|
|
14926
|
+
}\r
|
|
14927
|
+
@case ('groups') {\r
|
|
14928
|
+
<fb-group-panel\r
|
|
14929
|
+
[isEditable]="isEditable()"\r
|
|
14930
|
+
[selectedNodeNames]="selectedNames()"\r
|
|
14931
|
+
[target]="groupTarget()"\r
|
|
14932
|
+
(createRequested)="createGroup()"\r
|
|
14933
|
+
(memberFocused)="focusMember($event)"\r
|
|
14934
|
+
(closed)="setPanel('resources')"\r
|
|
14935
|
+
/>\r
|
|
13817
14936
|
}\r
|
|
13818
14937
|
@case ('versions') {\r
|
|
13819
14938
|
<fb-version-panel\r
|
|
@@ -13879,6 +14998,7 @@
|
|
|
13879
14998
|
<!-- La dialog sta dentro il builder, non nel body: la libreria e\u2019 innestabile. -->\r
|
|
13880
14999
|
<fb-element-dialog\r
|
|
13881
15000
|
[selectedName]="selectedName()"\r
|
|
15001
|
+
[initialFieldPath]="pendingFieldPath()"\r
|
|
13882
15002
|
(closed)="closeDialog()"\r
|
|
13883
15003
|
(removeRequested)="onRemoveNode($event)"\r
|
|
13884
15004
|
(duplicateRequested)="onDuplicateNode($event)"\r
|
|
@@ -13887,7 +15007,7 @@
|
|
|
13887
15007
|
}\r
|
|
13888
15008
|
</div>\r
|
|
13889
15009
|
`,styles:[`:host{display:block;width:100%;height:100%;min-height:0;font:inherit;color:var(--fb-text, #1d2939)}.fb-builder{position:relative;display:flex;flex-direction:column;width:100%;height:100%;min-height:0;background:var(--fb-surface, #fff)}.fb-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 14px;border-bottom:1px solid var(--fb-border, #e2e5eb);background:var(--fb-surface, #fff)}.fb-top__identity{min-width:0}.fb-top__label{width:100%;max-width:420px;padding:2px 4px;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--fb-text, #1d2939);font:inherit;font-size:15px;font-weight:600}.fb-top__label:hover:not(:disabled),.fb-top__label:focus-visible{border-color:var(--fb-border, #d6dae1);background:var(--fb-surface, #fff)}.fb-top__meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:2px}.fb-top__name{width:180px;padding:1px 4px;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--fb-text-muted, #667085);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.fb-top__name:hover:not(:disabled),.fb-top__name:focus-visible{border-color:var(--fb-border, #d6dae1)}.fb-top__process{padding:1px 4px;border:1px solid var(--fb-border-subtle, #e6e9ee);border-radius:4px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px}.fb-top__status,.fb-top__version,.fb-top__dirty{padding:2px 7px;border-radius:999px;background:var(--fb-surface-sunken, #eef0f4);color:var(--fb-text-muted, #6b7086);font-size:10px;font-weight:600}.fb-top__version{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fb-top__dirty{background:color-mix(in srgb,var(--fb-warning, #b7791f) 16%,transparent);color:var(--fb-warning, #b7791f)}.fb-top__actions{display:flex;flex-wrap:wrap;gap:4px}.fb-banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:6px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee);background:color-mix(in srgb,var(--fb-accent, #2f6feb) 7%,transparent);font-size:11px}.fb-banner--warn{background:color-mix(in srgb,var(--fb-warning, #b7791f) 12%,transparent);color:var(--fb-warning, #b7791f)}.fb-banner--error{background:color-mix(in srgb,var(--fb-error, #c9372c) 10%,transparent);color:var(--fb-error, #c9372c)}.fb-banner>span{flex:1;min-width:200px}.fb-copy__field{display:flex;align-items:center;gap:6px}.fb-copy__caption{color:var(--fb-text-muted, #667085);white-space:nowrap}.fb-copy__input{width:180px;padding:2px 5px;border:1px solid var(--fb-border, #d6dae1);border-radius:4px;background:var(--fb-surface, #fff);color:var(--fb-text, #1d2939);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.fb-copy__hint{flex:1;min-width:180px;color:var(--fb-text-muted, #667085)}.fb-copy__hint--error{color:var(--fb-error, #c9372c)}.fb-main{display:flex;flex:1;min-height:0}.fb-main__palette{flex:0 0 190px;min-width:0}.fb-main__center{display:flex;flex:1;flex-direction:column;min-width:0;min-height:0}.fb-main__canvas{flex:1;min-height:0}.fb-main__problems{flex:0 0 auto;height:220px}.fb-main__problems-toggle{display:flex;align-items:center;gap:6px;padding:4px 12px;border:0;border-top:1px solid var(--fb-border, #d6dae1);background:var(--fb-surface-alt, #f8f9fb);color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}.fb-main__count{padding:0 5px;border-radius:8px;background:var(--fb-border, #d6dae1);font-size:9px;font-weight:700}.fb-main__count--error{background:color-mix(in srgb,var(--fb-error, #c9372c) 16%,transparent);color:var(--fb-error, #c9372c)}.fb-main__count--warn{background:color-mix(in srgb,var(--fb-warning, #b7791f) 16%,transparent);color:var(--fb-warning, #b7791f)}.fb-main__side{display:flex;flex-direction:column;flex:0 0 340px;min-width:0;min-height:0;border-left:1px solid var(--fb-border, #d6dae1);background:var(--fb-surface, #fff)}.fb-side__tabs{display:flex;gap:2px;margin:8px 10px;padding:3px;border-radius:var(--fb-radius, 10px);background:var(--fb-surface-sunken, #eef0f4)}.fb-side__tab{flex:1;padding:5px 8px;border:0;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:var(--fb-text-muted, #6b7086);font:inherit;font-size:11px;cursor:pointer;transition:background .12s ease,color .12s ease}.fb-side__tab-dot{display:inline-block;width:6px;height:6px;margin-left:4px;border-radius:50%;background:var(--fb-accent, #2f6feb);vertical-align:middle}.fb-side__tab:hover:not(.fb-side__tab--active){color:var(--fb-text, #1a1c23)}.fb-side__tab--active{background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-sm, 0 1px 2px rgb(16 24 40 / 6%));color:var(--fb-text, #1a1c23);font-weight:600}.fb-side__content{flex:1;min-height:0;border-top:1px solid var(--fb-border-subtle, #eef0f4)}.fb-side__content>*{height:100%}.fb-side__footer{display:flex;gap:6px;padding:6px 8px;border-top:1px solid var(--fb-border-subtle, #e6e9ee)}@media(max-width:1200px){.fb-main__palette{flex-basis:150px}.fb-main__side{flex-basis:290px}}
|
|
13890
|
-
`],dependencies:[{kind:"component",type:
|
|
15010
|
+
`],dependencies:[{kind:"component",type:De,selector:"fb-debug-panel",inputs:["outcome","wasDebug","isRunning"],outputs:["closed","elementFocused","cleared"]},{kind:"component",type:ue,selector:"fb-element-dialog",inputs:["selectedName","initialFieldPath"],outputs:["closed","removeRequested","duplicateRequested","renamed"]},{kind:"component",type:ee,selector:"fb-element-inspector",inputs:["selectedName","showHeader","initialFieldPath"],outputs:["closed","removeRequested","duplicateRequested","renamed"]},{kind:"component",type:ge,selector:"fb-element-palette",inputs:["processType"],outputs:["elementPicked"]},{kind:"component",type:X,selector:"fb-flow-canvas",inputs:["selectedName","selectedGroupName","selectedNames","outline","isEditable"],outputs:["selectionChange","nodeOpened","nodeRemoveRequested","nodeDuplicateRequested","groupSelected","groupRemoveRequested","elementDropped"]},{kind:"component",type:ae,selector:"fb-flow-search",outputs:["picked"]},{kind:"component",type:Ce,selector:"fb-group-panel",inputs:["isEditable","selectedNodeNames","target"],outputs:["closed","createRequested","memberFocused"]},{kind:"component",type:we,selector:"fb-paste-dialog",inputs:["payload","plan"],outputs:["confirmed","cancelled"]},{kind:"component",type:Te,selector:"fb-problems-panel",outputs:["elementFocused","elementOpened","closed"]},{kind:"component",type:Ne,selector:"fb-resource-panel",inputs:["target"],outputs:["closed"]},{kind:"component",type:oe,selector:"fb-run-dialog",inputs:["mode","flowName","version","isDirty","isBusy"],outputs:["confirmed","cancelled"]},{kind:"component",type:Se,selector:"fb-version-panel",outputs:["closed","versionOpened","notice"]},{kind:"directive",type:k,selector:"select[fbValue]",inputs:["fbValue"]}],changeDetection:a.ChangeDetectionStrategy.OnPush})}a.\u0275\u0275ngDeclareClassMetadata({minVersion:"12.0.0",version:"20.3.28",ngImport:a,type:dn,decorators:[{type:y,args:[{selector:"fb-flow-builder",standalone:!0,imports:[De,ue,ee,ge,X,ae,Ce,we,Te,Ne,oe,Se,k],providers:[T,I,M,H,ce,Q,ie],changeDetection:_.OnPush,host:{"(keydown)":"onKeyDown($event)"},template:`<div class="fb-builder" [attr.data-fb-theme]="null">\r
|
|
13891
15011
|
<header class="fb-top">\r
|
|
13892
15012
|
<div class="fb-top__identity">\r
|
|
13893
15013
|
<input\r
|
|
@@ -13946,11 +15066,36 @@
|
|
|
13946
15066
|
}\r
|
|
13947
15067
|
</div>\r
|
|
13948
15068
|
</div>\r
|
|
15069
|
+
\r
|
|
15070
|
+
<!--\r
|
|
15071
|
+
La ricerca **nel documento**: e\u2019 l\u2019unico modo di arrivare a un elemento su un flow che non\r
|
|
15072
|
+
sta in una schermata. Non e\u2019 la casella della palette, che filtra i tipi da aggiungere.\r
|
|
15073
|
+
-->\r
|
|
15074
|
+
<fb-flow-search (picked)="onSearchPicked($event)" />\r
|
|
13949
15075
|
\r
|
|
13950
15076
|
<div class="fb-top__actions">\r
|
|
13951
15077
|
<button type="button" class="fb-btn" [disabled]="!canUndo()" aria-label="Annulla" (click)="undo()">\u21B6</button>\r
|
|
13952
15078
|
<button type="button" class="fb-btn" [disabled]="!canRedo()" aria-label="Ripeti" (click)="redo()">\u21B7</button>\r
|
|
13953
15079
|
<button type="button" class="fb-btn" title="Ricalcola le posizioni" (click)="autoLayout()">Riordina</button>\r
|
|
15080
|
+
<!--\r
|
|
15081
|
+
Un riquadro e\u2019 un commento sul canvas (\xA73.6): non viene eseguito, quindi il comando sta\r
|
|
15082
|
+
qui accanto a \xABRiordina\xBB e non nella palette degli elementi. Nasce attorno a cio\u2019 che e\u2019\r
|
|
15083
|
+
selezionato, che e\u2019 il gesto per cui serve.\r
|
|
15084
|
+
-->\r
|
|
15085
|
+
<button\r
|
|
15086
|
+
type="button"\r
|
|
15087
|
+
class="fb-btn"\r
|
|
15088
|
+
[disabled]="!isEditable()"\r
|
|
15089
|
+
[title]="\r
|
|
15090
|
+
canCopy()\r
|
|
15091
|
+
? 'Racchiudi gli elementi selezionati in un riquadro di commento'\r
|
|
15092
|
+
: 'Crea un riquadro di commento vuoto: non cambia il comportamento del flow'\r
|
|
15093
|
+
"\r
|
|
15094
|
+
aria-label="Nuovo riquadro di raggruppamento"\r
|
|
15095
|
+
(click)="createGroup()"\r
|
|
15096
|
+
>\r
|
|
15097
|
+
\u2B1A\r
|
|
15098
|
+
</button>\r
|
|
13954
15099
|
\r
|
|
13955
15100
|
<!--\r
|
|
13956
15101
|
Copia e incolla stanno **anche** qui e non solo sui tasti: una scorciatoia che nessuno\r
|
|
@@ -14170,6 +15315,7 @@
|
|
|
14170
15315
|
class="fb-main__canvas"\r
|
|
14171
15316
|
[selectedName]="selectedName()"\r
|
|
14172
15317
|
[selectedNames]="selectedNames()"\r
|
|
15318
|
+
[selectedGroupName]="selectedGroupName()"\r
|
|
14173
15319
|
[outline]="outline()"\r
|
|
14174
15320
|
[isEditable]="isEditable()"\r
|
|
14175
15321
|
(selectionChange)="onSelectionChange($event)"\r
|
|
@@ -14177,12 +15323,15 @@
|
|
|
14177
15323
|
(nodeRemoveRequested)="onRemoveNode($event)"\r
|
|
14178
15324
|
(nodeDuplicateRequested)="onDuplicateNode($event)"\r
|
|
14179
15325
|
(elementDropped)="onElementDropped($event)"\r
|
|
15326
|
+
(groupSelected)="onGroupSelected($event)"\r
|
|
15327
|
+
(groupRemoveRequested)="onGroupRemoved($event)"\r
|
|
14180
15328
|
/>\r
|
|
14181
15329
|
\r
|
|
14182
15330
|
@if (showProblems()) {\r
|
|
14183
15331
|
<fb-problems-panel\r
|
|
14184
15332
|
class="fb-main__problems"\r
|
|
14185
|
-
(elementFocused)="
|
|
15333
|
+
(elementFocused)="revealIssueElement($event)"\r
|
|
15334
|
+
(elementOpened)="openIssueElement($event)"\r
|
|
14186
15335
|
(closed)="toggleProblems()"\r
|
|
14187
15336
|
/>\r
|
|
14188
15337
|
} @else {\r
|
|
@@ -14218,6 +15367,21 @@
|
|
|
14218
15367
|
>\r
|
|
14219
15368
|
Risorse\r
|
|
14220
15369
|
</button>\r
|
|
15370
|
+
<!--\r
|
|
15371
|
+
I riquadri (\xA73.6). Il tab porta il conteggio perche\u2019 e\u2019 l\u2019unico modo di sapere che un\r
|
|
15372
|
+
flow ne ha, quando sono chiusi o fuori dalla vista.\r
|
|
15373
|
+
-->\r
|
|
15374
|
+
<button\r
|
|
15375
|
+
type="button"\r
|
|
15376
|
+
class="fb-side__tab"\r
|
|
15377
|
+
[class.fb-side__tab--active]="sidePanel() === 'groups'"\r
|
|
15378
|
+
(click)="setPanel('groups')"\r
|
|
15379
|
+
>\r
|
|
15380
|
+
Riquadri\r
|
|
15381
|
+
@if (store.groups().length) {\r
|
|
15382
|
+
<span class="fb-main__count">{{ store.groups().length }}</span>\r
|
|
15383
|
+
}\r
|
|
15384
|
+
</button>\r
|
|
14221
15385
|
<button\r
|
|
14222
15386
|
type="button"\r
|
|
14223
15387
|
class="fb-side__tab"\r
|
|
@@ -14249,6 +15413,7 @@
|
|
|
14249
15413
|
@case ('inspector') {\r
|
|
14250
15414
|
<fb-element-inspector\r
|
|
14251
15415
|
[selectedName]="selectedName()"\r
|
|
15416
|
+
[initialFieldPath]="pendingFieldPath()"\r
|
|
14252
15417
|
(removeRequested)="onRemoveNode($event)"\r
|
|
14253
15418
|
(duplicateRequested)="onDuplicateNode($event)"\r
|
|
14254
15419
|
(renamed)="onNodeRenamed($event)"\r
|
|
@@ -14256,7 +15421,17 @@
|
|
|
14256
15421
|
/>\r
|
|
14257
15422
|
}\r
|
|
14258
15423
|
@case ('resources') {\r
|
|
14259
|
-
<fb-resource-panel (closed)="setPanel('inspector')" />\r
|
|
15424
|
+
<fb-resource-panel [target]="resourceTarget()" (closed)="setPanel('inspector')" />\r
|
|
15425
|
+
}\r
|
|
15426
|
+
@case ('groups') {\r
|
|
15427
|
+
<fb-group-panel\r
|
|
15428
|
+
[isEditable]="isEditable()"\r
|
|
15429
|
+
[selectedNodeNames]="selectedNames()"\r
|
|
15430
|
+
[target]="groupTarget()"\r
|
|
15431
|
+
(createRequested)="createGroup()"\r
|
|
15432
|
+
(memberFocused)="focusMember($event)"\r
|
|
15433
|
+
(closed)="setPanel('resources')"\r
|
|
15434
|
+
/>\r
|
|
14260
15435
|
}\r
|
|
14261
15436
|
@case ('versions') {\r
|
|
14262
15437
|
<fb-version-panel\r
|
|
@@ -14322,6 +15497,7 @@
|
|
|
14322
15497
|
<!-- La dialog sta dentro il builder, non nel body: la libreria e\u2019 innestabile. -->\r
|
|
14323
15498
|
<fb-element-dialog\r
|
|
14324
15499
|
[selectedName]="selectedName()"\r
|
|
15500
|
+
[initialFieldPath]="pendingFieldPath()"\r
|
|
14325
15501
|
(closed)="closeDialog()"\r
|
|
14326
15502
|
(removeRequested)="onRemoveNode($event)"\r
|
|
14327
15503
|
(duplicateRequested)="onDuplicateNode($event)"\r
|
|
@@ -14330,4 +15506,4 @@
|
|
|
14330
15506
|
}\r
|
|
14331
15507
|
</div>\r
|
|
14332
15508
|
`,styles:[`:host{display:block;width:100%;height:100%;min-height:0;font:inherit;color:var(--fb-text, #1d2939)}.fb-builder{position:relative;display:flex;flex-direction:column;width:100%;height:100%;min-height:0;background:var(--fb-surface, #fff)}.fb-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 14px;border-bottom:1px solid var(--fb-border, #e2e5eb);background:var(--fb-surface, #fff)}.fb-top__identity{min-width:0}.fb-top__label{width:100%;max-width:420px;padding:2px 4px;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--fb-text, #1d2939);font:inherit;font-size:15px;font-weight:600}.fb-top__label:hover:not(:disabled),.fb-top__label:focus-visible{border-color:var(--fb-border, #d6dae1);background:var(--fb-surface, #fff)}.fb-top__meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:2px}.fb-top__name{width:180px;padding:1px 4px;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--fb-text-muted, #667085);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.fb-top__name:hover:not(:disabled),.fb-top__name:focus-visible{border-color:var(--fb-border, #d6dae1)}.fb-top__process{padding:1px 4px;border:1px solid var(--fb-border-subtle, #e6e9ee);border-radius:4px;background:transparent;color:var(--fb-text-muted, #667085);font:inherit;font-size:11px}.fb-top__status,.fb-top__version,.fb-top__dirty{padding:2px 7px;border-radius:999px;background:var(--fb-surface-sunken, #eef0f4);color:var(--fb-text-muted, #6b7086);font-size:10px;font-weight:600}.fb-top__version{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fb-top__dirty{background:color-mix(in srgb,var(--fb-warning, #b7791f) 16%,transparent);color:var(--fb-warning, #b7791f)}.fb-top__actions{display:flex;flex-wrap:wrap;gap:4px}.fb-banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:6px 12px;border-bottom:1px solid var(--fb-border-subtle, #e6e9ee);background:color-mix(in srgb,var(--fb-accent, #2f6feb) 7%,transparent);font-size:11px}.fb-banner--warn{background:color-mix(in srgb,var(--fb-warning, #b7791f) 12%,transparent);color:var(--fb-warning, #b7791f)}.fb-banner--error{background:color-mix(in srgb,var(--fb-error, #c9372c) 10%,transparent);color:var(--fb-error, #c9372c)}.fb-banner>span{flex:1;min-width:200px}.fb-copy__field{display:flex;align-items:center;gap:6px}.fb-copy__caption{color:var(--fb-text-muted, #667085);white-space:nowrap}.fb-copy__input{width:180px;padding:2px 5px;border:1px solid var(--fb-border, #d6dae1);border-radius:4px;background:var(--fb-surface, #fff);color:var(--fb-text, #1d2939);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.fb-copy__hint{flex:1;min-width:180px;color:var(--fb-text-muted, #667085)}.fb-copy__hint--error{color:var(--fb-error, #c9372c)}.fb-main{display:flex;flex:1;min-height:0}.fb-main__palette{flex:0 0 190px;min-width:0}.fb-main__center{display:flex;flex:1;flex-direction:column;min-width:0;min-height:0}.fb-main__canvas{flex:1;min-height:0}.fb-main__problems{flex:0 0 auto;height:220px}.fb-main__problems-toggle{display:flex;align-items:center;gap:6px;padding:4px 12px;border:0;border-top:1px solid var(--fb-border, #d6dae1);background:var(--fb-surface-alt, #f8f9fb);color:var(--fb-text-muted, #667085);font:inherit;font-size:11px;cursor:pointer}.fb-main__count{padding:0 5px;border-radius:8px;background:var(--fb-border, #d6dae1);font-size:9px;font-weight:700}.fb-main__count--error{background:color-mix(in srgb,var(--fb-error, #c9372c) 16%,transparent);color:var(--fb-error, #c9372c)}.fb-main__count--warn{background:color-mix(in srgb,var(--fb-warning, #b7791f) 16%,transparent);color:var(--fb-warning, #b7791f)}.fb-main__side{display:flex;flex-direction:column;flex:0 0 340px;min-width:0;min-height:0;border-left:1px solid var(--fb-border, #d6dae1);background:var(--fb-surface, #fff)}.fb-side__tabs{display:flex;gap:2px;margin:8px 10px;padding:3px;border-radius:var(--fb-radius, 10px);background:var(--fb-surface-sunken, #eef0f4)}.fb-side__tab{flex:1;padding:5px 8px;border:0;border-radius:var(--fb-radius-xs, 6px);background:transparent;color:var(--fb-text-muted, #6b7086);font:inherit;font-size:11px;cursor:pointer;transition:background .12s ease,color .12s ease}.fb-side__tab-dot{display:inline-block;width:6px;height:6px;margin-left:4px;border-radius:50%;background:var(--fb-accent, #2f6feb);vertical-align:middle}.fb-side__tab:hover:not(.fb-side__tab--active){color:var(--fb-text, #1a1c23)}.fb-side__tab--active{background:var(--fb-surface, #fff);box-shadow:var(--fb-shadow-sm, 0 1px 2px rgb(16 24 40 / 6%));color:var(--fb-text, #1a1c23);font-weight:600}.fb-side__content{flex:1;min-height:0;border-top:1px solid var(--fb-border-subtle, #eef0f4)}.fb-side__content>*{height:100%}.fb-side__footer{display:flex;gap:6px;padding:6px 8px;border-top:1px solid var(--fb-border-subtle, #e6e9ee)}@media(max-width:1200px){.fb-main__palette{flex-basis:150px}.fb-main__side{flex-basis:290px}}
|
|
14333
|
-
`]}]}],ctorParameters:()=>[],propDecorators:{flowName:[{type:a.Input,args:[{isSignal:!0,alias:"flowName",required:!1}]}],version:[{type:a.Input,args:[{isSignal:!0,alias:"version",required:!1}]}],author:[{type:a.Input,args:[{isSignal:!0,alias:"author",required:!1}]}],defaultProcessType:[{type:a.Input,args:[{isSignal:!0,alias:"defaultProcessType",required:!1}]}],inspectorMode:[{type:a.Input,args:[{isSignal:!0,alias:"inspectorMode",required:!1}]}],saved:[{type:a.Output,args:["saved"]}],activated:[{type:a.Output,args:["activated"]}],closeRequested:[{type:a.Output,args:["closeRequested"]}],copyNameInput:[{type:a.ViewChild,args:["copyNameInput",{isSignal:!0}]}]}});export{
|
|
15509
|
+
`]}]}],ctorParameters:()=>[],propDecorators:{flowName:[{type:a.Input,args:[{isSignal:!0,alias:"flowName",required:!1}]}],version:[{type:a.Input,args:[{isSignal:!0,alias:"version",required:!1}]}],author:[{type:a.Input,args:[{isSignal:!0,alias:"author",required:!1}]}],defaultProcessType:[{type:a.Input,args:[{isSignal:!0,alias:"defaultProcessType",required:!1}]}],inspectorMode:[{type:a.Input,args:[{isSignal:!0,alias:"inspectorMode",required:!1}]}],saved:[{type:a.Output,args:["saved"]}],activated:[{type:a.Output,args:["activated"]}],closeRequested:[{type:a.Output,args:["closeRequested"]}],canvas:[{type:a.ViewChild,args:[a.forwardRef(()=>X),{isSignal:!0}]}],search:[{type:a.ViewChild,args:[a.forwardRef(()=>ae),{isSignal:!0}]}],copyNameInput:[{type:a.ViewChild,args:["copyNameInput",{isSignal:!0}]}]}});export{W as ConditionEditorComponent,C as ConnectorEditorComponent,De as DebugPanelComponent,de as DynamicScreenInspectorComponent,rt as ENUM_CHOICE_SET_DEFAULT_DISPLAY_FIELD,tt as ENUM_CHOICE_SET_DEFAULT_VALUE_FIELD,yn as ENUM_CHOICE_SET_FIELDS,ue as ElementDialogComponent,ee as ElementInspectorComponent,ge as ElementPaletteComponent,ve as EnumValuePickerComponent,Pn as FALLBACK_COLLECTION_BY_TYPE,Or as FALLBACK_TYPE_LABEL,Dr as FLOW_BUILDER_HTTP_CONFIG,ar as FLOW_CLIPBOARD_KIND,xt as FLOW_CLIPBOARD_VERSION,Mr as FLOW_ELEMENT_ICONS,Rr as FLOW_ELEMENT_VARIANT_FIELDS,$r as FLOW_ELEMENT_VARIANT_ICONS,Sr as FLOW_ERROR_FALLBACK_MESSAGE,ea as FLOW_ERROR_HTTP_STATUS,rn as FLOW_GROUP_COLORS,mn as FLOW_NAME_PATTERN,Me as FLOW_NODE_COLLECTIONS,me as FLOW_NODE_HEIGHT,Tt as FLOW_NODE_WIDTH,tn as FLOW_REFERENCE_FIELDS,Tr as FLOW_RESOURCE_COLLECTIONS,Lr as FLOW_VALUE_FIELDS,Gn as FLOW_VALUE_LITERAL_FIELDS,ye as FieldAssignmentEditorComponent,P as FieldPickerComponent,_e as FieldValuePickerComponent,D as FlowApiError,B as FlowBuilderApi,dn as FlowBuilderComponent,X as FlowCanvasComponent,M as FlowCatalogStore,Fe as FlowClipboardService,I as FlowDictionaryStore,T as FlowDocumentStore,Q as FlowEditorSession,ie as FlowLayoutService,H as FlowValidationStore,G as FormulaEditorComponent,ce as FormulaValidationService,Cn as GROUP_HEADER_HEIGHT,Sn as GROUP_MIN_HEIGHT,Tn as GROUP_MIN_WIDTH,nn as GROUP_PADDING,Ce as GroupPanelComponent,N as HttpFlowBuilderApi,F as NamePickerComponent,z as NodeInspectorBase,Gr as ORCHESTRATION_CONDITION_OUTPUT,q as ObjectPickerComponent,xe as OrchestratedStageInspectorComponent,V as ParameterEditorComponent,we as PasteDialogComponent,Te as ProblemsPanelComponent,Y as RecordFilterEditorComponent,$ as ReferencePickerComponent,Ne as ResourcePanelComponent,oe as RunDialogComponent,dt as SEVERITY_BUCKETS,ut as SEVERITY_ICON,Jn as SEVERITY_LABEL,R as START_NODE_NAME,k as SelectValueDirective,ke as StartInspectorComponent,he as StructureMemberPickerComponent,J as StructurePickerComponent,aa as TYPES_WITH_AUTOMATIC_OUTPUT,Ye as TYPE_BY_COLLECTION,Vn as UNSUPPORTED_TYPES,S as ValueEditorComponent,Se as VersionPanelComponent,Qn as allFieldsOf,Nt as applyPaste,Vr as areTypesComparable,nr as boundsAround,or as buildClipboardPayload,pr as canvasGroupId,an as canvasNodeId,qr as checkConditionLogic,$e as checkFlowName,et as choiceSetSourceOf,Zn as declaredChoiceSetSources,Jr as describeFieldPath,en as describePathEntry,Zr as duplicateField,Ln as elementIcon,cr as emptyFlowDefinition,at as enumChoiceSetFieldType,Z as fieldAt,gt as filterReferences,_n as flattenFields,Re as flowNodeWidth,Mt as flowNodeWidthClass,ht as groupColorClass,rr as groupRect,Dn as hasAutoSize,ir as innerNamesOf,Xe as insertField,kt as isClipboardPayload,Je as isCustomConditionLogic,mt as isEmptyReferenceFilter,Kr as isFieldResource,gn as isGlobalReference,jn as isNumericType,vn as isPathInside,Pr as isTypeCheckedOperator,it as isUnknownEnumChoiceSetField,Er as isValidFlowName,re as isValued,ft as loadPathLevel,er as matchesReferenceFilter,vt as membersInside,Ar as moveCondition,Yr as moveField,Nn as navigatePath,nt as otherSourceFieldsOf,ta as outletByKey,L as outletsOf,Fn as parseCanvasGroupId,Rn as parseCanvasNodeId,Yn as parseFieldPath,Un as parseInvariantNumber,Mn as parseSourceConnectorId,$n as parseTargetConnectorId,wn as pathAvailableNames,xn as pathContainerLabel,sa as pathKey,kn as pathNotVerifiableMessage,sr as planPaste,_t as recomputeMembers,Ze as referenceRoot,wt as referencedRootsOf,Bn as remapConditionLogic,zr as removeCondition,Kn as removeField,Xn as resolvePath,tr as rewriteReferences,yt as sameMembers,hn as samePath,Qr as screenActionNames,Hr as screenFieldNames,be as severityBucket,fe as slugifyFlowName,ur as sourceConnectorId,jr as stageStepNames,Hn as stageStepOutputReferenced,Ur as stepsOf,dr as targetConnectorId,ba as typeOfCollection,U as uniqueFlowName,Br as valuedFieldOf,Wn as valuedFieldsOf,bn as variantFieldOf,Fr as variantOf,Ir as variantPresetOf};
|