1import{d as U,e as o,am as z,q as K,_ as N,a0 as Y,o as p,a as w,g as C,h as d,a4 as j,a7 as A,b as T,t as F,n as G,F as q,ag as X,aT as Z,aR as J,aU as $,at as ee,au as ae,ab as B,aQ as te,ah as V,aM as ie,r as L,aV as se,aN as re,aW as ne,ae as oe,af as le,aX as de,aY as ce,f as E,aZ as ue}from"./index-DKZnzhiT.js";import{u as W,Q as me,a as ve,b as fe,c as pe,H as ge,M as he}from"./useAgentMappingBridge-CmcXD4FX.js";import{Q as _e}from"./QmutPageFooter-DnCbcYyu.js";import{u as H}from"./languageStore-DWPOXuth.js";import{Q as be}from"./QmutSchemaConflictDialog-C9J_1C-U.js";import{Q as Se}from"./QmutCreateSchemaFieldDialog-ZsUap95n.js";import{Q as ye}from"./QmutLanguageSelector-C8coOq8d.js";import{u as Fe}from"./aiGeneratedFieldStore-BQe1-ir2.js";import"./mappingAdapter-DkyeekTe.js";import"./QmutSchemaTypeBadge-DKW_mOzR.js";import"./QmutWarehouseThumbnail-BcPnQFPF.js";import"./index-Dfy7W79v.js";import"./warehouseStore-BBiL8hEU.js";import"./warehouseAdapter-BmFf1WBT.js";import"./qflowAdapter-BLcRu4J6.js";import"./QmutBucketFieldEnumList-a3_PuvU2.js";import"./numericInput-D3yXuP03.js";import"./QmutToggle-D5nCA92a.js";import"./connectorStore-BD--zkCI.js";import"./reconcileInPlace-C4wSjhmU.js";const we=U({__name:"QmutRulesFooter",setup(Q,{expose:r}){r();const a=W(),e=H(),m=o(()=>{var f;if(!a.isPerspective)return"Main";const v=e.selectedSchemaId;return((f=e.perspectiveOptions.find(b=>b.value===v))==null?void 0:f.label)??"Export View"}),s=o(()=>a.draftCount),t=o(()=>s.value>0||a.ambientLanguageDirty),n=o(()=>a.invalidDrafts.length),S=o(()=>!t.value||a.saving||!a.canSaveAll),y=o(()=>!t.value||a.saving),l=o(()=>[...new Set(a.invalidDrafts.map(v=>v.fieldId))].join(", ")),g=o(()=>n.value>0?`Fix ${l.value} first â the expression is not valid`:a.checkingDrafts?"Checking the expressionâ¦":"Save every field you have changed"),h=o(()=>s.value>0?`${s.value} unsaved ${s.value===1?"change":"changes"}`:a.ambientLanguageDirty?"Unsaved language change":"No unsaved changes"),_={store:a,perspective:e,schemaLabel:m,pendingCount:s,dirty:t,invalidCount:n,commitDisabled:S,discardDisabled:y,invalidNames:l,saveTitle:g,dirtyLabel:h,get Button(){return K},QmutPageFooter:_e,get Permission(){return z}};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}}),Ce={class:"rules-footer__schema"},Qe={key:0,class:"rules-footer__invalid"};function Re(Q,r,a,e,m,s){const t=Y("permission");return p(),w(q,null,[C(" QmutRulesFooter "),d(e.QmutPageFooter,null,{status:j(()=>[T("span",Ce,F(e.schemaLabel),1),T("span",{class:G(["rules-footer__dirty",{"rules-footer__dirty--on":e.dirty}])}
1,F(e.dirtyLabel),3),e.invalidCount>0?(p(),w("span",Qe," · "+F(e.invalidCount)+" invalid ("+F(e.invalidNames)+") ",1)):C("v-if",!0)]),default:j(()=>[A(d(e.Button,{label:"Discard changes",text:"",size:"small",title:"Throw away every unsaved change",disabled:e.discardDisabled,onClick:r[0]||(r[0]=n=>e.store.discardAll())},null,8,["disabled"]),[[t,e.Permission.SCHEMA_WRITE]]),A(d(e.Button,{label:e.store.saving?"Savingâ¦":"Save changes",icon:"pi pi-check",size:"small",title:e.saveTitle,loading:e.store.saving,disabled:e.commitDisabled,onClick:r[1]||(r[1]=n=>e.store.saveAll())},null,8,["label","title","loading","disabled"]),[[t,e.Permission.SCHEMA_WRITE]])]),_:1})],2112)}const De=N(we,[["render",Re],["__scopeId","data-v-75225114"],["__file","/src/QMutator.Platform.Client/src/features/setup/rules/QmutRulesFooter.vue"]]),Ie=U({__name:"QmutRulesTab",setup(Q,{expose:r}){r();const a=W(),e=H(),m=Fe(),{companyId:s,projectId:t}=X(),n=Z(),S=J(),y=$();ee(me);let l;const g=L(!1);async function h(){!s.value||!t.value||(g.value=!1,await e.ensureLoaded(s.value,t.value),l===void 0&&(l=e.selectedSchemaId),await a.load(s.value,t.value,{pinMain:!0}),P(),g.value=!0,m.fetchAll(s.value,t.value))}ae(h),B([s,t],h),te(()=>{l&&e.availableSchemas.some(i=>i.id===l)&&e.select(l)});const _=o({get:()=>n.params.mode==="advanced",set:i=>{S.replace({name:"rules",params:{...n.params,mode:i?"advanced":""},query:n.query})}});ve(()=>({page:"setup-rules",mode:_.value?"advanced":"builder"})),V(ge,!0);const v=ie();function f(){return{identifier:"",description:"",schemaType:re.String,isProjectField:!1,mappingDefinition:"",isList:!1,hasDefault:!1,defaultValue:null}}const b=L(!1),R=L(f());async function k(){!s.value||!t.value||(await v.loadProjectSchema(s.value,t.value),R.value=f(),b.value=!0)}async function O(){if(!s.value||!t.value)return;const i={...R.value};try{await ne(s.value,t.value,i)}catch(u){oe(le(u,"Failed to create field"));return}b.value=!1,await a.reloadFromServer(),a.focusField(i.identifier)}V(he,{add:k});const D=o(()=>typeof n.query.field=="string"?n.query.field:null);function I(){const i=D.value;if(!i)return!1;if(i===a.focusedFieldId)return!0;const u=a.fields.some(c=>c.id===i)||a.projectFields.some(c=>c.id===i);return u&&a.focusField(i),u}function P(){I()||a.focusedFieldId||a.fields.length===0||a.focusField(a.fields[0].id)}B(D,I);function M(){const i=[...new Set(a.invalidDrafts.map(c=>c.fieldId))],u=`You have ${a.draftCount} unsaved rule ${a.draftCount===1?"change":"changes"}.`;return i.length===0?`${u} Leaving discards them â save them first, or leave and lose them.`:`${u} ${i.join(", ")} ${i.length===1?"is":"are"} not a valid expression and cannot be saved as ${i.length===1?"it is":"they are"}. Leaving discards every unsaved change.`}se((i,u,c)=>{if(!a.draftCount&&!a.ambientLanguageDirty){c();return}y.require({header:"Unsaved changes",message:M(),acceptLabel:"Leave",rejectLabel:"Stay",rejectProps:{severity:"secondary",outlined:!0},accept:()=>{a.discardAll(),c()},reject:()=>c(!1)})});const x={store:a,perspective:e,aiFieldStore:m,companyId:s,projectId:t,route:n,router:S,confirm:y,get previousSchemaId(){return l},set previousSchemaId(i){l=i},ready:g,loadIfReady:h,advanced:_,schemaStore:v,freshField:f,fieldDialogVisible:b,newField:R,openAddField:k,createField:O,linkedFieldId:D,focusLinkedField:I,applyInitialFocus:P,leaveMessage:M,get ConfirmDialog(){return ce},QmutRuleModeSwitch:pe,QmutRulesFooter:De,QmutRulesWorkbench:fe,get ProgressSpinner(){return de},QmutSchemaConflictDialog:be,QmutCreateSchemaFieldDialog:Se,QmutLanguageSelector:ye};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}}),Le={class:"rules-tab"},Te={key:1,class:"rules-tab__loading"};function ke(Q,r,a,e,m,s){return p(),w(q,null,[C(" QmutRulesTab "),T("div",Le,[d(e.ConfirmDialog),d(e.QmutSchemaConflictDialog,{visible:!!e.store.conflict,onReplace:e.store.resolveConflictReplace,onReload:e.store.resolveConflictReload,onCancel:e.store.resolveConflictCancel},null,8,["visible","onReplace","onReload","onCancel"]),d(e.QmutCreateSchemaFieldDialog,{visible:e.fieldDialogVisible,"onUpdate:visible":r[0]||(r[0]=t=>e.fieldDialogVisible=t),"model-value":e.newField,"onUpdate:modelValue":r[1]||(r[1]=t=>e.newField=t),mode:"create",onSubmit:e.createField}
1,null,8,["visible","model-value"]),C(` The mode switch belongs on the Setup tab row, next to the tabs, rather 2 than on a row of its own above the panes. The language switch sits with 3 it: it decides which language's rules both modes edit and preview. `),(p(),E(ue,{to:".setup-page__actions",defer:""},[d(e.QmutLanguageSelector,{disabled:e.store.loading},null,8,["disabled"]),d(e.QmutRuleModeSwitch,{advanced:e.advanced,"onUpdate:advanced":r[2]||(r[2]=t=>e.advanced=t)},null,8,["advanced"])])),e.ready?(p(),E(e.QmutRulesWorkbench,{key:0,advanced:e.advanced,"onUpdate:advanced":r[3]||(r[3]=t=>e.advanced=t)},null,8,["advanced"])):(p(),w("div",Te,[d(e.ProgressSpinner,{style:{width:"40px",height:"40px"},"stroke-width":"4"})])),d(e.QmutRulesFooter)])],2112)}const Je=N(Ie,[["render",ke],["__scopeId","data-v-3701c802"],["__file","/src/QMutator.Platform.Client/src/features/setup/rules/QmutRulesTab.vue"]]);export{Je as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.