@aquera/data-visualizer-sdk 0.0.43 → 0.0.44

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.
@@ -40581,7 +40581,7 @@ end`};e.events.push(["putFont",function(r){(function(o){var a=o.font,s=o.out,l=o
40581
40581
  `)}}function $H(i,e){return new Promise(t=>{if(e.aborted){t();return}let M=setTimeout(()=>{e.removeEventListener("abort",n),t()},i),n=()=>{clearTimeout(M),t()};e.addEventListener("abort",n,{once:!0})})}var XH=class i{static RECONNECT_MS=2500;static MAX_RECONNECTS=1;tokenStore=Be(vr);stream(e,t){if(!e)return()=>{};let M=new AbortController,n=!1,r=[],o=s=>{s.kind==="saved"&&s.dashboardId&&r.push(s.dashboardId),t(s)};return(async()=>{let s=i.MAX_RECONNECTS;for(;!n;){let l=!1;try{l=await this.consume(e,o,M.signal)}catch(N){if(n||M.signal.aborted)return;console.warn("[auto-dashboard] stream dropped:",N)}if(n||l)return;if(s<=0){o({kind:"error",message:"stream-ended",dashboardIds:[...r]});return}s-=1,await $H(i.RECONNECT_MS,M.signal)}})(),()=>{n=!0,M.abort()}}streamUrl(e){let t=xA()||dt.baseUrl,M=this.tokenStore.tenantId()??"",n=Oi();return`${t}/api/customers/${M}/products/${n}/workforce/auto-dashboard/stream/${e}`}async consume(e,t,M){let n=this.tokenStore.accessToken()??"",r=await fetch(this.streamUrl(e),{method:"GET",headers:x({Accept:"text/event-stream"},n?{Authorization:`Bearer ${n}`}:{}),signal:M});if(!r.ok||!r.body)throw new Error(`auto-dashboard stream HTTP ${r.status}`);let o=r.body.getReader(),a=new TextDecoder,s="",l=!1;for(;;){let{value:N,done:c}=await o.read();if(c)break;s=(s+a.decode(N,{stream:!0})).replace(/\r\n/g,`
40582
40582
  `);let D;for(;(D=s.indexOf(`
40583
40583
 
40584
- `))!==-1;){let I=s.slice(0,D);s=s.slice(D+2),this.handleFrame(I,t)&&(l=!0)}if(l)break}return l}handleFrame(e,t){let M=GH(e);if(!M)return!1;let{event:n,data:r}=M;try{if(n==="complete"){let o=JSON.parse(r);return t({kind:"complete",dashboardIds:o.dashboardIds??[]}),!0}if(n==="error"){let o=JSON.parse(r);return t({kind:"error",message:o.message,dashboardIds:o.dashboardIds??[]}),!0}if(n==="progress"){let o=JSON.parse(r);if(o.dashboardId)t({kind:"saved",dashboardId:o.dashboardId,dashboardName:o.dashboardName??TGt(o.message)});else if(typeof o.widgetIndex=="number"){let a=HH(o);t({kind:"progress",label:JH(o,a),phase:a,widgetTitle:o.widgetTitle,widgetIndex:o.widgetIndex,totalWidgets:o.totalWidgets??0})}else o.dashboardName&&t({kind:"dashboard-start",dashboardName:o.dashboardName})}}catch{}return!1}static \u0275fac=function(t){return new(t||i)};static \u0275prov=Ct({token:i,factory:i.\u0275fac,providedIn:"root"})};function TGt(i){if(!i)return;let e=i.indexOf(":");return e>=0&&i.slice(e+1).trim()||void 0}var qH=15360,RN={email:{name:"Email",shortName:"Email",glyph:"ng-mail-01",tileBg:"var(--ng-color-blue-600)"},teams:{name:"Microsoft Teams",shortName:"Teams",glyph:"ng-users-01",tileBg:"var(--ng-color-purple-600)"},slack:{name:"Slack",shortName:"Slack",glyph:"ng-hash",tileBg:"var(--ng-color-teal-600)"}};function KH(i){return new TextEncoder().encode(i).length}var xut=()=>[0,1,2],AGt=()=>[0,1,2,3,4],zGt=(i,e)=>e.key,hGt=(i,e)=>e.value,put=(i,e)=>e.token;function xGt(i,e){i&1&&(C(0,"div",3),Zt(1,"nile-skeleton-loader",15)(2,"nile-skeleton-loader",16),b())}function pGt(i,e){i&1&&(C(0,"article",5)(1,"div",17),Zt(2,"nile-skeleton-loader",18),C(3,"div",19),Zt(4,"nile-skeleton-loader",20)(5,"nile-skeleton-loader",21),b(),Zt(6,"nile-skeleton-loader",22),b()())}function LGt(i,e){i&1&&Zt(0,"nile-skeleton-loader",14)}function OGt(i,e){i&1&&(C(0,"div",1)(1,"section",2),ht(2,xGt,3,0,"div",3,nr),b(),Zt(4,"nile-skeleton-loader",4),ht(5,pGt,7,0,"article",5,nr),b(),C(7,"aside",6)(8,"div",7)(9,"div",8),Zt(10,"nile-skeleton-loader",9)(11,"nile-skeleton-loader",10),b(),C(12,"div",11),Zt(13,"nile-skeleton-loader",12),C(14,"div",13),ht(15,LGt,1,0,"nile-skeleton-loader",14,nr),b()()()()),i&2&&(L(2),xt(Nd(0,xut)),L(3),xt(Nd(1,xut)),L(10),xt(Nd(2,AGt)))}function mGt(i,e){if(i&1&&(C(0,"nile-error-message",24),Y(1),b()),i&2){let t=p(2);Ue("errorMessage",t.error()),L(),Mt(t.error())}}function EGt(i,e){if(i&1){let t=Le();C(0,"section",2)(1,"div",3)(2,"span",28),Y(3,"Title "),C(4,"span",29),Y(5,"*"),b()(),C(6,"nile-input",30),Ae("nile-input",function(n){P(t);let r=p(2);return R(r.titleChange.emit(r.inputVal(n)))}),b()(),C(7,"div",3)(8,"span",28),Y(9,"Description"),b(),Zt(10,"nile-textarea",31),b()()}if(i&2){let t=p(2);L(6),It("value",t.title())}}function fGt(i,e){i&1&&(C(0,"div",25),Y(1,"Channels \u2014 pick where this sends"),b())}function SGt(i,e){i&1&&(C(0,"span",37),Y(1,"On"),b())}function wGt(i,e){if(i&1&&(C(0,"nile-option",59),Y(1),b()),i&2){let t=e.$implicit;Ue("value",t.value),L(),Mt(t.label)}}function CGt(i,e){if(i&1){let t=Le();C(0,"nile-select",58),Ae("nile-change",function(n){P(t);let r=p(2).$implicit,o=p(2);return R(o.fieldAChange.emit({key:r.key,value:o.selectVal(n)}))}),ht(1,wGt,2,2,"nile-option",59,hGt),b()}if(i&2){let t=p(2).$implicit;Ue("value",t.fieldASelected),L(),xt(t.fieldAOptions)}}function kGt(i,e){if(i&1&&(C(0,"div",44),Y(1),b()),i&2){let t=p(2).$implicit;L(),Mt(t.fieldAValue)}}function bGt(i,e){if(i&1){let t=Le();C(0,"button",66),Ae("click",function(){P(t);let n=p().$implicit,r=p(5);return R(r.editVariable.emit(n))}),Zt(1,"nile-glyph",67),b(),C(2,"button",68),Ae("click",function(){P(t);let n=p().$implicit,r=p(5);return R(r.deleteVariable.emit(n.token))}),Zt(3,"nile-glyph",69),b()}if(i&2){let t=p().$implicit,M=p(5);It("aria-label","Edit variable "+M.tokenOf(t))("title","Edit "+M.tokenOf(t)),L(2),It("aria-label","Delete variable "+M.tokenOf(t))("title","Delete "+M.tokenOf(t))}}function QGt(i,e){if(i&1){let t=Le();C(0,"div",60)(1,"button",64),Ae("click",function(){let n=P(t).$implicit,r=p(3).$implicit,o=p(2);return R(o.insertToken.emit({key:r.key,token:n.token}))}),C(2,"span",65),Y(3),b(),C(4,"span",63),Y(5),b()(),he(6,bGt,4,4),b()}if(i&2){let t=e.$implicit,M=p(5);L(3),Mt(M.tokenOf(t)),L(2),Mt(t.display),L(),xe(M.canDelete(t)?6:-1)}}function UGt(i,e){if(i&1){let t=Le();C(0,"div",55),ht(1,QGt,7,3,"div",60,put),C(3,"button",61),Ae("click",function(){P(t);let n=p(4);return R(n.openAddVar.emit())}),Zt(4,"nile-glyph",62),C(5,"span",63),Y(6,"Create new variable"),b()()()}if(i&2){let t=p(4);L(),xt(t.variables())}}function vGt(i,e){if(i&1){let t=Le();C(0,"div",41)(1,"div",42)(2,"div",3)(3,"span",28),Y(4),b(),he(5,CGt,3,1,"nile-select",43)(6,kGt,2,1,"div",44),b(),C(7,"div",3)(8,"span",28),Y(9),b(),C(10,"nile-input",45),Ae("nile-input",function(n){P(t);let r=p().$implicit,o=p(2);return R(o.fieldBChange.emit({key:r.key,value:o.inputVal(n)}))}),b()()(),C(11,"div",3)(12,"span",28),Y(13,"Message body "),C(14,"span",29),Y(15,"*"),b()(),C(16,"div",46)(17,"div",47)(18,"span",48),Y(19,"B"),b(),C(20,"span",49),Y(21,"I"),b(),C(22,"span",50),Y(23,"U"),b(),Zt(24,"span",51),C(25,"div",52)(26,"button",53),Ae("click",function(){P(t);let n=p().$implicit,r=p(2);return R(r.toggleMenu.emit(n.key))}),C(27,"span",54),Y(28,"{ }"),b(),Y(29," Insert variable "),b(),he(30,UGt,7,0,"div",55),b()(),C(31,"nile-textarea",56),Ae("nile-input",function(n){P(t);let r=p().$implicit,o=p(2);return R(o.bodyInput.emit({key:r.key,value:o.inputVal(n)}))})("nile-change",function(n){P(t);let r=p().$implicit,o=p(2);return R(o.bodyInput.emit({key:r.key,value:o.inputVal(n)}))})("nile-focus",function(){P(t);let n=p().$implicit,r=p(2);return R(r.bodyFocus.emit(n.key))}),b()(),C(32,"div",57),Y(33),b()()()}if(i&2){let t=p().$implicit,M=p(2);L(4),Mt(t.fieldALabel),L(),xe(t.fieldAOptions.length?5:6),L(4),Mt(t.fieldBLabel),L(),It("value",t.fieldBValue)("placeholder",t.fieldBPlaceholder),L(16),Wt("var-btn--open",M.varMenu()===t.key),L(4),xe(M.varMenu()===t.key?30:-1),L(),Ue("value",M.bodyValue(t.key)),It("placeholder",t.bodyPlaceholder),L(2),Mt(M.byteLabel(t.key))}}function YGt(i,e){if(i&1){let t=Le();C(0,"article",5)(1,"div",17)(2,"span",32),Zt(3,"nile-glyph",33),b(),C(4,"div",34)(5,"div",35)(6,"span",36),Y(7),b(),he(8,SGt,2,0,"span",37),b(),C(9,"div",38),Y(10),b()(),C(11,"button",39),Ae("click",function(){let n=P(t).$implicit,r=p(2);return R(r.toggleChannel.emit(n.key))}),Zt(12,"span",40),b()(),he(13,vGt,34,11,"div",41),b()}if(i&2){let t=e.$implicit,M=p(2);Wt("ch-card--on",M.isOn(t.key)),L(2),aM("background",t.tileBg),L(),It("name",t.glyph),L(4),Mt(t.name),L(),xe(M.isOn(t.key)?8:-1),L(2),Mt(t.hint),L(),Wt("toggle--on",M.isOn(t.key)),It("aria-checked",M.isOn(t.key))("aria-label","Toggle "+t.name),L(2),xe(M.isOpen(t.key)?13:-1)}}function ZGt(i,e){if(i&1){let t=Le();C(0,"button",82),Ae("click",function(){P(t);let n=p().$implicit,r=p(4);return R(r.editVariable.emit(n))}),Zt(1,"nile-glyph",67),b(),C(2,"button",83),Ae("click",function(){P(t);let n=p().$implicit,r=p(4);return R(r.deleteVariable.emit(n.token))}),Zt(3,"nile-glyph",69),b()}if(i&2){let t=p().$implicit,M=p(4);It("aria-label","Edit variable "+M.tokenOf(t))("title","Edit "+M.tokenOf(t)),L(2),It("aria-label","Delete variable "+M.tokenOf(t))("title","Delete "+M.tokenOf(t))}}function _Gt(i,e){if(i&1){let t=Le();C(0,"div",79)(1,"button",80),Ae("click",function(){let n=P(t).$implicit,r=p(4);return R(r.insertToken.emit({key:r.focusedBody(),token:n.token}))}),C(2,"span",65),Y(3),b(),C(4,"span",81),Y(5),b()(),he(6,ZGt,4,4),b()}if(i&2){let t=e.$implicit,M=p(4);L(),It("aria-label","Insert "+M.tokenOf(t)),L(2),Mt(M.tokenOf(t)),L(2),Mt(t.display),L(),xe(M.canDelete(t)?6:-1)}}function WGt(i,e){if(i&1&&(C(0,"div",13),ht(1,_Gt,7,4,"div",79,put),b()),i&2){let t=p(3);L(),xt(t.variables())}}function PGt(i,e){i&1&&(C(0,"div",78),Zt(1,"nile-glyph",84),C(2,"div",85),Y(3,"No variables match"),b()())}function RGt(i,e){if(i&1){let t=Le();C(0,"aside",27)(1,"div",7)(2,"div",8)(3,"span",70),Y(4,"Variables"),b(),C(5,"button",71),Ae("click",function(){P(t);let n=p(2);return R(n.openAddVar.emit())}),Zt(6,"nile-glyph",72),Y(7," Add variable "),b()(),C(8,"div",11)(9,"div",73),Y(10," Inserting into "),C(11,"span",74),Y(12),b(),Y(13," body. "),b(),C(14,"div",75),Zt(15,"nile-glyph",76),C(16,"nile-input",77),Ae("nile-input",function(n){P(t);let r=p(2);return R(r.varSearchChange.emit(r.inputVal(n)))}),b()(),he(17,WGt,3,0,"div",13)(18,PGt,4,0,"div",78),b()()()}if(i&2){let t=p(2);L(12),Mt(t.focusedChannelName()),L(4),It("value",t.varSearch()),L(),xe(t.variables().length>0?17:18)}}function VGt(i,e){if(i&1&&(C(0,"div",23),he(1,mGt,2,2,"nile-error-message",24),he(2,EGt,11,1,"section",2),he(3,fGt,2,0,"div",25),ht(4,YGt,14,13,"article",26,zGt),b(),he(6,RGt,19,3,"aside",27)),i&2){let t=p();L(),xe(t.error()?1:-1),L(),xe(t.showHeader()?2:-1),L(),xe(t.showHeader()?3:-1),L(),xt(t.channelDefs()),L(2),xe(t.showRail()?6:-1)}}var CE=class i{mode=at("create");showHeader=at(!0);showRail=at(!0);dense=at(!1);title=at("");channelOn=at.required();channelOpen=at.required();bodies=at.required();focusedBody=at("email");varMenu=at(null);variables=at.required();deletableTokens=at([]);varSearch=at("");webhooks=at.required();emailSenders=at([]);selectedFieldA=at({});fieldBValues=at({});error=at("");loading=at(!1);titleChange=Xi();fieldAChange=Xi();fieldBChange=Xi();toggleChannel=Xi();toggleMenu=Xi();bodyInput=Xi();bodyFocus=Xi();insertToken=Xi();deleteVariable=Xi();editVariable=Xi();varSearchChange=Xi();openAddVar=Xi();focusedChannelName=At(()=>RN[this.focusedBody()].name);channelDefs=At(()=>{let e=this.webhooks(),t=this.selectedFieldA(),M=this.fieldBValues(),n=this.emailSenders().map(l=>({label:l,value:l})),r=l=>l.map(N=>({label:N.name,value:N.name})),o=(l,N)=>t[l]??N[0]?.value??"",a=r(e.teams),s=r(e.slack);return[{key:"email",name:RN.email.name,hint:"Subject, recipients and HTML body",glyph:RN.email.glyph,tileBg:RN.email.tileBg,fieldALabel:"From",fieldAValue:n[0]?.value??"No verified sender",fieldAOptions:n,fieldASelected:o("email",n),fieldBLabel:"To",fieldBPlaceholder:"Add recipients (comma-separated)",fieldBValue:M.email??"",bodyPlaceholder:"Alert {{ALERT_NAME}} is now {{STATE}} ({{VALUE}} rows)."},{key:"teams",name:RN.teams.name,hint:"Posts an adaptive card to a channel",glyph:RN.teams.glyph,tileBg:RN.teams.tileBg,fieldALabel:"Webhook",fieldAValue:e.teams[0]?e.teams[0].name:"No webhook",fieldAOptions:a,fieldASelected:o("teams",a),fieldBLabel:"Card title",fieldBPlaceholder:"Notification title",fieldBValue:M.teams??"",bodyPlaceholder:"{{ALERT_NAME}} is {{STATE}} on {{CONNECTION}}."},{key:"slack",name:RN.slack.name,hint:"Posts a message to a channel",glyph:RN.slack.glyph,tileBg:RN.slack.tileBg,fieldALabel:"Webhook",fieldAValue:e.slack[0]?e.slack[0].name:"Connect a webhook first",fieldAOptions:s,fieldASelected:o("slack",s),fieldBLabel:"Channel override",fieldBPlaceholder:"#data-alerts",fieldBValue:M.slack??"",bodyPlaceholder:":rotating_light: {{ALERT_NAME}} \u2014 {{STATE}}"}]});isOn(e){return this.channelOn()[e]}isOpen(e){return this.channelOn()[e]&&this.channelOpen()[e]}bodyValue(e){return this.bodies()[e]??""}byteLabel(e){return`${KH(this.bodyValue(e)).toLocaleString()} / ${qH.toLocaleString()} bytes (UTF-8, max 15 KB)`}tokenOf(e){return`{{${e.token}}}`}deletable=At(()=>new Set(this.deletableTokens()));canDelete(e){return this.deletable().has(e.token)}inputVal(e){return e.detail?.value??""}selectVal(e){let t=e.detail?.value;return Array.isArray(t)?t[0]??"":t??""}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=rM({type:i,selectors:[["app-template-editor"]],inputs:{mode:[1,"mode"],showHeader:[1,"showHeader"],showRail:[1,"showRail"],dense:[1,"dense"],title:[1,"title"],channelOn:[1,"channelOn"],channelOpen:[1,"channelOpen"],bodies:[1,"bodies"],focusedBody:[1,"focusedBody"],varMenu:[1,"varMenu"],variables:[1,"variables"],deletableTokens:[1,"deletableTokens"],varSearch:[1,"varSearch"],webhooks:[1,"webhooks"],emailSenders:[1,"emailSenders"],selectedFieldA:[1,"selectedFieldA"],fieldBValues:[1,"fieldBValues"],error:[1,"error"],loading:[1,"loading"]},outputs:{titleChange:"titleChange",fieldAChange:"fieldAChange",fieldBChange:"fieldBChange",toggleChannel:"toggleChannel",toggleMenu:"toggleMenu",bodyInput:"bodyInput",bodyFocus:"bodyFocus",insertToken:"insertToken",deleteVariable:"deleteVariable",editVariable:"editVariable",varSearchChange:"varSearchChange",openAddVar:"openAddVar"},decls:3,vars:3,consts:[[1,"editor"],["aria-hidden","true",1,"editor__main"],[1,"panel"],[1,"field"],["variant","text","width","220px","height","11",1,"eyebrow"],[1,"ch-card"],["aria-hidden","true",1,"rail"],[1,"rail__panel"],[1,"rail__head"],["variant","text","width","70px","height","14"],["variant","text","width","80px","height","13"],[1,"rail__body"],["variant","rounded","width","100%","height","36",1,"tpl-skel__search"],[1,"rail__list"],["variant","rounded","width","100%","height","34"],["variant","text","width","80px","height","12"],["variant","rounded","width","100%","height","36"],[1,"ch-card__head"],["variant","rounded","width","32px","height","32"],[1,"ch-card__meta","tpl-skel__lines"],["variant","text","width","90px","height","14"],["variant","text","width","170px","height","12"],["variant","rounded","width","36px","height","20"],[1,"editor__main"],[3,"errorMessage"],[1,"eyebrow"],[1,"ch-card",3,"ch-card--on"],[1,"rail"],[1,"field__label"],[1,"req"],["placeholder","e.g. New hire welcome",3,"nile-input"],["rows","2","resize","vertical","placeholder","What is this notification for?"],[1,"ch-card__tile"],["method","stroke","color","#ffff","size","18"],[1,"ch-card__meta"],[1,"ch-card__title-row"],[1,"ch-card__name"],[1,"on-pill"],[1,"ch-card__hint"],["type","button","role","switch",1,"toggle",3,"click"],[1,"toggle__thumb"],[1,"ch-card__body"],[1,"grid-2"],["hoist","",3,"value"],[1,"readonly-field"],[3,"nile-input"],[1,"body"],[1,"body__toolbar"],[1,"tool","tool--b"],[1,"tool","tool--i"],[1,"tool","tool--u"],[1,"tool__sep"],[1,"var-wrap"],["type","button",1,"var-btn",3,"click"],[1,"var-btn__braces"],[1,"var-menu"],["rows","4","resize","vertical",1,"body__textarea",3,"nile-input","nile-change","nile-focus","value"],[1,"byte-label"],["hoist","",3,"nile-change","value"],[3,"value"],[1,"var-menu__row"],["type","button",1,"var-menu__item","var-menu__new",3,"click"],["name","ng-plus","method","stroke","size","13"],[1,"var-display"],["type","button",1,"var-menu__item",3,"click"],[1,"var-token"],["type","button",1,"var-menu__act",3,"click"],["name","ng-edit-02","method","stroke","size","13"],["type","button",1,"var-menu__act","var-menu__del",3,"click"],["name","ng-trash-01","method","stroke","size","13"],[1,"rail__title"],["type","button",1,"rail__add",3,"click"],["name","ng-plus","method","stroke","size","14"],[1,"rail__inserting"],[1,"rail__inserting-name"],[1,"rail__search"],["name","ng-search-lg","method","stroke","size","14",1,"rail__search-icon"],["placeholder","Search variables",3,"nile-input"],[1,"rail__empty"],[1,"var-row"],["type","button",1,"var-row__insert",3,"click"],[1,"var-row__display"],["type","button",1,"var-row__act",3,"click"],["type","button",1,"var-row__act","var-row__del",3,"click"],["name","ng-braces","method","stroke","size","24"],[1,"rail__empty-title"]],template:function(t,M){t&1&&(C(0,"div",0),he(1,OGt,17,3)(2,VGt,7,4),b()),t&2&&(Wt("editor--dense",M.dense()),L(),xe(M.loading()?1:2))},styles:["[_nghost-%COMP%]{display:block;width:100%}.editor[_ngcontent-%COMP%]{display:flex;gap:20px;padding:20px 24px 48px;align-items:flex-start}.editor--dense[_ngcontent-%COMP%]{padding:0;gap:0}.editor--dense[_ngcontent-%COMP%] .editor__main[_ngcontent-%COMP%]{gap:10px}.editor--dense[_ngcontent-%COMP%] .grid-2[_ngcontent-%COMP%]{grid-template-columns:1fr}.editor__main[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;flex-direction:column;gap:16px}nile-skeleton-loader[_ngcontent-%COMP%]{display:block}.tpl-skel__lines[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px}.tpl-skel__search[_ngcontent-%COMP%]{margin-bottom:10px}.panel[_ngcontent-%COMP%], .ch-card[_ngcontent-%COMP%], .rail__panel[_ngcontent-%COMP%]{background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-secondary);border-radius:var(--ng-radius-xl);box-shadow:var(--ng-shadow-xs)}.panel[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:14px;padding:16px}.field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px}.field__label[_ngcontent-%COMP%]{font-size:12px;font-weight:var(--ng-font-weight-medium);color:var(--ng-colors-text-secondary-700)}.req[_ngcontent-%COMP%]{color:var(--ng-color-error-600)}.grid-2[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.readonly-field[_ngcontent-%COMP%]{display:flex;align-items:center;height:36px;padding:0 12px;border:1px solid var(--ng-colors-border-primary);border-radius:var(--ng-radius-md);background:var(--ng-colors-bg-primary);font-size:13px;color:var(--ng-colors-text-secondary-700)}.eyebrow[_ngcontent-%COMP%]{font-size:11px;font-weight:var(--ng-font-weight-semibold);letter-spacing:.06em;text-transform:uppercase;color:var(--ng-colors-text-quaternary-500);padding:0 2px}.ch-card[_ngcontent-%COMP%]{overflow:visible}.ch-card--on[_ngcontent-%COMP%]{border-color:var(--ng-colors-border-primary)}.ch-card__head[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;padding:14px 16px}.ch-card__tile[_ngcontent-%COMP%]{width:32px;height:32px;border-radius:var(--ng-radius-md);color:var(--ng-colors-text-white);display:flex;align-items:center;justify-content:center;flex:none}.ch-card__meta[_ngcontent-%COMP%]{flex:1;min-width:0}.ch-card__title-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.ch-card__name[_ngcontent-%COMP%]{font-size:14px;font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-primary-900)}.ch-card__hint[_ngcontent-%COMP%]{font-size:12px;color:var(--ng-colors-text-quaternary-500)}.ch-card__body[_ngcontent-%COMP%]{border-top:1px solid var(--ng-colors-border-tertiary);padding:16px;background:var(--ng-colors-bg-secondary-subtle);display:flex;flex-direction:column;gap:12px}.on-pill[_ngcontent-%COMP%]{height:20px;padding:0 8px;border-radius:var(--ng-radius-full);font-size:11px;font-weight:var(--ng-font-weight-semibold);display:inline-flex;align-items:center;background:var(--ng-componentcolors-utility-success-50);border:1px solid var(--ng-componentcolors-utility-success-200);color:var(--ng-componentcolors-utility-success-700)}.body[_ngcontent-%COMP%]{border:1px solid var(--ng-colors-border-primary);border-radius:var(--ng-radius-md);background:var(--ng-colors-bg-primary);overflow:visible;position:relative}.body__toolbar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:2px;padding:6px 8px;border-bottom:1px solid var(--ng-colors-border-tertiary)}.body__textarea[_ngcontent-%COMP%]{display:block;width:100%;--nile-textarea-border-width: 0}.tool[_ngcontent-%COMP%]{width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--ng-radius-sm);font-size:13px;color:var(--ng-colors-text-tertiary-600);cursor:pointer}.tool[_ngcontent-%COMP%]:hover{background:var(--ng-colors-bg-secondary)}.tool--b[_ngcontent-%COMP%]{font-weight:var(--ng-font-weight-bold)}.tool--i[_ngcontent-%COMP%]{font-style:italic}.tool--u[_ngcontent-%COMP%]{text-decoration:underline}.tool__sep[_ngcontent-%COMP%]{width:1px;height:16px;background:var(--ng-colors-border-secondary);margin:0 4px}.var-wrap[_ngcontent-%COMP%]{position:relative}.var-btn[_ngcontent-%COMP%]{height:26px;padding:0 8px;display:inline-flex;align-items:center;gap:5px;border:none;border-radius:var(--ng-radius-sm);font-size:12px;font-weight:var(--ng-font-weight-semibold);color:var(--ng-color-bluedark-600);cursor:pointer;background:none}.var-btn[_ngcontent-%COMP%]:hover, .var-btn--open[_ngcontent-%COMP%]{background:var(--ng-colors-bg-brand-primary)}.var-btn__braces[_ngcontent-%COMP%]{font-weight:var(--ng-font-weight-bold)}.var-menu[_ngcontent-%COMP%]{position:absolute;top:30px;left:0;z-index:25;width:240px;background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-secondary);border-radius:var(--ng-radius-lg);box-shadow:var(--ng-shadow-lg);padding:6px;max-height:260px;overflow-y:auto;animation:_ngcontent-%COMP%_vpop .14s ease}.var-menu__item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;width:100%;padding:7px 8px;border:none;background:none;border-radius:7px;cursor:pointer;text-align:left}.var-menu__item[_ngcontent-%COMP%]:hover{background:var(--ng-colors-bg-active)}.var-menu__row[_ngcontent-%COMP%]{display:flex;align-items:center}.var-menu__row[_ngcontent-%COMP%] .var-menu__item[_ngcontent-%COMP%]{flex:1;min-width:0}.var-token[_ngcontent-%COMP%]{font-size:12px;color:var(--ng-color-bluedark-600);background:var(--ng-colors-bg-brand-primary);padding:1px 6px;border-radius:var(--ng-radius-sm);white-space:nowrap}.var-display[_ngcontent-%COMP%]{font-size:12px;color:var(--ng-colors-text-secondary-700)}.byte-label[_ngcontent-%COMP%]{font-size:11px;color:var(--ng-colors-text-quaternary-500);font-variant-numeric:tabular-nums}.rail[_ngcontent-%COMP%]{width:300px;flex:none;position:sticky;top:0}.rail__panel[_ngcontent-%COMP%]{overflow:hidden}.rail__head[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--ng-colors-border-tertiary)}.rail__title[_ngcontent-%COMP%]{font-size:14px;font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-primary-900)}.rail__add[_ngcontent-%COMP%]{appearance:none;border:none;background:none;cursor:pointer;display:inline-flex;align-items:center;gap:5px;font-size:13px;font-weight:var(--ng-font-weight-semibold);color:var(--ng-color-bluedark-600)}.rail__add[_ngcontent-%COMP%]:hover{color:var(--ng-color-bluedark-700)}.rail__body[_ngcontent-%COMP%]{padding:12px 16px}.rail__inserting[_ngcontent-%COMP%]{font-size:12px;color:var(--ng-colors-text-tertiary-600);margin-bottom:10px}.rail__inserting-name[_ngcontent-%COMP%]{font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-secondary-700)}.rail__search[_ngcontent-%COMP%]{position:relative;display:flex;align-items:center;margin-bottom:10px}.rail__search-icon[_ngcontent-%COMP%]{position:absolute;left:10px;z-index:1;color:var(--ng-colors-fg-quaternary-400);pointer-events:none}.rail__search[_ngcontent-%COMP%] nile-input[_ngcontent-%COMP%]{width:100%;--nile-input-padding-left: 30px}.rail__list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px}.rail__empty[_ngcontent-%COMP%]{padding:18px 8px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--ng-colors-fg-quaternary-400)}.rail__empty-title[_ngcontent-%COMP%]{font-size:13px;font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-secondary-700)}.var-display[_ngcontent-%COMP%], .var-row__display[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.var-row__act[_ngcontent-%COMP%], .var-menu__act[_ngcontent-%COMP%]{flex:none;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:var(--ng-radius-sm);background:none;cursor:pointer;color:var(--ng-colors-fg-quaternary-400)}.var-row__act[_ngcontent-%COMP%]:hover, .var-row__act[_ngcontent-%COMP%]:focus-visible, .var-menu__act[_ngcontent-%COMP%]:hover, .var-menu__act[_ngcontent-%COMP%]:focus-visible{background:var(--ng-colors-bg-secondary);color:var(--ng-colors-text-primary-900)}.var-row__del[_ngcontent-%COMP%]:hover, .var-row__del[_ngcontent-%COMP%]:focus-visible, .var-menu__del[_ngcontent-%COMP%]:hover, .var-menu__del[_ngcontent-%COMP%]:focus-visible{background:var(--ng-colors-bg-error-primary);color:var(--ng-colors-text-error-primary-600)}.var-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:1px solid var(--ng-colors-border-secondary);border-radius:var(--ng-radius-md);background:none}.var-row__insert[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;align-items:center;gap:8px;padding:0;border:none;background:none;cursor:pointer;text-align:left;font:inherit;color:inherit}.var-row[_ngcontent-%COMP%]:hover{background:var(--ng-colors-bg-active);border-color:var(--ng-colors-border-primary)}.var-row__display[_ngcontent-%COMP%]{flex:1;font-size:12px;font-weight:var(--ng-font-weight-medium);color:var(--ng-colors-text-secondary-700)}.toggle[_ngcontent-%COMP%]{position:relative;width:36px;height:20px;flex:none;border:none;padding:0;border-radius:var(--ng-radius-full);cursor:pointer;background:var(--ng-colors-border-primary);transition:background var(--ng-transition-duration-fast) ease}.toggle__thumb[_ngcontent-%COMP%]{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:var(--ng-radius-full);background:var(--ng-colors-fg-white);box-shadow:var(--ng-shadow-sm);transition:left var(--ng-transition-duration-fast) ease}.toggle--on[_ngcontent-%COMP%]{background:var(--ng-color-bluedark-600)}.toggle--on[_ngcontent-%COMP%] .toggle__thumb[_ngcontent-%COMP%]{left:18px}@keyframes _ngcontent-%COMP%_vpop{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}"]})};var BGt={equals:"is",not_equals:"is_not",contains:"contains",in:"is",not_in:"is_not"},FGt={equals:"=",not_equals:"!=",lt:"<",lte:"<=",gt:">",gte:">=",between:"between",in:"=",not_in:"!="},HGt=new Set(["in","not_in"]);function Lut(i,e,t){let M=(i??[]).filter(o=>o?.field&&o?.operation).filter(o=>o.source!=="timeRange");if(t?.hasOr&&M.length)return{conditions:[],dropped:["the OR between filter groups (alert conditions are AND-only)"]};let n=[],r=[];for(let o of M){let a=e.get(o.field);if(!a){r.push(`${o.field} (not a column of the watched widget)`);continue}let s=(a==="text"?BGt:FGt)[o.operation];if(!s){r.push(`${o.field} ${o.operation}`);continue}if(s==="between"){let[l,N]=Array.isArray(o.value)?o.value:[];if(l==null||N==null){r.push(`${o.field} between`);continue}n.push({column:o.field,op:s,value:String(l),value2:String(N)});continue}if(HGt.has(o.operation)){let l=Array.isArray(o.value)?o.value:[o.value];if(l.length!==1){r.push(`${o.field} ${o.operation} (${l.length} values \u2014 the alert model has no "one of" operator)`);continue}n.push({column:o.field,op:s,value:String(l[0]??"")});continue}n.push({column:o.field,op:s,value:String(o.value??"")})}return{conditions:n,dropped:r}}function Out(i){if(!i.length)return"";let e=i.length;return`${e} filter condition${e===1?"":"s"} couldn't be carried over (${i.join("; ")}) \u2014 review before saving.`}var mut={">":"is greater than",">=":"is greater than or equal to","<":"is less than","<=":"is less than or equal to","=":"is equal to","!=":"is not equal to",between:"is between",contains:"contains",not_contains:"does not contain",is:"is",is_not:"is not"},WQ=[">",">=","<","<=","=","!=","between"],kE=["contains","not_contains","is","is_not"],JGt=[...WQ,...kE];function Eut(i){return i?i==="text"?kE:WQ:JGt}function fut(i){if(!Array.isArray(i)||!i.length)return"Add a trigger condition \u2014 pick a column, an operator and a value.";for(let e of i){if(!e?.column)return"Every condition needs a column.";if(!e?.op)return`Pick an operator for "${e.column}".`;if(e.value===void 0||e.value===null||String(e.value).trim()==="")return`Enter a value for "${e.column}".`;if(e.op==="between"&&(e.value2===void 0||e.value2===null||String(e.value2).trim()===""))return`"${e.column}" is between two values \u2014 enter the second one.`}return""}var GGt=(i,e)=>e.title,tJ=(i,e)=>e.name;function $Gt(i,e){if(i&1){let t=Le();$(0,"button",6),Ze("click",function(){P(t);let n=p(2);return R(n.backToSuggestions())}),it(1,"nile-glyph",7),te()}}function XGt(i,e){i&1&&($(0,"div",19),it(1,"nile-skeleton-loader",20),$(2,"span",13),it(3,"nile-skeleton-loader",21)(4,"nile-skeleton-loader",22),te()())}function qGt(i,e){if(i&1&&ht(0,XGt,5,0,"div",19,nr),i&2){let t=p(3);xt(t.skeletons)}}function KGt(i,e){if(i&1&&($(0,"code",29),Y(1),te()),i&2){let t=p().$implicit;L(),Mt(t.condition.value2)}}function e8t(i,e){if(i&1){let t=Le();$(0,"button",25),Ze("click",function(){let n=P(t).$implicit,r=p(4);return R(r.pickSuggestion(n))}),$(1,"span",26),it(2,"nile-glyph",27),te(),$(3,"span",13)(4,"span",14),Y(5),te(),$(6,"span",15),Y(7),te()(),$(8,"span",28)(9,"code",29),Y(10),te(),$(11,"code",30),Y(12),te(),$(13,"code",29),Y(14),te(),he(15,KGt,2,1,"code",29),te()()}if(i&2){let t=e.$implicit,M=p(4);L(5),Mt(t.title),L(2),Mt(t.description),L(3),Mt(t.condition.column),L(2),Mt(M.opLabel(t.condition.op)),L(2),Mt(t.condition.value),L(),xe(t.condition.value2?15:-1)}}function t8t(i,e){if(i&1&&($(0,"p",24),Y(1),te()),i&2){let t=p(4);L(),Mt(t.suggestionsError())}}function i8t(i,e){if(i&1&&(ht(0,e8t,16,6,"button",23,GGt),he(2,t8t,2,1,"p",24)),i&2){let t=p(3);xt(t.suggestions()),L(2),xe(t.suggestionsError()?2:-1)}}function M8t(i,e){i&1&&($(0,"div",9)(1,"span"),Y(2,"OR"),te()())}function n8t(i,e){if(i&1){let t=Le();$(0,"div",8),he(1,qGt,2,0)(2,i8t,3,1),he(3,M8t,3,0,"div",9),$(4,"button",10),Ze("click",function(){P(t);let n=p(2);return R(n.startFromScratch())}),$(5,"span",11),it(6,"nile-glyph",12),te(),$(7,"span",13)(8,"span",14),Y(9,"Create alert"),te(),$(10,"span",15),Y(11,"Start from scratch and define your own condition"),te()(),it(12,"nile-glyph",16),te()(),$(13,"footer",17)(14,"nile-button",18),Ze("click",function(){P(t);let n=p(2);return R(n.close())}),Y(15,"Cancel"),te()()}if(i&2){let t=p(2);L(),xe(t.suggestionsLoading()?1:2),L(2),xe(t.suggestions().length||t.suggestionsLoading()?3:-1)}}function r8t(i,e){i&1&&($(0,"b",60),Y(1,"manual"),te())}function o8t(i,e){if(i&1&&($(0,"span",59),it(1,"i"),Y(2),he(3,r8t,2,0,"b",60),te()),i&2){let t=e.$implicit;Wt("ad__chip--text",t.dataType==="text")("ad__chip--mnl",t.source==="custom"),L(2),Mt(t.name),L(),xe(t.source==="custom"?3:-1)}}function a8t(i,e){i&1&&($(0,"span",39),Y(1,"No metrics detected \u2014 add one below."),te())}function s8t(i,e){if(i&1){let t=Le();$(0,"div",75)(1,"nile-input",80),Ze("nile-input",function(n){P(t);let r=p(4);return R(r.mExpr.set(r.inputVal(n)))}),te()()}if(i&2){let t=p(4);L(),ot("value",t.mExpr())("placeholder",t.mKind()==="sql"?"e.g. SUM(amount) or gross - tax":"e.g. gross - tax")}}function l8t(i,e){if(i&1){let t=Le();$(0,"div",42)(1,"div",61)(2,"div",62),it(3,"nile-glyph",63),te(),$(4,"div",64)(5,"h3"),Y(6,"Add metric"),te(),$(7,"div",65),Y(8,"Define a metric to alert on when it isn't auto-detected"),te()(),$(9,"button",66),Ze("click",function(){P(t);let n=p(3);return R(n.metricOpen.set(!1))}),Y(10,"\u2715"),te()(),$(11,"div",67)(12,"span",43),Y(13,"Metric name "),$(14,"span",44),Y(15,"*"),te()(),$(16,"nile-input",68),Ze("nile-input",function(n){P(t);let r=p(3);return R(r.mName.set(r.inputVal(n)))}),te(),$(17,"span",43),Y(18,"Data type"),te(),$(19,"div",69)(20,"button",70),Ze("click",function(){P(t);let n=p(3);return R(n.mType.set("number"))}),Y(21,"Number"),te(),$(22,"button",70),Ze("click",function(){P(t);let n=p(3);return R(n.mType.set("text"))}),Y(23,"Text"),te()(),$(24,"span",43),Y(25,"How is it computed?"),te(),$(26,"nile-select",71),Ze("nile-change",function(n){P(t);let r=p(3);return R(r.setMKind(r.selectVal(n)))}),$(27,"nile-option",72),Y(28,"Manual field"),te(),$(29,"nile-option",73),Y(30,"SQL expression"),te(),$(31,"nile-option",74),Y(32,"Formula"),te()(),he(33,s8t,2,2,"div",75),$(34,"div",76),Y(35,"Preview "),$(36,"code"),Y(37),te()()(),$(38,"div",77)(39,"nile-button",78),Ze("click",function(){P(t);let n=p(3);return R(n.metricOpen.set(!1))}),Y(40,"Cancel"),te(),$(41,"nile-button",79),Ze("click",function(){P(t);let n=p(3);return R(n.confirmMetric())}),Y(42,"Add metric"),te()()()}if(i&2){let t=p(3);L(16),ot("value",t.mName()),L(4),Wt("on",t.mType()==="number"),L(2),Wt("on",t.mType()==="text"),L(4),ot("value",t.mKind()),L(7),xe(t.mKind()!=="manual"?33:-1),L(4),Jo("",t.mName()||"Metric"," \xB7 ",t.mType()==="number"?"Number":"Text"),L(4),It("disabled",t.mCanSave()?null:"")}}function g8t(i,e){if(i&1&&($(0,"p",48),it(1,"nile-glyph",81),Y(2),te()),i&2){let t=p(3);L(2),ui(" ",t.prefillNotice()," ")}}function N8t(i,e){if(i&1&&($(0,"nile-option",83),Y(1),te()),i&2){let t=e.$implicit;ot("value",t.name),L(),Mt(t.name)}}function u8t(i,e){if(i&1&&($(0,"nile-option",83),Y(1),te()),i&2){let t=e.$implicit,M=p(4);ot("value",t),L(),Mt(M.opLabel(t))}}function c8t(i,e){if(i&1){let t=Le();$(0,"nile-input",89),Ze("nile-input",function(n){P(t);let r=p().$index,o=p(3);return R(o.patchCond(r,"value2",o.inputVal(n)))}),te()}if(i&2){let t=p().$implicit;ot("value",t.value2??"")}}function D8t(i,e){if(i&1){let t=Le();$(0,"div",49)(1,"nile-select",82),Ze("nile-change",function(n){let r=P(t).$index,o=p(3);return R(o.onCondColumn(r,o.selectVal(n)))}),ht(2,N8t,2,2,"nile-option",83,tJ),$(4,"nile-option",83),Y(5,"\uFF0B Add metric\u2026"),te()(),$(6,"nile-select",84),Ze("nile-change",function(n){let r=P(t).$index,o=p(3);return R(o.patchCond(r,"op",o.selectVal(n)))}),ht(7,u8t,2,2,"nile-option",83,Ho),te(),$(9,"nile-input",85),Ze("nile-input",function(n){let r=P(t).$index,o=p(3);return R(o.patchCond(r,"value",o.inputVal(n)))}),te(),he(10,c8t,1,1,"nile-input",86),$(11,"nile-button",87),Ze("click",function(){let n=P(t).$index,r=p(3);return R(r.removeCond(n))}),it(12,"nile-glyph",88),te()()}if(i&2){let t=e.$implicit,M=p(3);L(),ot("value",t.column),L(),xt(M.allMetrics()),L(2),ot("value",M.addMetricOpt),L(2),ot("value",t.op),L(),xt(M.opsForColumn(t.column)),L(2),ot("value",t.value),L(),xe(t.op==="between"?10:-1)}}function I8t(i,e){i&1&&($(0,"p",48),it(1,"nile-glyph",81),Y(2," Couldn\u2019t load this alert\u2019s saved message from the Notification Center. Close and reopen the alert \u2014 saving now is blocked so its message isn\u2019t replaced with an empty one. "),te())}function d8t(i,e){if(i&1&&($(0,"p",57),Y(1),te()),i&2){let t=p(4);L(),Mt(t.vError())}}function j8t(i,e){if(i&1&&($(0,"nile-option",83),Y(1),te()),i&2){let t=e.$implicit;ot("value",t.name),L(),Mt(t.name)}}function y8t(i,e){if(i&1){let t=Le();$(0,"div",75)(1,"nile-select",71),Ze("nile-change",function(n){P(t);let r=p(4);return R(r.vField.set(r.selectVal(n)))}),ht(2,j8t,2,2,"nile-option",83,tJ),te()()}if(i&2){let t=p(4);L(),ot("value",t.vField()),L(),xt(t.allMetrics())}}function T8t(i,e){if(i&1){let t=Le();$(0,"div",75)(1,"nile-input",93),Ze("nile-input",function(n){P(t);let r=p(4);return R(r.vStatic.set(r.inputVal(n)))}),te()()}if(i&2){let t=p(4);L(),ot("value",t.vStatic())}}function A8t(i,e){if(i&1){let t=Le();$(0,"div",75)(1,"nile-input",80),Ze("nile-input",function(n){P(t);let r=p(4);return R(r.vExpr.set(r.inputVal(n)))}),te()()}if(i&2){let t=p(4);L(),ot("placeholder",OG("e.g. ","{{VALUE}}"," - ","{{THRESHOLD}}"))("value",t.vExpr())}}function z8t(i,e){if(i&1){let t=Le();$(0,"div",42)(1,"div",61)(2,"div",90),it(3,"nile-glyph",91),te(),$(4,"div",64)(5,"h3"),Y(6),te(),$(7,"div",65),Y(8),te()(),$(9,"button",66),Ze("click",function(){P(t);let n=p(3);return R(n.closeVar())}),Y(10,"\u2715"),te()(),$(11,"div",67),he(12,d8t,2,1,"p",57),$(13,"span",43),Y(14,"Variable name "),$(15,"span",44),Y(16,"*"),te()(),$(17,"nile-input",92),Ze("nile-input",function(n){P(t);let r=p(3);return R(r.vName.set(r.inputVal(n)))}),te(),$(18,"span",43),Y(19,"Maps to"),te(),$(20,"div",69)(21,"button",70),Ze("click",function(){P(t);let n=p(3);return R(n.vMapsTo.set("field"))}),Y(22,"Chart field"),te(),$(23,"button",70),Ze("click",function(){P(t);let n=p(3);return R(n.vMapsTo.set("static"))}),Y(24,"Static text"),te(),$(25,"button",70),Ze("click",function(){P(t);let n=p(3);return R(n.vMapsTo.set("expr"))}),Y(26,"Expression"),te()(),he(27,y8t,4,1,"div",75)(28,T8t,2,1,"div",75)(29,A8t,2,4,"div",75),$(30,"div",76),Y(31,"Token "),$(32,"code"),Y(33),te()()(),$(34,"div",77)(35,"nile-button",78),Ze("click",function(){P(t);let n=p(3);return R(n.closeVar())}),Y(36,"Cancel"),te(),$(37,"nile-button",79),Ze("click",function(){P(t);let n=p(3);return R(n.confirmVar())}),Y(38),te()()()}if(i&2){let t=p(3);L(6),Mt(t.vEditing()?"Edit variable":"Create new variable"),L(2),ui(" ",t.vEditing()?"Renaming also rewrites the token in every message body that uses it":"Reusable across every channel in this alert"," "),L(4),xe(t.vError()?12:-1),L(5),ot("value",t.vName()),L(4),Wt("on",t.vMapsTo()==="field"),L(2),Wt("on",t.vMapsTo()==="static"),L(2),Wt("on",t.vMapsTo()==="expr"),L(2),xe(t.vMapsTo()==="field"?27:t.vMapsTo()==="static"?28:29),L(6),Mt(t.vTokenPreview()),L(4),It("disabled",t.vName().trim()?null:""),L(),ui(" ",t.vEditing()?"Save variable":"Add variable"," ")}}function h8t(i,e){if(i&1&&($(0,"p",57),Y(1),te()),i&2){let t=p(3);L(),Mt(t.error())}}function x8t(i,e){if(i&1){let t=Le();$(0,"div",31)(1,"div",32)(2,"div",33)(3,"div",34)(4,"div",35),it(5,"nile-glyph",36),Y(6," Metrics from this chart "),te(),$(7,"div",37),ht(8,o8t,4,6,"span",38,tJ,!1,a8t,2,0,"span",39),$(11,"button",40),Ze("click",function(){P(t);let n=p(2);return R(n.openMetric(null))}),it(12,"nile-glyph",41),Y(13," Add metric "),te()()(),he(14,l8t,43,10,"div",42),$(15,"span",43),Y(16,"Alert name "),$(17,"span",44),Y(18,"*"),te()(),$(19,"nile-input",45),Ze("nile-input",function(n){P(t);let r=p(2);return R(r.name.set(r.inputVal(n)))}),te(),$(20,"div",46),Y(21,"Condition"),te(),$(22,"p",47),Y(23,"Alert me when the following condition matches"),te(),he(24,g8t,3,1,"p",48),ht(25,D8t,13,5,"div",49,nr),$(27,"nile-button",50),Ze("click",function(){P(t);let n=p(2);return R(n.addCond())}),it(28,"nile-glyph",51),Y(29," Add condition "),te()(),$(30,"div",33)(31,"div",46),Y(32,"Channels \u2014 pick where this sends"),te(),$(33,"div",52),it(34,"nile-glyph",53),Y(35," This dashboard supports Email, Slack and Microsoft Teams only. "),te(),$(36,"div",54),it(37,"nile-glyph",55),$(38,"span"),Y(39,"Type "),$(40,"code"),Y(41),te(),Y(42," in any message to search variables, or use "),$(43,"b"),Y(44,"Insert variable"),te(),Y(45,". Don't see the field you need? Pick "),$(46,"b"),Y(47,"+ Create new variable"),te(),Y(48,"."),te()(),he(49,I8t,3,0,"p",48),$(50,"app-template-editor",56),Ze("toggleChannel",function(n){P(t);let r=p(2);return R(r.onToggleChannel(n))})("toggleMenu",function(n){P(t);let r=p(2);return R(r.onToggleMenu(n))})("bodyInput",function(n){P(t);let r=p(2);return R(r.onBodyInput(n))})("bodyFocus",function(n){P(t);let r=p(2);return R(r.focusedBody.set(n))})("insertToken",function(n){P(t);let r=p(2);return R(r.onInsertToken(n))})("varSearchChange",function(n){P(t);let r=p(2);return R(r.varSearch.set(n))})("fieldAChange",function(n){P(t);let r=p(2);return R(r.onFieldA(n))})("fieldBChange",function(n){P(t);let r=p(2);return R(r.onFieldB(n))})("deleteVariable",function(n){P(t);let r=p(2);return R(r.onDeleteVar(n))})("editVariable",function(n){P(t);let r=p(2);return R(r.onEditVar(n))})("openAddVar",function(){P(t);let n=p(2);return R(n.openVar())}),te(),he(51,z8t,39,14,"div",42),te()(),he(52,h8t,2,1,"p",57),te(),$(53,"footer",17)(54,"span",39),Y(55),te(),$(56,"nile-button",18),Ze("click",function(){P(t);let n=p(2);return R(n.close())}),Y(57,"Cancel"),te(),$(58,"nile-button",58),Ze("click",function(){P(t);let n=p(2);return R(n.save())}),Y(59),te()()}if(i&2){let t=p(2);L(8),xt(t.allMetrics()),L(6),xe(t.metricOpen()?14:-1),L(5),ot("value",t.name()),L(5),xe(t.prefillNotice()?24:-1),L(),xt(t.conditions()),L(16),Mt("{{"),L(8),xe(t.tplLoad()==="failed"?49:-1),L(),ot("showHeader",!1)("showRail",!1)("dense",!0)("loading",t.channelsLoading())("channelOn",t.channelOn())("channelOpen",t.channelOpen())("bodies",t.bodies())("focusedBody",t.focusedBody())("varMenu",t.varMenu())("variables",t.filteredVariables())("varSearch",t.varSearch())("webhooks",t.webhooks())("emailSenders",t.emailSenders())("deletableTokens",t.customVarTokens())("selectedFieldA",t.selectedFieldA())("fieldBValues",t.fieldB()),L(),xe(t.varOpen()?51:-1),L(),xe(t.error()?52:-1),L(3),ui("",t.activeChannelCount()," channels on"),L(3),ot("loading",t.saving()),L(),ui(" ",t.isEditing()?"Save changes":"Create alert"," ")}}function p8t(i,e){if(i&1&&($(0,"div",1),he(1,$Gt,2,0,"button",2),$(2,"span",3)(3,"span",4),Y(4),te(),$(5,"span",5),Y(6),te()()(),he(7,n8t,16,2)(8,x8t,60,27)),i&2){let t=p();L(),xe(t.step()==="edit"&&t.showSuggestions()&&t.suggestions().length?1:-1),L(3),Mt(t.headerTitle()),L(2),Mt(t.headerSubtitle()),L(),xe(t.step()==="suggest"?7:8)}}var Sut="__add_metric__",Ks=i=>typeof i=="string"?i:"",wut=[{token:"ALERT_NAME",display:"Alert name"},{token:"STATE",display:"Current state"},{token:"CONNECTION",display:"Connection"},{token:"VALUE",display:"Row count"},{token:"evaluated_at",display:"Evaluation time"}],L8t={email:"Alert {{ALERT_NAME}} is now {{STATE}} ({{VALUE}} rows).",teams:"{{ALERT_NAME}} is {{STATE}} on {{CONNECTION}}.",slack:":rotating_light: {{ALERT_NAME}} \u2014 {{STATE}}"},Cut="Couldn\u2019t load this alert\u2019s saved message from the Notification Center. Close and reopen the alert before saving \u2014 saving now would replace its subject and message bodies with empty ones.",eJ=class i{open=at(!1);widget=at(null);dashboardId=at(null);source=at(null);filterPredicates=at(null);filterHasOr=at(!1);authoringMode=at("widget");showSuggestions=at(!0);sourceName=at("");editAlert=at(null);isEditing=At(()=>!!this.editAlert()?.id);step=ke("edit");skeletons=[0,1,2];suggestions=ke([]);suggestionsLoading=ke(!1);suggestionsError=ke("");headerTitle=At(()=>this.step()==="suggest"?"Suggested alerts for this widget":this.isEditing()?"Edit alert":"Set alert");headerSubtitle=At(()=>{let e=this.widget()?.title??"";if(this.step()==="suggest")return`Based on \u201C${e}\u201D. Pick one to get started \u2014 everything stays editable.`;let t=this.sourceName().trim();return t?`for \u201C${e}\u201D \xB7 ${t}`:`for \u201C${e}\u201D`});pickSuggestion(e){this.conditions.set([x({},e.condition)]),this.name.set(e.title),this.prefillNotice.set(""),this.step.set("edit")}startFromScratch(){this.step.set("edit")}backToSuggestions(){this.step.set("suggest")}async loadSuggestions(e,t){this.suggestions.set([]),this.suggestionsError.set(""),this.suggestionsLoading.set(!0);try{let M=t.map(o=>({column:o.name,dataType:o.dataType})),n=(e.config?.chart??{}).data,r=await oi(this.http.post(`${this.workforceScope}/alerts/widget-suggestions`,{widgetTitle:e.title??"",columns:M,rows:Array.isArray(n)?n.slice(0,5):[]}));this.suggestions.set(r?.data?.suggestions??[])}catch{this.suggestionsError.set("Couldn\u2019t load suggestions \u2014 start from scratch below.")}finally{this.suggestionsLoading.set(!1)}}closed=Xi();saved=Xi();prefillNotice=ke("");http=Be(yo);injectedBaseUrl=Be(Am,{optional:!0})??"";get baseUrl(){return xA()||this.injectedBaseUrl}tokenStore=Be(vr);addMetricOpt=Sut;name=ke("");conditions=ke([{column:"",op:">",value:""}]);emailSubject=ke("");saving=ke(!1);error=ke("");channelOn=ke({email:!0,teams:!1,slack:!1});channelOpen=ke({email:!0,teams:!1,slack:!1});bodies=ke({email:"",teams:"",slack:""});focusedBody=ke("email");varMenu=ke(null);varSearch=ke("");selectedFieldA=ke({});fieldB=ke({});customVars=ke([]);customVarTokens=At(()=>this.customVars().map(e=>e.token));webhooks=ke({teams:[],slack:[]});emailSenders=ke([]);channelsLoading=ke(!1);tplLoad=ke("none");metricOpen=ke(!1);mName=ke("");mType=ke("number");mKind=ke("manual");mExpr=ke("");metricTargetCond=null;mCanSave=At(()=>this.mName().trim().length>0&&(this.mKind()==="manual"||this.mExpr().trim().length>0));customMetrics=ke([]);varOpen=ke(!1);vName=ke("");vMapsTo=ke("field");vField=ke("");vStatic=ke("");vExpr=ke("");vTokenPreview=At(()=>`{{${this.tokenize(this.vName())||"NEW_VARIABLE"}}}`);vEditToken=ke(null);vEditing=At(()=>this.vEditToken()!==null);vError=ke("");paletteTokens=At(()=>new Set([...wut.map(e=>e.token),...this.allMetrics().map(e=>e.name),...this.customVars().map(e=>e.token)]));autoMetrics=At(()=>this.deriveMetrics(this.widget()));allMetrics=At(()=>{let e=new Map;for(let t of this.autoMetrics())e.set(t.name,t);for(let t of this.customMetrics())e.set(t.name,{name:t.name,dataType:t.dataType,source:"custom"});return[...e.values()]});activeChannelCount=At(()=>Object.values(this.channelOn()).filter(Boolean).length);filteredVariables=At(()=>{let e=this.allMetrics().map(n=>({token:n.name,display:"Metric"})),t=[...wut,...e,...this.customVars()],M=this.varSearch().trim().toLowerCase();return M?t.filter(n=>`{{${n.token}}}`.toLowerCase().includes(M)||n.display.toLowerCase().includes(M)):t});channelsPromise=null;constructor(){Wr(()=>{let e=this.widget();if(!this.open()||!e)return;this.name.set(`${e.title||"Widget"} alert`),this.emailSubject.set(`[Workforce Intelligence] ${e.title||"Alert"} triggered`);let t=this.deriveMetrics(e);this.customMetrics.set([]),this.metricOpen.set(!1),this.varOpen.set(!1),this.vEditToken.set(null),this.vError.set(""),this.error.set(""),this.tplLoad.set("none");let M=this.editAlert(),n=!1;if(M)this.prefillNotice.set(""),this.hydrateFromExisting(M,t);else{let{conditions:o,dropped:a}=Lut(this.filterPredicates(),new Map(t.map(N=>[N.name,N.dataType])),{hasOr:this.filterHasOr()});this.prefillNotice.set(Out(a));let s=t[0],l=s?.dataType==="text"?kE[0]:WQ[0];if(this.conditions.set(o.length?o:[{column:s?.name??"",op:l,value:""}]),o.length){let N=o.map(c=>`${c.column} ${c.op} ${c.value}`).join(", ");this.name.set(`${e.title||"Widget"} \xB7 ${N}`.slice(0,200))}n=o.length>0}let r=this.showSuggestions()&&this.authoringMode()!=="filter"&&!n&&!M;this.step.set(r?"suggest":"edit"),r?this.loadSuggestions(e,t):this.suggestions.set([]),this.loadChannels(M),M&&this.loadTemplateBodies(M)})}onDeleteVar(e){this.customVars.update(t=>t.filter(M=>M.token!==e))}inputVal(e){return e.detail?.value??""}selectVal(e){let t=e.detail?.value;return Array.isArray(t)?t[0]??"":t??""}switchVal(e){return!!e.detail?.checked}opLabel(e){return mut[e]??e}bucketByMetric=At(()=>new Map(this.allMetrics().map(e=>[e.name,e.dataType])));opsForColumn(e){return Eut(this.bucketByMetric().get(e))}addCond(){let e=this.allMetrics()[0]?.name??"";this.conditions.update(t=>[...t,{column:e,op:this.opsForColumn(e)[0]??">",value:""}])}removeCond(e){this.conditions.update(t=>t.filter((M,n)=>n!==e))}onCondColumn(e,t){if(t===Sut){this.openMetric(e);return}this.patchCond(e,"column",t)}patchCond(e,t,M){this.conditions.update(n=>n.map((r,o)=>{if(o!==e)return r;let a=U(x({},r),{[t]:M});return t==="column"&&!this.opsForColumn(M).includes(a.op)&&(a.op=this.opsForColumn(M)[0]??">"),a}))}onToggleChannel(e){let t=!this.channelOn()[e];this.channelOn.update(M=>U(x({},M),{[e]:t})),this.channelOpen.update(M=>U(x({},M),{[e]:t}))}onToggleMenu(e){this.varMenu.set(this.varMenu()===e?null:e)}onBodyInput(e){this.bodies.update(t=>U(x({},t),{[e.key]:e.value}))}onInsertToken(e){this.bodies.update(t=>U(x({},t),{[e.key]:`${t[e.key]??""}{{${e.token}}}`})),this.varMenu.set(null)}onFieldA(e){this.selectedFieldA.update(t=>U(x({},t),{[e.key]:e.value}))}onFieldB(e){this.fieldB.update(t=>U(x({},t),{[e.key]:e.value}))}openMetric(e){this.metricTargetCond=e,this.mName.set(""),this.mType.set("number"),this.mKind.set("manual"),this.mExpr.set(""),this.varOpen.set(!1),this.metricOpen.set(!0)}setMKind(e){this.mKind.set(e==="sql"?"sql":e==="formula"?"formula":"manual")}confirmMetric(){if(!this.mCanSave())return;let e=this.mName().trim(),t={name:e,dataType:this.mType(),compute:{kind:this.mKind(),value:this.mKind()==="manual"?e:this.mExpr().trim()}};this.customMetrics.update(M=>[...M.filter(n=>n.name!==e),t]),this.metricTargetCond!=null&&this.patchCond(this.metricTargetCond,"column",e),this.metricTargetCond=null,this.metricOpen.set(!1)}openVar(){this.vEditToken.set(null),this.vError.set(""),this.vName.set(""),this.vMapsTo.set("field"),this.vField.set(this.allMetrics()[0]?.name??""),this.vStatic.set(""),this.vExpr.set(""),this.metricOpen.set(!1),this.varOpen.set(!0)}onEditVar(e){this.vEditToken.set(e.token),this.vError.set(""),this.vName.set(e.display),this.vMapsTo.set("field"),this.vField.set(this.allMetrics()[0]?.name??""),this.vStatic.set(""),this.vExpr.set(""),this.metricOpen.set(!1),this.varOpen.set(!0)}closeVar(){this.varOpen.set(!1),this.vEditToken.set(null),this.vError.set("")}tokenize(e){return(e||"").trim().toUpperCase().replace(/[^A-Z0-9]+/g,"_").replace(/^_+|_+$/g,"")}confirmVar(){let e=this.vName().trim(),t=this.tokenize(e);if(!e||!t)return;let M=this.vEditToken();if(M===null)this.customVars.update(n=>[...n.filter(r=>r.token!==t),{token:t,display:e}]),this.onInsertToken({key:this.focusedBody(),token:t});else{if(t!==M&&this.paletteTokens().has(t)){this.vError.set(`${this.vTokenPreview()} is already in use \u2014 pick a different name.`);return}this.customVars.update(n=>n.map(r=>r.token===M?{token:t,display:e}:r)),t!==M&&this.renameTokenInBodies(M,t)}this.closeVar()}renameTokenInBodies(e,t){let M=new RegExp(`\\{\\{\\s*${e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*\\}\\}`,"g"),n=()=>`{{${t}}}`;this.bodies.update(r=>({email:(r.email??"").replace(M,n),teams:(r.teams??"").replace(M,n),slack:(r.slack??"").replace(M,n)}))}onDrawerHide(e){e.target===e.currentTarget&&this.close()}resetForm(){this.step.set("edit"),this.suggestions.set([]),this.suggestionsLoading.set(!1),this.suggestionsError.set(""),this.prefillNotice.set(""),this.name.set(""),this.conditions.set([{column:"",op:">",value:""}]),this.emailSubject.set(""),this.saving.set(!1),this.error.set(""),this.channelOn.set({email:!0,teams:!1,slack:!1}),this.channelOpen.set({email:!0,teams:!1,slack:!1}),this.bodies.set({email:"",teams:"",slack:""}),this.focusedBody.set("email"),this.varMenu.set(null),this.varSearch.set(""),this.selectedFieldA.set({}),this.fieldB.set({}),this.customVars.set([]),this.tplLoad.set("none"),this.metricOpen.set(!1),this.mName.set(""),this.mType.set("number"),this.mKind.set("manual"),this.mExpr.set(""),this.metricTargetCond=null,this.customMetrics.set([]),this.varOpen.set(!1),this.vName.set(""),this.vMapsTo.set("field"),this.vField.set(""),this.vStatic.set(""),this.vExpr.set(""),this.vEditToken.set(null),this.vError.set("")}close(){this.resetForm(),this.closed.emit()}missingDestinations(){let e=this.channelOn(),t=this.selectedFieldA(),M=[];return e.email&&!this.splitList(this.fieldB().email??"").length&&M.push("Email has no recipient \u2014 add at least one address in \u201CTo\u201D"),e.slack&&!(t.slack??this.webhooks().slack[0]?.name??"")&&M.push("Slack has no webhook \u2014 pick one, or connect a Slack webhook in Notification settings"),e.teams&&!(t.teams??this.webhooks().teams[0]?.name??"")&&M.push("Teams has no webhook \u2014 pick one, or connect a Teams webhook in Notification settings"),M.join(". ")}async save(){let e=this.widget();if(!e)return;if(!this.name().trim()){this.error.set("Give your alert a name.");return}let t=fut(this.conditions());if(t){this.error.set(t);return}let M=this.channelOn();if(!M.email&&!M.slack&&!M.teams){this.error.set("Turn on at least one channel.");return}let n=this.missingDestinations();if(n){this.error.set(n);return}if(this.tplLoad()==="loading"){this.error.set("Still loading this alert\u2019s saved message \u2014 try again in a moment.");return}if(this.tplLoad()==="failed"){this.error.set(Cut);return}let r=e.queryMeta??{},o=r.esQuery??r.dsl,a=o!=null&&o!=="",s=[],l={};M.email&&(s.push("email"),l.email={from:this.selectedFieldA().email??this.emailSenders()[0]??"",to:this.splitList(this.fieldB().email??""),subject:this.emailSubject(),body:this.bodyOrDefault("email")}),M.slack&&(s.push("slack"),l.slack={webhook:this.selectedFieldA().slack??this.webhooks().slack[0]?.name??"",channel:this.fieldB().slack??"",body:this.bodyOrDefault("slack")}),M.teams&&(s.push("microsoftTeams"),l.microsoftTeams={webhook:this.selectedFieldA().teams??this.webhooks().teams[0]?.name??"",title:this.fieldB().teams??"",body:this.bodyOrDefault("teams")});let N=this.source()??{},c={name:this.name().trim(),dashboardId:this.dashboardId(),widgetId:this.dashboardId()?e.id:void 0,widgetTitle:e.title,connectionId:N.connectionId??e.dataSourceId,isPipeline:N.isPipeline===!0?!0:void 0,querySql:a?void 0:r.sql,queryDsl:a?o:void 0,indexName:a?r.indexName:void 0,condition:this.conditions().filter(I=>I.column&&I.op),metrics:this.customMetrics(),variables:this.customVars(),sourceMeta:r.columns?.length?{columns:r.columns}:void 0,notifyOnChange:!0,notifyChannels:s,channelConfig:l,authoringMode:this.authoringMode()};this.saving.set(!0),this.error.set("");let D=this.editAlert()?.id;try{let I=`${this.workforceScope}/alerts`,d=await oi(D?this.http.put(`${I}/${D}`,c):this.http.post(I,c));this.saved.emit(d?.data),this.close()}catch(I){this.error.set(I?.error?.error??(D?"Could not save the alert.":"Could not create the alert."))}finally{this.saving.set(!1)}}bodyOrDefault(e){return(this.bodies()[e]??"").trim()||L8t[e]}deriveMetrics(e){if(!e)return[];let t=(e.queryMeta??{}).columns;if(Array.isArray(t)&&t.length){let r=new Map;for(let o of t){let a=o?.column?.trim();a&&r.set(a,{name:a,dataType:this.mapType(o?.dataType),source:"chart"})}return[...r.values()]}let M=e.config?.chart??{},n=new Map;return(M.series??[]).forEach(r=>r?.name&&n.set(r.name,{name:r.name,dataType:"number",source:"chart"})),(M.data??[]).forEach(r=>r?.name&&n.set(r.name,{name:r.name,dataType:"number",source:"chart"})),(M.categories??[]).forEach(r=>r&&n.set(r,{name:r,dataType:"text",source:"chart"})),e.title&&n.set(e.title,{name:e.title,dataType:"text",source:"chart"}),[...n.values()].slice(0,12)}mapType(e){return LA(e)?"number":"text"}splitList(e){return(e||"").split(/[,;]/).map(t=>t.trim()).filter(Boolean)}loadChannels(e){return this.channelsPromise||(this.channelsLoading.set(!0),this.channelsPromise=Promise.all([this.fetchWebhooks(),this.fetchSenders()]).then(([t,M])=>{this.webhooks.set(t),this.emailSenders.set(M)}).finally(()=>this.channelsLoading.set(!1))),e?this.channelsPromise.then(()=>this.applyChannelPicks(e)):this.channelsPromise}hydrateFromExisting(e,t){e.name&&this.name.set(e.name);let M=(e.condition??[]).filter(N=>N?.column&&N?.op);M.length&&this.conditions.set(M.map(N=>x({},N)));let n=e.metrics??[],r=new Set([...n.map(N=>N?.name).filter(Boolean),...t.map(N=>N.name)]),o=M.filter(N=>!r.has(N.column)).map(N=>({name:N.column,dataType:kE.includes(N.op)?"text":"number"}));this.customMetrics.set([...n,...o]),this.customVars.set(e.variables??[]);let a=e.channelConfig??{},s=e.notifyChannels??[],l={email:s.includes("email"),slack:s.includes("slack"),teams:s.includes("microsoftTeams")};this.channelOn.set(l),this.channelOpen.set(x({},l)),this.bodies.set({email:Ks(a.email?.body),slack:Ks(a.slack?.body),teams:Ks(a.microsoftTeams?.body)}),this.fieldB.set({email:Array.isArray(a.email?.to)?a.email.to.join(", "):Ks(a.email?.to),slack:Ks(a.slack?.channel),teams:Ks(a.microsoftTeams?.title)}),a.email?.subject&&this.emailSubject.set(Ks(a.email.subject))}async loadTemplateBodies(e){let t=e.notificationTemplateId;if(!t)return;this.tplLoad.set("loading");let M=await this.fetchTemplate(t);if(this.editAlert()?.id!==e.id)return;if(!M){this.tplLoad.set("failed"),this.error.set(Cut);return}let n=s=>{let l=M[s];return l&&typeof l=="object"?l:{}},r=(s,l)=>Ks(n(s).body)||Ks(M[l]);this.bodies.update(s=>({email:s.email||r("email","emailBody"),teams:s.teams||r("microsoftTeams","teamsBody"),slack:s.slack||r("slack","slackBody")}));let o=Ks((e.channelConfig??{}).email?.subject),a=Ks(n("email").subject)||Ks(M.subject);!o&&a&&this.emailSubject.set(a),this.tplLoad.set("ready")}async fetchTemplate(e){try{return(await oi(this.http.get(`${this.workforceScope}/notifications/templates/${encodeURIComponent(e)}`)))?.data??null}catch{return null}}applyChannelPicks(e){let t=e.channelConfig??{};this.selectedFieldA.set({email:Ks(t.email?.from),slack:Ks(t.slack?.webhook),teams:Ks(t.microsoftTeams?.webhook)})}get workforceScope(){let e=this.tokenStore.tenantId()??"";return`${this.baseUrl}/api/customers/${e}/products/${Oi()}/workforce`}async fetchWebhooks(){try{let t=(await oi(this.http.get(`${this.workforceScope}/notifications/channels`)))?.data??{},M=n=>{let r=[],o=1;for(let a of Object.values(t[n]??{}))for(let s of a?.values?.webhookUrls??[])r.push({id:o++,name:String(s?.key??""),url:String(s?.webhookUrl??"")});return r};return{teams:M("microsoftTeams"),slack:M("slack")}}catch{return{teams:[],slack:[]}}}async fetchSenders(){try{return((await oi(this.http.get(`${this.workforceScope}/notifications/identities/verification?isVerified=true&includeDefault=true`)))?.data?.records??[]).map(t=>String(t.identity??t.email??t.domain??"")).filter(Boolean)}catch{return[]}}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=rM({type:i,selectors:[["app-alert-drawer"]],inputs:{open:[1,"open"],widget:[1,"widget"],dashboardId:[1,"dashboardId"],source:[1,"source"],filterPredicates:[1,"filterPredicates"],filterHasOr:[1,"filterHasOr"],authoringMode:[1,"authoringMode"],showSuggestions:[1,"showSuggestions"],sourceName:[1,"sourceName"],editAlert:[1,"editAlert"]},outputs:{closed:"closed",saved:"saved"},decls:2,vars:2,consts:[["placement","end",3,"nile-hide","open"],["slot","label",1,"ad-head"],["type","button","aria-label","Back to suggestions",1,"ad-head__back"],[1,"ad-head__text"],[1,"ad-head__title"],[1,"ad-head__sub"],["type","button","aria-label","Back to suggestions",1,"ad-head__back",3,"click"],["name","ng-chevron-left","method","stroke","size","18"],[1,"ad","ad-sug"],[1,"ad-sug__or"],["type","button",1,"ad-sug__card","ad-sug__card--new",3,"click"],[1,"ad-sug__tile","ad-sug__tile--new"],["name","ng-plus","color","#ffff","method","stroke","size","18"],[1,"ad-sug__body"],[1,"ad-sug__t"],[1,"ad-sug__d"],["color","#ffff","name","ng-chevron-right","method","stroke","size","18",1,"ad-sug__go"],["slot","footer",1,"ad__foot"],["variant","secondary",3,"click"],["aria-hidden","true",1,"ad-sug__card","ad-sug__card--skel"],["variant","rounded","width","34","height","34","border-radius","8px"],["variant","text","width","45%","height","13"],["variant","text","width","70%","height","12"],["type","button",1,"ad-sug__card"],[1,"ad__muted","ad-sug__errline"],["type","button",1,"ad-sug__card",3,"click"],[1,"ad-sug__tile"],["name","ng-bell-01","method","stroke","size","18"],[1,"ad-sug__cond"],[1,"ad-sug__pill"],[1,"ad-sug__pill","ad-sug__pill--op"],[1,"ad"],[1,"ad__grid"],[1,"ad__col"],[1,"ad__box"],[1,"ad__box-h"],["name","ng-bar-chart-square-02","method","stroke","size","15"],[1,"ad__chips"],[1,"ad__chip",3,"ad__chip--text","ad__chip--mnl"],[1,"ad__muted"],["type","button",1,"ad__chip","ad__chip-add",3,"click"],["name","ng-plus","method","stroke","size","13"],[1,"vc"],[1,"ad__label"],[1,"ad__req"],["placeholder","e.g. Overtime spike",3,"nile-input","value"],[1,"ad__sec-t"],[1,"ad__lead"],[1,"ad__notice"],[1,"ad__cond"],["variant","tertiary","size","sm",3,"click"],["slot","prefix","name","ng-plus","method","stroke","size","14"],[1,"ad__only-note"],["name","ng-info-circle","method","stroke","size","14"],[1,"ad__hint"],["name","ng-braces","method","stroke","size","14"],[3,"toggleChannel","toggleMenu","bodyInput","bodyFocus","insertToken","varSearchChange","fieldAChange","fieldBChange","deleteVariable","editVariable","openAddVar","showHeader","showRail","dense","loading","channelOn","channelOpen","bodies","focusedBody","varMenu","variables","varSearch","webhooks","emailSenders","deletableTokens","selectedFieldA","fieldBValues"],[1,"ad__err"],["variant","primary",3,"click","loading"],[1,"ad__chip"],[1,"ad__mtag"],[1,"vc-h"],[1,"vc-ic"],["name","ng-bar-chart-square-02","method","stroke","size","16"],[1,"vc-ht"],[1,"vc-s"],["type","button",1,"vc-x",3,"click"],[1,"vc-b"],["placeholder","e.g. Net amount",3,"nile-input","value"],[1,"seg"],["type","button",3,"click"],[3,"nile-change","value"],["value","manual"],["value","sql"],["value","formula"],[1,"ad__mt"],[1,"tok-prev"],[1,"vc-f"],["variant","secondary","size","sm",3,"click"],["variant","primary","size","sm",3,"click"],[3,"nile-input","value","placeholder"],["name","ng-alert-triangle","method","stroke","size","14"],[1,"ad__col-sel",3,"nile-change","value"],[3,"value"],[1,"ad__op",3,"nile-change","value"],["placeholder","value",1,"ad__val",3,"nile-input","value"],["placeholder","and",1,"ad__val",3,"value"],["variant","tertiary","size","sm","title","Remove",3,"click"],["name","ng-x-close","method","stroke","size","14"],["placeholder","and",1,"ad__val",3,"nile-input","value"],[1,"vc-ic","vc-ic--blue"],["name","ng-braces","method","stroke","size","16"],["placeholder","e.g. Region owner",3,"nile-input","value"],["placeholder","e.g. North America",3,"nile-input","value"]],template:function(t,M){if(t&1&&($(0,"nile-drawer",0),Ze("nile-hide",function(r){return M.onDrawerHide(r)}),he(1,p8t,9,4),te()),t&2){let n;ot("open",M.open()),L(),xe((n=M.open()&&M.widget())?1:-1,n)}},dependencies:[CE],styles:['@charset "UTF-8";[_nghost-%COMP%]{display:contents}nile-drawer[_ngcontent-%COMP%]{--size: calc(100vw - var(--sidebar-width, 250px))}nile-drawer[_ngcontent-%COMP%]::part(header){border-bottom:1px solid var(--ng-colors-border-secondary)}.ad[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px;padding:4px 2px}.ad__grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}.ad__col[_ngcontent-%COMP%]{display:flex;flex-direction:column;min-width:0}.ad-head[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;min-width:0}.ad-head__back[_ngcontent-%COMP%]{flex-shrink:0;width:34px;height:34px;border-radius:var(--ng-radius-md);border:1px solid var(--ng-colors-border-primary);background:var(--ng-colors-bg-primary);color:var(--ng-colors-text-secondary-700);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.ad-head__back[_ngcontent-%COMP%]:hover{background:var(--ng-colors-bg-secondary)}.ad-head__text[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1px;min-width:0}.ad-head__title[_ngcontent-%COMP%], .ad-sug__t[_ngcontent-%COMP%]{font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-primary-900)}.ad-head__title[_ngcontent-%COMP%]{font-size:16px}.ad-head__sub[_ngcontent-%COMP%]{font-size:13px;font-weight:var(--ng-font-weight-regular);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ad-sug__card[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:1px solid var(--ng-colors-border-secondary);border-radius:12px;background:var(--ng-colors-bg-primary);padding:12px 14px;margin-bottom:10px;font:inherit;cursor:pointer}.ad-sug__card[_ngcontent-%COMP%]:hover{border-color:var(--ng-colors-border-brand);box-shadow:0 6px 24px #2970ff1a}.ad-sug__card--skel[_ngcontent-%COMP%]{pointer-events:none}.ad-sug__card--new[_ngcontent-%COMP%]{border-style:dashed;background:var(--ng-colors-bg-brand-primary)}.ad-sug__tile[_ngcontent-%COMP%]{flex-shrink:0;width:34px;height:34px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;background:var(--ng-colors-bg-secondary);color:var(--ng-color-bluedark-600)}.ad-sug__tile--new[_ngcontent-%COMP%]{background:var(--ng-color-bluedark-600);color:var(--ng-colors-text-white)}.ad-sug__body[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.ad-sug__t[_ngcontent-%COMP%]{font-size:13px}.ad-head__sub[_ngcontent-%COMP%], .ad-sug__d[_ngcontent-%COMP%], .ad-sug__go[_ngcontent-%COMP%]{color:var(--ng-colors-text-tertiary-600)}.ad-sug__d[_ngcontent-%COMP%]{font-size:12px;line-height:1.4}.ad-sug__cond[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end;flex-shrink:0}.ad-sug__pill[_ngcontent-%COMP%]{font-family:var(--ng-font-family-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;padding:3px 8px;border-radius:6px;background:var(--ng-colors-bg-secondary);color:var(--ng-colors-text-secondary-700)}.ad-sug__go[_ngcontent-%COMP%]{flex-shrink:0}.ad-sug__or[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;margin:6px 0 14px;font-size:11px;font-weight:var(--ng-font-weight-bold);letter-spacing:.6px;color:var(--ng-colors-text-quaternary-500)}.ad-sug__or[_ngcontent-%COMP%]:before, .ad-sug__or[_ngcontent-%COMP%]:after{content:"";flex:1;height:1px;background:var(--ng-colors-border-secondary)}.ad__box[_ngcontent-%COMP%]{background:var(--ng-colors-bg-secondary);border:1px solid var(--ng-colors-border-secondary);border-radius:var(--ng-radius-lg);padding:12px 14px;margin-bottom:6px}.ad__box-h[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-secondary-700)}.ad__box-h[_ngcontent-%COMP%] nile-glyph[_ngcontent-%COMP%]{color:var(--ng-color-bluedark-600)}.ad__chips[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:7px;margin-top:9px;align-items:center}.ad__chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;font-size:12px;background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-primary);border-radius:20px;padding:4px 11px;color:var(--ng-colors-text-secondary-700)}.ad__chip[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{width:7px;height:7px;border-radius:50%;background:var(--ng-color-bluedark-600);flex:none}.ad__chip--text[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{background:var(--ng-color-fuchsia-600)}.ad__chip--mnl[_ngcontent-%COMP%]{border-color:var(--ng-componentcolors-utility-success-200);background:var(--ng-componentcolors-utility-success-50)}.ad__chip--mnl[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{background:var(--ng-componentcolors-utility-success-700)}.ad__mtag[_ngcontent-%COMP%]{font-size:9px;font-weight:var(--ng-font-weight-bold);letter-spacing:.3px;text-transform:uppercase;color:var(--ng-componentcolors-utility-success-700);background:var(--ng-componentcolors-utility-success-50);border-radius:5px;padding:1px 5px;margin-left:3px}.ad__chip-add[_ngcontent-%COMP%]{cursor:pointer;border-style:dashed;border-color:var(--ng-colors-border-primary);color:var(--ng-color-bluedark-600);font-weight:var(--ng-font-weight-semibold)}.ad__chip-add[_ngcontent-%COMP%]:hover{background:var(--ng-colors-bg-brand-primary)}.ad__label[_ngcontent-%COMP%]{display:block;font-size:12.5px;font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-secondary-700);margin:10px 0 4px}.ad__req[_ngcontent-%COMP%]{color:var(--ng-color-error-600)}.ad__sec-t[_ngcontent-%COMP%]{font-size:11px;font-weight:var(--ng-font-weight-bold);letter-spacing:.6px;text-transform:uppercase;color:var(--ng-colors-text-quaternary-500);margin:16px 0 8px}.ad__lead[_ngcontent-%COMP%]{font-size:13px;color:var(--ng-colors-text-secondary-700);margin:0 0 8px}.ad__notice[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:6px;margin:0 0 10px;padding:8px 10px;border-radius:var(--ng-radius-md);background:var(--ng-colors-bg-warning-primary);color:var(--ng-colors-text-warning-primary-600);font-size:12px;line-height:1.4}.ad__notice[_ngcontent-%COMP%] nile-glyph[_ngcontent-%COMP%]{flex-shrink:0;margin-top:1px}.ad__only-note[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ng-colors-text-quaternary-500);margin:-4px 0 10px}.ad__hint[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:7px;font-size:11.5px;color:var(--ng-colors-text-quaternary-500);line-height:1.5;margin:0 0 12px}.ad__hint[_ngcontent-%COMP%] nile-glyph[_ngcontent-%COMP%]{color:var(--ng-color-bluedark-600);flex:0 0 14px;margin-top:1px}.ad__hint[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{background:var(--ng-colors-bg-brand-primary);color:var(--ng-color-bluedark-600);border-radius:5px;padding:0 5px;font-family:ui-monospace,Menlo,monospace;font-size:11px}.ad__cond[_ngcontent-%COMP%]{display:grid;grid-template-columns:1.2fr 1.3fr 1fr auto;gap:6px;align-items:center;margin-bottom:6px}.ad__muted[_ngcontent-%COMP%]{font-size:12px;color:var(--ng-colors-text-quaternary-500)}.ad__err[_ngcontent-%COMP%]{color:var(--ng-color-error-600);font-size:12.5px}.ad__foot[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px}.ad__foot[_ngcontent-%COMP%] .ad__muted[_ngcontent-%COMP%]{margin-right:auto}app-template-editor[_ngcontent-%COMP%]{display:block}.vc[_ngcontent-%COMP%]{background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-primary);border-radius:var(--ng-radius-lg);box-shadow:var(--ng-shadow-lg);margin:4px 0 12px;overflow:hidden;animation:_ngcontent-%COMP%_vcIn .16s ease}.vc-h[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--ng-colors-border-tertiary)}.vc-ic[_ngcontent-%COMP%]{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:var(--ng-componentcolors-utility-success-50);color:var(--ng-componentcolors-utility-success-700);flex:none}.vc-ic--blue[_ngcontent-%COMP%]{background:var(--ng-colors-bg-brand-primary);color:var(--ng-color-bluedark-600)}.vc-ht[_ngcontent-%COMP%]{flex:1;min-width:0}.vc-ht[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:13.5px;font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-primary-900)}.vc-s[_ngcontent-%COMP%]{font-size:11.5px;color:var(--ng-colors-text-quaternary-500)}.vc-x[_ngcontent-%COMP%]{border:none;background:none;cursor:pointer;color:var(--ng-colors-text-quaternary-500);font-size:14px}.vc-b[_ngcontent-%COMP%]{padding:12px 14px}.vc-f[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid var(--ng-colors-border-tertiary)}.ad__mt[_ngcontent-%COMP%]{margin-top:8px}.seg[_ngcontent-%COMP%]{display:inline-flex;border:1px solid var(--ng-colors-border-primary);border-radius:8px;overflow:hidden}.seg[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{border:none;background:var(--ng-colors-bg-primary);padding:6px 12px;font-size:12.5px;cursor:pointer;color:var(--ng-colors-text-secondary-700)}.seg[_ngcontent-%COMP%] button[_ngcontent-%COMP%] + button[_ngcontent-%COMP%]{border-left:1px solid var(--ng-colors-border-primary)}.seg[_ngcontent-%COMP%] button.on[_ngcontent-%COMP%]{background:var(--ng-colors-bg-brand-primary);color:var(--ng-color-bluedark-600);font-weight:var(--ng-font-weight-semibold)}.tok-prev[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ng-colors-text-quaternary-500);margin-top:12px}.tok-prev[_ngcontent-%COMP%] code[_ngcontent-%COMP%], .ad-sug__pill--op[_ngcontent-%COMP%]{font-family:var(--ng-font-family-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;background:var(--ng-colors-bg-brand-primary);color:var(--ng-color-bluedark-600);border-radius:6px;padding:2px 8px}@media(max-width:960px){.ad__cond[_ngcontent-%COMP%]{grid-template-columns:1fr 1fr}}@media(max-width:640px){nile-drawer[_ngcontent-%COMP%]{--size: 100vw}}@keyframes _ngcontent-%COMP%_vcIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.ad-sug__errline[_ngcontent-%COMP%]{margin:0 0 12px}']})};function O8t(i){return i?.id?{connectionId:i.id,isPipeline:i.kind==="pipeline"}:null}var m8t=(i,e)=>e.id;function E8t(i,e){i&1&&(C(0,"div",12),Zt(1,"nile-skeleton-loader",13),C(2,"span",7),Zt(3,"nile-skeleton-loader",14)(4,"nile-skeleton-loader",15),b()())}function f8t(i,e){if(i&1&&ht(0,E8t,5,0,"div",12,nr),i&2){let t=p();xt(t.skeletons)}}function S8t(i,e){if(i&1){let t=Le();C(0,"button",18),Ae("click",function(){let n=P(t).$implicit,r=p(2);return R(r.choose(n.id))}),C(1,"span",5),Zt(2,"nile-glyph",19),b(),C(3,"span",7)(4,"nile-heading",8),Y(5),b(),C(6,"nile-heading",9),Y(7),b()()()}if(i&2){let t=e.$implicit,M=p(2);It("disabled",M.committing()?"":null),L(5),Mt(t.title),L(2),Jo(" ",t.status==="published"?"Published":"Draft"," \xB7 ",t.sceneCount," scenes ")}}function w8t(i,e){i&1&&Zt(0,"nile-empty-state",17)}function C8t(i,e){if(i&1&&(ht(0,S8t,8,4,"button",16,m8t),he(2,w8t,1,0,"nile-empty-state",17)),i&2){let t=p();xt(t.stories()),L(2),xe(t.stories().length?-1:2)}}var iJ=class i{fetcher=Be(i0,{optional:!0});router=Be(Yl,{optional:!0});open=at(!1);widget=at(null);closed=Xi();added=Xi();stories=ke([]);loading=ke(!1);committing=ke(null);skeletons=Array.from({length:3});widgetTitle=At(()=>this.widget()?.title??"this widget");constructor(){Wr(()=>{this.open()&&this.load()})}async load(){if(this.fetcher){this.loading.set(!0);try{this.stories.set(await this.fetcher.listStories())}catch{this.stories.set([])}finally{this.loading.set(!1)}}}async choose(e){let t=this.widget();if(!(!this.fetcher||!t||this.committing())){this.committing.set(e??"new");try{let M=await this.fetcher.addWidgetToStory(e,t);this.added.emit(M),bA({variant:"success",content:e?`Added to \u201C${M.title}\u201D \u2014 the scene keeps this chart live and drafts its narrative.`:`Story \u201C${M.title}\u201D created from this widget.`}),this.closed.emit(),await this.router?.navigate(["/stories",M.id],{queryParams:{mode:"edit"}})}catch{}finally{this.committing.set(null)}}}onDrawerHide(){this.closed.emit()}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=rM({type:i,selectors:[["app-story-picker-drawer"]],inputs:{open:[1,"open"],widget:[1,"widget"]},outputs:{closed:"closed",added:"added"},decls:19,vars:4,consts:[["placement","end",3,"nile-hide","open"],["slot","label",1,"sp-head"],[1,"sp-head__title"],[1,"sp-head__sub"],["type","button",1,"sp-row","sp-row--new",3,"click"],[1,"sp-row__ic"],["name","ng-plus","method","stroke","size","16"],[1,"sp-row__body"],[1,"sp-row__name"],[1,"sp-row__desc"],["slot","footer",1,"sp-foot"],["variant","tertiary","size","small",3,"click"],["aria-hidden","true",1,"sp-row","sp-row--skel"],["variant","rounded","width","32","height","32"],["variant","text","width","220","height","13"],["variant","text","width","140","height","11"],["type","button",1,"sp-row"],["variant","tonal","icon","book-closed","text","No stories yet","sub-text","Create one from this widget and it becomes the first scene."],["type","button",1,"sp-row",3,"click"],["name","ng-book-open-text","method","stroke","size","16"]],template:function(t,M){t&1&&(C(0,"nile-drawer",0),Ae("nile-hide",function(){return M.onDrawerHide()}),C(1,"div",1)(2,"nile-heading",2),Y(3,"Add to Story"),b(),C(4,"nile-heading",3),Y(5),b()(),C(6,"button",4),Ae("click",function(){return M.choose(null)}),C(7,"span",5),Zt(8,"nile-glyph",6),b(),C(9,"span",7)(10,"nile-heading",8),Y(11,"New story"),b(),C(12,"nile-heading",9),Y(13,"Starts a draft with this chart as scene 01"),b()()(),he(14,f8t,2,0)(15,C8t,3,1),C(16,"div",10)(17,"nile-button",11),Ae("click",function(){return M.onDrawerHide()}),Y(18,"Cancel"),b()()()),t&2&&(Ue("open",M.open()),L(5),ui(" The scene captures \u201C",M.widgetTitle(),"\u201D, its query definition and source metadata \u2014 then auto-drafts its narrative. "),L(),It("disabled",M.committing()?"":null),L(8),xe(M.loading()?14:15))},styles:["nile-heading[_ngcontent-%COMP%]{display:block;margin:0;padding:0;border:0;font-size:inherit;font-weight:var(--ng-font-weight-regular)}nile-drawer[_ngcontent-%COMP%]::part(header){border-bottom:1px solid var(--ng-colors-border-secondary)}.sp-head[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:3px;min-width:0}.sp-head__title[_ngcontent-%COMP%]{font-size:var(--ng-font-size-text-lg);font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-primary-900)}.sp-head__sub[_ngcontent-%COMP%]{font-size:var(--ng-font-size-text-sm);line-height:1.45;color:var(--ng-colors-text-tertiary-600)}.sp-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;width:100%;margin-bottom:8px;padding:12px 14px;text-align:left;cursor:pointer;font-family:inherit;background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-secondary);border-radius:var(--ng-radius-lg);transition:border-color .15s,background .15s}.sp-row[_ngcontent-%COMP%]:hover{border-color:var(--ng-colors-border-brand);background:var(--ng-colors-bg-secondary)}.sp-row[disabled][_ngcontent-%COMP%]{opacity:.5;pointer-events:none}.sp-row--new[_ngcontent-%COMP%]{border-style:dashed}.sp-row--skel[_ngcontent-%COMP%]{cursor:default}.sp-row__ic[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;border-radius:var(--ng-radius-md);background:var(--ng-colors-bg-brand-primary);color:var(--ng-colors-fg-brand-primary-600)}.sp-row__body[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;min-width:0}.sp-row__name[_ngcontent-%COMP%]{font-size:var(--ng-font-size-text-sm);font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-primary-900)}.sp-row__desc[_ngcontent-%COMP%]{font-size:var(--ng-font-size-text-xs);color:var(--ng-colors-text-tertiary-600)}.sp-foot[_ngcontent-%COMP%]{display:flex;justify-content:flex-end}"]})};var k8t=25;function b8t(i){let e=Be(yo),t=()=>`${i()}/stories`;return{listStories:async()=>{let M=new URLSearchParams({status:"draft",limit:String(k8t),offset:"0"});return((await e.get(`${t()}?${M}`).toPromise())?.data??[]).map(r=>({id:r.id,title:r.title||"Untitled story",status:r.status,sceneCount:r.sceneCount}))},createStory:async M=>{let r=(await e.post(t(),{title:M}).toPromise())?.data;return{id:r?.id??"",title:r?.title||M||"Untitled story",status:"draft",sceneCount:0}},addWidgetToStory:async(M,n)=>{let r=M,o="";if(!r){let a=await e.post(t(),{title:n.title?`${n.title}`:""}).toPromise();r=a?.data?.id??"",o=a?.data?.title??""}return await e.post(`${t()}/${r}/scenes`,{kind:"chart",widget:n,source:{kind:"dashboard",label:n.title??"Widget"}}).toPromise(),{id:r,title:o||n.title||"Untitled story",status:"draft",sceneCount:1}}}}var PQ=[{id:"assurance",label:"Assurance"},{id:"journey",label:"Journey"},{id:"cohort",label:"Cohort"},{id:"business",label:"Business"},{id:"validation",label:"Validation"},{id:"operational",label:"Operational"},{id:"compliance",label:"Compliance"},{id:"agent",label:"Agent"},{id:"forensic",label:"Forensic"}],Q8t=new Map(PQ.map(i=>[i.id,i.label]));function U8t(i){if(i)return Q8t.get(i)}var kut=(i,e)=>e.id;function v8t(i,e){if(i&1){let t=Le();C(0,"nile-menu-item",2),Ae("click",function(){let n=P(t).$implicit,r=p(2);return R(r.select(n.id))}),Y(1),b()}if(i&2){let t=e.$implicit,M=p(2);Ue("active",M.selected()===t.id),L(),ui(" ",t.label," ")}}function Y8t(i,e){if(i&1){let t=Le();C(0,"nile-menu",0)(1,"nile-menu-item",2),Ae("click",function(){P(t);let n=p();return R(n.select(null))}),Y(2," All "),b(),ht(3,v8t,2,2,"nile-menu-item",3,kut),b()}if(i&2){let t=p();L(),Ue("active",t.selected()===null),L(2),xt(t.categories())}}function Z8t(i,e){if(i&1){let t=Le();C(0,"button",4),Ae("click",function(){let n=P(t).$implicit,r=p(2);return R(r.select(n.id))}),Y(1),b()}if(i&2){let t=e.$implicit,M=p(2);Wt("cat-pill--active",M.selected()===t.id),L(),ui(" ",t.label," ")}}function _8t(i,e){if(i&1){let t=Le();C(0,"div",1)(1,"button",4),Ae("click",function(){P(t);let n=p();return R(n.select(null))}),Y(2," All "),b(),ht(3,Z8t,2,3,"button",5,kut),b()}if(i&2){let t=p();L(),Wt("cat-pill--active",t.selected()===null),L(2),xt(t.categories())}}var MJ=class i{categories=at(PQ);variant=at("pills");selected=at(null);selectionChange=Xi();select(e){e!==this.selected()&&this.selectionChange.emit(e)}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=rM({type:i,selectors:[["shared-category-filter-row"]],inputs:{categories:[1,"categories"],variant:[1,"variant"],selected:[1,"selected"]},outputs:{selectionChange:"selectionChange"},decls:2,vars:1,consts:[["aria-label","Dashboard category",1,"cat-menu"],["role","group","aria-label","Dashboard category",1,"cat-pills"],[3,"click","active"],[3,"active"],["type","button",1,"cat-pill",3,"click"],["type","button",1,"cat-pill",3,"cat-pill--active"]],template:function(t,M){t&1&&he(0,Y8t,5,1,"nile-menu",0)(1,_8t,5,2,"div",1),t&2&&xe(M.variant()==="menu"?0:1)},styles:[".cat-menu[_ngcontent-%COMP%]{display:block;min-width:170px}.cat-pills[_ngcontent-%COMP%]{display:flex;align-items:center;gap:2px;padding:3px;flex-wrap:wrap;background:var(--ng-colors-bg-secondary);border:1px solid var(--ng-colors-border-secondary);border-radius:var(--ng-radius-lg)}.cat-pill[_ngcontent-%COMP%]{display:flex;align-items:center;padding:5px 10px;font-family:inherit;font-size:var(--ng-font-size-text-sm);font-weight:var(--ng-font-weight-medium);color:var(--ng-colors-text-tertiary-600);background:transparent;border:none;border-radius:var(--ng-radius-md);cursor:pointer;transition:background .15s,color .15s;white-space:nowrap}.cat-pill[_ngcontent-%COMP%]:hover{background:var(--ng-colors-bg-primary)}.cat-pill--active[_ngcontent-%COMP%]{color:var(--ng-colors-fg-brand-primary-600);background:var(--ng-colors-bg-primary);font-weight:var(--ng-font-weight-semibold)}"]})};export{l2t as a,N2t as b,GR as c,ODt as d,mDt as e,K5 as f,eU as g,CDt as h,Go as i,ic as j,LD as k,qM as l,yo as m,nDt as n,rDt as o,tIt as p,cIt as q,j as r,r2t as s,c2t as t,D2t as u,mnt as v,XR as w,Ent as x,FR as y,dt as z,I2t as A,fI as B,Yl as C,Lrt as D,H3t as E,Vir as F,Zl as G,AQt as H,J5t as I,vr as J,lUt as K,xA as L,Oi as M,DUt as N,IUt as O,dUt as P,q2 as Q,sUt as R,EA as S,Am as T,K2 as U,xUt as V,v3 as W,ZZt as X,vPt as Y,YPt as Z,TF as _,Ug as $,zF as aa,hF as ba,ME as ca,J3 as da,n0 as ea,kst as fa,nE as ga,SA as ha,FZt as ia,M0 as ja,Gc as ka,fA as la,Gst as ma,c9t as na,G3 as oa,bst as pa,Qst as qa,Jc as ra,Y3 as sa,Xm as ta,Z3 as ua,_3 as va,OA as wa,mA as xa,Yst as ya,Ust as za,ult as Aa,bA as Ba,pJt as Ca,xF as Da,mJt as Ea,xB as Fa,wat as Ga,_Q as Ha,RH as Ia,VH as Ja,$h as Ka,s3 as La,mm as Ma,SB as Na,g3 as Oa,Xat as Pa,Kat as Qa,wj as Ra,L3 as Sa,ZI as Ta,Wst as Ua,Pst as Va,a_t as Wa,CA as Xa,Rl as Ya,nlt as Za,kA as _a,rlt as $a,iE as ab,H3 as bb,i3 as cb,e3 as db,r0 as eb,rE as fb,o0 as gb,s0 as hb,l0 as ib,QQ as jb,UQ as kb,vQ as lb,YQ as mb,Dut as nb,ZQ as ob,BH as pb,yGt as qb,XH as rb,eJ as sb,O8t as tb,iJ as ub,b8t as vb,PQ as wb,U8t as xb,MJ as yb};
40584
+ `))!==-1;){let I=s.slice(0,D);s=s.slice(D+2),this.handleFrame(I,t)&&(l=!0)}if(l)break}return l}handleFrame(e,t){let M=GH(e);if(!M)return!1;let{event:n,data:r}=M;try{if(n==="complete"){let o=JSON.parse(r);return t({kind:"complete",dashboardIds:o.dashboardIds??[]}),!0}if(n==="error"){let o=JSON.parse(r);return t({kind:"error",message:o.message,dashboardIds:o.dashboardIds??[]}),!0}if(n==="progress"){let o=JSON.parse(r);if(o.dashboardId)t({kind:"saved",dashboardId:o.dashboardId,dashboardName:o.dashboardName??TGt(o.message)});else if(typeof o.widgetIndex=="number"){let a=HH(o);t({kind:"progress",label:JH(o,a),phase:a,widgetTitle:o.widgetTitle,widgetIndex:o.widgetIndex,totalWidgets:o.totalWidgets??0})}else o.dashboardName&&t({kind:"dashboard-start",dashboardName:o.dashboardName})}}catch{}return!1}static \u0275fac=function(t){return new(t||i)};static \u0275prov=Ct({token:i,factory:i.\u0275fac,providedIn:"root"})};function TGt(i){if(!i)return;let e=i.indexOf(":");return e>=0&&i.slice(e+1).trim()||void 0}var qH=15360,RN={email:{name:"Email",shortName:"Email",glyph:"ng-mail-01",tileBg:"var(--ng-color-blue-600)"},teams:{name:"Microsoft Teams",shortName:"Teams",glyph:"ng-users-01",tileBg:"var(--ng-color-purple-600)"},slack:{name:"Slack",shortName:"Slack",glyph:"ng-hash",tileBg:"var(--ng-color-teal-600)"}};function KH(i){return new TextEncoder().encode(i).length}var xut=()=>[0,1,2],AGt=()=>[0,1,2,3,4],zGt=(i,e)=>e.key,hGt=(i,e)=>e.value,put=(i,e)=>e.token;function xGt(i,e){i&1&&(C(0,"div",3),Zt(1,"nile-skeleton-loader",15)(2,"nile-skeleton-loader",16),b())}function pGt(i,e){i&1&&(C(0,"article",5)(1,"div",17),Zt(2,"nile-skeleton-loader",18),C(3,"div",19),Zt(4,"nile-skeleton-loader",20)(5,"nile-skeleton-loader",21),b(),Zt(6,"nile-skeleton-loader",22),b()())}function LGt(i,e){i&1&&Zt(0,"nile-skeleton-loader",14)}function OGt(i,e){i&1&&(C(0,"div",1)(1,"section",2),ht(2,xGt,3,0,"div",3,nr),b(),Zt(4,"nile-skeleton-loader",4),ht(5,pGt,7,0,"article",5,nr),b(),C(7,"aside",6)(8,"div",7)(9,"div",8),Zt(10,"nile-skeleton-loader",9)(11,"nile-skeleton-loader",10),b(),C(12,"div",11),Zt(13,"nile-skeleton-loader",12),C(14,"div",13),ht(15,LGt,1,0,"nile-skeleton-loader",14,nr),b()()()()),i&2&&(L(2),xt(Nd(0,xut)),L(3),xt(Nd(1,xut)),L(10),xt(Nd(2,AGt)))}function mGt(i,e){if(i&1&&(C(0,"nile-error-message",24),Y(1),b()),i&2){let t=p(2);Ue("errorMessage",t.error()),L(),Mt(t.error())}}function EGt(i,e){if(i&1){let t=Le();C(0,"section",2)(1,"div",3)(2,"span",28),Y(3,"Title "),C(4,"span",29),Y(5,"*"),b()(),C(6,"nile-input",30),Ae("nile-input",function(n){P(t);let r=p(2);return R(r.titleChange.emit(r.inputVal(n)))}),b()(),C(7,"div",3)(8,"span",28),Y(9,"Description"),b(),Zt(10,"nile-textarea",31),b()()}if(i&2){let t=p(2);L(6),It("value",t.title())}}function fGt(i,e){i&1&&(C(0,"div",25),Y(1,"Channels \u2014 pick where this sends"),b())}function SGt(i,e){i&1&&(C(0,"span",37),Y(1,"On"),b())}function wGt(i,e){if(i&1&&(C(0,"nile-option",59),Y(1),b()),i&2){let t=e.$implicit;Ue("value",t.value),L(),Mt(t.label)}}function CGt(i,e){if(i&1){let t=Le();C(0,"nile-select",58),Ae("nile-change",function(n){P(t);let r=p(2).$implicit,o=p(2);return R(o.fieldAChange.emit({key:r.key,value:o.selectVal(n)}))}),ht(1,wGt,2,2,"nile-option",59,hGt),b()}if(i&2){let t=p(2).$implicit;Ue("value",t.fieldASelected),L(),xt(t.fieldAOptions)}}function kGt(i,e){if(i&1&&(C(0,"div",44),Y(1),b()),i&2){let t=p(2).$implicit;L(),Mt(t.fieldAValue)}}function bGt(i,e){if(i&1){let t=Le();C(0,"button",66),Ae("click",function(){P(t);let n=p().$implicit,r=p(5);return R(r.editVariable.emit(n))}),Zt(1,"nile-glyph",67),b(),C(2,"button",68),Ae("click",function(){P(t);let n=p().$implicit,r=p(5);return R(r.deleteVariable.emit(n.token))}),Zt(3,"nile-glyph",69),b()}if(i&2){let t=p().$implicit,M=p(5);It("aria-label","Edit variable "+M.tokenOf(t))("title","Edit "+M.tokenOf(t)),L(2),It("aria-label","Delete variable "+M.tokenOf(t))("title","Delete "+M.tokenOf(t))}}function QGt(i,e){if(i&1){let t=Le();C(0,"div",60)(1,"button",64),Ae("click",function(){let n=P(t).$implicit,r=p(3).$implicit,o=p(2);return R(o.insertToken.emit({key:r.key,token:n.token}))}),C(2,"span",65),Y(3),b(),C(4,"span",63),Y(5),b()(),he(6,bGt,4,4),b()}if(i&2){let t=e.$implicit,M=p(5);L(3),Mt(M.tokenOf(t)),L(2),Mt(t.display),L(),xe(M.canDelete(t)?6:-1)}}function UGt(i,e){if(i&1){let t=Le();C(0,"div",55),ht(1,QGt,7,3,"div",60,put),C(3,"button",61),Ae("click",function(){P(t);let n=p(4);return R(n.openAddVar.emit())}),Zt(4,"nile-glyph",62),C(5,"span",63),Y(6,"Create new variable"),b()()()}if(i&2){let t=p(4);L(),xt(t.variables())}}function vGt(i,e){if(i&1){let t=Le();C(0,"div",41)(1,"div",42)(2,"div",3)(3,"span",28),Y(4),b(),he(5,CGt,3,1,"nile-select",43)(6,kGt,2,1,"div",44),b(),C(7,"div",3)(8,"span",28),Y(9),b(),C(10,"nile-input",45),Ae("nile-input",function(n){P(t);let r=p().$implicit,o=p(2);return R(o.fieldBChange.emit({key:r.key,value:o.inputVal(n)}))}),b()()(),C(11,"div",3)(12,"span",28),Y(13,"Message body "),C(14,"span",29),Y(15,"*"),b()(),C(16,"div",46)(17,"div",47)(18,"span",48),Y(19,"B"),b(),C(20,"span",49),Y(21,"I"),b(),C(22,"span",50),Y(23,"U"),b(),Zt(24,"span",51),C(25,"div",52)(26,"button",53),Ae("click",function(){P(t);let n=p().$implicit,r=p(2);return R(r.toggleMenu.emit(n.key))}),C(27,"span",54),Y(28,"{ }"),b(),Y(29," Insert variable "),b(),he(30,UGt,7,0,"div",55),b()(),C(31,"nile-textarea",56),Ae("nile-input",function(n){P(t);let r=p().$implicit,o=p(2);return R(o.bodyInput.emit({key:r.key,value:o.inputVal(n)}))})("nile-change",function(n){P(t);let r=p().$implicit,o=p(2);return R(o.bodyInput.emit({key:r.key,value:o.inputVal(n)}))})("nile-focus",function(){P(t);let n=p().$implicit,r=p(2);return R(r.bodyFocus.emit(n.key))}),b()(),C(32,"div",57),Y(33),b()()()}if(i&2){let t=p().$implicit,M=p(2);L(4),Mt(t.fieldALabel),L(),xe(t.fieldAOptions.length?5:6),L(4),Mt(t.fieldBLabel),L(),It("value",t.fieldBValue)("placeholder",t.fieldBPlaceholder),L(16),Wt("var-btn--open",M.varMenu()===t.key),L(4),xe(M.varMenu()===t.key?30:-1),L(),Ue("value",M.bodyValue(t.key)),It("placeholder",t.bodyPlaceholder),L(2),Mt(M.byteLabel(t.key))}}function YGt(i,e){if(i&1){let t=Le();C(0,"article",5)(1,"div",17)(2,"span",32),Zt(3,"nile-glyph",33),b(),C(4,"div",34)(5,"div",35)(6,"span",36),Y(7),b(),he(8,SGt,2,0,"span",37),b(),C(9,"div",38),Y(10),b()(),C(11,"button",39),Ae("click",function(){let n=P(t).$implicit,r=p(2);return R(r.toggleChannel.emit(n.key))}),Zt(12,"span",40),b()(),he(13,vGt,34,11,"div",41),b()}if(i&2){let t=e.$implicit,M=p(2);Wt("ch-card--on",M.isOn(t.key)),L(2),aM("background",t.tileBg),L(),It("name",t.glyph),L(4),Mt(t.name),L(),xe(M.isOn(t.key)?8:-1),L(2),Mt(t.hint),L(),Wt("toggle--on",M.isOn(t.key)),It("aria-checked",M.isOn(t.key))("aria-label","Toggle "+t.name),L(2),xe(M.isOpen(t.key)?13:-1)}}function ZGt(i,e){if(i&1){let t=Le();C(0,"button",82),Ae("click",function(){P(t);let n=p().$implicit,r=p(4);return R(r.editVariable.emit(n))}),Zt(1,"nile-glyph",67),b(),C(2,"button",83),Ae("click",function(){P(t);let n=p().$implicit,r=p(4);return R(r.deleteVariable.emit(n.token))}),Zt(3,"nile-glyph",69),b()}if(i&2){let t=p().$implicit,M=p(4);It("aria-label","Edit variable "+M.tokenOf(t))("title","Edit "+M.tokenOf(t)),L(2),It("aria-label","Delete variable "+M.tokenOf(t))("title","Delete "+M.tokenOf(t))}}function _Gt(i,e){if(i&1){let t=Le();C(0,"div",79)(1,"button",80),Ae("click",function(){let n=P(t).$implicit,r=p(4);return R(r.insertToken.emit({key:r.focusedBody(),token:n.token}))}),C(2,"span",65),Y(3),b(),C(4,"span",81),Y(5),b()(),he(6,ZGt,4,4),b()}if(i&2){let t=e.$implicit,M=p(4);L(),It("aria-label","Insert "+M.tokenOf(t)),L(2),Mt(M.tokenOf(t)),L(2),Mt(t.display),L(),xe(M.canDelete(t)?6:-1)}}function WGt(i,e){if(i&1&&(C(0,"div",13),ht(1,_Gt,7,4,"div",79,put),b()),i&2){let t=p(3);L(),xt(t.variables())}}function PGt(i,e){i&1&&(C(0,"div",78),Zt(1,"nile-glyph",84),C(2,"div",85),Y(3,"No variables match"),b()())}function RGt(i,e){if(i&1){let t=Le();C(0,"aside",27)(1,"div",7)(2,"div",8)(3,"span",70),Y(4,"Variables"),b(),C(5,"button",71),Ae("click",function(){P(t);let n=p(2);return R(n.openAddVar.emit())}),Zt(6,"nile-glyph",72),Y(7," Add variable "),b()(),C(8,"div",11)(9,"div",73),Y(10," Inserting into "),C(11,"span",74),Y(12),b(),Y(13," body. "),b(),C(14,"div",75),Zt(15,"nile-glyph",76),C(16,"nile-input",77),Ae("nile-input",function(n){P(t);let r=p(2);return R(r.varSearchChange.emit(r.inputVal(n)))}),b()(),he(17,WGt,3,0,"div",13)(18,PGt,4,0,"div",78),b()()()}if(i&2){let t=p(2);L(12),Mt(t.focusedChannelName()),L(4),It("value",t.varSearch()),L(),xe(t.variables().length>0?17:18)}}function VGt(i,e){if(i&1&&(C(0,"div",23),he(1,mGt,2,2,"nile-error-message",24),he(2,EGt,11,1,"section",2),he(3,fGt,2,0,"div",25),ht(4,YGt,14,13,"article",26,zGt),b(),he(6,RGt,19,3,"aside",27)),i&2){let t=p();L(),xe(t.error()?1:-1),L(),xe(t.showHeader()?2:-1),L(),xe(t.showHeader()?3:-1),L(),xt(t.channelDefs()),L(2),xe(t.showRail()?6:-1)}}var CE=class i{mode=at("create");showHeader=at(!0);showRail=at(!0);dense=at(!1);title=at("");channelOn=at.required();channelOpen=at.required();bodies=at.required();focusedBody=at("email");varMenu=at(null);variables=at.required();deletableTokens=at([]);varSearch=at("");webhooks=at.required();emailSenders=at([]);selectedFieldA=at({});fieldBValues=at({});error=at("");loading=at(!1);titleChange=Xi();fieldAChange=Xi();fieldBChange=Xi();toggleChannel=Xi();toggleMenu=Xi();bodyInput=Xi();bodyFocus=Xi();insertToken=Xi();deleteVariable=Xi();editVariable=Xi();varSearchChange=Xi();openAddVar=Xi();focusedChannelName=At(()=>RN[this.focusedBody()].name);channelDefs=At(()=>{let e=this.webhooks(),t=this.selectedFieldA(),M=this.fieldBValues(),n=this.emailSenders().map(l=>({label:l,value:l})),r=l=>l.map(N=>({label:N.name,value:N.name})),o=(l,N)=>t[l]??N[0]?.value??"",a=r(e.teams),s=r(e.slack);return[{key:"email",name:RN.email.name,hint:"Subject, recipients and HTML body",glyph:RN.email.glyph,tileBg:RN.email.tileBg,fieldALabel:"From",fieldAValue:n[0]?.value??"No verified sender",fieldAOptions:n,fieldASelected:o("email",n),fieldBLabel:"To",fieldBPlaceholder:"Add recipients (comma-separated)",fieldBValue:M.email??"",bodyPlaceholder:"Alert {{ALERT_NAME}} is now {{STATE}} ({{VALUE}} rows)."},{key:"teams",name:RN.teams.name,hint:"Posts an adaptive card to a channel",glyph:RN.teams.glyph,tileBg:RN.teams.tileBg,fieldALabel:"Webhook",fieldAValue:e.teams[0]?e.teams[0].name:"No webhook",fieldAOptions:a,fieldASelected:o("teams",a),fieldBLabel:"Card title",fieldBPlaceholder:"Notification title",fieldBValue:M.teams??"",bodyPlaceholder:"{{ALERT_NAME}} is {{STATE}} on {{CONNECTION}}."},{key:"slack",name:RN.slack.name,hint:"Posts a message to a channel",glyph:RN.slack.glyph,tileBg:RN.slack.tileBg,fieldALabel:"Webhook",fieldAValue:e.slack[0]?e.slack[0].name:"Connect a webhook first",fieldAOptions:s,fieldASelected:o("slack",s),fieldBLabel:"Channel override",fieldBPlaceholder:"#data-alerts",fieldBValue:M.slack??"",bodyPlaceholder:":rotating_light: {{ALERT_NAME}} \u2014 {{STATE}}"}]});isOn(e){return this.channelOn()[e]}isOpen(e){return this.channelOn()[e]&&this.channelOpen()[e]}bodyValue(e){return this.bodies()[e]??""}byteLabel(e){return`${KH(this.bodyValue(e)).toLocaleString()} / ${qH.toLocaleString()} bytes (UTF-8, max 15 KB)`}tokenOf(e){return`{{${e.token}}}`}deletable=At(()=>new Set(this.deletableTokens()));canDelete(e){return this.deletable().has(e.token)}inputVal(e){return e.detail?.value??""}selectVal(e){let t=e.detail?.value;return Array.isArray(t)?t[0]??"":t??""}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=rM({type:i,selectors:[["app-template-editor"]],inputs:{mode:[1,"mode"],showHeader:[1,"showHeader"],showRail:[1,"showRail"],dense:[1,"dense"],title:[1,"title"],channelOn:[1,"channelOn"],channelOpen:[1,"channelOpen"],bodies:[1,"bodies"],focusedBody:[1,"focusedBody"],varMenu:[1,"varMenu"],variables:[1,"variables"],deletableTokens:[1,"deletableTokens"],varSearch:[1,"varSearch"],webhooks:[1,"webhooks"],emailSenders:[1,"emailSenders"],selectedFieldA:[1,"selectedFieldA"],fieldBValues:[1,"fieldBValues"],error:[1,"error"],loading:[1,"loading"]},outputs:{titleChange:"titleChange",fieldAChange:"fieldAChange",fieldBChange:"fieldBChange",toggleChannel:"toggleChannel",toggleMenu:"toggleMenu",bodyInput:"bodyInput",bodyFocus:"bodyFocus",insertToken:"insertToken",deleteVariable:"deleteVariable",editVariable:"editVariable",varSearchChange:"varSearchChange",openAddVar:"openAddVar"},decls:3,vars:3,consts:[[1,"editor"],["aria-hidden","true",1,"editor__main"],[1,"panel"],[1,"field"],["variant","text","width","220px","height","11",1,"eyebrow"],[1,"ch-card"],["aria-hidden","true",1,"rail"],[1,"rail__panel"],[1,"rail__head"],["variant","text","width","70px","height","14"],["variant","text","width","80px","height","13"],[1,"rail__body"],["variant","rounded","width","100%","height","36",1,"tpl-skel__search"],[1,"rail__list"],["variant","rounded","width","100%","height","34"],["variant","text","width","80px","height","12"],["variant","rounded","width","100%","height","36"],[1,"ch-card__head"],["variant","rounded","width","32px","height","32"],[1,"ch-card__meta","tpl-skel__lines"],["variant","text","width","90px","height","14"],["variant","text","width","170px","height","12"],["variant","rounded","width","36px","height","20"],[1,"editor__main"],[3,"errorMessage"],[1,"eyebrow"],[1,"ch-card",3,"ch-card--on"],[1,"rail"],[1,"field__label"],[1,"req"],["placeholder","e.g. New hire welcome",3,"nile-input"],["rows","2","resize","vertical","placeholder","What is this notification for?"],[1,"ch-card__tile"],["method","stroke","color","#ffff","size","18"],[1,"ch-card__meta"],[1,"ch-card__title-row"],[1,"ch-card__name"],[1,"on-pill"],[1,"ch-card__hint"],["type","button","role","switch",1,"toggle",3,"click"],[1,"toggle__thumb"],[1,"ch-card__body"],[1,"grid-2"],["hoist","",3,"value"],[1,"readonly-field"],[3,"nile-input"],[1,"body"],[1,"body__toolbar"],[1,"tool","tool--b"],[1,"tool","tool--i"],[1,"tool","tool--u"],[1,"tool__sep"],[1,"var-wrap"],["type","button",1,"var-btn",3,"click"],[1,"var-btn__braces"],[1,"var-menu"],["rows","4","resize","vertical",1,"body__textarea",3,"nile-input","nile-change","nile-focus","value"],[1,"byte-label"],["hoist","",3,"nile-change","value"],[3,"value"],[1,"var-menu__row"],["type","button",1,"var-menu__item","var-menu__new",3,"click"],["name","ng-plus","method","stroke","size","13"],[1,"var-display"],["type","button",1,"var-menu__item",3,"click"],[1,"var-token"],["type","button",1,"var-menu__act",3,"click"],["name","ng-edit-02","method","stroke","size","13"],["type","button",1,"var-menu__act","var-menu__del",3,"click"],["name","ng-trash-01","method","stroke","size","13"],[1,"rail__title"],["type","button",1,"rail__add",3,"click"],["name","ng-plus","method","stroke","size","14"],[1,"rail__inserting"],[1,"rail__inserting-name"],[1,"rail__search"],["name","ng-search-lg","method","stroke","size","14",1,"rail__search-icon"],["placeholder","Search variables",3,"nile-input"],[1,"rail__empty"],[1,"var-row"],["type","button",1,"var-row__insert",3,"click"],[1,"var-row__display"],["type","button",1,"var-row__act",3,"click"],["type","button",1,"var-row__act","var-row__del",3,"click"],["name","ng-braces","method","stroke","size","24"],[1,"rail__empty-title"]],template:function(t,M){t&1&&(C(0,"div",0),he(1,OGt,17,3)(2,VGt,7,4),b()),t&2&&(Wt("editor--dense",M.dense()),L(),xe(M.loading()?1:2))},styles:["[_nghost-%COMP%]{display:block;width:100%}.editor[_ngcontent-%COMP%]{display:flex;gap:20px;padding:20px 24px 48px;align-items:flex-start}.editor--dense[_ngcontent-%COMP%]{padding:0;gap:0}.editor--dense[_ngcontent-%COMP%] .editor__main[_ngcontent-%COMP%]{gap:10px}.editor--dense[_ngcontent-%COMP%] .grid-2[_ngcontent-%COMP%]{grid-template-columns:1fr}.editor__main[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;flex-direction:column;gap:16px}nile-skeleton-loader[_ngcontent-%COMP%]{display:block}.tpl-skel__lines[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px}.tpl-skel__search[_ngcontent-%COMP%]{margin-bottom:10px}.panel[_ngcontent-%COMP%], .ch-card[_ngcontent-%COMP%], .rail__panel[_ngcontent-%COMP%]{background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-secondary);border-radius:var(--ng-radius-xl);box-shadow:var(--ng-shadow-xs)}.panel[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:14px;padding:16px}.field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px}.field__label[_ngcontent-%COMP%]{font-size:12px;font-weight:var(--ng-font-weight-medium);color:var(--ng-colors-text-secondary-700)}.req[_ngcontent-%COMP%]{color:var(--ng-color-error-600)}.grid-2[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.readonly-field[_ngcontent-%COMP%]{display:flex;align-items:center;height:36px;padding:0 12px;border:1px solid var(--ng-colors-border-primary);border-radius:var(--ng-radius-md);background:var(--ng-colors-bg-primary);font-size:13px;color:var(--ng-colors-text-secondary-700)}.eyebrow[_ngcontent-%COMP%]{font-size:11px;font-weight:var(--ng-font-weight-semibold);letter-spacing:.06em;text-transform:uppercase;color:var(--ng-colors-text-quaternary-500);padding:0 2px}.ch-card[_ngcontent-%COMP%]{overflow:visible}.ch-card--on[_ngcontent-%COMP%]{border-color:var(--ng-colors-border-primary)}.ch-card__head[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;padding:14px 16px}.ch-card__tile[_ngcontent-%COMP%]{width:32px;height:32px;border-radius:var(--ng-radius-md);color:var(--ng-colors-text-white);display:flex;align-items:center;justify-content:center;flex:none}.ch-card__meta[_ngcontent-%COMP%]{flex:1;min-width:0}.ch-card__title-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.ch-card__name[_ngcontent-%COMP%]{font-size:14px;font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-primary-900)}.ch-card__hint[_ngcontent-%COMP%]{font-size:12px;color:var(--ng-colors-text-quaternary-500)}.ch-card__body[_ngcontent-%COMP%]{border-top:1px solid var(--ng-colors-border-tertiary);padding:16px;background:var(--ng-colors-bg-secondary-subtle);display:flex;flex-direction:column;gap:12px}.on-pill[_ngcontent-%COMP%]{height:20px;padding:0 8px;border-radius:var(--ng-radius-full);font-size:11px;font-weight:var(--ng-font-weight-semibold);display:inline-flex;align-items:center;background:var(--ng-componentcolors-utility-success-50);border:1px solid var(--ng-componentcolors-utility-success-200);color:var(--ng-componentcolors-utility-success-700)}.body[_ngcontent-%COMP%]{border:1px solid var(--ng-colors-border-primary);border-radius:var(--ng-radius-md);background:var(--ng-colors-bg-primary);overflow:visible;position:relative}.body__toolbar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:2px;padding:6px 8px;border-bottom:1px solid var(--ng-colors-border-tertiary)}.body__textarea[_ngcontent-%COMP%]{display:block;width:100%;--nile-textarea-border-width: 0}.tool[_ngcontent-%COMP%]{width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--ng-radius-sm);font-size:13px;color:var(--ng-colors-text-tertiary-600);cursor:pointer}.tool[_ngcontent-%COMP%]:hover{background:var(--ng-colors-bg-secondary)}.tool--b[_ngcontent-%COMP%]{font-weight:var(--ng-font-weight-bold)}.tool--i[_ngcontent-%COMP%]{font-style:italic}.tool--u[_ngcontent-%COMP%]{text-decoration:underline}.tool__sep[_ngcontent-%COMP%]{width:1px;height:16px;background:var(--ng-colors-border-secondary);margin:0 4px}.var-wrap[_ngcontent-%COMP%]{position:relative}.var-btn[_ngcontent-%COMP%]{height:26px;padding:0 8px;display:inline-flex;align-items:center;gap:5px;border:none;border-radius:var(--ng-radius-sm);font-size:12px;font-weight:var(--ng-font-weight-semibold);color:var(--ng-color-bluedark-600);cursor:pointer;background:none}.var-btn[_ngcontent-%COMP%]:hover, .var-btn--open[_ngcontent-%COMP%]{background:var(--ng-colors-bg-brand-primary)}.var-btn__braces[_ngcontent-%COMP%]{font-weight:var(--ng-font-weight-bold)}.var-menu[_ngcontent-%COMP%]{position:absolute;top:30px;left:0;z-index:25;width:240px;background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-secondary);border-radius:var(--ng-radius-lg);box-shadow:var(--ng-shadow-lg);padding:6px;max-height:260px;overflow-y:auto;animation:_ngcontent-%COMP%_vpop .14s ease}.var-menu__item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;width:100%;padding:7px 8px;border:none;background:none;border-radius:7px;cursor:pointer;text-align:left}.var-menu__item[_ngcontent-%COMP%]:hover{background:var(--ng-colors-bg-active)}.var-menu__row[_ngcontent-%COMP%]{display:flex;align-items:center}.var-menu__row[_ngcontent-%COMP%] .var-menu__item[_ngcontent-%COMP%]{flex:1;min-width:0}.var-token[_ngcontent-%COMP%]{font-size:12px;color:var(--ng-color-bluedark-600);background:var(--ng-colors-bg-brand-primary);padding:1px 6px;border-radius:var(--ng-radius-sm);white-space:nowrap}.var-display[_ngcontent-%COMP%]{font-size:12px;color:var(--ng-colors-text-secondary-700)}.byte-label[_ngcontent-%COMP%]{font-size:11px;color:var(--ng-colors-text-quaternary-500);font-variant-numeric:tabular-nums}.rail[_ngcontent-%COMP%]{width:300px;flex:none;position:sticky;top:0}.rail__panel[_ngcontent-%COMP%]{overflow:hidden}.rail__head[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--ng-colors-border-tertiary)}.rail__title[_ngcontent-%COMP%]{font-size:14px;font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-primary-900)}.rail__add[_ngcontent-%COMP%]{appearance:none;border:none;background:none;cursor:pointer;display:inline-flex;align-items:center;gap:5px;font-size:13px;font-weight:var(--ng-font-weight-semibold);color:var(--ng-color-bluedark-600)}.rail__add[_ngcontent-%COMP%]:hover{color:var(--ng-color-bluedark-700)}.rail__body[_ngcontent-%COMP%]{padding:12px 16px}.rail__inserting[_ngcontent-%COMP%]{font-size:12px;color:var(--ng-colors-text-tertiary-600);margin-bottom:10px}.rail__inserting-name[_ngcontent-%COMP%]{font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-secondary-700)}.rail__search[_ngcontent-%COMP%]{position:relative;display:flex;align-items:center;margin-bottom:10px}.rail__search-icon[_ngcontent-%COMP%]{position:absolute;left:10px;z-index:1;color:var(--ng-colors-fg-quaternary-400);pointer-events:none}.rail__search[_ngcontent-%COMP%] nile-input[_ngcontent-%COMP%]{width:100%;--nile-input-padding-left: 30px}.rail__list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px}.rail__empty[_ngcontent-%COMP%]{padding:18px 8px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--ng-colors-fg-quaternary-400)}.rail__empty-title[_ngcontent-%COMP%]{font-size:13px;font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-secondary-700)}.var-display[_ngcontent-%COMP%], .var-row__display[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.var-row__act[_ngcontent-%COMP%], .var-menu__act[_ngcontent-%COMP%]{flex:none;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:var(--ng-radius-sm);background:none;cursor:pointer;color:var(--ng-colors-fg-quaternary-400)}.var-row__act[_ngcontent-%COMP%]:hover, .var-row__act[_ngcontent-%COMP%]:focus-visible, .var-menu__act[_ngcontent-%COMP%]:hover, .var-menu__act[_ngcontent-%COMP%]:focus-visible{background:var(--ng-colors-bg-secondary);color:var(--ng-colors-text-primary-900)}.var-row__del[_ngcontent-%COMP%]:hover, .var-row__del[_ngcontent-%COMP%]:focus-visible, .var-menu__del[_ngcontent-%COMP%]:hover, .var-menu__del[_ngcontent-%COMP%]:focus-visible{background:var(--ng-colors-bg-error-primary);color:var(--ng-colors-text-error-primary-600)}.var-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:1px solid var(--ng-colors-border-secondary);border-radius:var(--ng-radius-md);background:none}.var-row__insert[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;align-items:center;gap:8px;padding:0;border:none;background:none;cursor:pointer;text-align:left;font:inherit;color:inherit}.var-row[_ngcontent-%COMP%]:hover{background:var(--ng-colors-bg-active);border-color:var(--ng-colors-border-primary)}.var-row__display[_ngcontent-%COMP%]{flex:1;font-size:12px;font-weight:var(--ng-font-weight-medium);color:var(--ng-colors-text-secondary-700)}.toggle[_ngcontent-%COMP%]{position:relative;width:36px;height:20px;flex:none;border:none;padding:0;border-radius:var(--ng-radius-full);cursor:pointer;background:var(--ng-colors-border-primary);transition:background var(--ng-transition-duration-fast) ease}.toggle__thumb[_ngcontent-%COMP%]{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:var(--ng-radius-full);background:var(--ng-colors-fg-white);box-shadow:var(--ng-shadow-sm);transition:left var(--ng-transition-duration-fast) ease}.toggle--on[_ngcontent-%COMP%]{background:var(--ng-color-bluedark-600)}.toggle--on[_ngcontent-%COMP%] .toggle__thumb[_ngcontent-%COMP%]{left:18px}@keyframes _ngcontent-%COMP%_vpop{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}"]})};var BGt={equals:"is",not_equals:"is_not",contains:"contains",in:"is",not_in:"is_not"},FGt={equals:"=",not_equals:"!=",lt:"<",lte:"<=",gt:">",gte:">=",between:"between",in:"=",not_in:"!="},HGt=new Set(["in","not_in"]);function Lut(i,e,t){let M=(i??[]).filter(o=>o?.field&&o?.operation).filter(o=>o.source!=="timeRange");if(t?.hasOr&&M.length)return{conditions:[],dropped:["the OR between filter groups (alert conditions are AND-only)"]};let n=[],r=[];for(let o of M){let a=e.get(o.field);if(!a){r.push(`${o.field} (not a column of the watched widget)`);continue}let s=(a==="text"?BGt:FGt)[o.operation];if(!s){r.push(`${o.field} ${o.operation}`);continue}if(s==="between"){let[l,N]=Array.isArray(o.value)?o.value:[];if(l==null||N==null){r.push(`${o.field} between`);continue}n.push({column:o.field,op:s,value:String(l),value2:String(N)});continue}if(HGt.has(o.operation)){let l=Array.isArray(o.value)?o.value:[o.value];if(l.length!==1){r.push(`${o.field} ${o.operation} (${l.length} values \u2014 the alert model has no "one of" operator)`);continue}n.push({column:o.field,op:s,value:String(l[0]??"")});continue}n.push({column:o.field,op:s,value:String(o.value??"")})}return{conditions:n,dropped:r}}function Out(i){if(!i.length)return"";let e=i.length;return`${e} filter condition${e===1?"":"s"} couldn't be carried over (${i.join("; ")}) \u2014 review before saving.`}var mut={">":"is greater than",">=":"is greater than or equal to","<":"is less than","<=":"is less than or equal to","=":"is equal to","!=":"is not equal to",between:"is between",contains:"contains",not_contains:"does not contain",is:"is",is_not:"is not"},WQ=[">",">=","<","<=","=","!=","between"],kE=["contains","not_contains","is","is_not"],JGt=[...WQ,...kE];function Eut(i){return i?i==="text"?kE:WQ:JGt}function fut(i){if(!Array.isArray(i)||!i.length)return"Add a trigger condition \u2014 pick a column, an operator and a value.";for(let e of i){if(!e?.column)return"Every condition needs a column.";if(!e?.op)return`Pick an operator for "${e.column}".`;if(e.value===void 0||e.value===null||String(e.value).trim()==="")return`Enter a value for "${e.column}".`;if(e.op==="between"&&(e.value2===void 0||e.value2===null||String(e.value2).trim()===""))return`"${e.column}" is between two values \u2014 enter the second one.`}return""}var GGt=(i,e)=>e.title,tJ=(i,e)=>e.name;function $Gt(i,e){if(i&1){let t=Le();$(0,"button",6),Ze("click",function(){P(t);let n=p(2);return R(n.backToSuggestions())}),it(1,"nile-glyph",7),te()}}function XGt(i,e){i&1&&($(0,"div",19),it(1,"nile-skeleton-loader",20),$(2,"span",13),it(3,"nile-skeleton-loader",21)(4,"nile-skeleton-loader",22),te()())}function qGt(i,e){if(i&1&&ht(0,XGt,5,0,"div",19,nr),i&2){let t=p(3);xt(t.skeletons)}}function KGt(i,e){if(i&1&&($(0,"code",29),Y(1),te()),i&2){let t=p().$implicit;L(),Mt(t.condition.value2)}}function e8t(i,e){if(i&1){let t=Le();$(0,"button",25),Ze("click",function(){let n=P(t).$implicit,r=p(4);return R(r.pickSuggestion(n))}),$(1,"span",26),it(2,"nile-glyph",27),te(),$(3,"span",13)(4,"span",14),Y(5),te(),$(6,"span",15),Y(7),te()(),$(8,"span",28)(9,"code",29),Y(10),te(),$(11,"code",30),Y(12),te(),$(13,"code",29),Y(14),te(),he(15,KGt,2,1,"code",29),te()()}if(i&2){let t=e.$implicit,M=p(4);L(5),Mt(t.title),L(2),Mt(t.description),L(3),Mt(t.condition.column),L(2),Mt(M.opLabel(t.condition.op)),L(2),Mt(t.condition.value),L(),xe(t.condition.value2?15:-1)}}function t8t(i,e){if(i&1&&($(0,"p",24),Y(1),te()),i&2){let t=p(4);L(),Mt(t.suggestionsError())}}function i8t(i,e){if(i&1&&(ht(0,e8t,16,6,"button",23,GGt),he(2,t8t,2,1,"p",24)),i&2){let t=p(3);xt(t.suggestions()),L(2),xe(t.suggestionsError()?2:-1)}}function M8t(i,e){i&1&&($(0,"div",9)(1,"span"),Y(2,"OR"),te()())}function n8t(i,e){if(i&1){let t=Le();$(0,"div",8),he(1,qGt,2,0)(2,i8t,3,1),he(3,M8t,3,0,"div",9),$(4,"button",10),Ze("click",function(){P(t);let n=p(2);return R(n.startFromScratch())}),$(5,"span",11),it(6,"nile-glyph",12),te(),$(7,"span",13)(8,"span",14),Y(9,"Create alert"),te(),$(10,"span",15),Y(11,"Start from scratch and define your own condition"),te()(),it(12,"nile-glyph",16),te()(),$(13,"footer",17)(14,"nile-button",18),Ze("click",function(){P(t);let n=p(2);return R(n.close())}),Y(15,"Cancel"),te()()}if(i&2){let t=p(2);L(),xe(t.suggestionsLoading()?1:2),L(2),xe(t.suggestions().length||t.suggestionsLoading()?3:-1)}}function r8t(i,e){i&1&&($(0,"b",60),Y(1,"manual"),te())}function o8t(i,e){if(i&1&&($(0,"span",59),it(1,"i"),Y(2),he(3,r8t,2,0,"b",60),te()),i&2){let t=e.$implicit;Wt("ad__chip--text",t.dataType==="text")("ad__chip--mnl",t.source==="custom"),L(2),Mt(t.name),L(),xe(t.source==="custom"?3:-1)}}function a8t(i,e){i&1&&($(0,"span",39),Y(1,"No metrics detected \u2014 add one below."),te())}function s8t(i,e){if(i&1){let t=Le();$(0,"div",75)(1,"nile-input",80),Ze("nile-input",function(n){P(t);let r=p(4);return R(r.mExpr.set(r.inputVal(n)))}),te()()}if(i&2){let t=p(4);L(),ot("value",t.mExpr())("placeholder",t.mKind()==="sql"?"e.g. SUM(amount) or gross - tax":"e.g. gross - tax")}}function l8t(i,e){if(i&1){let t=Le();$(0,"div",42)(1,"div",61)(2,"div",62),it(3,"nile-glyph",63),te(),$(4,"div",64)(5,"h3"),Y(6,"Add metric"),te(),$(7,"div",65),Y(8,"Define a metric to alert on when it isn't auto-detected"),te()(),$(9,"button",66),Ze("click",function(){P(t);let n=p(3);return R(n.metricOpen.set(!1))}),Y(10,"\u2715"),te()(),$(11,"div",67)(12,"span",43),Y(13,"Metric name "),$(14,"span",44),Y(15,"*"),te()(),$(16,"nile-input",68),Ze("nile-input",function(n){P(t);let r=p(3);return R(r.mName.set(r.inputVal(n)))}),te(),$(17,"span",43),Y(18,"Data type"),te(),$(19,"div",69)(20,"button",70),Ze("click",function(){P(t);let n=p(3);return R(n.mType.set("number"))}),Y(21,"Number"),te(),$(22,"button",70),Ze("click",function(){P(t);let n=p(3);return R(n.mType.set("text"))}),Y(23,"Text"),te()(),$(24,"span",43),Y(25,"How is it computed?"),te(),$(26,"nile-select",71),Ze("nile-change",function(n){P(t);let r=p(3);return R(r.setMKind(r.selectVal(n)))}),$(27,"nile-option",72),Y(28,"Manual field"),te(),$(29,"nile-option",73),Y(30,"SQL expression"),te(),$(31,"nile-option",74),Y(32,"Formula"),te()(),he(33,s8t,2,2,"div",75),$(34,"div",76),Y(35,"Preview "),$(36,"code"),Y(37),te()()(),$(38,"div",77)(39,"nile-button",78),Ze("click",function(){P(t);let n=p(3);return R(n.metricOpen.set(!1))}),Y(40,"Cancel"),te(),$(41,"nile-button",79),Ze("click",function(){P(t);let n=p(3);return R(n.confirmMetric())}),Y(42,"Add metric"),te()()()}if(i&2){let t=p(3);L(16),ot("value",t.mName()),L(4),Wt("on",t.mType()==="number"),L(2),Wt("on",t.mType()==="text"),L(4),ot("value",t.mKind()),L(7),xe(t.mKind()!=="manual"?33:-1),L(4),Jo("",t.mName()||"Metric"," \xB7 ",t.mType()==="number"?"Number":"Text"),L(4),It("disabled",t.mCanSave()?null:"")}}function g8t(i,e){if(i&1&&($(0,"p",48),it(1,"nile-glyph",81),Y(2),te()),i&2){let t=p(3);L(2),ui(" ",t.prefillNotice()," ")}}function N8t(i,e){if(i&1&&($(0,"nile-option",83),Y(1),te()),i&2){let t=e.$implicit;ot("value",t.name),L(),Mt(t.name)}}function u8t(i,e){if(i&1&&($(0,"nile-option",83),Y(1),te()),i&2){let t=e.$implicit,M=p(4);ot("value",t),L(),Mt(M.opLabel(t))}}function c8t(i,e){if(i&1){let t=Le();$(0,"nile-input",89),Ze("nile-input",function(n){P(t);let r=p().$index,o=p(3);return R(o.patchCond(r,"value2",o.inputVal(n)))}),te()}if(i&2){let t=p().$implicit;ot("value",t.value2??"")}}function D8t(i,e){if(i&1){let t=Le();$(0,"div",49)(1,"nile-select",82),Ze("nile-change",function(n){let r=P(t).$index,o=p(3);return R(o.onCondColumn(r,o.selectVal(n)))}),ht(2,N8t,2,2,"nile-option",83,tJ),$(4,"nile-option",83),Y(5,"\uFF0B Add metric\u2026"),te()(),$(6,"nile-select",84),Ze("nile-change",function(n){let r=P(t).$index,o=p(3);return R(o.patchCond(r,"op",o.selectVal(n)))}),ht(7,u8t,2,2,"nile-option",83,Ho),te(),$(9,"nile-input",85),Ze("nile-input",function(n){let r=P(t).$index,o=p(3);return R(o.patchCond(r,"value",o.inputVal(n)))}),te(),he(10,c8t,1,1,"nile-input",86),$(11,"nile-button",87),Ze("click",function(){let n=P(t).$index,r=p(3);return R(r.removeCond(n))}),it(12,"nile-glyph",88),te()()}if(i&2){let t=e.$implicit,M=p(3);L(),ot("value",t.column),L(),xt(M.allMetrics()),L(2),ot("value",M.addMetricOpt),L(2),ot("value",t.op),L(),xt(M.opsForColumn(t.column)),L(2),ot("value",t.value),L(),xe(t.op==="between"?10:-1)}}function I8t(i,e){i&1&&($(0,"p",48),it(1,"nile-glyph",81),Y(2," Couldn\u2019t load this alert\u2019s saved message from the Notification Center. Close and reopen the alert \u2014 saving now is blocked so its message isn\u2019t replaced with an empty one. "),te())}function d8t(i,e){if(i&1&&($(0,"p",57),Y(1),te()),i&2){let t=p(4);L(),Mt(t.vError())}}function j8t(i,e){if(i&1&&($(0,"nile-option",83),Y(1),te()),i&2){let t=e.$implicit;ot("value",t.name),L(),Mt(t.name)}}function y8t(i,e){if(i&1){let t=Le();$(0,"div",75)(1,"nile-select",71),Ze("nile-change",function(n){P(t);let r=p(4);return R(r.vField.set(r.selectVal(n)))}),ht(2,j8t,2,2,"nile-option",83,tJ),te()()}if(i&2){let t=p(4);L(),ot("value",t.vField()),L(),xt(t.allMetrics())}}function T8t(i,e){if(i&1){let t=Le();$(0,"div",75)(1,"nile-input",93),Ze("nile-input",function(n){P(t);let r=p(4);return R(r.vStatic.set(r.inputVal(n)))}),te()()}if(i&2){let t=p(4);L(),ot("value",t.vStatic())}}function A8t(i,e){if(i&1){let t=Le();$(0,"div",75)(1,"nile-input",80),Ze("nile-input",function(n){P(t);let r=p(4);return R(r.vExpr.set(r.inputVal(n)))}),te()()}if(i&2){let t=p(4);L(),ot("placeholder",OG("e.g. ","{{VALUE}}"," - ","{{THRESHOLD}}"))("value",t.vExpr())}}function z8t(i,e){if(i&1){let t=Le();$(0,"div",42)(1,"div",61)(2,"div",90),it(3,"nile-glyph",91),te(),$(4,"div",64)(5,"h3"),Y(6),te(),$(7,"div",65),Y(8),te()(),$(9,"button",66),Ze("click",function(){P(t);let n=p(3);return R(n.closeVar())}),Y(10,"\u2715"),te()(),$(11,"div",67),he(12,d8t,2,1,"p",57),$(13,"span",43),Y(14,"Variable name "),$(15,"span",44),Y(16,"*"),te()(),$(17,"nile-input",92),Ze("nile-input",function(n){P(t);let r=p(3);return R(r.vName.set(r.inputVal(n)))}),te(),$(18,"span",43),Y(19,"Maps to"),te(),$(20,"div",69)(21,"button",70),Ze("click",function(){P(t);let n=p(3);return R(n.vMapsTo.set("field"))}),Y(22,"Chart field"),te(),$(23,"button",70),Ze("click",function(){P(t);let n=p(3);return R(n.vMapsTo.set("static"))}),Y(24,"Static text"),te(),$(25,"button",70),Ze("click",function(){P(t);let n=p(3);return R(n.vMapsTo.set("expr"))}),Y(26,"Expression"),te()(),he(27,y8t,4,1,"div",75)(28,T8t,2,1,"div",75)(29,A8t,2,4,"div",75),$(30,"div",76),Y(31,"Token "),$(32,"code"),Y(33),te()()(),$(34,"div",77)(35,"nile-button",78),Ze("click",function(){P(t);let n=p(3);return R(n.closeVar())}),Y(36,"Cancel"),te(),$(37,"nile-button",79),Ze("click",function(){P(t);let n=p(3);return R(n.confirmVar())}),Y(38),te()()()}if(i&2){let t=p(3);L(6),Mt(t.vEditing()?"Edit variable":"Create new variable"),L(2),ui(" ",t.vEditing()?"Renaming also rewrites the token in every message body that uses it":"Reusable across every channel in this alert"," "),L(4),xe(t.vError()?12:-1),L(5),ot("value",t.vName()),L(4),Wt("on",t.vMapsTo()==="field"),L(2),Wt("on",t.vMapsTo()==="static"),L(2),Wt("on",t.vMapsTo()==="expr"),L(2),xe(t.vMapsTo()==="field"?27:t.vMapsTo()==="static"?28:29),L(6),Mt(t.vTokenPreview()),L(4),It("disabled",t.vName().trim()?null:""),L(),ui(" ",t.vEditing()?"Save variable":"Add variable"," ")}}function h8t(i,e){if(i&1&&($(0,"p",57),Y(1),te()),i&2){let t=p(3);L(),Mt(t.error())}}function x8t(i,e){if(i&1){let t=Le();$(0,"div",31)(1,"div",32)(2,"div",33)(3,"div",34)(4,"div",35),it(5,"nile-glyph",36),Y(6," Metrics from this chart "),te(),$(7,"div",37),ht(8,o8t,4,6,"span",38,tJ,!1,a8t,2,0,"span",39),$(11,"button",40),Ze("click",function(){P(t);let n=p(2);return R(n.openMetric(null))}),it(12,"nile-glyph",41),Y(13," Add metric "),te()()(),he(14,l8t,43,10,"div",42),$(15,"span",43),Y(16,"Alert name "),$(17,"span",44),Y(18,"*"),te()(),$(19,"nile-input",45),Ze("nile-input",function(n){P(t);let r=p(2);return R(r.name.set(r.inputVal(n)))}),te(),$(20,"div",46),Y(21,"Condition"),te(),$(22,"p",47),Y(23,"Alert me when the following condition matches"),te(),he(24,g8t,3,1,"p",48),ht(25,D8t,13,5,"div",49,nr),$(27,"nile-button",50),Ze("click",function(){P(t);let n=p(2);return R(n.addCond())}),it(28,"nile-glyph",51),Y(29," Add condition "),te()(),$(30,"div",33)(31,"div",46),Y(32,"Channels \u2014 pick where this sends"),te(),$(33,"div",52),it(34,"nile-glyph",53),Y(35," This dashboard supports Email, Slack and Microsoft Teams only. "),te(),$(36,"div",54),it(37,"nile-glyph",55),$(38,"span"),Y(39,"Type "),$(40,"code"),Y(41),te(),Y(42," in any message to search variables, or use "),$(43,"b"),Y(44,"Insert variable"),te(),Y(45,". Don't see the field you need? Pick "),$(46,"b"),Y(47,"+ Create new variable"),te(),Y(48,"."),te()(),he(49,I8t,3,0,"p",48),$(50,"app-template-editor",56),Ze("toggleChannel",function(n){P(t);let r=p(2);return R(r.onToggleChannel(n))})("toggleMenu",function(n){P(t);let r=p(2);return R(r.onToggleMenu(n))})("bodyInput",function(n){P(t);let r=p(2);return R(r.onBodyInput(n))})("bodyFocus",function(n){P(t);let r=p(2);return R(r.focusedBody.set(n))})("insertToken",function(n){P(t);let r=p(2);return R(r.onInsertToken(n))})("varSearchChange",function(n){P(t);let r=p(2);return R(r.varSearch.set(n))})("fieldAChange",function(n){P(t);let r=p(2);return R(r.onFieldA(n))})("fieldBChange",function(n){P(t);let r=p(2);return R(r.onFieldB(n))})("deleteVariable",function(n){P(t);let r=p(2);return R(r.onDeleteVar(n))})("editVariable",function(n){P(t);let r=p(2);return R(r.onEditVar(n))})("openAddVar",function(){P(t);let n=p(2);return R(n.openVar())}),te(),he(51,z8t,39,14,"div",42),te()(),he(52,h8t,2,1,"p",57),te(),$(53,"footer",17)(54,"span",39),Y(55),te(),$(56,"nile-button",18),Ze("click",function(){P(t);let n=p(2);return R(n.close())}),Y(57,"Cancel"),te(),$(58,"nile-button",58),Ze("click",function(){P(t);let n=p(2);return R(n.save())}),Y(59),te()()}if(i&2){let t=p(2);L(8),xt(t.allMetrics()),L(6),xe(t.metricOpen()?14:-1),L(5),ot("value",t.name()),L(5),xe(t.prefillNotice()?24:-1),L(),xt(t.conditions()),L(16),Mt("{{"),L(8),xe(t.tplLoad()==="failed"?49:-1),L(),ot("showHeader",!1)("showRail",!1)("dense",!0)("loading",t.channelsLoading())("channelOn",t.channelOn())("channelOpen",t.channelOpen())("bodies",t.bodies())("focusedBody",t.focusedBody())("varMenu",t.varMenu())("variables",t.filteredVariables())("varSearch",t.varSearch())("webhooks",t.webhooks())("emailSenders",t.emailSenders())("deletableTokens",t.customVarTokens())("selectedFieldA",t.selectedFieldA())("fieldBValues",t.fieldB()),L(),xe(t.varOpen()?51:-1),L(),xe(t.error()?52:-1),L(3),ui("",t.activeChannelCount()," channels on"),L(3),ot("loading",t.saving()),L(),ui(" ",t.isEditing()?"Save changes":"Create alert"," ")}}function p8t(i,e){if(i&1&&($(0,"div",1),he(1,$Gt,2,0,"button",2),$(2,"span",3)(3,"span",4),Y(4),te(),$(5,"span",5),Y(6),te()()(),he(7,n8t,16,2)(8,x8t,60,27)),i&2){let t=p();L(),xe(t.step()==="edit"&&t.showSuggestions()&&t.suggestions().length?1:-1),L(3),Mt(t.headerTitle()),L(2),Mt(t.headerSubtitle()),L(),xe(t.step()==="suggest"?7:8)}}var Sut="__add_metric__",Ks=i=>typeof i=="string"?i:"",wut=[{token:"ALERT_NAME",display:"Alert name"},{token:"STATE",display:"Current state"},{token:"CONNECTION",display:"Connection"},{token:"VALUE",display:"Row count"},{token:"evaluated_at",display:"Evaluation time"}],L8t={email:"Alert {{ALERT_NAME}} is now {{STATE}} ({{VALUE}} rows).",teams:"{{ALERT_NAME}} is {{STATE}} on {{CONNECTION}}.",slack:":rotating_light: {{ALERT_NAME}} \u2014 {{STATE}}"},Cut="Couldn\u2019t load this alert\u2019s saved message from the Notification Center. Close and reopen the alert before saving \u2014 saving now would replace its subject and message bodies with empty ones.",eJ=class i{open=at(!1);widget=at(null);dashboardId=at(null);source=at(null);filterPredicates=at(null);filterHasOr=at(!1);authoringMode=at("widget");showSuggestions=at(!0);sourceName=at("");editAlert=at(null);isEditing=At(()=>!!this.editAlert()?.id);step=ke("edit");skeletons=[0,1,2];suggestions=ke([]);suggestionsLoading=ke(!1);suggestionsError=ke("");headerTitle=At(()=>this.step()==="suggest"?"Suggested alerts for this widget":this.isEditing()?"Edit alert":"Set alert");headerSubtitle=At(()=>{let e=this.widget()?.title??"";if(this.step()==="suggest")return`Based on \u201C${e}\u201D. Pick one to get started \u2014 everything stays editable.`;let t=this.sourceName().trim();return t?`for \u201C${e}\u201D \xB7 ${t}`:`for \u201C${e}\u201D`});pickSuggestion(e){this.conditions.set([x({},e.condition)]),this.name.set(e.title),this.prefillNotice.set(""),this.step.set("edit")}startFromScratch(){this.step.set("edit")}backToSuggestions(){this.step.set("suggest")}async loadSuggestions(e,t){this.suggestions.set([]),this.suggestionsError.set(""),this.suggestionsLoading.set(!0);try{let M=t.map(o=>({column:o.name,dataType:o.dataType})),n=(e.config?.chart??{}).data,r=await oi(this.http.post(`${this.workforceScope}/alerts/widget-suggestions`,{widgetTitle:e.title??"",columns:M,rows:Array.isArray(n)?n.slice(0,5):[]}));this.suggestions.set(r?.data?.suggestions??[])}catch{this.suggestionsError.set("Couldn\u2019t load suggestions \u2014 start from scratch below.")}finally{this.suggestionsLoading.set(!1)}}closed=Xi();saved=Xi();prefillNotice=ke("");http=Be(yo);injectedBaseUrl=Be(Am,{optional:!0})??"";get baseUrl(){return xA()||this.injectedBaseUrl}tokenStore=Be(vr);addMetricOpt=Sut;name=ke("");conditions=ke([{column:"",op:">",value:""}]);emailSubject=ke("");saving=ke(!1);error=ke("");channelOn=ke({email:!0,teams:!1,slack:!1});channelOpen=ke({email:!0,teams:!1,slack:!1});bodies=ke({email:"",teams:"",slack:""});focusedBody=ke("email");varMenu=ke(null);varSearch=ke("");selectedFieldA=ke({});fieldB=ke({});customVars=ke([]);customVarTokens=At(()=>this.customVars().map(e=>e.token));webhooks=ke({teams:[],slack:[]});emailSenders=ke([]);channelsLoading=ke(!1);tplLoad=ke("none");metricOpen=ke(!1);mName=ke("");mType=ke("number");mKind=ke("manual");mExpr=ke("");metricTargetCond=null;mCanSave=At(()=>this.mName().trim().length>0&&(this.mKind()==="manual"||this.mExpr().trim().length>0));customMetrics=ke([]);varOpen=ke(!1);vName=ke("");vMapsTo=ke("field");vField=ke("");vStatic=ke("");vExpr=ke("");vTokenPreview=At(()=>`{{${this.tokenize(this.vName())||"NEW_VARIABLE"}}}`);vEditToken=ke(null);vEditing=At(()=>this.vEditToken()!==null);vError=ke("");paletteTokens=At(()=>new Set([...wut.map(e=>e.token),...this.allMetrics().map(e=>e.name),...this.customVars().map(e=>e.token)]));autoMetrics=At(()=>this.deriveMetrics(this.widget()));allMetrics=At(()=>{let e=new Map;for(let t of this.autoMetrics())e.set(t.name,t);for(let t of this.customMetrics())e.set(t.name,{name:t.name,dataType:t.dataType,source:"custom"});return[...e.values()]});activeChannelCount=At(()=>Object.values(this.channelOn()).filter(Boolean).length);filteredVariables=At(()=>{let e=this.allMetrics().map(n=>({token:n.name,display:"Metric"})),t=[...wut,...e,...this.customVars()],M=this.varSearch().trim().toLowerCase();return M?t.filter(n=>`{{${n.token}}}`.toLowerCase().includes(M)||n.display.toLowerCase().includes(M)):t});channelsPromise=null;constructor(){Wr(()=>{let e=this.widget();if(!this.open()||!e)return;this.name.set(`${e.title||"Widget"} alert`),this.emailSubject.set(`[Workforce Intelligence] ${e.title||"Alert"} triggered`);let t=this.deriveMetrics(e);this.customMetrics.set([]),this.metricOpen.set(!1),this.varOpen.set(!1),this.vEditToken.set(null),this.vError.set(""),this.error.set(""),this.tplLoad.set("none");let M=this.editAlert(),n=!1;if(M)this.prefillNotice.set(""),this.hydrateFromExisting(M,t);else{let{conditions:o,dropped:a}=Lut(this.filterPredicates(),new Map(t.map(N=>[N.name,N.dataType])),{hasOr:this.filterHasOr()});this.prefillNotice.set(Out(a));let s=t[0],l=s?.dataType==="text"?kE[0]:WQ[0];if(this.conditions.set(o.length?o:[{column:s?.name??"",op:l,value:""}]),o.length){let N=o.map(c=>`${c.column} ${c.op} ${c.value}`).join(", ");this.name.set(`${e.title||"Widget"} \xB7 ${N}`.slice(0,200))}n=o.length>0}let r=this.showSuggestions()&&this.authoringMode()!=="filter"&&!n&&!M;this.step.set(r?"suggest":"edit"),r?this.loadSuggestions(e,t):this.suggestions.set([]),this.loadChannels(M),M&&this.loadTemplateBodies(M)})}onDeleteVar(e){this.customVars.update(t=>t.filter(M=>M.token!==e))}inputVal(e){return e.detail?.value??""}selectVal(e){let t=e.detail?.value;return Array.isArray(t)?t[0]??"":t??""}switchVal(e){return!!e.detail?.checked}opLabel(e){return mut[e]??e}bucketByMetric=At(()=>new Map(this.allMetrics().map(e=>[e.name,e.dataType])));opsForColumn(e){return Eut(this.bucketByMetric().get(e))}addCond(){let e=this.allMetrics()[0]?.name??"";this.conditions.update(t=>[...t,{column:e,op:this.opsForColumn(e)[0]??">",value:""}])}removeCond(e){this.conditions.update(t=>t.filter((M,n)=>n!==e))}onCondColumn(e,t){if(t===Sut){this.openMetric(e);return}this.patchCond(e,"column",t)}patchCond(e,t,M){this.conditions.update(n=>n.map((r,o)=>{if(o!==e)return r;let a=U(x({},r),{[t]:M});return t==="column"&&!this.opsForColumn(M).includes(a.op)&&(a.op=this.opsForColumn(M)[0]??">"),a}))}onToggleChannel(e){let t=!this.channelOn()[e];this.channelOn.update(M=>U(x({},M),{[e]:t})),this.channelOpen.update(M=>U(x({},M),{[e]:t}))}onToggleMenu(e){this.varMenu.set(this.varMenu()===e?null:e)}onBodyInput(e){this.bodies.update(t=>U(x({},t),{[e.key]:e.value}))}onInsertToken(e){this.bodies.update(t=>U(x({},t),{[e.key]:`${t[e.key]??""}{{${e.token}}}`})),this.varMenu.set(null)}onFieldA(e){this.selectedFieldA.update(t=>U(x({},t),{[e.key]:e.value}))}onFieldB(e){this.fieldB.update(t=>U(x({},t),{[e.key]:e.value}))}openMetric(e){this.metricTargetCond=e,this.mName.set(""),this.mType.set("number"),this.mKind.set("manual"),this.mExpr.set(""),this.varOpen.set(!1),this.metricOpen.set(!0)}setMKind(e){this.mKind.set(e==="sql"?"sql":e==="formula"?"formula":"manual")}confirmMetric(){if(!this.mCanSave())return;let e=this.mName().trim(),t={name:e,dataType:this.mType(),compute:{kind:this.mKind(),value:this.mKind()==="manual"?e:this.mExpr().trim()}};this.customMetrics.update(M=>[...M.filter(n=>n.name!==e),t]),this.metricTargetCond!=null&&this.patchCond(this.metricTargetCond,"column",e),this.metricTargetCond=null,this.metricOpen.set(!1)}openVar(){this.vEditToken.set(null),this.vError.set(""),this.vName.set(""),this.vMapsTo.set("field"),this.vField.set(this.allMetrics()[0]?.name??""),this.vStatic.set(""),this.vExpr.set(""),this.metricOpen.set(!1),this.varOpen.set(!0)}onEditVar(e){this.vEditToken.set(e.token),this.vError.set(""),this.vName.set(e.display),this.vMapsTo.set("field"),this.vField.set(this.allMetrics()[0]?.name??""),this.vStatic.set(""),this.vExpr.set(""),this.metricOpen.set(!1),this.varOpen.set(!0)}closeVar(){this.varOpen.set(!1),this.vEditToken.set(null),this.vError.set("")}tokenize(e){return(e||"").trim().toUpperCase().replace(/[^A-Z0-9]+/g,"_").replace(/^_+|_+$/g,"")}confirmVar(){let e=this.vName().trim(),t=this.tokenize(e);if(!e||!t)return;let M=this.vEditToken();if(M===null)this.customVars.update(n=>[...n.filter(r=>r.token!==t),{token:t,display:e}]),this.onInsertToken({key:this.focusedBody(),token:t});else{if(t!==M&&this.paletteTokens().has(t)){this.vError.set(`${this.vTokenPreview()} is already in use \u2014 pick a different name.`);return}this.customVars.update(n=>n.map(r=>r.token===M?{token:t,display:e}:r)),t!==M&&this.renameTokenInBodies(M,t)}this.closeVar()}renameTokenInBodies(e,t){let M=new RegExp(`\\{\\{\\s*${e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*\\}\\}`,"g"),n=()=>`{{${t}}}`;this.bodies.update(r=>({email:(r.email??"").replace(M,n),teams:(r.teams??"").replace(M,n),slack:(r.slack??"").replace(M,n)}))}onDrawerHide(e){e.target===e.currentTarget&&this.close()}resetForm(){this.step.set("edit"),this.suggestions.set([]),this.suggestionsLoading.set(!1),this.suggestionsError.set(""),this.prefillNotice.set(""),this.name.set(""),this.conditions.set([{column:"",op:">",value:""}]),this.emailSubject.set(""),this.saving.set(!1),this.error.set(""),this.channelOn.set({email:!0,teams:!1,slack:!1}),this.channelOpen.set({email:!0,teams:!1,slack:!1}),this.bodies.set({email:"",teams:"",slack:""}),this.focusedBody.set("email"),this.varMenu.set(null),this.varSearch.set(""),this.selectedFieldA.set({}),this.fieldB.set({}),this.customVars.set([]),this.tplLoad.set("none"),this.metricOpen.set(!1),this.mName.set(""),this.mType.set("number"),this.mKind.set("manual"),this.mExpr.set(""),this.metricTargetCond=null,this.customMetrics.set([]),this.varOpen.set(!1),this.vName.set(""),this.vMapsTo.set("field"),this.vField.set(""),this.vStatic.set(""),this.vExpr.set(""),this.vEditToken.set(null),this.vError.set("")}close(){this.resetForm(),this.closed.emit()}missingDestinations(){let e=this.channelOn(),t=this.selectedFieldA(),M=[];return e.email&&!this.splitList(this.fieldB().email??"").length&&M.push("Email has no recipient \u2014 add at least one address in \u201CTo\u201D"),e.slack&&!(t.slack??this.webhooks().slack[0]?.name??"")&&M.push("Slack has no webhook \u2014 pick one, or connect a Slack webhook in Notification settings"),e.teams&&!(t.teams??this.webhooks().teams[0]?.name??"")&&M.push("Teams has no webhook \u2014 pick one, or connect a Teams webhook in Notification settings"),M.join(". ")}async save(){let e=this.widget();if(!e)return;if(!this.name().trim()){this.error.set("Give your alert a name.");return}let t=fut(this.conditions());if(t){this.error.set(t);return}let M=this.channelOn();if(!M.email&&!M.slack&&!M.teams){this.error.set("Turn on at least one channel.");return}let n=this.missingDestinations();if(n){this.error.set(n);return}if(this.tplLoad()==="loading"){this.error.set("Still loading this alert\u2019s saved message \u2014 try again in a moment.");return}if(this.tplLoad()==="failed"){this.error.set(Cut);return}let r=e.queryMeta??{},o=r.esQuery??r.dsl,a=o!=null&&o!=="",s=[],l={};M.email&&(s.push("email"),l.email={from:this.selectedFieldA().email??this.emailSenders()[0]??"",to:this.splitList(this.fieldB().email??""),subject:this.emailSubject(),body:this.bodyOrDefault("email")}),M.slack&&(s.push("slack"),l.slack={webhook:this.selectedFieldA().slack??this.webhooks().slack[0]?.name??"",channel:this.fieldB().slack??"",body:this.bodyOrDefault("slack")}),M.teams&&(s.push("microsoftTeams"),l.microsoftTeams={webhook:this.selectedFieldA().teams??this.webhooks().teams[0]?.name??"",title:this.fieldB().teams??"",body:this.bodyOrDefault("teams")});let N=this.source()??{},c={name:this.name().trim(),dashboardId:this.dashboardId(),widgetId:this.dashboardId()?e.id:void 0,widgetTitle:e.title,connectionId:N.connectionId??e.dataSourceId,isPipeline:N.isPipeline===!0?!0:void 0,querySql:a?void 0:r.sql,queryDsl:a?o:void 0,indexName:a?r.indexName:void 0,condition:this.conditions().filter(I=>I.column&&I.op),metrics:this.customMetrics(),variables:this.customVars(),sourceMeta:r.columns?.length?{columns:r.columns}:void 0,notifyOnChange:!0,notifyChannels:s,channelConfig:l,authoringMode:this.authoringMode()};this.saving.set(!0),this.error.set("");let D=this.editAlert()?.id;try{let I=`${this.workforceScope}/alerts`,d=await oi(D?this.http.put(`${I}/${D}`,c):this.http.post(I,c));this.saved.emit(d?.data),this.close()}catch(I){this.error.set(I?.error?.error??(D?"Could not save the alert.":"Could not create the alert."))}finally{this.saving.set(!1)}}bodyOrDefault(e){return(this.bodies()[e]??"").trim()||L8t[e]}deriveMetrics(e){if(!e)return[];let t=(e.queryMeta??{}).columns;if(Array.isArray(t)&&t.length){let r=new Map;for(let o of t){let a=o?.column?.trim();a&&r.set(a,{name:a,dataType:this.mapType(o?.dataType),source:"chart"})}return[...r.values()]}let M=e.config?.chart??{},n=new Map;return(M.series??[]).forEach(r=>r?.name&&n.set(r.name,{name:r.name,dataType:"number",source:"chart"})),(M.data??[]).forEach(r=>r?.name&&n.set(r.name,{name:r.name,dataType:"number",source:"chart"})),(M.categories??[]).forEach(r=>r&&n.set(r,{name:r,dataType:"text",source:"chart"})),e.title&&n.set(e.title,{name:e.title,dataType:"text",source:"chart"}),[...n.values()].slice(0,12)}mapType(e){return LA(e)?"number":"text"}splitList(e){return(e||"").split(/[,;]/).map(t=>t.trim()).filter(Boolean)}loadChannels(e){return this.channelsPromise||(this.channelsLoading.set(!0),this.channelsPromise=Promise.all([this.fetchWebhooks(),this.fetchSenders()]).then(([t,M])=>{this.webhooks.set(t),this.emailSenders.set(M)}).finally(()=>this.channelsLoading.set(!1))),e?this.channelsPromise.then(()=>this.applyChannelPicks(e)):this.channelsPromise}hydrateFromExisting(e,t){e.name&&this.name.set(e.name);let M=(e.condition??[]).filter(N=>N?.column&&N?.op);M.length&&this.conditions.set(M.map(N=>x({},N)));let n=e.metrics??[],r=new Set([...n.map(N=>N?.name).filter(Boolean),...t.map(N=>N.name)]),o=M.filter(N=>!r.has(N.column)).map(N=>({name:N.column,dataType:kE.includes(N.op)?"text":"number"}));this.customMetrics.set([...n,...o]),this.customVars.set(e.variables??[]);let a=e.channelConfig??{},s=e.notifyChannels??[],l={email:s.includes("email"),slack:s.includes("slack"),teams:s.includes("microsoftTeams")};this.channelOn.set(l),this.channelOpen.set(x({},l)),this.bodies.set({email:Ks(a.email?.body),slack:Ks(a.slack?.body),teams:Ks(a.microsoftTeams?.body)}),this.fieldB.set({email:Array.isArray(a.email?.to)?a.email.to.join(", "):Ks(a.email?.to),slack:Ks(a.slack?.channel),teams:Ks(a.microsoftTeams?.title)}),a.email?.subject&&this.emailSubject.set(Ks(a.email.subject))}async loadTemplateBodies(e){let t=e.notificationTemplateId;if(!t)return;this.tplLoad.set("loading");let M=await this.fetchTemplate(t);if(this.editAlert()?.id!==e.id)return;if(!M){this.tplLoad.set("failed"),this.error.set(Cut);return}let n=s=>{let l=M[s];return l&&typeof l=="object"?l:{}},r=(s,l)=>Ks(n(s).body)||Ks(M[l]);this.bodies.update(s=>({email:s.email||r("email","emailBody"),teams:s.teams||r("microsoftTeams","teamsBody"),slack:s.slack||r("slack","slackBody")}));let o=Ks((e.channelConfig??{}).email?.subject),a=Ks(n("email").subject)||Ks(M.subject);!o&&a&&this.emailSubject.set(a),this.tplLoad.set("ready")}async fetchTemplate(e){try{return(await oi(this.http.get(`${this.workforceScope}/notifications/templates/${encodeURIComponent(e)}`)))?.data??null}catch{return null}}applyChannelPicks(e){let t=e.channelConfig??{};this.selectedFieldA.set({email:Ks(t.email?.from),slack:Ks(t.slack?.webhook),teams:Ks(t.microsoftTeams?.webhook)})}get workforceScope(){let e=this.tokenStore.tenantId()??"";return`${this.baseUrl}/api/customers/${e}/products/${Oi()}/workforce`}async fetchWebhooks(){try{let t=(await oi(this.http.get(`${this.workforceScope}/notifications/channels`)))?.data??{},M=n=>{let r=[],o=1;for(let a of Object.values(t[n]??{}))for(let s of a?.values?.webhookUrls??[])r.push({id:o++,name:String(s?.key??""),url:String(s?.webhookUrl??"")});return r};return{teams:M("microsoftTeams"),slack:M("slack")}}catch{return{teams:[],slack:[]}}}async fetchSenders(){try{return((await oi(this.http.get(`${this.workforceScope}/notifications/identities/verification?isVerified=true&includeDefault=true`)))?.data?.records??[]).map(t=>String(t.identity??t.email??t.domain??"")).filter(Boolean)}catch{return[]}}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=rM({type:i,selectors:[["app-alert-drawer"]],inputs:{open:[1,"open"],widget:[1,"widget"],dashboardId:[1,"dashboardId"],source:[1,"source"],filterPredicates:[1,"filterPredicates"],filterHasOr:[1,"filterHasOr"],authoringMode:[1,"authoringMode"],showSuggestions:[1,"showSuggestions"],sourceName:[1,"sourceName"],editAlert:[1,"editAlert"]},outputs:{closed:"closed",saved:"saved"},decls:2,vars:2,consts:[["placement","end",3,"nile-hide","open"],["slot","label",1,"ad-head"],["type","button","aria-label","Back to suggestions",1,"ad-head__back"],[1,"ad-head__text"],[1,"ad-head__title"],[1,"ad-head__sub"],["type","button","aria-label","Back to suggestions",1,"ad-head__back",3,"click"],["name","ng-chevron-left","method","stroke","size","18"],[1,"ad","ad-sug"],[1,"ad-sug__or"],["type","button",1,"ad-sug__card","ad-sug__card--new",3,"click"],[1,"ad-sug__tile","ad-sug__tile--new"],["name","ng-plus","color","#ffff","method","stroke","size","18"],[1,"ad-sug__body"],[1,"ad-sug__t"],[1,"ad-sug__d"],["color","#ffff","name","ng-chevron-right","method","stroke","size","18",1,"ad-sug__go"],["slot","footer",1,"ad__foot"],["variant","secondary",3,"click"],["aria-hidden","true",1,"ad-sug__card","ad-sug__card--skel"],["variant","rounded","width","34","height","34","border-radius","8px"],["variant","text","width","45%","height","13"],["variant","text","width","70%","height","12"],["type","button",1,"ad-sug__card"],[1,"ad__muted","ad-sug__errline"],["type","button",1,"ad-sug__card",3,"click"],[1,"ad-sug__tile"],["name","ng-bell-01","method","stroke","size","18"],[1,"ad-sug__cond"],[1,"ad-sug__pill"],[1,"ad-sug__pill","ad-sug__pill--op"],[1,"ad"],[1,"ad__grid"],[1,"ad__col"],[1,"ad__box"],[1,"ad__box-h"],["name","ng-bar-chart-square-02","method","stroke","size","15"],[1,"ad__chips"],[1,"ad__chip",3,"ad__chip--text","ad__chip--mnl"],[1,"ad__muted"],["type","button",1,"ad__chip","ad__chip-add",3,"click"],["name","ng-plus","method","stroke","size","13"],[1,"vc"],[1,"ad__label"],[1,"ad__req"],["placeholder","e.g. Overtime spike",3,"nile-input","value"],[1,"ad__sec-t"],[1,"ad__lead"],[1,"ad__notice"],[1,"ad__cond"],["variant","tertiary","size","sm",3,"click"],["slot","prefix","name","ng-plus","method","stroke","size","14"],[1,"ad__only-note"],["name","ng-info-circle","method","stroke","size","14"],[1,"ad__hint"],["name","ng-braces","method","stroke","size","14"],[3,"toggleChannel","toggleMenu","bodyInput","bodyFocus","insertToken","varSearchChange","fieldAChange","fieldBChange","deleteVariable","editVariable","openAddVar","showHeader","showRail","dense","loading","channelOn","channelOpen","bodies","focusedBody","varMenu","variables","varSearch","webhooks","emailSenders","deletableTokens","selectedFieldA","fieldBValues"],[1,"ad__err"],["variant","primary",3,"click","loading"],[1,"ad__chip"],[1,"ad__mtag"],[1,"vc-h"],[1,"vc-ic"],["name","ng-bar-chart-square-02","method","stroke","size","16"],[1,"vc-ht"],[1,"vc-s"],["type","button",1,"vc-x",3,"click"],[1,"vc-b"],["placeholder","e.g. Net amount",3,"nile-input","value"],[1,"seg"],["type","button",3,"click"],[3,"nile-change","value"],["value","manual"],["value","sql"],["value","formula"],[1,"ad__mt"],[1,"tok-prev"],[1,"vc-f"],["variant","secondary","size","sm",3,"click"],["variant","primary","size","sm",3,"click"],[3,"nile-input","value","placeholder"],["name","ng-alert-triangle","method","stroke","size","14"],[1,"ad__col-sel",3,"nile-change","value"],[3,"value"],[1,"ad__op",3,"nile-change","value"],["placeholder","value",1,"ad__val",3,"nile-input","value"],["placeholder","and",1,"ad__val",3,"value"],["variant","tertiary","size","sm","title","Remove",3,"click"],["name","ng-x-close","method","stroke","size","14"],["placeholder","and",1,"ad__val",3,"nile-input","value"],[1,"vc-ic","vc-ic--blue"],["name","ng-braces","method","stroke","size","16"],["placeholder","e.g. Region owner",3,"nile-input","value"],["placeholder","e.g. North America",3,"nile-input","value"]],template:function(t,M){if(t&1&&($(0,"nile-drawer",0),Ze("nile-hide",function(r){return M.onDrawerHide(r)}),he(1,p8t,9,4),te()),t&2){let n;ot("open",M.open()),L(),xe((n=M.open()&&M.widget())?1:-1,n)}},dependencies:[CE],styles:['@charset "UTF-8";[_nghost-%COMP%]{display:contents}nile-drawer[_ngcontent-%COMP%]{--size: calc(100vw - var(--sidebar-width, 250px))}nile-drawer[_ngcontent-%COMP%]::part(header){border-bottom:1px solid var(--ng-colors-border-secondary)}.ad[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px;padding:4px 2px}.ad__grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}.ad__col[_ngcontent-%COMP%]{display:flex;flex-direction:column;min-width:0}.ad-head[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;min-width:0}.ad-head__back[_ngcontent-%COMP%]{flex-shrink:0;width:34px;height:34px;border-radius:var(--ng-radius-md);border:1px solid var(--ng-colors-border-primary);background:var(--ng-colors-bg-primary);color:var(--ng-colors-text-secondary-700);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.ad-head__back[_ngcontent-%COMP%]:hover{background:var(--ng-colors-bg-secondary)}.ad-head__text[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1px;min-width:0}.ad-head__title[_ngcontent-%COMP%], .ad-sug__t[_ngcontent-%COMP%]{font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-primary-900)}.ad-head__title[_ngcontent-%COMP%]{font-size:16px}.ad-head__sub[_ngcontent-%COMP%]{font-size:13px;font-weight:var(--ng-font-weight-regular);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ad-sug__card[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:1px solid var(--ng-colors-border-secondary);border-radius:12px;background:var(--ng-colors-bg-primary);padding:12px 14px;margin-bottom:10px;font:inherit;cursor:pointer}.ad-sug__card[_ngcontent-%COMP%]:hover{border-color:var(--ng-colors-border-brand);box-shadow:0 6px 24px #2970ff1a}.ad-sug__card--skel[_ngcontent-%COMP%]{pointer-events:none}.ad-sug__card--new[_ngcontent-%COMP%]{border-style:dashed;background:var(--ng-colors-bg-brand-primary)}.ad-sug__tile[_ngcontent-%COMP%]{flex-shrink:0;width:34px;height:34px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;background:var(--ng-colors-bg-secondary);color:var(--ng-color-bluedark-600)}.ad-sug__tile--new[_ngcontent-%COMP%]{background:var(--ng-color-bluedark-600);color:var(--ng-colors-text-white)}.ad-sug__body[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.ad-sug__t[_ngcontent-%COMP%]{font-size:13px}.ad-head__sub[_ngcontent-%COMP%], .ad-sug__d[_ngcontent-%COMP%], .ad-sug__go[_ngcontent-%COMP%]{color:var(--ng-colors-text-tertiary-600)}.ad-sug__d[_ngcontent-%COMP%]{font-size:12px;line-height:1.4}.ad-sug__cond[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end;flex-shrink:0}.ad-sug__pill[_ngcontent-%COMP%]{font-family:var(--ng-font-family-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:12px;padding:3px 8px;border-radius:6px;background:var(--ng-colors-bg-secondary);color:var(--ng-colors-text-secondary-700)}.ad-sug__go[_ngcontent-%COMP%]{flex-shrink:0}.ad-sug__or[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;margin:6px 0 14px;font-size:11px;font-weight:var(--ng-font-weight-bold);letter-spacing:.6px;color:var(--ng-colors-text-quaternary-500)}.ad-sug__or[_ngcontent-%COMP%]:before, .ad-sug__or[_ngcontent-%COMP%]:after{content:"";flex:1;height:1px;background:var(--ng-colors-border-secondary)}.ad__box[_ngcontent-%COMP%]{background:var(--ng-colors-bg-secondary);border:1px solid var(--ng-colors-border-secondary);border-radius:var(--ng-radius-lg);padding:12px 14px;margin-bottom:6px}.ad__box-h[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-secondary-700)}.ad__box-h[_ngcontent-%COMP%] nile-glyph[_ngcontent-%COMP%]{color:var(--ng-color-bluedark-600)}.ad__chips[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:7px;margin-top:9px;align-items:center}.ad__chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;font-size:12px;background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-primary);border-radius:20px;padding:4px 11px;color:var(--ng-colors-text-secondary-700)}.ad__chip[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{width:7px;height:7px;border-radius:50%;background:var(--ng-color-bluedark-600);flex:none}.ad__chip--text[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{background:var(--ng-color-fuchsia-600)}.ad__chip--mnl[_ngcontent-%COMP%]{border-color:var(--ng-componentcolors-utility-success-200);background:var(--ng-componentcolors-utility-success-50)}.ad__chip--mnl[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{background:var(--ng-componentcolors-utility-success-700)}.ad__mtag[_ngcontent-%COMP%]{font-size:9px;font-weight:var(--ng-font-weight-bold);letter-spacing:.3px;text-transform:uppercase;color:var(--ng-componentcolors-utility-success-700);background:var(--ng-componentcolors-utility-success-50);border-radius:5px;padding:1px 5px;margin-left:3px}.ad__chip-add[_ngcontent-%COMP%]{cursor:pointer;border-style:dashed;border-color:var(--ng-colors-border-primary);color:var(--ng-color-bluedark-600);font-weight:var(--ng-font-weight-semibold)}.ad__chip-add[_ngcontent-%COMP%]:hover{background:var(--ng-colors-bg-brand-primary)}.ad__label[_ngcontent-%COMP%]{display:block;font-size:12.5px;font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-secondary-700);margin:10px 0 4px}.ad__req[_ngcontent-%COMP%]{color:var(--ng-color-error-600)}.ad__sec-t[_ngcontent-%COMP%]{font-size:11px;font-weight:var(--ng-font-weight-bold);letter-spacing:.6px;text-transform:uppercase;color:var(--ng-colors-text-quaternary-500);margin:16px 0 8px}.ad__lead[_ngcontent-%COMP%]{font-size:13px;color:var(--ng-colors-text-secondary-700);margin:0 0 8px}.ad__notice[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:6px;margin:0 0 10px;padding:8px 10px;border-radius:var(--ng-radius-md);background:var(--ng-colors-bg-warning-primary);color:var(--ng-colors-text-warning-primary-600);font-size:12px;line-height:1.4}.ad__notice[_ngcontent-%COMP%] nile-glyph[_ngcontent-%COMP%]{flex-shrink:0;margin-top:1px}.ad__only-note[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ng-colors-text-quaternary-500);margin:-4px 0 10px}.ad__hint[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:7px;font-size:11.5px;color:var(--ng-colors-text-quaternary-500);line-height:1.5;margin:0 0 12px}.ad__hint[_ngcontent-%COMP%] nile-glyph[_ngcontent-%COMP%]{color:var(--ng-color-bluedark-600);flex:0 0 14px;margin-top:1px}.ad__hint[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{background:var(--ng-colors-bg-brand-primary);color:var(--ng-color-bluedark-600);border-radius:5px;padding:0 5px;font-family:ui-monospace,Menlo,monospace;font-size:11px}.ad__cond[_ngcontent-%COMP%]{display:grid;grid-template-columns:1.2fr 1.3fr 1fr auto;gap:6px;align-items:center;margin-bottom:6px}.ad__muted[_ngcontent-%COMP%]{font-size:12px;color:var(--ng-colors-text-quaternary-500)}.ad__err[_ngcontent-%COMP%]{color:var(--ng-color-error-600);font-size:12.5px}.ad__foot[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px}.ad__foot[_ngcontent-%COMP%] .ad__muted[_ngcontent-%COMP%]{margin-right:auto}app-template-editor[_ngcontent-%COMP%]{display:block}.vc[_ngcontent-%COMP%]{background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-primary);border-radius:var(--ng-radius-lg);box-shadow:var(--ng-shadow-lg);margin:4px 0 12px;overflow:hidden;animation:_ngcontent-%COMP%_vcIn .16s ease}.vc-h[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--ng-colors-border-tertiary)}.vc-ic[_ngcontent-%COMP%]{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:var(--ng-componentcolors-utility-success-50);color:var(--ng-componentcolors-utility-success-700);flex:none}.vc-ic--blue[_ngcontent-%COMP%]{background:var(--ng-colors-bg-brand-primary);color:var(--ng-color-bluedark-600)}.vc-ht[_ngcontent-%COMP%]{flex:1;min-width:0}.vc-ht[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:13.5px;font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-primary-900)}.vc-s[_ngcontent-%COMP%]{font-size:11.5px;color:var(--ng-colors-text-quaternary-500)}.vc-x[_ngcontent-%COMP%]{border:none;background:none;cursor:pointer;color:var(--ng-colors-text-quaternary-500);font-size:14px}.vc-b[_ngcontent-%COMP%]{padding:12px 14px}.vc-f[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid var(--ng-colors-border-tertiary)}.ad__mt[_ngcontent-%COMP%]{margin-top:8px}.seg[_ngcontent-%COMP%]{display:inline-flex;border:1px solid var(--ng-colors-border-primary);border-radius:8px;overflow:hidden}.seg[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{border:none;background:var(--ng-colors-bg-primary);padding:6px 12px;font-size:12.5px;cursor:pointer;color:var(--ng-colors-text-secondary-700)}.seg[_ngcontent-%COMP%] button[_ngcontent-%COMP%] + button[_ngcontent-%COMP%]{border-left:1px solid var(--ng-colors-border-primary)}.seg[_ngcontent-%COMP%] button.on[_ngcontent-%COMP%]{background:var(--ng-colors-bg-brand-primary);color:var(--ng-color-bluedark-600);font-weight:var(--ng-font-weight-semibold)}.tok-prev[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ng-colors-text-quaternary-500);margin-top:12px}.tok-prev[_ngcontent-%COMP%] code[_ngcontent-%COMP%], .ad-sug__pill--op[_ngcontent-%COMP%]{font-family:var(--ng-font-family-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:11px;background:var(--ng-colors-bg-brand-primary);color:var(--ng-color-bluedark-600);border-radius:6px;padding:2px 8px}@media(max-width:960px){.ad__cond[_ngcontent-%COMP%]{grid-template-columns:1fr 1fr}}@media(max-width:640px){nile-drawer[_ngcontent-%COMP%]{--size: 100vw}}@keyframes _ngcontent-%COMP%_vcIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.ad-sug__errline[_ngcontent-%COMP%]{margin:0 0 12px}']})};function O8t(i){return i?.id?{connectionId:i.id,isPipeline:i.kind==="pipeline"}:null}var m8t=(i,e)=>e.id;function E8t(i,e){i&1&&(C(0,"div",12),Zt(1,"nile-skeleton-loader",13),C(2,"span",7),Zt(3,"nile-skeleton-loader",14)(4,"nile-skeleton-loader",15),b()())}function f8t(i,e){if(i&1&&ht(0,E8t,5,0,"div",12,nr),i&2){let t=p();xt(t.skeletons)}}function S8t(i,e){if(i&1){let t=Le();C(0,"button",18),Ae("click",function(){let n=P(t).$implicit,r=p(2);return R(r.choose(n.id))}),C(1,"span",5),Zt(2,"nile-glyph",19),b(),C(3,"span",7)(4,"nile-heading",8),Y(5),b(),C(6,"nile-heading",9),Y(7),b()()()}if(i&2){let t=e.$implicit,M=p(2);It("disabled",M.committing()?"":null),L(5),Mt(t.title),L(2),Jo(" ",t.status==="published"?"Published":"Draft"," \xB7 ",t.sceneCount," scenes ")}}function w8t(i,e){i&1&&Zt(0,"nile-empty-state",17)}function C8t(i,e){if(i&1&&(ht(0,S8t,8,4,"button",16,m8t),he(2,w8t,1,0,"nile-empty-state",17)),i&2){let t=p();xt(t.stories()),L(2),xe(t.stories().length?-1:2)}}var iJ=class i{fetcher=Be(i0,{optional:!0});router=Be(Yl,{optional:!0});open=at(!1);widget=at(null);closed=Xi();added=Xi();stories=ke([]);loading=ke(!1);committing=ke(null);skeletons=Array.from({length:3});widgetTitle=At(()=>this.widget()?.title??"this widget");constructor(){Wr(()=>{this.open()&&this.load()})}async load(){if(this.fetcher){this.loading.set(!0);try{this.stories.set(await this.fetcher.listStories())}catch{this.stories.set([])}finally{this.loading.set(!1)}}}async choose(e){let t=this.widget();if(!(!this.fetcher||!t||this.committing())){this.committing.set(e??"new");try{let M=await this.fetcher.addWidgetToStory(e,t);this.added.emit(M),bA({variant:"success",content:e?`Added to \u201C${M.title}\u201D \u2014 the scene keeps this chart live and drafts its narrative.`:`Story \u201C${M.title}\u201D created from this widget.`}),this.closed.emit(),await this.router?.navigate(["/stories",M.id],{queryParams:{mode:"edit"}})}catch{}finally{this.committing.set(null)}}}onDrawerHide(){this.closed.emit()}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=rM({type:i,selectors:[["app-story-picker-drawer"]],inputs:{open:[1,"open"],widget:[1,"widget"]},outputs:{closed:"closed",added:"added"},decls:19,vars:4,consts:[["placement","end",3,"nile-hide","open"],["slot","label",1,"sp-head"],[1,"sp-head__title"],[1,"sp-head__sub"],["type","button",1,"sp-row","sp-row--new",3,"click"],[1,"sp-row__ic"],["name","ng-plus","method","stroke","size","16"],[1,"sp-row__body"],[1,"sp-row__name"],[1,"sp-row__desc"],["slot","footer",1,"sp-foot"],["variant","tertiary","size","small",3,"click"],["aria-hidden","true",1,"sp-row","sp-row--skel"],["variant","rounded","width","32","height","32"],["variant","text","width","220","height","13"],["variant","text","width","140","height","11"],["type","button",1,"sp-row"],["variant","tonal","icon","book-closed","text","No stories yet","sub-text","Create one from this widget and it becomes the first scene."],["type","button",1,"sp-row",3,"click"],["name","ng-book-open-text","method","stroke","size","16"]],template:function(t,M){t&1&&(C(0,"nile-drawer",0),Ae("nile-hide",function(){return M.onDrawerHide()}),C(1,"div",1)(2,"nile-heading",2),Y(3,"Add to Story"),b(),C(4,"nile-heading",3),Y(5),b()(),C(6,"button",4),Ae("click",function(){return M.choose(null)}),C(7,"span",5),Zt(8,"nile-glyph",6),b(),C(9,"span",7)(10,"nile-heading",8),Y(11,"New story"),b(),C(12,"nile-heading",9),Y(13,"Starts a draft with this chart as scene 01"),b()()(),he(14,f8t,2,0)(15,C8t,3,1),C(16,"div",10)(17,"nile-button",11),Ae("click",function(){return M.onDrawerHide()}),Y(18,"Cancel"),b()()()),t&2&&(Ue("open",M.open()),L(5),ui(" The scene captures \u201C",M.widgetTitle(),"\u201D, its query definition and source metadata \u2014 then auto-drafts its narrative. "),L(),It("disabled",M.committing()?"":null),L(8),xe(M.loading()?14:15))},styles:["nile-heading[_ngcontent-%COMP%]{display:block;margin:0;padding:0;border:0;font-size:inherit;font-weight:var(--ng-font-weight-regular)}nile-drawer[_ngcontent-%COMP%]::part(header){border-bottom:1px solid var(--ng-colors-border-secondary)}.sp-head[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:3px;min-width:0}.sp-head__title[_ngcontent-%COMP%]{font-size:var(--ng-font-size-text-lg);font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-primary-900)}.sp-head__sub[_ngcontent-%COMP%]{font-size:var(--ng-font-size-text-sm);line-height:1.45;color:var(--ng-colors-text-tertiary-600)}.sp-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;width:100%;margin-bottom:8px;padding:12px 14px;text-align:left;cursor:pointer;font-family:inherit;background:var(--ng-colors-bg-primary);border:1px solid var(--ng-colors-border-secondary);border-radius:var(--ng-radius-lg);transition:border-color .15s,background .15s}.sp-row[_ngcontent-%COMP%]:hover{border-color:var(--ng-colors-border-brand);background:var(--ng-colors-bg-secondary)}.sp-row[disabled][_ngcontent-%COMP%]{opacity:.5;pointer-events:none}.sp-row--new[_ngcontent-%COMP%]{border-style:dashed}.sp-row--skel[_ngcontent-%COMP%]{cursor:default}.sp-row__ic[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;border-radius:var(--ng-radius-md);background:var(--ng-colors-bg-brand-primary);color:var(--ng-colors-fg-brand-primary-600)}.sp-row__body[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;min-width:0}.sp-row__name[_ngcontent-%COMP%]{font-size:var(--ng-font-size-text-sm);font-weight:var(--ng-font-weight-semibold);color:var(--ng-colors-text-primary-900)}.sp-row__desc[_ngcontent-%COMP%]{font-size:var(--ng-font-size-text-xs);color:var(--ng-colors-text-tertiary-600)}.sp-foot[_ngcontent-%COMP%]{display:flex;justify-content:flex-end}"]})};var k8t=25;function b8t(i){let e=Be(yo),t=()=>`${i()}/stories`;return{listStories:async()=>{let M=new URLSearchParams({status:"draft",limit:String(k8t),offset:"0"});return((await e.get(`${t()}?${M}`).toPromise())?.data??[]).map(r=>({id:r.id,title:r.title||"Untitled story",status:r.status,sceneCount:r.sceneCount}))},createStory:async M=>{let r=(await e.post(t(),{title:M}).toPromise())?.data;return{id:r?.id??"",title:r?.title||M||"Untitled story",status:"draft",sceneCount:0}},addWidgetToStory:async(M,n)=>{let r=M,o="";if(!r){let a=await e.post(t(),{title:n.title?`${n.title}`:""}).toPromise();r=a?.data?.id??"",o=a?.data?.title??""}return await e.post(`${t()}/${r}/scenes`,{kind:"chart",widget:n,source:{kind:"dashboard",label:n.title??"Widget"}}).toPromise(),{id:r,title:o||n.title||"Untitled story",status:"draft",sceneCount:1}}}}var PQ=[{id:"assurance",label:"Assurance"},{id:"journey",label:"Journey"},{id:"cohort",label:"Cohort"},{id:"business",label:"Business"},{id:"validation",label:"Validation"},{id:"operational",label:"Operational"},{id:"compliance",label:"Compliance"},{id:"agent",label:"Agent"},{id:"forensic",label:"Forensic"}],Q8t=new Map(PQ.map(i=>[i.id,i.label]));function U8t(i){if(i)return Q8t.get(i)}var kut=(i,e)=>e.id;function v8t(i,e){if(i&1){let t=Le();C(0,"nile-menu-item",2),Ae("click",function(){let n=P(t).$implicit,r=p(2);return R(r.select(n.id))}),Y(1),b()}if(i&2){let t=e.$implicit,M=p(2);Ue("active",M.selected()===t.id),L(),ui(" ",t.label," ")}}function Y8t(i,e){if(i&1){let t=Le();C(0,"nile-menu",0)(1,"nile-menu-item",2),Ae("click",function(){P(t);let n=p();return R(n.select(null))}),Y(2," All "),b(),ht(3,v8t,2,2,"nile-menu-item",3,kut),b()}if(i&2){let t=p();L(),Ue("active",t.selected()===null),L(2),xt(t.categories())}}function Z8t(i,e){if(i&1){let t=Le();C(0,"button",4),Ae("click",function(){let n=P(t).$implicit,r=p(2);return R(r.select(n.id))}),Y(1),b()}if(i&2){let t=e.$implicit,M=p(2);Wt("cat-pill--active",M.selected()===t.id),L(),ui(" ",t.label," ")}}function _8t(i,e){if(i&1){let t=Le();C(0,"div",1)(1,"button",4),Ae("click",function(){P(t);let n=p();return R(n.select(null))}),Y(2," All "),b(),ht(3,Z8t,2,3,"button",5,kut),b()}if(i&2){let t=p();L(),Wt("cat-pill--active",t.selected()===null),L(2),xt(t.categories())}}var MJ=class i{categories=at(PQ);variant=at("pills");selected=at(null);selectionChange=Xi();select(e){e!==this.selected()&&this.selectionChange.emit(e)}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=rM({type:i,selectors:[["shared-category-filter-row"]],inputs:{categories:[1,"categories"],variant:[1,"variant"],selected:[1,"selected"]},outputs:{selectionChange:"selectionChange"},decls:2,vars:1,consts:[["aria-label","Dashboard category",1,"cat-menu"],["role","group","aria-label","Dashboard category",1,"cat-pills"],[3,"click","active"],[3,"active"],["type","button",1,"cat-pill",3,"click"],["type","button",1,"cat-pill",3,"cat-pill--active"]],template:function(t,M){t&1&&he(0,Y8t,5,1,"nile-menu",0)(1,_8t,5,2,"div",1),t&2&&xe(M.variant()==="menu"?0:1)},styles:[".cat-menu[_ngcontent-%COMP%]{display:block;min-width:170px}.cat-pills[_ngcontent-%COMP%]{display:flex;align-items:center;gap:2px;padding:3px;flex-wrap:wrap;background:var(--ng-colors-bg-secondary);border:1px solid var(--ng-colors-border-secondary);border-radius:var(--ng-radius-lg)}.cat-pill[_ngcontent-%COMP%]{display:flex;align-items:center;padding:5px 10px;font-family:inherit;font-size:var(--ng-font-size-text-sm);font-weight:var(--ng-font-weight-medium);color:var(--ng-colors-text-tertiary-600);background:transparent;border:none;border-radius:var(--ng-radius-md);cursor:pointer;transition:background .15s,color .15s;white-space:nowrap}.cat-pill[_ngcontent-%COMP%]:hover{background:var(--ng-colors-bg-primary)}.cat-pill--active[_ngcontent-%COMP%]{color:var(--ng-colors-fg-brand-primary-600);background:var(--ng-colors-bg-primary);font-weight:var(--ng-font-weight-semibold)}"]})};export{l2t as a,N2t as b,GR as c,ODt as d,mDt as e,K5 as f,eU as g,CDt as h,Go as i,ic as j,LD as k,qM as l,yo as m,nDt as n,rDt as o,tIt as p,cIt as q,j as r,r2t as s,c2t as t,D2t as u,mnt as v,XR as w,Ent as x,FR as y,dt as z,I2t as A,fI as B,Yl as C,Lrt as D,H3t as E,Vir as F,Zl as G,AQt as H,J5t as I,jB as J,vr as K,lUt as L,xA as M,Oi as N,DUt as O,IUt as P,dUt as Q,q2 as R,sUt as S,EA as T,Am as U,K2 as V,xUt as W,v3 as X,ZZt as Y,vPt as Z,YPt as _,TF as $,Ug as aa,zF as ba,hF as ca,ME as da,J3 as ea,n0 as fa,kst as ga,nE as ha,SA as ia,FZt as ja,M0 as ka,Gc as la,fA as ma,Gst as na,c9t as oa,G3 as pa,bst as qa,Qst as ra,Jc as sa,Y3 as ta,Xm as ua,Z3 as va,_3 as wa,OA as xa,mA as ya,Yst as za,Ust as Aa,ult as Ba,bA as Ca,pJt as Da,xF as Ea,mJt as Fa,xB as Ga,wat as Ha,_Q as Ia,RH as Ja,VH as Ka,$h as La,s3 as Ma,mm as Na,SB as Oa,g3 as Pa,Xat as Qa,Kat as Ra,wj as Sa,L3 as Ta,ZI as Ua,Fm as Va,Wst as Wa,Pst as Xa,a_t as Ya,CA as Za,Rl as _a,nlt as $a,kA as ab,rlt as bb,iE as cb,H3 as db,i3 as eb,e3 as fb,r0 as gb,rE as hb,o0 as ib,s0 as jb,l0 as kb,QQ as lb,UQ as mb,vQ as nb,YQ as ob,Dut as pb,ZQ as qb,BH as rb,yGt as sb,XH as tb,eJ as ub,O8t as vb,iJ as wb,b8t as xb,PQ as yb,U8t as zb,MJ as Ab};
40585
40585
  /*! Bundled license information:
40586
40586
 
40587
40587
  @angular/common/fesm2022/_xhr-chunk.mjs:
package/main.js CHANGED
@@ -1 +1 @@
1
- import{a as i,b as n}from"./chunk-A3NN6QQS.js";import{a as D,b as t}from"./chunk-FTVHJX3S.js";import{a as d,b as f,c as p}from"./chunk-DMH5RH4D.js";import{y as s}from"./chunk-4OVUIGVK.js";import"./chunk-ZRJYRUTX.js";import"./chunk-T4WJW6GR.js";import"./chunk-JP5QY5S6.js";import"./chunk-XUJBDACP.js";import"./chunk-BTA57TVR.js";import"./chunk-FK6H3RFT.js";import"./chunk-SYVY7IJY.js";import"./chunk-DPY4ZJSO.js";import"./chunk-T3NXAI3H.js";import"./chunk-JWVGGQEQ.js";import"./chunk-R3C2A3GE.js";import"./chunk-RRYXNANE.js";import"./chunk-SVXYWKUB.js";import"./chunk-QXVITQOV.js";import"./chunk-I4TM4AGJ.js";import"./chunk-F6YL5NFN.js";import"./chunk-ATUZQYGW.js";import"./chunk-XCT4UKLK.js";import"./chunk-4XZ7RFFX.js";import"./chunk-YHTLTPEH.js";import"./chunk-LFSX3TZJ.js";import"./chunk-BTDKTIE6.js";import"./chunk-5CTM6JVQ.js";import"./chunk-W2HKCDVZ.js";import"./chunk-MPGDQZRI.js";import"./chunk-HOS2FAXH.js";import"./chunk-INJSG5RK.js";import"./chunk-RCWO45CI.js";import"./chunk-ZW5NV4UO.js";var A="0.0.43",a=A;function g(){typeof window>"u"||(window.dataViz={packageName:"@aquera/data-visualizer-sdk",version:a,getVersion:()=>a})}g();async function z(){let[{defineDvzAsk:e},{defineDvzDashboards:o},{defineDvzManageDashboards:r}]=await Promise.all([import("./chunk-XDQXXOEQ.js"),import("./chunk-5RZZ37HL.js"),import("./chunk-U42X6UJU.js")]);await Promise.all([e(),o(),r()])}export{a as DATA_VISUALIZER_SDK_VERSION,i as DVZ_ASK_TAG,D as DVZ_DASHBOARDS_TAG,d as DVZ_MANAGE_DASHBOARDS_DEFAULT_PAGE_SIZE,f as DVZ_MANAGE_DASHBOARDS_TAG,z as defineDvzAll,n as defineDvzAsk,t as defineDvzDashboards,p as defineDvzManageDashboards,s as setDvzEnv};
1
+ import{a as i,b as n}from"./chunk-RFZOWARM.js";import{a as D,b as t}from"./chunk-BPV32KT7.js";import{a as d,b as f,c as p}from"./chunk-YLQJEXAU.js";import{y as s}from"./chunk-ZFW6PP7T.js";import"./chunk-ZRJYRUTX.js";import"./chunk-T4WJW6GR.js";import"./chunk-JP5QY5S6.js";import"./chunk-XUJBDACP.js";import"./chunk-BTA57TVR.js";import"./chunk-FK6H3RFT.js";import"./chunk-SYVY7IJY.js";import"./chunk-DPY4ZJSO.js";import"./chunk-T3NXAI3H.js";import"./chunk-JWVGGQEQ.js";import"./chunk-R3C2A3GE.js";import"./chunk-RRYXNANE.js";import"./chunk-SVXYWKUB.js";import"./chunk-QXVITQOV.js";import"./chunk-I4TM4AGJ.js";import"./chunk-F6YL5NFN.js";import"./chunk-ATUZQYGW.js";import"./chunk-XCT4UKLK.js";import"./chunk-4XZ7RFFX.js";import"./chunk-YHTLTPEH.js";import"./chunk-LFSX3TZJ.js";import"./chunk-BTDKTIE6.js";import"./chunk-5CTM6JVQ.js";import"./chunk-W2HKCDVZ.js";import"./chunk-MPGDQZRI.js";import"./chunk-HOS2FAXH.js";import"./chunk-INJSG5RK.js";import"./chunk-RCWO45CI.js";import"./chunk-ZW5NV4UO.js";var A="0.0.44",a=A;function g(){typeof window>"u"||(window.dataViz={packageName:"@aquera/data-visualizer-sdk",version:a,getVersion:()=>a})}g();async function z(){let[{defineDvzAsk:e},{defineDvzDashboards:o},{defineDvzManageDashboards:r}]=await Promise.all([import("./chunk-EHWQDPIU.js"),import("./chunk-AWECVEYG.js"),import("./chunk-Y7TAV2FY.js")]);await Promise.all([e(),o(),r()])}export{a as DATA_VISUALIZER_SDK_VERSION,i as DVZ_ASK_TAG,D as DVZ_DASHBOARDS_TAG,d as DVZ_MANAGE_DASHBOARDS_DEFAULT_PAGE_SIZE,f as DVZ_MANAGE_DASHBOARDS_TAG,z as defineDvzAll,n as defineDvzAsk,t as defineDvzDashboards,p as defineDvzManageDashboards,s as setDvzEnv};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aquera/data-visualizer-sdk",
3
- "version": "0.0.43",
3
+ "version": "0.0.44",
4
4
  "description": "Every Aquera data-visualizer element — <dvz-ask>, <dvz-dashboards> and <dvz-manage-dashboards> — in one bundle that loads their shared Nile and Highcharts dependencies once. Use this when a page mounts more than one; use the individual @aquera/dvz-* packages when it mounts only one.",
5
5
  "type": "module",
6
6
  "sideEffects": [